@font-face { font-family:'Anton'; src:url('/static/fonts/anton.ttf') format('truetype'); font-weight:400; font-display:swap; }
@font-face { font-family:'Antonio'; src:url('/static/fonts/antonio-400.ttf') format('truetype'); font-weight:400; font-display:swap; }
@font-face { font-family:'Antonio'; src:url('/static/fonts/antonio-700.ttf') format('truetype'); font-weight:700; font-display:swap; }
@font-face { font-family:'Open Sauce One'; src:url('/static/fonts/opensauce-regular.ttf') format('truetype'); font-weight:400; font-display:swap; }
@font-face { font-family:'Open Sauce One'; src:url('/static/fonts/opensauce-semibold.ttf') format('truetype'); font-weight:600; font-display:swap; }
@font-face { font-family:'Open Sauce One'; src:url('/static/fonts/opensauce-bold.ttf') format('truetype'); font-weight:700; font-display:swap; }

:root{
  --white:#ffffff; --black:#000000; --red:#c2152c;
  --bg:#f2f2f0; --surface:#ffffff; --surface-2:#e8e8e5;
  --ink:#0a0a0a; --ink-muted:#54585a; --ink-faint:#8a8d8e;
  --border:#dcdcd8; --border-strong:#c2c2bd;
  --chip-bg:#0a0a0a; --chip-ink:#ffffff;
  --shadow:0 1px 2px rgba(10,10,10,.06), 0 10px 28px rgba(10,10,10,.08);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0a0a0a; --surface:#161616; --surface-2:#1e1e1e;
    --ink:#f2f2f0; --ink-muted:#a3a6a4; --ink-faint:#707372;
    --border:#2a2a2a; --border-strong:#383838;
    --chip-bg:#f2f2f0; --chip-ink:#0a0a0a;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"]{
  --bg:#0a0a0a; --surface:#161616; --surface-2:#1e1e1e;
  --ink:#f2f2f0; --ink-muted:#a3a6a4; --ink-faint:#707372;
  --border:#2a2a2a; --border-strong:#383838;
  --chip-bg:#f2f2f0; --chip-ink:#0a0a0a;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px rgba(0,0,0,.5);
}

*{ box-sizing:border-box; }
html,body{ background:var(--bg); }
body{
  color:var(--ink); font-family:'Open Sauce One', -apple-system, sans-serif;
  font-size:16px; line-height:1.55; margin:0; -webkit-font-smoothing:antialiased;
}
a{ color:var(--red); }
.disp{ font-family:'Anton', sans-serif; font-weight:400; text-transform:uppercase; letter-spacing:.01em; }
.lbl{ font-family:'Antonio', sans-serif; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }

