/* ── Google Fonts ─────────────────────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Mono:wght@300;400;500&family=Outfit:wght@300;400;500;600&display=swap');

/* ── CSS Variables ────────────────────────────────────────────────────────── */
:root {
  --bg:        #0a0c12;
  --paper:     #13161f;
  --surface:   #1c202e;
  --border:    #2a2d3e;
  --text:      #e8eaf0;
  --subtext:   #9aa0b3;  /* bumped from #6b7080 — failed WCAG AA on navy buttons */
  --accent:    #e8722a;
  --accent-dim: rgba(232, 114, 42, 0.15);
  --blue:      #4ea8de;
  --font-brand: 'Bebas Neue', sans-serif;
  --font-mono:  'DM Mono', monospace;
  --font-ui:    'Outfit', sans-serif;
}

/* ── Animations ───────────────────────────────────────────────────────────── */
@keyframes tm26FadeIn {
  from { opacity: 0; transform: scale(0.97); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes draftMyTurnPulse {
  0%   { box-shadow: 0 0 0 0 rgba(232, 114, 42, 0.5); }
  70%  { box-shadow: 0 0 0 10px rgba(232, 114, 42, 0); }
  100% { box-shadow: 0 0 0 0 rgba(232, 114, 42, 0); }
}

.draft-myturn-banner {
  background-color: rgba(232, 114, 42, 0.1);
  border: 1px solid var(--accent);
  border-radius: 8px;
  padding: 14px 16px;
  margin-bottom: 16px;
  animation: draftMyTurnPulse 1.5s infinite;
}

/* ── Pick announcement toast ───────────────────────────────────────────────── */
@keyframes draftToastSlide {
  0%   { opacity: 0; transform: translateX(110%); }
  8%   { opacity: 1; transform: translateX(0); }
  85%  { opacity: 1; transform: translateX(0); }
  100% { opacity: 0; transform: translateX(0); }
}

.draft-pick-toast {
  background-color: var(--paper);
  border: 1px solid var(--accent);
  border-left: 4px solid var(--accent);
  border-radius: 6px;
  padding: 10px 14px;
  min-width: 240px;
  max-width: 320px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.45);
  animation: draftToastSlide 4.5s ease-out forwards;
  pointer-events: auto;
  font-family: 'Outfit', sans-serif;
}

.draft-pick-toast .toast-pick-num {
  color: var(--subtext);
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.05em;
}
.draft-pick-toast .toast-picker {
  color: var(--accent);
  font-weight: 700;
  font-size: 13px;
}
.draft-pick-toast .toast-card {
  color: var(--text);
  font-size: 13px;
  margin-top: 2px;
}

/* "It's your turn" banner — compact strip, ESPN-style.
   Single-row layout: small icon, title flush left, round/pick subtitle
   tucked inline. Keeps the pulse animation + orange theme but doesn't
   eat 80+px of vertical real estate. */
.draft-myturn-banner-prominent {
  background-color: rgba(232, 114, 42, 0.18);
  border: 2px solid var(--accent);
  border-radius: 8px;
  padding: 6px 12px;
  margin-bottom: 6px;
  animation: draftMyTurnPulse 1.4s infinite;
  display: flex;
  align-items: center;
  gap: 10px;
}
.draft-myturn-banner-prominent .turn-icon {
  font-size: 18px;
  line-height: 1;
}
.draft-myturn-banner-prominent .turn-title {
  font-family: 'Bebas Neue', sans-serif;
  letter-spacing: 0.06em;
  font-size: 16px;
  color: var(--accent);
  line-height: 1.1;
}
.draft-myturn-banner-prominent .turn-sub {
  color: var(--text);
  font-size: 10px;
  font-family: 'DM Mono', monospace;
  margin-top: 1px;
  letter-spacing: 0.04em;
}
/* Autopick preview rendered inline inside the YOU'RE ON THE CLOCK
   banner (when the player is on the clock). Subtle, fits below the
   title without making the banner taller than necessary. */
.draft-myturn-banner-prominent .turn-autopick {
  display: flex;
  align-items: baseline;
  gap: 4px;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.04em;
  margin-top: 1px;
  overflow: hidden;
  min-width: 0;
}
.draft-myturn-banner-prominent .turn-autopick-label {
  color: var(--accent);
  font-weight: 700;
  flex-shrink: 0;
}
.draft-myturn-banner-prominent .turn-autopick-name {
  color: var(--text);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Narrower Card column on phone-width viewports so Price / 7D / 30D
   get room to breathe. Targets both the th (which constrains layout)
   and the td's inner name div (which holds the ellipsis style). */
@media (max-width: 480px) {
  #draft-avail-table .draft-avail-sticky-head th:nth-child(3) {
    max-width: 140px;
  }
  #draft-avail-table tbody td:nth-child(3) > div:first-child {
    max-width: 110px !important;
  }
}

/* ── Live-connection dot (header) ──────────────────────────────────────────── */
@keyframes draftLivePulse {
  0%   { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0.7); transform: scale(1); }
  60%  { box-shadow: 0 0 0 6px rgba(74, 222, 128, 0); transform: scale(1.15); }
  100% { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0); transform: scale(1); }
}
.draft-live-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background-color: #4ade80;
  flex-shrink: 0;
  margin-right: 6px;
  transition: background-color 0.4s ease;
}
.draft-live-dot.live-flash {
  animation: draftLivePulse 0.9s ease-out;
}
.draft-live-dot.live-stale {
  background-color: #ff6b6b;
  animation: none;
}

/* ── Timer urgency (≤10s on my turn) ───────────────────────────────────────── */
@keyframes draftTimerUrgent {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.12); }
}
.draft-timer-urgent {
  animation: draftTimerUrgent 0.6s ease-in-out infinite;
}

