/*
 * Fonts: ABC Areal as self-hosted WOFF2 files delivered by Dinamo (Dinamo Free Fonts License,
 * § 9.12 includes web use; § 9.5: WOFF2 via @font-face, self-hosted). Never use TTF/OTF for
 * Areal on the web, never convert the files, never put them in a public repo. Yeseva One and
 * Spectral are OFL.
 */

@font-face { font-family: "LC Areal"; src: url("assets/fonts/ABCAreal-Medium.woff2") format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "LC Areal"; src: url("assets/fonts/ABCAreal-Bold.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "LC Areal Mono"; src: url("assets/fonts/ABCArealMono-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; }
/* OFL, used only inside the Rosé mockups */
@font-face { font-family: "Yeseva One"; src: url("assets/fonts/YesevaOne-Regular.ttf") format("truetype"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Spectral"; src: url("assets/fonts/Spectral-Italic.ttf") format("truetype"); font-weight: 400; font-style: italic; font-display: swap; }

:root {
  /* type tokens: swap here for a public build */
  --font-display: "LC Areal", "Inter Tight", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-text: "LC Areal", "Inter Tight", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-mono: "LC Areal Mono", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
  /* the app's own faces, for faithful mockups */
  --font-system: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", system-ui, "Helvetica Neue", sans-serif;
  --font-rounded: ui-rounded, "SF Pro Rounded", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --font-serif: "Yeseva One", Georgia, serif;
  --font-italic: "Spectral", Georgia, serif;

  /* colour: fixed palette */
  --bg: #0B090D;
  --bg-2: #141117;
  --bg-3: #1C181F;
  --heart: #F2CFD8;
  --rose: #FF5C85;
  --glow: 110, 34, 66;
  --paper: #F4F3EF;
  --ink: #0B0B0B;
  --ink-2: #4A4946;

  /* colour: page theme (dark here, light under html[data-page-theme="light"]). Page text, lines and
   * controls use only these, so the whole screen can blend between themes (see "page theme" below). */
  --fg: #F4F3EF;
  --fg-2: rgba(244, 243, 239, .72);
  --fg-3: rgba(244, 243, 239, .5);
  --fg-4: rgba(244, 243, 239, .38);
  --line: rgba(244, 243, 239, .13);
  --line-2: rgba(244, 243, 239, .28);
  --on-fg: #0B0B0B;
  --accent: #F2CFD8;
  --chip: rgba(244, 243, 239, .16);
  --bar: rgba(11, 9, 13, .9);
  --mark: #F2CFD8;
  --card: #141117;
  --card-tint: rgba(110, 34, 66, .28);
  --card-tint-2: rgba(110, 34, 66, .06);

  /* layout */
  --gutter: clamp(16px, 4.2vw, 56px);
  --maxw: clamp(1320px, 68vw, 1760px);
  --nav-h: clamp(64px, 1.6vw + 40px, 84px);
  --sect: clamp(112px, 15vw, 208px);
  --ease: cubic-bezier(.2, .7, .1, 1);

  /* device sizes */
  --duo-pw: clamp(150px, min(21vw, 25svh), 360px);
  --how-pw: clamp(150px, 22vw, 380px);
  --photo-pw: clamp(220px, 26vw, 420px);
  --w-pw: clamp(250px, 22vw, 400px);
  --sb-pw: clamp(300px, 52vw, 980px);
  --share-pw: clamp(240px, 22vw, 400px);
  --plus-pw: clamp(260px, 23vw, 430px);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; background: var(--bg); overflow-x: hidden; overflow-x: clip; }
/* body stays transparent: the page colour is the html background plus the fixed .theme-wash above it */
body {
  margin: 0; background: transparent; color: var(--fg);
  font: 500 17px/1.5 var(--font-text);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  overflow-x: clip;
  text-rendering: optimizeLegibility;
}
img, svg, picture { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; }
h1, h2, h3, p, ol, ul, figure { margin: 0; }
ol, ul { padding: 0; list-style: none; }
::selection { background: var(--heart); color: var(--ink); }
:focus-visible { outline: 2px solid var(--heart); outline-offset: 3px; border-radius: 4px; }

.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: fixed; left: 12px; top: -60px; z-index: 100; background: var(--fg); color: var(--on-fg); padding: 10px 14px; border-radius: 10px; text-decoration: none; transition: top .2s; }
.skip:focus { top: 12px; }

.wrap { width: 100%; max-width: calc(var(--maxw) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); }

/* ---------------------------------------------------------------- page theme
 * Every top-level part of the page (sections, footer) carries data-theme="dark|light". main.js
 * (initTheme) watches which part crosses the middle of the screen and sets html[data-page-theme].
 * The whole screen then blends: a fixed paper layer fades its opacity (composited, no repaint of
 * the big area) and the theme colours below transition as registered custom properties.
 * Sections have no background of their own, so the order of sections can change freely. */
@property --fg { syntax: "<color>"; inherits: true; initial-value: #F4F3EF; }
@property --fg-2 { syntax: "<color>"; inherits: true; initial-value: rgba(244, 243, 239, .72); }
@property --fg-3 { syntax: "<color>"; inherits: true; initial-value: rgba(244, 243, 239, .5); }
@property --fg-4 { syntax: "<color>"; inherits: true; initial-value: rgba(244, 243, 239, .38); }
@property --line { syntax: "<color>"; inherits: true; initial-value: rgba(244, 243, 239, .13); }
@property --line-2 { syntax: "<color>"; inherits: true; initial-value: rgba(244, 243, 239, .28); }
@property --on-fg { syntax: "<color>"; inherits: true; initial-value: #0B0B0B; }
@property --accent { syntax: "<color>"; inherits: true; initial-value: #F2CFD8; }
@property --chip { syntax: "<color>"; inherits: true; initial-value: rgba(244, 243, 239, .16); }
@property --bar { syntax: "<color>"; inherits: true; initial-value: rgba(11, 9, 13, .9); }
@property --mark { syntax: "<color>"; inherits: true; initial-value: #F2CFD8; }
@property --card { syntax: "<color>"; inherits: true; initial-value: #141117; }
@property --card-tint { syntax: "<color>"; inherits: true; initial-value: rgba(110, 34, 66, .28); }
@property --card-tint-2 { syntax: "<color>"; inherits: true; initial-value: rgba(110, 34, 66, .06); }
:root {
  --theme-t: .7s;
  --theme-ease: cubic-bezier(.4, 0, .2, 1);
  transition: --fg var(--theme-t) var(--theme-ease), --fg-2 var(--theme-t) var(--theme-ease), --fg-3 var(--theme-t) var(--theme-ease),
    --fg-4 var(--theme-t) var(--theme-ease), --line var(--theme-t) var(--theme-ease), --line-2 var(--theme-t) var(--theme-ease),
    --on-fg var(--theme-t) var(--theme-ease), --accent var(--theme-t) var(--theme-ease), --chip var(--theme-t) var(--theme-ease),
    --bar var(--theme-t) var(--theme-ease), --mark var(--theme-t) var(--theme-ease), --card var(--theme-t) var(--theme-ease),
    --card-tint var(--theme-t) var(--theme-ease), --card-tint-2 var(--theme-t) var(--theme-ease);
}
/* light tokens: the live page theme, or (without the live mechanism) the light part itself */
html[data-page-theme="light"], html:not(.theme-live) [data-theme="light"] {
  --fg: #0B0B0B;
  --fg-2: #4A4946;
  --fg-3: #6B6A66;
  --fg-4: rgba(11, 11, 11, .42);
  --line: rgba(11, 11, 11, .12);
  --line-2: rgba(11, 11, 11, .22);
  --on-fg: #F4F3EF;
  --accent: #A34D6B;
  --chip: #D9D8D3;
  --bar: rgba(244, 243, 239, .94);
  --mark: #E7A9BA;
  --card: #FBFAF7;
  --card-tint: rgba(231, 169, 186, .34);
  --card-tint-2: rgba(231, 169, 186, .08);
}
html:not(.theme-live) [data-theme="light"] { background: var(--paper); color: var(--fg); }
.theme-wash {
  position: fixed; left: 0; right: 0; top: 0; z-index: -1; height: 100vh; height: 100lvh;
  background: var(--paper); opacity: 0; pointer-events: none;
  transition: opacity var(--theme-t) var(--theme-ease); will-change: opacity;
}
html[data-page-theme="light"] .theme-wash { opacity: 1; }
/* first paint of a page that opens mid-way (reload, anchor): no blend */
html.theme-snap, html.theme-snap .theme-wash, html.theme-snap .nav { transition: none !important; }
/* dark-only decoration (glows, the blurred photo behind "Your photo") fades out while the page is light */
.hero__glow, .duo__glow, .final__glow, .photo__bg > *, .photo__bg::after { transition: opacity var(--theme-t) var(--theme-ease); }
html[data-page-theme="light"] :is(.hero__glow, .duo__glow, .final__glow, .photo__bg > *),
html[data-page-theme="light"] .photo__bg::after { opacity: 0; }
/* surfaces that are always dark keep their dark text in any page theme */
.film__frame {
  --fg: #F4F3EF; --fg-2: rgba(244, 243, 239, .72); --fg-3: rgba(244, 243, 239, .5); --line: rgba(244, 243, 239, .13); --on-fg: #0B0B0B;
  color: var(--fg);
}

/* ---------------------------------------------------------------- type */
.meta { font: 500 clamp(14px, calc(.2vw + 11px), 17px)/1.45 var(--font-text); color: var(--fg-3); letter-spacing: -.005em; }
.dim { opacity: .7; }
.eyebrow { padding-top: 16px; border-top: 1px solid var(--line); margin-bottom: clamp(24px, 4vw, 56px); font: 500 clamp(15px, calc(.3vw + 11px), 20px)/1.3 var(--font-text); letter-spacing: -.01em; color: var(--accent); }
.h1 { font: 700 clamp(44px, min(6.3vw, 3vw + 48px), 136px)/.93 var(--font-display); letter-spacing: -.045em; }
.h2 { font: 700 clamp(40px, min(5.4vw, 2.6vw + 44px), 116px)/.95 var(--font-display); letter-spacing: -.042em; max-width: 13ch; text-wrap: balance; }
.h3 { font: 700 clamp(22px, min(1.9vw, .9vw + 14px), 36px)/1.1 var(--font-display); letter-spacing: -.025em; }
.body { font: 500 clamp(17px, min(1.3vw, .45vw + 12px), 23px)/1.52 var(--font-text); color: var(--fg-2); max-width: 34em; text-wrap: pretty; }
.lede { font: 500 clamp(18px, min(1.55vw, .55vw + 13px), 27px)/1.45 var(--font-text); color: var(--fg-2); max-width: 30em; text-wrap: pretty; }
.link { color: var(--fg); text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat; padding-bottom: 2px; transition: background-size .4s var(--ease); }
.link:hover { background-size: 0 1px; background-position: 100% 100%; }

.split { display: grid; gap: clamp(20px, 3vw, 40px); }
@media (min-width: 900px) {
  .split { grid-template-columns: 7fr 5fr; align-items: end; }
}

/* ---------------------------------------------------------------- nav */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 50; height: var(--nav-h);
  display: flex; align-items: center; justify-content: space-between;
  padding-inline: var(--gutter);
  color: var(--fg);
  transition: background-color .4s var(--ease), box-shadow .4s var(--ease), transform .5s var(--ease);
}
/* colours come from the page theme tokens, so the bar blends together with the page */
.nav.is-solid { background: var(--bar); box-shadow: 0 1px 0 var(--line); }
.nav.is-hidden { transform: translateY(-100%); }
.nav__brand { display: flex; align-items: center; gap: 10px; text-decoration: none; font: 700 clamp(17px, .35vw + 12px, 22px)/1 var(--font-display); letter-spacing: -.02em; }
.nav__heart { width: 16px; height: 15px; fill: var(--mark); }
.nav__right { display: flex; align-items: center; gap: 12px; }
.nav__cta { font: 500 clamp(14px, .3vw + 10px, 18px)/1 var(--font-text); text-decoration: none; padding: .8em 1.15em; border-radius: 999px; background: var(--fg); color: var(--on-fg); }
/* Same width in both languages ("Kostenlos laden" is the longer one), so the language switch next to it
 * stays in place when the label changes. */
@media (min-width: 421px) { .nav__cta { min-width: 9.75em; text-align: center; } }
/* Small phones: the store button matters more than the language switch (the footer has one too). */
@media (max-width: 420px) { .nav .lang { display: none; } }

/* language toggle: two segments of one fixed width, the thumb moves by exactly one segment, so it sits
 * with the same inset in both states whatever the width of "EN" and "DE". Only transform animates. */
.lang {
  --seg: 2.9em; --pad: 3px; --lang-ease: cubic-bezier(.65, 0, .35, 1);
  position: relative; display: inline-flex; padding: var(--pad); border-radius: 999px;
  box-shadow: inset 0 0 0 1px var(--line-2); color: var(--fg);
  font: 500 clamp(13px, .25vw + 10px, 16px)/1 var(--font-text);
}
@supports (width: round(1.5px, 1px)) { .lang { --seg: round(2.9em, 1px); } }
.lang button {
  position: relative; z-index: 1; flex: none; width: var(--seg); height: 2.45em; padding: 0; border: 0; border-radius: 999px;
  background: none; cursor: pointer; font: inherit; color: inherit; opacity: .7; white-space: nowrap;
  -webkit-tap-highlight-color: transparent; transition: opacity .25s, color .25s var(--lang-ease);
}
/* the label turns dark when the thumb has arrived under it */
.lang button[aria-pressed="true"] { opacity: 1; color: var(--ink); transition-delay: .18s; }
.lang__thumb { position: absolute; top: var(--pad); bottom: var(--pad); left: var(--pad); width: var(--seg); transition: transform .5s var(--lang-ease); }
.lang__thumb::before { content: ""; position: absolute; inset: 0; border-radius: 999px; background: var(--heart); }
.lang[data-active="de"] .lang__thumb { transform: translateX(var(--seg)); }
/* a small squash around its own centre while it travels; it never grows past the capsule */
.lang.is-moving .lang__thumb::before { animation: lang-squash .5s var(--lang-ease); }
@keyframes lang-squash { 50% { transform: scale(1.16, .9); } }

/* ---------------------------------------------------------------- App Store badge (Apple's official artwork, unchanged) */
.cta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 20px; }
.cta--center { justify-content: center; flex-direction: column; }
.badge { display: inline-block; line-height: 0; border-radius: 10px; transition: transform .3s var(--ease); }
.badge:hover { transform: translateY(-2px); }
.badge:focus-visible { outline: 2px solid var(--fg); outline-offset: 4px; }
.badge img { display: block; height: clamp(52px, 1.1vw + 38px, 64px); width: auto; }
.cta__note { font: 500 clamp(15px, .3vw + 11px, 19px)/1.4 var(--font-text); color: var(--fg-3); max-width: 24em; }

/* ---------------------------------------------------------------- phone frame */
.phone {
  --pw: 300px;
  position: relative; width: var(--pw); aspect-ratio: 77.6 / 163; flex: none;
  border-radius: 14.6% / 6.95%;
  background: linear-gradient(145deg, #3a383d, #151416 40%, #29272b);
  box-shadow:
    inset 0 0 0 calc(var(--pw) * .004) rgba(255, 255, 255, .18),
    0 calc(var(--pw) * .1) calc(var(--pw) * .22) calc(var(--pw) * -.06) rgba(0, 0, 0, .7),
    0 calc(var(--pw) * .02) calc(var(--pw) * .05) rgba(0, 0, 0, .35);
}
.phone::before { /* black bezel */
  content: ""; position: absolute; inset: calc(var(--pw) * .012); border-radius: 13.8% / 6.55%; background: #020202;
}
.phone__screen {
  position: absolute; inset: calc(var(--pw) * .028); overflow: hidden;
  border-radius: 12.6% / 5.82%; background: #000; isolation: isolate;
  container-type: inline-size;
}
.phone__screen::after { /* Dynamic Island */
  content: ""; position: absolute; z-index: 20; top: 1.3%; left: 34.1%; width: 31.8%; height: 4.3%; border-radius: 999px; background: #000;
}
.phone--land { aspect-ratio: 163 / 77.6; border-radius: 6.95% / 14.6%; }
.phone--land::before { border-radius: 6.55% / 13.8%; }
.phone--land .phone__screen { inset: calc(var(--pw) * .013); border-radius: 5.82% / 12.6%; }
.phone--land .phone__screen::after { top: 34.1%; left: 1.3%; width: 4.3%; height: 31.8%; }

[data-mock], .wroot, .bub--img, .pw__car > div { container-type: inline-size; }
[data-mock] picture { display: block; width: 100%; height: 100%; }
[data-mock] picture img { width: 100%; height: 100%; object-fit: cover; }

/* ---------------------------------------------------------------- HERO */
.hero { position: relative; min-height: 100svh; overflow: hidden; padding: calc(var(--nav-h) + 6px) 0 clamp(40px, 7vh, 88px); }
.hero__glow { position: absolute; inset: -10% -10% 0; pointer-events: none;
  background:
    radial-gradient(60% 55% at 12% 0%, rgba(var(--glow), .5), transparent 70%),
    radial-gradient(45% 50% at 95% 90%, rgba(var(--glow), .22), transparent 72%);
}
/* soft pink pulse behind the number when the day changes */
.hero__pulse { position: absolute; left: 0; top: 0; width: min(120vw, 900px); aspect-ratio: 1; border-radius: 50%; pointer-events: none; opacity: 0; transform: translate(-50%, -50%);
  background: radial-gradient(closest-side, rgba(255, 92, 133, .42), rgba(255, 92, 133, 0)); }
.hero__grid { position: relative; display: grid; gap: 44px; }
.hero__text { display: grid; gap: 14px; align-content: start; }
.hero__kicker { color: var(--accent); font: 500 clamp(15px, calc(.3vw + 11px), 20px)/1.3 var(--font-text); }
/* "Noch 12 Tage, dann sehen wir uns.": the day number is part of the headline */
.hero__title { font: 700 clamp(38px, 10.6vw, 46px)/.95 var(--font-display); letter-spacing: -.045em; }
.hero__line { display: block; text-wrap: balance; }
.hero__line:empty { display: none; }
.hero__num { display: flex; font-size: min(50vw, 30svh); line-height: .8; letter-spacing: -.06em; margin: .03em 0 .06em -.04em; font-variant-numeric: tabular-nums; }
.hero__d { position: relative; display: inline-block; overflow: hidden; padding: .05em 0 .01em; }
.hero__d + .hero__d { margin-left: -.05em; }
.hero__d > span { display: inline-block; }
.hero__d > span.in { position: absolute; left: 0; top: .05em; }
.hero__num.is-flash { animation: hero-flash 1s var(--ease); }
@keyframes hero-flash { 0% { color: var(--heart); } 25% { color: var(--rose); } 100% { color: var(--fg); } }
.hero__ticker { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; font: 500 clamp(16px, 4.3vw, 19px)/1.3 var(--font-text); color: var(--fg-3); font-variant-numeric: tabular-nums; }
.hero__ticker b { color: var(--fg); font-weight: 700; }
.hero__date { color: var(--accent); }
.hero .cta { margin-top: 6px; gap: 10px 18px; }
.hero .badge img { height: 52px; }
.hero .cta__note { font-size: 15px; max-width: 22em; }
/* two phones, the same number */
.hero__duo { display: grid; gap: 14px; justify-items: center; }
.hero__phones { display: flex; justify-content: center; gap: 16px; align-items: flex-start; }
.hero__ph { display: grid; gap: 10px; justify-items: center; }
.hero__ph--b { margin-top: calc(var(--hero-pw) * .2); }
.hero__cap { text-align: center; max-width: 24em; }
.hero .is-flash .cd__grid { animation: hero-pop .9s var(--ease); }
@keyframes hero-pop { 0% { transform: scale(1.12); } 100% { transform: scale(1); } }
:root { --hero-pw: min(41vw, 170px); }
@media (min-width: 900px) {
  :root { --hero-pw: clamp(190px, 15.5vw, 270px); }
  .hero { display: grid; align-items: center; padding-bottom: 72px; }
  .hero__grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: 56px; }
  .hero__title { font-size: clamp(46px, 4.3vw, 84px); }
  .hero__num { font-size: clamp(170px, 17vw, 320px); }
  .hero__ticker { font-size: 20px; }
  .hero .badge img { height: 60px; }
  .hero .cta__note { font-size: 17px; }
  .hero__phones { gap: 28px; }
}


/* ---------------------------------------------------------------- 01 THE WAITING, THEN THE IDEA (DUO) */
.duo { position: relative; padding-top: var(--sect); }
.wait .h2 { max-width: 12ch; }
.wait .lede { max-width: 22em; }
.duo__pin { position: relative; }
html:not(.motion) .duo__pin { margin-top: clamp(64px, 9vw, 144px); }
.duo__head { position: relative; z-index: 2; }
.duo__stage { position: relative; display: flex; justify-content: center; align-items: flex-start; gap: clamp(20px, 6vw, 120px); padding: clamp(32px, 5vw, 56px) var(--gutter) 0; }
.duo__glow { position: absolute; left: 50%; top: 50%; width: min(90vw, 1000px); height: 70%; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(var(--glow), .45), transparent); pointer-events: none; }
.duo__dev { position: relative; display: grid; justify-items: center; gap: 16px; }
.duo__dev figcaption { text-align: center; }
.duo__dev figcaption .dim { display: block; }
.duo__link { position: absolute; left: 50%; top: 42%; width: clamp(20px, 6vw, 120px); height: 1px; transform: translateX(-50%); }
.duo__link i { position: absolute; inset: 0; background: repeating-linear-gradient(90deg, var(--accent) 0 4px, transparent 4px 9px); transform-origin: left; }
.duo__foot { position: relative; z-index: 2; display: flex; justify-content: flex-end; margin-top: clamp(32px, 5vw, 64px); }
.duo__text { max-width: 30em; }
@media (min-width: 900px) {
  .duo__text { max-width: 26em; }
}
@media (max-width: 899px) {
  :root { --duo-pw: min(40vw, 20svh); }
  .duo__foot { justify-content: flex-start; }
}
.motion .duo__pin { min-height: 100svh; display: flex; flex-direction: column; justify-content: center; padding-block: calc(var(--nav-h) + 8px) 24px; }
@media (min-width: 900px) {
  :root { --duo-pw: clamp(180px, min(18vw, 34svh), 420px); }
  .duo__pin { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: 1fr auto auto 1fr; max-width: calc(var(--maxw) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); column-gap: 32px; }
  .duo__pin > .wrap { padding-inline: 0; }
  .duo__head { grid-column: 1; grid-row: 2; align-self: end; }
  .duo__foot { grid-column: 1; grid-row: 3; justify-content: flex-start; align-self: start; margin-top: 32px; }
  .duo__stage { grid-column: 2; grid-row: 1 / -1; align-self: center; padding: 0; }
  .motion .duo__pin { display: grid; align-content: center; }
}
@media (max-width: 899px) {
  .motion .duo__head .h2 { font-size: clamp(34px, 9.4vw, 44px); }
  .motion .duo__stage { padding-top: 20px; }
  .motion .duo__foot { margin-top: 20px; }
  .motion .duo__text { font-size: 15.5px; }
}

/* ---------------------------------------------------------------- FILM slot */
.film { padding-top: var(--sect); }
.film__frame { position: relative; aspect-ratio: 16 / 9; border-radius: clamp(16px, 2vw, 28px); overflow: hidden; background: var(--bg-2); }
.film__poster, .film__poster img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; }
.film__shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(11, 9, 13, .92) 0%, rgba(11, 9, 13, .55) 45%, rgba(11, 9, 13, .1) 100%); }
.film__num { position: absolute; left: 4%; bottom: -8%; font: 700 min(42vw, 560px)/.8 var(--font-display); letter-spacing: -.06em; color: var(--fg); opacity: .96; }
.film__label { position: absolute; right: clamp(16px, 3vw, 40px); bottom: clamp(16px, 3vw, 40px); display: flex; align-items: center; gap: 14px; padding: 10px 18px 10px 10px; border-radius: 999px; background: rgba(11, 9, 13, .78); }
.film__label strong { display: block; font: 700 16px/1.2 var(--font-display); letter-spacing: -.01em; }
.film__label .meta { display: block; font-size: 12px; }
.film__play { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--fg); }
.film__play svg { width: 18px; height: 18px; fill: var(--on-fg); margin-left: 2px; }
@media (max-width: 599px) {
  .film__frame { aspect-ratio: 4 / 5; }
  .film__label { left: 16px; right: 16px; }
}