.app-header{ background:var(--black); color:#fff; padding:16px 28px; display:flex; align-items:center; gap:18px; }
.app-header .wordmark{ display:flex; align-items:center; gap:8px; }
.app-header .wordmark .slashes{ font-family:'Anton'; color:var(--red); font-size:16px; transform:skewX(-12deg); }
.app-header .wordmark .name{ font-family:'Anton'; font-size:16px; }
.app-header .divider{ width:1px; height:20px; background:#333; }
.app-header .meta{ font-family:'Antonio'; font-size:12px; letter-spacing:.05em; color:#9a9a9a; text-transform:uppercase; }
.app-header .meta b{ color:#fff; font-weight:700; }
.app-header .spacer{ flex:1; }
.app-header .who{ font-family:'Open Sauce One'; font-size:13px; color:#c8c8c8; }
.app-header a{ color:inherit; text-decoration:none; }

.content{ max-width:1080px; margin:0 auto; padding:28px; }
.content-narrow{ max-width:640px; margin:0 auto; padding:28px; }

.status-pill{
  display:inline-flex; align-items:center; gap:6px; font-family:'Antonio'; font-weight:700; font-size:11px;
  letter-spacing:.06em; text-transform:uppercase; padding:4px 10px; border-radius:100px;
}
.status-pill.neutral{ background:var(--chip-bg); color:var(--chip-ink); }
.status-pill.alert{ background:transparent; color:var(--red); border:1.5px solid var(--red); }
.status-pill.outline{ background:transparent; color:var(--ink-muted); border:1.5px solid var(--border-strong); }

.stat-row{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px; margin-bottom:26px; }
.stat-card{ background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:18px 20px; box-shadow:var(--shadow); }
.stat-card .lbl{ font-size:11px; color:var(--ink-faint); margin-bottom:10px; display:block; }
.stat-card .big{ font-family:'Anton'; font-size:30px; line-height:1; margin-bottom:8px; }
.stat-card .sub{ font-size:13px; color:var(--ink-muted); }

.panel{ background:var(--surface); border:1px solid var(--border); border-radius:10px; box-shadow:var(--shadow); overflow:hidden; margin-bottom:16px; }
.panel-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 20px; border-bottom:1px solid var(--border); flex-wrap:wrap; }
.panel-head h3{ font-family:'Anton'; font-size:19px; margin:0; text-transform:uppercase; }
.panel-body{ padding:20px; }

.table-scroll{ overflow-x:auto; }
table{ width:100%; min-width:520px; border-collapse:collapse; font-size:14.5px; }
thead th{ text-align:left; font-family:'Antonio'; font-weight:700; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint); background:var(--surface-2); padding:10px 20px; white-space:nowrap; }
tbody td{ padding:13px 20px; border-top:1px solid var(--border); vertical-align:middle; }
.row-title{ font-weight:600; }
.row-sub{ font-size:12.5px; color:var(--ink-faint); margin-top:2px; }

.btn{ font-family:'Antonio'; font-weight:700; font-size:13.5px; letter-spacing:.07em; text-transform:uppercase; border:none; cursor:pointer; padding:12px 20px; clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%); }
.btn-primary{ background:var(--red); color:#fff; }
.btn-primary:hover{ background:#a91025; }
.btn-ghost{ background:transparent; border:1.5px solid var(--border-strong); color:var(--ink); clip-path:none; border-radius:6px; padding:10.5px 18px; }
.btn-sm{ padding:7px 12px; font-size:11.5px; clip-path:none; border-radius:6px; border:1.5px solid var(--border-strong); background:transparent; color:var(--ink); }
.btn-sm.red{ border-color:var(--red); color:var(--red); }
.btn-sm.primary{ background:var(--red); border-color:var(--red); color:#fff; }
.btn-block{ width:100%; text-align:center; display:block; }
form.inline{ display:inline; }

/* Offene Wahlgaenge hervorheben */
tbody tr.row-open{ background:rgba(194,21,44,.06); box-shadow:inset 3px 0 0 var(--red); }
.open-ballot-card{
  display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  padding:14px 18px; background:rgba(194,21,44,.06); border:1.5px solid var(--red); border-radius:8px;
}
.open-ballot-card + .open-ballot-card{ margin-top:10px; }

.form-group{ margin-bottom:20px; }
.form-group > label{ display:block; font-family:'Antonio'; font-weight:700; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:8px; }
.form-hint{ font-size:12.5px; color:var(--ink-faint); margin-top:7px; }
input[type=text], input[type=password], input[type=date], input[type=datetime-local], textarea, select{
  width:100%; background:var(--surface); border:1px solid var(--border-strong); color:var(--ink);
  padding:11px 13px; border-radius:6px; font-family:'Open Sauce One'; font-size:15px;
}
textarea{ resize:vertical; min-height:80px; }
.form-actions{ display:flex; gap:10px; justify-content:flex-end; margin-top:24px; }

.callout{ border:1px solid var(--red); background:rgba(194,21,44,.06); border-radius:8px; padding:13px 16px; margin-top:10px; font-size:13.5px; }
.callout.flash{ margin:0 0 20px; }
.callout.ok{ border-color:var(--border-strong); background:var(--surface-2); }

.ballot{ background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:20px; margin-bottom:16px; box-shadow:var(--shadow); }
.ballot-head{ margin-bottom:16px; font-family:'Antonio'; font-weight:700; font-size:12.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-faint); }
.ballot-options{ display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:10px; }
.ballot-options label{ border:1.5px solid var(--border-strong); border-radius:8px; padding:16px 8px; text-align:center; cursor:pointer; font-family:'Antonio'; font-weight:700; font-size:13.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-muted); background:var(--surface); display:block; }
.ballot-options input{ display:none; }
.ballot-options input:checked + label{ background:var(--black); border-color:var(--black); color:#fff; }
:root:not([data-theme="light"]) .ballot-options input:checked + label{ background:var(--white); border-color:var(--white); color:var(--black); }
.ballot-options input:disabled + label{ opacity:.75; cursor:not-allowed; }

.login-shell{ background:var(--black); min-height:100vh; display:flex; align-items:center; justify-content:center; }
.login-card{ width:min(380px,88%); text-align:center; }
.login-card .wordmark{ display:flex; align-items:center; justify-content:center; gap:10px; margin-bottom:6px; }
.login-card .slashes{ font-family:'Anton'; color:var(--red); font-size:26px; transform:skewX(-12deg); }
.login-card .name{ font-family:'Anton'; color:#fff; font-size:26px; }
.login-card .product{ font-family:'Antonio'; font-weight:700; letter-spacing:.32em; text-transform:uppercase; color:#8a8a8a; font-size:12px; margin-bottom:40px; }
.login-card .field{ text-align:left; margin-bottom:16px; }
.login-card label{ display:block; font-family:'Antonio'; font-weight:700; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:#9a9a9a; margin-bottom:7px; }
.login-card input{ width:100%; background:#141414; border:1px solid #2c2c2c; color:#fff; padding:12px 14px; border-radius:6px; font-family:'Open Sauce One'; font-size:15px; }
.login-foot{ margin-top:24px; font-size:12.5px; color:#6f6f6f; }
.login-foot b{ color:#b5b5b5; }
.login-error{ margin-top:20px; padding:10px 14px; border:1px solid var(--red); color:#ff8a95; border-radius:6px; font-size:13.5px; }

.result-shell{ background:var(--black); color:#fff; min-height:100vh; padding:52px 44px; }
.result-eyebrow{ font-family:'Antonio'; font-weight:700; font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:#8a8a8a; margin-bottom:10px; }
.result-title{ font-family:'Anton'; font-size:clamp(26px,3.4vw,36px); text-transform:uppercase; margin:0 0 34px; max-width:20ch; line-height:1.08; }
.result-bars{ display:flex; flex-direction:column; gap:20px; max-width:640px; margin-bottom:34px; }
.rbar-top{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:8px; }
.rbar-name{ font-family:'Antonio'; font-weight:700; letter-spacing:.05em; text-transform:uppercase; font-size:13.5px; color:#c8c8c8; }
.rbar-num{ font-family:'Anton'; font-size:22px; }
.rbar-track{ position:relative; height:14px; background:#1e1e1e; border-radius:3px; overflow:visible; }
.rbar-fill{ height:100%; background:#fff; border-radius:3px; }
.rbar-fill.accent{ background:var(--red); }
.tmark{ position:absolute; top:-6px; bottom:-6px; width:2px; background:var(--red); }
.tlabel{ position:absolute; top:-24px; font-family:'Antonio'; font-size:10.5px; color:var(--red); letter-spacing:.05em; white-space:nowrap; }
.verdict{ display:inline-flex; align-items:center; gap:14px; background:var(--red); padding:14px 26px; clip-path:polygon(14px 0,100% 0,calc(100% - 14px) 100%,0 100%); }
.verdict .disp{ font-size:26px; color:#fff; }
.verdict-sub{ margin-top:14px; font-size:13.5px; color:#9a9a9a; max-width:56ch; }
.verdict-sub b{ color:#e4e4e4; }

footer.page-foot{ max-width:1080px; margin:40px auto; padding:20px 28px 0; border-top:1px solid var(--border); font-size:12.5px; color:var(--ink-faint); }
