:root{--ink:#1d1235;--violet:#6b3fd8;--teal:#33b5e5;--line:#e2dff0;--muted:#6f6a85}*{box-sizing:border-box}body{color:var(--ink);background:#f7f6fb;margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}header{border-bottom:1px solid var(--line);background:#fff;align-items:center;gap:1rem;padding:.6rem 1.5rem;display:flex}header img{height:30px}header h1{color:var(--muted);margin:0;font-size:1rem;font-weight:600}main{gap:1rem;max-width:64rem;margin:1rem auto;padding:0 1rem;display:grid}section{border:1px solid var(--line);background:#fff;border-radius:10px;padding:1rem 1.2rem}section h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);justify-content:space-between;align-items:center;margin:0 0 .6rem;font-size:.8rem;display:flex}.row{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin:.35rem 0;display:flex}label{min-width:7rem;color:var(--muted);display:inline-block}input[type=text],input[type=password]{border:1px solid var(--line);width:18rem;font:inherit;border-radius:6px;padding:.35rem .5rem}button{border:1px solid var(--line);color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:6px;padding:.4rem .8rem}button:hover:not(:disabled){border-color:var(--violet)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--violet);border-color:var(--violet);color:#fff}button.danger{color:#fff;background:#c62828;border-color:#c62828}button.small{text-transform:none;letter-spacing:0;padding:.15rem .5rem;font-size:.75rem}#keypad button{width:2.6rem;height:2.2rem;font-size:1rem}.call{background:#f4f1fc;border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:.5rem 1rem;padding:.6rem .9rem;display:grid}#party{font-size:1.25rem;font-weight:600}#partySub{color:var(--muted)}#timer{color:var(--violet);font:600 1.6rem/1 ui-monospace,monospace}#state{font-weight:600}.mono{white-space:pre;border-radius:6px;padding:.6rem;font:12px/1.45 ui-monospace,monospace;overflow:auto}#log{color:#b8f5c2;white-space:pre-wrap;background:#14121c;height:16rem}#candidates{background:#f4f4f7;height:10rem}#candidates .sel{color:#17663a;font-weight:700}#status{font-weight:600}.notice{color:#c62828}.other-call{border:1px dashed var(--violet);border-radius:8px;padding:.5rem .9rem}.other-party{font-weight:600}.other-state{color:var(--muted)}#transferBar{border:1px solid var(--teal);background:#eaf6fc;border-radius:8px;margin:.5rem 0;padding:.5rem .9rem}
