/* OneGoal landing page — "Night Game"
   All selectors are prefixed og- so they won't collide with the app's styles.
   Fonts are self-hosted in /fonts (SIL Open Font License): _headers sets font-src 'self'.
   They are trimmed to the characters the site uses; the full originals are in brand/fonts-src/.
   New copy with an accented letter or symbol: run scripts/subset-site-fonts.py, which refuses
   until that character is added to its list. */

@font-face { font-family: "Anton"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/anton-400.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/barlow-400.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 500; font-display: swap; src: url("/fonts/barlow-500.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 600; font-display: swap; src: url("/fonts/barlow-600.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 700; font-display: swap; src: url("/fonts/barlow-700.woff2") format("woff2"); }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url("/fonts/barlow-condensed-600.woff2") format("woff2"); }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url("/fonts/barlow-condensed-700.woff2") format("woff2"); }

:root {
  --og-bg: #0B0F0C;
  --og-panel: #121813;
  --og-panel-2: #0F1511;
  --og-line: #243027;
  --og-line-soft: #1C2620;
  --og-text: #F2F4EE;
  --og-muted: #A3ADA6;
  --og-dim: #7E8983;
  --og-lime: #C6F432;
  --og-lime-hi: #E2FF7A;
  --og-paid: #6BE0A5;
  --og-paid-bg: #17301F;
  --og-paid-line: #2FA56B;
  --og-due: #F2C14E;
  --og-due-bg: #2E2610;
  --og-due-line: #D9A62E;

  --og-display: "Anton", Impact, "Arial Narrow", sans-serif;
  --og-body: "Barlow", "Helvetica Neue", Arial, sans-serif;
  --og-label: "Barlow Condensed", "Arial Narrow", sans-serif;

  --og-gutter: clamp(20px, 5.5vw, 80px);
  --og-max: 1280px;
  --og-radius: 20px;
}

/* ---------- base ---------- */
.og { margin: 0; background: var(--og-bg); color: var(--og-text); font-family: var(--og-body); font-size: 17px; line-height: 1.55; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
.og *, .og *::before, .og *::after { box-sizing: border-box; }
.og img, .og video { max-width: 100%; display: block; }
.og a { color: var(--og-lime); }
.og a:hover { color: var(--og-lime-hi); }
.og :focus-visible { outline: 3px solid var(--og-lime); outline-offset: 3px; border-radius: 4px; }
:where(.og) :where(h1, h2, h3, p, ul, ol, figure, blockquote, dl, dd) { margin: 0; }
:where(.og) :where(ul[role="list"], ol) { list-style: none; padding: 0; }
.og-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.og-skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--og-lime); color: var(--og-bg) !important; padding: 10px 16px; border-radius: 6px; font-weight: 700; }
.og-skip:focus { top: 12px; }
.og-lime { color: var(--og-lime); }
.og-due { color: var(--og-due); }
.og-muted { color: var(--og-muted); }
.og-lg { font-size: clamp(17px, 1.4vw, 19px); line-height: 1.6; }

.og-display { font-family: var(--og-display); font-weight: 400; text-transform: uppercase; letter-spacing: 0.01em; font-size: clamp(44px, 6vw, 84px); line-height: 1; }
.og-kicker { font-family: var(--og-label); font-weight: 700; font-size: clamp(15px, 1.3vw, 18px); letter-spacing: 0.22em; text-transform: uppercase; color: var(--og-lime); }

.og-section { max-width: calc(var(--og-max) + var(--og-gutter) * 2); margin: 0 auto; padding: clamp(64px, 8vw, 110px) var(--og-gutter); }
.og-split-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; margin-bottom: 48px; }
.og-split-head p { max-width: 380px; font-size: 18px; }