/* ---------------------------------------------------------------- 02 HOW */
.how { padding-top: var(--sect); }
.how__grid { display: grid; grid-template-columns: auto 1fr; gap: clamp(20px, 7vw, 120px); margin-top: clamp(24px, 4vw, 56px); }
.how__device { position: relative; }
.how__sticky { position: sticky; top: calc(50svh - var(--how-pw) * 1.05); padding-bottom: 8svh; }
.how__screens > .how__scr { position: absolute; inset: 0; opacity: 0; transition: opacity .6s var(--ease), transform .8s var(--ease); transform: scale(1.03); }
.how__screens > .is-active { opacity: 1; transform: none; }
.how__steps { display: grid; }
.how__step { min-height: 72svh; display: flex; flex-direction: column; justify-content: center; gap: 12px; max-width: 26em; }
.how__step .h3, .how__step .body { color: var(--fg-3); transition: color .6s var(--ease); }
.how__step.is-active .h3 { color: var(--fg); }
.how__step.is-active .body { color: var(--fg-2); }
.how__n { font: 500 15px/1 var(--font-text); display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--line); color: var(--fg); }
.how__step.is-active .how__n { background: var(--heart); color: var(--ink); box-shadow: none; }
@media (min-width: 900px) {
  .how__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .how__device { order: 2; display: flex; justify-content: center; align-items: flex-start; }
  .how__step { padding-left: 0; }
  .how__step .h3 { font-size: clamp(30px, min(3.2vw, 1.4vw + 26px), 66px); letter-spacing: -.035em; }
  .how__step .body { font-size: clamp(18px, min(1.45vw, .5vw + 13px), 26px); }
  .how__n { width: clamp(32px, 1vw + 18px, 44px); height: clamp(32px, 1vw + 18px, 44px); font-size: clamp(15px, .4vw + 9px, 19px) !important; }
}
.how__no { display: flex; flex-wrap: wrap; gap: .1em .4em; margin-top: clamp(32px, 5vw, 64px); font: 700 clamp(26px, 3.4vw, 52px)/1.05 var(--font-display); letter-spacing: -.035em; }
.how__no span:nth-child(2) { color: var(--fg-2); }
.how__no span:nth-child(3) { color: var(--fg-3); }
@media (max-width: 899px) {
  :root { --how-pw: 40vw; }
  .how__step { min-height: 64svh; }
  .how__step .h3 { font-size: 20px; }
  .how__step .body { font-size: 15.5px; }
}

