/* ============================================================
   grow-in 7 — GALLERY THEME LAYER
   Loaded AFTER a page's own stylesheet(s). Converts the whole site
   to the "Gallery" design: dark wall surfaces, cream type, Fraunces
   serif display, tomato/ink brand marks kept.
   Mechanism: the existing stylesheets consistently use the design
   tokens below for text/surface roles, so re-pinning the tokens flips
   most components; the exceptions (ink-as-background components, nav)
   are patched explicitly at the end.
   ============================================================ */

/* Fraunces is loaded via a <link> in each page's <head> (alongside Manrope/
   Bricolage) — NOT @import here. An @import creates a render-blocking request
   chain (HTML → this CSS → font CSS → font files); the <link> is discovered
   up front and fetched in parallel. Keep it in the head, not here. */

:root {
  /* wall + surfaces */
  --bg: #141210;
  --bg-alt: #1b1815;
  --surface: #1e1a17;
  /* type (semantic flip: "ink" is the text colour on --bg) */
  --ink: #F4EFE6;
  --ink-soft: rgba(244, 239, 230, 0.75);
  --ink-mute: rgba(244, 239, 230, 0.64); /* was 0.48 — lifted for WCAG AA 4.5:1 on --bg */
  --cream: #F4EFE6;
  /* hairlines */
  --line: rgba(244, 239, 230, 0.14);
  /* brand marks — unchanged */
  --primary: #C4351F;
  --primary-vivid: #E94B35;
  --forest: #1F4D3C;
  /* type stacks */
  --font-serif: "Fraunces", Georgia, serif;
  --font-display: "Manrope", system-ui, sans-serif; /* nav/footer brand voice stays sans */
  --font-body: "Manrope", system-ui, sans-serif;
}

body {
  background: var(--bg);
  color: var(--ink);
}
/* gallery vignette + top light */
body::before {
  content: ""; position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(ellipse 90% 70% at 50% 0%, rgba(244, 239, 230, 0.045), transparent 60%),
    radial-gradient(ellipse at 50% 120%, rgba(0, 0, 0, 0.5), transparent 60%);
}
main, header, footer { position: relative; z-index: 1; }

/* ---------- serif display voice ---------- */
h1, h2, h3,
.section-title, .post-title, .post-featured__title, .work__title,
.blog-index__header h1, .legal h1, .thanks h1,
.plan__name, .folio__id h3, .row__name, .acard__name,
.tp-hero__title, .risk__title {
  font-family: var(--font-serif);
  font-weight: 430;
  letter-spacing: -0.012em;
}
h1 em, h2 em, .section-title em, .accent,
.tp-hero__title em, .risk__title em {
  font-style: italic !important;
  font-weight: 430;
  color: var(--primary-vivid) !important;
}
.eyebrow, .kicker {
  letter-spacing: 0.3em;
  font-weight: 700;
  color: var(--ink-mute);
}
.eyebrow__dot { background: var(--primary-vivid); }

