/* getcoast.fit shared styles: the homepage design system (Oct 2026), used by every page except the homepage,
   which carries its own layout rules inline. Dark studio, Outfit + DM Mono + Georgia italic, food in green,
   training in cyan, The Lab in violet. Page-specific rules stay in each page's own <style>. */
:root{
  --bg:#08080b; --studio-top:#1d1f24; --surface:#101015; --surface-2:#16161c; --line:rgba(255,255,255,.08);
  --text:#f2f2f4; --text-2:#a3a3ad; --text-3:#7a7a86;
  --cyan:#22d3ee; --cyan-soft:rgba(34,211,238,.12); --green:#22c55e; --green-text:#4ade80; --green-soft:rgba(34,197,94,.12);
  --amber:#f59e0b; --violet:#a855f7; --violet-text:#c084fc; --violet-soft:rgba(168,85,247,.12); --red:#ef4444;
  --serif: Georgia, 'Times New Roman', serif; --spring:cubic-bezier(.2,.9,.25,1.12); --sans: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --mono: 'DM Mono', ui-monospace, Menlo, monospace;
  /* aliases so older page rules keep resolving */
  --border:var(--line); --cyan-dim:var(--cyan-soft);
  color-scheme: dark;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{overflow-x:hidden;scroll-padding-top:76px}
body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.6;font-size:17px}
img{max-width:100%}
a{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding-inline:20px}
.wrap.narrow{max-width:760px}
.mono{font-family:var(--mono)}
.label{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-2)}
.label.g{color:var(--green-text)} .label.c{color:var(--cyan)} .label.v{color:var(--violet-text)}
.serif{font-family:var(--serif);font-style:italic;font-weight:700;letter-spacing:-.02em}
.caps{font-weight:900;text-transform:uppercase;letter-spacing:-.01em;line-height:.98}
.cyan{color:var(--cyan)} .green{color:var(--green-text)} .violet{color:var(--violet-text)}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* nav */
.site-nav{position:fixed;inset:0 0 auto 0;z-index:1000;height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;
  background:rgba(8,8,11,.72);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line)}