/* Self-pick toast (you just locked it in) — green border instead of accent */
.draft-pick-toast.self-pick {
  border-color: #4ade80;
  border-left-color: #4ade80;
}
.draft-pick-toast.self-pick .toast-picker {
  color: #4ade80;
}

/* Sticky table header — full definition lives at the bottom of this
   file with the draft-band offset (--draft-band-height). Selectors here
   are for descendant utilities only. */

/* In queue view, the column-sort buttons don't actually re-sort
   (queue is always in queue order), so neutralize the click affordance
   AND hide the sort arrow indicator. */
.draft-avail-sticky-head.sort-disabled button {
  pointer-events: none !important;
  cursor: default !important;
  opacity: 0.55;
}
.draft-avail-sticky-head.sort-disabled .sort-arrow {
  display: none;
}

/* Queue-only position column: hidden by default, revealed when the
   table has the .queue-mode class (toggled by clientside callback). */
.queue-position-col { display: none; }
#draft-avail-table.queue-mode .queue-position-col { display: table-cell; }

/* ── Global reset ─────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

body {
  background-color: var(--bg) !important;
  color: var(--text) !important;
  font-family: var(--font-ui) !important;
  margin: 0;
}

/* ── Dash Dropdown fix (the black-on-dark problem) ────────────────────────── */
.Select-control,
.Select-menu-outer,
.Select--single > .Select-control,
.VirtualizedSelectOption,
.VirtualizedSelectFocusedOption {
  background-color: var(--surface) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}

.Select-value-label,
.Select-placeholder,
.Select-input input {
  color: var(--text) !important;
  font-family: var(--font-ui) !important;
}

.Select-option {
  background-color: var(--surface) !important;
  color: var(--text) !important;
}

.Select-option:hover,
.Select-option.is-focused {
  background-color: var(--accent-dim) !important;
  color: var(--text) !important;
}

.Select-option.is-selected {
  background-color: var(--accent) !important;
  color: #fff !important;
}

.Select-arrow {
  border-color: var(--subtext) transparent transparent !important;
}

.Select.is-open .Select-arrow {
  border-color: transparent transparent var(--subtext) !important;
}

/* Dash 2.x dropdown — explicit border override */
.dash-dropdown .dropdown .Select-control,
.dash-dropdown .Select-control,
.dark-dropdown .Select-control,
.Select-control {
  background-color: var(--surface) !important;
  border: 1px solid var(--border) !important;
  box-shadow: none !important;
  color: var(--text) !important;
}

/* Dark dropdown class — comprehensive fix */
.dark-dropdown .Select-control,
.dark-dropdown .Select-menu-outer,
.dark-dropdown .Select-menu,
.dark-dropdown .VirtualizedSelectOption {
  background-color: var(--surface) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}

.dark-dropdown .Select-value-label,
.dark-dropdown .Select-placeholder,
.dark-dropdown .Select-input input {
  color: var(--text) !important;
}

.dark-dropdown .Select-multi-value-wrapper {
  background-color: var(--surface) !important;
}

.dark-dropdown .Select-option {
  background-color: var(--surface) !important;
  color: var(--text) !important;
}

.dark-dropdown .Select-option.is-focused,
.dark-dropdown .Select-option:hover {
  background-color: var(--accent-dim) !important;
  color: var(--text) !important;
}

.dark-dropdown .Select-option.is-selected {
  background-color: var(--accent) !important;
  color: #fff !important;
}

/* Era group header (disabled options) */
.dark-dropdown .Select-option.is-disabled {
  color: var(--subtext) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  font-family: var(--font-mono) !important;
  cursor: default !important;
  background: var(--surface) !important;
  padding-top: 12px !important;
  padding-bottom: 4px !important;
  opacity: 1 !important;
  pointer-events: none !important;
}

/* Multi-value tag */
.dark-dropdown .Select-value {
  background-color: var(--bg) !important;
  border-color: var(--border) !important;
  color: var(--text) !important;
}

.dark-dropdown .Select-value-icon {
  border-right-color: var(--border) !important;
  color: var(--subtext) !important;
}

.dark-dropdown .Select-value-icon:hover {
  background-color: var(--accent) !important;
  color: #fff !important;
}

/* Radio/checkbox accent color for league form */
.league-form-radio input[type="radio"],
.league-form-radio input[type="checkbox"] {
  accent-color: var(--accent);
}

.Select--is-focused .Select-control,
.Select.is-focused .Select-control,
.Select.is-focused:not(.is-open) > .Select-control {
  border: 1px solid var(--accent) !important;
  box-shadow: none !important;
}

/* ── DatePickerRange ──────────────────────────────────────────────────────── */

/* Outer container */
.DateRangePicker,
.DateRangePicker > div {
  background-color: var(--surface) !important;
}

