@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Manrope:wght@400;500;600;700;800&display=swap";:root{font-family:DM Sans,sans-serif;color:#e7edf9;background:#0c1424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}.app-shell{display:flex;min-height:100vh}.sidebar{width:242px;flex:none;background:#0b1220;border-right:1px solid #1c2940;display:flex;flex-direction:column;padding:28px 17px}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 52px}.brand-icon{width:41px;height:41px;border-radius:12px;background:#3857df;display:grid;place-items:center;color:#fff;box-shadow:0 6px 20px #3759db50}.brand strong{font:800 16px Manrope,sans-serif;letter-spacing:-.5px}.brand small{display:block;margin-top:4px;color:#73829e;letter-spacing:2.2px;font-size:9px;font-weight:800}.nav-caption{font-size:10px;letter-spacing:1.7px;color:#64738d;padding:0 15px;margin-bottom:13px;font-weight:800}.nav-link{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:9px;font-size:13px;color:#9cabc2;margin-bottom:7px}.nav-link.selected{color:#dce5ff;background:#1c2b51;font-weight:700}.nav-link.selected svg{color:#8da5ff}.nav-link.muted{opacity:.65}.nav-dot{margin-left:auto;width:6px;height:6px;background:#89a5ff;border-radius:50%}.side-bottom{margin-top:auto;padding:20px 11px 0}.env-label{font-size:10px;letter-spacing:.7px;color:#b7c7df;font-weight:800;display:flex;align-items:center;gap:8px}.live-dot{width:7px;height:7px;border-radius:50%;background:#35c6a9;display:inline-block;box-shadow:0 0 0 3px #35c6a919}.side-bottom p{font-size:11px;color:#73839d;line-height:1.8;margin:12px 0 28px}.side-foot{border-top:1px solid #223047;padding-top:18px;font-size:11px;color:#63728a}.main{min-width:0;flex:1;background:#0e1728}.topbar{height:75px;border-bottom:1px solid #202c41;display:flex;align-items:center;justify-content:space-between;padding:0 39px;background:#101a2b}.breadcrumbs{color:#75859d;font-size:12px}.breadcrumbs span{margin:0 12px;color:#475872}.breadcrumbs strong{color:#c9d6ed;font-weight:600}.top-actions{display:flex;align-items:center;gap:17px}.sim-chip{border:1px solid #27514d;background:#16342f;color:#6fdbc7;font-size:10px;letter-spacing:.7px;font-weight:800;padding:9px 12px;border-radius:20px;display:flex;align-items:center;gap:8px}.icon-btn{background:#1a2940;color:#c4d3ea;border:1px solid #2a3950;width:35px;height:35px;border-radius:9px;display:grid;place-items:center}.icon-btn:hover,.sort-btn:hover{background:#263958}.content{max-width:1600px;margin:0 auto;padding:36px 40px 24px}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:end;margin-bottom:25px}.eyebrow{font-size:10px;letter-spacing:2px;color:#879fff;font-weight:800}.dot-separator{padding:0 8px;color:#556580}h1,h2,p{margin-top:0}h1{font:800 30px Manrope,sans-serif;letter-spacing:-1.2px;margin:9px 0}.page-heading p{font-size:13px;color:#8c9bb4;margin:0}.filters{display:flex;flex-direction:column;gap:8px}.filters label{color:#8b9bb2;font-size:11px;font-weight:700}.select-wrap{min-width:196px;display:flex;align-items:center;gap:9px;background:#172338;border:1px solid #30405b;border-radius:9px;padding:0 12px;color:#9db2db}.select-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:#e6edfc;padding:12px 0;outline:none;flex:1;min-width:0;font-size:12px;font-weight:700}.select-wrap select option{background:#18253b}.disclaimer{border:1px solid #655331;background:#302819;color:#dbc89e;padding:12px 16px;border-radius:10px;display:flex;align-items:center;gap:11px;font-size:12px;margin-bottom:23px;line-height:1.5}.disclaimer svg{flex:none;color:#e6b95e}.disclaimer strong{color:#f2d99f}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:19px}.metric,.panel{background:#152035;border:1px solid #26354b;border-radius:13px}.metric{padding:20px 20px 19px;min-height:153px}.metric-top{display:flex;align-items:center;justify-content:space-between;color:#9cabc2;font-size:12px;font-weight:600}.metric-icon{height:36px;width:36px;border-radius:9px;display:grid;place-items:center}.metric-icon.blue{color:#8ba5ff;background:#26375e}.metric-icon.teal{color:#63dbc5;background:#1c4445}.metric-icon.orange{color:#f3b86f;background:#483927}.metric-icon.purple{color:#bca3ff;background:#3c3159}.metric-value{font:800 clamp(21px,2.2vw,29px) "Manrope",sans-serif;letter-spacing:-1px;margin:13px 0 5px}.metric-detail{font-size:11px;color:#71829c}.progress-track{height:4px;border-radius:5px;background:#293953;margin-top:15px;overflow:hidden}.progress-track>div{height:100%;background:#7794ff;border-radius:5px}.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.panel{min-width:0}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:22px 22px 0}.panel-header h2{font:800 15px Manrope,sans-serif;letter-spacing:-.35px;margin:0 0 6px}.panel-header p{font-size:11px;color:#8190a9;margin:0}.subtle-tag{display:inline-flex;align-items:center;gap:6px;border:1px solid #34435b;background:#1b2a41;border-radius:7px;padding:7px 9px;color:#a8b7cf;font-size:10px;white-space:nowrap}.chart-body{min-height:365px;padding:14px 10px 9px}.chart-note{font-size:11px;color:#8c9bb2;display:flex;align-items:center;gap:7px;margin:0 12px 7px}.table-panel{margin-bottom:20px}.table-head{align-items:center;padding-bottom:20px}.table-actions{display:flex;align-items:center;gap:12px}.check-label{font-size:11px;color:#afbdd2;display:flex;align-items:center;gap:7px;white-space:nowrap}.check-label input{accent-color:#7897ff}.sort-btn{background:#1e2e45;border:1px solid #35445c;color:#d1ddf1;border-radius:7px;display:flex;align-items:center;gap:7px;padding:9px 11px;font-size:11px;white-space:nowrap}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th{text-align:left;color:#7c8da7;font-size:10px;letter-spacing:.7px;font-weight:800;background:#19263b;padding:13px 22px;white-space:nowrap}td{padding:12px 22px;border-top:1px solid #26344a;color:#aebbd0;font-size:12px;white-space:nowrap}td.number{color:#e5ecfa;font-variant-numeric:tabular-nums;font-weight:700}.candidate-cell{display:flex;align-items:center;gap:10px}.candidate-avatar{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:9px;color:#0e1828;font-weight:800;font-size:12px}.candidate-cell strong{color:#e0e8f6;display:block;max-width:260px;overflow:hidden;text-overflow:ellipsis;font-size:12px}.candidate-cell small{color:#7f8fa8;display:block;margin-top:3px}.status-pill{display:inline-block;padding:6px 10px;border-radius:6px;font-size:10px;font-weight:700}.status-pill.valid{background:#163e38;color:#6bd6ba}.status-pill.invalid{background:#483527;color:#e9b581}.chart-toggle{background:transparent;border:1px solid #394962;border-radius:6px;color:#a5b8d9;font-size:10px;padding:7px 9px}.chart-toggle.on{color:#8da5ff;background:#25365b;border-color:#5a72c1}.table-footer{display:flex;justify-content:space-between;gap:12px;padding:14px 22px;border-top:1px solid #2b3a51;color:#7e8ea8;font-size:10px}.footer{display:flex;justify-content:space-between;gap:15px;color:#788aa5;font-size:10px;padding:6px 2px}.footer>span:first-child{display:flex;align-items:center;gap:8px}.footer-sep{margin:0 6px}.empty{height:330px;display:grid;place-items:center;color:#8c9bb4;font-size:12px}.error{display:flex;align-items:flex-start;gap:13px;border:1px solid #8e424b;background:#3c222e;padding:16px;margin-bottom:20px;border-radius:9px;color:#f7c6cb;font-size:12px}.error p{margin:6px 0 0;color:#e2b1b7}.error button{margin-left:auto;background:#8d3e4b;border:0;color:#fff;padding:9px 12px;border-radius:7px;white-space:nowrap}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1250px){.sidebar{width:205px}.content{padding:28px 24px}.topbar{padding:0 24px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.charts-grid{grid-template-columns:1fr}}@media(max-width:750px){.sidebar{display:none}.topbar{height:58px;padding:0 17px}.content{padding:24px 16px}.page-heading{align-items:start;flex-direction:column}.filters,.select-wrap{width:100%}.stats-grid{gap:10px}.metric{padding:15px;min-height:130px}.metric-value{font-size:20px}.metric-top{font-size:11px}.metric-icon{width:30px;height:30px}.table-head{align-items:flex-start;flex-direction:column}.table-actions{flex-wrap:wrap}.footer{flex-direction:column}.sim-chip{font-size:9px}.breadcrumbs{font-size:11px}}button.nav-link{width:100%;text-align:left;border:0;cursor:pointer;font-size:13px;font-family:inherit}button.nav-link:not(.selected){background:transparent;color:#8190a9}button.nav-link:hover{color:#e8efff}.observability-meta{display:flex;flex-wrap:wrap;align-items:center;gap:18px;color:#a8b5cb;font-size:12px;margin:-3px 0 21px}.observability-meta>span{display:flex;align-items:center;gap:8px}.health-list{padding:15px 23px 23px;display:grid;gap:0}.health-list>div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #27344a;color:#91a3bf;font-size:12px}.health-list>div strong{color:#e5ecfa;font-variant-numeric:tabular-nums}.observability-note{font-size:11px;color:#8190a9;margin:0 0 24px;line-height:1.6}.auth-page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;background:radial-gradient(ellipse at 50% 15%,#1b2d52,#0c1424 72%)}.auth-card{width:100%;max-width:440px;padding:38px;background:#152137;border:1px solid #2b3b56;border-radius:18px;box-shadow:0 24px 80px #050b17a8}.auth-brand{display:flex;align-items:center;gap:15px}.auth-logo{width:50px;height:50px;flex:none;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,#607dff,#344bd2);font:800 16px Manrope,sans-serif;color:#fff}.auth-eyebrow{display:block;color:#90a6ce;letter-spacing:1.5px;font-size:9px;font-weight:800;margin-bottom:6px}.auth-brand h1{font:800 24px Manrope,sans-serif;letter-spacing:-.8px;margin:0;color:#f3f6ff}.auth-description{font-size:13px;line-height:1.6;color:#9baccc;margin:26px 0 27px}.auth-form{display:flex;flex-direction:column;gap:20px}.auth-field{display:flex;flex-direction:column;gap:9px}.auth-field label{font-size:12px;color:#d4e0f3;font-weight:700}.auth-field input{display:block;width:100%;min-width:0;height:46px;padding:0 14px;background:#0f1a2c;border:1px solid #344662;border-radius:9px;color:#f2f5ff;font:500 13px DM Sans,sans-serif;outline:none}.auth-field input::placeholder{color:#70819e}.auth-field input:focus{border-color:#8198ff;box-shadow:0 0 0 3px #637cff26}.auth-password-wrap{position:relative}.auth-password-wrap input{padding-right:84px}.auth-password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);padding:7px 9px;border:0;border-radius:6px;background:transparent;color:#9db3dc;font-size:11px;font-weight:700}.auth-password-toggle:hover{color:#fff;background:#253652}.auth-submit{height:47px;margin-top:4px;border:0;border-radius:9px;background:#5473ef;color:#fff;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:12px}.auth-submit:hover:not(:disabled){background:#6c87ff}.auth-submit:disabled{opacity:.65}.auth-submit span{font-size:19px;line-height:1}.auth-error{font-size:12px;line-height:1.5;margin:0;padding:11px 13px;border:1px solid #8b4450;border-radius:8px;color:#ffc7cf;background:#42232d}.auth-divider{height:1px;background:#2a3952;margin:30px 0 19px}.auth-disclaimer{font-size:11px;line-height:1.7;color:#8495b0;margin:0;display:flex;align-items:flex-start;gap:9px}.auth-disclaimer span{font-size:16px;color:#9aaeff}.auth-footer{margin-top:22px;color:#6e82a3;font-size:11px;text-align:center}.auth-loading{color:#c3d2ed;font-size:14px}.auth-session-bar{display:flex;align-items:center;justify-content:flex-end;gap:14px;padding:8px 22px;background:#15263c;color:#e5ecfa;border-bottom:1px solid #2b3b56;font-size:12px}.auth-session-user{display:flex;align-items:center;gap:9px}.auth-role{padding:4px 7px;border:1px solid #3a5072;border-radius:5px;color:#a8c0eb;font-size:10px;font-weight:800}.auth-logout{padding:7px 13px;border:1px solid #415578;border-radius:7px;background:#1c3050;color:#e5ecfa;font-size:12px}.auth-logout:hover{background:#294369}@media(max-width:520px){.auth-page{padding:24px 16px}.auth-card{padding:29px 23px 25px;border-radius:15px}.auth-brand h1{font-size:21px}.auth-session-bar{padding:8px 12px}}.auth-public-button{width:100%;margin-top:13px;padding:13px 16px;border:1px solid #536da2;border-radius:9px;background:#1b2e4b;color:#d8e5ff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px}.auth-public-button:hover{background:#273d60;border-color:#7b9bf1}.auth-public-bar{justify-content:space-between;gap:12px}@media(max-width:600px){.auth-public-bar{flex-wrap:wrap;font-size:11px}}.electoral-map-panel{margin:22px 0;overflow:hidden}.map-data-status{font-size:12px;color:#9cacc7}.map-loading{padding:80px 20px;text-align:center;color:#a8b5cb}.map-warning{margin:0 22px 12px;color:#f4b66d;font-size:12px}.map-legend{display:flex;flex-wrap:wrap;gap:10px 18px;padding:6px 22px 12px}.map-legend-item{display:flex;align-items:center;gap:7px;color:#c1cce0;font-size:11px}.map-legend-item i{width:11px;height:11px;display:inline-block;border-radius:3px}.map-footnote{margin:0;padding:10px 22px 20px;color:#8e9eb7;font-size:11px;line-height:1.6}@media(max-width:650px){.electoral-map-panel .panel-header{flex-wrap:wrap}.electoral-map-panel .echarts-for-react{height:320px!important}}.map-region-controls{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 8px}.map-region-controls button{border:1px solid #364761;border-radius:8px;padding:8px 13px;background:#1b2a43;color:#c4d2ed;font-size:12px;font-weight:600;cursor:pointer}.map-region-controls button:hover,.map-region-controls button:focus-visible{border-color:#7b93ff;color:#fff}.map-region-controls .map-region-active{background:#304b96;border-color:#6786f8;color:#fff}.map-content-grid{display:grid;grid-template-columns:minmax(0,1fr) 255px;align-items:stretch;gap:16px}.map-graphic{min-width:0}.map-leader-summary{align-self:center;border:1px solid #2d3d59;border-radius:12px;padding:17px;background:#101c30;color:#e7edfa}.map-leader-summary h3{margin:0 0 7px;font-size:14px}.map-summary-region,.map-summary-note,.map-summary-empty{font-size:11px;color:#93a9cb;line-height:1.6}.map-summary-region{margin:0 0 18px}.map-summary-note{margin:16px 0 0}.map-leader-row{display:flex;align-items:center;gap:9px;padding:10px 0;border-bottom:1px solid #293a54;font-size:12px}.map-leader-row strong{margin-left:auto;white-space:nowrap;color:#f3f6ff}.map-leader-dot{width:10px;height:10px;flex:none;border-radius:3px}.map-leader-name{min-width:0;overflow-wrap:anywhere}.map-leader-name small{color:#a5b5d0}.map-no-data{border-bottom:0}@media(max-width:900px){.map-content-grid{grid-template-columns:1fr}.map-leader-summary{align-self:stretch}.map-region-controls button{padding:8px 10px}}.mobile-menu-toggle,.mobile-menu-backdrop{display:none}:focus-visible{outline:2px solid #9bb0ff;outline-offset:3px}@media(max-width:750px){.app-shell{min-height:100dvh}.mobile-menu-toggle{display:grid;place-items:center;width:44px;height:44px;flex:none;border:1px solid #344761;background:#1b2b45;border-radius:10px;color:#f1f5ff}.mobile-menu-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#030812b8;border:0;z-index:80}.sidebar{display:flex;position:fixed;inset:0 auto 0 0;z-index:90;width:min(85vw,310px);height:100dvh;overflow-y:auto;transform:translate(-105%);transition:transform .2s ease;box-shadow:8px 0 30px #0007}.sidebar.mobile-open{transform:translate(0)}.topbar{gap:10px;padding:0 12px;min-height:64px;height:auto}.breadcrumbs{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-actions{gap:6px}.top-actions .sim-chip{display:none}.top-actions .icon-btn{min-height:42px;min-width:42px}.top-actions .icon-btn[title^=Pausar],.top-actions .icon-btn[title^=Ativar]{max-width:130px;font-size:10px!important;line-height:1.3}.content{padding:18px 12px 28px;max-width:100vw}h1{font-size:24px;letter-spacing:-.6px}.stats-grid,.charts-grid,.map-content-grid{grid-template-columns:minmax(0,1fr)}.stats-grid{gap:10px}.panel{min-width:0}.panel-header{gap:8px;flex-wrap:wrap}.table-scroll{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.map-region-controls{flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;padding:3px 2px 10px}.map-region-controls button{flex:none;min-height:44px;scroll-snap-align:start}.electoral-map-panel .echarts-for-react{height:360px!important;touch-action:pan-y}.map-legend{padding:12px;gap:10px}.map-footnote{padding:10px 12px 18px}.auth-card{max-width:100%}button.nav-link{min-height:44px}}@media(max-width:420px){.stats-grid{grid-template-columns:1fr}.top-actions .icon-btn[title^=Pausar],.top-actions .icon-btn[title^=Ativar]{max-width:100px}}@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}.election-map-layout{grid-template-columns:minmax(0,1fr) 315px;gap:12px;padding:14px}.election-map-dark{min-width:0;background:#202124;border-radius:14px;padding:15px}.election-map-dark>h3{font-size:17px;color:#fff;margin:0 0 14px}.election-map-dark>h3 small{font-size:11px;color:#aab1bc}.election-map-caveat{font-size:11px;color:#c5cbd3;line-height:1.6;margin:0 5px 8px}.election-result-side{align-self:stretch;background:#f9fafc;color:#1d2939;border-color:#e4e8ef;padding:14px}.election-result-side h3{color:#1d2939;display:flex;justify-content:space-between;gap:8px}.election-result-side h3 small{font-size:11px;align-self:center}.election-result-tabs{background:#eef0f4;padding:11px;border-radius:8px;display:flex;justify-content:space-between;font-size:12px;font-weight:700;margin-bottom:14px}.election-candidate-card{padding:13px 0;border-bottom:1px solid #dce1e9}.election-candidate-identity{display:flex;align-items:center;gap:9px}.election-candidate-identity>div{min-width:0;flex:1}.election-candidate-identity strong{display:block;font-size:12px;overflow-wrap:anywhere}.election-candidate-identity small{display:block;color:#667286;font-size:10px;margin-top:4px}.election-candidate-photo{width:53px;height:53px;flex:none;border-radius:50%;object-fit:cover;border:2px solid #e0e5ec}.election-photo-fallback{display:grid;place-items:center;background:#e6eaf0;color:#647084;font-weight:800}.election-party-chip{padding:4px 6px;border-radius:4px;color:#fff;font-size:10px;font-weight:800}.election-candidate-bar{height:5px;background:#e2e6ed;border-radius:8px;overflow:hidden;margin:11px 0 7px}.election-candidate-bar>div{height:100%;border-radius:8px}.election-candidate-stats{display:flex;justify-content:space-between;font-size:11px;color:#657286}.election-candidate-stats strong{color:#202a3a;font-size:15px}.election-result-side .election-uf-heading{margin-top:20px;font-size:13px}.election-result-side .map-leader-row{border-color:#e0e4ea;color:#283345}.election-result-side .map-leader-row strong{color:#283345}.election-result-side .map-summary-region,.election-result-side .map-summary-note{color:#667286}@media(max-width:1100px){.election-map-layout{grid-template-columns:1fr}}@media(max-width:650px){.election-map-layout{padding:8px}.election-map-dark{padding:10px}}.election-result-tabs{gap:5px;padding:5px;justify-content:stretch}.election-result-tabs button{flex:1;border:0;border-radius:6px;background:transparent;color:#4d5b70;font-size:12px;font-weight:700;padding:9px 6px;cursor:pointer}.election-result-tabs button.active{background:#fff;color:#17233a;box-shadow:0 1px 4px #15213a19}.election-result-tabs button:focus-visible{outline:2px solid #365ac6;outline-offset:2px}.election-region-picker{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;color:#42516a;margin-bottom:14px}.election-region-picker select{width:100%;background:#fff;border:1px solid #cdd5e1;color:#17233a;border-radius:8px;padding:9px;font:inherit}.election-awaiting-notice{padding:10px 12px;border-radius:8px;background:#eef2f8;border:1px solid #d6dfeb;color:#42516a;font-size:12px;line-height:1.5}.election-candidate-photo{border-width:3px;object-position:center 22%;background:#e6eaf0}.election-photo-source{font-size:10px;color:#75839b;margin:10px 0 2px;line-height:1.4}
