/* base.css */
/* Design tokens, the phone-width column, the site header. */

/* Design tokens come from the mobile app (lib/utils/colors.dart) and its widgets. */
:root {
  --bg: #0a0a0a;
  --card: #1a1a1a;
  --card-2: #242f3d;
  --text: #ffffff;
  --white70: rgba(255, 255, 255, 0.7);
  --white54: rgba(255, 255, 255, 0.54);
  --grey: #757575;
  --accent: #f86407;
  --accent-soft: rgba(248, 100, 7, .78); /* links and quiet accents: See more */
  --accent-tint: rgba(248, 100, 7, .34); /* badges: the number rail */
  --slide: .45s cubic-bezier(.22, .8, .24, 1); /* the header, the date row and the sticky league headings move together with this */
  --fs-label: 11px; --fs-body: 13px; --fs-figure: 14px; --fs-head: 16px; /* the type scale for captions, text, figures and headings */
  --accent-faint: rgba(248, 100, 7, 0.2);
  --green: #2ab976;
  --red: #e24b4a;
  --nav-h: 68px;
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html { -webkit-text-size-adjust: 100%; background: var(--bg); }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 14px/1.35 Roboto, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; }
h1, h2, h3 { margin: 0; font-weight: 500; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.muted { color: var(--grey); }

/* Phone-width column, like the app */
.app {
  max-width: 560px;
  min-height: 100vh;
  margin: 0 auto;
  background: transparent; /* the column sits on the page colour, no visible panel */
  position: relative;
  overflow-x: hidden;
  overflow-x: clip; /* clip, not hidden: hidden would make the column a scroll container and break the sticky match bar */
  padding-bottom: env(safe-area-inset-bottom, 0px);
}

/* Site header: brand, always visible */
/* frosted: the page passes beneath it, and a faint warm glow sits behind the logo */
.site-head { position: sticky; top: 0; z-index: 50; height: 52px; background: radial-gradient(200px 64px at 44px 50%, rgba(248,100,7,.12), transparent 72%), rgba(14,14,14,.8); backdrop-filter: blur(14px) saturate(1.4); -webkit-backdrop-filter: blur(14px) saturate(1.4); }
/* The scale the pages share: text sizes (11 labels, 12 small, 13 body in tiles, 14 text, 16 lead, 18 title) and the corner of a tile. New styles use these. */
:root { --fs-label: 11px; --fs-small: 12px; --fs-body: 13px; --fs-text: 14px; --fs-lead: 16px; --fs-title: 18px; --r-tile: 10px; --r-card: 12px; }
html { --head-h: 52px; font-variant-numeric: tabular-nums; } /* digits of one width: times, scores and odds line up and do not jitter */
/* phones: the header moves with the scroll, 1:1, up to its own height and back (--o, static/js/header.js); only when the finger lifts does it settle (html.head-snap) */
@media (max-width: 899px) {
  .site-head { transform: translateY(calc(min(var(--o, 0px), 52px) * -1)); will-change: transform; }
  html.head-snap .site-head { transition: transform var(--slide); }
}
@media (prefers-reduced-motion: reduce) { .site-head { transition: none; } }
.site-head-in { height: 100%; max-width: 1024px; margin: 0 auto; padding: 0 16px; display: flex; align-items: center; }
.brand { display: inline-flex; align-items: center; gap: 8px; }
.brand-mark { display: block; width: 32px; height: 32px; border-radius: 8px; }
.brand-name { font-size: 20px; font-weight: 700; letter-spacing: -.2px; }
.brand-name b { color: var(--accent); font-weight: 700; }
.brand-name i { font-style: normal; font-size: .72em; font-weight: 400; color: var(--white54); opacity: .85; margin-left: 1px; }

/* a sideways swipe is for the page (match tabs), not the browser's back / forward gesture */
html, body { overscroll-behavior-x: none; }

/* lists.css */
/* Day lists: date bar, calendar, league headers, fixture tiles, empty states, left column, loading skeleton. */

/* Date bar: LIVE button + previous / date dropdown / next (web variant of the app's date strip) */
.date-bar { padding: 0 0 12px; }
.pills { display: flex; gap: 6px; padding: 6px 12px 4px; }
.pill {
  flex: 1 1 auto; justify-content: center; display: inline-flex; align-items: center; gap: 4px; height: 32px; padding: 0 8px; border-radius: 8px;
  background: var(--card); color: var(--white70); font-size: 11px; font-weight: 700; letter-spacing: .4px; white-space: nowrap;
}
.pill:hover { color: #fff; }
.pill.active { background: var(--accent); color: #fff; }
.pill .badge {
  min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: rgba(255,255,255,.16); color: #fff;
  font-size: 9px; font-weight: 700; line-height: 16px; text-align: center; letter-spacing: 0;
}
.pill.active .badge { background: rgba(255,255,255,.25); }
.date-nav { position: relative; display: flex; align-items: center; gap: 6px; padding: 12px 12px 0; } /* room above for the Live badge that overhangs its button; the date panel opens across this whole row */
/* The date control: one pill, previous / date / next. The date opens the calendar panel; Live sits beside it. */
.dn-pill { flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; height: 42px; } /* fills the row after Live; ‹ date › are three separate tiles, the date tile stretches */
.dn-step { flex: none; width: 42px; height: 42px; background: var(--card); display: flex; align-items: center; justify-content: center; border-radius: 12px; color: var(--white70); transition: background .15s, color .15s, transform .12s; }
.dn-step svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
a.dn-step:hover { color: #fff; }
a.dn-step:active { background: rgba(255,255,255,.12); transform: scale(.94); }
.dn-step.off { opacity: .25; }
.date-menu { position: static; flex: 1; min-width: 0; } /* static: the panel is placed against the whole date row, not the pill */
.date-menu summary {
  list-style: none; cursor: pointer; height: 42px; min-width: 132px; padding: 0 14px; border-radius: 12px; background: var(--card); color: #fff; font-size: 15px; font-weight: 400; white-space: nowrap;
  display: flex; align-items: center; justify-content: center; gap: 8px; user-select: none; outline: none; -webkit-tap-highlight-color: transparent; transition: background .15s;
}
.date-menu summary:active, .date-menu[open] summary { background: rgba(255,255,255,.12); }
.date-menu summary::-webkit-details-marker { display: none; }
.date-menu summary svg { width: 17px; height: 17px; flex: none; fill: none; stroke: var(--accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.date-menu .dm-id { font-size: 11px; font-weight: 400; color: var(--grey); }
.dm-panel {
  position: absolute; z-index: 30; left: 12px; right: 12px; max-width: 400px; margin: 0 auto; top: calc(100% + 8px);
  background: #2a2a2a; border-radius: 18px; box-shadow: 0 20px 50px rgba(0,0,0,.85), 0 4px 12px rgba(0,0,0,.5); overflow: hidden; padding-bottom: 4px; /* lighter than the cards behind it, and lifted by its shadow: no borders */
}

.dm-quick { display: flex; gap: 8px; padding: 12px 12px 0; }
.dm-quick a { flex: 1; text-align: center; padding: 11px 4px; border-radius: 12px; font-size: 14px; font-weight: 600; color: rgba(255,255,255,.85); background: rgba(255,255,255,.1); transition: background .15s, color .15s; }
.dm-quick a:hover { background: rgba(255,255,255,.16); color: #fff; }
.dm-quick a.selected { background: rgba(248,100,7,.24); color: var(--accent); }

/* Month calendar (replaces the native browser picker so it matches the theme) */
.dm-cal { display: none; padding: 10px 12px 12px; }
.js .dm-cal { display: block; }
.js .dm-list { display: none; }
.cal-head { display: flex; align-items: center; justify-content: space-between; padding: 6px 2px 10px; }
.cal-title { font-size: 17px; font-weight: 700; }
.cal-nav { display: flex; gap: 8px; }
.cal-nav button { width: 38px; height: 38px; border-radius: 12px; border: 0; background: rgba(255,255,255,.1); color: rgba(255,255,255,.85); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s; }
.cal-nav button:hover:not(:disabled) { background: rgba(255,255,255,.13); color: #fff; }
.cal-nav button:disabled { opacity: .3; cursor: default; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px 0; text-align: center; }
.cal-dow { font-size: 11px; font-weight: 600; letter-spacing: .5px; color: var(--grey); padding: 4px 0 8px; }
.cal-day { justify-self: center; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 500; color: rgba(255,255,255,.88); border-radius: 50%; transition: background .15s; } /* a fixed circle, whatever the width of the panel */
a.cal-day:hover { background: rgba(255,255,255,.14); color: #fff; }
.cal-day.today { color: var(--accent); font-weight: 700; }
.cal-day.selected { background: rgba(248,100,7,.24); color: var(--accent); font-weight: 700; }
.cal-day.off { color: rgba(255,255,255,.28); }
.dm-list { list-style: none; margin: 0; padding: 4px; max-height: min(60vh, 420px); overflow-y: auto; }
.dm-list a { display: flex; justify-content: space-between; align-items: center; padding: 11px 12px; border-radius: 8px; font-size: 14px; color: var(--white70); }
.dm-list a small { font-size: 12px; color: var(--grey); }
.dm-list a:hover { background: rgba(255,255,255,.05); color: #fff; }
.dm-list a.selected { background: var(--accent-faint); color: var(--accent); font-weight: 600; }
.dm-list a.selected small { color: var(--accent); }

/* League header */
.league { padding: 6px 0; }
.league-head { display: flex; align-items: center; padding: 0 12px; }
.league-logo { width: 32px; height: 48px; display: flex; align-items: center; justify-content: center; flex: none; }
.league-text { margin-left: 8px; min-width: 0; display: flex; flex-direction: column; }
.league-name { font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.league-country { font-size: 12px; color: var(--grey); display: flex; align-items: center; gap: 4px; }
.league-country img { border-radius: 2px; object-fit: cover; }

/* Fixture tile (FixtureTile) */
.tile {
  display: flex; align-items: center; margin: 3px 6px; padding: 10px 12px; border-radius: var(--r-tile); background: var(--card);
}
.t-time { width: 56px; flex: none; font-size: 12px; display: flex; align-items: center; justify-content: center; text-align: center; gap: 3px; }
.t-time .live-min { color: var(--red); font-weight: 700; font-size: 14px; }
.t-time .extra, .mh-status .extra {
  font-size: 10px; color: #fff; background: rgba(248, 100, 7, 0.1); border-radius: 8px; padding: 2px 4px;
}
.t-teams { flex: 1; min-width: 0; margin-left: 12px; display: flex; flex-direction: column; gap: 4px; }
.t-team { display: flex; align-items: center; gap: 6px; min-width: 0; }
.t-team img { border-radius: 4px; object-fit: cover; flex: none; }
.t-team .n { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.t-red { flex: none; width: 9px; height: 12px; margin-left: 2px; border-radius: 2px; background: #e53935; } /* a red card: the app's small red rectangle after the team's name */
.t-score { width: 40px; flex: none; margin-left: 8px; display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: 14px; font-weight: 500; }

/* Empty states */
.empty-state { text-align: center; padding: 64px 32px; color: var(--grey); }
.empty-state.small { padding: 32px 16px; }
.empty-state h1, .empty-state h2 { color: var(--text); font-size: 16px; margin: 8px 0 4px; }
.empty-state p { margin: 0; font-size: 13px; }
.empty-icon { font-size: 36px; opacity: .35; }

/* Match page: top bar */
.match-top { height: 56px; display: flex; align-items: center; padding: 0 12px; gap: 8px;
  background: linear-gradient(90deg, rgba(255,255,255,.03), var(--bg) 45%, rgba(255,255,255,.03)); }
.match-top .back { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; }
.league-line { display: flex; align-items: center; gap: 8px; font-size: 14px; min-width: 0; }
.league-line span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Pagination loader */
.loader { display: flex; justify-content: center; padding: 18px 0 8px; }
.loader[hidden], .empty-state[hidden] { display: none; }
.spinner { width: 22px; height: 22px; border-radius: 50%; background: conic-gradient(from 0deg, rgba(255,255,255,.15), #fff); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px)); mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px)); animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }


/* ---------- Left column (popular leagues and teams), wide screens only ---------- */
.side { display: none; }
@media (min-width: 1030px) {
  .shell { display: flex; justify-content: center; align-items: flex-start; gap: 24px; }
  .app { margin: 0; flex: 0 1 600px; max-width: 600px; }  /* the whole page column stays a readable width: a pick sits next to its teams */
  .side { order: -1; display: block; flex: none; width: 220px; position: sticky; top: 52px; padding-top: 12px; max-height: calc(100vh - 52px); overflow-y: auto; scrollbar-width: none; }
  .side::-webkit-scrollbar { display: none; }
}
.side-card { margin-bottom: 12px; }
.side-title { margin: 0; padding: 12px 4px 8px; font-size: 11px; font-weight: 500; letter-spacing: .8px; color: var(--white54); }
.side-list { list-style: none; margin: 0; padding: 0 0 4px; display: flex; flex-direction: column; gap: 4px; }
.side-list a { display: flex; align-items: center; gap: 8px; padding: 9px 10px; }
.side-list a:hover { background: none; }
.side-list img, .side-list .lg-fallback { flex: none; border-radius: 4px; object-fit: contain; }
.side-name { display: flex; flex-direction: column; min-width: 0; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.side-name small { font-size: 11px; color: var(--grey); }

/* ---------- Shimmer skeleton while a day loads (FixturePageShimmer) ---------- */
.sk { padding: 8px 0 24px; }
.sk-group { padding: 6px 0; }
.sk-head { display: flex; align-items: center; padding: 0 12px; }
.sk-logo { width: 32px; height: 48px; display: flex; align-items: center; justify-content: center; flex: none; }
.sk-text { margin-left: 8px; display: flex; flex-direction: column; gap: 5px; }
.sk-row { display: flex; align-items: center; gap: 4px; }
.sk-b { display: block; background: #1e1e1e; border-radius: 6px; }
.sk-head .sk-b { animation: skpulse 1.4s ease-in-out infinite alternate; }
.sk-tile {
  margin: 3px 6px; padding: 10px 12px; border-radius: var(--r-tile); display: flex; align-items: center;
  background: linear-gradient(100deg, #1e1e1e 35%, #303030 50%, #1e1e1e 65%); background-size: 250% 100%;
  animation: skmove 1.4s linear infinite;
}
.sk-tile .sk-b { background: var(--bg); }
.sk-time { width: 50px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.sk-teams { flex: 1; min-width: 0; margin-left: 12px; display: flex; flex-direction: column; gap: 4px; }
.sk-team { display: flex; align-items: center; gap: 6px; }
.sk-team .sk-b:last-child { flex: none; }
.sk-score { width: 40px; flex: none; margin-left: 8px; display: flex; flex-direction: column; align-items: center; gap: 6px; }
@keyframes skmove { from { background-position: 150% 0; } to { background-position: -50% 0; } }
@keyframes skpulse { from { background: #1e1e1e; } to { background: #303030; } }

/* content-pages.css */
/* Tips, TipWall, picks and the evergreen hub pages. */

/* ---------- AI tips (FreeTipsPage / QuickTipsTile) ---------- */
.cat-tabs { display: flex; padding: 4px 8px 0; }
.cat-tabs a { flex: 1; height: 44px; display: flex; align-items: center; justify-content: center; font-size: 14px; color: #fff; }
.cat-tabs a span, .cat-tabs a { position: relative; }
.cat-tabs a { white-space: nowrap; flex: 1 1 auto; padding: 0 4px; }
.cat-tabs .tl-full, .bk-browse .tl-full { display: none; } /* one line on a phone: "Wins" there, "Straight wins" from 480px */
@media (min-width: 480px) { .cat-tabs .tl-full, .bk-browse .tl-full { display: inline; } .cat-tabs .tl-short, .bk-browse .tl-short { display: none; } }
.cat-tabs a.active { font-weight: 700; color: #fff; }
/* the selected tab of the Tips strips: an orange underline under its label, no card (owner, 2026-10-16: the one place tab underlines are used); the scrolling strips keep the card */
.cat-tabs:not(.scroll) a.active::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: 4px; height: 3px; border-radius: 2px; background: var(--accent); }
.cat-tabs.scroll a.active { background: rgba(255,255,255,.09); border-radius: 8px; }
.tile.tip { padding: 10px 12px; }
.tip-lead { width: 52px; flex-direction: column; gap: 2px; }
.tip-country { max-width: 52px; font-size: 10px; font-weight: 500; color: var(--white38, rgba(255,255,255,.38)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tip-lead .st, .tip-lead time { font-size: 12px; color: var(--grey); }
.tip-live { padding: 2px 4px; border-radius: 4px; background: #e53935; font-size: 9px; font-weight: 700; color: #fff; }
.tip .t-teams { margin-left: 10px; }
.tip-preds { margin-left: 10px; flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.tip-pred { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: rgba(255,255,255,.86); white-space: nowrap; }
.tip-pred b { display: inline-block; min-width: 13px; font-size: 13px; font-weight: 700; }
.tip-pred.won { color: var(--green, #4caf50); }
.tip-pred.lost { color: var(--red, #e53935); }
.tip-preds.single .tip-pred { font-weight: 500; }
.tip-preds.single .tip-pred b { min-width: 18px; font-size: 18px; }
.tip-nologo { width: 16px; height: 16px; border-radius: 4px; background: rgba(117,117,117,.2); flex: none; }
.tip .t-team img { width: 16px; height: 16px; }

/* ---------- TipWall feed (WallPostCard) ---------- */
.cat-tabs.scroll { overflow-x: auto; scrollbar-width: none; gap: 4px; padding: 4px 12px 0; }
.cat-tabs.scroll::-webkit-scrollbar { display: none; }
.cat-tabs.scroll a { flex: none; padding: 0 12px; }
.wp { padding: 12px 10px; margin-bottom: 6px; }
.wp-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.wp-avatar { width: 36px; height: 36px; border-radius: 9px; display: flex; align-items: center; justify-content: center; flex: none; font-size: 18px; font-weight: 700; color: var(--av); background: color-mix(in srgb, var(--av) 14%, transparent); }
.wp-user { display: flex; align-items: center; gap: 6px; min-width: 0; }
.wp-name { font-size: 14px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wp-tier, .wp-streak { font-style: normal; font-size: 10px; font-weight: 500; padding: 2px 6px; border-radius: 4px; flex: none; }
.tier-gold { color: #ffd700; background: rgba(255,215,0,.15); }
.tier-silver { color: #aaa; background: rgba(170,170,170,.15); }
.tier-bronze { color: #cd7f32; background: rgba(205,127,50,.15); }
.wp-streak { background: rgba(248,100,7,.15); font-weight: 600; }
.wp-sel { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; padding: 10px; border-radius: 10px; background: rgba(255,255,255,.03); }
.wp-when { width: 46px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 11px; color: rgba(255,255,255,.7); }
.wp-when .local-date[hidden] { display: none; }
.wp-live { font-weight: 700; color: var(--accent); }
.wp-teams { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.wp-team { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: 12px; font-weight: 500; color: rgba(255,255,255,.75); }
.wp-team img, .wp-team i { width: 16px; height: 16px; flex: none; object-fit: contain; }
.wp-team i { border-radius: 4px; background: rgba(117,117,117,.2); }
.wp-team span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wp-market { width: 68px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 5px; }
.wp-market b { font-size: 13px; font-weight: 700; white-space: nowrap; }
.wp-market small { font-size: 11px; font-weight: 500; color: rgba(255,255,255,.5); }
.wp-goals { width: 18px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 5px; }
.wp-goals b { font-size: 13px; font-weight: 800; }
.wp-goals b.off { color: rgba(255,255,255,.2); }
.wp-res { width: 20px; flex: none; display: flex; justify-content: center; }
.res { width: 18px; height: 18px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-style: normal; font-size: 11px; font-weight: 700; color: #fff; }
.res.won { background: var(--green); }
.res.lost { background: var(--red); }
.res.void { width: auto; border-radius: 0; background: none; color: rgba(255,255,255,.55); font-size: 10px; white-space: nowrap; }
.wp-sum { display: flex; justify-content: flex-end; align-items: center; gap: 6px; padding: 10px 8px 12px; margin-bottom: 4px; }
.wp-legs { font-size: 12px; color: rgba(255,255,255,.4); }
.wp-total { font-size: 18px; font-weight: 800; }
.wp-ago { margin-left: auto; font-size: 10px; font-style: italic; color: rgba(255,255,255,.38); }
.wp-caption { margin: 8px 8px 0; font-size: 13px; font-style: italic; color: rgba(255,255,255,.6); overflow-wrap: anywhere; }

/* ---------- Today's picks (VipMatchesList) ---------- */
.vip { padding: 4px 6px 10px; }
.vip-title { display: flex; align-items: center; gap: 6px; margin: 10px 4px 8px; font-size: 14px; font-weight: 700; }
.vip-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green); }
.vip-tile { display: flex; align-items: center; margin: 3px 0; padding: 10px 12px; border-radius: 6px; background: var(--card); }
.vip-time { width: 56px; flex: none; display: flex; align-items: center; justify-content: center; font-size: 12px; color: #fff; }
.vip-body { flex: 1; min-width: 0; margin-left: 12px; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 10px; row-gap: 4px; align-items: center; }
.vip-league { grid-column: 2; grid-row: 1; justify-self: end; max-width: 110px; font-size: 10px; color: rgba(255,255,255,.38); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vip-team { grid-column: 1; display: flex; align-items: center; gap: 6px; min-width: 0; font-size: 14px; }
.vip-team img, .vip-team i { width: 19px; height: 19px; flex: none; object-fit: cover; border-radius: 4px; }
.vip-team span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vip-tip { grid-column: 2; grid-row: 2; justify-self: end; padding: 3px 0; color: var(--accent); font-size: 10px; font-weight: 600; letter-spacing: .3px; white-space: nowrap; }
.vip-score { width: 40px; flex: none; margin-left: 8px; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.vip-score b { font-size: 14px; font-weight: 500; }
.picks-teaser .vip-league { display: none; }
.picks-teaser .vip-tip { grid-row: 1 / span 2; }
.pt-item:not([hidden]) { animation: pt-in .35s ease; }
@keyframes pt-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .pt-item:not([hidden]) { animation: none; } }
.wp-back { display: inline-block; padding: 10px 12px 4px; font-size: 13px; color: var(--white70); }
.wp-back:hover { color: #fff; }
.pt-head { display: flex; align-items: center; justify-content: space-between; padding-right: 6px; }
.pt-all { display: inline-flex; align-items: center; gap: 2px; font-size: 12px; color: var(--white54); }
.pt-all:hover { color: #fff; }


/* ---------- Evergreen hub pages ---------- */
.hub-head { padding: 8px 14px 6px; }
.hub-head h1 { font-size: 20px; font-weight: 700; }
.hub-head p { margin: 6px 0 0; font-size: 13px; line-height: 1.45; color: var(--white54); }
.hub-day { padding-bottom: 6px; }
.hub-day-title { padding: 14px 14px 6px; font-size: 15px; font-weight: 700; }
.hub-more { display: inline-block; margin: 6px 14px 8px; font-size: 12px; color: var(--white54); }
.hub-more-flush { margin-left: 0; }
.hub-more:hover { color: #fff; }
.hub-more-end { display: block; text-align: right; } /* the "all / full ..." links under the overview sections of the league and team pages sit at the right */

/* navigation.css */
/* Footer, desktop header menu, sidebar and competition links. */

/* footer: the full link set, in columns */
.site-foot { padding: 24px 14px 32px; margin-top: 8px; }
.foot-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 20px 16px; }
.foot-cols nav { display: flex; flex-direction: column; gap: 7px; }
.foot-cols h2 { margin: 0 0 4px; font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--white54); }
.fc > summary { list-style: none; cursor: default; }
.fc > summary::-webkit-details-marker { display: none; }
@media (min-width: 900px) { .fc > summary { pointer-events: none; } } /* wide screens: always open, nothing to toggle */
/* phones: each footer column is a collapsed row that opens on tap (the links stay in the page for crawlers) */
@media (max-width: 899px) {
  .foot-cols { grid-template-columns: 1fr; gap: 8px; }
  .fc { border-radius: 12px; background: var(--card); }
  .fc > summary { cursor: pointer; display: flex; align-items: center; justify-content: space-between; padding: 14px 14px; }
  .fc > summary h2 { margin: 0; }
  .fc > summary::after { content: ""; width: 8px; height: 8px; margin-right: 4px; border-right: 2px solid var(--white54); border-bottom: 2px solid var(--white54); transform: rotate(45deg) translateY(-2px); transition: transform .15s; }
  .fc[open] > summary::after { transform: rotate(-135deg) translate(-2px, -1px); }
  .fc > nav { padding: 0 14px 14px; gap: 11px; }
  .site-foot a { font-size: 13px; }
}
.site-foot a { font-size: 12px; color: var(--grey); }
.site-foot a:hover { color: #fff; }

/* Header: the search icon alone, pushed to the right beside the menu button; it opens the search page (.search-btn, phone-nav.css) */
.site-head .search-btn { margin-left: auto; }
/* The search opens over the header (covering the brand) and its results drop down under it: no page change while typing (static/js/head-search.js) */
.head-find { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; gap: 8px; padding: 0 12px; background: #141414; }
.head-find[hidden] { display: none; }
.head-find > svg { position: absolute; left: 26px; top: 17px; width: 18px; height: 18px; fill: none; stroke: var(--white54); stroke-width: 2; stroke-linecap: round; pointer-events: none; }
.head-find input { flex: 1; min-width: 0; height: 40px; padding: 0 12px 0 42px; border: 0; border-radius: 12px; background: rgba(255,255,255,.09); color: #fff; font: inherit; font-size: 16px; -webkit-appearance: none; appearance: none; }
.head-find input:focus { outline: none; background: rgba(255,255,255,.12); }
.head-find input::placeholder { color: var(--white54); }
.head-find input::-webkit-search-cancel-button { display: none; }
.head-find-x { flex: none; width: 40px; height: 40px; border: 0; border-radius: 12px; background: none; color: var(--white70); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.head-find-x:active { background: rgba(255,255,255,.1); }
.head-find-x svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.head-results { position: absolute; left: 8px; right: 8px; top: calc(100% + 4px); max-height: calc(100vh - 52px - 96px); overflow-y: auto; padding: 6px 0 12px; border-radius: 16px; background: #262626; box-shadow: 0 24px 60px rgba(0,0,0,.9), 0 4px 14px rgba(0,0,0,.6); } /* lighter than the page and lifted by its shadow, with the page dimmed behind (the scrim rule below) */
.head-find:has(.head-results:not([hidden])) { box-shadow: 0 0 0 100vmax rgba(0,0,0,.62); } /* the scrim: a shadow around the search bar (not a fixed layer, the header's blur would make that header-sized) */
.head-results[hidden] { display: none; }
@media (min-width: 900px) { .head-find { padding: 0 max(12px, calc((100vw - 1024px) / 2 + 16px)); } .head-find > svg { left: max(26px, calc((100vw - 1024px) / 2 + 30px)); } .head-results { max-width: 640px; left: 50%; right: auto; width: 100%; transform: translateX(-50%); } }
@media (min-width: 900px) { .site-head .brand { flex: none; } }

.hub-league { display: flex; align-items: center; gap: 10px; margin: 3px 6px; padding: 10px 12px; border-radius: var(--r-tile); background: var(--card); font-size: 14px; }
.hub-league img, .hub-league i { width: 22px; height: 22px; flex: none; object-fit: contain; }
.hub-league span { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hub-league em { font-style: normal; font-size: 12px; color: var(--grey); }
.hub-league:hover { background: #202020; }

.crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 10px 14px 0; font-size: 12px; color: var(--grey); }
.crumbs a:hover { color: #fff; }
.crumbs span[aria-current] { color: var(--white54); }
/* phones: no visible trail on any page (the header, the pills and the back button already say where you are); it stays in the page for screen readers and search engines,
   hidden the way .sr-only is, and the BreadcrumbList in the head is not affected */
@media (max-width: 899px) {
  .crumbs { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
}

.vip-title small { font-size: 11px; font-weight: 500; color: var(--grey); }

/* sidebar: section links under each popular league */
.side-list li { padding-bottom: 2px; border-radius: 10px; background: rgba(255,255,255,.035); transition: background .15s; }
.side-list li:hover { background: rgba(255,255,255,.07); }
.side-sub { display: flex; gap: 12px; padding: 0 10px 8px 40px; }
.side-sub a { padding: 0; font-size: 11px; color: var(--grey); display: inline; }
.side-sub a:hover { color: #fff; background: none; }

.map-links { display: flex; flex-wrap: wrap; gap: 6px 8px; padding: 0 14px 8px; }
.map-links a { padding: 6px 10px; border-radius: 8px; background: var(--card); font-size: 12px; color: var(--white70); }
.map-links a:hover { color: #fff; }

/* competitions playing today: plain links for crawlers and people */
.day-leagues { margin: 18px 12px 8px; padding: 14px; border-radius: 12px; background: var(--card); }
.day-leagues h2 { margin: 0 0 10px; font-size: 11px; font-weight: 500; letter-spacing: .8px; color: var(--white54); text-transform: uppercase; }
.day-leagues div { display: flex; flex-wrap: wrap; gap: 6px 8px; }
.day-leagues a { padding: 5px 9px; border-radius: 8px; background: rgba(255,255,255,.05); font-size: 12px; color: var(--white70); }
.day-leagues a:hover { color: #fff; background: rgba(255,255,255,.09); }
/* very narrow phones: the ".com" gives way so the search and menu icons keep their room */
@media (max-width: 359px) { .brand-name i { display: none; } }
/* trends: a team row with its headline figure and form dots on the right */
.trend-row { display: flex; align-items: center; gap: 12px; margin: 3px 6px; padding: 10px 12px; border-radius: var(--r-tile); background: var(--card); }
.trend-row:hover { background: #202020; }
.trend-row img, .trend-row > i { width: 28px; height: 28px; flex: none; object-fit: contain; }
.tr-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.tr-main b { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-main small { font-size: 11px; color: var(--grey); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-side { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.tr-side em { font-style: normal; font-size: 12px; font-weight: 700; color: var(--green); }
.tr-side em.bad { color: var(--red); } .tr-side em.neutral { color: var(--white70); }
.tr-side .mh-form { margin-top: 0; }
.tr-side .mh-form i { width: 9px; height: 9px; margin: 0 1px; }
/* trends by day: one card per match (league line, the tile, then the trends of each team in an inset panel) */
.trend-match { margin: 10px 8px; padding-bottom: 8px; border-radius: 16px; background: var(--card); overflow: hidden; }
.tm-league { display: flex; align-items: center; gap: 6px; padding: 10px 14px 0; font-size: 11px; font-weight: 600; letter-spacing: .2px; color: var(--grey); }
.tm-league img { flex: none; width: 16px; height: 16px; object-fit: contain; }
.tm-league span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.trend-match .tile { margin: 0; padding: 8px 14px 10px 6px; border-radius: 0; background: none; }
.trend-match .tile:active { transform: none; background: rgba(255,255,255,.04); }
.tm-lines { margin: 0 8px; padding: 4px 10px; border-radius: 12px; background: rgba(255,255,255,.04); display: flex; flex-direction: column; }
.tm-line { display: flex; align-items: center; gap: 8px; padding: 6px 0; }
.tm-line + .tm-line { margin-top: 2px; }
.tm-line img, .tm-line > i { flex: none; width: 18px; height: 18px; object-fit: contain; }
.tm-team { flex: none; width: 84px; font-size: 12px; font-weight: 600; color: var(--white70); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tm-chips { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; gap: 5px; }
.tm-chip { display: inline-flex; align-items: center; gap: 4px; font-style: normal; padding: 3px 9px; border-radius: 999px; font-size: 11px; font-weight: 600; background: rgba(42,185,118,.16); color: var(--green); }
.tm-chip.bad { background: rgba(226,75,74,.16); color: var(--red); }
.tm-chip.neutral { background: rgba(255,255,255,.08); color: var(--white70); }
.tm-chip.winning-streaks::before { content: "\25B2"; font-size: 8px; }
.tm-chip.losing-streaks::before { content: "\25BC"; font-size: 8px; }
.tm-chip.unbeaten-runs::before { content: "\2713"; font-size: 10px; }
.tm-chip.high-scoring-teams::before { content: "\2191"; font-size: 11px; }
.tm-chip.low-scoring-teams::before { content: "\2193"; font-size: 11px; }
/* the strip on the Live page that leads to the trends of the matches in play */

/* odds-slips.css */
/* Odds cards, accumulator slips, My slip, information pages, injuries hub. */

/* odds cards (football odds pages): one row: time | teams | prices (prices wrap under the teams when there are many) */
.od-card { display: flex; align-items: center; gap: 8px; margin: 3px 6px; padding: 8px 10px; border-radius: 6px; background: var(--card); }
.od-card:hover { background: #202020; }
.od-link { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; }
.od-time { width: 40px; flex: none; text-align: center; font-size: 12px; color: var(--white70); }
.od-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.od-main em { font-style: normal; font-size: 10px; line-height: 1.2; color: var(--grey); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.od-team { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: 13px; }
.od-team img { border-radius: 4px; object-fit: cover; flex: none; }
.od-team > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.od-chips { display: flex; gap: 4px; flex: none; }
.od-chip { position: relative; display: flex; flex-direction: column; align-items: center; min-width: 46px; padding: 3px 6px; border: 0; border-radius: 6px; background: rgba(255,255,255,.05); color: inherit; font: inherit; }
button.od-chip { cursor: pointer; }
button.od-chip:hover { background: rgba(255,255,255,.1); }
.od-chip small { font-size: 9px; line-height: 1.2; color: var(--white54); white-space: nowrap; }
.od-chip b { font-size: 13px; font-weight: 700; line-height: 1.25; }
.od-card.many { flex-wrap: wrap; }
.od-card.many .od-link { flex: 1 1 100%; }
.od-card.many .od-chips { flex: 1 1 100%; flex-wrap: wrap; margin-left: 48px; }
@media (min-width: 640px) { .od-card.many { flex-wrap: nowrap; } .od-card.many .od-link { flex: 1; } .od-card.many .od-chips { flex: none; margin-left: 0; flex-wrap: nowrap; } }
.od-chip.ai { background: rgba(248,100,7,.24); }
.od-chip.ai i { position: absolute; top: -6px; right: -4px; padding: 1px 4px; border-radius: 6px; background: var(--accent); color: #fff; font-size: 8px; font-style: normal; font-weight: 800; letter-spacing: .3px; }

/* accumulator slips */
.slip { margin: 8px 6px 14px; border-radius: 12px; background: var(--card); overflow: hidden; }
.slip-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; }
.slip-title { font-size: 13px; font-weight: 600; color: var(--white70); }
.slip-total { display: flex; flex-direction: column; align-items: flex-end; }
.slip-total small { font-size: 10px; color: var(--white54); letter-spacing: .5px; text-transform: uppercase; }
.slip-total b { font-size: 22px; font-weight: 800; color: var(--accent); line-height: 1.1; }
.slip-leg { display: flex; align-items: center; gap: 10px; padding: 10px 14px; margin: 3px 6px; border-radius: 8px; background: rgba(255,255,255,.04); }
.slip-leg:hover { background: #202020; }
.slip-when { width: 44px; flex: none; font-size: 12px; color: var(--white70); text-align: center; }
.slip-teams { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.slip-teams span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.slip-teams em { font-style: normal; font-size: 10px; color: var(--grey); }
.slip-pick { display: flex; flex-direction: column; align-items: flex-end; font-size: 13px; }
.slip-pick small { font-size: 10px; color: var(--white54); }
.slip-pick b { font-weight: 700; }
.slip-odds { width: 44px; text-align: right; font-size: 15px; font-weight: 700; }
.builder { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; margin: 6px 12px 10px; padding: 14px; border-radius: 12px; background: var(--card); }
.b-field { display: flex; flex-direction: column; gap: 4px; font-size: 11px; color: var(--white54); }
.b-field input, .b-field select { width: 110px; height: 38px; padding: 0 10px; border-radius: 8px; border: 0; background: rgba(255,255,255,.08); color: #fff; font: inherit; font-size: 15px; }
.b-markets { flex: 1 1 100%; margin: 0; padding: 0; border: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 13px; }
.b-markets legend { padding: 0 0 6px; font-size: 11px; color: var(--white54); }
.builder button { height: 38px; padding: 0 18px; border: 0; border-radius: 8px; background: var(--accent); color: #fff; font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }

/* My slip: selected prices, the floating pill, the sheet and the toast */
.od-chip.sel, .chip.sel { background: rgba(248,100,7,.4) !important; }
button.chip { border: 0; color: inherit; font: inherit; cursor: pointer; }
.slip-pill { position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%); z-index: 70; display: flex; align-items: center; gap: 8px; padding: 10px 18px; border: 0; border-radius: 999px; background: var(--accent); color: #fff; font: inherit; font-size: 14px; font-weight: 700; box-shadow: 0 6px 24px rgba(0,0,0,.5); cursor: pointer; }
.slip-pill b { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 11px; background: rgba(255,255,255,.25); font-size: 12px; }
.slip-pill span { padding: 2px 9px; border-radius: 999px; background: rgba(255,255,255,.22); }
.slip-sheet { position: fixed; inset: 0; z-index: 80; display: flex; align-items: flex-end; justify-content: center; background: rgba(0,0,0,.6); }
.slip-sheet[hidden] { display: none; }
.slip-sheet-card { width: 100%; max-width: 520px; max-height: 80vh; display: flex; flex-direction: column; border-radius: 18px 18px 0 0; background: var(--card); }
.slip-sheet-card header { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; font-size: 16px; }
.slip-close { height: 32px; padding: 0 14px; border: 0; border-radius: 8px; background: rgba(255,255,255,.08); color: var(--white70); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.slip-close:hover { background: rgba(255,255,255,.14); color: #fff; }
.slip-del { width: 34px; height: 34px; flex: none; display: flex; align-items: center; justify-content: center; border: 0; border-radius: 8px; background: rgba(226,75,74,.14); color: var(--red); cursor: pointer; }
.slip-del:hover { background: rgba(226,75,74,.28); }
.slip-list { overflow-y: auto; padding: 4px 0; }
.slip-row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; margin: 3px 10px; border-radius: 10px; background: rgba(255,255,255,.04); }
.slip-row-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.slip-row-t b { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.slip-row-t small { font-size: 12px; color: var(--white54); }
.slip-row-o { font-size: 15px; font-weight: 700; }
.slip-sheet-card footer { padding: 12px 16px 18px; background: rgba(255,255,255,.03); }
.slip-sum { display: flex; align-items: center; justify-content: space-between; font-size: 14px; color: var(--white70); }
.slip-sum b { font-size: 24px; color: var(--accent); }
.slip-msg { min-height: 16px; margin: 4px 0 8px; font-size: 12px; color: var(--red); }
.slip-btns, .slip-actions { display: flex; gap: 8px; }
.slip-actions { padding: 0 12px 16px; }
.slip-btn { flex: 1; height: 42px; border: 0; border-radius: 10px; background: var(--accent); color: #fff; font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }
.slip-btn.ghost { background: rgba(255,255,255,.08); }
.slip-btn:disabled { opacity: .4; cursor: default; }
.slip-toast { position: fixed; left: 50%; bottom: 74px; transform: translate(-50%, 10px); z-index: 90; max-width: 90vw; padding: 10px 16px; border-radius: 10px; background: #2a2a2a; color: #fff; font-size: 13px; opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; }
.slip-toast.on { opacity: 1; transform: translate(-50%, 0); }
.slip-status { margin-left: 8px; font-style: normal; font-size: 11px; padding: 2px 8px; border-radius: 6px; background: rgba(255,255,255,.08); }
.slip.shared.status-won .slip-status { background: rgba(42,185,118,.2); color: var(--green); }
.slip.shared.status-lost .slip-status { background: rgba(226,75,74,.2); color: var(--red); }
.slip-res { width: 24px; flex: none; display: flex; justify-content: center; }
.slip-leg.res-voided .slip-odds { color: var(--grey); }
.slip-pill[hidden] { display: none; }

/* information pages */
.info-page { padding: 6px 16px 24px; }
.info-page h1 { margin: 8px 0 12px; font-size: 22px; font-weight: 700; }
.info-page section { margin: 0 0 14px; padding: 14px 16px; border-radius: 12px; background: var(--card); }
.info-page h2 { margin: 0 0 8px; font-size: 15px; font-weight: 700; }
.info-page p { margin: 0 0 8px; font-size: 14px; line-height: 1.6; color: var(--white70); }
.info-page p:last-child { margin-bottom: 0; }

/* football injuries hub */
.inj-card { margin: 3px 6px; padding: 10px 12px; border-radius: 8px; background: var(--card); }
.inj-link { display: flex; align-items: center; gap: 8px; }
.inj-link .od-main { flex: 1; min-width: 0; }
.inj-count { flex: none; padding: 3px 8px; border-radius: 6px; background: rgba(226,75,74,.14); font-size: 11px; font-weight: 700; color: var(--red); }
.inj-names { margin: 8px 0 0 48px; }
.inj-names p { margin: 0 0 4px; font-size: 12px; line-height: 1.5; color: var(--white70); }
.inj-names b { color: #fff; font-weight: 600; }
.inj-names small { color: var(--grey); font-size: 11px; }

/* a pick of a slip: the same tile as the app's TipWall (wall_fixture_tile.dart): time or FT, the two teams, the pick over its price, the goals one under the other, the result */
.slip-leg.wt { display: flex; align-items: center; gap: 10px; padding: 10px; margin: 0 6px 6px; border-radius: 10px; background: rgba(255,255,255,.03); }
.slip-leg.wt:hover { background: rgba(255,255,255,.06); }
.wt-time { width: 46px; flex: none; text-align: center; font-size: 11px; color: var(--white70); }
.wt-teams { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.wt-team { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: rgba(255,255,255,.75); }
.wt-team span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wt-team img, .wt-shield { width: 16px; height: 16px; flex: none; object-fit: contain; }
.wt-shield { border-radius: 5px; background: rgba(255,255,255,.12); }
.wt-pick { width: 68px; flex: none; display: flex; flex-direction: column; gap: 5px; text-align: center; }
.wt-pick b { font-size: 13px; font-weight: 700; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wt-pick small { font-size: 11px; font-weight: 500; color: rgba(255,255,255,.55); }
.wt-goals { width: 18px; flex: none; display: flex; flex-direction: column; gap: 5px; text-align: center; }
.wt-goals b { font-size: 13px; font-weight: 800; color: #fff; font-variant-numeric: tabular-nums; }
.wt-goals b.none { color: rgba(255,255,255,.2); }
.wt-res { width: 20px; flex: none; display: flex; justify-content: center; }
.wt-res i { width: 18px; height: 18px; border-radius: 9px; font-style: normal; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; color: #fff; }
.wt-res .won { background: var(--green, #4caf50); }
.wt-res .lost { background: var(--red, #e53935); }
.wt-res .void { width: auto; background: none; color: rgba(255,255,255,.55); font-size: 10px; font-weight: 700; white-space: nowrap; } /* the word, a little wider than its 20px slot: it spills evenly on both sides */
.slip-head .slip-status { margin-left: 10px; padding: 4px 12px; border-radius: 999px; font-size: 12px; font-weight: 800; letter-spacing: .4px; text-transform: uppercase; }
/* the tiles are the card: no box around them, so they use the full width */
.slip:has(.wt) { margin: 8px 0 30px; background: none; border-radius: 0; overflow: visible; }
.slip:has(.wt) .slip-head { padding: 4px 4px 0; }
.slip:has(.wt) .slip-leg.wt { margin: 0 0 6px; }
.slip:has(.wt) .slip-total { flex-direction: row; align-items: baseline; gap: 8px; }
.slip:has(.wt) .slip-total b { font-size: 18px; }
.slip:has(.wt) .slip-head { justify-content: flex-end; }
.slip:has(.wt) .slip-head .slip-title { margin-right: auto; }
.slip:has(.wt) .slip-head .slip-status { margin-left: 10px; }
.slip:has(.wt) .slip-head { gap: 14px; }
.slip:has(.wt) .slip-count { font-size: 13px; font-weight: 600; color: var(--white70); }

/* on the accumulator pages the page has no side padding: keep the tiles off the screen edge */
.hub-day .slip:has(.wt) { margin-left: 12px; margin-right: 12px; }

/* the total is information, not a headline */
.slip:has(.wt) .slip-total b { font-size: 15px; font-weight: 700; color: #fff; }
.slip:has(.wt) .slip-total small { font-size: 10px; }
.slip:has(.wt) .slip-count { font-size: 12px; }

/* match-header.css */
/* Match header, tab bar and the instant-open shell (shared by list and match pages). */

/* ---------- Match header (MorphingMatchHeader) ---------- */
.match-head { padding: 0 8px 4px; background: linear-gradient(90deg, rgba(255,255,255,.03), var(--bg) 45%, rgba(255,255,255,.03)); }
.mh-label { text-align: center; padding-top: 10px; padding-bottom: 2px; font-size: 11px; letter-spacing: 1.5px; color: #fff; font-weight: 600; }
.mh-label.strong { font-weight: 700; }
.mh-label.grey { color: var(--grey); letter-spacing: 0; }
.mh-label.spacer { height: 10px; padding: 0; }
.mh-row { display: flex; align-items: flex-start; padding: 6px 0 14px; }
.mh-team { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; }
.mh-logo { position: relative; display: block; width: 36px; height: 36px; }
.mh-logo img { border-radius: 50%; object-fit: contain; }
.mh-logo .shield { display: block; width: 36px; height: 36px; border-radius: 50%; background: var(--card); }
.red-badge { position: absolute; top: -8px; right: -8px; width: 13px; height: 18px; border-radius: 2px; background: #e53935; color: #fff; font-size: 8px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.mh-name { margin-top: 8px; font-size: 12px; font-weight: 600; max-width: 100%; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mh-form { display: flex; justify-content: center; margin-top: 6px; }
.mh-form i { width: 12px; height: 12px; border-radius: 50%; margin: 0 1.5px; background: var(--grey); }
.mh-form i.f-W { background: var(--green); } .mh-form i.f-L { background: var(--red); }
.mh-center { width: 100px; flex: none; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding-top: 2px; }
.ko-day { font-size: 11px; font-weight: 600; color: var(--accent); }
.ko-time { font-size: 22px; font-weight: 700; color: #fff; line-height: 1.2; }
.ko-label { font-size: 10px; color: var(--grey); }
.live-top { display: flex; align-items: center; gap: 3px; margin-bottom: 4px; font-size: 10px; font-weight: 500; color: rgba(255,255,255,.6); min-height: 14px; }
.live-top .pulse, .pulse { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: pulse .8s ease-in-out infinite alternate; }
@keyframes pulse { from { opacity: .25; } to { opacity: 1; } }
.mh-score { font-size: 32px; font-weight: 800; letter-spacing: -1px; line-height: 1.1; white-space: nowrap; }
.mh-status { margin-top: 2px; font-size: 13px; font-weight: 700; color: var(--grey); display: flex; align-items: center; gap: 4px; min-height: 20px; }
.mh-status.is-live { color: var(--red); }
.mh-status .extra { font-size: 9px; font-weight: 400; color: #fff; background: rgba(117,117,117,.2); border-radius: 8px; padding: 1px 5px; }
.subtags { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; }
.subtags span { margin-top: 4px; padding: 2px 5px; font-size: 11px; color: var(--grey); }
.scorers { display: flex; align-items: flex-start; padding: 0 4px 6px; }
.sc { flex: 1; font-size: 12px; line-height: 1.35; color: var(--white70); font-weight: 500; }
.sc.home { text-align: right; } .sc.away { text-align: left; }
.sc-ball { width: 40px; text-align: center; font-size: 13px; flex: none; }

/* ---------- Tab bar ---------- */
.tabs { display: flex; justify-content: flex-start; gap: 4px; padding: 6px 20px; overflow-x: auto; scrollbar-width: none; }
/* Centre the tabs when they fit, but keep every tab reachable when they overflow (plain
   justify-content:center would push the first tab off the left edge on phones). */
.tabs > .tab:first-child { margin-left: auto; }
.tabs > .tab:last-child { margin-right: auto; }
.tabs::-webkit-scrollbar { display: none; }
.tab { flex: none; height: 36px; padding: 0 10px; display: flex; align-items: center; font-size: 14px; color: var(--white54); border-radius: 8px; white-space: nowrap; }
.tab.active { color: #fff; font-weight: 700; background: rgba(255,255,255,.09); }

/* match opening shell: the real page's structure drawn from the tapped tile, so nothing moves when the page arrives */
.ld-overlay { position: fixed; z-index: 200; overflow: hidden; background: var(--bg); }
@media (max-width: 899px) { .ld-overlay .crumbs { display: none; } } /* phones: the match page itself has no visible trail (static/css/match-page.css), so neither does the view that opens it */
.ld-overlay .mh-form i { background: #303030; animation: skpulse 1.4s ease-in-out infinite alternate; }
.ld-overlay .tab { width: 74px; background: #1e1e1e; animation: skpulse 1.4s ease-in-out infinite alternate; }
/* The placeholders under the tabs while a match opens: cards in the shape of the Overview tab (built in static/js/match-open.js) */
.ld-card { margin: 12px 8px 0; padding: 14px; border-radius: 12px; background: var(--card); display: flex; flex-direction: column; gap: 10px; }
.ld-card.ld-tall { min-height: 220px; }
.ld-bar { display: block; flex: none; height: 12px; border-radius: 6px; background: #262626; animation: skpulse 1.4s ease-in-out infinite alternate; }
.ld-overlay .site-head { position: static; transform: none; } /* the copy of the site header, as the real match page has it on a phone: at the top, not pinned */
.ld-overlay .site-head, .ld-overlay .site-head * { pointer-events: none; }
.ld-overlay .fav-btn, .ld-overlay .share-btn { pointer-events: none; } /* the stars and the Save button of the loading header are only a picture of the real ones */
.ld-sc { display: block; width: 62%; height: 10px; margin: 0 0 6px; } /* a line of scorers, while they load: one for each goal; with the 6px gap it is as tall as a real line (about 16px) */
.ld-sc:nth-child(2n) { width: 52%; } .ld-sc:nth-child(3n) { width: 70%; } /* not all the same length */
.ld-overlay .sc { padding-top: 3px; } /* centres the first bar on the first line of text, level with the ball */
.sc.home .ld-sc { margin-left: auto; } /* the home side is right-aligned, like its real lines */
.ld-sc { animation: skpulse 1.4s ease-in-out infinite alternate; background: #262626; border-radius: 6px; }
.ld-t { width: 38%; height: 14px; margin-bottom: 4px; }
.ld-l1 { width: 100%; } .ld-l2 { width: 72%; }
.ld-chips, .ld-odds { display: flex; gap: 8px; }
.ld-chips .ld-bar { flex: 1; height: 34px; border-radius: 10px; }
.ld-odds .ld-bar { flex: 1; height: 46px; border-radius: 10px; }
.ld-cmp { display: flex; align-items: center; gap: 10px; }
.ld-cmp .ld-a { width: 30px; }
.ld-cmp .ld-m { flex: 1; }
.ld-st { display: flex; align-items: center; gap: 10px; }
.ld-st .ld-n { width: 14px; } .ld-st .ld-dot { width: 20px; height: 20px; border-radius: 10px; }
.ld-st .ld-nm { flex: 1; } .ld-st .ld-num { width: 22px; }
@media (prefers-reduced-motion: reduce) { .ld-bar { animation: none; } }

/* phone-nav.css */
/* Phone navigation (bottom bar, hamburger sheet), see-all links, stored slip results, sub-menu pills. */

/* ---------- Phone navigation: bottom bar + hamburger sheet (narrower than the desktop menu, 900px) ---------- */
.burger { display: none; margin-left: auto; width: 40px; height: 40px; border-radius: 12px; background: rgba(255,255,255,.07); align-items: center; justify-content: center; color: var(--white70); }
.burger svg, .menu-close svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.bottom-nav { display: none; }
.menu-sheet[hidden] { display: none; }
@media (max-width: 899px) {
  .burger { display: flex; }
  .pills { display: none; }
  /* The Live + date row stays under the header and moves with it, 1:1 with the scroll (static/js/header.js sets --o, how far they have moved up),
     so the day or Live is one flick away. 118px = the 52px header + this row (12 above, 42 buttons, 12 below); the sticky league headings sit under it. */
  .date-bar:has(.date-nav) { position: sticky; top: 52px; z-index: 45; background: var(--bg); transform: translateY(calc(var(--o, 0px) * -1)); will-change: transform; }
  html.head-snap .date-bar:has(.date-nav) { transition: transform var(--slide); }
  html:has(.date-bar .date-nav) { --head-h: 118px; }
  .app { padding-bottom: calc(84px + env(safe-area-inset-bottom, 0px)); } /* the last content can scroll clear of the floating bar */
  .bottom-nav {
    /* floats above the content like Telegram's bar: detached from the edges, rounded, translucent and blurred, so the page scrolls underneath it */
    position: fixed; left: 50%; bottom: calc(10px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%); z-index: 60;
    width: min(calc(100% - 24px), 440px); display: flex; justify-content: space-around; gap: 2px; padding: 6px;
    border-radius: 26px; background: rgba(34,34,36,.62);
    backdrop-filter: blur(20px) saturate(1.6); -webkit-backdrop-filter: blur(20px) saturate(1.6);
    box-shadow: 0 8px 28px rgba(0,0,0,.45);
    transition: transform .2s ease;
  }
  /* scrolling down slides the bar off the bottom, scrolling up brings it back (static/js/header.js) */
  html.nav-away .bottom-nav { transform: translateX(-50%) translateY(calc(100% + 24px + env(safe-area-inset-bottom, 0px))); }
  html.nav-away .slip-pill { bottom: calc(14px + env(safe-area-inset-bottom, 0px)); }
  .bn { position: relative; flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 2px 5px; border-radius: 20px; color: var(--white54); font-size: 10.5px; font-weight: 600; }
  .bn svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
  .bn.active { color: var(--accent); background: rgba(255,255,255,.12); }
  .bn .badge { position: absolute; top: 2px; left: calc(50% + 6px); min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: rgba(255,255,255,.2); color: #fff; font-size: 9px; line-height: 16px; text-align: center; }
  .slip-pill { transition: bottom .25s ease; bottom: calc(86px + env(safe-area-inset-bottom, 0px)); }
}
.menu-sheet { position: fixed; inset: 0; z-index: 90; background: rgba(0,0,0,.62); }
.menu-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(88vw, 360px); overflow-y: auto; padding: 8px 12px calc(24px + env(safe-area-inset-bottom, 0px)); background: var(--bg); }
.menu-top { display: flex; align-items: center; justify-content: space-between; height: 44px; padding: 0 4px; font-size: 16px; }
.menu-close { width: 40px; height: 40px; border: 0; border-radius: 10px; background: none; color: var(--white70); display: flex; align-items: center; justify-content: center; }
.menu-panel section { margin-top: 10px; padding: 6px 4px 8px; border-radius: 12px; background: var(--card); }
.menu-panel h2 { margin: 0; padding: 8px 10px 4px; font-size: 11px; font-weight: 600; letter-spacing: .8px; text-transform: uppercase; color: var(--white54); }
.menu-panel section a { display: block; padding: 10px 10px; border-radius: 8px; font-size: 14px; color: var(--white70); }
.menu-panel section a:active { background: rgba(255,255,255,.08); color: #fff; }
body.menu-open { overflow: hidden; }

/* "see all" link under a block: right aligned, text with an arrow */
.see-all { display: flex; justify-content: flex-end; padding: 8px 12px 0; }
.see-all a { display: inline-flex; align-items: center; gap: 2px; padding: 8px 6px 8px 12px; border-radius: 10px; font-size: 13px; font-weight: 600; color: var(--accent); }
.see-all a:hover, .see-all a:active { background: rgba(255,255,255,.06); }

/* stored accumulators: result of a slip and of each pick */
.slip-status { margin-left: 6px; padding: 2px 8px; border-radius: 999px; font-style: normal; font-size: 11px; font-weight: 700; background: rgba(255,255,255,.08); color: var(--white70); }
.slip-status.st-won { background: rgba(76,175,80,.18); color: var(--green, #4caf50); }
.slip-status.st-lost { background: rgba(229,57,53,.18); color: var(--red, #e53935); }
.slip-status.st-partial { background: rgba(255,179,0,.16); color: #ffb300; }
.leg-res { display: inline-block; margin-left: 6px; font-style: normal; font-weight: 700; }
.leg-res.res-won { color: var(--green, #4caf50); }
.leg-res.res-lost { color: var(--red, #e53935); }
.leg-res.res-void { color: var(--grey); }

/* sub-menu rows (accumulator tiers): the same button look as the main pills, a softer active state so the orange stays with the main menu */
.pill-tabs { gap: 6px; padding: 6px 12px 4px; overflow-x: auto; scrollbar-width: none; }
.pill-tabs::-webkit-scrollbar { display: none; }
.pill-tabs a { flex: none; height: 32px; padding: 0 14px; border-radius: 8px; background: var(--card); color: var(--white70); font-size: 11px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; white-space: nowrap; }
.pill-tabs a:hover { color: #fff; }
.pill-tabs a.active { background: rgba(255,255,255,.16); color: #fff; font-weight: 700; border-radius: 8px; }

/* ---------- header search button, pressed tiles, live minute, sticky league headings ---------- */
.search-btn { display: flex; align-items: center; justify-content: center; margin-left: auto; width: 40px; height: 40px; border-radius: 12px; background: rgba(255,255,255,.07); color: var(--white70); }
.search-btn:hover, .search-btn:active { background: rgba(255,255,255,.13); color: #fff; }
.search-btn svg, .search-form svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.search-btn + .burger, .head-find + .burger { margin-left: 8px; } /* the hidden search form sits between the two */

.tile, .slip-leg.wt, .sr-row, .hub-league, .pst-row, .side-list li { transition: background .15s, transform .12s; }
.tile:active, .slip-leg.wt:active, .sr-row:active, .hub-league:active, .pst-row:active { transform: scale(.985); background: rgba(255,255,255,.08); }

.t-time .live-min { color: var(--accent); }
/* the apostrophe of a live minute blinks (67') */
.min-tick { font-style: normal; animation: tick-blink 1s steps(1, end) infinite; } /* the apostrophe of a live minute (not .tick: that is the green badge of the match events) */
@keyframes tick-blink { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .min-tick { animation: none; } }

/* a competition's heading stays under the header while its matches scroll */
.league-head { position: sticky; top: max(0px, calc(var(--head-h, 52px) - var(--o, 0px))); z-index: 5; background: var(--bg); }
html.head-snap .league-head { transition: top var(--slide); }

/* search page */
.search-form { position: relative; margin: 10px 12px 6px; }
.search-form svg { position: absolute; left: 14px; top: 13px; color: var(--white54); pointer-events: none; }
.search-form input { width: 100%; height: 46px; padding: 0 14px 0 44px; border: 0; border-radius: 12px; background: rgba(255,255,255,.07); color: #fff; font: inherit; font-size: 16px; -webkit-appearance: none; appearance: none; }
.search-form input:focus { outline: none; background: rgba(255,255,255,.11); }
.search-form input::placeholder { color: var(--white54); }
.sr-title { margin: 16px 14px 6px; font-size: 11px; font-weight: 500; letter-spacing: .8px; text-transform: uppercase; color: var(--white54); }
.sr-hint { margin: 28px 16px; text-align: center; font-size: 14px; color: var(--grey); }
.sr-row { display: flex; align-items: center; gap: 12px; margin: 3px 12px; padding: 10px 12px; border-radius: 10px; background: rgba(255,255,255,.04); }
.sr-row img, .sr-row i { width: 24px; height: 24px; flex: none; object-fit: contain; }
.sr-names { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; font-size: 14px; }
.sr-names span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sr-when { width: 64px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 11px; color: var(--white70); text-align: center; }
.sr-sub { max-width: 34%; font-size: 11px; color: var(--grey); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pill-tabs::-webkit-scrollbar { display: none; }

/* polish.css */
/* Feel and finish: the live pill, favourites, skeletons and page transitions. Loaded after the page styles, so it may refine them. */

/* ---------- the live pill: in the header on every page, and beside the date on the fixtures pages (phones; wide screens have the LIVE pill in the top menu) ---------- */
.live-pill, .dn-live { display: inline-flex; align-items: center; justify-content: center; position: relative; flex: none; border-radius: 12px; color: #fff; }
.live-pill { height: 32px; padding: 0 11px; background: rgba(255,255,255,.08); margin-left: auto; margin-right: 6px; }
.live-pill + .search-btn { margin-left: 0; }
.live-pill.on { background: rgba(255,255,255,.14); }
/* the Live button beside the date, as in the app (widgets/horizontal_date_picker.dart): a faded orange card, a play circle and LIVE in orange, and the number of matches in play on its top right corner */
.dn-live { flex-direction: column; gap: 2px; width: 48px; height: 42px; margin: 0 14px 0 0; background: rgba(248,100,7,.2); transition: background .15s, transform .12s; }
.dn-live:hover { background: rgba(248,100,7,.28); }
.dn-live:active { transform: scale(.96); }
.dn-live-top { display: flex; align-items: center; gap: 5px; }
.dn-live span { font-size: 10px; font-weight: 700; letter-spacing: .6px; line-height: 1.1; color: var(--accent); }
.dn-live b { font-size: 13px; font-weight: 700; line-height: 1.1; color: #fff; } /* the number of matches in play under LIVE: no bubble */
@media (min-width: 900px) { .live-pill, .dn-live { display: none; } }

/* ---------- stars: follow a team or a competition, save a match ---------- */
.fav-btn { width: 40px; height: 40px; flex: none; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 12px; background: rgba(255,255,255,.07); color: var(--white54); cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background .15s, color .15s, transform .12s; }
.fav-btn svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linejoin: round; }
.fav-btn:hover { color: #fff; }
.fav-btn:active { transform: scale(.88); }
.fav-btn.on { color: var(--accent); background: var(--accent-faint, rgba(248,100,7,.2)); }
.fav-btn.on svg { fill: currentColor; }
.match-head { position: relative; }
.pf-head .fav-btn { margin-left: auto; }

/* ---------- the Favourites page and "My matches" ---------- */
.fav-title { margin: 14px 14px 2px; font-size: 20px; font-weight: 700; }
.fav-panel[hidden] { display: none; }
.fav-row { display: flex; align-items: center; gap: 10px; margin: 3px 12px; padding: 8px 8px 8px 12px; border-radius: 10px; background: rgba(255,255,255,.04); transition: background .15s, transform .12s; }
.fav-row a { flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px; font-size: 14px; }
.fav-row a span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fav-row img, .fav-row i { width: 24px; height: 24px; flex: none; object-fit: contain; }
.fav-row small { display: block; margin-top: 1px; font-size: 11px; color: var(--grey); }
.fav-row .fav-btn { width: 36px; height: 36px; background: none; }
.my-matches { margin: 4px 0 14px; }
.my-matches[hidden] { display: none; }
.my-title { margin: 10px 14px 2px; font-size: 13px; font-weight: 700; letter-spacing: .3px; color: var(--white70); }

/* ---------- skeletons: a placeholder with the shape of what is loading, so nothing jumps when it arrives ---------- */
.shim-tile, .shim-row { background: linear-gradient(100deg, rgba(255,255,255,.04) 30%, rgba(255,255,255,.09) 50%, rgba(255,255,255,.04) 70%) 0 0 / 200% 100%; animation: shim-move 1.3s linear infinite; }
.shim-tile { height: 62px; margin: 6px; border-radius: 10px; }
.shim-row { height: 48px; margin: 4px 12px; border-radius: 10px; }
@keyframes shim-move { to { background-position: -200% 0; } }
/* The shimmer of the Favourites matches: the shape of the real list, with the same sizes as .my-title, .league and .tile (static/js/favourites.js, templates/partials/fav_skeleton.html) */
.fsk-b { display: block; flex: none; border-radius: 6px; background: linear-gradient(100deg, rgba(255,255,255,.05) 30%, rgba(255,255,255,.11) 50%, rgba(255,255,255,.05) 70%) 0 0 / 200% 100%; animation: shim-move 1.3s linear infinite; }
.fsk-day { padding-bottom: 6px; }
.fsk-title { width: 74px; height: 14px; margin: 14px 14px 6px; }
.fsk-league { display: flex; align-items: center; height: 48px; margin: 6px 12px 0; }
.fsk-llogo { width: 26px; height: 26px; border-radius: 8px; }
.fsk-ltext { flex: 1; margin-left: 12px; display: flex; flex-direction: column; gap: 6px; }
.fsk-lname { width: 150px; max-width: 60%; height: 13px; }
.fsk-lsub { width: 84px; height: 10px; }
.fsk-star { width: 30px; height: 30px; border-radius: 15px; }
.fsk-tile { display: flex; align-items: center; margin: 3px 6px; padding: 10px 12px; height: 62px; border-radius: var(--r-tile, 12px); background: var(--card); }
.fsk-time { width: 36px; height: 14px; margin: 0 10px; }
.fsk-teams { flex: 1; min-width: 0; margin-left: 12px; display: flex; flex-direction: column; gap: 4px; }
.fsk-team { display: flex; align-items: center; gap: 6px; height: 19px; }
.fsk-logo { width: 19px; height: 19px; border-radius: 5px; }
.fsk-name { height: 12px; }
.fsk-name.w1 { width: 58%; } .fsk-name.w2 { width: 44%; } .fsk-name.w3 { width: 66%; } .fsk-name.w4 { width: 36%; }
.fsk-score { width: 40px; flex: none; margin-left: 8px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.fsk-score .fsk-b { width: 14px; height: 13px; }
@media (prefers-reduced-motion: reduce) { .fsk-b { animation: none; } }
@media (prefers-reduced-motion: reduce) { .shim-tile, .shim-row { animation: none; } }

/* ---------- page transitions: pages fade into each other, the header and the bottom bar stay where they are ---------- */
@view-transition { navigation: auto; }
.site-head { view-transition-name: site-head; }
.bottom-nav { view-transition-name: bottom-nav; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .16s; }
@media (prefers-reduced-motion: reduce) { ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; } }

/* the next page of a list: three placeholder tiles instead of a spinner */
.loader:has(.shim-tile) { display: block; padding: 6px 0 8px; }
.loader:has(.shim-tile)[hidden] { display: none; }

/* what is already followed is not suggested again */
.fav-suggest .fav-row:has(.fav-btn.on) { display: none; }

/* ---------- the Favourites tabs: one rounded track with a highlight that slides to the chosen tab (no lines) ---------- */
.fav-seg { position: relative; display: grid; grid-template-columns: repeat(var(--n, 3), 1fr); margin: 10px 12px 8px; padding: 4px; border-radius: 16px; background: rgba(255,255,255,.05); }
.fav-seg::before { content: ""; position: absolute; top: 4px; bottom: 4px; left: 4px; width: calc((100% - 8px) / var(--n, 3)); border-radius: 12px; background: rgba(255,255,255,.12); transform: translateX(calc(var(--i, 0) * 100%)); transition: transform .26s cubic-bezier(.3, .8, .3, 1); }
.fav-seg-btn { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; gap: 7px; min-height: 42px; padding: 0 6px; border: 0; border-radius: 12px; background: none; color: var(--white54); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: color .2s; }
.fav-seg-btn svg { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.fav-seg-btn.active { color: #fff; }
.fav-seg-btn.active svg { color: var(--accent); }
.fav-seg-btn em { min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: rgba(255,255,255,.14); color: #fff; font-style: normal; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; }
.fav-seg-btn em:empty { display: none; }
.fav-seg-btn.active em { background: var(--accent); }
@media (prefers-reduced-motion: reduce) { .fav-seg::before { transition: none; } }

/* ---------- the Favourites finder: a full-screen sheet to search, or browse by country and competition, and follow ---------- */
.finder-open { display: flex; align-items: center; gap: 10px; width: calc(100% - 24px); min-height: 46px; margin: 4px 12px 10px; padding: 0 14px; border: 0; border-radius: 12px; background: rgba(255,255,255,.05); color: var(--white70); font: inherit; font-size: 14px; font-weight: 600; text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background .15s, transform .12s; }
.finder-open:active { transform: scale(.985); background: rgba(255,255,255,.09); }
.finder-open svg { width: 19px; height: 19px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.finder-open span { flex: 1; }
.finder-open .chev { width: 16px; height: 16px; color: var(--white54); }
.finder { position: fixed; inset: 0; z-index: 95; display: flex; flex-direction: column; background: var(--bg); animation: finder-in .22s ease-out; }
.finder[hidden] { display: none; }
@keyframes finder-in { from { transform: translateY(24px); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .finder { animation: none; } }
.finder-bar { display: flex; align-items: center; gap: 8px; padding: calc(10px + env(safe-area-inset-top, 0px)) 12px 8px; }
.finder-back { width: 40px; height: 40px; flex: none; display: flex; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 12px; background: rgba(255,255,255,.07); color: #fff; cursor: pointer; }
.finder-back svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.finder-search.search-form { flex: 1; margin: 0; }
.finder-body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding-bottom: calc(28px + env(safe-area-inset-bottom, 0px)); }
body.finder-lock { overflow: hidden; }
.br-row { display: flex; align-items: center; gap: 12px; width: calc(100% - 24px); margin: 3px 12px; padding: 12px 12px; border: 0; border-radius: 10px; background: rgba(255,255,255,.04); color: inherit; font: inherit; font-size: 14px; text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background .15s, transform .12s; }
.br-row:active { transform: scale(.985); background: rgba(255,255,255,.08); }
.br-row img, .br-row i { width: 22px; height: 16px; flex: none; object-fit: cover; border-radius: 3px; }
.br-row span { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.br-row em { font-style: normal; font-size: 12px; color: var(--grey); }
.br-row svg { width: 16px; height: 16px; flex: none; fill: none; stroke: var(--white54); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.br-teams { flex: none; padding: 7px 12px; border: 0; border-radius: 10px; background: rgba(255,255,255,.08); color: var(--white70); font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; }
.br-teams:active { background: rgba(255,255,255,.14); }
.sr-follow { padding: 6px 6px 6px 12px; }
.sr-follow a { flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px; font-size: 14px; }
.sr-follow .fav-btn { width: 36px; height: 36px; background: none; }
.sr-follow .fav-btn.on { background: none; }

/* ---------- the app's follow stars: a round star at the end of a competition's heading, and beside each team of a match ---------- */
.league-bar { display: flex; align-items: center; position: sticky; top: max(0px, calc(var(--head-h, 52px) - var(--o, 0px))); z-index: 5; background: var(--bg); }
html.head-snap .league-bar { transition: top var(--slide); }
.league-bar .league-head { flex: 1; min-width: 0; }
.fav-btn.round { width: 28px; height: 28px; border-radius: 50%; background: var(--card); color: var(--white70); }
.fav-btn.round svg { width: 17px; height: 17px; }
.fav-btn.round.on { background: var(--card); color: var(--accent); }
.league-bar .fav-btn.round { margin-right: 24px; } /* its centre sits over the centre of the goals column of the tiles below (tile margin 6 + padding 12 + half of the 40px score column = 38px from the edge) */
.mh-star { flex: none; width: 34px; display: flex; justify-content: center; padding-top: 6px; }
@media (prefers-reduced-motion: reduce) { .league-bar { transition: none; } }

/* the match's own star: a pill with a word in the top bar (like the app bar's star), a small round one in the pinned score bar */
.fav-btn.pill { width: auto; height: 34px; gap: 6px; padding: 0 14px 0 11px; border-radius: 17px; background: var(--card); color: var(--white70); font: inherit; font-size: 12px; font-weight: 600; }
.fav-btn.pill svg { width: 17px; height: 17px; }
.fav-btn.pill.on { background: var(--card); color: var(--accent); }
.match-top .fav-btn.pill { margin-left: auto; flex: none; }
.mc-star { flex: none; display: flex; margin-left: 2px; }
.mc-star .fav-btn.round { width: 26px; height: 26px; }

/* ---------- the message after a favourite changes: the app's snackbar (a light card, a green check, a green bar at its left end) ---------- */
.toast { position: fixed; left: 16px; right: 16px; bottom: calc(92px + env(safe-area-inset-bottom, 0px)); z-index: 120; max-width: 480px; margin: 0 auto; display: flex; align-items: center; gap: 12px; padding: 12px 12px 12px 18px; border-radius: 16px; background: #f2f2f2; color: #1a1a1a; box-shadow: 0 8px 24px rgba(0,0,0,.45), 0 4px 16px rgba(42,185,118,.12); overflow: hidden; opacity: 0; pointer-events: none; transform: translateY(56px); transition: transform .48s cubic-bezier(.22, 1, .36, 1), opacity .36s ease; }
.toast::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: linear-gradient(#2ab976, rgba(42,185,118,.5)); }
.toast.show { opacity: 1; pointer-events: auto; transform: none; }
.toast-icon { width: 36px; height: 36px; flex: none; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: rgba(42,185,118,.15); color: #2ab976; }
.toast-icon svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.toast-msg { flex: 1; min-width: 0; font-size: 13.5px; font-weight: 500; line-height: 1.4; }
.toast-x { width: 28px; height: 28px; flex: none; display: flex; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 8px; background: none; color: rgba(26,26,26,.4); cursor: pointer; }
.toast-x svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
@media (min-width: 900px) { .toast { bottom: 28px; } }
@media (prefers-reduced-motion: reduce) { .toast { transform: none; transition: opacity .2s; } }

/* ---------- the match page tabs: the Favourites page's track, with a highlight that slides to the chosen tab (the track scrolls sideways when the tabs do not fit) ---------- */
.tabs-wrap { padding: 6px 12px; background: var(--bg); }
.tabs-wrap .tabs { position: relative; gap: 2px; padding: 4px; border-radius: 16px; background: rgba(255,255,255,.05); }
.tabs-wrap .tabs::before { content: ""; position: absolute; top: 4px; bottom: 4px; left: 0; width: var(--w, 0px); transform: translateX(var(--x, 0px)); border-radius: 12px; background: rgba(255,255,255,.12); pointer-events: none; }
.tabs-wrap .tabs.ready::before { transition: transform .26s cubic-bezier(.3, .8, .3, 1), width .26s cubic-bezier(.3, .8, .3, 1); }
.tabs-wrap .tab { position: relative; z-index: 1; height: 38px; padding: 0 14px; border-radius: 12px; font-size: 13px; font-weight: 600; background: none; transition: color .2s; }
.tabs-wrap .tab.active { background: none; color: #fff; font-weight: 700; }
.tabs-wrap .ld-tab { background: #1e1e1e; }
@media (prefers-reduced-motion: reduce) { .tabs-wrap .tabs.ready::before { transition: none; } }

/* the strong picks page: the tiles use the full width with a margin, like the accumulator pages */
.strong-picks .slip-leg.wt { margin: 0 12px 6px; }
.strong-picks .hub-note { padding: 8px 14px; color: var(--grey); font-size: 12px; }
.pick-summary { display: flex; color: #fff; transition: background .15s, transform .12s; align-items: center; justify-content: space-between; gap: 14px; margin: 4px 12px 12px; padding: 12px 16px; border-radius: 14px; background: rgba(255,255,255,.05); }
.pick-summary.perfect { background: linear-gradient(100deg, rgba(76,175,80,.2), rgba(76,175,80,.06)); }
.ps-score { display: flex; align-items: baseline; gap: 7px; }
.ps-score b { font-size: 34px; font-weight: 800; line-height: 1; color: #fff; }
.pick-summary.perfect .ps-score b { color: var(--green, #4caf50); }
.ps-score span { font-size: 14px; font-weight: 600; color: var(--white70); }
.ps-side { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; min-width: 0; }
.ps-dots { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
.ps-dots i.void { background: none; box-shadow: inset 0 0 0 2px rgba(255,255,255,.3); }
.ps-dots i.open { background: rgba(255,255,255,.1); }
.ps-side small { font-size: 12px; color: var(--white54); }

/* Desktop sidebar: the Favourites card (Matches, Leagues, Teams with their counts) */
.side-fav .side-list a { gap: 10px; }
.side-fav svg { flex: none; width: 20px; height: 20px; fill: none; stroke: var(--white54); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.side-fav .side-name { flex: 1; font-size: 14px; }
.side-fav em { font-style: normal; min-width: 22px; padding: 1px 7px; border-radius: 10px; background: rgba(255,255,255,.09); font-size: 12px; font-weight: 600; color: #fff; text-align: center; }
.side-fav em:empty { display: none; }
@media (max-width: 420px) { .fav-seg-btn svg { display: none; } } /* four tabs on a narrow phone: words and counts only */

/* Home: the Banker Tips card. Always there; when yesterday's list did well it also says how it went, with one mark for each pick. The orange is kept soft */
.banker-card { display: flex; align-items: center; gap: 12px; margin: 10px 12px 6px; padding: 13px 14px; border-radius: 16px; background: linear-gradient(105deg, rgba(248,100,7,.15), rgba(248,100,7,.03) 70%), var(--card); color: #fff; transition: background .15s, transform .12s; }
.banker-card:hover { background: linear-gradient(105deg, rgba(248,100,7,.2), rgba(248,100,7,.05) 70%), var(--card); }
.banker-card:active { transform: scale(.99); }
.bc-badge { flex: none; width: 40px; height: 40px; border-radius: 13px; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.1); }
.bc-badge svg { width: 22px; height: 22px; fill: none; stroke: #fff; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.bc-main { flex: 1; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.bc-main b { font-size: 11px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--accent); }
.bc-result { font-size: 16px; font-weight: 700; line-height: 1.25; }
.bc-dots { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 3px; }
/* one small mark per pick: a tick when it won, a cross when it lost, a quiet dot while it is still to play */
.bc-dots i, .ps-dots i { position: relative; width: 16px; height: 16px; border-radius: 50%; background: rgba(255,255,255,.14); }
.bc-dots i.won::before, .ps-dots i.won::before, .bc-dots i.lost::before, .ps-dots i.lost::before { position: absolute; inset: 0; font-style: normal; font-size: 10px; font-weight: 800; line-height: 16px; text-align: center; color: #fff; }
.bc-dots i.won, .ps-dots i.won { background: var(--green, #4caf50); }
.bc-dots i.won::before, .ps-dots i.won::before { content: "\2713"; }
.bc-dots i.lost, .ps-dots i.lost { background: #a05656; }
.bc-dots i.lost::before, .ps-dots i.lost::before { color: #fff; }
.bc-dots i.lost::before, .ps-dots i.lost::before { content: "\2715"; }
.bc-cta { flex: none; display: inline-flex; align-items: center; gap: 8px; }
.bc-cta em { font-style: normal; font-size: 12px; font-weight: 600; color: var(--white70); }
.bc-cta svg { padding: 6px; box-sizing: content-box; width: 18px; height: 18px; border-radius: 50%; background: rgba(255,255,255,.08); color: var(--white70); }
@media (max-width: 480px) { .bc-cta em { display: none; } .bc-result { font-size: 15px; } }

/* the slimmer card: less padding, a smaller badge and smaller marks (the home page and the AI tips page) */
.banker-card { gap: 10px; padding: 9px 12px; border-radius: 14px; }
.bc-badge { width: 34px; height: 34px; border-radius: 11px; }
.bc-badge svg { width: 19px; height: 19px; }
.bc-main { gap: 2px; }
.bc-main b { font-size: 10px; }
.bc-result { font-size: 14px; }
.bc-dots { gap: 3px; margin-top: 2px; }
.bc-dots i { width: 13px; height: 13px; }
.bc-dots i.won::before, .bc-dots i.lost::before { font-size: 8px; line-height: 13px; }
.bc-soon { font-size: 12px; }
.bc-cta svg { padding: 4px; width: 16px; height: 16px; }
/* on the AI tips page the card has the same side margins as the tiles under it */
.bk-slot .banker-card { margin: 6px 6px 4px; }

/* a lost pick is a muted dusty red, not the bright alert red (owner's choice) */
.wt-res .lost { background: #a05656; color: #fff; }

/* Banker Tips page while today's list is not there yet (or there is none): a centred state with the time it arrives and a live countdown (static/js/countdown.js) */
.bk-state { display: flex; flex-direction: column; align-items: center; text-align: center; margin: 8px 12px 10px; padding: 24px 14px 6px 14px; border-radius: 18px; background: var(--card); }
.bk-badge { width: 52px; height: 52px; border-radius: 16px; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.06); margin-bottom: 14px; }
.bk-badge svg { width: 26px; height: 26px; fill: none; stroke: var(--white54); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.bk-state h2 { margin: 0 0 16px; font-size: 17px; font-weight: 700; line-height: 1.35; color: #fff; }
.bk-state h2 .local-time { color: var(--accent); white-space: nowrap; }
/* the foot: the timer on the left, the link on the right */
.bk-foot { align-self: stretch; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.bk-count { padding-left: 4px; font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--white54); text-align: left; }
.bk-count:empty { visibility: hidden; }
.bk-link { flex: none; display: inline-flex; align-items: center; gap: 3px; padding: 8px 6px 8px 12px; border-radius: 10px; font-size: 13px; font-weight: 600; color: var(--white54); white-space: nowrap; transition: background .15s, color .15s; }
.bk-link:hover, .bk-link:active { background: rgba(255,255,255,.07); color: #fff; }
/* a quiet pointer to the other Tips tabs while the list is not there */
.bk-browse { margin: 0 12px 12px; padding: 0 4px; text-align: center; font-size: 13px; line-height: 1.6; color: var(--white54); }
.bk-browse a { font-weight: 600; color: var(--white70); }
.ai-pills { padding-bottom: 8px; }
.bk-browse a:hover, .bk-browse a:active { color: #fff; }
/* yesterday's record under the waiting panel: the result bar with a small caption */
.bk-yesterday { margin-top: 0; }
.bk-y-main { display: flex; flex-direction: column; gap: 4px; flex: none; }
.bk-y-main small { font-size: 11px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--white54); }
.ps-chev { flex: none; color: var(--white54); }
/* the home card before the list is there: the same card, with the countdown under the time */
.bc-soon { font-size: 13px; font-weight: 600; color: var(--white54); }
.bc-soon:empty { display: none; }

/* The spinner in the middle of the screen while the next page is on its way (static/js/nav-spinner.js). It does not block taps. */
.nav-spin { position: fixed; inset: 0; z-index: 300; display: flex; align-items: center; justify-content: center; pointer-events: none; opacity: 0; transition: opacity .2s; }
.nav-spin.show { opacity: 1; }
.nav-spin-disc { width: 64px; height: 64px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: #f4f4f4; box-shadow: 0 10px 30px rgba(0,0,0,.65), 0 0 0 6px rgba(255,255,255,.08); } /* a light disc: it stands out on the dark page */
.nav-spin .spinner { width: 32px; height: 32px; background: conic-gradient(from 0deg, rgba(248,100,7,.12), var(--accent, #f86407)); } /* the site's ring, in orange, with a thicker stroke */
.nav-spin .spinner { -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px)); mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 4px)); }

/* Scroll anchoring off on the pages whose list loads more on scroll. When content is added above what is on screen, the browser keeps one visible element where it was. A visitor
   at the end of a list sees mostly the footer, so the browser kept the footer in place as each page arrived and carried the view down with it: the visitor stayed "at the
   bottom", the next page was asked for, and the list loaded to its very end by itself (a browser test: one scroll to the bottom loaded all 391 tiles of a day). The tiles have
   fixed heights, so there is little for anchoring to protect here. */
body:has(#list[data-base]), body:has(#list[data-base]) * { overflow-anchor: none; }

/* The end of a list while the next page loads: placeholders in the shape of the tiles (static/js/fixtures-list.js prepareLoader) */
.loader.sk-loader { display: block; padding: 0; }
.loader.sk-loader[hidden] { display: none; }
.loader.sk-loader .sk { padding: 4px 0 12px; }

/* The "Load more" button under a list that loads on scroll (fixtures, live, tips): a safety net for a visitor who reaches the end before the next page has been asked for */
.more-wrap { display: flex; justify-content: center; padding: 8px 12px 24px; }
.more-wrap[hidden] { display: none; }
.more-btn { min-width: 150px; min-height: 42px; padding: 0 24px; border: 0; border-radius: 14px; background: rgba(255,255,255,.08); color: #fff; font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; transition: background .15s, transform .12s; }
.more-btn:hover { background: rgba(255,255,255,.13); }
.more-btn:active { transform: scale(.97); }

/* Banker Tips results: one row per day, the same marks as the result strip */
.hist { padding: 0 12px 16px; }
.hist-row { display: flex; align-items: center; gap: 12px; margin: 6px 0; padding: 12px 14px; border-radius: 14px; background: rgba(255,255,255,.05); color: #fff; transition: background .15s, transform .12s; }
.hist-row:hover { background: rgba(255,255,255,.08); }
.hist-row:active { transform: scale(.99); }
.hist-row.perfect { background: linear-gradient(100deg, rgba(76,175,80,.2), rgba(76,175,80,.06)); }
.hist-main { flex: none; display: flex; flex-direction: column; gap: 2px; min-width: 96px; }
.hist-main b { font-size: 12px; font-weight: 600; color: var(--white54); }
.hist-main span { font-size: 16px; font-weight: 700; }
.hist-row .ps-dots { flex: 1; justify-content: flex-end; }
.hist-go { flex: none; color: var(--white38, rgba(255,255,255,.38)); }
.hist-more-wrap { display: flex; justify-content: center; margin: 12px 0 4px; }
.hist-more { display: inline-flex; align-items: center; justify-content: center; min-width: 140px; min-height: 40px; padding: 0 22px; border-radius: 12px; background: rgba(255,255,255,.08); font-size: 14px; font-weight: 600; color: #fff; }
.hist-more:hover { background: rgba(255,255,255,.13); }
.hist-more.is-loading { pointer-events: none; } /* the button keeps its size while the spinner shows */
.hist-more .spinner { width: 20px; height: 20px; }
@media (max-width: 400px) { .hist-main { min-width: 82px; } .hist-main span { font-size: 15px; } }

/* the result strip opens the results page; the date menu has the same way in */
a.pick-summary:hover { background: rgba(255,255,255,.08); }
a.pick-summary.perfect:hover { background: linear-gradient(100deg, rgba(76,175,80,.28), rgba(76,175,80,.09)); }
a.pick-summary:active { transform: scale(.99); }
.ps-more { display: inline-flex; align-items: center; gap: 1px; font-size: 12px; font-weight: 600; color: var(--white70); }

/* Banker Tips page: the results link sits at the right of the breadcrumb row */
/* a page title with a link at the right of the same row (Banker Tips: Past results) */
.head-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.head-row h1 { min-width: 0; }
.head-link { flex: none; display: inline-flex; align-items: center; gap: 1px; font-size: 13px; font-weight: 600; color: var(--white70); }
.head-link:hover { color: #fff; }

/* The 404 page */
.err-page { padding: 36px 20px 28px; text-align: center; }
.err-code { margin: 0; font-size: 64px; font-weight: 800; line-height: 1; letter-spacing: -2px; color: rgba(255,255,255,.14); }
.err-page h1 { margin: 6px 0 8px; font-size: 22px; font-weight: 700; }
.err-text { margin: 0 auto 20px; max-width: 340px; font-size: 14px; line-height: 1.5; color: var(--white54); }
.err-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.err-links a { padding: 10px 16px; border-radius: 12px; background: rgba(255,255,255,.08); font-size: 14px; font-weight: 600; color: #fff; }
.err-links a:first-child { background: var(--accent); }
.err-links a:hover { background: rgba(255,255,255,.14); }
.err-links a:first-child:hover { background: #ff7a26; }

/* ---------- the "add to home screen" card (static/js/install.js): phones only, above the floating bottom bar, no borders ---------- */
.install-card { position: fixed; z-index: 55; left: 12px; right: 12px; bottom: calc(92px + env(safe-area-inset-bottom, 0px)); max-width: 440px; margin: 0 auto; display: flex; align-items: center; gap: 12px; padding: 12px 8px 12px 12px;
  border-radius: 18px; background: #3d3d40; box-shadow: 0 14px 38px rgba(0,0,0,.7), 0 3px 10px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.1); animation: install-in .32s ease-out; } /* a lighter surface than the dark page so it stands out, lifted by its shadow and a soft top highlight (no border) */
@keyframes install-in { from { transform: translateY(16px); opacity: 0; } }
.install-card img { width: 44px; height: 44px; border-radius: 10px; flex: none; }
.install-card .ic-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.install-card .ic-text b { font-size: 14px; font-weight: 700; line-height: 1.25; }
.install-card .ic-text span { font-size: 12px; color: rgba(255,255,255,.78); line-height: 1.35; }
.install-card .ic-share { vertical-align: -3px; }
.install-card .ic-go { flex: none; height: 36px; padding: 0 14px; border: 0; border-radius: 10px; background: #fff; color: #161616; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.install-card .ic-x { flex: none; width: 34px; height: 34px; border: 0; border-radius: 10px; background: none; color: rgba(255,255,255,.7); display: flex; align-items: center; justify-content: center; cursor: pointer; }
@media (min-width: 900px) { .install-card { display: none; } }

/* the banker summary is one row: the score, the dots (they shrink to fit, never wrap) and, once the day is settled, an arrow to the past results */
.pick-summary { gap: 10px; padding: 12px 14px; }
.pick-summary .ps-score { flex: none; white-space: nowrap; }
.pick-summary .ps-score b { font-size: 30px; }
.pick-summary .ps-score span { font-size: 13px; }
.pick-summary .ps-dots { flex: 1 1 0; min-width: 0; flex-wrap: nowrap; justify-content: flex-end; gap: 3px; }
.pick-summary .ps-dots i { flex: 0 1 16px; min-width: 7px; height: auto; aspect-ratio: 1; }
.pick-summary .ps-dots i::before { font-size: clamp(6px, 2.6vw, 10px); line-height: 1; display: flex; align-items: center; justify-content: center; }
.ps-chev { flex: none; color: var(--white54); }
.ps-void { margin-left: 6px; font-style: normal; font-size: 11px; font-weight: 500; color: var(--white54); } /* voided picks: a quiet note on the same line, it never adds a row */

/* Share buttons (static/js/share.js): the picture and the link of a page go to WhatsApp, Telegram and the like through the phone's share sheet */
.share-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 34px; padding: 0 12px; border: 0; border-radius: 14px; background: rgba(255,255,255,.07); color: var(--white70); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; transition: background .15s, color .15s; }
.share-btn svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.share-btn.icon { width: 38px; height: 38px; padding: 0; border-radius: 16px; }
.share-btn:hover, .share-btn:active { background: rgba(255,255,255,.14); color: #fff; }
.share-btn.busy { opacity: .75; }
.share-btn.busy svg { animation: share-pulse .8s ease-in-out infinite; }
.share-btn.ready { background: rgba(255,106,0,.22); color: #fff; }
@keyframes share-pulse { 50% { opacity: .25; } }
.head-actions { flex: none; display: flex; align-items: center; gap: 12px; }
/* the match page's top bar: the star and the share icon, side by side, with softer corners */
.mt-actions { margin-left: auto; flex: none; display: flex; align-items: center; gap: 8px; }
.fav-btn.top, .share-btn.top { width: 38px; height: 38px; padding: 0; border-radius: 16px; background: var(--card); color: var(--white70); }
.fav-btn.top svg, .share-btn.top svg { width: 19px; height: 19px; }
.fav-btn.top.on { background: var(--card); color: var(--accent); }
.share-btn.top:hover, .share-btn.top:active { background: rgba(255,255,255,.14); color: #fff; }
.share-toast { position: fixed; left: 50%; bottom: calc(96px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%); z-index: 100; padding: 10px 16px; border-radius: 12px; background: #2a2a2d; color: #fff; font-size: 13px; font-weight: 600; box-shadow: 0 6px 20px rgba(0,0,0,.5); }

/* match-page.css */
/* Match page: pinned scoreboard and tabs, swiping between tabs, accumulators with this match. */

/* ---------- Match page: a compact scoreboard and the tab bar stay at the top once the big header has scrolled away ---------- */
.match-page { --stick: 52px; } /* the site header (sticky) */
@media (max-width: 899px) { .match-page { --stick: 0px; } .match-page .site-head { position: relative; z-index: 50; } } /* phones: the header scrolls away, the logo and bottom bar remain (relative + z-index so the search results drop over the sticky match bar) */
/* phones: the trail repeats the league of the header row above it, so only its last item, the match name, stays (the BreadcrumbList in the page's head is not affected) */
@media (max-width: 899px) {
  /* the trail takes no room on a phone (the header row above already shows the league, the scoreboard the teams); it stays in the page for screen readers and search engines,
     hidden the way .sr-only is, and the BreadcrumbList in the head is not affected */
  .match-page .crumbs { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
}
.match-page .tabs-wrap { position: sticky; top: calc(var(--stick) + 52px); z-index: 40; }
/* The pinned scoreboard: the header's own gradient, lifted by a shadow, with larger logos and the score in a soft pill (its height, 52px, is also in static/js/match-page.js) */
.mh-compact {
  position: sticky; top: var(--stick); z-index: 41; height: 52px; margin-bottom: -52px; display: flex; align-items: center; gap: 12px; padding: 0 12px;
  background: linear-gradient(90deg, #1a1a1a, var(--bg) 45%, #1a1a1a); border-radius: 0 0 16px 16px; box-shadow: 0 10px 24px rgba(0,0,0,.6);
  opacity: 0; transform: translateY(-8px); pointer-events: none; transition: opacity .25s ease, transform .25s cubic-bezier(.4,0,.2,1);
}
.mh-compact.show { opacity: 1; transform: none; pointer-events: auto; }
@media (prefers-reduced-motion: reduce) { .mh-compact { transition: none; transform: none; } }
.mc-back { flex: none; width: 36px; height: 40px; margin: 0 -4px 0 -6px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--white70); } /* the same back arrow as the header row, so a visitor can leave from the middle of the page */
.mc-back:active { background: rgba(255,255,255,.1); color: #fff; }
.mc-team { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 700; }
.mc-team span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mc-team.away { justify-content: flex-end; text-align: right; }
.mc-team img { flex: none; width: 30px; height: 30px; padding: 2px; border-radius: 50%; object-fit: contain; background: rgba(255,255,255,.06); }
.mc-mid { flex: none; min-width: 78px; padding: 5px 12px; display: flex; flex-direction: column; align-items: center; line-height: 1.1; font-size: 24px; font-weight: 800; }
.mc-mid em { font-style: normal; font-size: 10px; font-weight: 600; color: var(--grey); }
.mc-mid em.is-live, .mc-mid b.is-live { color: var(--red); }
.mc-mid .pulse { display: inline-block; margin-right: 7px; vertical-align: middle; background: var(--red); }
.match-page .panel-h { scroll-margin-top: calc(var(--stick) + 120px); }

/* swiping between match tabs: the new tab slides in from the side it was swiped from */
@keyframes tab-from-right { from { opacity: 0; transform: translateX(28px); } to { opacity: 1; transform: none; } }
@keyframes tab-from-left { from { opacity: 0; transform: translateX(-28px); } to { opacity: 1; transform: none; } }
.panel.from-right { animation: tab-from-right .18s ease-out; }
.panel.from-left { animation: tab-from-left .18s ease-out; }
@media (prefers-reduced-motion: reduce) { .panel.from-right, .panel.from-left { animation: none; } }


/* accumulators with this match (match page, Tips tab): the match itself is tinted inside each slip */
.acca-around { margin-top: 14px; }
.aa-title { margin: 0; padding: 4px 16px 8px; font-size: 12px; font-weight: 500; letter-spacing: .3px; color: var(--white54); }
.slip-leg.is-this { background: rgba(255,255,255,.1); }

/* Odds tab: one line that opens the Tips tab at the accumulators with this match */
.acca-link { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 4px 0 12px; padding: 12px 14px; border-radius: 12px; background: var(--card); font-size: 13px; font-weight: 600; color: var(--accent); }
.acca-link:active { background: rgba(255,255,255,.08); }
