*{margin:0;padding:0}:root{--paper:#eee9dd;--paper-dark:#e4ddc9;--ink:#1c2541;--ink-soft:#4a5273;--seal:#9e2a2b;--seal-soft:#c1484a;--brass:#a9814b;--line:#c9c0a6;--ok:#3f6b4a}*{box-sizing:border-box}body{background:var(--paper-dark);color:var(--ink);background-image:radial-gradient(circle at 1px 1px,#1c25410f 1px,#0000 0);background-size:22px 22px;margin:0;font-family:Inter,system-ui,sans-serif}.page{justify-content:center;align-items:flex-start;min-height:100vh;padding:48px 20px;display:flex}.ballot{background:var(--paper);border:1px solid var(--line);width:100%;max-width:560px;position:relative;box-shadow:0 1px #1c25410d,0 24px 48px -24px #1c254159}.mono{font-family:IBM Plex Mono,monospace}.ballot-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.stub{align-items:center;gap:10px;display:flex}.stub-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-size:11px}.stub-value{background:var(--paper-dark);border:1px solid var(--line);padding:4px 8px;font-size:13px}.stub-net{color:var(--ink-soft);align-items:center;gap:6px;font-size:12px;display:flex}.dot{background:var(--seal);border-radius:50%;width:7px;height:7px;display:inline-block}.dot[data-ok=true]{background:var(--ok)}.btn-connect{background:var(--ink);color:var(--paper);cursor:pointer;letter-spacing:.01em;border:none;padding:8px 14px;font-family:inherit;font-size:13px;font-weight:600}.btn-connect:hover{background:var(--ink-soft)}.banner{border-bottom:1px solid var(--line);padding:10px 24px;font-size:13px}.banner-warn{color:#6b4a1e;background:#f4e3c8}.banner code{font-family:IBM Plex Mono,monospace;font-size:12px}.link-btn{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.perforation{background-image:repeating-linear-gradient(to right, var(--line) 0, var(--line) 6px, transparent 6px, transparent 12px);height:1px;position:relative}.perforation:before,.perforation:after{content:"";background:var(--paper-dark);border:1px solid var(--line);border-radius:50%;width:16px;height:16px;position:absolute;top:-8px}.perforation:before{left:-8px}.perforation:after{right:-8px}.ballot-body{padding:32px 28px 8px;position:relative}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--brass);margin:0 0 6px;font-size:11px;font-weight:600}.title{margin:0 0 8px;font-family:Fraunces,serif;font-size:30px;font-weight:600;line-height:1.15}.countdown{color:var(--ink-soft);margin:0 0 28px;font-family:IBM Plex Mono,monospace;font-size:13px}.countdown.closed{color:var(--seal)}.candidate-list{flex-direction:column;gap:12px;margin:0 0 20px;padding:0;list-style:none;display:flex}.candidate-row{border:1px solid var(--line);width:100%;color:var(--ink);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:14px;padding:14px 16px;font-family:inherit;font-size:15px;display:flex}.candidate-row:hover:not([data-disabled=true]){border-color:var(--ink-soft);background:#1c254108}.candidate-row[data-selected=true]{border-color:var(--seal);background:#9e2a2b0d}.candidate-row[data-disabled=true]{cursor:default}.bubble{border:1.5px solid var(--ink-soft);border-radius:50%;width:18px;min-width:18px;height:18px;position:relative}.bubble[data-filled=true]:after{content:"";background:var(--seal);border-radius:50%;position:absolute;inset:3px}.candidate-name{flex:1;font-weight:500}.candidate-votes{color:var(--ink-soft);font-size:12px}.bar-track{background:var(--paper-dark);border:1px solid var(--line);border-top:none;height:4px;margin-top:4px}.bar-fill{background:var(--brass);height:100%;transition:width .4s}.bar-fill[data-leader=true]{background:var(--seal)}.hint{color:var(--ink-soft);text-align:center;margin:8px 0 20px;font-size:13px}.btn-cast{letter-spacing:.02em;background:var(--seal);width:100%;color:var(--paper);cursor:pointer;border:none;margin-bottom:20px;padding:14px;font-family:Fraunces,serif;font-size:16px;font-weight:600}.btn-cast:hover:not(:disabled){background:var(--seal-soft)}.btn-cast:disabled{background:var(--line);color:var(--ink-soft);cursor:not-allowed}.stamp{border:3px solid var(--seal);width:128px;height:128px;color:var(--seal);text-align:center;text-transform:uppercase;letter-spacing:.05em;opacity:.85;border-radius:50%;justify-content:center;align-items:center;margin:8px auto 24px;font-family:Fraunces,serif;font-size:16px;font-weight:700;line-height:1.3;display:flex;transform:rotate(-9deg)}.stamp:before{content:"";border:1px solid var(--seal);border-radius:50%;width:108px;height:108px;position:absolute}.status{text-align:center;margin:0 0 20px;font-size:13px}.status-error{color:var(--seal)}.status-success{color:var(--ok)}.status-pending{color:var(--brass)}.ballot-foot{border-top:1px solid var(--line);color:var(--ink-soft);justify-content:space-between;align-items:center;padding:14px 24px;font-size:12px;display:flex}.ballot-foot a{color:var(--ink-soft);text-decoration:none}.ballot-foot a:hover{text-decoration:underline}@media (width<=480px){.ballot-body{padding:24px 18px 8px}.title{font-size:24px}}