/* ---------- buttons ---------- */
.og-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 18px 34px; border-radius: 6px; font-family: var(--og-label); font-weight: 700; font-size: 20px; letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none; transition: transform .15s ease, background-color .15s ease, box-shadow .2s ease; }
.og-btn:active { transform: translateY(1px); }
.og .og-btn--lime { background: var(--og-lime); color: var(--og-bg); }
.og .og-btn--lime:hover { background: var(--og-lime-hi); color: var(--og-bg); }
.og-btn--glow { box-shadow: 0 0 40px rgba(198, 244, 50, 0.32); }
.og-btn--glow:hover { box-shadow: 0 0 56px rgba(198, 244, 50, 0.5); }
.og .og-btn--ghost { border: 1.5px solid var(--og-text); color: var(--og-text); padding: 16.5px 34px; }
.og .og-btn--ghost:hover { background: rgba(242, 244, 238, 0.08); color: var(--og-text); }
.og .og-btn--dark { background: var(--og-bg); color: var(--og-text); }
.og .og-btn--dark:hover { background: #1A211C; color: var(--og-text); }
.og-btn--sm { padding: 12px 22px; font-size: 17px; min-height: 44px; white-space: nowrap; }
.og .og-btn--ghost.og-btn--sm { padding: 10.5px 22px; }

/* ---------- top bar + nav ---------- */
.og-topbar { background: var(--og-lime); color: var(--og-bg); text-align: center; padding: 9px var(--og-gutter); font-family: var(--og-label); font-weight: 700; font-size: 15px; letter-spacing: 0.12em; text-transform: uppercase; }
.og-topbar span { margin: 0 12px; }

.og-nav { position: sticky; top: 0; z-index: 50; transition: background-color .25s ease, border-color .25s ease; border-bottom: 1px solid transparent; }
.og-nav.is-scrolled { background: rgba(11, 15, 12, 0.86); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); border-bottom-color: var(--og-line-soft); }
.og-nav__inner { max-width: calc(var(--og-max) + var(--og-gutter) * 2); margin: 0 auto; padding: 18px var(--og-gutter); display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.og .og-logo { display: flex; align-items: center; gap: 12px; color: var(--og-lime); text-decoration: none; }
/* The mark (scripts/build-brand.mjs writes the SVG). In the header it "ignites" on load: the O
   draws itself, the G fades in, the bolt strikes, then a comet runs one lap of the O every
   seven seconds. Everything turns about the mark's centre, in the SVG's own units. */
.ogm { flex: none; display: block; overflow: visible; }
.ogm-ring, .ogm-g, .ogm-bolt, .ogm-comet { transform-box: view-box; transform-origin: 256px 256px; }
.ogm-comet { opacity: 0; }
.ogm--ignite .ogm-ring { stroke-dasharray: 1182; stroke-dashoffset: 1182; animation: ogm-draw 1.1s cubic-bezier(.6, .05, .3, 1) .15s forwards; }
.ogm--ignite .ogm-g { opacity: 0; animation: ogm-fade .35s ease-out .7s forwards; }
.ogm--ignite .ogm-bolt { opacity: 0; transform: scale(.4); animation: ogm-strike .5s cubic-bezier(.2, 1.6, .4, 1) 1.1s forwards; }
.ogm--ignite .ogm-comet { animation: ogm-lap 7s linear 1.7s infinite; }
@keyframes ogm-draw { to { stroke-dashoffset: 0; } }
@keyframes ogm-fade { to { opacity: 1; } }
@keyframes ogm-strike { 0% { opacity: 0; transform: scale(.4); } 45% { opacity: 1; transform: scale(1.2); } 100% { opacity: 1; transform: scale(1); } }
@keyframes ogm-lap { 0% { opacity: 1; transform: rotate(0deg); } 30% { opacity: 1; transform: rotate(360deg); } 31%, 100% { opacity: 0; transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .ogm--ignite .ogm-ring, .ogm--ignite .ogm-g, .ogm--ignite .ogm-bolt { animation: none; opacity: 1; stroke-dashoffset: 0; transform: none; }
  .ogm--ignite .ogm-comet { animation: none; opacity: 0; }
}
.og-logo span { font-family: var(--og-display); font-size: 26px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--og-text); }
.og-nav__links { display: flex; gap: 34px; }
.og-nav__links a, .og .og-nav__signin { font-family: var(--og-label); font-weight: 600; font-size: 18px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--og-text); text-decoration: none; }
.og-nav__links a:hover, .og .og-nav__signin:hover { color: var(--og-lime); }
.og-nav__actions { display: flex; align-items: center; gap: 24px; }
/* Social links: in the nav beside Start free, and in the footer (the only place
   they show on a phone, where the nav keeps just the logo and Start free). */
.og-social { display: flex; align-items: center; gap: 2px; }
.og-social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 44px; color: var(--og-muted); border-radius: 10px; transition: color .15s ease; }
.og-social a:hover, .og-social a:focus-visible { color: var(--og-lime); }
.og-social--nav { margin-left: -8px; }
.og-social--nav a { color: var(--og-text); }
/* In-page links land below the sticky nav, not under it. */
.og [id] { scroll-margin-top: 88px; }

/* ---------- hero ---------- */
.og-hero { position: relative; overflow: hidden; isolation: isolate; margin-top: -84px; padding-top: 84px; }
.og-hero__media { position: absolute; inset: 0; z-index: -3; }
.og-hero__img { width: 100%; height: 100%; object-fit: cover; object-position: center 70%; transform: scale(1.08); animation: og-settle 2.8s cubic-bezier(.2, .6, .2, 1) forwards; }
.og-hero--noimg .og-hero__img { display: none; }
/* When the photo is present, its real stadium lights replace the drawn towers, beams and field lines. */
.og-hero--img .og-tower, .og-hero--img .og-beam, .og-hero--img .og-field { display: none; }
.og-hero--img .og-haze { background: rgba(214, 240, 190, 0.05); }
.og-hero__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,15,12,0.42) 0%, rgba(11,15,12,0.5) 50%, rgba(11,15,12,0.82) 84%, var(--og-bg) 100%); }
/* A rotating hero (trade pages): more photos stacked over the first, crossfaded by onegoal.js
   ([data-hero-rotate]). The first photo stays put underneath, so nothing ever shows through. */
