:root{--ground:#eff1ee;--card:#fbfcfa;--card-2:#e7eae6;--ink:#14181a;--muted:#5e6a66;--rule:#cfd4ce;--accent:#1b6570;--on:#3b6b33;--on-bg:#e3efdf;--off:#5e6a66;--bad:#9e2b16;--bad-bg:#f5ded8;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--ground:#0f1413;--card:#161b1a;--card-2:#1e2523;--ink:#e5eae6;--muted:#8c9a95;--rule:#2a322f;--accent:#57b2bc;--on:#7cb36f;--on-bg:#1a2a17;--off:#8c9a95;--bad:#e0715a;--bad-bg:#2e1a16}}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}h1{font-size:1.35rem;margin:0;letter-spacing:-.01em}.sub{color:var(--muted);font-size:.82rem;margin:2px 0 0}.wrap{max-width:720px;margin:0 auto;padding:24px 16px 64px}.centre{min-height:100vh;display:grid;place-items:center;padding:16px}header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--rule);margin-bottom:20px}.card{background:var(--card);border:1px solid var(--rule);border-radius:8px}.unit{padding:18px;margin-bottom:14px}.login{padding:28px;width:min(340px,92vw)}.login label{display:block;font-size:.8rem;color:var(--muted);margin:18px 0 6px}.login input{width:100%;padding:11px;font:inherit;border:1px solid var(--rule);border-radius:6px;background:var(--ground);color:var(--ink)}.row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.name{font-weight:600;font-size:1.05rem;margin:0}.uid{font-family:var(--mono);font-size:.78rem;color:var(--muted);margin:2px 0 0}.pill{font-size:.7rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;padding:3px 9px;border-radius:99px;white-space:nowrap;border:1px solid currentColor}.pill.on{color:var(--on);background:var(--on-bg)}.pill.off{color:var(--off)}.pill.bad{color:var(--bad);background:var(--bad-bg)}.pill.unknown{color:var(--muted);border-style:dashed}button{font:inherit;cursor:pointer;border-radius:6px;border:1px solid var(--rule)}button:disabled{opacity:.4;cursor:not-allowed}.controls{display:flex;gap:10px;margin-top:16px}.controls button{flex:1;padding:13px;font-weight:600;background:var(--card-2);color:var(--ink)}.controls .act-on:not(:disabled):hover{border-color:var(--on);color:var(--on)}.controls .act-off:not(:disabled):hover{border-color:var(--bad);color:var(--bad)}.primary{width:100%;margin-top:18px;padding:12px;font-weight:600;background:var(--accent);border-color:var(--accent);color:#fff}.link{background:none;border:none;color:var(--muted);font-size:.85rem;text-decoration:underline;padding:0}.meta{margin-top:14px;padding-top:12px;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.78rem;color:var(--muted);font-family:var(--mono)}.warn{margin:12px 0 0;font-size:.82rem;color:var(--bad)}.error{color:var(--bad);font-size:.85rem;margin:14px 0 0}.error.banner{background:var(--bad-bg);border:1px solid var(--bad);border-radius:6px;padding:10px 14px;margin-bottom:16px}.empty{color:var(--muted);text-align:center;padding:48px 0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.tokens{margin-top:40px;padding-top:24px;border-top:1px solid var(--rule)}.section-head{align-items:baseline;margin-bottom:2px}.tokens h2{font-size:1.05rem;margin:0}.tokens .sub{margin-bottom:16px}.token-form{padding:18px;margin-bottom:14px}.token-form label{display:block;font-size:.8rem;color:var(--muted);margin:14px 0 6px}.token-form label:first-child{margin-top:0}.token-form input[type=text],.token-form input:not([type]){width:100%;padding:10px;font:inherit;border:1px solid var(--rule);border-radius:6px;background:var(--ground);color:var(--ink)}.hint{font-size:.76rem;color:var(--muted);margin:6px 0 0}.check{display:flex!important;align-items:center;gap:9px;margin:0 0 8px!important;font-size:.9rem;color:var(--ink)!important}.check input{width:auto;margin:0}.check .uid{display:inline;margin-left:6px}.form-actions{display:flex;align-items:center;gap:16px;margin-top:18px}.form-actions .primary{width:auto;margin:0;padding:10px 20px}.token-list{padding:4px 18px}.token-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--rule)}.token-row:last-child{border-bottom:none}.token-row .name{font-size:.95rem;font-family:var(--mono)}button.danger{padding:7px 14px;background:none;color:var(--bad);border-color:var(--bad)}button.danger:hover{background:var(--bad-bg)}.reveal{padding:18px;margin-bottom:14px;border-color:var(--accent)}.reveal-title{font-weight:600;margin:0 0 12px}.secret{display:block;font-family:var(--mono);font-size:.82rem;word-break:break-all;background:var(--ground);border:1px solid var(--rule);border-radius:6px;padding:12px;-webkit-user-select:all;user-select:all}.reveal-actions{display:flex;align-items:center;gap:16px;margin-top:14px}.reveal-actions button:first-child{padding:8px 18px;background:var(--card-2);color:var(--ink)}.modal{border:1px solid var(--rule);border-radius:10px;padding:0;background:var(--card);color:var(--ink);width:min(420px,calc(100vw - 32px));box-shadow:0 18px 48px #00000047}.modal::backdrop{background:#00000073;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal[open]{animation:modal-in .14s ease-out}.modal[open]::backdrop{animation:fade-in .14s ease-out}@keyframes modal-in{0%{opacity:0;transform:translateY(6px) scale(.98)}}@keyframes fade-in{0%{opacity:0}}.modal-body{padding:24px}.modal-body h2{font-size:1.1rem;margin:0 0 8px;line-height:1.3}.modal-body p{margin:0;color:var(--muted);font-size:.92rem}.modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:18px;margin-top:24px}.modal-actions .primary{width:auto;margin:0;padding:10px 20px}button.danger.solid{padding:10px 20px;background:var(--bad);border-color:var(--bad);color:#fff}button.danger.solid:hover{filter:brightness(1.08)}@media (prefers-reduced-motion: reduce){.modal[open],.modal[open]::backdrop{animation:none}}