/* ---------- frames: cards & shots read as lit artwork ---------- */
.folio__card, .piece__frame, .post-featured, .post-card, .acard,
.benefit-card, .include-card, .wcard__media, .dex__shot, .plan {
  background: linear-gradient(150deg, #232019, #171412);
  border: 1px solid rgba(244, 239, 230, 0.1);
  box-shadow: 0 34px 80px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(244, 239, 230, 0.07);
}
.plan--featured { background: linear-gradient(150deg, #241d1a, #191412); border-color: rgba(233, 75, 53, 0.5); }
.plan--featured .plan__aud, .plan--featured .plan__price span, .plan--featured .plan__plus { color: var(--ink-mute); }

/* buttons: primary tomato survives; ink buttons become cream-on-dark */
.btn--primary, .cta, .top__cta { box-shadow: 0 18px 50px rgba(196, 53, 31, 0.3); }
.btn--ghost { border-color: rgba(244, 239, 230, 0.3); color: var(--ink); }
.btn--ghost:hover { background: var(--cream); color: #141210; border-color: var(--cream); }
.btn--inverse { background: var(--cream); color: #141210; }

/* ---------- components that used ink-as-background ----------
   Their old text colour was var(--bg) (cream then, near-black now) —
   every patched-dark background below also re-pins its text to cream. */
.site-footer { background: #100e0c; border-top: 1px solid var(--line); }
.process, .final, .work__cta { color: var(--ink); }
.section-title--light { color: var(--cream); }
.blog-index__newsletter, .blog-index__newsletter h2,
.blog-index__newsletter-note a { color: var(--cream); }
.blog-index__newsletter-form input { color: var(--ink); }
.post-cta, .post-cta h3 { color: var(--cream); }
.service-advantage { background: #17211c; }
.service-advantage, .service-advantage h2 { color: var(--cream); }
.sticky { color: var(--cream); }
html.js:not(.no-motion) .loader { background: var(--bg); color: var(--cream); }
/* footer.css used var(--bg) as its light text colour (cream in the old scheme);
   with the flipped tokens that's near-black — re-pin every instance to cream */
.site-footer__logo, .site-footer__social a,
.site-footer__col h4, .site-footer__col a:hover { color: var(--cream); }
.site-footer__social a:hover { color: var(--cream); }
.site-footer__bottom { color: var(--ink-mute); }
.blog-index__newsletter { background: #1e1a17; border: 1px solid var(--line); }
.post-cta { background: #1c2b24; }
.process, .final, .work__cta { background: #100e0c; }
.vid, .quote-band { background: #17211c; }

/* legal / notice blocks */
.legal__notice { background: rgba(196, 53, 31, 0.12); color: var(--ink); }
.legal__snapshot, .legal__toc, .legal__table { background: var(--surface); }
.legal__table th { background: #242019; color: var(--ink); }
.legal a, .post-body a { color: var(--primary-vivid); }

/* thanks page */
.thanks__list li { background: var(--surface); }
.thanks__list .check { background: var(--cream); color: #141210; }

/* faq */
.faq__item summary::after, .qa__item summary::after { color: var(--primary-vivid); }

/* forms (newsletter, start page fields) */
input, select, textarea {
  color: var(--ink);
}
.field input, .field select {
  background: #1b1815;
  border-color: rgba(244, 239, 230, 0.18);
}
.field input:focus, .field select:focus { background: #201c18; border-color: var(--primary-vivid); }
.field input::placeholder { color: rgba(244, 239, 230, 0.3); }

/* ---------- shared site-nav → dark frost ---------- */
.site-nav {
  background: rgba(20, 18, 16, 0.82);
  backdrop-filter: saturate(120%) blur(12px);
  border-bottom-color: var(--line);
}
body.nav-overlay .site-nav { background: transparent; border-bottom-color: transparent; backdrop-filter: none; }
body.nav-overlay .site-nav.is-scrolled {
  background: rgba(20, 18, 16, 0.85);
  backdrop-filter: saturate(120%) blur(12px);
  border-bottom-color: var(--line);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4);
}
.site-nav__logo { color: var(--cream); }
.site-nav__logo em { color: var(--primary-vivid); }
.site-nav__links > a, .site-nav__drop-trigger { color: var(--ink-soft); }
.site-nav__links > a:hover, .site-nav__drop-trigger:hover { color: var(--primary-vivid); }
.site-nav__links a[aria-current="page"] { color: var(--cream); }
.site-nav__drop {
  background: #1e1a17;
  border-color: var(--line);
  box-shadow: 0 26px 60px rgba(0, 0, 0, 0.55);
}
.site-nav__drop a { color: var(--ink-soft); }
.site-nav__drop a:hover { background: rgba(244, 239, 230, 0.07); color: var(--cream); }
.site-nav__drop-all { color: var(--primary-vivid) !important; border-top-color: var(--line); }
.site-nav__cta { background: var(--cream); color: #141210; }
.site-nav__cta:hover { background: var(--primary); color: var(--cream); }
.site-nav__burger span { background: var(--cream); }
.site-nav__mobile { background: #141210; }
.site-nav__mobile a { color: var(--cream); border-bottom-color: var(--line); }
.site-nav__m-label { color: var(--ink-mute); }
.site-nav__m-sub a { color: var(--ink-soft); }
.site-nav__mobile .site-nav__cta { color: #141210; }
.site-nav__mobile .site-nav__cta:hover { color: var(--cream); }

/* ---------- image treatment: screenshots stay light = artwork glow ---------- */
.post-featured__thumb, .post-card__thumb, .journal__media, .jrow__thumb,
.service-hero__media img, .post-hero img {
  border: 1px solid rgba(244, 239, 230, 0.1);
}

/* industry pages (industry.css shares the same tokens; patch its solids) */
.answer { background: var(--surface); border-color: var(--line); }

/* keep tomato CTAs readable */
.btn--primary { color: #fff; }

/* ============================================================
   START PAGE (landing) — gallery polish
   ============================================================ */
.top { background: linear-gradient(rgba(20, 18, 16, 0.9), rgba(20, 18, 16, 0)); }
.top__logo { color: var(--cream); }
.top__price { border: 1px solid var(--line); color: var(--ink-soft); background: rgba(244, 239, 230, 0.05); }
.seven { color: transparent; -webkit-text-stroke: 2px rgba(196, 53, 31, 0.22); opacity: 1; }
.lp__title, .card__title, .value__title, .catch__title { font-family: var(--font-serif); font-weight: 430; letter-spacing: -0.012em; }
.lp__title em, .value__title em, .catch__title em { font-style: italic; color: var(--primary-vivid); }
.lp__price-line .u { background-image: linear-gradient(transparent 72%, rgba(233, 75, 53, 0.35) 72%); color: var(--cream); }
.lp__catch { color: var(--ink-soft); }
.lp__more { color: var(--primary-vivid); }
.steps__item { background: var(--surface); border-color: var(--line); }
.steps__num { background: rgba(244, 239, 230, 0.08); color: var(--cream); }
.ticks li { color: var(--ink-soft); }

/* the form card reads as a lit gallery frame */
.card {
  position: relative;
  background: linear-gradient(150deg, #232019, #171412);
  border: 1px solid rgba(244, 239, 230, 0.12);
  box-shadow: 0 40px 90px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(244, 239, 230, 0.08);
}
.card::after {
  content: ""; position: absolute; left: 10%; right: 10%; top: -1px; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(244, 239, 230, 0.5), transparent);
}
.card__progress { background: rgba(244, 239, 230, 0.1); }
.card__step, .card__note, .lp__privacy { color: var(--ink-mute); }
.card__error { color: var(--primary-vivid); }
.cal { background: #F7F3EB; border-radius: 12px; } /* Lunacal embed stays light theme */

/* proof strip (mini frames) */
.proof { padding: clamp(56px, 8vw, 100px) var(--pad, clamp(20px, 5vw, 96px)) 0; text-align: center; }
.proof__label { font-size: 11.5px; font-weight: 700; letter-spacing: 0.3em; text-transform: uppercase; color: var(--ink-mute); margin-bottom: 26px; }
.proof__row { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 2.4vw, 28px); max-width: 1080px; margin: 0 auto 20px; }
@media (max-width: 720px) { .proof__row { grid-template-columns: 1fr; max-width: 440px; } }
.proof__item {
  position: relative;
  text-decoration: none;
  padding: clamp(8px, 1vw, 14px);
  background: linear-gradient(150deg, #232019, #171412);
  border: 1px solid rgba(244, 239, 230, 0.1);
  box-shadow: 0 26px 60px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(244, 239, 230, 0.07);
  display: block;
}
.proof__item img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; object-position: top; display: block; }
.proof__cap {
  display: block;
  font-family: var(--font-serif); font-style: italic;
  font-size: 14px; color: var(--ink-soft);
  padding: 12px 4px 4px; text-align: left;
}
.proof__cap b { font-style: normal; font-weight: 430; color: var(--cream); font-size: 15.5px; display: block; }
.proof__item:hover .proof__cap b { color: var(--primary-vivid); }
.proof__all { font-size: 14px; font-weight: 700; color: var(--primary-vivid); border-bottom: 1px solid rgba(233, 75, 53, 0.4); padding-bottom: 3px; }

.value { background: transparent; color: var(--ink); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.value__title { font-family: var(--font-serif); font-weight: 430; }
.value__grid li { background: var(--surface); border-color: var(--line); }
.catch__card { background: var(--surface); border: 1px solid var(--line); }
.catch__reverse { background: rgba(64, 145, 108, 0.1); border-color: rgba(64, 145, 108, 0.3); }
.catch__reverse strong { color: #7FC8A5; } /* forest reads muddy on dark — lift it */
.sticky { background: rgba(16, 14, 12, 0.96); border-top: 1px solid var(--line); }
