/* ==========================================================================
   Eigenlume LLC — official site
   Design tokens, light/dark theming, layout & components.
   Light is the default theme; dark is applied via [data-theme="dark"] on <html>
   (resolved from saved preference or the OS setting by an inline head script).
   ========================================================================== */

/* ---- Self-hosted Geist (variable, latin subset) ----------------------- */
@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url("/assets/fonts/geist-latin.woff2") format("woff2");
}

/* ---- Design tokens : LIGHT (default) ---------------------------------- */
:root {
  color-scheme: light;

  --bg: #f7f5ef;
  --bg-alt: #f2efe6;
  --surface: #ffffff;
  --surface-2: #faf8f2;

  --panel: #16150f;
  --panel-ink: #f7f5ef;
  --panel-ink-soft: rgba(247, 245, 239, 0.6);

  --ink: #1c1b17;          /* primary text / UI            */
  --ink-display: #16150f;  /* large headings               */
  --ink-2: #5d574c;        /* secondary text               */
  --ink-lead: #4a4539;     /* lead paragraphs              */
  --ink-3: #615b50;        /* tertiary text                */
  --ink-faint: #73695a;    /* faint meta — AA on all light bgs (footer links etc.) */
  --ink-label: #6f6859;    /* labels / captions — AA on all light bgs */

  /* Accent gold used for text/numerals — darkened from the brand #d6962f
     so small labels & numerals clear WCAG AA (4.5:1) on the light backgrounds. */
  --accent-text: #946012;
  --accent-num: #8a5a10;

  --bd1: rgba(28, 27, 23, 0.07);
  --bd2: rgba(28, 27, 23, 0.10);
  --bd3: rgba(28, 27, 23, 0.18);
  --bd-strong: rgba(28, 27, 23, 0.40);
  --tint: rgba(28, 27, 23, 0.03);

  --radio-bd: #c7c1b4;
  --nav-bg: rgba(247, 245, 239, 0.78);

  --btn-solid-bg: #1c1b17;
  --btn-solid-ink: #f7f5ef;
  --btn-solid-hover: #000000;
  --btn-soft-bg: #f1e4cc;        /* soft-gold nav button — opaque so text contrast is guaranteed AA */

  /* Brand gold — identical across themes */
  --gold: #d6962f;
  --gold-soft: rgba(214, 150, 53, 0.06);    /* badge — both themes */
  --gold-tint-10: rgba(214, 150, 53, 0.10); /* tag-free, tag-live, feature-card icon */
  --gold-tint-07: rgba(214, 150, 53, 0.07); /* signature mark */
  --gold-line: rgba(198, 137, 47, 0.28);
  --gold-grad: linear-gradient(180deg, #f2cd8c, #e0a64f);
  --gold-grad-ink: #3a2606;

  --maxw: 1180px;
  --radius-card: 16px;
  --radius-lg: 18px;
  --ease-out: cubic-bezier(0.2, 0.6, 0.2, 1);
  --focus: #8a5d12;
}

/* ---- Design tokens : DARK --------------------------------------------- */
:root[data-theme="dark"] {
  color-scheme: dark;

  --bg: #100e09;
  --bg-alt: #15120b;
  --surface: #1c1810;
  --surface-2: #241f14;

  --panel: #2a2113;
  --panel-ink: #f6f1e6;
  --panel-ink-soft: rgba(246, 241, 230, 0.62);

  --ink: #f3efe4;
  --ink-display: #f3efe4;
  --ink-2: #c7bfac;
  --ink-lead: #c7bfac;
  --ink-3: #b6ad99;
  --ink-faint: #9a9080;
  --ink-label: #8c8372;

  --accent-text: #e7ba79;
  --accent-num: #e7ba79;

  --bd1: rgba(242, 234, 214, 0.10);
  --bd2: rgba(242, 234, 214, 0.15);
  --bd3: rgba(242, 234, 214, 0.22);
  --bd-strong: rgba(242, 234, 214, 0.40);
  --tint: rgba(242, 234, 214, 0.04);

  --radio-bd: #6b6354;
  --nav-bg: rgba(15, 13, 9, 0.74);

  --btn-solid-bg: #f3efe4;
  --btn-solid-ink: #16140d;
  --btn-solid-hover: #fffaf0;
  --btn-soft-bg: #2b2416;

  --focus: #e7ba79;
}

/* ---- Reset & base ----------------------------------------------------- */
*,
*::before,
*::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  scroll-snap-type: y mandatory;
}

