:root{color:#111;font-synthesis:none;text-rendering:optimizelegibility;--chrome:#3d4243;--panel:#f2f2f2;--line:#c8c8c8;--accent:#19699b;--party-color:#fff;--party-text:#111;background:#242728;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit}button:focus-visible{outline-offset:-5px;z-index:5;outline:5px solid #00a8ff;position:relative}.app-shell{-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#242728;grid-template-rows:104px minmax(0,1fr) 58px;width:100%;min-width:760px;height:100dvh;min-height:560px;display:grid}.app-shell.review-active{grid-template-rows:78px minmax(0,1fr)}.review-active .ballot-header{grid-template-rows:29px 35px;padding-top:4px;padding-bottom:5px}.review-active .ballot-header h1{color:#fff;background:0 0;border:0;border-top:1px solid #ffffff61;font-size:clamp(17px,1.8vw,24px);font-weight:800}.review-active .unofficial-badge{bottom:9px}.ballot-header{color:#fff;background:var(--chrome);border-bottom:2px solid #111;grid-template-rows:43px 43px;grid-template-columns:92px 1fr 66px;gap:2px 10px;padding:5px 8px 8px;display:grid;position:relative}.brand-mark,.municipal-mark{color:#1b5578;letter-spacing:-2px;background:#fff;border:2px solid #fff;align-self:stretch;place-items:center;font-size:22px;font-weight:900;display:grid}.municipal-mark{color:#8d2733;letter-spacing:0;font-size:15px}.election-context{white-space:nowrap;justify-content:center;align-items:center;gap:18px;font-size:clamp(9px,1vw,13px);display:flex}.ballot-header h1{color:#111;background:#fff;border:1px solid #bbb;grid-column:1/4;place-items:center;margin:0;font-size:clamp(17px,2vw,26px);font-weight:500;display:grid}.unofficial-badge{color:#171717;background:#ffe45c;border:1px solid #111;padding:3px 7px;font-size:9px;font-weight:800;position:absolute;bottom:13px;right:12px}.screen{background:var(--panel);min-height:0;overflow:hidden}.ballot-screen{padding:4px}.ballot-screen.guide-active{grid-template-rows:58px minmax(0,1fr);gap:4px;display:grid}.guide-notice{color:#102a3b;background:#dff2ff;border:2px solid #0a3854;grid-template-columns:auto 1fr;align-items:center;gap:14px;min-height:48px;padding:7px 16px;font-size:clamp(15px,1.45vw,21px);font-weight:700;display:grid}.guide-notice strong{color:#075b8a;white-space:nowrap}.guide-notice-feedback{color:#542000;background:#fff0dc;border-color:#a54000}.guide-notice-feedback strong{color:#8c3500}.guide-active .council-list-card:not(.guide-target),.guide-active .blank-card,.guide-active .preference-card:not(.guide-target){opacity:.38;filter:grayscale(.75)}.guide-target{z-index:1;outline-offset:-5px;outline:5px solid #ff9f00;animation:1.3s ease-in-out infinite alternate guide-target-pulse;position:relative;box-shadow:inset 0 0 0 2px #fff,0 0 0 4px #ff9f0059}.guide-target:after{content:"TOCÁ AQUÍ";z-index:2;color:#171717;background:#ffb000;border:1px solid #552b00;border-radius:2px;padding:3px 6px;font-size:clamp(10px,1vw,14px);font-weight:900;line-height:1;position:absolute;top:5px;right:5px}.mayor-grid{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(3,1fr);gap:5px;height:100%;display:grid}.mayor-card,.council-list-card,.preference-list-header{color:var(--party-text);background:var(--party-color);border:1px solid color-mix(in srgb, var(--party-color), #000 45%)}.mayor-card{cursor:pointer;grid-template-rows:auto 1fr auto;align-items:center;min-width:0;padding:0;display:grid;overflow:hidden}.mayor-card:active,.council-list-card:active,.preference-card:active,.blank-card:active{filter:brightness(.75)}.party-name{place-items:center;min-height:50px;padding:9px 5px 4px;font-size:clamp(16px,1.7vw,25px);line-height:1.05;display:grid}.candidate-row{grid-template-columns:1fr 1fr;align-items:center;width:100%;min-height:0;padding:4px 22px;display:grid}.portrait{aspect-ratio:1;color:#303030;background:linear-gradient(145deg,#fafafa,#a9a9a9);border:3px solid #ffffffa6;border-radius:50%;justify-self:center;place-items:center;width:clamp(64px,8vw,112px);font-size:clamp(19px,2.5vw,36px);font-weight:800;display:grid;box-shadow:0 2px 5px #00000040}.portrait-placeholder{background:repeating-linear-gradient(45deg,#ddd,#ddd 8px,#bbb 8px 16px)}.portrait img{border-radius:inherit;object-fit:cover;object-position:center top;width:100%;height:100%}.portrait-photo{background:#fff;border-radius:2px}.portrait-photo img{object-fit:contain}.list-number{align-content:center;font-size:clamp(34px,5vw,67px);font-weight:800;line-height:.85;display:grid}.list-number small{font-size:17px;line-height:1.2}.list-number span{margin-top:8px;font-size:18px}.candidate-name{place-items:center;min-height:42px;padding:5px 8px 9px;font-size:clamp(15px,1.7vw,24px);display:grid}.blank-card{color:#111;background:#fff;border:1px solid #aaa;place-items:center;min-width:0;min-height:48px;font-size:clamp(23px,3vw,42px);font-weight:700;display:grid}.council-list-grid{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;height:100%;display:grid}.council-list-card{text-align:center;grid-template-rows:auto 1fr auto;place-items:center;min-width:0;padding:10px 6px;display:grid}.council-list-card strong{font-size:clamp(22px,2.7vw,40px)}.council-list-card span{align-self:center;font-size:clamp(15px,1.7vw,25px);font-weight:800;line-height:1.02}.council-list-card small{font-size:clamp(17px,1.8vw,27px)}.preference-screen{grid-template-rows:64px minmax(0,1fr);gap:4px;padding:4px;display:grid}.preference-screen.guide-active{grid-template-rows:58px 64px minmax(0,1fr)}.preference-list-header{text-align:center;grid-template-columns:170px 1fr 230px;align-items:center;width:100%;padding:3px 20px;display:grid}.preference-list-header span{font-size:28px;font-weight:800}.preference-list-header strong{font-size:clamp(19px,2.2vw,31px)}.preference-list-header small{font-size:13px;font-weight:700}.preference-grid{grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;min-height:0;display:grid}.preference-card{color:#111;background:#fff;border:1px solid #bbb;grid-template-rows:1fr auto;grid-template-columns:42% 58%;align-items:center;min-width:0;min-height:0;padding:4px;display:grid;overflow:hidden}.preference-card .portrait{grid-row:1/2;width:clamp(46px,5vw,72px)}.preference-card strong{font-size:clamp(22px,2.2vw,32px);line-height:.8;display:grid}.preference-card strong small{font-size:13px;line-height:1}.preference-card>span:last-child{text-overflow:ellipsis;white-space:nowrap;grid-column:1/3;width:100%;font-size:clamp(9px,1vw,14px);font-weight:700;overflow:hidden}.review-screen{text-align:center;background:#e8e8e8;grid-template-columns:minmax(0,1fr) minmax(0,1fr) clamp(126px,12vw,158px);gap:4px;padding:4px;display:grid}.review-panel{min-height:0;color:var(--party-text);background:var(--party-color);border:1px solid color-mix(in srgb, var(--party-color), #000 48%);grid-template-rows:auto minmax(0,1fr) auto;align-items:center;gap:5px;padding:7px 7px 6px;display:grid;overflow:hidden}.review-panel h2{width:100%;color:inherit;border-bottom:1px solid color-mix(in srgb, currentColor, transparent 48%);margin:0;padding:5px 4px 7px;font-size:clamp(20px,2vw,30px);line-height:1}.review-selection{grid-template-rows:auto auto minmax(0,1fr) auto auto;align-content:stretch;place-items:center;gap:clamp(4px,.9vh,10px);width:100%;height:100%;min-height:0;padding:8px 8px clamp(40px,8vh,64px);display:grid;overflow:hidden}.review-party-name{text-transform:uppercase;max-width:100%;font-size:clamp(20px,2.15vw,32px);line-height:1.05}.review-list-number{font-size:clamp(21px,2.15vw,32px);font-weight:800}.review-portrait{place-items:center;min-width:0;min-height:0;display:grid}.review-portrait .portrait{width:clamp(108px,12vw,156px);max-width:100%;max-height:100%;box-shadow:none;border:0;border-radius:0}.review-candidate-name{text-transform:uppercase;max-width:100%;font-size:clamp(19px,2vw,29px);line-height:1.05}.review-option-number{font-size:clamp(18px,1.85vw,27px);line-height:1}.review-panel-blank{--party-color:#fff;--party-text:#111;border-color:#aaa}.review-selection-blank{grid-template-rows:1fr}.review-selection-blank strong{font-size:clamp(29px,3vw,44px)}.review-modify-button{color:#171717;background:#e8e8e8;border:1px solid #888;border-radius:5px;justify-self:center;min-width:clamp(140px,15vw,190px);min-height:50px;padding:8px 24px;font-size:clamp(18px,1.7vw,24px);font-weight:800}.review-actions{grid-template-rows:auto 28% minmax(0,1fr);gap:7px;min-height:0;display:grid}.review-guide{color:#202020;background:#fffde8;border:1px solid #a9a9a9;border-radius:4px;margin:0;padding:7px 5px;font-size:clamp(12px,1.05vw,15px);font-weight:700;line-height:1.15}.review-actions button{color:#fff;border:1px solid #00000052;border-radius:4px;align-content:center;place-items:center;gap:5px;min-width:0;min-height:48px;padding:8px 3px;font-size:clamp(16px,1.55vw,21px);line-height:.95;display:grid}.review-reset-action{background:#f47b08}.review-print-action{background:#05a91d}.review-reset-icon{font-size:clamp(45px,5vw,66px);font-weight:900;line-height:.7}.review-print-icon{background:#fff;border-radius:3px;width:45px;height:28px;margin-bottom:5px;display:block;position:relative}.review-print-icon:before{content:"";background:#fff;width:29px;height:18px;position:absolute;top:-13px;left:8px}.review-print-icon>span{background:#05a91d;border:4px solid #fff;width:25px;height:14px;position:absolute;bottom:-8px;left:10px}.process-screen button,.complete-screen button{color:#fff;background:#176d9f;border:2px solid #0a3854;border-radius:4px;min-height:50px;padding:9px 24px;font-weight:800}.process-screen,.complete-screen{text-align:center;align-content:center;place-items:center;gap:13px;padding:20px;display:grid}.process-screen h2,.complete-screen h2{margin:0;font-size:clamp(29px,4vw,50px)}.process-screen p,.complete-screen p{max-width:820px;margin:0;font-size:clamp(18px,2.2vw,28px);line-height:1.3}.machine-animation{place-items:center;height:210px;display:grid}.machine-body{background:#172126;border:13px solid #4b5154;border-radius:9px;width:330px;height:170px;position:relative;box-shadow:8px 12px #25292a}.process-icon{color:#65dc8a;place-items:center;font-size:70px;font-weight:900;display:grid;position:absolute;inset:20px}.paper{color:#555;background:#fff4d8;border:2px solid #aaa;place-items:center;width:120px;height:82px;font-size:12px;animation:1.6s ease-in-out infinite alternate print-paper;display:grid;position:absolute;bottom:-72px;left:95px}.process-verify .paper{animation:1.7s ease-in-out infinite alternate verify-paper}.process-deposit .paper{animation:1.7s ease-in-out infinite deposit-paper}.complete-check{color:#fff;background:#118247;border-radius:50%;place-items:center;width:150px;height:150px;font-size:100px;display:grid}@keyframes print-paper{0%{transform:translateY(-55px)}to{transform:translateY(5px)}}@keyframes verify-paper{0%{transform:rotate(-8deg)scale(.9)}to{transform:rotate(8deg)scale(1.12)}}@keyframes deposit-paper{0%{opacity:1;transform:translateY(-80px)}75%{opacity:1;transform:translateY(50px)}to{opacity:0;transform:translateY(70px)}}@keyframes guide-target-pulse{0%{box-shadow:inset 0 0 0 2px #fff,0 0 0 4px #ff9f0059}to{box-shadow:inset 0 0 0 2px #fff,0 0 0 9px #ff9f00a6}}.toolbar{background:#c5c7c8;border-top:2px solid #a4a6a7;align-items:stretch;gap:5px;padding:4px;display:flex}.toolbar-button{color:#202020;background:#f5f5f5;border:1px solid #888;align-items:center;gap:9px;min-width:170px;min-height:48px;padding:4px 14px;font-weight:700;display:flex}.toolbar-icon{font-size:28px;line-height:1}.contrast-icon{color:#fff;background:#555;border-radius:50%}.reset-button{margin-left:auto}.high-contrast{--panel:#000;--chrome:#000;color:#fff}.high-contrast .screen{color:#fff;background:#000}.high-contrast .mayor-card,.high-contrast .council-list-card,.high-contrast .preference-list-header,.high-contrast .preference-card,.high-contrast .blank-card,.high-contrast .review-panel{color:#fff!important;background:#000!important;border:3px solid #ffe600!important}.high-contrast .review-actions button,.high-contrast .review-modify-button{color:#ffe600!important;background:#000!important;border:3px solid #ffe600!important}.high-contrast .review-guide{color:#fff;background:#000;border:3px solid #ffe600}.high-contrast .toolbar{background:#000;border-color:#ffe600}.high-contrast .toolbar-button{color:#ffe600;background:#000;border:2px solid #ffe600}.high-contrast .unofficial-badge{background:#ffe600}.high-contrast .guide-notice{color:#fff;background:#000;border:3px solid #ffe600}.high-contrast .guide-notice strong{color:#ffe600}.high-contrast .guide-active .council-list-card:not(.guide-target),.high-contrast .guide-active .blank-card,.high-contrast .guide-active .preference-card:not(.guide-target){opacity:.45}.high-contrast .guide-target{outline-color:#00e5ff;box-shadow:inset 0 0 0 2px #000,0 0 0 6px #00e5ff}.high-contrast .guide-target:after{color:#00e5ff;background:#000;border-color:#00e5ff}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (height<=650px){.app-shell{grid-template-rows:88px minmax(0,1fr) 52px}.app-shell.review-active{grid-template-rows:68px minmax(0,1fr)}.review-active .ballot-header{grid-template-rows:25px 29px}.ballot-header{grid-template-rows:35px 35px}.party-name{min-height:40px;padding-top:5px}.candidate-name{min-height:32px}.preference-screen{grid-template-rows:52px minmax(0,1fr)}.ballot-screen.guide-active{grid-template-rows:48px minmax(0,1fr)}.preference-screen.guide-active{grid-template-rows:48px 52px minmax(0,1fr)}.guide-notice{padding:4px 10px;font-size:clamp(13px,1.3vw,18px)}.machine-animation{height:160px;transform:scale(.8)}.review-panel{padding:4px}.review-selection{gap:3px;padding-top:4px}.review-modify-button{min-height:46px;padding-block:5px}}
