/* ============================================================
   Atlas launch page — page-scoped styles.
   Loads only on /atlas/ via {{#contentFor "head"}} in custom-atlas.hbs.
   Every rule is scoped under .atl-page so this file can never bleed
   into the rest of love-church.com.

   Aesthetic v2 (2026-07-29, Grant's call): the page now lives in the
   ATLAS APP's own chrome — dark green-tinted ink, bright gold, cream
   serif — with real screenshots of the live app doing the talking.
   Every token below was sampled from production screenshots of
   atlas.love-church.com (side panel, era rail, journey chips), not
   invented. The click-through is visually seamless: the page IS the
   app's dressing room.

   Scope note: everything here is scoped under .atl-page (the article)
   EXCEPT two deliberate page-level blocks keyed off the body class —
   the body/color-scheme block and the scrolled-nav re-skin below —
   because the nav and the document canvas sit outside the article.
   The transparent top-of-page nav and the stock copper-bright tool
   gild need no override on this dark page (their home context).
   ============================================================ */

/* Ghost puts `page-atlas` on <body>. Paint the canvas itself dark and
   tell the UA so: otherwise overscroll rubber-banding flashes the
   site's bone-white body behind the page, and Windows draws a light
   scrollbar against the ink. */
body.page-atlas,
body[data-page-atlas] {
  background: #0F1614;
  color-scheme: dark;
}

/* ============================================================
   Tokens — scoped, NOT bound to :root. Sampled from the live app.
   ============================================================ */
.atl-page {
  --atl-ink: #0F1614;         /* app era-rail / deepest chrome — page bg */
  --atl-panel: #151D1B;       /* app side-panel body — alt sections, cards */
  --atl-panel-2: #1F231C;     /* app chip pills — device bar, list heads */
  --atl-cream: #F5EDD6;       /* app heading serif cream */
  --atl-cream-soft: rgba(245, 237, 214, .80);   /* body text */
  --atl-cream-faint: rgba(245, 237, 214, .58);  /* captions, hints */
  --atl-gold: #F5D98B;        /* app bright gold — accents, active text */
  --atl-gold-dim: #AE9A5F;    /* secondary gold */
  --atl-gold-plate: #4F4624;  /* app active-chip fill (gold text on it) */
  --atl-rule: rgba(245, 237, 214, .14);
  --atl-rule-soft: rgba(245, 237, 214, .09);

  --atl-display: "Cormorant Garamond", "Iowan Old Style", Georgia, serif;
  --atl-body: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;

  --atl-ease: cubic-bezier(.22, 1, .36, 1);

  background: var(--atl-ink);
  color: var(--atl-cream);
  font-family: var(--atl-body);
  font-size: 17px;
  line-height: 1.6;
  /* Guardrail against any intrinsically-wide child pushing the page
     past the viewport on narrow windows (the min-width:0 rule below
     is the structural fix). */
  overflow-x: hidden;
}

/* Grid children default to min-width:auto and refuse to shrink below
   intrinsic content size; explicit 0 lets each cell take its track width. */
.atl-feature-2col > *,
.atl-feature-2col--reverse > * {
  min-width: 0;
}

/* ============================================================
   Keep the scrolled nav DARK on this page.
   screen.css's .nav.scrolled goes cream (rgba(253,252,249,.92)) —
   correct over the site's light content, but on this all-dark page a
   light bar slices the design (Grant, 2026-07-29). Re-skin the
   scrolled state to the page's ink; the transparent top-of-page state
   is already right. LITERALS, not var(--atl-*): the tokens live on
   .atl-page (the <article>), a sibling of .nav, so the variables are
   out of scope here. The tool-tab gild needs no override — its
   #nav-scoped copper-bright beats these class rules and reads well on
   dark. Ghost emits `page-atlas` via {{body_class}}; the preview sets
   data-page-atlas directly.
   ============================================================ */
.page-atlas .nav.scrolled,
body[data-page-atlas] .nav.scrolled {
  background: rgba(15, 22, 20, .92);
  backdrop-filter: blur(14px) saturate(1.2);
  border-bottom: 1px solid rgba(245, 237, 214, .14);
}
.page-atlas .nav.scrolled .brand,
.page-atlas .nav.scrolled .nav-links > li > a,
.page-atlas .nav.scrolled .nav-dropdown-toggle,
.page-atlas .nav.scrolled .nav-search,
.page-atlas .nav.scrolled .nav-burger,
body[data-page-atlas] .nav.scrolled .brand,
body[data-page-atlas] .nav.scrolled .nav-links > li > a,
body[data-page-atlas] .nav.scrolled .nav-dropdown-toggle,
body[data-page-atlas] .nav.scrolled .nav-search,
body[data-page-atlas] .nav.scrolled .nav-burger {
  color: #F5EDD6;
}