html,
body { height: auto; min-height: 100%; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body::-webkit-scrollbar { width: 0; height: 0; }

::selection {
  background: rgba(214, 150, 53, 0.24);
  color: var(--ink-display);
}
/* Selected text stays dark-on-gold in dark mode (matches the finalized design) */
:root[data-theme="dark"] ::selection { color: #16140d; }

a { color: inherit; text-decoration: none; }

h1, h2, h3, p { margin: 0; }

img, canvas, svg { display: block; }

button {
  font: inherit;
  color: inherit;
  border: 0;
  background: none;
  cursor: pointer;
}

/* Visible keyboard focus everywhere */
:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 3px;
  border-radius: 4px;
}
/* Skip-link target: the user intentionally jumped here, so no ring on the wrapper */
#main:focus { outline: none; }

/* Skip link */
.skip-link {
  position: absolute;
  left: 14px;
  top: -120px;
  z-index: 100;
  padding: 11px 18px;
  border-radius: 10px;
  background: var(--btn-solid-bg);
  color: var(--btn-solid-ink);
  font-size: 14px;
  font-weight: 600;
  transition: top 0.2s var(--ease-out);
}
.skip-link:focus { top: 14px; }

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip: rect(0 0 0 0); clip-path: inset(50%);
  overflow: hidden; white-space: nowrap;
}

/* ---- Section scaffold ------------------------------------------------- */
[data-screen] {
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  scroll-snap-align: start;
  overflow: hidden;
}

.screen__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}

.screen__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--maxw);
  margin: 0 auto;
  box-sizing: border-box;
}

@keyframes lumeBreathe {
  0%, 100% { opacity: 0.55; transform: translateX(-50%) scale(1); }
  50%      { opacity: 0.85; transform: translateX(-50%) scale(1.04); }
}
/* Logo: orb glow breathes + a faint ring pings outward (see .nav__brand) */
@keyframes lumePulse {
  0%, 100% { box-shadow: 0 0 8px 1px rgba(214, 150, 53, 0.45); }
  50%      { box-shadow: 0 0 13px 2px rgba(214, 150, 53, 0.80); }
}
@keyframes lumePing {
  0%        { transform: scale(1);   opacity: 0.5; }
  70%, 100% { transform: scale(2.1); opacity: 0; }
}

/* ==========================================================================
   NAV
   ========================================================================== */
.nav {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: clamp(12px, 2.2vw, 16px) clamp(18px, 5vw, 44px);
  background: var(--nav-bg);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--bd1);
}

.nav__brand {
  display: flex;
  align-items: center;
  gap: 11px;
}

.brand-mark {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.brand-mark--lg { width: 20px; height: 20px; }
.brand-mark--sm { width: 18px; height: 18px; }

.brand-mark__ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1px solid rgba(198, 137, 47, 0.5);
}
.brand-mark__dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 9px 1px rgba(214, 150, 53, 0.55);
}
.brand-mark--sm .brand-mark__dot { width: 6px; height: 6px; }

/* Animated nav logo: the orb breathes and emits a slow sonar ping */
.nav__brand .brand-mark__dot { animation: lumePulse 4.5s ease-in-out infinite; }
.nav__brand .brand-mark::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1px solid rgba(214, 150, 53, 0.6);
  opacity: 0;
  pointer-events: none;
  animation: lumePing 4.5s ease-out infinite;
}

.brand-name {
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.3px;
  color: var(--ink);
}

.nav__right {
  display: flex;
  align-items: center;
  gap: clamp(14px, 2.4vw, 30px);
}

.nav__links {
  display: flex;
  align-items: center;
  gap: clamp(14px, 2.4vw, 30px);
  font-size: 14px;
  color: var(--ink-3);
}
.nav__link {
  display: inline-flex;
  align-items: center;
  min-height: 24px; /* WCAG 2.5.8 target size */
  transition: color 0.25s;
}
.nav__link:hover { color: var(--ink); }

/* Theme toggle */
.theme-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 1px solid var(--bd2);
  color: var(--ink-2);
  transition: color 0.25s, border-color 0.25s, background 0.25s;
}
/* Extend the tap target to 44px without enlarging the visible 36px ring */
.theme-toggle::before { content: ""; position: absolute; inset: -4px; }
.theme-toggle:hover {
  color: var(--ink);
  border-color: var(--bd3);
  background: var(--tint);
}
.theme-toggle svg { width: 18px; height: 18px; }
.theme-toggle .icon-sun { display: none; }
.theme-toggle .icon-moon { display: block; }
:root[data-theme="dark"] .theme-toggle .icon-sun { display: block; }
:root[data-theme="dark"] .theme-toggle .icon-moon { display: none; }

