:root{--bg: #0f172a;--panel: #1e293b;--border: #334155;--text: #e2e8f0;--muted: #94a3b8;--accent: #3b82f6;--danger: #ef4444;--on: #22c55e;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.wrap{max-width:1000px;margin:0 auto;padding:1.5rem}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem}h1{font-size:1.4rem;margin:0}.muted{color:var(--muted)}.error{background:#ef44441f;border:1px solid var(--danger);color:#fecaca;padding:.6rem .8rem;border-radius:8px;margin-bottom:1rem}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}tr.inactive td{opacity:.55}td.target{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.actions{white-space:nowrap;text-align:right}a{color:var(--accent)}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge.on{background:#22c55e26;color:var(--on)}.badge.off{background:#94a3b826;color:var(--muted)}button{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:.35rem .7rem;font-size:.85rem;cursor:pointer;margin-left:.35rem}button:hover{border-color:var(--muted)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:#fca5a5}button:disabled{opacity:.5;cursor:default}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;padding:1rem}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:1.25rem;width:100%;max-width:30rem}.modal h2{margin:0 0 1rem;font-size:1.1rem}.modal label{display:block;margin-bottom:.85rem;color:var(--muted);font-size:.85rem}.modal label.checkbox{display:flex;align-items:center;gap:.5rem;color:var(--text)}.modal input[type=text],.modal input[type=url]{display:block;width:100%;margin-top:.3rem;padding:.5rem .6rem;background:var(--bg);border:1px solid var(--border);border-radius:7px;color:var(--text);font-size:.9rem}.modal-actions{display:flex;justify-content:flex-end;gap:.25rem;margin-top:1rem}img.qr{display:block;width:256px;height:256px;background:#fff;border-radius:8px;margin:.5rem auto}