/* Nuclear border removal — target every variant the library generates */
.DateRangePickerInput,
.DateRangePickerInput__withBorder,
.DateRangePickerInput_1,
.DateRangePickerInput__withBorder_2,
div[class*="DateRangePickerInput"] {
  border: none !important;
  border-radius: 0 !important;
  background-color: var(--surface) !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Each date slot wrapper */
.DateInput,
.DateInput_1,
div[class*="DateInput"]:not([class*="DateInput_input"]) {
  border: none !important;
  background-color: var(--surface) !important;
}

/* The actual text input */
.DateInput_input {
  border: none !important;
  border-bottom: 1px solid var(--border) !important;
  background-color: var(--surface) !important;
  color: var(--text) !important;
  font-family: var(--font-mono) !important;
  font-size: 13px !important;
  transition: border-color 0.2s;
}

.DateInput_input:focus,
.DateInput_input--focused {
  border-bottom-color: var(--accent) !important;
  outline: none !important;
}

/* Arrow between the two fields */
.DateRangePickerInput_arrow,
.DateRangePickerInput_arrow_svg {
  fill: var(--subtext) !important;
  color: var(--subtext) !important;
}

/* Calendar day cells */
.CalendarDay__default {
  background: var(--surface);
  color: var(--text);
  border-color: var(--border);
}

/* Selected dates */
.CalendarDay__selected,
.CalendarDay__selected:hover {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

/* Selected range span */
.CalendarDay__selected_span,
.CalendarDay__selected_span:hover {
  background: var(--accent-dim);
  border-color: var(--accent-dim);
  color: var(--text);
}

/* Hovered range */
.CalendarDay__hovered_span,
.CalendarDay__hovered_span:hover {
  background: var(--accent-dim);
  border-color: var(--accent-dim);
  color: var(--text);
}

.DayPicker,
.DayPicker__withBorder,
.CalendarMonthGrid,
.CalendarMonth {
  background: var(--paper) !important;
}

.CalendarMonth_caption { color: var(--text) !important; }
.DayPickerNavigation_button { border-color: var(--border) !important; }
.DayPickerNavigation_svg__horizontal { fill: var(--text) !important; }
.DayOfWeek { color: var(--subtext) !important; }

/* ── Date picker width fix ────────────────────────────────────────────────── */
.DateInput {
  width: 110px !important;
}

.DateInput_input {
  font-size: 13px !important;
  padding: 6px 8px !important;
}

/* ── Tabs ─────────────────────────────────────────────────────────────────── */
.custom-tabs .tab--selected {
  border-top: 2px solid var(--accent) !important;
  border-left: none !important;
  border-right: none !important;
  border-bottom: none !important;
  outline: none !important;
  box-shadow: none !important;
}

/* Dash also applies a selected class via React — cover both */
.custom-tabs .tab.tab--selected,
.custom-tabs [aria-selected="true"] {
  border-left: none !important;
  border-right: none !important;
  border-bottom: none !important;
  outline: none !important;
  box-shadow: none !important;
}

/* ── Inputs ───────────────────────────────────────────────────────────────── */
input[type="text"],
input[type="number"] {
  background-color: var(--surface) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: 6px !important;
  font-family: var(--font-ui) !important;
  outline: none !important;
  transition: border-color 0.2s;
}

input[type="text"]:focus,
input[type="number"]:focus {
  border-color: var(--accent) !important;
}

input::placeholder { color: var(--subtext) !important; }

/* ── Checklist ────────────────────────────────────────────────────────────── */
.dash-checklist label {
  color: var(--text) !important;
  font-family: var(--font-ui) !important;
  font-size: 13px !important;
}

/* ── AG Grid dark theme tweaks ────────────────────────────────────────────── */
.ag-theme-alpine-dark {
  --ag-background-color: var(--surface) !important;
  --ag-header-background-color: var(--paper) !important;
  --ag-odd-row-background-color: #161923 !important;
  --ag-border-color: var(--border) !important;
  --ag-foreground-color: var(--text) !important;
  --ag-header-foreground-color: var(--subtext) !important;
  font-family: var(--font-ui) !important;
}

/* ── Scrollbar ────────────────────────────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--subtext); }

/* ── Onboarding overlay card ──────────────────────────────────────────────── */
#onboarding-overlay > div > div {
  animation: tm26FadeIn 0.25s ease;
}

/* ── Brand header ─────────────────────────────────────────────────────────── */
.tm26-brand {
  font-family: var(--font-brand);
  font-size: 48px;
  color: var(--accent);
  letter-spacing: 4px;
  line-height: 1;
  margin: 0;
}

.tm26-tagline {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--subtext);
  letter-spacing: 3px;
  text-transform: uppercase;
  margin: 4px 0 0 2px;
}

/* ── Card panels ──────────────────────────────────────────────────────────── */
.tm26-card {
  background-color: var(--paper);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 20px;
  margin-bottom: 16px;
}

.tm26-card:hover {
  border-color: #3a3d4e;
  transition: border-color 0.2s;
}

/* ── Section labels ───────────────────────────────────────────────────────── */
.tm26-label {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--subtext);
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 8px;
  display: block;
}

/* ── Chip / card badge ────────────────────────────────────────────────────── */
.tm26-chip {
  background-color: var(--surface);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 5px 14px;
  font-size: 12px;
  font-family: var(--font-ui);
  color: var(--text);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: border-color 0.2s;
}

.tm26-chip:hover { border-color: var(--accent); }

.tm26-chip-remove {
  cursor: pointer;
  color: var(--subtext);
  font-size: 14px;
  line-height: 1;
  transition: color 0.15s;
}

.tm26-chip-remove:hover { color: var(--accent); }

/* ── tm26-input: used on dcc.Input (renders as wrapper div > input) ────────── */
.tm26-input {
  background-color: #252836;
  border: 1px solid var(--border);
  border-radius: 6px;
  width: 100%;
  box-sizing: border-box;
}

/* Target the actual <input> inside the dcc.Input wrapper */
.tm26-input input {
  background-color: #252836 !important;
  color: var(--text) !important;
  border: none !important;
  border-radius: 6px;
  padding: 8px 12px;
  width: 100%;
  min-height: 40px;
  font-size: 14px;
  font-family: var(--font-ui);
  box-sizing: border-box;
  outline: none;
}

.tm26-input:focus-within {
  border-color: var(--accent);
}

/* ── Buttons ──────────────────────────────────────────────────────────────── */
.tm26-btn {
  background-color: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 9px 22px !important;
  font-family: var(--font-ui) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  letter-spacing: 0.5px;
  transition: background-color 0.2s, transform 0.1s;
  white-space: nowrap;
}

.tm26-btn:hover { background-color: #d4651f !important; }
.tm26-btn:active { transform: scale(0.98); }

/* ── Stat boxes (for future use) ──────────────────────────────────────────── */
.tm26-stat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 12px 16px;
  font-family: var(--font-mono);
}

