:root{--bg:#f4f6f8;--panel:#fff;--ink:#1a2733;--ink-soft:#6b7a88;--accent:#2f6f57;--line:#e2e8ec;--danger:#c0392b;font-family:system-ui,-apple-system,Segoe UI,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink)}input,button{font-family:inherit;font-size:14px}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.center{place-items:center;min-height:100%;padding:24px;display:grid}.card{background:#fff;border-radius:18px;width:100%;max-width:360px;padding:32px;box-shadow:0 10px 34px #1a273317}.card .logo{letter-spacing:2px;margin:0}.card h1{margin:0 0 6px;font-size:22px}.muted{color:var(--ink-soft);margin:4px 0 18px;font-size:14px}.hint{color:var(--ink-soft);font-size:12.5px;line-height:1.5}.card input{border:1px solid var(--line);background:var(--bg);border-radius:10px;outline:none;width:100%;margin-bottom:12px;padding:12px 14px}.card input:focus{border-color:var(--accent);background:#fff}button.primary{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;padding:12px;font-weight:600}button.primary:disabled{opacity:.55}button.primary.small{width:auto;padding:9px 16px}button.ghost{color:var(--ink-soft);cursor:pointer;background:0 0;border:none}button.ghost:hover{color:var(--ink)}.error{color:var(--danger);background:#fdecea;border-radius:8px;margin-bottom:12px;padding:10px 12px;font-size:13px}.admin{flex-direction:column;min-height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);background:#fff;align-items:center;gap:24px;padding:14px 24px;display:flex}.topbar .brand{letter-spacing:2px;font-weight:700}.topbar nav{gap:6px;display:flex}.topbar nav button{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px 14px}.topbar nav button.on{color:var(--accent);background:#e7f0ec;font-weight:600}.topbar .who{color:var(--ink-soft);align-items:center;gap:14px;margin-left:auto;font-size:13.5px;display:flex}.content{width:100%;max-width:960px;margin:0 auto;padding:28px}.row-between{justify-content:space-between;align-items:center;display:flex}h2{margin:0 0 16px;font-size:19px}.count{color:var(--ink-soft);font-size:15px;font-weight:400}.toast{color:var(--accent);background:#e7f0ec;border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:14px}.tbl{border-collapse:collapse;background:#fff;border-radius:12px;width:100%;overflow:hidden;box-shadow:0 2px 10px #1a27330d}.tbl th,.tbl td{text-align:left;border-bottom:1px solid var(--line);padding:12px 14px;font-size:14px}.tbl th{color:var(--ink-soft);background:#fafbfc;font-weight:600}.tbl tr:last-child td{border-bottom:none}.tbl tr.dim{opacity:.5}.actions{flex-wrap:wrap;gap:6px;display:flex}.actions button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:7px;padding:6px 10px;font-size:13px}.actions button:hover{border-color:var(--accent);color:var(--accent)}.actions button.danger:hover{border-color:var(--danger);color:var(--danger)}.badge{color:var(--ink-soft);background:#eef1f3;border-radius:20px;padding:3px 9px;font-size:12px;display:inline-block}.badge.on{color:var(--accent);background:#e3f2ea}.badge.off{color:var(--danger);background:#fdecea}.backdrop{z-index:10;background:#1a273366;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;width:100%;max-width:380px;padding:26px}.modal h2{margin:0 0 6px}.modal label{color:var(--ink-soft);margin:10px 0 5px;font-size:13px;display:block}.modal input{border:1px solid var(--line);background:var(--bg);border-radius:9px;outline:none;width:100%;padding:11px 13px}.modal input:focus{border-color:var(--accent);background:#fff}.modal-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.modal-actions .ghost{padding:10px 16px}.modal-actions .primary{width:auto;padding:10px 20px}
