/* bettingsites.global stylesheet */
:root{
  --blue:#0b3fa8;
  --blue-fill:#0b3fa8;
  --blue-dark:#072a71;
  --blue-ink:#04173d;
  --green:#16a34a;
  --green-dark:#12813c;
  --green-cta:#0f7f37;
  --green-cta-dark:#0a5c26;
  --green-text:#0c6e2f;
  --link-dark:#6d9bea;
  --gold:#f5b301;
  --ink:#12172b;
  --body:#3b4256;
  --muted:#666d7b;
  --line:#e3e7ef;
  --bg:#f4f6fb;
  --card:#ffffff;
  --radius:12px;
  --shadow:0 1px 2px rgba(9,20,54,.06),0 8px 24px rgba(9,20,54,.06);
  --wrap:1200px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:hidden}
body{
  margin:0;font-family:var(--font);font-size:17px;line-height:1.6;
  color:var(--body);background:var(--bg);overflow-x:hidden;
}
img,svg{max-width:100%}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:3px solid #ffb703;outline-offset:2px;border-radius:4px}
h1,h2,h3,h4{color:var(--ink);line-height:1.18;margin:0 0 .5em;font-weight:800;letter-spacing:-.015em}
h1{font-size:clamp(1.7rem,4.6vw,2.75rem)}
h2{font-size:clamp(1.35rem,3vw,2rem)}
h3{font-size:clamp(1.1rem,2.2vw,1.35rem)}
p{margin:0 0 1em}
ul,ol{margin:0 0 1em;padding-left:1.15em}
li{margin-bottom:.4em}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 18px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:0;background:#fff;padding:12px 16px;z-index:99}
.skip:focus{left:8px;top:8px}

