:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1d212b;--border:hsla(0,0%,100%,.08);--text:#e8eaee;--text-dim:#9aa1ad;--accent:#2dd4bf;--accent-dim:rgba(45,212,191,.14);--ok:#10b981;--err:#f87171;--spring:cubic-bezier(0.34,1.56,0.64,1)}*{box-sizing:border-box}body,html{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";font-size:15px;line-height:1.5}.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06);padding:20px}.container{max-width:960px;margin:0 auto;padding:16px}h1{font-size:20px;margin:0 0 4px}h1,h2{font-weight:600}h2{font-size:16px;margin:0 0 12px}.dim{color:var(--text-dim);font-size:13px}input,select{width:100%;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:12px 14px;font:inherit;outline:none;transition:border-color .15s}input:focus{border-color:var(--accent)}button{background:var(--accent);color:#06211d;border:0;border-radius:10px;padding:12px 18px;font:inherit;font-weight:600;cursor:pointer;transition:transform .2s var(--spring),opacity .15s}button:hover{transform:translateY(-1px)}button:active{transform:scale(.98)}button:disabled{opacity:.5;cursor:default;transform:none}button.ghost{background:transparent;color:var(--text-dim);border:1px solid var(--border)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:12px;gap:12px}.tile{background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06);padding:16px;cursor:pointer;transition:transform .25s var(--spring),border-color .15s;overflow-wrap:anywhere}.tile:hover{transform:translateY(-2px);border-color:var(--accent)}.badge{display:inline-block;font-size:12px;border-radius:999px;padding:2px 10px;background:var(--panel-2);color:var(--text-dim);margin-right:6px}.badge.on{background:var(--accent-dim);color:var(--accent)}.msg-ok{color:var(--ok);font-size:13px}.msg-err{color:var(--err);font-size:13px}.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}@keyframes sp{to{transform:rotate(1turn)}}.row{align-items:center;flex-wrap:wrap}.row,.stack{display:flex;gap:10px}.stack{flex-direction:column}table{width:100%;border-collapse:collapse;font-size:13px}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--text-dim);font-weight:500}