:root{--brand: #4f46e5;--brand-600: #4338ca;--brand-050: #eef2ff;--bg: #f6f7f9;--panel: #ffffff;--panel-2: #fbfbfd;--text: #0f172a;--muted: #64748b;--border: #e5e7eb;--border-strong: #d1d5db;--success: #059669;--warning: #d97706;--danger: #dc2626;--sidebar-bg: #0f172a;--sidebar-fg: #94a3b8;--sidebar-fg-active: #ffffff;--sidebar-hover: #1e293b;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s8: 32px;--s10: 40px;--t-xs: 12px;--t-sm: 13px;--t-base: 14px;--t-lg: 16px;--t-xl: 20px;--t-2xl: 26px;--radius: 10px;--radius-sm: 7px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow: 0 2px 8px rgba(15, 23, 42, .08);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .16);--sidebar-w: 244px;--topbar-h: 58px}@media (prefers-color-scheme: dark){:root{--bg: #0b1120;--panel: #111827;--panel-2: #151f31;--text: #e5e7eb;--muted: #94a3b8;--border: #1f2937;--border-strong: #334155;--brand-050: #1e1b4b;--sidebar-bg: #0a0f1c;--sidebar-hover: #1c2637;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 2px 10px rgba(0, 0, 0, .5);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .6)}}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:var(--t-base);line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0 0 var(--s3);line-height:1.25}h1{font-size:var(--t-xl)}h2{font-size:var(--t-lg)}h3{font-size:var(--t-base)}a{color:var(--brand)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:var(--radius-sm)}.layout{display:flex;min-height:100vh}.main{flex:1;display:flex;flex-direction:column;min-width:0}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--sidebar-bg);color:var(--sidebar-fg);padding:var(--s4) 0;overflow-y:auto;position:sticky;top:0;height:100vh}.sidebar .logo{color:#fff;font-weight:700;font-size:17px;letter-spacing:.2px;padding:var(--s2) var(--s5) var(--s5);display:flex;align-items:center;gap:var(--s2)}.sidebar .logo:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px #4f46e540}.sidebar nav{display:flex;flex-direction:column;gap:1px}.sidebar a{display:flex;align-items:center;gap:var(--s3);padding:9px var(--s5);color:inherit;text-decoration:none;font-size:var(--t-sm);border-left:3px solid transparent;transition:background .12s ease,color .12s ease}.sidebar a svg{flex-shrink:0}.sidebar a:hover{background:var(--sidebar-hover);color:var(--sidebar-fg-active)}.sidebar a.active{background:var(--sidebar-hover);color:var(--sidebar-fg-active);border-left-color:var(--brand);font-weight:600}.sidebar .nav-group{padding:var(--s4) var(--s5) var(--s1);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#64748b}.topbar{height:var(--topbar-h);background:var(--panel);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:0 var(--s5);position:sticky;top:0;z-index:20}.topbar .who{display:flex;align-items:center;gap:var(--s3)}.topbar-title{font-weight:600;font-size:var(--t-base)}.sidebar-toggle{background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:18px;line-height:1;padding:var(--s1) var(--s3);cursor:pointer}.content{padding:var(--s6);max-width:1400px;width:100%}.page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s5)}.page-head h1{margin:0}.page-head .sub{color:var(--muted);font-size:var(--t-sm);margin-top:2px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s5);margin-bottom:var(--s4);box-shadow:var(--shadow-sm);overflow-x:auto}.card>h2,.card>h3{margin-bottom:var(--s3)}.grid{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.kpi{display:flex;flex-direction:column;gap:var(--s1)}.kpi .label{color:var(--muted);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.06em}.kpi .value{font-size:var(--t-2xl);font-weight:700;letter-spacing:-.02em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);background:var(--brand);color:#fff;border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 14px;font-size:var(--t-sm);font-weight:600;cursor:pointer;transition:background .12s ease,box-shadow .12s ease,transform .06s ease}.btn:hover:not(:disabled){background:var(--brand-600)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.secondary{background:var(--panel);color:var(--text);border-color:var(--border-strong)}.btn.secondary:hover:not(:disabled){background:var(--panel-2)}.btn.danger{background:var(--danger)}.btn.ghost{background:transparent;color:var(--brand);border-color:transparent}.btn:disabled{opacity:.55;cursor:not-allowed}.btn[aria-busy=true]{opacity:.75;cursor:progress}label{display:block;font-size:var(--t-sm);font-weight:600;margin-bottom:var(--s1)}input,select,textarea{width:100%;padding:9px 11px;margin-bottom:var(--s3);font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius-sm);transition:border-color .12s ease,box-shadow .12s ease}input::placeholder{color:var(--muted)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-050)}input[aria-invalid=true]{border-color:var(--danger)}.field-error{color:var(--danger);font-size:var(--t-xs);margin:-6px 0 var(--s3)}table{width:100%;border-collapse:collapse;font-size:var(--t-sm)}thead th{position:sticky;top:0;background:var(--panel);color:var(--muted);font-weight:600;font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.05em;z-index:1}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}tbody tr{transition:background .1s ease}tbody tr:hover{background:var(--panel-2)}tbody tr:last-child td{border-bottom:0}td .btn{padding:5px 10px}.badge{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--brand-050);color:var(--brand-600);font-size:var(--t-xs);font-weight:600;white-space:nowrap}.toasts{position:fixed;bottom:var(--s5);right:var(--s5);z-index:1000;display:flex;flex-direction:column;gap:var(--s2);max-width:min(380px,calc(100vw - 2 * var(--s5)))}.toast{background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--brand);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:10px var(--s4);font-size:var(--t-sm);animation:toast-in .18s ease-out}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--danger)}.toast.info{border-left-color:var(--brand)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.empty{padding:var(--s8) var(--s5);text-align:center;color:var(--muted);font-size:var(--t-sm)}.empty .title{color:var(--text);font-weight:600;margin-bottom:var(--s1)}.skeleton{height:12px;border-radius:6px;background:linear-gradient(90deg,var(--border) 25%,var(--panel-2) 37%,var(--border) 63%);background-size:400% 100%;animation:skeleton 1.4s ease infinite;margin:var(--s2) 0}@keyframes skeleton{0%{background-position:100% 50%}to{background-position:0 50%}}.login-wrap{max-width:400px;margin:12vh auto var(--s8);padding:var(--s8)!important}.login-wrap h1{font-size:var(--t-2xl);margin-bottom:var(--s1)}.muted{color:var(--muted);font-size:var(--t-sm)}.row{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}.spread{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}.stack{display:flex;flex-direction:column;gap:var(--s3)}@media (min-width: 901px){.layout.nav-closed .sidebar{width:62px}.layout.nav-closed .sidebar .logo{font-size:0;justify-content:center;padding:var(--s2) 0 var(--s5)}.layout.nav-closed .sidebar .logo:before{margin:0}.layout.nav-closed .sidebar .nav-group{display:none}.layout.nav-closed .sidebar a{padding:10px 0;justify-content:center}.layout.nav-closed .sidebar a .label{display:none}}@media (max-width: 900px){.sidebar{position:fixed;left:0;top:0;z-index:40;transform:translate(-100%);transition:transform .2s ease;box-shadow:var(--shadow-lg)}.sidebar.open{transform:translate(0)}.sidebar-toggle{display:inline-block}.content{padding:var(--s4)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:30}.page-head{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