/* ---------------------------------------------------------------- 03 STYLES (light) */
.styles { padding-block: var(--sect); }
.styles__head { display: grid; gap: 20px; }
@media (min-width: 900px) { .styles__head { grid-template-columns: 7fr 5fr; align-items: end; } .styles__head .eyebrow { grid-column: 1 / -1; margin-bottom: 8px; } }
.gallery { display: grid; gap: clamp(28px, 5vw, 80px); margin-top: clamp(40px, 5vw, 72px); }
.gallery__cards { position: relative; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.gcard { position: relative; aspect-ratio: 4 / 5; border-radius: 18px; overflow: hidden; background: #ddd; }
.gcard__inner { position: absolute; inset: 0; backface-visibility: hidden; }
.gallery__progress { display: none; }
.gallery__list { display: grid; gap: 0; counter-reset: s; }
.gstyle { display: grid; grid-template-columns: 1fr auto; gap: 2px 16px; padding: 16px 0; border-top: 1px solid var(--line); }
.gstyle__name { font: 700 clamp(22px, 2.2vw, 32px)/1.1 var(--font-display); letter-spacing: -.03em; }
.gstyle__desc { grid-column: 1 / -1; color: var(--fg-2); font-size: clamp(15px, .3vw + 10px, 19px); }
.tag { align-self: center; font: 500 clamp(13px, .2vw + 9px, 16px)/1 var(--font-text); padding: .45em .7em; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--line-2); color: var(--fg); }
.tag--free { background: var(--fg); color: var(--on-fg); box-shadow: none; }

/* pinned gallery (motion) */
.motion .styles { padding-block: 0; }
.motion .styles__pin { min-height: 100svh; padding-block: calc(var(--nav-h) + clamp(16px, 4vh, 48px)) clamp(24px, 5vh, 56px); display: flex; flex-direction: column; justify-content: center; }
.motion .gallery { grid-template-columns: auto 1fr; align-items: center; gap: clamp(32px, 7vw, 120px); margin-top: clamp(24px, 4vh, 48px); }
.motion .gallery__stage { --cw: min(30vw, 52svh * .8, 420px); width: var(--cw); }
.motion .gallery__cards { display: block; width: round(down, var(--cw), 4px); aspect-ratio: 4 / 5; border-radius: clamp(14px, 1.6vw, 22px); overflow: hidden; box-shadow: 0 40px 80px -30px rgba(11, 11, 11, .45); transform: translateZ(0); }
.motion .gcard { position: absolute; inset: -1px; border-radius: 0; will-change: transform; }
.motion .gcard__inner { will-change: transform; }
.motion .gallery__progress { display: block; height: 2px; margin-top: 18px; background: var(--line); border-radius: 2px; overflow: hidden; }
.motion .gallery__progress i { display: block; height: 100%; background: var(--fg); transform-origin: left; transform: scaleX(.1428); }
.motion .gstyle__name { transition: color .5s var(--ease); color: var(--fg-4); }
.motion .gstyle.is-active .gstyle__name { color: var(--fg); }
.motion .gstyle .tag { color: var(--fg-3); box-shadow: inset 0 0 0 1px var(--line); transition: color .5s, background-color .5s; }
.motion .gstyle .tag--free { background: var(--chip); box-shadow: none; }
.motion .gstyle.is-active .tag { color: var(--fg); box-shadow: inset 0 0 0 1px var(--line-2); }
.motion .gstyle.is-active .tag--free { background: var(--fg); color: var(--on-fg); }
.motion .gstyle__desc { max-height: 0; overflow: hidden; opacity: 0; transition: max-height .5s var(--ease), opacity .4s; }
.motion .gstyle.is-active .gstyle__desc { max-height: 4em; opacity: 1; }
@media (min-width: 900px) {
  .motion .styles__pin { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; align-content: center; column-gap: clamp(40px, 7vw, 120px); max-width: calc(var(--maxw) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); }
  .motion .styles__pin > .wrap { padding-inline: 0; }
  .motion .styles__head { grid-column: 2; grid-row: 1; grid-template-columns: 1fr; gap: 16px; align-self: end; }
  .motion .styles__head .eyebrow { margin-bottom: 8px; }
  .motion .gallery { display: contents; }
  .motion .gallery__stage { --cw: min(34vw, 70svh * .8, 720px); grid-column: 1; grid-row: 1 / span 2; align-self: center; }
  .motion .gallery__list { grid-column: 2; grid-row: 2; align-self: start; margin-top: clamp(20px, 3vh, 36px); }
  .motion .gstyle__name { font-size: clamp(20px, min(1.8vw, .7vw + 12px), 34px); }
  .motion .gstyle { padding: clamp(11px, .4vw + 5px, 16px) 0; }
}
@media (max-width: 899px) {
  .motion .styles__head .body { display: none; }
  .motion .styles__head .h2 { font-size: clamp(34px, 9.4vw, 44px); }
  .motion .gallery { grid-template-columns: 1fr; justify-items: center; gap: 20px; margin-top: 20px; }
  .motion .gallery__stage { --cw: min(76vw, 44svh * .8); }
  .motion .gallery__list { position: relative; width: 100%; min-height: 96px; }
  .motion .gstyle { position: absolute; inset: 0 0 auto; border: 0; padding: 0; opacity: 0; text-align: center; grid-template-columns: 1fr; justify-items: center; gap: 6px; }
  .motion .gstyle .tag { order: -1; }
  .motion .gstyle { transition: opacity .5s var(--ease); }
  .motion .gstyle.is-active { opacity: 1; }
}

/* ---------------------------------------------------------------- 04 PHOTO */
.photo { position: relative; padding-block: var(--sect); overflow: hidden; }
.photo__bg { position: absolute; inset: 0; opacity: .0; pointer-events: none; }
/* soft top and bottom edges by mask, not by painting the page colour, so it sits on any page theme.
 * The mask is on the layers themselves (they fade with the theme), not on their parent. */
.photo__bg > picture, .photo__bg::after { position: absolute; inset: 0;
  -webkit-mask-image: linear-gradient(180deg, transparent, #000 30%, #000 70%, transparent); mask-image: linear-gradient(180deg, transparent, #000 30%, #000 70%, transparent); }
.photo__bg img { width: 100%; height: 100%; object-fit: cover; filter: blur(60px) saturate(1.2); transform: scale(1.3); opacity: .5; }
.photo__bg::after { content: ""; position: absolute; inset: 0; background: rgba(11, 9, 13, .6); }
.no-js .photo__bg, html:not(.motion) .photo__bg { opacity: 1; }
.photo__grid { position: relative; display: grid; gap: clamp(40px, 7vw, 120px); align-items: center; }
@media (min-width: 900px) { .photo__grid { grid-template-columns: auto 1fr; } }
.photo__device { position: relative; justify-self: center; padding-right: clamp(40px, 8vw, 120px); }
.photo__screens > [data-mock], .photo__over { position: absolute; inset: 0; }
.photo__over { overflow: hidden; }
.photo__overin, .photo__overscr { position: absolute; inset: 0; }
.photo__widget { position: absolute; right: 0; bottom: 12%; width: calc(var(--photo-pw) * .95); filter: drop-shadow(0 30px 40px rgba(0, 0, 0, .55)); }
.photo__text { display: grid; gap: 20px; align-content: center; }
.photo__text .eyebrow { margin-bottom: 8px; }
.eyebrow .tag { display: inline-block; margin-left: 10px; vertical-align: .1em; font-size: .78em; }
.photo__privacy { display: flex; align-items: center; gap: 10px; color: var(--fg-2); }
.photo__privacy svg { width: 16px; height: 16px; flex: none; fill: none; stroke: var(--accent); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
@media (max-width: 899px) {
  :root { --photo-pw: 62vw; }
  .photo__device { padding-right: 18vw; }
  .photo__widget { width: 72vw; right: -2vw; }
  .photo__text { order: -1; }
}

/* ---------------------------------------------------------------- 05 WIDGETS */
.widgets { padding-top: var(--sect); }
.widgets__text { display: grid; gap: 18px; }
.widgets__free { display: flex; align-items: center; gap: 10px; font: 500 clamp(16px, .4vw + 11px, 20px)/1.3 var(--font-text); color: var(--fg); }
.widgets__free svg { width: 16px; height: 15px; flex: none; fill: var(--mark); }
.widgets__row { display: flex; justify-content: center; gap: clamp(16px, 5vw, 96px); margin-top: clamp(48px, 6vw, 96px); }
.wdev { display: grid; justify-items: center; gap: 16px; }
@media (max-width: 899px) {
  :root { --w-pw: 44vw; --sb-pw: 92vw; }
  .widgets__row { gap: 12px; padding-inline: 12px; }
}
.standby { display: flex; justify-content: center; margin-top: clamp(56px, 8vw, 128px); }
.standby__fig { display: grid; justify-items: center; gap: 20px; }
.standby__device { position: relative; padding-bottom: 28px; }
.standby__device::after { content: ""; position: absolute; left: -12%; right: -12%; bottom: 0; height: 40px; background: radial-gradient(50% 50% at 50% 50%, rgba(var(--glow), .55), transparent 70%); z-index: -1; }
.standby__fig { position: relative; isolation: isolate; }

/* ---------------------------------------------------------------- 06 SHARE */
.share { padding-top: var(--sect); }
.share__grid { display: grid; gap: clamp(40px, 6vw, 96px); align-items: center; }
@media (min-width: 900px) { .share__grid { grid-template-columns: 5fr 6fr; } }
.share__text { display: grid; gap: 20px; }
.share__text .eyebrow { margin-bottom: 8px; }
.share__device { position: relative; display: flex; justify-content: center; }
.share__fly { position: absolute; z-index: 5; width: calc(var(--share-pw) * .62); aspect-ratio: 4 / 5; border-radius: 12px; overflow: hidden; box-shadow: 0 30px 60px -10px rgba(0, 0, 0, .6); opacity: 0; pointer-events: none; }
.share__flyin { position: absolute; inset: 0; }
html:not(.motion) .share__fly { display: none; }
@media (max-width: 899px) { :root { --share-pw: 68vw; } }

/* ---------------------------------------------------------------- 07 PLUS */
.plus { padding-top: var(--sect); }
.plus__grid { display: grid; gap: clamp(40px, 6vw, 96px); margin-top: clamp(40px, 6vw, 88px); align-items: start; }
@media (min-width: 1100px) { .plus__grid { grid-template-columns: 1fr auto; } }
.prices { display: grid; gap: 12px; }
@media (min-width: 700px) { .prices { grid-template-columns: repeat(3, 1fr); } .price__note { grid-column: 1 / -1; } }
.price { display: flex; flex-direction: column; gap: 6px; padding: clamp(22px, 2.2vw, 30px); border-radius: 22px; background: var(--card); box-shadow: inset 0 0 0 1px var(--line); }
.price--plus { background: linear-gradient(180deg, var(--card-tint), var(--card-tint-2) 60%), var(--card); }
.price__name { font: 500 16px/1.3 var(--font-text); color: var(--fg-2); }
.price__amt { font: 700 clamp(44px, 4.6vw, 64px)/1 var(--font-display); letter-spacing: -.045em; margin-top: 18px; }
.price__per { margin-bottom: 18px; }
.price__list { display: grid; gap: 10px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 15px; color: var(--fg-2); }
.price__list li { position: relative; padding-left: 22px; }
.price__list li::before { content: ""; position: absolute; left: 0; top: .45em; width: 11px; height: 10px; background: var(--heart); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.3c-.3 0-.6-.1-.8-.3C7.4 17.9 1.5 13.4 1.5 7.9 1.5 4.6 4 2 7.1 2c2 0 3.7 1 4.9 2.7C13.2 3 14.9 2 16.9 2c3.1 0 5.6 2.6 5.6 5.9 0 5.5-5.9 10-9.7 13.1-.2.2-.5.3-.8.3Z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.3c-.3 0-.6-.1-.8-.3C7.4 17.9 1.5 13.4 1.5 7.9 1.5 4.6 4 2 7.1 2c2 0 3.7 1 4.9 2.7C13.2 3 14.9 2 16.9 2c3.1 0 5.6 2.6 5.6 5.9 0 5.5-5.9 10-9.7 13.1-.2.2-.5.3-.8.3Z'/%3E%3C/svg%3E") center / contain no-repeat; }
.price--plus .price__list li::before { background: var(--accent); }
.price:first-child .price__list li::before { background: var(--fg-3); }
.price__note { padding-top: 8px; max-width: 60em; }
.plus__device { justify-self: center; }
.unlock { display: flex; align-items: center; gap: 12px; margin-top: 28px; font: 500 14px/1.2 var(--font-text); color: var(--fg-2); }
.unlock__dev { display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px 8px 8px; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--line); white-space: nowrap; }
.unlock__lock { position: relative; width: 26px; height: 26px; border-radius: 50%; background: var(--heart); }
.unlock__lock::after { content: ""; position: absolute; inset: 7px 7px 8px; background: var(--ink); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.3c-.3 0-.6-.1-.8-.3C7.4 17.9 1.5 13.4 1.5 7.9 1.5 4.6 4 2 7.1 2c2 0 3.7 1 4.9 2.7C13.2 3 14.9 2 16.9 2c3.1 0 5.6 2.6 5.6 5.9 0 5.5-5.9 10-9.7 13.1-.2.2-.5.3-.8.3Z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.3c-.3 0-.6-.1-.8-.3C7.4 17.9 1.5 13.4 1.5 7.9 1.5 4.6 4 2 7.1 2c2 0 3.7 1 4.9 2.7C13.2 3 14.9 2 16.9 2c3.1 0 5.6 2.6 5.6 5.9 0 5.5-5.9 10-9.7 13.1-.2.2-.5.3-.8.3Z'/%3E%3C/svg%3E") center / contain no-repeat; }
.unlock__line { position: relative; flex: 1; max-width: 120px; min-width: 24px; height: 1px; background: var(--line); overflow: hidden; }
.unlock__line i { position: absolute; inset: 0; background: var(--accent); transform-origin: left; }
@media (max-width: 899px) { :root { --plus-pw: 68vw; } }
@media (max-width: 420px) { .unlock { font-size: 12px; gap: 8px; } .unlock__dev { padding-right: 10px; } }

/* ---------------------------------------------------------------- 08 KNOW */
.know { padding-top: var(--sect); }
.know__list { display: grid; margin-top: clamp(32px, 5vw, 64px); }
@media (min-width: 900px) { .know__list { grid-template-columns: repeat(4, 1fr); gap: 32px; } }
.know__list li { padding: 20px 0; border-top: 1px solid var(--line); color: var(--fg-2); font-size: 16px; }
.know__list strong { display: block; color: var(--fg); font: 700 22px/1.15 var(--font-display); letter-spacing: -.02em; margin-bottom: 8px; }
.know__more { margin-top: 24px; }

/* ---------------------------------------------------------------- 09 FAQ */
.faq { padding-top: var(--sect); }
.faq__grid { display: grid; gap: 24px; }
@media (min-width: 900px) { .faq__grid { grid-template-columns: 5fr 7fr; } .faq__grid .eyebrow { margin-bottom: 40px; } }
.faq__list { border-bottom: 1px solid var(--line); align-self: end; }
.qa { border-top: 1px solid var(--line); }
.qa summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 22px 0; font: 700 clamp(19px, 1.6vw, 23px)/1.25 var(--font-display); letter-spacing: -.02em; }
.qa summary::-webkit-details-marker { display: none; }
.qa summary i { position: relative; width: 14px; height: 14px; flex: none; }
.qa summary i::before, .qa summary i::after { content: ""; position: absolute; left: 0; top: 50%; width: 100%; height: 1.5px; background: currentColor; transition: transform .4s var(--ease); }
.qa summary i::after { transform: rotate(90deg); }
.qa[open] summary i::after { transform: rotate(0); }
.qa__a { overflow: hidden; }
.qa__a p { padding: 0 0 24px; color: var(--fg-2); max-width: 34em; }

/* ---------------------------------------------------------------- FINAL */
.final { position: relative; padding-top: var(--sect); }
.final__pin { position: relative; min-height: 100svh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: clamp(24px, 4vh, 48px); padding-block: calc(var(--nav-h) + 16px) 48px; overflow: hidden; }
.final__glow { position: absolute; left: 50%; top: 40%; width: min(120vw, 1200px); height: 80%; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(var(--glow), .5), transparent); pointer-events: none; }
.final__inner { position: relative; display: grid; justify-items: center; gap: 28px; text-align: center; }

/* page end: the countdown reaches zero once, then the app's own message and a few hearts */
.final__stage { position: relative; display: grid; place-items: center; width: 100%; height: clamp(150px, 30vh, 300px); }
.final__num, .final__say { grid-area: 1 / 1; }
.final__num { font: 700 clamp(150px, 30vh, 300px)/.8 var(--font-display); letter-spacing: -.06em; font-variant-numeric: tabular-nums; }
.final__say { font: 700 clamp(40px, 10vw, 104px)/1 var(--font-display); letter-spacing: -.04em; text-align: center; opacity: 0; transform: scale(.92); }
.final__hearts { position: absolute; inset: 0; pointer-events: none; }
.final__hearts svg { position: absolute; width: 18px; height: 17px; fill: var(--heart); }
.final__quote { max-width: 24em; font: 500 clamp(18px, 4.4vw, 26px)/1.4 var(--font-text); color: var(--fg-2); text-wrap: balance; }
.final.is-done .final__num, .no-js .final__num { opacity: 0; }
.no-js .final__say { opacity: 1; transform: none; }
.final.is-done .final__say { opacity: 1; transform: none; transition: opacity .6s var(--ease), transform .6s var(--ease); }

/* ---------------------------------------------------------------- FOOTER */
.foot { padding: clamp(64px, 8vw, 120px) 0 40px; }
.foot__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; padding-top: 24px; border-top: 1px solid var(--line); }
.foot__brand { display: flex; align-items: center; gap: 12px; text-decoration: none; font: 700 17px/1 var(--font-display); letter-spacing: -.02em; }
.foot__brand img { width: 40px; height: 40px; border-radius: 10px; }
.foot__links { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.foot__links a { color: var(--fg-2); text-decoration: none; font-size: 15px; padding-block: 6px; }
.foot__links a:hover { color: var(--fg); }
.foot__end { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 24px 48px; margin-top: 40px; }
.foot__legal { display: flex; flex-wrap: wrap; gap: 6px 24px; }

/* ---------------------------------------------------------------- reveal (motion only) */
.motion [data-reveal] { opacity: 0; transform: translateY(24px); }

/* ================================================================
 * MOCKUPS. Faithful recreations of app/src/components/* in CSS.
 * Every mockup root is a size container; --p is one iOS point on a
 * 393 pt wide screen, --u one pixel of the 1080 px share card,
 * --w one point of a widget (small 158 pt, medium 338 pt).
 * ================================================================ */

.scr { position: absolute; inset: 0; overflow: hidden; --p: calc(100cqw / 393); font-family: var(--font-system); color: #fff; -webkit-font-smoothing: antialiased; line-height: 1.2; }
.scr__bg { position: absolute; inset: 0; }
.scr__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.scr__photo img { width: 100%; height: 100%; object-fit: cover; }
.scr__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.35), rgba(0,0,0,.25) 50%, rgba(0,0,0,.65)); }
.scr__arch { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); border-radius: 999px 999px 0 0; }

