/* ───────────────────────────────────────────────────
   DeepSoul homepage, below the hero: v2 (11 Oct 2026).
   From the research + strategist blueprint. Loaded after home-light.css.
   Calm, spacious, one dark band (Community), hairlines instead of boxes.
   ─────────────────────────────────────────────────── */
body.theme-light {
  --v2-ink: #2B2150;
  --v2-muted: #5A5078;
  --v2-violet: #6A47C9;
  --v2-deep: #4A2F9E;
  --v2-lav: #E4D6FF;
  --v2-hair: rgba(43, 33, 80, 0.10);
  --v2-serif: 'Forum', Georgia, serif;
}

/* the old alternating lavender bands and section spacing no longer apply */
body.theme-light #sections-root { padding-top: 0; }
body.theme-light #sections-root #how, body.theme-light #sections-root #screens, body.theme-light #sections-root #reviews, body.theme-light #sections-root #faq { background: var(--lh-page); }

.v2-wrap { max-width: 1320px; margin: 0 auto; padding: 0 40px; box-sizing: border-box; }
body.theme-light .v2-sec { padding: 128px 0; border-top: 1px solid var(--v2-hair); }
body.theme-light .v2-sec#how { border-top: 0; padding-top: 112px; }
body.theme-light .v2-center { text-align: center; }

body.theme-light .v2-eyebrow { margin: 0 0 16px; font-size: 13px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--v2-violet); }
body.theme-light #sections-root .v2-h2 { margin: 0 0 20px; font-family: var(--v2-serif); font-weight: 400; font-size: clamp(36px, 4.4vw, 52px); line-height: 1.08; letter-spacing: -0.01em; color: var(--v2-ink); text-wrap: balance; }
body.theme-light .v2-close .v2-h2 { margin: 0 0 14px; font-family: var(--v2-serif); font-weight: 400; font-size: clamp(36px, 4.4vw, 52px); line-height: 1.08; color: var(--v2-ink); }
body.theme-light .v2-lead { margin: 0; font-size: 19px; line-height: 1.6; color: var(--v2-muted); max-width: 470px; text-wrap: pretty; }
body.theme-light .v2-sub { margin: 0; font-size: 17px; line-height: 1.6; color: var(--v2-muted); }
body.theme-light .v2-sub a, body.theme-light .v2-note a { color: var(--v2-deep); }
body.theme-light .v2-h3 { margin: 112px 0 36px; font-family: var(--v2-serif); font-weight: 400; font-size: 36px; line-height: 1.15; color: var(--v2-ink); }
body.theme-light .v2-stars { color: var(--v2-violet); letter-spacing: 2px; }

