:root{--bg:#f0f3f6;--panel:#fff;--ink:#1a2332;--muted:#5c6b7a;--line:#d8e0e8;--brand:#0d6e6e;--brand-deep:#0a5555;--accent:#c45c26;--warn:#b8860b;--danger:#b42318;--ok:#1b7a3d;--sidebar:#12263a;--sidebar-ink:#d7e3ef;--radius:8px;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--brand)}.login-page{background:radial-gradient(at 20% 0,#1a4a4a 0%,#0000 50%),linear-gradient(160deg,#0e2433 0%,#163a3a 45%,#1f2d3d 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--panel);border-radius:12px;width:min(400px,100%);padding:32px 28px;box-shadow:0 20px 50px #00000047}.login-card h1{margin:0 0 6px;font-size:1.45rem}.login-card .sub{color:var(--muted);margin:0 0 22px;font-size:.92rem}.shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.side{background:var(--sidebar);color:var(--sidebar-ink);flex-direction:column;gap:8px;padding:18px 12px;display:flex}.brand{border-bottom:1px solid #ffffff14;margin-bottom:8px;padding:8px 10px 18px}.brand strong{color:#fff;font-size:1.05rem;display:block}.brand span{opacity:.7;font-size:.78rem}.nav-btn{text-align:left;color:inherit;background:0 0;border:0;border-radius:6px;padding:10px 12px}.nav-btn:hover{background:#ffffff14}.nav-btn.active{background:var(--brand);color:#fff}.side-foot{border-top:1px solid #ffffff14;margin-top:auto;padding:12px 10px 4px;font-size:.85rem}.side-foot button{color:#fff;background:0 0;border:1px solid #fff3;border-radius:6px;width:100%;margin-top:8px;padding:8px}.main{padding:20px 24px 40px;overflow:auto}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.page-head h2{margin:0;font-size:1.35rem}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.cards{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:18px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.card .label{color:var(--muted);font-size:.85rem}.card .value{margin-top:4px;font-size:1.4rem;font-weight:650}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px;padding:14px}.panel h3{margin:0 0 12px;font-size:1rem}.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field label{color:var(--muted);font-size:.85rem}.field input,.field select,.field textarea,.toolbar input,.toolbar select{border:1px solid var(--line);background:#fff;border-radius:6px;padding:8px 10px}.row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;display:grid}.btn{background:var(--brand);color:#fff;border:0;border-radius:6px;padding:8px 14px}.btn:hover{background:var(--brand-deep)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.ghost{color:var(--ink);background:#e8eef2}.btn.warn{background:var(--accent)}.btn.danger{background:var(--danger)}.btn.sm{padding:5px 10px;font-size:.85rem}table.data{border-collapse:collapse;width:100%;font-size:.9rem}table.data th,table.data td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:9px 8px}table.data th{color:var(--muted);background:#f7fafc;font-weight:600}.tag{background:#e8eef2;border-radius:999px;padding:2px 8px;font-size:.78rem;display:inline-block}.tag.ok{color:var(--ok);background:#d9f0e1}.tag.warn{color:#8a6500;background:#fff1cc}.tag.muted{color:var(--muted);background:#eceff2}.tag.danger{color:var(--danger);background:#fde2e0}.err{color:var(--danger);margin:8px 0;font-size:.9rem}.okmsg{color:var(--ok);margin:8px 0;font-size:.9rem}.todos{gap:8px;display:grid}.todo{border:1px solid var(--line);background:#fafcfd;border-radius:6px;justify-content:space-between;gap:12px;padding:10px 12px;display:flex}.muted{color:var(--muted)}@media (width<=860px){.shell{grid-template-columns:1fr}.side{flex-flow:wrap;align-items:center}.brand{border:0;width:100%;margin:0;padding-bottom:8px}.side-foot{border:0;width:100%}}
