/* Ken Chertow Gold Medal Training Camps: 2027 redesign preview (main site) */
@font-face{font-family:"Oswald";src:url("assets/fonts/oswald.woff2") format("woff2");font-weight:200 700;font-display:swap}
@font-face{font-family:"Montserrat";src:url("assets/fonts/montserrat.woff2") format("woff2");font-weight:100 900;font-display:swap}

:root{
  --ink:#030b1c; --ink-2:#07122a; --navy:#002868; --deep:#061a40; --red:#bf0a30; --red-hi:#e0173f;
  --gold:#f2b705; --white:#fff; --paper:#f4f6fa; --pink:#ff2e88;
  --text-dim:#c3cbdb; --text-ink:#0b1630; --text-ink-dim:#3a4660; --line:rgba(255,255,255,.14);
  --display:"Anton","Oswald","Impact",sans-serif; --cond:"Oswald","Arial Narrow",sans-serif; --body:"Montserrat","Inter",system-ui,sans-serif;
  --wrap:1320px; --gut:clamp(20px,4vw,64px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--ink)}
body{margin:0;font-family:var(--body);font-size:17.5px;line-height:1.6;color:var(--white);background:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
h1,h2,h3{margin:0;font-weight:400;text-wrap:balance}
p{margin:0 0 1em}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.skip{position:absolute;left:-999px;top:8px;background:var(--gold);color:var(--ink);padding:10px 16px;z-index:100;font-weight:700}
.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

/* type */
.display{font-family:var(--display);text-transform:uppercase;line-height:.9;letter-spacing:.005em}
.kicker{font-family:var(--cond);font-weight:600;text-transform:uppercase;letter-spacing:.16em;font-size:15px;color:var(--gold);display:flex;align-items:center;gap:12px;margin-bottom:22px}
.kicker::before{content:"";width:34px;height:4px;background:var(--red);flex:none}
.on-light .kicker{color:var(--red)}
.on-light .kicker::before{background:var(--navy)}
.h2{font-size:clamp(52px,7vw,112px)}
.h3{font-size:clamp(34px,3.6vw,54px)}
.gold{color:var(--gold)} .red{color:var(--red)}
.outline{color:transparent;-webkit-text-stroke:2px var(--gold)}
.lede{font-size:clamp(18px,1.35vw,21px);line-height:1.55;color:var(--text-dim);max-width:600px}
.on-light .lede{color:var(--text-ink-dim)}
.tag{display:inline-block;font-family:var(--cond);font-weight:600;font-size:13px;letter-spacing:.14em;text-transform:uppercase;padding:6px 12px;border:1.5px solid var(--gold);color:var(--gold)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:12px;font-family:var(--cond);font-weight:600;font-size:17px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;padding:17px 30px;border:0;border-radius:2px;cursor:pointer;background:var(--red);color:#fff;transition:transform .2s,background .2s,box-shadow .2s}
.btn:hover{background:var(--red-hi);transform:translateY(-2px);box-shadow:0 12px 30px rgba(191,10,48,.35)}
.btn .arr{transition:transform .2s}
.btn:hover .arr{transform:translateX(4px)}
.btn-ghost{background:transparent;box-shadow:inset 0 0 0 2px rgba(255,255,255,.7)}
.btn-ghost:hover{background:rgba(255,255,255,.1);box-shadow:inset 0 0 0 2px #fff}
.btn-pink{background:var(--pink);color:#12030b}
.btn-pink:hover{background:#ff4d9b;box-shadow:0 12px 30px rgba(255,46,136,.35)}
.btn-navy{background:var(--navy)}
.btn-navy:hover{background:#0a3a8a;box-shadow:0 12px 30px rgba(0,40,104,.35)}
.play{width:22px;height:22px;border-radius:50%;background:#fff;display:inline-grid;place-items:center}
.play::after{content:"";border-left:8px solid var(--ink);border-top:5px solid transparent;border-bottom:5px solid transparent;margin-left:2px}

/* top bar + nav */
.topbar{background:#010612;border-bottom:1px solid var(--line);font-family:var(--cond);font-size:13px;letter-spacing:.14em;text-transform:uppercase}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;min-height:38px;gap:16px}
.topbar span{color:var(--text-dim)} .topbar b{color:var(--gold);font-weight:600}
.topbar a{text-decoration:none;color:#fff;margin-left:22px}
.topbar a.sg{color:var(--pink)}
.nav{position:sticky;top:0;z-index:50;background:rgba(3,11,28,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:78px;gap:20px}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none}
.brand img{width:52px;height:52px}
.brand b{display:block;font-family:var(--display);font-weight:400;font-size:26px;letter-spacing:.03em;line-height:1}
.brand small{display:block;font-family:var(--cond);font-size:11.5px;letter-spacing:.2em;color:var(--gold);margin-top:5px}
.navlinks{display:flex;align-items:center;gap:30px}
.navlinks a{font-family:var(--cond);font-weight:500;font-size:15.5px;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:#fff;position:relative}
.navlinks a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--gold);transform:scaleX(0);transition:transform .2s;transform-origin:left}
.navlinks a:not(.btn):hover::after{transform:scaleX(1)}
.navlinks a.sg{color:var(--pink)} .navlinks a.sg::after{background:var(--pink)}
.navlinks .btn{padding:13px 22px;font-size:15px}
.menu{display:none;background:none;border:2px solid rgba(255,255,255,.6);color:#fff;font-family:var(--cond);letter-spacing:.14em;text-transform:uppercase;padding:9px 14px;font-size:14px;cursor:pointer}

/* hero */
.hero{position:relative;height:clamp(700px,92vh,920px);overflow:hidden;background:radial-gradient(120% 90% at 0% 100%,#0b2356 0%,var(--ink) 55%)}
.hero-media{position:absolute;top:0;right:0;bottom:0;width:62%;display:grid;grid-template-columns:1.2fr 1fr;grid-template-rows:1fr 1fr;gap:6px}
.hero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--ink) 0%,rgba(3,11,28,.82) 16%,rgba(3,11,28,.25) 42%,rgba(3,11,28,0) 60%),linear-gradient(0deg,rgba(3,11,28,.85) 0%,rgba(3,11,28,0) 30%);pointer-events:none}
.hm{margin:0;position:relative;overflow:hidden}
.hm img{width:100%;height:100%;object-fit:cover;animation:slowzoom 22s ease-in-out infinite alternate}
.hm-ken{grid-row:1 / 3}
.hm-ken img{filter:grayscale(1) contrast(1.12);object-position:50% 30%}
.hm-crowd img{object-position:50% 40%;animation-delay:-6s}
.hm-action img{object-position:40% 50%;animation-delay:-12s}
.hm figcaption{position:absolute;right:14px;bottom:12px;z-index:2;font-family:var(--cond);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:rgba(3,11,28,.72);padding:5px 10px}
.hm-ken figcaption{top:14px;bottom:auto;right:14px}
@keyframes slowzoom{from{transform:scale(1)}to{transform:scale(1.09)}}
.hero-copy{position:relative;z-index:3;height:100%;display:flex;flex-direction:column;justify-content:center;padding-top:10px}
.hero h1{font-size:clamp(66px,8.6vw,150px);line-height:.86;max-width:10.2ch;text-shadow:0 4px 40px rgba(3,11,28,.55)}
.hero h1 .gold{display:block}
.hero .lede{margin:28px 0 34px;max-width:520px;color:#dfe5f0}
.hero-ctas{display:flex;flex-wrap:wrap;gap:14px}
.hero-badge{position:absolute;z-index:4;width:132px;height:132px;right:calc(62% * .4545 - 66px);bottom:36px;border-radius:50%;box-shadow:0 10px 40px rgba(0,0,0,.5);animation:spin 40s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ticker */
.ticker{background:var(--red);overflow:hidden;white-space:nowrap;border-top:1px solid rgba(255,255,255,.2);border-bottom:1px solid rgba(0,0,0,.3)}
.ticker-track{display:inline-flex;animation:marquee 55s linear infinite;padding:16px 0}
.ticker span{font-family:var(--display);font-size:30px;letter-spacing:.04em;text-transform:uppercase;padding:0 22px;line-height:1}
.ticker i{font-style:normal;color:var(--gold);font-size:22px;align-self:center}
@keyframes marquee{to{transform:translateX(-50%)}}

/* sections */
section{position:relative}
.sec{padding:clamp(80px,9vw,140px) 0}
.sec-head{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:end;margin-bottom:56px}
.sec-head .lede{justify-self:end}
.on-light{background:var(--white);color:var(--text-ink)}
.bg-deep{background:var(--deep)}
.bg-navy{background:var(--navy)}
.bg-black{background:#000}

/* champions wall */
.wall{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:100px;gap:8px}
.tile{position:relative;margin:0;overflow:hidden;background:var(--ink-2);transition:transform .35s}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.tile:hover img{transform:scale(1.05)}
.tile figcaption{position:absolute;left:0;right:0;bottom:0;padding:70px 20px 18px;background:linear-gradient(0deg,rgba(3,11,28,.95) 0%,rgba(3,11,28,.7) 55%,rgba(3,11,28,0) 100%)}
.tile .nm{font-family:var(--display);font-size:clamp(24px,2.3vw,36px);text-transform:uppercase;line-height:.95;display:block}
.tile .cr{display:block;font-family:var(--cond);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin:8px 0 6px}
.tile .qt{display:block;font-size:14.5px;line-height:1.45;color:#e3e8f2}
.t-zain{grid-column:1/5;grid-row:1/7} .t-zain img{object-position:50% 20%}
.t-helen{grid-column:5/10;grid-row:1/4} .t-helen img{object-position:50% 25%}
.t-kylie{grid-column:10/13;grid-row:1/7} .t-kylie img{object-position:40% 30%}
.t-ava{grid-column:5/8;grid-row:4/7}
.t-q1{grid-column:8/10;grid-row:4/7}
.t-abe{grid-column:1/4;grid-row:7/11} .t-abe img{object-position:50% 30%}
.t-med{grid-column:4/7;grid-row:7/10}
.t-medcap{grid-column:4/7;grid-row:10/11}
.t-pat{grid-column:7/10;grid-row:7/11} .t-pat img{object-position:50% 25%}
.t-doyle{grid-column:10/13;grid-row:7/11} .t-doyle img{object-position:50% 25%}
.t-aj{grid-column:1/4;grid-row:11/15} .t-aj img{object-position:50% 20%}
.t-pk{grid-column:4/7;grid-row:11/15} .t-pk img{object-position:50% 25%}
.t-q2{grid-column:7/13;grid-row:11/15}
.qtile{display:flex;flex-direction:column;justify-content:space-between;padding:24px;background:var(--navy)}
.qtile.goldbg{background:var(--gold);color:var(--ink)}
.qtile .display{font-size:clamp(26px,2.4vw,36px);line-height:.98}
.qtile small{font-family:var(--cond);letter-spacing:.14em;text-transform:uppercase;font-size:13px}
.t-medcap{background:var(--ink-2);display:flex;align-items:center;padding:0 18px;font-size:14px;line-height:1.4;color:var(--text-dim);border-left:4px solid var(--gold)}
.t-q2{background:linear-gradient(135deg,var(--navy),#001a45);padding:44px;display:flex;flex-direction:column;justify-content:space-between;gap:22px}
.t-q2 .display{font-size:clamp(46px,5vw,84px)}
.t-q2 p{color:var(--text-dim);max-width:460px;margin:0}
.t-q2 .row{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap}

/* camps */
.flagship{display:grid;grid-template-columns:1.25fr 1fr;background:var(--ink);box-shadow:0 30px 80px rgba(0,0,0,.35);margin-bottom:28px}
.flag-photo{position:relative;min-height:540px;overflow:hidden}
.flag-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.flag-photo .days{position:absolute;left:28px;bottom:18px;font-family:var(--display);font-size:170px;line-height:.8;color:#fff;text-shadow:0 6px 40px rgba(0,0,0,.6)}
.flag-photo .days small{display:block;font-family:var(--cond);font-size:20px;letter-spacing:.3em;color:var(--gold);margin-top:10px}
.flag-body{padding:52px 52px 44px;display:flex;flex-direction:column}
.flag-body h3{font-size:clamp(64px,6vw,96px);margin:6px 0 18px}
.flag-body p{color:var(--text-dim)}
.flag-body ul{list-style:none;padding:0;margin:4px 0 28px;display:grid;gap:10px}
.flag-body li{padding-left:26px;position:relative;color:#fff}
.flag-body li::before{content:"★";position:absolute;left:0;color:var(--gold);font-size:14px;top:2px}
.flag-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.flag-foot img{width:190px;height:86px;object-fit:cover;border-radius:2px}
.camp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.camp{background:var(--ink);display:flex;flex-direction:column;transition:transform .3s,box-shadow .3s;text-decoration:none}
.camp:hover{transform:translateY(-6px);box-shadow:0 22px 50px rgba(0,0,0,.4)}
.camp-ph{position:relative;aspect-ratio:4/3;overflow:hidden}
.camp-ph img{width:100%;height:100%;object-fit:cover}
.camp-ph .d{position:absolute;left:0;top:0;background:var(--red);font-family:var(--display);font-size:34px;line-height:1;padding:12px 14px 10px;text-align:center}
.camp-ph .d small{display:block;font-family:var(--cond);font-size:11px;letter-spacing:.2em}
.camp-b{padding:24px 24px 26px;display:flex;flex-direction:column;flex:1}
.camp-b h3{font-family:var(--display);font-size:32px;text-transform:uppercase;line-height:1;margin-bottom:12px}
.camp-b p{font-size:15.5px;color:var(--text-dim);margin-bottom:16px}
.camp-b .meta{margin-top:auto;font-family:var(--cond);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);border-top:1px solid var(--line);padding-top:14px;display:flex;justify-content:space-between}
.camp.sgc{background:linear-gradient(160deg,#1a0612,#030b1c 70%);box-shadow:inset 0 0 0 2px var(--pink)}
.camp.sgc .camp-ph .d{background:var(--pink);color:#12030b}
.camp.sgc .meta{color:var(--pink)}
.locs{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}
.loc{flex:1 1 280px;border:1px solid var(--line);padding:18px 22px;display:flex;gap:16px;align-items:baseline}
.loc b{font-family:var(--display);font-size:28px;font-weight:400;text-transform:uppercase}
.loc span{color:var(--text-dim);font-size:15.5px}

/* finder + prices (white) */
.finder-grid-2{display:grid;grid-template-columns:1.35fr 1fr;gap:40px;align-items:start}
.finder-card{background:var(--paper);padding:40px;border-top:6px solid var(--red)}
.finder .fields{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}
.field label{display:block;font-family:var(--cond);font-weight:600;font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--navy);margin-bottom:8px}
.field select,.field input{width:100%;font:inherit;font-size:16.5px;padding:14px 14px;border:1.5px solid #b7c0d3;border-radius:2px;background:#fff;color:var(--text-ink)}
.finder-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:26px;flex-wrap:wrap}
.finder-bottom p{margin:0;color:var(--text-ink-dim);font-size:15.5px;max-width:360px}
.finder-result{margin-top:24px;background:var(--ink);color:#fff;padding:30px;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}
.finder-result[hidden]{display:none}
.finder-result h3{font-family:var(--display);font-size:40px;text-transform:uppercase;line-height:1;margin:6px 0 10px}
.finder-result p{color:var(--text-dim);margin:0 0 6px;font-size:16px}
.finder-result .eyebrow{font-family:var(--cond);letter-spacing:.14em;text-transform:uppercase;font-size:13px;color:var(--gold)}
.prices{background:var(--ink);color:#fff;padding:36px 34px}
.prices .tag{margin-bottom:18px}
.prices h3{font-family:var(--display);font-size:40px;text-transform:uppercase;line-height:1;margin-bottom:22px}
.ptable{width:100%;border-collapse:collapse;font-size:15.5px}
.ptable th{font-family:var(--cond);font-weight:500;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);text-align:right;padding:0 0 10px}
.ptable th:first-child{text-align:left}
.ptable th+th,.ptable td+td{padding-left:14px}
.ptable td{padding:15px 0;border-top:1px solid var(--line);text-align:right;font-weight:600}
.ptable td:first-child{text-align:left;font-weight:500}
.ptable td:first-child small{display:block;color:var(--text-dim);font-weight:400;font-size:13px}
.prices .note{font-size:14.5px;color:var(--text-dim);margin:18px 0 0}

/* life at camp */
.life-top{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.kb{position:relative;height:620px}
.kb figure{margin:0;position:absolute;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.5)}
.kb .a{left:0;top:0;width:74%;height:74%}
.kb .b{right:0;bottom:0;width:48%;height:52%;border:8px solid var(--ink)}
.kb img{width:100%;height:100%;object-fit:cover}
.kb .b img{object-position:50% 0%} /* crop audit 9/29: Wyoming photo, adult's head whole */
.kb figcaption{position:absolute;left:12px;bottom:10px;font-family:var(--cond);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;background:rgba(3,11,28,.75);padding:5px 10px}
.care{list-style:none;padding:0;margin:30px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:14px}
.care li{border:1px solid var(--line);padding:18px 20px;background:rgba(255,255,255,.03)}
.care b{display:block;font-family:var(--display);font-weight:400;font-size:24px;text-transform:uppercase;letter-spacing:.02em;margin-bottom:4px}
.care span{color:var(--text-dim);font-size:15.5px;line-height:1.5}
.rhythm{margin-top:80px}
.rhythm-h{display:flex;justify-content:space-between;align-items:end;margin-bottom:22px;gap:20px}
.rhythm-note{font-family:var(--cond);font-weight:600;text-transform:uppercase;letter-spacing:.16em;font-size:15px;color:var(--gold);margin:0 0 14px}
.rhythm-strip{display:grid;grid-template-columns:1fr 1.1fr 1fr 1fr 1.3fr 1fr;gap:8px;height:360px}
.rs{position:relative;overflow:hidden;background:var(--navy);margin:0;display:flex;flex-direction:column;justify-content:flex-end}
.rs img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rs::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(3,11,28,.94) 0%,rgba(3,11,28,.86) 55%,rgba(3,11,28,.68) 100%)}
.rs figcaption{position:relative;z-index:2;padding:18px}
.rs .n{font-family:var(--display);font-size:clamp(64px,6.4vw,92px);line-height:.85;color:var(--gold);display:block;margin:0 0 12px;text-shadow:0 2px 16px rgba(0,0,0,.4)}
.rs b{font-family:var(--display);font-weight:400;font-size:24px;text-transform:uppercase;display:block;line-height:1.05;color:#fff}
.rs .sub{font-size:14px;color:#fff;opacity:.92;margin-top:8px}
.rs span{font-size:14px;color:#dfe5f0;display:block;margin-top:6px;line-height:1.4}
.rs.solid{background:var(--red)} .rs.solid::after{display:none}
.rs.solid.g{background:var(--gold);color:var(--ink)} .rs.solid.g .n,.rs.solid.g b{color:var(--ink)} .rs.solid.g span{color:var(--ink);opacity:1} .rs.solid.g .n{text-shadow:none}
.rs.solid .n{color:#fff}

/* video */
.video-wrap{display:grid;grid-template-columns:2.2fr 1fr;gap:18px}
.vph{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;color:#fff;border:1px solid var(--line);background:radial-gradient(120% 120% at 50% 0%,#0d2350 0%,#061a40 45%,#030b1c 100%)}
.vph::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,rgba(255,255,255,.03) 0 2px,transparent 2px 16px);pointer-events:none}
.vph .pi{position:relative;width:44px;height:44px;border-radius:50%;background:var(--red);display:grid;place-items:center;flex:none}
.vph .pi::after{content:"";border-left:14px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.vph .pt{position:relative;font-family:var(--cond);font-weight:500;letter-spacing:.16em;text-transform:uppercase;font-size:13px;color:var(--text-dim)}
.vid-main{aspect-ratio:16/9;width:100%}
.vid-main .pi{width:112px;height:112px;box-shadow:0 0 0 12px rgba(191,10,48,.25)}
.vid-main .pi::after{border-left-width:30px;border-top-width:19px;border-bottom-width:19px;margin-left:8px}
.vid-main .pt{font-size:16px}
.vid-list{display:grid;grid-template-rows:repeat(3,1fr);gap:18px}
.vthumb{width:100%}

/* coaches */
.staff-hero{position:relative;margin:0 0 20px;overflow:hidden}
.staff-hero img{width:100%;height:auto;aspect-ratio:2048/742;object-fit:cover}
.staff-hero figcaption{position:absolute;left:0;bottom:0;background:var(--red);font-family:var(--cond);font-size:14px;letter-spacing:.14em;text-transform:uppercase;padding:10px 18px}
.staff-row{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-bottom:56px}
.staff-row figure{margin:0;overflow:hidden}
.staff-row img{width:100%;height:100%;object-fit:cover;min-height:280px}
.kenq{background:var(--gold);color:var(--ink);padding:40px;display:flex;flex-direction:column;justify-content:space-between}
.kenq blockquote{margin:0;font-family:var(--display);font-size:clamp(28px,2.6vw,40px);text-transform:uppercase;line-height:1.02}
.kenq cite{font-style:normal;font-family:var(--cond);letter-spacing:.14em;text-transform:uppercase;font-size:14px;margin-top:24px;font-weight:600}
.coach-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.coach{background:var(--ink);transition:transform .3s}
.coach:hover{transform:translateY(-6px)}
.coach .ph{aspect-ratio:1/1;overflow:hidden;position:relative}
.coach img{width:100%;height:100%;object-fit:cover}
.coach .ph::after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;background:linear-gradient(90deg,var(--red) 0 33%,#fff 33% 66%,var(--navy) 66%)}
.coach h3{font-family:var(--display);font-size:28px;text-transform:uppercase;line-height:1;padding:18px 20px 6px}
.coach p{padding:0 20px 20px;margin:0;color:var(--text-dim);font-size:15px;line-height:1.45}

/* Ken's story */
.story{display:grid;grid-template-columns:1fr 1.1fr;gap:72px;align-items:start}
.story-photos{position:sticky;top:110px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.story-photos figure{margin:0;position:relative;overflow:hidden}
.story-photos img{width:100%;height:100%;object-fit:cover}
.story-photos .big{grid-column:1/3;aspect-ratio:1/1}
.story-photos .sm{aspect-ratio:4/3}
.story-photos figcaption{position:absolute;left:10px;bottom:8px;font-family:var(--cond);font-size:12px;letter-spacing:.14em;text-transform:uppercase;background:rgba(3,11,28,.78);padding:4px 9px}
.creds{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);margin:34px 0 40px;border:1px solid var(--line)}
.creds div{background:var(--ink);padding:22px 22px}
.creds b{display:block;font-family:var(--display);font-weight:400;font-size:40px;line-height:.95;color:var(--gold);text-transform:uppercase}
.creds span{font-family:var(--cond);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim)}
.tl{list-style:none;margin:0;padding:0;border-left:3px solid var(--red)}
.tl li{position:relative;padding:0 0 30px 32px}
.tl li::before{content:"";position:absolute;left:-9px;top:6px;width:15px;height:15px;background:var(--gold);transform:rotate(45deg)}
.tl b{display:block;font-family:var(--display);font-weight:400;font-size:28px;text-transform:uppercase;line-height:1;margin-bottom:8px}
.tl p{color:var(--text-dim);margin:0}
.fritz{display:grid;grid-template-columns:170px 1fr;gap:24px;align-items:center;background:var(--deep);padding:22px;margin-top:10px}
.fritz img{width:170px;height:220px;object-fit:cover;object-position:50% 0%} /* crop audit 9/29: both heads whole (was 20%, cut foreheads) */
.fritz p{margin:0 0 8px;font-size:15.5px;color:var(--text-dim)}
.fritz b{font-family:var(--display);font-weight:400;font-size:26px;text-transform:uppercase;display:block;margin-bottom:8px;color:#fff}
.book{display:flex;gap:22px;align-items:center;margin-top:30px}
.book img{width:130px;box-shadow:0 18px 40px rgba(0,0,0,.5);transform:rotate(-3deg)}
.book p{margin:0;color:var(--text-dim);font-size:15.5px}
.book i{color:#fff;font-style:normal;font-weight:600}
.pull{font-family:var(--display);text-transform:uppercase;font-size:clamp(30px,2.8vw,44px);line-height:1;margin:0 0 6px}
.pull-by{font-family:var(--cond);letter-spacing:.14em;text-transform:uppercase;font-size:13px;color:var(--gold)}

/* add-ons */
.addon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.addon{background:var(--ink);display:flex;flex-direction:column;transition:transform .3s}
.addon:hover{transform:translateY(-6px)}
.addon .ph{height:260px;overflow:hidden;position:relative}
.addon .ph img{width:100%;height:100%;object-fit:cover;object-position:50% 25%}
.addon .ph.type{background:repeating-linear-gradient(135deg,#0a2a66 0 18px,#082252 18px 36px);display:grid;place-items:center}
.addon .ph.type span{font-family:var(--display);font-size:66px;text-transform:uppercase;color:var(--gold);line-height:.9;text-align:center}
.addon-b{padding:28px;display:flex;flex-direction:column;flex:1}
.addon-b h3{font-family:var(--display);font-size:36px;text-transform:uppercase;line-height:1;margin-bottom:14px}
.addon-b ul{margin:0 0 20px;padding-left:18px;color:var(--text-dim);font-size:15.5px}
.addon-b li{margin-bottom:6px}
.addon-b .price{margin-top:auto;border-top:1px solid var(--line);padding-top:16px;font-size:15.5px}
.addon-b .price b{font-family:var(--display);font-weight:400;font-size:34px;color:var(--gold);letter-spacing:.02em}

/* testimonials */
.voices{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.voice-feature{grid-column:1/3;display:grid;grid-template-columns:1.1fr 1fr;background:var(--red)}
.voice-feature figure{margin:0;min-height:420px;position:relative}
.voice-feature figure img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* crop audit 9/29: Ross Brooks team photo - whole team shown (cover cut people off both ends); blurred copy fills the frame */
.voice-feature figure.vf-whole{overflow:hidden;background:var(--ink)}
.voice-feature figure.vf-whole::before{content:"";position:absolute;inset:-24px;background:url(assets/img/ken-chertow-summer-wrestling-camp-coach-ross-brooks-team-with-staff.jpg) center/cover;filter:blur(18px) brightness(.5)}
.voice-feature figure.vf-whole img{object-fit:contain}
.voice-feature blockquote{margin:0;padding:48px;display:flex;flex-direction:column;justify-content:center}
.voice-feature q{font-family:var(--display);font-size:clamp(34px,3.3vw,52px);text-transform:uppercase;line-height:1;quotes:"“" "”"}
.voice.wide{grid-column:1/3}
.voice{background:var(--ink-2);padding:34px;border-top:4px solid var(--gold);margin:0}
.voice q{display:block;font-size:20px;line-height:1.45;font-weight:600;quotes:"“" "”"}
.voice cite,.voice-feature cite{display:block;font-style:normal;font-family:var(--cond);font-size:14px;letter-spacing:.14em;text-transform:uppercase;margin-top:20px;color:var(--gold)}
.voice-feature cite{color:#fff}
.voice cite small,.voice-feature cite small{display:block;letter-spacing:.06em;text-transform:none;font-family:var(--body);font-size:14px;color:var(--text-dim);margin-top:4px}
.voice-feature cite small{color:#ffe1e7}

/* supergirl crossover */
.sgx{background:radial-gradient(80% 120% at 100% 0%,#3a0a2a 0%,var(--ink) 60%);overflow:hidden;border-top:4px solid var(--pink)}
.sgx .wrap{display:grid;grid-template-columns:1.15fr 1fr;gap:56px;align-items:center}
.sgx-mark{font-family:var(--display);font-size:22px;letter-spacing:.2em;color:var(--pink);display:flex;align-items:center;gap:12px;margin-bottom:22px}
.sgx-mark::before{content:"";width:26px;height:26px;background:var(--pink);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}
.sgx h2{font-size:clamp(56px,6.4vw,104px)}
.sgx h2 .p{color:var(--pink)}
.sgx .lede{margin:24px 0 32px}
.sgx-ph{position:relative;height:640px;margin:0}
.sgx-ph img{position:absolute;right:0;top:0;width:78%;height:100%;object-fit:cover;object-position:50% 20%}
.sgx-ph::before{content:"";position:absolute;left:2%;top:8%;width:60%;height:88%;border:3px solid var(--pink)}
.sgx-ph figcaption{position:absolute;left:0;bottom:30px;z-index:2;background:var(--pink);color:#12030b;font-family:var(--cond);font-weight:600;font-size:14px;letter-spacing:.12em;text-transform:uppercase;padding:10px 16px;max-width:280px;line-height:1.35}

/* FAQ (white) */
.faq-wrap{display:grid;grid-template-columns:1fr 1.5fr;gap:64px}
.faq details{border-top:2px solid #d5dbe7;padding:22px 0}
.faq details:last-child{border-bottom:2px solid #d5dbe7}
.faq summary{cursor:pointer;list-style:none;font-family:var(--display);font-size:28px;text-transform:uppercase;color:var(--navy);display:flex;justify-content:space-between;gap:20px;line-height:1.1}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--red);font-size:34px;line-height:.8}
.faq details[open] summary::after{content:"–"}
.faq details p{margin:14px 0 0;color:var(--text-ink-dim);max-width:700px}

/* final CTA */
.final{position:relative;min-height:600px;display:flex;align-items:center;overflow:hidden;background:#030b1c}
.final>img{position:absolute;top:0;right:0;bottom:0;width:45%;height:100%;object-fit:cover;object-position:50% 50%;opacity:.4;z-index:0}
.final::before{content:"";position:absolute;top:0;right:0;bottom:0;width:45%;z-index:1;background:linear-gradient(90deg,#030b1c 0%,rgba(3,11,28,.6) 35%,rgba(3,11,28,0) 100%)}
.final .wrap{position:relative;z-index:2}
.final h2{font-size:clamp(54px,7vw,120px);max-width:12ch;margin-bottom:34px}

/* footer */
.foot{background:#010612;padding:64px 0 34px;border-top:4px solid var(--red)}
.foot .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;margin-bottom:44px}
.foot h4{font-family:var(--cond);font-weight:600;letter-spacing:.16em;text-transform:uppercase;font-size:14px;color:var(--gold);margin:0 0 14px}
.foot a{display:block;text-decoration:none;color:var(--text-dim);margin-bottom:8px}
.foot a:hover{color:#fff}
.foot .brand{margin-bottom:18px}
.foot p{color:var(--text-dim);font-size:15.5px}
.foot .fine{border-top:1px solid var(--line);padding-top:22px;font-size:14px;color:#9aa6bf;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}

/* reveal: progressive enhancement, only applied to below-the-fold items by JS */
.pre{opacity:0;transform:translateY(28px)}
.in{opacity:1;transform:none;transition:opacity .8s ease,transform .8s ease}

/* responsive */
@media (max-width:1180px){
  .navlinks{gap:20px} .navlinks a{font-size:14px}
  .camp-grid{grid-template-columns:repeat(2,1fr)}
  .rhythm-strip{grid-template-columns:repeat(3,1fr);grid-template-rows:minmax(270px,auto) minmax(270px,auto);height:auto}
}
@media (max-width:980px){
  .menu{display:block}
  .navlinks{position:absolute;top:78px;left:0;right:0;background:var(--ink);flex-direction:column;align-items:stretch;gap:0;padding:10px var(--gut) 24px;border-bottom:1px solid var(--line);display:none}
  .navlinks.open{display:flex}
  .navlinks a{padding:14px 0;border-bottom:1px solid var(--line);font-size:16px}
  .navlinks a:not(.btn)::after{display:none}
  .navlinks .btn{margin-top:16px;justify-content:center}
  .topbar .wrap>span{display:none}
  .topbar .wrap{justify-content:flex-end}
  .hero{height:auto;display:flex;flex-direction:column}
  .hero-media{position:relative;width:100%;height:440px;order:1}
  .hero-media::after{background:linear-gradient(0deg,var(--ink) 0%,rgba(3,11,28,0) 45%)}
  .hero-copy{order:2;padding:0 var(--gut) 64px;margin-top:-36px}
  .hero-badge{display:none}
  .hm-ken figcaption{display:none}
  .sec-head,.life-top,.story,.faq-wrap,.finder-grid-2,.sgx .wrap,.staff-row,.video-wrap{grid-template-columns:1fr}
  .sec-head .lede{justify-self:start}
  .flagship{grid-template-columns:1fr}
  .flag-photo{min-height:360px}
  .wall{grid-template-columns:repeat(2,1fr);grid-auto-rows:auto}
  .wall>*{grid-column:auto!important;grid-row:auto!important;aspect-ratio:3/4}
  .wall .t-zain,.wall .t-helen,.wall .t-q2,.wall .t-medcap,.wall .t-ava{grid-column:1/3!important;aspect-ratio:auto}
  .wall .t-zain{aspect-ratio:4/5}
  .wall .t-helen,.wall .t-ava{aspect-ratio:3/2}
  .wall .t-medcap{padding:16px 18px}
  .wall .t-med{grid-column:1/3!important;aspect-ratio:1/1}
  .story-photos{position:static}
  .vid-list{grid-template-rows:none;grid-template-columns:repeat(3,1fr)}
  .vthumb{aspect-ratio:4/3}
  .voices{grid-template-columns:1fr}
  .voice-feature,.voice.wide{grid-column:auto}
  .voice-feature{grid-template-columns:1fr}
  .voice-feature figure{min-height:300px}
  .voice-feature figure.vf-whole{min-height:0;aspect-ratio:1303/720}
  .addon-grid{grid-template-columns:1fr}
  .coach-grid{grid-template-columns:repeat(2,1fr)}
  .foot .cols{grid-template-columns:1fr}
  .sgx-ph{height:520px}
  .sgx .wrap>*{min-width:0}
  .sgx h2{font-size:clamp(44px,12vw,80px)}
  .hero .kicker{font-size:13px;letter-spacing:.12em}
}
@media (max-width:620px){
  body{font-size:17px}
  .brand b{font-size:21px} .brand img{width:44px;height:44px} .brand small{font-size:10px;letter-spacing:.14em}
  .topbar a{margin-left:14px}
  .hero-media{height:400px;grid-template-columns:1.1fr 1fr}
  .hero h1{font-size:clamp(44px,12.5vw,64px);line-height:1}
  .wall .tile:not(.t-zain):not(.t-helen):not(.t-ava):not(.t-trent) .qt{display:none}
  .loc{flex-direction:column;gap:4px}
  .hero-ctas .btn{width:100%;justify-content:center}
  .wall .qtile .display{font-size:24px}
  .tile figcaption{padding:50px 14px 14px}
  .tile .nm{font-size:23px} .tile .qt{font-size:13.5px} .tile .cr{font-size:11.5px;letter-spacing:.1em}
  .wall .t-q2{padding:28px}
  .t-q2 .display{font-size:44px}
  .flag-body{padding:30px 22px}
  .flag-photo .days{font-size:120px}
  .camp-grid{grid-template-columns:1fr}
  .finder-card{padding:26px 20px}
  .finder .fields{grid-template-columns:1fr}
  .finder-result{grid-template-columns:1fr}
  .kb{height:440px}
  .care{grid-template-columns:1fr}
  .rhythm-strip{grid-template-columns:1fr 1fr;grid-template-rows:none;grid-auto-rows:minmax(250px,auto)}
  .rs .n{font-size:64px} .rs b{font-size:20px} .rs .sub{font-size:13px} .rs figcaption{padding:14px}
  .rhythm-h{flex-direction:column;align-items:flex-start}
  .vid-list{grid-template-columns:1fr}
  .vthumb{aspect-ratio:16/9}
  .coach-grid{grid-template-columns:1fr 1fr;gap:12px}
  .coach h3{font-size:22px;padding:14px 14px 4px} .coach p{padding:0 14px 16px;font-size:14px}
  .creds b{font-size:32px}
  .fritz{grid-template-columns:1fr} .fritz img{width:100%;height:320px}
  .voice-feature blockquote{padding:30px 24px}
  .sgx-ph{height:460px}
  .sgx-ph img{width:86%}
  .staff-row img{min-height:200px}
  .kenq{padding:28px}
  .final{min-height:520px}
  .final>img{width:100%;opacity:.22}
  .final::before{width:100%;background:rgba(3,11,28,.35)}
  .ptable{font-size:14.5px}
  .prices{padding:28px 20px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .pre{opacity:1;transform:none}
  .ticker{white-space:normal}
}

/* ===== Round 2 additions (Sept 29): Olympians, all-stars, legends, Spooky Nook, crops ===== */
.hm-ken img{filter:none}
.t-doyle img{object-position:50% 10%}
.addon .ph img.doyle{object-position:50% 0%}
.loc em{font-style:normal;font-family:var(--cond);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.prices .note b{color:#fff}
.prices .note+.note{margin-top:10px}
.camp-grid{grid-template-columns:repeat(6,1fr)}
.camp-grid>.camp{grid-column:span 2}
.camp-grid>.camp:nth-child(n+4){grid-column:span 3}
.proof{margin:22px 0 0;padding:14px 18px;border-left:4px solid var(--gold);background:rgba(255,255,255,.04);font-size:16px;line-height:1.5}
.proof b{font-family:var(--display);font-weight:400;text-transform:uppercase;color:var(--gold);margin-right:6px;font-size:19px}
/* Spooky Nook */
.nook-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:250px;gap:8px}
.nk{position:relative;margin:0;overflow:hidden;background:var(--ink-2)}
.nk img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.nk:hover img{transform:scale(1.04)}
.nk figcaption{position:absolute;left:0;right:0;bottom:0;padding:52px 16px 14px;background:linear-gradient(0deg,rgba(3,11,28,.95) 0%,rgba(3,11,28,.6) 55%,rgba(3,11,28,0) 100%)}
.nk b{display:block;font-family:var(--display);font-weight:400;font-size:25px;text-transform:uppercase;line-height:1}
.nk span{display:block;font-size:13.5px;line-height:1.4;color:#dfe5f0;margin-top:5px}
.nk-room{grid-column:span 2;grid-row:span 2}
.nk-room b{font-size:44px}
.nk-room span{font-size:15px;max-width:42ch}
.nk-courts{grid-column:span 2}
.nook-venues{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}
.nv{border:1px solid var(--line);padding:28px 30px;background:var(--ink)}
.nv h3{font-size:clamp(28px,2.8vw,40px);text-transform:uppercase;line-height:1;margin:8px 0 12px}
.nv .where{font-family:var(--cond);font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.nv ul{margin:0;padding-left:18px;color:var(--text-dim);font-size:15.5px}
.nv li{margin:5px 0}
/* Featured Olympians */
.oly-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.oly{position:relative;margin:0;overflow:hidden;aspect-ratio:1/1;background:var(--ink-2)}
.oly img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.oly:hover img{transform:scale(1.04)}
.oly figcaption{position:absolute;left:0;right:0;bottom:0;padding:120px 30px 28px;background:linear-gradient(0deg,rgba(3,11,28,.96) 0%,rgba(3,11,28,.72) 50%,rgba(3,11,28,0) 100%)}
.oly .flag{display:inline-block;font-family:var(--cond);font-weight:600;font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;background:var(--red);padding:5px 10px;margin-bottom:12px}
.oly .nm{display:block;font-family:var(--display);font-size:clamp(34px,4.2vw,62px);line-height:.92;text-transform:uppercase}
.oly .cr{display:block;font-family:var(--cond);font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin:10px 0 6px}
.oly .qt{display:block;font-size:15px;line-height:1.45;color:#e3e8f2;max-width:44ch}
.tile .cr + .cr,.oly .cr + .cr{margin-top:-3px}
@media(max-width:420px){.oly{aspect-ratio:4/5}}
@media(max-width:340px){.oly{aspect-ratio:3/4}}
/* All-star + legends small cards */
.stars-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:80px 0 26px}
.stars-head .tag{margin:0}
.star-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:56px}
.star{background:var(--ink-2);margin:0}
.star .ph{aspect-ratio:1/1;overflow:hidden;position:relative;background:var(--deep)}
.star img{width:100%;height:100%;object-fit:cover;object-position:50% 20%}
.star .ph::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:linear-gradient(90deg,var(--red) 0 33%,#fff 33% 66%,var(--navy) 66%)}
.star .mono{display:grid;place-items:center;background:repeating-linear-gradient(135deg,#0a2a66 0 14px,#082252 14px 28px)}
.star .mono span{font-family:var(--display);font-size:56px;color:var(--gold);line-height:1}
.star h4{margin:0;font-family:var(--display);font-weight:400;font-size:19px;text-transform:uppercase;line-height:1.05;padding:12px 12px 4px}
.star p{margin:0;padding:0 12px 14px;font-size:13px;line-height:1.4;color:var(--text-dim)}
.leg-more{margin:14px 0 0;grid-template-columns:repeat(8,1fr)}
.leg-more h4{font-size:17px}
@media (max-width:1180px){
  .camp-grid{grid-template-columns:repeat(2,1fr)}
  .camp-grid>.camp,.camp-grid>.camp:nth-child(n+4){grid-column:auto}
  .camp-grid>.camp:last-child{grid-column:1/-1}
  .star-grid{grid-template-columns:repeat(4,1fr)}
  .leg-more{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:980px){
  .nook-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:210px}
  .nook-venues{grid-template-columns:1fr}
}
@media (max-width:620px){
  .camp-grid{grid-template-columns:1fr}
  .camp-grid>.camp:last-child{grid-column:auto}
  .nook-grid{grid-auto-rows:170px;gap:6px}
  .nk b{font-size:19px}.nk-room b{font-size:30px}
  .nk:not(.nk-room) span{display:none}
  .nk figcaption{padding:40px 10px 10px}
  .nv{padding:22px 20px}
  .oly-grid{grid-template-columns:1fr}
  .oly figcaption{padding:80px 18px 18px}
  .oly .cr{font-size:12px;letter-spacing:.1em}
  .oly .qt{font-size:13.5px}
  .stars-head{margin:56px 0 20px}
  .star-grid,.leg-more{grid-template-columns:repeat(2,1fr);gap:10px}
  .star h4{font-size:17px;padding:10px 10px 3px}
  .star p{font-size:12.5px;padding:0 10px 12px}
}

.h2 .sub{display:block;font-size:clamp(24px,3.2vw,44px);line-height:1.05;margin-top:.2em}
[data-dates=pa]{white-space:nowrap}
.loc em{margin-left:auto;text-align:right}
.star.cta{display:flex;flex-direction:column;justify-content:flex-end;gap:6px;padding:18px 14px;background:var(--gold);color:var(--ink);text-decoration:none;min-height:100%}
.star.cta small{font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.star.cta b{font-family:var(--display);font-weight:400;font-size:26px;line-height:1;text-transform:uppercase}
.star.cta em{font-style:normal;font-family:var(--cond);font-weight:600;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--navy)}
@media (max-width:620px){.loc em{margin-left:0;text-align:left}}

[data-dates]{white-space:nowrap}
.band{margin:0 0 64px;position:relative}
.band img{width:100%;max-width:1500px;height:auto;margin:0 auto}
.band figcaption{position:absolute;left:0;bottom:0;background:var(--red);font-family:var(--cond);font-size:14px;letter-spacing:.14em;text-transform:uppercase;padding:9px 16px}
@media (max-width:620px){.band{margin-bottom:40px}.band figcaption{font-size:11px;padding:5px 9px;position:static;display:inline-block}}

.star-grid .star.cta{grid-column:span 3}
@media (max-width:980px){.star-grid .star.cta{grid-column:auto}}

/* R 9/29: hero never clips its copy (buttons were hidden under the ticker on shorter/narrower windows) */
.hero{height:auto;min-height:clamp(700px,92vh,920px)}
.hero-copy{height:auto;min-height:clamp(700px,92vh,920px);padding-top:48px;padding-bottom:84px}
@media (max-width:980px){.hero-copy{min-height:0;padding-top:0;padding-bottom:64px}}

/* R 9/29: keep nav on one line between tablet and wide desktop */
.navlinks a{white-space:nowrap}
@media (min-width:981px) and (max-width:1260px){.navlinks{gap:16px}.navlinks a{font-size:13px;letter-spacing:.08em}.navlinks .btn{padding-left:16px;padding-right:16px}.brand small{display:none}}


/* ===== Round 3 (Sept 29): Ryan's audio checklist ===== */
/* #5 congrats caption: names only */
.t-medcap{font-family:var(--cond);font-weight:500;text-transform:uppercase;letter-spacing:.1em;font-size:15px;line-height:1.35;color:#fff}
/* #3 girls action photo, hero bottom right */
.hm-action img{object-position:42% 60%}
/* #6 lede lead-in */
.lede b{color:#fff;font-weight:700}
/* #7 SuperGold "Tell me more" */
.flag-foot{justify-content:flex-start;gap:14px}
.more-toggle[hidden],.sg-more[hidden]{display:none}
.more-toggle .chev{width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-3px) rotate(45deg);transition:transform .2s}
.more-toggle[aria-expanded=true] .chev{transform:translateY(2px) rotate(-135deg)}
.sg-more{border-top:1px solid var(--line);padding-top:20px;margin:0 0 26px}
.sg-more p{font-size:16px;line-height:1.6}
.sg-more .sg-close{color:#fff;font-weight:700;font-size:17.5px;margin:0;border-left:4px solid var(--gold);padding-left:14px}
/* #8 What your wrestler will gain */
.gain{background:var(--ink);border-top:4px solid var(--gold);padding:44px 52px 50px;margin-bottom:28px;box-shadow:0 30px 80px rgba(0,0,0,.3)}
.gain .kicker{margin-bottom:14px}
.gain h3{font-size:clamp(34px,4.2vw,60px);line-height:.95;margin-bottom:32px}
.gain-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:30px 40px}
.gain-list li{border-top:1px solid var(--line);padding-top:18px}
.gain-list b{display:block;font-family:var(--display);font-weight:400;font-size:26px;line-height:1.05;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.gain-list span{display:block;font-size:15.5px;line-height:1.55;color:var(--text-dim)}
/* #15 parents heading */
.h2.fam-h{font-size:clamp(46px,5.2vw,80px);line-height:.92}
.fam-h .gold{display:block}
/* #21 stat panels: strict three-row grid (number / label / small line), shared baselines via subgrid */
.rhythm-strip{grid-template-columns:repeat(6,1fr);grid-template-rows:minmax(110px,1fr) auto auto auto;row-gap:0;column-gap:8px;height:auto;min-height:390px}
.rhythm-strip>.rs{grid-row:1 / span 4;display:grid;grid-template-rows:subgrid;justify-content:stretch}
.rhythm-strip .rs figcaption{grid-row:2 / span 3;display:grid;grid-template-rows:subgrid;align-items:start;padding:0 16px 18px}
.rhythm-strip .rs .n{margin:0 0 10px}
.rhythm-strip .rs b{font-size:22px;margin:0 0 8px}
.rhythm-strip .rs .sub{margin:0;font-size:14px;line-height:1.4}
/* #23 venue cards: identical format, titles on one line */
.nv h3{white-space:nowrap;font-size:clamp(24px,2.6vw,38px)}
/* #29 long testimonial */
.voice-ryan q{font-size:18.5px;font-weight:500;line-height:1.55}
/* #36 closing band: 736px arena photo shown at or below native size; a blurred, darkened copy fills the band */
.final-arena{min-height:0;padding:clamp(80px,9vw,130px) 0}
.final-arena::before{display:none}
.final-bg{position:absolute;inset:-40px;background:url(assets/img/ken-chertow-summer-wrestling-camp-final-arena-blur.jpg) center/cover no-repeat;filter:blur(16px) brightness(.32) saturate(1.15);z-index:0}
.final-arena::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(3,11,28,.9) 0%,rgba(3,11,28,.55) 55%,rgba(3,11,28,.4) 100%)}
.final-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center}
.final-arena h2{font-size:clamp(48px,5.4vw,92px);max-width:none}
.final-ph{margin:0;justify-self:end;width:100%;max-width:640px;border:3px solid var(--gold);box-shadow:0 30px 70px rgba(0,0,0,.6);background:#000}
.final-ph img{width:100%;height:auto}
@media (max-width:1180px){
  .rhythm-strip{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,minmax(120px,1fr) auto auto auto 8px);min-height:0}
  .rhythm-strip>.rs:nth-child(n+4){grid-row:6 / span 4}
}
@media (max-width:980px){
  .gain-list{grid-template-columns:1fr 1fr}
  .final-grid{grid-template-columns:1fr;gap:40px}
  .final-ph{justify-self:start}
}
@media (max-width:620px){
  .gain{padding:30px 22px 34px}
  .gain-list{grid-template-columns:1fr;gap:22px}
  .gain h3{font-size:36px}
  .flag-foot .btn{width:100%;justify-content:center}
  .rhythm-strip{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(100px,1fr) auto auto auto 8px)}
  .rhythm-strip>.rs:nth-child(n+3){grid-row:6 / span 4}
  .rhythm-strip>.rs:nth-child(n+5){grid-row:11 / span 4}
  .rhythm-strip .rs figcaption{padding:0 12px 14px}
  .rhythm-strip .rs b{font-size:19px}
  .rhythm-strip .rs .sub{font-size:13px}
  .nv h3{font-size:clamp(20px,6.4vw,30px)}
  .voice-ryan q{font-size:17px}
  .final-arena h2{font-size:clamp(40px,11vw,56px)}
}

/* R3: camp-card meta never runs together on phones */
.camp-b .meta{gap:12px}

/* ===== Round 4 (Sept 29) ===== */
/* R4 #3 camp-demand line: one calm line, never shouting */
.demand{display:flex;gap:10px;align-items:baseline;margin:20px 0 0;font-size:15px;line-height:1.45;color:var(--text-dim);max-width:600px}
.demand::before{content:"\2605";color:var(--gold);flex:none;font-size:13px}
.locs+.demand{margin-top:18px}
.prices .note.demand{margin-top:14px}
/* R4 #4 + #5: gain points as cards (same tokens as the .care cards) */
.gain-cards{gap:14px}
.gain-cards li{border:1px solid var(--line);border-top:3px solid var(--red);background:rgba(255,255,255,.035);padding:22px 24px 24px}
.why12{margin-top:80px}
.why12-h{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:end;margin-bottom:28px}
.why12-h .lede{justify-self:end;margin:0}
.why12-h .kicker{margin-bottom:14px}
.why12-list{grid-template-columns:repeat(4,1fr)}
/* R4 FAQ page link */
.faq-more{margin:28px 0 0}
@media (max-width:1180px){.why12-list{grid-template-columns:repeat(2,1fr)}}
@media (max-width:980px){.why12-h{grid-template-columns:1fr;gap:18px}.why12-h .lede{justify-self:start}}
@media (max-width:620px){.why12-list,.gain-cards{grid-template-columns:1fr}.gain-cards li{padding:20px 20px 22px}.why12{margin-top:60px}}
/* R4 #11 + #13: every split heading/copy header centers the heading on the copy */
.sec-head{align-items:center}
.why12-h{align-items:center}
/* R4 #12 family collage: fills the column from the top (Ken & Beth wide on top, two portraits under it) */
.life-top{align-items:start}
.kb{height:auto;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.kb figure{position:relative;left:auto;top:auto;right:auto;bottom:auto;width:auto;height:auto;border:0;box-shadow:0 20px 50px rgba(0,0,0,.45)}
.kb .a{grid-column:1 / -1;aspect-ratio:3/2}
.kb .b,.kb .c{aspect-ratio:2/3}
.kb .b img,.kb .c img{object-position:50% 0%}
/* R4 #17 staff family photo, shown at or below its 1422px native width */
.fam-wide{margin:56px auto 0;max-width:1422px}
.fam-wide img{width:100%;height:auto}
.fam-wide figcaption{font-family:var(--cond);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);margin-top:10px}
/* R4 #16 hero panels: crops that show the action */
.hm-crowd img{object-position:66% 40%}
.hm-action img{object-position:59% 50%}
/* R4 #15 pricing asterisk */
.ptable .ast{color:var(--gold);font-size:.8em;vertical-align:super;margin-left:1px}
.prices .fc-note{margin-top:14px}
.fc-note .ast{color:var(--gold);font-weight:700}
@media (max-width:620px){.kb{height:auto}.fam-wide{margin-top:40px}}
/* R4 #12 fix: beat the older absolute-position rules (.kb .a / .kb .b) */
.kb>figure.a,.kb>figure.b,.kb>figure.c,.kb>figure.d{position:relative;left:auto;top:auto;right:auto;bottom:auto;width:auto;height:auto;border:0}
.kb>figure.a{grid-column:1 / -1;aspect-ratio:3/2}
.kb>figure.b,.kb>figure.c{aspect-ratio:2/3}
.kb>figure.d{grid-column:1 / -1;aspect-ratio:1200/738}
/* R4 #18a hero bottom-right: keep both girls and the standing camper in frame */
.hm-action img{object-position:20% 50%}
/* R4 #19 Ava Rose tile: caption moves to the top-right corner so the wrestlers stay clear */
.wall .t-ava figcaption{top:0;bottom:auto;left:0;right:0;text-align:right;padding:20px 22px 90px 38%;background:radial-gradient(130% 110% at 100% 0%,rgba(3,11,28,.95) 0%,rgba(3,11,28,.72) 36%,rgba(3,11,28,0) 68%)}
@media (max-width:620px){.wall .t-ava figcaption{padding:14px 14px 60px 30%}.wall .t-ava .qt{display:none}}
/* R4 nav: 8 items; keep the logo tagline on one line and match faq.html's header */
.nav .brand small{white-space:nowrap}
@media (min-width:1261px){.navlinks{gap:22px}}

/* ===== Round 5 layout (Sept 29) ===== */
/* R5-11 hero sell-out line: a full-width gold banner along the bottom of the hero; the hero photos stop above it */
.hero-banner{position:relative;z-index:4;margin:0;background:var(--gold);color:var(--ink);min-height:60px;display:flex;align-items:center}
.hero-banner .wrap{display:flex;align-items:center;justify-content:center;text-align:center;gap:14px;padding-top:12px;padding-bottom:12px}
.hero-banner .wrap::before{content:"\2605";flex:none;font-size:16px;line-height:1}
.hero-banner .hb-t{font-family:var(--cond);font-style:italic;font-weight:500;text-transform:uppercase;letter-spacing:.04em;font-size:clamp(17px,1.65vw,25px);line-height:1.25}
.hero-banner b{font-weight:700}
@media (max-width:600px){.hero-banner .hb-t{text-wrap:balance}}
@media (min-width:981px){.hero-media{bottom:60px}.hero-copy{padding-bottom:64px}}
@media (max-width:980px){.hero-banner{order:3}.hero-copy{padding-bottom:36px}}
/* R5-7 Intensity quote tile: real right margin; "a" ends the next-to-last line and "champion." gets the last line */
.wall .t-q1{padding:22px 26px 22px 22px}
.wall .t-q1 .display{font-size:clamp(20px,2vw,30px);overflow-wrap:normal}
@media (max-width:980px){.wall .t-q1 .display{font-size:clamp(24px,3.4vw,32px)}}
@media (max-width:620px){.wall .t-q1{padding:20px 22px 20px 18px}.wall .t-q1 .display{font-size:24px}}
/* R5-6 "Hard work" tile: headline capped so the button always fits (it was cut off on screens wider than about 1550px) */
.wall .t-q2{padding:36px 40px;gap:16px}
.wall .t-q2 .display{font-size:clamp(40px,4.6vw,68px)}
.wall .t-q2 .row p{font-size:16px}
@media (max-width:620px){.wall .t-q2{padding:26px 22px}.wall .t-q2 .display{font-size:40px}}
/* R5-4 Find your camp: heading + finder on the left; fees box on the right, raised so its last row ends level with
   the bottom of the finder box; the fee notes sit in one navy tile under both columns */
.find-grid{display:grid;grid-template-columns:1.35fr 1fr;grid-template-areas:"head prices" "card prices" "notes notes";column-gap:40px;align-items:start}
.find-head{grid-area:head;padding-bottom:30px}
.find-head .h2{font-size:clamp(52px,5.6vw,88px)}
.find-head .lede{margin:16px 0 0}
.find-grid .finder-card{grid-area:card}
.find-grid .prices{grid-area:prices;align-self:end;padding:30px 32px 0}
.find-grid .prices h3{margin-bottom:16px}
.find-grid .ptable tbody tr:last-child td{padding-bottom:22px}
.fee-notes{grid-area:notes;margin-top:28px;background:var(--navy);color:#fff;border-top:4px solid var(--gold);padding:24px 32px 26px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 36px}
.fee-notes .note{margin:0;font-size:14.5px;line-height:1.5;color:#dfe5f0}
.fee-notes .note b{color:#fff}
.fee-notes .note.demand{margin:0;max-width:none;color:#fff;font-weight:600}
@media (max-width:1180px){.fee-notes{grid-template-columns:1fr 1fr}}
@media (max-width:980px){.find-grid{grid-template-columns:1fr;grid-template-areas:"head" "card" "prices" "notes";row-gap:24px}.find-head{padding-bottom:0}.find-grid .prices{align-self:stretch}.fee-notes{margin-top:0}}
@media (max-width:620px){.find-grid .prices{padding:26px 20px 0}.fee-notes{grid-template-columns:1fr;padding:22px 20px}}
/* R5-1 Ryan's testimonial in two paragraphs (same type as before) */
.voice-ryan .vq p{margin:0;font-size:18.5px;font-weight:500;line-height:1.55}
.voice-ryan .vq p+p{margin-top:14px}
@media (max-width:620px){.voice-ryan .vq p{font-size:17px}}
/* R5-2 closing band: the arena photo is a borderless, feathered backdrop again (round-1 feel), bigger and brighter,
   filling the right of the band. ken-chertow-summer-wrestling-camp-final-arena-crowd.jpg = 4x Real-ESRGAN upscale of the 736px original, saved at 2200px. */
.final-bg{background-image:url(assets/img/ken-chertow-summer-wrestling-camp-final-arena-crowd.jpg)}
.final-arena .final-ph{position:absolute;top:0;right:0;bottom:0;width:70%;max-width:none;margin:0;border:0;box-shadow:none;background:none;z-index:1;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 42%),linear-gradient(180deg,transparent 0%,#000 14%,#000 86%,transparent 100%);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(90deg,transparent 0%,#000 42%),linear-gradient(180deg,transparent 0%,#000 14%,#000 86%,transparent 100%);mask-composite:intersect}
.final-arena .final-ph img{width:100%;height:100%;object-fit:cover;object-position:50% 55%;filter:saturate(1.1) contrast(1.06)}
.final-arena::after{background:linear-gradient(90deg,rgba(3,11,28,.92) 0%,rgba(3,11,28,.72) 30%,rgba(3,11,28,.12) 62%,rgba(3,11,28,0) 100%)}
@media (max-width:980px){
  .final-arena{flex-direction:column;align-items:stretch;padding-top:0}
  .final-arena .final-ph{position:relative;width:100%;height:auto;aspect-ratio:4/3;
    -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 12%,#000 62%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0%,#000 12%,#000 62%,transparent 100%)}
  .final-arena .final-grid{margin-top:-70px}
  .final-arena::after{background:rgba(3,11,28,.2)}
}

/* R4 video section (9/29): three vertical reels. Desktop: side by side. Phone: swipe row inside the section, page never scrolls sideways. */
.reels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;max-width:1000px;margin:0 auto}
.reel{margin:0;min-width:0}
.reel video{display:block;width:100%;height:auto;aspect-ratio:9/16;object-fit:cover;background:#000;border:1px solid var(--line)}
.reel figcaption{margin-top:12px;font-family:var(--cond);font-weight:500;letter-spacing:.14em;text-transform:uppercase;font-size:14px;color:#fff;text-align:center}
@media (max-width:760px){.reels{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:72%;gap:14px;max-width:none;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding-bottom:10px}.reel{scroll-snap-align:start}}
/* R4 hero bottom-right = Ryan's coach demo photo (ken-chertow-summer-wrestling-camp-pat-glory-single-leg-demo.jpg). At desktop the bottom row is made shorter
   (1.6fr/1fr) so the slot is wide enough to keep both the coach's and the boy's heads in frame. Revert = delete these two lines. */
.hm-action img{object-position:50% 0%}
/* R4 herofix (09-29): the fixed "Ask Coach" button sat on the coach's face at first load (e.g. 1280x900). The tile is now a fixed
   shape (width x 0.74, full image width, top-aligned so both heads stay in) and the crowd tile above takes the rest of the column,
   which put the coach's face below the button but pushed Ryan's photo below the fold. REVERTED by coordinator: Ryan's photo must show on first load; the floating button may overlap part of it at some laptop heights. */
@media (min-width:981px){.hero-media{grid-template-rows:1.6fr 1fr}}

/* R4 photos2 (09-29): new photos from Ryan. Hero top-right, coaches mat row, staff-row photo, video side photo. */
.hm-crowd img{object-position:50% 50%}
.hm-action img{transform-origin:50% 0}
.mat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:28px 0 56px}
.mat-row figure{margin:0;position:relative;overflow:hidden;aspect-ratio:3/2}
.mat-row img{width:100%;height:100%;object-fit:cover}
.mat-row figcaption,.vid-side .pf figcaption{font-family:var(--cond);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase}
.mat-row figcaption{position:absolute;left:10px;bottom:10px;background:rgba(3,11,28,.75);padding:5px 10px}
.staff-row figure.kpz{display:flex;flex-direction:column}
.staff-row figure.kpz img{flex:1 1 auto;height:auto;min-height:0;object-position:50% 30%}
.staff-row figure.kpz figcaption{margin-top:10px;font-family:var(--cond);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim)}
.vid-side{justify-self:end;max-width:460px}
.vid-side .pf{margin:20px 0 0}
.vid-side .pf img{display:block;width:100%;height:auto}
.vid-side .pf figcaption{margin-top:8px;color:var(--text-dim)}
@media (max-width:760px){.mat-row{grid-template-columns:1fr 1fr;gap:8px;margin:20px 0 40px}.mat-row figure:first-child{grid-column:1 / -1}.vid-side{justify-self:stretch;max-width:none}}


/* R5 photos (2026-09-29): Kylie centered more; Zain keeps his fist (right) and as much of his elbow (left) as the source has. Drawn image width on desktop = tile height 640 x 0.8 = 512px. */
.t-kylie img{object-position:75% 30%}
@media (min-width:981px){.t-zain img{object-position:right -96px top 20%}}
/* R6 video: 4 vertical reels (Ryan's camp-day reel leftmost) + one wide video underneath */
@media (min-width:761px){.reels{grid-template-columns:repeat(4,minmax(0,1fr));max-width:1180px;gap:24px}}
.reel-wide{max-width:1180px;margin:40px auto 0}
.reel-wide video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:#000;border:1px solid var(--line)}
.reel-wide figcaption{margin-top:12px;font-family:var(--cond);font-weight:500;letter-spacing:.14em;text-transform:uppercase;font-size:14px;color:#fff;text-align:center}
@media (max-width:760px){.reel-wide{margin-top:26px}}

/* ===== Round 8 (Ken's feedback) ===== */
/* C2: Trent Hidlay photo tile (photo from Ryan 9/30; was a text tile); the closing tile moves to its own full-width row */
.t-trent{grid-column:7/13;grid-row:11/15} .t-trent img{object-position:50% 22%}
.t-trent .qt{max-width:60ch}
.wall .t-q2{grid-column:1/13;grid-row:15/18}
@media (max-width:980px){.wall .t-trent{grid-column:1/3!important;aspect-ratio:4/5}.wall .t-trent img{object-position:50% 20%}}
/* A3: TBA cells in the fee table */
.ptable td.tba{color:var(--text-dim);font-weight:500}
/* C4: two coach tiers. Featured (9 + the 2027 tile) = 5 across, bigger cards; camp staff (21) = 7 across on desktop, 3 on tablet, so rows come out whole */
.star-grid.tier-grid{grid-template-columns:repeat(7,1fr)}
.star-grid.feat-grid{grid-template-columns:repeat(5,1fr)}
.tier-grid .star.cta{grid-column:auto}
.feat-grid{margin-bottom:0}
.stars-head.staff-head{margin-top:56px}
@media (max-width:1180px){.star-grid.tier-grid{grid-template-columns:repeat(3,1fr)}.star-grid.feat-grid{grid-template-columns:repeat(5,1fr)}}
@media (max-width:980px){.star-grid.feat-grid{grid-template-columns:repeat(4,1fr)}}
@media (max-width:620px){.star-grid.tier-grid,.star-grid.feat-grid{grid-template-columns:repeat(2,1fr)}.stars-head.staff-head{margin-top:40px}}
/* B9: the 2025 staff photo carries Ken's caption under the photo */
.staff-hero figcaption{position:static;display:block;text-transform:none;letter-spacing:.02em;font-size:17px;line-height:1.4;padding:12px 18px}
/* C3: legends after moving Chelsea and the Stouts to staff, plus campers who became college coaches */
.leg-more{grid-template-columns:repeat(6,1fr)}
@media (max-width:980px){.leg-more{grid-template-columns:repeat(3,1fr)}}
@media (max-width:620px){.leg-more{grid-template-columns:repeat(2,1fr)}}
.leg-campers{margin-top:28px;padding:28px 30px;border:1px solid var(--line);border-left:4px solid var(--gold);background:rgba(255,255,255,.03)}
.leg-campers .kicker{margin-bottom:10px}
.leg-campers .lc-lede{margin:0 0 18px;color:var(--text-dim);font-size:16px}
.lc-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.lc-list li{border-top:3px solid var(--red);padding-top:12px}
.lc-list b{display:block;font-family:var(--display);font-weight:400;font-size:clamp(22px,2.2vw,30px);line-height:1;text-transform:uppercase}
.lc-list span{display:block;margin-top:6px;font-family:var(--cond);font-size:14px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
@media (max-width:980px){.lc-list{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){.leg-campers{padding:22px 20px}}
/* Legends 3x3 (Rulon Gardner moved into the big tiles): bottom row has 6 cards. 6 across on desktop, 3 x 2 at 900, 2 x 3 on phones, so no orphan anywhere */
.star-grid.leg-more{grid-template-columns:repeat(6,1fr)}
@media (min-width:1181px){.star-grid.leg-more h4{font-size:19px}.star-grid.leg-more p{font-size:13.5px}}
@media (max-width:1180px){.star-grid.leg-more{grid-template-columns:repeat(3,1fr)}}
@media (max-width:620px){.star-grid.leg-more{grid-template-columns:repeat(2,1fr)}}

/* R8 final: one "2026 All-Star Staff" section. Big tiles for featured coaches, smaller tiles for everyone else. Tile size is the only tier cue. */
.star-grid.feat-grid{grid-template-columns:repeat(3,1fr);margin-bottom:14px}
.star-grid.tier-grid:not(.feat-grid){grid-template-columns:repeat(7,1fr)}
.feat-grid .star h4{font-size:26px;padding:16px 16px 6px}
.feat-grid .star p{font-size:15px;padding:0 16px 18px}
.tier-grid:not(.feat-grid) .star.cta{grid-column:1/-1;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 18px;padding:16px 22px;min-height:0}
@media (max-width:1180px){.star-grid.feat-grid{grid-template-columns:repeat(3,1fr)}.star-grid.tier-grid:not(.feat-grid){grid-template-columns:repeat(5,1fr)}}
@media (max-width:980px){.star-grid.feat-grid{grid-template-columns:repeat(3,1fr)}.star-grid.tier-grid:not(.feat-grid){grid-template-columns:repeat(4,1fr)}.feat-grid .star h4{font-size:20px;padding:12px 12px 4px}.feat-grid .star p{font-size:13.5px;padding:0 12px 14px}}
@media (max-width:620px){.star-grid.feat-grid{grid-template-columns:repeat(2,1fr)}.star-grid.tier-grid:not(.feat-grid){grid-template-columns:repeat(3,1fr);gap:8px}.feat-grid .star h4{font-size:18px;padding:10px 10px 3px}.feat-grid .star p{font-size:12.5px;padding:0 10px 12px}.tier-grid:not(.feat-grid) .star h4{font-size:13.5px;padding:8px 7px 3px}.tier-grid:not(.feat-grid) .star p{font-size:11px;padding:0 7px 9px}.tier-grid:not(.feat-grid) .star.cta{padding:14px 16px}}

/* R8 last: phones. The 9th big tile no longer sits alone; it spans both columns, photo left / text right (same pattern as the .leg-more 7th card) */
@media (max-width:620px){.star-grid.feat-grid .star:last-child:nth-child(odd){grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;align-items:start}
.star-grid.feat-grid .star:last-child:nth-child(odd) .ph{grid-row:1/3}}
/* R8 last: the staff-photo caption sits ON the photo as a solid band across the bottom-left, covering the corner where the photographer's mark was.
   Phones: a band would hide most of a phone-size photo, so the caption stays below and the photo's bottom strip (feet row) is cropped instead. */
.staff-hero figcaption{position:absolute;left:0;right:auto;top:auto;bottom:0;margin:0;min-height:15%;min-width:22%;display:flex;align-items:center}
@media (max-width:620px){.staff-hero figcaption{position:static;min-height:0;min-width:0}.staff-hero img{aspect-ratio:2048/630;object-fit:cover;object-position:50% 0}}

/* Legends 3x3: nine big tiles, 3 across at desktop and 900. Phones: 2 across, the 9th (Rulon Gardner) spans both columns, photo left / text right */
.coach-grid{grid-template-columns:repeat(3,1fr)}
@media (min-width:621px) and (max-width:980px){.coach-grid{grid-template-columns:repeat(3,1fr);gap:14px}.coach h3{font-size:22px;padding:14px 14px 4px}.coach p{padding:0 14px 16px;font-size:14px}}
@media (max-width:620px){.coach-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.coach-grid .coach h3{font-size:19px;overflow-wrap:break-word}
.coach-grid .coach:last-child:nth-child(odd){grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.coach-grid .coach:last-child:nth-child(odd) .ph{grid-row:1/3}}
@media (max-width:370px){.coach-grid .coach h3{font-size:17px;padding:12px 10px 4px}.coach-grid .coach p{padding:0 10px 14px;font-size:13px}}
@media (max-width:340px){.coach-grid .coach h3{font-size:15px}}

/* Legends final (r8h): 12 big tiles = 4x3 at desktop, 3x4 at 621-1180, 2x6 on phones. The 6 small tiles are always narrower than the big ones:
   6 across on desktop, 4+2 centered at 621-980, 3 x 2 on phones. */
.coach-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1180px){.coach-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:620px){.coach-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.star-grid.leg-more{grid-template-columns:repeat(6,minmax(0,1fr))}
@media (min-width:981px) and (max-width:1180px){.star-grid.leg-more h4{font-size:15px;padding:10px 9px 3px}.star-grid.leg-more p{font-size:12px;padding:0 9px 12px}}
@media (min-width:621px) and (max-width:980px){.star-grid.leg-more{display:flex;flex-wrap:wrap;justify-content:center;gap:14px}.star-grid.leg-more .star{flex:0 0 calc((100% - 42px)/4)}}
@media (max-width:620px){.star-grid.leg-more{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.star-grid.leg-more h4{font-size:13.5px;padding:8px 7px 3px;overflow-wrap:break-word}.star-grid.leg-more p{font-size:11px;padding:0 7px 9px}}
/* Small phones: "Add-on coaching." is one unbreakable 361px line at 52px, which pushed the page to 381px wide (sideways scroll at 360 and 320) */
@media (max-width:420px){#addon-h{font-size:min(52px,calc((100vw - 40px)/7.1))}}
/* Small phones (320): the "Why" cards' unbreakable headings ("An athlete for the long run") were 247px wide inside a 238px card, which stretched the page to 333px */
@media (max-width:340px){.gain-list b{font-size:22px}.gain-cards li{padding:18px 16px 20px}}
/* Phones: "Bruce Baumgartner" must not break mid-word; big-tile names scale with the screen width */
@media (max-width:400px){.coach-grid .coach h3{font-size:clamp(12.5px,4.1vw,16.5px)}}

/* 320px fix: the Ken's-story block and the flagship camp card had content wider than the screen (cause: grid tracks sized to unbreakable text) */
@media (max-width:340px){.story,.flagship{grid-template-columns:minmax(0,1fr)}.story>*,.flagship>*{min-width:0}.creds b{font-size:24px}.gain-list b{font-size:20px}.gain-list span{overflow-wrap:break-word}.flag-body{padding-left:16px;padding-right:16px}.story-photos>*,.creds>*,.flag-body *{min-width:0}.flag-body h3{font-size:clamp(40px,15vw,64px)}.creds b{font-size:22px}}
/* 320px: add-on card titles are unbreakable (no-break spaces) and were 27px wider than the screen */
@media (max-width:340px){.addon-b{font-size:15.3px;overflow-wrap:anywhere}}

/* R8 legends17 (09-30): 17 big legend tiles + closing banner. 4-up: rows 1-4 full, row 5 = 17th tile + banner spanning the other 3.
   3-up and 2-up: banner is one slot (17+1 = 18 fills 6 rows / 9 rows). Revert = delete this block and the .coach-cta link + 5 tiles. */
.coach-cta{display:flex;flex-direction:column;justify-content:flex-end;gap:12px;grid-column:span 3;min-width:0;padding:30px 34px;background:var(--gold);color:var(--ink);text-decoration:none;transition:transform .3s}
.coach-cta:hover{transform:translateY(-6px)}
.coach-cta small{font-family:var(--cond);font-weight:600;font-size:13px;letter-spacing:.16em;text-transform:uppercase}
.coach-cta b{font-family:var(--display);font-weight:400;font-size:clamp(34px,3.6vw,54px);line-height:1;text-transform:uppercase;max-width:20ch}
.coach-cta em{font-style:normal;font-family:var(--cond);font-weight:600;font-size:15px;letter-spacing:.12em;text-transform:uppercase;color:var(--navy)}
@media (max-width:1180px){.coach-cta{grid-column:auto;padding:18px 14px;gap:8px}.coach-cta small{font-size:12px}.coach-cta b{font-size:24px;max-width:none}.coach-cta em{font-size:13px}}
@media (max-width:620px){.coach-cta{padding:14px 12px}.coach-cta b{font-size:19px}.coach-cta em{font-size:12px}}
@media (max-width:400px){.coach-cta b{font-size:clamp(14px,4.7vw,18px)}}
/* R8 legends17: photo credit links sit inline in the footer fine print */
.foot .fine a{display:inline;margin:0;color:inherit;text-decoration:underline}

/* R8 staff6 (09-30, Ryan): small staff tiles 6 across on desktop (24 coaches = 4 full rows, no stragglers), 4 across on tablets, 3 on phones.
   Every row is the same height, so every text box is the same size. The gold "Lineup announced soon" strip sits in its own container
   (.staff-cta) right below, so it keeps its own height. Feature tiles get equal rows too from tablet width up.
   Revert = delete this block, drop the staff-tiles class, and move the strip back inside the tile grid. */
.star-grid.tier-grid.staff-tiles{grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:1fr;margin-bottom:14px}
@media (max-width:980px){.star-grid.tier-grid.staff-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:620px){.star-grid.tier-grid.staff-tiles{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:8px}}
@media (min-width:621px){.star-grid.feat-grid{grid-auto-rows:1fr}}
/* R8 same-size rule (09-30, Ryan: "keep these things the same size"): in every tile grid, each row is as tall as the tallest row,
   so the text boxes match. Legends small row on tablets moves from flex to an 8-column grid so its last 2 tiles stay centered. */
.coach-grid{grid-auto-rows:1fr}
.star-grid.leg-more{grid-auto-rows:1fr}
@media (min-width:621px) and (max-width:980px){.star-grid.leg-more{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:14px}.star-grid.leg-more .star{grid-column:span 2}.star-grid.leg-more .star:nth-child(5):nth-last-child(2){grid-column:3/5}}
@media (max-width:620px){.star-grid.feat-grid{grid-template-rows:repeat(4,1fr) auto}}
/* R8 (Ryan 9/30): the hero's gold sell-out banner repeats at the bottom of the camps section, flush against the finder below */
#camps{padding-bottom:0}
.camps-banner{margin-top:clamp(40px,5vw,64px)}

/* ===== R8 (Ryan 9/30 AM) ===== */
/* Family section: photos and intro end about level; the group photo + the six care tiles form one band underneath, every row the same height */
@media (min-width:1181px){.kb>figure.b,.kb>figure.c{aspect-ratio:1/1}}
.care.care-wide{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:14px;margin:48px 0 0}
.care.care-wide li.care-ph{grid-column:span 2;padding:0;border:0;background:var(--ink-2);position:relative;overflow:hidden;min-height:240px}
.care-ph figure{margin:0;position:absolute;inset:0}
.care-ph img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block}
.care-ph figcaption{position:absolute;left:12px;bottom:10px;font-family:var(--cond);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;background:rgba(3,11,28,.75);padding:5px 10px}
@media (max-width:980px){.care.care-wide{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;grid-template-rows:auto repeat(3,1fr)}.care.care-wide li.care-ph{grid-column:1/-1;aspect-ratio:1200/738;min-height:0}}
@media (max-width:620px){.care.care-wide{grid-template-columns:minmax(0,1fr);grid-template-rows:auto repeat(6,1fr)}}
/* Day-at-camp photo tiles: lighter shade so the photos show; darker only where the words sit */
.rs::after{background:linear-gradient(0deg,rgba(3,11,28,.9) 0%,rgba(3,11,28,.7) 42%,rgba(3,11,28,.3) 72%,rgba(3,11,28,.08) 100%)}
.rs:not(.solid) .n{text-shadow:0 2px 18px rgba(0,0,0,.65)}
.rs:not(.solid) b,.rs:not(.solid) .sub{text-shadow:0 1px 10px rgba(0,0,0,.6)}
/* Fee notes: three blocks with icons, then a gold band. The Future Champions note now sits in the price card (italic third line). */
.ptable .fc-inc{font-style:italic}
.fee-notes.fn-v2{display:block;padding:0}
.fn-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 36px;padding:26px 32px 24px}
.fee-notes .note.fn{display:flex;gap:14px;align-items:flex-start}
.fn-ic{flex:none;width:30px;height:30px;color:var(--gold);margin-top:1px}
.fn-gold{margin:0;background:var(--gold);color:var(--ink);padding:18px 32px;display:flex;gap:12px;align-items:baseline;font-size:15.5px;line-height:1.45}
.fn-gold::before{content:"\2605";flex:none;font-size:15px}
.fn-gold b{font-family:var(--cond);font-style:italic;font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:19px;margin-right:4px}
@media (max-width:700px){.fn-grid{grid-template-columns:minmax(0,1fr);padding:22px 20px}.fn-gold{padding:16px 20px}}
/* R8 9/30 AM follow-ups: band tiles a touch smaller so rows carry less empty space; 2 across below 1180px; gold band = bold line over one sentence */
.care.care-wide li:not(.care-ph){padding:16px 18px}
.care.care-wide li b{font-size:22px}
.care.care-wide li span{font-size:14.5px;line-height:1.45}
@media (max-width:1180px){.care.care-wide{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;grid-template-rows:auto repeat(3,1fr)}.care.care-wide li.care-ph{grid-column:1/-1;aspect-ratio:1200/738;min-height:0}}
@media (max-width:620px){.care.care-wide{grid-template-columns:minmax(0,1fr);grid-template-rows:auto repeat(6,1fr)}}
.fn-gold b{display:block;margin:0 0 2px}
/* Price card keeps its old height with the new Future Champions line (Ryan 9/30: don't make the block bigger) */
.find-grid .ptable tbody td{padding-top:12.5px;padding-bottom:12.5px}
.find-grid .ptable tbody tr:last-child td{padding-bottom:19.5px}
@media (max-width:1180px){.find-grid .ptable tbody td{padding-top:11px;padding-bottom:11px}.find-grid .ptable tbody tr:last-child td{padding-bottom:18px}}
@media (max-width:980px){.find-grid .ptable tbody td{padding-top:13.5px;padding-bottom:13.5px}.find-grid .ptable tbody tr:last-child td{padding-bottom:20.5px}}
@media (max-width:620px){.find-grid .ptable tbody td{padding-top:11px;padding-bottom:11px}.find-grid .ptable tbody tr:last-child td{padding-bottom:18px}}
/* R8 (Ryan 9/30): college-coach campers get photos (4:5), red rule under each photo, name and school below */
.lc-list.lc-photos li{border-top:0;padding-top:0}
.lc-ph{margin:0 0 12px;aspect-ratio:4/5;overflow:hidden;background:var(--ink-2);border-bottom:3px solid var(--red)}
.lc-ph img{width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:620px){.lc-list.lc-photos{gap:12px}.lc-list.lc-photos b{font-size:20px}.lc-list.lc-photos span{font-size:12px;letter-spacing:.06em}}
/* R8 (Ryan 9/30): Parent FAQ uses the full width: heading row on top, the questions in two columns underneath (one column on phones) */
.faq-wrap.faq-wide{grid-template-columns:1fr;gap:30px}
.faq-wide .faq-head{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"k k" "h p";column-gap:64px;align-items:end}
.faq-wide .faq-head .kicker{grid-area:k}
.faq-wide .faq-head h2{grid-area:h}
.faq-wide .faq-note{grid-area:p;margin:0 0 10px}
.faq-2{display:grid;grid-template-columns:1fr 1fr;gap:0 56px;align-items:start}
@media (max-width:980px){.faq-wide .faq-head{grid-template-columns:1fr;grid-template-areas:"k" "h" "p";row-gap:14px}.faq-2{grid-template-columns:1fr}.faq-2 .faq:first-child details:last-child{border-bottom:0}}
/* R8 (Ryan 9/30): the gold spots-go-fast band uses the same type as the sell-out banner; text in both mid-page bars centered */
.fn-gold{justify-content:center;align-items:center;text-align:center;padding:20px 32px;font-family:var(--cond);font-style:italic;font-weight:500;text-transform:uppercase;letter-spacing:.04em;font-size:clamp(17px,1.65vw,25px);line-height:1.25}
.fn-gold b{display:inline;font-size:inherit;margin:0 4px 0 0}
.fn-gold::before{content:none;display:none} /* G45: no star on the spots-go-fast band */
.camps-banner .wrap{justify-content:center;text-align:center}
@media (max-width:700px){.fn-gold{padding:16px 20px}}

/* ===== r8x wall4: Chertow-trained wall, new-athlete band re-sized (2026-09-30; replaces the r8w wall3 block) =====
   Ryan: the three new tiles must read smaller than the star tiles. Zain is 4 cols x 6 rows, Trent 6 x 4.
   Desktop band = rows 15-18: Nicole 4 cols (near-square), Toccara 3 cols (tall action shot), Ashley 5 cols (wide photo).
   The closing "Hard work" tile stays last: full width, rows 19-21.
   Tablet/phone (2 columns): Toccara is a half tile (fills the slot beside Pataky & Kocher); Nicole and Ashley full width 3:2. */
.t-nicole{grid-column:1/5;grid-row:15/19} .t-nicole img{object-position:50% 45%}
.t-toccara{grid-column:5/8;grid-row:15/19} .t-toccara img{object-position:50% 0%}
.t-ashley{grid-column:8/13;grid-row:15/19} .t-ashley img{object-position:40% 0%}
.wall .t-q2{grid-column:1/13;grid-row:19/22}
@media (max-width:980px){
  .wall{grid-auto-flow:row dense}
  .wall .t-nicole,.wall .t-ashley{grid-column:1/3!important;aspect-ratio:3/2}
}
/* R8 (9/30): Toccara (Olympian) takes the wide slot, Ashley the tall one; phones: Toccara full width, Ashley a half tile */
.t-toccara{grid-column:8/13;grid-row:15/19} .t-toccara img{object-position:50% 40%}
.t-ashley{grid-column:5/8;grid-row:15/19} .t-ashley img{object-position:50% 20%}
@media (max-width:980px){.wall .t-toccara{grid-column:1 / 3!important;aspect-ratio:3/2}.wall .t-ashley{grid-column:auto!important;aspect-ratio:3/4}}
@media (min-width:981px){.t-ashley .nm{font-size:clamp(20px,1.85vw,27px);white-space:nowrap}}
/* R8 (9/30): add-on cards pushed the page 7px sideways at 981-989px (the "Nutrition Coaching" heading can't wrap); equal columns + smaller heading there */
@media (min-width:981px){.addon-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:981px) and (max-width:1120px){.addon-b{padding:24px}.addon-b h3{font-size:clamp(26px,2.85vw,32px)}}

/* G48 coaching tree: 7 smaller photo tiles under the 4 lead tiles (replaces G47 text-only list) */
.lc-list.lc-photos-sm{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:22px}
.lc-list.lc-photos-sm li{box-sizing:border-box;flex:0 0 calc((100% - 36px)/4);min-width:0}
.lc-list.lc-photos-sm .lc-ph{margin-bottom:10px}
.lc-list.lc-photos-sm b{font-size:clamp(18px,2.6vw,24px);line-height:1.05}
.lc-list.lc-photos-sm span{font-size:12px;letter-spacing:.06em}
@media (min-width:981px){.lc-list.lc-photos-sm{flex-wrap:nowrap}.lc-list.lc-photos-sm li{flex:1 1 0}.lc-list.lc-photos-sm b{font-size:clamp(14px,1.45vw,21px);white-space:nowrap}.lc-list.lc-photos-sm span{font-size:11px;letter-spacing:.05em;white-space:nowrap}}
@media (max-width:620px){.lc-list.lc-photos-sm{gap:10px}.lc-list.lc-photos-sm li{flex:0 0 calc((100% - 20px)/3)}.lc-list.lc-photos-sm b{font-size:16px}.lc-list.lc-photos-sm span{font-size:10px;letter-spacing:.04em}}

/* G50 (10/1): Ava Rose and Ashley Iliff Gocklin swap places on the wall. Ashley takes Ava's old slot (desktop 3x3 near-square; tablet/phone full width 3:2)
   with her wide, uncropped photo; Ava takes Ashley's old tall slot (desktop 3x4; tablet/phone half tile 3:4), cropped to both wrestlers' faces. */
@media (min-width:981px){.t-ava{grid-row:15/19}.t-ashley{grid-row:4/7}}
.t-ava img{object-position:76% 50%}
.t-ashley img{object-position:75% 30%}
@media (max-width:980px){.wall .t-ava{grid-column:auto!important;aspect-ratio:3/4}.wall .t-ashley{grid-column:1/3!important;aspect-ratio:3/2}}
/* G50b: no dangling "IOWA" on Ava's credential line in her tall slot */
.wall .t-ava .cr,.wall .t-ava .qt{text-wrap:balance}
@media (max-width:340px){.wall .t-ava figcaption{padding-left:18%}.wall .t-ava .cr{letter-spacing:.06em}}

/* G51 (10/1): Taina Fernandez joins the new-athlete zone. Desktop: a new 3-row band under Nicole/Ava/Toccara: Taina wide (6 cols x 3 rows,
   smaller than Zain 4x6 and Trent 6x4) on the left, the closing "Hard work" tile beside her on the right (two-line headline sized to the tile).
   Tablet/phone (2 columns): Taina full width 8:5 just before the closing tile, so both hands and the flag's stars stay in frame. */
@media (min-width:981px){
  .t-taina{grid-column:1/7;grid-row:19/22}
  .wall .t-q2{grid-column:7/13;grid-row:19/22;padding:30px 34px;gap:14px;container-type:inline-size}
  .wall .t-q2 .display{font-size:11.2cqi}
  .t-taina figcaption{padding-top:44px}
}
.t-taina img{object-position:50% 30%}
.wall .t-taina .cr,.wall .t-taina .qt{text-wrap:balance}
@media (max-width:980px){.wall .t-taina{grid-column:1/3!important;aspect-ratio:8/5}}

/* G54 (10/1): desktop row Nicole | Ava | Toccara re-balanced. Ava 3 -> 4 columns, Toccara 5 -> 4 columns; Nicole and the row height unchanged.
   Rows are a fixed 100px, so each photo renders at a fixed scale: anchor Ava's crop on the right (bottom wrestler's pink headgear and hair
   stay in frame at every desktop width; the extra width shows more of the other wrestler's legs), anchor Toccara's crop on the left (both
   heads and upper bodies stay; the narrower tile drops the right edge of the frame). Tablet/phone: Ava and Toccara are not in the same row
   there, so nothing changes below 981px.
   Taina: photo brightened (gamma 0.84 copy, r8z2-) and the caption gradient lightened on the upper part of the tile. */
@media (min-width:981px){
  .t-ava{grid-column:5/9}
  .t-toccara{grid-column:9/13}
  .t-ava img{object-position:right -116px center}
  .t-toccara img{object-position:left -20px center}
}
.wall .t-toccara .cr,.wall .t-toccara .qt{text-wrap:balance}
.wall .t-taina figcaption{background:linear-gradient(0deg,rgba(3,11,28,.95) 0%,rgba(3,11,28,.78) 38%,rgba(3,11,28,.32) 70%,rgba(3,11,28,0) 100%)}

/* G52 (owner): SuperGirl card footer = one big pink pill that leads to the SuperGirl site */
.camp.sgc .sg-pill{margin-top:auto;display:flex;align-items:center;justify-content:center;gap:10px;white-space:nowrap;box-sizing:border-box;min-height:46px;padding:0 10px;border-radius:999px;background:var(--pink);color:#12030b;font-family:var(--cond);font-weight:700;font-size:clamp(12px,3.9vw,16px);letter-spacing:.06em;text-transform:uppercase;line-height:1;transition:transform .2s,background .2s,box-shadow .2s}
.camp.sgc .sg-pill .arr{transition:transform .2s}
.camp.sgc:hover .sg-pill,.camp.sgc:focus-visible .sg-pill{background:#ff4d9b;transform:translateY(-2px);box-shadow:0 12px 30px rgba(255,46,136,.45)}
.camp.sgc:hover .sg-pill .arr,.camp.sgc:focus-visible .sg-pill .arr{transform:translateX(4px)}
@media (min-width:981px){.camp.sgc .sg-pill{min-height:52px;font-size:17px;letter-spacing:.08em;padding:0 16px}}
@media (max-width:360px){.camp.sgc .sg-pill{letter-spacing:.03em;gap:6px;padding:0 6px}}

/* G55 — weight training block inside #life (owner brief 2026-10-01). Square block: copy beside photos on desktop; stacked below 981px. */
.lift{margin-top:80px;display:grid;gap:28px}
.lift-copy .kicker{margin-bottom:16px}
.lift-copy .h3{margin:0}
.lift-copy .lede{margin:18px 0 0}
.lift-parents{display:inline-block;margin:22px 0 0;padding:10px 16px;border-left:4px solid var(--gold);background:rgba(242,183,5,.12);font-family:var(--cond);font-weight:600;font-size:17px;letter-spacing:.06em;text-transform:uppercase;color:#fff}
.lift-ph{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:10px;aspect-ratio:4/3}
.lp{position:relative;margin:0;overflow:hidden;background:var(--ink-2);min-height:0}
.lp.lp-wide{grid-column:1 / -1}
.lp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.lp figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 12px 9px;background:linear-gradient(to top,rgba(3,11,28,.82),rgba(3,11,28,0));font-family:var(--cond);font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:#fff;line-height:1.25}
@media (min-width:981px){
  .lift{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px;align-items:center}
  .lift-ph{grid-template-rows:repeat(2,clamp(200px,15.5vw,270px));aspect-ratio:auto}
  .lp figcaption{font-size:13px;padding:30px 14px 11px}
}

/* G56 mat-row captions: balanced wrap, inset like the left chip */
@media (min-width:761px){
  .mat-row figcaption{max-width:calc(100% - 20px);text-wrap:balance;line-height:1.3}
}
/* phones: 2-up photos are ~110px tall, a long chip cannot fit on them, so the 2nd/3rd chips sit under their photo (photo size unchanged) */
@media (max-width:760px){
  .mat-row figure:nth-child(n+2){aspect-ratio:auto;overflow:visible}
  .mat-row figure:nth-child(n+2) img{height:auto;aspect-ratio:3/2}
  .mat-row figure:nth-child(n+2) figcaption{position:static;display:block;max-width:none;font-size:11px;letter-spacing:.08em;line-height:1.3;text-wrap:balance;padding:6px 8px}
}

/* G57: avoid one-word last lines */
.feat-grid .star p,.nook-venues .nv li{text-wrap:pretty}
@media (max-width:400px){.nook-venues .nv li{text-wrap:balance}}
/* G58 */
.staff-tiles .star p,.feat-grid .star p{text-wrap:pretty}
.star h4,.star p{overflow-wrap:anywhere}
.staff-tiles .star h4{text-wrap:balance}
@media (max-width:340px){.staff-tiles .star h4{font-size:14px}}

/* G61 (10/1): 30 staff tiles = 5 across on tablets so the last row is full (4 across left 2 stragglers) */
@media (min-width:621px) and (max-width:980px){.star-grid.tier-grid.staff-tiles{grid-template-columns:repeat(5,minmax(0,1fr))}}

/* G63 (10/1): legends small row is 4 tiles (Glory, Amos, Welker, Robles): centered on desktop, 2x2 on phones */
@media (min-width:981px){.star-grid.leg-more .star:first-child{grid-column-start:2}}
@media (max-width:620px){.star-grid.leg-more{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* G64: Penn State Olympians band (type only, no marks) */
.psu-band{background:#041E42;color:#fff;border-top:2px solid #fff;border-bottom:2px solid #fff;padding:26px 0}
.psu-in{display:block}
.psu-kick{font-family:var(--cond);font-weight:600;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:#96BEE6;margin-bottom:8px}
.psu-head{font-family:var(--display);font-weight:400;font-size:clamp(22px,5.6vw,30px);line-height:1.08;text-transform:uppercase;margin:0;text-wrap:balance;color:#fff}
.psu-em{color:#96BEE6}
.psu-copy{font-family:var(--body);font-size:15px;line-height:1.5;color:#fff;margin:14px 0 0;max-width:62ch}
@media (min-width:981px){
  .psu-band{padding:24px 0}
  .psu-in{display:grid;grid-template-columns:45fr 55fr;gap:40px;align-items:center}
  .psu-head{font-size:clamp(24px,2.3vw,32px)}
  .psu-copy{margin:0;font-size:15px;max-width:none}
}

/* G65: floating buttons. Ask Coach (injected by embed.js) gets small corners; Register now mirrors it bottom-left. */
#kcacBtn{border-radius:6px!important}
.reg-fab{position:fixed;left:22px;bottom:22px;z-index:2147482997;display:flex;align-items:center;gap:10px;min-height:50px;
  background:var(--gold);color:var(--ink);border:0;font-family:Oswald,Arial,sans-serif;text-transform:uppercase;text-decoration:none;
  letter-spacing:.1em;font-size:14px;font-weight:600;line-height:1;padding:14px 20px 14px 16px;border-radius:6px;
  box-shadow:0 14px 34px -10px rgba(242,183,5,.75);transition:transform .2s,box-shadow .2s}
.reg-fab:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 18px 40px -10px rgba(242,183,5,.85)}
.reg-fab:focus-visible,#kcacBtn:focus-visible{outline:3px solid #fff;outline-offset:3px;box-shadow:0 0 0 6px var(--navy)}
body:has(.nav.open) .reg-fab,body:has(#kcacWrap.kcac-open) .reg-fab{display:none}
@media (max-width:420px){
  .reg-fab,#kcacBtn{bottom:12px!important;font-size:13px!important;letter-spacing:.06em!important;padding:12px 12px 12px 12px!important;gap:7px!important;min-height:46px}
  .reg-fab{left:12px!important}
  #kcacBtn{right:12px!important}
}
.foot{padding-bottom:104px}

/* G67: Jimmy Matas testimonial with expandable full story */
.voice-matas q{font-size:18.5px;font-weight:500;line-height:1.55}
@media (max-width:620px){.voice-matas q{font-size:17px}}
.vmore{margin-top:20px;border-top:1px solid var(--line);padding-top:14px}
.vmore summary{list-style:none;display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:44px;font-family:var(--cond);font-weight:600;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.vmore summary::-webkit-details-marker{display:none}
.vmore summary:hover{color:#fff}
.vmore summary:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.vm-chev{transition:transform .2s}
.vmore[open] .vm-chev{transform:rotate(180deg)}
.vm-close{display:none}
.vmore[open] .vm-open{display:none}
.vmore[open] .vm-close{display:inline}
.vm-body{margin-top:10px;max-width:72ch}
.vm-body p{margin:0 0 14px;font-size:16.5px;line-height:1.6;color:var(--text-dim)}
@media (min-width:981px){.vm-body{columns:2;column-gap:44px;max-width:none}.vm-body p{break-inside:avoid-column}}

/* G68 (10/1): long testimonials show a shorter version on phones */
.voice .q-phone{display:none}
@media (max-width:620px){.voice .q-desk{display:none}.voice .q-phone{display:block}}

/* G69 (10/1): Penn State Wrestling mark at the left of the band (permission confirmed by Ryan 10/1); band navy matched to the mark */
.psu-band{background:#01213F}
.psu-logo{display:block;height:104px;width:auto;margin:0 0 14px}
@media (min-width:981px){.psu-in{grid-template-columns:auto 42fr 52fr;gap:36px}.psu-logo{height:136px;margin:0}}
@media (min-width:981px){.psu-em{display:block}}

/* R10 G74 (10-01): Legends closing block. Desktop 4-up: row 5 = Brandon Slay | narrow gold banner | the four small tiles as a 2x2 group (same row height).
   .leg-all is a 4-col grid and .coach-grid dissolves into it, so everything shares one row height. Below 1181 the old layouts apply. */
.leg-all .leg-more{margin-top:14px}
.coach-cta b{text-wrap:balance}
@media (min-width:981px) and (max-width:1180px){.leg-all .leg-more{grid-template-columns:repeat(4,minmax(0,1fr))}.leg-all .leg-more .star:first-child{grid-column-start:auto}}
@media (min-width:1181px){
  .leg-all{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:20px;margin-bottom:56px}
  .leg-all .coach-grid{display:contents}
  .leg-all .coach-cta{grid-column:span 1;padding:26px 24px}
  .leg-all .coach-cta b{font-size:clamp(27px,2.3vw,34px);max-width:none}
  .leg-all .leg-more{grid-column:span 2;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:14px;margin:0}
  .leg-all .leg-more .star:first-child{grid-column-start:auto}
  .leg-all .leg-more .star{display:grid;grid-template-columns:42% 1fr;grid-template-rows:auto 1fr;align-items:start;align-content:start}
  .leg-all .leg-more .star .ph{grid-column:1;grid-row:1/3;align-self:stretch;aspect-ratio:auto;min-height:0}
  .leg-all .leg-more .star .ph img{position:absolute;inset:0}
  .leg-all .leg-more .star h4{grid-column:2;grid-row:1;font-size:16px;padding:12px 10px 3px}
  .leg-all .leg-more .star p{grid-column:2;grid-row:2;font-size:12.5px;padding:0 10px 10px;align-self:start}
}

/* R10b G78 (10-01): 5-Day family price note sits directly under its row, one line, inside the price card. */
.ptable .fam-main td{border-bottom:0}
.ptable .fam-row td{border-top:0;text-align:left;font-weight:400;font-style:italic;font-size:12.5px;line-height:1.3;color:var(--text-dim);padding:0 0 9px}
.find-grid .ptable tbody .fam-main td{padding-bottom:3px}
.find-grid .ptable tbody .fam-row td{padding-top:0;padding-bottom:7px}
.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main) td{padding-top:11.5px;padding-bottom:11.5px}
.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main):last-child td{padding-bottom:18.5px}
.find-grid .ptable tbody .fam-main td{padding-top:11.5px}
@media (max-width:1180px){.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main) td{padding-top:10px;padding-bottom:10px}.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main):last-child td{padding-bottom:17px}.find-grid .ptable tbody .fam-main td{padding-top:10px}}
@media (max-width:980px){.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main) td{padding-top:12.5px;padding-bottom:12.5px}.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main):last-child td{padding-bottom:19.5px}.find-grid .ptable tbody .fam-main td{padding-top:12.5px}}
@media (max-width:620px){.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main) td{padding-top:10px;padding-bottom:10px}.find-grid .ptable tbody tr:not(.fam-row):not(.fam-main):last-child td{padding-bottom:17px}.find-grid .ptable tbody .fam-main td{padding-top:10px}}

/* ===== G81 (spec 10/1): grade-based lineup ===== */
/* Camp cards: 8 cards = two rows of 4 on desktop, four rows of 2 on tablet, one column on phones. Every row as tall as the tallest card. */
@media (min-width:1181px){.camp-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr}.camp-grid>.camp,.camp-grid>.camp:nth-child(n+4){grid-column:auto}.camp-grid .camp-b{padding:22px 20px 24px}.camp-grid .camp-b h3{font-size:clamp(25px,2.05vw,30px)}.camp-grid .camp-b p{font-size:15px}}
@media (min-width:621px) and (max-width:1180px){.camp-grid{grid-auto-rows:1fr}.camp-grid>.camp:last-child{grid-column:auto}}
.camp-grid .camp-b h3{text-wrap:balance}
/* Find-your-camp: chooser beside the heading on wide screens; the price card runs full width under both */
@media (min-width:1181px){.find-grid.fg81{grid-template-columns:minmax(0,5fr) minmax(0,8fr);grid-template-areas:"head card" "prices prices" "notes notes";row-gap:28px}.find-grid.fg81 .find-head{align-self:start}.find-grid.fg81 .prices{align-self:stretch;padding:30px 34px 26px}}
@media (max-width:1180px){.find-grid.fg81{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "card" "prices" "notes";row-gap:24px}.find-grid.fg81 .prices{align-self:stretch;padding:28px 28px 24px}}
@media (max-width:620px){.find-grid.fg81 .prices{padding:24px 16px 20px}}
.finder.fv2 .fields{grid-template-columns:minmax(0,1fr);align-items:end}
@media (min-width:621px){.finder.fv2 .fields{grid-template-columns:repeat(3,minmax(0,1fr))}}
.finder-result.fr-v2{display:block}
.finder-result.fr-v2[hidden]{display:none}
.fr-list{list-style:none;margin:10px 0 0;padding:0}
.fr-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 20px;align-items:center;padding:16px 0;border-top:1px solid var(--line)}
.finder-result .fr-list h3{font-size:26px;margin:0 0 6px;text-wrap:balance}
.fr-meta{font-family:var(--cond);letter-spacing:.08em;text-transform:uppercase;font-size:14px!important;color:var(--gold)!important}
.fr-price{color:#fff!important;font-weight:600;font-size:15.5px!important}
.fr-note{margin:12px 0 0!important;font-size:15px!important}
.fr-girls{margin:12px 0 0!important;padding-top:12px;border-top:1px solid var(--line);font-size:15px!important;color:#fff!important}
.fr-girls a{color:var(--gold);font-weight:600;white-space:nowrap}
@media (max-width:620px){.fr-list li{grid-template-columns:minmax(0,1fr)}.fr-list .btn{justify-self:start}.finder-result.fr-v2{padding:22px 18px}.finder-result .fr-list h3{font-size:22px}}
/* Price card v2: Camp | Who | Pennsylvania dates | Resident | Commuter; phones fold who + dates under the camp name */
.pv2 .ptable th.pw,.pv2 .ptable th.pd{text-align:left}
.pv2 .ptable td.pw,.pv2 .ptable td.pd{text-align:left;font-weight:500;color:var(--text-dim);font-size:14.5px}
.pv2 .ptable td:first-child .pm{display:none}
.pv2 .ptable .rs{display:block;font-size:11.5px;font-weight:400;color:var(--text-dim);line-height:1.2}
.pv2 .pfoot .note{font-size:14px;margin:12px 0 0}
@media (min-width:981px){.pv2 .ptable td:first-child{width:30%}.pv2 .ptable td.pw{width:22%}.pv2 .ptable td.pd{width:22%}.pv2 .pfoot{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 28px}}
@media (max-width:620px){.pv2 .ptable .pw,.pv2 .ptable .pd{display:none}.pv2 .ptable td:first-child .pm{display:block}.pv2 .ptable .rs{font-size:10.5px}}
/* G81 fixes after screenshot review: price notes plain text; camp-card footers never split a date; SuperGirl pill fits 4-across; chooser selects fit */
.pv2 .ptable .rs{background:none!important;box-shadow:none!important;border:0!important;padding:0!important;margin:2px 0 0!important;width:auto!important;height:auto!important;text-align:right;color:var(--text-dim)!important;letter-spacing:0;text-transform:none}
@media (min-width:1181px){.camp-grid .camp-b .meta{font-size:12px;letter-spacing:.07em;gap:10px}.camp-grid .camp-b .meta span{white-space:nowrap}.camp.sgc .sg-pill{font-size:14px;letter-spacing:.04em;padding:0 10px}.find-grid.fg81{grid-template-columns:minmax(0,4fr) minmax(0,9fr)}.finder.fv2 .fields{grid-template-columns:minmax(0,.8fr) minmax(0,1.3fr) minmax(0,1fr);gap:18px 14px}.finder.fv2 .field select{font-size:15.5px;padding:13px 10px}}
@media (min-width:621px) and (max-width:1180px){.finder.fv2 .fields{grid-template-columns:minmax(0,.8fr) minmax(0,1.3fr) minmax(0,1fr)}}

/* G85: parent FAQ - 7 rows left, 6 rows + "See all" right; link sits under the right column */
.faq-r .faq-more{margin:16px 0 0}
@media (min-width:981px) and (max-width:1200px){.faq-2 summary{font-size:22px}.faq-2 details{padding:20px 0}}
.leg-campers>.kicker{text-wrap:balance}

/* G86: camp tiles in three sizes (Ryan 10/2). Rows: 2 large, 3 medium, 2 small. Desktop >=981 is a 6-column grid; rows stretch to the tallest tile. */
.camp-grid.cg86{grid-auto-rows:auto;align-items:stretch}
.cg86 .camp-b .meta{flex-wrap:wrap}
.cg86 .camp-btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.cg86 .camp-btns .btn{padding:13px 18px;font-size:15px;letter-spacing:.07em;flex:1 1 auto;justify-content:center}
.cg86 .camp.sgc .sg-pill{margin-top:auto}
@media (min-width:981px){
  .camp-grid.cg86{grid-template-columns:repeat(6,minmax(0,1fr))}
  .camp-grid.cg86>.camp.lg{grid-column:span 3}
  .camp-grid.cg86>.camp.md{grid-column:span 2}
  .camp-grid.cg86>.camp.sm{grid-column:span 3;flex-direction:row}
  .cg86 .camp.lg .camp-ph{aspect-ratio:16/10}
  .cg86 .camp.lg .camp-ph .d{font-size:46px;padding:16px 20px 13px}
  .cg86 .camp.lg .camp-ph .d small{font-size:13px}
  .cg86 .camp.lg .camp-b{padding:28px 30px 30px}
  .cg86 .camp.lg .camp-b h3{font-size:clamp(34px,3vw,44px)}
  .cg86 .camp.lg .camp-b p{font-size:16.5px}
  .cg86 .camp.md .camp-b{padding:22px 20px 24px}
  .cg86 .camp.md .camp-b h3{font-size:clamp(24px,2.1vw,30px)}
  .cg86 .camp.md .camp-b p{font-size:15px}
  .cg86 .camp.sm .camp-ph{aspect-ratio:auto;flex:0 0 36%;min-height:100%}
  .cg86 .camp.sm .camp-ph .d{font-size:26px;padding:9px 10px 7px}
  .cg86 .camp.sm .camp-b{padding:18px 20px 18px}
  .cg86 .camp.sm .camp-b h3{font-size:clamp(21px,1.8vw,25px);margin-bottom:8px}
  .cg86 .camp.sm .camp-b p{font-size:14px;margin-bottom:12px}
  .cg86 .camp.sm .meta{font-size:11.5px;letter-spacing:.07em}
}
@media (min-width:621px) and (max-width:980px){
  .camp-grid.cg86{grid-template-columns:repeat(6,minmax(0,1fr))}
  .camp-grid.cg86>.camp.lg{grid-column:span 3}
  .camp-grid.cg86>.camp.md{grid-column:span 3}
  .camp-grid.cg86>.camp.md.k{grid-column:1/-1;flex-direction:row}
  .camp-grid.cg86>.camp.sm{grid-column:span 3}
  .cg86 .camp.k .camp-ph{aspect-ratio:auto;flex:0 0 40%;min-height:100%}
  .cg86 .camp.lg .camp-b h3{font-size:30px}
}
@media (max-width:620px){
  .camp-grid.cg86{grid-template-columns:1fr}
  .camp-grid.cg86>.camp{grid-column:auto}
}
.finder.fv2 .fields{grid-template-columns:minmax(0,1fr)}
@media (min-width:621px){.finder.fv2 .fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1181px){.finder.fv2 .fields{grid-template-columns:minmax(0,.7fr) minmax(0,.8fr) minmax(0,1.2fr) minmax(0,1fr);gap:18px 12px}}

/* G93 technique link in camp cards */
.tlink{display:block;align-self:flex-start;margin:-4px 0 16px;font-family:var(--cond);font-weight:600;font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tlink:hover,.tlink:focus-visible{color:#fff}
.camp.sgc .tlink{color:var(--pink)}
.camp-card .tlink,.fs-body .tlink{color:var(--pink);margin:0 0 14px}

/* ===== G100 (2026-10-02, Ryan): boys.html / youth.html camp pages + footer newsletter and kenchertow.com links row. Appended block; nothing above changed. ===== */
.cp-hero{padding:clamp(56px,7vw,110px) 0 clamp(44px,5vw,70px)}
.cp-hero h1{font-size:clamp(46px,7.4vw,112px);margin:0 0 26px;font-weight:400;max-width:15ch}
.cp-hero .lede{max-width:780px}
.cp-hero .hero-ctas{margin-top:30px}
.cp-note{margin:26px 0 0;max-width:780px;color:var(--text-dim);font-size:15.5px}
.cp-note a,.cp-jump a{color:var(--gold);font-weight:600}
.cp-jump{margin:-6px 0 34px;font-family:var(--cond);font-size:15px;letter-spacing:.06em;color:var(--text-dim)}
.cp-more{margin-top:34px}
.cp-prices{max-width:900px;margin:0 auto}
.cp-prices .hero-ctas{margin-top:24px}
.kc-more{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:24px 56px;align-items:end;border-top:1px solid var(--line);padding:30px 0 34px}
.foot .kc-links{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:flex-end}
.foot .kc-links a{display:inline-block;margin:0;font-family:var(--cond);font-weight:600;font-size:14px;letter-spacing:.12em;text-transform:uppercase}
.kc-news-form form{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:flex-end}
.kc-news-form fieldset{max-width:none!important;border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:10px 12px;flex:1 1 100%}
.kc-news-form .hs-form-field{flex:1 1 200px;margin:0}
.kc-news-form label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px}
.kc-news-form .input{margin:0!important}
.kc-news-form input[type=email],.kc-news-form input[type=text],.kc-news-form input[type=tel]{width:100%!important;box-sizing:border-box;min-height:46px;padding:10px 14px;background:#0a1430;border:1px solid rgba(255,255,255,.22);border-radius:0;color:#fff;font:inherit;font-size:16px}
.kc-news-form input:focus{outline:2px solid var(--gold);outline-offset:1px}
.kc-news-form .hs_submit{flex:0 0 auto}
.kc-news-form .hs-button{min-height:46px;padding:0 24px;background:var(--red);color:#fff;border:0;border-radius:0;font-family:var(--cond);font-weight:600;font-size:15px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.kc-news-form .hs-button:hover{background:#d80f3a}
.kc-news-form .hs-error-msgs{list-style:none;padding:0;margin:6px 0 0;color:#ff9b9b;font-size:13px}
.kc-news-form .legal-consent-container,.kc-news-form .hs-richtext,.kc-news-form .submitted-message{flex:1 1 100%;font-size:13px;color:var(--text-dim)}
.kc-news-form .hs-form-required{color:var(--gold)}
@media (max-width:980px){.kc-more{grid-template-columns:1fr;align-items:start}.foot .kc-links{justify-content:flex-start}}
/* ===== end G100 ===== */

/* ===== RegFox go-live 2026-10-02: per-date Register buttons, Camp options tabs, thanks page ===== */
.regset{display:flex;flex-direction:column;gap:12px;margin-top:16px;width:100%}
.rs-row{min-width:0}
.rs-d{margin:0 0 6px;font-size:13px;line-height:1.35;color:var(--text-dim);font-family:var(--cond);letter-spacing:.05em;text-transform:uppercase}
.rs-d b{color:inherit;font-weight:700}
.rs-btns{display:flex;flex-wrap:wrap;gap:8px}
.rs-btns .btn.reg-btn{flex:1 1 190px;min-width:0;justify-content:center;text-align:center;white-space:normal;padding:11px 12px;font-size:14px;letter-spacing:.04em;line-height:1.2}
.finder-result .regset{margin-top:10px}
.copts .anchor{display:block;position:relative;top:-90px;height:0}
.copts-sub{margin:-6px 0 14px;font-weight:600}
.ctabs{display:flex;gap:8px;margin:0 0 16px}
.ctabs[hidden]{display:none}
.ctabs [role=tab]{flex:1 1 0;min-width:0;padding:14px 6px;font-family:var(--cond);font-weight:700;font-size:18px;letter-spacing:.06em;text-transform:uppercase;border:2px solid var(--navy);background:transparent;color:var(--navy);border-radius:10px;cursor:pointer}
.ctabs [role=tab][aria-selected=true]{background:var(--navy);color:#fff}
.ctabs [role=tab]:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.cp-h{margin:14px 0 6px;font-family:var(--cond);font-size:15px;letter-spacing:.1em;text-transform:uppercase;color:var(--navy)}
.cp-h span{font-weight:400;letter-spacing:.04em;text-transform:none;color:var(--text-dim);margin-left:6px}
.otable td{vertical-align:middle}
.pill{display:inline-flex;align-items:center;justify-content:center;padding:7px 14px;border:2px solid var(--navy);border-radius:999px;font-weight:700;color:var(--navy);text-decoration:none;white-space:nowrap;line-height:1.1;transition:background .15s,color .15s}
.pill:hover,.pill:focus-visible{background:var(--navy);color:#fff}
.pill .pl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.otable .rs{margin-top:5px!important;font-size:12.5px!important;font-weight:600!important;line-height:1.25!important}
@media (max-width:620px){
  .otable thead{display:none}
  .otable tr{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;border-top:1px solid var(--line);padding:10px 0}
  .otable td{border:0!important;padding:0!important;text-align:left!important}
  .otable td:first-child{grid-column:1/-1;width:auto!important}
  .pill{display:flex;width:100%;padding:9px 8px;font-size:14px;white-space:normal}
  .pill .pl{position:static;width:auto;height:auto;clip:auto;margin-right:4px}
  .otable .rs{text-align:center!important}
}
.thanks{padding:72px 0 88px}.thanks .lede{max-width:640px}.thanks-cta{margin:26px 0}
/* camp options sit on the dark section: light-on-dark tabs and pills (fix after 2026-10-02 screenshots) */
.copts .ctabs [role=tab]{border-color:var(--gold);color:#fff;background:transparent}
.copts .ctabs [role=tab][aria-selected=true]{background:var(--gold);color:#0b1222}
.copts .cp-h{color:var(--gold)}
.copts .pill{border-color:var(--gold);color:#fff}
.copts .pill:hover,.copts .pill:focus-visible{background:var(--gold);color:#0b1222}
.copts .otable .rs{color:#c9cfdb!important}
@media (max-width:620px){.ctabs{gap:6px}.ctabs [role=tab]{font-size:14px;letter-spacing:.01em;padding:12px 2px}}

/* G101 2026-10-02: ONE Register button per camp tile (opens the picker in camp-links.js; JS off = link to Camp options) */
.camp-b .camp-btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.camp-b .camp-btns .btn{padding:13px 18px;font-size:15px;letter-spacing:.07em;flex:1 1 auto;justify-content:center}

/* G103/G104 2026-10-02: Girls tile - red Register button at the bottom like every tile; "Visit SuperGirl" is a hot-pink square on the photo
   (lower right, clear of her face, the FOR HER shirt and the GIRLS label); on phones it becomes a full-width pink band above Register */
.camp.sgc .camp-btns{margin-top:auto}
.camp.sgc .tlink+.sg-band{margin-top:4px}
.sg-box,.sg-band{display:flex;flex-direction:column;justify-content:center;background:var(--pink);color:#12030b;text-decoration:none;transition:transform .2s,box-shadow .2s,background .2s}
.sg-box:hover,.sg-band:hover,.sg-box:focus-visible,.sg-band:focus-visible{background:#ff4d9b;box-shadow:0 14px 34px rgba(255,46,136,.5)}
.sgb-k{font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.22em;text-transform:uppercase}
.sgb-w{font-family:var(--display);font-size:34px;line-height:.95;text-transform:uppercase;letter-spacing:.01em;color:#12030b}
.sgb-w b{font-weight:400;color:#fff}
.sgb-l{font-family:var(--body);font-weight:600;font-size:13px;line-height:1.25;margin-top:6px}
.sgb-a{font-size:22px;line-height:1;margin-top:auto;align-self:flex-end;transition:transform .2s}
.sg-box:hover .sgb-a,.sg-band:hover .sgb-a{transform:translateX(4px)}
/* G104 (Ryan chose the panel): full-height pink panel down the right edge of the photo; wordmark sized to the panel so it never clips */
.sg-box{position:absolute;z-index:2;top:0;right:0;bottom:0;width:min(34%,240px);padding:20px 14px;justify-content:flex-end;gap:2px;container-type:inline-size}
.sg-box .sgb-w{white-space:nowrap;font-size:min(40px,calc(100cqw / 4.7))}
.sg-box .sgb-a{margin-top:14px;align-self:flex-start;font-size:30px}
.sg-band{display:none}
@media (max-width:600px){
  .sg-box{display:none}
  .sg-band{display:grid;grid-template-columns:1fr auto;grid-template-areas:"k a" "w a" "l a";align-items:center;column-gap:12px;padding:16px 18px;margin:6px 0 14px}
  .sg-band .sgb-k{grid-area:k}.sg-band .sgb-w{grid-area:w;font-size:30px}.sg-band .sgb-l{grid-area:l;margin-top:4px}.sg-band .sgb-a{grid-area:a;margin:0;font-size:28px;align-self:center}
}

/* G105 (2026-10-02, Ryan): like elements share a line across every tile row. The paragraph grows to take the spare height, so the
   technique link, the divider + meta line and Register stack from the tile bottom; a tile with no link leaves that slot empty.
   The Girls tile carries an invisible meta line so its link and button sit level with the 12-day tile's. */
.cg86 .camp-b>p{flex:1 0 auto}
.cg86 .camp-b .meta{margin-top:0}
.cg86 .camp.sgc .camp-btns{margin-top:16px}
.meta-ghost{visibility:hidden}
@media (max-width:600px){.camp-b .meta.meta-ghost{display:none}}

/* G106 (2026-10-02) editor pass: no lone words or numbers on a last line; headings and short lines balance, paragraphs avoid a one-word last line */
h1,h2,h3,h4,.display,.kicker,.lede,figcaption,figcaption span,.meta,.tlink,.btn,td,th,.where,.kcp h2,.kcp-o,.tag,.sc-tag,.hero-camps li{text-wrap:balance}
p,li,dd,blockquote,.ans p,.kcp p{text-wrap:pretty}

/* ===== G110 (2026-10-02): live-audit fixes (LIVE-AUDIT-20261002.md). Appended block. ===== */
/* #1 "FIND YOUR CAMP." fits its column at every width; the period stays clear of the chooser panel */
.find-head{min-width:0}
.find-head .h2{font-size:clamp(52px,5.6vw,76px)}
/* #4a Girls tab: both halves share column widths so Resident/Commuter line up */
#panel-girls .otable{table-layout:fixed;width:100%}
#panel-girls .otable th:nth-child(1){width:56%}#panel-girls .otable th:nth-child(2),#panel-girls .otable th:nth-child(3){width:22%}
/* #5 phones: camp cards may shrink; the curriculum link may wrap (no sideways wiggle) */
@media (max-width:620px){.camp-grid{grid-template-columns:minmax(0,1fr)}.camp{min-width:0}.tlink{white-space:normal}}
/* #6 price pills: thumb-size */
a.pill.reg-pill{min-height:44px}
/* #7 tiny text */
@media (max-width:980px){.star-grid .star p,.tier-grid:not(.feat-grid) .star p,.leg-all .leg-more .star p{font-size:13px}}
.feat-grid .star p{font-size:15px}
@media (max-width:980px){.feat-grid .star p{font-size:13.5px}}
@media (max-width:620px){.feat-grid .star p{font-size:13px}}
.lc-list.lc-photos li>span{font-size:12px}
.pv2 .ptable .rs,.ptable small.rs,small.rs{font-size:13px}
/* #8 button labels never leave the arrow alone on a line */
.btn{white-space:nowrap}
/* #12 thin text links: 40px+ tap height on phones (layout unchanged) */
@media (max-width:620px){.topbar a{display:inline-block;padding-block:10px;margin-block:-10px}.tlink{padding-block:9px;margin-block:-9px 7px}.foot a:not(.fine a){padding-block:7px;margin-block:-7px 1px}}
/* #9 Ask Coach: short label under 900px, never wraps */
@media (max-width:899px){#kcacBtn{white-space:nowrap}#kcacBtn .kcac-label{font-size:0!important;letter-spacing:0!important}#kcacBtn .kcac-label::after{content:"Ask Coach";font-size:13px;letter-spacing:.06em}}
/* #10 Ask Coach close: 44x44 tap area (icon unchanged) */
#kcacClose{min-width:44px!important;min-height:44px!important;display:flex!important;align-items:center;justify-content:center}
/* #3 floating Register: on desktop it waits until the hero has scrolled away (main.js/sg.js add .show), and sits in the right-hand stack above Ask Coach. Phones unchanged. */
@media (min-width:900px){.reg-fab{left:auto!important;right:22px;bottom:88px}.fab-io .reg-fab:not(.show){opacity:0;visibility:hidden;pointer-events:none}.fab-io .reg-fab{transition:opacity .25s,visibility .25s,transform .2s,box-shadow .2s}}

/* #7: the table caption rule above uses !important, so this one must too */
.otable .rs{font-size:13px!important}
/* G111 camp options grouped by camp: one block per camp, dates as sub-rows; parent line on Kids Training / Future Champions */
.otable{table-layout:fixed;width:100%}
.otable th.c-n,#panel-girls .otable th.c-n{width:36%}.otable th.c-d,#panel-girls .otable th.c-d{width:20%;text-align:left}.otable th.c-r,.otable th.c-c,#panel-girls .otable th.c-r,#panel-girls .otable th.c-c{width:22%}
.otable td.cn{text-align:left;font-weight:500;vertical-align:top;padding-right:10px}
.otable td.cd{text-align:left;font-weight:500;font-size:14.5px;color:var(--text-dim);padding-left:14px}
.otable tbody.cg tr+tr td{border-top:0;padding-top:2px}
.otable tbody.cg tr:not(:last-child) td:not(.cn){padding-bottom:6px}
.ptable td small.pline{display:block;font-size:14px;font-weight:400;line-height:1.4;margin-top:6px;color:var(--text-dim)}
@media (max-width:620px){
  .otable,.otable tbody{display:block}
  .otable tbody.cg{border-top:1px solid var(--line);padding:10px 0}
  .otable tbody.cg tr{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;border-top:0;padding:3px 0}
  .otable td.cn,.otable td.cd{grid-column:1/-1}
  .otable td.cd{font-size:13px;padding-top:4px!important}
  .ptable td small.pline{font-size:14px}
}
/* G111 HubSpot newsletter overlay CTA suppressed (Ryan: "turn it off"; CTA still published in HubSpot) */
#hs-web-interactives-top-anchor,#hs-web-interactives-top-push-anchor,#hs-interactives-modal-overlay,[id^="hs-overlay-cta"]{display:none!important}

/* G113 — the "camper + parent" / "parent + child room" caption under a price pill shares the class name
   of the stat tiles (.rs), which paints a dark gradient over it. Reset it so the caption is readable. */
.ptable small.rs,td small.rs,small.rs{position:static;overflow:visible;background:none;display:block;margin:5px 0 0;padding:0;font-size:13px;line-height:1.3;color:var(--text-dim);text-align:center;letter-spacing:.01em}
.ptable small.rs::after,td small.rs::after,small.rs::after{display:none;content:none}