/* ── 1 · Promise panel ── */
body.theme-light .v2-promise {
  position: relative; z-index: 3; box-sizing: border-box;
  width: calc(100% - 80px); max-width: 1240px; margin: -52px auto 0;
  background: #fff; border-radius: 20px; box-shadow: 0 30px 60px -30px rgba(74, 47, 158, 0.25);
}
body.theme-light .v2-proof { margin: 0; padding: 16px 24px; text-align: center; font-size: 15px; font-weight: 500; color: var(--v2-muted); border-bottom: 1px solid rgba(43, 33, 80, 0.08); }
body.theme-light .v2-proof span[aria-hidden] { margin: 0 6px; color: #B9B2CC; }
body.theme-light .v2-promise__row { display: grid; grid-template-columns: repeat(3, 1fr); }
body.theme-light .v2-promise__card { display: flex; flex-direction: column; gap: 8px; padding: 30px 34px 32px; text-decoration: none; color: inherit; }
body.theme-light .v2-promise__card + .v2-promise__card { border-left: 1px solid rgba(43, 33, 80, 0.08); }
body.theme-light .v2-promise__title { display: flex; align-items: center; gap: 8px; font-family: var(--v2-serif); font-size: 25px; line-height: 1.2; color: var(--v2-ink); }
body.theme-light .v2-promise__title svg { width: 16px; height: 16px; color: var(--v2-violet); stroke-width: 2.2; transition: transform 200ms ease; }
body.theme-light .v2-promise__card:hover .v2-promise__title svg { transform: translateX(3px); }
body.theme-light .v2-promise__text { font-size: 16px; line-height: 1.55; color: var(--v2-muted); }

/* ── Phones (owner's frame, measured screen hole) ── */
.v2-phone { position: relative; width: 300px; aspect-ratio: 736 / 1543; flex: none; filter: drop-shadow(0 30px 40px rgba(40, 20, 90, 0.28)); }
.v2-phone::after { content: ''; position: absolute; inset: 0; background: url('assets/phone-frame.webp') center / 100% 100% no-repeat; pointer-events: none; }
.v2-phone img { position: absolute; left: 3.70%; top: 1.35%; width: 92.47%; height: 97.30%; max-width: none; border-radius: 13.6% / 6.2%; object-fit: cover; object-position: top; background: #0B0820; }
.v2-phone--md { width: 270px; }

/* ── Split layouts ── */
body.theme-light .v2-split { display: grid; grid-template-columns: 46fr 54fr; align-items: center; gap: 64px; }
body.theme-light .v2-split__media { display: flex; justify-content: center; position: relative; isolation: isolate; }
body.theme-light .v2-split__media::before { content: ''; position: absolute; inset: 10% 5%; background: radial-gradient(closest-side, rgba(184, 156, 240, 0.35), transparent); filter: blur(10px); z-index: -1; }
body.theme-light .v2-split--flip .v2-split__text { order: 1; }
body.theme-light .v2-split:has(.v2-duo) { grid-template-columns: 1fr auto; }
body.theme-light .v2-split--flip:has(.v2-duo) { grid-template-columns: auto 1fr; }
body.theme-light .v2-duo .v2-phone--lg { width: 270px; }
body.theme-light .v2-duo .v2-phone--md { width: 232px; }

/* ── 2 · Sanctuary steps ── */
body.theme-light .v2-steps { list-style: none; margin: 48px 0 0; padding: 0; display: flex; flex-direction: column; gap: 28px; }
body.theme-light .v2-steps li { display: flex; gap: 22px; align-items: flex-start; }
body.theme-light .v2-steps__art { flex: none; width: 88px; height: 88px; border-radius: 50%; background: #F3EDFB; box-shadow: inset 0 0 0 2px var(--v2-lav); display: grid; place-items: center; }
body.theme-light .v2-steps__art img { max-width: 58px; max-height: 58px; width: auto; height: auto; }
body.theme-light .v2-steps__body { display: flex; flex-direction: column; gap: 6px; font-size: 16.5px; line-height: 1.55; color: var(--v2-muted); max-width: 410px; padding-top: 6px; }
body.theme-light .v2-steps__body b { font-family: var(--v2-serif); font-weight: 400; font-size: 25px; line-height: 1.2; color: var(--v2-ink); }
body.theme-light .v2-merge { display: flex; align-items: flex-end; gap: 10px; margin-top: 12px; }
body.theme-light .v2-merge img { height: 34px; width: auto; }
body.theme-light .v2-merge .v2-merge__out { height: 44px; }
body.theme-light .v2-merge i { font-style: normal; color: var(--v2-violet); opacity: 1; font-size: 22px; line-height: 1; padding-bottom: 16px; }
body.theme-light .v2-counter { margin-top: 96px; padding-top: 40px; position: relative; text-align: center; opacity: 0; transition: opacity 600ms ease; }
body.theme-light .v2-counter::before { content: ''; position: absolute; top: 0; left: 40px; right: 40px; height: 1px; background: var(--v2-hair); }
body.theme-light .v2-counter.is-in { opacity: 1; }
body.theme-light .v2-counter[hidden] { display: block; visibility: hidden; }
body.theme-light .v2-counter__num { display: block; font-family: var(--v2-serif); font-weight: 400; font-size: clamp(44px, 5vw, 64px); line-height: 1; color: var(--v2-ink); font-variant-numeric: tabular-nums lining-nums; }
body.theme-light .v2-counter__label { display: block; margin-top: 10px; font-size: 16px; color: var(--v2-muted); }

/* ── 3 · Community (dark band) ── */
body.theme-light .v2-dark { background: #2B2150 !important; border-top: 0; padding: 140px 0 120px; color: #CCC8D7; }
body.theme-light .v2-dark .v2-eyebrow { color: var(--v2-lav); }
body.theme-light #sections-root .v2-dark .v2-h2 { color: #F8F5F0; }
body.theme-light .v2-dark .v2-lead { color: #CCC8D7; }
body.theme-light .v2-grid4 { list-style: none; margin: 48px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 28px 32px; }
body.theme-light .v2-grid4 li { padding-top: 22px; border-top: 1px solid rgba(248, 245, 240, 0.14); font-size: 15.5px; line-height: 1.55; color: #CCC8D7; display: flex; flex-direction: column; gap: 6px; }
body.theme-light .v2-grid4 b { font-size: 17px; font-weight: 600; color: #F8F5F0; line-height: 1.35; }
body.theme-light .v2-dark .v2-split__media::before { background: radial-gradient(closest-side, rgba(106, 71, 201, 0.45), transparent); }
body.theme-light .v2-duo { gap: 24px; align-items: flex-start; }
body.theme-light .v2-duo__back { margin-top: 56px; }
body.theme-light .v2-leagues { margin-top: 96px; text-align: center; }
body.theme-light .v2-leagues p { margin: 0 auto 28px; max-width: 560px; font-size: 16.5px; line-height: 1.6; color: #CCC8D7; }
body.theme-light .v2-leagues__row { display: flex; justify-content: center; align-items: center; gap: 4px; flex-wrap: nowrap; }
body.theme-light .v2-leagues__row img { height: 96px; width: auto; }

/* ── 4 · Library + built-in tools ── */
body.theme-light .v2-lock { display: flex; align-items: center; gap: 10px; margin: 20px 0 0; font-size: 16px; color: var(--v2-muted); }
body.theme-light .v2-lock svg { width: 16px; height: 16px; color: var(--v2-violet); flex: none; }
body.theme-light .v2-tools { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--v2-hair); }
body.theme-light .v2-tools li { padding: 30px 28px 32px; border-bottom: 1px solid var(--v2-hair); display: flex; flex-direction: column; gap: 8px; font-size: 16px; line-height: 1.55; color: var(--v2-muted); }
body.theme-light .v2-tools li:not(:nth-child(3n + 1)) { border-left: 1px solid var(--v2-hair); }
body.theme-light .v2-tools li:nth-child(3n + 1) { padding-left: 0; }
body.theme-light .v2-tools b { font-family: var(--v2-serif); font-weight: 400; font-size: 24px; line-height: 1.2; color: var(--v2-ink); }
body.theme-light .v2-foot { margin: 28px 0 0; font-size: 15px; line-height: 1.6; color: var(--v2-muted); }

/* ── 5 · Reviews ── */
body.theme-light .v2-feature { margin: 64px auto 0; max-width: 860px; }
body.theme-light .v2-stars--lg { font-size: 18px; letter-spacing: 4px; }
body.theme-light .v2-feature blockquote { margin: 14px 0 16px; font-family: var(--v2-serif); font-size: 34px; line-height: 1.35; color: var(--v2-ink); text-wrap: balance; }
body.theme-light .v2-feature figcaption, body.theme-light .v2-reviews figcaption { font-size: 14.5px; color: var(--v2-muted); }
body.theme-light .v2-feature b, body.theme-light .v2-reviews b { color: var(--v2-ink); font-weight: 600; }
body.theme-light .v2-reviews { margin-top: 72px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; text-align: left; }
body.theme-light .v2-reviews figure { margin: 0; padding: 30px 30px 26px; background: #fff; border-radius: 18px; border: 1px solid rgba(43, 33, 80, 0.08); display: flex; flex-direction: column; }
body.theme-light .v2-reviews .v2-stars { font-size: 14px; }
body.theme-light .v2-reviews blockquote { margin: 12px 0 18px; font-size: 16.5px; line-height: 1.6; color: #3A3060; flex: 1; }
body.theme-light .v2-link { display: inline-flex; align-items: center; gap: 6px; margin-top: 36px; font-size: 16px; font-weight: 600; color: var(--v2-deep); text-decoration: none; }
body.theme-light .v2-link svg { width: 16px; height: 16px; }
body.theme-light .v2-link:hover { text-decoration: underline; text-underline-offset: 4px; }
body.theme-light .v2-note { margin: 80px auto 0; max-width: 620px; padding-top: 40px; position: relative; }
body.theme-light .v2-note::before { content: ''; position: absolute; top: 0; left: 50%; width: 48px; height: 1px; background: rgba(43, 33, 80, 0.2); transform: translateX(-50%); }
body.theme-light .v2-note p { margin: 0; font-size: 19px; line-height: 1.65; color: var(--v2-ink); }
body.theme-light .v2-note .v2-note__sig { margin-top: 14px; font-size: 15px; color: var(--v2-muted); }

/* ── 6 · FAQ ── */
body.theme-light .v2-faq { display: grid; grid-template-columns: 34fr 66fr; gap: 48px; align-items: start; }
body.theme-light .v2-faq__list { border-bottom: 1px solid rgba(43, 33, 80, 0.12); }
body.theme-light .v2-faq__list details { border-top: 1px solid rgba(43, 33, 80, 0.12); }
body.theme-light .v2-faq__list summary { list-style: none; cursor: pointer; position: relative; padding: 24px 44px 24px 0; font-size: 19px; font-weight: 600; line-height: 1.4; color: var(--v2-ink); }
body.theme-light .v2-faq__list summary::-webkit-details-marker { display: none; }
body.theme-light .v2-faq__list summary::before, body.theme-light .v2-faq__list summary::after { content: ''; position: absolute; right: 6px; top: 50%; width: 16px; height: 1.75px; background: var(--v2-ink); transition: transform 220ms ease; }
body.theme-light .v2-faq__list summary::after { transform: rotate(90deg); }
body.theme-light .v2-faq__list details[open] summary::after { transform: rotate(180deg); }
body.theme-light .v2-faq__list details[open] summary::before { transform: rotate(180deg); }
body.theme-light .v2-faq__list details p { margin: -6px 0 26px; max-width: 640px; font-size: 17px; line-height: 1.65; color: var(--v2-muted); }
body.theme-light .v2-faq__list summary:focus-visible { outline: 2px solid var(--v2-violet); outline-offset: 4px; border-radius: 4px; }
body.theme-light .v2-mob-block { display: none; }

/* ── 7 · Closing band + footer ── */
body.theme-light .v2-close { background: var(--v2-lav); padding: 120px 0 0; }
body.theme-light .v2-close__icon { width: 72px; height: 72px; border-radius: 18px; margin: 0 auto 28px; display: block; box-shadow: 0 14px 30px -12px rgba(60, 30, 120, 0.45); }
body.theme-light .v2-close .v2-sub { color: #4A3F6E; font-size: 19px; }
body.theme-light .v2-badges { margin-top: 36px; display: flex; justify-content: center; align-items: center; gap: 14px; }
body.theme-light .v2-badges a img { height: 52px; width: auto; display: block; }
body.theme-light .v2-badges a { border-radius: 10px; }
body.theme-light .v2-badges a:focus-visible { outline: 2px solid var(--v2-deep); outline-offset: 3px; }
body.theme-light .v2-badges { flex-wrap: wrap; }
body.theme-light .v2-qr { display: flex; align-items: center; justify-content: center; gap: 12px; flex-basis: 100%; margin: 24px 0 0; }
body.theme-light .v2-qr img { width: 80px; height: 80px; padding: 8px; background: #fff; border-radius: 12px; box-sizing: content-box; }
body.theme-light .v2-qr small { max-width: 92px; text-align: left; font-size: 13.5px; line-height: 1.35; color: #4A3F6E; }
html.is-ios .v2-qr, html.is-android .v2-qr { display: none; }
body.theme-light .v2-footer { margin-top: 112px; border-top: 1px solid rgba(43, 33, 80, 0.12); }
body.theme-light .v2-footer__inner { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; padding-top: 28px; padding-bottom: 36px; }
body.theme-light .v2-footer__brand img { height: 24px; width: auto; display: block; filter: brightness(0) invert(14%) sepia(40%) saturate(2200%) hue-rotate(238deg); }
body.theme-light .v2-footer nav { display: flex; gap: 22px; flex-wrap: wrap; }
body.theme-light .v2-footer nav a { color: #4A3F6E; text-decoration: none; font-size: 14.5px; }
body.theme-light .v2-footer nav a:hover { color: var(--v2-ink); }
body.theme-light .v2-footer small { width: 100%; font-size: 13px; color: #5A5078; }

/* ── Phones and tablets ── */
@media (max-width: 1060px) {
  body.theme-light .v2-split, body.theme-light .v2-split:has(.v2-duo), body.theme-light .v2-split--flip:has(.v2-duo) { grid-template-columns: 1fr; gap: 56px; }
  body.theme-light .v2-split--flip .v2-split__text { order: 0; }
  body.theme-light .v2-lead { max-width: 600px; }
}
@media (max-width: 900px) {
  .v2-wrap { padding: 0 20px; }
  body.theme-light .v2-sec { padding: 72px 0; }
  body.theme-light .v2-sec#how { padding-top: 64px; }
  body.theme-light .v2-promise { width: calc(100% - 32px); margin-top: 8px; border-radius: 18px; }
  body.theme-light .v2-proof { font-size: 13.5px; padding: 14px 16px; line-height: 1.5; }
  body.theme-light .v2-promise__row { grid-template-columns: 1fr; }
  body.theme-light .v2-promise__card { padding: 22px 22px 24px; }
  body.theme-light .v2-promise__card + .v2-promise__card { border-left: 0; border-top: 1px solid rgba(43, 33, 80, 0.08); }
  body.theme-light .v2-promise__title { font-size: 23px; }
  body.theme-light .v2-lead { font-size: 17px; }
  body.theme-light .v2-steps__art { width: 72px; height: 72px; }
  body.theme-light .v2-steps__art img { max-width: 46px; max-height: 46px; }
  body.theme-light .v2-steps__body b { font-size: 22px; }
  body.theme-light .v2-steps li { gap: 16px; }
  .v2-phone { width: 250px; }
  body.theme-light .v2-duo__back { display: none; }
  body.theme-light .v2-dark { padding: 80px 0 72px; }
  body.theme-light .v2-grid4 { grid-template-columns: 1fr; gap: 20px; margin-top: 36px; }
  body.theme-light .v2-leagues { margin-top: 64px; }
  body.theme-light .v2-leagues__row img { height: 62px; }
  body.theme-light .v2-leagues__row .v2-desk { display: none; }
  body.theme-light .v2-h3 { margin: 72px 0 24px; font-size: 30px; }
  body.theme-light .v2-tools { grid-template-columns: 1fr; }
  body.theme-light .v2-tools li { padding: 22px 0; border-left: 0 !important; }
  body.theme-light .v2-feature blockquote { font-size: 24px; }
  body.theme-light .v2-reviews { grid-template-columns: 1fr; margin-top: 48px; }
  body.theme-light .v2-reviews figure { padding: 24px; }
  body.theme-light .v2-note { margin-top: 56px; }
  body.theme-light .v2-note p { font-size: 17px; }
  body.theme-light .v2-faq { grid-template-columns: 1fr; gap: 20px; }
  body.theme-light .v2-faq__list summary { font-size: 17px; padding: 20px 40px 20px 0; }
  body.theme-light .v2-desk-block { display: none; }
  body.theme-light .v2-mob-block { display: block; margin-top: 28px; }
  body.theme-light .v2-close { padding-top: 88px; }
  body.theme-light .v2-close .v2-sub { font-size: 17px; }
  body.theme-light .v2-qr { display: none; }
  body.theme-light .v2-badges { flex-wrap: wrap; }
  body.theme-light .v2-footer { margin-top: 80px; }
  body.theme-light .v2-footer__inner { flex-direction: column; align-items: flex-start; }
}

/* ── Audit fixes (11 Oct 2026): five-lens review ── */
html { scroll-padding-top: 64px; }
@media (max-width: 900px) { html { scroll-padding-top: 60px; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body.theme-light .v2-proof__sep { margin: 0 8px; color: #B9B2CC; }
body.theme-light .v2-proof__g { white-space: nowrap; }
body.theme-light .v2-promise__text, body.theme-light .v2-steps__body, body.theme-light .v2-tools li, body.theme-light .v2-grid4 li, body.theme-light .v2-lead { text-wrap: pretty; }
body.theme-light .v2-note p, body.theme-light .v2-leagues p, body.theme-light .v2-h3, body.theme-light .v2-close .v2-h2, body.theme-light .v2-close .v2-sub, body.theme-light .v2-faq__list summary, body.theme-light .v2-counter__label, body.theme-light .v2-lock { text-wrap: balance; }

/* steps: show the game art itself, larger, without tinted circles */
body.theme-light .v2-steps__art { background: none; box-shadow: none; width: 96px; height: 96px; }
body.theme-light .v2-steps__art img { max-width: 84px; max-height: 84px; filter: drop-shadow(0 10px 14px rgba(74, 47, 158, .28)); }
body.theme-light .v2-merge img { height: 56px; }
body.theme-light .v2-merge .v2-merge__out { height: 76px; }

/* type system: one serif for item titles, three body sizes */
body.theme-light .v2-grid4 b { font-family: var(--v2-serif); font-weight: 400; font-size: 23px; line-height: 1.2; text-wrap: balance; }
body.theme-light .v2-grid4 li, body.theme-light .v2-steps__body, body.theme-light .v2-reviews blockquote, body.theme-light .v2-leagues p { font-size: 16px; }
@media (max-width: 1180px) { body.theme-light .v2-grid4 { grid-template-columns: 1fr; gap: 20px; } }

/* leagues: big enough to read the crests */
body.theme-light .v2-leagues__row { gap: 12px; }
body.theme-light .v2-leagues__row img { height: 140px; filter: drop-shadow(0 12px 18px rgba(0, 0, 0, .35)); }

/* library lock line */
body.theme-light .v2-lock { align-items: flex-start; line-height: 1.5; }
body.theme-light .v2-lock svg { margin-top: 4px; }

/* reviews: their own soft band, captions on two lines */
body.theme-light #sections-root #reviews { background: #F1EAFB; border-top: 0; }
body.theme-light #sections-root #faq { border-top: 0; }
body.theme-light .v2-reviews figcaption b, body.theme-light .v2-reviews figcaption .v2-src { display: block; }
body.theme-light .v2-reviews figcaption .v2-src { margin-top: 2px; }
body.theme-light .v2-feature figcaption .v2-src::before { content: '· '; }
body.theme-light .v2-reviews figcaption, body.theme-light .v2-feature figcaption { line-height: 1.5; }

/* heading scale: utility section quieter, final call stronger */
body.theme-light #sections-root #faq .v2-h2 { font-size: clamp(32px, 3.4vw, 40px); }
body.theme-light .v2-close .v2-h2 { font-size: clamp(40px, 5vw, 64px); }

/* softer phone shadows on light sections */
body.theme-light .v2-sec:not(.v2-dark) .v2-phone { filter: drop-shadow(0 20px 28px rgba(40, 20, 90, .16)); }

/* tap targets */
body.theme-light .v2-footer nav { gap: 0 22px; }
body.theme-light .v2-footer nav a, body.theme-light .v2-footer__brand { display: inline-flex; align-items: center; min-height: 44px; }
body.theme-light .v2-link { min-height: 44px; margin-top: 24px; }
body.theme-light .v2-note__sig a { display: inline-block; padding: 13px 0; margin: -13px 0; }

@media (max-width: 1060px) {
  /* each phone right after its lead paragraph, not after the whole text block */
  body.theme-light .v2-split, body.theme-light .v2-split:has(.v2-duo), body.theme-light .v2-split--flip:has(.v2-duo) { gap: 0; }
  body.theme-light .v2-split__text { display: contents; }
  body.theme-light .v2-split .v2-eyebrow { order: 1; }
  body.theme-light .v2-split .v2-h2 { order: 2; }
  body.theme-light .v2-split .v2-lead { order: 3; }
  body.theme-light .v2-split__media { order: 4; margin: 40px 0 8px; }
  body.theme-light .v2-steps, body.theme-light .v2-grid4, body.theme-light .v2-lock { order: 5; }
}
@media (max-width: 900px) {
  body.theme-light .v2-promise { margin-top: 8px; }
  body.theme-light .v2-proof { display: flex; flex-wrap: wrap; justify-content: center; gap: 2px 14px; }
  body.theme-light .v2-proof__sep { display: none; }
  body.theme-light .v2-counter::before { left: 20px; right: 20px; }
  body.theme-light .v2-counter__label { max-width: 300px; margin-left: auto; margin-right: auto; }
  body.theme-light .v2-steps__art { width: 72px; height: 72px; }
  body.theme-light .v2-steps__art img { max-width: 64px; max-height: 64px; }
  body.theme-light .v2-merge img { height: 44px; }
  body.theme-light .v2-merge .v2-merge__out { height: 60px; }
  body.theme-light .v2-duo .v2-phone--lg { width: 250px; }
  body.theme-light .v2-leagues__row { flex-wrap: wrap; max-width: 330px; margin: 0 auto; gap: 10px 8px; }
  body.theme-light .v2-leagues__row img { height: 76px; }
  body.theme-light .v2-leagues__row .v2-desk { display: block; }
  body.theme-light .v2-reviews { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 12px; margin: 40px -20px 0; padding: 0 20px 8px; scrollbar-width: none; }
  body.theme-light .v2-reviews::-webkit-scrollbar { display: none; }
  body.theme-light .v2-reviews figure { flex: 0 0 86%; scroll-snap-align: center; }
  body.theme-light .v2-feature blockquote { font-size: 23px; }
}

/* ── Inside the app: the original carousel on the light page (owner, 11 Oct 2026) ── */
body.theme-light .v2-inside { padding-bottom: 96px; }
body.theme-light .v2-inside .phone-carousel { margin-top: 32px; }
body.theme-light .v2-inside .pc-dots button { background: #D9CFF0; }
body.theme-light .v2-inside .pc-dots button:hover { background: #B9A6E4; }
body.theme-light .v2-inside .pc-dots button.active { background: #6A47C9; }
body.theme-light .v2-inside .pc-slide figcaption .title { color: #2B2150; font-family: var(--v2-serif); font-weight: 400; font-size: 24px; }
body.theme-light .v2-inside .pc-slide figcaption .desc { color: #5A5078; }
/* no "Tap to switch" hint or pulse on the carousel (owner, 11 Oct 2026) */
body.theme-light .pc-tap, body.theme-light .pc-tap__label { display: none !important; }
/* side arrows: soft grey circle with a white chevron (owner, 11 Oct 2026) */
body.theme-light .v2-inside .phone-carousel { position: relative; }
body.theme-light .v2-inside .pc-arrow {
  display: flex !important; align-items: center; justify-content: center;
  position: absolute; top: 42%; transform: translateY(-50%); z-index: 20;
  width: 56px; height: 56px; padding: 0; border: 0; border-radius: 50%;
  background: rgba(150, 146, 158, 0.55); color: #fff;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  box-shadow: none; cursor: pointer; transition: background 200ms ease, transform 200ms ease;
}
body.theme-light .v2-inside .pc-arrow:hover { background: rgba(120, 116, 130, 0.7); }
body.theme-light .v2-inside .pc-arrow:active { transform: translateY(-50%) scale(0.94); }
body.theme-light .v2-inside .pc-arrow:focus-visible { outline: 2px solid #6A47C9; outline-offset: 3px; }
body.theme-light .v2-inside .pc-prev { left: 8%; }
body.theme-light .v2-inside .pc-next { right: 8%; }
@media (max-width: 900px) {
  body.theme-light .v2-inside .pc-arrow { width: 44px; height: 44px; top: 38%; }
  body.theme-light .v2-inside .pc-arrow svg { width: 18px; height: 18px; }
  body.theme-light .v2-inside .pc-prev { left: 4px; }
  body.theme-light .v2-inside .pc-next { right: 4px; }
}

/* carousel dots: true circles, the active one a short pill, flat colour, no glow (owner, 11 Oct 2026).
   site.css gives phone buttons a 10px min-height, which squashed the 8px dots into ovals. */
body.theme-light .v2-inside .pc-dots { gap: 10px; margin-top: 4px; }
body.theme-light .v2-inside .pc-dots button {
  position: relative; flex: none; box-sizing: border-box;
  width: 8px; height: 8px; min-height: 0; padding: 0; border: 0; border-radius: 999px;
  background: #DCD3EE; box-shadow: none;
  transition: width 300ms cubic-bezier(.16, 1, .3, 1), background-color 200ms ease;
}
body.theme-light .v2-inside .pc-dots button::after { content: ''; position: absolute; inset: -10px -5px; } /* bigger tap area, invisible */
body.theme-light .v2-inside .pc-dots button:hover { background: #BFAFE3; }
body.theme-light .v2-inside .pc-dots button.active { width: 26px; height: 8px; border-radius: 999px; background: #6A47C9; box-shadow: none; }
@media (max-width: 900px) {
  body.theme-light .v2-inside .pc-dots { gap: 8px; }
  body.theme-light .v2-inside .pc-dots button { width: 7px; height: 7px; min-height: 0; }
  body.theme-light .v2-inside .pc-dots button.active { width: 22px; height: 7px; }
}

/* side phones: frame and screenshot must tilt as ONE piece (owner, 11 Oct 2026).
   site.js puts blur()/brightness() on the side screenshots only, and the phone carried a drop-shadow
   filter. A filter gives the element its own layer, which Safari can project with a different
   perspective from the frame painted around it. So: no filters anywhere on the phone. The shadow is
   painted by ::before (a plain box-shadow), and side phones are dimmed by the slide's opacity alone. */
body.theme-light .pc-phone,
body.theme-light .pc-slide.active .pc-phone { filter: none; }
body.theme-light .pc-phone img { filter: none !important; }
body.theme-light .pc-phone::before {
  content: ''; position: absolute; z-index: -1; left: 6%; right: 6%; top: 3%; bottom: 2%;
  border-radius: 14% / 6.5%; background: transparent; transform: none;
  box-shadow: 0 26px 44px -14px rgba(40, 20, 90, 0.32);
}
body.theme-light .pc-slide.active .pc-phone::before { box-shadow: 0 36px 56px -16px rgba(40, 20, 90, 0.38); }

/* ── The Sanctuary loop: three small cards (owner, 11 Oct 2026). Replaces .v2-steps + .v2-merge. ── */
body.theme-light .v2-loop { list-style: none; margin: 40px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; max-width: 600px; }
body.theme-light .v2-loop li {
  position: relative; display: flex; flex-direction: column; align-items: flex-start;
  padding: 20px 16px; border-radius: 20px; background: #fff; border: 1px solid #EEE7FA;
  box-shadow: 0 18px 36px -28px rgba(60, 30, 120, 0.35);
}
body.theme-light .v2-loop img { height: 54px; width: auto; margin: 0 0 18px; filter: drop-shadow(0 8px 10px rgba(74, 47, 158, .22)); }
body.theme-light .v2-loop b { font-family: var(--v2-serif); font-weight: 400; font-size: 19px; line-height: 1.2; color: var(--v2-ink); margin: 0 0 6px; white-space: nowrap; }
body.theme-light .v2-loop span:not(.v2-loop__n) { font-size: 14.5px; line-height: 1.5; color: var(--v2-muted); text-wrap: pretty; }
body.theme-light .v2-loop__n {
  position: absolute; top: 16px; right: 16px; width: 24px; height: 24px; border-radius: 50%;
  display: grid; place-items: center; background: #E4D6FF; color: #23184A; font-size: 12px; font-weight: 700; line-height: 1;
}
@media (max-width: 1060px) { body.theme-light .v2-loop { order: 5; max-width: none; margin-top: 8px; } }
/* phones, and the narrow two-column desktop (1061 to 1239): one white panel, three tidy rows */
@media (max-width: 640px), (min-width: 1061px) and (max-width: 1239px) {
  body.theme-light .v2-loop { grid-template-columns: 1fr; gap: 0; border-radius: 20px; background: #fff; border: 1px solid #EEE7FA; box-shadow: 0 18px 36px -28px rgba(60, 30, 120, 0.35); }
  body.theme-light .v2-loop li {
    display: grid; grid-template-columns: 56px 1fr; grid-template-rows: auto auto; column-gap: 16px; align-items: center;
    padding: 18px; border: 0; border-radius: 0; background: none; box-shadow: none;
  }
  body.theme-light .v2-loop li + li { border-top: 1px solid #F0EAF9; }
  body.theme-light .v2-loop img { grid-row: 1 / 3; justify-self: center; height: 48px; margin: 0; }
  body.theme-light .v2-loop b { margin: 0 0 2px; align-self: end; font-size: 20px; white-space: normal; }
  body.theme-light .v2-loop span:not(.v2-loop__n) { align-self: start; font-size: 15px; }
  body.theme-light .v2-loop__n { display: none; }
}

/* ── Sacred Tools tab (owner, 11 Oct 2026). One tool at a time: name, one line, three flat phones,
   grey side arrows (the carousel's), labelled pills below. Panels share one grid cell, so switching
   cross-fades with no jump in height. ── */
body.theme-light .v2-tt { padding-bottom: 104px; overflow-x: clip; }
body.theme-light .tt__stage { position: relative; display: grid; margin-top: 4px; }
body.theme-light .tt__panel { grid-area: 1 / 1; }
body.theme-light .tt.is-ready .tt__panel { transition: opacity 450ms ease, visibility 0s linear 450ms; }
body.theme-light .tt.is-ready .tt__panel:not(.is-on) { opacity: 0; visibility: hidden; }
body.theme-light .tt.is-ready .tt__panel.is-on { opacity: 1; visibility: visible; transition: opacity 450ms ease, visibility 0s; }
body.theme-light .tt__panel .v2-sub { max-width: 520px; margin: 0 auto; text-wrap: balance; }
body.theme-light .tt__phones { display: flex; justify-content: center; align-items: center; gap: 40px; margin-top: 52px; }
body.theme-light .tt__phones .v2-phone { width: 250px; }
body.theme-light .tt.is-ready .tt__panel .tt__phones .v2-phone { transition: transform 600ms cubic-bezier(.16, 1, .3, 1); }
body.theme-light .tt.is-ready .tt__panel:not(.is-on) .tt__phones .v2-phone { transform: translateY(14px); }
body.theme-light .tt__arrow {
  position: absolute; top: calc(100% - 262px); transform: translateY(-50%); z-index: 3;
  display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; padding: 0; border: 0; border-radius: 50%;
  background: rgba(150, 146, 158, 0.55); color: #fff; cursor: pointer;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  transition: background-color 200ms ease;
}
body.theme-light .tt__arrow:hover { background: rgba(120, 116, 130, 0.7); }
body.theme-light .tt__arrow:focus-visible { outline: 2px solid var(--v2-violet); outline-offset: 3px; }
body.theme-light .tt__prev { left: 4%; }
body.theme-light .tt__next { right: 4%; }
body.theme-light .tt__tabs { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 44px; }
body.theme-light .tt__tabs button {
  height: 40px; padding: 0 18px; border: 0; border-radius: 999px; background: transparent; cursor: pointer;
  font: 500 15px 'Figtree', system-ui, sans-serif; color: var(--v2-muted); transition: background-color 200ms ease, color 200ms ease;
}
body.theme-light .tt__tabs button:hover { background: #F1EAFB; color: #23184A; }
body.theme-light .tt__tabs button[aria-selected="true"] { background: #E4D6FF; color: #23184A; font-weight: 600; }
body.theme-light .tt__tabs button:focus-visible { outline: 2px solid var(--v2-violet); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) {
  body.theme-light .tt.is-ready .tt__panel, body.theme-light .tt.is-ready .tt__panel .tt__phones .v2-phone { transition: none; }
}
@media (max-width: 1100px) {
  body.theme-light .tt__phones { gap: 24px; }
  body.theme-light .tt__phones .v2-phone { width: 220px; }
  body.theme-light .tt__arrow { top: calc(100% - 231px); }
  body.theme-light .tt__prev { left: 0; } body.theme-light .tt__next { right: 0; }
}
/* phones: the middle screen in front, the other two tucked behind it */
@media (max-width: 760px) {
  body.theme-light .v2-tt { padding-bottom: 80px; }
  body.theme-light .tt__phones { gap: 0; margin-top: 36px; }
  body.theme-light .tt__phones .v2-phone { width: 200px; position: relative; z-index: 2; }
  body.theme-light .tt__phones .tt__side { width: 150px; z-index: 1; opacity: 0.92; }
  body.theme-light .tt__phones .tt__side:first-child { margin-right: -64px; }
  body.theme-light .tt__phones .tt__side:last-child { margin-left: -64px; }
  body.theme-light .tt__arrow { width: 44px; height: 44px; top: calc(100% - 210px); }
  body.theme-light .tt__prev { left: -6px; } body.theme-light .tt__next { right: -6px; }
  body.theme-light .tt__tabs { margin-top: 32px; gap: 6px; }
  body.theme-light .tt__tabs button { height: 38px; padding: 0 14px; font-size: 14.5px; }
}
@media (max-width: 760px) {
  body.theme-light .tt__tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; max-width: 340px; margin-left: auto; margin-right: auto; }
  body.theme-light .tt__tabs button { width: 100%; height: 42px; padding: 0 10px; background: #F4EFFC; }
  body.theme-light .tt__tabs button[aria-selected="true"] { background: #E4D6FF; }
}

/* ── Round 2 audit fixes (11 Oct 2026) ── */
/* promise cards: the chevron follows the last word, and the titles fit one line from 1100 up */
body.theme-light .v2-promise__title { display: block; text-wrap: balance; }
body.theme-light .v2-promise__title svg { display: inline-block; vertical-align: -1px; margin-left: 4px; }
@media (min-width: 901px) and (max-width: 1279px) {
  body.theme-light .v2-promise__card { padding: 28px 22px 30px; }
  body.theme-light .v2-promise__title { font-size: 22px; }
}
@media (max-width: 900px) {
  /* proof line: keep the dots, so the facts read as separate items */
  body.theme-light .v2-proof__sep { display: inline; }
  body.theme-light .v2-proof { gap: 2px 10px; }
  /* league crests: two even rows of five */
  body.theme-light .v2-leagues__row { max-width: 320px; gap: 10px 6px; }
  body.theme-light .v2-leagues__row img { height: 72px; }
  /* review cards: each as tall as its own quote */
  body.theme-light .v2-reviews { align-items: flex-start; }
}
body.theme-light .v2-reviews blockquote { text-wrap: pretty; }

/* Sanctuary: just the lead next to the garden (owner, 11 Oct 2026: the coin card was not needed) */
/* Community: shorter items need less room */
body.theme-light #together .v2-lead { margin-bottom: 4px; }
/* league crests on phones: two even rows of five */
@media (max-width: 900px) {
  body.theme-light .v2-leagues__row { display: grid; grid-template-columns: repeat(5, auto); justify-content: center; gap: 12px 10px; max-width: none; }
  body.theme-light .v2-leagues__row img { height: 76px; }
}

/* ── Pills: lavender with purple words everywhere (owner, 11 Oct 2026) ── */
body.theme-light .tt__tabs button[aria-selected="true"] { background: #E4D6FF; color: #4A2F9E; }
@media (max-width: 760px) { body.theme-light .tt__tabs button { color: #5A5078; } body.theme-light .tt__tabs button[aria-selected="true"] { color: #4A2F9E; } }
/* Sacred Tools on phones: one screen per tool, the tool's main page (owner, 11 Oct 2026) */
@media (max-width: 760px) {
  body.theme-light .tt__phones .tt__side { display: none; }
  body.theme-light .tt__phones .v2-phone { width: 230px; }
  body.theme-light .tt__arrow { top: calc(100% - 241px); }
}
/* phones: no tool pills under the phone, the side arrows and a swipe switch tools (owner, 11 Oct 2026) */
@media (max-width: 760px) { body.theme-light .tt__tabs { display: none; } }

/* ── Community, light (owner, 11 Oct 2026): a cream-pink wash that fades in from the section above and
   out into the one below, so there is no edge or line; three flat screens like Sacred Tools. ── */
body.theme-light .v2-blush {
  border-top: 0; padding: 150px 0 150px;
  background: linear-gradient(180deg, #F8F5F0 0%, #F8F0F3 18%, #F7EDEF 50%, #F8F0F3 82%, #F8F5F0 100%);
}
body.theme-light .v2-blush + .v2-sec { border-top: 0; }
body.theme-light .v2-blush .v2-sub { max-width: 560px; margin: 0 auto; text-wrap: balance; }
body.theme-light .v2-trio { display: flex; justify-content: center; align-items: center; gap: 40px; margin-top: 56px; }
body.theme-light .v2-trio .v2-phone { width: 250px; filter: drop-shadow(0 20px 28px rgba(70, 30, 60, .14)); }
@media (max-width: 1100px) {
  body.theme-light .v2-trio { gap: 24px; }
  body.theme-light .v2-trio .v2-phone { width: 220px; }
}
@media (max-width: 760px) {
  body.theme-light .v2-blush { padding: 96px 0 96px; }
  body.theme-light .v2-trio { margin-top: 36px; }
  body.theme-light .v2-trio__side { display: none; }
  body.theme-light .v2-trio .v2-phone { width: 230px; }
}
body.theme-light .v2-blush { padding: 140px 0 128px;
  background: linear-gradient(180deg, #F8F5F0 0%, #F7ECEF 20%, #F5E7EA 50%, #F7ECEF 80%, #F8F5F0 100%); }
body.theme-light .v2-blush + .v2-sec { padding-top: 96px; }
@media (max-width: 760px) { body.theme-light .v2-blush { padding: 88px 0 80px; } body.theme-light .v2-blush + .v2-sec { padding-top: 72px; } }
body.theme-light .tt__tabs button[aria-selected="true"] { background: linear-gradient(135deg, #DCCBFA 0%, #CDB8F6 45%, #B89CF0 100%); color: #4A2F9E; }

/* ── One flowing page (owner, 11 Oct 2026): no lines between sections and no hard band edges.
   The plain page alternates with soft washes that fade in from the page colour and back out to it,
   so any two neighbours meet on #F8F5F0. Lavender and a warm cream-pink, kept very low in colour. ── */
:root {
  --wash-lav:  linear-gradient(180deg, #F8F5F0 0%, #F4EFFB 22%, #F2ECFB 50%, #F4EFFB 78%, #F8F5F0 100%);
  --wash-pink: linear-gradient(180deg, #F8F5F0 0%, #F7ECEF 20%, #F5E7EA 50%, #F7ECEF 80%, #F8F5F0 100%);
  --wash-lilac: linear-gradient(180deg, #F8F5F0 0%, #F6EDF5 22%, #F4E9F3 50%, #F6EDF5 78%, #F8F5F0 100%);
}
body.theme-light .v2-sec, body.theme-light #sections-root .v2-sec { border-top: 0; }
body.theme-light #sections-root #screens { background: var(--wash-lav); }
body.theme-light #sections-root #together { background: var(--wash-pink); }
body.theme-light #sections-root #tools { background: var(--wash-lav); }
body.theme-light #sections-root #reviews { background: var(--wash-lilac); }
/* the closing band rises out of the page into lavender, warming to lilac-pink at the very bottom */
body.theme-light .v2-close { background: linear-gradient(180deg, #F8F5F0 0%, #F1EAFB 28%, #EBE1FA 62%, #EEE0F2 100%); padding-top: 140px; }
@media (min-width: 901px) and (max-width: 1099px) { body.theme-light .v2-promise__title { font-size: 19.5px; } body.theme-light .v2-promise__card { padding: 26px 20px 28px; } }
body.theme-light .v2-promise__card { cursor: default; }
/* phones: rating on line one, "Free · No ads · iPhone and Android" on line two */
@media (max-width: 900px) {
  body.theme-light .v2-proof__g:first-child { flex-basis: 100%; }
  body.theme-light .v2-proof__g:first-child + .v2-proof__sep { display: none; }
}

/* ── Reviews: one quote at a time (owner, 11 Oct 2026). Reuses the Sacred Tools switcher (.tt). ── */
body.theme-light .rv { margin: 56px auto 0; max-width: 1060px; }
body.theme-light .rv__item { margin: 0; padding: 0 96px; align-self: center; }
body.theme-light .rv__item blockquote { margin: 16px auto 18px; max-width: 820px; font-family: var(--v2-serif); font-size: 32px; line-height: 1.38; color: var(--v2-ink); text-wrap: balance; }
body.theme-light .rv__item figcaption { font-size: 15px; line-height: 1.5; color: var(--v2-muted); }
body.theme-light .rv__item figcaption b { color: var(--v2-ink); font-weight: 600; }
body.theme-light .rv__item figcaption .v2-src::before { content: '· '; }
body.theme-light .rv .tt__arrow { top: 50%; }
body.theme-light .rv .tt__prev { left: 0; } body.theme-light .rv .tt__next { right: 0; }
body.theme-light .rv__dots { display: flex; justify-content: center; gap: 10px; margin-top: 36px; }
body.theme-light .rv__dots button { position: relative; width: 8px; height: 8px; min-height: 0; padding: 0; border: 0; border-radius: 999px; background: #DCD3EE; cursor: pointer; transition: width 300ms cubic-bezier(.16, 1, .3, 1), background-color 200ms ease; }
body.theme-light .rv__dots button::after { content: ''; position: absolute; inset: -10px -5px; }
body.theme-light .rv__dots button[aria-selected="true"] { width: 26px; background: #6A47C9; }
body.theme-light .rv__dots button:focus-visible { outline: 2px solid var(--v2-violet); outline-offset: 3px; }
body.theme-light #reviews .v2-link { margin-top: 28px; }
/* phones: the quote gets the full width, arrows sit on either side of the dots */
@media (max-width: 760px) {
  body.theme-light .rv { margin-top: 36px; }
  body.theme-light .rv__stage { padding-bottom: 64px; }
  body.theme-light .rv__item { padding: 0; }
  body.theme-light .rv__item blockquote { font-size: 23px; line-height: 1.42; }
  body.theme-light .rv .tt__arrow { top: auto; bottom: 0; transform: none; width: 44px; height: 44px; }
  body.theme-light .rv .tt__prev { left: calc(50% - 110px); } body.theme-light .rv .tt__next { right: calc(50% - 110px); }
  body.theme-light .rv__dots { position: relative; margin-top: -42px; height: 20px; align-items: center; pointer-events: none; }
  body.theme-light .rv__dots button { pointer-events: auto; }
}
body.theme-light .tt__tabs button[aria-selected="true"] { color: #fff; text-shadow: 0 1px 2px rgba(70, 40, 150, 0.35); }
@media (max-width: 900px) { body.theme-light .rv__dots { margin-top: -32px; } }
/* proof line: the rating jumps to the reviews; three facts fit one line on phones too (owner, 11 Oct 2026) */
body.theme-light .v2-proof__rate { color: inherit; text-decoration: none; }
body.theme-light .v2-proof__rate:hover { color: var(--v2-deep); }
@media (max-width: 900px) {
  body.theme-light .v2-proof__g:first-child { flex-basis: auto; }
  body.theme-light .v2-proof__g:first-child + .v2-proof__sep { display: inline; }
}
@media (max-width: 900px) {
  body.theme-light .v2-proof { flex-wrap: nowrap; gap: 0 8px; padding-left: 12px; padding-right: 12px; font-size: 14px; white-space: nowrap; }
  body.theme-light .v2-proof .v2-stars { letter-spacing: 1px; }
}
@media (max-width: 380px) { body.theme-light .v2-proof { font-size: 12.5px; gap: 0 6px; padding-left: 8px; padding-right: 8px; } body.theme-light .v2-proof .v2-stars { letter-spacing: 0; } }
@media (max-width: 340px) { body.theme-light .v2-proof { flex-wrap: wrap; white-space: normal; } }
/* new order (owner, 11 Oct 2026): Sanctuary, Community (pink), Library, Sacred Tools (lavender),
   Inside the app (plain page), Reviews (lilac), close. Neighbours never share a wash. */
body.theme-light #sections-root #screens { background: var(--lh-page); }

/* Learn: a designed coming-soon screen in the phone frame (owner, 11 Oct 2026). Same box as a screenshot. */
body.theme-light .tt-soon { position: absolute; left: 3.70%; top: 1.35%; width: 92.47%; height: 97.30%; border-radius: 13.6% / 6.2%; overflow: hidden;
  display: flex; flex-direction: column; align-items: center; padding: 34% 9% 0; box-sizing: border-box;
  background: radial-gradient(120% 60% at 50% 22%, #3A1D6E 0%, rgba(58, 29, 110, 0) 70%), linear-gradient(to bottom right, #1B082C 0%, #130621 35%, #0C0416 75%, #06020B 100%); }
body.theme-light .tt-soon__icon { width: 30%; height: auto; filter: drop-shadow(0 8px 24px rgba(160, 120, 255, 0.55)); }
body.theme-light .tt-soon__title { margin-top: 10%; font-family: 'Nunito', 'Figtree', system-ui, sans-serif; font-weight: 700; font-size: 26px; color: #fff; }
body.theme-light .tt-soon__pill { margin: 6% 0 14%; padding: 6px 14px; border-radius: 999px; font-size: 12px; font-weight: 600; letter-spacing: .02em;
  color: #fff; background: linear-gradient(135deg, #DCCBFA 0%, #CDB8F6 45%, #B89CF0 100%); text-shadow: 0 1px 2px rgba(70, 40, 150, 0.35); }
body.theme-light .tt-soon__card { width: 100%; height: 12%; margin-bottom: 5%; border-radius: 14px; background: rgba(255, 255, 255, 0.06);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06); }
body.theme-light .tt-soon__card:nth-of-type(2) { opacity: .7; } body.theme-light .tt-soon__card:last-of-type { opacity: .4; }
body.theme-light .tt__tabs { max-width: 900px; margin-left: auto; margin-right: auto; }
body.theme-light .v2-phone .tt-soon img.tt-soon__icon { position: static; left: auto; top: auto; width: 32%; height: auto; max-width: none; border-radius: 0; background: none; object-fit: contain; }
body.theme-light .v2-phone .tt-soon img.tt-soon__icon { filter: brightness(0) invert(84%) sepia(22%) saturate(1400%) hue-rotate(205deg) brightness(1.05) drop-shadow(0 8px 22px rgba(160, 120, 255, 0.6)); }
/* promise panel removed (owner, 11 Oct 2026): the Sanctuary follows the hero's fade directly */
body.theme-light #sections-root .v2-sec#how { padding-top: 56px; }
@media (max-width: 900px) { body.theme-light #sections-root .v2-sec#how { padding-top: 24px; } }

/* even rhythm between sections now the small labels are gone (owner, 11 Oct 2026) */
body.theme-light #sections-root .v2-sec { padding-top: 112px; padding-bottom: 112px; }
body.theme-light #sections-root .v2-sec#how { padding-top: 56px; }
body.theme-light #sections-root .v2-blush + .v2-sec { padding-top: 112px; }
body.theme-light .v2-close { padding-top: 112px; }
@media (max-width: 900px) {
  body.theme-light #sections-root .v2-sec { padding-top: 64px; padding-bottom: 64px; }
  body.theme-light #sections-root .v2-sec#how { padding-top: 24px; }
  body.theme-light #sections-root .v2-blush + .v2-sec { padding-top: 64px; }
  body.theme-light .v2-close { padding-top: 72px; }
}

/* ── Phones: switching slides sideways, after Insight Timer's (owner, 11 Oct 2026, from a screen
   recording). The old panel leaves first; the new title and line glide in, and the phone follows a
   beat later and settles, about half a second in all. Arrows stay put. Desktop keeps the cross-fade. ── */
body.theme-light .tt[data-dir="next"] { --d: 1; }
body.theme-light .tt[data-dir="prev"] { --d: -1; }
body.theme-light #reviews { overflow-x: clip; }
@keyframes ttTextIn  { from { transform: translateX(calc(var(--d, 1) * 72%)); opacity: 0; } 40% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes ttPhoneIn { from { transform: translateX(calc(var(--d, 1) * 115%)); opacity: 0; } 30% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes ttOut     { from { transform: none; opacity: 1; } to { transform: translateX(calc(var(--d, 1) * -48%)); opacity: 0; } }
@media (max-width: 760px) and (prefers-reduced-motion: no-preference) {
  body.theme-light .tt.is-ready .tt__panel,
  body.theme-light .tt.is-ready .tt__panel.is-on,
  body.theme-light .tt.is-ready .tt__panel .tt__phones .v2-phone { transition: none; }
  body.theme-light .tt.is-ready .tt__panel:not(.is-on) .tt__phones .v2-phone { transform: none; }
  body.theme-light .tt.is-ready .tt__panel.is-leave { visibility: visible; opacity: 1; }
  body.theme-light .tt__panel.is-leave > * { animation: ttOut 340ms cubic-bezier(.5, 0, .75, .3) both; }
  body.theme-light .tt__panel.is-enter > *:not(.tt__phones) { animation: ttTextIn 560ms cubic-bezier(.16, 1, .3, 1) 90ms both; }
  body.theme-light .tt__panel.is-enter > .v2-sub,
  body.theme-light .tt__panel.is-enter > blockquote { animation-delay: 130ms; }
  body.theme-light .tt__panel.is-enter > figcaption { animation-delay: 170ms; }
  body.theme-light .tt__panel.is-enter > .tt__phones { animation: ttPhoneIn 700ms cubic-bezier(.16, 1, .3, 1) 150ms both; }
}
/* v2: a true sliding track. Old and new move the same full width on the same curve, so they never
   overlap; the phone runs a little longer, so it trails its title like Insight Timer's. */
@keyframes ttTrackIn  { from { transform: translateX(calc(var(--d, 1) * 100vw)); } to { transform: none; } }
@keyframes ttTrackOut { from { transform: none; } to { transform: translateX(calc(var(--d, 1) * -100vw)); } }
@media (max-width: 760px) and (prefers-reduced-motion: no-preference) {
  body.theme-light .tt__panel.is-leave > * { animation: ttTrackOut 520ms cubic-bezier(.32, .72, 0, 1) both; }
  body.theme-light .tt__panel.is-enter > *:not(.tt__phones),
  body.theme-light .tt__panel.is-enter > .v2-sub,
  body.theme-light .tt__panel.is-enter > blockquote,
  body.theme-light .tt__panel.is-enter > figcaption { animation: ttTrackIn 520ms cubic-bezier(.32, .72, 0, 1) both; }
  body.theme-light .tt__panel.is-leave > .tt__phones { animation: ttTrackOut 520ms cubic-bezier(.32, .72, 0, 1) both; }
  body.theme-light .tt__panel.is-enter > .tt__phones { animation: ttTrackIn 640ms cubic-bezier(.32, .72, 0, 1) 40ms both; }
}
body.theme-light .tt__arrow, body.theme-light .pc-arrow, body.theme-light .tt__tabs button, body.theme-light .rv__dots button { -webkit-tap-highlight-color: transparent; }
/* v3, slower and softer (owner, 11 Oct 2026: "slower, more natural, relaxed"). Same curve for old and
   new so they never overlap; the phone takes a little longer, so it still trails its title. */
@media (max-width: 760px) and (prefers-reduced-motion: no-preference) {
  body.theme-light .tt__panel.is-leave > *,
  body.theme-light .tt__panel.is-leave > .tt__phones { animation: ttTrackOut 900ms cubic-bezier(.45, .05, .25, 1) both; }
  body.theme-light .tt__panel.is-enter > *:not(.tt__phones),
  body.theme-light .tt__panel.is-enter > .v2-sub,
  body.theme-light .tt__panel.is-enter > blockquote,
  body.theme-light .tt__panel.is-enter > figcaption { animation: ttTrackIn 900ms cubic-bezier(.45, .05, .25, 1) both; }
  body.theme-light .tt__panel.is-enter > .tt__phones { animation: ttTrackIn 1050ms cubic-bezier(.45, .05, .25, 1) 60ms both; }
}

/* ── Showcase: the premium "Inside the app" gallery (owner, 11 Oct 2026). showcase.js places each phone. ── */
body.theme-light .sc { position: relative; margin-top: 48px; outline: none; }
body.theme-light .sc__stage { position: relative; height: 680px; touch-action: pan-y; user-select: none; -webkit-user-select: none; cursor: grab;
  /* the far phones melt into the page instead of being cut off */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16%, #000 84%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 16%, #000 84%, transparent 100%); }
body.theme-light .sc.is-dragging .sc__stage { cursor: grabbing; }
/* a soft lavender light behind the centre phone, and its shadow on the floor */
body.theme-light .sc__halo { position: absolute; left: 50%; top: 46%; width: 620px; height: 620px; transform: translate(-50%, -50%); pointer-events: none;
  background: radial-gradient(closest-side, rgba(184, 156, 240, 0.34), rgba(184, 156, 240, 0.12) 55%, transparent 100%); }
body.theme-light .sc__halo::after { content: ''; position: absolute; left: 50%; top: calc(50% + 316px); width: 260px; height: 34px; transform: translateX(-50%);
  border-radius: 50%; background: radial-gradient(closest-side, rgba(43, 20, 90, 0.22), transparent); filter: blur(6px); }
body.theme-light .sc__track { position: absolute; inset: 0; }
body.theme-light .sc__slide { position: absolute; left: 50%; top: 0; width: 300px; margin-left: -150px; transform-origin: 50% 50%;
  will-change: transform, opacity; cursor: pointer;
  transition: transform 1100ms cubic-bezier(.22, 1, .36, 1), opacity 900ms cubic-bezier(.22, 1, .36, 1); }
body.theme-light .sc__slide.is-on { cursor: inherit; }
body.theme-light .sc__slide.is-far { transition: none; }
body.theme-light .sc.is-dragging .sc__slide { transition: none; }
body.theme-light .sc__slide .v2-phone { width: 300px; filter: drop-shadow(0 26px 34px rgba(40, 20, 90, 0.2)); }
body.theme-light .sc__slide img { -webkit-user-drag: none; pointer-events: none; }
/* arrows: the owner's soft grey circles, just outside the neighbours */
body.theme-light .sc__arrow { position: absolute; top: 340px; transform: translateY(-50%); z-index: 20;
  display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; padding: 0; border: 0; border-radius: 50%;
  background: rgba(150, 146, 158, 0.55); color: #fff; cursor: pointer; -webkit-tap-highlight-color: transparent;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); transition: background-color 200ms ease, transform 200ms ease; }
body.theme-light .sc__arrow:hover { background: rgba(120, 116, 130, 0.72); }
body.theme-light .sc__arrow:active { transform: translateY(-50%) scale(0.94); }
body.theme-light .sc__arrow:focus-visible { outline: 2px solid var(--v2-violet); outline-offset: 3px; }
body.theme-light .sc__prev { left: calc(50% - 420px); } body.theme-light .sc__next { right: calc(50% - 420px); }
/* one caption, swapped with a soft fade and rise */
body.theme-light .sc__caption { margin: 18px auto 0; max-width: 460px; min-height: 92px; text-align: center; transition: opacity 260ms ease, transform 420ms cubic-bezier(.22, 1, .36, 1); }
body.theme-light .sc.is-swapping .sc__caption { opacity: 0; transform: translateY(8px); transition: opacity 200ms ease, transform 200ms ease; }
body.theme-light .sc__title { margin: 0 0 6px; font-family: var(--v2-serif); font-size: 28px; line-height: 1.2; color: var(--v2-ink); }
body.theme-light .sc__desc { margin: 0; font-size: 16px; line-height: 1.55; color: var(--v2-muted); text-wrap: balance; }
/* segment line: fills while it plays, solid when chosen */
body.theme-light .sc__segs { display: flex; justify-content: center; gap: 6px; margin-top: 22px; }
body.theme-light .sc__seg { position: relative; width: 28px; height: 20px; padding: 0; border: 0; background: none; cursor: pointer; -webkit-tap-highlight-color: transparent; }
body.theme-light .sc__seg::before { content: ''; position: absolute; left: 0; right: 0; top: 50%; height: 3px; margin-top: -1.5px; border-radius: 3px; background: #DDD3EF; transition: background-color 200ms ease; }
body.theme-light .sc__seg:hover::before { background: #C9B8EE; }
body.theme-light .sc__seg i { position: absolute; left: 0; top: 50%; height: 3px; margin-top: -1.5px; width: 0; border-radius: 3px; background: #6A47C9; }
body.theme-light .sc__seg.is-on i { width: 100%; }
body.theme-light .sc.is-playing:not(.is-paused) .sc__seg.is-on i { width: 0; animation: scFill 5200ms linear forwards; }
body.theme-light .sc.is-playing.is-paused .sc__seg.is-on i { width: 0; animation: scFill 5200ms linear forwards; animation-play-state: paused; }
@keyframes scFill { from { width: 0; } to { width: 100%; } }
body.theme-light .sc__seg:focus-visible { outline: 2px solid var(--v2-violet); outline-offset: 2px; border-radius: 4px; }
@media (prefers-reduced-motion: reduce) {
  body.theme-light .sc__slide { transition: opacity 200ms ease; }
  body.theme-light .sc__caption, body.theme-light .sc.is-swapping .sc__caption { transition: none; transform: none; }
}
@media (max-width: 1100px) {
  body.theme-light .sc__prev { left: 16px; } body.theme-light .sc__next { right: 16px; }
}
@media (max-width: 760px) {
  body.theme-light .sc { margin-top: 32px; }
  body.theme-light .sc__stage { height: 520px; -webkit-mask-image: none; mask-image: none; }
  body.theme-light .sc__halo { width: 420px; height: 420px; }
  body.theme-light .sc__halo::after { top: calc(50% + 244px); width: 200px; }
  body.theme-light .sc__slide { width: 230px; margin-left: -115px; }
  body.theme-light .sc__slide .v2-phone { width: 230px; }
  body.theme-light .sc__arrow { top: 260px; width: 44px; height: 44px; }
  body.theme-light .sc__prev { left: 4px; } body.theme-light .sc__next { right: 4px; }
  body.theme-light .sc__caption { padding: 0 8px; min-height: 96px; }
  body.theme-light .sc__title { font-size: 24px; }
  body.theme-light .sc__desc { font-size: 15px; }
  body.theme-light .sc__segs { gap: 4px; }
  body.theme-light .sc__seg { width: 22px; }
}
/* side phones: solid, with the screen dimmed (owner's screenshot showed them milky when faded) */
body.theme-light .sc__slide img { filter: brightness(var(--dim, 1)); transition: filter 900ms cubic-bezier(.22, 1, .36, 1); }
body.theme-light .sc.is-dragging .sc__slide img { transition: none; }
/* desktop arrows out over the faded far phones, so the neighbours stay clean */
@media (min-width: 761px) {
  body.theme-light .sc__prev { left: max(16px, calc(50% - 640px)); }
  body.theme-light .sc__next { right: max(16px, calc(50% - 640px)); }
}
/* v2 (owner, 11 Oct 2026, "smooth it out"): only the centre phone and its two neighbours show, all
   solid. Phones further out fade away as they leave, so nothing is ever half-faded into a milky
   grey, and there is no mask edge to cut a phone off in a straight line. */
body.theme-light .sc__stage { -webkit-mask-image: none; mask-image: none; }
body.theme-light #screens { overflow-x: clip; }
@media (min-width: 761px) {
  body.theme-light .sc__prev { left: max(16px, calc(50% - 540px)); }
  body.theme-light .sc__next { right: max(16px, calc(50% - 540px)); }
}
/* the phone leaving the edge (and the one arriving) passes through grey while it fades; a quick fade
   keeps that moment too short to read, while the glide itself stays long and soft */
body.theme-light .sc__slide { transition: transform 1100ms cubic-bezier(.22, 1, .36, 1), opacity 380ms cubic-bezier(.4, 0, .2, 1); }
body.theme-light .sc__slide.is-far { transition: none; }

/* ── Closing band as its own section (owner, 11 Oct 2026, after Insight Timer's): one flat tint with
   clean straight edges above and below, content centred, then the footer on white underneath. ── */
body.theme-light .v2-close { background: #F1EAFB; padding: 136px 0 144px; }
body.theme-light .v2-close .v2-h2 { margin-bottom: 0; }
body.theme-light .v2-footer { margin-top: 0; border-top: 0; background: #fff; }
body.theme-light .v2-footer__inner { padding-top: 44px; padding-bottom: 48px; }
@media (max-width: 900px) {
  body.theme-light .v2-close { padding: 88px 0 96px; }
  body.theme-light .v2-footer { margin-top: 0; }
  body.theme-light .v2-footer__inner { padding-top: 32px; padding-bottom: 40px; }
}
/* phones: no "Your audio stays on your phone" line under the Library phone (owner, 11 Oct 2026) */
@media (max-width: 900px) { body.theme-light .v2-lock { display: none; } }
/* phone and text move as one: same 900ms curve, no delay (owner, 11 Oct 2026: the text speed is right) */
@media (max-width: 760px) and (prefers-reduced-motion: no-preference) {
  body.theme-light .tt__panel.is-enter > .tt__phones { animation: ttTrackIn 900ms cubic-bezier(.45, .05, .25, 1) both; }
}

/* The same sideways slide on computers too (owner, 11 Oct 2026): Sacred Tools and the reviews move like
   on phones, title, line and phones together on one 900ms curve. Replaces the desktop cross-fade. */
@media (prefers-reduced-motion: no-preference) {
  body.theme-light .tt.is-ready .tt__panel,
  body.theme-light .tt.is-ready .tt__panel.is-on,
  body.theme-light .tt.is-ready .tt__panel .tt__phones .v2-phone { transition: none; }
  body.theme-light .tt.is-ready .tt__panel:not(.is-on) .tt__phones .v2-phone { transform: none; }
  body.theme-light .tt.is-ready .tt__panel.is-leave { visibility: visible; opacity: 1; }
  body.theme-light .tt__panel.is-leave > * { animation: ttTrackOut 900ms cubic-bezier(.45, .05, .25, 1) both; }
  body.theme-light .tt__panel.is-enter > * { animation: ttTrackIn 900ms cubic-bezier(.45, .05, .25, 1) both; }
}
/* phones: more air between Begin your journey and the first section now the cards are gone (owner) */
@media (max-width: 900px) { body.theme-light #sections-root .v2-sec#how { padding-top: 76px; } }
/* warm cream page instead of near-white (owner, 11 Oct 2026, after Insight Timer's #F8F5F0); the footer
   shares it, white stays for cards so they lift off the page */
body.theme-light .v2-footer { background: #F8F5F0; }
/* reviews on plain cream: a wash right above the flat lavender band read as two colours fighting (owner) */
body.theme-light #sections-root #reviews { background: #F8F5F0; }
/* the stars are an inline span, and a transform does not move inline boxes: the old review's stars stayed
   put during the slide and showed as a second row on phones. A block slides with the rest. */
body.theme-light .tt__panel > span, body.theme-light .rv__item .v2-stars { display: block; }

/* "Free" white box under the hero (owner, 11 Oct 2026): the old promise panel, now saying the app is free.
   It overlaps the hero's soft bottom edge on computers; on phones it sits as a white card under the button. */
body.theme-light .v2-free { text-align: center; }
body.theme-light .v2-free .v2-promise__card { align-items: center; padding: 30px 28px 32px; }
body.theme-light .v2-free .v2-promise__title { font-size: 28px; }
body.theme-light .v2-free .v2-promise__text { max-width: 260px; text-wrap: balance; }
body.theme-light .v2-free + #sections-root .v2-sec#how { padding-top: 112px; }
@media (max-width: 900px) {
  body.theme-light .v2-free { margin-top: 0; }
  body.theme-light .v2-free .v2-promise__card { padding: 20px 20px 22px; }
  body.theme-light .v2-free .v2-promise__title { font-size: 24px; }
  body.theme-light .v2-free + #sections-root .v2-sec#how { padding-top: 72px; }
}
