/* Funnel visual v3 (SPEC-FUNNEL-VISUAL-V3) for test.html: one font, coach demo tiles on the test intros,
   paywall 1 as a full scrollable page (Now vs Your goal, per-day prices, FAQ, guarantee) and paywall 2 per day.
   Loaded after app.css, so it only overrides. Colours only from CSS vars (css/theme.css), dark mode follows. */

/* ---------- ONE FONT. Inter 700-800 for headings and hero numbers, tabular figures ---------- */
.scr h1{font-size:clamp(1.8rem,1.5rem + 1.5vw,2.4rem)}
.scr--q h1{font-size:clamp(1.7rem,1.45rem + 1.2vw,2.2rem)}
.cd{font-weight:800}
.timer b,.done-num b,.srt__score b,.res-num,.pw2-price b,.guess__num,.proof__n,.tchart__n{font-weight:800;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.agepick__num input{font-weight:800;letter-spacing:-.045em}
.namecard__n{font-weight:750;letter-spacing:-.025em}
.res-line{font-weight:650;letter-spacing:-.015em}

/* ---------- TEST INTROS: a moving coach demo loop replaces the setup pictogram ---------- */
.tdemo{margin:0;display:grid;justify-items:center;gap:8px}
.tdemo__tile{width:min(100%,300px);aspect-ratio:4/5;border-radius:var(--r-xl)}
.tdemo__tag{font:600 .7rem/1.3 var(--f-text);letter-spacing:.12em;color:var(--ink-soft);text-align:center}

/* ---------- PAYWALL 1, a full page that scrolls under a sticky bar ---------- */
.sheet--page{display:block;justify-items:normal;align-items:normal;padding:0;background:var(--bg);overscroll-behavior:contain}
.sheet--page .pwpage{width:min(100%,34rem);margin:0 auto;padding:18px 18px 48px;gap:16px;border:0;border-radius:0;box-shadow:none;animation:none}
.sheet--page h2 .nobr{white-space:nowrap}
.sheet--page h2{padding-right:0;text-wrap:balance;font-size:clamp(1.7rem,1.4rem + 1.3vw,2.2rem)}
.pwbar{position:sticky;top:0;z-index:3;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px max(14px,calc(50% - 17rem + 14px));border-bottom:1px solid var(--line);background:color-mix(in oklab,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.pwbar__x{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);font:300 1.6rem/1 var(--f-text);cursor:pointer}
.pwbar__ba{margin:0;text-align:center;font:700 .95rem/1.2 var(--f-text);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pwbar__go{min-height:42px;padding:.55em 1.05em;font-size:.92rem}

/* Now vs Your goal */
.nvg{display:grid;grid-template-columns:minmax(0,1fr) 16px minmax(0,1fr);column-gap:0;row-gap:10px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--sh-card)}
.nvg>*{grid-column:1}
.nvg>.is-goal{grid-column:3}
.nvg>.nvg__arrow{grid-column:2}
.nvg__h{margin:0;text-align:center;font:700 .74rem/1 var(--f-text);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.nvg__h.is-goal{color:var(--good-text)}
.nvg__ph{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;border-radius:var(--r-lg);background:var(--demo-bg)}
.nvg__ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.nvg__ph.is-goal{box-shadow:0 0 0 2px var(--good)}
.nvg__arrow{position:relative;z-index:1;justify-self:center;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--ink);color:var(--bg);box-shadow:var(--sh-card)}
.nvg__arrow svg{width:18px;height:18px}
.nvg__ba{margin:0;display:grid;justify-items:center;gap:4px}
.nvg__ba small,.nvg__row small{font:600 .68rem/1.2 var(--f-text);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
.nvg__ba b{font:800 2.6rem/1 var(--f-display);letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.nvg__ba.is-goal b{color:var(--good-text)}
.nvg__lv{align-self:start;display:grid;gap:10px;padding:0 4px}
.nvg__row{margin:0;display:grid;gap:5px}
.nvg__row em{font-style:normal;font-weight:600;font-size:.86rem;line-height:1.2}
.lvbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}
.lvbar i{height:6px;border-radius:3px;background:var(--line)}
.lvbar i.on{background:var(--ink-soft)}
.nvg__lv.is-goal .lvbar i.on{background:var(--good)}
.nvg__note{margin:-6px 0 0;text-align:center;font-size:.82rem;color:var(--ink-soft)}

/* coach strip, item 5 of the list */
.pw-list li.pw-coach>span{display:grid;min-width:0;flex:1}
.pw-coach__row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.pw-coach__row[hidden]{display:none}
.pw-coach__m{display:grid;gap:5px;min-width:0}
.pw-coach__tile{aspect-ratio:4/5;border-radius:var(--r-md)}
.pw-coach__m small{font-size:.76rem;line-height:1.25;color:var(--ink-soft)}

/* plans: the price per day is the biggest number, both blocks in sync */
.pw-buy{display:grid;gap:12px;scroll-margin-top:74px}
.plans--day{grid-template-columns:minmax(0,1fr);gap:14px;margin-top:8px}
.plans--day .plan{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"dot why day" "dot bill day";align-items:center;column-gap:12px;row-gap:3px;padding:18px 16px 16px;border-radius:var(--r-lg)}
.plans--day .plan.is-on{border-color:var(--good);box-shadow:0 0 0 1px var(--good);background:var(--good-tint)}
.plan__dot{grid-area:dot;width:22px;height:22px;border-radius:50%;border:2px solid var(--line-strong);background:var(--surface)}
.plan.is-on .plan__dot{border-color:var(--good);background:var(--good);box-shadow:inset 0 0 0 4px var(--surface)}
.plan__why{grid-area:why;font-weight:650;font-size:.97rem;line-height:1.25}
.plan__bill{grid-area:bill;font-size:.84rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}
.plan__day{grid-area:day;display:grid;justify-items:end;gap:3px}
.plan__day b{font:800 1.6rem/1 var(--f-display);letter-spacing:-.04em;font-variant-numeric:tabular-nums;white-space:nowrap}
.plan__day small{font-size:.76rem;color:var(--ink-soft)}
.plans--day .plan__tag{left:14px}
.pw-renew{margin:-4px 0 0;text-align:center;font-size:.86rem;line-height:1.4;color:var(--ink-soft)}

/* FAQ, same look as the landing FAQ */
.pw-faq{display:grid;gap:4px;margin-top:10px}
.pw-faq h3{font-size:1.35rem;font-weight:750;letter-spacing:-.02em;padding-bottom:8px;border-bottom:1px solid var(--ink)}
.pw-faq details{border-bottom:1px solid var(--line)}
.pw-faq summary{position:relative;display:flex;align-items:center;min-height:56px;padding:14px 32px 14px 0;font-weight:600;font-size:1rem;line-height:1.35;cursor:pointer;list-style:none}
.pw-faq summary::-webkit-details-marker{display:none}
.pw-faq summary::before,.pw-faq summary::after{content:"";position:absolute;right:4px;top:50%;width:14px;height:1.5px;background:var(--ink)}
.pw-faq summary::after{width:1.5px;height:14px;right:10.25px;margin-top:-6.25px;transition:opacity .2s var(--ease-out)}
.pw-faq details[open] summary::after{opacity:0}
.pw-faq details p{margin:0;padding:0 0 16px;color:var(--ink-soft);line-height:1.5}

/* guarantee */
.pw-guar{display:grid;justify-items:center;gap:8px;margin-top:8px;padding:24px 18px;text-align:center;border:1px solid var(--line);border-radius:var(--r-xl);background:var(--good-tint)}
.pw-guar__ic{width:40px;height:40px}
.pw-guar h3{font-size:1.2rem;font-weight:750;letter-spacing:-.015em}
.pw-guar p{margin:0;color:var(--ink-soft);line-height:1.5}
.pw-guar a{color:var(--ink)}
.pw-guar__more{font-size:.88rem}

/* ---------- PAYWALL 2, per day ---------- */
.pw2-ba{margin:0;text-align:center;font:700 1rem/1.3 var(--f-text);font-variant-numeric:tabular-nums;color:var(--good-text)}
.pw2-price{padding:14px 0 4px;border-bottom:0}
.pw2-price b{font-weight:800;font-size:clamp(2.4rem,1.9rem + 2.4vw,3.2rem)}
.pw2-bill{margin:0;padding-bottom:12px;border-bottom:1px solid var(--line);text-align:center;font-size:.92rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}
.pw2-bill s{margin-right:4px}

@media (min-width:700px){.sheet--page .pwpage{padding-top:28px}}

/* ---------- QUIZ PHOTOS (SPEC-QUIZ-VISUAL-V4): real people instead of pictograms and generic icons ---------- */
/* q-sex, two photo tiles in the landing .agetile style (site.css), the selection circle in the label bar */
.sextiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:0;border:0}
.sextile{cursor:pointer}
.sextile__pic{position:absolute;left:20%;top:12%;width:60%;height:76%;--pic:var(--ink-soft);--pic-soft:var(--ink-faint);--pic-bg:var(--demo-bg);--pic-dot:var(--good);--pic-floor:var(--line-strong)}
.sextile:has(input:focus-visible){outline:3px solid var(--good);outline-offset:3px}
.sextile__dot{flex:none;width:26px;height:26px;margin-right:4px;border-radius:50%;border:2px solid var(--on-brand-deep);transition:background-color .15s var(--ease-out),border-color .15s var(--ease-out)}
.sextile.is-on .sextile__dot{border-color:var(--good);background:var(--good);box-shadow:inset 0 0 0 4px var(--brand-deep)}
/* q-goal, a 64 px photo in place of the line icon (icon stays until the photo exists) */
.qopt__ph{flex:none;width:64px;height:64px;border-radius:var(--r-md);object-fit:cover;background:var(--demo-bg)}
.qopt:has(.qopt__ph){padding-block:10px;padding-left:10px}
/* q-socks, q-floor, a full-width 4:3 photo in place of the pictogram box */
.qphoto{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-xl);background:var(--demo-bg)}
/* q-diag, q-proof, 56 px coach photo thumbnails zoomed onto the body (--fo), pictogram until the photo exists */
.qthumb{display:block;width:56px;height:56px;border-radius:var(--r-md);overflow:hidden;background:var(--demo-bg)}
span.qthumb img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--fo,50% 50%);transform:scale(1.2);transform-origin:var(--fo,50% 50%)}
svg.qthumb--pic{padding:3px 7px;border:1px solid var(--line);background:var(--surface)}