/* ============================================================
   Section 1 — Hero
   ============================================================ */
.atl-hero {
  padding: 168px 24px 76px;
  text-align: center;
  position: relative;
  isolation: isolate;
  background:
    radial-gradient(ellipse at top, rgba(245, 217, 139, .07) 0%, transparent 60%),
    var(--atl-ink);
}

.atl-hero-inner {
  max-width: 880px;
  margin: 0 auto;
}

.atl-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--atl-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--atl-gold);
  margin-bottom: 32px;
}

.atl-ornament {
  font-family: var(--atl-display);
  color: var(--atl-gold-dim);
  font-size: 18px;
  line-height: 1;
}

.atl-hero-title {
  font-family: var(--atl-display);
  font-weight: 500;
  font-size: clamp(46px, 7.4vw, 100px);
  line-height: 1.02;
  letter-spacing: -.012em;
  color: var(--atl-cream);
  margin: 0 0 36px;
}
.atl-hero-title em {
  font-style: italic;
  font-weight: 500;
  color: var(--atl-gold);
}

.atl-lede {
  font-family: var(--atl-display);
  font-weight: 500;
  font-size: clamp(19px, 2vw, 23px);
  line-height: 1.5;
  color: var(--atl-cream-soft);
  margin: 0 auto 40px;
  max-width: 680px;
}

.atl-cta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-bottom: 18px;
}

.atl-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 16px 26px;
  font-family: var(--atl-body);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -.005em;
  text-decoration: none;
  border-radius: 2px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background .22s var(--atl-ease), color .22s var(--atl-ease),
              border-color .22s var(--atl-ease), transform .22s var(--atl-ease);
  min-height: 52px;
}

/* Primary = the app's gold, ink text (its active-chip contrast, ~12:1). */
.atl-btn-primary {
  background: var(--atl-gold);
  color: var(--atl-ink);
  border-color: var(--atl-gold);
}
.atl-btn-primary:hover {
  background: #FBE6A9;
  border-color: #FBE6A9;
}

.atl-btn-ghost {
  background: transparent;
  color: var(--atl-cream);
  border-color: rgba(245, 237, 214, .45);
}
.atl-btn-ghost:hover {
  background: var(--atl-cream);
  color: var(--atl-ink);
  border-color: var(--atl-cream);
}

.atl-arrow {
  display: inline-block;
  transition: transform .25s var(--atl-ease);
  font-family: var(--atl-body);
}
.atl-btn:hover .atl-arrow {
  transform: translateX(4px);
}

/* Branded gold focus ring; :focus-visible keeps it off mouse clicks. */
.atl-btn:focus-visible,
.atl-btn-final:focus-visible,
.atl-embed-activate:focus-visible,
.atl-follow-link:focus-visible {
  outline: 2px solid var(--atl-gold);
  outline-offset: 3px;
}

.atl-hero-hint {
  font-family: var(--atl-display);
  font-style: italic;
  font-size: 15px;
  color: var(--atl-cream-faint);
  margin: 0 auto 64px;
  max-width: 520px;
}

/* Hero visual — a real screenshot of the live app, framed plain
   (rounded + hairline + deep shadow; the app supplies its own chrome). */
.atl-hero-demo {
  max-width: 1060px;
  margin: 0 auto;
}
.atl-shot {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 12px;
  border: 1px solid var(--atl-rule);
  box-shadow: 0 2px 6px rgba(0, 0, 0, .35), 0 30px 80px rgba(0, 0, 0, .5);
}
.atl-figcap {
  font-family: var(--atl-display);
  font-style: italic;
  font-size: 16px;
  color: var(--atl-cream-faint);
  margin-top: 18px;
  text-align: center;
}

/* ============================================================
   Section 2 — Three-pillar value
   ============================================================ */
.atl-pillars {
  padding: 84px 24px;
  background: var(--atl-panel);
  border-top: 1px solid var(--atl-rule-soft);
  border-bottom: 1px solid var(--atl-rule-soft);
}
.atl-pillars-inner {
  max-width: 1080px;
  margin: 0 auto;
}
.atl-section-title {
  font-family: var(--atl-display);
  font-weight: 500;
  font-size: clamp(34px, 4.6vw, 56px);
  line-height: 1.08;
  letter-spacing: -.008em;
  text-align: center;
  color: var(--atl-cream);
  margin: 0 0 64px;
}
.atl-section-title em { font-style: italic; color: var(--atl-gold); }

