/* Planners Reimagined — liquid glass (light, bright) + 3D product interactivity */

:root {
  --ink: #14171C;
  --dim: rgba(20, 23, 28, 0.62);
  --glass: rgba(255, 255, 255, 0.46);
  --glass-strong: rgba(255, 255, 255, 0.64);
  --edge: rgba(255, 255, 255, 0.8);
  --shadow: 0 24px 80px rgba(30, 40, 60, 0.16);
  --accent: #435239;           /* live — morphs with flagship theme */
  --radius: 24px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { font-family: 'Inter', sans-serif; color: var(--ink); background: #E7EAF1; overflow-x: hidden; }
::selection { background: var(--ink); color: #fff; }
img { max-width: 100%; height: auto; }
button { font: inherit; border: none; background: none; cursor: pointer; }

#aurora { position: fixed; inset: 0; z-index: 0; filter: blur(70px) saturate(1.15); transform: scale(1.12); }
.wrap { position: relative; z-index: 1; }

h1, h2 { font-family: 'Instrument Serif', serif; font-weight: 400; letter-spacing: -0.015em; }
h1 em, h2 em { font-style: italic; }
.eyebrow { display: block; font-size: 13px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--dim); margin-bottom: 16px; }

/* ---------- nav ---------- */
.nav { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); z-index: 50;
  display: flex; align-items: center; gap: 30px; padding: 13px 15px 13px 26px; border-radius: 100px;
  background: var(--glass); backdrop-filter: blur(22px) saturate(1.4); -webkit-backdrop-filter: blur(22px) saturate(1.4);
  border: 1px solid var(--edge); box-shadow: var(--shadow); white-space: nowrap; }
.mark { font-family: 'Instrument Serif', serif; font-size: 20px; color: var(--ink); text-decoration: none; }
.mark em { color: var(--accent); transition: color .8s; }

/* ---------- brand logo (gradient spark tile + wordmark) ---------- */
.pr-logo { display: inline-flex; align-items: center; gap: 2px; text-decoration: none; color: var(--ink); }
.pr-logo__tile { flex-shrink: 0; width: 50px; height: 50px; display: block; }
.pr-logo__tile svg, .pr-logo__mk { width: 100%; height: 100%; display: block; overflow: visible; }
.pr-logo__wm { font-size: 19px; letter-spacing: -0.01em; white-space: nowrap; line-height: 1; }
.pr-logo__wm b { font-family: 'Inter', sans-serif; font-weight: 600; }
.pr-logo__wm i { font-family: 'Instrument Serif', serif; font-style: italic; font-size: 21px; color: #E32A8F; }
.pr-logo--footer .pr-logo__tile { width: 54px; height: 54px; }
/* Homepage only: the loose AI piece drifts into place once on load, then sits static. */
.pr-logo__mk--anim .jig-loose-anim {
  transform-box: view-box; transform-origin: 58.5px 43.5px;
  animation: jigSettle 0.9s cubic-bezier(0.34, 1.32, 0.64, 1) 0.15s both;
}
@keyframes jigSettle {
  0%   { transform: translate(16px, -13px) rotate(22deg); opacity: 0; }
  35%  { opacity: 1; }
  100% { transform: translate(0, 0) rotate(0); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .pr-logo__mk--anim .jig-loose-anim { animation: none; }
}
.pr-logo--footer .pr-logo__wm { font-size: 21px; }
.pr-logo--footer .pr-logo__wm i { font-size: 23px; }
.nav-menu { display: contents; }
.nav-links { display: flex; gap: 26px; }
.nav .link { font-size: 14px; color: rgba(20, 23, 28, 0.85); text-decoration: none; transition: color .2s; }
.nav .link:hover { color: var(--ink); }
.nav .cta { font-size: 14px; font-weight: 600; color: #fff; background: var(--ink); padding: 11px 22px; border-radius: 100px; text-decoration: none; transition: transform .2s; }
.nav .cta:hover { transform: scale(1.05); }
/* hamburger — hidden on desktop, shown in the mobile media query */
.nav-toggle { display: none; width: 42px; height: 42px; flex: none; flex-direction: column;
  align-items: center; justify-content: center; gap: 4px; padding: 0; cursor: pointer;
  background: var(--ink); border: none; border-radius: 50%; }
.nav-toggle span { width: 17px; height: 2px; background: #fff; border-radius: 2px;
  transition: transform .25s, opacity .2s; }
.nav.is-open .nav-toggle span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nav.is-open .nav-toggle span:nth-child(2) { opacity: 0; }
.nav.is-open .nav-toggle span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* ---------- hero ---------- */
.hero { position: relative; text-align: center; padding: clamp(124px, 17vw, 210px) 0 16px; }
.hero-inner { max-width: 1000px; margin: 0 auto; padding: 0 24px; }
/* AI-coach pill — solid brand gradient (slowly flowing) + thin shine sweep every 20s */
.pill { position: relative; overflow: hidden;
  display: inline-flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 600; color: #fff;
  background: linear-gradient(110deg, #FC6200, #E32A8F 55%, #7B4399); background-size: 200% 100%;
  border: none; border-radius: 100px; padding: 11px 22px; margin-top: 30px;
  box-shadow: 0 10px 28px rgba(227, 42, 143, 0.32);
  animation: pr-pill-flow 7s ease-in-out infinite; }
@keyframes pr-pill-flow { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
/* the shine: a thin streak that crosses once, then waits — full cycle 20s */
.pill::after { content: ''; position: absolute; top: 0; left: 0; height: 100%; width: 16%; pointer-events: none;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.75), transparent);
  transform: skewX(-18deg) translateX(-250%);
  animation: pr-pill-shine 20s ease-in-out infinite; }
@keyframes pr-pill-shine {
  0%   { transform: skewX(-18deg) translateX(-250%); }
  7%   { transform: skewX(-18deg) translateX(760%); }
  100% { transform: skewX(-18deg) translateX(760%); }
}
.pill-spark { width: 21px; height: 21px; flex-shrink: 0; transform-origin: center;
  animation: pr-pill-sparkpulse 2.8s ease-in-out infinite; }
.pill-spark path { fill: #fff; }
@keyframes pr-pill-sparkpulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.16); } }
@media (prefers-reduced-motion: reduce) {
  .pill, .pill-spark { animation: none; }
  .pill::after { display: none; }
}
h1 { font-size: clamp(44px, 6.4vw, 88px); line-height: 1.0; }
.sub { margin: 22px auto 0; max-width: 58ch; font-size: clamp(15px, 1.35vw, 18px); line-height: 1.65; color: var(--dim); }
.hero-ctas { margin-top: 38px; display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.btn { display: inline-block; font-size: 15px; font-weight: 600; text-decoration: none; padding: 16px 30px; border-radius: 100px; transition: transform .2s, box-shadow .2s, background .2s; }
.btn-dark { background: var(--ink); color: #fff; box-shadow: 0 12px 36px rgba(16,20,24,0.24); }
.btn-dark:hover { transform: translateY(-2px) scale(1.02); }
.btn-glass { background: var(--glass); border: 1px solid var(--edge); color: var(--ink);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
.btn-glass:hover { background: var(--glass-strong); }
.btn-light { background: #fff; color: var(--ink); }
.btn-light:hover { transform: translateY(-2px) scale(1.02); }
.scroll-hint { position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%); font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--dim); display: flex; gap: 8px; align-items: center; }
.scroll-hint span { animation: bob 1.8s infinite; display: inline-block; }
@keyframes bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(5px); } }

/* floating insight cards — deliberately cross-domain (budget / wedding / habits) */
.float-card { position: absolute; border-radius: 20px; background: var(--glass); border: 1px solid var(--edge);
  backdrop-filter: blur(22px) saturate(1.3); -webkit-backdrop-filter: blur(22px) saturate(1.3);
  box-shadow: var(--shadow); padding: 16px 20px; text-align: left; pointer-events: none; z-index: 2; }
.float-card .t { font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--dim); margin-bottom: 5px; }
.float-card .v { font-family: 'Instrument Serif', serif; font-size: 32px; line-height: 1.1; }
.float-card .v small { font-size: 15px; color: var(--dim); font-family: 'Inter', sans-serif; }
.float-card .coach-line { font-size: 17px; font-family: 'Inter', sans-serif; font-weight: 500; line-height: 1.45; max-width: 240px; }
/* coach Q&A cards — a real Insight question + the start of the answer, styled as a
   speech bubble. Position + fade are driven by JS (roamCoachCards), so no fixed top/left. */
.fc-qa { max-width: 290px; opacity: 0; }
.fc-qa .qa-q { font-size: 14px; font-weight: 600; color: var(--ink); line-height: 1.35; margin-bottom: 8px; }
.fc-qa .qa-a { font-size: 15.5px; font-weight: 500; line-height: 1.45; color: var(--dim); }
/* speech-bubble tail: vertical left edge dropping from the body, diagonal back up to the right —
   the same liquid glass as the body (no solid fill behind it). */
.fc-qa::after { content: ''; position: absolute; left: 30px; top: calc(100% - 1px); width: 25px; height: 18px;
  background: var(--glass); clip-path: polygon(0 0, 0 100%, 100% 0);
  backdrop-filter: blur(22px) saturate(1.3); -webkit-backdrop-filter: blur(22px) saturate(1.3); }

/* ---------- 3D ring carousel ---------- */
.orbit-viewport { position: relative; width: 100%; overflow: hidden;
  height: clamp(420px, 46vh, 470px); margin-top: 12px;
  perspective: 1250px; perspective-origin: 50% 34%;
  touch-action: pan-y; cursor: grab; }
.orbit-viewport.dragging { cursor: grabbing; }
.orbit { position: absolute; inset: 0; transform-style: preserve-3d; }
.o-card { position: absolute; top: 44px; left: 50%; width: min(380px, 72vw);
  margin-left: calc(min(380px, 72vw) / -2);
  border-radius: 14px; overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.45);
  box-shadow: 0 30px 80px rgba(30, 40, 60, 0.22);
  transform-origin: 50% 50%; will-change: transform;
  user-select: none; -webkit-user-drag: none;
  transition: opacity .15s linear, filter .15s linear;
  /* fixed padding — % here resolves against the carousel, not the card */
  padding: 15px 17px 17px; color: #fff; cursor: pointer; }
.o-card img { pointer-events: none; }
/* cover internals (treatment C) — content fills the card */
.oc-head { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; margin-bottom: 11px; }
.oc-name { font-family: 'Instrument Serif', serif; font-size: 19px; letter-spacing: -0.01em; white-space: nowrap;
  text-shadow: 0 1px 2px rgba(0,0,0,0.18); }
.oc-meta { font-size: 9.5px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: rgba(255,255,255,0.96);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; text-shadow: 0 1px 2px rgba(0,0,0,0.22); }
/* "Best value" flag on the flagship card */
.oc-badge { position: absolute; top: 14px; right: 15px; z-index: 4; font-size: 9.5px; font-weight: 700;
  letter-spacing: .05em; text-transform: uppercase; color: #fff; padding: 4px 10px; border-radius: 100px;
  background: linear-gradient(120deg, #FC6200, #E32A8F); box-shadow: 0 5px 14px rgba(0,0,0,0.28); white-space: nowrap; }
@media (max-width: 700px) { .oc-name { font-size: 16px; } }
.oc-shot { background: #fff; border: 4px solid #fff; box-shadow: 0 14px 34px rgba(0,0,0,0.28); border-radius: 7px; overflow: hidden;
  aspect-ratio: 2.16 / 1; }
.oc-shot img { width: 100%; height: 100%; object-fit: cover; object-position: top left; display: block; border-radius: 4px;
  transform: scale(1.07); transform-origin: top left; }
.oc-placeholder { aspect-ratio: 2.16 / 1; display: grid; place-items: center; background: rgba(255,255,255,0.14); box-shadow: none; }
.oc-placeholder span { font-family: 'Instrument Serif', serif; font-size: clamp(17px, 1.9vw, 24px); color: rgba(255,255,255,0.92); }
/* facing away from the viewer → the card's own design ghosts through,
   mirrored and washed, like a translucent card seen from behind */
.o-card::before { content: ''; position: absolute; inset: 0; z-index: 5;
  background: linear-gradient(160deg, rgba(255,255,255,0.5) 0%, rgba(244,246,250,0.38) 100%);
  opacity: 0; transition: opacity .25s; pointer-events: none; }
.o-card.facing-away::before { opacity: 1; }
/* centred pair sitting just below the cards (front card bottom ≈ 365px) */
.o-arrow { position: absolute; top: 350px; z-index: 200;
  width: 52px; height: 52px; border-radius: 50%; font-size: 19px; color: var(--ink);
  background: var(--glass-strong); border: 1px solid var(--edge);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  box-shadow: var(--shadow); transition: transform .2s, background .2s; }
.o-arrow:hover { transform: scale(1.12); background: #fff; }
/* no browser-blue ring after mouse clicks; clear brand-coloured ring for keyboard focus */
.o-arrow:focus { outline: none; }
.o-arrow:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.o-prev { left: calc(50% - 64px); right: auto; }
.o-next { left: calc(50% + 12px); right: auto; }

.orbit-detail { max-width: 680px; margin: 6px auto 0; padding: 0 24px 30px; min-height: 210px; }
.od-tag { display: inline-block; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  padding: 6px 13px; border-radius: 100px; background: var(--ink); color: #fff; margin-bottom: 14px; }
.od-tag.soon { background: rgba(20,23,28,0.1); color: var(--dim); }
.od-title { font-size: clamp(28px, 3.4vw, 42px); line-height: 1.05; }
.od-edition { margin-top: 8px; font-size: 14px; font-weight: 500; color: var(--accent); transition: color .4s; }
.od-desc { margin: 10px auto 0; max-width: 52ch; font-size: 15px; line-height: 1.6; color: var(--dim); }
.od-meta { margin-top: 22px; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.od-cta { padding: 14px 30px; }
.od-cta.disabled { background: rgba(20,23,28,0.08); color: var(--dim); box-shadow: none; pointer-events: none; }
@media (max-width: 700px) {
  .o-arrow { display: none; }
  .orbit-viewport { height: clamp(300px, 38vh, 400px); }
}

/* ---------- shared panel / glass sheet ---------- */
.panel { padding: clamp(32px, 5vw, 52px) 24px; max-width: 1280px; margin: 0 auto; }
.glass-sheet { background: var(--glass); border: 1px solid var(--edge); border-radius: 36px;
  backdrop-filter: blur(26px) saturate(1.35); -webkit-backdrop-filter: blur(26px) saturate(1.35);
  box-shadow: var(--shadow); padding: clamp(32px, 5vw, 72px); }
.panel h2 { font-size: clamp(34px, 4.4vw, 58px); line-height: 1.06; max-width: 24ch; }

.feature-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 44px; }
.f-card { background: rgba(255,255,255,0.52); border: 1px solid var(--edge); border-radius: 22px; padding: 30px 28px; }
.f-ico { font-size: 22px; color: var(--accent); margin-bottom: 18px; transition: color .8s; }
.f-card h3 { font-size: 17.5px; font-weight: 600; margin-bottom: 10px; }
.f-card p { font-size: 14.5px; line-height: 1.62; color: var(--dim); }

/* ---------- why section ---------- */
.why-lead { margin-top: 22px; max-width: 64ch; font-size: 17px; line-height: 1.62; color: var(--dim); }
.feature-row--why { grid-template-columns: repeat(4, 1fr); margin-top: 38px; }
.feature-row--why .f-card { padding: 28px 24px; }
.f-badge { width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center;
  margin-bottom: 18px; color: #fff; box-shadow: 0 8px 20px -6px rgba(20,30,50,0.35); }
.f-badge svg { width: 24px; height: 24px; }
.f-badge--blue   { background: linear-gradient(135deg, #1377FF, #0A4FCC); }
.f-badge--green  { background: linear-gradient(135deg, #22B573, #117A4A); }
.f-badge--pink   { background: linear-gradient(135deg, #E32A8F, #B5167A); }
.f-badge--orange { background: linear-gradient(135deg, #FC6200, #E0431A); }
@media (max-width: 1000px) { .feature-row--why { grid-template-columns: repeat(2, 1fr); } }

/* ---------- flagship 3D ---------- */
.flagship { padding: 90px 24px 70px; max-width: 1380px; margin: 0 auto; text-align: center; }
.flagship-head h2 { font-size: clamp(38px, 5vw, 68px); line-height: 1.04; margin: 0 auto; }
.theme-name em { color: var(--accent); transition: color .8s; }
.sub-center { margin: 22px auto 0; max-width: 58ch; font-size: 16.5px; line-height: 1.6; color: var(--dim); }

.stage { perspective: 1700px; display: grid; place-items: center; margin-top: 56px; }
.object { position: relative; width: min(72vw, 880px); transform-style: preserve-3d; will-change: transform; }
.pane { overflow: hidden;
  box-shadow: 0 50px 110px rgba(30, 40, 60, 0.34); background: #fff; }
.pane img { width: 100%; display: block; }
.layer { position: absolute; border-radius: 16px; background: var(--glass-strong); border: 1px solid var(--edge);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: var(--shadow); padding: 15px 20px; transform-style: preserve-3d; text-align: left; }
.layer .t { font-size: 11px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: var(--dim); margin-bottom: 4px; }
.layer .v { font-family: 'Instrument Serif', serif; font-size: 26px; }
.layer .v small { font-size: 14px; color: var(--dim); font-family: 'Inter', sans-serif; }
#ly-score { top: -26px; right: -30px; transform: translateZ(80px); }
#ly-coach { bottom: -28px; left: -36px; transform: translateZ(110px); max-width: 300px; }
#ly-coach .v { font-family: 'Inter', sans-serif; font-size: 14.5px; font-weight: 500; line-height: 1.45; }
#ly-coach .v b { color: var(--accent); transition: color .8s; }

.dock { display: flex; gap: 12px; justify-content: center; margin-top: 52px; flex-wrap: wrap; }
.chip { width: 46px; height: 46px; border-radius: 16px; background: var(--cc);
  border: 1px solid rgba(255,255,255,0.85); box-shadow: 0 6px 20px rgba(30,40,60,0.22);
  transition: transform .18s; position: relative; }
.chip:hover { transform: translateY(-5px) scale(1.07); }
.chip.active { outline: 2.5px solid var(--ink); outline-offset: 3px; }
.chip::after { content: attr(data-name); position: absolute; top: -38px; left: 50%; transform: translateX(-50%);
  font-size: 11.5px; font-weight: 500; white-space: nowrap; background: var(--ink); color: #fff;
  padding: 5px 11px; border-radius: 8px; opacity: 0; transition: opacity .18s; pointer-events: none; }
.chip:hover::after { opacity: 1; }
.dock-label { margin-top: 22px; font-size: 13.5px; color: var(--dim); }
.dock-label b { color: var(--ink); font-weight: 600; }

.buy-row { margin-top: 44px; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.btn-buy { font-size: 16.5px; padding: 18px 38px; }
.was { font-size: 13.5px; color: var(--dim); }
.was s { opacity: .65; }

/* ---------- coach section ---------- */
.coach-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: clamp(28px, 4vw, 56px); align-items: center; }
#coach .coach-grid { align-items: start; }   /* top-align so the eyebrow isn't pushed down by the taller laptop */
.coach-text p { font-size: 16px; line-height: 1.65; color: var(--dim); margin-top: 16px; max-width: 50ch; }
.coach-text .fine { font-size: 13px; opacity: .85; }
.coach-shot img { border-radius: 18px; border: 1px solid var(--edge); box-shadow: var(--shadow); display: block; }

/* ---------- laptop mockup (angled) in the coach section ---------- */
.laptop { position: relative; aspect-ratio: 1794 / 1344; pointer-events: none;
  filter: drop-shadow(0 32px 55px rgba(20,30,50,0.26)); }
.laptop-screen { position: absolute; overflow: hidden; z-index: 1; }
.laptop-screen img { width: 100%; height: 100%; object-fit: cover; object-position: left top; display: block;
  transition: opacity .3s; }
.laptop-frame { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; }
.laptop--angle .laptop-screen { left: 0; top: 0; width: 100%; height: 100%; transform-origin: 0 0; }
.laptop--headon .laptop-screen { left: 15.85%; top: 16%; width: 67.85%; height: 54.48%; }
/* the laptop images carry no card chrome (overrides .coach-shot img) */
.coach-shot .laptop img { border: none; border-radius: 0; box-shadow: none; }
.coach-shot .laptop { width: 125%; margin: 0 -12.5%; transform: translateY(50px); }
/* the coach screenshot is pre-cropped to the content block at the screen's aspect, so it fills exactly */
.coach-shot .laptop--headon .laptop-screen img { object-position: center; }

/* ---------- coach: interactive "ask the coach" demo ---------- */
/* the head-on laptop SVG carries transparent space below its base; pull the demo up to absorb it.
   Fixed px (not vw) because .panel caps at max-width 1280px — the laptop stops growing past that,
   so a vw-based pull would overshoot and overlap on wide screens. */
.coach-shot { margin-bottom: -45px; }
.coach-ask { margin-top: 28px; padding-top: 28px; }
.coach-ask__lead { display: flex; align-items: center; gap: 9px; font-size: 12px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; color: var(--dim); margin-bottom: 18px; }
.ca-dot { width: 9px; height: 9px; border-radius: 50%; background: #C2130E;
  box-shadow: 0 0 0 4px rgba(194,19,14,.16); }
.coach-ask__qs { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
.cq { font: inherit; font-size: 14px; font-weight: 500; color: var(--ink);
  background: rgba(255,255,255,.55); border: 1px solid var(--edge); border-radius: 100px;
  padding: 10px 18px; cursor: pointer; transition: transform .15s, background .2s, color .2s, border-color .2s; }
.cq:hover { transform: translateY(-1px); background: rgba(255,255,255,.82); }
.cq.is-active { background: var(--ink); color: #fff; border-color: var(--ink); }
.coach-ask__answers { background: rgba(255,255,255,.5); border: 1px solid var(--edge);
  border-radius: 18px; padding: 22px 24px; min-height: 132px; }
.ca { display: none; }
.ca.is-active { display: block; }
.ca-from { display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; color: var(--dim); margin-bottom: 10px; }
.ca-from::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: #C2130E; }
.ca p { margin: 0; font-size: 16.5px; line-height: 1.6; color: var(--ink); max-width: 68ch; }
.ca.is-typing p::after { content: '▍'; margin-left: 1px; opacity: .6;
  animation: caretBlink 1s steps(1) infinite; }
@keyframes caretBlink { 50% { opacity: 0; } }
@media (max-width: 560px) { .ca p { font-size: 15.5px; } .coach-ask__answers { min-height: 168px; } }

/* ---------- range ---------- */
.range-head { text-align: center; }
.range-head h2 { margin: 0 auto; }
.range-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 44px; }
.r-card { display: block; border-radius: 24px; padding: 28px 26px 30px; text-decoration: none; color: var(--ink);
  background: var(--glass); border: 1px solid var(--edge);
  backdrop-filter: blur(20px) saturate(1.3); -webkit-backdrop-filter: blur(20px) saturate(1.3);
  box-shadow: var(--shadow); transition: transform .25s; }
.r-card:hover { transform: translateY(-6px); }
.r-tag { display: inline-block; font-size: 11.5px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase;
  padding: 5px 11px; border-radius: 100px; background: rgba(20,23,28,0.08); color: var(--dim); margin-bottom: 18px; }
.r-card.available .r-tag { background: var(--ink); color: #fff; }
.r-card h3 { font-size: 18px; font-weight: 600; margin-bottom: 9px; }
.r-card p { font-size: 14px; line-height: 1.58; color: var(--dim); }
.r-cta { display: inline-block; margin-top: 16px; font-size: 14px; font-weight: 600; color: var(--ink); }
.r-card.soon { opacity: .82; }

/* ---------- find-your-planner quiz ---------- */
.quiz { max-width: 780px; margin: 42px auto 0; }
.quiz-step { display: none; }
.quiz-step.is-active { display: block; animation: quizIn .4s ease both; }
@keyframes quizIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.quiz-q { text-align: center; font-size: 14px; font-weight: 600; letter-spacing: .03em; color: var(--dim); margin-bottom: 22px; }
.quiz-opts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.quiz-opts--2 { grid-template-columns: repeat(2, 1fr); }
.quiz-opt { display: flex; align-items: center; gap: 15px; text-align: left;
  background: rgba(255,255,255,0.55); border: 1px solid var(--edge); border-radius: 18px;
  padding: 16px 18px; cursor: pointer; font: inherit;
  transition: transform .2s, border-color .2s, box-shadow .2s, background .2s; }
.quiz-opt:hover { transform: translateY(-3px); border-color: var(--qa, var(--ink));
  background: color-mix(in srgb, var(--qa) 7%, rgba(255,255,255,0.7));
  box-shadow: 0 14px 30px -16px color-mix(in srgb, var(--qa) 70%, transparent); }
.qo-ico { flex: none; width: 42px; height: 42px; border-radius: 13px; display: grid; place-items: center;
  color: #fff; background: linear-gradient(135deg, var(--qa), color-mix(in srgb, var(--qa) 65%, #000));
  box-shadow: 0 8px 18px -8px color-mix(in srgb, var(--qa) 75%, transparent); }
.qo-ico svg { width: 22px; height: 22px; }
.qo-body { display: block; }
.quiz-opt b { display: block; font-size: 16px; font-weight: 600; color: var(--ink); margin-bottom: 3px; }
.qo-body span { display: block; font-size: 13.5px; line-height: 1.5; color: var(--dim); }
.quiz-back { display: inline-flex; align-items: center; gap: 6px; margin-top: 22px; background: none; border: none;
  cursor: pointer; font: inherit; font-size: 13.5px; font-weight: 600; color: var(--dim); }
.quiz-back:hover { color: var(--ink); }
.quiz-result { text-align: center; --qr: var(--accent);
  --tick: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="3.2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>'); }
.quiz-result.is-active { border-radius: 26px; padding: 38px 28px 34px;
  background: linear-gradient(160deg, color-mix(in srgb, var(--qr) 11%, transparent), transparent 70%);
  animation: quizIn .4s ease both; }
.qr-shot { max-width: 440px; margin: 0 auto 24px; padding: 0; border-radius: 16px; overflow: hidden;
  border: 1px solid var(--edge); background: #fff; aspect-ratio: 16 / 10;
  box-shadow: 0 22px 48px -22px color-mix(in srgb, var(--qr) 55%, rgba(20,30,50,.45)); }
.qr-shot[hidden] { display: none; }
.qr-shot img { width: 100%; height: 100%; object-fit: cover; object-position: top center; display: block; }
.qr-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--qr); }
.qr-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--qr);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--qr) 22%, transparent); }
.qr-name { font-family: 'Instrument Serif', serif; font-weight: 400; letter-spacing: -0.015em;
  font-size: clamp(30px, 3.6vw, 46px); line-height: 1.05; margin: 12px 0 0; color: var(--qr); }
.qr-why { max-width: 54ch; margin: 16px auto 0; font-size: 16px; line-height: 1.6; color: var(--dim); }
.qr-feats { list-style: none; max-width: 440px; margin: 22px auto 0; display: grid; gap: 10px; text-align: left; }
.qr-feats li { position: relative; padding-left: 30px; font-size: 14.5px; line-height: 1.5; color: var(--ink); }
.qr-feats li::before { content: ''; position: absolute; left: 0; top: 1px; width: 19px; height: 19px; border-radius: 50%;
  background: var(--qr); -webkit-mask: var(--tick) center/11px no-repeat; mask: var(--tick) center/11px no-repeat; }
.qr-meta { margin: 20px auto 0; font-size: 12.5px; font-weight: 600; letter-spacing: .02em; color: var(--qr);
  text-transform: uppercase; opacity: .92; }
.qr-actions { display: flex; gap: 18px; justify-content: center; align-items: center; flex-wrap: wrap; margin-top: 26px; }
.qr-actions .btn { background: var(--qr); border-color: var(--qr); color: #fff; }
.qr-actions .btn:hover { filter: brightness(1.07); }
.qr-browse { font-size: 14px; font-weight: 600; color: var(--ink); text-decoration: none; }
.qr-browse:hover { text-decoration: underline; }
.quiz-result .quiz-back { display: block; margin: 26px auto 0; }
@media (max-width: 640px) { .quiz-opts, .quiz-opts--2 { grid-template-columns: 1fr; } }

/* ---------- steps ---------- */
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 44px; }
.step .n { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 50%;
  background: var(--ink); color: #fff; font-family: 'Instrument Serif', serif; font-size: 20px; margin-bottom: 14px; }
.steps .step:nth-child(1) .n { background: #FC6200; }  /* papaya */
.steps .step:nth-child(2) .n { background: #E32A8F; }  /* pink */
.steps .step:nth-child(3) .n { background: #7B4399; }  /* berry */
.steps .step:nth-child(4) .n { background: #1377FF; }  /* cool-blue */
.step h3 { font-size: 16.5px; font-weight: 600; margin-bottom: 7px; }
.step p { font-size: 14px; line-height: 1.55; color: var(--dim); }

/* ---------- trust ---------- */
.trust-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.t-card { border-radius: 22px; padding: 28px; background: var(--glass); border: 1px solid var(--edge);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); box-shadow: var(--shadow); }
.t-card h3 { font-size: 16.5px; font-weight: 600; margin-bottom: 8px; }
.t-card p { font-size: 14px; line-height: 1.58; color: var(--dim); }

/* ---------- "Never get stuck" — Setup Guide feature ---------- */
.guide-shot { display: flex; justify-content: center; }
.guide-points { list-style: none; padding: 0; margin: 22px 0 0; display: flex; flex-direction: column; gap: 13px; }
.guide-points li { position: relative; padding-left: 30px; font-size: 16px; line-height: 1.5; color: var(--ink); }
.guide-points li b { font-weight: 600; }
.guide-points li::before { content: '✓'; position: absolute; left: 0; top: 1px; width: 20px; height: 20px;
  display: grid; place-items: center; border-radius: 6px; color: #fff; font-size: 12px; font-weight: 700;
  background: linear-gradient(135deg, #FC6200, #E32A8F 55%, #7B4399); }

.sg-pane { width: 300px; max-width: 100%; background: #fff; border: 1px solid var(--edge);
  border-radius: 18px; box-shadow: var(--shadow); overflow: hidden; text-align: left; }
.sg-head { padding: 14px 16px 12px; border-bottom: 1px solid var(--edge); }
.sg-brandrow { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.sg-brand { font-size: 10.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--dim); }
.sg-logo { width: 30px; height: 30px; flex: none; }
.sg-product { font-size: 14.5px; font-weight: 700; margin-top: 3px; color: var(--ink); }
.sg-hint { font-size: 11.5px; color: var(--dim); margin-top: 5px; }
.sg-sec { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 16px;
  font-weight: 700; font-size: 13.5px; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.16);
  background: linear-gradient(90deg, #FC6200, #E32A8F 55%, #7B4399); border-top: 1px solid rgba(255,255,255,.5); }
.sg-chev { width: 7px; height: 7px; flex: none; border-right: 2px solid rgba(255,255,255,.92);
  border-bottom: 2px solid rgba(255,255,255,.92); transform: rotate(-45deg); }
.sg-sec--open .sg-chev { transform: rotate(45deg); }
.sg-body { padding: 12px 16px 14px; }
.sg-step-t { font-weight: 700; font-size: 13.5px; color: var(--ink); margin-bottom: 4px; }
.sg-step-b { font-size: 12.5px; line-height: 1.5; color: var(--ink); }
.sg-showme { margin-top: 12px; display: inline-flex; align-items: center; gap: 6px; color: #fff;
  font-weight: 600; font-size: 12.5px; background: linear-gradient(135deg, #FC6200, #E32A8F 55%, #7B4399);
  padding: 8px 14px; border-radius: 99px; box-shadow: 0 5px 14px rgba(227,42,143,.28); }
.sg-showme svg { width: 13px; height: 13px; fill: #fff; }

/* ---------- FAQ ---------- */
.faq-sheet { max-width: none; margin: 0 auto; }  /* fill the panel, matching the other sheets */
.qa { border-bottom: 1px solid rgba(20,23,28,0.12); }
.qa summary { display: flex; justify-content: space-between; align-items: center; gap: 16px;
  list-style: none; cursor: pointer; padding: 20px 0; font-size: 17px; font-weight: 600; }
.qa summary::-webkit-details-marker { display: none; }
.qi { color: var(--accent); font-size: 22px; transition: transform .2s, color .8s; }
.qa[open] .qi { transform: rotate(45deg); }
.qa p { padding: 0 0 20px; font-size: 15px; line-height: 1.65; color: var(--dim); max-width: 92ch; }

/* ---------- final band + footer ---------- */
.final-band { text-align: center; border-radius: 36px; padding: clamp(48px, 7vw, 90px) 24px;
  background: var(--ink); color: #fff; box-shadow: 0 30px 90px rgba(16,20,24,0.35); }
.final-band h2 { font-size: clamp(36px, 5vw, 64px); }
.final-band p { margin: 16px 0 30px; font-size: 17px; color: rgba(255,255,255,0.75); }

footer { max-width: 1280px; margin: 0 auto; padding: 50px 24px 60px; display: grid;
  grid-template-columns: 1fr auto; gap: 20px; align-items: start; }
.foot-left .mark { font-size: 22px; }
.foot-left p { margin-top: 8px; font-size: 13.5px; color: var(--dim); }
.foot-links { display: flex; gap: 22px; flex-wrap: wrap; }
.foot-links a { font-size: 14px; color: var(--dim); text-decoration: none; }
.foot-links a:hover { color: var(--ink); }
.foot-legal { grid-column: 1 / -1; padding-top: 18px; border-top: 1px solid rgba(20,23,28,0.1);
  font-size: 12.5px; color: var(--dim); }

/* ---------- responsive ---------- */
@media (max-width: 1100px) {
  .range-row, .steps { grid-template-columns: repeat(2, 1fr); }
  .float-card { display: none; }   /* not enough margin beside the heading below this width */
}
@media (max-width: 900px) {
  /* nav becomes a full-width bar with a hamburger that opens a dropdown */
  .nav { left: 16px; right: 16px; width: auto; transform: none;
    justify-content: space-between; gap: 12px; padding: 11px 11px 11px 18px; }
  .nav-toggle { display: inline-flex; }
  .nav-menu { display: none; position: absolute; top: calc(100% + 10px); left: 0; right: 0;
    flex-direction: column; align-items: stretch; gap: 4px; padding: 14px;
    background: var(--glass-strong); backdrop-filter: blur(22px) saturate(1.4);
    -webkit-backdrop-filter: blur(22px) saturate(1.4); border: 1px solid var(--edge);
    border-radius: 22px; box-shadow: var(--shadow); }
  .nav.is-open .nav-menu { display: flex; }
  .nav-links { display: flex; flex-direction: column; gap: 2px; }
  .nav .link { padding: 12px 14px; border-radius: 12px; font-size: 15.5px; color: var(--ink); }
  .nav .link:hover { background: rgba(255,255,255,0.5); }
  .nav .cta { margin-top: 6px; padding: 14px; font-size: 15px; text-align: center; }

  .float-card { display: none; }
  .feature-row, .trust-row, .coach-grid { grid-template-columns: 1fr; }
  .object { width: min(92vw, 680px); }
  #ly-coach { left: -6px; } #ly-score { right: -6px; }
  /* drop the desktop downward-nudge + over-width on the coach laptop (closes the empty gap) */
  .coach-shot .laptop { transform: none; width: 100%; margin: 0; }
  .coach-shot { margin-bottom: -8%; }   /* gentler pull for the smaller mobile laptop */
  .coach-ask { margin-top: 22px; padding-top: 24px; }
}
@media (max-width: 560px) {
  .range-row, .steps { grid-template-columns: 1fr; }
  .feature-row--why { grid-template-columns: 1fr; }
  footer { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .scroll-hint span { animation: none; }
}

/* Cookie consent banner (GA4 Consent Mode) */
.cookie-banner { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 9999;
  max-width: 720px; margin: 0 auto; display: flex; flex-wrap: wrap; align-items: center;
  gap: 12px 18px; padding: 16px 20px; background: #14171C; color: #f3f0ea;
  border-radius: 16px; box-shadow: 0 18px 50px rgba(0,0,0,.30);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
  font-size: 14px; line-height: 1.5; }
.cookie-banner__txt { margin: 0; flex: 1 1 300px; }
.cookie-banner__txt a { color: #fff; text-decoration: underline; }
.cookie-banner__btns { display: flex; gap: 10px; margin-left: auto; }
.cookie-btn { cursor: pointer; border: none; font: inherit; font-weight: 600; font-size: 13.5px;
  padding: 9px 18px; border-radius: 999px; transition: filter .12s, background .12s; }
.cookie-btn--ghost { background: transparent; color: #d7d2ca; border: 1px solid rgba(255,255,255,.30); }
.cookie-btn--ghost:hover { background: rgba(255,255,255,.08); }
.cookie-btn--solid { background: linear-gradient(135deg,#FC6200,#E32A8F 55%,#7B4399); color: #fff; }
.cookie-btn--solid:hover { filter: brightness(1.07); }
@media (max-width: 540px) {
  .cookie-banner { flex-direction: column; align-items: stretch; gap: 12px; }
  .cookie-banner__btns { margin-left: 0; }
  .cookie-btn { flex: 1; }
}

/* Site-wide free-planner promo bar (injected by js/promo.js; homepage has its own inline copy) */
.promo-bar { display: none; position: fixed; top: 0; left: 0; right: 0; z-index: 60;
  align-items: center; justify-content: center; gap: 14px; padding: 9px 46px 9px 16px; text-align: center;
  background: linear-gradient(90deg, #FC6200, #E32A8F 55%, #7B4399); color: #fff; font: 600 14px/1.3 Inter, sans-serif; }
.promo-bar.on { display: flex; }
.promo-bar a.promo-link { color: #fff; text-decoration: none; }
.promo-bar a.promo-link u { text-underline-offset: 3px; }
.promo-x { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 26px; height: 26px;
  border: none; border-radius: 50%; background: rgba(255,255,255,.2); color: #fff; font-size: 15px; line-height: 1; cursor: pointer; }
.promo-x:hover { background: rgba(255,255,255,.34); }
body.promobar .nav { top: 56px; }
/* nudge in-flow content down by the nav's drop so page heroes/titles still clear the lowered nav */
body.promobar .wrap { padding-top: 36px; }
@media (max-width: 600px) { .promo-bar { font-size: 12.5px; padding: 8px 40px 8px 12px; } body.promobar .nav { top: 66px; } body.promobar .wrap { padding-top: 46px; } }

/* ---------- hero advert video (the brand advert front and centre, 2026-07-03) ---------- */
.advert-hero { position: relative; max-width: 940px; margin: 30px auto 0; padding: 0 24px; }
.advert-hero__video { width: 100%; height: auto; display: block; border-radius: 24px;
  border: 1px solid var(--edge); box-shadow: 0 30px 80px rgba(30, 40, 60, 0.22); background: #f2f1ee; }
.advert-hero__sound { position: absolute; right: 42px; bottom: 18px; width: 46px; height: 46px;
  border-radius: 50%; border: 1px solid var(--edge); background: var(--glass-strong); color: var(--ink);
  display: grid; place-items: center; cursor: pointer;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: var(--shadow); transition: transform .2s, background .2s; }
.advert-hero__sound:hover { transform: scale(1.1); background: #fff; }
.advert-hero__sound:focus { outline: none; }
.advert-hero__sound:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.advert-hero__sound svg { width: 20px; height: 20px; }
.advert-hero__sound .ico-sound { display: none; }
.advert-hero__sound.is-on .ico-sound { display: block; }
.advert-hero__sound.is-on .ico-muted { display: none; }
@media (max-width: 700px) {
  .advert-hero { max-width: 480px; margin-top: 22px; }
  .advert-hero__sound { right: 36px; bottom: 12px; width: 42px; height: 42px; }
}

/* the demoted shelf carousel strip (below the quiz) */
.shelf-spin { padding: clamp(24px, 4vw, 44px) 0 0; text-align: center; }
.shelf-spin h2 { font-size: clamp(26px, 3.4vw, 42px); margin: 6px 24px 0; }

/* tighter hero rhythm (2026-07-03): pull the headline up + cap the advert's
   height to the viewport so the full video shows above the fold at 100% zoom */
.hero { padding: clamp(112px, 12vw, 142px) 0 12px; }
.hero .sub { margin-top: 14px; }
.hero .pill { margin-top: 16px; }
.advert-hero { margin-top: 18px; }
.advert-hero__video { width: auto; max-width: 100%; margin: 0 auto;
  max-height: clamp(300px, calc(100vh - 548px), 540px); }

/* mobile hero (2026-07-03): the advert moves directly under the headline so the
   full video lands in the first screen; sub + pill follow it. Desktop unchanged. */
@media (max-width: 700px) {
  .hero { display: flex; flex-direction: column; align-items: center; padding-top: 98px; }
  .hero-inner { display: contents; } /* lets the video interleave between the inner elements */
  .hero h1 { order: 1; padding: 0 22px; }
  .advert-hero { order: 2; margin-top: 14px; width: 100%; }
  .hero .sub { order: 3; margin: 18px 0 0; padding: 0 26px; }
  .hero .pill { order: 4; margin: 14px 0 0; }
  .advert-hero__video { max-height: min(58vh, 480px); }
}
