:root{--accent:#2563eb;--accent-strong:#1d4ed8;--accent-soft:#eff4ff;--accent-teal:#0891b2;--accent-ring:#2563eb59;--shell-bg:#0b1220;--shell-bg-2:#0f1a2e;--shell-border:#1e293b;--shell-text:#cbd5e1;--shell-text-dim:#8ca0b8;--shell-active:#16233b;--shell-accent:#38bdf8;--bg:#eef2f7;--bg-tint:#f5f8fc;--surface:#fff;--surface-2:#f8fafc;--surface-3:#f1f5f9;--text:#0f172a;--text-2:#475569;--text-3:#64748b;--text-muted:#94a3b8;--on-accent:#fff;--border:#e2e8f0;--border-strong:#cbd5e1;--ok:#059669;--ok-bg:#ecfdf5;--ok-bd:#a7f3d0;--warn:#b45309;--warn-bg:#fffbeb;--warn-bd:#fcd34d;--danger:#dc2626;--danger-bg:#fef2f2;--danger-bd:#fecaca;--info:#2563eb;--info-bg:#eff6ff;--info-bd:#bfdbfe;--r-xs:7px;--r-sm:9px;--r-md:12px;--r-lg:16px;--r-xl:22px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sh-sm:0 1px 2px #0f172a0f, 0 1px 3px #0f172a0a;--sh-md:0 2px 4px #0f172a0d, 0 6px 16px #0f172a12;--sh-lg:0 10px 30px #0f172a1f, 0 2px 8px #0f172a0f;--sh-xl:0 24px 60px #080f1e47;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--num:"tnum" 1, "lnum" 1;--t-fast:.12s cubic-bezier(.4, 0, .2, 1);--t:.18s cubic-bezier(.4, 0, .2, 1);--sidebar-w:260px;--sidebar-collapsed-w:72px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:14px;line-height:1.5}h1,h2,h3,h4{letter-spacing:-.015em;font-weight:700}td,th,.card h3,.mTabCount,.mbadge,input[type=number],.num,table{font-variant-numeric:tabular-nums;font-feature-settings:var(--num)}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--accent-ring)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box;border:3px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted);background-clip:padding-box}button{background:var(--accent);color:var(--on-accent);border-radius:var(--r-sm);white-space:nowrap;cursor:pointer;transition:background var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast), transform var(--t-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:9px 15px;font-size:13.5px;font-weight:600;line-height:1.2;display:inline-flex}button:hover{background:var(--accent-strong)}button:active{transform:translateY(.5px)}button:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);outline:none}button:disabled{opacity:.6;cursor:not-allowed}button.secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--sh-sm)}button.secondary:hover{background:var(--surface-3);border-color:var(--text-muted)}.app{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;transition:grid-template-columns var(--t);display:grid}.app.collapsed{grid-template-columns:var(--sidebar-collapsed-w) 1fr}aside{background:linear-gradient(185deg, var(--shell-bg-2) 0%, var(--shell-bg) 100%);color:var(--shell-text);border-right:1px solid var(--shell-border);z-index:60;flex-direction:column;gap:1px;height:100vh;padding:14px 12px;display:flex;position:sticky;top:0;overflow:hidden auto}.brand{border-bottom:1px solid var(--shell-border);flex-direction:row;align-items:center;gap:11px;margin:4px 6px 16px;padding-bottom:14px;display:flex}.brand .brand-mark{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-teal) 100%);color:#fff;letter-spacing:.5px;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:17px;font-weight:800;display:flex;box-shadow:0 4px 14px #2563eb73}.brand .brand-text{flex-direction:column;line-height:1.15;display:flex;overflow:hidden}.brand b{letter-spacing:.12em;color:#fff;font-size:16px;font-weight:700}.brand span{color:var(--shell-text-dim);letter-spacing:.16em;text-transform:uppercase;font-size:11px}aside a,aside button{text-align:left;width:100%;color:var(--shell-text);cursor:pointer;white-space:nowrap;transition:background var(--t-fast), color var(--t-fast);background:0 0;border:0;border-radius:10px;align-items:center;gap:11px;margin:1px 0;padding:9px 11px;font-size:13.5px;font-weight:500;text-decoration:none;display:flex}aside a svg,aside button svg{opacity:.82;flex-shrink:0}aside a:hover,aside button:hover{background:var(--shell-active);color:#fff;text-decoration:none}aside a:hover svg,aside button:hover svg{opacity:1}aside a.active,aside button.active{background:var(--shell-active);color:#fff;box-shadow:inset 3px 0 0 var(--shell-accent);font-weight:600}aside a.active svg,aside button.active svg{opacity:1;color:var(--shell-accent)}aside a:focus-visible,aside button:focus-visible{box-shadow:0 0 0 2px var(--shell-accent);outline:none}.menu-group-header{color:var(--shell-text-dim);text-transform:uppercase;letter-spacing:.09em;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--t-fast);border-radius:9px;align-items:center;gap:9px;margin:10px 0 2px;padding:9px 11px;font-size:10.5px;font-weight:700;display:flex}.menu-group-header:hover{color:var(--shell-text)}.menu-group-header .chevron{opacity:.7;transition:transform var(--t-fast);margin-left:auto;font-size:10px}aside a.sub-item,aside button.sub-item{color:var(--shell-text-dim);padding:7px 11px 7px 30px;font-size:13px;font-weight:500}aside a.sub-item:hover,aside button.sub-item:hover{background:var(--shell-active);color:#fff}aside a.sub-item.active,aside button.sub-item.active{background:var(--shell-active);color:#fff;box-shadow:inset 3px 0 0 var(--shell-accent)}.dot{width:6px;height:6px;transition:background var(--t-fast);background:#475569;border-radius:50%;flex-shrink:0}aside a.sub-item.active .dot,aside button.sub-item.active .dot{background:var(--shell-accent)}aside a.sub-item:hover .dot{background:var(--shell-text-dim)}.app.collapsed aside{padding:14px 10px}.app.collapsed aside .brand{justify-content:center;margin-bottom:14px}.app.collapsed aside .brand .brand-text,.app.collapsed aside a .nav-label,.app.collapsed aside button .nav-label,.app.collapsed aside .menu-group-header span:not(.chevron),.app.collapsed aside .menu-group-header .chevron{display:none}.app.collapsed aside a,.app.collapsed aside button{justify-content:center;padding:10px}.app.collapsed aside a.sub-item,.app.collapsed aside button.sub-item{padding:8px}.app.collapsed aside .menu-group-header{justify-content:center;padding:9px 0}.app.collapsed aside a.active,.app.collapsed aside button.active{box-shadow:inset 0 -2px 0 var(--shell-accent)}.app.collapsed aside a[data-tip],.app.collapsed aside button[data-tip]{position:relative}.app.collapsed aside a[data-tip]:hover:after,.app.collapsed aside button[data-tip]:hover:after{content:attr(data-tip);background:var(--shell-bg);color:#fff;border:1px solid var(--shell-border);white-space:nowrap;box-shadow:var(--sh-lg);z-index:120;pointer-events:none;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;position:absolute;top:50%;left:calc(100% + 10px);transform:translateY(-50%)}main{padding:var(--sp-6) var(--sp-8);background:radial-gradient(1200px 400px at 100% -5%, #2563eb0b, transparent 60%), var(--bg);min-width:0;overflow:auto}header{justify-content:space-between;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-6);padding-bottom:var(--sp-4);border-bottom:1px solid var(--border);display:flex}header h2{letter-spacing:-.02em;color:var(--text);margin:0;font-size:22px}header p{color:var(--text-3);margin:3px 0 0;font-size:13px}.header-actions{align-items:center;gap:var(--sp-3);display:flex}.mobile-menu-btn,.nav-backdrop{display:none}.user-chip{background:var(--surface);border:1px solid var(--border);box-shadow:var(--sh-sm);border-radius:999px;align-items:center;gap:9px;padding:5px 12px 5px 6px;display:flex}.user-chip .avatar{background:linear-gradient(135deg, var(--accent), var(--accent-teal));color:#fff;text-transform:uppercase;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:flex}.user-chip .user-meta{flex-direction:column;line-height:1.2;display:flex}.user-chip .user-meta b{color:var(--text);font-size:13px;font-weight:600}.user-chip .user-meta span{color:var(--text-3);font-size:11px}.icon-btn{background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--text-3);box-shadow:var(--sh-sm);transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast);border-radius:10px;justify-content:center;align-items:center;padding:8px;display:inline-flex;position:relative}.icon-btn:hover{background:var(--surface-3);color:var(--text);border-color:var(--border-strong)}.icon-btn:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);outline:none}.grid{gap:var(--sp-4);margin-bottom:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));display:grid}.cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.card,.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-sm)}.panel{margin-bottom:var(--sp-5)}.card{transition:box-shadow var(--t), transform var(--t), border-color var(--t);flex-direction:column;gap:6px;display:flex;position:relative;overflow:hidden}.card:hover{box-shadow:var(--sh-md);border-color:var(--border-strong)}.card p{color:var(--text-3);letter-spacing:.01em;margin:0;font-size:12.5px;font-weight:600}.card h3{letter-spacing:-.02em;color:var(--text);margin:2px 0 0;font-size:30px;font-weight:750;line-height:1.05}.card .kpi-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.card .kpi-icon{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.card:after{content:"";background:0 0;width:3px;position:absolute;top:0;bottom:0;left:0}.card.tone-ok:after{background:var(--ok)}.card.tone-warn:after{background:var(--warn)}.card.tone-danger:after{background:var(--danger)}.card.tone-info:after{background:var(--accent)}.card.tone-ok .kpi-icon{background:var(--ok-bg);color:var(--ok)}.card.tone-warn .kpi-icon{background:var(--warn-bg);color:var(--warn)}.card.tone-danger .kpi-icon{background:var(--danger-bg);color:var(--danger)}.card.tone-info .kpi-icon{background:var(--info-bg);color:var(--info)}.panelHead{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.panelHead>b:first-child,.panel>b:first-child{color:var(--text);letter-spacing:-.01em;font-size:15px;font-weight:700}.form{gap:var(--sp-3);margin-top:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));align-items:start;display:grid}input,select,textarea{border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);width:100%;padding:10px 12px;font-size:13.5px}.form input,.form select,.form textarea,.toolbar input,.toolbar select{width:100%}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:hover,select:hover,textarea:hover{border-color:var(--text-muted)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);background:var(--surface);outline:none}input:disabled,select:disabled,textarea:disabled{background:var(--surface-3);color:var(--text-3);cursor:not-allowed}select{cursor:pointer}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent);cursor:pointer}input[type=file]{cursor:pointer;padding:7px 10px}label{color:var(--text-2);font-size:13px;font-weight:500}.toolbar{gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;align-items:center;display:flex}.toolbar input{width:auto;min-width:240px}.toolbar select{width:auto}.tableWrap{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);overflow-x:auto}.panel>.tableWrap{box-shadow:var(--sh-sm)}table{border-collapse:collapse;width:100%;font-size:13px}thead th{z-index:2;text-align:left;text-transform:uppercase;letter-spacing:.045em;color:var(--text-3);background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap;padding:11px 14px;font-size:11px;font-weight:700;position:sticky;top:0}tbody td{text-align:left;border-bottom:1px solid var(--border);color:var(--text-2);vertical-align:middle;overflow-wrap:break-word;padding:11px 14px}tbody td>span[style*=border-radius]{white-space:nowrap}tbody tr{transition:background var(--t-fast)}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--accent-soft)}tbody td b{color:var(--text);font-weight:650}tbody tr td[colspan]{color:var(--text-muted);text-align:center;padding:28px 14px;font-size:13px}.actions{flex-wrap:wrap;gap:6px;display:flex}.actions button{padding:6px 11px;font-size:12px}.mTabs{margin-bottom:var(--sp-5);flex-wrap:wrap;gap:10px;display:flex}.mTab{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;min-width:120px;box-shadow:var(--sh-sm);transition:border-color var(--t-fast), box-shadow var(--t-fast), transform var(--t-fast), background var(--t-fast);padding:12px 16px}.mTab:hover{border-color:var(--border-strong);box-shadow:var(--sh-md)}.mTabActive{background:linear-gradient(135deg, var(--shell-bg-2), var(--shell-bg));border-color:var(--shell-bg);color:#fff;box-shadow:var(--sh-md)}.mTabLabel{font-size:13px;font-weight:600;display:block}.mTabActive .mTabLabel{color:#fff}.mTabCount{opacity:.7;margin-top:3px;font-size:11px;display:block}.mbadge{background:var(--surface-3);color:var(--text-3);border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-block}.mbadge.active{background:var(--accent);color:#fff}.mOverlay{z-index:100;-webkit-backdrop-filter:blur(3px);animation:overlay-in var(--t) both;background:#080f1e8c;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.mModal{background:var(--surface);border-radius:var(--r-lg);width:min(460px,96vw);max-height:92vh;box-shadow:var(--sh-xl);border:1px solid var(--border);animation:modal-in var(--t) both;overflow:auto}.mModalHdr{border-bottom:1px solid var(--border);background:var(--surface);z-index:1;justify-content:space-between;align-items:center;padding:16px 20px;display:flex;position:sticky;top:0}.mModalHdr b{color:var(--text);font-size:15px;font-weight:700}.mModalHdr button{background:var(--surface-3);color:var(--text-3);border:0;border-radius:8px;width:30px;height:30px;padding:0;font-size:15px;line-height:1}.mModalHdr button:hover{background:var(--danger-bg);color:var(--danger)}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.985)}to{opacity:1;transform:none}}.login{background:radial-gradient(900px 500px at 15% 10%, #2563eb4d, transparent 55%), radial-gradient(800px 500px at 90% 90%, #0891b247, transparent 55%), linear-gradient(160deg, var(--shell-bg-2), var(--shell-bg));justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.loginCard{background:var(--surface);border-radius:var(--r-xl);width:min(430px,94vw);box-shadow:var(--sh-xl);border:1px solid #ffffff14;padding:38px 34px}.loginCard .auth-brand{align-items:center;gap:12px;margin-bottom:22px;display:flex}.loginCard .auth-brand .brand-mark{background:linear-gradient(135deg, var(--accent), var(--accent-teal));color:#fff;border-radius:13px;justify-content:center;align-items:center;width:46px;height:46px;font-size:20px;font-weight:800;display:flex;box-shadow:0 8px 22px #2563eb73}.loginCard .auth-brand div{flex-direction:column;line-height:1.15;display:flex}.loginCard .auth-brand b{letter-spacing:.1em;font-size:17px}.loginCard .auth-brand span{color:var(--text-3);text-transform:uppercase;letter-spacing:.12em;font-size:11px}.loginCard h1{letter-spacing:-.02em;margin:0 0 6px;font-size:23px}.loginCard p{color:var(--text-3);margin:0 0 18px;font-size:13.5px}.loginCard form{gap:8px;display:grid}.loginCard form label{color:var(--text-2);margin-top:4px;font-size:12.5px;font-weight:600}.loginCard input{padding:11px 13px}.loginCard button{margin-top:14px;padding:12px;font-size:14px}.loginCard .authLinks a{font-weight:600}.error{background:var(--danger-bg);color:#991b1b;border:1px solid var(--danger-bd);border-radius:var(--r-sm);padding:10px 13px;font-size:13px}.notice{background:var(--ok-bg);color:#065f46;border:1px solid var(--ok-bd);border-radius:var(--r-sm);padding:10px 13px;font-size:13px}.success{background:var(--ok-bg);color:#166534;border:1px solid var(--ok-bd);border-radius:var(--r-sm);padding:10px 13px;font-size:13px}@media (width<=960px){main{padding:var(--sp-5) var(--sp-5)}}@media (width<=860px){.app,.app.collapsed{grid-template-columns:1fr}aside{width:min(84vw, var(--sidebar-w));height:100vh;transition:transform var(--t);box-shadow:var(--sh-xl);position:fixed;top:0;bottom:0;left:0;transform:translate(-102%)}.app.nav-open aside{transform:translate(0)}.app.collapsed aside .brand-text,.app.collapsed aside a .nav-label,.app.collapsed aside button .nav-label,.app.collapsed aside .menu-group-header span{display:inline}.app.collapsed aside a,.app.collapsed aside button{justify-content:flex-start;padding:9px 11px}.nav-backdrop{z-index:55;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity var(--t);background:#080f1e80;display:block;position:fixed;inset:0}.app.nav-open .nav-backdrop{opacity:1;pointer-events:auto}.mobile-menu-btn{background:var(--surface);border:1px solid var(--border);color:var(--text);box-shadow:var(--sh-sm);border-radius:10px;justify-content:center;align-items:center;padding:8px;display:inline-flex}header h2{font-size:19px}.user-chip .user-meta{display:none}}@media (width<=560px){main{padding:var(--sp-4)}header{flex-wrap:wrap}.form{grid-template-columns:1fr}.toolbar{flex-direction:column;align-items:stretch}.toolbar input,.toolbar select{width:100%;min-width:0}.grid,.cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.card h3{font-size:26px}}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