.atl-pillar-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 56px;
}
.atl-pillar {
  text-align: left;
}
.atl-pillar-num {
  font-family: var(--atl-display);
  font-style: italic;
  font-size: 28px;
  color: var(--atl-gold);
  margin-bottom: 16px;
  letter-spacing: .05em;
}
.atl-pillar h3 {
  font-family: var(--atl-display);
  font-weight: 600;
  font-size: 26px;
  line-height: 1.22;
  letter-spacing: -.002em;
  margin: 0 0 12px;
  color: var(--atl-cream);
}
.atl-pillar p {
  font-family: var(--atl-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--atl-cream-soft);
  margin: 0;
}

/* ============================================================
   Feature deep-dives — shared scaffolding.
   ============================================================ */
.atl-feature {
  padding: 90px 24px;
  background: var(--atl-ink);
}
.atl-feature--warm {
  background: var(--atl-panel);
  border-top: 1px solid var(--atl-rule-soft);
  border-bottom: 1px solid var(--atl-rule-soft);
}
.atl-feature-inner {
  max-width: 1200px;
  margin: 0 auto;
}

.atl-feat-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--atl-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--atl-gold);
  margin: 0 0 16px;
}
.atl-feat-title {
  font-family: var(--atl-display);
  font-weight: 500;
  font-size: clamp(36px, 4.8vw, 60px);
  line-height: 1.06;
  letter-spacing: -.008em;
  color: var(--atl-cream);
  margin: 0 0 24px;
}
.atl-feat-title em { font-style: italic; color: var(--atl-gold); }
.atl-feat-body {
  font-family: var(--atl-body);
  font-size: 17px;
  line-height: 1.65;
  color: var(--atl-cream-soft);
  margin: 0;
  max-width: 480px;
}

.atl-feature-2col {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: 80px;
  align-items: center;
}
.atl-feature-2col--reverse {
  grid-template-columns: 7fr 5fr;
}

/* Figures are layout containers on this page — kill the UA
   figure margin (1em 40px) in BASE scope, every breakpoint. Patching
   it per-section kept missing spots (#journeys/#eras sat 80px narrow
   at desktop; the Lexeme page shipped the same bug at ≥901px). */
.atl-feat-demo,
.atl-hero-demo {
  margin: 0 auto;
}
.atl-feature-2col .atl-feat-demo,
.atl-feature-2col--reverse .atl-feat-demo {
  margin: 0;
}

/* Tertiary in-copy link (e.g. "Follow the Exodus") */
.atl-follow-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 22px;
  font-family: var(--atl-display);
  font-style: italic;
  font-size: 17px;
  color: var(--atl-cream-soft);
  text-decoration: none;
  border-bottom: 1px solid rgba(245, 237, 214, .30);
  padding-bottom: 2px;
  transition: color .22s var(--atl-ease), border-color .22s var(--atl-ease);
}
.atl-follow-link:hover {
  color: var(--atl-gold);
  border-bottom-color: var(--atl-gold);
}
.atl-follow-link:hover .atl-arrow {
  transform: translateX(3px);
}

/* ============================================================
   Section 3 — LIVE embed, click-to-load.
   The Atlas is a WebGL world: auto-loading it would pull megabytes
   of terrain for every visitor, and a live 3D map inside the scroll
   would trap touch-drags (the map pans instead of the page
   scrolling). So the frame shows a real screenshot until the visitor
   explicitly asks for the live app; atlas.js swaps in the iframe.
   Requires atlas.love-church.com to allow framing from love-church.com
   (CSP frame-ancestors — shipped in the atlas app's vercel.json).
   ============================================================ */
.atl-feature#explore .atl-feature-inner {
  max-width: 1500px;
}
.atl-feature#explore .atl-feature-2col {
  grid-template-columns: 340px 1fr;
  gap: 56px;
  align-items: center;
}
.atl-feature#explore .atl-feat-demo {
  margin: 0;              /* UA <figure> margin: the column IS the frame */
  width: 100%;
  max-width: none;
}

