/* ============================================================================
   GoDartsPro — Practice page additions (2026)
   ----------------------------------------------------------------------------
   Small companion sheet to godartspro-2026.css. Everything here is prefixed
   .gdp-pr and only covers the parts the practice page needs that the shared
   design system does not already provide (editorial article grid, skill blocks,
   warm-up cards, checkout routes, targets, Performance Center promo).

   Load AFTER godartspro-2026.css. Recolour still happens through --accent.
   ========================================================================== */

/* Reveal animation, same contract as the start page (see head script). */
.gdp-js #gdp-practice [data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.gdp-js #gdp-practice [data-reveal].gdp-in{opacity:1;transform:none}

/* ── Hero jump nav ───────────────────────────────────────────────────────── */
.gdp-pr-jump{display:flex;flex-wrap:wrap;gap:9px;margin-top:28px}
.gdp-pr-jump a{font:600 12px 'JetBrains Mono',monospace;letter-spacing:.04em;color:#c8cdc2;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.16);border-radius:99px;padding:9px 14px;transition:color .15s,border-color .15s,background .15s}
.gdp-pr-jump a:hover{color:#fff;border-color:var(--accent);background:rgba(255,255,255,.07)}

/* ── Editorial article grid (sticky heading + prose column) ──────────────── */
.gdp-pr-art{display:grid;grid-template-columns:330px 1fr;gap:clamp(30px,5vw,72px);align-items:start}
.gdp-pr-side{position:sticky;top:104px}
.gdp-pr-side h2{font:400 clamp(28px,3.4vw,44px)/1 'Anton';text-transform:uppercase;color:#fbfcf8;margin:14px 0 0}
.gdp-pr-side .note{font:500 13px/1.6 'JetBrains Mono',monospace;letter-spacing:.02em;color:#7d837a;margin-top:18px}
.gdp-pr-body p{font:400 clamp(15.5px,1.3vw,17px)/1.78 'Archivo';color:#b6bcb1;margin:0 0 18px;max-width:68ch;text-wrap:pretty}
.gdp-pr-body p:last-child{margin-bottom:0}
.gdp-pr-body h3{font:800 clamp(18px,1.7vw,21px) 'Archivo';color:var(--ink);margin:30px 0 12px}
.gdp-pr-body h3:first-child{margin-top:0}
.gdp-pr-body a:not(.gdp-btn){color:var(--accent);border-bottom:1px solid color-mix(in srgb,var(--accent) 40%,transparent)}
.gdp-pr-body a:not(.gdp-btn):hover{border-bottom-color:var(--accent)}
.gdp-pr-body b,.gdp-pr-body strong{color:#dfe3da;font-weight:700}
.gdp-pr-sub{font:400 clamp(17px,1.6vw,21px)/1.55 'Archivo';color:#dfe3da;margin:0 0 22px;max-width:64ch}
.gdp-pr-pull{border-left:2px solid var(--accent);padding:2px 0 2px 22px;margin:28px 0;font:600 clamp(18px,1.9vw,23px)/1.45 'Archivo';color:#e6eae0;max-width:52ch}

/* ── Skill blocks (game rows) ────────────────────────────────────────────── */
.gdp-pr-skill{margin-top:46px}
.gdp-pr-skill:first-of-type{margin-top:38px}
.gdp-pr-skillhead{display:flex;align-items:flex-end;justify-content:space-between;gap:20px 32px;flex-wrap:wrap;padding-bottom:15px;margin-bottom:18px;border-bottom:1px solid rgba(255,255,255,.1)}
.gdp-pr-skillhead .ix{font:600 11px/1 'JetBrains Mono',monospace;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}
.gdp-pr-skillhead h3{font:800 clamp(20px,2vw,25px)/1.15 'Archivo';color:#fbfcf8;margin:11px 0 0}
.gdp-pr-skillhead .d{font:400 14.5px/1.6 'Archivo';color:var(--muted);max-width:480px;margin:0}
.gdp-pr-skill h4{margin:0}

/* Poster fallback: the game initials sit behind the real poster image, so a
   missing game-img-<id>.jpg still reads as a card instead of a hole. */
.gdp-pr-ph{position:absolute;inset:0 0 40% 0;display:flex;align-items:center;justify-content:center;font:400 clamp(26px,3.4vw,40px)/1 'Anton';letter-spacing:.06em;color:rgba(255,255,255,.11);z-index:0}

/* ── Warm-up cards ───────────────────────────────────────────────────────── */
.gdp-pr-warm{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:28px 0 4px}
.gdp-pr-warm>div{background:var(--surf);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:24px;border-top:2px solid color-mix(in srgb,var(--accent) 55%,transparent)}
.gdp-pr-warm .t{font:600 11px/1 'JetBrains Mono',monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.gdp-pr-warm h4{font:800 19px 'Archivo';color:#fbfcf8;margin:13px 0 9px}
.gdp-pr-warm p{font:400 14.5px/1.6 'Archivo';color:var(--muted);margin:0;max-width:none}

/* ── Score targets ───────────────────────────────────────────────────────── */
.gdp-pr-targets{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 6px}
.gdp-pr-targets span{font:400 clamp(19px,2vw,26px)/1 'Anton';color:#cfd4c9;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:13px 17px}
.gdp-pr-targets span.hi{color:#0a0b0a;background:var(--accent);border-color:var(--accent)}

/* ── Checkout halving routes ─────────────────────────────────────────────── */
.gdp-pr-routes{display:flex;flex-direction:column;gap:12px;margin:28px 0 6px}
.gdp-pr-route{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surf);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:15px 18px}
.gdp-pr-route .n{font:400 21px/1 'Anton';color:#e6eae0;min-width:52px;text-align:center;border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:9px 8px}
.gdp-pr-route .n.first{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 9%,transparent)}
.gdp-pr-route .ar{color:var(--accent);font:700 13px 'JetBrains Mono',monospace}
.gdp-pr-route .lb{margin-left:auto;font:500 12px/1.4 'JetBrains Mono',monospace;letter-spacing:.04em;color:var(--muted);text-align:right}

/* ── Inline CTA row ──────────────────────────────────────────────────────── */
.gdp-pr-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}

/* ── Performance Center promo ────────────────────────────────────────────── */
.gdp-pr-pc{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(24px,3.5vw,48px);align-items:center;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 7%,transparent),transparent);border:1px solid color-mix(in srgb,var(--accent) 24%,transparent);border-radius:16px;padding:clamp(20px,2.6vw,30px);margin-top:40px}
.gdp-pr-pc-shot{border-radius:12px;overflow:hidden;border:1px solid rgba(255,255,255,.12);background:#0e120e}
.gdp-pr-pc-shot img{display:block;width:100%;height:auto}
.gdp-pr-pc h3{font:800 clamp(20px,2.1vw,25px)/1.25 'Archivo';color:#fbfcf8;margin:12px 0 10px}
.gdp-pr-pc p{font:400 15px/1.65 'Archivo';color:var(--muted);margin:0 0 20px;max-width:52ch}

/* ── Tablet / mobile ─────────────────────────────────────────────────────── */
@media(max-width:920px){
  .gdp-pr-art{grid-template-columns:1fr;gap:24px}
  .gdp-pr-side{position:static}
  .gdp-pr-warm{grid-template-columns:1fr}
  .gdp-pr-pc{grid-template-columns:1fr}
  .gdp-pr-pc-shot{order:2}
}
@media(max-width:680px){
  .gdp-pr-route .lb{margin-left:0;flex:1 1 100%;text-align:left}
  .gdp-pr-targets span{padding:11px 14px}
}
