* { box-sizing:border-box; }
@font-face { font-family:"DS-Digital"; src:local("DS-Digital"), local("DS-Digital Bold"), url("/fonts/DS-DIGI.TTF") format("truetype"); font-weight:400; font-style:normal; font-display:swap; }
html, body { width:100%; min-height:100%; overflow-x:hidden; }
body { background:#eef2f7; color:#182230; }
.topbar-wrap { position:relative; min-height:48px; }
.election-countdown { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); display:flex; align-items:center; gap:8px; color:#fff; background:#0d6efd; background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,.22) 1px, transparent 0); background-size:6px 6px; border:1px solid rgba(255,255,255,.58); border-radius:7px; padding:6px 12px 5px; box-shadow:inset 0 1px 0 rgba(255,255,255,.3), inset 0 -2px 5px rgba(0,42,120,.45), 0 2px 7px rgba(0,0,0,.25); }
.countdown-item { min-width:64px; text-align:center; line-height:1; }
.countdown-item strong { display:flex; align-items:center; justify-content:center; min-width:60px; height:36px; padding:1px 7px 3px; margin:0 auto; font-family:"DS-Digital", "Digital-7", "Digital-7 Mono", "LCD", Consolas, monospace; font-size:35px; font-weight:400; line-height:1; letter-spacing:1px; color:#e9fbff; background:linear-gradient(180deg,#02060a,#111923); border:2px solid #031126; border-radius:4px; box-shadow:inset 0 0 0 1px rgba(255,255,255,.14), inset 0 0 12px rgba(19,126,181,.34), 0 1px 0 rgba(255,255,255,.18); text-shadow:0 0 6px rgba(180,239,255,.95), 0 0 2px #fff; }
.countdown-item span { display:block; margin-top:5px; font-size:10px; color:rgba(255,255,255,.82); }
.countdown-separator { align-self:flex-start; padding-top:4px; font-size:21px; font-weight:900; color:#f8fbff; text-shadow:0 0 5px rgba(255,255,255,.75); }
.app-shell { display:flex; align-items:stretch; min-height:calc(100vh - 56px); width:100%; }
.app-content { flex:1 1 auto; min-width:0; padding:24px; }
.site-footer { background:#0d6efd; color:#fff; border-top:1px solid rgba(255,255,255,.35); box-shadow:0 -2px 10px rgba(15,23,42,.12); }
.footer-wrap { position:relative; min-height:42px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.footer-title, .footer-contact { font-size:15px; font-weight:600; color:#fff; text-decoration:none; }
.footer-title:hover, .footer-contact:hover { color:#e8f1ff; text-decoration:underline; }
.visitor-counter { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); display:flex; align-items:center; gap:10px; background:#0d6efd; background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,.22) 1px, transparent 0); background-size:6px 6px; border:1px solid rgba(255,255,255,.58); border-radius:7px; padding:3px 7px; box-shadow:inset 0 1px 0 rgba(255,255,255,.3), inset 0 -2px 5px rgba(0,42,120,.45), 0 2px 7px rgba(0,0,0,.18); }
.visitor-counter span { font-size:13px; color:rgba(255,255,255,.9); }
.visitor-counter strong { display:flex; align-items:center; justify-content:center; min-width:102px; height:28px; padding:1px 7px 3px; font-family:"DS-Digital", "Digital-7", "Digital-7 Mono", "LCD", Consolas, monospace; font-size:28px; font-weight:400; line-height:1; letter-spacing:1px; color:#e9fbff; background:linear-gradient(180deg,#02060a,#111923); border:2px solid #031126; border-radius:4px; box-shadow:inset 0 0 0 1px rgba(255,255,255,.14), inset 0 0 12px rgba(19,126,181,.34), 0 1px 0 rgba(255,255,255,.18); text-shadow:0 0 6px rgba(180,239,255,.95), 0 0 2px #fff; }
.admin-sidebar { flex:0 0 270px; width:270px; background:#ffffff; border-right:1px solid #d8e0ec; padding:18px 14px; box-shadow:2px 0 8px rgba(15,23,42,.04); }
.sidebar-title { font-weight:700; color:#263142; margin:4px 10px 14px; padding-bottom:12px; border-bottom:1px solid #e5ebf3; }
.sidebar-menu { display:flex; flex-direction:column; gap:4px; }
.sidebar-menu a { display:block; color:#263142; text-decoration:none; padding:10px 12px; border-radius:6px; line-height:1.25; white-space:normal; }
.sidebar-menu a:hover { background:#eef4ff; color:#0d6efd; }
.card { border-radius:8px; }
.survey-zone-preview { width:250px; height:260px; min-width:250px; min-height:260px; max-width:250px; max-height:260px; margin:10px 0 0 auto; display:flex; flex-direction:column; }
.survey-zone-preview-label { flex:0 0 22px; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:400; color:#182230; margin:0; text-align:center; }
.survey-zone-preview-box { flex:1 1 auto; min-height:0; border:1px solid #d6dde8; border-radius:4px; background:#fff; display:flex; align-items:center; justify-content:center; overflow:hidden; color:#64748b; font-size:12px; text-align:center; padding:8px; }
.survey-zone-preview-box img { width:100%; height:100%; object-fit:contain; padding:8px; }
.survey-filter-row > [class*="col-"] { min-width:0; }
.candidate-photo { width:100%; height:170px; object-fit:cover; background:#e9eef5; }
.candidate-list-media { display:flex; align-items:center; gap:8px; min-width:112px; }
.candidate-list-photo { width:62px; height:62px; object-fit:cover; object-position:top center; border:1px solid #dbe4f0; border-radius:6px; background:#eef2f7; }
.candidate-list-empty { display:flex; align-items:center; justify-content:center; color:#64748b; font-size:12px; }
.candidate-list-logo { width:38px; height:38px; object-fit:contain; border:1px solid #dbe4f0; border-radius:6px; background:#fff; padding:3px; }
.candidate-preview-panel { display:flex; gap:42px; align-items:center; justify-content:center; background:#fff; border:1px solid #dbe4f0; border-radius:8px; padding:18px 22px; min-height:238px; }
.candidate-preview-item { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; min-width:0; }
.candidate-preview-title { font-size:17px; font-weight:800; color:#475569; }
.candidate-preview-img { width:160px; height:160px; object-fit:cover; object-position:top center; border:1px solid #dbe4f0; border-radius:8px; background:#eef2f7; }
.candidate-preview-logo { width:160px; height:160px; object-fit:contain; border:1px solid #dbe4f0; border-radius:8px; background:#fff; padding:8px; }
.candidate-preview-empty { width:160px; height:160px; display:flex; align-items:center; justify-content:center; text-align:center; color:#64748b; font-size:13px; border:1px dashed #cbd5e1; border-radius:8px; background:#f8fafc; }
.party-logo { width:42px; height:42px; object-fit:contain; border:1px solid #dde3ee; border-radius:6px; background:#fff; padding:3px; }
.table td, .table th { vertical-align: middle; }
.public-candidate-strip { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:12px 0 14px; }
.public-candidate-mini { display:grid; grid-template-columns:54px 1fr 42px; align-items:center; gap:10px; padding:8px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; }
.public-candidate-mini img:first-child, .mini-photo-empty { width:54px; height:54px; object-fit:cover; border-radius:6px; background:#e9eef5; font-size:11px; display:flex; align-items:center; justify-content:center; color:#64748b; }
.mini-info strong { display:block; font-size:14px; }
.mini-info span { display:block; color:#64748b; font-size:12px; }
.mini-logo { width:38px; height:38px; object-fit:contain; background:#fff; border:1px solid #e2e8f0; border-radius:6px; padding:3px; }
.vote-page { min-height:calc(100vh - 112px); display:flex; flex-direction:column; }
.vote-back-row { display:flex; justify-content:flex-end; margin:-8px 12px 8px; }
.vote-back-button { min-width:108px; font-weight:700; }
.vote-header { text-align:center; margin-bottom:18px; }
.vote-header h1 { font-size:30px; font-weight:700; margin:0; }
.vote-header p { color:#64748b; margin:6px 0 0; }
.vote-message { max-width:560px; width:100%; margin:0 auto 18px; text-align:center; }
.vote-form { flex:1; display:flex; flex-direction:column; }
.dni-box { max-width:360px; width:100%; margin:0 auto 22px; }
.dni-warning { max-width:680px; width:100%; margin:0 auto 24px; background:#fff8e1; border:1px solid #f2c94c; border-radius:8px; padding:16px 18px; color:#5f4300; text-align:left; }
.dni-warning strong { display:block; margin-bottom:8px; color:#463000; }
.dni-warning p { margin:0 0 8px; line-height:1.45; }
.dni-warning p:last-child { margin-bottom:0; }
.vote-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,360px)); justify-content:center; gap:18px; }
.vote-card { display:block; position:relative; background:#fff; border:2px solid #dbe4f0; border-radius:10px; overflow:hidden; cursor:pointer; transition:.15s ease; max-width:360px; width:100%; }
.vote-card:hover { border-color:#73a8ff; box-shadow:0 8px 20px rgba(15,23,42,.08); }
.vote-card input { position:absolute; top:12px; left:12px; width:18px; height:18px; }
.vote-card:has(input:checked) { border-color:#0d6efd; box-shadow:0 0 0 3px rgba(13,110,253,.14); }
.select-label { position:absolute; top:10px; left:38px; font-size:11px; color:#64748b; background:#fff; border:1px solid #dbe4f0; border-radius:999px; padding:2px 8px; line-height:1.2; }
.candidate-photo-large { width:100%; height:170px; object-fit:contain; object-position:center; background:#fff; border-bottom:1px solid #e2e8f0; padding:8px; }
.vote-card-body { padding:12px 14px 14px; text-align:center; }
.candidate-name { font-size:16px; font-weight:700; line-height:1.25; }
.candidate-number { color:#475569; margin-top:2px; font-size:13px; }
.party-row { display:flex; align-items:center; justify-content:center; gap:8px; margin-top:10px; }
.party-label { font-size:11px; color:#64748b; line-height:1; }
.party-name { font-weight:600; font-size:13px; line-height:1.25; }
.official-link { display:inline-block; margin-top:10px; font-size:13px; font-weight:700; text-decoration:none; color:#0d6efd; }
.official-link:hover { text-decoration:underline; }
.mini-official-link { margin-top:3px; font-size:12px; }
.special-votes { display:flex; justify-content:center; gap:12px; flex-wrap:wrap; margin:22px 0; }
.special-votes label { background:#fff; border:1px solid #cbd5e1; border-radius:8px; padding:10px 14px; cursor:pointer; }
.vote-submit-center { flex:1; min-height:150px; display:flex; align-items:center; justify-content:center; }
.vote-submit { min-width:240px; min-height:58px; font-size:20px; font-weight:700; }
.turnstile-wrap { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; margin:20px 0 6px; min-height:92px; }
.turnstile-help { color:#475569; font-size:13px; text-align:center; }
.turnstile-widget { min-height:65px; display:flex; justify-content:center; }
.robot-check { width:300px; min-height:74px; display:grid; grid-template-columns:34px 1fr 76px; align-items:center; gap:12px; padding:12px 14px; border:1px solid #cfd6df; border-radius:3px; background:#fff; color:#182230; text-align:left; box-shadow:0 1px 2px rgba(15,23,42,.08); }
.robot-check:not(:disabled):hover { border-color:#98a7ba; background:#fafcff; }
.robot-check:disabled { opacity:.65; cursor:not-allowed; }
.robot-check-box { width:26px; height:26px; display:flex; align-items:center; justify-content:center; border:2px solid #9aa4b2; background:#fff; color:#198754; font-size:21px; font-weight:800; line-height:1; }
.robot-check-text { font-size:16px; font-weight:500; }
.robot-check-brand { justify-self:end; color:#64748b; font-size:10px; line-height:1.15; text-align:center; }
.robot-check.is-checking .robot-check-box { border-color:#0d6efd; color:#0d6efd; font-size:13px; }
.robot-check.is-verified .robot-check-box { border-color:#198754; }
.confirm-vote-media { display:flex; align-items:center; justify-content:center; gap:12px; min-height:96px; }
.confirm-vote-photo { width:92px; height:92px; object-fit:cover; object-position:top center; border:1px solid #dbe4f0; border-radius:8px; background:#eef2f7; }
.confirm-vote-logo { width:62px; height:62px; object-fit:contain; border:1px solid #dbe4f0; border-radius:8px; background:#fff; padding:5px; }
.confirm-vote-option { min-width:220px; padding:22px; border:1px solid #dbe4f0; border-radius:10px; background:#f8fafc; font-size:22px; font-weight:800; color:#182230; }
.vote-thanks-page { min-height:calc(100vh - 112px); display:flex; align-items:center; justify-content:center; padding:24px; }
.vote-thanks-card { width:100%; max-width:560px; background:#fff; border:1px solid #dbe4f0; border-radius:12px; padding:34px; text-align:center; box-shadow:0 14px 32px rgba(15,23,42,.08); }
.vote-thanks-kicker { color:#64748b; margin-bottom:8px; }
.vote-thanks-card h1 { font-size:34px; font-weight:800; margin:0 0 10px; }
.vote-thanks-card p { font-size:18px; color:#263142; margin:0; }
.vote-thanks-actions { display:flex; justify-content:center; gap:12px; flex-wrap:wrap; margin-top:24px; }
.cover-page { min-height:calc(100vh - 112px); display:flex; align-items:center; justify-content:center; padding:28px 0; }
.cover-card { max-width:920px; width:100%; background:#fff; border:1px solid #dbe4f0; border-radius:14px; padding:34px; text-align:center; box-shadow:0 14px 35px rgba(15,23,42,.08); }
.cover-kicker { color:#0d6efd; font-weight:700; text-transform:uppercase; font-size:12px; letter-spacing:.08em; }
.cover-card h1 { font-size:42px; font-weight:800; margin:8px 0; }
.cover-card p { color:#64748b; margin:0 auto 24px; max-width:620px; }
.level-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.level-card { display:block; text-decoration:none; color:#182230; background:#f8fafc; border:1px solid #dbe4f0; border-radius:12px; padding:22px 16px; transition:.15s ease; }
.level-card:hover { border-color:#0d6efd; transform:translateY(-2px); box-shadow:0 10px 24px rgba(15,23,42,.08); }
.level-card span { display:block; font-size:20px; font-weight:700; }
.level-card strong { display:block; font-size:34px; color:#0d6efd; margin-top:6px; }
.level-card small { color:#64748b; }
.cover-note { margin-top:20px; color:#7c5a00; background:#fff3cd; border:1px solid #ffda6a; border-radius:8px; padding:10px 12px; }
.zone-page { max-width:1120px; margin:0 auto; }
.zone-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:16px; }
.zone-card-wrap { display:flex; flex-direction:column; align-items:center; }
.zone-card { display:block; width:100%; text-align:center; text-decoration:none; color:#182230; background:#fff; border:1px solid #dbe4f0; border-radius:12px; padding:18px 14px; transition:.15s ease; }
.zone-card:hover { border-color:#0d6efd; transform:translateY(-2px); box-shadow:0 10px 24px rgba(15,23,42,.08); }
.zone-shield { width:86px; height:86px; margin:0 auto 12px; border:1px solid #dbe4f0; border-radius:12px; background:#f8fafc; display:flex; align-items:center; justify-content:center; color:#64748b; font-size:13px; }
.zone-shield img { width:100%; height:100%; object-fit:contain; padding:7px; }
.zone-name { font-size:18px; font-weight:700; line-height:1.2; }
.zone-count { color:#64748b; font-size:13px; margin-top:4px; }
.zone-deadline { width:68%; min-width:210px; margin:8px auto 0; padding:7px 10px; border:3px solid #06a7c7; background:#f8fbff; color:#182230; text-align:center; font-size:14px; line-height:1.4; }
.zone-deadline strong { font-weight:700; }
.zone-deadline.is-expired { border-color:#dc3545; background:#fff5f5; color:#b02a37; }
.zone-status-box { width:100%; max-width:260px; margin:8px auto 0; padding:6px 10px; background:#fff; border-radius:7px; display:flex; flex-direction:column; align-items:center; gap:5px; }
.zone-status-pill { width:max-content; max-width:100%; min-height:26px; display:flex; align-items:center; justify-content:center; border-radius:6px; padding:3px 12px; font-size:14px; font-weight:700; line-height:1.1; text-align:center; white-space:nowrap; }
.zone-status-open { color:#16943a; background:#fff; border:1px solid #26a84a; }
.zone-status-date { color:#1386ff; background:#fff; border:1px solid #38a5ff; }
.zone-status-countdown { color:#fff; background:#38a5ff; border:1px solid #38a5ff; }
.zone-status-box.is-expired .zone-status-open,
.zone-status-box.is-expired .zone-status-countdown { color:#dc3545; background:#fff; border-color:#dc3545; }
.zone-status-box.is-missing .zone-status-open,
.zone-status-box.is-missing .zone-status-date,
.zone-status-box.is-missing .zone-status-countdown { color:#64748b; background:#fff; border-color:#cbd5e1; }
.result-zone-card { background:#fff; border:1px solid #dbe4f0; border-radius:10px; padding:18px; margin-bottom:18px; box-shadow:0 8px 20px rgba(15,23,42,.04); }
.result-zone-header { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; margin-bottom:16px; }
.result-level { color:#0d6efd; font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.result-zone-header h2 { font-size:24px; font-weight:800; margin:2px 0 0; }
.result-summary { text-align:right; font-size:13px; color:#475569; }
.result-summary .btn { min-width:96px; }
.result-page-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-end; margin-bottom:14px; }
.result-survey-head { background:#fff; border:1px solid #dbe4f0; border-radius:10px; padding:16px 18px; box-shadow:0 8px 20px rgba(15,23,42,.04); }
.result-survey-main { display:flex; align-items:center; gap:14px; min-width:0; }
.result-survey-logo { width:128px; height:86px; object-fit:contain; background:#fff; border-radius:6px; box-shadow:0 2px 8px rgba(15,23,42,.12); }
.result-survey-titlebox { min-width:0; }
.result-live-label { color:#334155; font-size:12px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.result-survey-zone { color:#475569; font-size:15px; font-weight:700; text-transform:uppercase; }
.result-survey-status { display:flex; flex-direction:column; align-items:flex-end; gap:6px; }
.result-status-badge { display:inline-flex; align-items:center; justify-content:center; min-height:30px; padding:5px 13px; border-radius:999px; background:#e8f7ee; color:#16803a; border:1px solid #78d392; font-weight:800; }
.result-close-text { color:#475569; font-size:13px; font-weight:700; }
.result-ranking-card { background:linear-gradient(90deg,#f8f5ff 0%,#fff1f2 100%); }
.result-ranking-list { display:flex; flex-direction:column; gap:10px; }
.ranking-result-item { display:grid; grid-template-columns:120px 122px minmax(0,1fr) 116px; gap:14px; align-items:center; min-height:100px; padding:10px 16px 10px 12px; background:linear-gradient(90deg,rgba(255,255,255,.96),rgba(255,245,247,.92)); border:1px solid #f2e7ee; border-radius:8px; box-shadow:0 8px 18px rgba(15,23,42,.05); overflow:hidden; }
.ranking-trend { height:100%; min-height:76px; display:grid; grid-template-columns:46px 62px; align-items:center; justify-content:center; gap:8px; }
.ranking-position { width:36px; height:36px; display:flex; align-items:center; justify-content:center; color:#fff; background:#0d8be8; border-radius:6px; font-size:22px; font-weight:900; box-shadow:0 4px 10px rgba(13,139,232,.22); margin:0 auto; }
.ranking-result-item:nth-child(n+6) .ranking-position { background:#b8b2c8; }
.ranking-medal-img { width:54px; height:62px; object-fit:contain; display:block; filter:drop-shadow(0 3px 6px rgba(15,23,42,.22)); }
.ranking-result-item.is-leader .ranking-medal-img { width:62px; height:72px; }
.ranking-media { display:grid; grid-template-columns:54px 58px; gap:8px; align-items:center; justify-content:center; }
.ranking-photo { width:54px; height:62px; object-fit:cover; object-position:top center; background:#eef2f7; border:1px solid #dbe4f0; border-radius:6px; box-shadow:0 2px 8px rgba(15,23,42,.12); }
.ranking-photo-empty { display:flex; align-items:center; justify-content:center; color:#64748b; font-size:11px; font-weight:700; text-align:center; }
.ranking-special-vote { position:relative; width:54px; height:62px; margin:auto; border-radius:5px; background:linear-gradient(145deg,#ffffff 0%,#f8fafc 58%,#dbe4f0 100%); border:1px solid #cbd5e1; box-shadow:4px 5px 10px rgba(15,23,42,.18), inset -5px -7px 10px rgba(203,213,225,.45), inset 3px 3px 8px rgba(255,255,255,.92); }
.ranking-special-vote::before { content:""; position:absolute; right:-1px; top:-1px; width:17px; height:17px; background:linear-gradient(135deg,#e2e8f0 0%,#ffffff 48%,#cbd5e1 100%); clip-path:polygon(0 0,100% 0,100% 100%); border-top-right-radius:5px; }
.ranking-special-vote.blank::after { content:""; position:absolute; left:11px; right:11px; top:18px; height:4px; border-radius:999px; background:#e2e8f0; box-shadow:0 10px 0 #edf2f7, 0 20px 0 #f1f5f9; }
.ranking-special-vote.null { height:62px; margin-top:auto; border-radius:5px; overflow:visible; }
.ranking-special-vote.null::after { content:""; position:absolute; left:50%; top:50%; width:30px; height:30px; transform:translate(-50%,-50%); border:4px solid #dc2626; border-radius:50%; background:linear-gradient(135deg,transparent 0 43%,#dc2626 43% 57%,transparent 57% 100%); box-shadow:0 1px 4px rgba(220,38,38,.22); }
.ranking-result-item.is-leader .ranking-special-vote { width:68px; height:76px; }
.ranking-result-item.is-leader .ranking-special-vote.null { height:76px; }
.ranking-logo-box { width:58px; height:58px; display:flex; align-items:center; justify-content:center; background:#fff; border:1px solid #dbe4f0; border-radius:7px; box-shadow:0 2px 8px rgba(15,23,42,.12); overflow:hidden; }
.ranking-logo-box img { width:100%; height:100%; object-fit:contain; padding:4px; }
.ranking-logo-box span { color:#94a3b8; font-size:11px; font-weight:700; }
.ranking-info { min-width:0; }
.ranking-name { color:#0f172a; font-size:19px; font-weight:900; line-height:1.15; }
.ranking-party { color:#5f5578; font-size:16px; font-weight:800; line-height:1.2; margin-top:2px; text-transform:uppercase; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ranking-track { height:10px; margin-top:17px; background:#f7dfe8; border-radius:999px; overflow:hidden; }
.ranking-fill { height:100%; min-width:0; border-radius:999px; box-shadow:0 1px 4px rgba(15,23,42,.12); }
.ranking-numbers { align-self:stretch; display:flex; flex-direction:column; align-items:center; justify-content:center; padding-left:12px; border-left:1px solid rgba(226,232,240,.7); background:rgba(255,240,244,.65); margin:-10px -16px -10px 0; }
.ranking-percent { color:#0f172a; font-size:24px; font-weight:900; line-height:1; }
.ranking-votes { color:#8f86a3; font-size:14px; font-weight:800; margin-top:8px; }
.ranking-advantage { color:#9a6700; font-size:13px; font-weight:900; margin-top:8px; text-align:center; }
.ranking-result-item.is-leader { border:3px solid #f4c542; box-shadow:0 12px 30px rgba(217,154,0,.22); background:linear-gradient(90deg,rgba(255,255,255,.98),rgba(255,250,232,.95)); }
.ranking-result-item.is-leader .ranking-position { background:#0d8be8; box-shadow:0 4px 12px rgba(13,139,232,.28); }
.ranking-result-item.is-leader .ranking-photo { width:68px; height:76px; }
.ranking-result-item.is-leader .ranking-logo-box { width:70px; height:70px; }
.ranking-result-item.is-leader .ranking-media { grid-template-columns:68px 70px; }
.ranking-leader-label { display:inline-flex; align-items:center; min-height:25px; margin:0 0 6px; padding:3px 11px; border-radius:999px; background:#fff7d6; color:#9a6700; border:1px solid #f4c542; font-size:13px; font-weight:900; text-transform:uppercase; letter-spacing:.03em; }
.ranking-leader-label.tie-first { background:#eef6ff; color:#0d6efd; border-color:#9dccff; }
.ranking-tie-label { display:inline-flex; width:max-content; align-items:center; min-height:21px; margin-top:6px; padding:2px 8px; border-radius:999px; background:#eef6ff; color:#0d6efd; border:1px solid #9dccff; font-size:12px; font-weight:900; text-transform:uppercase; letter-spacing:.03em; }
.result-updated-text { color:#334155; font-size:12px; font-weight:800; }
.vote-validation-card { background:#fff; border:1px solid #dbe4f0; border-radius:10px; margin-bottom:18px; overflow:hidden; box-shadow:0 8px 20px rgba(15,23,42,.04); }
.vote-validation-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; padding:16px; border-bottom:1px solid #e2e8f0; }
.vote-validation-head h2 { font-size:22px; font-weight:800; margin:2px 0 0; }
.simple-page { max-width:900px; margin:0 auto; }
.simple-card { background:#fff; border:1px solid #dbe4f0; border-radius:12px; padding:28px; box-shadow:0 12px 30px rgba(15,23,42,.08); }
.simple-card h1 { font-size:30px; font-weight:800; margin:0 0 10px; }
.simple-card p { color:#475569; }
.attachment-help-button { width:42px; font-weight:800; }
@media (max-width: 768px) {
  .topbar-wrap { align-items:flex-start; flex-wrap:wrap; gap:8px; padding-top:8px; padding-bottom:8px; }
  .survey-zone-preview { margin:8px auto 0; }
  .election-countdown { position:static; order:3; transform:none; width:100%; justify-content:center; margin-top:6px; }
  .countdown-item { min-width:58px; }
  .footer-wrap { flex-direction:column; align-items:center; justify-content:center; padding-top:8px; padding-bottom:8px; }
  .visitor-counter { position:static; transform:none; width:auto; justify-content:center; flex-wrap:wrap; }
  .app-shell { display:block; }
  .admin-sidebar { width:100%; border-right:0; border-bottom:1px solid #dce3ee; }
  .sidebar-menu { flex-direction:row; flex-wrap:wrap; }
  .sidebar-menu a { display:inline-block; margin-right:4px; }
  .public-candidate-strip { grid-template-columns:1fr; }
  .vote-submit-center { min-height:100px; }
  .level-grid { grid-template-columns:1fr; }
  .zone-grid { grid-template-columns:1fr; }
  .zone-status-box { max-width:100%; }
  .zone-status-pill { font-size:13px; white-space:normal; }
  .cover-card h1 { font-size:32px; }
  .result-zone-header { display:block; }
  .vote-validation-head { display:block; }
  .vote-validation-head form { margin-top:12px; }
  .result-summary { text-align:left; margin-top:8px; }
  .result-page-head { display:block; }
  .result-survey-main { align-items:flex-start; }
  .result-survey-logo { width:96px; height:66px; margin-bottom:8px; }
  .ranking-result-item { grid-template-columns:1fr; padding:12px; gap:10px; }
  .ranking-trend { grid-template-columns:46px 62px; min-height:64px; justify-content:flex-start; }
  .ranking-media { justify-content:flex-start; }
  .ranking-info, .ranking-numbers { grid-column:1 / -1; }
  .ranking-name { font-size:18px; }
  .ranking-party { font-size:15px; white-space:normal; }
  .ranking-numbers { margin:0; padding:10px 0 0; border-left:0; border-top:1px solid rgba(226,232,240,.8); background:transparent; }
}



