.tm26-stat-value {
  font-size: 22px;
  color: var(--text);
  font-weight: 500;
}

.tm26-stat-label {
  font-size: 10px;
  color: var(--subtext);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  margin-top: 2px;
}

/* ── Plotly chart container ───────────────────────────────────────────────── */
.js-plotly-plot .plotly .main-svg {
  border-radius: 6px;
}

/* ── No-data message ──────────────────────────────────────────────────────── */
.tm26-empty {
  color: var(--subtext);
  font-family: var(--font-mono);
  font-size: 13px;
  padding: 16px 0;
}

/* ── Login page ───────────────────────────────────────────────────────────── */
input[type="email"],
input[type="password"] {
  background-color: var(--surface) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: 6px !important;
  font-family: var(--font-ui) !important;
  outline: none !important;
  transition: border-color 0.2s;
}

input[type="email"]:focus,
input[type="password"]:focus {
  border-color: var(--accent) !important;
}

/* ── User menu (header) ───────────────────────────────────────────────────── */
#logout-btn:hover {
  border-color: var(--accent) !important;
  color: var(--text) !important;
}

/* ── Guest button ─────────────────────────────────────────────────────────── */
.tm26-guest-btn:hover {
  border-color: var(--subtext) !important;
  color: var(--text) !important;
}

/* ── Theme swatches (legacy — kept for safety) ────────────────────────────── */
.tm26-theme-swatch {
  transition: border-color 0.15s, transform 0.1s;
  box-sizing: border-box;
}
.tm26-theme-swatch:hover { transform: scale(1.12); }

/* ── Custom theme picker ──────────────────────────────────────────────────── */
.tm26-theme-picker {
  position: relative;
  display: inline-block;
}

.tm26-theme-trigger {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 6px 14px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  transition: border-color 0.2s;
  user-select: none;
  height: 36px;
  box-sizing: border-box;
}

.tm26-theme-trigger:hover { border-color: var(--accent); }

.tm26-picker-chevron {
  color: var(--subtext);
  font-size: 11px;
  line-height: 1;
  transition: transform 0.2s;
}

.tm26-theme-panel {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  background: var(--paper);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 6px;
  min-width: 64px;
  z-index: 1000;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
}


.tm26-theme-option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s;
}

.tm26-theme-option:hover { background: var(--surface); }

.tm26-theme-option--active {
  background: var(--accent-dim);
}

.tm26-theme-option--active span {
  color: var(--accent) !important;
  font-weight: 500;
}

/* ── Hamburger button — hidden on desktop ────────────────────────────────── */
.tm26-hamburger-btn {
  display: none;
  background: none;
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--text);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  padding: 4px 10px;
  transition: border-color 0.2s;
  flex-shrink: 0;
}

.tm26-hamburger-btn:hover { border-color: var(--accent); }

/* ── Mobile header — hamburger approach (≤768px) ─────────────────────────── */
@media (max-width: 768px) {
  /* Header: single flex row, branding left, controls right */
  .tm26-header {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    position: relative !important;
  }

  /* Branding: shrink TM/26 box */
  .tm26-header .tm26-header-brand-box {
    padding: 4px 6px !important;
    width: 50px !important;
  }

  .tm26-header .tm26-header-brand-box span {
    font-size: 32px !important;
  }

  /* Shrink THE/TECHNICAL/MACHINE text stack */
  .tm26-header .tm26-header-brand-text span {
    font-size: 13px !important;
    letter-spacing: 1px !important;
  }

  /* Gap between TM/26 box and text stack */
  .tm26-header .tm26-header-brand-outer {
    gap: 8px !important;
  }

  /* Right side: DATA THROUGH + hamburger icon in a row */
  .tm26-header-right {
    flex-direction: row !important;
    align-items: center !important;
    gap: 12px !important;
    flex-shrink: 0 !important;
  }

  /* DATA THROUGH stays visible */
  .header-right-row1 {
    display: flex !important;
    justify-content: flex-end !important;
  }

  /* THEME + user menu: drops down as hamburger panel — display toggled by JS */
  .header-right-row2 {
    position: absolute !important;
    top: calc(100% + 8px) !important;
    right: 0 !important;
    background: var(--paper) !important;
    border: 1px solid var(--border) !important;
    border-radius: 8px !important;
    padding: 20px !important;
    z-index: 200 !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 20px !important;
    min-width: 200px !important;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45) !important;
  }

  /* Hamburger button — visible on mobile */
  .tm26-hamburger-btn {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 44px !important;
    padding: 0 14px !important;
  }

  /* DATA THROUGH label — slightly smaller on mobile */
  #last-updated-label {
    font-size: 9px !important;
    letter-spacing: 1.5px !important;
  }

  /* Add button full width */
  .cmp-add-btn {
    width: 100% !important;
    padding: 10px !important;
  }

  /* Clear All button full width (overrides inline display:none — visibility still
     controlled by the toggle_clear_btn callback via inline style) */
  .cmp-clear-btn {
    width: 100% !important;
    margin-top: 0 !important;
  }
}

/* ── Accent color coverage ────────────────────────────────────────────────── */

/* Sign out button — always hardcoded orange, never themed */
#logout-btn:hover {
  background-color: #d4651f !important;
}

/* Tab active state — override Dash inline colors */
.custom-tabs .tab--selected {
  background-color: var(--accent) !important;
  color: #fff !important;
}

/* Checklist checkbox accent */
.dash-checklist input[type="checkbox"] {
  accent-color: var(--accent);
}

/* AG Grid selected row */
.ag-theme-alpine-dark .ag-row-selected {
  background-color: var(--accent-dim) !important;
}
.ag-theme-alpine-dark .ag-row-selected:hover {
  background-color: var(--accent-dim) !important;
}

