/* =====================================================================
   Sash marketing site — shared styles
   Imports design-system tokens, then layers site-specific patterns.
   Light is default; [data-theme="dark"] on <html> flips palette.
   ===================================================================== */
@import url("./colors_and_type.css");

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { background: var(--sash-content-bg); color: var(--sash-label-primary); }
body { background: var(--sash-content-bg); }

img, svg { display: block; max-width: 100%; }

/* ---------- LAYOUT CONTAINER -------------------------------------- */
.site { max-width: 1180px; margin: 0 auto; padding: 0 32px; }
.site.narrow { max-width: 820px; }
.site.wide   { max-width: 1280px; }

/* ---------- BUTTONS ----------------------------------------------- */
.btn { font: var(--sash-text-headline); border-radius: 10px;
  padding: 11px 18px; border: 0; cursor: pointer; user-select: none;
  letter-spacing: -0.005em; display: inline-flex; align-items: center; gap: 8px;
  text-decoration: none;
  transition: background var(--sash-dur-hover) var(--sash-ease-hover),
              transform var(--sash-dur-hover) var(--sash-ease-hover),
              color var(--sash-dur-hover) var(--sash-ease-hover); }
.btn.primary   { background: var(--sash-accent); color: white; }
.btn.primary:hover { background: var(--sash-accent-hover); }
.btn.primary:active { transform: scale(0.985); }
.btn.secondary { background: var(--sash-fill-tertiary); color: var(--sash-label-primary); }
.btn.secondary:hover { background: var(--sash-fill-secondary); }
.btn.ghost     { background: transparent; color: var(--sash-accent); padding: 11px 8px; }
.btn.ghost:hover { color: var(--sash-accent-hover); }
.btn.lg { padding: 13px 24px; font-size: 15px; }
.btn.xl { padding: 16px 28px; font-size: 17px; }

/* ---------- TOP BAR ----------------------------------------------- */
.topbar { position: sticky; top: 0; z-index: 50;
  backdrop-filter: var(--sash-backdrop-blur);
  -webkit-backdrop-filter: var(--sash-backdrop-blur);
  background: rgba(255,255,255,0.72);
  border-bottom: 0.5px solid var(--sash-separator); }
[data-theme="dark"] .topbar { background: rgba(20,20,22,0.72); }
.topbar-inner { display: flex; align-items: center; height: 56px; gap: 24px; }
.topbar-brand { display: inline-flex; align-items: center; }
.topbar nav { display: flex; gap: 28px; margin-left: 36px; }
.topbar nav a { color: var(--sash-label-secondary); font: var(--sash-text-callout);
  transition: color var(--sash-dur-hover) var(--sash-ease-hover); }
.topbar nav a:hover { color: var(--sash-label-primary); text-decoration: none; }
.topbar nav a[aria-current="page"] { color: var(--sash-label-primary); font-weight: 600; }
.topbar .right { margin-left: auto; display: flex; gap: 10px; align-items: center; }

/* mobile nav toggle */
.nav-toggle { display: none; background: transparent; border: 0; padding: 8px; cursor: pointer;
  color: var(--sash-label-primary); }
.nav-toggle svg { width: 20px; height: 20px; }

/* ---------- FOOTER ------------------------------------------------ */
.footer-wrap { background: var(--sash-grouped-bg);
  border-top: 0.5px solid var(--sash-separator); margin-top: 80px; }
.footer { padding: 56px 0 28px;
  display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; }
.footer .brand img { display: block; margin-bottom: 14px; }
/* Monochrome wordmark — paths inline with fill="currentColor", so the
   whole mark inherits the CSS color and themes light/dark automatically. */
.footer .brand .wordmark {
  display: block; width: 128px; height: 29px; margin-bottom: 14px;
  color: var(--sash-label-primary);
}
.footer .brand p { font: var(--sash-text-footnote); color: var(--sash-label-secondary);
  max-width: 280px; margin: 0; }
.footer h4 { font: var(--sash-text-footnote); color: var(--sash-label-tertiary);
  text-transform: uppercase; letter-spacing: 0.08em; margin: 0 0 14px; font-weight: 600; }
.footer ul { list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 10px; }
.footer ul a { color: var(--sash-label-secondary); font: var(--sash-text-body); }
.footer ul a:hover { color: var(--sash-label-primary); text-decoration: none; }
.footer-bottom { padding: 24px 0; border-top: 0.5px solid var(--sash-separator);
  font: var(--sash-text-footnote); color: var(--sash-label-tertiary); }
.footer-bottom p { margin: 0; max-width: 720px; }

/* ---------- SECTION SCAFFOLD -------------------------------------- */
section { padding: 96px 0; position: relative; }
.section-eyebrow { font: var(--sash-text-caption); color: var(--sash-accent);
  text-transform: uppercase; letter-spacing: 0.08em;
  margin-bottom: 12px; font-weight: 600; }
.section-h2 { font: 600 40px/46px var(--sash-font-system);
  letter-spacing: -0.02em; margin: 0; max-width: 760px; }
.section-h2 em { font-style: normal; color: var(--sash-label-tertiary); }
.section-h2 em.accent { color: var(--sash-accent); }
.section-lede { margin: 16px 0 0; max-width: 620px;
  font: 400 18px/26px var(--sash-font-system);
  color: var(--sash-label-secondary); text-wrap: pretty; }
.section-head-split { display: flex; align-items: end; justify-content: space-between;
  gap: 32px; margin-bottom: 48px; flex-wrap: wrap; }
.section-head-split .right-col { font: var(--sash-text-body);
  color: var(--sash-label-secondary); max-width: 320px; }

/* ===================================================================== */
/* HERO (landing)                                                         */
/* ===================================================================== */
.hero { padding: 96px 0 112px; text-align: center; position: relative; overflow: hidden; }

/* Subtle accent radial glow behind the hero text — gives the section a
   spatial anchor without imagery. Sits under the .site content via z-index. */
.hero-glow {
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background:
    radial-gradient(720px 360px at 50% 30%, rgba(0,122,255,0.10), transparent 70%),
    radial-gradient(900px 480px at 80% 90%, rgba(94,168,255,0.06), transparent 60%);
}
[data-theme="dark"] .hero-glow {
  background:
    radial-gradient(800px 420px at 50% 30%, rgba(10,132,255,0.16), transparent 70%),
    radial-gradient(1000px 540px at 80% 90%, rgba(70,140,230,0.10), transparent 60%);
}
.hero .site { position: relative; z-index: 1; }

