:root{--green:#124c3b;--dark:#09372b;--gold:#b89952;--bg:#f4f6f3;--ink:#233d34;--muted:#64776e;--line:#dce5de}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--green);text-underline-offset:4px}h1,h2,h3{line-height:1.2;margin:0 0 18px}h1{font-size:clamp(28px,4vw,44px);font-weight:650;letter-spacing:-1.3px}h2{font-size:23px}p{color:var(--muted);margin:8px 0 22px}.top{min-height:106px;background:var(--dark);color:white;display:flex;align-items:center;padding:24px 5%;gap:32px;border-bottom:4px solid var(--gold)}.brand{display:flex;align-items:center;gap:14px;color:white;text-decoration:none;font-size:30px;font-weight:750;line-height:1.1;letter-spacing:2px}.brand small{display:block;font-size:11px;font-weight:400;letter-spacing:2px;margin-top:7px;text-transform:uppercase}.mark{display:grid;place-items:center;border:1px solid #b8995288;width:53px;height:56px;color:#ddc78f;border-radius:15px 3px;font:38px Georgia}.church{font-size:13px;color:#c3d6cc;border-left:1px solid #ffffff33;padding-left:26px;line-height:1.5}nav{display:flex;align-items:center;gap:23px;margin-left:auto;flex-wrap:wrap}nav a{color:#e4eee7;text-decoration:none;font-size:14px}nav form{margin:0}main{max-width:1230px;margin:0 auto;padding:48px 28px 70px;min-height:75vh}footer{border-top:1px solid var(--line);padding:22px 5%;font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:20px}.eyebrow{display:block;font-size:11px;letter-spacing:2.5px;color:#8f7438;font-weight:750;margin-bottom:18px}.welcome{display:grid;grid-template-columns:1.15fr 1fr;gap:90px;align-items:center;min-height:63vh}.welcome h1{font:clamp(36px,4.3vw,59px)/1.1 Georgia,serif;letter-spacing:-1px}.welcome p{max-width:380px}.seal{margin-top:55px;color:#9caea0;letter-spacing:8px;font-size:21px}.seal span{display:block;letter-spacing:3px;font-size:9px;margin-top:6px}.card{background:white;border:1px solid var(--line);border-radius:17px;padding:30px;margin-bottom:24px;box-shadow:0 6px 20px #124c3b04}.entry{padding:40px;border-top:4px solid var(--gold)}label{display:block;font-size:14px;font-weight:600;margin-bottom:18px}input,select{display:block;border:1px solid #ccd8cf;border-radius:8px;padding:13px 14px;font:inherit;width:100%;background:#fcfdfb;color:var(--ink);margin-top:7px}input:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #c6ad6d;outline-offset:3px}button,.button{display:inline-block;border:0;border-radius:8px;padding:13px 22px;font:600 14px/1.5 system-ui;background:var(--green);color:white;cursor:pointer;text-align:center;text-decoration:none}button:hover,.button:hover{filter:brightness(1.08)}.secondary{background:#eaf1eb;color:var(--green);border:1px solid #cbdace}.quiet{background:#ffffff12;color:white}.danger{background:#994037}.full{width:100%}.small{padding:8px 12px;font-size:12px}.switch{display:block;text-align:center;margin-top:23px;font-size:14px}.heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:26px}.heading h1{margin-top:15px}.grid{display:grid;gap:24px}.two{grid-template-columns:1fr 1fr}.elections{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.election-card{text-decoration:none;color:inherit;display:block}.election-card h2{margin-top:25px}.card-bottom{border-top:1px solid var(--line);padding-top:20px;display:flex;justify-content:space-between;gap:15px;font-size:12px}.badge{display:inline-block;padding:6px 12px;border-radius:50px;background:#edf0ed;color:#62766a;font-size:12px;font-weight:650;white-space:nowrap}.badge.open{background:#d9efdf;color:#22603a}.badge.closed{background:#eee7d5;color:#806731}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;align-items:end}.form-grid label{margin-bottom:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:25px 0}.stats section{background:white;border:1px solid var(--line);padding:23px 28px;border-radius:13px}.stats span{font-size:13px;color:var(--muted)}.stats strong{display:block;font-size:40px;font-weight:600;line-height:1.4}.toolbar{display:flex;align-items:center;gap:20px;margin-bottom:28px;font-size:12px;color:var(--muted)}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);border-bottom:2px solid var(--line);padding:13px 14px}td{padding:13px 14px;border-bottom:1px solid var(--line);font-size:14px}td small{display:block;color:var(--muted)}.table-wrap{overflow-x:auto}.search,input[type=search]{margin-bottom:20px}.scroll{max-height:330px;overflow:auto;margin-bottom:22px}.check{display:flex;align-items:center;gap:12px;margin:0;font-weight:500}.check input{width:20px;height:20px;margin:0;accent-color:var(--green)}.check small{display:inline}.candidate-list{display:flex;gap:15px;flex-wrap:wrap}.candidate-list span{background:#f4f7f3;padding:10px 18px;border-radius:8px}.candidate-list b{color:var(--green);margin-right:12px}.alert{padding:20px;border-radius:10px;background:#e0efe1;margin-bottom:24px}.error{background:#fff0ec;color:#8a3323}.controls{border-left:4px solid var(--gold)}.controls form{max-width:420px}.ticket{text-align:center;margin:35px auto;max-width:800px}.credential{font:700 clamp(20px,3vw,31px)/1.8 ui-monospace,monospace;letter-spacing:1px;padding:20px;background:#eff4ec;margin:30px 0;border:1px dashed var(--gold);overflow-wrap:anywhere}.vote-title{text-align:center;margin-bottom:40px}.ballot-form{max-width:900px;margin:auto}.ballot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.candidate{display:flex;align-items:center;gap:20px;background:white;padding:28px;border:2px solid var(--line);border-radius:12px;cursor:pointer}.candidate:has(input:checked){border-color:var(--green);background:#e7f2e8}.candidate input{width:23px;height:23px;margin:0;accent-color:var(--green)}.number{font-size:28px;font-weight:700;color:var(--green)}.blank{padding:24px;margin:20px 0;border:1px dashed #9faea0;border-radius:10px}.review{max-width:650px;margin:auto;text-align:center}.choice-review{padding:20px;background:#f0f5ef;color:var(--green);font-size:21px}.choice-review b{margin-right:15px}.success{text-align:center;max-width:700px;margin:60px auto}.success-icon{font-size:55px;color:var(--green);border-radius:50%;background:#e0efdf;width:100px;height:100px;margin:10px auto 30px}.fine{font-size:12px}.panel .stats strong{font-size:60px}.panel #connection{font-size:12px}.empty{text-align:center;padding:50px}@media(max-width:800px){.top{flex-wrap:wrap;padding:20px}.church{margin-left:auto}nav{margin:0;width:100%}.welcome{grid-template-columns:1fr;gap:35px}.welcome>div{display:none}.two,.ballot-grid{grid-template-columns:1fr}.heading{align-items:flex-start;flex-direction:column}.stats{gap:8px}.stats section{padding:15px}.stats strong,.panel .stats strong{font-size:32px}.stats span{font-size:11px}.card{padding:22px}.toolbar{flex-wrap:wrap}main{padding:30px 17px}.seal{display:none}footer{flex-direction:column}.church{font-size:11px}.credential{font-size:20px}}@media print{body{background:white}.top,footer,button,.button,nav,.toolbar,.switch{display:none!important}main{padding:0;max-width:none}.card{box-shadow:none;border:0}.ticket{margin:0}.credential{font-size:22px}.panel table{page-break-inside:auto}tr{break-inside:avoid}.panel .stats strong{font-size:30px}.panel h1{font-size:28px}}

fieldset{border:1px solid var(--line);border-radius:10px;padding:16px;margin:0 0 20px;min-width:0}legend{font-size:13px;color:var(--muted);padding:0 8px}fieldset .check{margin:10px 0}.vote-kind{margin:20px 0}.entry input{min-width:0}.entry{min-width:0}code{overflow-wrap:anywhere;font-size:12px}details{margin-bottom:20px}summary{cursor:pointer;font-weight:600}select{margin-top:7px}#quorum-info{font-weight:650;color:var(--green)}
.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}.candidate strong{overflow-wrap:anywhere}.print-heading{display:none}
@media print{@page{size:A4;margin:15mm}.print-heading{display:block;font-size:14px;border-bottom:1px solid #aaa;padding-bottom:12px;margin-bottom:22px}.panel .table-wrap{overflow:visible}.panel table{width:100%;table-layout:fixed}.panel th,.panel td{padding:8px 5px;font-size:10px;overflow-wrap:anywhere}.panel th:nth-child(2){width:28%}.panel th:last-child{width:29%}.panel .heading{gap:15px}.panel .stats{gap:12px}.panel .stats section{padding:12px}.panel .card{padding:0}.panel .fine{font-size:10px}}
/* SEIPPA 0.3: fotografia, mesa e painel da assembleia */
.portrait{width:112px;height:112px;object-fit:cover;object-position:center;border-radius:18px;background:#e8eee8;flex-shrink:0;display:block}
.placeholder{display:flex;align-items:center;justify-content:center;color:#48695b;font-size:2.5rem;font-weight:800}
.candidate-list{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}.candidate-profile{padding:18px;border:1px solid #dce6de;border-radius:18px;display:flex;flex-direction:column;gap:12px}.candidate-profile input{max-width:100%}.candidate-profile>b{font-size:1.7rem}
.candidate{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding:24px!important;font-size:1.35rem;min-height:280px}.candidate .portrait{width:150px;height:150px}.candidate input{width:28px;height:28px}.candidate:has(input:checked){outline:4px solid #267051;background:#edf7ee}.candidate:focus-within{outline:4px solid #b4903c}.choice-review{display:flex;align-items:center;gap:18px}.choice-review .portrait{width:80px;height:80px}.ballot-form button,.review button{min-height:72px;font-size:1.4rem}
.waiting{text-align:center;max-width:800px;margin:60px auto;padding:60px 30px}.waiting h1{font-size:clamp(2rem,5vw,3.8rem)}.waiting p{font-size:1.3rem}.station-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:20px 0}.station-card{border:1px solid #d9e3dc;border-radius:12px;padding:18px}.tv-controls{display:flex;gap:20px;align-items:center;margin:16px 0}.tv-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:24px 0}.tv-candidate{background:white;border:1px solid #d5e2d9;border-radius:20px;padding:20px;display:flex;align-items:center;gap:20px}.tv-candidate[hidden]{display:none}.tv-candidate .portrait{width:110px;height:130px}.tv-candidate b{font-size:2.2rem;color:#215c42}.tv-candidate h2{font-size:clamp(1.1rem,1.7vw,1.65rem);line-height:1.2;margin:8px 0;overflow-wrap:anywhere}.panel .stats strong{font-size:3rem}:fullscreen .top,:fullscreen footer{display:none}:fullscreen main{max-width:1800px;padding:24px 40px}:fullscreen .panel .heading h1{font-size:2.7rem}
@media(max-width:900px){.tv-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.tv-candidate{flex-direction:column;text-align:center}}@media(max-width:520px){.tv-gallery{grid-template-columns:1fr}.candidate .portrait{width:120px;height:120px}}
@media print{.tv-controls,.tv-gallery,#gallery-page{display:none!important}}
:fullscreen .panel:not([data-status="closed"]) #results,:fullscreen .panel .fine,:fullscreen .panel>[data-print]{display:none}:fullscreen .panel .heading{margin-bottom:12px}:fullscreen .tv-controls{margin:8px 0}:fullscreen .tv-gallery{margin:16px 0}:fullscreen #gallery-page{margin-bottom:12px}
@media(max-height:800px) and (min-width:901px){:fullscreen main{padding:12px 28px}:fullscreen .panel .heading h1{font-size:2rem;margin:4px 0}:fullscreen .eyebrow{margin-bottom:6px}:fullscreen .tv-candidate{padding:12px}:fullscreen .tv-candidate .portrait{width:80px;height:90px}:fullscreen .tv-gallery{gap:12px}:fullscreen .stats section{padding:12px 22px}:fullscreen .panel .stats strong{font-size:2.3rem}:fullscreen .panel p{margin-bottom:8px}}
:fullscreen .tv-controls{display:none}
/* 0.4 — destaque dos eleitos */
.panel[data-status="closed"] .tv-gallery,.panel[data-status="closed"] #gallery-page{display:none}
.winner-stage{border:2px solid #bd9b50;border-radius:24px;padding:26px 32px;background:linear-gradient(125deg,#103f30,#1d6249);color:#fff;margin:20px 0 24px}
.winner-stage[hidden]{display:none}.winner-stage>h2{color:#e9d394;font-size:1.25rem;text-transform:uppercase;letter-spacing:2px}.winner-card{display:flex;align-items:center;gap:36px;min-height:260px}.winner-card[hidden]{display:none}.winner-card .portrait{height:250px;width:210px;border:4px solid #d7bd7d;border-radius:20px}.winner-card h3{font-size:clamp(2rem,3.2vw,3.8rem);line-height:1.1;overflow-wrap:anywhere;margin:16px 0}.winner-card span{font-size:1.15rem;color:#f0d899;font-weight:700}.winner-stage p,.winner-stage small{color:#e3eee4}.winner-card p{font-size:1.5rem}.winner-counter{margin-bottom:0;font-size:.95rem}
:fullscreen .panel[data-status="closed"] #results{display:none}
@media(max-height:800px) and (min-width:901px){:fullscreen .winner-stage{padding:18px 24px;margin:14px 0}:fullscreen .winner-card{min-height:180px}:fullscreen .winner-card .portrait{height:185px;width:155px}:fullscreen .winner-card h3{font-size:2.3rem}:fullscreen .winner-card p{font-size:1.15rem}:fullscreen .winner-stage>h2{font-size:1rem;margin-bottom:8px}}
@media(max-width:600px){.winner-card{flex-direction:column;gap:16px;text-align:center}.winner-stage{padding:22px}.winner-card .portrait{width:160px;height:190px}}
@media print{.winner-stage{display:none!important}}
/* 0.4.1 — eleitos também no relatório, sem rodízio na impressão */
.report-elected{margin:20px 0 26px;padding:22px;border:2px solid #b89952;border-radius:16px;background:#f1f7f0}.report-elected>h3{color:#124c3b;margin-bottom:18px}.report-elected-card{display:flex;gap:24px;align-items:center;padding:18px 0;break-inside:avoid}.report-elected-card+.report-elected-card{border-top:1px solid #ccd9cb}.report-elected-card .portrait{width:120px;height:145px;border:2px solid #b89952;border-radius:12px}.report-elected-card h4{font-size:1.8rem;line-height:1.2;margin:8px 0;overflow-wrap:anywhere}.report-elected-card p{margin:8px 0;font-size:1.05rem}.report-elected-card small{color:#476150}.elected-label{color:#124c3b;font-size:.9rem;letter-spacing:1px}.result-elected{background:#eef6eb;font-weight:650}.result-elected td:first-child{border-left:4px solid #b89952}
@media(max-width:520px){.report-elected-card{flex-direction:column;align-items:flex-start}.report-elected-card h4{font-size:1.4rem}}
@media print{.report-elected{display:block!important;background:white;border:1.5pt solid #777;border-radius:0;padding:12pt;margin:12pt 0;print-color-adjust:exact;-webkit-print-color-adjust:exact}.report-elected-card{display:flex!important;flex-direction:row;align-items:center;padding:10pt 0;break-inside:avoid;page-break-inside:avoid}.report-elected-card .portrait{display:block!important;width:65pt;height:78pt}.report-elected-card h4{font-size:16pt}.report-elected-card p{font-size:11pt}.report-elected-card small{font-size:9pt}.result-elected{background:#eee;print-color-adjust:exact;-webkit-print-color-adjust:exact}.result-elected td:first-child{border-left:3pt solid #555}}
/* 0.5 — participação e apuração no lugar dos três cartões da TV */
.election-chart{background:white;border:1px solid #d6e2da;border-radius:20px;padding:24px 28px;margin:20px 0 24px;min-width:0}.election-chart h2{font-size:1.5rem;margin-bottom:10px}.election-chart svg{display:block;width:100%;height:auto}.chart-subtitle{margin:8px 0 16px;font-size:1rem}.chart-note{font-size:.85rem;margin:10px 0 0;color:#536b5d}.participation-legend{display:flex;gap:40px;margin:18px 0 0}.participation-legend>div{display:flex;align-items:center;gap:12px}.participation-legend strong{font-size:2.4rem;line-height:1}.participation-done strong{color:#176449}.participation-pending strong{color:#8b6b25}.participation-legend span{font-size:1rem}.candidate-chart-row{padding:10px 0}.candidate-chart-row[hidden]{display:none}.candidate-chart-label{display:flex;gap:12px;justify-content:space-between;align-items:center;margin-bottom:6px}.candidate-chart-label strong{font-size:1rem;overflow-wrap:anywhere}.candidate-chart-track{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:14px;align-items:center}.candidate-chart-value{font-size:.9rem;text-align:right;white-space:nowrap}.chart-badge{font-size:.7rem;padding:2px 8px;border-radius:7px;white-space:nowrap}.chart-badge.elected{background:#e3efdf;color:#145638}.chart-badge.tied{background:#f8e8bb;color:#75500b}.chart-pager{font-size:.8rem;margin:10px 0 0}
:fullscreen .panel[data-status="closed"] .panel-viz{display:grid;grid-template-columns:.85fr 1.15fr;gap:22px;align-items:stretch}:fullscreen .panel[data-status="closed"] .winner-stage,:fullscreen .panel[data-status="closed"] .election-chart{margin:12px 0}:fullscreen .panel[data-status="closed"] .winner-card{flex-direction:column;gap:12px;text-align:center;min-height:0}:fullscreen .panel[data-status="closed"] .winner-card h3{font-size:2.15rem;margin:10px 0}:fullscreen .panel[data-status="closed"] .winner-card .portrait{width:150px;height:180px}:fullscreen .panel[data-status="closed"] .winner-card p{font-size:1.15rem}:fullscreen .panel[data-status="closed"] .winner-stage>h2{font-size:1.05rem}:fullscreen .panel[data-status="closed"] .winner-counter{font-size:.8rem}
@media(max-height:800px) and (min-width:901px){:fullscreen .election-chart{padding:16px 20px;margin:12px 0}:fullscreen .election-chart h2{font-size:1.25rem}:fullscreen .chart-subtitle{font-size:.85rem;margin-bottom:8px}:fullscreen .chart-note{font-size:.72rem}:fullscreen .candidate-chart-row{padding:7px 0}:fullscreen .candidate-chart-label strong{font-size:.9rem}:fullscreen .candidate-chart-track{grid-template-columns:minmax(0,1fr) 125px;gap:8px}:fullscreen .candidate-chart-value{font-size:.75rem}:fullscreen .panel[data-status="closed"] .winner-card h3{font-size:1.7rem}:fullscreen .panel[data-status="closed"] .winner-stage{padding:20px}:fullscreen .panel[data-status="closed"] .winner-card .portrait{width:120px;height:145px}:fullscreen .participation-legend{margin-top:10px}:fullscreen .participation-legend strong{font-size:2rem}}
@media(max-width:600px){.election-chart{padding:20px}.participation-legend{gap:18px;align-items:flex-start}.participation-legend>div{flex-direction:column;align-items:flex-start}.candidate-chart-track{grid-template-columns:1fr;gap:4px}.candidate-chart-value{text-align:left}.candidate-chart-label strong{font-size:.9rem}:fullscreen .panel[data-status="closed"] .panel-viz{display:block}}
@media print{.election-chart{display:block!important;border:1pt solid #888;padding:12pt;margin:12pt 0;background:white;print-color-adjust:exact;-webkit-print-color-adjust:exact}.candidate-chart-row[hidden]{display:block!important}.candidate-chart-row{break-inside:avoid;page-break-inside:avoid}.chart-pager{display:none}.candidate-chart-label strong{font-size:10pt}.candidate-chart-value{font-size:9pt}.candidate-chart-track{grid-template-columns:minmax(0,1fr) 110pt}.election-chart h2{font-size:16pt}.panel-viz{display:block!important}}
@media(max-height:800px) and (min-width:901px){
 :fullscreen .tv-candidate b{font-size:1.7rem;line-height:1.1}:fullscreen .tv-candidate h2{font-size:1.15rem;line-height:1.2;margin:4px 0}:fullscreen .tv-gallery{margin:10px 0}
 :fullscreen .candidate-chart-row{padding:3px 0}:fullscreen .candidate-chart-label{margin-bottom:2px}:fullscreen .candidate-chart-label strong{line-height:1.25}:fullscreen .election-chart .chart-note{line-height:1.3;margin-top:6px}:fullscreen .election-chart .chart-subtitle{line-height:1.3;margin:6px 0 8px}:fullscreen .election-chart .chart-pager{margin-top:6px}
}
@media(max-height:800px) and (min-width:901px){:fullscreen .election-chart{padding:12px 20px}}
/* 0.5.1 — ordem e quebras do relatório impresso */
.print-elected{display:none}.panel #mesa-connection,#mesa-connection{font-size:.85rem;color:#456854}
@media print{
 .panel .print-elected{display:block!important}.panel #results .report-elected{display:none!important}
 .panel .report-elected,.panel .election-chart{break-inside:avoid;page-break-inside:avoid;box-decoration-break:clone;-webkit-box-decoration-break:clone}
 .panel .report-elected-card,.panel .candidate-chart-row{break-inside:avoid;page-break-inside:avoid}
 .panel h2,.panel h3,.panel h4{break-after:avoid;page-break-after:avoid}
 .panel .report-elected>h3{margin-bottom:8pt}.panel .report-elected-card{margin:0;min-height:0}
 .panel .panel-viz{display:block!important;break-inside:auto}.panel #results{break-inside:auto;page-break-inside:auto}
 .panel .heading{display:block;margin-bottom:12pt}.panel .heading h1{margin-top:6pt}.panel .heading .eyebrow{margin-bottom:8pt}
 .panel .table-wrap{overflow:visible!important}.panel thead{display:table-header-group}.panel tr{break-inside:avoid;page-break-inside:avoid}
 #connection{display:none!important}
}
.print-chart-pages{display:none}
@media print{
 .panel #results{break-inside:avoid;page-break-inside:avoid}
 #election-chart[data-print-paged]{display:none!important}
 .print-chart-pages{display:block!important}
 .print-chart-pages>.election-chart{break-inside:avoid;page-break-inside:avoid}
}
/* Urna por fotos: teclas grandes, cor + símbolo + texto. */
.accessible-ballot,.accessible-review{max-width:1000px;margin:auto}.ballot-instruction,.ballot-counter{text-align:center}.ballot-instruction{font-size:clamp(24px,3vw,34px)}.ballot-counter{font-size:22px;font-weight:700}.accessible-ballot .ballot-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.accessible-ballot .candidate{position:relative;min-height:340px;padding:22px!important;gap:8px}.accessible-ballot .candidate .portrait{width:200px;height:200px;max-width:100%;object-fit:cover}.accessible-ballot .candidate input{position:absolute;width:1px;height:1px;opacity:0}.selected-mark{display:none;position:absolute;top:10px;right:10px;background:#14613e;color:white;border:3px solid white;border-radius:50%;width:48px;height:48px;font-size:32px;line-height:40px}.candidate:has(input:checked) .selected-mark{display:block}.accessible-ballot .candidate:has(input:checked){border:4px solid #14613e;outline:2px solid #14613e}.ballot-feedback{font-size:20px;font-weight:650;color:#8a3323;text-align:center}.ballot-actions{position:sticky;bottom:0;z-index:5;background:#f4f6f3;border-top:2px solid #ccd8cf;padding:14px 8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:24px}.ballot-actions form{margin:0;min-width:0}.ballot-actions .vote-key{width:100%;min-height:100px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:10px 6px;font-size:clamp(16px,2.2vw,25px);font-weight:800;line-height:1.2;text-decoration:none;border:3px solid;border-radius:10px;box-shadow:0 4px 0 #0003}.vote-key span{font-size:32px;line-height:1.1}.ballot-actions .key-blank{background:#fff;color:#202a25;border-color:#616c65}.ballot-actions .key-correct{background:#b52925;color:#fff;border-color:#881a18}.ballot-actions .key-confirm{background:#14613e;color:#fff;border-color:#0b482d}.ballot-actions small{grid-column:1/-1;text-align:center;color:#42594d;font-size:14px}.accessible-review .choice-review{position:relative;text-align:left;border:2px solid #14613e;border-radius:12px;margin:16px 0;padding:20px}.accessible-review .choice-review .portrait{width:180px;height:180px;object-fit:cover;flex-shrink:0}.accessible-review .choice-review b{display:block;font-size:32px}.accessible-review .choice-review strong{font-size:25px}.review-check{margin-left:auto;font-size:40px;color:#14613e}.blank-preview{border:3px solid #616c65;border-radius:12px;background:white;padding:30px;margin:24px 0}.blank-preview>span{font-size:90px;line-height:1}.blank-preview h3{font-size:30px}.success h1{font-size:clamp(60px,10vw,100px)}
@media(max-width:600px){.accessible-ballot .ballot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.accessible-ballot .candidate{min-height:235px;padding:12px!important;font-size:18px}.accessible-ballot .candidate .portrait{width:145px;height:145px}.accessible-ballot .candidate .number{font-size:24px}.selected-mark{width:36px;height:36px;font-size:25px;line-height:30px;top:3px;right:3px}.ballot-actions{gap:7px;padding:10px 0}.ballot-actions .vote-key{min-height:90px;font-size:clamp(12px,3.8vw,18px);padding:8px 2px}.accessible-review{padding:16px}.accessible-review .choice-review{flex-direction:column;text-align:center;padding:16px}.accessible-review .choice-review .portrait{width:190px;height:190px}.review-check{margin:0}.accessible-review .choice-review strong{font-size:22px}}
/* Fotos e conferência rolam no espaço próprio; teclas nunca cobrem a escolha. */
body:has(.accessible-ballot,.accessible-review) .top{min-height:64px;height:64px;padding:8px 24px;gap:16px}body:has(.accessible-ballot,.accessible-review) .brand{font-size:23px}body:has(.accessible-ballot,.accessible-review) .mark{height:42px;width:40px;font-size:29px}body:has(.accessible-ballot,.accessible-review) .brand small{font-size:8px;margin-top:4px}body:has(.accessible-ballot,.accessible-review) .church{margin-left:auto;font-size:10px}body:has(.accessible-ballot,.accessible-review) footer{display:none}body:has(.accessible-ballot,.accessible-review) main{height:calc(100dvh - 64px);min-height:0;padding:16px 24px;display:flex;flex-direction:column;overflow:hidden}.vote-title:has(+.accessible-ballot),.vote-title:has(+.accessible-review){flex-shrink:0;margin-bottom:12px}.vote-title:has(+.accessible-ballot) h1,.vote-title:has(+.accessible-review) h1{font-size:clamp(21px,2.5vw,30px);margin:8px 0;letter-spacing:-.5px}.vote-title:has(+.accessible-ballot) .eyebrow,.vote-title:has(+.accessible-review) .eyebrow{display:none}.vote-title [data-sound-status]:empty{display:none}.vote-title [data-sound-toggle]{padding:7px 14px}.accessible-ballot,.accessible-review{width:100%;flex:1;min-height:0;display:flex;flex-direction:column;margin:0 auto}.accessible-ballot .ballot-grid{flex:1;min-height:0;overflow:auto;padding:7px;align-content:start}.ballot-instruction{margin-bottom:6px;font-size:clamp(21px,2.5vw,30px)}.ballot-counter{margin:0 0 8px;font-size:18px}.ballot-feedback:empty{display:none}.ballot-feedback{margin:6px 0;font-size:17px;flex-shrink:0}.ballot-actions{position:static;flex-shrink:0;margin-top:10px}.accessible-review{padding:20px}.accessible-review h2{font-size:26px;margin-bottom:12px;flex-shrink:0}.review-choices{flex:1;min-height:0;overflow:auto;padding:3px}.accessible-review>p{font-size:16px;margin:8px 0;flex-shrink:0}.accessible-review .choice-review{margin:0 0 12px}.blank-preview{margin:0;padding:24px}.blank-preview h3{margin:12px 0 0}.ballot-actions .vote-key{min-height:90px}.ballot-actions small{font-size:12px;line-height:1.3}
@media(max-width:600px){body:has(.accessible-ballot,.accessible-review) main{padding:12px}body:has(.accessible-ballot,.accessible-review) .top{padding:8px 14px}body:has(.accessible-ballot,.accessible-review) .church{display:none}.accessible-review{padding:12px}.accessible-review h2{font-size:23px}.ballot-actions{padding:10px 0;gap:6px}.ballot-actions .vote-key{min-height:82px}.accessible-review>p{font-size:14px;line-height:1.4}.accessible-review .choice-review .portrait{width:160px;height:160px}.blank-preview{padding:20px}.blank-preview h3{font-size:24px}}
.accessible-ballot .ballot-grid{grid-auto-rows:max-content;align-items:start}.accessible-ballot .candidate .portrait{flex-shrink:0}.accessible-ballot .candidate{height:auto}
/* 0.6.1: grade compacta para notebooks, preservando nomes completos. */
.accessible-ballot,.accessible-review{max-width:1160px}
body:has(.accessible-ballot,.accessible-review) .top{height:56px;min-height:56px}
body:has(.accessible-ballot,.accessible-review) main{height:calc(100dvh - 56px);padding:12px 20px}
.vote-title:has(+.accessible-ballot),.vote-title:has(+.accessible-review){display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;text-align:left;margin-bottom:8px}
.vote-title:has(+.accessible-ballot) h1,.vote-title:has(+.accessible-review) h1{grid-column:1;grid-row:1;font-size:23px;margin:0;line-height:1.2}
.vote-title [data-sound-toggle]{grid-column:2;grid-row:1;font-size:12px;padding:6px 10px}
.vote-title [data-sound-status]{grid-column:1/-1;margin:0;font-size:12px}
.accessible-ballot .ballot-instruction{font-size:23px;margin-bottom:3px}
.accessible-ballot .ballot-counter{font-size:16px;margin-bottom:6px}
.accessible-ballot .ballot-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:5px}
.accessible-ballot .candidate{min-height:0;padding:8px!important;gap:4px;font-size:16px;line-height:1.25;border-width:2px}
.accessible-ballot .candidate .portrait{width:96px;height:96px;max-width:100%;border-radius:10px}
.accessible-ballot .candidate .number{font-size:22px;line-height:1.2}
.accessible-ballot .candidate strong{font-size:16px;line-height:1.25;overflow-wrap:anywhere}
.accessible-ballot .candidate:has(input:checked){border-width:2px;outline:3px solid #14613e}
.accessible-ballot .selected-mark{width:30px;height:30px;font-size:21px;line-height:24px;top:4px;right:4px}
.ballot-actions{grid-template-columns:repeat(3,minmax(0,190px));justify-content:center;gap:8px;padding:8px 0;margin-top:8px}
.ballot-actions .vote-key{min-height:60px;font-size:17px;padding:6px;border-width:2px;border-radius:8px}
.ballot-actions .vote-key span{font-size:24px}
.ballot-actions small{font-size:12px}
.accessible-review{padding:16px}
.accessible-review h2{font-size:24px;margin-bottom:8px}
.accessible-review .review-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start}
.accessible-review .choice-review{margin:0;padding:12px;gap:12px}
.accessible-review .choice-review .portrait{width:100px;height:100px}
.accessible-review .choice-review b{font-size:24px}
.accessible-review .choice-review strong{font-size:19px;overflow-wrap:anywhere}
.accessible-review .review-check{font-size:28px}
.accessible-review .blank-preview{grid-column:1/-1;padding:16px}
.accessible-review .blank-preview>span{font-size:64px}
.accessible-review .blank-preview h3{font-size:25px}
@media(min-width:601px) and (max-width:999px){.accessible-ballot .ballot-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.accessible-review .review-choices{grid-template-columns:1fr}}
@media(max-width:600px){body:has(.accessible-ballot,.accessible-review) main{padding:10px}.vote-title:has(+.accessible-ballot) h1,.vote-title:has(+.accessible-review) h1{font-size:19px}.accessible-ballot .ballot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.accessible-ballot .candidate .portrait{width:110px;height:110px}.accessible-ballot .ballot-instruction{font-size:21px}.ballot-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.ballot-actions .vote-key{font-size:clamp(12px,3.7vw,17px);min-height:60px}.accessible-review .review-choices{grid-template-columns:1fr}.accessible-review .choice-review{flex-direction:row;text-align:left;gap:10px;padding:10px}.accessible-review .choice-review .portrait{width:85px;height:85px}.accessible-review .choice-review strong{font-size:17px}.accessible-review .review-check{margin-left:auto;font-size:24px}}
.accessible-ballot .candidate{margin:0}
@media(min-width:1000px) and (max-height:700px){.accessible-ballot .candidate .portrait{width:88px;height:88px}}
.board-control{border-top:4px solid var(--gold)}.office-progress{padding-left:22px}.office-progress li{margin:8px 0}.board-summary{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}.board-summary article{background:#edf4ed;border:1px solid #ccdace;border-radius:10px;padding:10px 14px}.board-summary strong,.board-summary span{display:block}.board-summary img,.board-summary .portrait{width:44px;height:48px;object-fit:cover;float:left;margin-right:10px}.board-round-report{margin:30px 0}.board-round-report>.election-chart{margin:16px 0}.board-report .report-elected{break-inside:avoid}.board-report .candidate-chart-row{display:block}.board-report svg{max-height:24px;width:100%}.board-report table{margin:20px 0}.board-report h2{margin-top:24px}
:fullscreen .board-summary{gap:6px;margin-bottom:8px}:fullscreen .board-summary article{padding:5px 10px;font-size:12px}:fullscreen #board-stage{font-size:22px;margin:6px 0}:fullscreen .board-summary+p{display:none}
@media print{.board-report{font-size:11px}.board-report h1{font-size:25px}.board-report .report-elected-card h4{font-size:20px}.board-report .election-chart{break-inside:avoid;page-break-inside:avoid}.board-report table{font-size:11px}.board-report td{font-size:10px}.board-report thead{display:table-header-group}.board-report h2,.board-report h3{break-after:avoid}.board-report .candidate-chart-row{break-inside:avoid}.board-report .report-elected{background:white;border-color:#aaa}.board-round-report{break-inside:auto}.board-report .report-elected-card{break-inside:avoid}}
@media print{.board-round-heading{break-inside:avoid;break-after:avoid}.board-report table{break-inside:avoid;page-break-inside:avoid}}
@media(max-height:800px) and (min-width:901px){:fullscreen .panel:has(#board-stage) .heading .eyebrow{display:none}:fullscreen .panel:has(#board-stage) .heading p{margin:4px 0 8px}:fullscreen .panel:has(#board-stage) .election-chart{padding:12px 16px}:fullscreen .panel:has(#board-stage) .candidate-chart-row{padding:5px 0}:fullscreen .panel:has(#board-stage) #quorum-info{font-size:12px;margin:6px 0}:fullscreen .panel:has(#board-stage) #connection{font-size:10px;margin:4px 0}:fullscreen .panel:has(#board-stage) .tv-candidate .portrait{width:60px;height:68px}:fullscreen .panel:has(#board-stage) .tv-candidate{padding:10px}:fullscreen .panel:has(#board-stage) .tv-candidate h2{font-size:1rem}:fullscreen .panel:has(#board-stage) .tv-candidate b{font-size:1.6rem}}
@media(max-height:800px) and (min-width:901px){:fullscreen main:has(#board-stage){padding-top:8px;padding-bottom:4px}}

/* Identidade da igreja nos relatórios — original fornecido, sem recoloração. */
.church-report-heading{align-items:center;gap:18px;break-inside:avoid;page-break-inside:avoid}
.report-church-logo{display:block;width:190px;height:auto;max-width:40%;object-fit:contain;flex-shrink:0}
.board-report>.church-report-heading{display:flex;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:24px;font-size:14px}
@media print{.church-report-heading{display:flex!important;font-size:11px;padding-bottom:8px;margin-bottom:16px}.report-church-logo{width:50mm;max-width:36%;height:auto}.church-report-heading>div{flex:1}}

/* 0.9.6 — Logo SEIPPA escolhida para a barra verde. */
.top.has-brand-logo{padding-top:10px;padding-bottom:10px;gap:24px;flex-wrap:wrap}
.brand.brand--logo{display:block;flex:0 1 260px;min-width:0;line-height:0;letter-spacing:normal}
.brand-logo{display:block;width:260px;max-width:100%;height:auto}
@media(max-width:600px){.top.has-brand-logo{gap:14px}.brand.brand--logo{flex-basis:240px}.has-brand-logo .church{width:100%;margin-left:0;border-left:0;padding-left:0}.has-brand-logo nav{gap:18px}}

/* 0.9.7 — Integração do fundo à barra e nome em degradê. */
.top.has-brand-logo{isolation:isolate}
.brand-logo{mix-blend-mode:screen;filter:contrast(1.06)}

/* 0.9.8 — A marca fica contida na barra compacta da urna. */
body:has(.accessible-ballot,.accessible-review) .top.has-brand-logo{flex-wrap:nowrap;gap:16px}
body:has(.accessible-ballot,.accessible-review) .brand.brand--logo{position:relative;flex:0 1 210px;height:36px;overflow:hidden}
body:has(.accessible-ballot,.accessible-review) .brand-logo{position:absolute;left:0;top:50%;width:210px;max-width:none;height:70px;transform:translateY(-50%)}
body:has(.accessible-ballot,.accessible-review) .has-brand-logo .church{width:auto;flex-shrink:0}

.mobile-wait{max-width:620px;margin:20px auto;text-align:center}.mobile-code{display:block;font:700 44px/1.5 ui-monospace,monospace;letter-spacing:6px;margin:16px 0}.mobile-url{overflow-wrap:anywhere}.mobile-qr{padding:16px;background:white;width:272px;max-width:100%;margin:18px 0}.mobile-qr img,.mobile-qr canvas{max-width:100%}.mobile-enter [hidden]{display:none!important}#mesa-mobile{margin:24px 0;padding:20px 0;border-block:1px solid var(--line)}

/* Cadastro de membros: busca global e navegação por páginas. */
.members-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:12px}.members-heading h2{margin-bottom:0}.members-heading strong{font-size:14px;color:var(--green)}.members-toolbar{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:18px;align-items:start;margin-bottom:18px}.members-toolbar>label{margin:0;min-width:0}.members-toolbar input[type=search],.members-toolbar select{height:50px;margin:7px 0 0}.members-summary{font-size:14px;margin:0 0 14px}.member-position{font-variant-numeric:tabular-nums;color:var(--muted);width:4ch}.members-pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:10px;margin-top:20px}.members-pagination[hidden],.members-directory tr[hidden]{display:none}.members-page{font-size:14px;font-variant-numeric:tabular-nums}.members-pagination button:disabled{opacity:.45;cursor:default}.members-directory .table-wrap{margin-bottom:0}@media(max-width:600px){.members-toolbar{grid-template-columns:minmax(0,1fr)}.members-pagination{gap:8px}.members-pagination button{padding:8px 10px}.members-directory{padding:20px}}

.members-directory table{min-width:760px}.members-directory td:nth-child(2){min-width:200px}

/* Mesa: seleção de presenças e paginação sem alterar a base eleitoral. */
.roster-directory{margin-top:28px}.roster-directory h3{margin:0}.roster-directory .table-wrap{margin-bottom:0}.roster-directory table{min-width:700px}.roster-directory td:nth-child(3){min-width:200px}.roster-directory tr[hidden]{display:none}.presence-check{display:inline-block;width:20px;height:20px;margin:0;vertical-align:middle;accent-color:var(--green);cursor:pointer}.presence-bulk{padding:16px;background:#f4f7f3;border:1px solid var(--line);border-radius:10px;margin-bottom:18px}.presence-bulk p{font-size:14px;margin:0 0 12px}.presence-bulk-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0}.presence-bulk-form span{font-size:13px;color:var(--muted)}.presence-bulk-form button:disabled{opacity:.45;cursor:default}

/* Confirmações da mesa sem deslocar os controles em uso. */
#mesa-live{overflow-anchor:none}.mesa-feedback{position:fixed;right:20px;bottom:20px;z-index:1000;max-width:min(520px,calc(100vw - 40px));padding:14px 18px;border-radius:10px;background:var(--green);color:white;box-shadow:0 4px 22px #0003;font-size:14px;line-height:1.5}.mesa-feedback[hidden]{display:none}.mesa-feedback[data-state=error]{background:#994037}
