:root { --ink:#2a2928; --muted:#6d6561; --canvas:#fffaf6; --line:#eadfd6; --green:#d6111b; --green-dark:#ad0710; --mint:#fff0df; --gold:#f2a61a; --orange:#e97818; --red:#b10e17; --shadow:0 18px 45px rgba(80,25,20,.10); }
* { box-sizing:border-box; } body { margin:0; color:var(--ink); background:var(--canvas); font-family:"DM Sans",Arial,sans-serif; } button,input,select,textarea { font:inherit; } button { cursor:pointer; } .prototype-notice { height:32px; display:flex; gap:8px; align-items:center; justify-content:center; font-size:12px; color:#4d5f68; background:#edf1ef; } .notice-dot { width:7px; height:7px; border-radius:50%; background:var(--gold); }
.topbar { height:80px; padding:0 max(4vw,32px); display:flex; align-items:center; justify-content:space-between; background:#fff; border-bottom:1px solid var(--line); } .brand { color:var(--ink); display:flex; align-items:center; gap:10px; text-decoration:none; } .brand-mark { display:grid; place-items:center; width:37px; height:37px; color:#fff; font:700 30px/1 "Playfair Display"; background:var(--green); border-radius:9px 9px 9px 2px; } .brand strong,.brand small { display:block; } .brand strong { font:700 20px "Playfair Display"; letter-spacing:-.7px; } .brand small { color:var(--muted); font-size:9px; letter-spacing:.6px; text-transform:uppercase; } .topbar nav { display:flex; gap:26px; height:100%; } .nav-link { border:0; border-bottom:2px solid transparent; padding:0 3px; color:var(--muted); background:transparent; font-weight:600; } .nav-link.active { border-color:var(--green); color:var(--green); } .election-status { color:#386256; font-size:13px; font-weight:600; } .election-status span { display:inline-block; width:8px; height:8px; margin-right:7px; border-radius:50%; background:#35a67f; }
.view { display:none; }.view.active { display:block; } .voter-shell { display:grid; grid-template-columns:minmax(280px, .85fr) minmax(480px, 1.15fr); min-height:calc(100vh - 112px); } .voter-aside { padding:clamp(48px,8vw,120px) clamp(32px,8vw,128px); color:#f5fffc; background:linear-gradient(145deg,#006c5d,#004c47); } .eyebrow,.step-label { margin:0 0 12px; color:var(--green); font-size:11px; font-weight:700; letter-spacing:1.5px; } .voter-aside .eyebrow { color:#9ed8c8; } .voter-aside h1 { max-width:450px; margin:0 0 18px; font:700 clamp(34px,4vw,56px)/1.06 "Playfair Display"; letter-spacing:-1.6px; }.voter-aside>p { max-width:370px; color:#c3e6dc; font-size:17px; line-height:1.6; }.election-meta { margin-top:55px; display:grid; gap:18px; }.election-meta div { display:flex; align-items:center; gap:13px; }.icon { display:grid; place-items:center; width:34px; height:34px; background:rgba(255,255,255,.12); border-radius:50%; }.election-meta strong,.election-meta small { display:block; }.election-meta strong { font-size:13px; }.election-meta small { margin-top:3px; color:#aed6ca; font-size:12px; }.privacy-promise { display:flex; gap:13px; max-width:425px; margin-top:48px; padding:17px; border:1px solid rgba(255,255,255,.19); border-radius:10px; background:rgba(0,0,0,.10); }.privacy-promise span { font-size:23px; }.privacy-promise p { margin:0; color:#cee8e0; font-size:12px; line-height:1.5; }.privacy-promise strong { color:#fff; }
.voter-card { width:min(620px,calc(100% - 48px)); align-self:start; justify-self:center; margin:clamp(42px,8vh,96px) auto; padding:0 18px 35px; }.progress { display:flex; align-items:center; margin-bottom:40px; color:#98a7ae; }.progress span { display:grid; place-items:center; flex:0 0 27px; height:27px; border:1px solid #c9d3d6; border-radius:50%; font-size:12px; font-weight:700; }.progress span.done { color:#fff; border-color:var(--green); background:var(--green); }.progress i { height:1px; flex:1; margin:0 8px; background:#d8e0e1; }.voting-step h2 { margin:0 0 9px; font:700 32px/1.15 "Playfair Display"; letter-spacing:-.8px; }.step-intro { max-width:530px; margin:0 0 30px; color:var(--muted); line-height:1.55; }.form-grid { display:grid; grid-template-columns:1fr 1fr 84px; gap:17px; }.form-grid .full { grid-column:1/-1; }.state-label { grid-column:3; } label { display:grid; gap:7px; color:#43535e; font-size:12px; font-weight:700; } input,select,textarea { min-width:0; padding:12px 13px; border:1px solid #cbd7da; border-radius:7px; outline:none; color:var(--ink); background:#fff; font-size:14px; font-weight:500; transition:border .15s,box-shadow .15s; } input:focus,select:focus,textarea:focus { border-color:var(--green); box-shadow:0 0 0 3px #d9eee8; }.consent { display:flex; align-items:flex-start; gap:9px; margin:3px 0 6px; color:var(--muted); font-weight:400; }.consent input { min-width:16px; height:16px; margin:0; accent-color:var(--green); }.primary,.secondary,.danger { min-height:46px; border:0; border-radius:7px; font-weight:700; transition:transform .15s,background .15s; }.primary { color:white; background:var(--green); }.primary:hover { background:var(--green-dark); transform:translateY(-1px); }.primary span { float:right; font-size:18px; }.primary:disabled { cursor:not-allowed; opacity:.42; transform:none; }.secondary { color:var(--green); background:#eaf4f1; }.danger { color:#fff; background:var(--red); }.text-button,.link-button { padding:0; border:0; color:var(--green); background:transparent; font-size:13px; font-weight:700; }.text-button { display:block; margin:25px auto 0; }.hidden { display:none!important; }.otp-icon { display:grid; place-items:center; width:58px; height:58px; margin:0 auto 25px; color:var(--green); background:var(--mint); border-radius:50%; font-size:25px; }.otp-label { max-width:380px; margin:0 auto; text-align:center; }.otp-label input { text-align:center; letter-spacing:7px; font-size:23px; }.demo-code { margin:10px 0 23px; text-align:center; color:var(--muted); font-size:12px; }.ballot-heading { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:20px; }.ballot-heading h2 { margin:0; }.filter-button { padding:8px 10px; border:1px solid var(--line); border-radius:6px; color:var(--muted); background:#fff; font-size:11px; }.search { position:relative; margin-bottom:16px; }.search span { position:absolute; top:9px; left:13px; color:#687c85; font-size:19px; }.search input { width:100%; padding-left:39px; }.candidate-list { display:grid; gap:10px; max-height:352px; margin-bottom:18px; overflow:auto; }.candidate { display:flex; align-items:center; gap:13px; padding:12px; border:1px solid var(--line); border-radius:9px; background:#fff; transition:border .15s,background .15s; }.candidate:hover,.candidate.selected { border-color:var(--green); background:#f1faf7; }.candidate-photo { display:grid; place-items:center; flex:0 0 43px; height:43px; color:#fff; border-radius:50%; background:linear-gradient(135deg,#4c756e,#274c5f); font-weight:700; }.candidate-info { flex:1; }.candidate-info strong,.candidate-info small { display:block; }.candidate-info strong { font-size:14px; }.candidate-info small { margin-top:3px; color:var(--muted); font-size:12px; }.candidate input { width:18px; height:18px; accent-color:var(--green); }.receipt { text-align:center; }.success-check { display:grid; place-items:center; width:68px; height:68px; margin:0 auto 18px; color:#fff; background:var(--green); border-radius:50%; font-size:33px; }.receipt .step-intro { margin:0 auto 24px; }.receipt-box { display:grid; gap:5px; padding:18px; margin-bottom:15px; border:1px dashed #9ec4b9; border-radius:8px; background:#f1f8f5; }.receipt-box span { color:var(--green); font-size:10px; font-weight:700; letter-spacing:1px; }.receipt-box strong { font-size:18px; }.receipt-box small { color:var(--muted); font-size:11px; }.receipt-privacy { margin-bottom:24px; color:var(--muted); font-size:12px; line-height:1.5; }
.admin-shell { display:grid; grid-template-columns:240px 1fr; min-height:calc(100vh - 112px); }.admin-sidebar { display:flex; flex-direction:column; padding:24px 13px; color:#d3e0e4; background:#152b3a; }.admin-user { display:flex; align-items:center; gap:10px; padding:0 10px 23px; border-bottom:1px solid #294253; }.avatar { display:grid; place-items:center; flex:0 0 34px; height:34px; color:#fff; background:#477465; border-radius:50%; font-size:11px; font-weight:700; }.admin-user strong,.admin-user small { display:block; }.admin-user strong { color:white; font-size:12px; }.admin-user small { margin-top:3px; font-size:10px; }.menu-title { margin:25px 10px 8px; color:#7e98a6; font-size:10px; font-weight:700; letter-spacing:1.2px; }.admin-menu { display:grid; gap:4px; }.admin-nav { display:flex; align-items:center; gap:11px; width:100%; padding:10px; border:0; border-radius:6px; color:#bdccd4; background:transparent; text-align:left; font-size:13px; }.admin-nav:hover { background:#203a4b; }.admin-nav.active { color:#fff; background:#276a61; }.admin-nav span { width:15px; text-align:center; }.admin-nav b { display:grid; place-items:center; width:18px; height:18px; margin-left:auto; color:#fff; background:#bf623b; border-radius:50%; font-size:10px; }.sidebar-footer { margin:auto 10px 0; padding-top:17px; border-top:1px solid #294253; color:#91a8b4; font-size:11px; }.sidebar-footer small { color:#718b98; }.admin-content { min-width:0; padding:32px clamp(24px,4vw,60px) 55px; }.admin-header,.panel-intro,.card-header { display:flex; align-items:center; justify-content:space-between; }.admin-header { margin-bottom:28px; }.admin-header h2 { margin:2px 0 0; font:700 30px "Playfair Display"; letter-spacing:-.5px; }.header-actions { display:flex; gap:10px; }.icon-button { position:relative; width:38px; border:1px solid var(--line); border-radius:7px; background:#fff; }.icon-button b { position:absolute; top:-5px; right:-5px; display:grid; place-items:center; width:16px; height:16px; color:#fff; background:var(--orange); border-radius:50%; font-size:9px; }.outline-button { padding:10px 13px; border:1px solid #b9c8cc; border-radius:7px; color:#41545e; background:#fff; font-size:12px; font-weight:700; }.admin-panel { display:none; }.admin-panel.active { display:block; }.info-banner,.sensitive-banner { display:flex; align-items:center; gap:12px; padding:13px 16px; margin-bottom:22px; border:1px solid #b6dfd4; border-radius:8px; background:#e9f5f1; }.info-banner>span { display:grid; place-items:center; width:22px; height:22px; color:#fff; background:var(--green); border-radius:50%; font-size:12px; }.info-banner p { flex:1; margin:0; color:#426056; font-size:12px; }.info-banner button { border:0; color:var(--green); background:transparent; font-size:12px; font-weight:700; }.metric-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:15px; margin-bottom:17px; }.metric-grid article,.chart-card,.alerts-card,.recent-card,.fraud-item,.permission-grid article { background:#fff; border:1px solid #e1e8e9; border-radius:9px; box-shadow:0 2px 7px rgba(20,43,58,.02); }.metric-grid article { padding:18px; }.metric-grid span { display:block; color:#76858d; font-size:10px; font-weight:700; letter-spacing:.5px; }.metric-grid strong { display:block; margin:9px 0 4px; font-size:28px; }.metric-grid small { color:var(--muted); font-size:11px; }.positive { color:var(--green)!important; }.warning { color:#a86f15!important; }.dashboard-grid { display:grid; grid-template-columns:1.25fr .75fr; gap:17px; margin-bottom:17px; }.chart-card,.alerts-card,.recent-card { padding:20px; }.card-header h3,.panel-intro h3 { margin:0; font-size:15px; }.card-header p,.panel-intro p { margin:4px 0 0; color:var(--muted); font-size:12px; }.card-header select { padding:5px; border:1px solid var(--line); border-radius:5px; color:var(--muted); font-size:11px; }.bar-chart { display:flex; align-items:flex-end; gap:7%; height:164px; padding:20px 10px 0; border-bottom:1px solid var(--line); background:repeating-linear-gradient(to bottom,transparent 0,transparent 40px,#eff3f3 41px); }.bar-chart i { width:7%; min-height:7px; background:#75b8a5; border-radius:4px 4px 0 0; }.bar-chart i:nth-child(6),.bar-chart i:nth-child(8) { background:var(--green); }.chart-axis { display:flex; justify-content:space-between; margin-top:8px; color:#8a989e; font-size:10px; }.alert-mini { display:flex; gap:10px; padding:13px 0; border-bottom:1px solid #edf0f1; }.alert-mini:last-child { border:0; }.risk-dot { width:8px; height:8px; margin-top:4px; border-radius:50%; background:var(--orange); }.alert-mini strong,.alert-mini small { display:block; }.alert-mini strong { font-size:12px; }.alert-mini small { margin-top:3px; color:var(--muted); font-size:11px; }.recent-card { padding-bottom:6px; }.table-wrap { overflow:auto; } table { width:100%; border-collapse:collapse; text-align:left; } th { padding:16px 8px 10px; color:#809099; font-size:9px; letter-spacing:.6px; } td { padding:13px 8px; border-top:1px solid #edf1f2; color:#40525d; font-size:12px; } .tag { display:inline-block; padding:4px 7px; border-radius:4px; font-size:10px; font-weight:700; }.tag.green { color:#187762; background:#e5f4ef; }.tag.orange { color:#9b5e12; background:#fff3da; }.tag.red { color:#9d3e3e; background:#fbe9e9; }.empty-state { max-width:540px; margin:8vh auto; text-align:center; }.empty-state>span { display:grid; place-items:center; width:56px; height:56px; margin:auto auto 15px; color:var(--green); background:var(--mint); border-radius:50%; font-size:26px; }.empty-state h3 { margin:0; font:700 25px "Playfair Display"; }.empty-state p { color:var(--muted); line-height:1.55; }.empty-state button { margin-top:8px; padding:0 18px; }.fraud-list { display:grid; gap:11px; margin-top:19px; }.fraud-item { display:flex; align-items:center; gap:15px; padding:15px 18px; }.fraud-icon { display:grid; place-items:center; width:34px; height:34px; border-radius:50%; color:#a15e12; background:#fff1d6; }.fraud-copy { flex:1; }.fraud-copy strong,.fraud-copy small { display:block; }.fraud-copy strong { font-size:13px; }.fraud-copy small { margin-top:4px; color:var(--muted); font-size:11px; }.risk-score { min-width:56px; text-align:center; color:#a15e12; font-size:12px; font-weight:700; }.sensitive-banner { align-items:flex-start; border-color:#e6d5ae; background:#fff9e9; }.sensitive-banner>span { font-size:21px; }.sensitive-banner strong { font-size:13px; }.sensitive-banner p { margin:3px 0 0; color:#765f34; font-size:12px; line-height:1.4; }.audit-table { margin-top:18px; background:#fff; border:1px solid #e1e8e9; border-radius:9px; }.permission-grid { display:grid; gap:10px; margin-top:20px; }.permission-grid article { display:flex; align-items:center; gap:13px; padding:15px; }.permission-grid article div { flex:1; }.permission-grid strong,.permission-grid small { display:block; }.permission-grid strong { font-size:13px; }.permission-grid small { margin-top:3px; color:var(--muted); font-size:11px; }.permission-grid b { padding:5px 7px; color:#3a675b; background:#e7f4ef; border-radius:4px; font-size:10px; }.blue{background:#4f7290}.green{background:#4c896e}.orange{background:#b77b42}
dialog { width:min(480px,calc(100% - 30px)); border:0; border-radius:11px; box-shadow:var(--shadow); }.modal-close { position:absolute; top:12px; right:14px; border:0; color:#667882; background:transparent; font-size:24px; } dialog form { display:grid; gap:15px; padding:18px; } dialog h2 { margin:-6px 0 0; font:700 26px "Playfair Display"; } dialog p { margin:0; color:var(--muted); font-size:13px; line-height:1.5; } textarea { min-height:75px; resize:vertical; } dialog::backdrop { background:rgba(10,29,39,.50); } #vote-result { padding:30px; text-align:center; } #vote-result h3 { font:700 25px "Playfair Display"; } #vote-result .vote-reveal { margin:18px 0; padding:18px; color:#075d50; background:#e8f5f1; border-radius:8px; font-weight:700; }
@media (max-width:900px) { .voter-shell { grid-template-columns:1fr; }.voter-aside { padding:46px 8vw; }.voter-aside h1 { font-size:40px; }.election-meta,.privacy-promise { margin-top:25px; }.admin-shell { grid-template-columns:1fr; }.admin-sidebar { display:none; }.metric-grid { grid-template-columns:repeat(2,1fr); }.dashboard-grid { grid-template-columns:1fr; } }.full{width:100%}@media (max-width:600px) { .topbar { height:auto; padding:14px 20px; flex-wrap:wrap; gap:13px; }.topbar nav { order:3; width:100%; height:34px; justify-content:center; }.election-status { font-size:11px; }.voter-shell { min-height:0; }.voter-card { width:100%; margin:36px 0; padding:0 24px 30px; }.form-grid { grid-template-columns:1fr 1fr; }.state-label { grid-column:auto; }.voter-aside { padding:40px 28px; }.voter-aside h1 { font-size:36px; }.ballot-heading { align-items:flex-start; gap:10px; }.ballot-heading h2,.voting-step h2 { font-size:27px; }.filter-button { white-space:nowrap; }.admin-content { padding:26px 18px; }.admin-header { align-items:flex-end; }.header-actions .outline-button { display:none; }.metric-grid { grid-template-columns:1fr 1fr; gap:8px; }.metric-grid article { padding:13px; }.metric-grid strong { font-size:23px; }.info-banner { align-items:flex-start; }.info-banner button { display:none; }.fraud-item { align-items:flex-start; flex-wrap:wrap; }.risk-score { margin-left:48px; }.permission-grid b { display:none; } }

/* V2 — fluxo de voto mobile-first */
.voter-shell { display:block; min-height:calc(100vh - 112px); background:linear-gradient(180deg,#f2f8f6 0,#fff 180px); }
.voter-card { width:min(100%,560px); margin:0 auto; padding:26px 20px 40px; }
.progress { gap:0; margin:0 0 26px; }.progress span { flex-basis:25px; width:25px; height:25px; font-size:10px; }.progress i { margin:0 5px; }
.voting-step h1 { margin:0 0 10px; font:700 clamp(32px,9vw,46px)/1.05 "Playfair Display"; letter-spacing:-1px; }.voting-step h2 { font-size:30px; }.step-intro { margin-bottom:22px; font-size:14px; }.onboarding-step { padding-top:10px; }
.golden-rules { display:grid; gap:9px; margin:20px 0; }.golden-rules article { display:flex; gap:11px; padding:13px; border:1px solid #d8e7e2; border-radius:9px; background:#fff; }.golden-rules b { display:grid; place-items:center; flex:0 0 28px; height:28px; color:#fff; background:var(--green); border-radius:50%; }.golden-rules strong,.golden-rules small { display:block; }.golden-rules strong { font-size:13px; }.golden-rules small { margin-top:2px; color:var(--muted); font-size:11px; line-height:1.35; }.lgpd-term { padding:13px; margin:17px 0; border-radius:8px; color:#54656d; background:#edf5f2; font-size:11px; line-height:1.45; }.lgpd-term strong { color:#275a50; }.lgpd-term p { margin:5px 0 0; }.privacy-inline { margin:13px 0 0; color:#72818a; text-align:center; font-size:11px; }
.rule-line { margin:16px 0; color:#2b6257; font-size:12px; font-weight:700; text-align:center; }.rule-line i { padding:0 7px; color:#89b4a8; font-style:normal; }.location-preview { display:grid; grid-template-columns:1fr auto; gap:2px 10px; padding:11px 12px; border-radius:8px; color:#41635a; background:#edf6f2; font-size:12px; }.location-preview strong { grid-column:1/-1; color:var(--green); font-size:10px; letter-spacing:.4px; text-transform:uppercase; }.location-preview span:last-child { font-weight:700; }
.single-form { display:grid; gap:15px; }.single-form .primary,.basic-form .primary { margin-top:2px; } label em { color:#768991; font-size:10px; font-style:normal; font-weight:600; }.field-feedback { min-height:16px; margin:-6px 0 0; color:#788790; font-size:11px; }.field-feedback.success { color:#147a61; }.field-feedback.error { color:#b13d3d; }.basic-form { grid-template-columns:1fr; }.basic-form .full { grid-column:1/-1; }
.ballot-heading small { padding:5px 7px; color:#247464; background:#e6f3ef; border-radius:5px; font-size:10px; font-weight:700; }.ballot-filters { display:grid; grid-template-columns:1fr 1fr; gap:9px; margin:-5px 0 14px; }.ballot-filters label { gap:4px; font-size:10px; }.ballot-filters select { padding:9px; font-size:12px; }.candidate-list { grid-template-columns:1fr 1fr; gap:10px; max-height:390px; margin-bottom:15px; overflow:auto; }.candidate-card { position:relative; display:grid; grid-template-columns:1fr; align-content:start; gap:7px; min-height:185px; padding:12px; }.candidate-card .candidate-photo { width:48px; height:48px; flex-basis:48px; }.candidate-photo.teal { background:linear-gradient(135deg,#1f8a78,#24586f); }.candidate-photo.navy { background:linear-gradient(135deg,#294e78,#516d9e); }.candidate-photo.coral { background:linear-gradient(135deg,#bf625a,#90517a); }.candidate-photo.gold { background:linear-gradient(135deg,#be8a32,#816834); }.candidate-photo.plum { background:linear-gradient(135deg,#805276,#4f6c84); }.candidate-card .candidate-info strong { font-size:13px; line-height:1.2; }.candidate-card .candidate-info small { font-size:10px; line-height:1.25; }.candidate-card .candidate-info small:first-child { margin:0 0 3px; color:var(--green); font-size:9px; font-weight:700; text-transform:uppercase; }.candidate-card input { position:absolute; opacity:0; pointer-events:none; }.select-chip { align-self:end; width:max-content; padding:5px 7px; border:1px solid #cadbd7; border-radius:5px; color:var(--green); font-size:10px; font-weight:700; }.candidate-card.selected .select-chip { color:#fff; border-color:var(--green); background:var(--green); }
.phone-alert { padding:26px 22px; text-align:center; }.phone-alert>span { display:grid; place-items:center; width:40px; height:40px; margin:0 auto 12px; color:#9a6513; background:#fff1d2; border-radius:50%; font-size:22px; font-weight:700; }.phone-alert h2 { margin:0 0 9px; font:700 28px "Playfair Display"; }.phone-alert p:not(.step-label) { color:var(--muted); font-size:13px; line-height:1.5; }.phone-alert .primary { margin-top:13px; } #phone-alert-modal { padding:0; }
.consultation .progress { height:0; margin:0; overflow:hidden; opacity:0; }.masked-phone-card,.vote-summary { display:grid; gap:6px; padding:17px; margin:18px 0; border:1px solid #cfe4dd; border-radius:9px; background:#f0f8f5; }.masked-phone-card span,.vote-summary span { color:var(--green); font-size:10px; font-weight:700; letter-spacing:.6px; }.masked-phone-card strong { font-size:19px; letter-spacing:.6px; }.vote-summary { grid-template-columns:1fr; text-align:left; }.vote-summary strong { margin-bottom:8px; font-size:15px; }.duplicate-cpf-alert { padding:28px 22px 24px; text-align:center; }.duplicate-cpf-alert>span { display:grid; place-items:center; width:42px; height:42px; margin:0 auto 12px; color:#9a6513; background:#fff1d2; border-radius:50%; font-size:22px; font-weight:700; }.duplicate-cpf-alert h2 { margin:0 0 10px; font:700 28px "Playfair Display"; }.duplicate-cpf-alert p:not(.step-label) { color:var(--muted); font-size:13px; line-height:1.5; }.duplicate-cpf-alert .primary { margin-top:16px; }.duplicate-cpf-alert .text-button { margin-top:14px; }
@media (min-width:700px) { .voter-card { padding:42px 34px 52px; }.candidate-list { grid-template-columns:repeat(3,1fr); }.candidate-card { min-height:190px; } }

/* Identidade ACIAC — referência: perfil oficial @aciac_capelinha */
body { font-family:"Montserrat",Arial,sans-serif; }
.topbar { border-bottom:3px solid var(--gold); }
.brand { gap:12px; }.brand-logo-wrap { display:block; width:132px; height:56px; overflow:hidden; }.brand-logo { display:block; width:132px; height:56px; object-fit:cover; object-position:center 51%; }.brand strong { font:800 15px/1 "Montserrat",Arial,sans-serif; letter-spacing:-.35px; text-transform:uppercase; }.brand small { margin-top:4px; color:#a32726; font-size:8px; font-weight:700; letter-spacing:1.05px; }
.voter-shell { background:linear-gradient(180deg,#fff4e8 0,#fff 190px); }.voting-step h1,.voting-step h2,.admin-header h2,.empty-state h3,dialog h2,#vote-result h3,.phone-alert h2,.duplicate-cpf-alert h2 { font-family:"Montserrat",Arial,sans-serif; font-weight:800; letter-spacing:-1.15px; }.eyebrow,.step-label { color:var(--green); }.rule-line { color:#a90810; }.rule-line i { color:var(--gold); }.lgpd-term { border-left:3px solid var(--gold); color:#604f45; background:#fff4e8; }.lgpd-term strong { color:#b20a12; }.golden-rules article { border-color:#f0d8c2; }.golden-rules b,.success-check { background:linear-gradient(135deg,#d6111b,#ab0710); }.primary { background:linear-gradient(135deg,#d6111b,#b20710); box-shadow:0 7px 18px rgba(181,7,16,.18); }.primary:hover { background:linear-gradient(135deg,#b20710,#97040b); }.secondary { color:#a60810; background:#fff0dd; }.text-button,.link-button { color:#b10911; }.progress span.done { border-color:var(--green); background:var(--green); }.progress i { background:#eedcd0; } input:focus,select:focus,textarea:focus { border-color:var(--green); box-shadow:0 0 0 3px #ffe0d9; }.masked-phone-card,.vote-summary { border-color:#f1cfbc; background:#fff5e9; }.masked-phone-card span,.vote-summary span { color:#b20a12; }.receipt-box { border-color:#e7a020; background:#fff8e7; }.receipt-box span { color:#b20a12; }.candidate:hover,.candidate.selected { border-color:var(--green); background:#fff5ed; }.candidate-photo.teal { background:linear-gradient(135deg,#d6111b,#f3a51a); }.candidate-photo.navy { background:linear-gradient(135deg,#a90710,#e87018); }.candidate-photo.coral { background:linear-gradient(135deg,#d6111b,#8c0610); }.candidate-photo.gold { background:linear-gradient(135deg,#f2a61a,#c94914); }.candidate-photo.plum { background:linear-gradient(135deg,#c3181c,#d9751b); }.candidate-card .candidate-info small:first-child,.select-chip { color:#b10911; }.candidate-card.selected .select-chip { border-color:var(--green); background:var(--green); }.ballot-heading small { color:#a60810; background:#fff0df; }.admin-sidebar { background:linear-gradient(180deg,#5b0710,#260307); }.admin-nav.active { background:#b30912; }.admin-nav:hover { background:#7e0b13; }.admin-user { border-color:#7e2228; }.sidebar-footer { border-color:#7e2228; }.avatar { background:#d6111b; }.info-banner { border-color:#f0c37b; background:#fff8e8; }.info-banner>span { background:#d6111b; }.info-banner p { color:#604d3d; }.info-banner button { color:#b20a12; }.positive { color:#b20a12!important; }.bar-chart i { background:#f5b23a; }.bar-chart i:nth-child(6),.bar-chart i:nth-child(8) { background:var(--green); }.tag.green { color:#a60810; background:#fff0df; }
@media (max-width:600px) { .brand-logo-wrap { width:100px; height:44px; }.brand-logo { width:100px; height:44px; }.brand strong { font-size:12px; }.brand small { font-size:7px; }.topbar { padding:10px 16px; } }

/* Controles demonstrativos de elegibilidade, proteção e gestão */
.topbar .nav-link { display:flex; align-items:center; text-decoration:none; }
.voter-header-label { color:#a60810; font-size:12px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; }
.required-location { display:grid; grid-template-columns:1fr auto; gap:8px 12px; padding:13px; border:1px solid #f0d8c2; border-radius:9px; background:#fff5ed; }.required-location strong,.required-location small { display:block; }.required-location strong { color:#a60810; font-size:12px; }.required-location small { margin-top:3px; color:var(--muted); font-size:11px; }.required-location .field-feedback { grid-column:1/-1; }.required-location .outline-button { align-self:center; border-color:#e4a61f; color:#a60810; }
.vote-choice-card { display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #efcfbb; border-radius:9px; background:#fff; }.vote-choice-card strong { margin:0; color:var(--ink); font-size:14px; }.choice-initials,.vote-choice-card img { display:grid; place-items:center; flex:0 0 42px; width:42px; height:42px; overflow:hidden; color:#fff; border-radius:50%; font-size:12px; font-weight:800; object-fit:cover; }.choice-initials.teal { background:linear-gradient(135deg,#d6111b,#f3a51a); }.choice-initials.navy { background:linear-gradient(135deg,#a90710,#e87018); }.choice-initials.coral { background:linear-gradient(135deg,#d6111b,#8c0610); }.choice-initials.gold { background:linear-gradient(135deg,#f2a61a,#c94914); }.choice-initials.plum { background:linear-gradient(135deg,#c3181c,#d9751b); }.final-vote { display:grid; gap:7px; margin:0 0 16px; padding:14px; border:1px solid #f1cfbc; border-radius:9px; background:#fff5e9; text-align:left; }.final-vote>span { color:#b20a12; font-size:10px; font-weight:700; letter-spacing:.6px; }
.vote-confirmation { display:grid; gap:13px; padding:27px 23px 23px; text-align:center; }.vote-confirmation h2 { margin:0; }.vote-confirmation>p:not(.step-label):not(.field-feedback) { color:var(--muted); font-size:12px; line-height:1.5; }.confirm-vote-choice { display:flex; align-items:center; gap:12px; padding:14px; border:1px solid #efcfbb; border-radius:10px; background:#fff5e9; text-align:left; }.confirm-vote-choice .choice-initials,.confirm-vote-choice img { flex:0 0 52px; width:52px; height:52px; object-fit:cover; }.confirm-vote-choice strong,.confirm-vote-choice small { display:block; }.confirm-vote-choice strong { color:var(--ink); font-size:14px; }.confirm-vote-choice small { margin-top:4px; color:var(--muted); font-size:11px; }.vote-confirmation .field-feedback { margin:0; }.vote-confirmation .primary,.vote-confirmation .secondary { width:100%; }

/* Empresários Destaque 2026 — interpretação do convite institucional */
:root { --event-red:#dd1823; --event-wine:#9f0710; --event-gold:#be923b; --event-ivory:#fff9f0; --event-rose:#f8e6dd; }
body { background:var(--event-ivory); }
.topbar { position:relative; min-height:76px; border-bottom:1px solid #edd9c7; box-shadow:0 4px 18px rgba(88,38,20,.04); }
.topbar::after { content:""; position:absolute; right:0; bottom:-2px; left:0; height:2px; background:linear-gradient(90deg,var(--event-gold),var(--event-red) 45%,var(--event-gold)); }
.brand { align-items:center; }.event-identity strong { color:var(--event-red); font-size:16px; letter-spacing:-.65px; text-transform:none; }.event-identity strong em { color:var(--event-gold); font-style:normal; }.event-identity small { color:#76554b; font-size:8px; letter-spacing:1px; }.event-identity small b,.step-label b { display:inline-block; margin-right:3px; padding:2px 5px; border:1px solid rgba(190,146,59,.48); border-radius:999px; color:#9a742c; font-size:.82em; letter-spacing:.9px; }
.brand-event-cover { width:150px; height:54px; border-radius:8px; background:#fff8ef; }.brand-event-cover .brand-logo { width:150px; height:54px; object-fit:cover; object-position:center 47%; }
.voter-header-label { color:#875426; font-size:10px; letter-spacing:.8px; }
.voter-shell { position:relative; isolation:isolate; min-height:calc(100vh - 112px); background:radial-gradient(circle at 0 0,rgba(229,181,128,.2),transparent 30%),linear-gradient(180deg,var(--event-ivory) 0,#fff 245px); }
.voter-shell::before,.voter-shell::after { position:absolute; z-index:-1; content:""; pointer-events:none; }
.voter-shell::before { top:28px; left:50%; width:min(760px,92vw); height:180px; transform:translateX(-50%); border:1px solid rgba(190,146,59,.13); border-bottom:0; border-radius:50% 50% 0 0 / 100% 100% 0 0; }
.voter-shell::after { top:88px; left:0; width:100%; height:140px; opacity:.55; background:repeating-linear-gradient(90deg,transparent 0,transparent 7.5%,rgba(190,146,59,.1) 7.55%,transparent 7.7%); mask-image:linear-gradient(90deg,transparent,black 25%,black 75%,transparent); }
.voter-card { position:relative; margin-top:22px; padding-top:30px; border:1px solid rgba(237,217,199,.88); border-radius:20px; background:rgba(255,255,255,.93); box-shadow:0 17px 46px rgba(91,45,25,.08); backdrop-filter:blur(7px); }
.onboarding-step .step-label { color:var(--event-red); }.onboarding-step h1 { max-width:480px; color:#32201c; font-size:clamp(30px,8vw,43px); line-height:1.08; }
.event-hero { display:grid; place-items:center; height:142px; margin:15px 0 17px; overflow:hidden; border:1px solid #f0dfce; border-radius:14px; background:#fff9f1; box-shadow:0 8px 20px rgba(119,72,32,.05); }.event-hero img { width:100%; height:100%; object-fit:cover; object-position:center 47%; }
.basic-form .location-preview { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:0; padding:11px; border:1px solid #f0dfce; background:#fffaf5; }.basic-form .location-preview>strong { grid-column:1/-1; }.basic-form .location-preview span { display:grid; gap:3px; min-height:42px; padding:7px 8px; border:1px solid #f1e5d9; border-radius:7px; background:#fff; }.basic-form .location-preview b { color:#8f7063; font-size:9px; letter-spacing:.5px; text-transform:uppercase; }.basic-form .location-preview em { overflow:hidden; color:#4e332c; font-size:12px; font-style:normal; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }.basic-form .location-preview.location-pending em { color:#a89388; font-weight:500; }.basic-form .location-preview.location-resolved { border-color:#d9bb85; background:#fff8e9; }.basic-form .location-preview.location-resolved em { color:#9a281e; }
.step-intro { color:#765f56; }.golden-rules article { border-color:#efdcc9; box-shadow:0 5px 14px rgba(105,53,26,.035); }.golden-rules b { background:linear-gradient(135deg,var(--event-red),var(--event-wine)); }.lgpd-term { border-left-color:var(--event-gold); background:#fff8ee; }.lgpd-term strong { color:#9b2925; }
.primary { background:linear-gradient(135deg,var(--event-red),var(--event-wine)); box-shadow:0 9px 20px rgba(159,7,16,.16); }.primary:hover { background:linear-gradient(135deg,#bc101b,#81050d); }.secondary { color:#a30f19; background:#fff1e2; }
.progress span.done { border-color:var(--event-red); background:var(--event-red); }.progress i { background:#f2ddd0; }.step-label { color:#a9101a; }
.candidate-card.selected,.candidate:hover { border-color:#d78c42; background:#fff9f0; }.select-chip { color:#a9101a; }.candidate-card.selected .select-chip { border-color:var(--event-red); background:var(--event-red); }
@media (max-width:600px) { .topbar { min-height:66px; }.brand-logo-wrap,.brand-logo,.brand-event-cover,.brand-event-cover .brand-logo { width:88px; height:40px; }.event-identity strong { font-size:13px; }.event-identity small { font-size:6.5px; }.voter-header-label { display:none; }.voter-card { margin-top:14px; border-radius:17px 17px 0 0; }.voter-shell::before { top:12px; height:130px; }.onboarding-step h1 { font-size:31px; }.event-hero { height:122px; margin:13px 0 15px; } }
.confirm-location { display:grid; gap:9px; padding:13px; border:1px solid #f0d8c2; border-radius:9px; background:#fff; text-align:left; }.confirm-location .location-preview { margin:0; }.confirm-location .field-feedback { min-height:0; }
.candidate-image { object-fit:cover; }.admin-candidate-list { display:grid; gap:10px; margin-top:20px; }.admin-candidate-card { display:flex; align-items:center; gap:13px; padding:14px; border:1px solid var(--line); border-radius:9px; background:#fff; }.admin-candidate-photo { flex:0 0 48px; width:48px; height:48px; object-fit:cover; }.admin-candidate-card strong,.admin-candidate-card small,.admin-candidate-card em { display:block; }.admin-candidate-card strong { font-size:13px; }.admin-candidate-card small { margin-top:3px; color:var(--muted); font-size:11px; }.admin-candidate-card em { margin-top:5px; color:#a60810; font-size:10px; font-style:normal; font-weight:700; }.candidate-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; padding:18px; margin-top:18px; border:1px solid #f0d8c2; border-radius:9px; background:#fff8f1; }.candidate-form label { font-size:11px; }.candidate-form .primary,.candidate-form .text-button { align-self:end; }.candidate-form .text-button { margin:0; text-align:center; }
.admin-auth-gate { position:fixed; z-index:20; inset:0; display:grid; place-items:center; padding:20px; background:rgba(38,3,7,.76); }.admin-auth-card { width:min(100%,420px); padding:28px; border-top:5px solid var(--gold); border-radius:12px; background:#fff; box-shadow:var(--shadow); text-align:center; }.admin-auth-card>img { width:150px; height:62px; object-fit:cover; object-position:center 51%; }.admin-auth-card h2 { margin:6px 0 8px; }.admin-auth-card>p:not(.step-label) { margin:0 0 20px; color:var(--muted); font-size:13px; line-height:1.5; }.admin-auth-card form { display:grid; gap:13px; text-align:left; }.admin-auth-card .demo-code { margin:0; text-align:left; }
html.management-login,html.management-login body { min-height:100%; background:linear-gradient(145deg,#fff6ee 0%,#fff 45%,#fff0dc 100%); }html.management-login .prototype-notice,html.management-login .topbar,html.management-login .admin-shell { display:none; }html.management-login #admin-view { display:block; }html.management-login .admin-auth-gate { position:relative; inset:auto; min-height:100vh; padding:34px 20px; background:linear-gradient(145deg,rgba(84,4,11,.98),rgba(182,7,16,.96)); }html.management-login .admin-auth-card { border-top-color:var(--gold); }html.management-login .admin-auth-card::before { display:block; margin:-4px 0 20px; color:#a60810; content:"GESTÃO ELEITORAL ACIAC"; font-size:10px; font-weight:800; letter-spacing:1.4px; }
@media (max-width:600px) { .required-location { grid-template-columns:1fr; }.required-location .outline-button { width:100%; }.candidate-form { grid-template-columns:1fr; }.candidate-form .text-button { margin:0; } }

/* Feedback visual durante transições assíncronas do eleitor */
.is-loading { display:inline-flex!important; align-items:center; justify-content:center; gap:9px; cursor:wait!important; opacity:.82!important; pointer-events:none; }
.is-loading .button-spinner { float:none; width:17px; height:17px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; font-size:0; animation:button-spin .7s linear infinite; }
.is-loading .button-loading-label { float:none; font-size:inherit; }
.outline-button.is-loading .button-spinner { width:14px; height:14px; }
@keyframes button-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .is-loading .button-spinner { animation-duration:1.4s; } }