/* Hyperlinks */
a { color: var(--accent); }
a:hover { color: var(--accent); opacity: 0.85; }

/* Dash loading spinner */
._dash-loading {
  border-top-color: var(--accent) !important;
}
.dash-spinner:before {
  border-top-color: var(--accent) !important;
}

/* Chip hover border — already set but ensure it uses variable */
.tm26-chip:hover { border-color: var(--accent) !important; }

/* ── Phase 5 nav ─────────────────────────────────────────────────── */
#tm26-nav {
  user-select: none;
}

/* Section pills row */
#tm26-nav > div:first-child {
  overflow-x: auto;
  scrollbar-width: none;
}
#tm26-nav > div:first-child::-webkit-scrollbar { display: none; }

/* Sub-tab row */
#nav-subtabs {
  overflow-x: auto;
  scrollbar-width: none;
  gap: 0;
}
#nav-subtabs::-webkit-scrollbar { display: none; }

/* Section pill hover */
[id*="section-pill"]:hover {
  opacity: 0.85;
}

/* Sub-tab button hover */
#nav-subtabs button:hover {
  color: var(--accent) !important;
}

/* ── Tiny screen: hide brand text, keep box ─────────────────────── */
@media (max-width: 375px) {
  .tm26-header-brand-text { display: none !important; }
  .tm26-header .tm26-header-brand-box span { font-size: 26px !important; }
  .tm26-header .tm26-header-brand-box { padding: 3px 5px !important; width: 40px !important; }
  #last-updated-label { font-size: 8px !important; letter-spacing: 1px !important; }
  /* Notification badge: keep visible but shrink slightly */
  #notif-badge { width: 12px !important; height: 12px !important; font-size: 8px !important; }
}

/* ── Mobile polish (375px) ───────────────────────────────────────── */
@media (max-width: 600px) {
  /* Stats bars go 2×2 */
  .tm26-stats-row {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }

  /* Reduce chart margins */
  .js-plotly-plot .plotly .main-svg {
    margin: 0 !important;
  }

  /* AG Grid: hide low-priority columns */
  .ag-header-cell[col-id="groupName"],
  .ag-cell[col-id="groupName"] {
    display: none !important;
  }

  /* Full-width cards */
  #tab-content > div > div {
    padding: 8px !important;
  }

  /* Tap targets ≥ 44px */
  button, .tm26-btn {
    min-height: 44px !important;
  }

  /* Stack flex rows */
  .tm26-flex-row {
    flex-direction: column !important;
  }

  /* Horizontal-scroll grid wrappers */
  .ag-root-wrapper {
    overflow-x: auto !important;
  }

  /* Reduce font sizes */
  .tm26-label {
    font-size: 10px !important;
  }

  /* Dashboard grid: single column */
  #tab-content .dashboard-grid {
    grid-template-columns: 1fr !important;
  }

  /* Nav pills: smaller padding */
  #tm26-nav button {
    padding: 6px 10px !important;
    font-size: 11px !important;
  }
}

/* ── Paper Trading Robinhood redesign ───────────────────────────── */

/* Portfolio card hover lift */
[id*="pt-portfolio-card"] {
  transition: box-shadow 0.15s, transform 0.15s;
}
[id*="pt-portfolio-card"]:hover {
  box-shadow: 0 4px 20px rgba(0,0,0,0.4) !important;
  transform: translateY(-1px);
}

/* Holdings row hover */
#pt-detail-holdings > div > div:hover {
  background-color: var(--surface) !important;
  border-radius: 6px;
}

/* Leaderboard row hover */
#ptlb-table-container > div > div:not(:first-child):hover {
  background-color: var(--surface) !important;
  border-radius: 4px;
}

/* Details / summary (trade section) */
details > summary:hover {
  opacity: 0.8;
}