/* ==========================================================================
   BUTTONS
   ========================================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.1px;
  white-space: nowrap;
  transition: transform 0.3s var(--ease-out), box-shadow 0.3s var(--ease-out),
              background 0.25s, border-color 0.25s, color 0.25s;
}
.btn--sm { font-size: 13.5px; padding: 8px 16px; gap: 7px; }
.btn--lg { padding: 15px 32px; gap: 9px; }
.btn:not(.btn--sm):not(.btn--lg) { padding: 14px 26px; }

.btn--solid {
  background: var(--btn-solid-bg);
  color: var(--btn-solid-ink);
}
.btn--solid:hover {
  background: var(--btn-solid-hover);
  transform: translateY(-1px);
}
.btn--solid .ext { font-size: 11px; opacity: 0.7; }

.btn--gold {
  background: var(--gold-grad);
  color: var(--gold-grad-ink);
  font-weight: 600;
  box-shadow: 0 6px 20px rgba(214, 150, 53, 0.28);
}
.btn--gold:hover {
  box-shadow: 0 10px 28px rgba(214, 150, 53, 0.42);
  transform: translateY(-2px);
}
.btn--gold.btn--lg {
  box-shadow: 0 8px 26px rgba(214, 150, 53, 0.32);
}
.btn--gold.btn--lg:hover {
  box-shadow: 0 12px 34px rgba(214, 150, 53, 0.5);
}
.btn--gold .ext { font-size: 12px; }

.btn--outline {
  border: 1px solid var(--bd3);
  color: var(--ink);
}
.btn--outline:hover {
  border-color: var(--bd-strong);
  background: var(--tint);
  transform: translateY(-1px);
}

/* Soft gold: gold-tinted fill + gold text + hairline gold border (both themes) */
.btn--soft {
  background: var(--btn-soft-bg);
  color: var(--accent-num);
  border: 1px solid var(--gold-line);
}
.btn--soft:hover {
  border-color: var(--gold);
  box-shadow: 0 4px 14px rgba(214, 150, 53, 0.22);
  transform: translateY(-1px);
}
.btn--soft .ext { font-size: 11px; opacity: 0.85; }

/* ==========================================================================
   Shared bits
   ========================================================================== */
.eyebrow {
  display: inline-block;
  font-size: 12.5px;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--accent-text);
}

.glow {
  position: absolute;
  top: -120px;
  left: 50%;
  width: min(900px, 90vw);
  height: 620px;
  pointer-events: none;
  background: radial-gradient(60% 60% at 50% 35%,
              rgba(214, 150, 53, 0.16), rgba(214, 150, 53, 0.05) 45%, transparent 70%);
  filter: blur(16px);
  transform: translateX(-50%);
  animation: lumeBreathe 9s ease-in-out infinite;
}

/* ==========================================================================
   HERO
   ========================================================================== */
.hero {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(92px, 12vw, 124px) clamp(22px, 5vw, 44px) clamp(36px, 5vw, 60px);
}
.hero .screen__bg { opacity: 0.72; }

.hero__grid {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr);
  gap: clamp(40px, 6vw, 80px);
  align-items: center;
  max-width: var(--maxw);
  margin: 0 auto;
}
.hero__content { max-width: 600px; }

.badge {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 26px;
  padding: 6px 13px;
  font-size: 12.5px;
  letter-spacing: 0.4px;
  color: var(--accent-text);
  border: 1px solid var(--gold-line);
  border-radius: 999px;
  background: var(--gold-soft);
}
.badge__dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 7px rgba(214, 150, 53, 0.6);
}

.hero__title {
  font-weight: 600;
  font-size: clamp(38px, 6.2vw, 72px);
  line-height: 1.04;
  letter-spacing: -2px;
  color: var(--ink-display);
}

.hero__lede {
  max-width: 500px;
  margin-top: 26px;
  font-size: clamp(16px, 1.45vw, 19px);
  line-height: 1.62;
  font-weight: 300;
  color: var(--ink-2);
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 13px;
  margin-top: 38px;
}

