.handbook-section{border:1px solid var(--line);border-radius:12px;margin:18px 0;background:#fff;overflow:hidden}.handbook-section summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 24px;cursor:pointer;font-size:1.12rem;font-weight:700;color:var(--purple)}.handbook-section summary::before{content:'＋';font-size:1.2rem}.handbook-section[open] summary::before{content:'−'}.handbook-section summary span{margin-left:auto;font-size:.8rem;font-weight:400;color:var(--muted)}.handbook-section>div{padding:0 24px 24px}.handbook-text{white-space:pre-wrap;line-height:1.9}.handbook-editor{border-top:1px solid var(--line);padding-top:24px;margin-top:28px}.handbook-editor label,.election-dialog label,.vote-entry label,.election-search label,.handbook-section label,.election-heading label,#election-issues>label{display:grid;gap:8px;margin:14px 0}.handbook-editor textarea,.handbook-editor select,.handbook-section input,.election-heading select,.election-dialog input:not([type=checkbox]),.election-dialog textarea,.vote-entry input,#election-issues input{width:100%;box-sizing:border-box;border:1px solid #d8cddc;background:#fff;padding:12px;border-radius:7px;font:inherit;min-height:46px}.handbook-editor textarea,.election-dialog textarea{resize:vertical}.election-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}.election-heading h2,.election-heading h3{margin:8px 0}.election-heading label{min-width:180px}.election-search{display:flex;align-items:end;gap:12px}.election-search label{flex:1}.election-search button{margin-bottom:14px}.election-error{padding:14px;background:#fff2eb;color:#9c3526;border-left:3px solid #b94833;white-space:pre-wrap}.election-round-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:22px 0}.election-round-tabs button{display:block;text-align:left}.election-round-tabs small{display:block;font-size:.75rem;opacity:.8;margin-top:5px}.election-workspace{border-top:1px solid var(--line);padding-top:24px}.election-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0}.election-metrics div{background:var(--lilac);border-radius:10px;padding:16px}.election-metrics span{display:block;color:var(--muted);font-size:.8rem}.election-metrics strong{display:block;font:2rem Georgia,serif;margin-top:10px;color:var(--purple)}.election-dialog{width:min(740px,calc(100vw - 32px));box-sizing:border-box;border:1px solid var(--line);border-radius:16px;padding:24px;max-height:90vh;color:var(--purple);background:var(--cream)}.election-dialog::backdrop{background:#2f1b3ba6}.election-dialog-top{display:flex;justify-content:space-between;align-items:start;gap:16px}.election-dialog h2{font-size:1.5rem;margin-top:5px}.election-dialog h3{font-size:1.4rem}.election-dialog .election-check,.election-check{display:flex!important;align-items:flex-start;gap:12px;margin:24px 0!important}.election-check input{width:20px;height:20px;flex-shrink:0}.election-dialog .portal-table input[type=checkbox]{width:22px;height:22px}.voting-card{text-align:center;background:white;border:1px solid var(--line);border-radius:12px;margin:20px 0;padding:24px}.voting-card code{display:block;overflow-wrap:anywhere;font-size:1.1rem;letter-spacing:.08em;color:var(--purple)}.voting-qr{max-width:240px;margin:18px auto}.voting-qr svg{display:block;width:100%;height:auto}.vote-entry{max-width:660px;margin:0 auto}.vote-symbol{width:60px;height:60px;display:grid;place-content:center;font-size:2rem;border-radius:50%;background:var(--lilac);color:var(--purple);margin-bottom:20px}.ballot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:22px 0}.ballot-option{display:flex;align-items:center;gap:14px;padding:18px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:#fff}.ballot-option:has(input:checked){border:2px solid var(--plum);background:var(--lilac);padding:17px}.ballot-option input{height:22px;width:22px;flex-shrink:0;accent-color:var(--plum)}.ballot-option strong{font-size:1.15rem}.ballot-option small,.portal-table small{display:block;color:var(--muted);font-size:.8rem;margin-top:5px}.ballot-number{font:1.5rem Georgia,serif;color:var(--muted)}.ballot-counter{display:inline-block;background:var(--lilac);border-radius:30px;padding:8px 16px}.election-result{margin:22px 0}.handbook-section .guide-steps{grid-template-columns:repeat(2,1fr)}#election-issues{margin-top:24px}#election-issues .button{padding:9px 12px;font-size:.78rem;white-space:nowrap}
@media(max-width:600px){.election-round-tabs{grid-template-columns:repeat(2,1fr)}.election-metrics{grid-template-columns:repeat(2,1fr)}.ballot-grid{grid-template-columns:1fr}.election-search{display:block}.handbook-section>div{padding:0 16px 18px}.handbook-section summary{padding:18px 16px}.handbook-section .guide-steps{grid-template-columns:1fr}.election-dialog{padding:16px}.election-dialog-top .button{padding:8px 12px}}
.candidate-sources{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.candidate-sources>section{padding:22px;background:var(--cream);border:1px solid var(--line);border-radius:12px;min-width:0}#candidate-admin label{display:grid;gap:8px;margin:16px 0}#candidate-admin input:not([type=checkbox]),#candidate-admin select{padding:12px;min-height:44px;font:inherit;border:1px solid #d8cddc;border-radius:8px;max-width:100%;width:100%;box-sizing:border-box}#candidate-admin .portal-table .button{padding:7px 10px;min-height:36px;font-size:.8rem}#candidate-status{color:var(--purple);font-weight:600}.prep-error{padding:12px;color:#9c3526;background:#fff2eb}.election-batches{margin-top:24px;border-top:1px solid var(--line);padding-top:24px}.prep-batch-dialog{width:min(860px,calc(100vw - 32px))}.prep-print-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:24px}.prep-ticket{border:1px dashed #bbb;border-radius:8px;background:#fff;padding:16px;text-align:center;break-inside:avoid}.prep-ticket>span,.prep-ticket small{display:block;font-size:.75rem;color:var(--muted)}.prep-ticket h3{margin:6px 0;font-size:1rem}.prep-ticket-qr{width:120px;margin:8px auto}.prep-ticket-qr svg{display:block;width:100%;height:auto}.short-code{font:700 26px ui-monospace,monospace;letter-spacing:.14em;display:block;color:var(--purple);margin:6px 0}.prep-ticket p{font-size:.75rem;line-height:1.8;margin:8px 0}.voting-card code{font-size:1.9rem;letter-spacing:.14em}.prep-ticket small{overflow-wrap:anywhere}@media(max-width:650px){.candidate-sources{grid-template-columns:1fr}.prep-print-grid{grid-template-columns:1fr}.prep-ticket-qr{width:130px}}
@media print{@page{size:A4;margin:10mm}body.print-prepared-cards>:not(#prep-dialog){display:none!important}body.print-prepared-cards #prep-dialog{position:static;width:100%;max-width:none;max-height:none;height:auto;margin:0;padding:0;border:0;overflow:visible;background:white}body.print-prepared-cards #prep-dialog>.election-dialog-top,body.print-prepared-cards #prep-dialog-form>:not(.prep-print-grid){display:none!important}body.print-prepared-cards .prep-print-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4mm;margin:0}body.print-prepared-cards .prep-ticket{box-sizing:border-box;height:84mm;padding:3mm;border-radius:0;break-inside:avoid;page-break-inside:avoid}body.print-prepared-cards .prep-ticket-qr{width:28mm;margin:1mm auto}body.print-prepared-cards .prep-ticket h3{font-size:12pt;margin:1mm 0}body.print-prepared-cards .prep-ticket .short-code{font-size:21pt;margin:1mm 0}body.print-prepared-cards .prep-ticket p{font-size:8pt;margin:1mm 0}body.print-prepared-cards .prep-ticket small,body.print-prepared-cards .prep-ticket>span{font-size:8pt}}
@media print{body.print-voting-card>:not(#election-dialog){display:none!important}body.print-handbook header,body.print-handbook footer,body.print-handbook .nav,body.print-handbook #auth-bar,body.print-handbook [data-election],body.print-handbook #portal-toast,body.print-handbook .skip-link{display:none!important}body.print-handbook [data-view]:not([data-view=handbook]){display:none!important}body.print-handbook .handbook-section{break-inside:auto;box-shadow:none;border-color:#aaa}body.print-handbook details>*{display:block!important}body.print-handbook details summary::before{display:none}body.print-handbook input,body.print-handbook form{display:none!important}body.print-handbook .portal-table-wrap{overflow:visible}body.print-handbook .portal-table{min-width:0}body.print-handbook .handbook-text{white-space:pre-wrap}body.print-voting-card *{visibility:hidden}body.print-voting-card #election-dialog,body.print-voting-card #election-dialog .voting-card,body.print-voting-card #election-dialog .voting-card *{visibility:visible}body.print-voting-card #election-dialog{position:absolute;left:0;top:0;border:0;width:100%;max-height:none;overflow:visible}body.print-voting-card .election-dialog-top,body.print-voting-card #election-dialog .button,body.print-voting-card .voting-card a,body.print-voting-card #election-dialog .portal-help{display:none!important}.voting-card{break-inside:avoid}}
.anonymous-count-form{margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}.anonymous-count-form label{display:grid;gap:8px;margin:16px 0}.anonymous-count-form input:not([type=checkbox]){width:100%;box-sizing:border-box;padding:12px;font:inherit;min-height:44px;border:1px solid #d8cddc;border-radius:8px;background:#fff}.anonymous-count-form label.election-check{display:flex;align-items:flex-start}
