/* TimeLapse landing (index.html): Liquid Glass page sheet, unit U4.
   Loaded after tl-tokens.css; uses its --tl-* / --r-* / --sh-* / --font-* names and never redefines them.
   Spec: web-lg-spec.md §5.6.2 (D5 language, copy unchanged). Nothing here is blurred (§5.2.2). */

*{ box-sizing:border-box; }
@media (prefers-reduced-motion: no-preference){ html{ scroll-behavior:smooth; } }
body{ font:400 15px/1.55 var(--font-ui); }
a{ color:inherit; }

/* content gutter: 16 (≤400, the 360 floor) · 20 (≤600) · 28 · 72 at ≥1280 (D5 frame) */
.wrap{ max-width:1440px; margin:0 auto; padding-inline:28px; }
@media (min-width:1280px){ .wrap{ padding-inline:72px; } }
@media (max-width:600px){ .wrap{ padding-inline:20px; } }
@media (max-width:400px){ .wrap{ padding-inline:16px; } }

.over{ display:inline-block; font:700 13px/1.3 var(--font-mono); letter-spacing:.1em; text-transform:uppercase; color:var(--tl-secondary); }

/* ---------- buttons: the landing's own family (tl-tokens.css carries none, §5.1.1) ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:48px; padding:0 22px; border-radius:var(--r-pill); border:1px solid transparent;
  font:700 15px/1.1 var(--font-ui); text-decoration:none; white-space:nowrap; cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition: transform var(--dur-press) var(--ease-spring), background-color var(--dur-fade), box-shadow var(--dur-press), border-color var(--dur-fade);
}
.btn:active{ transform:scale(.97); }
/* primary (PrimaryButton): cream on primary 4.68 */
.btn-green{ background:var(--tl-primary); color:var(--tl-cream); box-shadow:var(--hi-primary), var(--sh-primary); }
/* secondary glass pill (SecondaryButton on glass): ink on glass */
.btn-outline{
  background-color:var(--tl-glass);
  background-image:linear-gradient(180deg, var(--tl-glass-hi2) 0%, rgba(255,255,255,0) 42%);
  border-color:var(--tl-line2); color:var(--tl-ink);
  box-shadow:var(--hi-inset), var(--sh-small);
}
@media (hover:hover){
  .btn-green:hover{ background:var(--tl-secondary); }
  .btn-outline:hover{ border-color:var(--tl-ink); }
}

/* ---------- header: floating glass nav pill (64 h, r32, regular .72, no blur, not sticky) ---------- */
.top{ position:relative; }
nav{
  position:relative; display:flex; align-items:center; justify-content:space-between; gap:16px;
  min-height:64px; margin-top:16px; padding:7px 7px 7px 16px; border-radius:var(--r-bar);
  background-color:var(--tl-glass);
  background-image:linear-gradient(180deg, var(--tl-glass-hi2) 0%, rgba(255,255,255,0) 42%);
  border:1px solid var(--tl-glass-border);
  box-shadow:var(--hi-inset), var(--sh-regular);
}
.brand{ display:flex; align-items:center; gap:12px; min-width:0; text-decoration:none; border-radius:var(--r-pill); }
.wordmark{ font:500 24px/1 var(--font-display); letter-spacing:-.02em; color:var(--tl-ink); white-space:nowrap; }
.wordmark b{ font-weight:900; color:var(--tl-primary-text); }
.navlinks{ display:flex; align-items:center; gap:4px; }
/* :not(.btn) so the ink link colour (0,2,1) never reaches the green "Add to Ring" button */
.navlinks a:not(.btn){ display:inline-flex; align-items:center; min-height:44px; padding:0 14px; border-radius:var(--r-pill);
  font:500 15px/1.2 var(--font-ui); color:var(--tl-ink); text-decoration:none; transition: background-color var(--dur-fade); }
@media (hover:hover){ .navlinks a:not(.btn):hover{ background:var(--tl-chip-bg); } }
.navlinks .btn{ margin-left:8px; font-size:15px; }
@media (max-width:1060px) and (min-width:901px){ .navlinks a:not(.btn){ padding:0 10px; font-size:14.5px; } }
@media (max-width:900px){ .navlinks a:not(.btn){ display:none; } .wordmark{ font-size:25px; } }
@media (max-width:400px){
  nav{ margin-top:12px; padding:7px 7px 7px 12px; gap:10px; }
  .brand{ gap:9px; }
  .wordmark{ font-size:22px; }
  .navlinks .btn{ margin-left:0; padding:0 18px; }
}