.atl-device {
  background: var(--atl-panel);
  border: 1px solid var(--atl-rule);
  border-radius: 12px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .35), 0 30px 80px rgba(0, 0, 0, .5);
  overflow: hidden;
}
.atl-device-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 18px;
  border-bottom: 1px solid var(--atl-rule-soft);
  background: var(--atl-panel-2);
}
.atl-device-mark {
  font-family: var(--atl-display);
  font-weight: 600;
  font-size: 15px;
  color: var(--atl-cream);
  letter-spacing: -.005em;
}
.atl-device-mark span {
  color: var(--atl-gold);
}
.atl-device-live {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--atl-body);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--atl-gold);
}
.atl-device-live-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--atl-gold);
  animation: atl-live-pulse 2.6s var(--atl-ease) infinite;
}
@keyframes atl-live-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(245, 217, 139, .45); }
  70%  { box-shadow: 0 0 0 7px rgba(245, 217, 139, 0); }
  100% { box-shadow: 0 0 0 0 rgba(245, 217, 139, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .atl-device-live-dot { animation: none; }
}

.atl-device-screen--embed {
  padding: 0;
  background: var(--atl-ink);
  line-height: 0;
}
.atl-embed {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  background: var(--atl-ink);
}
.atl-embed iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  background: var(--atl-ink);
}
/* The whole poster is one big activation button. */
.atl-embed-activate {
  display: block;
  position: relative;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  border: 0;
  background: none;
  cursor: pointer;
  font: inherit;
}
.atl-embed-poster {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.atl-embed-cta {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 24px;
  min-height: 48px;
  border-radius: 999px;
  background: rgba(15, 22, 20, .88);
  border: 1px solid var(--atl-gold-dim);
  color: var(--atl-gold);
  font-family: var(--atl-body);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1.2;
  white-space: nowrap;
  box-shadow: 0 10px 30px rgba(0, 0, 0, .5);
  transition: background .22s var(--atl-ease), color .22s var(--atl-ease);
}
.atl-embed-cta svg { flex-shrink: 0; }
.atl-embed-activate:hover .atl-embed-cta {
  background: var(--atl-gold);
  color: var(--atl-ink);
  border-color: var(--atl-gold);
}
/* Always-visible path to the live app below the embed — guaranteed
   route through even if the iframe ever shows a browser block page.
   Padded to a >=44px tap target (it is the section's phone fallback). */
.atl-embed-open {
  display: block;
  text-align: center;
  margin-top: 4px;
  padding: 12px 0;
  font-family: var(--atl-body);
  font-size: 14px;
  line-height: 1.5;
  color: var(--atl-gold);
  text-decoration: none;
}
.atl-embed-open:hover,
.atl-embed-open:focus-visible {
  color: var(--atl-cream);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ============================================================
   Section 4 — "From the map": three real close-up shots.
   ============================================================ */
.atl-gallery {
  text-align: center;
}
.atl-gallery-intro {
  max-width: 680px;
  margin: 0 auto 56px;
}
.atl-gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  max-width: 1200px;
  margin: 0 auto;
  text-align: left;
}
.atl-gallery-grid figure {
  margin: 0;   /* UA figure margin reset — grid tracks are the layout */
}
.atl-gallery-grid .atl-figcap {
  text-align: left;
  font-size: 15px;
  margin-top: 12px;
}
@media (max-width: 900px) {
  .atl-gallery-grid { grid-template-columns: 1fr; max-width: 640px; gap: 40px; }
}

/* ============================================================
   Section 5 — "Also in the Atlas" card grid
   ============================================================ */
.atl-more {
  text-align: center;
}
.atl-more-intro {
  max-width: 680px;
  margin: 0 auto 56px;
}
.atl-more-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  max-width: 1080px;
  margin: 0 auto;
  text-align: left;
}
.atl-more-card {
  background: var(--atl-panel-2);
  border: 1px solid var(--atl-rule-soft);
  border-radius: 12px;
  padding: 32px 28px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .25), 0 16px 40px rgba(0, 0, 0, .3);
}
.atl-more-icon {
  width: 48px;
  height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: rgba(245, 217, 139, .10);
  color: var(--atl-gold);
  margin-bottom: 20px;
}
.atl-more-icon svg { width: 24px; height: 24px; display: block; }
.atl-more-card h3 {
  font-family: var(--atl-display);
  font-weight: 600;
  font-size: 23px;
  letter-spacing: -.002em;
  color: var(--atl-cream);
  margin: 0 0 10px;
}
.atl-more-card p {
  font-family: var(--atl-body);
  font-size: 15px;
  line-height: 1.6;
  color: var(--atl-cream-soft);
  margin: 0;
}
/* 1024 (not the unified 900) is deliberate: at 901-1024 four tracks give
   ~200px columns with 7-line paragraphs; measured, not re-flagged — see
   fix-verification-2026-07-29 M-2. */
