:root{--fg:#1b1b1b;--muted:#6b6b6b;--line:#e3e3e3;--accent:#1f5f8b;--accent-fg:#fff;--bg:#fff;--bg-soft:#f7f8f9;--danger:#b3261e;--ok:#1e7a3c;--radius:6px}*{box-sizing:border-box}body{margin:0;font:15px/1.6 Noto Sans TC,system-ui,-apple-system,sans-serif;color:var(--fg);background:var(--bg-soft)}a{color:var(--accent)}button{font:inherit;cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:var(--radius);padding:.4rem .8rem}button:hover{background:var(--bg-soft)}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}button.primary:hover{filter:brightness(1.08)}button.danger{color:var(--danger);border-color:#e6c4c1}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font:inherit;padding:.4rem .6rem;border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:100%}label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.2rem}.field{margin-bottom:.85rem}.row{display:flex;gap:.75rem;flex-wrap:wrap}.row>*{flex:1 1 12rem}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--line)}th{font-size:.82rem;color:var(--muted);font-weight:600;background:var(--bg-soft)}tr:hover td{background:#fbfcfd}.muted{color:var(--muted)}.err{color:var(--danger);font-size:.9rem;margin:.5rem 0}.ok{color:var(--ok);font-size:.9rem;margin:.5rem 0}.tag{display:inline-block;font-size:.72rem;padding:.05rem .4rem;border-radius:3px;background:#eef4f9;color:var(--accent);border:1px solid #cfe0ee}.tag.warn{background:#fdf3e6;color:#96591a;border-color:#f0dcc0}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:1.5rem}.login-card{width:min(24rem,100%)}.login-card h1{font-size:1.2rem;margin:0 0 .25rem}.login-card p.sub{margin:0 0 1.25rem;color:var(--muted);font-size:.9rem}.shell{display:grid;grid-template-columns:15rem 1fr;min-height:100dvh}.side{background:#fff;border-right:1px solid var(--line);padding:1rem .75rem;display:flex;flex-direction:column}.side .brand{font-weight:700;padding:.25rem .5rem 1rem}.side nav{display:flex;flex-direction:column;gap:.15rem}.side .group{font-size:.75rem;color:var(--muted);margin:.9rem .5rem .25rem}.side a{display:block;padding:.4rem .5rem;border-radius:var(--radius);color:var(--fg);text-decoration:none}.side a:hover{background:var(--bg-soft)}.side a.active{background:#eef4f9;color:var(--accent);font-weight:600}.side .foot{margin-top:auto;padding-top:1rem;border-top:1px solid var(--line);font-size:.85rem}.main{padding:1.5rem;max-width:70rem}.main h1{font-size:1.25rem;margin:0 0 1rem}.toolbar{display:flex;gap:.6rem;align-items:center;margin-bottom:1rem;flex-wrap:wrap}.toolbar input,.toolbar select{width:auto;min-width:10rem}.banner{padding:.7rem .9rem;border-radius:var(--radius);margin-bottom:1rem;border:1px solid}.banner.warn{background:#fdf7ee;border-color:#f0dcc0;color:#7a4a12}@media(max-width:800px){.shell{grid-template-columns:1fr}.side{border-right:0;border-bottom:1px solid var(--line)}}:root{--plat: #6b21a8}.plat-bar{background:var(--plat);color:#fff;display:flex;align-items:center;gap:1rem;padding:.55rem 1.1rem;font-size:.9rem}.plat-bar .brand{font-weight:700;letter-spacing:.04em}.plat-bar .spacer{flex:1}.plat-bar a{color:#f3e8ff;text-decoration:none}.plat-bar a:hover{text-decoration:underline}.plat-bar button{background:transparent;color:#fff;border-color:#ffffff80;padding:.2rem .6rem}.plat-bar button:hover{background:#ffffff26}.plat-main{padding:1.5rem;max-width:62rem;margin:0 auto}.plat-main h1{font-size:1.25rem;margin:0 0 1rem}.plat-main h2{font-size:.95rem;color:var(--muted);margin:1.8rem 0 .5rem;text-transform:uppercase;letter-spacing:.06em}.banner.enter{background:#f5f0fb;border-color:#d9c7ef;color:#4c1d95}.banner.support{background:#fdf2f2;border-color:#f0c4c4;color:#7f1d1d}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr))}.tag.nat{background:#f3e8ff;color:var(--plat);border-color:#d9c7ef}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}