/* Product preview card */
.preview { position: relative; }
.preview__glow {
  position: absolute;
  inset: -30px;
  background: radial-gradient(50% 50% at 60% 40%, rgba(214, 150, 53, 0.14), transparent 70%);
  filter: blur(10px);
}
.preview__card {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--bd1);
  border-radius: var(--radius-lg);
  box-shadow: 0 24px 60px -24px rgba(28, 27, 23, 0.28), 0 2px 8px rgba(28, 27, 23, 0.04);
  overflow: hidden;
}
:root[data-theme="dark"] .preview__card {
  box-shadow: 0 24px 60px -24px rgba(0, 0, 0, 0.6);
}
.preview__bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--bd1);
}
.dot { width: 9px; height: 9px; border-radius: 50%; }
.dot--r { background: #e7c7c1; }
.dot--y { background: #ecd9b0; }
.dot--g { background: #cfe0c8; }
.preview__app {
  margin-left: 8px;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--ink-faint);
}
.tag-free {
  margin-left: auto;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.4px;
  color: var(--accent-text);
  background: var(--gold-tint-10);
  padding: 3px 9px;
  border-radius: 6px;
}
.preview__body { padding: 20px 20px 22px; }
.preview__prompt {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 18px;
  padding: 11px 13px;
  background: var(--surface-2);
  border: 1px solid var(--bd1);
  border-radius: 11px;
}
.preview__prompt-text { font-size: 13.5px; color: var(--ink-3); flex: 1; }
.chip-gen {
  font-size: 11px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(180deg, #e9b773, #d6962f);
  padding: 5px 11px;
  border-radius: 7px;
}
.preview__q-label {
  display: inline-block;
  margin-bottom: 7px;
  font-size: 11px;
  letter-spacing: 0.5px;
  color: var(--ink-label);
}
.preview__q {
  margin-bottom: 14px;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--ink);
}
.preview__options { display: flex; flex-direction: column; gap: 8px; }
.opt {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 11px 13px;
  border: 1px solid var(--bd2);
  border-radius: 10px;
}
.opt--on { border-color: rgba(214, 150, 53, 0.5); background: rgba(214, 150, 53, 0.07); }
.opt__radio { width: 16px; height: 16px; border-radius: 50%; border: 1.5px solid var(--radio-bd); flex: none; }
.opt--on .opt__radio { border: 5px solid var(--gold); }
.opt__text { font-size: 14px; color: var(--ink-3); }
.opt--on .opt__text { color: var(--ink); }
.preview__free {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-top: 14px;
  padding: 11px 13px;
  border: 1px dashed var(--bd3);
  border-radius: 10px;
  background: var(--surface-2);
}
.preview__free-text { font-size: 13.5px; color: var(--ink-label); flex: 1; }
.preview__send { font-size: 12px; font-weight: 600; color: var(--accent-text); }

/* "What we believe" band */
.believe {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--maxw);
  margin: clamp(26px, 4vw, 44px) auto 0;
  padding-top: clamp(18px, 2.4vw, 26px);
  border-top: 1px solid var(--bd2);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: clamp(14px, 3vw, 36px);
}
.believe__label {
  font-size: 12.5px;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: var(--ink-label);
  font-weight: 600;
  white-space: nowrap;
}
.believe__text {
  flex: 1;
  min-width: 240px;
  font-size: clamp(15px, 1.55vw, 18px);
  font-weight: 300;
  line-height: 1.55;
  color: var(--ink-lead);
  text-wrap: pretty;
}

/* ==========================================================================
   PRODUCT
   ========================================================================== */
.product { display: flex; flex-direction: column; justify-content: center; }
.product .screen__bg { opacity: 0.85; }
.product .screen__inner {
  padding: clamp(86px, 11vw, 116px) clamp(22px, 5vw, 44px) clamp(36px, 5vw, 52px);
}

.section-head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  max-width: 680px;
  margin-bottom: clamp(28px, 4vw, 48px);
}
.section-head .eyebrow { margin-bottom: 18px; }

.product__title-row {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 18px;
  flex-wrap: wrap;
}
.product__title {
  font-weight: 600;
  font-size: clamp(32px, 4.6vw, 52px);
  letter-spacing: -1.2px;
  color: var(--ink-display);
}
.tag-live {
  font-size: 13px;
  font-weight: 600;
  color: var(--accent-text);
  background: var(--gold-tint-10);
  padding: 6px 13px;
  border-radius: 999px;
}
.product__intro {
  font-size: clamp(17px, 1.7vw, 21px);
  line-height: 1.55;
  font-weight: 300;
  color: var(--ink-lead);
}

