.weather-ear {
  max-width: 230px;
  border: 1px solid var(--rule);
  padding: 8px 10px;
  font: 11px/1.5 "IBM Plex Mono", monospace;
}
.weather-ear .ear-label {
  display: block;
  color: var(--faded);
  font-size: 9px;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.weather-ear b { font-weight: 600; }
.rail-panel {
  border: 1px solid var(--ink);
  padding: 12px;
  background: var(--card);
  margin-bottom: 14px;
}
.rail-panel .rail-head button {
  border: 0;
  background: transparent;
  color: var(--navy);
  cursor: pointer;
  font: 9px "IBM Plex Mono", monospace;
  text-transform: uppercase;
}
.weather-panel #weather-detail { font: 12px/1.7 "IBM Plex Mono", monospace; }
.weather-big { display: block; font-size: 30px; font-weight: 600; }
.quote-widget {
  min-height: 78px;
  border-bottom: 1px solid var(--rule);
  overflow: hidden;
}
.quote-widget:last-child { border-bottom: 0; }
.quote-widget .tradingview-widget-container { min-height: 78px; }
/* TradingView single-ticker draws its own copyright line we do not need in the rail. */
.quote-widget .tradingview-widget-copyright { display: none; }
.historical-quotes p { display:grid; grid-template-columns:1fr auto; gap:2px 12px; padding:10px 0; margin:0; border-bottom:1px solid var(--rule); font:11px "IBM Plex Mono",monospace; }
.historical-quotes b { font-size:14px; }
.historical-quotes small { grid-column:1/-1; color:var(--faded); font-size:8px; text-align:right; text-transform:uppercase; }
.local-score-strip { border-top:3px double var(--ink); border-bottom:3px double var(--ink); padding:12px 0; margin:8px 0 12px; }
.local-score-heading { display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:8px; }
.local-score-heading .kicker { margin:0; }
.local-score-heading strong { font:600 11px "IBM Plex Mono",monospace; text-transform:uppercase; color:var(--ink); }
.local-games { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:8px; }
.local-games>p { margin:0; color:var(--faded); font:11px "IBM Plex Mono",monospace; }
.local-game { display:block; border:1px solid var(--rule); background:var(--card); padding:8px 10px; }
.local-game-meta { display:block; color:var(--red); font:9px "IBM Plex Mono",monospace; text-transform:uppercase; margin-bottom:4px; }
.local-game strong { display:flex; align-items:center; gap:8px; font:600 12px "IBM Plex Mono",monospace; }
.local-game strong span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.local-game img { width:30px; height:30px; flex:0 0 30px; object-fit:contain; }
.local-game strong b { margin-left:auto; font-size:16px; }
.desk-links { display:flex; flex-wrap:wrap; gap:6px; overflow:visible; padding:2px 0 10px; }
.top-desk-links { border-bottom:1px solid var(--rule); margin-bottom:10px; }
.desk-links-label { flex:0 0 auto; align-self:center; color:var(--red); font:700 9px "IBM Plex Mono",monospace; text-transform:uppercase; }
.desk-links a { display:inline-flex; align-items:center; gap:6px; flex:0 0 auto; border:1px solid var(--rule); background:var(--card); padding:5px 8px; font:600 9px "IBM Plex Mono",monospace; text-transform:uppercase; transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease; }
.desk-links a:hover,.desk-links a:focus-visible { border-color:var(--red); box-shadow:0 2px 9px color-mix(in srgb,var(--red) 35%,transparent); transform:translateY(-1px) scale(1.03); color:var(--ink); }
.desk-links a:active { transform:translateY(0) scale(.98); }
.desk-links img { width:20px; height:20px; border-radius:4px; object-fit:contain; background:#fff; }
.right-rail .team img { filter:grayscale(1); opacity:.42; }
.right-rail .scoreboard .league h3 { color:var(--faded); font-weight:500; }
.right-rail .scoreboard .team span { color:var(--faded); font-weight:400; }
.right-rail .scoreboard .team b { color:var(--faded); font-size:15px; font-weight:600; }
.right-rail .scoreboard .game-status { color:var(--faded); opacity:1; font-weight:500; }
.right-rail .scoreboard .team:hover span,
.right-rail .scoreboard .team:hover b,
.right-rail .scoreboard .game-status:hover { color:var(--ink); opacity:1; }
.market-desk { margin-top:18px; padding:24px 0 34px; }
.market-desk .desk-head h2 { font-size:clamp(28px,3vw,42px); }
.market-grid { grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px; align-items:stretch; }
.market-card { position:relative; min-height:230px; overflow:hidden; padding:18px; cursor:pointer; transition:min-height .2s ease,box-shadow .2s ease,transform .2s ease; }
.market-card:focus-visible { outline:3px solid var(--navy); outline-offset:2px; }
.market-card:hover,.market-card:focus,.market-card.is-expanded { grid-column:span 2; min-height:340px; box-shadow:8px 8px 0 rgba(0,0,0,.12); z-index:2; }
.market-card-chart { position:absolute; inset:0; width:100%!important; height:100%!important; opacity:.2; transition:opacity .2s ease; }
.market-card:hover .market-card-chart,.market-card:focus .market-card-chart,.market-card.is-expanded .market-card-chart { opacity:.62; }
.market-card-content { position:relative; z-index:1; min-height:100%; display:flex; flex-direction:column; pointer-events:none; }
.market-card h3 { font-size:clamp(22px,2vw,30px); margin-bottom:14px; }
.market-card p { padding:5px 0; margin:0; border-bottom:1px solid var(--rule); font-size:11px; }
/* The value sits on top of the chart canvas, so it needs a plate behind it to
   stay legible. That plate must be the card colour, not a hardcoded near-white:
   in dark mode --ink is off-white, and white-on-white made every number in this
   grid invisible. */
.market-card p b { font-size:14px; background:var(--card); color:var(--ink); padding:2px 4px; }
.market-card-hint { margin-top:auto; padding-top:18px; color:var(--faded); font:8px "IBM Plex Mono",monospace; text-transform:uppercase; }
.edition-menu nav.full-menu {
  width: min(760px, calc(100vw - 36px));
  padding: 10px;
}
.mast-menu summary { display:inline-block; padding:10px 18px; border:2px solid var(--red); background:var(--red); color:#fff; box-shadow:3px 3px 0 var(--ink); font:700 11px "IBM Plex Mono",monospace; letter-spacing:.14em; text-transform:uppercase; }
.mast-menu summary:hover { background:var(--navy); border-color:var(--navy); }
.mast-menu nav { top:calc(100% + 10px); }
.dateline-account { justify-self:end; font-weight:600; }
.dateline-account a { padding:4px 6px; }
.full-menu > .menu-top { display: inline-block; border: 0; font-weight: 700; }
.menu-directory { border-top: 2px solid var(--ink); margin-top: 6px; padding-top: 6px; }
.menu-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 12px; }
.menu-group { min-width: 0; }
.menu-group h3 { margin: 8px 0 2px; padding: 5px 8px; color: var(--red); font: 700 9px "IBM Plex Mono", monospace; letter-spacing: .14em; text-transform: uppercase; }
.menu-group a { display:block; padding: 6px 8px !important; border-bottom: 1px dotted var(--rule) !important; font-size: 11px; text-transform: none; letter-spacing: 0; }

@media (max-width: 700px) {
  .masthead { grid-template-columns: 1fr auto; }
  .menu-grid { grid-template-columns: 1fr 1fr; }
  .local-score-heading { display:block; }
  .local-score-heading strong { display:block; margin-top:3px; }
  .market-grid { grid-template-columns:1fr; }
  .market-card:hover,.market-card:focus,.market-card.is-expanded { grid-column:span 1; }
}
@media (min-width:701px) and (max-width:1000px) { .market-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }

/* Video Player Panel */
.video-panel { background: #07090d; border-color: #243040; }
.video-filters { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 0; border-bottom: 1px solid #243040; margin-bottom: 10px; }
.video-filter { display: inline-flex; align-items: center; gap: 4px; font: 600 9px "IBM Plex Mono", monospace; color: #9aa4b5; text-transform: uppercase; cursor: pointer; }
.video-filter input[type="checkbox"] { width: 12px; height: 12px; accent-color: #f04452; cursor: pointer; }
.video-filter:hover { color: #fff; }
.video-player-container { width: 100%; }
.video-card { display: block; position: relative; width: 100%; aspect-ratio: 16/9; background: #000; border-radius: 4px; overflow: hidden; text-decoration: none; }
.video-thumb { width: 100%; height: 100%; object-fit: cover; display: block; }
.video-play-btn { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 48px; height: 48px; background: rgba(0,0,0,0.7); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 18px; pointer-events: none; }
.video-card:hover .video-play-btn { background: #f04452; }
.video-info { position: absolute; bottom: 0; left: 0; right: 0; padding: 8px 10px; background: linear-gradient(transparent, rgba(0,0,0,0.85)); color: #fff; }
.video-source { display: block; font: 700 9px "IBM Plex Mono", monospace; color: #f04452; text-transform: uppercase; letter-spacing: 0.1em; }
.video-title { display: block; font: 500 11px "IBM Plex Mono", monospace; color: #ccc; margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.video-loading, .video-empty { display: flex; align-items: center; justify-content: center; padding: 30px 10px; color: #5d6878; font: 600 12px "IBM Plex Mono", monospace; }

/* Local News Desk */
.local-news-desk { border-top: 3px double var(--ink); padding-top: 14px; margin-top: 14px; }
.local-news-ticker { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.local-news-item { border: 1px solid var(--rule); background: var(--card); padding: 10px 12px; }
.local-news-item h4 { margin: 0 0 4px; font: 600 13px/1.3 "Source Serif 4", serif; }
.local-news-item h4 a { color: var(--ink); text-decoration: none; }
.local-news-item h4 a:hover { color: var(--red); }
.local-news-source { font: 600 9px "IBM Plex Mono", monospace; color: var(--faded); text-transform: uppercase; letter-spacing: 0.08em; }
.local-news-loading, .local-news-empty { grid-column: 1/-1; text-align: center; padding: 20px; color: var(--faded); font: 600 12px "IBM Plex Mono", monospace; }

@media (max-width: 700px) {
  .video-filters { gap: 4px; }
  .video-filter { font-size: 8px; }
  .local-news-ticker { grid-template-columns: 1fr; }
}

/* Top ticker tape is the TradingView ticker-tape widget; keep the old rail height. */
.market-tape { overflow: hidden; }
.market-tape #tv-ticker-tape { min-height: 46px; }
.market-tape .tradingview-widget-copyright { display: none; }

/* Caption under the front-page player: the clip currently on air. Matches the
   related-coverage links it stands in for. */
.now-playing {
  display: block;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid var(--rule);
  font: 12px/1.45 "IBM Plex Mono", monospace;
}
.now-playing b {
  display: block;
  color: var(--red);
  font-size: 9px;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.now-playing span { display: block; font-family: "Source Serif 4", Georgia, serif; font-size: 14px; }
.now-playing:hover span { text-decoration: underline; }
