/* The start page: the promise on its stage, how a set turns into the next,
   the app's three rooms, the numbers, the price and the door. */

/* ----------------------------------------------------------------- hero */

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  display: grid;
  align-items: center;
  padding: calc(var(--topbar) + env(safe-area-inset-top) + var(--s-5)) 0 var(--s-6);
  overflow: hidden;
}
.hero-grid { position: relative; display: grid; gap: var(--s-6); align-items: center; }
.hero-copy { position: relative; z-index: 1; display: grid; gap: var(--s-4); justify-items: start; }
.hero-copy .lede { max-width: 25em; }
.hero-copy .actions { margin-top: var(--s-2); }
.hero-facts { display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-4); list-style: none; font-size: var(--t-small); color: var(--text-3); }
.hero-facts li { display: inline-flex; align-items: center; gap: 10px; }
.hero-facts li + li::before { content: ""; width: 3px; height: 3px; border-radius: 50%; background: var(--asteroid); margin-right: var(--s-1); }

.mask { display: block; overflow: hidden; padding-bottom: 0.06em; margin-bottom: -0.06em; }
@keyframes surface { from { transform: translateY(104%); } to { transform: none; } }
/* The light comes on and the claim surfaces line by line. The phone stands
   from the first frame, as the tariff screen's piece does: it is the page's
   largest picture, and one that slid in would only count once it settled. */
@media (prefers-reduced-motion: no-preference) {
  .js:not(.no-live) .hero .mask .line { animation: surface var(--dur-deliberate) var(--ease-glide) both; }
  .js:not(.no-live) .hero .mask:nth-child(2) .line { animation-delay: 90ms; }
  .js:not(.no-live) .hero .lift { animation: rise var(--dur-deliberate) var(--ease-glide) both; animation-delay: calc(120ms + var(--i, 0) * 70ms); }
  .js:not(.no-live) .hero-stage .stage-light { animation: fade var(--dur-stage) var(--ease-standard) both; }
}
.hero-stage { --cone-top: calc(-1 * (var(--topbar) + var(--s-8))); }

@media (min-width: 900px) {
  .hero-grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr); gap: var(--s-6); }
}
@media (max-width: 899px) {
  .hero { min-height: 0; padding-top: calc(var(--topbar) + env(safe-area-inset-top) + var(--s-6)); }
  .hero-copy { justify-items: center; text-align: center; }
  .hero-copy .lede { margin: 0 auto; }
  .hero-copy .actions, .hero-facts { justify-content: center; }
  .hero-stage { margin-top: var(--s-3); }
}
@media (max-width: 599px) {
  .hero { padding-top: calc(var(--topbar) + env(safe-area-inset-top) + var(--s-5)); }
  .hero-grid { gap: var(--s-5); }
  .hero-copy { gap: var(--s-3); }
  .hero-copy .actions { justify-self: center; }
}

/* ------------------------------------------------------------- the sum */

/* One set and the next, as one line: what Prover does, before any word
   about how. The figures follow the phone above. */
