:root{--bg: #0b1020;--panel: #141a2e;--panel-2: #1b2340;--line: #2a355c;--text: #edf2ff;--muted: #9aa6c8;--accent: #6ea8fe;--ok: #3dd68c;--warn: #f5c16c;--bad: #ff7b7b;font-family:Segoe UI,Noto Sans TC,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.layout{display:grid;grid-template-columns:240px 1fr;min-height:100%}.nav{background:var(--panel);border-right:1px solid var(--line);padding:1.2rem .9rem}.nav h1{font-size:1rem;margin:0 0 1rem;letter-spacing:.04em}.nav a{display:block;padding:.55rem .7rem;border-radius:8px;color:var(--muted)}.nav a.active,.nav a:hover{background:var(--panel-2);color:var(--text)}.main{padding:1.4rem 1.8rem}.row{display:flex;gap:.8rem;flex-wrap:wrap;align-items:center}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.9rem;margin:1rem 0}.card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1rem}.card strong{display:block;font-size:1.6rem;margin-top:.3rem}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.55rem .4rem;border-bottom:1px solid var(--line);font-size:.92rem}.badge{padding:.15rem .5rem;border-radius:999px;font-size:.75rem;background:var(--panel-2)}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}button,.btn{background:var(--accent);color:#081018;border:0;border-radius:8px;padding:.45rem .8rem;cursor:pointer;font-weight:600}button.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}input,select,textarea{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:.45rem .6rem}.login{min-height:100%;display:grid;place-items:center}.login form{width:min(420px,92vw);display:grid;gap:.7rem}.muted{color:var(--muted)}.stack{display:grid;gap:.8rem}.enroll-card{display:flex;gap:1.2rem;flex-wrap:wrap;align-items:flex-start;margin-bottom:1.2rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}.enroll-qr{background:#fff;color:#111;border-radius:12px;padding:.6rem;text-align:center}.enroll-qr .muted{color:#445}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:900px){.layout{grid-template-columns:1fr}.nav{display:flex;gap:.4rem;overflow:auto}}