/* ---------- hero ---------- */
.hero{ position:relative; display:grid; grid-template-columns:minmax(0,600px) minmax(0,1fr); gap:64px; padding:64px 0 88px; align-items:center; }
/* accent tint laid over an opaque surface: on the bare glow the .20 tint measured 4.40 (G7 p10); over surface it is ~5.4 */
.badge{ display:inline-flex; align-items:center; gap:10px; padding:9px 18px; margin-bottom:26px; border-radius:var(--r-pill);
  background-color:var(--tl-surface); background-image:linear-gradient(var(--tl-accent-bg), var(--tl-accent-bg)); }
.badge .d{ width:8px; height:8px; flex:none; border-radius:50%; background:var(--tl-accent); }
.badge span{ font:600 13.5px/1.3 var(--font-ui); color:var(--tl-accent-text); }
.hero h1{ margin:0; font:900 clamp(40px,6vw,78px)/1 var(--font-display); letter-spacing:-.03em; color:var(--tl-ink); }
.hero h1 em{ font-style:normal; color:var(--tl-primary-text); }
.hero .sub{ margin:24px 0 0; max-width:520px; font:400 20px/1.55 var(--font-ui); color:#4B5548; }
.hero .cta{ display:flex; align-items:center; gap:12px 16px; margin-top:36px; flex-wrap:wrap; }
.hero .cta .btn{ min-height:56px; }
.hero .cta .btn-green{ padding:0 32px; font-size:17px; }
.hero .cta .btn-outline{ padding:0 28px; font-size:16px; }
.microtrust{ margin-top:22px; font:400 14px/1.5 var(--font-ui); color:var(--tl-muted-on-tint); }
/* #dash-note: on the page ground → #58624F (§5.6.2 rule) */
.note{ display:block; height:0; overflow:hidden; margin-top:14px; opacity:0; font:500 14px/1.5 var(--font-ui); color:var(--tl-muted-on-tint); transition:opacity .2s; }
.note.show{ height:auto; opacity:1; }
@media (max-width:960px){ .hero{ grid-template-columns:minmax(0,1fr); gap:40px; padding:32px 0 64px; } }
@media (max-width:400px){ .hero{ padding:24px 0 56px; } .hero .cta .btn{ flex:1 1 auto; } }

/* hero card: glass r32 pad 8; media r26; caption row under the media */
.reelcard{
  display:flex; flex-direction:column; padding:8px; border-radius:var(--r-card);
  background-color:var(--tl-glass);
  background-image:linear-gradient(180deg, var(--tl-glass-hi2) 0%, rgba(255,255,255,0) 42%);
  border:1px solid var(--tl-glass-border);
  box-shadow:var(--hi-inset), var(--sh-panel);
}
.reelcard .head{ order:2; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 12px 8px; }
.reelcard .head .l{ display:flex; align-items:center; gap:10px; min-width:0; }
.reelcard .head .name{ font:700 21px/1.2 var(--font-display); letter-spacing:-.01em; color:var(--tl-ink); }
.reelcard .daychip{ display:inline-flex; align-items:center; padding:7px 14px; border-radius:var(--r-pill); white-space:nowrap;
  font:700 13px/1 var(--font-ui); background:var(--tl-accent-bg); color:var(--tl-accent-text); }
.scene{ position:relative; order:1; height:400px; border-radius:26px; overflow:hidden; background:linear-gradient(160deg,#4E8E70 0%,#7FB06A 42%,#E3A21A 100%); }
.scene svg.art{ position:absolute; inset:0; width:100%; height:100%; }
.playbtn{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none; }
.playbtn .c{ width:84px; height:84px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:rgba(251,250,246,.88); border:1px solid var(--tl-over-photo-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85), var(--sh-photo); }
.playbtn .c svg{ margin-left:4px; }
/* decorative timeline, floating over the scene (over-photo .84; labels ink, §5.1.3) */
.timeline{ position:absolute; left:16px; right:16px; bottom:16px; height:60px; display:flex; align-items:center; gap:14px; padding:0 20px;
  border-radius:30px; background:var(--tl-over-photo); border:1px solid var(--tl-over-photo-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85), var(--sh-photo); }
.timeline .lbl{ font:700 11px/1 var(--font-mono); letter-spacing:.04em; color:var(--tl-on-photo-ink); font-variant-numeric:tabular-nums; white-space:nowrap; }
.track{ position:relative; flex:1; height:6px; border-radius:999px; background:rgba(31,42,28,.14); }
.track .fill{ position:absolute; left:0; top:0; bottom:0; width:70%; border-radius:999px; background:var(--tl-primary); }
.track .now{ position:absolute; left:70%; top:50%; width:15px; height:15px; border-radius:50%; transform:translate(-50%,-50%);
  background:var(--tl-accent); border:2px solid var(--tl-knob); box-shadow:0 2px 6px rgba(0,0,0,.2); }
@media (max-width:960px){ .scene{ height:330px; } }
@media (max-width:600px){
  .scene{ height:240px; border-radius:21px; }
  .playbtn .c{ width:68px; height:68px; }
  .timeline{ left:12px; right:12px; bottom:12px; height:52px; padding:0 16px; gap:10px; }
}

/* ---------- sections ---------- */
.sec{ padding-block:80px; }
#how > .wrap{ padding-bottom:80px; }
@media (max-width:920px){ .sec{ padding-block:64px; } #how > .wrap{ padding-bottom:64px; } }
@media (max-width:400px){ .sec{ padding-block:56px; } #how > .wrap{ padding-bottom:56px; } }
.sec-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:40px; }
.sec h2{ margin:14px 0 0; font:900 clamp(30px,4vw,46px)/1.08 var(--font-display); letter-spacing:-.02em; color:var(--tl-ink); }
/* text directly on the page ground → #58624F (5.58; 4.68 at the green glow peak) */
.sec .lead{ margin:0; max-width:420px; font:400 17px/1.55 var(--font-ui); color:var(--tl-muted-on-tint); }
@media (max-width:820px){ .sec-head{ flex-direction:column; align-items:flex-start; gap:16px; } }

/* what to capture: glass r32 pad 8 → art r26 */
.capcards{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin-top:44px; }
@media (max-width:900px){ .capcards{ grid-template-columns:minmax(0,1fr); gap:16px; } }
.cap{
  padding:8px; border-radius:var(--r-card);
  background-color:var(--tl-glass);
  background-image:linear-gradient(180deg, var(--tl-glass-hi2) 0%, rgba(255,255,255,0) 42%);
  border:1px solid var(--tl-glass-border);
  box-shadow:var(--hi-inset), var(--sh-regular);
}
.cap .art{ position:relative; height:230px; border-radius:26px; overflow:hidden; }
.cap .art svg{ position:absolute; inset:0; width:100%; height:100%; }
.cap .txt{ padding:18px 16px 20px; }
.cap h3{ margin:0; font:700 26px/1.2 var(--font-display); letter-spacing:-.01em; color:var(--tl-ink); }
.cap p{ margin:8px 0 0; font:400 15px/1.55 var(--font-ui); color:var(--tl-muted); }
@media (max-width:600px){ .cap .art{ border-radius:21px; height:200px; } .cap h3{ font-size:22px; } }

/* how it works: glass r26 pad 24, primary number disc */
.steps{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin-top:34px; }
@media (max-width:900px){ .steps{ grid-template-columns:minmax(0,1fr); gap:16px; } }
.step{
  display:flex; gap:20px; align-items:flex-start; padding:24px; border-radius:26px;
  background-color:var(--tl-glass);
  background-image:linear-gradient(180deg, var(--tl-glass-hi2) 0%, rgba(255,255,255,0) 42%);
  border:1px solid var(--tl-glass-border);
  box-shadow:var(--hi-inset), var(--sh-regular);
}
.step .num{ display:flex; align-items:center; justify-content:center; flex:none; width:52px; height:52px; border-radius:50%;
  background:var(--tl-primary); box-shadow:var(--hi-primary); font:900 26px/1 var(--font-display); color:var(--tl-cream); }
.step h3{ margin:0; font:700 19px/1.25 var(--font-display); letter-spacing:-.01em; color:var(--tl-ink); }
.step p{ margin:6px 0 0; font:400 15px/1.55 var(--font-ui); color:var(--tl-muted); }
@media (max-width:400px){ .step{ padding:20px; gap:16px; } }

/* trust strip: secondary card, r32 */
.trust{ margin:0 max(32px, calc((100% - 1376px) / 2)); padding:40px 48px; border-radius:var(--r-card); background:var(--tl-secondary);
  box-shadow:var(--hi-primary), var(--sh-regular); }
.trust .wrap{ max-width:none; padding-inline:0; }
.trust .row{ display:flex; align-items:center; justify-content:space-between; gap:24px 40px; flex-wrap:wrap; }
.trust .item{ display:flex; align-items:center; gap:16px; }
.trust .item svg{ flex:none; }
.trust .item span{ font:500 16px/1.4 var(--font-ui); color:rgba(243,239,228,.9); }
@media (max-width:900px){ .trust .row{ flex-direction:column; align-items:flex-start; gap:20px; } }
@media (max-width:600px){ .trust{ margin:0 16px; padding:28px 24px; } }

/* get started (C23 class renames: .getstarted, .gs-card, .gs-name) */
.getstarted{ display:grid; grid-template-columns:minmax(0,1fr) 520px; gap:72px; align-items:center; }
@media (max-width:960px){ .getstarted{ grid-template-columns:minmax(0,1fr); gap:40px; } }
.getstarted .big{ margin-top:14px; font:900 clamp(30px,4vw,46px)/1.08 var(--font-display); letter-spacing:-.02em; color:var(--tl-ink); }
/* both .sub: the outer one sits on the page ground (#58624F required); the one in the card passes either way */
.getstarted .sub{ margin:18px 0 0; max-width:440px; font:400 17px/1.6 var(--font-ui); color:var(--tl-muted-on-tint); }
.gs-card{
  padding:40px; border-radius:var(--r-card);
  background-color:var(--tl-glass);
  background-image:linear-gradient(180deg, var(--tl-glass-hi2) 0%, rgba(255,255,255,0) 42%);
  border:1px solid var(--tl-glass-border);
  box-shadow:var(--hi-inset), var(--sh-panel);
}
.gs-card .toprow{ display:flex; align-items:baseline; justify-content:space-between; gap:8px 16px; flex-wrap:wrap; }
.gs-card .label{ font:700 15px/1.3 var(--font-mono); letter-spacing:.06em; text-transform:uppercase; color:var(--tl-secondary); }
.gs-card .gs-name{ font:900 clamp(34px,9vw,44px)/1.1 var(--font-display); letter-spacing:-.02em; color:var(--tl-ink); }
.gs-card .gs-name small{ font:500 16px/1.4 var(--font-ui); letter-spacing:0; color:var(--tl-muted); }
.gs-card hr{ height:1px; margin:24px 0; border:none; background:var(--tl-line); }
.feat{ display:flex; flex-direction:column; gap:14px; }
.feat .f{ display:flex; align-items:center; gap:12px; }
.feat .f svg{ flex:none; }
.feat .f span{ font:400 15.5px/1.45 var(--font-ui); color:var(--tl-ink); }
.gs-card .btn{ width:100%; min-height:56px; margin-top:32px; font-size:17px; }
@media (max-width:600px){ .gs-card{ padding:28px; } }
@media (max-width:400px){ .gs-card{ padding:24px 20px; } }

/* footer: ink card, r32 */
footer{ margin:0 max(32px, calc((100% - 1376px) / 2)) 32px; padding:36px 48px; border-radius:var(--r-card); background:var(--tl-ink); }
footer .wrap{ max-width:none; padding-inline:0; }
footer .row{ display:flex; align-items:center; justify-content:space-between; gap:20px 24px; flex-wrap:wrap; }
footer .fbrand{ display:flex; align-items:center; gap:12px; }
footer .fwordmark{ font:500 23px/1 var(--font-display); letter-spacing:-.02em; color:var(--tl-cream); }
footer .fwordmark b{ font-weight:900; }
footer .flinks{ display:flex; gap:8px 28px; flex-wrap:wrap; }
footer .flinks a{ display:inline-flex; align-items:center; min-height:32px; font:400 14px/1.4 var(--font-ui); color:rgba(243,239,228,.72); text-decoration:none; border-radius:6px; }
@media (hover:hover){ footer .flinks a:hover{ color:var(--tl-cream); text-decoration:underline; text-underline-offset:3px; } }
footer .legal{ font:400 14px/1.5 var(--font-ui); color:rgba(243,239,228,.66); }
@media (max-width:600px){ footer{ margin:0 12px 12px; padding:28px 24px; } footer .row{ flex-direction:column; align-items:flex-start; } }
@media (pointer:coarse){ .brand{ min-height:44px; } footer .flinks a{ min-height:44px; min-width:44px; justify-content:center; } }

/* ---------- focus: dark fills carry the ring on the cream band (§5.4.5) ---------- */
.trust :focus-visible, footer :focus-visible{ outline-color:var(--tl-cream); box-shadow:0 0 0 2px var(--tl-ink); }

/* ---------- reduced motion: component half (the universal * rule is in tl-tokens.css) ---------- */
@media (prefers-reduced-motion: reduce){
  .btn:active{ transform:none !important; }
}

/* ---------- forced colors: let the system draw edges, drop decoration ---------- */
@media (forced-colors: active){
  nav, .reelcard, .cap, .step, .gs-card, .trust, footer, .btn, .badge, .reelcard .daychip, .timeline{ border:1px solid CanvasText; box-shadow:none; background-image:none; }
  body::before, body::after{ display:none; }
}
