:root{--bg-main: #f6f7f8;--bg-panel: #ffffff;--bg-card: #f0f2f5;--bg-sidebar: #fbfbfc;--primary: #2f6f8f;--primary-strong: #245a74;--accent: #1f2933;--success: #247a4d;--warn: #a36318;--error: #b83a2e;--text: #17202a;--text-dim: #64707d;--text-soft: #89939f;--border: #e0e5ea;--border-strong: #cbd3dc;--glow: rgba(47, 111, 143, .16);--shadow: 0 12px 30px rgba(31, 41, 51, .07);--radius: 8px;--radius-control: 7px}*{margin:0;padding:0;box-sizing:border-box}html{background:var(--bg-main)}body{min-height:100vh;color:var(--text);background:var(--bg-main);font-family:Aptos,Microsoft YaHei UI,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.47;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5{color:var(--text);font-weight:600;letter-spacing:0;line-height:1.12;text-wrap:balance}button,input,textarea,select{font:inherit}button:disabled{cursor:not-allowed;opacity:.5}button,a,input,textarea,select{transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease,transform .12s ease}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;border-color:var(--primary)!important;box-shadow:0 0 0 3px var(--glow)}#root{min-height:100vh;display:flex;flex-direction:column}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.app-sidebar{position:sticky;top:0;height:100vh;padding:18px 12px;display:flex;flex-direction:column;gap:18px;background:var(--bg-sidebar);border-right:1px solid var(--border);color:var(--text)}.brand-block{padding:4px 8px 14px;border-bottom:1px solid var(--border)}.brand-logo{display:block;width:92px;height:auto;margin-bottom:6px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;margin-bottom:12px;border-radius:11px;background:var(--primary);color:#fff;font-weight:700}.brand-title{font-size:17px;font-weight:600;color:var(--text);letter-spacing:0}.brand-subtitle{margin-top:2px;color:var(--text-dim);font-size:11px;line-height:1.4}.nav-list{display:flex;flex-direction:column;gap:2px}.nav-group{display:flex;flex-direction:column;gap:2px;padding-top:6px}.nav-group-label{padding:8px 12px 4px;color:var(--text-soft);font-size:11px;font-weight:700;letter-spacing:0}.nav-sublist{display:flex;flex-direction:column;gap:2px}.nav-item{width:100%;min-height:40px;padding:9px 12px;display:flex;align-items:center;gap:11px;border:none;border-radius:7px;background:transparent;color:var(--text-dim);text-align:left;font-size:14px;font-weight:500;letter-spacing:0;cursor:pointer;transition:background .16s ease,color .16s ease}.nav-item:hover{background:#2f6f8f14;color:var(--text);transform:translate(1px)}.nav-item-active{background:var(--glow);color:var(--primary);font-weight:600}.nav-item-active:hover{background:var(--glow);color:var(--primary)}.nav-item svg{flex:0 0 auto}.nav-item-nested{min-height:36px;padding-left:28px;font-size:13px}.sidebar-footer{margin-top:auto;padding:12px 8px 4px;border-top:1px solid var(--border);color:var(--text-soft);font-size:12px}.app-main{min-width:0;display:flex;flex-direction:column}.app-topbar{position:sticky;top:0;z-index:5;min-height:62px;padding:12px 24px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);background:#f6f7f8db;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px)}.app-topbar strong{font-size:18px;font-weight:600;letter-spacing:0}.mobile-nav{display:none}.topbar-spacer{flex:1}.app-content{flex:1;padding:24px;max-width:1360px;width:100%;margin:0 auto}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.panel-glow{box-shadow:var(--shadow)}.panel .panel{box-shadow:none}.btn{min-height:36px;padding:8px 13px;border:1px solid transparent;border-radius:7px;cursor:pointer;font-size:14px;font-weight:500;letter-spacing:0;color:var(--text);background:var(--bg-card);border-color:var(--border);transition:background .16s ease,border-color .16s ease,color .16s ease,transform .1s ease}.btn:hover{background:#e8edf2;transform:translateY(-1px)}.btn:active{transform:translateY(0) scale(.98)}.btn:focus-visible{outline:2px solid var(--primary-strong);outline-offset:2px}.btn-primary{background:var(--primary);color:#fff;border-color:transparent}.btn-primary:hover{background:var(--primary-strong)}.btn-success{background:var(--success);color:#fff;border-color:transparent}.btn-success:hover{background:#176f3f}.btn-warn{background:var(--warn);color:#fff;border-color:transparent}.btn-warn:hover{background:#9c6618}.tag{display:inline-flex;align-items:center;min-height:22px;padding:3px 9px;border-radius:6px;font-size:11px;font-weight:600;letter-spacing:0;font-variant-numeric:tabular-nums}.tag-pass{background:#1d8a4e1f;color:var(--success)}.tag-warn{background:#b7791f24;color:var(--warn)}.tag-error{background:#c0341d1f;color:var(--error)}.tag-info{background:var(--glow);color:var(--primary)}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg-main)}.login-card{width:min(100%,400px);display:flex;flex-direction:column;gap:18px;padding:32px;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.login-logo{display:block;width:140px;height:auto;margin:0 auto 6px}.login-mark{width:46px;height:46px;display:grid;place-items:center;margin-bottom:14px;border-radius:12px;background:var(--primary);color:#fff;font-weight:700}.login-title{font-size:26px;line-height:1.12;color:var(--text);letter-spacing:0;font-weight:600;text-align:center}.login-subtitle{margin-top:6px;color:var(--text-dim);font-size:14px;line-height:1.45;text-align:center}.form-label{display:flex;flex-direction:column;gap:7px;color:var(--text-dim);font-size:13px}.form-control{width:100%;min-height:40px;padding:10px 13px;color:var(--text);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-control);transition:border-color .16s ease,box-shadow .16s ease}.form-control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--glow)}.flex{display:flex}.flex-col{flex-direction:column}.gap-8{gap:8px}.gap-16{gap:16px}table{border-collapse:separate!important;border-spacing:0}thead th{background:var(--bg-card);font-size:12px;font-weight:600}tbody tr:hover td{background:#2f6f8f0b}td,th{font-variant-numeric:tabular-nums}textarea{resize:vertical}select{cursor:pointer}.app-shell{transition:grid-template-columns .2s ease}.app-shell.collapsed{grid-template-columns:64px minmax(0,1fr)}.app-shell.collapsed .app-sidebar{padding:18px 8px}.app-shell.collapsed .brand-block{padding:6px 0 14px;text-align:center}.app-shell.collapsed .brand-logo{width:40px;margin:0 auto}.app-shell.collapsed .brand-subtitle,.app-shell.collapsed .sidebar-footer{display:none}.app-shell.collapsed .nav-item{justify-content:center;padding:9px 0;gap:0}.app-shell.collapsed .nav-item span{display:none}.app-shell.collapsed .nav-group{padding-top:2px}.app-shell.collapsed .nav-group-label{display:none}.app-shell.collapsed .nav-item-nested{padding-left:0}@media (max-width: 980px){.app-shell,.app-shell.collapsed{grid-template-columns:1fr}.app-sidebar{display:none}.mobile-nav{display:flex;gap:6px;overflow-x:auto;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-panel)}.nav-item{width:auto;white-space:nowrap;background:var(--bg-card);color:var(--text-dim)}.nav-item-active{background:var(--primary);color:#fff}.app-topbar{padding:12px;flex-wrap:wrap}.app-content{padding:16px}}[data-theme=dark]{--bg-main: #101417;--bg-panel: #181e23;--bg-card: #202830;--bg-sidebar: #141a1f;--primary: #76a9c4;--primary-strong: #95bdd0;--accent: #f5f5f7;--success: #30d158;--warn: #ff9f0a;--error: #ff453a;--text: #f5f5f7;--text-dim: #98989d;--text-soft: #6e6e73;--border: #38383a;--border-strong: #48484a;--glow: rgba(41, 151, 255, .2);--shadow: 0 16px 36px rgba(0, 0, 0, .28)}[data-theme=dark] .nav-item:hover{background:#ffffff12}[data-theme=dark] .btn:hover{background:#3a3a3c}[data-theme=dark] .btn-primary:hover{background:#409cff}[data-theme=dark] .btn-success:hover{background:#28b34c}[data-theme=dark] .btn-warn:hover{background:#e08e09}[data-theme=dark] .app-topbar{background:#141416cc}[data-theme=dark] .brand-logo,[data-theme=dark] .login-logo{filter:brightness(1.35)}body,.panel,.app-sidebar,.app-topbar,.btn,.nav-item,.form-control{transition:background-color .2s ease,border-color .2s ease,color .2s ease}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