/* Pill button group */
.pt-pill-group {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

/* ── Audit 3: comprehensive 375px mobile fixes ──────────────────── */
@media (max-width: 480px) {

  /* ── Global ─────────────────────────────────────────────────────── */
  /* Prevent any element overflowing the viewport.
     Use overflow-x: clip (not hidden) so we don't create a scroll
     container on body — overflow-x: hidden breaks position: sticky for
     descendants on iOS Safari because scrolling effectively happens on
     <html>, not body. clip gives the same visual clipping without that
     side-effect. */
  body, #react-entry-point, .dash-loading-callback-dag { overflow-x: clip !important; }

  /* Reduce global padding */
  div[style*="padding: 24px"] { padding: 12px !important; }

  /* Card padding shrink */
  #tab-content > div > div[style*="borderRadius"] { padding: 12px !important; }

  /* ── Login page ─────────────────────────────────────────────────── */
  #login-card {
    padding: 24px 16px !important;
    margin: 12px !important;
  }

  /* ── Dashboard ──────────────────────────────────────────────────── */
  /* Market movers: stack columns */
  #tab-content .mover-grid {
    grid-template-columns: 1fr !important;
  }

  /* Trending sets: smaller cards */
  #tab-content .trending-row { gap: 8px !important; }
  #tab-content .trending-row > a > div { min-width: 120px !important; padding: 10px !important; }

  /* Overview stat bar: 2-col */
  #tab-content .overview-stats {
    grid-template-columns: 1fr 1fr !important;
  }

  /* ── Comparison panel ───────────────────────────────────────────── */
  /* Date range pickers: stack */
  #comparison-date-row {
    flex-direction: column !important;
    gap: 8px !important;
  }

  /* Benchmark section: full width */
  #benchmark-section { flex-wrap: wrap !important; }

  /* ── Set Browser ────────────────────────────────────────────────── */
  /* Set controls: stack vertically */
  #set-controls-row {
    flex-direction: column !important;
    gap: 8px !important;
  }

  /* Card grid: 3 columns max on 375px */
  #set-card-grid {
    grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)) !important;
  }

  /* ── Index Builder ──────────────────────────────────────────────── */
  /* Index weight inputs: full width in column */
  .index-card-row {
    flex-wrap: wrap !important;
  }
  .index-weight-input {
    width: 70px !important;
    min-width: 70px !important;
  }

  /* ── Watchlists ─────────────────────────────────────────────────── */
  /* Watchlist action bar: stack */
  #wl-action-bar {
    flex-direction: column !important;
    align-items: stretch !important;
  }
  #wl-selector { width: 100% !important; }

  /* ── Paper Trading list ─────────────────────────────────────────── */
  /* Portfolio cards: single column */
  #pt-view-list .pt-portfolio-grid {
    grid-template-columns: 1fr !important;
  }

  /* PT header value: smaller */
  #pt-portfolio-value-header {
    font-size: 28px !important;
  }

  /* PT time pills: wrap */
  #pt-time-pills { flex-wrap: wrap !important; gap: 4px !important; }

  /* PT holdings rows: stack price to right */
  #pt-detail-holdings .holding-row { padding: 8px 0 !important; }

  /* PT leaderboard table: hide rank column on tiny screens */
  #ptlb-table-container .lb-col-set { display: none !important; }

  /* ── Fantasy ────────────────────────────────────────────────────── */
  /* League cards: single column */
  #fantasy-leagues-grid {
    grid-template-columns: 1fr !important;
  }

  /* Draft room: stack columns */
  #draft-room-layout {
    flex-direction: column !important;
  }

  /* ── Card page (/card/{id}) ─────────────────────────────────────── */
  /* Card header: stack image above info */
  #card-page-header {
    flex-direction: column !important;
    align-items: flex-start !important;
  }
  #card-page-header img { width: 140px !important; margin-bottom: 12px !important; }

  /* Card stats grid: 2 columns */
  #card-page-stats-grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
  }

  /* Similar cards: 3 columns */
  #card-page-similar-grid {
    grid-template-columns: repeat(3, 1fr) !important;
  }

  /* Range pills: smaller */
  #card-page-range-pills button { padding: 5px 10px !important; font-size: 11px !important; }

  /* ── Set page (/set/{id}) ───────────────────────────────────────── */
  #set-page-stats { flex-wrap: wrap !important; }
  #set-page-stats > div { min-width: calc(50% - 6px) !important; flex: none !important; }

  /* Set card grid: tighter */
  #set-page-card-grid {
    grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)) !important;
  }

  /* ── Profile page ───────────────────────────────────────────────── */
  #profile-page-header { flex-wrap: wrap !important; }

  /* ── Community tab ──────────────────────────────────────────────── */
  #community-wl-grid, #community-idx-grid {
    grid-template-columns: 1fr !important;
  }
}

/* ── Light-accent theme overrides (yellow, pink) ──────────────────────────── */
/* Ensure text on accent-colored backgrounds is dark and readable             */

body[data-theme="yellow"] .nav-pill.active,
body[data-theme="yellow"] .section-pill.active,
body[data-theme="yellow"] [style*="backgroundColor: var(--accent)"],
body[data-theme="yellow"] [style*="background-color: var(--accent)"] {
  color: #1A1A1A !important;
}

body[data-theme="pink"] .nav-pill.active,
body[data-theme="pink"] .section-pill.active,
body[data-theme="pink"] [style*="backgroundColor: var(--accent)"],
body[data-theme="pink"] [style*="background-color: var(--accent)"] {
  color: #1A1A1A !important;
}

/* Inline-style overrides for Dash components that set color:#fff on var(--accent) bg */
body[data-theme="yellow"] button[style*="background-color: var(--accent)"],
body[data-theme="yellow"] button[style*="backgroundColor: var(--accent)"],
body[data-theme="yellow"] span[style*="background-color: var(--accent)"],
body[data-theme="yellow"] span[style*="backgroundColor: var(--accent)"],
body[data-theme="yellow"] div[style*="background-color: var(--accent)"],
body[data-theme="yellow"] div[style*="backgroundColor: var(--accent)"] {
  color: #1A1A1A !important;
}

body[data-theme="pink"] button[style*="background-color: var(--accent)"],
body[data-theme="pink"] button[style*="backgroundColor: var(--accent)"],
body[data-theme="pink"] span[style*="background-color: var(--accent)"],
body[data-theme="pink"] span[style*="backgroundColor: var(--accent)"],
body[data-theme="pink"] div[style*="background-color: var(--accent)"],
body[data-theme="pink"] div[style*="backgroundColor: var(--accent)"] {
  color: #1A1A1A !important;
}

/* ── Draft Room: cosmetic band background ─────────────────────────────────
   Visual styling for the band lives here. Sticky/flex positioning is
   handled by the fullscreen-scoped block further down. */
.draft-sticky-band {
  background-color: var(--bg);
  padding: 10px 12px 4px;
  margin: 0 0 12px;
  box-shadow: 0 6px 12px -8px rgba(0, 0, 0, 0.6);
}

/* Column-header row — sticks to the top of the wrapper when its tbody
   scrolls internally. IMPORTANT: with border-collapse: collapse, sticky
   on a <thead> or <tr> is ignored by Chromium/Safari — only <th>/<td>
   cells can be sticky. So apply sticky per-cell, with a box-shadow for
   the bottom divider (a real border-bottom would scroll away). */
.draft-avail-sticky-head th {
  position: sticky;
  top: 0;
  z-index: 5;
  background-color: var(--paper);
  box-shadow: 0 2px 0 var(--border);
  /* Force a thin row — inline padding/lineHeight gets overridden by
     browser defaults on <th>, so lock it down here with specificity. */
  padding: 0 8px !important;
  height: 18px !important;
  line-height: 1 !important;
  vertical-align: middle;
}
.draft-avail-sticky-head th button {
  padding: 0 !important;
  line-height: 1 !important;
  height: auto !important;
}

