:root{
  --bg:#F4F6FA; --surface:#FFFFFF; --sunk:#EEF1F6; --line:#DCE2EC; --ink:#141B2D; --body:#2B3448; --muted:#667085;
  --accent:#1F4FD1; --accent-ink:#FFFFFF; --accent-soft:#E3EAFC;
  --red:#C2262E; --red-soft:#FBE4E5; --ok:#1E7A4C; --ok-soft:#DDF2E6; --warn:#A35F00; --warn-soft:#FBEED5; --violet:#6B3FC6; --violet-soft:#EEE6FB;
  --shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
  --radius:12px; --font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0E121B; --surface:#161C28; --sunk:#1C2433; --line:#2A3446; --ink:#EEF2FA; --body:#CBD3E1; --muted:#8C97AB;
  --accent:#7C9CFF; --accent-ink:#0B1020; --accent-soft:#1E2A4D; --red:#FF8A8F; --red-soft:#3A1C20; --ok:#6FD39E; --ok-soft:#14301F; --warn:#F2B562; --warn-soft:#3A2A10; --violet:#B99BFF; --violet-soft:#2A2047;
  --shadow:none;}}
:root[data-theme="dark"]{--bg:#0E121B; --surface:#161C28; --sunk:#1C2433; --line:#2A3446; --ink:#EEF2FA; --body:#CBD3E1; --muted:#8C97AB; --accent:#7C9CFF; --accent-ink:#0B1020; --accent-soft:#1E2A4D; --red:#FF8A8F; --red-soft:#3A1C20; --ok:#6FD39E; --ok-soft:#14301F; --warn:#F2B562; --warn-soft:#3A2A10; --violet:#B99BFF; --violet-soft:#2A2047; --shadow:none}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--body);font:15px/1.5 var(--font)}
h1,h2,h3,h4{color:var(--ink);margin:0;line-height:1.25}
h2{font-size:20px}h3{font-size:16px}
a{color:var(--accent)}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink)}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent)}
label.f{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);font-weight:600}
label.f>input,label.f>select,label.f>textarea{font-weight:400}
label.chk{display:inline-flex;align-items:center;gap:6px;font-size:14px;cursor:pointer}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.danger{color:var(--red)}
.btn.danger.armed{background:var(--red);color:#fff;border-color:var(--red)}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.ghost{background:none;border-color:transparent}
.btn.sm{padding:4px 10px;font-size:13px;border-radius:8px}
.btn:disabled{opacity:.5;cursor:default}
.wrap{max-width:1280px;margin:0 auto;padding:0 20px}
header.top{background:var(--surface);border-bottom:1px solid var(--line)}
header.top .wrap{display:flex;align-items:center;gap:14px;min-height:60px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--ink);font-size:17px;letter-spacing:-.01em}
.brand .mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--red));display:grid;place-items:center;color:#fff;font-size:15px}
.spacer{flex:1}
nav.tabs{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
nav.tabs .wrap{display:flex;gap:2px;overflow-x:auto}
nav.tabs button{background:none;border:0;padding:12px 12px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}
nav.tabs button[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}
.count{display:inline-block;min-width:18px;padding:0 6px;margin-left:5px;border-radius:999px;background:var(--sunk);color:var(--muted);font-size:12px;text-align:center}
.count.hot{background:var(--red);color:#fff}
.modebar{font-weight:700;font-size:13px;text-align:center;padding:6px}
.modebar.test{background:var(--warn-soft);color:var(--warn)}
.modebar.live{background:var(--red);color:#fff}
main{padding:20px 0 60px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
.stack{display:flex;flex-direction:column;gap:12px}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.fgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.two{display:grid;gap:16px;grid-template-columns:1fr 1fr}
@media (max-width:860px){.two{grid-template-columns:1fr}}
.muted{color:var(--muted)}.small{font-size:13px}
.pill{display:inline-flex;align-items:center;border-radius:999px;padding:1px 9px;font-size:12px;font-weight:700;background:var(--sunk);color:var(--muted);white-space:nowrap}
.st-voted{background:var(--ok-soft);color:var(--ok)}
.st-not_yet{background:var(--warn-soft);color:var(--warn)}
.st-not_registered{background:var(--violet-soft);color:var(--violet)}
.st-refused{background:var(--red-soft);color:var(--red)}
.st-opted_out{background:var(--red);color:#fff}
.pill.draft{background:var(--accent-soft);color:var(--accent)}
.kpis{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.kpi b{display:block;font-size:28px;color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums}
.kpi span{font-size:13px;color:var(--muted);font-weight:600}
.kpi.voted b{color:var(--ok)}.kpi.not_yet b{color:var(--warn)}.kpi.not_registered b{color:var(--violet)}
.bar{display:flex;height:10px;border-radius:99px;overflow:hidden;background:var(--sunk)}
.bar i{display:block;height:100%}
.bar .voted{background:var(--ok)}.bar .not_yet{background:var(--warn)}.bar .not_registered{background:var(--violet)}.bar .refused{background:var(--red)}
table.t{width:100%;border-collapse:collapse;font-size:14px}
table.t th{text-align:left;font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
table.t td{padding:8px;border-bottom:1px solid var(--line);vertical-align:middle}
table.t td.num,table.t th.num{text-align:right;font-variant-numeric:tabular-nums}
table.t tr.sub td:first-child{padding-left:26px;color:var(--muted)}
.tscroll{overflow-x:auto}
.inbox{display:grid;grid-template-columns:340px 1fr;gap:14px;min-height:70vh}
@media (max-width:860px){.inbox{grid-template-columns:1fr}.inbox.open .ilist{display:none}.inbox:not(.open) .ithread{display:none}}
.ilist{display:flex;flex-direction:column;gap:6px;max-height:78vh;overflow:auto}
.iitem{display:block;text-align:left;width:100%;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;cursor:pointer}
.iitem.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.iitem .nm{font-weight:700;color:var(--ink)}
.iitem .last{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dot{width:8px;height:8px;border-radius:50%;background:var(--red);display:inline-block}
.msgs{display:flex;flex-direction:column;gap:8px;max-height:62vh;overflow:auto;padding:4px;overscroll-behavior:contain}
.b{max-width:78%;padding:8px 12px;border-radius:14px;white-space:pre-wrap;word-wrap:break-word;font-size:14px}
.b.in{align-self:flex-start;background:var(--sunk);color:var(--ink);border-bottom-left-radius:4px}
.b.out{align-self:flex-end;background:var(--accent);color:var(--accent-ink);border-bottom-right-radius:4px}
.b.out.failed{background:var(--red-soft);color:var(--red)}
.b.out.draft{background:var(--surface);color:var(--ink);border:2px dashed var(--accent);align-self:stretch;max-width:none}
.b img{max-width:220px;border-radius:8px;display:block;margin-bottom:6px}
.b .meta{font-size:11px;opacity:.75;margin-top:4px}
.flag{background:var(--red-soft);color:var(--red);padding:8px 12px;border-radius:9px;font-size:13px}
.note{background:var(--accent-soft);color:var(--ink);padding:10px 12px;border-radius:9px;font-size:14px}
.warnbox{background:var(--warn-soft);color:var(--warn);padding:10px 12px;border-radius:9px;font-size:14px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:999px;font-weight:600;z-index:50;box-shadow:0 6px 24px rgba(0,0,0,.25);max-width:90vw}
.login{max-width:380px;margin:12vh auto;padding:0 16px}
.ph{display:inline-flex;gap:4px;flex-wrap:wrap}
.ph button{font-size:12px;padding:2px 8px;border-radius:6px;border:1px solid var(--line);background:var(--sunk);cursor:pointer;color:var(--ink)}
.thumbs{display:flex;gap:8px;flex-wrap:wrap}
.thumbs button{border:2px solid var(--line);border-radius:8px;padding:0;background:none;cursor:pointer;width:84px;height:84px;overflow:hidden}
.thumbs button.on{border-color:var(--accent)}
.thumbs img{width:100%;height:100%;object-fit:cover}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips label{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-size:13px;cursor:pointer;background:var(--surface)}
.chips label.on{border-color:var(--accent);background:var(--accent-soft)}
.chips input{display:none}
.sec-title{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.code{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:var(--sunk);padding:8px 10px;border-radius:8px;word-break:break-all}
.empty{text-align:center;color:var(--muted);padding:30px}
@media (max-width:560px){.wrap{padding:0 12px}.b{max-width:90%}}