.hero-eyebrow { font: var(--sash-text-caption); color: var(--sash-accent);
  text-transform: uppercase; letter-spacing: 0.10em; font-weight: 600;
  margin-bottom: 16px; font-size: 12px; }
.hero h1 { font: 600 60px/64px var(--sash-font-system); letter-spacing: -0.025em;
  max-width: 880px; margin: 0 auto; }
/* "Windows" gets the accent treatment — that's the niche this whole site
   is positioned around. Different from .section-h2 em which fades to tertiary. */
.hero h1 em { font-style: normal; color: var(--sash-accent); }
.hero .sub { margin: 22px auto 0; max-width: 620px;
  font: 400 19px/27px var(--sash-font-system);
  color: var(--sash-label-primary); opacity: 0.78; text-wrap: pretty; }
.hero .ctas { margin-top: 32px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.hero .meta { margin-top: 16px;
  font: var(--sash-text-footnote); color: var(--sash-label-secondary); }

/* Standalone hero hotkey chip — sits below the meta line as a static visual
   signature. Says "keyboard-driven" without imagery. Mirrors the chip in the
   How-it-works step 3 demo, but at hero scale and with a label. */
.hero-hotkey {
  margin: 36px auto 0;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 14px; border-radius: 12px;
  background: var(--sash-content-bg);
  box-shadow:
    inset 0 0 0 0.5px var(--sash-separator),
    0 12px 32px -10px rgba(0,0,0,0.18);
}
[data-theme="dark"] .hero-hotkey {
  background: rgba(255,255,255,0.04);
  box-shadow:
    inset 0 0 0 0.5px rgba(255,255,255,0.08),
    0 12px 32px -10px rgba(0,0,0,0.5);
}
.hero-hotkey .cap {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 30px; height: 30px; padding: 0 8px;
  border-radius: 6px;
  background: var(--sash-fill-tertiary);
  color: var(--sash-label-primary);
  font: 600 14px/1 var(--sash-font-mono);
  box-shadow: inset 0 0 0 0.5px var(--sash-separator);
}
.hero-hotkey .plus {
  color: var(--sash-label-tertiary);
  font: 400 13px/1 var(--sash-font-system);
}
.hero-hotkey .hint {
  margin-left: 10px; padding-left: 12px;
  border-left: 0.5px solid var(--sash-separator);
  font: var(--sash-text-callout); color: var(--sash-label-secondary);
}

/* ===================================================================== */
/* HERO SNAP-ASSIST DEMO                                                  */
/* Plays once on load: window appears center, snaps left, Snap Assist     */
/* overlay shows in the right half, Editor highlights, Editor snaps right.*/
/* Pure CSS keyframes; transform + opacity only (no layout thrash).       */
/* ===================================================================== */
.snap-demo { margin: 40px auto 0; max-width: 480px; }
.snap-demo-frame {
  position: relative;
  width: 100%; aspect-ratio: 16 / 10;
  border-radius: 12px; overflow: hidden;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02)),
    linear-gradient(135deg, #5C7CB0 0%, #2E4470 60%, #1A2A4A 100%);
  box-shadow:
    inset 0 0 0 0.5px rgba(255,255,255,0.10),
    0 24px 60px -16px rgba(15,30,60,0.40);
}
[data-theme="dark"] .snap-demo-frame {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.01)),
    linear-gradient(135deg, #2A4880 0%, #14213B 60%, #0B0F1A 100%);
  box-shadow:
    inset 0 0 0 0.5px rgba(255,255,255,0.08),
    0 24px 60px -16px rgba(0,0,0,0.55);
}
.snap-bar {
  position: absolute; left: 0; right: 0; top: 0; height: 18px; z-index: 2;
  background: rgba(0,0,0,0.18);
  border-bottom: 0.5px solid rgba(255,255,255,0.08);
  display: flex; align-items: center; gap: 6px; padding: 0 10px;
}
.snap-bar-light { width: 9px; height: 9px; border-radius: 50%; }
.snap-bar-light.r { background: #FF5F57; }
.snap-bar-light.y { background: #FEBC2E; }
.snap-bar-light.g { background: #28C840; }

.snap-stage {
  position: absolute; left: 0; right: 0; top: 18px; bottom: 0;
}

/* Window primitive — Snap Assist demo windows + candidates share this.
   Title bar height + line-bar sizes are percentage-based so the same
   markup looks correct at full-window scale AND at thumbnail scale. */
.snap-window, .snap-cand {
  position: absolute; border-radius: 8px; overflow: hidden;
  display: flex; flex-direction: column;
  background: rgba(28,28,30,0.92);
  box-shadow: 0 6px 14px rgba(0,0,0,0.30), inset 0 0 0 0.5px rgba(255,255,255,0.10);
}
.snap-titlebar {
  height: 12%; min-height: 10px; flex: 0 0 auto;
  background: linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02));
  border-bottom: 0.5px solid rgba(255,255,255,0.08);
  display: flex; align-items: center; gap: 4px; padding: 0 7%;
}
.snap-dot { width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto; }
.snap-dot.r { background: #FF5F57; }
.snap-dot.y { background: #FEBC2E; }
.snap-dot.g { background: #28C840; }
.snap-cand .snap-dot { width: 4px; height: 4px; }
.snap-body { flex: 1; position: relative; }

/* Browser: white page + URL bar + content lines */
.snap-body-browser {
  background: linear-gradient(180deg, #FFF 0, #FFF 14%, #F2F4F8 14%, #F2F4F8 100%);
}
.snap-body-browser::before {
  content: ""; position: absolute; left: 8%; right: 8%; top: 20%; height: 6%;
  background: rgba(0,0,0,0.10); border-radius: 1.5px;
}
.snap-body-browser::after {
  content: ""; position: absolute; left: 8%; right: 8%; top: 36%; bottom: 8%;
  background:
    repeating-linear-gradient(180deg, rgba(0,0,0,0.10) 0 1px, transparent 1px 9px),
    linear-gradient(180deg, rgba(0,122,255,0.10), transparent 60%);
  border-radius: 2px;
}

/* Editor: dark background + faux syntax-highlight color bars */
.snap-body-editor { background: #1E1F22; }
.snap-body-editor::before {
  content: ""; position: absolute; inset: 10% 10% 10% 10%;
  background:
    linear-gradient(rgba(255,180,80,0.85), rgba(255,180,80,0.85)) 0   0%   / 60% 7%   no-repeat,
    linear-gradient(rgba(120,200,255,0.80), rgba(120,200,255,0.80)) 0  17%  / 78% 7%   no-repeat,
    linear-gradient(rgba(200,200,200,0.60), rgba(200,200,200,0.60)) 0  34%  / 48% 7%   no-repeat,
    linear-gradient(rgba(255,140,180,0.85), rgba(255,140,180,0.85)) 0  51%  / 70% 7%   no-repeat,
    linear-gradient(rgba(180,255,160,0.70), rgba(180,255,160,0.70)) 0  68%  / 44% 7%   no-repeat,
    linear-gradient(rgba(255,255,255,0.30), rgba(255,255,255,0.30)) 0  85%  / 60% 7%   no-repeat;
}

/* Notes: yellow paper + dark text-like bars */
.snap-body-notes { background: #FFFCF1; }
.snap-body-notes::before {
  content: ""; position: absolute; inset: 10%;
  background:
    linear-gradient(#1d1d1f, #1d1d1f) 0  0%   / 56% 8%  no-repeat,
    linear-gradient(rgba(0,0,0,0.40), rgba(0,0,0,0.40)) 0  20%  / 80% 6%  no-repeat,
    linear-gradient(rgba(0,0,0,0.32), rgba(0,0,0,0.32)) 0  38%  / 64% 6%  no-repeat,
    linear-gradient(rgba(0,0,0,0.32), rgba(0,0,0,0.32)) 0  56%  / 70% 6%  no-repeat,
    linear-gradient(rgba(0,0,0,0.28), rgba(0,0,0,0.28)) 0  74%  / 50% 6%  no-repeat;
}

/* Slack: deep purple + faded white channel-list bars */
.snap-body-slack {
  background: linear-gradient(180deg, #4A1D4F 0%, #3A1640 100%);
}
.snap-body-slack::before {
  content: ""; position: absolute; inset: 14% 10%;
  background:
    linear-gradient(rgba(255,255,255,0.65), rgba(255,255,255,0.65)) 0  0%   / 72% 8%  no-repeat,
    linear-gradient(rgba(255,255,255,0.45), rgba(255,255,255,0.45)) 0  22%  / 88% 8%  no-repeat,
    linear-gradient(rgba(255,255,255,0.45), rgba(255,255,255,0.45)) 0  44%  / 60% 8%  no-repeat,
    linear-gradient(rgba(255,255,255,0.40), rgba(255,255,255,0.40)) 0  66%  / 78% 8%  no-repeat;
}

/* Mail: white + email-row pattern + a single accent unread strip */
.snap-body-mail {
  background: linear-gradient(180deg, #FFF 0%, #FFF 22%, #F8F9FB 22%, #F8F9FB 100%);
}
.snap-body-mail::before {
  content: ""; position: absolute; inset: 32% 8% 8% 8%;
  background:
    linear-gradient(rgba(0,0,0,0.40), rgba(0,0,0,0.40)) 0  0%   / 56% 6%  no-repeat,
    linear-gradient(rgba(0,0,0,0.18), rgba(0,0,0,0.18)) 0  14%  / 84% 5%  no-repeat,
    linear-gradient(rgba(0,0,0,0.28), rgba(0,0,0,0.28)) 0  36%  / 66% 6%  no-repeat,
    linear-gradient(rgba(0,0,0,0.18), rgba(0,0,0,0.18)) 0  50%  / 90% 5%  no-repeat,
    linear-gradient(rgba(0,0,0,0.26), rgba(0,0,0,0.26)) 0  72%  / 74% 6%  no-repeat,
    linear-gradient(rgba(0,0,0,0.18), rgba(0,0,0,0.18)) 0  86%  / 60% 5%  no-repeat;
}
.snap-body-mail::after {
  /* small accent dot in the top-left = "unread" indicator */
  content: ""; position: absolute; left: 6%; top: 8%; width: 8%; aspect-ratio: 1;
  border-radius: 50%; background: var(--sash-accent);
}

/* Stack: window-1 at bottom, snap-assist in middle (visible mid-timeline),
   window-2 on top so the final state holds reliably even though it shares
   coordinates with snap-assist. */
.snap-window-1 { z-index: 1; }
.snap-assist   { z-index: 2; }
.snap-window-2 { z-index: 3; }

/* Total animation runtime: 6.5s. Each element shares this timeline + delay
   so the choreography stays in sync. */

/* --- Window 1 (Browser): fades in centered, slides to left half. -------
   Uniform scale 1.0 — just translation. The window keeps the same shape
   throughout (a half-of-16:10 rectangle) so it never looks stretched. */
.snap-window-1 {
  top: 6%; left: 2.2%; width: 47.8%; height: 88%;
  transform-origin: top left;
  transform: translate(50%, 0);     /* horizontally centered initially */
  opacity: 0;
  animation: snap-w1 6.5s cubic-bezier(0.0, 0.0, 0.2, 1) forwards;
  animation-delay: 1.2s;
}
@keyframes snap-w1 {
  /* 0–8% (≤0.5s):     invisible                  */
  /* 8–17% (0.5–1.1s): fade in centered           */
  /* 17–28% (1.1–1.8s): hold center                */
  /* 28–34% (1.8–2.2s): slide to left half (snap)  */
  /* 34–100%: hold at left half                    */
  0%, 8%    { opacity: 0; transform: translate(50%, 0); }
  17%, 28%  { opacity: 1; transform: translate(50%, 0); }
  34%, 100% { opacity: 1; transform: translate(0,   0); }
}

/* --- Snap Assist overlay (right half) — 2×2 grid of 16:10 thumbnails.
   Mirrors the real Sash Snap Assist layout: candidate windows in a tight
   grid inside the empty zone. */
.snap-assist {
  position: absolute;
  top: 6%; left: 50%; width: 47.8%; height: 88%;
  border-radius: 10px;
  background: rgba(0,0,0,0.32);
  backdrop-filter: blur(12px) saturate(160%);
  -webkit-backdrop-filter: blur(12px) saturate(160%);
  box-shadow: inset 0 0 0 0.5px rgba(255,255,255,0.12);
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: max-content;
  align-content: center;
  gap: 7%;
  padding: 8%;
  opacity: 0;
  animation: snap-assist 6.5s cubic-bezier(0.0, 0.0, 0.2, 1) forwards;
  animation-delay: 1.2s;
}
@keyframes snap-assist {
  /* 0–37% (≤2.4s):   hidden (window-1 snaps first)        */
  /* 37–43% (2.4–2.8s): fade in                            */
  /* 43–66% (2.8–4.3s): visible — read candidates + select */
  /* 66–72% (4.3–4.7s): fade out as window-2 takes over    */
  0%, 37%   { opacity: 0; transform: translateY(8px); }
  43%, 66%  { opacity: 1; transform: translateY(0);   }
  72%, 100% { opacity: 0; transform: translateY(0);   }
}
.snap-assist .snap-cand {
  position: relative; aspect-ratio: 16 / 10; width: 100%;
}
.snap-assist .snap-cand-pick {
  /* Accent ring lights up at ~52% (3.4s) — the "click". Held until 66%
     when snap-assist starts fading. Selection feels snappy now (~0.6s
     after candidates appear, instead of the ~1.5s it used to be). */
  animation: snap-cand-pick 6.5s cubic-bezier(0.0, 0.0, 0.2, 1) forwards;
  animation-delay: 1.2s;
}
@keyframes snap-cand-pick {
  0%, 46%   { box-shadow: 0 6px 14px rgba(0,0,0,0.30), inset 0 0 0 0.5px rgba(255,255,255,0.10); }
  52%, 66%  { box-shadow: 0 0 0 2px var(--sash-accent), 0 12px 28px rgba(0,122,255,0.40); }
  72%, 100% { box-shadow: 0 6px 14px rgba(0,0,0,0.30), inset 0 0 0 0.5px rgba(255,255,255,0.10); }
}

/* --- Window 2 (Editor): hidden until pick lands, then fills right half. */
.snap-window-2 {
  top: 6%; left: 50%; width: 47.8%; height: 88%;
  opacity: 0;
  transform: scale(0.96);
  animation: snap-w2 6.5s cubic-bezier(0.0, 0.0, 0.2, 1) forwards;
  animation-delay: 1.2s;
}
@keyframes snap-w2 {
  /* 0–66% (≤4.3s): hidden                                  */
  /* 66–72% (4.3–4.7s): fade in at right half               */
  /* 72–100% (4.7–6.5s): held visible — final state          */
  0%, 66%   { opacity: 0; transform: scale(0.96); }
  72%, 100% { opacity: 1; transform: scale(1);    }
}

.snap-demo-cap {
  margin: 14px 0 0; text-align: center;
  font: var(--sash-text-footnote); color: var(--sash-label-tertiary);
}

/* Reduced motion: skip the choreography, show the final state. */
@media (prefers-reduced-motion: reduce) {
  .snap-window-1 {
    transform: none; opacity: 1; animation: none;
  }
  .snap-assist { opacity: 0; animation: none; }
  .snap-assist .snap-cand-pick { animation: none; }
  .snap-window-2 { opacity: 1; transform: none; animation: none; }
}

/* hero stage with product screenshot placeholder */
.hero-stage { position: relative; margin: 56px auto 0; max-width: 1180px; }
.hero-screenshot { position: relative; aspect-ratio: 16 / 10;
  border-radius: 18px; overflow: hidden;
  background:
    radial-gradient(110% 90% at 30% 10%, #6F9DD8 0%, #355585 45%, #182A4F 100%);
  box-shadow:
    0 1px 2px rgba(0,0,0,0.10),
    0 30px 80px -10px rgba(15, 30, 60, 0.40),
    inset 0 0 0 1px rgba(255,255,255,0.08);
}
[data-theme="dark"] .hero-screenshot {
  background: radial-gradient(110% 90% at 30% 10%, #2A4880 0%, #14213B 45%, #0B0F1A 100%);
  box-shadow:
    0 1px 2px rgba(0,0,0,0.40),
    0 30px 80px -10px rgba(0, 0, 0, 0.55),
    inset 0 0 0 1px rgba(255,255,255,0.06);
}
.hero-screenshot .placeholder-label { position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%); color: rgba(255,255,255,0.55);
  font: var(--sash-text-caption); text-transform: uppercase; letter-spacing: 0.12em; }

/* faux desktop inside hero stage */
.fake-menubar { position: absolute; left: 0; right: 0; top: 0; height: 24px;
  display: flex; align-items: center; padding: 0 14px; gap: 14px;
  background: rgba(0,0,0,0.20); backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border-bottom: 0.5px solid rgba(255,255,255,0.10); z-index: 2;
  font: 11px/1 -apple-system, "SF Pro Text", "Inter", sans-serif;
  color: rgba(255,255,255,0.92); }
.fake-menubar .apple { font-size: 13px; }
.fake-menubar .right { margin-left: auto; display: flex; gap: 12px; align-items: center;
  font-feature-settings: "tnum"; }
.fake-menubar .sash-mb { display: inline-flex; align-items: center; gap: 4px;
  padding: 1px 6px; border-radius: 4px; background: rgba(255,255,255,0.18); }
.fake-menubar .sash-mb svg { width: 12px; height: 12px; }

.fake-windows { position: absolute; inset: 32px 14px 14px 14px; display: grid;
  grid-template-columns: 1.4fr 1fr; grid-template-rows: 1fr 1fr; gap: 8px; }
.fake-win { background: var(--sash-window-bg);
  border-radius: 10px; overflow: hidden; display: flex; flex-direction: column;
  border: 0.5px solid rgba(0,0,0,0.10);
  box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset, 0 8px 18px rgba(0,0,0,0.18); }
.fake-win .titlebar { height: 28px; display: flex; align-items: center; gap: 8px;
  padding: 0 12px; background: linear-gradient(180deg,#FBFBFD,#F2F3F6);
  border-bottom: 0.5px solid rgba(0,0,0,0.06);
  font: 12px/1 -apple-system, "Inter", sans-serif; color: var(--sash-label-secondary); }
.fake-win .lights { display: flex; gap: 6px; }
.fake-win .lights span { width: 11px; height: 11px; border-radius: 50%;
  border: 0.5px solid rgba(0,0,0,0.12); box-sizing: border-box; }
.fake-win .lights span:nth-child(1) { background: #FF5F57; }
.fake-win .lights span:nth-child(2) { background: #FEBC2E; }
.fake-win .lights span:nth-child(3) { background: #28C840; }
.fake-win .titlebar .t { font-weight: 500; color: var(--sash-label-primary); }
.fake-win .body { flex: 1; position: relative; }
.fake-win.tall { grid-row: 1 / span 2; }

/* simple per-app body fills */
.fake-win.safari .body { background: linear-gradient(180deg,#FFF 0,#FFF 36px,#F7F8FA 36px,#F7F8FA 100%); }
.fake-win.safari .body::before { content:""; position:absolute; left:14px; top:14px; right:14px; height:14px;
  background: rgba(0,0,0,0.08); border-radius: 4px; }
.fake-win.safari .body::after { content:""; position:absolute; left:14px; top:48px; right:14px; bottom:14px;
  background:
    repeating-linear-gradient(180deg, rgba(0,0,0,0.06) 0 1px, transparent 1px 18px),
    linear-gradient(180deg, rgba(0,122,255,0.06), transparent 60%); border-radius: 6px; }
.fake-win.code .body { background: #1E1F22; }
.fake-win.code .body::before { content:""; position:absolute; inset:14px;
  background:
    linear-gradient(180deg, rgba(255,180,80,0.85) 0 1px, transparent 1px) 0 8px / 30% 18px no-repeat,
    linear-gradient(180deg, rgba(120,200,255,0.75) 0 1px, transparent 1px) 0 26px / 50% 18px no-repeat,
    linear-gradient(180deg, rgba(200,200,200,0.65) 0 1px, transparent 1px) 0 44px / 42% 18px no-repeat,
    linear-gradient(180deg, rgba(255,140,180,0.75) 0 1px, transparent 1px) 0 62px / 55% 18px no-repeat,
    linear-gradient(180deg, rgba(180,255,160,0.70) 0 1px, transparent 1px) 0 80px / 36% 18px no-repeat,
    linear-gradient(180deg, rgba(255,255,255,0.30) 0 1px, transparent 1px) 0 98px / 62% 18px no-repeat; }
.fake-win.notes .body { background: #FFFCF1; }
.fake-win.notes .body::before { content:""; position:absolute; inset:18px;
  background:
    linear-gradient(180deg,#1d1d1f 0 1px,transparent 1px) 0 0/55% 14px,
    linear-gradient(180deg,rgba(0,0,0,0.40) 0 1px,transparent 1px) 0 14px/72% 14px,
    linear-gradient(180deg,rgba(0,0,0,0.35) 0 1px,transparent 1px) 0 28px/64% 14px,
    linear-gradient(180deg,rgba(0,0,0,0.30) 0 1px,transparent 1px) 0 42px/82% 14px,
    linear-gradient(180deg,rgba(0,0,0,0.30) 0 1px,transparent 1px) 0 56px/40% 14px; }

/* hotkey chip overlay (Variant B) */
.hotkey-overlay { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  z-index: 3; pointer-events: none;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 10px 14px; border-radius: 12px;
  background: rgba(28,28,30,0.78); backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  box-shadow: 0 18px 40px -8px rgba(0,0,0,0.45), inset 0 0 0 0.5px rgba(255,255,255,0.10); }
.hotkey-overlay .cap { display: inline-flex; align-items: center; justify-content: center;
  min-width: 26px; height: 26px; padding: 0 6px;
  border-radius: 5px;
  background: rgba(255,255,255,0.14);
  color: rgba(255,255,255,0.96);
  font: 600 13px/1 var(--sash-font-mono);
  box-shadow: inset 0 0 0 0.5px rgba(255,255,255,0.18),
              0 1px 0 rgba(0,0,0,0.30); }
.hotkey-overlay .plus { color: rgba(255,255,255,0.5); font-size: 11px; }

/* ===================================================================== */
/* SNAP ASSIST showcase (the marquee feature)                             */
/* ===================================================================== */
.showcase {
  background: linear-gradient(180deg, #0B0F1A 0%, #14213B 100%);
  color: white; padding: 120px 0; position: relative; overflow: hidden;
  border-top: 0; border-bottom: 0;
}
.showcase .section-eyebrow { color: #5DA8FF; }
.showcase .section-h2 { color: white; }
.showcase .section-h2 em { color: rgba(255,255,255,0.45); }
.showcase .section-lede { color: rgba(255,255,255,0.7); }
.showcase-stage { margin-top: 56px; position: relative;
  border-radius: 18px; overflow: hidden; aspect-ratio: 16 / 10;
  background:
    radial-gradient(120% 80% at 30% 0%, #2A4880 0%, #14213B 60%, #0B0F1A 100%);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.08),
    0 30px 80px rgba(0,0,0,0.5); }
.showcase-stage video, .showcase-stage img { position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover; }
.showcase-stage .placeholder { position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 14px; color: rgba(255,255,255,0.55); }
.showcase-stage .placeholder .badge { font: var(--sash-text-caption);
  text-transform: uppercase; letter-spacing: 0.12em;
  padding: 4px 10px; border-radius: 999px;
  background: rgba(255,255,255,0.10); border: 0.5px solid rgba(255,255,255,0.16); }
.showcase-stage .placeholder p { font: var(--sash-text-callout); margin: 0;
  color: rgba(255,255,255,0.55); max-width: 340px; text-align: center; }
.showcase-caption { margin-top: 20px; font: var(--sash-text-footnote);
  color: rgba(255,255,255,0.55); text-align: center; }

/* ===================================================================== */
/* FEATURES (4-up supporting grid)                                        */
/* ===================================================================== */
.features-grid { display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 16px; margin-top: 8px; }
.feature-card { padding: 24px; border-radius: 14px;
  background: var(--sash-grouped-bg);
  border: 0.5px solid var(--sash-separator);
  display: flex; flex-direction: column; gap: 12px; min-height: 200px; }
.feature-card .icon { width: 36px; height: 36px; border-radius: 9px;
  background: var(--sash-accent-fill);
  color: var(--sash-accent);
  display: inline-flex; align-items: center; justify-content: center; }
.feature-card .icon svg { width: 20px; height: 20px; }
.feature-card .row { display: flex; align-items: center; gap: 10px; }
.feature-card h3 { font: var(--sash-text-title2); margin: 0; letter-spacing: -0.01em; }
.feature-card p { font: var(--sash-text-body); color: var(--sash-label-secondary); margin: 0; }
.feature-card .pill { font: var(--sash-text-caption); color: var(--sash-label-secondary);
  text-transform: uppercase; letter-spacing: 0.06em;
  padding: 2px 8px; border-radius: 4px; background: var(--sash-fill-tertiary); }
.feature-card .pill.free { color: var(--sash-system-green); }
.feature-card .pill.pro  { color: var(--sash-accent); background: var(--sash-accent-fill); }

/* ===================================================================== */
/* HOW IT WORKS (3 steps)                                                 */
/* ===================================================================== */
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 8px; }
.step { padding: 24px; border-radius: 14px;
  background: var(--sash-grouped-bg);
  border: 0.5px solid var(--sash-separator);
  display: flex; flex-direction: column; gap: 12px; }
.step .num { width: 28px; height: 28px; border-radius: 50%;
  background: var(--sash-accent); color: white;
  font: 600 13px/1 var(--sash-font-system);
  display: inline-flex; align-items: center; justify-content: center; }
.step h3 { font: var(--sash-text-title3); margin: 0; }
.step p  { font: var(--sash-text-body); color: var(--sash-label-secondary); margin: 0; }
.step .demo { margin-top: 4px; height: 80px; border-radius: 8px;
  background: var(--sash-content-bg);
  border: 0.5px solid var(--sash-separator);
  display: flex; align-items: center; justify-content: center; }
[data-theme="dark"] .step .demo { background: rgba(255,255,255,0.04); }
.step a.demo-link {
  text-decoration: none;
  transition: background var(--sash-dur-hover) var(--sash-ease-hover),
              border-color var(--sash-dur-hover) var(--sash-ease-hover);
}
.step a.demo-link:hover {
  background: var(--sash-accent-fill);
  border-color: var(--sash-accent);
}

/* ===================================================================== */
/* PRICING                                                                */
/* ===================================================================== */
.pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 20px; margin-top: 8px; align-items: stretch; }
.plan { padding: 28px; border-radius: 16px;
  background: var(--sash-grouped-bg);
  border: 0.5px solid var(--sash-separator);
  display: flex; flex-direction: column; gap: 16px; position: relative;
  transition: box-shadow var(--sash-dur-hover) var(--sash-ease-hover); }
.plan .pill-row { min-height: 22px; display: flex; }
.plan .emphasis { font: var(--sash-text-caption); color: var(--sash-accent);
  text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600;
  padding: 4px 10px; border-radius: 999px; background: var(--sash-accent-fill); }
.plan h3 { font: var(--sash-text-title); margin: 0; letter-spacing: -0.01em; }
.plan .tagline { font: var(--sash-text-body); color: var(--sash-label-secondary); margin: 0; }
.plan .amt { font: 600 38px/42px var(--sash-font-system); letter-spacing: -0.02em; }
.plan .amt small { font: var(--sash-text-body); color: var(--sash-label-secondary);
  font-weight: 400; margin-left: 6px; }
.plan ul { list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 10px; }
.plan li { font: var(--sash-text-body); display: flex; gap: 10px; align-items: flex-start;
  color: var(--sash-label-primary); }
.plan li::before { content: "✓"; color: var(--sash-system-green); font-weight: 700;
  flex: 0 0 auto; font-size: 13px; line-height: 18px; }
.plan .btn { margin-top: auto; justify-content: center; }
.plan.featured { background: var(--sash-content-bg);
  box-shadow: 0 0 0 2px var(--sash-accent), 0 24px 60px -10px rgba(0,122,255,0.18); }
[data-theme="dark"] .plan.featured { box-shadow: 0 0 0 2px var(--sash-accent),
  0 24px 60px -10px rgba(10,132,255,0.30); }

.pro-recap { margin-top: 56px; padding: 28px; border-radius: 14px;
  background: var(--sash-grouped-bg);
  border: 0.5px solid var(--sash-separator); }
.pro-recap h3 { font: var(--sash-text-title2); margin: 0 0 16px; letter-spacing: -0.01em; }
.pro-recap-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px 28px; }
.pro-recap-item { display: flex; gap: 10px; align-items: flex-start;
  font: var(--sash-text-body); color: var(--sash-label-secondary); }
.pro-recap-item strong { color: var(--sash-label-primary); font-weight: 600; }
.pro-recap-item .icon { width: 22px; height: 22px; border-radius: 6px;
  background: var(--sash-accent-fill); color: var(--sash-accent);
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.pro-recap-item .icon svg { width: 13px; height: 13px; }

.free-note { margin-top: 32px; text-align: center;
  font: var(--sash-text-body); color: var(--sash-label-secondary); }
.free-note strong { color: var(--sash-label-primary); font-weight: 600; }

/* ===================================================================== */
/* FAQ                                                                    */
/* ===================================================================== */
.faq-list { margin-top: 24px; }
.faq { border-bottom: 0.5px solid var(--sash-separator); padding: 22px 0;
  display: flex; flex-direction: column; gap: 10px; }
.faq summary { font: var(--sash-text-headline); font-size: 15px; cursor: pointer;
  list-style: none; display: flex; justify-content: space-between;
  align-items: center; gap: 16px; padding-right: 4px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font: 400 22px/1 var(--sash-font-system);
  color: var(--sash-label-tertiary);
  transition: transform 200ms var(--sash-ease-hover); flex: 0 0 auto; }
.faq[open] summary::after { transform: rotate(45deg); }
.faq p { font: var(--sash-text-body); color: var(--sash-label-secondary); margin: 0;
  max-width: 720px; }

/* ===================================================================== */
/* DOWNLOAD page                                                          */
/* ===================================================================== */
.download-hero { padding: 120px 0 96px; text-align: center; }
.download-hero h1 { font: 600 48px/52px var(--sash-font-system);
  letter-spacing: -0.025em; max-width: 720px; margin: 0 auto; }
.download-hero .sub { margin: 18px auto 0; max-width: 540px;
  font: 400 18px/26px var(--sash-font-system);
  color: var(--sash-label-secondary); }
.download-hero .ctas { margin-top: 36px; display: flex; gap: 12px;
  justify-content: center; flex-wrap: wrap; }
.download-meta { margin-top: 48px; padding: 24px; border-radius: 14px;
  background: var(--sash-grouped-bg);
  border: 0.5px solid var(--sash-separator);
  max-width: 600px; margin-left: auto; margin-right: auto;
  display: flex; flex-direction: column; gap: 10px;
  font: var(--sash-text-body); color: var(--sash-label-secondary); }
.download-meta .row { display: flex; justify-content: space-between; gap: 16px; }
.download-meta .row .k { color: var(--sash-label-tertiary); }
.download-meta .row .v { color: var(--sash-label-primary); font-weight: 500; }
.download-meta .row .v.mono { font-family: var(--sash-font-mono); font-size: 11px;
  color: var(--sash-label-secondary); font-weight: 400; }

/* ===================================================================== */
/* RELEASE NOTES, LEGAL pages — long-form prose                           */
/* ===================================================================== */
.prose { padding: 80px 0 0; }
.prose h1 { font: 600 40px/46px var(--sash-font-system);
  letter-spacing: -0.025em; margin: 0 0 8px; }
.prose .lede { font: 400 18px/26px var(--sash-font-system);
  color: var(--sash-label-secondary); margin: 0 0 48px; max-width: 640px; }
.prose h2 { font: 600 22px/28px var(--sash-font-system);
  letter-spacing: -0.01em; margin: 40px 0 12px; }
.prose h3 { font: 600 16px/22px var(--sash-font-system); margin: 24px 0 8px; }
.prose p, .prose li { font: var(--sash-text-body); font-size: 14px; line-height: 22px;
  color: var(--sash-label-primary); max-width: 680px; }
.prose p { margin: 0 0 14px; }
.prose ul, .prose ol { padding-left: 22px; margin: 0 0 18px; }
.prose li { margin-bottom: 6px; }
.prose strong { font-weight: 600; }
.prose a { color: var(--sash-accent); }
.prose code { font-family: var(--sash-font-mono); font-size: 12px;
  padding: 1px 6px; border-radius: 4px;
  background: var(--sash-fill-quaternary); }
.prose .meta { font: var(--sash-text-footnote);
  color: var(--sash-label-tertiary); margin-bottom: 24px; }
.prose .toc { font: var(--sash-text-callout); color: var(--sash-label-secondary);
  padding: 16px 18px; border-radius: 10px; background: var(--sash-grouped-bg);
  border: 0.5px solid var(--sash-separator); margin-bottom: 40px; }
.prose .toc ol { margin: 8px 0 0; padding-left: 18px; }
.prose .toc li { margin-bottom: 4px; }

/* changelog */
.changelog-entry { padding: 32px 0; border-bottom: 0.5px solid var(--sash-separator); }
.changelog-entry:first-of-type { padding-top: 0; }
.changelog-entry:last-of-type { border-bottom: 0; }
.changelog-entry h2 { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
  margin: 0 0 14px; font: 600 24px/30px var(--sash-font-system);
  letter-spacing: -0.015em; }
.changelog-entry h2 .date { font: var(--sash-text-callout); font-size: 13px;
  color: var(--sash-label-tertiary); font-weight: 400; letter-spacing: 0; }
.changelog-entry ul { margin: 0; padding-left: 22px; }
.changelog-entry li { font: var(--sash-text-body); font-size: 14px; line-height: 22px;
  color: var(--sash-label-primary); margin-bottom: 6px; }

/* ===================================================================== */
/* SUPPORT / contact                                                      */
/* ===================================================================== */
.support-grid { display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 20px; margin-top: 32px; }
.support-card { padding: 28px; border-radius: 14px;
  background: var(--sash-grouped-bg);
  border: 0.5px solid var(--sash-separator);
  display: flex; flex-direction: column; gap: 10px; }
.support-card .icon { width: 36px; height: 36px; border-radius: 9px;
  background: var(--sash-accent-fill); color: var(--sash-accent);
  display: inline-flex; align-items: center; justify-content: center;
  margin-bottom: 4px; }
.support-card .icon svg { width: 20px; height: 20px; }
.support-card h3 { font: var(--sash-text-title2); margin: 0; letter-spacing: -0.01em; }
.support-card p { font: var(--sash-text-body); color: var(--sash-label-secondary); margin: 0; }
.support-card a.cta { font: var(--sash-text-body); font-weight: 600;
  color: var(--sash-accent); margin-top: auto; padding-top: 8px; }

/* ===================================================================== */
/* MANAGE redirect page                                                   */
/* ===================================================================== */
.redirect-page { min-height: 60vh; display: flex; flex-direction: column;
  align-items: center; justify-content: center; text-align: center; padding: 96px 0; }
.redirect-page .spinner { width: 24px; height: 24px; border-radius: 50%;
  border: 2px solid var(--sash-fill-secondary);
  border-top-color: var(--sash-accent); margin-bottom: 24px;
  animation: spin 0.9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.redirect-page p { font: var(--sash-text-body); color: var(--sash-label-secondary);
  margin: 0 0 8px; }
.redirect-page a { font: var(--sash-text-callout); }

/* ===================================================================== */
/* TWEAKS PANEL                                                           */
/* ===================================================================== */
#tweaks-panel { position: fixed; right: 20px; bottom: 20px; z-index: 100;
  width: 280px; padding: 16px;
  border-radius: 12px;
  background: var(--sash-material-thick);
  backdrop-filter: var(--sash-backdrop-blur);
  -webkit-backdrop-filter: var(--sash-backdrop-blur);
  box-shadow: var(--sash-shadow-overlay);
  border: 0.5px solid var(--sash-separator);
  display: none; flex-direction: column; gap: 14px;
  font: var(--sash-text-body); }
#tweaks-panel.open { display: flex; }
#tweaks-panel .head { display: flex; align-items: center; justify-content: space-between; }
#tweaks-panel .head h4 { font: var(--sash-text-headline); margin: 0; font-size: 13px; }
#tweaks-panel .head button { background: transparent; border: 0; padding: 4px;
  cursor: pointer; color: var(--sash-label-secondary); font-size: 16px; line-height: 1; }
#tweaks-panel .row { display: flex; flex-direction: column; gap: 6px; }
#tweaks-panel .row .lab { font: var(--sash-text-caption);
  color: var(--sash-label-secondary);
  text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; }
#tweaks-panel .seg { display: flex; gap: 2px; padding: 2px;
  background: var(--sash-fill-quaternary); border-radius: 8px; }
#tweaks-panel .seg button { flex: 1; padding: 6px 8px; border: 0; cursor: pointer;
  background: transparent; border-radius: 6px;
  font: var(--sash-text-callout); color: var(--sash-label-primary);
  transition: background var(--sash-dur-hover) var(--sash-ease-hover); }
#tweaks-panel .seg button.active { background: var(--sash-content-bg);
  box-shadow: 0 1px 2px rgba(0,0,0,0.06); font-weight: 600; }
[data-theme="dark"] #tweaks-panel .seg button.active { background: rgba(255,255,255,0.10); }

/* ===================================================================== */
/* WAITLIST                                                               */
/* ===================================================================== */
.waitlist-form {
  display: flex; gap: 8px; max-width: 460px; margin: 0 auto;
}
.waitlist-form input[type="email"] {
  flex: 1; min-width: 0;
  padding: 13px 16px;
  font: var(--sash-text-body);
  color: var(--sash-label-primary);
  background: var(--sash-content-bg);
  border: 0.5px solid var(--sash-separator);
  border-radius: 10px;
  outline: none;
  transition: border-color var(--sash-dur-hover) var(--sash-ease-hover),
              box-shadow var(--sash-dur-hover) var(--sash-ease-hover);
}
.waitlist-form input[type="email"]:focus {
  border-color: var(--sash-accent);
  box-shadow: 0 0 0 3px var(--sash-accent-fill);
}
.waitlist-form input[type="email"]::placeholder { color: var(--sash-label-tertiary); }
.waitlist-form .btn { flex: 0 0 auto; }
.waitlist-form.is-success input,
.waitlist-form.is-success button { display: none; }
.waitlist-form .success-msg {
  display: none; flex: 1;
  padding: 12px 16px; border-radius: 10px;
  background: var(--sash-accent-fill);
  color: var(--sash-accent);
  font: var(--sash-text-body); font-weight: 500;
  text-align: center;
}
.waitlist-form.is-success .success-msg { display: block; }
.waitlist-form .error-msg {
  display: none; flex-basis: 100%;
  padding: 8px 12px; border-radius: 8px;
  background: rgba(255, 59, 48, 0.10);
  color: var(--sash-system-red);
  font: var(--sash-text-footnote);
  text-align: center;
  margin-top: 4px;
}
.waitlist-form .error-msg.is-shown { display: block; }
.waitlist-form { flex-wrap: wrap; }

.beta-perks {
  margin-top: 56px;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
}
.beta-perk {
  padding: 24px; border-radius: 14px;
  background: var(--sash-content-bg);
  border: 0.5px solid var(--sash-separator);
  display: flex; flex-direction: column; gap: 10px;
}
[data-theme="dark"] .beta-perk { background: rgba(255,255,255,0.03); }
.beta-perk-glyph {
  width: 32px; height: 32px; border-radius: 8px;
  background: var(--sash-accent-fill); color: var(--sash-accent);
  display: inline-flex; align-items: center; justify-content: center;
}
.beta-perk-glyph svg { width: 18px; height: 18px; }
.beta-perk h3 { font: var(--sash-text-headline); margin: 0; }
.beta-perk p { font: var(--sash-text-body); color: var(--sash-label-secondary); margin: 0; }

@media (max-width: 768px) {
  .beta-perks { grid-template-columns: 1fr; }
  .waitlist-form { flex-direction: column; }
  .waitlist-form .btn { width: 100%; justify-content: center; }
}

/* ===================================================================== */
/* MOTION — hero entrance + scroll reveal                                 */
/* All gated by prefers-reduced-motion at the end of this block.          */
/* Restrained per design system: "1–2 animated elements per view max",    */
/* opacity + ~12px translateY, ~500ms ease-out, no parallax, no decoration. */
/* ===================================================================== */

/* Hero entrance — staggered fade-up on initial page load. */
.hero .hero-eyebrow,
.hero h1,
.hero .sub,
.hero .ctas,
.hero .meta,
.hero .hero-hotkey {
  opacity: 0;
  transform: translateY(12px);
  animation: sash-rise 600ms cubic-bezier(0.0, 0.0, 0.2, 1) forwards;
}
.hero .hero-eyebrow { animation-delay:  20ms; }
.hero h1            { animation-delay:  80ms; }
.hero .sub          { animation-delay: 160ms; }
.hero .ctas         { animation-delay: 240ms; }
.hero .meta         { animation-delay: 320ms; }
.hero .hero-hotkey  { animation-delay: 400ms; }

/* The hero glow itself fades in alongside the eyebrow — gives the
   hero a sense of "lighting up" rather than appearing pre-lit. */
.hero .hero-glow {
  opacity: 0;
  animation: sash-fade 800ms cubic-bezier(0.0, 0.0, 0.2, 1) forwards;
}
@keyframes sash-fade { to { opacity: 1; } }

@keyframes sash-rise {
  to { opacity: 1; transform: translateY(0); }
}

/* Scroll-reveal — sections fade-up when they enter the viewport. */
[data-reveal] {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity   500ms cubic-bezier(0.0, 0.0, 0.2, 1),
    transform 500ms cubic-bezier(0.0, 0.0, 0.2, 1);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Cascade children of a revealed grid by 60ms each. */
[data-reveal-children] > * {
  opacity: 0;
  transform: translateY(12px);
  transition:
    opacity   500ms cubic-bezier(0.0, 0.0, 0.2, 1),
    transform 500ms cubic-bezier(0.0, 0.0, 0.2, 1);
}
[data-reveal-children].is-visible > *:nth-child(1) { transition-delay:   0ms; }
[data-reveal-children].is-visible > *:nth-child(2) { transition-delay:  60ms; }
[data-reveal-children].is-visible > *:nth-child(3) { transition-delay: 120ms; }
[data-reveal-children].is-visible > *:nth-child(4) { transition-delay: 180ms; }
[data-reveal-children].is-visible > *:nth-child(5) { transition-delay: 240ms; }
[data-reveal-children].is-visible > * {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .hero .hero-eyebrow,
  .hero h1,
  .hero .sub,
  .hero .ctas,
  .hero .meta,
  .hero .hero-hotkey,
  .hero .hero-glow,
  [data-reveal],
  [data-reveal-children] > * {
    opacity: 1;
    transform: none;
    animation: none;
    transition: none;
  }
}

/* ===================================================================== */
/* RESPONSIVE                                                             */
/* ===================================================================== */
@media (max-width: 1024px) {
  .features-grid { grid-template-columns: repeat(2, 1fr); }
  .showcase { padding: 96px 0; }
  .footer { grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 32px; }
  .hero h1 { font-size: 52px; line-height: 56px; }
  .section-h2 { font-size: 34px; line-height: 40px; }
}
@media (max-width: 768px) {
  .pricing-grid, .steps, .support-grid { grid-template-columns: 1fr; }
  .features-grid { grid-template-columns: repeat(2, 1fr); }
  .pro-recap-grid { grid-template-columns: 1fr; }
  .footer { grid-template-columns: 1fr 1fr; gap: 32px; }
  .footer .brand { grid-column: 1 / -1; }
  section { padding: 72px 0; }
}
@media (max-width: 640px) {
  .site { padding: 0 20px; }
  .topbar nav { display: none; position: absolute; top: 56px; left: 0; right: 0;
    flex-direction: column; gap: 0; margin: 0;
    background: var(--sash-content-bg);
    border-bottom: 0.5px solid var(--sash-separator); padding: 8px 20px; }
  .topbar nav.open { display: flex; }
  .topbar nav a { padding: 12px 0; border-bottom: 0.5px solid var(--sash-separator); }
  .topbar nav a:last-child { border-bottom: 0; }
  .nav-toggle { display: inline-flex; }
  .topbar .right .btn:not(.primary) { display: none; }
  .features-grid { grid-template-columns: 1fr; }
  .hero { padding: 56px 0 0; }
  .hero h1 { font-size: 40px; line-height: 44px; }
  .hero .sub { font-size: 17px; line-height: 24px; }
  .section-h2 { font-size: 28px; line-height: 34px; }
  .download-hero { padding: 64px 0; }
  .download-hero h1 { font-size: 36px; line-height: 40px; }
}
