body[data-wahl="europa"]{--purple:#003399;background:#f3f6fc;color:#101c3a;--muted:#596881;--line:#d9e1ef}
body[data-wahl="bund"],body[data-wahl="bremen"]{background:#f3f6fc}
body{--chart-muted:#b7a8c4}body[data-wahl="europa"]{--chart-muted:#8fa9d9}
.brand{gap:14px}.brand img{display:block;width:84px;height:auto;max-height:38px;object-fit:contain}.brand span{border:0;padding:0;font-size:16px;font-weight:600;letter-spacing:0;color:#564661}
.election-heading{display:flex;align-items:center;justify-content:space-between;gap:22px;width:100%;min-width:0}.election-heading>div{min-width:0}.election-heading .notice{margin:6px 0 0}.election-emblem{width:72px;height:56px;object-fit:contain;flex:0 0 auto}.date-note{font-size:13px;line-height:1.5;color:var(--muted);margin:8px 0 0}
#pruefhinweis{margin:0 0 28px}#volt-fokus{margin-bottom:42px}#volt-fokus .focus-caption{color:var(--muted);font-size:13px;margin-top:8px}
#volt-metrics{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));align-items:stretch;margin:16px 0 14px}.metric-card{padding:18px 20px}.metric-card .district-value{margin:12px 0 5px}.metric-card .district-value strong{font-size:34px}.metric-card.is-unchecked .district-value strong{font-size:17px;letter-spacing:0}.metric-card.is-checked .district-value strong{font-size:36px}.metric-card .metric-source{font-size:11px;line-height:1.45;color:var(--muted);margin:8px 0 0;overflow-wrap:anywhere}
#historie{margin-bottom:42px}#historie .history-meta{font-size:12px;line-height:1.5;color:var(--muted);margin:0 0 16px}#historie .party{grid-template-columns:minmax(150px,220px) minmax(60px,1fr) 72px 110px}#historie .party-bar{display:block;height:8px;background:#ebeef5}#historie .party-bar>div{max-width:100%}#historie .party-votes{display:block}#historie .party strong.is-unchecked{font-size:13px;font-weight:500;color:var(--muted)}
#karte{margin-bottom:42px}.map-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:20px;align-items:start}.map-pane{margin-bottom:14px}.map-pane h3{font-size:15px;margin:0 0 10px;color:var(--muted)}#karte-bild{min-width:0}#karte svg{width:100%;height:auto;max-height:620px;display:block;background:#f7f8fc;border-radius:12px}#karte path{fill:#e3eafb;stroke:var(--purple);stroke-width:1.15;vector-effect:non-scaling-stroke}#karte path.is-highlight{fill:var(--purple);fill-opacity:.35;stroke-width:2}
#karte-namen{margin:0;padding:0;list-style:none;color:var(--muted);font-size:13px;line-height:1.4;max-height:520px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:white}#karte-namen li{padding:8px 11px;border-bottom:1px solid var(--line)}#karte-namen li:last-child{border-bottom:0}#karte-namen button{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:0;color:inherit;padding:0;font:inherit}#karte-namen button:hover{text-decoration:underline;filter:none}.map-attribution{margin-top:10px}
.wahl-split{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:42px}.wahl-split.einzeln{grid-template-columns:1fr}.wahl-panel{background:white;border:1px solid var(--line);border-radius:16px;padding:22px;min-width:0}.wahl-linkliste{display:flex;flex-direction:column;gap:8px;margin:12px 0}.wahl-meta{color:var(--muted);font-size:13px;line-height:1.5}
#nachrichten{margin-bottom:42px}#live-terminal{margin-bottom:42px}#live-pause{border:1px solid var(--line);background:white;color:var(--purple);border-radius:8px;padding:9px 14px;font-size:13px;font-weight:500}.live-hero{margin-bottom:14px}.live-hero .result{margin:12px 0 4px}#live-art{font-size:12px;color:#e1ccec;text-transform:none}.live-parteien{padding-top:14px;padding-bottom:14px}.live-parteien .party.is-volt{font-weight:600}.live-parteien .party.is-volt strong{color:var(--purple)}#volt-recht{font-size:12px;margin-top:20px}
@media(max-width:700px){.map-layout{grid-template-columns:1fr}.election-heading{align-items:flex-start}.election-emblem{width:58px;height:48px}#karte-namen{max-height:260px}.brand img{width:72px}.brand span{font-size:14px}}
@media(max-width:600px){.wahl-split{grid-template-columns:1fr}.wahl-panel{padding:16px}#historie .party{grid-template-columns:minmax(0,1fr) 68px}#historie .party-bar,#historie .party-votes{display:none}#volt-metrics{grid-template-columns:1fr}.date-note{font-size:12px}}

body[data-wahl="europa"] .brand{color:#502379}

#karte svg text{font-family:Ubuntu,Arial,sans-serif}

.map-attribution{font-size:12px;line-height:1.5}

body{--purple:#502379;--purple-dark:#351750;--base:#f8f6fb;--line:#e5deeb;--surface:#fff;min-height:100vh;background-color:var(--base);background-image:linear-gradient(132deg,transparent 0 61%,rgba(80,35,121,.026) 61% 78%,transparent 78%),linear-gradient(38deg,transparent 0 88%,rgba(80,35,121,.022) 88% 100%)}
body[data-wahl="europa"]{--purple:#003399;--purple-dark:#002366;--base:#f3f6fc;background-color:var(--base);background-image:linear-gradient(132deg,transparent 0 61%,rgba(0,51,153,.026) 61% 78%,transparent 78%),linear-gradient(38deg,transparent 0 88%,rgba(0,51,153,.022) 88% 100%)}
.heading{flex-wrap:wrap;align-items:flex-start;gap:8px;background:var(--purple);color:white;padding:32px;border-radius:20px;margin-bottom:24px}
.election-heading{flex:1 1 600px;width:auto}
h1{font-size:36px;color:white}
#wahl-status{align-self:flex-end;margin:0 0 8px 0;padding:7px 10px;border:1px solid rgba(255,255,255,.3);border-radius:999px;color:#fff;font-size:12px;background:rgba(255,255,255,.08)}
#wahl-status:before{content:none}
.election-heading .notice{color:#eee6f5}
.date-note{color:#e5d9ef}
.election-emblem{width:104px;height:70px;filter:drop-shadow(0 3px 7px rgba(0,0,0,.14))}
body[data-wahl="bremen"] .election-emblem{width:104px;height:126px}
.metric-card{background:var(--surface);border-top:3px solid var(--purple);box-shadow:0 8px 26px rgba(53,23,80,.035);padding:24px}
.metric-card .district-value{margin:14px 0 7px}
.metric-card .district-value strong,.metric-card.is-checked .district-value strong{font-size:44px}
.metric-card.is-unchecked .district-value strong{font-size:17px}
.comparison{box-shadow:0 8px 26px rgba(53,23,80,.035)}
#karte .comparison{padding:24px}
@media(max-width:600px){
  .heading{flex-direction:row}
  .election-heading{flex:1 1 100%;width:100%}
  .heading{padding:22px 20px;border-radius:16px;gap:12px}
  h1{font-size:30px}
  #wahl-status{align-self:flex-start;margin:0}
  .election-emblem{width:68px;height:48px}
  body[data-wahl="bremen"] .election-emblem{width:68px;height:82px}
  .metric-card{padding:20px}
  .metric-card .district-value strong,.metric-card.is-checked .district-value strong{font-size:36px}
  .metric-card.is-unchecked .district-value strong{font-size:17px}
  #karte .comparison{padding:20px}
}

#gebietsergebnisse{margin-bottom:42px}
.area-results{display:grid;grid-template-columns:minmax(220px,.75fr) minmax(0,1.25fr);gap:24px;align-items:start}
.area-result-list label{display:block;font-size:13px;font-weight:600;margin-bottom:7px}
.area-result-list input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:white;color:inherit;font:inherit}
#gebiet-treffer{margin:8px 0;font-size:12px;color:var(--muted)}
#gebiet-zeilen{list-style:none;margin:0;padding:0;max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:9px}
#gebiet-zeilen li+li{border-top:1px solid var(--line)}
#gebiet-zeilen button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:10px 12px;border:0;border-radius:0;background:white;color:inherit;text-align:left;font:inherit}
#gebiet-zeilen button[aria-pressed="true"]{background:color-mix(in srgb,var(--purple) 8%,white)}
#gebiet-zeilen button span{min-width:0;overflow-wrap:anywhere}
#gebiet-zeilen button strong{flex:0 0 auto;color:var(--purple);font-size:14px;font-variant-numeric:tabular-nums}
#gebiet-detail{min-width:0;padding:18px;border:1px solid var(--line);border-radius:10px;background:white}
#gebiet-detail h3{margin:0 0 12px;font-size:19px}
#gebiet-detail .area-result-share{margin:8px 0;color:var(--purple);font-size:32px;font-weight:700;font-variant-numeric:tabular-nums}
#gebiet-detail p{font-size:14px;line-height:1.6;overflow-wrap:anywhere}
#gebiet-detail .area-result-source{margin-top:18px;color:var(--muted);font-size:12px}
@media(max-width:700px){.area-results{grid-template-columns:minmax(0,1fr)}#gebiet-zeilen{max-height:360px}}
.trend-tabelle{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums;margin:0 0 14px}.trend-tabelle th,.trend-tabelle td{padding:7px 4px;border-bottom:1px solid #f1edf4;text-align:right}.trend-tabelle th:first-child,.trend-tabelle td:first-child{text-align:left}.trend-tabelle td{white-space:nowrap}.trend-tabelle td:first-child{white-space:normal}.trend-tabelle th{font-size:12px;font-weight:500;color:var(--muted)}@media(max-width:600px){.trend-tabelle{font-size:12px}}
