/* EventRace Live-Anzeige - Layout fuer 16:9 (Full HD bis 4K) */
:root {
  color-scheme: dark;
  --bg: #0D1013;
  --surface: #151A1F;
  --surface-2: #1B2128;
  --line: #27303A;
  --text: #EEF1F3;
  --muted: #8995A1;
  --live: #E0312B;
  --purple: #B35CFF;
  --green: #2BD46A;
  --yellow: #FFC400;
  --red: #FF4D4D;
  /* 1u = 1% der Breite einer 16:9-Flaeche, die in den Bildschirm passt */
  --u: min(1vw, 1.7778vh);
  --font-display: "Barlow Condensed", "Arial Narrow", "Roboto Condensed", sans-serif;
  --font-num: "Barlow Semi Condensed", "Arial Narrow", "Roboto Condensed", sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-display);
  overflow: hidden;
  display: grid;
  place-items: center;
}

.screen {
  width: calc(var(--u) * 100);
  height: calc(var(--u) * 56.25);
  display: grid;
  grid-template-rows: calc(var(--u) * 6.4) 1fr calc(var(--u) * 5.6);
  gap: calc(var(--u) * 0.6);
  padding: calc(var(--u) * 0.9) calc(var(--u) * 1.1);
}

.num { font-family: var(--font-num); font-variant-numeric: tabular-nums; }
.label {
  font-size: calc(var(--u) * 0.95);
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  white-space: nowrap;
}

/* ---------------------------------------------------------- Kopf */
.head {
  color: var(--text);
  padding-inline: calc(var(--u) * 0.8);
  border-radius: calc(var(--u) * 0.5) calc(var(--u) * 0.5) 0 0;
  transition: background 0.3s;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: calc(var(--u) * 2);
  border-bottom: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: calc(var(--u) * 1.2); min-width: 0; }