.sb { position: absolute; z-index: 10; top: 0; left: 0; right: 0; height: calc(var(--p) * 54); display: flex; align-items: center; justify-content: space-between; padding: calc(var(--p) * 4) calc(var(--p) * 30) 0 calc(var(--p) * 48); font-weight: 600; font-size: calc(var(--p) * 17); letter-spacing: -.01em; }
.sb__r { display: flex; align-items: center; gap: calc(var(--p) * 6); }
.sb__r svg { height: calc(var(--p) * 12); width: auto; fill: currentColor; }
.sb--dark { color: #000; }

.scr__icons { position: absolute; z-index: 5; top: calc(var(--p) * 67); right: calc(var(--p) * 16); display: flex; gap: calc(var(--p) * 4); }
.scr__icons svg { width: calc(var(--p) * 39); height: calc(var(--p) * 39); padding: calc(var(--p) * 8); fill: var(--icon); }

.scr__main { position: absolute; inset: calc(var(--p) * 59) 0 calc(var(--p) * 34); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0 calc(var(--p) * 16); }

/* classic countdown (Midnight, Rosé, Sage, Your photo) */
.cd__sub { font-size: calc(var(--p) * 18); font-weight: 600; margin-bottom: calc(var(--p) * 32); color: var(--sub); }
.cd__grid { display: flex; flex-wrap: wrap; justify-content: center; gap: calc(var(--p) * 24); max-width: calc(var(--p) * 300); }
.cd__g { display: flex; flex-direction: column; align-items: center; min-width: calc(var(--p) * 110); }
.cd__n { font-size: calc(var(--p) * 93.6); line-height: 1.05; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--digit); letter-spacing: -.02em; }
.cd__l { margin-top: calc(var(--p) * 4); font-size: calc(var(--p) * 13.1); font-weight: 700; letter-spacing: calc(var(--p) * 1.6); text-transform: uppercase; color: var(--label); }
.cd__date { margin-top: calc(var(--p) * 24); font-size: calc(var(--p) * 15); font-weight: 600; letter-spacing: calc(var(--p) * .5); color: var(--muted); }
.pills { display: flex; gap: calc(var(--p) * 8); margin-top: calc(var(--p) * 64); width: 100%; max-width: calc(var(--p) * 380); padding: 0 calc(var(--p) * 8); }
.pill { flex: 1; display: flex; align-items: center; justify-content: center; gap: calc(var(--p) * 8); height: calc(var(--p) * 46); border-radius: calc(var(--p) * 23); border: calc(var(--p) * 1.5) solid var(--pb); color: var(--pt); font-size: calc(var(--p) * 15); font-weight: 600; white-space: nowrap; }
.pill svg { width: calc(var(--p) * 16); height: calc(var(--p) * 16); fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.pill--p { background: var(--pr); border-color: var(--pr); color: var(--prt); }

.scr--midnight { --digit: #fff; --label: #FF5C85; --sub: rgba(255,255,255,.72); --muted: rgba(255,255,255,.55); --icon: rgba(255,255,255,.55); --pb: rgba(255,255,255,.22); --pt: #fff; --pr: #FF3B6B; --prt: #fff; }
.scr--midnight .scr__bg { background: linear-gradient(180deg, #2A1320 0%, #140E13 33%, #0B090D 66%, #0B090D 100%); }
.scr--rose { --digit: #7E1C40; --label: #B2476C; --sub: #A83E63; --muted: rgba(126,28,64,.6); --icon: rgba(126,28,64,.5); --pb: rgba(126,28,64,.25); --pt: #7E1C40; --pr: #7E1C40; --prt: #FFF0F3; }
.scr--rose .scr__bg { background: linear-gradient(180deg, #FFF0F3, #FBD3DD 50%, #F5B3C4); }
.scr--rose .cd__n { font-family: var(--font-serif); font-weight: 400; line-height: 1.2; letter-spacing: 0; }
.scr--rose .cd__l, .scr--rose .cd__sub, .scr--rose .cd__date { font-family: var(--font-italic); font-style: italic; font-weight: 400; text-transform: none; letter-spacing: calc(var(--p) * .2); }
.scr--rose .cd__l { font-size: calc(var(--p) * 16.1); }
.scr--rose .cd__sub { font-size: calc(var(--p) * 24); }
.scr--sage { --digit: #3C4632; --label: #7C6B55; --sub: #7C6B55; --muted: rgba(60,70,50,.6); --icon: rgba(60,70,50,.45); --pb: rgba(60,70,50,.25); --pt: #3C4632; --pr: #6F8160; --prt: #F6F1E7; font-family: var(--font-rounded); }
.scr--sage .scr__bg { background: #EEE6D8; }
.scr--photo { --digit: #fff; --label: rgba(255,255,255,.85); --sub: rgba(255,255,255,.85); --muted: rgba(255,255,255,.75); --icon: rgba(255,255,255,.75); --pb: rgba(255,255,255,.35); --pt: #fff; --pr: #FF3B6B; --prt: #fff; }
.scr--photo .cd__n, .scr--photo .cd__l { text-shadow: 0 1px 12px rgba(0,0,0,.25); }

/* monument styles */
.scr--poster { --icon: rgba(244,243,239,.5); --pb: rgba(244,243,239,.28); --pt: #F4F3EF; --pr: #F4F3EF; --prt: #0B0B0B; --ink: #F4F3EF; --soft: #8B8A86; }
.scr--poster .scr__bg { background: #0B0B0B; }
.scr--board { --icon: rgba(244,243,239,.5); --pb: rgba(244,243,239,.28); --pt: #F4F3EF; --pr: #F4F3EF; --prt: #000; --ink: #F4F3EF; --soft: #8B8A86; }
.scr--board .scr__bg { background: #000; }
.scr--paper { --icon: rgba(11,11,11,.45); --pb: #0B0B0B; --pt: #0B0B0B; --pr: #0B0B0B; --prt: #F4F3EF; --ink: #0B0B0B; --soft: #6B6A66; color: #0B0B0B; }
.scr--paper .scr__bg { background: #F4F3EF; }
.mo .pill { font-family: var(--font-text); font-weight: 500; }
.mo__block { align-self: stretch; padding: 0 calc(var(--p) * 8); font-family: var(--font-text); font-weight: 500; color: var(--ink); }
.mo__head { font-size: calc(var(--p) * 16); line-height: 1.2; }
.mo__num { font-family: var(--font-display); font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.mo__label { font-size: calc(var(--p) * 22); line-height: 1.2; }
.mo__mono { font-family: var(--font-mono); font-size: calc(var(--p) * 16); color: var(--soft); }
.mo__mono b { font-weight: 400; color: var(--ink); }
.mo__date { font-family: var(--font-mono); font-size: calc(var(--p) * 13); color: var(--soft); margin-top: calc(var(--p) * 16); }
.mo__hms { display: flex; gap: calc(var(--p) * 24); margin-top: calc(var(--p) * 16); }
.hrt { display: inline-block; width: .9em; height: .82em; fill: #F2CFD8; vertical-align: -.04em; }

.po__num { font-size: calc(var(--p) * 393); line-height: .86; letter-spacing: -.06em; margin: calc(var(--p) * 18) 0 0 calc(var(--p) * -30); color: var(--ink); }
.po__label { margin-top: calc(var(--p) * 10); }
.pa__rule { height: calc(var(--p) * 1.5); background: var(--ink); margin-top: calc(var(--p) * 8); }
.pa__num { font-size: calc(var(--p) * 259); line-height: .86; letter-spacing: -.06em; text-align: right; margin: calc(var(--p) * 20) calc(var(--p) * -4) 0 0; }
.pa__label { margin-top: calc(var(--p) * 14); }
.pa__hms { display: flex; margin-top: calc(var(--p) * 16); border-top: calc(var(--p) * 1.5) solid var(--ink); padding-top: calc(var(--p) * 8); }
.pa__hms > div { flex: 1; }
.pa__hms b { display: block; font-weight: 500; font-size: calc(var(--p) * 26); line-height: 1.15; }
.pa__hms > div > span { display: block; font-family: var(--font-mono); font-size: calc(var(--p) * 11); color: var(--soft); margin-top: calc(var(--p) * 2); }
.bo__leaves { display: flex; gap: calc(var(--p) * 6); margin-top: calc(var(--p) * 32); }
.bo__row { display: flex; align-items: center; gap: calc(var(--p) * 8); margin-top: calc(var(--p) * 16); }
.bo__small { display: flex; gap: calc(var(--p) * 16); margin-top: calc(var(--p) * 24); }
.bo__small > div { display: grid; gap: calc(var(--p) * 4); }
.bo__small > div > div { display: flex; gap: calc(var(--p) * 3); }
.bo__unit { font-size: calc(var(--p) * 11); color: var(--soft); }

/* one flap of the departure board, sized by --lh (height) and --lw (width) */
.leaf { position: relative; width: var(--lw); height: var(--lh); border-radius: calc(var(--lh) * .08); overflow: hidden; background: #1A1A1A; display: grid; place-items: center; font-family: var(--font-display); font-weight: 700; color: #F4F3EF; font-size: calc(var(--lh) * .84); line-height: 1; letter-spacing: -.03em; }
.leaf::before { content: ""; position: absolute; inset: 0 0 50% 0; background: #222; }
.leaf::after { content: ""; position: absolute; left: 0; right: 0; top: calc(50% - .75px); height: 1.5px; background: #000; }
.leaf > * { position: relative; }
.leaf svg { width: 60%; height: auto; fill: #F4F3EF; }

/* pairing screens */
.pair { position: absolute; inset: 0; background: #000; color: #fff; font-family: var(--font-system); --p: calc(100cqw / 393); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0 calc(var(--p) * 24); text-align: center; }
.pair__title { font-size: calc(var(--p) * 48); line-height: calc(var(--p) * 52); font-weight: 600; margin-bottom: calc(var(--p) * 64); letter-spacing: -.01em; }
.pair__card { width: 100%; max-width: calc(var(--p) * 360); display: flex; flex-direction: column; gap: calc(var(--p) * 16); }
.pair__hint { font-size: calc(var(--p) * 16); line-height: 1.5; color: #B0B4BA; font-weight: 500; }
.pair__code { font-size: calc(var(--p) * 56); line-height: calc(var(--p) * 66); font-weight: 700; letter-spacing: calc(var(--p) * 8); font-variant-numeric: tabular-nums; }
.pair__input { font-size: calc(var(--p) * 32); font-weight: 700; letter-spacing: calc(var(--p) * 8); border-bottom: calc(var(--p) * 2) solid #444; padding: calc(var(--p) * 8) 0; font-variant-numeric: tabular-nums; }
.pair__input i { display: inline-block; width: calc(var(--p) * 2); height: calc(var(--p) * 30); background: #FF3B6B; vertical-align: middle; margin-left: calc(var(--p) * -4); animation: caret 1s steps(1) infinite; }
@keyframes caret { 50% { opacity: 0; } }
.pair__btn { background: #fff; color: #000; border-radius: calc(var(--p) * 14); padding: calc(var(--p) * 16) 0; font-size: calc(var(--p) * 16); font-weight: 700; }

/* share cards (4:5, 1080 x 1350) */
.card { position: absolute; inset: 0; overflow: hidden; --u: calc(100cqw / 1080); font-family: var(--font-system); -webkit-font-smoothing: antialiased; line-height: 1.15; }
.card__bg { position: absolute; inset: 0; }
.card__col { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; text-align: center; padding-top: calc(var(--u) * 150); }
.card__num { font-size: calc(var(--u) * 520); line-height: 1; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.card__lab { margin-top: calc(var(--u) * 36); font-size: calc(var(--u) * 50); font-weight: 700; letter-spacing: calc(var(--u) * 10); text-transform: uppercase; }
.card__until { margin-top: calc(var(--u) * 26); font-size: calc(var(--u) * 52); font-weight: 500; }
.card__rest { display: flex; gap: calc(var(--u) * 90); margin-top: calc(var(--u) * 76); align-items: baseline; }
.card__rest b { font-size: calc(var(--u) * 94); font-weight: 800; font-variant-numeric: tabular-nums; }
.card__rest > div > span { margin-left: calc(var(--u) * 20); font-size: calc(var(--u) * 36); font-weight: 700; letter-spacing: calc(var(--u) * 6); text-transform: uppercase; }
.card__date { margin-top: calc(var(--u) * 70); font-size: calc(var(--u) * 40); font-weight: 600; }
.card__foot { position: absolute; left: 0; right: 0; bottom: calc(var(--u) * 72); display: flex; justify-content: center; align-items: center; gap: calc(var(--u) * 26); font-size: calc(var(--u) * 40); font-weight: 500; letter-spacing: calc(var(--u) * 1.5); }
.card__foot svg { width: calc(var(--u) * 34); height: calc(var(--u) * 31); fill: currentColor; }

.card--midnight { color: #fff; }
.card--midnight .card__bg { background: linear-gradient(180deg, #461B2D 0%, #2A1320 25%, #140E13 52%, #0B090D 78%); }
.card--midnight .card__lab, .card--midnight .card__rest > div > span { color: #FF5C85; }
.card--midnight .card__until { color: rgba(255,255,255,.72); }
.card--midnight .card__date { color: rgba(255,255,255,.55); }
.card--midnight .card__foot { color: rgba(255,255,255,.62); }
.card--midnight .card__foot svg { fill: #E8426A; }

.card--rose { color: #7E1C40; }
.card--rose .card__bg { background: linear-gradient(160deg, #FDEEF1 0%, #F6D6DE 50%, #EDB6C6 100%); }
.card--rose .card__num, .card--rose .card__rest b { font-family: var(--font-serif); font-weight: 400; letter-spacing: 0; }
.card--rose .card__num { font-size: calc(var(--u) * 470); line-height: 1.12; }
.card--rose .card__col { padding-top: calc(var(--u) * 120); }
.card--rose .card__lab, .card--rose .card__until, .card--rose .card__rest > div > span, .card--rose .card__date, .card--rose .card__foot { font-family: var(--font-italic); font-style: italic; font-weight: 400; text-transform: none; letter-spacing: calc(var(--u) * 1); color: #A83E63; }
.card--rose .card__lab { font-size: calc(var(--u) * 72); margin-top: 0; }
.card--rose .card__until { font-size: calc(var(--u) * 72); margin-top: calc(var(--u) * 10); }
.card--rose .card__rest > div > span { font-size: calc(var(--u) * 56); }
.card--rose .card__foot { font-size: calc(var(--u) * 52); color: #A83E63; }
.card--rose .card__foot svg { fill: none; stroke: #D9577F; stroke-width: 2; }

.card--sage { color: #3C4632; font-family: var(--font-rounded); }
.card--sage .card__bg { background: #EEE6D8; }
.card--sage .card__lab, .card--sage .card__until, .card--sage .card__rest > div > span { color: #7C6B55; }
.card--sage .card__date { color: rgba(124,107,85,.95); position: relative; }
.card--sage .card__foot { color: #7C6B55; }
.card--sage .card__foot svg { fill: #C47A58; }

.card--photo { color: #fff; }
.card--photo .card__bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.card--photo .card__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.12), rgba(0,0,0,.18) 45%, rgba(0,0,0,.6)); }
.card--photo .card__col { align-items: flex-start; text-align: left; padding: calc(var(--u) * 400) 0 0 calc(var(--u) * 92); }
.card--photo .card__num { font-size: calc(var(--u) * 340); line-height: .95; text-shadow: 0 2px 30px rgba(0,0,0,.25); }
.card--photo .card__lab { margin-top: calc(var(--u) * 30); }
.card--photo .card__until { color: rgba(255,255,255,.92); }
.card--photo .card__rest { margin-top: calc(var(--u) * 52); }
.card--photo .card__rest > div > span { color: #fff; }
.card--photo .card__date { color: rgba(255,255,255,.85); margin-top: calc(var(--u) * 50); }
.card--photo .card__foot { justify-content: flex-start; padding-left: calc(var(--u) * 92); color: #fff; }

/* monument cards: absolute layout, measured on docs/share-cards/*.png */
.card--mono { font-family: var(--font-text); font-weight: 500; }
.card--mono .m { position: absolute; left: calc(var(--u) * 85); }
.card--mono .mr { position: absolute; right: calc(var(--u) * 85); }
.card--mono .mono { font-family: var(--font-mono); font-weight: 400; }
.card--mono .num { font-family: var(--font-display); font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.card--mono .hrt { fill: #F2CFD8; }
.card--poster { background: #0B0B0B; color: #F4F3EF; }
.card--paper { background: #F4F3EF; color: #0B0B0B; }
.card--board { background: #000; color: #F4F3EF; }
.cp__head { top: calc(var(--u) * 88); font-size: calc(var(--u) * 50); color: #8B8A86; }
.cp__num { top: calc(var(--u) * 132); left: calc(var(--u) * 68) !important; font-size: calc(var(--u) * 1010); line-height: 1; letter-spacing: -.06em; }
.cp__label { top: calc(var(--u) * 1000); font-size: calc(var(--u) * 84); }
.cp__hms { top: calc(var(--u) * 1030); font-size: calc(var(--u) * 52); color: #8B8A86; }
.cp__hms b { font-weight: 400; color: #F4F3EF; }
.c__date { top: calc(var(--u) * 1136); font-size: calc(var(--u) * 44); color: #8B8A86; }
.c__foot { top: calc(var(--u) * 1232); font-size: calc(var(--u) * 38); color: #8B8A86; }
.c__heart { top: calc(var(--u) * 1238); font-size: calc(var(--u) * 42); }
.card--paper .c__date, .card--paper .c__foot { color: #6B6A66; }
.cpa__head { top: calc(var(--u) * 88); font-size: calc(var(--u) * 50); }
.cpa__h1 { top: calc(var(--u) * 94); font-size: calc(var(--u) * 46); }
.cpa__rule { left: calc(var(--u) * 85); right: calc(var(--u) * 85); height: calc(var(--u) * 5); background: #0B0B0B; position: absolute; }
.cpa__num { top: calc(var(--u) * 212); font-size: calc(var(--u) * 628); line-height: 1; letter-spacing: -.06em; }
.cpa__label { top: calc(var(--u) * 770); font-size: calc(var(--u) * 66); }
.cpa__cell { top: calc(var(--u) * 930); }
.cpa__cell b { display: block; font-weight: 500; font-size: calc(var(--u) * 80); line-height: 1; letter-spacing: -.02em; }
.cpa__cell > span { display: block; font-family: var(--font-mono); font-size: calc(var(--u) * 36); color: #6B6A66; margin-top: calc(var(--u) * 18); }
.cb__head { top: calc(var(--u) * 88); font-size: calc(var(--u) * 50); color: #8B8A86; }
.cb__leaves { top: calc(var(--u) * 212); display: flex; gap: calc(var(--u) * 22); --lh: calc(var(--u) * 570); --lw: calc(var(--u) * 410); }
.cb__leaves .leaf { border-radius: calc(var(--u) * 42); }
.cb__row { top: calc(var(--u) * 830); display: flex; align-items: center; gap: calc(var(--u) * 30); }
.cb__row .leaf { --lh: calc(var(--u) * 125); --lw: calc(var(--u) * 96); border-radius: calc(var(--u) * 12); }
.cb__days { font-size: calc(var(--u) * 82); }
.cb__small { top: calc(var(--u) * 830); left: calc(var(--u) * 462) !important; display: flex; gap: calc(var(--u) * 36); }
.cb__small > div > div { display: flex; gap: calc(var(--u) * 10); --lh: calc(var(--u) * 168); --lw: calc(var(--u) * 120); }
.cb__small .leaf { border-radius: calc(var(--u) * 14); }
.cb__small > div > span { display: block; margin-top: calc(var(--u) * 20); font-size: calc(var(--u) * 36); color: #8B8A86; }
.card--board .c__date { top: calc(var(--u) * 1110); }

/* widgets */
.wroot { position: relative; width: 100%; aspect-ratio: 1; border-radius: calc(100cqw * 0); }
.wroot--m { aspect-ratio: 338 / 158; }
.wd { position: absolute; inset: 0; overflow: hidden; --w: calc(100cqw / 158); border-radius: calc(var(--w) * 22); font-family: var(--font-system); color: #fff; line-height: 1.1; -webkit-font-smoothing: antialiased; }
.wd--m { --w: calc(100cqw / 338); }
.wd__bg { position: absolute; inset: 0; }
.wd__heart { position: absolute; z-index: 2; top: calc(var(--w) * 16); left: calc(var(--w) * 16); width: calc(var(--w) * 13); height: calc(var(--w) * 12); }
.wd__c { position: absolute; inset: calc(var(--w) * 16); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: calc(var(--w) * 2); text-align: center; }
.wd__n { font-size: calc(var(--w) * 58); font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; letter-spacing: -.02em; }
.wd__l { font-size: calc(var(--w) * 10); font-weight: 700; letter-spacing: calc(var(--w) * 1.2); text-transform: uppercase; }
.wd__d { font-size: calc(var(--w) * 11); opacity: .6; padding-top: calc(var(--w) * 4); white-space: nowrap; }
.wd--m .wd__c { flex-direction: row; justify-content: flex-start; gap: calc(var(--w) * 16); padding-left: calc(var(--w) * 8); text-align: left; }
.wd--m .wd__n { font-size: calc(var(--w) * 68); }
.wd--m .wd__l { font-size: calc(var(--w) * 11); }
.wd--m .wd__meta { display: grid; gap: calc(var(--w) * 4); }
.wd--m .wd__d { padding-top: 0; }
.wd--midnight .wd__bg { background: linear-gradient(180deg, #2A1320 0%, #0B090D 75%); }
.wd--midnight .wd__l { color: #FF5C85; }
.wd--midnight .wd__heart { fill: #FF3B6B; }
.wd--photo .wd__bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.wd--photo .wd__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.15) 50%, rgba(0,0,0,.55)); }
.wd--photo .wd__heart { fill: #fff; opacity: .9; }
.wd--photo .wd__c { align-items: flex-start; justify-content: flex-end; text-align: left; }
.wd--photo .wd__n { font-size: calc(var(--w) * 50); text-shadow: 0 1px 8px rgba(0,0,0,.4); }
.wd--photo .wd__d { opacity: .85; }
.wd--photo.wd--m .wd__c { flex-direction: row; align-items: flex-end; justify-content: flex-start; }
.wd--photo.wd--m .wd__n { font-size: calc(var(--w) * 68); }

/* home screen */
.home { position: absolute; inset: 0; --p: calc(100cqw / 393); font-family: var(--font-system); color: #fff; line-height: 1.2; }
.home__wall { position: absolute; inset: 0; }
.home__wall img { width: 100%; height: 100%; object-fit: cover; }
.home__wall::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,10,20,.35), rgba(20,10,20,.15) 40%, rgba(20,10,20,.45)); }
.home__grid { position: absolute; left: calc(var(--p) * 27.5); right: calc(var(--p) * 27.5); top: calc(var(--p) * 72); display: grid; grid-template-columns: repeat(4, 1fr); column-gap: calc(var(--p) * 30); row-gap: calc(var(--p) * 22); }
.home__w { grid-column: span 4; }
.home__ws { grid-column: span 2; grid-row: span 2; }
.home__w .wroot, .home__ws .wroot { filter: drop-shadow(0 calc(var(--p) * 4) calc(var(--p) * 10) rgba(0,0,0,.25)); }
.app-i { display: grid; justify-items: center; gap: calc(var(--p) * 6); font-size: calc(var(--p) * 11.5); font-weight: 500; text-shadow: 0 1px 4px rgba(0,0,0,.35); min-width: 0; }
.app-i__t { width: calc(var(--p) * 62); height: calc(var(--p) * 62); border-radius: calc(var(--p) * 14); background: linear-gradient(160deg, rgba(255,255,255,.34), rgba(255,255,255,.12)); box-shadow: inset 0 0 0 calc(var(--p) * .8) rgba(255,255,255,.35); display: grid; place-items: center; overflow: hidden; }
.app-i__t img { width: 100%; height: 100%; }
.app-i__t svg { width: 46%; height: 46%; fill: none; stroke: #fff; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.app-i__n { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.home__dots { position: absolute; left: 50%; bottom: calc(var(--p) * 124); transform: translateX(-50%); display: flex; gap: calc(var(--p) * 8); padding: calc(var(--p) * 7) calc(var(--p) * 10); border-radius: 999px; background: rgba(255,255,255,.14); }
.home__dots i { width: calc(var(--p) * 7); height: calc(var(--p) * 7); border-radius: 50%; background: rgba(255,255,255,.45); }
.home__dots i:first-child { background: #fff; }
.home__dock { position: absolute; left: calc(var(--p) * 12); right: calc(var(--p) * 12); bottom: calc(var(--p) * 14); height: calc(var(--p) * 92); border-radius: calc(var(--p) * 36); background: rgba(255,255,255,.16); box-shadow: inset 0 0 0 calc(var(--p) * .8) rgba(255,255,255,.22); display: flex; justify-content: space-around; align-items: center; padding: 0 calc(var(--p) * 10); }

/* lock screen */
.lock { position: absolute; inset: 0; --p: calc(100cqw / 393); font-family: var(--font-system); color: #fff; line-height: 1.15; }
.lock__wall { position: absolute; inset: 0; }
.lock__wall img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.lock__wall::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,6,12,.55), rgba(10,6,12,.1) 45%, rgba(10,6,12,.35)); }
.lock__inline { position: absolute; top: calc(var(--p) * 96); left: 0; right: 0; text-align: center; font-size: calc(var(--p) * 17); font-weight: 600; opacity: .92; display: flex; justify-content: center; align-items: center; gap: calc(var(--p) * 5); }
.lock__inline svg { width: calc(var(--p) * 14); height: calc(var(--p) * 13); fill: #fff; }
.lock__time { position: absolute; top: calc(var(--p) * 112); left: 0; right: 0; text-align: center; font-size: calc(var(--p) * 104); line-height: 1; font-weight: 700; letter-spacing: -.02em; font-family: var(--font-rounded); opacity: .96; }
.lock__row { position: absolute; top: calc(var(--p) * 236); left: 0; right: 0; display: flex; justify-content: center; gap: calc(var(--p) * 12); }
.lock__circ, .lock__rect { background: rgba(255,255,255,.2); box-shadow: inset 0 0 0 calc(var(--p) * .6) rgba(255,255,255,.18); height: calc(var(--p) * 72); }
.lock__circ { width: calc(var(--p) * 72); border-radius: 50%; display: grid; place-content: center; text-align: center; }
.lock__circ b { font-size: calc(var(--p) * 22); font-weight: 800; line-height: 1; }
.lock__circ span { font-size: calc(var(--p) * 9); font-weight: 600; }
.lock__rect { width: calc(var(--p) * 164); border-radius: calc(var(--p) * 16); padding: calc(var(--p) * 8) calc(var(--p) * 12); display: grid; align-content: center; gap: calc(var(--p) * 1); }
.lock__rect .r1 { font-size: calc(var(--p) * 13); font-weight: 600; }
.lock__rect .r2 { font-size: calc(var(--p) * 22); font-weight: 700; line-height: 1.05; }
.lock__rect .r3 { font-size: calc(var(--p) * 11); opacity: .85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lock__btns { position: absolute; left: calc(var(--p) * 46); right: calc(var(--p) * 46); bottom: calc(var(--p) * 44); display: flex; justify-content: space-between; }
.lock__btns i { width: calc(var(--p) * 50); height: calc(var(--p) * 50); border-radius: 50%; background: rgba(0,0,0,.28); box-shadow: inset 0 0 0 calc(var(--p) * .6) rgba(255,255,255,.2); display: grid; place-items: center; }
.lock__btns svg { width: 44%; height: 44%; fill: none; stroke: #fff; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.lock__bar { position: absolute; left: 50%; bottom: calc(var(--p) * 9); width: calc(var(--p) * 140); height: calc(var(--p) * 5); border-radius: 9px; background: #fff; transform: translateX(-50%); }

/* Messages */
.chat { position: absolute; inset: 0; background: #000; color: #fff; --p: calc(100cqw / 393); font-family: var(--font-system); }
.chat__head { position: absolute; z-index: 3; top: 0; left: 0; right: 0; height: calc(var(--p) * 150); padding-top: calc(var(--p) * 62); display: grid; justify-items: center; gap: calc(var(--p) * 5); background: linear-gradient(180deg, #000 70%, rgba(0,0,0,0)); }
.chat__back { position: absolute; left: calc(var(--p) * 16); top: calc(var(--p) * 74); width: calc(var(--p) * 12); height: calc(var(--p) * 20); fill: none; stroke: #0A84FF; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.chat__avs { display: flex; }
.chat__av { width: calc(var(--p) * 44); height: calc(var(--p) * 44); border-radius: 50%; display: grid; place-items: center; font-size: calc(var(--p) * 18); font-weight: 600; background: linear-gradient(180deg, #A5A8B1, #858893); box-shadow: 0 0 0 calc(var(--p) * 2) #000; }
.chat__av svg { width: 62%; height: 62%; fill: #fff; margin-top: 18%; }
.chat__av { overflow: hidden; }
.chat__name { font-size: calc(var(--p) * 12); color: #fff; font-weight: 500; }
.chat__body { position: absolute; left: 0; right: 0; bottom: calc(var(--p) * 92); padding: 0 calc(var(--p) * 14); display: flex; flex-direction: column; gap: calc(var(--p) * 6); }
.chat__meta { align-self: center; font-size: calc(var(--p) * 11); color: #8E8E93; margin: calc(var(--p) * 4) 0; }
.bub { max-width: 75%; padding: calc(var(--p) * 8) calc(var(--p) * 13); border-radius: calc(var(--p) * 19); font-size: calc(var(--p) * 16.5); line-height: 1.3; font-weight: 400; }
.bub--in { align-self: flex-start; background: #262629; }
.bub--out { align-self: flex-end; background: #0A84FF; }
.bub a { color: inherit; text-decoration: underline; }
.bub--img { padding: 0; width: 70%; aspect-ratio: 4 / 5; border-radius: calc(var(--p) * 16); overflow: hidden; position: relative; align-self: flex-end; background: #111; }
.chat__bar { position: absolute; left: calc(var(--p) * 12); right: calc(var(--p) * 12); bottom: calc(var(--p) * 34); height: calc(var(--p) * 40); display: flex; align-items: center; gap: calc(var(--p) * 10); }
.chat__plus { width: calc(var(--p) * 36); height: calc(var(--p) * 36); border-radius: 50%; background: #262629; flex: none; display: grid; place-items: center; }
.chat__plus svg { width: 40%; height: 40%; stroke: #9a9aa0; stroke-width: 2.4; stroke-linecap: round; }
.chat__input { flex: 1; height: calc(var(--p) * 36); border-radius: calc(var(--p) * 18); box-shadow: inset 0 0 0 calc(var(--p) * 1) #3a3a3c; font-size: calc(var(--p) * 16); color: #636366; display: flex; align-items: center; padding-left: calc(var(--p) * 14); }
.motion .chat [data-chat] { opacity: 0; }

/* ---- widgets: all seven styles, and on black for StandBy (countdown-widget.tsx) */
.wd--black .wd__bg { background: #000; }
.wd--black .wd__d { color: #fff; opacity: .6; }
.wd--rose { color: #7E1C40; }
.wd--rose .wd__bg { background: linear-gradient(135deg, #FFF0F3, #FBD3DD 50%, #F5B3C4); }
.wd--rose .wd__n { font-family: var(--font-serif); font-weight: 400; letter-spacing: 0; line-height: 1.15; }
.wd--rose .wd__l { font-family: var(--font-italic); font-style: italic; font-weight: 400; text-transform: none; letter-spacing: 0; font-size: calc(var(--w) * 13); color: #A83E63; }
.wd--rose .wd__d { font-family: var(--font-italic); font-style: italic; font-size: calc(var(--w) * 12); }
.wd--rose .wd__heart { fill: none; stroke: #D9577F; stroke-width: 2.2; }
.wd--black.wd--rose { color: #fff; }
.wd--black.wd--rose .wd__n { color: #FFB3C6; }
.wd--black.wd--rose .wd__l { color: #FF8FAE; }
.wd--sage { color: #3C4632; font-family: var(--font-rounded); }
.wd--sage .wd__bg { background: #EEE6D8; }
.wd--sage .wd__l { color: #7C6B55; }
.wd--sage .wd__heart { fill: #C47A58; }
.wd--black.wd--sage { color: #fff; }
.wd--black.wd--sage .wd__n { color: #C3D1AE; }
.wd--black.wd--sage .wd__l { color: #E0B89F; }
.wd__arch { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); border-radius: 999px 999px 0 0; }
.wd__arch--o { width: calc(var(--w) * 112); height: calc(var(--w) * 96); background: #C9D2B8; }
.wd__arch--i { width: calc(var(--w) * 80); height: calc(var(--w) * 66); background: #E3C9B3; }
.wd--m .wd__arch { left: calc(var(--w) * 74); }
.wd--m .wd__arch--o { width: calc(var(--w) * 130); height: calc(var(--w) * 104); }
.wd--m .wd__arch--i { width: calc(var(--w) * 94); height: calc(var(--w) * 74); }
.wd--poster, .wd--board, .wd--paper { font-family: var(--font-text); font-weight: 500; color: #F4F3EF; --soft: #8B8A86; line-height: 1.2; }
.wd--poster .wd__bg { background: #0B0B0B; }
.wd--board .wd__bg { background: #000; }
.wd--paper { color: #0B0B0B; --soft: #6B6A66; }
.wd--paper .wd__bg { background: #F4F3EF; }
.wd--black.wd--paper { color: #F4F3EF; --soft: #8B8A86; }
.wd--black .wd__bg { background: #000; }
.wm__top { position: absolute; top: calc(var(--w) * 16); left: calc(var(--w) * 16); right: calc(var(--w) * 16); display: flex; justify-content: space-between; align-items: center; font-size: calc(var(--w) * 12); }
.wd .hrt { width: calc(var(--w) * 12); height: calc(var(--w) * 11); }
.wm__dim { opacity: .62; }
.wm__mono { font-family: var(--font-mono); font-size: calc(var(--w) * 10); color: var(--soft); white-space: nowrap; }
.wmp__num { position: absolute; left: calc(var(--w) * 9); bottom: calc(var(--w) * -27); font: 700 calc(var(--w) * 150)/.74 var(--font-display); letter-spacing: -.055em; white-space: nowrap; }
.wd--m .wmp__num { font-size: calc(var(--w) * 176); bottom: calc(var(--w) * -32); }
.wmp__side { position: absolute; top: calc(var(--w) * 16); right: calc(var(--w) * 16); max-width: calc(var(--w) * 128); display: grid; justify-items: end; gap: calc(var(--w) * 4); text-align: right; font-size: calc(var(--w) * 12); }
.wmb__tiles { position: absolute; top: calc(var(--w) * 16); left: calc(var(--w) * 16); display: flex; gap: calc(var(--w) * 4); --lh: calc(var(--w) * 88); --lw: calc(var(--w) * 70.4); }
.wd--m .wmb__tiles { --lh: calc(var(--w) * 124); --lw: calc(var(--w) * 99.2); }
.wmb__heart .leaf { --lh: calc(var(--w) * 26); --lw: calc(var(--w) * 20); }
.wmb__foot { position: absolute; left: calc(var(--w) * 16); bottom: calc(var(--w) * 16); display: flex; align-items: center; gap: calc(var(--w) * 6); font-size: calc(var(--w) * 12); }
.wmb__side { position: absolute; top: calc(var(--w) * 16); bottom: calc(var(--w) * 16); left: calc(var(--w) * 234); right: calc(var(--w) * 16); display: flex; flex-direction: column; justify-content: space-between; font-size: calc(var(--w) * 13); }
.wmb__row { display: flex; align-items: center; gap: calc(var(--w) * 6); }
.wmpa__rule { position: absolute; left: calc(var(--w) * 16); right: calc(var(--w) * 16); top: calc(var(--w) * 36); height: max(1px, calc(var(--w) * 1.5)); background: currentColor; }
.wmpa__left { position: absolute; left: calc(var(--w) * 16); top: calc(var(--w) * 44); bottom: calc(var(--w) * 16); max-width: calc(var(--w) * 150); display: flex; flex-direction: column; justify-content: space-between; font-size: calc(var(--w) * 12); }
.wd--m .wmpa__left { font-size: calc(var(--w) * 13); }
.wmpa__num { position: absolute; right: calc(var(--w) * 13); bottom: calc(var(--w) * 11); font: 700 calc(var(--w) * 80)/.74 var(--font-display); letter-spacing: -.055em; }
.wd--m .wmpa__num { font-size: calc(var(--w) * 96); }

/* ---- Home Screen edit mode, Lock Screen wake, wallpaper parallax */
.home__done { position: absolute; z-index: 12; top: calc(var(--p) * 58); right: calc(var(--p) * 18); padding: calc(var(--p) * 6) calc(var(--p) * 14); border-radius: 999px; background: rgba(255,255,255,.24); font-size: calc(var(--p) * 15); font-weight: 600; opacity: 0; }
.home__wall, .lock__wall { overflow: hidden; }
.lock__dim { position: absolute; inset: 0; z-index: 30; background: #000; opacity: 0; pointer-events: none; }

/* ---- StandBy: widget stack on the left, clock on the right (--q: one point of an 852 pt screen) */
.stb { position: absolute; inset: 0; background: #000; --q: calc(100cqw / 852); font-family: var(--font-system); color: #fff; line-height: 1; }
.stb__stack { position: absolute; left: calc(var(--q) * 47); top: calc(var(--q) * 25); width: calc(var(--q) * 342); height: calc(var(--q) * 342); }
.stb__face { position: absolute; inset: 0; opacity: 0; transform: translateY(6%) scale(.94); transition: opacity .5s var(--ease), transform .7s var(--ease); }
.stb__face.is-on { opacity: 1; transform: none; }
.stb__dots { position: absolute; left: calc(var(--q) * -24); top: 50%; transform: translateY(-50%); display: grid; gap: calc(var(--q) * 8); }
.stb__dots i { width: calc(var(--q) * 7); height: calc(var(--q) * 7); border-radius: 50%; background: rgba(255,255,255,.26); transition: background-color .3s; }
.stb__dots i.is-on { background: rgba(255,255,255,.85); }
.stb__clock { position: absolute; left: calc(var(--q) * 410); right: calc(var(--q) * 16); top: 0; bottom: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.stb__time { font-family: var(--font-rounded); font-weight: 200; font-size: calc(var(--q) * 132); letter-spacing: -.03em; color: #C9C9CF; font-variant-numeric: tabular-nums; white-space: nowrap; }
.stb__date { font-size: calc(var(--q) * 24); color: #8E8E93; margin-top: calc(var(--q) * 8); }
.standby__device { cursor: pointer; touch-action: pan-y; -webkit-user-select: none; user-select: none; }
.sb-ctl { display: flex; align-items: center; gap: 12px; }
.sb-nav { display: flex; }
.sb-nav button { width: 28px; height: 28px; display: grid; place-items: center; padding: 0; border: 0; background: none; cursor: pointer; }
.sb-nav button i { width: 7px; height: 7px; border-radius: 50%; background: var(--fg-4); transition: transform .3s var(--ease), background-color .3s; }
.sb-nav button[aria-pressed="true"] i { background: var(--heart); transform: scale(1.4); }
.sb-name { min-width: 7em; font-size: 15px; color: var(--fg); }

/* ---- Share: several pictures, same message */
.share__col { display: grid; justify-items: center; gap: 22px; }
.share__nav { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.share__nav button { font: 500 14px/1 var(--font-text); color: var(--fg-2); background: none; border: 0; box-shadow: inset 0 0 0 1px var(--line-2); border-radius: 999px; padding: 10px 14px; cursor: pointer; transition: background-color .3s, color .3s; }
.share__nav button[aria-pressed="true"] { background: var(--fg); color: var(--on-fg); box-shadow: none; }
.bub__v { position: absolute; inset: 0; container-type: inline-size; opacity: 0; transform: scale(1.05); transition: opacity .6s var(--ease), transform .8s var(--ease); }
.bub__v.is-on { opacity: 1; transform: none; }
.bub--img { cursor: pointer; }

/* ---- Date and time step: settings sheet with the wheel (temporary visual) and the video slot */
.how__temp, .how__video { position: absolute; inset: 0; width: 100%; height: 100%; }
.how__video { object-fit: cover; background: #000; }
.has-video .how__temp { display: none; }
.how__why { margin-top: 18px; max-width: 34em; }
.pick { position: absolute; inset: 0; --p: calc(100cqw / 393); font-family: var(--font-system); color: #fff; line-height: 1.25; }
.pick__under { position: absolute; inset: 0; }
.pick__dim { position: absolute; inset: 0; background: rgba(0,0,0,.6); }
.pick__sheet { position: absolute; left: 0; right: 0; bottom: 0; background: #111214; border-radius: calc(var(--p) * 20) calc(var(--p) * 20) 0 0; padding: calc(var(--p) * 24) calc(var(--p) * 24) calc(var(--p) * 30); display: flex; flex-direction: column; gap: calc(var(--p) * 8); }
.pick__title { font-size: calc(var(--p) * 32); line-height: calc(var(--p) * 44); font-weight: 600; text-align: center; margin-bottom: calc(var(--p) * 8); }
.pick__label { font-size: calc(var(--p) * 14); font-weight: 600; color: #B0B4BA; }
.pick__preview { font-size: calc(var(--p) * 16); font-weight: 700; margin-bottom: calc(var(--p) * 4); }
.pk { position: relative; height: calc(var(--p) * 216); display: flex; justify-content: center; gap: calc(var(--p) * 2); overflow: hidden; -webkit-mask-image: linear-gradient(transparent, #000 32%, #000 68%, transparent); mask-image: linear-gradient(transparent, #000 32%, #000 68%, transparent); }
.pk__band { position: absolute; left: 0; right: 0; top: 50%; height: calc(var(--p) * 34); transform: translateY(-50%); border-radius: calc(var(--p) * 8); background: rgba(255,255,255,.12); }
.pk__col { position: relative; height: 100%; }
.pk__col--d { width: calc(var(--p) * 140); text-align: right; }
.pk__col--h { width: calc(var(--p) * 46); text-align: right; }
.pk__col--m { width: calc(var(--p) * 46); text-align: center; }
.pk__col--a { width: calc(var(--p) * 50); text-align: left; }
.pk__list { --row: calc(var(--p) * 34); display: flex; flex-direction: column; transform: translateY(calc(var(--row) * (2.68 - var(--i)))); will-change: transform; }
.pk__list span { height: var(--row); line-height: var(--row); font-size: calc(var(--p) * 21); padding: 0 calc(var(--p) * 6); white-space: nowrap; font-variant-numeric: tabular-nums; }
.pick__save { margin-top: calc(var(--p) * 8); background: #fff; color: #000; border-radius: calc(var(--p) * 14); padding: calc(var(--p) * 16) 0; text-align: center; font-weight: 700; font-size: calc(var(--p) * 16); }
.pick__cancel { text-align: center; padding: calc(var(--p) * 8) 0 0; font-weight: 600; font-size: calc(var(--p) * 15); }

/* ---- the new paywall (concept B, paywall-showcase.tsx). --p: one point of a 402 pt screen; --s: of the 352 pt stage */
.pw2 { position: absolute; inset: 0; --p: calc(100cqw / 402); background: linear-gradient(180deg, #2A1320, #140E13 12%); font-family: var(--font-system); color: #fff; overflow: hidden; line-height: 1.25; }
.pw2__sheet { position: absolute; left: 0; right: 0; top: calc(var(--p) * 60); bottom: 0; background: #000; border-radius: calc(var(--p) * 38) calc(var(--p) * 38) 0 0; padding: calc(var(--p) * 20) calc(var(--p) * 24) 0; }
.pw2__top { display: flex; justify-content: space-between; align-items: baseline; }
.pw2__kicker { color: #FF3B6B; font-size: calc(var(--p) * 15.5); font-weight: 500; }
.pw2__later { color: #B0B4BA; font-size: calc(var(--p) * 16); font-weight: 600; }
.pw2__head { font-size: calc(var(--p) * 28); font-weight: 800; letter-spacing: -.01em; margin-top: calc(var(--p) * 8); }
.pw2__sub { font-size: calc(var(--p) * 15.5); color: #B0B4BA; margin-top: calc(var(--p) * 6); line-height: 1.35; }
.pw2__stage { position: relative; margin-top: calc(var(--p) * 12); height: calc(var(--p) * 232); border-radius: calc(var(--p) * 26); overflow: hidden; container-type: inline-size; --s: calc(100cqw / 352); background: #1C1612; transition: background-color .6s var(--ease); }
.pw2__cap { position: absolute; z-index: 2; left: calc(var(--s) * 16); top: calc(var(--s) * 12); font-size: calc(var(--s) * 12.5); font-weight: 500; color: rgba(255,255,255,.62); transition: color .5s; }
.pw2__stage.is-light .pw2__cap { color: rgba(0,0,0,.55); }
.pw2__scenes, .pw2__scene, .pws { position: absolute; inset: 0; }
.pw2__scene { opacity: 0; transform: scale(1.04); transition: opacity .5s var(--ease), transform .7s var(--ease); }
.pw2__scene.is-in { opacity: 1; transform: none; }
.pw2__scene.is-out { opacity: 0; transform: scale(.98); }
.pws__phone { position: absolute; left: 50%; top: calc(var(--s) * 34); width: calc(var(--s) * 92); aspect-ratio: 393 / 852; transform: translateX(-50%); padding: calc(var(--s) * 3); border-radius: calc(var(--s) * 16); background: #0D0D0D; box-shadow: 0 0 0 1px #3C3C3C; box-sizing: content-box; }
.pws__screen, .pws__lscreen, .pws__card { position: relative; width: 100%; height: 100%; overflow: hidden; container-type: inline-size; }
.pws__screen { border-radius: calc(var(--s) * 13); }
.pws__screen::after { content: ""; position: absolute; z-index: 20; top: 1.3%; left: 34%; width: 32%; height: 4.3%; border-radius: 999px; background: #000; }
.pws__wall { position: absolute; left: calc(var(--s) * 73); top: calc(var(--s) * 34); width: calc(var(--s) * 206); height: calc(var(--s) * 192); border-radius: calc(var(--s) * 20); overflow: hidden; background: linear-gradient(180deg, #5E4F74, #2E2B45 60%, #1C1D2E); }
.pws__med { position: absolute; left: calc(var(--s) * 15); top: calc(var(--s) * 14); width: calc(var(--s) * 176); }
.pws__small { position: absolute; left: calc(var(--s) * 15); top: calc(var(--s) * 104); width: calc(var(--s) * 80); }
.pws__icons { position: absolute; left: calc(var(--s) * 112); top: calc(var(--s) * 106); display: grid; grid-template-columns: repeat(2, calc(var(--s) * 31)); gap: calc(var(--s) * 16) calc(var(--s) * 16); }
.pws__icons i { display: block; width: calc(var(--s) * 31); aspect-ratio: 1; border-radius: calc(var(--s) * 8); }
.pws__land { position: absolute; left: 50%; top: calc(var(--s) * 44); width: calc(var(--s) * 322); aspect-ratio: 874 / 402; transform: translateX(-50%); padding: calc(var(--s) * 3); border-radius: calc(var(--s) * 22); background: #0D0D0D; box-shadow: 0 0 0 1px #3C3C3C; box-sizing: content-box; }
.pws__lscreen { border-radius: calc(var(--s) * 19); }
.pws__stand { position: absolute; left: 50%; top: calc(var(--s) * 197); width: calc(var(--s) * 110); height: calc(var(--s) * 12); transform: translateX(-50%); border-radius: 0 0 calc(var(--s) * 8) calc(var(--s) * 8); background: #232326; }
.pws__chat { position: absolute; left: calc(var(--s) * 90); top: calc(var(--s) * 34); width: calc(var(--s) * 174); height: calc(var(--s) * 192); border-radius: calc(var(--s) * 14); overflow: hidden; background: #0C0C0E; }
.pws__in { position: absolute; left: calc(var(--s) * 7); top: calc(var(--s) * 8); padding: calc(var(--s) * 4) calc(var(--s) * 9); border-radius: calc(var(--s) * 12); background: #232326; color: #EEE; font-size: calc(var(--s) * 8.5); white-space: nowrap; }
.pws__in--2 { top: auto; bottom: calc(var(--s) * 8); }
.pws__img { position: absolute; right: calc(var(--s) * 7); top: calc(var(--s) * 30); width: calc(var(--s) * 102); padding: calc(var(--s) * 2); border-radius: calc(var(--s) * 9); background: #2B3A4A; }
.pws__card { aspect-ratio: 4 / 5; height: auto; border-radius: calc(var(--s) * 7); }
.pw2__tabs { display: flex; gap: calc(var(--p) * 4); margin-top: calc(var(--p) * 12); padding: calc(var(--p) * 3); border-radius: calc(var(--p) * 12); background: #141416; }
.pw2__tab { position: relative; flex: 1; height: calc(var(--p) * 34); border: 0; border-radius: calc(var(--p) * 10); background: none; color: #B0B4BA; font: 600 calc(var(--p) * 14)/1 var(--font-system); cursor: pointer; overflow: hidden; transition: background-color .3s, color .3s; }
.pw2__tab[aria-pressed="true"] { background: #2A2A2E; color: #fff; }
.pw2__tab i { position: absolute; left: calc(var(--p) * 10); right: calc(var(--p) * 10); bottom: 0; height: calc(var(--p) * 2.5); border-radius: 2px; background: #FF3B6B; transform: scaleX(0); transform-origin: left; }
.pw2__tab[aria-pressed="true"] i { transform: scaleX(1); }
.pw2__tab.is-run i { animation: pw-run 3s linear forwards; }
@keyframes pw-run { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.pw2__chips { display: flex; justify-content: space-between; margin-top: calc(var(--p) * 13); }
.pw2__chip { width: calc(var(--p) * 40); padding: 0; border: 0; border-radius: calc(var(--p) * 10); background: none; cursor: pointer; transition: opacity .3s, box-shadow .3s; }
.pw2__chip .wroot { display: block; border-radius: calc(var(--p) * 9); overflow: hidden; }
.pw2__chip[aria-pressed="true"] { box-shadow: 0 0 0 calc(var(--p) * 2.5) #000, 0 0 0 calc(var(--p) * 4.5) #FF3B6B; }
.pw2__chip.is-off { opacity: .32; cursor: default; }
.pw2__name { margin-top: calc(var(--p) * 10); text-align: center; font-size: calc(var(--p) * 14); font-weight: 600; }
.pw2__name span { color: #8C9096; font-weight: 500; }
.pw2__note { min-height: calc(var(--p) * 16); margin-top: calc(var(--p) * 2); text-align: center; font-size: calc(var(--p) * 12.5); color: #8C9096; }
.pw2__buy { position: absolute; left: 0; right: 0; bottom: 0; padding: calc(var(--p) * 12) calc(var(--p) * 24) calc(var(--p) * 24); border-top: 1px solid #1C1C1E; background: #000; }
.pw2__both { text-align: center; font-size: calc(var(--p) * 13.5); color: #B0B4BA; }
.pw2__plans { display: flex; gap: calc(var(--p) * 10); margin-top: calc(var(--p) * 12); }
.pw2__plan { flex: 1; padding: calc(var(--p) * 10) calc(var(--p) * 12); border: calc(var(--p) * 1.5) solid #2A2A2E; border-radius: calc(var(--p) * 14); background: #0C0C0D; color: #fff; font-family: var(--font-system); text-align: left; cursor: pointer; transition: border-color .3s, background-color .3s; }
.pw2__plan[aria-pressed="true"] { border-color: #FF3B6B; background: rgba(255,59,107,.09); }
.pw2__plan b { display: flex; align-items: center; gap: calc(var(--p) * 7); font-size: calc(var(--p) * 15); font-weight: 700; }
.pw2__plan b i { flex: none; width: calc(var(--p) * 16); height: calc(var(--p) * 16); border-radius: 50%; border: calc(var(--p) * 2) solid #555; }
.pw2__plan[aria-pressed="true"] b i { border-color: #FF3B6B; background: radial-gradient(circle, #FF3B6B 0 32%, transparent 38%); }
.pw2__plan span { display: block; margin-top: calc(var(--p) * 3); padding-left: calc(var(--p) * 23); font-size: calc(var(--p) * 13); font-weight: 500; color: #D8DADF; }
.pw2__cta { margin-top: calc(var(--p) * 10); height: calc(var(--p) * 50); border-radius: calc(var(--p) * 14); background: #FF3B6B; display: flex; align-items: center; justify-content: center; font-size: calc(var(--p) * 17); font-weight: 800; }
.pw2__links { display: flex; justify-content: center; gap: calc(var(--p) * 12); margin-top: calc(var(--p) * 10); font-size: calc(var(--p) * 11.5); color: #B0B4BA; white-space: nowrap; }
.pw2__links span { text-decoration: underline; }
.pw2__renew { margin-top: calc(var(--p) * 6); font-size: calc(var(--p) * 10); line-height: 1.35; color: #8C9096; text-align: center; }
.plus__device { display: grid; justify-items: center; gap: 16px; }
.plus__device figcaption { text-align: center; }

/* ---------------------------------------------------------------- reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}

/* The film section stays hidden until the film exists. */
.film[hidden] { display: none !important; }