.site-nav .logo,.site-foot .logo{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--text)}
.logo-ic{display:block;flex:none;width:24px;height:24px}
.logo-wm{display:block;flex:none;width:75px;height:20px;margin-top:1px}
.site-nav .nav-links{display:flex;align-items:center;gap:1.6rem;list-style:none;margin:0;padding:0}
.site-nav .nav-links a{text-decoration:none;color:var(--text-2);font-size:.88rem;font-weight:500;transition:color .2s}
.site-nav .nav-links a:hover{color:var(--text)}
.site-nav .nav-links a[aria-current="page"]{color:#fff;text-decoration:underline;text-underline-offset:8px;text-decoration-thickness:2px}
.site-nav .nav-links a.m[aria-current="page"]{text-decoration-color:var(--green-text)}
.site-nav .nav-links a.e[aria-current="page"]{text-decoration-color:var(--cyan)}
.site-nav .nav-links a.l[aria-current="page"]{text-decoration-color:var(--violet)}
.site-nav .nav-links a.c{display:inline-flex;align-items:center;gap:7px}
.site-nav .nav-links a.c::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green-text);box-shadow:0 0 8px var(--green-text)}
.site-nav .nav-links a.c[aria-current="page"]{text-decoration-color:var(--green-text)}
.site-nav .nav-links a.r[aria-current="page"]{text-decoration-color:var(--cyan)}
.site-nav .nav-cta{background:#fff;color:#0a0a0b !important;padding:.5rem 1rem;border-radius:999px;font-weight:700 !important}
.site-nav .burger{display:none;background:none;border:0;padding:10px;cursor:pointer}
.site-nav .burger span{display:block;width:20px;height:2px;background:#fff;margin:4px 0;transition:transform .25s,opacity .25s}
@media(max-width:900px){
  .site-nav .burger{display:block}
  .site-nav .nav-links{position:fixed;top:60px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:rgba(8,8,11,.97);border-bottom:1px solid var(--line);
    padding:8px 20px 18px;transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}
  .site-nav .nav-links.open{opacity:1;transform:none;pointer-events:auto}
  .site-nav .nav-links li a{display:block;padding:12px 0;font-size:1rem}
  .site-nav .nav-cta{display:inline-block !important;margin-top:8px;text-align:center}
}

/* page hero: the homepage's studio gradient, a label, a big serif headline */
.page-hero{position:relative;padding:calc(60px + 72px) 20px 56px;text-align:center;background:linear-gradient(180deg,var(--studio-top) 0%,#121318 55%,var(--bg) 100%)}
.page-hero.left{text-align:left}
.page-hero .inner{max-width:1180px;margin:0 auto}
.page-hero h1{font-family:var(--serif);font-style:italic;font-weight:700;letter-spacing:-.02em;font-size:clamp(2.6rem,7vw,5.2rem);line-height:1;color:#fff;margin-top:14px}
.page-hero h1 .cyan,.page-hero h1 .green,.page-hero h1 .violet,.page-hero h1 em{display:block}
.page-hero h1 em{font-style:italic;color:var(--cyan)}
.page-hero .sub{max-width:46ch;margin:20px auto 0;color:var(--text-2);font-size:clamp(1.02rem,1.6vw,1.18rem)}
.page-hero.left .sub{margin-left:0}
@media(max-width:700px){.page-hero{padding:calc(60px + 48px) 20px 40px}}

/* sections */
.sec{padding:96px 0}
.sec-head{max-width:760px}
.sec-head h2{font-size:clamp(2.2rem,5.4vw,4rem);margin-top:14px}
.sec-head p{margin-top:16px;color:var(--text-2);font-size:1.1rem;max-width:56ch}
@media(max-width:700px){.sec{padding:70px 0}}

/* buttons */
.badges{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:30px}
.badge{display:inline-flex;align-items:center;gap:10px;height:52px;padding:0 18px 0 14px;border-radius:14px;background:#fff;color:#0a0a0b;text-decoration:none;font-weight:700;transition:transform .2s}
.badge:hover{transform:translateY(-2px)}
.badge small{display:block;font-size:.66rem;font-weight:600;opacity:.7;line-height:1}
.badge span{display:block;line-height:1.1;font-size:1.05rem}
.badge.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.28)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:.75rem 1.3rem;border-radius:999px;background:#fff;color:#0a0a0b;font-weight:700;font-size:.98rem;text-decoration:none;border:0;cursor:pointer;font-family:var(--sans);transition:transform .2s,background .2s}
.btn:hover{transform:translateY(-1px)}
.btn.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.28)}
.btn.g{background:var(--green);color:#04130a} .btn.c{background:var(--cyan);color:#04161a} .btn.v{background:var(--violet);color:#fff}
.link{display:inline-flex;align-items:center;gap:8px;font-weight:700;text-decoration:none;color:var(--violet)}
.link.c{color:var(--cyan)} .link.g{color:var(--green-text)}

/* cards */
.card{border:1px solid var(--line);border-radius:22px;background:var(--surface);padding:26px}

/* back link */
.back{display:inline-block;font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;color:var(--text-3);text-decoration:none;margin-bottom:28px}
.back:hover{color:var(--text)}

/* long-form text: blog posts, legal pages */
.prose{max-width:700px;margin:0 auto;padding:calc(60px + 64px) 20px 40px}
.prose .post-meta{display:flex;align-items:center;gap:.6rem;margin-bottom:14px}
.prose .post-date,.prose .post-read,.prose .post-meta-sep{font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--text-3)}
.prose h1{font-family:var(--serif);font-style:italic;font-weight:700;letter-spacing:-.02em;color:#fff;font-size:clamp(2.3rem,6vw,3.6rem);line-height:1.04;margin-bottom:30px}
.prose h2{font-size:1.5rem;font-weight:800;letter-spacing:-.01em;line-height:1.2;margin:48px 0 14px;color:#fff}
.prose h3{font-size:1.15rem;font-weight:700;margin:32px 0 10px;color:#fff}
.prose p{color:var(--text-2);margin-bottom:1.25rem;font-size:1.06rem;line-height:1.75}
.prose strong{color:var(--text);font-weight:600}
.prose em{color:inherit}
.prose a{color:var(--cyan);text-decoration:underline;text-decoration-color:rgba(34,211,238,.35);text-underline-offset:3px}
.prose a:hover{text-decoration-color:var(--cyan)}
.prose a.back{color:var(--text-3);text-decoration:none}
.prose ul,.prose ol{color:var(--text-2);margin:0 0 1.25rem 1.3rem;font-size:1.06rem;line-height:1.7}
.prose li{margin-bottom:.45rem}
.prose li::marker{color:var(--text-3)}
.prose blockquote{border-left:3px solid var(--cyan);padding:.4rem 0 .4rem 1.3rem;margin:2rem 0;color:#fff;font-family:var(--serif);font-style:italic;font-size:1.35rem;line-height:1.4}
.prose sup a{font-family:var(--mono);font-size:.72em;font-weight:500;text-decoration:none}
.prose img{max-width:100%;height:auto;display:block}
.prose hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}
.prose table{width:100%;border-collapse:collapse;margin:0 0 1.5rem;font-size:.95rem;color:var(--text-2);display:block;overflow-x:auto}
.prose th,.prose td{border-bottom:1px solid var(--line);padding:.6rem .7rem;text-align:left;vertical-align:top}
.prose th{color:var(--text);font-weight:700}
.prose .references{margin-top:3.5rem;padding-top:2rem;border-top:1px solid var(--line)}
.prose .references h2{margin-top:0;font-family:var(--mono);font-size:.74rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--text-3)}
.prose .references ol{color:var(--text-3);font-size:.86rem;line-height:1.6}
.prose .references li{margin-bottom:.8rem}
.prose .references li em{color:var(--text-2)}
.prose .references li a{color:var(--text-2);word-break:break-word}
.prose .cta-box{border:1px solid var(--line);border-radius:22px;padding:28px 24px;margin:2.5rem 0;background:linear-gradient(180deg,var(--surface-2),var(--surface));text-align:center}
.prose .cta-box p{color:#fff;margin-bottom:16px;font-weight:600;font-size:1.08rem}
.prose .cta-box a{display:inline-flex;align-items:center;gap:.4rem;padding:.75rem 1.3rem;border-radius:999px;background:#fff;color:#0a0a0b;font-weight:700;font-size:.95rem;text-decoration:none}
.prose .screenshot{margin:2rem 0;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:var(--surface)}
.prose .screenshot img{width:100%;height:auto;display:block}
.prose .screenshot-caption{padding:.75rem 1rem;font-family:var(--mono);font-size:.72rem;color:var(--text-3);letter-spacing:.02em;border-top:1px solid var(--line)}
.prose .screenshot-scroll{display:flex;gap:.75rem;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;padding:.5rem 0;margin:2rem 0 0}
.prose .screenshot-scroll .ss-item{flex:0 0 auto;width:220px;border-radius:18px;overflow:hidden;border:1px solid var(--line);scroll-snap-align:start}
.prose .screenshot-scroll .ss-item img{width:100%;height:auto;display:block}
.prose .app-card{border:1px solid var(--line);border-radius:18px;padding:22px;margin:1.5rem 0;background:var(--surface)}
.prose .app-card h3{margin:0 0 .5rem;font-size:1.15rem}
.prose .app-card .price{font-family:var(--mono);font-size:.78rem;color:var(--cyan);margin-bottom:.75rem;display:block}
.prose .app-card .pros{color:var(--green-text);font-size:.95rem;margin-bottom:.25rem}
.prose .app-card .cons{color:#f87171;font-size:.95rem}
.prose .verdict{border:1px solid rgba(34,211,238,.2);border-radius:18px;padding:22px;margin:2rem 0;background:var(--cyan-soft)}
.prose .verdict h3{color:var(--cyan);margin:0 0 .5rem;font-size:1.05rem}
.prose .verdict p{margin-bottom:0}

/* blog index list (markup written by scripts/build-blog.js) */
.post-list{max-width:820px;margin:0 auto;padding:0 20px 40px}
.post-link{display:block;padding:28px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.post-link:first-child{border-top:1px solid var(--line)}
.post-link .post-meta{display:flex;align-items:center;gap:.6rem;margin-bottom:8px}
.post-link .post-date,.post-link .post-read,.post-link .post-meta-sep{font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--text-3)}
.post-link .post-title{font-family:var(--serif);font-style:italic;font-weight:700;letter-spacing:-.01em;font-size:clamp(1.45rem,3vw,1.9rem);line-height:1.15;color:#fff;transition:color .2s}
.post-link .post-desc{margin-top:8px;color:var(--text-2);font-size:1rem;max-width:62ch}
.post-link:hover .post-title{color:var(--cyan)}

/* final download band + footer */
.final{text-align:center;padding:110px 20px;background:radial-gradient(ellipse at 50% 0%,#1c1e24,var(--bg) 70%)}
.final h2{font-family:var(--serif);font-style:italic;font-weight:700;letter-spacing:-.02em;font-size:clamp(2.6rem,7vw,5rem);line-height:1;margin-top:14px}
.final p{color:var(--text-2);margin-top:16px;font-size:1.12rem}
.site-foot{border-top:1px solid var(--line);padding:30px 20px 40px}
.site-foot .foot{max-width:1180px;margin:0 auto;display:flex;flex-wrap:wrap;gap:18px 28px;align-items:center;justify-content:space-between}
.site-foot .foot-links{display:flex;flex-wrap:wrap;gap:10px 22px}
.site-foot .foot-links a{color:var(--text-2);text-decoration:none;font-size:.92rem}
.site-foot .foot-links a:hover{color:var(--text)}
.site-foot .social{display:flex;gap:14px}
.site-foot .social a{color:var(--text-2);width:20px;height:20px;display:block}
.site-foot .social a:hover{color:var(--text)}
.site-foot .copy-r{font-family:var(--mono);font-size:.74rem;color:var(--text-3)}

/* reveal on scroll (site.js adds .js to <html>) */
.rv{opacity:1;transform:none;transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
.js .rv{opacity:0;transform:translateY(28px)}
.js .rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.js .rv{opacity:1;transform:none}*{scroll-behavior:auto !important}}

/* "Update, October 2026" notes at the top of the AI-workflow posts */
.prose .update-note{border:1px solid rgba(34,211,238,.35);background:var(--cyan-soft);border-radius:18px;padding:18px 20px;margin:0 0 2.2rem;font-size:1rem;line-height:1.6;color:var(--text)}
.prose .update-note strong{color:var(--cyan)}
.final p.label{font-size:.7rem;margin-top:0}
@media(max-width:900px){.site-nav .nav-links li a.nav-cta{padding:.7rem 1.2rem}}

/* ───────────────────────────────────────────────────────────────────────────
   v2 layer (Oct 2026 redesign). Scoped under body.v2 so pages that still carry
   their own inline rules (programs, exercises, lab, blog posts) are untouched.
   Fraunces italic for display, Outfit for UI, DM Mono for small labels.
   Filled cards, no outlines; hairline rows; green = food, cyan = training.
   ─────────────────────────────────────────────────────────────────────────── */
.v2{--surface-3:#1d1d24;--hair:rgba(255,255,255,.08);--hair-2:rgba(255,255,255,.14);--cyan-t:#67e8f9;--amber-t:#fbbf24;--amber-soft:rgba(245,158,11,.12);--red-t:#f87171;font-size:17px}
.v2 .serif,.v2 h1.d,.v2 h2.d,.v2 .page-hero h1,.v2 .final h2{font-family:var(--serif);font-style:italic;font-weight:600;letter-spacing:-.02em;line-height:1.02;text-wrap:balance;font-variation-settings:"opsz" 120}
.v2 h1.d{font-size:clamp(2.7rem,7.6vw,5.4rem);font-variation-settings:"opsz" 144}
.v2 h2.d{font-size:clamp(1.9rem,4.4vw,3rem)}
.v2 h1.d em,.v2 h2.d em,.v2 .final h2 em{font-style:italic;color:var(--cyan-t)}
.v2 .g h2.d em,.v2 em.g,.v2 .g h1.d em,.v2.g h1.d em,.v2.g h2.d em{color:var(--green-text)}
.v2 em.v{color:var(--violet-text)}
.v2 .kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-3)}
.v2 .kicker.c{color:var(--cyan)} .v2 .kicker.g{color:var(--green-text)} .v2 .kicker.v{color:var(--violet-text)}
.v2 .lede{font-size:1.08rem;color:var(--text-2);max-width:54ch;line-height:1.55}
.v2 .dim{color:var(--text-3)} .v2 .muted{color:var(--text-2)}
.v2 .num{font-variant-numeric:tabular-nums}
.v2 p{margin:0}
.v2 .sec2{padding-block:64px;border-top:1px solid var(--hair)}
.v2 .sec2.tight{padding-block:40px}
.v2 .head{display:grid;gap:14px;max-width:640px;margin-bottom:32px}
.v2 .head .lede{margin:0}
@media(min-width:760px){.v2 .sec2{padding-block:88px}}
.v2 .trust{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;color:var(--text-3);margin-top:16px}
.v2 .trust b{color:var(--text-2);font-weight:500}
.v2 .badge.play{background:transparent;color:#fff;border:1px solid var(--hair-2)}
.v2 .badge svg{flex-shrink:0}
.v2 .arrow{font-weight:600;text-decoration:none;color:#fff}
.v2 .arrow.c{color:var(--cyan-t)} .v2 .arrow.g{color:var(--green-text)} .v2 .arrow.v{color:var(--violet-text)}
.v2 .arrow:hover{text-decoration:underline;text-underline-offset:4px}
.v2 .chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;padding:5px 10px;border-radius:999px;background:var(--surface-2);color:var(--text-2);white-space:nowrap}
.v2 .chip.c{background:var(--cyan-soft);color:var(--cyan-t)} .v2 .chip.g{background:var(--green-soft);color:var(--green-text)} .v2 .chip.a{background:var(--amber-soft);color:var(--amber-t)}
.v2 .rows{display:grid}
.v2 .row{display:grid;grid-template-columns:1fr;gap:6px;padding:16px 0;border-top:1px solid var(--hair);min-width:0}
.v2 .row:first-child{border-top:0}
.v2 .row b{font-weight:600}
.v2 .row p{color:var(--text-2);font-size:.98rem}
.v2 .card2{background:var(--surface);border-radius:22px;padding:22px}

/* hero with plates */
.v2 .hero2{padding:calc(60px + 44px) 0 40px;background:linear-gradient(180deg,var(--studio-top) 0%,#121318 46%,var(--bg) 100%)}
.v2 .hero2 .grid{display:grid;gap:36px;align-items:center}
.v2 .hero2 h1.d{margin-top:14px}
.v2 .hero2 .lede{margin-top:18px}
.v2 .hero2 .badges{justify-content:flex-start;margin-top:28px}
@media(min-width:760px){.v2 .hero2{padding:calc(60px + 80px) 0 64px}.v2 .hero2 .grid{grid-template-columns:6fr 5fr;gap:48px}}
.v2 .plates{display:grid;gap:12px;grid-template-columns:1fr 1fr}
.v2 .plates>*{min-width:0}
.v2 .plate{position:relative;border-radius:22px;overflow:hidden;background:var(--surface);aspect-ratio:1/1;transform:translateY(0);transition:transform .5s var(--spring)}
.v2 .plate:hover{transform:translateY(-4px)}
.v2 .plate img{width:100%;height:100%;object-fit:cover;display:block}
.v2 .plate .tag{position:absolute;left:12px;right:12px;bottom:12px;display:grid;gap:2px;z-index:2}
.v2 .plate .tag b{font-size:.95rem;font-weight:600;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.8)}
.v2 .plate .tag span{font-family:var(--mono);font-size:.68rem;color:var(--green-text);letter-spacing:.04em;text-shadow:0 1px 8px rgba(0,0,0,.9)}
.v2 .plate.big{grid-column:1/-1;aspect-ratio:16/10}
@media(min-width:760px){.v2 .plate.big{aspect-ratio:4/3}}
.v2 .plate::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(5,5,7,.78),transparent 48%)}

/* voices */
.v2 .voices{display:grid}
.v2 .voice{padding:20px 0;border-top:1px solid var(--hair);display:grid;gap:8px;min-width:0}
.v2 .voice:first-child{border-top:0}
.v2 .voice q{quotes:"\201C" "\201D";font-family:var(--serif);font-style:italic;font-weight:500;font-size:1.3rem;line-height:1.25;letter-spacing:-.01em}
.v2 .voice cite{font-style:normal;font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;color:var(--text-3);text-transform:uppercase}
@media(min-width:760px){.v2 .voices{grid-template-columns:1fr 1fr 1fr;gap:28px}.v2 .voice{border-top:0;padding:0}}
.v2 .turn{margin-top:36px;max-width:60ch;font-size:1.12rem;color:var(--text-2)}
.v2 .turn b{color:#fff;font-weight:600}

/* route */
.v2 .route{display:grid;gap:18px}
.v2 .route>*{min-width:0}
@media(min-width:760px){.v2 .route{grid-template-columns:5fr 7fr;align-items:start}}
.v2 .rcard{background:var(--surface);border-radius:24px;padding:22px;display:grid;gap:18px}
.v2 .rcard .big{font-family:var(--serif);font-style:italic;font-weight:600;font-size:2.2rem;line-height:1;letter-spacing:-.02em}
.v2 .rcard .big span{color:var(--text-3)}
.v2 .phases{display:grid}
.v2 .phase{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--hair)}
.v2 .phase i{width:10px;height:10px;border-radius:50%;background:var(--cyan)}
.v2 .phase i.t{background:var(--amber)} .v2 .phase i.r{background:var(--violet)}
.v2 .phase b{font-weight:600;font-size:.98rem}
.v2 .phase small{display:block;color:var(--text-3);font-size:.8rem}
.v2 .phase .num{font-family:var(--mono);font-size:.78rem;color:var(--text-2);white-space:nowrap}
.v2 .conf{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.v2 .rlist .row{padding:18px 0}
.v2 .rlist .row b{font-size:1.05rem}

/* meal grid */
.v2 .mgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.v2 .mgrid>*{min-width:0}
@media(min-width:760px){.v2 .mgrid{grid-template-columns:repeat(4,1fr);gap:16px}}
.v2 .mcard2{background:var(--surface);border-radius:20px;overflow:hidden;text-decoration:none;color:inherit;display:block;transition:transform .5s var(--spring)}
.v2 .mcard2:hover{transform:translateY(-4px)}
.v2 .mcard2 img{aspect-ratio:4/3;width:100%;object-fit:cover;display:block;background:var(--surface-2)}
.v2 .mcard2 .mb{padding:12px 14px 14px;display:grid;gap:5px}
.v2 .mcard2 .mb>b{font-size:.95rem;font-weight:600;line-height:1.25}
.v2 .mcard2 .mm{font-family:var(--mono);font-size:.68rem;color:var(--text-3);letter-spacing:.04em;display:flex;gap:10px;flex-wrap:wrap}
.v2 .mcard2 .mm b{color:var(--green-text);font-weight:500}
.v2 .feat2{display:grid;margin-top:40px}
.v2 .feat2 .row{padding:18px 0}
.v2 .feat2 .row b{font-size:1.05rem}
@media(min-width:760px){.v2 .feat2{grid-template-columns:1fr 1fr;column-gap:40px}.v2 .feat2 .row:nth-child(2){border-top:0}}

/* week / shots */
.v2 .shots{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;align-items:end}
.v2 .shots>*{min-width:0}
.v2 .shot{border-radius:18px;overflow:hidden;background:var(--surface);box-shadow:0 20px 50px rgba(0,0,0,.45)}
.v2 .shot img{width:100%;display:block;height:auto}
.v2 .shot.mid{transform:translateY(-12px)}
.v2 .weekrow{display:grid;gap:28px;align-items:center}
.v2 .weekrow>*{min-width:0}
@media(min-width:760px){.v2 .weekrow{grid-template-columns:5fr 7fr}.v2 .shots{gap:16px}.v2 .weekrow.flip>:first-child{order:2}}
.v2 .steps2{display:grid}
.v2 .step{display:grid;grid-template-columns:auto 1fr;gap:14px;padding:16px 0;border-top:1px solid var(--hair);align-items:start}
.v2 .step:first-child{border-top:0}
.v2 .step .d{font-family:var(--mono);font-size:.72rem;color:var(--green-text);letter-spacing:.1em;padding-top:5px;width:36px}
.v2 .c .step .d{color:var(--cyan-t)}
.v2 .step b{display:block;font-weight:600;font-size:1.02rem}
.v2 .step p{color:var(--text-2);font-size:.95rem}

/* training programs */
.v2 .progs{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.v2 .progs>*{min-width:0}
.v2 .prog{position:relative;border-radius:18px;overflow:hidden;background:var(--surface);aspect-ratio:16/9;display:block;text-decoration:none;color:inherit;transition:transform .5s var(--spring)}
.v2 .prog:hover{transform:translateY(-4px)}
.v2 .prog img{width:100%;height:100%;object-fit:cover;display:block}
.v2 .prog .tag{position:absolute;left:12px;right:12px;bottom:10px;z-index:2;display:grid}
.v2 .prog .tag b{font-size:.9rem;text-shadow:0 1px 8px #000;font-weight:600}
.v2 .prog .tag span{font-family:var(--mono);font-size:.64rem;color:var(--cyan-t);letter-spacing:.06em;text-shadow:0 1px 8px #000}
.v2 .prog::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(5,5,7,.82),transparent 55%)}
@media(min-width:760px){.v2 .progs.four{grid-template-columns:repeat(4,1fr)}}

/* evidence rows */
.v2 .ev2 .row{grid-template-columns:1fr auto;align-items:center;padding:14px 0;gap:12px}
.v2 .ev2 .row b{font-weight:600;font-size:1rem}
.v2 .ev2 .row small{display:block;color:var(--text-3);font-size:.82rem;font-family:var(--mono);letter-spacing:.02em;margin-top:3px;overflow-wrap:anywhere}
.v2 .evgrid{display:grid;gap:24px}
.v2 .evgrid>*{min-width:0}
@media(min-width:760px){.v2 .evgrid{grid-template-columns:5fr 7fr;align-items:start}}

/* lab / founder */
.v2 .lab2{display:grid;gap:24px}
.v2 .lab2>*{min-width:0}
@media(min-width:760px){.v2 .lab2{grid-template-columns:7fr 5fr;align-items:center}}
.v2 .pics{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.v2 .pic{position:relative;border-radius:18px;overflow:hidden;background:var(--surface);aspect-ratio:3/4}
.v2 .pic img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.v2 .pic .tag{position:absolute;left:10px;right:10px;bottom:10px;z-index:2;font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;color:#fff;text-shadow:0 1px 8px #000;text-transform:uppercase}
.v2 .pic .tag b{display:block;font-family:var(--serif);font-style:italic;font-size:1.5rem;letter-spacing:-.02em;text-transform:none;font-weight:600}
.v2 .pic::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(5,5,7,.8),transparent 45%)}
.v2 .ryan{display:flex;gap:14px;align-items:center}
.v2 .ryan img{width:56px;height:56px;border-radius:50%;object-fit:cover}
.v2 .ryan b{display:block;font-weight:600}
.v2 .ryan span{font-size:.86rem;color:var(--text-3)}

/* faq */
.v2 .faq2{display:grid}
.v2 .faq2 details{border-top:1px solid var(--hair);min-width:0}
.v2 .faq2 details:first-child{border-top:0}
.v2 .faq2 summary{cursor:pointer;list-style:none;padding:16px 0;font-weight:600;font-size:1.02rem;display:flex;justify-content:space-between;gap:16px;align-items:center}
.v2 .faq2 summary::-webkit-details-marker{display:none}
.v2 .faq2 summary::after{content:"+";font-family:var(--mono);color:var(--text-3);font-size:1.1rem;transition:transform .38s cubic-bezier(.2,.8,.2,1),color .2s}
.v2 .faq2 summary:hover::after{color:var(--text)}
.v2 .faq2 details[open] summary::after{transform:rotate(45deg)}
.v2 .faq2 .a{padding:0 0 18px;color:var(--text-2);max-width:62ch}
@media(min-width:760px){.v2 .faq2{grid-template-columns:1fr 1fr;column-gap:40px}.v2 .faq2 details:nth-child(2){border-top:0}}

/* final download band with a wall of food behind it */
.v2 .final2{padding-block:88px;text-align:center;position:relative;overflow:hidden;border-top:1px solid var(--hair)}
.v2 .final2 .wall2{position:absolute;inset:-10% -4%;display:grid;grid-template-columns:repeat(6,1fr);gap:8px;opacity:.26;transform:rotate(-6deg);pointer-events:none}
.v2 .final2 .wall2 img{aspect-ratio:1;object-fit:cover;border-radius:14px;width:100%;display:block}
.v2 .final2 .wall2::after{content:"";position:absolute;inset:-20%;background:radial-gradient(ellipse at center,rgba(8,8,11,.25),rgba(8,8,11,.97) 68%)}
.v2 .final2 .in{position:relative;z-index:2;display:grid;gap:18px;justify-items:center}
.v2 .final2 .in .lede{text-align:center}
.v2 .final2 .badges{justify-content:center;margin-top:0}
.v2 .final2 h2.d{font-size:clamp(2.6rem,7vw,4.8rem)}
.v2 .qr{display:none;align-items:center;gap:14px;margin-top:10px;font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;color:var(--text-3);text-align:left}
.v2 .qr img,.v2 .qr svg{width:88px;height:88px;border-radius:10px;background:#fff;padding:6px;display:block}
@media(min-width:900px) and (hover:hover) and (pointer:fine){.v2 .qr{display:flex}}

/* meals page filters */
.v2 .filters{display:flex;gap:8px;flex-wrap:wrap}
.v2 .filters button{font:600 .86rem var(--sans);padding:8px 14px;border-radius:999px;background:var(--surface);color:var(--text-2);border:0;cursor:pointer;transition:background .2s,color .2s}
.v2 .filters button:hover{color:#fff}
.v2 .filters button[aria-pressed="true"]{background:#fff;color:#0a0a0b}
.v2 .cook{display:grid;gap:18px;background:var(--surface);border-radius:24px;padding:22px;align-items:center}
.v2 .cook>*{min-width:0}
@media(min-width:760px){.v2 .cook{grid-template-columns:1fr auto;padding:28px}}
.v2 .cook form{display:flex;gap:8px;min-width:0}
.v2 .cook input{flex:1;min-width:0;background:var(--surface-2);border:1px solid var(--hair);border-radius:999px;padding:11px 16px;color:#fff;font:inherit;font-size:.95rem}
.v2 .cook input:focus{outline:none;border-color:rgba(34,197,94,.4)}
.v2 .cook button{background:#fff;color:#0a0a0b;border:0;border-radius:999px;padding:11px 18px;font:600 .95rem var(--sans);cursor:pointer;white-space:nowrap}
.v2 .cook button[disabled]{opacity:.65}
.v2 .cook .ok{display:none;color:var(--green-text);font-size:.95rem}
.v2 .cook .ok.show{display:block}
@media(max-width:480px){.v2 .cook form{flex-direction:column}}

/* springy reveal, still with reduced motion */
.js .v2 .rv{transform:translateY(18px);transition:opacity .6s ease,transform .8s var(--spring)}
.js .v2 .rv.in{transform:none}
@media(prefers-reduced-motion:reduce){.v2 .plate,.v2 .mcard2,.v2 .prog{transition:none}.v2 .plate:hover,.v2 .mcard2:hover,.v2 .prog:hover{transform:none}.js .v2 .rv{transition:none}}

/* ───────────────────────────────────────────────────────────────────────────
   Old look (restored 24 Oct 2026). The pre-redesign site's type and cards,
   applied over the v2 layer so the training, research and cookbook pages match
   the home and meals pages: Georgia italic for page titles and download bands,
   heavy condensed uppercase Outfit for section heads, outlined cards, phone
   frames around app screens, cyan accent.
   ─────────────────────────────────────────────────────────────────────────── */
.v2 .serif,.v2 h1.d,.v2 .page-hero h1,.v2 .final h2,.v2 .final2 h2.d{font-family:var(--serif);font-style:italic;font-weight:700;letter-spacing:-.02em;line-height:1;font-variation-settings:normal}
.v2 h1.d{font-size:clamp(2.6rem,7vw,5.2rem)}
.v2 h1.d em,.v2 .final2 h2.d em{display:block;font-style:italic}
.v2 h2.d{font-family:var(--sans);font-style:normal;font-weight:900;text-transform:uppercase;letter-spacing:-.01em;line-height:.98;font-size:clamp(2.1rem,5.2vw,3.8rem);font-variation-settings:normal}
.v2 h2.d em{font-style:normal}
.v2 .kicker{font-size:.7rem;color:var(--text-2)}
.v2 .lede{font-size:1.1rem}
.v2 .sec2{padding-block:78px;border-top:1px solid var(--line)}
@media(min-width:760px){.v2 .sec2{padding-block:110px}}
.v2 .sec2.tight{padding-block:48px}
.v2 .card2,.v2 .rcard,.v2 .cook,.v2 .mcard2,.v2 .plate,.v2 .prog,.v2 .pic{border:1px solid var(--line);border-radius:22px}
.v2 .mcard2:hover,.v2 .prog:hover{border-color:rgba(255,255,255,.18)}
.v2 .g .mcard2:hover,.v2.g .mcard2:hover{border-color:rgba(34,197,94,.28)}
.v2 .shot{border-radius:34px;border:1px solid rgba(255,255,255,.12);background:#000;box-shadow:0 30px 80px rgba(0,0,0,.55),0 0 0 5px #0f0f13}
.v2 .rcard .big{font-family:var(--sans);font-style:normal;font-weight:900;letter-spacing:-.01em}
.v2 .pic .tag b{font-family:var(--sans);font-style:normal;font-weight:900}
.v2 .voice q{font-family:var(--serif);font-style:italic;font-weight:700}
.v2 .filters button{border:1px solid var(--line);background:rgba(255,255,255,.04)}
.v2 .filters button[aria-pressed="true"]{border-color:#fff}
.v2 .final2{background:radial-gradient(ellipse at 50% 0%,#1c1e24,var(--bg) 70%)}
.v2 .final2 h2.d{font-size:clamp(2.6rem,7vw,5rem)}
.v2 .hero2 h1.d{font-size:clamp(2.6rem,6.4vw,4.8rem)}
.v2 .final2 h2.d{text-transform:none}

/* ===== Page load-in (every page but home and the landing pages, which have their own).
   CSS only, so it starts on first paint: no flash, and nothing waits on JS. Mark a hero
   container with data-enter: its first six children rise in turn and the H1's accent
   (em or coloured span) wipes in like home's "on autopilot.". data-enter="fade" is a
   plain fade (legal pages). data-enter-vis marks the hero's picture (cover, Lab photo).
   Transform/opacity/clip-path only, fill "backwards": no layout shift, ends on the
   element's own style. Reduced Motion: off. ===== */
@keyframes enRise{from{opacity:0;transform:translateY(18px)}}
@keyframes enSharp{from{opacity:0;transform:translateY(22px);filter:blur(8px)}}
@keyframes enWipe{from{clip-path:inset(-25% 100% -35% -5%)}to{clip-path:inset(-25% -5% -35% -5%)}}
/* the full stop lands last, with a little thud */
@keyframes enDot{0%{opacity:0;transform:translateY(-.55em) scale(1.9)}55%{opacity:1;transform:translateY(0) scale(.86)}75%{transform:scale(1.08)}100%{transform:none}}
.en-w{white-space:nowrap}
/* the coloured phrase in a big headline never splits, so the line count can't change mid-animation */
@media(min-width:400px){[data-enter] h1.d em{white-space:nowrap}}
.en-dot{display:inline-block;animation:enDot .55s cubic-bezier(.3,1.4,.5,1) 1.3s backwards}
/* Keep animated hero parts on their own layer for good: otherwise, when an animation ends, the
   browser drops the layer and redraws the hero, which shows as a visible jolt on GPU browsers. */
[data-enter]>*,[data-enter] h1 em,[data-enter] h1 .cyan,[data-enter] h1 .green,[data-enter] h1 .violet,.en-dot,[data-enter-vis]{will-change:transform,opacity}
[data-enter]>h1,[data-enter]>header>h1{will-change:transform,opacity,filter}
@keyframes enFade{from{opacity:0}}
@keyframes enVis{from{opacity:0;transform:translateY(40px) scale(.96)}}
[data-enter]>*{animation:enRise .7s cubic-bezier(.2,.8,.2,1) backwards}
[data-enter]>h1,[data-enter]>header>h1{animation-name:enSharp;animation-duration:.8s}
[data-enter]>:nth-child(1){animation-delay:.05s}
[data-enter]>:nth-child(2){animation-delay:.14s}
[data-enter]>:nth-child(3){animation-delay:.28s}
[data-enter]>:nth-child(4){animation-delay:.38s}
[data-enter]>:nth-child(5){animation-delay:.46s}
[data-enter]>:nth-child(6){animation-delay:.54s}
[data-enter]>:nth-child(n+7){animation-delay:.6s}
[data-enter] h1 em,[data-enter] h1 .cyan,[data-enter] h1 .green,[data-enter] h1 .violet{animation:enWipe .9s cubic-bezier(.65,0,.35,1) .4s backwards}
[data-enter="fade"]>*{animation:enFade .6s ease-out backwards}
[data-enter="fade"] h1 *{animation:none}
[data-enter-vis]{animation:enVis 1s cubic-bezier(.16,1,.3,1) .2s backwards}
@media(prefers-reduced-motion:reduce){[data-enter]>*,[data-enter] h1 em,[data-enter] h1 .cyan,[data-enter] h1 .green,[data-enter] h1 .violet,[data-enter-vis],.en-dot{animation:none!important}}
/* Email capture inside a centred closing band: the field (class "in") must not pick up the band's ".in" wrapper styles, and the note sits centred under the field. */
.v2 .final2 .cap-form input.in{display:block;z-index:auto}
.cap-form .btn{z-index:3}
.v2 .final2 .cap-block{width:100%;max-width:520px;justify-self:center}
.v2 .final2 .cap-block .note{text-align:center;margin-top:10px}