.flag {
  width: calc(var(--u) * 3.4); height: calc(var(--u) * 3.4); flex: none;
  background: conic-gradient(var(--text) 25%, var(--bg) 0 50%, var(--text) 0 75%, var(--bg) 0) 0 0 / calc(var(--u) * 1.7) calc(var(--u) * 1.7);
  border-radius: calc(var(--u) * 0.3);
  opacity: 0.9;
}
.event-name { font-size: calc(var(--u) * 2.3); font-weight: 700; line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.event-series { font-size: calc(var(--u) * 1.3); color: var(--muted); font-weight: 500; margin-top: calc(var(--u) * 0.3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.race { text-align: center; }
.race-title { font-size: calc(var(--u) * 2.3); font-weight: 700; line-height: 1; white-space: nowrap; }
.race-sub { display: flex; justify-content: center; align-items: center; gap: calc(var(--u) * 0.8); margin-top: calc(var(--u) * 0.4); font-size: calc(var(--u) * 1.3); color: var(--muted); }
.pill {
  font-size: calc(var(--u) * 1); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  padding: calc(var(--u) * 0.15) calc(var(--u) * 0.7);
  border-radius: calc(var(--u) * 0.3);
  border: 1px solid var(--line); color: var(--muted);
}
.pill[data-state="active"] { background: var(--live); border-color: var(--live); color: #fff; }
.pill[data-state="active"]::before { content: ""; display: inline-block; width: 0.55em; height: 0.55em; border-radius: 50%; background: #fff; margin-right: 0.45em; vertical-align: 0.08em; animation: blink 1.2s steps(2, jump-none) infinite; }
.pill[data-state="complete"] { background: var(--text); border-color: var(--text); color: var(--bg); }
.pill[data-state="ready"] { border-color: var(--yellow); color: var(--yellow); }

.clock { justify-self: end; text-align: right; }
.clock-time { font-size: calc(var(--u) * 3.6); font-weight: 600; line-height: 0.95; }

/* Flaggen: ganze Kopfzeile in Flaggenfarbe, Rahmen um die Bahnen */
.screen[data-flag="fcy"] .head { background: var(--yellow); --text: #14171A; --muted: rgba(20, 23, 26, 0.72); --line: rgba(20, 23, 26, 0.3); --bg: var(--yellow); }
.screen[data-flag="stop"] .head { background: var(--live); --text: #FFFFFF; --muted: rgba(255, 255, 255, 0.8); --line: rgba(255, 255, 255, 0.35); --bg: var(--live); }
.screen[data-flag="fcy"] .pill, .screen[data-flag="stop"] .pill { background: var(--text); border-color: var(--text); color: var(--bg); }
.screen[data-flag="fcy"] .pill::before, .screen[data-flag="stop"] .pill::before { display: none; }
.screen[data-flag="fcy"] .lanes { box-shadow: 0 0 0 calc(var(--u) * 0.25) var(--yellow); border-radius: calc(var(--u) * 0.5); }
.screen[data-flag="stop"] .lanes { box-shadow: 0 0 0 calc(var(--u) * 0.25) var(--live); border-radius: calc(var(--u) * 0.5); }
.screen[data-flag="stop"] .clock-time { animation: blink 1.6s steps(2, jump-none) infinite; }

/* ---------------------------------------------------------- Bahnen */
.lanes { display: grid; grid-template-rows: repeat(4, 1fr); gap: calc(var(--u) * 0.6); min-height: 0; position: relative; }

.lane {
  --lane: #888;
  --lane-ink: #000;
  position: relative;
  display: grid;
  grid-template-columns: calc(var(--u) * 5.2) calc(var(--u) * 6.4) minmax(0, 1fr) calc(var(--u) * 10) calc(var(--u) * 13) calc(var(--u) * 11) calc(var(--u) * 13.5) calc(var(--u) * 10.5);
  align-items: stretch;
  gap: calc(var(--u) * 0.9);
  background: var(--surface);
  border-radius: calc(var(--u) * 0.5);
  overflow: hidden;
  min-height: 0;
  transition: transform 0.6s cubic-bezier(.2,.8,.2,1);
}
.lane > .cell { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding-block: calc(var(--u) * 0.6); }
.lane > .cell.r { align-items: flex-end; padding-right: calc(var(--u) * 0.4); }
.lane > .cell.gap { padding-right: calc(var(--u) * 1.2); }
.gap .val, .total .val { font-size: calc(var(--u) * 3); }

.lane-no {
  background: var(--lane); color: var(--lane-ink);
  align-items: center; justify-content: center !important;
  font-weight: 800; font-size: calc(var(--u) * 4.6); line-height: 1;
}
.lane-no .label { color: inherit; opacity: 0.7; font-size: calc(var(--u) * 0.85); margin-bottom: calc(var(--u) * 0.2); }

.pos { align-items: center; }
.pos-num { font-size: calc(var(--u) * 5.6); font-weight: 800; line-height: 1; }
.pos-num::before { content: "P"; font-size: 0.45em; color: var(--muted); margin-right: 0.04em; vertical-align: 0.9em; }
.pos-move { font-size: calc(var(--u) * 1.1); font-weight: 700; height: 1.1em; line-height: 1.1em; }
.pos-move.up { color: var(--green); }
.pos-move.down { color: var(--red); }

.driver-short { font-size: calc(var(--u) * 4.2); font-weight: 800; line-height: 0.95; letter-spacing: 0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.driver-name { font-size: calc(var(--u) * 1.45); color: var(--muted); font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: calc(var(--u) * 0.2); }
.driver-meta { display: flex; align-items: flex-end; gap: calc(var(--u) * 1); margin-top: calc(var(--u) * 0.5); min-height: calc(var(--u) * 1.8); }
.chip {
  font-size: calc(var(--u) * 1); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  padding: calc(var(--u) * 0.12) calc(var(--u) * 0.5); border-radius: calc(var(--u) * 0.25);
  background: var(--surface-2); color: var(--muted); white-space: nowrap;
}
.chip.bad { background: var(--red); color: #fff; }
.spark { display: flex; align-items: flex-end; gap: calc(var(--u) * 0.18); height: calc(var(--u) * 1.8); }
.spark i { display: block; width: calc(var(--u) * 0.55); background: var(--line); border-radius: 1px; }
.spark i.pb { background: var(--green); }
.spark i.fl { background: var(--purple); }
.spark i.nt { background: repeating-linear-gradient(135deg, var(--muted) 0 2px, transparent 2px 4px); }
.t-nt { color: var(--muted); }

.val { font-size: calc(var(--u) * 4.2); font-weight: 600; line-height: 1; white-space: nowrap; }
.val.md { font-size: calc(var(--u) * 3.3); }
.sub { font-size: calc(var(--u) * 1.25); color: var(--muted); margin-top: calc(var(--u) * 0.3); white-space: nowrap; font-family: var(--font-num); font-variant-numeric: tabular-nums; }
.val .of { font-size: 0.5em; color: var(--muted); font-weight: 500; }

.progress { width: 100%; height: calc(var(--u) * 0.35); background: var(--surface-2); border-radius: 99px; margin-top: calc(var(--u) * 0.6); overflow: hidden; }
.progress i { display: block; height: 100%; width: 0; background: var(--lane); transition: width 0.5s ease; }

.t-pb { color: var(--green); }
.t-fl { color: var(--purple); }
.t-slow { color: var(--yellow); }
.lane.flash .last { animation: flash 1.4s ease-out; }
@keyframes flash { 0% { background: rgba(238, 241, 243, 0.16); } 100% { background: transparent; } }
@keyframes blink { 50% { opacity: 0; } }

/* Status: im Ziel */
.lane.finish .pos { background: conic-gradient(rgba(238,241,243,.14) 25%, transparent 0 50%, rgba(238,241,243,.14) 0 75%, transparent 0) 0 0 / calc(var(--u) * 1.2) calc(var(--u) * 1.2); }
.lane.finish .gap .val { color: var(--text); }

/* Status: Bahn frei */
.lane.empty > .cell:not(.lane-no) { visibility: hidden; }
.lane.empty .free { display: flex; }
.free {
  display: none; position: absolute; inset: 0 0 0 calc(var(--u) * 6.1);
  align-items: center; font-size: calc(var(--u) * 2.4); font-weight: 600; color: var(--muted); letter-spacing: 0.1em; text-transform: uppercase;
}
.lane.empty { background: transparent; border: 1px dashed var(--line); }
.lane.empty .lane-no { opacity: 0.45; }

/* ---------------------------------------------------------- Fuss */
.foot {
  display: grid; grid-template-columns: auto 1fr auto; gap: calc(var(--u) * 2); align-items: center;
  border-top: 1px solid var(--line);
}
.fastest { display: flex; align-items: center; gap: calc(var(--u) * 1); }
.fastest .mark { width: calc(var(--u) * 0.5); height: calc(var(--u) * 3.2); background: var(--purple); border-radius: 2px; }
.fastest .who { font-size: calc(var(--u) * 2); font-weight: 700; line-height: 1; }
.fastest .time { font-size: calc(var(--u) * 2); color: var(--purple); font-weight: 600; margin-left: calc(var(--u) * 0.6); }
.fastest .where { font-size: calc(var(--u) * 1.15); color: var(--muted); }

.series { display: flex; align-items: center; gap: calc(var(--u) * 1.6); min-width: 0; overflow: hidden; }
.series ol { list-style: none; display: flex; gap: calc(var(--u) * 1.3); }
.series li { display: flex; align-items: baseline; gap: calc(var(--u) * 0.45); white-space: nowrap; font-size: calc(var(--u) * 1.4); }
.series li b { color: var(--muted); font-weight: 600; font-size: 0.8em; }
.series li .d { font-weight: 700; }
.series li .t { color: var(--muted); }
.series li .sw { width: calc(var(--u) * 0.35); height: calc(var(--u) * 1.2); align-self: center; border-radius: 1px; }

.status { display: flex; align-items: center; gap: calc(var(--u) * 0.6); font-size: calc(var(--u) * 1); color: var(--muted); letter-spacing: 0.08em; text-transform: uppercase; }
.status i { width: calc(var(--u) * 0.6); height: calc(var(--u) * 0.6); border-radius: 50%; background: var(--green); }
.status.offline i { background: var(--live); animation: blink 1s steps(2, jump-none) infinite; }

@media (prefers-reduced-motion: reduce) {
  *, *::before { animation: none !important; transition: none !important; }
}

/* ---------------------------------------------------------- schmal (Handy/Tablet hochkant) */
@media (max-aspect-ratio: 1/1) {
  :root { --u: 2.6vw; }
  body { overflow: auto; display: block; }
  .screen { width: auto; height: auto; padding: 16px; grid-template-rows: auto auto auto; gap: 12px; }
  .head { grid-template-columns: 1fr; gap: 10px; padding-bottom: 12px; text-align: left; }
  .race { text-align: left; } .race-sub { justify-content: flex-start; }
  .clock { justify-self: start; text-align: left; }
  .lanes { grid-template-rows: none; }
  .lane { grid-template-columns: calc(var(--u) * 5) calc(var(--u) * 7) repeat(3, minmax(0, 1fr)); grid-template-rows: auto auto; row-gap: 0; }
  .val, .val.md, .gap .val, .total .val { font-size: calc(var(--u) * 2.3); }
  .lane-no { font-size: calc(var(--u) * 3.4); }
  .pos-num { font-size: calc(var(--u) * 4); }
  .driver-short { font-size: calc(var(--u) * 3.4); }
  .label { letter-spacing: 0.04em; font-size: calc(var(--u) * 0.9); }
  .sub { font-size: calc(var(--u) * 1.05); }
  .lane > .cell.r, .lane > .cell.gap { padding-right: 0; }
  .lane { gap: calc(var(--u) * 0.8); padding-right: calc(var(--u) * 1); }
  .lane.flash .last { animation: none; }
  .lane-no { grid-row: span 2; }
  .pos { grid-row: span 2; }
  .lane > .cell.r { align-items: flex-start; }
  .driver { grid-column: span 3; }
  .lane .round, .lane .best { display: none; }
  .free { inset: 0 0 0 calc(var(--u) * 6); }
  .foot { grid-template-columns: 1fr; gap: 10px; padding-top: 12px; }
  .series ol { flex-wrap: wrap; gap: 8px 16px; }
}
