:root{--bg:#0b0b0c;--panel:#151517;--panel-2:#1d1d20;--line:#2a2a2e;--text:#f2f2f3;--muted:#9a9aa2;--red:#e4002b;--red-dim:#7a0017;--green:#25c26e;--amber:#e8a13a;--radius:14px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent}.app{max-width:560px;margin:0 auto;min-height:100dvh;flex-direction:column;padding:18px 16px calc(96px + env(safe-area-inset-bottom, 0px))}.app,.brand{display:flex}.brand{align-items:center;gap:10px;margin-bottom:4px}.brand .dot{width:14px;height:14px;border-radius:50%;background:var(--red);box-shadow:0 0 12px 2px var(--red)}.brand h1{font-size:19px;margin:0;letter-spacing:.2px}.sub{color:var(--muted);font-size:13px;margin:2px 0 16px}.banner{background:var(--panel-2);border:1px solid var(--amber);color:var(--amber);border-radius:var(--radius);padding:10px 12px;font-size:12.5px;line-height:1.45;margin-bottom:14px}.banner code{color:var(--text)}.controls{display:flex;gap:8px;margin-bottom:12px;align-items:center}.search{flex:1 1;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font-size:15px;padding:11px 13px;outline:none}.search:focus{border-color:var(--red)}.search::placeholder{color:var(--muted)}.ctl{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font-size:12.5px;font-weight:600;padding:11px 12px;cursor:pointer;white-space:nowrap}.ctl:disabled{color:var(--muted);opacity:.5;cursor:default}.roster{display:flex;flex-direction:column;gap:8px}.row{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:border-color .12s,background .12s}.row.selected{border-color:var(--red);background:#1a1416}.row .num{font-size:20px;font-weight:650;min-width:56px}.row .meta{color:var(--muted);font-size:12.5px;flex:1 1}.row .right{display:flex;align-items:center;gap:10px}.chip{font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}.chip.sent{color:var(--amber);border-color:var(--amber)}.chip.flashing{color:#fff;border-color:var(--red);background:var(--red);animation:pulse .6s ease-in-out infinite}.chip.no-response{color:var(--muted);border-color:var(--line);opacity:.7}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.batt{font-size:11.5px;color:var(--muted);min-width:38px;text-align:right}.flashbar{position:fixed;left:0;right:0;bottom:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom, 0px));background:linear-gradient(180deg,transparent,var(--bg) 28%)}.flashbar .inner{max-width:560px;margin:0 auto}.flash-btn{width:100%;border:none;border-radius:var(--radius);padding:18px;font-size:18px;font-weight:700;color:#fff;background:var(--red);cursor:pointer}.flash-btn:disabled{background:var(--panel-2);color:var(--muted);cursor:default}.empty{color:var(--muted);text-align:center;padding:40px 0;font-size:14px}.link{color:var(--red);text-decoration:none;font-weight:600}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.card-head{display:flex;align-items:center;gap:12px}.card-head .meta{flex:1 1}.save{min-width:78px}.save:not(:disabled){border-color:var(--red);color:#fff;background:var(--red)}.field{display:flex;align-items:center;gap:12px}.field-label{width:96px;color:var(--muted);font-size:12.5px;flex-shrink:0}.field-control{flex:1 1;display:flex;align-items:center;gap:10px;min-width:0}.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}.seg-btn{background:var(--panel-2);border:none;color:var(--muted);font-size:12.5px;padding:7px 12px;cursor:pointer;text-transform:capitalize}.seg-btn.on{background:var(--red);color:#fff}.slider{flex:1 1;accent-color:var(--red)}.numbox{width:72px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:14px;padding:6px 8px}.hint{color:var(--muted);font-size:11.5px;margin:0}.hint.warn{color:var(--amber)}