.feature-grid {
  display: grid;
  grid-template-columns: 1fr; /* mobile-first: one centered column */
  gap: 18px;
  max-width: 440px;
  margin: 0 auto;   /* center; also clears the default <ul> block margin */
  padding: 0;       /* clear the default <ul> 40px inline padding (was shifting cards right) */
  list-style: none;
}
.feature-card {
  display: flex;
  flex-direction: column;
  padding: 28px 26px;
  background: var(--surface);
  border: 1px solid var(--bd1);
  border-radius: var(--radius-card);
  box-shadow: 0 1px 3px var(--bd1);
  transition: transform 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out), border-color 0.35s var(--ease-out);
}
.feature-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 34px -18px rgba(28, 27, 23, 0.22);
  border-color: rgba(214, 150, 53, 0.35);
}
/* Card head: mobile = icon beside title (compact); desktop = icon stacked above */
.feature-card__head {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 14px;
  margin-bottom: 12px;
}
.feature-card__icon {
  flex: none;
  width: 38px;
  height: 38px;
  margin-bottom: 0;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--gold-tint-10);
  border: 1px solid rgba(214, 150, 53, 0.24);
  font-size: 17px;
}
.feature-card__title {
  font-size: 17.5px;
  font-weight: 600;
  margin-bottom: 0;
  letter-spacing: -0.2px;
  color: var(--ink);
}
.feature-card__body {
  font-size: 14.5px;
  line-height: 1.58;
  font-weight: 300;
  color: var(--ink-3);
}
/* Tablet: two centered columns */
@media (min-width: 560px) {
  .feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 760px; }
}
/* Desktop: original auto-fit grid, full width, icon stacked above the title */
@media (min-width: 900px) {
  .feature-grid {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    max-width: none;
    margin-inline: 0;
  }
  .feature-card__head { flex-direction: column; align-items: flex-start; gap: 0; margin-bottom: 9px; }
  .feature-card__icon { margin-bottom: 20px; }
}

.cta-band {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 20px;
  margin-top: 32px;
  padding: 26px clamp(24px, 3vw, 36px);
  background: var(--panel);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.cta-band__glow {
  position: absolute;
  top: -60%;
  right: -5%;
  width: 380px;
  height: 380px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(214, 150, 53, 0.22), transparent 65%);
}
.cta-band__copy { position: relative; }
.cta-band__title {
  margin-bottom: 5px;
  font-size: clamp(18px, 2vw, 24px);
  font-weight: 500;
  letter-spacing: -0.3px;
  color: var(--panel-ink);
}
.cta-band__sub {
  font-size: 14.5px;
  font-weight: 300;
  color: var(--panel-ink-soft);
}
.cta-band .btn { position: relative; }

/* ==========================================================================
   APPROACH
   ========================================================================== */
.approach {
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-top: 1px solid var(--bd1);
  background: var(--bg-alt);
}
.approach .screen__bg { opacity: 0.8; }
.approach .screen__inner {
  padding: clamp(86px, 11vw, 116px) clamp(22px, 5vw, 44px);
}
.approach__head { max-width: 640px; margin-bottom: clamp(44px, 6vw, 64px); }
.approach__head .eyebrow { margin-bottom: 18px; }
.approach__title {
  font-weight: 600;
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.12;
  letter-spacing: -1px;
  color: var(--ink-display);
}
.principles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(248px, 1fr));
  gap: clamp(24px, 4vw, 48px);
}
.principle {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--bd2);
  padding-top: 22px;
}
.principle__num {
  margin-bottom: 14px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.5px;
  color: var(--accent-num);
}
.principle__title {
  margin-bottom: 11px;
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.3px;
  color: var(--ink);
}
.principle__body {
  font-size: 15px;
  line-height: 1.62;
  font-weight: 300;
  color: var(--ink-2);
}

/* ==========================================================================
   ABOUT
   ========================================================================== */