.sum-section .section-head { margin-bottom: var(--s-7); }
.sum { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: center; gap: var(--s-4) var(--s-6); }
.sum-term { display: grid; gap: var(--s-2); justify-items: center; }
.sum-label { font: 600 var(--t-label)/1.4 var(--font); font-stretch: var(--wide); letter-spacing: 0.22em; text-transform: uppercase; color: var(--text-3); }
.sum-figure { font: 600 clamp(36px, 5.4vw, 76px)/1 var(--font); font-stretch: var(--wide); letter-spacing: -0.03em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sum-arrow { padding-bottom: 0.9em; }
.sum-arrow svg { width: clamp(40px, 5vw, 64px); height: auto; }
.sum-arrow path { stroke: url(#tempered-stroke); }
.sum-note { margin: var(--s-6) auto 0; text-align: center; }
.sum-link { display: flex; justify-content: center; margin-top: var(--s-3); }
/* Below the wide screens the two figures stand one over the other: side by
   side they would break mid-line on a tablet. */
@media (max-width: 899px) {
  .sum { flex-direction: column; align-items: center; gap: var(--s-3); }
  .sum-arrow { padding: 0; transform: rotate(90deg); }
}

/* -------------------------------------------------------------- lineup */

/* The app's three rooms as three phones under three lamps. */
.lineup .section-head { margin-bottom: var(--s-6); }
.lineup-row { display: grid; gap: var(--s-6) var(--s-4); }
.lineup-item { display: grid; justify-items: center; gap: var(--s-2); text-align: center; text-decoration: none; }
.lineup-copy { display: grid; gap: 8px; justify-items: center; max-width: 18em; }
.lineup-name { font: 700 10.5px/1 var(--font); font-stretch: var(--wide); letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-3); }
.lineup-copy .body-copy { font-size: 15px; }
.lineup-copy .link-arrow { margin-top: 2px; }
.lineup-item .device { transition: transform var(--dur-slow) var(--ease-entering); }
.lineup-item:hover .device { transform: translateY(-4px); }
.lineup-item:hover .link-arrow svg { transform: translateX(3px); }
@media (min-width: 900px) { .lineup-row { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* On a phone the three stand side by side and are swiped. */
@media (max-width: 899px) {
  .lineup-row {
    grid-auto-flow: column;
    grid-auto-columns: min(78%, 340px);
    margin: 0 calc(-1 * var(--gutter-right)) 0 calc(-1 * var(--gutter));
    padding: 0 var(--gutter-right) var(--s-2) var(--gutter);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding: 0 var(--gutter);
    scrollbar-width: none;
    overscroll-behavior-x: contain;
  }
  .lineup-row::-webkit-scrollbar { display: none; }
  .lineup-item { scroll-snap-align: center; }
}

/* --------------------------------------------------------------- facts */

.facts { padding: var(--s-6) 0 var(--s-8); }
.fact-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-6) var(--s-4); }
.fact { display: grid; gap: var(--s-2); justify-items: center; text-align: center; }
.fact dd { order: -1; font: 600 clamp(44px, 5.4vw, 76px)/1 var(--font); font-stretch: var(--wide); letter-spacing: -0.03em; }
.fact dt { font: 600 var(--t-label)/1.4 var(--font); font-stretch: var(--wide); letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-3); }
@media (min-width: 900px) {
  .fact-row { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .fact + .fact { border-left: 1px solid var(--hairline-quiet); }
}

/* --------------------------------------------------------------- offer */

.offer .section-head { margin-bottom: var(--s-6); }
.price-plate {
  position: relative;
  display: grid;
  max-width: 760px;
  margin: 0 auto;
  border-radius: var(--r-panel);
  border: 0.5px solid rgba(174, 174, 178, 0.16);
  background: var(--panel);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.04) inset, 0 50px 100px -50px rgba(0, 0, 0, 0.95);
  overflow: hidden;
}
.price-row { display: grid; gap: 6px; padding: var(--s-5); }
.price-name { font: 700 10.5px/1 var(--font); font-stretch: var(--wide); letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-3); }
.price-figure { font: 600 clamp(36px, 3.6vw, 48px)/1.05 var(--font); font-stretch: var(--wide); letter-spacing: -0.025em; }
.price-term { font-size: var(--t-small); color: var(--text-2); }
.price-row.is-premium { position: relative; }
.price-row.is-premium .price-name { color: transparent; background: var(--tempered); -webkit-background-clip: text; background-clip: text; }
.price-row.is-premium::before {
  content: "";
  position: absolute;
  top: 0;
  left: var(--s-5);
  right: var(--s-5);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(240, 138, 58, 0.6), transparent);
}
.price-cut { height: 1px; margin: 0 var(--s-5); background: rgba(0, 0, 0, 0.7); box-shadow: 0 1px 0 rgba(174, 174, 178, 0.08); }
.offer-link { display: flex; justify-content: center; margin-top: var(--s-4); }
@media (min-width: 600px) {
  .price-plate { grid-template-columns: 1fr auto 1fr; }
  .price-cut { width: 1px; height: auto; margin: var(--s-4) 0; box-shadow: 1px 0 0 rgba(174, 174, 178, 0.08); }
  .price-row.is-premium::before { top: -1px; }
}

@media (prefers-reduced-motion: reduce) {
  .lineup-item .device, .lineup-item:hover .device { transition: none; transform: none; }
}

/* The smallest phones: the claim keeps its two lines, the facts lose their
   dots once they wrap. */
@media (max-width: 379px) {
  .hero .h-hero { font-size: clamp(32px, 10.6vw, 42px); }
  .hero-facts li + li::before { display: none; }
}
