/* Per Push: one night, from 11:48 pm to a dawn earned with push-ups. The page's colours are the app's own:
   orange is the budget, gold is time you earned, the night is where the hours go. */
/* Mona Sans, served from this site (the privacy policy says fonts are) */
@font-face { font-family: "Mona Sans"; font-style: normal; font-weight: 200 900; font-stretch: 75% 125%; font-display: swap; src: url("../assets/fonts/mona-sans-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Mona Sans"; font-style: normal; font-weight: 200 900; font-stretch: 75% 125%; font-display: swap; src: url("../assets/fonts/mona-sans-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Mona Sans"; font-style: normal; font-weight: 200 900; font-stretch: 75% 125%; font-display: swap; src: url("../assets/fonts/mona-sans-vietnamese.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
:root {
  --font: "Mona Sans", ui-sans-serif, system-ui, sans-serif;
  --sf: -apple-system, "SF Pro Text", "SF Pro Display", system-ui, sans-serif;
  /* 1px up to 1920×1080; on larger screens (a 5K iMac is 2560×1440) the words and their column grow with the
     devices, so the composition is the same picture, larger. Mirrored in kit.js (roomBeside) and hero.js. */
  --u: clamp(1px, min(0.052083vw, 0.092593vh), 1.34px);
  --night: #060812;
  --navy: #17204a;
  --orange: #e8651f;
  --orange-deep: #d94f0a;
  /* the orange that carries white words: 4.7:1 and 5.5:1 against #fff */
  --orange-btn: #c84a0c;
  --orange-btn-deep: #b8430a;
  --gold: #d4a84b;
  --coral: #ff5e5e;
  --cream: #fefaf5;
  --warm-ink: #1c1108;
  --ink: #f4f1ea;
  --ink-rgb: 244, 241, 234;
  --soft: 0.8; /* the share of ink for words that support the bold ones */
  --ink-2: rgba(var(--ink-rgb), 0.74);
  --ink-3: rgba(var(--ink-rgb), 0.6);
  --line: rgba(var(--ink-rgb), 0.14);
  --chip: rgba(var(--ink-rgb), 0.08);
  --thumb: #f4f1ea;
  --thumb-ink: #0b0d18;
  color-scheme: dark;
  scrollbar-color: rgba(244, 241, 234, 0.22) transparent;
  scrollbar-width: thin;
}
body[data-tone="light"] {
  --ink: #1c1108;
  --ink-rgb: 28, 17, 8;
  --ink-2: rgba(var(--ink-rgb), 0.74);
  --ink-3: rgba(var(--ink-rgb), 0.62);
  --line: rgba(var(--ink-rgb), 0.12);
  --chip: rgba(var(--ink-rgb), 0.06);
  --thumb: #1c1108;
  --thumb-ink: #fffaf3;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { background: var(--night); }
body { font-family: var(--font); color: var(--ink); background: var(--night); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
img { display: block; }
::selection { background: var(--orange-btn); color: #fff; }
:focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; border-radius: 8px; }

.skip { position: fixed; left: 16px; top: -60px; z-index: 60; padding: 10px 16px; border-radius: 999px; background: var(--orange-btn); color: #fff; font-weight: 650; }
.skip:focus { top: 16px; }
#runway { width: 1px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ——— nav: the studio, this app, and where to get it ——— */
.nav {
  position: fixed; inset: 0 0 auto; z-index: 40; height: 72px; padding: 0 clamp(24px, 3.4vw, 56px);
  display: flex; align-items: center; gap: 12px; color: #f4f1ea; pointer-events: none;
}
.nav > * { pointer-events: auto; }
.nav-mark { display: inline-flex; align-items: center; gap: 9px; font-weight: 700; font-size: 16px; letter-spacing: -0.01em; }
.nav-logo { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; width: 17px; height: 17px; }
.nav-logo i { border-radius: 3px; background: currentColor; opacity: 0.35; }
.nav-logo i:first-child { opacity: 1; background: #4bbc6b; }
.nav-sep { font-size: 17px; font-weight: 400; opacity: 0.45; }
.nav-app { display: inline-flex; align-items: center; gap: 9px; font-weight: 720; font-size: 16px; letter-spacing: -0.01em; }
.nav-app img { width: 24px; height: 24px; border-radius: 6px; }
.nav-get {
  margin-left: auto; display: inline-flex; align-items: center; height: 36px; padding: 0 16px; border-radius: 999px;
  background: var(--orange-btn); color: #fff; font-size: 14px; font-weight: 680; letter-spacing: -0.005em;
}
.nav-get:hover { background: var(--orange-btn-deep); }

/* ——— the stage ——— */
.stage { position: fixed; inset: 0; overflow: hidden; }
.rooms, .room, .gl, .glass-layer, .air, .words { position: absolute; inset: 0; }
.gl { z-index: 2; }
.glass-layer { z-index: 3; pointer-events: none; }
.air { z-index: 4; pointer-events: none; }
.words { z-index: 5; pointer-events: none; }
.words > * { pointer-events: auto; }

/* the HTML on a device's glass */
.glass { position: absolute; left: 0; top: 0; transform-origin: 0 0; overflow: hidden; visibility: hidden; contain: layout paint; backface-visibility: hidden; }
.glass-in { position: absolute; inset: 0; }
.glass-island { position: absolute; left: 0; top: 11px; z-index: 29; width: 126px; height: 37px; border-radius: 19px; background: #000; opacity: 0; pointer-events: none; }
.glass-punch { position: absolute; left: 0; top: 13px; z-index: 29; width: 12px; height: 12px; border-radius: 50%; background: #000; box-shadow: inset 0 0 0 1.5px #16171b; opacity: 0; pointer-events: none; }
/* the iPhone Duo's inner display, half by half, with a soft shadow down the crease */
.glass-duo .glass-crease { position: absolute; top: 0; bottom: 0; width: 14px; z-index: 28; pointer-events: none; }
.glass-duo-left .glass-crease { right: 0; background: linear-gradient(to left, rgba(0, 0, 0, 0.16), rgba(0, 0, 0, 0)); }
.glass-duo-right .glass-crease { left: 0; background: linear-gradient(to right, rgba(0, 0, 0, 0.16), rgba(0, 0, 0, 0)); }
.app-duo-half { right: auto; bottom: auto; }
.glass-sheen { position: absolute; inset: -10% -60%; pointer-events: none; z-index: 30; background: linear-gradient(112deg, transparent 40%, rgba(255, 255, 255, 0.07) 47%, rgba(255, 255, 255, 0.02) 52%, transparent 58%); }
.app { position: absolute; inset: 0; overflow: hidden; font-family: var(--sf); transform-origin: 0 0; }
/* a morphing piece: placed by its frame, origin at its top-left */
.mp { position: absolute; left: 0; top: 0; transform-origin: 0 0; }

/* ——— rooms: one night, chapter by chapter ——— */
.room { visibility: hidden; }
.room > i { position: absolute; inset: 0; }
.stars { position: absolute; inset: 0; width: 100%; height: 100%; }
/* 11:48 pm: the night, a faint warm glow low on the horizon */
.room-hero { visibility: visible; background: radial-gradient(ellipse 120% 80% at 72% 0%, #17204a, #060812 62%); }
.room-hero > i { background: radial-gradient(ellipse 70% 34% at 50% 104%, rgba(232, 101, 31, 0.13), transparent 70%), radial-gradient(ellipse 34% 40% at 50% 62%, rgba(120, 150, 255, 0.06), transparent 70%); }
/* the loop: later and darker, the red of hours spent on a screen */
.room-loop { background: radial-gradient(ellipse 110% 80% at 28% 0%, #111939, #04050c 64%); }
.room-loop > i { background: radial-gradient(ellipse 38% 46% at 68% 52%, rgba(255, 94, 94, 0.09), transparent 70%); }
/* set up: the app's warm screens glowing in the navy */
.room-setup { background: linear-gradient(172deg, #17204a, #0a0f27 72%); }
.room-setup > i { background: radial-gradient(ellipse 42% 54% at 33% 54%, rgba(232, 101, 31, 0.17), transparent 70%), radial-gradient(ellipse 80% 40% at 50% 110%, rgba(6, 8, 18, 0.6), transparent 70%); }
/* your day: from twilight into the shield's warm black */
.room-day { background: linear-gradient(178deg, #141a35 0%, #1a1420 55%, #1c1108 100%); }
.room-day > i { background: radial-gradient(ellipse 40% 50% at 68% 52%, rgba(212, 168, 75, 0.08), transparent 70%); }
/* earn it: the dawn, coming up with the reps */
.room-earn { background: linear-gradient(180deg, #0a1030 0%, #18204e 46%, #3b2343 74%, #7a3524 100%); }
.room-earn > i { background: radial-gradient(ellipse 90% 46% at 38% 104%, rgba(255, 150, 70, 0.58), rgba(232, 101, 31, 0.2) 48%, transparent 74%), radial-gradient(ellipse 30% 30% at 38% 96%, rgba(255, 214, 150, 0.32), transparent 70%); }
/* progress: morning light */
.room-progress { background: linear-gradient(180deg, #fff7ec, #f6e6d2); }
.room-progress > i { background: radial-gradient(ellipse 52% 60% at 30% 44%, rgba(255, 196, 120, 0.42), transparent 70%), radial-gradient(ellipse 80% 40% at 50% 112%, rgba(217, 79, 10, 0.08), transparent 70%); }
/* your rules: the app's own cream */
.room-rules { background: #fefaf5; }
.room-rules > i { background: radial-gradient(ellipse 46% 56% at 68% 50%, rgba(232, 101, 31, 0.1), transparent 70%), linear-gradient(180deg, transparent 70%, rgba(237, 216, 200, 0.45)); }
/* everywhere: dusk, a studio for every device */
.room-everywhere { background: radial-gradient(ellipse 90% 70% at 64% 38%, #1d2552, #080b1b 72%); }
.room-everywhere > i { background: radial-gradient(ellipse 60% 30% at 64% 100%, rgba(232, 101, 31, 0.1), transparent 70%); }
/* the close: the same sky, with the warm horizon kept */
.room-close { background: radial-gradient(ellipse 120% 80% at 50% 0%, #17204a, #060812 64%); }
/* the dawn: the sky warms up from the horizon and the stars thin out as the last screens scroll (--dawn, 0..1) */
.room-close { --dawn: 0; }
.room-close > i { background: linear-gradient(180deg, transparent 58%, rgba(212, 168, 75, 0.05) 78%, rgba(232, 101, 31, 0.16) 100%); }
.room-close > i::before {
  content: ""; position: absolute; inset: 0; opacity: var(--dawn);
  background: linear-gradient(180deg, rgba(23, 32, 74, 0) 16%, rgba(46, 40, 94, 0.62) 44%, rgba(88, 42, 72, 0.9) 72%, rgba(122, 53, 36, 0.97) 100%);
}
.room-close > .stars { opacity: calc(1 - var(--dawn) * 0.72); }

/* ——— the chapters, along the bottom ——— */
.rail {
  position: absolute; left: 50%; bottom: 20px; z-index: 6; transform: translateX(-50%);
  display: flex; gap: 22px; padding: 8px 16px; visibility: hidden; color: #f4f1ea;
}
.rail button { position: relative; padding: 4px 0 7px; font-size: 12.5px; font-weight: 620; color: inherit; opacity: 0.62; white-space: nowrap; }
.rail button i { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; border-radius: 1px; background: currentColor; transform-origin: 0 50%; transform: scaleX(0); opacity: 0.9; }
.rail button[aria-current="true"], .rail button:hover { opacity: 1; }

/* ——— the curtain: the headline from the first paint ——— */
.curtain { position: fixed; inset: 0; z-index: 35; background: radial-gradient(ellipse 120% 80% at 72% 0%, #17204a, #060812 62%); pointer-events: none; }
