/* Baneskift / FriSys Live. Loaded after each surface's existing layout styles. */
:root {
  color-scheme: light;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
  }
}

:root[data-theme="dark"],
:root[data-theme-effective="dark"] {
  color-scheme: dark;
}

:root[data-theme="light"] {
  color-scheme: light;
}

/* Extra specificity also replaces the legacy explicit-dark token sets. */
:root:root {
  --bg: light-dark(#F6F4ED, #111B23);
  --paper: light-dark(#FFFEFA, #202E36);
  --ink: light-dark(#111B23, #FAFCFC);
  --muted: light-dark(#465553, #D0DEE1);
  --line: light-dark(#BEC9BE, #50656D);
  --accent: light-dark(#31561C, #C2FA67);
  --accent-strong: var(--accent);
  --accent-soft: light-dark(#EBF8D9, #293626);
  --accent-ink: light-dark(#FFFFFF, #111B23);
  --focus: light-dark(#345A82, #C5E6FF);
  --surface-soft: light-dark(#F0F1EA, #26343C);
  --surface-soft-2: var(--surface-soft);
  --surface-hover: light-dark(#E7EADC, #33443C);
  --bg-accent: var(--accent-soft);
  --bg-top: var(--bg);
  --hero-grad-start: var(--accent-soft);
  --hero-grad-end: var(--accent-soft);
  --tab-bg: var(--paper);
  --tab-text: var(--ink);
  --tab-border: var(--line);
  --finished-bg: var(--accent-soft);
  --finished-border: var(--accent);
  --nav-finished-border: var(--accent);
  --warn-bg: light-dark(#FFF1DF, #3D3025);
  --warn-border: light-dark(#85400D, #FFC36D);
  --warn-text: light-dark(#85400D, #FFC36D);
  --ok-bg: var(--accent-soft);
  --ok-border: var(--accent);
  --ok-dot: var(--accent);
  --danger-bg: light-dark(#FCECE9, #41272B);
  --danger-border: light-dark(#A5382D, #FFAAA2);
  --danger-dot: light-dark(#A5382D, #FFAAA2);
  --pb: light-dark(#2C4891, #A8C2FF);
  --brand-logo: url("frisys-live-logo-lys.svg");
  /* Token aliases used by registration, seeding and standalone statistics. */
  --surface: var(--paper);
  --surface2: var(--surface-soft);
  --panel: var(--paper);
  --border: var(--line);
  --text: var(--ink);
  --accent2: var(--accent);
  --accent-tint: var(--accent-soft);
  --sum: var(--surface-soft);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --brand-logo: url("frisys-live-logo-mork.svg");
  }
}

:root[data-theme="dark"],
:root[data-theme-effective="dark"] {
  --brand-logo: url("frisys-live-logo-mork.svg");
}

:root[data-theme="light"] {
  --brand-logo: url("frisys-live-logo-lys.svg");
}

:root body {
  background: var(--bg);
  color: var(--ink);
  font-family: "Segoe UI", system-ui, sans-serif;
}

:root :is(button, input, select, textarea) {
  font-family: inherit;
  accent-color: var(--accent);
}

:root :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

:root :is(table, .stat-num, .kpi b, .event-time, .live-strip, .statusbar) {
  font-variant-numeric: tabular-nums;
}

:root .aff-table-scroll {
  overflow-x: auto;
}

:root:root .hero {
  background: var(--accent-soft);
  border-color: var(--line);
  border-radius: 14px;
  box-shadow: none;
}

:root .hero::before {
  content: "";
  display: block;
  width: 128px;
  height: 32px;
  margin-bottom: 12px;
  background: var(--brand-logo) left center / contain no-repeat;
}

:root .hero:has(.hero-ws-status) {
  padding-bottom: 3rem;
}

@media (max-width: 680px) {
  :root .hero:has(.hero-ws-status) {
    padding-bottom: 0.9rem;
  }
}

:root:root :is(.card, .event-card, .stat-kpi, .kpi) {
  border-color: var(--line);
  box-shadow: none;
}

:root:root :is(th, .heat-header-row td, .heat-repeat-head-row td, .sl-heat-header, .nav-group-header) {
  background: var(--accent-soft);
  color: var(--ink);
  border-color: var(--line);
}

:root:root tbody tr:hover td {
  background: var(--surface-hover);
}

:root:root :is(.attempt-wind-row td, .athlete-note-editor-row td) {
  background: var(--surface-soft);
  color: var(--muted);
}

:root:root .heat-spacer td {
  background: var(--paper);
}

:root:root :is(.vertical-out-row td, .pr-row-done td) {
  background: var(--surface-soft);
  color: var(--muted);
}

:root:root .no-callroom-row td {
  background: var(--danger-bg);
}

:root:root .new-data-row td {
  background: var(--warn-bg);
}

:root:root :is(.res-mark, .sl-merged-badge, .best-attempt-cell) {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent);
}

:root:root .res-better-sb {
  color: var(--accent);
}

:root:root .res-better-pb {
  color: var(--pb);
}

:root #event-groups .table-wrap:not(.detail-wrap) td:nth-child(3),
:root #event-groups .table-wrap:not(.detail-wrap) td:nth-last-child(2) {
  font-weight: 650;
}

:root:root :is(.qual-status, .sl-klasse, .athlete-note-inline-shared, .live-strip, .hero-ws-status) {
  color: var(--muted);
}

:root:root :is(.notice, .athlete-note-inline, .theme-picker-wrap) {
  background: var(--paper);
  border-color: var(--line);
}

:root:root :is(.notice-warn, .sl-heat-has-result, .nav-reset-hidden-btn) {
  background: var(--warn-bg);
  color: var(--warn-text);
  border-color: var(--warn-border);
}

:root:root :is(.access-error, .live-offline) {
  background: var(--danger-bg);
  color: var(--danger-dot);
  border-color: var(--danger-border);
}

:root:root :is(.athlete-note-btn, .athlete-note-inline-actions :where(button), .nav-sort-btn,
  .nav-type-btn, .nav-multi-btn, .nav-visibility-btn, .starter-reset-btn, .sl-hide-heat-btn) {
  background: var(--surface-soft);
  color: var(--ink);
  border-color: var(--line);
}

:root:root :is(.athlete-note-btn-has, .nav-multi-btn-active) {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent);
}

:root:root :is(.sl-checkin-btn, .pr-prize-btn) {
  background: var(--surface-soft);
  border-color: var(--line);
}

:root:root .sl-checkin-btn-on {
  background: var(--accent);
  color: var(--accent-ink);
  border-color: var(--accent);
}

:root:root .sl-checkin-btn-no {
  background: var(--danger-border);
  color: var(--accent-ink);
  border-color: var(--danger-border);
}

:root:root .pr-prize-btn-on {
  background: var(--warn-border);
  color: var(--accent-ink);
  border-color: var(--warn-border);
}

:root:root :is(.speaker-btn, .access-btn, .nav-toggle, .tab-active,
  .nav-sort-btn-active, .nav-type-btn-active, .nav-multi-count) {
  background: var(--accent);
  color: var(--accent-ink);
  border-color: var(--accent);
}

:root:root .speaker-btn-secondary {
  background: var(--surface-soft);
  color: var(--ink);
  border-color: var(--line);
}

:root:root :is(.nav-item:hover, .nav-multi-opt:hover, .nav-multi-btn:hover) {
  background: var(--surface-hover);
}

:root:root :is(.nav-popup-btn:hover, .event-popup-btn:hover) {
  background: var(--accent);
  color: var(--accent-ink);
}

:root:root .version-marker {
  background: var(--paper);
  color: var(--muted);
  border-color: var(--line);
}

:root:root .source-badge {
  background: var(--paper);
  color: var(--muted);
  border-color: var(--line);
}

/* Operational UIs keep their original layout and theme controls. */
:root[data-baneskift="embedded"] .topbar {
  background: var(--accent-soft);
  color: var(--ink);
  border-bottom: 1px solid var(--line);
}

:root[data-baneskift="embedded"] .topbar-title {
  padding-left: 42px;
  background: url("frisys-live-symbol.svg") left center / 30px 30px no-repeat;
}

:root[data-baneskift="embedded"] .topbar button {
  background: var(--paper);
  color: var(--ink);
  border-color: var(--line);
}

:root[data-baneskift="embedded"] :is(button.primary, .btn-primary) {
  background: var(--accent);
  color: var(--accent-ink);
  border-color: var(--accent);
}

:root[data-baneskift="embedded"] :is(.field input, .field select) {
  background: var(--surface-soft);
  color: var(--ink);
}

:root[data-baneskift="embedded"] .btn-muted {
  background: var(--surface-soft);
  color: var(--ink);
}

:root[data-baneskift="embedded"] :is(.pill, tr.sel) {
  background: var(--surface-soft);
  color: var(--ink);
}

:root[data-baneskift="embedded"] :is(.pill.tier-pending, .msg.warn) {
  background: var(--warn-bg);
  color: var(--warn-text);
}

:root[data-baneskift="embedded"] .pill.tier-confirmed {
  background: light-dark(#E9EFFF, #283451);
  color: var(--pb);
}

:root[data-baneskift="embedded"] :is(.pill.tier-delivered, .msg.ok) {
  background: var(--ok-bg);
  color: var(--accent);
}

:root[data-baneskift="embedded"] .msg.err {
  background: var(--danger-bg);
  color: var(--danger-dot);
}

:root[data-baneskift="statistics"] .table-scroll {
  overflow-x: auto;
}

:root[data-baneskift="statistics"] .wrap::before {
  content: "";
  display: block;
  height: 32px;
  margin-bottom: 1rem;
  background: var(--brand-logo) left center / 128px 32px no-repeat;
}

:root[data-baneskift="access"] a {
  color: var(--accent);
}

:root[data-baneskift="access"] body {
  margin: 0;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 1rem;
}

:root[data-baneskift="access"] .card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1.2rem;
  max-width: 420px;
  width: 100%;
}

:root[data-baneskift="access"] .card::before {
  content: "";
  display: block;
  height: 32px;
  margin-bottom: 1rem;
  background: var(--brand-logo) left center / 128px 32px no-repeat;
}

:root[data-baneskift="access"] input {
  box-sizing: border-box;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  color: var(--ink);
}

:root[data-baneskift="access"] button {
  background: var(--accent);
  color: var(--accent-ink);
}

@media print {
  :root:root {
    color-scheme: light;
    --brand-logo: url("frisys-live-logo-lys.svg");
  }
}