.og-hero__layer { position: absolute; inset: 0; opacity: 0; transition: opacity 1.6s ease; }
.og-hero__layer.is-on { opacity: 1; }
.og-hero__layer img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 70%; }
.og-hero__lead, .og-hero__fine { text-shadow: 0 1px 12px rgba(0, 0, 0, 0.6); }

.og-lights { position: absolute; inset: 0; z-index: -2; pointer-events: none; }
.og-haze { position: absolute; left: 50%; top: 60px; width: min(1000px, 90vw); height: 520px; transform: translateX(-50%); border-radius: 50%; background: rgba(214, 240, 190, 0.07); filter: blur(90px); animation: og-haze 7s ease-in-out infinite; }
.og-beam { position: absolute; top: 44px; width: 300px; height: 1100px; background: linear-gradient(180deg, rgba(232, 255, 210, 0.22), rgba(232, 255, 210, 0) 78%); clip-path: polygon(42% 0, 58% 0, 100% 100%, 0 100%); filter: blur(24px); transform-origin: 50% 0; mix-blend-mode: screen; }
.og-beam--l { left: clamp(-60px, 4vw, 70px); animation: og-beam-l 9s ease-in-out infinite; }
.og-beam--r { right: clamp(-60px, 4vw, 70px); animation: og-beam-r 11s ease-in-out infinite; }
.og-tower { position: absolute; top: 96px; width: 76px; height: 28px; background-image: radial-gradient(circle, #F4FFE0 0 5px, rgba(244, 255, 224, 0) 6px); background-size: 15px 14px; filter: drop-shadow(0 0 8px rgba(232, 255, 210, 0.85)); }
.og-tower--l { left: calc(clamp(-60px, 4vw, 70px) + 112px); }
.og-tower--r { right: calc(clamp(-60px, 4vw, 70px) + 112px); }
.og-field { position: absolute; left: 0; top: 0; width: 100%; height: 900px; color: #1C2620; opacity: 0.9; }

.og-hero__inner { position: relative; max-width: 1360px; margin: 0 auto; padding: clamp(72px, 9vw, 120px) var(--og-gutter) clamp(56px, 6vw, 80px); display: flex; flex-direction: column; align-items: center; text-align: center; gap: 28px; }
.og-hero__title { font-family: var(--og-display); font-weight: 400; text-transform: uppercase; font-size: clamp(52px, 7.8vw, 118px); line-height: 0.94; letter-spacing: 0.01em; }
.og-hero__line { display: block; }
/* The kicker lives inside the h1: give it back the body line-height and the 28px gap .og-hero__inner put above the title. */
.og-hero__title .og-kicker { display: block; margin-bottom: 28px; line-height: 1.55; text-wrap: balance; }
.og-wipe { color: transparent; -webkit-text-stroke: 2px var(--og-text); background-image: linear-gradient(90deg, var(--og-text) 50%, rgba(242, 244, 238, 0) 50%); background-size: 200% 100%; background-position: 100% 0; -webkit-background-clip: text; background-clip: text; padding-bottom: 0.1em; margin-bottom: -0.1em; /* the fill must reach the comma's tail below the line box */ animation: og-wipe 1.4s cubic-bezier(.7, 0, .2, 1) .6s forwards; }
.og-hero__lead { max-width: 680px; font-size: clamp(18px, 1.5vw, 21px); color: #B4BDB7; }
.og-hero__ctas { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
.og-hero__fine { font-size: 15px; color: var(--og-muted); }

/* ---------- scoreboard ---------- */
.og-section--board { padding-top: 8px; }
.og-led { background-image: radial-gradient(circle, rgba(198, 244, 50, 0.07) 1px, rgba(0, 0, 0, 0) 1.6px); background-size: 7px 7px; }
.og-board { background-color: var(--og-panel-2); border: 1px solid var(--og-line); border-radius: 22px; padding: clamp(18px, 2.2vw, 30px); display: flex; flex-direction: column; gap: 22px; box-shadow: 0 40px 120px rgba(0, 0, 0, 0.6), inset 0 0 0 6px #121A14; }
.og-board__head { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
.og-board__title { display: flex; align-items: center; gap: 14px; font-family: var(--og-display); font-size: clamp(18px, 1.8vw, 24px); letter-spacing: 0.08em; text-transform: uppercase; }
.og-board__meta { font-family: var(--og-label); font-weight: 600; font-size: 16px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--og-muted); }
.og-live { width: 10px; height: 10px; border-radius: 50%; background: #FF5A36; box-shadow: 0 0 10px #FF5A36; animation: og-blink 1.6s ease-in-out infinite; }
.og-board__scroller { overflow-x: auto; scrollbar-width: thin; }
.og-board__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 10px; }
.og-day { display: flex; flex-direction: column; gap: 8px; }
.og-day__label { display: flex; justify-content: space-between; align-items: center; font-family: var(--og-label); font-weight: 700; font-size: 17px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--og-muted); padding: 4px 2px; }
.og-day__today { background: var(--og-lime); color: var(--og-bg); font-size: 12px; padding: 2px 7px; border-radius: 4px; }
.og-slot { min-height: 78px; border: 1px solid var(--og-line-soft); border-radius: 10px; background: #0D120F; padding: 10px 12px; display: flex; flex-direction: column; gap: 2px; transition: background-color .35s ease, border-color .35s ease, box-shadow .45s ease; }
.og-slot > * { flex-shrink: 0; line-height: 1.3; opacity: 0; transition: opacity .3s ease .1s; }
.og-slot.is-lit > * { opacity: 1; }
.og-slot__time { font-size: 12px; color: var(--og-muted); }
.og-slot__name { font-size: 15px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.og-slot__status { font-family: var(--og-label); font-weight: 700; font-size: 13px; letter-spacing: 0.1em; text-transform: uppercase; }
.og-slot.is-lit.is-paid { background: var(--og-paid-bg); border-color: var(--og-paid-line); box-shadow: 0 0 18px rgba(47, 165, 107, 0.35); }
.og-slot.is-paid .og-slot__status { color: var(--og-paid); }
.og-slot.is-lit.is-due { background: var(--og-due-bg); border-color: var(--og-due-line); box-shadow: 0 0 18px rgba(217, 166, 46, 0.3); }
.og-slot.is-due .og-slot__status { color: var(--og-due); }
.og-slot.is-lit.is-open { border: 1.5px dashed #4A5E4F; background: transparent; }
.og-slot.is-open .og-slot__name { color: var(--og-lime); }
.og-slot.is-open .og-slot__status { color: var(--og-muted); }

.og-board__stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; border-top: 1px solid var(--og-line); padding-top: 20px; }
.og-board__stats dt { font-family: var(--og-label); font-weight: 700; font-size: 14px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--og-muted); }
.og-stat { font-family: var(--og-display); font-size: clamp(36px, 4vw, 56px); line-height: 1.05; font-variant-numeric: tabular-nums; }
.og-stat--lime { color: var(--og-lime); text-shadow: 0 0 22px rgba(198, 244, 50, 0.45); }
.og-stat--paid { color: var(--og-paid); }
.og-stat--due { color: var(--og-due); }

/* ---------- ribbon tickers ---------- */
.og-ribbons { position: relative; height: 170px; overflow: hidden; }
.og-ribbon { position: absolute; left: -40px; right: -40px; overflow: hidden; }
.og-ribbon--back { top: 50px; background: var(--og-text); color: var(--og-bg); transform: rotate(1.5deg); padding: 14px 0; }
.og-ribbon--front { top: 58px; background: var(--og-lime); color: var(--og-bg); transform: rotate(-2deg); padding: 16px 0; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5); }
.og-ribbon__track { display: flex; gap: 40px; width: max-content; white-space: nowrap; font-family: var(--og-display); text-transform: uppercase; letter-spacing: 0.06em; animation: og-marquee 34s linear infinite; }
.og-ribbon--back .og-ribbon__track { font-size: 24px; animation-duration: 42s; animation-direction: reverse; }
.og-ribbon--front .og-ribbon__track { font-size: 34px; }

/* ---------- sports ---------- */
.og-sports { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.og-sport { background: var(--og-panel); border: 1px solid var(--og-line); border-radius: var(--og-radius); padding: 32px; display: flex; flex-direction: column; gap: 14px; }
.og-sport__icon { width: 48px; height: 48px; fill: none; stroke: var(--og-lime); stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.og-sport h3 { font-family: var(--og-display); font-weight: 400; font-size: 30px; line-height: 1.05; text-transform: uppercase; letter-spacing: 0.02em; }
.og-sport p { font-size: 16px; color: var(--og-muted); }
.og-sport .og-sport__tags { margin-top: auto; font-family: var(--og-label); font-weight: 700; font-size: 15px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--og-text); }
/* Links to the sport pages (docs/sport-pages.md): a list in each home-page card, and the
   "Coach something else?" row on every sport page. */
.og-sport__pages { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.og-more__list { list-style: none; margin: 20px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 14px 32px; }
.og-sport__link { font-family: var(--og-label); font-weight: 700; font-size: 15px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--og-lime); text-decoration: none; }
.og-sport__link::after { content: "\00a0\2192"; } /* no-break space: the arrow never wraps on its own */
.og-sport__link:hover, .og-sport__link:focus-visible { text-decoration: underline; text-underline-offset: 4px; }

/* ---------- compare table ---------- */
.og-compare { margin-top: 44px; border: 1px solid var(--og-line); border-radius: var(--og-radius); overflow: hidden; }
.og-compare table { width: 100%; border-collapse: collapse; font-size: 19px; }
.og-compare thead th, .og-compare thead td { background: var(--og-panel); padding: 20px 28px; text-align: left; font-family: var(--og-label); font-weight: 700; font-size: 16px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--og-muted); }
.og-compare thead .og-compare__us { background: var(--og-lime); color: var(--og-bg); }
.og-compare tbody th { width: 240px; padding: 26px 28px; text-align: left; font-family: var(--og-display); font-weight: 400; font-size: 26px; letter-spacing: 0.04em; text-transform: uppercase; }
.og-compare tbody td { padding: 26px 28px; color: var(--og-dim); }
.og-compare tbody td.og-compare__us { background: #141C16; color: var(--og-text); font-weight: 600; }
.og-compare tbody tr { border-top: 1px solid var(--og-line); }

/* ---------- how it works: demo reel + the two sides ---------- */
.og-band { background: var(--og-panel-2); border-top: 1px solid var(--og-line-soft); border-bottom: 1px solid var(--og-line-soft); }
.og-how { max-width: calc(var(--og-max) + var(--og-gutter) * 2); margin: 0 auto; padding: clamp(64px, 8vw, 110px) var(--og-gutter); display: flex; flex-direction: column; gap: 44px; }
.og-how__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; }
.og-how__head p { max-width: 460px; }
.og-reel { display: flex; flex-direction: column; gap: 14px; width: 100%; max-width: 1080px; margin: 0 auto; }
.og-reel__frame { border: 1px solid var(--og-line); border-radius: 22px; padding: clamp(8px, 1vw, 12px); background: #121A14; box-shadow: 0 40px 120px rgba(0, 0, 0, 0.6), 0 0 80px rgba(198, 244, 50, 0.06); }
.og-reel__frame video { width: 100%; height: auto; aspect-ratio: 16 / 9; border-radius: 14px; background: #0D120F; }
.og-reel figcaption { font-family: var(--og-label); font-weight: 600; font-size: 16px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--og-muted); text-align: center; }
.og-sides { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px; }
.og-side { border-top: 1px solid var(--og-line); padding-top: 24px; display: flex; flex-direction: column; gap: 12px; align-items: flex-start; }
.og-side h3 { font-family: var(--og-display); font-weight: 400; font-size: 30px; text-transform: uppercase; letter-spacing: 0.03em; }
.og-side p { color: var(--og-muted); }
.og-stores { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 4px; }
.og .og-store { display: flex; flex-direction: column; justify-content: center; min-width: 170px; min-height: 56px; padding: 8px 18px; border: 1.5px solid var(--og-text); border-radius: 10px; color: var(--og-text); text-decoration: none; line-height: 1.15; }
.og a.og-store:hover { background: rgba(242, 244, 238, 0.08); color: var(--og-text); }
.og-store.is-soon { opacity: 0.8; border-style: dashed; }
.og-store__small { font-size: 12px; color: var(--og-muted); }
.og-store__big { font-size: 20px; font-weight: 700; }

/* ---------- AI assistant ---------- */
.og-assistant { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
.og-assistant__copy { display: flex; flex-direction: column; gap: 24px; }
.og-points { display: flex; flex-direction: column; gap: 20px; }
.og-points li { display: grid; grid-template-columns: 32px 1fr; gap: 14px; align-items: start; }
.og-points svg { width: 32px; height: 32px; padding: 6px; border-radius: 50%; background: rgba(198, 244, 50, 0.12); fill: none; stroke: var(--og-lime); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.og-points h3 { font-size: 20px; font-weight: 700; line-height: 1.3; }
.og-points p { color: var(--og-muted); font-size: 16px; }
.og-assistant__fine { font-size: 15px; color: var(--og-dim); border-top: 1px solid var(--og-line); padding-top: 18px; }

.og-chat { background-color: var(--og-panel-2); border: 1px solid var(--og-line); border-radius: 22px; padding: clamp(20px, 2.4vw, 30px); display: flex; flex-direction: column; gap: 12px; box-shadow: 0 40px 120px rgba(0, 0, 0, 0.6), inset 0 0 0 6px #121A14; }
.og-chat__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 4px 12px; white-space: nowrap; padding-bottom: 8px; margin-bottom: 4px; border-bottom: 1px solid var(--og-line); font-family: var(--og-display); font-size: 22px; letter-spacing: 0.08em; text-transform: uppercase; }
.og-chat__note { font-family: var(--og-label); font-weight: 700; font-size: 14px; letter-spacing: 0.12em; color: var(--og-dim); }
.og-chat__msg { max-width: 86%; padding: 13px 17px; border-radius: 18px; font-size: 17px; line-height: 1.4; transition: opacity .4s ease, transform .4s ease; }
.og-chat__msg--you { align-self: flex-end; background: var(--og-lime); color: var(--og-bg); font-weight: 600; border-bottom-right-radius: 6px; }
.og-chat__msg--ai { align-self: flex-start; background: #18211B; border: 1px solid var(--og-line); border-bottom-left-radius: 6px; }
.og-chat__msg--ai b { color: var(--og-paid); }
/* onegoal.js adds is-waiting, then reveals each message in turn; without JS everything shows. */
.og-chat.is-waiting .og-chat__msg:not(.is-in) { opacity: 0; transform: translateY(10px); }

/* ---------- books / box score ---------- */
.og-books { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 64px; align-items: center; }
.og-books__copy { display: flex; flex-direction: column; gap: 24px; }
.og-boxscore { background-color: var(--og-panel-2); border: 1px solid var(--og-line); border-radius: 22px; padding: clamp(20px, 2.4vw, 32px); display: flex; flex-direction: column; gap: 24px; }
.og-boxscore__head { display: flex; justify-content: space-between; gap: 12px; font-family: var(--og-display); font-size: 22px; letter-spacing: 0.08em; text-transform: uppercase; }
.og-boxscore__note { font-family: var(--og-label); font-weight: 700; font-size: 14px; letter-spacing: 0.12em; color: var(--og-dim); }
.og-boxscore__stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.og-boxscore__stats > div { background: #121A14; border: 1px solid var(--og-line); border-radius: 14px; padding: 18px 20px; display: flex; flex-direction: column; gap: 4px; }
.og-boxscore__stats span { font-family: var(--og-label); font-weight: 700; font-size: 14px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--og-muted); }
.og-boxscore__stats b { font-family: var(--og-display); font-weight: 400; font-size: clamp(38px, 4vw, 58px); line-height: 1; font-variant-numeric: tabular-nums; }
.og-boxscore__stats b.og-lime { text-shadow: 0 0 22px rgba(198, 244, 50, 0.4); }
.og-boxscore__rows > div { display: flex; justify-content: space-between; padding: 14px 0; border-bottom: 1px solid var(--og-line); }
.og-boxscore__rows > div:last-child { border-bottom: 0; }
.og-boxscore__rows span { color: var(--og-muted); }
.og-boxscore__rows b { font-variant-numeric: tabular-nums; }
.og-boxscore__actions { display: flex; gap: 12px; }
.og-ui__btn { display: block; text-align: center; border-radius: 8px; padding: 16px; font-family: var(--og-label); font-weight: 700; font-size: 18px; letter-spacing: 0.06em; text-transform: uppercase; }
.og-ui__btn--lime { flex-grow: 1; background: var(--og-lime); color: var(--og-bg); }
.og-ui__btn--outline { border: 1.5px solid var(--og-text); color: var(--og-text); padding: 14.5px 22px; }

/* ---------- steps ---------- */
.og-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 48px; }
.og-step { background: var(--og-panel); border: 1px solid var(--og-line); border-radius: var(--og-radius); padding: 36px; display: flex; flex-direction: column; gap: 14px; }
.og-step__num { font-family: var(--og-display); font-size: 110px; line-height: 0.9; color: transparent; -webkit-text-stroke: 2px var(--og-lime); }
.og-step h3 { font-size: 24px; font-weight: 700; }
.og-step p { color: var(--og-muted); }

/* ---------- testimonials (hidden until launch) ---------- */
.og-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 48px; }
.og-card { background: var(--og-panel); border: 2px solid var(--og-lime); border-radius: 18px; padding: 12px; display: flex; flex-direction: column; gap: 14px; }
.og-card:nth-child(1) { transform: rotate(-1.5deg); }
.og-card:nth-child(2) { transform: rotate(0.8deg); }
.og-card:nth-child(3) { transform: rotate(-0.6deg); }
.og-card__photo { position: relative; aspect-ratio: 1; border-radius: 10px; overflow: hidden; background: #1B241E; }
.og-card__photo img { width: 100%; height: 100%; object-fit: cover; }
.og-card__sport { position: absolute; left: 12px; top: 12px; background: var(--og-bg); color: var(--og-lime); font-family: var(--og-label); font-weight: 700; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; padding: 5px 10px; border-radius: 4px; }
.og-card__plate { background: var(--og-lime); color: var(--og-bg); border-radius: 8px; padding: 10px 14px; display: flex; justify-content: space-between; align-items: center; }
.og-card__plate b { font-family: var(--og-display); font-weight: 400; font-size: 24px; text-transform: uppercase; }
.og-card__plate span { font-family: var(--og-label); font-weight: 700; font-size: 14px; letter-spacing: 0.08em; text-transform: uppercase; }
.og-card blockquote { padding: 4px 6px 10px; font-size: 18px; }

/* ---------- pricing + faq ---------- */
.og-pricing { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
.og-price { background: var(--og-lime); color: var(--og-bg); border-radius: var(--og-radius); padding: clamp(28px, 3.4vw, 48px); display: flex; flex-direction: column; gap: 18px; box-shadow: 0 0 80px rgba(198, 244, 50, 0.18); }
.og-price__label { font-family: var(--og-label); font-weight: 700; font-size: 18px; letter-spacing: 0.16em; text-transform: uppercase; }
.og-price__amount { font-family: var(--og-label); font-weight: 700; font-size: 26px; text-transform: uppercase; }
.og-price__amount span { font-family: var(--og-display); font-size: clamp(110px, 12vw, 160px); line-height: 0.9; margin-right: 8px; }
.og-price p { font-size: 18px; font-weight: 500; }
.og-price .og-btn { margin-top: 6px; }
.og-price .og-price__fine { font-size: 15px; text-align: center; }
.og-faq { background: var(--og-panel); border: 1px solid var(--og-line); border-radius: var(--og-radius); padding: clamp(24px, 3vw, 40px) clamp(24px, 3vw, 44px); }
.og-faq__title { font-family: var(--og-display); font-weight: 400; font-size: 36px; text-transform: uppercase; letter-spacing: 0.03em; padding-bottom: 12px; }
.og-faq details { border-top: 1px solid var(--og-line); }
.og-faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 0; font-size: 19px; font-weight: 700; min-height: 44px; }
.og-faq summary::-webkit-details-marker { display: none; }
.og-faq summary::after { content: "+"; font-family: var(--og-display); font-size: 28px; color: var(--og-lime); transition: transform .2s ease; }
.og-faq details[open] summary::after { transform: rotate(45deg); }
.og-faq details p { padding: 0 0 18px; color: var(--og-muted); }

/* ---------- final ---------- */
.og-final { position: relative; overflow: hidden; border-top: 1px solid var(--og-line-soft); padding: clamp(80px, 10vw, 130px) var(--og-gutter); display: flex; flex-direction: column; align-items: center; gap: 36px; text-align: center; }
.og-final__glow { position: absolute; left: 50%; top: 40px; width: min(800px, 90vw); height: 420px; transform: translateX(-50%); border-radius: 50%; background: rgba(198, 244, 50, 0.08); filter: blur(90px); animation: og-haze 7s ease-in-out infinite; pointer-events: none; }
.og-final__title { position: relative; font-family: var(--og-display); font-weight: 400; text-transform: uppercase; font-size: clamp(64px, 10vw, 140px); line-height: 0.92; }
.og-glow-text { text-shadow: 0 0 40px rgba(198, 244, 50, 0.35); }
.og-final .og-hero__ctas { position: relative; }

.og-footer { border-top: 1px solid var(--og-line); }
.og-footer__inner { max-width: calc(var(--og-max) + var(--og-gutter) * 2); margin: 0 auto; padding: 24px var(--og-gutter) calc(24px + env(safe-area-inset-bottom, 0px)); display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; font-size: 14px; color: var(--og-muted); }
.og-footer__brand { display: flex; align-items: center; gap: 10px; }
.og-footer__brand svg { color: var(--og-lime); flex-shrink: 0; }
.og-footer a { color: var(--og-muted); }
.og-footer nav { display: flex; flex-wrap: wrap; gap: 8px 24px; }

/* ---------- Hayden, the brand character ---------- */
/* A still in the markup; hayden.js adds a canvas and the .is-live class once the sprite is in. */
.og-hayden { pointer-events: none; aspect-ratio: 380 / 640; filter: drop-shadow(0 0 10px rgba(198, 244, 50, 0.28)); }
.og-hayden img, .og-hayden canvas { display: block; width: 100%; height: 100%; }
.og-hayden.is-live img { display: none; }
.og-hayden--dock { position: fixed; right: max(8px, calc((100vw - var(--og-max)) / 4 - 60px)); bottom: 0; height: clamp(220px, 34vh, 320px); z-index: 40; opacity: 0; transition: opacity .6s ease; }
.og-hayden--dock.is-live { opacity: 1; }
.og-hayden--final { position: relative; height: 240px; margin-bottom: -12px; display: none; }
/* The ball she lobs to the final Start free button, and the button catching it. */
.og-ball { position: fixed; left: 0; top: 0; z-index: 45; pointer-events: none; will-change: transform; filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.5)); }
.og-ball[hidden] { display: none; }
.og-btn.is-caught { animation: og-catch .5s ease-out; }
@keyframes og-catch { 0% { transform: scale(1); } 30% { transform: scale(1.08); box-shadow: 0 0 0 6px rgba(198, 244, 50, .35), 0 0 48px rgba(198, 244, 50, .55); } 100% { transform: scale(1); } }
@media (max-width: 1099px) {
  .og-hayden--dock { display: none; }
  .og-hayden--final { display: block; }
}

/* ---------- keyframes ---------- */
@keyframes og-beam-l { 0%, 100% { transform: rotate(-28deg); } 50% { transform: rotate(-20deg); } }
@keyframes og-beam-r { 0%, 100% { transform: rotate(28deg); } 50% { transform: rotate(20deg); } }
@keyframes og-haze { 0%, 100% { opacity: .55; } 50% { opacity: .9; } }
@keyframes og-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes og-wipe { to { background-position: 0 0; } }
@keyframes og-settle { to { transform: scale(1); } }
@keyframes og-blink { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* ---------- responsive ---------- */
@media (max-width: 1080px) {
  .og-nav__links { display: none; }
  .og-sports { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .og-books, .og-assistant { grid-template-columns: 1fr; }
  .og-split-head, .og-how__head { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 900px) {
  .og-board__grid { grid-template-columns: repeat(7, 150px); }
  .og-board__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .og-steps, .og-cards, .og-pricing, .og-sides { grid-template-columns: 1fr; }
  .og-compare table, .og-compare tbody, .og-compare tr, .og-compare th, .og-compare td { display: block; width: auto; }
  .og-compare thead { display: none; }
  .og-compare tbody tr { padding: 18px 20px; }
  .og-compare tbody tr:first-child { border-top: 0; }
  .og-compare tbody th { padding: 0 0 6px; font-size: 22px; width: auto; }
  .og-compare tbody td { padding: 2px 0; font-size: 16px; }
  .og-compare tbody td.og-compare__us { background: none; padding-top: 4px; }
  .og-compare tbody td.og-compare__us::before { content: "With OneGoal: "; color: var(--og-lime); font-weight: 700; }
}

@media (max-width: 760px) {
  .og-social--nav { display: none; }
  .og-topbar { font-size: 12px; letter-spacing: 0.08em; }
  .og-nav__signin { display: none; }
  .og-hero__ctas { flex-direction: column; align-self: stretch; }
  /* Phone: a square crop of the photo sits below the buttons instead of being cropped behind the text. */
  .og-hero { display: flex; flex-direction: column; }
  .og-hero__inner { order: 1; }
  .og-hero__media { position: relative; inset: auto; order: 2; margin-top: -72px; }
  .og-hero__img { height: auto; aspect-ratio: 1 / 1; }
  .og-hero__shade { background: linear-gradient(180deg, var(--og-bg) 0%, rgba(11,15,12,0.35) 20%, rgba(11,15,12,0) 40%, rgba(11,15,12,0) 75%, var(--og-bg) 100%); }
  .og-hero--noimg .og-hero__media { display: none; }
  .og-hero__ctas .og-btn { width: 100%; }
  .og-wipe { -webkit-text-stroke-width: 1.5px; }
  .og-beam { width: 160px; height: 760px; }
  .og-tower { width: 46px; top: 88px; }
  .og-tower--l { left: 40px; }
  .og-tower--r { right: 40px; }
  .og-ribbons { height: 120px; }
  .og-ribbon--back { top: 34px; }
  .og-ribbon--front { top: 40px; }
  .og-ribbon--front .og-ribbon__track { font-size: 24px; }
  .og-ribbon--back .og-ribbon__track { font-size: 18px; }
  .og-sports { grid-template-columns: 1fr; }
  .og-reel__frame { padding: 6px; border-radius: 14px; }
  .og-reel__frame video { border-radius: 9px; }
  .og-chat__head { font-size: 19px; }
  .og-chat__note { font-size: 12px; }
  .og-chat__msg { font-size: 16px; max-width: 92%; }
  .og-boxscore__stats { grid-template-columns: 1fr 1fr; }
  .og-boxscore__stats > div:first-child { grid-column: span 2; }
  .og-boxscore__actions { flex-direction: column; }
  .og-footer__inner { flex-direction: column; align-items: flex-start; }
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .og-beam, .og-haze, .og-final__glow, .og-ribbon__track, .og-live, .og-hero__img { animation: none !important; }
  .og-hero__img { transform: none; }
  .og-wipe { animation: none; background-position: 0 0; }
  .og-slot, .og-slot > *, .og-chat__msg { transition: none; }
  .og-btn { transition: none; }
}