/* notice bar */
.notice{background:var(--blue-ink);color:#dbe4f7;font-size:13.5px}
.notice .wrap{display:flex;gap:10px;align-items:center;padding:7px 14px;min-height:38px}
.notice p{margin:0}
.notice a{color:#fff;text-decoration:underline}
.notice button{
  margin-left:auto;background:transparent;border:1px solid rgba(255,255,255,.35);color:#fff;
  width:36px;height:36px;min-width:36px;border-radius:8px;cursor:pointer;font-size:15px;line-height:1
}
.notice button:hover{background:rgba(255,255,255,.14)}

/* header */
.site-head{position:sticky;top:0;z-index:60;background:#fff;border-bottom:1px solid var(--line)}
.head-row{display:flex;align-items:center;gap:16px;min-height:62px;padding:8px 18px}
.brandmark{display:flex;align-items:center;gap:9px;min-height:44px;padding:4px 2px;font-weight:800;color:var(--blue-ink);font-size:19px;letter-spacing:-.02em}
.brandmark:hover{text-decoration:none}
.brandmark span.b{color:var(--blue)}
.brandmark span.g{color:var(--green-text)}
.brandmark span.g.sm{font-size:.78em;letter-spacing:0}
.nav{margin-left:auto}
.nav ul{display:flex;list-style:none;margin:0;padding:0;gap:2px;align-items:center}
.nav a{display:block;padding:10px 11px;font-size:14.5px;font-weight:650;color:#22304d;border-radius:8px;white-space:nowrap}
.nav a:hover{background:#eef2fb;text-decoration:none}
.nav a[aria-current="page"]{color:var(--blue);background:#eef2fb}
.has-sub{position:relative}
.has-sub>button{
  display:flex;align-items:center;gap:6px;background:none;border:0;font:inherit;font-size:14.5px;font-weight:650;
  color:#22304d;padding:10px 11px;border-radius:8px;cursor:pointer
}
.has-sub>button:hover{background:#eef2fb}
.has-sub>button::after{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.sub{
  position:absolute;top:100%;right:0;min-width:230px;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow);padding:8px;display:none;
  grid-template-columns:1fr 1fr;gap:2px
}
.has-sub[data-open="true"] .sub{display:grid}
.sub a{white-space:nowrap;font-weight:550;font-size:14px}
.head-cta{
  display:inline-flex;align-items:center;justify-content:center;background:var(--green-cta);color:#fff;font-weight:750;
  padding:11px 16px;border-radius:999px;font-size:14.5px;min-height:44px;white-space:nowrap;flex:0 0 auto
}
.head-cta:hover{background:var(--green-cta-dark);text-decoration:none;color:#fff}
.burger{display:none;background:#fff;border:1px solid var(--line);border-radius:10px;width:46px;height:44px;cursor:pointer;align-items:center;justify-content:center}
.burger span{display:block;width:20px;height:2px;background:var(--ink);position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:20px;height:2px;background:var(--ink)}
.burger span::before{top:-6px}.burger span::after{top:6px}
.drawer{display:none}
@media (max-width:1080px){
  .nav{display:none}
  .burger{display:flex;margin-left:auto}
  .head-cta{display:none}
  .drawer[data-open="true"]{display:block;border-top:1px solid var(--line);background:#fff;max-height:70vh;overflow:auto}
  .drawer ul{list-style:none;margin:0;padding:8px 18px 18px}
  .drawer a{display:block;padding:13px 4px;font-weight:650;color:#22304d;border-bottom:1px solid var(--line);min-height:44px}
  .drawer .sub-label{font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:14px 4px 4px;font-weight:750}
  .drawer .head-cta{display:flex;margin-top:14px}
}

/* ticker */
.ticker{background:#08265f;color:#e8eefc;overflow:hidden;position:relative}
.ticker-inner{display:flex;align-items:center;gap:14px;padding:9px 0 9px 14px;max-width:100%;overflow:hidden}
.ticker-pill{
  display:inline-flex;align-items:center;gap:8px;background:var(--green-cta);color:#fff;font-weight:750;font-size:13px;
  padding:7px 13px;border-radius:999px;white-space:nowrap;flex:0 0 auto
}
.ticker-pill i{width:8px;height:8px;border-radius:50%;background:#fff;animation:blink 1.6s infinite}
@keyframes blink{50%{opacity:.25}}
.ticker-track{display:flex;min-width:0;flex:1 1 auto;gap:10px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-behavior:auto}
.ticker-track::-webkit-scrollbar{display:none}
.chip{
  flex:0 0 auto;display:flex;flex-direction:column;gap:1px;background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.13);border-radius:10px;padding:6px 12px;white-space:nowrap
}
.chip b{font-size:13.5px;font-weight:700;color:#fff}
.chip small{font-size:12px;color:#a9bde6}

/* hero */
.hero{position:relative;background:linear-gradient(135deg,#04173d 0%,#0b3fa8 52%,#062a6f 100%);color:#eaf0ff;overflow:hidden}
.hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(700px 340px at 78% 8%,rgba(22,163,74,.32),transparent 70%),
    radial-gradient(520px 420px at 8% 96%,rgba(245,179,1,.16),transparent 70%);
}
.hero .field{position:absolute;inset:auto 0 -10% 0;height:70%;opacity:.16;pointer-events:none}
.hero .wrap{position:relative;z-index:2;padding:30px 18px 34px}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:26px;align-items:start}
.hero h1{color:#fff;margin-bottom:.35em;text-wrap:balance}
.hero .sub{font-size:clamp(1.05rem,2.1vw,1.3rem);font-weight:700;color:#a8f0c2;margin:0 0 18px}
/* Masthead trust bar sits directly above the hero H1. One tight line on desktop,
   wraps to two rows on mobile. Green vertical rule between items keeps the bar
   feeling like a newspaper masthead rather than a bullet list. */
.masthead-trust{display:flex;flex-wrap:wrap;gap:8px 14px;margin:0 0 12px;padding:0;font-size:12.5px;font-weight:700;color:#cfe0ff;letter-spacing:.06em;text-transform:uppercase}
.masthead-trust span{position:relative;padding-right:14px}
.masthead-trust span:not(:last-child)::after{content:"";position:absolute;right:0;top:2px;bottom:2px;width:2px;background:var(--green);border-radius:1px}
.masthead-trust span:last-child{padding-right:0}
.hero-cta{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--green-cta);color:#fff;font-weight:800;
  padding:14px 22px;border-radius:10px;min-height:48px;font-size:16.5px;box-shadow:0 6px 18px rgba(3,15,45,.35)
}
.hero-cta:hover{background:var(--green-cta-dark);color:#fff;text-decoration:none}
.strip{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;margin-top:22px;padding-top:18px;border-top:1px solid rgba(255,255,255,.18);font-size:14.5px;color:#cfdcf8}
.strip b{color:#fff;font-weight:750}
.strip .item{display:inline-flex;align-items:center;gap:7px}
.disclose-row{display:flex;justify-content:flex-end;margin-top:14px}
.disclose-btn{
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.28);color:#fff;font:inherit;font-size:13px;
  padding:9px 13px;border-radius:999px;cursor:pointer;min-height:38px;display:inline-flex;gap:8px;align-items:center
}
.disclose-btn:hover{background:rgba(255,255,255,.2)}
.age{background:var(--gold);color:#1b1400;font-weight:800;border-radius:999px;padding:2px 8px;font-size:12px}

/* countdown card */
.countdown{background:rgba(255,255,255,.96);color:var(--ink);border-radius:14px;padding:16px;box-shadow:var(--shadow)}
.countdown .lbl{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);font-weight:800;margin:0 0 6px}
.countdown .match{font-weight:800;font-size:16px;color:var(--ink);margin:0 0 4px;line-height:1.25}
.countdown .ko{font-size:13px;color:var(--muted);margin:0 0 12px}
.clock{display:flex;gap:6px;align-items:flex-end}
.clock .unit{flex:1;background:var(--blue-ink);color:#fff;border-radius:10px;padding:8px 4px;text-align:center}
.clock .unit b{display:block;font-size:26px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.clock .unit small{font-size:10.5px;letter-spacing:.08em;color:#a9bde6}
.countdown .go{display:flex;margin-top:12px;justify-content:center;background:var(--green-cta);color:#fff;font-weight:750;border-radius:9px;padding:11px;min-height:44px;align-items:center}
.countdown .go:hover{background:var(--green-cta-dark);color:#fff;text-decoration:none}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr}.countdown{order:-1}}

/* sections */
main{display:block}
.section{padding:38px 0}
.section.tight{padding:26px 0}
.section-head{max-width:760px;margin-bottom:20px}
.section-head p{margin:0;color:var(--body)}
.eyebrow{font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:var(--blue);font-weight:800;margin:0 0 6px}
.stamp{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13.5px;color:var(--muted);margin:0 0 14px}
.stamp b{color:var(--ink);font-weight:700}
@media(max-width:640px){
  /* Stack the byline vertically on phones so "Written by", "Fact checked by" and the
     date each get their own line instead of wrapping mid-name. */
  .stamp{flex-direction:column;gap:4px}
}

/* Independent Trustpilot chip in the review scorecard summary. Keeps the operator's
   score visually separated from our own /10 and links out to Trustpilot with the
   right rel attributes. */
.trustpilot-chip{display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:10px;align-items:center;padding:10px 12px;margin:6px 0 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);text-decoration:none;transition:background .12s}
.trustpilot-chip:hover{background:rgba(0,182,122,.06);color:var(--ink);text-decoration:none}
.trustpilot-chip .tp-label{grid-column:1;grid-row:1;font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--green-text)}
.trustpilot-chip .tp-score{grid-column:2;grid-row:1 / span 2;font-size:22px;font-weight:800;color:var(--ink);align-self:center;font-variant-numeric:tabular-nums}
.trustpilot-chip .tp-score small{font-size:12px;font-weight:600;color:var(--muted);margin-left:1px}
.trustpilot-chip .tp-meta{grid-column:1;grid-row:2;font-size:11.5px;color:var(--muted)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.callout{background:#eef3ff;border:1px solid #cfdcfb;border-left:4px solid var(--blue);border-radius:10px;padding:14px 16px;margin:0 0 18px}
.callout p:last-child{margin:0}
.prose{max-width:820px}
.prose h2{margin-top:1.4em}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:820px){.grid-2{grid-template-columns:1fr}}

/* chart */
.chart{display:grid;gap:26px}
.row{position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
.row.top{border-color:#c9d8f8;box-shadow:0 2px 4px rgba(9,20,54,.06),0 14px 34px rgba(11,63,168,.12)}
.badge{
  position:absolute;top:-13px;left:58px;background:var(--blue-fill);color:#fff;font-size:12px;font-weight:800;
  letter-spacing:.03em;text-transform:uppercase;padding:5px 12px;border-radius:999px;z-index:2
}
.badge.green{background:var(--green-cta)}
.badge.gold{background:var(--gold);color:#241a00}
.row-main{display:grid;grid-template-columns:184px 96px minmax(0,1fr) 190px;gap:0;align-items:stretch}
.rank-flag{
  position:absolute;top:-13px;left:-1px;background:var(--blue-ink);color:#fff;font-size:12px;font-weight:800;
  padding:4px 10px;border-radius:999px;z-index:3;font-size:12.5px
}
.logo-plate{
  border-radius:13px 0 0 13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:26px 14px;color:#fff;text-align:center;min-height:150px
}
.logo-plate .logo-img{
  display:block;max-width:120px;max-height:56px;width:auto;height:auto;object-fit:contain;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))
}
/* When the WebP renders the text is redundant; hide it. The onerror handler removes
   the <img> entirely, at which point :has() no longer matches and the text returns. */
.logo-plate:has(.logo-img) .mark{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.logo-plate .mark{font-weight:800;font-size:20px;letter-spacing:.06em}
.logo-plate .ph{font-size:11px;text-transform:uppercase;letter-spacing:.08em;background:rgba(255,255,255,.2);border-radius:999px;padding:2px 8px}
.score-col{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--line);padding:18px 6px}
.score-col .n{font-size:34px;font-weight:800;color:var(--blue);line-height:1}
.score-col .t{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:750;margin-top:4px}
.offer-col{padding:18px 20px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.offer-col .t{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:750}
.offer-col .h{font-size:20px;font-weight:800;color:var(--ink);line-height:1.2}
.meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-size:13.5px;color:var(--muted)}
.stars{display:inline-flex;gap:2px;color:var(--gold)}
.qv{background:none;border:0;font:inherit;font-size:13.5px;font-weight:700;color:var(--blue);cursor:pointer;padding:8px 2px;min-height:40px;text-decoration:underline}
.cta-col{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:6px;padding:14px 16px;border-left:1px solid var(--line);min-width:180px}
.cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--green-cta);color:#fff;
  font-weight:700;border-radius:8px;font-size:14.5px;letter-spacing:.02em;min-height:44px;padding:10px 18px;text-align:center;white-space:nowrap}
.cta:hover{background:var(--green-cta-dark);color:#fff;text-decoration:none}
.cta .go{font-size:16px;font-weight:400;line-height:1;opacity:.9;transition:transform .15s}
.cta:hover .go{transform:translateX(2px)}
.cta-note{font-size:11px;color:var(--muted);text-align:center;letter-spacing:.02em}
.qv-panel{display:none;border-top:1px solid var(--line);padding:18px 16px;background:#fbfcff;border-radius:0 0 13px 13px}
.qv-panel[data-open="true"]{display:block}
.qv-grid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px;align-items:start}
.shot{
  border-radius:10px;border:1px dashed #b9c6e6;background:
   repeating-linear-gradient(45deg,#eef2fb,#eef2fb 10px,#e5ebf8 10px,#e5ebf8 20px);
  aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;text-align:center;
  color:#54638a;font-size:12.5px;font-weight:700;padding:10px
}
.pay{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none}
.pay li{font-size:11.5px;font-weight:700;color:#3d4a6b;background:#eef2fb;border:1px solid #dde5f6;border-radius:6px;padding:4px 8px}
.tick-list{list-style:none;padding:0;margin:0 0 12px;display:grid;gap:7px}
.tick-list li{display:flex;gap:9px;font-size:15px;color:var(--body)}
.tick-list svg{flex:0 0 auto;margin-top:3px}
.mini-cta{display:inline-flex;align-items:center;min-height:44px;padding:11px 18px;background:var(--blue-fill);color:#fff;font-weight:750;border-radius:9px}
.mini-cta:hover{background:var(--blue-dark);color:#fff;text-decoration:none}
@media (max-width:1000px){
  .row-main{grid-template-columns:150px 80px minmax(0,1fr)}
  .cta-col{grid-column:1 / -1;border-left:0;border-top:1px solid var(--line)}
  .logo-plate{border-radius:13px 0 0 0}
}
@media (max-width:640px){
  .row-main{grid-template-columns:1fr}
  .logo-plate{border-radius:13px 13px 0 0;min-height:104px;flex-direction:row;gap:10px}
  .score-col{flex-direction:row;gap:10px;border-right:0;border-bottom:1px solid var(--line);padding:12px}
  .score-col .n{font-size:28px}.score-col .t{margin:0}
  .offer-col{padding:16px}
  .qv-grid{grid-template-columns:1fr}
}

/* odds table */
.odds-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}
table.odds{width:100%;border-collapse:collapse;min-width:660px}
table.odds caption{text-align:left;padding:14px 16px;font-size:13.5px;color:var(--muted)}
table.odds th,table.odds td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:15px;vertical-align:middle}
table.odds thead th{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);background:#f7f9fe}
table.odds tr.daygroup th{background:#eef2fb;color:var(--blue-ink);font-size:13px;font-weight:800;letter-spacing:.04em}
.fx{font-weight:750;color:var(--ink)}
.fx small{display:block;font-weight:500;color:var(--muted);font-size:12.5px}
.price{font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.price small{display:block;font-weight:500;color:var(--muted);font-size:12px}
.bar{display:flex;height:9px;border-radius:999px;overflow:hidden;background:#eef2fb;min-width:110px}
.bar i{display:block;height:100%}
.bar .h{background:var(--blue-fill)}.bar .d{background:#9aa7c4}.bar .a{background:var(--green)}
.bar-key{display:flex;gap:10px;font-size:11.5px;color:var(--muted);margin-top:5px}
.bet-now{display:inline-flex;align-items:center;justify-content:center;background:var(--green-cta);color:#fff;font-weight:750;border-radius:8px;padding:10px 14px;min-height:44px;font-size:14px;white-space:nowrap}
.bet-now:hover{background:var(--green-cta-dark);color:#fff;text-decoration:none}
.tbc{color:var(--muted);font-size:14px}

/* why choose */
.why{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:20px;margin-bottom:20px}
.why h3{margin:0 0 4px;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(1.05rem,2.2vw,1.3rem)}
.why .flag{display:inline-block;font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#8a5a00;background:#fff3d1;border:1px solid #f3dc9a;border-radius:999px;padding:3px 9px;margin-bottom:10px}
.why-grid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:20px;align-items:start}
.bars{display:grid;gap:9px;margin:0 0 14px}
.bars .b{display:grid;grid-template-columns:130px minmax(0,1fr) 38px;gap:10px;align-items:center;font-size:13.5px}
.bars .track{display:block;height:8px;background:#eef2fb;border-radius:999px;overflow:hidden}
.bars .fill{display:block;height:100%;background:var(--blue-fill);border-radius:999px}
.quote{background:#f7f9fe;border-left:3px solid var(--blue);padding:12px 14px;border-radius:0 8px 8px 0;font-size:14.5px;color:#3b4256;margin:0 0 14px}
@media (max-width:820px){.why-grid{grid-template-columns:1fr}}

/* link grids */
.links{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.links a{display:flex;align-items:center;min-height:46px;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:10px;font-weight:650;font-size:15px;color:#22304d}
.links a:hover{border-color:var(--blue);color:var(--blue);text-decoration:none}

/* faq */
.faq{display:grid;gap:10px;max-width:880px}
.qa{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.qa button{
  width:100%;text-align:left;background:none;border:0;font:inherit;font-weight:750;color:var(--ink);font-size:16px;
  padding:16px 46px 16px 16px;cursor:pointer;position:relative;min-height:56px
}
.qa button::after{content:"+";position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:22px;color:var(--blue);font-weight:700}
.qa[data-open="true"] button::after{content:"\2013\0020";content:"−"}
.qa .a{display:none;padding:0 16px 16px}
.qa[data-open="true"] .a{display:block}
.qa .a p:last-child{margin:0}

/* did you know */
.dyk{background:var(--blue-ink);color:#dce6fb;border-radius:14px;padding:22px}
.dyk h2{color:#fff;margin-bottom:.4em}
.dyk p:last-child{margin:0}

/* footer */
.rg-banner{background:#12172b;color:#e6ebf7;padding:16px 0;font-size:14.5px}
.rg-banner .wrap{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center}
.rg-banner a{color:#fff;text-decoration:underline}
.site-foot{background:#0a1024;color:#aab6d3;padding:34px 0 26px;font-size:14.5px}
.foot-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:22px;margin-bottom:26px}
.foot-grid h4{color:#fff;font-size:13px;text-transform:uppercase;letter-spacing:.09em;margin:0 0 10px}
.foot-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.foot-grid a{color:#c3cee8;font-size:14px}
.foot-grid a:hover{color:#fff}
.foot-note{border-top:1px solid rgba(255,255,255,.12);padding-top:18px;display:grid;gap:10px;font-size:13px;color:#8f9dbe;line-height:1.6}
.foot-note a{color:#c3cee8;text-decoration:underline}
.foot-badges{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:6px}
.foot-badges span{border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:6px 10px;font-size:12.5px;color:#dbe3f6;font-weight:700}
@media (max-width:900px){.foot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.foot-grid{grid-template-columns:1fr}}

/* modal */
.modal{position:fixed;inset:0;z-index:120;display:none;padding:18px;align-items:center;justify-content:center}
.modal[data-open="true"]{display:flex}
.modal .veil{position:absolute;inset:0;background:rgba(4,12,32,.62)}
.modal .box{position:relative;background:#fff;border-radius:14px;max-width:640px;width:100%;max-height:82vh;overflow:auto;padding:22px}
.modal h2{font-size:1.25rem}
.modal .x{position:absolute;top:10px;right:10px;width:44px;height:44px;border:1px solid var(--line);background:#fff;border-radius:10px;font-size:18px;cursor:pointer}
.modal p{font-size:14.5px}

/* skeleton */


/* .review-verdict sits directly on the hero gradient with no card behind it, so its
   inline source links cannot use the body link colour. */
.review-verdict a:not(.cta):not(.go):not(.hero-cta){color:#cfe0ff;text-decoration:underline}
.review-verdict a:not(.cta):not(.go):not(.hero-cta):hover{color:#fff}

/* Kick off strip. One line above the ranked chart, not a second hero. */
.kickoff-strip{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px;margin:0 0 22px;
  border:1px solid var(--line);border-left:3px solid var(--green);border-radius:8px;background:var(--card)}
.kickoff-strip .lbl{margin:0;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.kickoff-strip .match{margin:0;font-size:14px;font-weight:700;color:var(--ink)}
.kickoff-strip .ko{margin:0;font-size:13px;color:var(--muted)}
.kickoff-strip .clock{display:inline-flex;align-items:baseline;gap:2px;font-variant-numeric:tabular-nums;
  font-size:14px;font-weight:700;color:var(--ink)}
.kickoff-strip .clock .sep{color:var(--muted);font-weight:400}
.kickoff-strip .cd-link{margin-left:auto}
.kickoff-strip .cd-link a{font-size:13px;font-weight:600;color:var(--blue);text-decoration:none;white-space:nowrap}
.kickoff-strip .cd-link a span{margin-left:5px}
.kickoff-strip .cd-link a:hover{text-decoration:underline}
@media(max-width:620px){.kickoff-strip{gap:6px 12px}.kickoff-strip .lbl{width:100%}.kickoff-strip .cd-link{margin-left:0;width:100%}}

/* Verified facts on the ranked card. Label and value share a row so the three facts
   scan as a set, and the labels stay quiet so the values carry the weight. */
.card-facts{list-style:none;margin:5px 0 0;padding:0;display:grid;gap:3px}
.card-facts li{display:flex;gap:8px;align-items:baseline;font-size:12.5px;line-height:1.35}
.card-facts .fl{flex:0 0 62px;color:var(--muted);font-weight:600;font-size:10.5px;
  letter-spacing:.06em;text-transform:uppercase}
.card-facts .fv{color:var(--ink);font-weight:600}
@media(max-width:520px){.card-facts li{flex-direction:column;gap:0}.card-facts .fl{flex:none}}
.skel{background:linear-gradient(90deg,#eef1f8 25%,#e3e8f4 37%,#eef1f8 63%);background-size:400% 100%;animation:sk 1.3s ease-in-out infinite;border-radius:8px;height:14px}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}
.load-note{color:var(--muted);font-size:14px;padding:14px 0}
.err{background:#fff4f4;border:1px solid #f3caca;color:#8b2020;border-radius:10px;padding:14px;font-size:14.5px}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms !important;transition-duration:.001ms !important}}

@media (max-width:760px){
  .notice{font-size:12.5px;line-height:1.35}
  .notice .wrap{padding:6px 12px;min-height:36px}
  .notice button{width:36px;height:36px;min-width:36px}
  .head-row{min-height:54px;padding:6px 14px}
  .brandmark{font-size:17px}
  .ticker-inner{padding:7px 0 7px 12px}
}

/* stacked odds rows on small screens: no horizontal scrolling needed */
@media (max-width:700px){
  .odds-wrap{overflow-x:visible;border-radius:12px}
  .odds-wrap table.odds{min-width:0;display:block}
  .odds-wrap table.odds caption{padding:14px 14px 8px}
  .odds-wrap table.odds thead{display:none}
  .odds-wrap table.odds tbody{display:block}
  .odds-wrap table.odds tr{display:block;border-bottom:1px solid var(--line);padding:8px 0}
  .odds-wrap table.odds tr.daygroup{padding:0}
  .odds-wrap table.odds tr.daygroup th{display:block;padding:10px 14px}
  .odds-wrap table.odds td{display:flex;gap:12px;align-items:baseline;justify-content:space-between;border:0;padding:5px 14px;text-align:right}
  .odds-wrap table.odds td::before{content:attr(data-label);color:var(--muted);font-size:12.5px;font-weight:750;text-transform:uppercase;letter-spacing:.05em;text-align:left;flex:0 0 auto}
  .odds-wrap table.odds td.fx{display:block;text-align:left;font-size:16.5px;padding-top:8px}
  .odds-wrap table.odds td.fx::before{display:block;margin-bottom:2px}
  .odds-wrap table.odds td.price small,.odds-wrap table.odds td .bar-key{text-align:right}
  .odds-wrap table.odds td.bet-cell{padding:10px 14px 6px}
  .odds-wrap table.odds td.bet-cell::before{content:none}
  .odds-wrap table.odds td.bet-cell .bet-now{width:100%}
  .odds-wrap table.odds td .bar{min-width:120px}
}
@media (max-width:700px){
  .odds-wrap table.odds caption{display:block;width:100%;box-sizing:border-box}
  .odds-wrap table.odds td[data-label="Implied chance"]{display:block;text-align:left}
  .odds-wrap table.odds td[data-label="Implied chance"]::before{display:block;margin-bottom:5px}
  .odds-wrap table.odds td[data-label="Implied chance"] .bar{min-width:0;width:100%}
  .odds-wrap table.odds td[data-label="Implied chance"] .bar-key{justify-content:space-between;width:100%}
  .odds-wrap table.odds td.price small{white-space:nowrap}
}

/* v4 additions: existing tokens only, preserving the v1 visual system. */
:root[data-theme="dark"]{--blue:#6d9bea;--blue-fill:#1b4fbe;--green-text:#4ade80;--ink:#e7ecf7;--body:#c9d3e8;--muted:#aab8d5;--line:#294266;--bg:#071229;--card:#0d1c3a;--shadow:0 1px 2px rgba(0,0,0,.25),0 8px 24px rgba(0,0,0,.22)}
:root[data-theme="dark"] .has-sub>button{color:var(--ink)}
:root[data-theme="dark"] .has-sub>button:hover{background:#16294d}
:root[data-theme="dark"] .skip{color:#fff;background:var(--blue-fill)}
:root[data-theme="dark"] .site-head,:root[data-theme="dark"] .drawer[data-open="true"],:root[data-theme="dark"] .sub,:root[data-theme="dark"] .countdown,:root[data-theme="dark"] .odds-wrap,:root[data-theme="dark"] .why,:root[data-theme="dark"] .qa,:root[data-theme="dark"] .links a,:root[data-theme="dark"] .modal .box{background:var(--card)}
:root[data-theme="dark"] .nav a,:root[data-theme="dark"] .drawer a,:root[data-theme="dark"] .links a,:root[data-theme="dark"] .brandmark,:root[data-theme="dark"] .countdown .match,:root[data-theme="dark"] .fx,:root[data-theme="dark"] .price,:root[data-theme="dark"] .qa button,:root[data-theme="dark"] .offer-col .h{color:var(--ink)}
:root[data-theme="dark"] .nav a:hover,:root[data-theme="dark"] .nav a[aria-current="page"],:root[data-theme="dark"] table.odds thead th,:root[data-theme="dark"] table.odds tr.daygroup th,:root[data-theme="dark"] .qv-panel,:root[data-theme="dark"] .callout{background:#13284f}
:root[data-theme="dark"] .section-head p,:root[data-theme="dark"] .tick-list li,:root[data-theme="dark"] .quote{color:var(--body)}
.market-switch select{height:44px;max-width:145px;border:1px solid var(--line);border-radius:8px;padding:0 28px 0 10px;background:var(--card);color:var(--ink);font:650 13px var(--font);cursor:pointer}
.theme-toggle{width:44px;height:44px;min-width:44px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--blue);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.theme-toggle:hover{background:#eef2fb}.drawer-switch{display:flex;align-items:center;gap:12px;padding:13px 4px;font-weight:700}.crumb{font-size:14px;margin-bottom:10px;color:var(--muted)}.crumb a{margin-right:5px}.crumb span{margin-left:5px}
.theme-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.theme-icon-moon{display:none}
:root[data-theme="dark"] .theme-icon-sun{display:none}
:root[data-theme="dark"] .theme-icon-moon{display:block}
.rg-block{font-size:14px}.rg-block h2{font-size:1rem;color:inherit}.rg-block p:last-of-type{margin-bottom:.6em}
@media(max-width:1080px){.market-switch{margin-left:auto}.head-row .theme-toggle{margin-left:0}.drawer .market-switch select{display:inline-flex}.drawer .market-switch span{color:var(--ink)}}
@media(max-width:500px){.market-switch select{max-width:132px;font-size:12px;padding-right:22px}.head-row{gap:7px;padding-left:12px;padding-right:12px}.brandmark{gap:5px}.brandmark svg{width:23px}.theme-toggle{width:44px}.burger{width:44px}.rg-block{font-size:13px}}

/* v5 review layer: conservative extensions of the approved row and table system. */
.review-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;padding:16px;margin:0}
.review-filters label{display:grid;gap:4px;min-width:150px;font-size:13px;font-weight:750;color:var(--ink)}
.review-filters select{min-height:42px;border:1px solid var(--line);border-radius:8px;padding:8px 30px 8px 10px;background:var(--card);color:var(--ink);font:inherit}
.review-filters .mini-cta{border:0;cursor:pointer;font:750 14px var(--font)}
.filter-note{grid-column:1 / -1;margin:0;color:var(--muted);font-size:13px}
.review-page-shell{padding-bottom:0}
.review-page-content{width:100%;max-width:none}
.review-page-content>.section{width:100%}
.review-hero-grid{grid-template-columns:minmax(0,1fr) 300px;gap:26px}
.review-hero-grid .cta{display:inline-flex;width:auto;min-height:44px;padding:10px 16px}
.review-hero-grid,.review-hero-grid h2{color:#fff}
.review-hero-grid p,.review-hero-grid .byline,.review-hero-grid small{color:#dce6fb}
.review-page-content .hero .eyebrow{color:#a8f0c2}
.review-score-summary{margin:0;align-self:stretch}
.review-score-summary .lbl{margin-bottom:2px}
.review-hero-grid .review-score-summary p,.review-hero-grid .review-score-summary small{color:var(--muted)}
.review-hero-grid .review-score-summary .lbl{color:var(--blue)}
.review-hero-grid .review-score-summary p.review-score{font-size:42px;font-weight:800;line-height:1;color:var(--blue);margin:0}
.review-hero-grid .review-score-summary p.review-score span{font-size:18px;font-weight:750;color:var(--muted)}
.review-hero-grid .review-score-summary p.review-score-date{font-size:13px;color:var(--muted);margin:4px 0 14px}
.review-score-facts{display:grid;gap:7px;border-top:1px solid var(--line);padding-top:12px}
.review-score-facts div{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--body)}
.review-score-facts b{color:var(--blue);font-variant-numeric:tabular-nums}
.review-score-summary .go{text-decoration:none}
.review-facts table.odds td:first-child,.review-scorecard table.odds td:first-child,.review-changelog table.odds td:first-child{font-weight:750;color:var(--ink)}
.review-scorecard table.odds td:nth-child(2),.review-scorecard table.odds td:nth-child(3){font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--blue);font-weight:800}
.review-payments .odds-wrap,.review-comparison .odds-wrap,.review-changelog .odds-wrap{box-shadow:var(--shadow)}
.review-toc{position:sticky;top:76px;z-index:2;background:var(--bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px max(18px,calc((100% - var(--wrap))/2));margin:0 0 16px}
.review-toc h2{font-size:1rem;margin-bottom:10px}
.review-toc .links{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:7px}
.review-toc .links a{min-height:40px;padding:8px 10px;font-size:13px}
.review-ledger details{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:0 14px}
.review-ledger summary{cursor:pointer;min-height:48px;display:flex;align-items:center;font-weight:750;color:var(--ink)}
.review-ledger .odds-wrap{margin:0 0 14px}
.review-route-list .links a{font-size:13px}
:root[data-theme="dark"] .review-toc{background:var(--bg)}
:root[data-theme="dark"] .review-filters select{background:var(--card);color:var(--ink)}
.prose:has(.review-filters select[name="product"] option[value="sportsbook"]:checked) #decision-table tbody tr:not([data-product~="sportsbook"]),
.prose:has(.review-filters select[name="product"] option[value="racing"]:checked) #decision-table tbody tr:not([data-product~="racing"]),
.prose:has(.review-filters select[name="product"] option[value="live"]:checked) #decision-table tbody tr:not([data-product~="live"]),
.prose:has(.review-filters select[name="payment"] option[value="card"]:checked) #decision-table tbody tr:not([data-payment~="card"]),
.prose:has(.review-filters select[name="payment"] option[value="bank"]:checked) #decision-table tbody tr:not([data-payment~="bank"]),
.prose:has(.review-filters select[name="licence"] option[value="local"]:checked) #decision-table tbody tr:not([data-licence*="local"]){display:none}
@media(max-width:700px){
  .review-filters{display:grid;grid-template-columns:1fr;padding:14px}
  .review-filters label{min-width:0}
  .review-filters .mini-cta{width:100%;justify-content:center}
  .review-toc{position:static;padding:16px 18px;margin-bottom:0}
  .review-toc .links{grid-template-columns:repeat(2,minmax(0,1fr))}
  .review-scorecard .odds-wrap table.odds td:nth-child(4),.review-payments .odds-wrap table.odds td,.review-comparison .odds-wrap table.odds td{align-items:flex-start}
  .review-ledger .odds-wrap table.odds td{overflow-wrap:anywhere}
  .review-payments .odds-wrap table.odds td,.review-comparison .odds-wrap table.odds td,.review-changelog .odds-wrap table.odds td{max-width:100%;overflow-wrap:anywhere;word-break:break-word}
  .review-payments .odds-wrap table.odds td>* ,.review-comparison .odds-wrap table.odds td>* ,.review-changelog .odds-wrap table.odds td>*{min-width:0;overflow-wrap:anywhere}
  .review-payments .odds-wrap table.odds td,.review-comparison .odds-wrap table.odds td,.review-changelog .odds-wrap table.odds td{display:block;text-align:left;padding:7px 14px}
  .review-payments .odds-wrap table.odds td::before,.review-comparison .odds-wrap table.odds td::before,.review-changelog .odds-wrap table.odds td::before{display:block;margin:0 0 3px;text-align:left}
  .review-payments .odds-wrap table.odds td small,.review-comparison .odds-wrap table.odds td small,.review-changelog .odds-wrap table.odds td small{display:block;margin-top:2px}
}
@media(max-width:900px){
  .review-hero-grid{grid-template-columns:1fr}
  .review-score-summary{order:0}
}

/* Odds waterfall and linked fixture rows. These reuse the approved card, table and token system. */
.fixture-list{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);overflow:hidden}
/* Fixture rows: three-column layout with a Preview chevron column on the right that
   hints the row is a link. Inert rows keep the same shape but lose the chevron affordance. */
.fixture-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;min-height:64px;padding:12px 16px;color:var(--ink);border-bottom:1px solid var(--line);transition:background .12s}
.fixture-row:last-child{border-bottom:0}
.fixture-row:hover{background:#f7f9fe;text-decoration:none}
.fixture-row:hover .chev{transform:translateX(3px)}
.fixture-row:focus-visible{position:relative;z-index:1;outline:2px solid var(--blue);outline-offset:-2px}
.fixture-row.is-inert{opacity:.72;cursor:not-allowed}
.fixture-row.is-inert:hover{background:transparent}
.fixture-row-body{display:grid;grid-template-columns:110px minmax(0,1fr) minmax(230px,auto);gap:16px;align-items:center;min-width:0}
.fixture-row-kickoff{font-size:12.5px;font-weight:700;color:var(--muted);white-space:nowrap;letter-spacing:.02em}
.fixture-row-kickoff.is-live{color:#287c39;text-transform:none}
[data-theme="dark"] .fixture-row-kickoff.is-live{color:#7cdd8f}
.fixture-row strong{font-size:15px;line-height:1.35;min-width:0;font-weight:700}
.fixture-row-prices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;color:var(--blue);font-weight:700;font-variant-numeric:tabular-nums;text-align:center;font-size:15px}
.fixture-row-cta{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:700;color:var(--blue);white-space:nowrap;padding:6px 4px}
.fixture-row-cta .chev{font-size:16px;line-height:1;transition:transform .15s;display:inline-block}
.fixture-row.is-inert .fixture-row-cta{color:var(--muted)}
@media(max-width:820px){
  .fixture-row{grid-template-columns:1fr;gap:10px}
  .fixture-row-body{grid-template-columns:1fr;gap:8px}
  .fixture-row-prices{grid-template-columns:repeat(3,1fr)}
  .fixture-row-cta{justify-self:flex-end}
}
.fixture-row-prices span{display:flex;flex-direction:column;align-items:center;min-width:0;gap:1px}
.fixture-row-prices b{color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;font-variant-numeric:normal}
.fixture-row-prices small,.odds-price small,table.odds td.price small{display:block;color:var(--muted);font-size:11px;font-weight:650;line-height:1.25}
.odds-price{display:block;color:var(--blue);font-weight:800;font-variant-numeric:tabular-nums}
.fixture-table-link{display:block;min-height:24px;color:var(--ink);font-weight:750}
.fixture-table-link:hover{color:var(--blue)}
.odds-directory{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin:0 0 1.2em}
.odds-directory-item{display:block;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);color:var(--ink)}
.odds-directory-item:hover{border-color:var(--blue);text-decoration:none}
.odds-directory-item span,.odds-directory-item small{display:block;color:var(--muted);font-size:12px;font-weight:750;letter-spacing:.05em;text-transform:uppercase}
.odds-directory-item strong{display:block;margin:2px 0;font-size:18px;color:var(--blue-ink)}
:root[data-theme="dark"] .fixture-list,:root[data-theme="dark"] .odds-directory-item{background:var(--card)}
:root[data-theme="dark"] .fixture-row{color:var(--ink)}
:root[data-theme="dark"] .fixture-row:hover{background:#13284f}
:root[data-theme="dark"] .fixture-table-link,:root[data-theme="dark"] .odds-directory-item{color:var(--ink)}
:root[data-theme="dark"] .odds-directory-item strong{color:var(--ink)}
:root[data-theme="dark"] .fixture-row-prices,:root[data-theme="dark"] .odds-price{color:var(--green)}
@media(max-width:640px){
  .fixture-row{grid-template-columns:1fr;gap:4px;min-height:44px;padding:11px 14px}
  .fixture-row-kickoff{font-size:12px}
  .fixture-row-prices{padding-top:5px;text-align:left}
  .fixture-row-prices span{text-align:left}
  .fixture-row-prices small{white-space:nowrap}
  .odds-directory{grid-template-columns:1fr}
  .odds-wrap table.odds td .fixture-table-link{min-height:44px;display:flex;align-items:center}
}

/* Calculator pages: existing tokens and card language only. */
.calc-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin:0 0 22px;max-width:820px}
.calc-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.calc-fields label{display:grid;gap:5px;min-width:0;color:var(--ink);font-size:14px;font-weight:750}
.calc-fields input,.calc-fields select{width:100%;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:9px 10px;background:var(--card);color:var(--ink);font:inherit}
.calc-fields input:focus,.calc-fields select:focus{outline:3px solid rgba(11,63,168,.26);outline-offset:1px;border-color:var(--blue)}
.calc-check{display:flex!important;align-items:center;gap:9px;min-height:44px;padding:8px 0}
.calc-check input{width:20px;min-width:20px;min-height:20px;accent-color:var(--blue)}
.calc-result{margin-top:14px;padding:14px 15px;border-left:4px solid var(--green);border-radius:9px;background:#eef3ff;color:var(--ink);font-variant-numeric:tabular-nums}
.calc-result strong{display:block;color:var(--blue);font-size:13px;text-transform:uppercase;letter-spacing:.07em}
.calc-result output{display:block;overflow-wrap:anywhere}
.calc-legs{grid-template-columns:repeat(2,minmax(0,1fr));max-height:520px;overflow:auto;padding-right:2px}
.calc-leg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;padding:10px;border:1px solid var(--line);border-radius:9px}
.calc-hub-links{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
:root[data-theme="dark"] .calc-result{background:#13284f}
@media(max-width:560px){
  .calc-card{padding:14px}
  .calc-fields,.calc-legs{grid-template-columns:1fr}
  .calc-leg{grid-template-columns:1fr}
  .calc-hub-links{grid-template-columns:1fr}
}

/* Calculator pages: conservative extensions using the approved site tokens. */
.calc-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin:0 0 22px;max-width:820px}.calc-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.calc-fields label{display:grid;gap:5px;min-width:0;color:var(--ink);font-size:14px;font-weight:750}.calc-fields input,.calc-fields select{width:100%;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:9px 10px;background:var(--card);color:var(--ink);font:inherit}.calc-fields input:focus,.calc-fields select:focus{outline:3px solid rgba(11,63,168,.26);outline-offset:1px;border-color:var(--blue)}.calc-check{display:flex!important;align-items:center;gap:9px;min-height:44px;padding:8px 0}.calc-check input{width:20px;min-width:20px;min-height:20px;accent-color:var(--blue)}.calc-result{margin-top:14px;padding:14px 15px;border-left:4px solid var(--green);border-radius:9px;background:#eef3ff;color:var(--ink);font-variant-numeric:tabular-nums}.calc-result strong{display:block;color:var(--blue);font-size:13px;text-transform:uppercase;letter-spacing:.07em}.calc-result output{display:block;overflow-wrap:anywhere}.calc-legs{grid-template-columns:repeat(2,minmax(0,1fr));max-height:520px;overflow:auto;padding-right:2px}.calc-leg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;padding:10px;border:1px solid var(--line);border-radius:9px}.calc-hub-links{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}:root[data-theme="dark"] .calc-result{background:#13284f}@media(max-width:560px){.calc-card{padding:14px}.calc-fields,.calc-legs{grid-template-columns:1fr}.calc-leg{grid-template-columns:1fr}.calc-hub-links{grid-template-columns:1fr}}

/* ---- Brand hub ---- */
.fact{}
.hub-actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-top:1.25rem}
.hub-actions>a{min-height:44px;display:inline-flex;align-items:center}
.hub-guides{list-style:none;margin:0 0 1.75rem;padding:0;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.hub-guides li{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.hub-guides li b{font-size:1rem;line-height:1.3}
.hub-guides li b a{text-decoration:none}
.hub-guides li b a:hover{text-decoration:underline}
.hub-guides li span{font-size:.9rem;line-height:1.55;color:var(--muted)}
#guides h3{margin:1.75rem 0 .85rem;font-size:1.05rem;letter-spacing:.02em;text-transform:uppercase;color:var(--muted)}
#guides h3:first-of-type{margin-top:.5rem}
.promo-card .promo-code-line strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.5rem;letter-spacing:.06em}

/* ---- Researched long-form prose ---- */
.prose{max-width:none}
.prose p{margin:0 0 1.05rem;line-height:1.72;font-size:1.02rem}
.prose p:last-child{margin-bottom:0}
.prose h3{margin:1.6rem 0 .7rem;font-size:1.12rem;line-height:1.35}
.prose ul{margin:0 0 1.15rem;padding-left:1.35rem}
.prose li{margin:0 0 .5rem;line-height:1.65}
.prose strong{font-weight:650}
.prose a{text-underline-offset:.18em}
section.prose>h2{margin-bottom:1rem}
@media(min-width:900px){.prose p,.prose li{font-size:1.05rem}}

/* ---- Header fit on narrow phones ----
   At 390px the fixed-width theme toggle, burger and market select plus the
   full wordmark exceeded the row's content box, pushing the burger past the
   right edge. The wordmark is the only flexible item, so it shrinks first. */
.head-row .brandmark{min-width:0;flex:0 1 auto;overflow:hidden}
.head-row .brandmark>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.head-row .theme-toggle,.head-row .burger,.head-row .market-switch{flex:0 0 auto}
@media(max-width:430px){
  .head-row{gap:6px}
  .market-switch select{max-width:104px}
  .brandmark .sm{display:none}
}
@media(max-width:360px){
  .brandmark>span{display:none}
  .market-switch select{max-width:92px}
}

/* A few verified values are long unbroken source URLs. Without an explicit break
   opportunity they pushed out of their table cell on narrow viewports. */
.fact{overflow-wrap:anywhere;word-break:break-word}
td .fact,td{min-width:0}

/* Above the fold on phones. The commercial action and the score are the two
   things a reader needs before the supporting facts, so on narrow viewports the
   hero reorders to put them first. DOM order is unchanged for reading order. */
@media (max-width: 700px) {
  .review-hero-grid { display: flex; flex-direction: column; }
  /* The verdict block dissolves into the hero flow on phones so the score card
     can sit between the action and the supporting facts. */
  .review-hero-grid .review-verdict { display: contents; }
  .review-verdict > h2 { order: 1; }
  .review-verdict > p.sub { order: 2; }
  .review-verdict > p { order: 3; }
  .review-verdict > .hub-actions,
  .review-verdict > a.cta { order: 4; }
  .review-hero-grid .review-score-summary { order: 5; }
  .review-verdict > .hero-facts { order: 6; }
  .review-score-summary { margin-top: 1rem; }
}

/* Tap targets. Standalone links and breadcrumbs need a 36px band on touch
   viewports; inline links inside running prose keep their natural size. */
@media (max-width: 700px) {
  .crumbs a, .review-verdict > a.cta, .hub-actions a, .countdown a.go,
  .links a, .hub-guides a, td a, th a, .review-ledger a {
    display: inline-block;
    min-height: 36px;
    padding-top: 8px;
    padding-bottom: 8px;
  }
  .prose p a, .prose li a { min-height: 0; padding-top: 0; padding-bottom: 0; display: inline; }
}

/* Hero rhythm on phones: the reordered flex children inherit the grid gap, which
   is too loose once the block is a single column. */
@media (max-width: 700px) {
  .review-hero-grid { gap: 0.85rem; }
  .review-hero-grid > .review-score-summary { margin-top: 0.25rem; }
  .stamp { display: flex; flex-wrap: wrap; gap: 0.15rem 0.5rem; align-items: baseline; }
}

/* Spoke lede: a context line and the action row, no filler paragraph. */
.spoke-lede { padding-bottom: 0; }
.spoke-lede .spoke-context { color: var(--muted); font-size: 0.95rem; margin: 0 0 0.75rem; }
.spoke-lede .hub-actions { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; align-items: center; }

/* Measure. Long-form reading breaks down past roughly 75 characters a line, so
   prose text is capped while tables and grids keep the full column. */
.prose > p, .prose > ul, .prose > ol, .prose > h3, .prose > blockquote { max-width: 74ch; }
section.prose > h2 { max-width: 40ch; }
.spoke-lede + .prose { padding-top: 0.5rem; }
.spoke-lede { padding-bottom: 0.25rem; }

/* Reading rail. On wide screens the long-form pages carry a summary card in the
   column the prose measure leaves free: score, action, and the rest of the
   cluster, so a reader never has to scroll back to navigate. */
.spoke-rail { display: none; }
@media (min-width: 1080px) {
  .spoke-prose { position: relative; }
  .spoke-rail {
    display: block;
    float: right;
    width: 288px;
    margin: 0.35rem 0 1.5rem 2.5rem;
    padding: 1.15rem 1.25rem 1.25rem;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: var(--card);
    box-shadow: 0 1px 2px rgba(12, 24, 48, .05);
  }
  .spoke-rail .rail-lbl {
    margin: 0 0 0.25rem; font-size: 0.72rem; letter-spacing: .09em;
    text-transform: uppercase; color: var(--muted); font-weight: 700;
  }
  .spoke-rail .rail-score { margin: 0 0 0.35rem; font-size: 2.3rem; line-height: 1; font-weight: 800; color: var(--brand); }
  .spoke-rail .rail-score span { font-size: 1rem; color: var(--muted); font-weight: 600; }
  .spoke-rail .rail-tp { margin: 0 0 0.9rem; font-size: 0.9rem; color: var(--muted); }
  .spoke-rail .rail-action { margin: 0 0 1.1rem; }
  .spoke-rail .rail-action .cta { display: block; text-align: center; }
  .spoke-rail .rail-nav { list-style: none; margin: 0 0 1rem; padding: 0; }
  .spoke-rail .rail-nav li { margin: 0; border-top: 1px solid var(--line); }
  .spoke-rail .rail-nav a { display: block; padding: 0.5rem 0; font-size: 0.95rem; text-decoration: none; }
  .spoke-rail .rail-nav a:hover { text-decoration: underline; }
  .spoke-rail .rail-foot { margin: 0; font-size: 0.92rem; }
  .spoke-prose > h2 { clear: none; }
}
@media (min-width: 1080px) { .spoke-lede + .spoke-prose { padding-top: 0.25rem; } }

/* The wordmark is the brand, so on narrow phones it shrinks rather than losing
   the suffix. The market select gives up the space instead. */
@media (max-width: 430px) {
  .brandmark { font-size: 15px; }
  .brandmark .sm { display: inline; font-size: .72em; }
  .brandmark svg { width: 21px; }
  .market-switch select { max-width: 96px; }
}
@media (max-width: 360px) {
  .brandmark { font-size: 13.5px; }
  .brandmark > span { display: inline; }
  .market-switch select { max-width: 84px; }
}

/* Byline. The label and the date belong on one line before anything wraps. */
.stamp > b, .stamp > time { display: inline; }
.stamp { align-items: baseline; }
@media (max-width: 700px) {
  .stamp { flex-direction: row; flex-wrap: wrap; gap: 2px 8px; }
  .stamp > b { order: 0; }
  .stamp > time { order: 1; }
  .stamp > span { order: 2; flex: 1 0 100%; }
}

/* Vertical rhythm on phones. The desktop section padding left large empty bands
   between the byline, the action row and the first heading. */
@media (max-width: 700px) {
  .spoke-lede { padding-top: 0.4rem; padding-bottom: 0; }
  .spoke-lede + .prose { padding-top: 0.9rem; }
  .section.tight { padding-top: 1.15rem; padding-bottom: 1.15rem; }
}

/* On phones the header market select duplicates the one at the top of the menu
   drawer, and it was the item squeezing the wordmark. The drawer keeps it. */
@media (max-width: 430px) {
  .head-row > .market-switch { display: none; }
  .brandmark { font-size: 16.5px; }
  .brandmark > span { overflow: visible; text-overflow: clip; }
  .head-row { gap: 8px; }
}
@media (max-width: 360px) { .brandmark { font-size: 15px; } }
@media (max-width: 430px) { .head-row .theme-toggle { margin-left: auto; } }

/* Remaining phone hit areas: breadcrumb links, the changelog jump, the source
   citations in the fact ledger, and the score chips on market home. */
@media (max-width: 700px) {
  .crumb { display: flex; flex-wrap: wrap; align-items: center; gap: 0 4px; }
  .crumb a { margin-right: 0; padding: 9px 3px; min-height: 36px; display: inline-flex; align-items: center; }
  .crumb span { margin-left: 0; }
  .stamp > a[href^="#"] { display: inline-flex; align-items: center; min-height: 36px; padding: 7px 0; }
  small a, td small a, .prose small a {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 44px; min-height: 36px; padding: 7px 6px;
  }
  .qv, button.t, .score-chip { min-height: 36px; padding: 8px 10px; }
}
@media (max-width: 700px) {
  .score-col a.t { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; padding: 8px 6px; }
  .countdown .match a, .fx a { display: inline-flex; align-items: center; min-height: 36px; }
}
@media (max-width: 700px) {
  [data-cd-link] a, .score-summary a, .score-block a, .verdict-card a { display: inline-flex; align-items: center; min-height: 36px; }
}
@media (max-width: 700px) {
  aside > a, aside p > a { display: inline-flex; align-items: center; min-height: 36px; }
}
.lead-pick { border-bottom: 1px solid var(--line); }
.lead-pick-lbl { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin: 0 0 .35rem; }
.lead-pick-row { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; justify-content: space-between; }
.lead-pick-name { font-size: 20px; font-weight: 700; margin: 0 0 .25rem; }
.lead-pick-score { font-weight: 700; color: var(--accent); }
.lead-pick-score small { font-weight: 500; color: var(--muted); }
.lead-pick-why { margin: 0; max-width: 60ch; }