@media (max-width: 1024px) {
  .atl-more-grid { grid-template-columns: repeat(2, 1fr); max-width: 760px; gap: 24px; }
}
@media (max-width: 768px) {
  .atl-more-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .atl-more-card { padding: 22px 18px; }
  .atl-more-card h3 { font-size: 19px; }
  .atl-more-icon { width: 42px; height: 42px; margin-bottom: 14px; }
}
@media (max-width: 640px) {
  .atl-more-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Section 6 — Journeys list mock (matches the app's journey picker)
   ============================================================ */
.atl-journeys-card {
  background: var(--atl-panel);
  border: 1px solid var(--atl-rule);
  border-radius: 12px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .35), 0 22px 60px rgba(0, 0, 0, .4);
  overflow: hidden;
  text-align: left;
}
.atl-journeys-head {
  padding: 16px 22px;
  background: var(--atl-panel-2);
  border-bottom: 1px solid var(--atl-rule-soft);
  font-family: var(--atl-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--atl-gold);
}
.atl-journey-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 15px 22px;
  border-left: 3px solid transparent;
}
.atl-journey-row + .atl-journey-row {
  border-top: 1px solid var(--atl-rule-soft);
}
/* Active row = the app's gold-plate chip fill. */
.atl-journey-row--active {
  border-left-color: var(--atl-gold);
  background: var(--atl-gold-plate);
}
.atl-journey-name {
  font-family: var(--atl-display);
  font-weight: 600;
  font-size: 21px;
  color: var(--atl-cream);
  white-space: nowrap;
}
.atl-journey-row--active .atl-journey-name {
  color: var(--atl-gold);
}
.atl-journey-route {
  font-family: var(--atl-body);
  font-size: 12.5px;
  letter-spacing: .02em;
  color: var(--atl-cream-soft);
  text-align: right;
}

/* ============================================================
   Section 7 — Era rail mock (matches the app's TIME rail)
   ============================================================ */