/* Slot filter pills (inline variant) — sits inside the filter row and
   scrolls horizontally. touch-action: pan-x makes vertical swipes pass
   through to the parent scroll context instead of being captured by the
   pills' overflow-x: auto. */
.draft-slot-pills-inline {
  touch-action: pan-x;
}
.draft-slot-pills-inline > div { touch-action: pan-x; }

/* ── Draft Room: fullscreen shell ──────────────────────────────────────────
   When the user enters the draft room (fantasy-view-store === 'draft-room'),
   a clientside callback toggles `body.draft-room-fullscreen`. That class
   gates a fixed-viewport layout: the whole shell is position: fixed +
   flex column, every section above the table is its natural height, and
   the table wrapper takes the remaining height with internal scroll. No
   page scroll at all — only the rows inside the wrapper move. */
body.draft-room-fullscreen {
  overflow: hidden;
  overscroll-behavior: none;
}
body.draft-room-fullscreen .draft-room-shell {
  position: fixed;
  inset: 0;
  z-index: 10;
  display: flex;
  flex-direction: column;
  padding: 10px;
  background-color: var(--bg);
  overflow: hidden;
}
/* Tighten the sticky band's own paddings/margins in fullscreen mode so
   the table gets back the ~25-30px the original layout was eating. */
body.draft-room-fullscreen .draft-sticky-band {
  padding: 6px 10px 0;
  margin: 0 0 4px;
}
/* Ticker pills: trim height (ESPN-style compact cards). */
body.draft-room-fullscreen #draft-order-ticker > div {
  padding: 3px 6px !important;
}
body.draft-room-fullscreen #draft-order-ticker > div > div {
  padding: 1px 5px !important;
  min-width: 58px !important;
}
body.draft-room-fullscreen .draft-panel-container {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
body.draft-room-fullscreen .draft-tab-panel.draft-tab-active {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}
body.draft-room-fullscreen #draft-avail-filter-row,
body.draft-room-fullscreen .draft-collapsible {
  flex: 0 0 auto;
}
body.draft-room-fullscreen .draft-avail-wrapper {
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: auto;
  overflow-y: auto;
}
body.draft-room-fullscreen #draft-roster-panel.draft-tab-active,
body.draft-room-fullscreen #draft-board-container.draft-tab-active {
  overflow-y: auto;
  overflow-x: hidden;
}

/* Bottom tab nav (ESPN-style): sits at the bottom of the shell with a
   top border instead of the original bottom border. Active indicator
   moves to top (above the label) so the cue points at the content above
   the bar, not at the page edge below. */
body.draft-room-fullscreen .draft-tabbar-bottom {
  flex: 0 0 auto;
  border-top: 2px solid var(--border);
  border-bottom: none;
  background-color: var(--paper);
  margin: 6px -10px -10px;  /* bleed to shell padding edges */
  padding: 0 6px;
}
body.draft-room-fullscreen .draft-tabbar-bottom .draft-tab-btn {
  border-top: 2px solid transparent;
  border-bottom: 2px solid transparent;
  margin-top: -2px;
  margin-bottom: 0;
  padding: 9px 8px;
  font-size: 11px;
}
body.draft-room-fullscreen .draft-tabbar-bottom .draft-tab-btn-active {
  border-top-color: var(--accent) !important;
  border-bottom-color: transparent !important;
}

/* Commissioner gear menu — <details>/<summary> popover. Click the gear
   to reveal Pause/Resume/Rewind/Reset. Zero JS. */
.draft-comm-menu {
  flex-shrink: 0;
  position: relative;
}
.draft-comm-menu details { position: relative; }
.draft-comm-summary {
  cursor: pointer;
  padding: 5px 10px;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--text);
  font-size: 16px;
  line-height: 1;
  list-style: none;
  user-select: none;
  display: inline-block;
}
.draft-comm-summary::-webkit-details-marker { display: none; }
.draft-comm-summary::marker { content: ""; }
.draft-comm-summary:hover { background: var(--surface); }
.draft-comm-menu details[open] .draft-comm-summary {
  background: var(--surface);
  border-color: var(--accent);
}
.draft-comm-popup {
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  background-color: var(--paper);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 8px;
  z-index: 200;
  min-width: 180px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.5);
}
/* Buttons inside the popup — let the render callback's inline-block
   display still hide individual buttons, but stack the visible ones. */
.draft-comm-popup button { width: 100%; text-align: left; }

/* Inline slot-pills (filter row): smaller padding, no underline, no
   sticky background. Replaces the old standalone pills row. */
.draft-slot-pills-inline button {
  padding: 4px 10px !important;
  font-size: 11px !important;
}

/* Status placeholders between the filter row and the table — only
   take space when they have content. Eliminates ~30px of dead vertical
   space when the panel is idle.

   :empty alone isn't enough because many callbacks return html.Div()
   for the "no content" state, which renders as <div><div></div></div>
   — :empty doesn't match (the outer has a child), so the panel keeps
   margin-bottom. The :has() variant catches the wrapped-empty case. */
.draft-collapsible:empty,
.draft-collapsible:has(> div:empty:only-child) {
  display: none;
}
.draft-collapsible:not(:empty):not(:has(> div:empty:only-child)) {
  margin-bottom: 6px;
}

/* (Mobile column hide removed — wrapper is back to overflow-x: auto
   so the table scrolls horizontally on narrow viewports instead of
   clipping columns.) */