.about {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.about .screen__bg { opacity: 0.95; }
.about .screen__inner {
  max-width: 1000px;
  padding: clamp(86px, 11vw, 120px) clamp(22px, 5vw, 44px);
}
.about__eyebrow { margin-bottom: 34px; }
.about__statement {
  font-weight: 400;
  font-size: clamp(23px, 3.1vw, 38px);
  line-height: 1.36;
  letter-spacing: -0.6px;
  color: var(--ink);
}
.about__statement span { color: var(--ink-2); }
.signature {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 40px;
}
.signature__mark {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(198, 137, 47, 0.4);
  background: var(--gold-tint-07);
}
.signature__mark .brand-mark__dot { width: 8px; height: 8px; box-shadow: 0 0 8px rgba(214, 150, 53, 0.6); }
.signature__name { display: flex; flex-direction: column; }
.signature__name b { font-size: 15px; font-weight: 500; color: var(--ink); }
.signature__name span { font-size: 13.5px; font-weight: 300; color: var(--ink-faint); }

/* ==========================================================================
   CONTACT + FOOTER
   ========================================================================== */
.contact {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--bd1);
  background: var(--bg-alt);
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.contact:active { cursor: grabbing; }
/* Keep the grab affordance on the globe background only — the content layer
   stays selectable (so the email can be copied) with normal cursors. */
.contact__inner,
.contact__inner * { cursor: auto; user-select: text; -webkit-user-select: text; }
.contact__inner .btn,
.contact__inner a { cursor: pointer; }
.contact .screen__bg { opacity: 0.95; }
.contact__inner {
  position: relative;
  z-index: 1;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  max-width: 680px;
  margin: 0 auto;
  width: 100%;
  padding: clamp(92px, 12vw, 128px) clamp(22px, 5vw, 44px) clamp(24px, 4vw, 40px);
}
.contact__eyebrow { margin-bottom: 24px; }
.contact__title {
  font-weight: 600;
  font-size: clamp(32px, 5vw, 58px);
  line-height: 1.06;
  letter-spacing: -1.4px;
  color: var(--ink-display);
}
.contact__text {
  max-width: 460px;
  margin: 24px 0 38px;
  font-size: 17px;
  line-height: 1.6;
  font-weight: 300;
  color: var(--ink-2);
}

.site-footer {
  position: relative;
  z-index: 1;
  padding: clamp(18px, 3vw, 28px) clamp(22px, 5vw, 44px);
  border-top: 1px solid var(--bd1);
}
.footer__inner {
  max-width: var(--maxw);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
}
.footer__brand { display: flex; align-items: center; gap: 10px; }
.footer__brand b { font-size: 15px; font-weight: 600; color: var(--ink); }
.footer__links {
  display: flex;
  align-items: center;
  gap: clamp(16px, 3vw, 28px);
  font-size: 13.5px;
  color: var(--ink-faint);
}
.footer__links a { display: inline-block; padding: 8px 0; transition: color 0.25s; }
.footer__links a:hover { color: var(--ink); }
.footer__copy { font-size: 13px; font-weight: 300; color: var(--ink-label); }

/* ==========================================================================
   Reveal choreography — initial hidden state set here so there is no flash;
   JS animates these in. If JS is disabled or motion is reduced, a fallback
   below makes everything visible.
   ========================================================================== */
/* Initial hidden state for the reveal choreography. will-change is applied
   transiently by the JS during each tween and cleared on completion, so it is
   intentionally not set here. */
.js [data-reveal] {
  opacity: 0;
  transform: translateY(30px);
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 860px) {
  .hero__grid { grid-template-columns: minmax(0, 1fr); gap: clamp(22px, 5vw, 40px); }
}

/* Match the original: collapse primary nav links on narrow viewports */
@media (max-width: 759px) {
  .nav__links { display: none; }
}

/* Phones & short viewports: a clean, natural continuous scroll. Sections are sized to their
   CONTENT (no forced full-screen height) so there are no empty gaps between them, content sits
   at the top (not vertically centered), and there is no scroll-snap to fight the momentum.
   Each section's animated background simply flows past as you scroll. */
@media (max-width: 900px), (max-height: 680px) {
  html { scroll-snap-type: none; }
  [data-screen] {
    min-height: 0;
    scroll-snap-align: none;
    overflow: visible;
    justify-content: flex-start;
  }
  /* The last section is terminal — you can't scroll it up to centre — so give it the full
     viewport height. Its globe scene then fills the screen at the bottom of the page, instead
     of occupying half and letting the (deconstructed) section above show through as blank. */
  #contact { min-height: 100vh; min-height: 100dvh; }
}

/* ==========================================================================
   Reduced motion / no-JS fallbacks
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .glow { animation: none; }
  .nav__brand .brand-mark__dot, .nav__brand .brand-mark::after { animation: none; }
  .js [data-reveal] { opacity: 1; transform: none; }
  .btn, .feature-card, .nav__link, .theme-toggle, .footer__links a { transition: none; }
}

/* No-JS: ensure content is visible even though .js styles never apply */
[data-reveal] { opacity: 1; }
