:root{--primary: #6c5ce7;--primary-hover: #5a4bd4;--primary-active: #4a3cc0;--primary-soft: #efedfd;--primary-contrast: #ffffff;--accent: #00cec9;--bg: #f6f7fb;--bg-grad: radial-gradient(1200px 600px at 85% -10%, #ece9ff 0%, rgba(236, 233, 255, 0) 55%), radial-gradient(900px 500px at -10% 0%, #e6fbfa 0%, rgba(230, 251, 250, 0) 50%);--surface: #ffffff;--surface-2: #fbfbfe;--surface-hover: #f4f4fb;--border: #e8e8f1;--border-strong: #d9d9e7;--text: #1a1b2e;--text-2: #44465f;--muted: #8387a3;--success: #16a34a;--success-soft: #e6f7ed;--warning: #d97706;--warning-soft: #fdf1e1;--danger: #dc2626;--danger-soft: #fdeaea;--info: #2563eb;--info-soft: #e8f0fe;--radius-sm: 9px;--radius: 14px;--radius-lg: 20px;--radius-full: 999px;--shadow-xs: 0 1px 2px rgba(26, 27, 46, .05);--shadow-sm: 0 2px 6px rgba(26, 27, 46, .06), 0 1px 2px rgba(26, 27, 46, .04);--shadow: 0 8px 24px rgba(26, 27, 46, .08), 0 2px 6px rgba(26, 27, 46, .05);--shadow-lg: 0 24px 60px rgba(40, 32, 110, .18), 0 8px 20px rgba(26, 27, 46, .08);--ring: 0 0 0 4px rgba(108, 92, 231, .18);--sidebar-w: 264px;--font-display: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif}[data-theme=dark]{--primary: #8b7cff;--primary-hover: #9d90ff;--primary-active: #7667f0;--primary-soft: #262445;--primary-contrast: #ffffff;--accent: #22d3d0;--bg: #0c0d1a;--bg-grad: radial-gradient(1200px 600px at 85% -10%, #1c1840 0%, rgba(28, 24, 64, 0) 55%), radial-gradient(900px 500px at -10% 0%, #0c2b2a 0%, rgba(12, 43, 42, 0) 50%);--surface: #15162a;--surface-2: #1a1b33;--surface-hover: #1f2040;--border: #272947;--border-strong: #33365c;--text: #ececf7;--text-2: #b9bbd6;--muted: #7f82a3;--success: #34d399;--success-soft: #0f2e22;--warning: #fbbf24;--warning-soft: #33270f;--danger: #f87171;--danger-soft: #371a1a;--info: #60a5fa;--info-soft: #16233f;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .3);--shadow-sm: 0 2px 6px rgba(0, 0, 0, .35);--shadow: 0 10px 30px rgba(0, 0, 0, .45);--shadow-lg: 0 30px 70px rgba(0, 0, 0, .6);--ring: 0 0 0 4px rgba(139, 124, 255, .25)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body,#root{height:100%}body{font-family:var(--font-body);background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.55;transition:background-color .35s ease,color .35s ease}h1,h2,h3,h4,h5{font-family:var(--font-display);color:var(--text);line-height:1.2;font-weight:700;letter-spacing:-.015em}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}::selection{background:var(--primary);color:#fff}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--muted);background-clip:content-box}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-display);font-weight:600;font-size:14px;padding:10px 16px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text);transition:transform .12s ease,background-color .18s ease,box-shadow .18s ease,border-color .18s ease,color .18s ease;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active{transform:translateY(1px) scale(.99)}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn svg{width:17px;height:17px}.btn-primary{background:var(--primary);color:var(--primary-contrast);box-shadow:0 6px 16px #6c5ce747}.btn-primary:hover{background:var(--primary-hover);box-shadow:0 8px 22px #6c5ce761;transform:translateY(-1px)}.btn-primary:active{background:var(--primary-active)}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text-2);box-shadow:var(--shadow-xs)}.btn-ghost:hover{background:var(--surface-hover);border-color:var(--border-strong);color:var(--text)}.btn-soft{background:var(--primary-soft);color:var(--primary)}.btn-soft:hover{background:var(--primary);color:#fff}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}.btn-sm{padding:7px 12px;font-size:13px}.btn-icon{padding:9px;border-radius:var(--radius-sm)}.btn-icon svg{width:18px;height:18px}.btn-block{width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:22px}.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:13px;font-weight:600;color:var(--text-2);font-family:var(--font-display)}.input,.select,.textarea{width:100%;padding:10px 13px;font-size:14px;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.input::placeholder,.textarea::placeholder{color:var(--muted)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring);background:var(--surface)}.textarea{resize:vertical;min-height:84px}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:600;font-family:var(--font-display);border:1px solid transparent;white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-primary{background:var(--primary-soft);color:var(--primary)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-muted{background:var(--surface-hover);color:var(--muted);border-color:var(--border)}.table-wrap{overflow-x:auto;border-radius:var(--radius)}table.table{width:100%;border-collapse:collapse;font-size:14px;min-width:640px}table.table th{text-align:left;font-family:var(--font-display);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:13px 16px;border-bottom:1px solid var(--border);background:var(--surface-2);position:sticky;top:0}table.table td{padding:14px 16px;border-bottom:1px solid var(--border);color:var(--text-2);vertical-align:middle}table.table tbody tr{transition:background-color .14s ease}table.table tbody tr:hover{background:var(--surface-hover)}table.table tbody tr:last-child td{border-bottom:none}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px 16px;z-index:40}.brand{display:flex;align-items:center;gap:11px;padding:6px 8px 20px}.brand-mark{width:38px;height:38px;border-radius:11px;flex-shrink:0;background:linear-gradient(135deg,var(--primary),#9d90ff);display:grid;place-items:center;color:#fff;box-shadow:0 6px 16px #6c5ce766}.brand-mark svg{width:21px;height:21px}.brand-name{font-family:var(--font-display);font-weight:800;font-size:17px;letter-spacing:-.02em}.brand-sub{font-size:11px;color:var(--muted);font-weight:500}.nav{display:flex;flex-direction:column;gap:3px;margin-top:6px}.nav-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:14px 12px 6px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--text-2);font-weight:500;font-size:14.5px;transition:background-color .16s ease,color .16s ease;position:relative}.nav-item svg{width:19px;height:19px;flex-shrink:0}.nav-item:hover{background:var(--surface-hover);color:var(--text)}.nav-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:-16px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--primary)}.sidebar-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--border)}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;padding:14px 28px;background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:saturate(160%) blur(12px);backdrop-filter:saturate(160%) blur(12px);border-bottom:1px solid var(--border)}.topbar h1{font-size:20px}.topbar .sub{font-size:13px;color:var(--muted)}.topbar-spacer{flex:1}.content{padding:28px;max-width:1320px;width:100%;margin:0 auto}.hamburger{display:none}.search{display:flex;align-items:center;gap:9px;padding:8px 13px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--muted);min-width:220px;transition:border-color .16s ease,box-shadow .16s ease}.search:focus-within{border-color:var(--primary);box-shadow:var(--ring)}.search input{border:none;background:transparent;outline:none;color:var(--text);width:100%;font-size:14px}.search svg{width:17px;height:17px;flex-shrink:0}.grid{display:grid;gap:18px}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.two-col{grid-template-columns:1.6fr 1fr}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}.stat-card{position:relative;overflow:hidden;padding:20px}.stat-card .ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;margin-bottom:14px}.stat-card .ico svg{width:22px;height:22px}.stat-card .val{font-family:var(--font-display);font-size:30px;font-weight:800;letter-spacing:-.02em;line-height:1}.stat-card .lbl{color:var(--muted);font-size:13.5px;margin-top:7px}.stat-card .trend{position:absolute;top:20px;right:20px;font-size:12px;font-weight:600}.page-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:22px}.page-head .pt{font-size:26px}.page-head .ps{color:var(--muted);font-size:14px;margin-top:3px}.page-head .spacer{flex:1}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px}.section-head h3{font-size:16px}.bar{height:9px;background:var(--surface-hover);border-radius:999px;overflow:hidden}.bar>span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--primary),#9d90ff);transition:width .8s cubic-bezier(.16,1,.3,1)}.bar.warn>span{background:linear-gradient(90deg,var(--warning),#f59e0b)}.bar.danger>span{background:linear-gradient(90deg,var(--danger),#ef4444)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:18px}.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-full);padding:3px;gap:2px}.seg button{border:none;background:transparent;color:var(--text-2);font-weight:600;font-size:13px;font-family:var(--font-display);padding:7px 14px;border-radius:var(--radius-full);transition:all .16s ease}.seg button.on{background:var(--primary);color:#fff;box-shadow:0 4px 12px #6c5ce74d}.seg button:not(.on):hover{color:var(--text)}.toggle{width:56px;height:30px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);position:relative;padding:0;transition:background-color .2s ease,border-color .2s ease}.toggle .knob{position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);display:grid;place-items:center;color:var(--primary);transition:transform .28s cubic-bezier(.16,1,.3,1)}.toggle .knob svg{width:14px;height:14px}[data-theme=dark] .toggle .knob{transform:translate(26px)}.avatar{width:36px;height:36px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:14px;flex-shrink:0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c0d1a8c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:grid;place-items:center;padding:18px}.modal{width:100%;max-width:540px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-height:92vh;display:flex;flex-direction:column}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--border)}.modal-head h3{font-size:18px}.modal-body{padding:22px;overflow-y:auto}.modal-foot{padding:16px 22px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .full{grid-column:1 / -1}.state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:56px 20px;gap:14px;color:var(--muted)}.state .ico{width:58px;height:58px;border-radius:16px;background:var(--surface-hover);display:grid;place-items:center;color:var(--muted)}.state .ico svg{width:28px;height:28px}.state h4{color:var(--text);font-size:17px}.state p{font-size:14px;max-width:360px}.spinner{width:34px;height:34px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--surface-hover) 25%,var(--border) 37%,var(--surface-hover) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.toast-wrap{position:fixed;bottom:24px;right:24px;z-index:200;display:flex;flex-direction:column;gap:10px}.toast{display:flex;align-items:center;gap:10px;padding:13px 16px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius);box-shadow:var(--shadow-lg);font-size:14px;font-weight:500;color:var(--text);animation:slideIn .35s cubic-bezier(.16,1,.3,1);min-width:250px}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--danger)}.toast svg{width:18px;height:18px}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes popIn{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.page-enter{animation:fadeUp .45s cubic-bezier(.16,1,.3,1) both}.stagger>*{animation:fadeUp .5s cubic-bezier(.16,1,.3,1) both}.stagger>*:nth-child(1){animation-delay:.02s}.stagger>*:nth-child(2){animation-delay:.07s}.stagger>*:nth-child(3){animation-delay:.12s}.stagger>*:nth-child(4){animation-delay:.17s}.stagger>*:nth-child(5){animation-delay:.22s}.stagger>*:nth-child(6){animation-delay:.27s}.overlay{animation:overlayIn .2s ease both}.modal{animation:popIn .3s cubic-bezier(.16,1,.3,1) both}.row{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.muted{color:var(--muted)}.text-2{color:var(--text-2)}.strong{font-family:var(--font-display);font-weight:700;color:var(--text)}.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gap-sm{gap:6px}.mt-lg{margin-top:24px}.link{color:var(--primary);font-weight:600}.link:hover{color:var(--primary-hover);text-decoration:underline}.scrim{display:none}@media (max-width: 1024px){.two-col{grid-template-columns:1fr}}@media (max-width: 860px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;bottom:0;width:280px;height:100%;transform:translate(-100%);transition:transform .32s cubic-bezier(.16,1,.3,1);box-shadow:var(--shadow-lg)}.sidebar.open{transform:translate(0)}.scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0c0d1a80;z-index:35;animation:overlayIn .2s ease}.hamburger{display:inline-grid}.topbar{padding:12px 16px}.content{padding:18px 16px}.search{display:none}.form-grid{grid-template-columns:1fr}.topbar h1{font-size:17px}}@media (max-width: 480px){.stat-grid{grid-template-columns:1fr 1fr}.page-head .pt{font-size:22px}.hide-xs{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
