:root{--brand: #4F46E5;--brand-pressed: #4338CA;--brand-tint: #EEF2FF;--gold: #FBBF24;--gold-tint: #FEF3C7;--gold-dark: #B45309;--ink: #0F172A;--muted: #64748B;--faint: #94A3B8;--line: #E7EAF0;--surface: #F6F7FB;--card: #FFFFFF;--deep-indigo: #312E81;--success: #0E9F6E;--success-tint: #E7F7F0;--warning: #D97706;--warning-tint: #FDF4E7;--danger: #E02424;--danger-tint: #FDECEC;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--fs-caption: 11px;--fs-label: 12px;--fs-body-sm: 14px;--fs-body: 15px;--fs-title: 18px;--fs-display: 24px;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--r-badge: 7px;--r-dot: 12px;--r-control: 14px;--r-card: 16px;--r-pill: 999px;--shadow-floating: 0 20px 40px -20px rgba(15, 23, 42, .18);--sidebar-w: 248px;--topbar-h: 64px}:root[data-theme=dark]{--brand: #6366F1;--brand-pressed: #818CF8;--brand-tint: #24284B;--ink: #E6EAF2;--muted: #9AA6B8;--faint: #6B7688;--line: #2A3346;--surface: #0E1523;--card: #172033;--deep-indigo: #C7D2FE;--success: #34D399;--success-tint: #10251E;--warning: #FBBF24;--warning-tint: #2A2110;--danger: #F87171;--danger-tint: #2A1515;--shadow-floating: 0 20px 40px -20px rgba(0, 0, 0, .55);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-body);line-height:1.5;color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;letter-spacing:-.01em}button{font-family:inherit}.t-display{font-size:var(--fs-display);font-weight:var(--fw-semibold);letter-spacing:-.02em}.t-title{font-size:var(--fs-title);font-weight:var(--fw-semibold);letter-spacing:-.01em}.t-body{font-size:var(--fs-body);font-weight:var(--fw-regular)}.t-label{font-size:var(--fs-label);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}.t-caption{font-size:var(--fs-caption);color:var(--muted)}.muted{color:var(--muted)}.faint{color:var(--faint)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-5)}.card-pad-sm{padding:var(--sp-4)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);background:var(--brand);color:#fff;border:0;font-size:var(--fs-body);font-weight:var(--fw-semibold);padding:12px 18px;border-radius:var(--r-control);cursor:pointer;transition:background .12s ease;line-height:1;min-height:44px}.btn:hover{background:var(--brand-pressed)}.btn:disabled,.btn.is-disabled{background:#e4e7ef;color:var(--faint);cursor:not-allowed}.btn.ghost{background:var(--brand-tint);color:var(--brand)}.btn.ghost:hover{background:#e0e5fb}.btn.danger{background:var(--danger)}.btn.danger:hover{background:#c81e1e}.btn.success{background:var(--success)}.btn.success:hover{background:#0b8a5f}.btn.sm{padding:8px 12px;font-size:var(--fs-body-sm);min-height:36px}.btn.block{width:100%}.input,.select,.textarea{width:100%;font:inherit;font-size:var(--fs-body);padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-control);outline:none;background:var(--card);color:var(--ink)}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-tint)}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:var(--fs-label);font-weight:var(--fw-semibold);color:var(--muted)}.req{color:var(--danger);font-weight:var(--fw-semibold)}.chip{font-size:var(--fs-body-sm);font-weight:var(--fw-medium);padding:8px 14px;border-radius:var(--r-pill);border:1px solid var(--line);color:var(--muted);background:var(--card);cursor:pointer}.chip.on{background:var(--brand-tint);border-color:#c7cdf7;color:var(--brand)}.badge{display:inline-block;font-size:var(--fs-caption);font-weight:var(--fw-semibold);padding:4px 9px;border-radius:var(--r-badge);white-space:nowrap}.badge.ok{background:var(--success-tint);color:var(--success)}.badge.warn{background:var(--warning-tint);color:var(--warning)}.badge.danger{background:var(--danger-tint);color:var(--danger)}.badge.info{background:var(--brand-tint);color:var(--brand)}.badge.neutral{background:var(--surface);color:var(--muted)}.table-wrap{width:100%;overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-body-sm)}table.data th{text-align:left;font-size:var(--fs-label);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--faint);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}table.data td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}table.data tr:last-child td{border-bottom:0}table.data tbody tr:hover{background:var(--surface)}.avatar{width:36px;height:36px;border-radius:var(--r-dot);display:flex;align-items:center;justify-content:center;background:var(--brand-tint);color:var(--brand);font-weight:var(--fw-semibold);font-size:var(--fs-body-sm);flex:none}.row{display:flex;align-items:center}.col{display:flex;flex-direction:column}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-5{gap:var(--sp-5)}.gap-6{gap:var(--sp-6)}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.grid{display:grid;gap:var(--sp-4)}.state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--sp-3);padding:48px 24px;color:var(--muted)}.state .state-icon{width:56px;height:56px;border-radius:var(--r-dot);display:flex;align-items:center;justify-content:center;background:var(--surface);font-size:26px}.state.error .state-icon{background:var(--danger-tint)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,#eef0f5 25%,#f6f7fb 37%,#eef0f5 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:8px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.alert{border-radius:var(--r-control);padding:10px 14px;font-size:var(--fs-body-sm);border:1px solid transparent}.alert.error{background:var(--danger-tint);color:#9b1c1c;border-color:#f6c9c9}.alert.success{background:var(--success-tint);color:#036c4b;border-color:#bfe9d7}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a52;z-index:40;display:flex;justify-content:flex-end}.drawer{width:min(440px,92vw);height:100%;background:var(--card);box-shadow:var(--shadow-floating);overflow-y:auto;animation:slideIn .18s ease}@keyframes slideIn{0%{transform:translate(24px);opacity:.6}to{transform:none;opacity:1}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a52;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}.modal{width:min(520px,96vw);max-height:90vh;overflow-y:auto;background:var(--card);border-radius:var(--r-card);box-shadow:var(--shadow-floating)}.page-header{gap:var(--sp-3);margin-bottom:var(--sp-5);align-items:flex-start}.page-header .t-display{line-height:1.15}.toolbar{gap:var(--sp-2);align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r-control);padding:10px 12px;margin-bottom:var(--sp-4)}.toolbar .input,.toolbar .select{min-height:40px}.toolbar .grow{flex:1;min-width:160px}.stat-grid{display:grid;gap:var(--sp-4);margin-bottom:var(--sp-2)}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-4) var(--sp-5);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:4px}.stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--brand)}.stat-card.accent-success:before{background:var(--success)}.stat-card.accent-warning:before{background:var(--warning)}.stat-card.accent-danger:before{background:var(--danger)}.stat-card.accent-neutral:before{background:var(--line)}.stat-card .stat-value{font-size:var(--fs-display);font-weight:var(--fw-semibold);letter-spacing:-.02em;color:var(--ink);line-height:1.1}.stat-card .stat-icon{position:absolute;right:14px;top:12px;font-size:18px;opacity:.55}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-4)}.overlay-head{padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--line);gap:var(--sp-3)}.overlay-body{padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-4)}.overlay-foot{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--line);justify-content:flex-end}.drawer{display:flex;flex-direction:column}.drawer .overlay-body{flex:1;overflow-y:auto}.icon-btn{width:32px;height:32px;border-radius:var(--r-control);border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer;flex:none;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .12s ease}.icon-btn:hover{background:var(--surface);color:var(--ink)}.tabs{gap:4px;border-bottom:1px solid var(--line);margin-bottom:var(--sp-4)}.tab{background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer;padding:10px 14px;font-size:var(--fs-body-sm);font-weight:var(--fw-medium);color:var(--muted);margin-bottom:-1px;display:inline-flex;align-items:center;gap:6px}.tab:hover{color:var(--ink)}.tab.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:var(--fw-semibold)}.tab-count{font-size:var(--fs-caption);background:var(--surface);color:var(--muted);padding:1px 7px;border-radius:var(--r-pill)}.tab.on .tab-count{background:var(--brand-tint);color:var(--brand)}.nav-link{transition:background .12s ease}.nav-link:hover{background:var(--surface)}.card.hover-lift{transition:box-shadow .15s ease,border-color .15s ease}.card.hover-lift:hover{border-color:#d9deea;box-shadow:0 8px 24px -16px #0f172a29}.list-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.list-row:hover{background:var(--surface)}.app-shell{display:flex;min-height:100vh}.app-sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--card);border-right:1px solid var(--line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow:hidden;z-index:45}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}::-webkit-scrollbar-button,::-webkit-scrollbar-button:start,::-webkit-scrollbar-button:end,::-webkit-scrollbar-button:vertical:increment,::-webkit-scrollbar-button:vertical:decrement{display:none;width:0;height:0}.app-topbar{height:var(--topbar-h);flex-shrink:0;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--sp-4);padding:0 var(--sp-6)}.app-main{padding:var(--sp-6);max-width:1240px;width:100%}.nav-toggle,.sidebar-backdrop{display:none}@media (max-width: 860px){.app-sidebar{position:fixed;top:0;left:0;height:100vh;transform:translate(-100%);transition:transform .22s ease;box-shadow:var(--shadow-floating)}.app-sidebar.open{transform:none}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;z-index:44}.nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-control);flex:none;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;font-size:20px;line-height:1}.app-topbar{padding:0 var(--sp-4)}.app-main{padding:var(--sp-4)}.form-grid{grid-template-columns:1fr}.page-header .t-display{font-size:20px}.toolbar{flex-wrap:wrap}.stat-grid{grid-template-columns:repeat(2,1fr)!important}}@media (max-width: 480px){.app-main{padding:var(--sp-3)}.drawer{width:100vw}.modal{width:96vw}.card{padding:var(--sp-4)}.stat-grid{grid-template-columns:1fr!important}.page-header{flex-wrap:wrap}}