.atl-era-card {
  background: var(--atl-panel);
  border: 1px solid var(--atl-rule);
  border-radius: 12px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .35), 0 22px 60px rgba(0, 0, 0, .4);
  padding: 26px 26px 24px;
  text-align: left;
}
.atl-era-head {
  font-family: var(--atl-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--atl-gold);
  margin-bottom: 16px;
}
.atl-era-rail {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 20px;
}
.atl-era-chip {
  font-family: var(--atl-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .05em;
  padding: 7px 14px;
  border-radius: 999px;
  color: var(--atl-cream-soft);
  border: 1px solid var(--atl-rule);
  background: var(--atl-ink);
  white-space: nowrap;
}
.atl-era-chip--active {
  color: var(--atl-gold);
  background: var(--atl-gold-plate);
  border-color: var(--atl-gold-dim);
}
.atl-era-note {
  font-family: var(--atl-display);
  font-style: italic;
  font-size: 17px;
  line-height: 1.5;
  color: var(--atl-cream-soft);
  border-top: 1px solid var(--atl-rule-soft);
  padding-top: 16px;
  margin: 0;
}
.atl-era-note strong {
  font-style: normal;
  font-weight: 600;
  color: var(--atl-cream);
}

/* ============================================================
   Section 8 — Sister-tool strip (Lexeme)
   ============================================================ */
.atl-sister {
  padding: 84px 24px;
  background: var(--atl-ink);
  text-align: center;
}
.atl-sister-inner {
  max-width: 640px;
  margin: 0 auto;
}
.atl-sister .atl-feat-body {
  max-width: none;
  margin: 0 auto 32px;
}

/* ============================================================
   Section 9 — Final CTA
   ============================================================ */
.atl-final-cta {
  padding: 96px 24px;
  background:
    radial-gradient(ellipse at bottom, rgba(245, 217, 139, .08) 0%, transparent 55%),
    var(--atl-ink);
  border-top: 1px solid var(--atl-rule-soft);
  color: var(--atl-cream);
  text-align: center;
}
.atl-final-cta-inner {
  max-width: 640px;
  margin: 0 auto;
}
.atl-final-title {
  font-family: var(--atl-display);
  font-weight: 500;
  font-size: clamp(50px, 6.6vw, 88px);
  line-height: 1.04;
  letter-spacing: -.012em;
  margin: 0 0 16px;
  color: var(--atl-cream);
}
.atl-final-title em { font-style: italic; color: var(--atl-gold); }
.atl-final-sub {
  font-family: var(--atl-display);
  font-style: italic;
  font-size: 21px;
  color: var(--atl-cream-faint);
  margin: 0 0 40px;
}
.atl-btn-final {
  background: var(--atl-gold);
  color: var(--atl-ink);
  border-color: var(--atl-gold);
  padding: 18px 30px;
  font-size: 17px;
}
.atl-btn-final:hover {
  background: #FBE6A9;
  border-color: #FBE6A9;
}

/* ============================================================
   Reveal animation — overrides the global .reveal on .atl-page only,
   with the reduced-motion guard the global rule lacks.
   ============================================================ */
.atl-page .reveal {
  transition: opacity 1.1s var(--atl-ease), transform 1.1s var(--atl-ease);
}
@media (prefers-reduced-motion: reduce) {
  .atl-page .reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* In-page anchor offset (matches sticky nav height). */
.atl-page section[id] {
  scroll-margin-top: 96px;
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 900px) {
  .atl-feature { padding: 80px 20px; }
  .atl-feature-2col,
  .atl-feature-2col--reverse,
  .atl-feature#explore .atl-feature-2col {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  /* Demo-first on mobile so the visual hook lands before the copy… */
  .atl-feature-2col .atl-feat-copy { order: 2; }
  .atl-feature-2col .atl-feat-demo { order: 1; }
  .atl-feature-2col--reverse .atl-feat-copy { order: 2; }
  .atl-feature-2col--reverse .atl-feat-demo { order: 1; }
  /* …except the live embed: lead with the heading, the frame is tall. */
  .atl-feature#explore .atl-feat-copy { order: 1; }
  .atl-feature#explore .atl-feat-demo { order: 2; }
  /* Reset the UA <figure> margin (1em 40px) — at width:100% the inline
     margin pushes the frame's right edge past the column and the
     overflow-hidden ancestor clips it. */
  .atl-feat-demo { margin: 0; }
  .atl-feat-body { max-width: none; }
  .atl-follow-link { padding-top: 16px; }
}

@media (max-width: 768px) {
  .atl-hero { padding: 128px 20px 64px; }
  .atl-cta-row { flex-direction: column; align-items: stretch; }
  .atl-cta-row .atl-btn { width: 100%; }

  .atl-pillars { padding: 72px 20px; }
  .atl-pillar-grid { grid-template-columns: 1fr; gap: 40px; }

  .atl-sister { padding: 72px 20px; }
  .atl-final-cta { padding: 88px 20px; }

  .atl-journey-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
  }
  .atl-journey-route { text-align: left; }
}

@media (max-width: 640px) {
  /* 4:3 on phones: shows most of the poster (4:5 cropped it to 42% of
     its width) while the frame stays tall enough to use once loaded. */
  .atl-embed { aspect-ratio: 4 / 3; }
  .atl-embed-cta {
    font-size: 13px;
    padding: 12px 18px;
  }
}

/* ============================================================
   Print — this is the theme's first DARK page, and screen.css's
   print block was written for the light ones. Its
   body{color:#000 !important} cannot reach this article: !important
   does not travel through inheritance, and every element in here
   carries its own explicit cream/gold colour. Browsers drop
   background colours on paper by default, so the ink canvas
   disappears and the cream text lands on white at 1.17:1 (measured:
   96 of 100 text-bearing elements below 4.5:1 before this block).
   Force ink-on-paper and drop the backgrounds, which also keeps the
   page readable for a reader who ticks "Background graphics".

   Scoped to .atl-page and nothing wider: this file loads only on
   /atlas/ (contentFor "head" in custom-atlas.hbs) and no other
   template carries that class, so no other printout can change.
   The site-wide .reveal print restore in screen.css still does the
   un-hiding; this only recolours what it reveals.
   ============================================================ */
@media print {
  .atl-page,
  .atl-page * {
    color: #000 !important;
    background: transparent !important;
  }
  /* On-screen affordances that read as broken chrome on paper: the
     "Load the live Atlas" chip over the poster, and the device bar's
     animated Live pill. */
  .atl-page .atl-embed-cta,
  .atl-page .atl-device-live {
    display: none !important;
  }
}