/* ── Fantasy section loading overlay (Enter League etc.) ────────────────── */
@keyframes fantasyLoadingSpin {
  to { transform: rotate(360deg); }
}
/* Full-viewport overlay so the spinner is visible immediately, regardless
   of where the user is scrolled in the previous (pre-navigation) content.
   Dimmed backdrop occludes the stale view. */
.fantasy-loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background-color: rgba(10, 12, 18, 0.78);
  backdrop-filter: blur(2px);
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  color: var(--text);
  /* display: flex applied inline by the clientside show callback */
}
.fantasy-loading-spinner {
  width: 42px;
  height: 42px;
  border: 3px solid rgba(255, 255, 255, 0.12);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: fantasyLoadingSpin 0.8s linear infinite;
}
.fantasy-loading-text {
  color: var(--text);
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* Draft room loading overlay — same look as the fantasy one, but scoped
   to the draft-room-shell rather than full-viewport. Hides the empty
   header/table while the first state-cache fetch lands. The .hidden
   class is toggled by a clientside callback once draft-state-cache.data
   resolves. */
.draft-loading-overlay {
  position: absolute;
  inset: 0;
  z-index: 20;
  background-color: var(--bg);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  color: var(--text);
}
.draft-loading-overlay.hidden { display: none; }

/* ── Roster slot: Insufficient Funds (toploader placeholder) ───────────── */
.draft-slot-no-funds {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  border: 2px dashed #ff6b6b;
  background-color: rgba(255, 107, 107, 0.05);
  opacity: 0.95;
}
.draft-slot-no-funds .toploader-icon {
  /* Generic Ultra Pro toploader silhouette — slightly translucent
     rectangle with rounded corners and a faint inner border. */
  width: 40px;
  height: 56px;
  border-radius: 4px;
  flex-shrink: 0;
  background:
    linear-gradient(135deg,
      rgba(255, 255, 255, 0.05) 0%,
      rgba(255, 255, 255, 0.02) 100%);
  border: 1px solid rgba(255, 255, 255, 0.15);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.04);
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ── "Draft complete" banner — big, hard to miss ────────────────────────── */
@keyframes draftCompletePulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0.0); }
  50%      { box-shadow: 0 0 0 12px rgba(74, 222, 128, 0.15); }
}
.draft-complete-banner {
  display: flex;
  align-items: center;
  gap: 16px;
  background: linear-gradient(135deg,
                rgba(74, 222, 128, 0.15) 0%,
                rgba(74, 222, 128, 0.05) 100%);
  border: 2px solid #4ade80;
  border-radius: 12px;
  padding: 16px 20px;
  animation: draftCompletePulse 2.4s ease-in-out infinite;
}

/* Lock the available-cards panel when draft is complete — dim it
   and disable all pointer events so users can't click DRAFT buttons
   even briefly. Server already rejects post-complete picks but we
   want UX to make it obviously over too. */
.draft-room-complete #draft-avail-panel,
.draft-room-complete #draft-avail-filter-row {
  opacity: 0.45;
  pointer-events: none;
  filter: grayscale(40%);
}

/* ── Draft Room: Unified tab bar (all viewports) ──────────────────────────── */
/* Always single-row. Buttons stretch on wide screens (flex: 1 from below).
   On narrow screens, switch to natural-width + horizontal scroll via the
   mobile media query — prevents vertical wrapping (height jumps on resize). */
.draft-tabbar {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--border);
  margin-bottom: 0;
  background-color: var(--bg);
  flex-wrap: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;  /* Firefox */
}
.draft-tabbar::-webkit-scrollbar { display: none; }

.draft-tab-btn {
  flex: 1;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  color: var(--subtext);
  padding: 7px 10px;
  cursor: pointer;
  font-size: 12px;
  font-family: var(--font-mono);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
  transition: color 0.15s, background-color 0.15s;
}
.draft-tab-btn:hover {
  color: var(--text);
  background-color: rgba(255, 255, 255, 0.02);
}
.draft-tab-btn-active {
  color: var(--accent) !important;
  border-bottom-color: var(--accent) !important;
  font-weight: 700 !important;
}

/* Panel container: only the active tab renders visibly */
.draft-tab-panel { display: none; }
.draft-tab-panel.draft-tab-active { display: block; }

/* On narrow screens: keep tab labels readable, allow horizontal scroll */
@media (max-width: 600px) {
  .draft-tabbar { overflow-x: auto; scrollbar-width: none; }
  .draft-tab-btn {
    padding: 10px 12px;
    font-size: 11px;
    flex: 0 0 auto;
  }
  #draft-avail-panel .card-table-wrap { overflow-x: auto; }
  #draft-avail-panel .dark-dropdown,
  #draft-avail-panel .Select-control { min-width: 0 !important; }
  #draft-avail-panel table td:nth-child(2) div {
    max-width: 120px !important;
  }
}

/* ── On-the-clock visual flash ─────────────────────────────────────────────── */
@keyframes draftYourTurnFlash {
  0%   { box-shadow: 0 0 0 0 rgba(232, 114, 42, 0.0); }
  20%  { box-shadow: 0 0 0 6px rgba(232, 114, 42, 0.55); }
  60%  { box-shadow: 0 0 0 4px rgba(232, 114, 42, 0.25); }
  100% { box-shadow: 0 0 0 0 rgba(232, 114, 42, 0); }
}
.draft-yourturn-flash {
  animation: draftYourTurnFlash 1.4s ease-out 1;
}

/* ── Full-screen draft room ────────────────────────────────────────────────── */
/* When the draft room is the active view, hide the app header AND the
   section-nav row (Analytics / Paper Trading / Fantasy + sub-tabs) so
   the draft fills the viewport. The draft room has its own
   "← Back to League" button for nav-out.
   !important needed because both elements use inline display styles. */
body.draft-room-fullscreen .tm26-header { display: none !important; }
body.draft-room-fullscreen #tm26-nav    { display: none !important; }
