/* ============================================================
   DM CONSULTANCY — DESIGN SYSTEM v4.0
   Mobile-first. Montserrat. Animated. Premium.
   Reference: DIFC.ae, ADGM.com, Apple.com, McKinsey.com
   ============================================================ */

/* Montserrat — self-hosted, Latin subset, variable (weights 100-900) + italic.
   Preloaded via <link rel="preload"> in each page <head>; display:swap.
   Do NOT re-add @import or the Google Fonts CDN. */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/assets/fonts/montserrat-latin.woff2') format('woff2');
}
@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/assets/fonts/montserrat-italic-latin.woff2') format('woff2');
}

/* DMC Display (Bricolage Grotesque, OFL; instanced + renamed per OFL reserved-name
   rules, original copyright/designer attribution retained). Display face.
   FOUNDER SPEC (2026-06-12): the 500 instance is the ONLY display weight — H1/H2,
   large display, and the component display titles (rate-card titles, package names,
   ON THE RECORD labels, struck claims, consequence figures) all render at 500.
   The heavier 580 cut was removed (headlines were reading bold/700-class against
   the locked spec). Display + labels only, never running text, floor 12px rendered.
   font-display:swap; dmc-display-500-latin.woff2 is preloaded in every page head
   (it paints the LCP headline). Do NOT reintroduce a heavier display cut. */
@font-face {
  font-family: 'DMC Display';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/dmc-display-500-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── TOKENS ── */
:root { color-scheme: light; }
html, body { color-scheme: light; }
:root {
  --indigo:      #0F07BD;
  --indigo-dark: #0A0590;
  --indigo-mid:  #1410C8;
  --gold:        #C9981A;
  --gold-light:  #E8B420;
  --deep:        #09082A;
  --deep2:       #0D0C35;
  --ivory:       #F7F5F0;
  --white:       #FFFFFF;
  --text:        #09082A;
  --text2:       #4A4869;
  --text3:       #67658A;
  --border:      rgba(9,8,42,0.08);
  --font:        'Montserrat', -apple-system, sans-serif;
  --ease:        cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);

  /* ── DECREE v1.1 derived tokens ── */
  --rule:        rgba(9,8,42,0.10);    /* solid hairlines in ledger components */
  --rule-dotted: rgba(9,8,42,0.25);    /* dotted leaders */
  --paper:       #FFFFFF;              /* rate cards always sit on white */
  --seal:        var(--gold);          /* seal ring + verification ticks */
  --serif:        'DMC Display', 'Bricolage Grotesque', system-ui, -apple-system, sans-serif;
  --serif-500:    'DMC Display', 'Bricolage Grotesque', system-ui, -apple-system, sans-serif;
  /* type scale (mobile-first; DMC Display only >=24px)
     H1 ceiling 56px per the Homepage Lock Sprint typography order (calm > big) */
  --fs-h1:       clamp(34px, 9vw, 56px);
  --fs-h2:       clamp(26px, 6vw, 42px);
  --fs-h3:       clamp(20px, 4.5vw, 26px);
  --fs-lead:     clamp(15.5px, 4vw, 19px);
  --fs-eyebrow:  10.5px;
  --fs-num:      clamp(28px, 7vw, 48px);
  /* rhythm + motion timing */
  --sec-pad:     64px;
  --t-fast:      180ms;
  --t-base:      420ms;
  --t-slow:      700ms;
  /* ── unified elevation system (one shadow family wires every raised element together) ── */
  --shadow-card:    0 2px 8px rgba(9,8,42,0.05), 0 18px 44px -20px rgba(9,8,42,0.17);
  --shadow-card-h:  0 6px 16px rgba(9,8,42,0.07), 0 30px 60px -22px rgba(9,8,42,0.25);
  --shadow-gold:    0 6px 18px -7px rgba(201,152,26,0.42);
  --shadow-gold-h:  0 12px 26px -8px rgba(201,152,26,0.52);
  --shadow-indigo:  0 7px 18px -8px rgba(15,7,189,0.42);
  --shadow-indigo-h: 0 14px 30px -10px rgba(15,7,189,0.52);
}
@media (min-width: 768px)  { :root { --sec-pad: 96px;  } }
@media (min-width: 1200px) { :root { --sec-pad: 120px; } }


/* ════════════════════════════════════════════════════════════════════════
   DESIGN SYSTEM (LOCKED) — canonical component map  (2026-06)
   Do not introduce new variants without updating this map.
   ════════════════════════════════════════════════════════════════════════
   ONE CARD:       .pcard       — service/feature card (3px indigo top-border, icon, CTA link)
                   .route       — route/option card (gold tag, detail list, indigo outline on hover)
                   .tcard       — testimonial card (quote, attribution, star rating)
                   .case-card   — proof/case card (2px gold top-bar, compact)
                   .commit      — pull-quote with large opening quotation mark

   ONE BUTTON:     .btn-primary       — white text on indigo (light surfaces)
                   .btn-gold / .btn-cta — deep-ink #09082A on gold (primary CTA, every surface)
                   .btn-outline-ink   — ink outline, transparent fill (light surfaces ONLY)
                   .btn-outline-white — white outline, transparent fill (dark surfaces ONLY)
                   See BUTTON-VARIANT POLICY banner below for surface rules.

   ONE EYEBROW:    .eyebrow     — 11px uppercase 600, --text3, gold accent bar (inner pages only)

   ONE DIVIDER:    .s-rule      — 1px solid rgba(9,8,42,0.1), full-width section separator

   ONE PULL-QUOTE: .commit      — see ONE CARD above

   RADIUS LOCK:    Cards (pcard/route/tcard/case-card/commit/pkg) = 16px
                   Solid action buttons (btn-primary/btn-gold/nav-cta/mob-cta) = 8px
                   Small chips                                = 4–6px
                   Pill (tag/badge)                          = 99px
                   Do NOT introduce intermediate values.

   ELEVATION:      One shadow family wires all raised elements together. Use the
                   tokens, never ad-hoc shadows: --shadow-card / --shadow-card-h
                   (cards at rest / hover), --shadow-indigo(-h) (indigo buttons),
                   --shadow-gold(-h) (gold buttons). Cards lift on hover; buttons
                   lift -2px on hover. Nothing interactive ships flat.

   ICON STROKE:    1.75px stroke-width on all functional 24×24 line SVGs.
                   Nav-caret chevrons controlled via .nav-caret CSS below.
                   WhatsApp phone glyph (.wa-fab svg) kept at 2.5px.

   WEIGHT CEILING: 700 — never 800/900. Hierarchy via size + spacing + color.

   GOLD RULE:      One restrained highlight moment per section.
                   Never gold body/label text on a light surface (WCAG < 4.5:1).
   ════════════════════════════════════════════════════════════════════════ */

/* ── RESET ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; -webkit-font-smoothing: antialiased; overflow-x: clip; }
/* overflow-x on body deliberately OMITTED: body overflow-x:hidden clips nested scrollable children
   (e.g. .compare-scroller tables), breaking horizontal scroll inside containers. html clip is enough. */
body { font-family: var(--font); font-size: 16px; color: var(--text); background: var(--white); line-height: 1.65; text-wrap: pretty; -moz-osx-font-smoothing: grayscale; }
/* premium micro-detail: branded text selection */
::selection { background: rgba(15,7,189,0.92); color: #fff; }
::-moz-selection { background: rgba(15,7,189,0.92); color: #fff; }
.sr-only { position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
button { cursor: pointer; font-family: var(--font); border: none; background: none; }

/* ── ANIMATIONS ── */
/* FIRST-PAINT RULE (permanent): nothing above the fold depends on JS to be
   visible. BOTH reveal systems hide ONLY under html.js (no JS = everything
   visible), and hero containers are fully exempted in the CRITICAL FIRST-PAINT
   FIX block further down. Was previously un-gated: .reveal{opacity:0} hid
   content permanently for no-JS visitors on 180 pages. */
html.js .reveal {
  opacity: 0;
  transform: translateY(40px) scale(0.985);
  filter: blur(7px);
  transition: opacity 0.9s var(--ease-out), transform 0.9s var(--ease-out), filter 0.9s var(--ease-out);
  will-change: opacity, transform;
}
html.js .reveal.visible { opacity: 1; transform: none; filter: blur(0); }
@media (prefers-reduced-motion: reduce) {
  html.js .reveal { opacity: 1; transform: none; filter: none; transition: none; }
}
.reveal-delay-1 { transition-delay: 0.08s; }
.reveal-delay-2 { transition-delay: 0.16s; }
.reveal-delay-3 { transition-delay: 0.24s; }
.reveal-delay-4 { transition-delay: 0.32s; }
.reveal-delay-5 { transition-delay: 0.40s; }
.reveal-delay-6 { transition-delay: 0.48s; }
.reveal-delay-7 { transition-delay: 0.56s; }
.reveal-delay-8 { transition-delay: 0.64s; }

/* Scroll progress bar (Apple-style) */
.scroll-progress {
  position: fixed; top: 0; left: 0; height: 2px; width: 0%;
  background: linear-gradient(90deg, var(--indigo), var(--gold));
  z-index: 300; pointer-events: none;
  transition: width 0.12s linear;
}

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal.visible { opacity: 1; transform: none; filter: none; transition: none; }
}

/* ── LAYOUT ── */
.wrap {
  width: 100%;
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 20px;
}
@media (min-width: 768px) { .wrap { padding: 0 32px; } }
@media (min-width: 1024px) { .wrap { padding: 0 40px; } }

.section      { padding: 40px 0; }
.section-sm   { padding: 30px 0; }
.section-lg   { padding: 58px 0; }
@media (min-width: 768px)  { .section { padding: 56px 0; } .section-lg { padding: 76px 0; } }
@media (min-width: 1024px) { .section { padding: 64px 0; } .section-lg { padding: 88px 0; } }

.bg-ivory { background: var(--ivory); }
.bg-deep  { background: var(--deep); }
.bg-indigo{ background: var(--indigo); }

/* ── HEADER (transparent over hero → solid on scroll / menu) ── */
.site-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  height: 64px;
  background: transparent;
  border-bottom: 1px solid transparent;
  transition: background 0.35s var(--ease), border-color 0.35s, box-shadow 0.35s;
}
.site-header.is-solid {
  background: rgba(255,255,255,0.88);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-color: var(--border);
  box-shadow: 0 1px 24px rgba(9,8,42,0.07);
}
@media (min-width: 1024px) { .site-header { height: 72px; } }
@media (max-width: 1023px) {
  .site-header.is-solid {
    background: rgba(251,250,247,0.98) !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
}

/* D2: disable backdrop-filter on mobile (#hdr alias) */
@media (max-width:1024px) {
  #hdr.is-solid {
    background: rgba(251,250,247,0.98);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}

/* D2: unpin assumptions scene on mobile */
@media (max-width:1024px) {
  .asc-grid { display: block !important; position: static !important; }
  .asc-rail { display: none !important; }
  .asc-item { opacity: 1 !important; transform: none !important; }
}

/* D2: limit will-change to actively animating elements only */
.reveal:not(.visible) { will-change: opacity, transform; }
.reveal.visible      { will-change: auto; }

/* D2: smooth touch scrolling — body overflow-x intentionally NOT hidden (clips scroll children).
   Page-level horizontal containment is handled by html { overflow-x: clip } above. */
* { -webkit-overflow-scrolling: touch; }

.header-inner {
  max-width: 1320px; margin: 0 auto;
  padding: 0 20px; height: 100%;
  display: flex; align-items: center; justify-content: space-between;
}
@media (min-width: 768px)  { .header-inner { padding: 0 32px; } }
@media (min-width: 1024px) { .header-inner { padding: 0 40px; } }

.site-logo { display: flex; align-items: center; flex-shrink: 0; }
.logo-img { height: 30px; width: auto; max-width: none; flex-shrink: 0; display: block; }
@media (min-width: 768px)  { .logo-img { height: 34px; } }
@media (min-width: 1024px) { .logo-img { height: 38px; } }
/* logo swap: white over the dark hero, blue once header turns solid */
.logo-on-light { display: none; }
.site-header.is-solid .logo-on-dark  { display: none; }
.site-header.is-solid .logo-on-light { display: block; }

.nav-links {
  display: none;
  align-items: center; gap: 22px;
}
@media (min-width: 1024px) { .nav-links { display: flex; } }

.nav-links a {
  font-size: 12.5px; font-weight: 500; color: rgba(255,255,255,0.82);
  letter-spacing: 0.01em; transition: color 0.2s;
  white-space: nowrap;
}
.nav-links a:hover { color: #fff; }
.site-header.is-solid .nav-links a { color: var(--text2); }
.site-header.is-solid .nav-links a:hover { color: var(--indigo); }
/* "Start here" — the soft entry, lifted out of the category cluster and paired with the CTA
   on the right as a deliberate action (a quiet ghost button, not another nav category). */
.nav-start { display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.34); color: rgba(255,255,255,0.92) !important; font-weight: 600 !important; font-size: 12.5px !important; letter-spacing: 0.01em; white-space: nowrap; transition: background .18s, border-color .18s, color .18s, transform .18s; }
.nav-start:hover { background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.7); color: #fff !important; transform: translateY(-1px); }
.nav-start-ico { width: 15px; height: 15px; flex-shrink: 0; }
body.lighthero .site-header .nav-start,
.site-header.is-solid .nav-start { color: var(--indigo) !important; border-color: rgba(15,7,189,0.28); }
body.lighthero .site-header .nav-start:hover,
.site-header.is-solid .nav-start:hover { background: rgba(15,7,189,0.06); border-color: var(--indigo); color: var(--indigo-dark) !important; }
/* mobile drawer: keep "Start here" first (the natural "begin here"), with the same compass cue */
.mnav-link.mnav-start { display: flex; align-items: center; justify-content: flex-start; gap: 9px; }
.mnav-start .nav-start-ico { width: 17px; height: 17px; }
.nav-link.active,
.nav-link[aria-current="page"] { color: var(--indigo); font-weight: 600; }
.mob-sub a:hover,
.mob-sub a[aria-current="page"] { color: var(--indigo); }

.nav-cta {
  padding: 9px 20px;
  background: var(--gold);
  color: var(--deep) !important;
  border-radius: 8px;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.01em;
  box-shadow: var(--shadow-gold);
  transition: background 0.2s, transform 0.2s, color 0.2s, box-shadow 0.2s;
}
.nav-cta:hover { background: var(--gold-light) !important; transform: translateY(-2px); box-shadow: var(--shadow-gold-h); }
.site-header.is-solid .nav-cta { background: var(--indigo); color: #fff !important; }
.site-header.is-solid .nav-cta:hover { background: var(--indigo-dark) !important; }

.nav-toggle {
  display: flex; flex-direction: column;
  justify-content: center; gap: 5px;
  cursor: pointer; padding: 8px; margin-right: -8px;
  width: 44px; height: 44px;
}
.nav-toggle span {
  display: block; width: 22px; height: 2px;
  background: #fff; border-radius: 2px; transition: all 0.25s var(--ease);
}
.site-header.is-solid .nav-toggle span { background: var(--text); }
.nav-toggle.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle.active span:nth-child(2) { opacity: 0; }
.nav-toggle.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
@media (min-width: 1024px) { .nav-toggle { display: none; } }

/* Mobile nav */
/* ── MOBILE NAV — modern accordion drawer (native details/summary) ── */
.mobile-nav {
  display: none; position: fixed;
  top: 64px; left: 0; right: 0; bottom: 0;
  background: #fff; z-index: 99;
  flex-direction: column; padding: 10px 20px 32px;
  overflow-y: auto; -webkit-overflow-scrolling: touch;
}
.mobile-nav.open { display: flex; }

/* direct top-level links (Start here, Golden Visa) */
.mnav-link {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 6px; font-family: var(--serif); font-weight: 500; font-size: 19px;
  color: var(--text); border-bottom: 1px solid var(--rule); text-decoration: none;
}
.mnav-start { color: var(--indigo); }

/* collapsible groups */
.mnav-group { border-bottom: 1px solid var(--rule); }
.mnav-summary {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 6px; font-family: var(--serif); font-weight: 500; font-size: 19px;
  color: var(--text); cursor: pointer; list-style: none;
  -webkit-tap-highlight-color: transparent;
}
.mnav-summary::-webkit-details-marker { display: none; }
.mnav-chev { width: 18px; height: 18px; color: var(--text3); flex: 0 0 auto; transition: transform .28s var(--ease), color .28s var(--ease); }
.mnav-group[open] .mnav-summary .mnav-chev { transform: rotate(180deg); color: var(--indigo); }
.mnav-panel { padding: 0 0 14px; }
.mnav-panel a {
  display: block; padding: 11px 6px 11px 18px; margin-left: 7px;
  font-size: 15.5px; color: var(--text2); border-left: 2px solid var(--rule);
  border-bottom: none; text-decoration: none; transition: color .15s, border-color .15s;
}
.mnav-panel a:active, .mnav-panel a:hover { color: var(--indigo); border-left-color: var(--indigo); }
.mnav-panel .mnav-all { color: var(--indigo); font-weight: 600; }
.mnav-link[aria-current="page"], .mnav-panel a[aria-current="page"] { color: var(--indigo); font-weight: 600; border-left-color: var(--indigo); }

/* CTA + quick-contact footer */
.mobile-nav .mob-cta {
  margin-top: 20px; padding: 16px; background: var(--indigo);
  color: #fff; border-radius: 8px; text-align: center;
  font-weight: 600; font-size: 15px; border-bottom: none; text-decoration: none;
  box-shadow: var(--shadow-indigo);
}
.mnav-contact { display: flex; gap: 10px; margin-top: 14px; }
.mnav-contact-btn {
  flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 14px 6px; border: 1px solid var(--rule); border-radius: 12px;
  font-family: var(--font); font-size: 12px; font-weight: 600; color: var(--text2);
  text-decoration: none; transition: border-color .15s, color .15s;
}
.mnav-contact-btn svg { width: 21px; height: 21px; color: var(--indigo); }
.mnav-contact-btn:active, .mnav-contact-btn:hover { border-color: var(--indigo); color: var(--text); }

/* ── NAV DROPDOWN (desktop) ── */
.nav-item { position: relative; display: inline-flex; align-items: center; }
.nav-dd-trigger { display: inline-flex !important; align-items: center; gap: 5px; cursor: pointer; }
.nav-caret { width: 9px; height: 9px; transition: transform .25s; opacity: .6; }
.nav-item.has-dd:hover .nav-caret { transform: rotate(180deg); }
.nav-dd {
  position: absolute; top: 100%; left: -16px; margin-top: 16px; min-width: 236px;
  background: #fff; border: 1px solid var(--rule); border-radius: 16px;
  box-shadow: 0 28px 60px -20px rgba(9,8,42,0.30); padding: 10px;
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: opacity .22s var(--ease), transform .22s var(--ease), visibility .22s;
}
.nav-dd::before { content: ''; position: absolute; top: -16px; left: 0; right: 0; height: 16px; }
.nav-dd.nav-dd-r { left: auto; right: -16px; }

/* Skip-to-content (accessibility) */
.skip-nav { position: absolute; top: -48px; left: 8px; background: var(--gold); color: var(--deep); padding: 8px 14px; font-size: 12px; font-weight: 600; border-radius: 0 0 6px 6px; z-index: 999; transition: top .2s; }
.skip-nav:focus { top: 0; }
.nav-item.has-dd:hover .nav-dd, .nav-item.has-dd:focus-within .nav-dd { opacity: 1; visibility: visible; transform: translateY(0); }
.nav-dd a { display: block !important; padding: 10px 14px; border-radius: 8px; font-size: 12.5px !important; font-weight: 500 !important; color: var(--text2) !important; white-space: nowrap; letter-spacing: 0; }
.nav-caret { display: inline-block; vertical-align: middle; stroke-width: 2; width: 14px; height: 14px; margin-left: 2px; }
.nav-dd a:hover { background: rgba(15,7,189,0.05); color: var(--indigo) !important; }

/* ── NAV MEGA-MENU (Industries: category heads + sector sub-links) ── */
.nav-dd-mega {
  left: auto; right: -16px; min-width: 0;
  width: 480px; max-width: calc(100vw - 32px);
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px 8px;
  padding: 16px;
}
/* Left-anchored variant: for a mega opened from a LEFT-side nav item (e.g. Company Setup),
   so the panel extends rightward instead of overflowing off the left edge. */
.nav-dd-mega.mega-left { left: 0; right: auto; }
@media (min-width: 1280px) {
  .nav-dd-mega { width: 740px; grid-template-columns: repeat(4, 1fr); }
}
.nav-dd-col { display: block; }
.nav-dd-h {
  display: block; padding: 8px 12px 4px;
  font-size: 10.5px; font-weight: 600; letter-spacing: 0.07em;
  text-transform: uppercase; color: var(--indigo);
}
.nav-dd-mega a { white-space: normal !important; line-height: 1.3; padding: 7px 12px !important; }
.nav-dd-allrow { grid-column: 1 / -1; margin-top: 6px; padding-top: 8px; border-top: 1px solid var(--border); }
.nav-dd-all { font-weight: 600 !important; color: var(--indigo) !important; }
.nav-dd-all:hover { background: var(--ivory) !important; }

/* ── IN-CONTENT LINKS ──
   Exclude ALL button classes ([class*="btn"]) so any button placed directly
   inside a .section (e.g. a .btn-gold CTA) keeps its button styling instead of
   being overridden to an underlined indigo link. Fixes the "Request the Guide"
   and "Back to home" gold buttons rendering as broken links. */
/* Underline ONLY inline prose links (classless anchors). Card / tile / button / component links always carry a class, so they are excluded automatically, with no per-class :not() list to maintain. This kills underlined link text inside cards site-wide. */
.section a:not([class]) { color: var(--indigo); text-decoration: underline; text-underline-offset: 2px; }
.section a:not([class]):hover { color: var(--indigo-dark); }

/* ── TYPOGRAPHY UTILITIES ── */

/* Desktop body scale for readability */
@media (min-width: 1024px) {
  body { font-size: 17px; line-height: 1.7; }
  .s-lead { font-size: 1.15rem; }
}

/* Eyebrow labels — brand blue on light, inherited (gold/muted) on dark */
.eyebrow {
  display: block;
  font-size: 0.7rem; font-weight: 600;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--indigo); margin-bottom: 8px;
}
.eyebrow-light,
.page-hero .eyebrow { color: rgba(255,255,255,0.65); }
/* Preserve gold eyebrow on dark surfaces (cta-strip, hero already handled) */
.hero .eyebrow { color: rgba(255,255,255,0.65); }
/* CRITICAL FIX: the homepage founder eyebrow carries .eyebrow-light but sits on
   the IVORY .founder-light section, where white@0.65 is invisible (1.06:1).
   Restore brand-blue indigo on this light surface (10.79:1) — context-scoped so
   .eyebrow-light stays correct on every dark hero/CTA. CSS-only; HTML untouched. */
.founder-light .eyebrow-light,
.founder-light .eyebrow { color: var(--indigo); }

/* Unified heading system — hierarchy from size, not heavy weight */
.s-title {
  font-size: clamp(1.5rem, 3.4vw, 2.35rem);
  font-weight: 700; letter-spacing: -0.02em; line-height: 1.2;
  color: var(--indigo); margin-bottom: 12px; margin-top: 0;
  text-wrap: balance;
}
/* Hero headline — premium scale; inline homepage override (.hero-h1) must stay in sync.
   Synced to the homepage .hero-h1 ceiling so both templates read at one authority. */
.hero-title {
  font-size: clamp(2rem, 5.2vw, 3.4rem);
  font-weight: 700; line-height: 1.1; letter-spacing: -0.03em;
  text-wrap: balance;
}
/* Protect headings inside dark/coloured sections — they stay white/inherited */
.hero      .s-title,
.page-hero .s-title,
.cta-strip .s-title,
footer     .s-title { color: inherit; }
.cta-strip.ip .s-title { color: #FFFFFF; }

.s-lead {
  font-size: clamp(15px, 1.6vw, 16px);
  font-weight: 400; color: var(--text2); line-height: 1.75; max-width: 60ch;
  margin-top: 12px; margin-bottom: 32px;
}
.lede { color: var(--text2); }

/* Hero subtitle — restrained lead weight (400 floor) for editorial elegance.
   400 guards any page that uses the shared class without an inline override. */
.hero-sub,
.hero-pitch {
  font-size: clamp(1rem, 2.2vw, 1.25rem);
  font-weight: 400; line-height: 1.65;
}

/* ── BUTTONS ── */
.btn-primary {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 14px 28px;
  background: var(--indigo); color: #fff;
  border: 1.5px solid var(--indigo);
  font-size: 13px; font-weight: 600;
  border-radius: 8px; letter-spacing: 0.02em;
  transition: all 0.2s var(--ease);
  box-shadow: var(--shadow-indigo);
  white-space: nowrap;
}
.btn-primary:hover { background: #0c06a5; border-color: #0c06a5; transform: translateY(-2px); box-shadow: var(--shadow-indigo-h); }

/* ════════════════════════════════════════════════
   BUTTON-VARIANT POLICY (locked — never regress in CSS or HTML)
   DARK surfaces (.page-hero, .cta-strip.ip, footer):
     allowed → .btn-gold/.btn-cta (deep ink on gold), .btn-outline-white, .btn-outline-light
     forbidden → .btn-outline, .btn-outline-ink (ink text disappears on dark)
   LIGHT surfaces (white / --ivory):
     allowed → .btn-primary (white on indigo), .btn-gold/.btn-cta (ink on gold), .btn-outline, .btn-outline-ink
     forbidden → .btn-outline-white, .btn-outline-light (white text disappears on light)
   Gold fills ALWAYS carry deep-ink #09082A text (7.40:1), never white (2.63:1 = WCAG fail).
   ════════════════════════════════════════════════ */
.btn-gold, .btn-cta {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 14px 28px;
  background: var(--gold); color: #09082A;
  border: 1.5px solid var(--gold);
  font-size: 13px; font-weight: 600;
  border-radius: 8px; letter-spacing: 0.02em;
  transition: all 0.2s var(--ease);
  box-shadow: var(--shadow-gold);
  white-space: nowrap;
}
.btn-gold:hover, .btn-cta:hover {
  background: #b8870f; border-color: #b8870f;
  transform: translateY(-2px);
  box-shadow: var(--shadow-gold-h);
}

.btn-outline-light {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 24px;
  background: transparent; color: #fff;
  border: 2px solid rgba(255,255,255,0.5); border-radius: 4px;
  font-size: 13px; font-weight: 500;
  transition: all 0.2s;
  white-space: nowrap;
}
.btn-outline-light:hover { background: rgba(255,255,255,0.10); }

.btn-outline {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 24px;
  background: transparent; color: var(--text);
  font-size: 13px; font-weight: 500;
  border: 1.5px solid rgba(9,8,42,0.18); border-radius: 4px;
  transition: all 0.2s;
  white-space: nowrap;
}
.btn-outline:hover { border-color: var(--text); background: var(--ivory); }
.btn-outline-ink {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 24px; border: 1.5px solid rgba(9,8,42,0.22);
  color: var(--text) !important; border-radius: 4px;
  font-size: 13px; font-weight: 600; font-family: var(--font);
  text-decoration: none; transition: border-color .2s, background .2s;
  background: transparent;
}
.btn-outline-ink:hover { border-color: var(--text); background: rgba(9,8,42,0.04); }

.btn-outline-white {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 24px;
  background: transparent; color: white;
  font-size: 13px; font-weight: 500;
  border: 1.5px solid rgba(255,255,255,0.45); border-radius: 4px;
  transition: all 0.2s;
  white-space: nowrap;
}
.btn-outline-white:hover { border-color: rgba(255,255,255,0.7); background: rgba(255,255,255,0.06); }

.btn-arrow {
  font-size: 12.5px; font-weight: 600; color: var(--indigo);
  display: inline-flex; align-items: center; gap: 5px;
  transition: gap 0.2s;
}
.btn-arrow:hover { gap: 9px; }
.btn-arrow::after { content: '→'; }

/* ── PROOF STRIP ── */
.proof-wrap {
  background: linear-gradient(165deg, #F4F1EA 0%, #EDE9DF 100%);
  border-top: 1px solid rgba(9,8,42,0.07);
  border-bottom: 1px solid rgba(9,8,42,0.07);
  padding: 40px 0;
  position: relative;
}
.proof-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
}
@media (min-width: 768px) {
  .proof-grid { grid-template-columns: repeat(4,1fr); }
}

.proof-stat {
  text-align: center;
  padding: 20px 16px;
  border-right: 1px solid rgba(9,8,42,0.08);
  border-bottom: 1px solid rgba(9,8,42,0.08);
}
.proof-stat:nth-child(2n) { border-right: none; }
.proof-stat:nth-child(n+3) { border-bottom: none; }
@media (min-width: 768px) {
  .proof-stat { padding: 0 24px; border-right: 1px solid rgba(9,8,42,0.08); border-bottom: none; }
  .proof-stat:last-child { border-right: none; }
  .proof-stat:nth-child(2n) { border-right: 1px solid rgba(9,8,42,0.08); }
  .proof-stat:nth-child(2n):last-child { border-right: none; }
}

.proof-num {
  font-size: clamp(2rem, 5vw, 3.2rem);
  font-weight: 700; color: var(--indigo);
  line-height: 1; letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
  margin-bottom: 4px;
}
.proof-num span { color: var(--indigo); }
.proof-label {
  font-size: 10.5px; font-weight: 500;
  color: var(--text3);
  letter-spacing: 0.04em; text-transform: uppercase;
  line-height: 1.4;
}

/* ── COMPARE TABLE — DESKTOP ── */
.compare-scroller {
  position: relative;
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: 8px;
  -webkit-overflow-scrolling: touch;
}
/* Right-edge fade hint — signals horizontal scroll where the table overflows.
   Only shown ≤700px (where the cost column is pushed off-screen); pointer-events
   none so it never blocks taps. Transparent→ivory channel avoids Safari fade-to-black. */
.compare-scroller::after {
  content: "";
  position: absolute; top: 0; right: 0; bottom: 0;
  width: 36px; pointer-events: none;
  background: linear-gradient(90deg, rgba(247,245,240,0), var(--ivory));
  border-radius: 0 8px 8px 0;
  opacity: 0;
  transition: opacity .2s ease;
}
@media (max-width: 700px) {
  .compare-scroller::after { opacity: 1; }
}
.compare-table {
  width: 100%; min-width: 620px;
  border-collapse: collapse;
}
.compare-table th {
  padding: 12px 14px; text-align: left;
  background: var(--indigo);
  font-size: 0.8125rem; font-weight: 700;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: #FFFFFF; border-bottom: 1px solid var(--border);
}
.compare-table th.col-hl {
  background: var(--indigo-dark);
  border-top: 3px solid var(--gold);
  color: #FFFFFF;
}
.compare-table td {
  padding: 12px 14px;
  font-size: 13.5px; color: var(--text2);
  border-bottom: 1px solid rgba(15,7,189,0.08);
  vertical-align: top; line-height: 1.6;
  font-variant-numeric: tabular-nums;
}
.compare-table td.col-hl { background: rgba(15,7,189,0.025); }
.compare-table td strong { color: var(--text); font-weight: 600; }
.compare-table .row-label { font-size: 12.5px; font-weight: 600; color: var(--text); }
.compare-table tr:last-child td { border-bottom: none; }
.compare-table tr:hover td { background: rgba(9,8,42,0.02); }
.compare-table tr:hover td.col-hl { background: rgba(15,7,189,0.04); }
.most-chosen {
  display: inline-block;
  font-size: 8px; font-weight: 700; letter-spacing: 0.1em;
  text-transform: uppercase;
  background: var(--gold); color: var(--deep);
  border: 1px solid var(--gold);
  padding: 2px 7px; border-radius: 20px; margin-left: 6px;
  vertical-align: middle;
}
.compare-note { font-size: 12px; color: var(--text3); line-height: 1.6; }
/* Small honest disclaimer for pages discussing accounting, tax, legal, liquidation */
.advisory-note { font-size: 12.5px; line-height: 1.65; color: var(--text3); background: rgba(15,7,189,0.03); border-left: 3px solid rgba(15,7,189,0.22); border-radius: 0 8px 8px 0; padding: 13px 17px; margin: 0; max-width: 80ch; }
.advisory-note strong { color: var(--text2); font-weight: 600; }

/* ── MOBILE COMPARE TABS ── */
.compare-mobile { display: none; }
@media (max-width: 1023px) {
  .compare-desktop { display: none; }
  .compare-mobile { display: block; }
}
@media (min-width: 1024px) {
  .compare-desktop { display: block; }
  .compare-mobile { display: none; }
}

.ctabs-nav {
  display: grid; grid-template-columns: repeat(3,1fr);
  border: 1px solid var(--border); border-radius: 6px;
  overflow: hidden; margin-bottom: 16px;
}
.ctab-btn {
  padding: 12px 8px; font-family: var(--font);
  font-size: 12px; font-weight: 600;
  color: var(--text2); background: var(--ivory);
  border-right: 1px solid var(--border);
  cursor: pointer; transition: all 0.15s; text-align: center;
}
.ctab-btn:last-child { border-right: none; }
.ctab-btn.active { background: var(--indigo); color: white; }
.ctab-panel { display: none; }
.ctab-panel.active { display: block; }

.mob-compare-card {
  border: 1px solid var(--border); border-radius: 8px; padding: 20px;
}
.mob-compare-card.featured {
  border-color: rgba(15,7,189,0.25);
  border-top: 3px solid var(--indigo);
}
.mob-col-name {
  font-size: 15px; font-weight: 700; color: var(--text);
  margin-bottom: 3px; display: flex; align-items: center; gap: 8px;
}
.mob-col-sub { font-size: 11px; color: var(--text3); margin-bottom: 16px; }
.mob-row {
  display: grid; grid-template-columns: 110px 1fr;
  gap: 10px; padding: 10px 0;
  border-bottom: 1px solid rgba(9,8,42,0.05);
  font-size: 13px; align-items: start;
}
.mob-row:last-child { border-bottom: none; }
.mob-row-k { font-size: 11px; font-weight: 600; color: var(--text3); }
.mob-row-v { color: var(--text2); line-height: 1.5; }
.mob-row-v strong { color: var(--text); font-weight: 600; }

/* ── SERVICE CARDS ── */
.svc-grid {
  display: grid; grid-template-columns: 1fr; gap: 12px;
}
@media (min-width: 600px)  { .svc-grid { grid-template-columns: 1fr 1fr; gap: 18px; } }
@media (min-width: 1024px) { .svc-grid { grid-template-columns: repeat(3, 1fr); gap: 20px; } }

.svc-card {
  display: flex; flex-direction: column;
  padding: 24px 22px 22px;
  background: #fff; border: 1px solid var(--border); border-radius: 16px;
  position: relative; overflow: hidden;
  transition: transform 260ms cubic-bezier(0.22,1,0.36,1), box-shadow 260ms cubic-bezier(0.22,1,0.36,1), border-color 260ms;
  text-decoration: none; color: inherit;
  box-shadow: 0 2px 8px rgba(9,8,42,0.04), 0 16px 40px -18px rgba(9,8,42,0.14);
  --mx: 50%; --my: 50%;
}
.svc-card::after {
  content: ''; position: absolute; left: 0; top: 0; height: 3px; width: 100%;
  background: linear-gradient(90deg, var(--indigo), var(--gold));
  transform: scaleX(0); transform-origin: left; transition: transform 0.35s var(--ease-out);
  display: none;
}
.svc-card:hover { transform: translateY(-5px); box-shadow: 0 2px 6px rgba(9,8,42,0.08), 0 20px 48px rgba(9,8,42,0.12); border-color: rgba(15,7,189,0.18); }
.svc-card:hover::after { display: none; }
.svc-card::before { content: ''; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(260px circle at var(--mx) var(--my), rgba(15,7,189,0.09), transparent 70%); opacity: 0; transition: opacity 0.3s; pointer-events: none; z-index: 0; }
.svc-card:hover::before { opacity: 1; }
.svc-card > * { position: relative; z-index: 1; }

.svc-card-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.svc-ico {
  width: 46px; height: 46px; border-radius: 13px;
  background: linear-gradient(135deg, rgba(15,7,189,0.08), rgba(15,7,189,0.04)); color: var(--indigo);
  display: flex; align-items: center; justify-content: center;
  transition: background .24s, transform .24s cubic-bezier(0.22,1,0.36,1), color .24s;
}
.svc-ico svg { width: 23px; height: 23px; }
.svc-card:hover .svc-ico { background: linear-gradient(135deg, rgba(15,7,189,0.14), rgba(15,7,189,0.08)); transform: scale(1.06); color: var(--indigo); }
.svc-no { font-size: 12px; font-weight: 700; color: var(--text3); letter-spacing: 0.08em; }

.svc-name {
  font-size: 15px; font-weight: 600; color: var(--text);
  margin-bottom: 7px; letter-spacing: 0; line-height: 1.35;
  transition: color 0.25s;
}
.svc-card:hover .svc-name { color: var(--indigo); }
.svc-desc { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.72; margin-bottom: 16px; flex: 1; }
.svc-tags {
  font-size: 10px; color: var(--text3); font-weight: 600; letter-spacing: 0.02em;
  line-height: 1.6; padding-top: 15px; border-top: 1px solid var(--border);
  text-transform: uppercase;
}

/* ── ASSUMPTIONS ── */
.assumption-block { border-top: 1px solid var(--border); }
.assumption-item { border-bottom: 1px solid var(--border); }
.assumption-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}
@media (min-width: 768px) {
  .assumption-grid { grid-template-columns: 1fr 1fr; }
}
.a-believe {
  padding: 24px 0;
  border-bottom: 1px solid var(--border);
}
.a-see {
  padding: 24px 0;
}
@media (min-width: 768px) {
  .a-believe { padding: 28px 32px 28px 0; border-bottom: none; border-right: 1px solid var(--border); }
  .a-see { padding: 28px 0 28px 32px; }
}
.a-label {
  font-size: 10px; font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase;
  margin-bottom: 8px;
}
.a-label-b { color: var(--text3); }
.a-label-s { color: var(--indigo); }
.a-num {
  font-size: 12px; font-weight: 700; color: var(--indigo);
  letter-spacing: 0.12em; margin-bottom: 14px;
}
.a-num::after { content: ''; display: inline-block; width: 22px; height: 1px; background: rgba(201,152,26,0.5); vertical-align: middle; margin-left: 10px; }
.a-believe-text { font-size: 15px; font-weight: 600; color: var(--text); line-height: 1.45; letter-spacing: 0; }
.a-see-text { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.8; }

/* ── PRICING ── */
.pricing-grid {
  display: grid; grid-template-columns: 1fr; gap: 0;
  background: #fff; border: 1px solid var(--border); border-radius: 18px;
  padding: 10px 28px; box-shadow: 0 16px 40px rgba(9,8,42,0.05);
}
@media (min-width: 768px) {
  .pricing-grid { grid-template-columns: 1fr 1fr; padding: 14px 40px; }
  .pricing-col:first-child { padding-right: 40px; }
  .pricing-col:last-child { padding-left: 40px; border-left: 1px solid var(--border); }
}

.pricing-row {
  display: flex; align-items: flex-start;
  justify-content: space-between; gap: 16px;
  padding: 16px 0; border-bottom: 1px solid rgba(9,8,42,0.06);
}
.pricing-row:first-child { border-top: 1px solid rgba(9,8,42,0.06); }
.pricing-name { font-size: 13.5px; font-weight: 600; color: var(--text); margin-bottom: 2px; }
.pricing-sub { font-size: 11px; color: var(--text3); }
.pricing-price {
  font-size: 14px; font-weight: 700; color: var(--indigo);
  white-space: nowrap; letter-spacing: 0;
}
.pricing-note { font-size: 11px; color: var(--text3); margin-top: 12px; line-height: 1.7; }

/* ── FOUNDER (ivory light section — primary class) ── */
.founder-light {
  background: var(--ivory);
  position: relative;
  overflow: hidden;
  color: var(--text);
}
.founder-light .s-title { color: var(--indigo); }
/* founder portrait gets real depth (was flat) */
#founder .split img, .founder-light .split img { box-shadow: 0 26px 54px -30px rgba(9,8,42,0.42); border-radius: 12px; }
.founder-light p,
.founder-light .s-lead,
.founder-light .note-sign,
.founder-light .founder-name,
.founder-light .founder-role { color: var(--text); }
.founder-light::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: linear-gradient(180deg, var(--gold), transparent 70%);
}

/* ── FOUNDER DARK (legacy class — keep for backward compat) ── */
.founder-dark {
  position: relative; overflow: hidden;
  background: var(--ivory);
  color: var(--text);
}
.founder-dark .s-title,
.founder-dark p,
.founder-dark .s-lead,
.founder-dark .founder-name,
.founder-dark .founder-role,
.founder-dark blockquote,
.founder-dark .pull-quote,
.founder-dark .note-sign { color: var(--text); }
.founder-dark::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: linear-gradient(180deg, var(--gold), transparent 70%);
}
.founder-quote {
  font-size: clamp(1.2rem, 2.6vw, 1.7rem); font-weight: 600;
  line-height: 1.4; letter-spacing: -0.015em; color: var(--text);
  max-width: 20ch; margin: 6px 0 22px;
}
.founder-quote .hl { color: var(--indigo); }
.founder-body p {
  font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.85;
  margin-bottom: 12px; max-width: 64ch;
}
.founder-sig {
  display: flex; align-items: center; gap: 14px;
  margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--border);
}
.founder-avatar {
  width: 46px; height: 46px; border-radius: 50%;
  background: rgba(201,152,26,0.12); border: 1.5px solid rgba(201,152,26,0.55);
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; color: var(--gold); flex-shrink: 0;
}
.founder-name { font-size: 14px; font-weight: 700; color: var(--text); }
.founder-title { font-size: 11.5px; color: var(--text3); margin-top: 2px; }
.founder-dark .btn-arrow { color: var(--indigo); }

/* ── GUIDE BOX ── */
.guide-box {
  display: grid; grid-template-columns: 1fr;
  gap: 20px; padding: 26px;
  border: 1px solid var(--border); border-radius: 8px;
  background: var(--white);
}
@media (min-width: 768px) {
  .guide-box { grid-template-columns: 1fr auto; gap: 32px; padding: 32px; align-items: center; }
}
.guide-label { font-size: 10.5px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--indigo); margin-bottom: 7px; }
.guide-title { font-size: clamp(1.1rem, 2.5vw, 1.35rem); font-weight: 700; color: var(--text); margin-bottom: 8px; line-height: 1.38; letter-spacing: 0; }
.guide-desc { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.72; margin-bottom: 16px; }
.guide-pts li {
  font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); padding: 5px 0;
  display: flex; gap: 8px; line-height: 1.5;
}
.guide-pts li::before { content: '✓'; color: var(--gold); font-weight: 700; font-size: 11px; flex-shrink: 0; margin-top: 1px; }
.guide-num { text-align: center; }
.guide-num strong { display: block; font-size: 3rem; font-weight: 700; color: var(--indigo); letter-spacing: -0.04em; line-height: 1; font-variant-numeric: tabular-nums; }
.guide-num small { font-size: 11px; color: var(--text3); }

/* ── FAQ ── */
.faq-list { background: var(--paper); border: 1px solid var(--rule); border-radius: 16px; padding: 4px 24px; box-shadow: var(--shadow-card); }
.faq-item { border-bottom: 1px solid var(--border); }
.faq-list > .faq-item:last-child { border-bottom: none; }
.faq-q {
  padding: 18px 0; display: flex; justify-content: space-between;
  align-items: flex-start; gap: 16px; cursor: pointer;
  border-radius: 8px; transition: background 0.15s;
}
@media (min-width: 1024px) { .faq-q:hover { background: rgba(15,7,189,0.022); } }
.faq-q h4, .faq-q h3,
details.faq-item > summary.faq-q h4, details.faq-item > summary.faq-q h3 {
  font-size: 1.0625rem; font-weight: 600;
  line-height: 1.4; flex: 1; letter-spacing: 0; color: var(--text);
}
.faq-icon {
  width: 20px; height: 20px; border: 1.5px solid var(--border);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 13px; color: var(--text3); flex-shrink: 0;
  transition: all 0.2s; margin-top: 2px;
}
.faq-item.open .faq-icon { background: var(--gold); border-color: var(--gold); color: var(--deep); transform: rotate(45deg); }
.faq-a { display: none; padding: 12px 0 18px; font-size: clamp(15.5px,1.6vw,16.5px); color: var(--text2); line-height: 1.82; max-width: 72ch; }
.faq-item.open .faq-a { display: block; }
@media (min-width: 1024px) { .faq-icon { display: none; } .faq-a { display: block; } }
/* FAQ — <details>/<summary> variant (spec-compliant, crawler-safe; internal pages).
   Reuses .faq-q / .faq-icon / .faq-a base styles + the desktop media query above. */
details.faq-item > summary.faq-q { list-style: none; -webkit-appearance: none; border-left: 3px solid transparent; padding-left: 14px; transition: border-color 0.2s; }
details.faq-item > summary.faq-q::-webkit-details-marker { display: none; }
details.faq-item > summary.faq-q::marker { display: none; }
details.faq-item[open] > summary.faq-q { border-left-color: var(--indigo); }
details.faq-item[open] > summary .faq-icon { background: var(--gold); border-color: var(--gold); color: var(--deep); transform: rotate(45deg); }
details.faq-item[open] > .faq-a { display: block; }
/* Author / review attribution shown above the FAQ on service pages (E-E-A-T) */
.faq-author { font-size: 12px; color: var(--text3); margin: 0 0 16px; max-width: 760px; letter-spacing: .01em; }
.faq-author strong { color: var(--text2); font-weight: 600; }

/* ── CTA STRIP ── */
.cta-strip {
  background: var(--deep); padding: 64px 0;
  position: relative; overflow: hidden; text-align: center;
}
@media (min-width: 768px) { .cta-strip { padding: 80px 0; } }
@media (min-width: 1024px) { .cta-strip { padding: 96px 0; } }
.cta-strip::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: radial-gradient(ellipse at 60% 50%, rgba(15,7,189,0.30) 0%, transparent 65%);
  pointer-events: none;
}
.cta-strip .wrap { position: relative; z-index: 1; }
.cta-strip h2 {
  font-size: clamp(1.7rem, 4.2vw, 2.5rem); font-weight: 700;
  color: white; max-width: 18ch; margin: 10px auto 14px;
  line-height: 1.16; letter-spacing: -0.02em;
}
.cta-strip-sub {
  font-size: clamp(13px, 2vw, 15px); font-weight: 400;
  color: rgba(255,255,255,0.62); max-width: 42ch; margin: 0 auto 32px; line-height: 1.72;
}
.cta-strip-btns { display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; }
/* Fine-print contact/licence line — lifted to AA (12px / .62 = 7.6:1 on the dark strip).
   Shared token: this single change clears the faint line on every .cta-strip.ip page. */
.cta-strip-detail { margin-top: 20px; font-size: 12px; color: rgba(255,255,255,0.62); }
.cta-strip.cta-warm {
  background: linear-gradient(135deg, var(--indigo) 0%, #1309D4 100%);
  border-top: none;
  border-bottom: none;
}
.cta-strip.cta-warm::before { display: none; }
.cta-strip.cta-warm h2 { color: #FFFFFF; }
.cta-strip.cta-warm .cta-strip-sub { color: rgba(255,255,255,0.75); }
.cta-strip.cta-warm .cta-strip-detail { color: rgba(255,255,255,0.62); }
.cta-strip.cta-warm .cta-aurora { display: none; }
.cta-strip.cta-warm .cta-accent { color: var(--gold); }

/* ── Mobile: CTA heading 2-line fix ── */
@media (max-width: 640px) {
  .cta-strip h2 {
    font-size: clamp(1.0rem, 5vw, 1.25rem);
    max-width: none;
    text-align: left;
    margin-left: 0; margin-right: 0;
  }
  .cta-strip h2 br { display: none; }
  .cta-strip-sub { text-align: left; margin-left: 0; margin-right: 0; max-width: none; }
  .cta-strip-btns { justify-content: flex-start; }
  .cta-meta { justify-content: flex-start; flex-wrap: wrap; }
}

/* ── FOOTER ── */
.site-footer {
  background: #060519; padding: 56px 0 24px;
  border-top: 1px solid rgba(255,255,255,0.05);
}
@media (min-width: 768px) { .site-footer { padding: 64px 0 28px; } }
.footer-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 32px;
  margin-bottom: 40px;
}
@media (min-width: 768px) { .footer-grid { grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr 1fr; gap: 28px; } }
.footer-logo-img { height: 30px; width: auto; margin-bottom: 14px; }
@media (min-width: 768px) { .footer-logo-img { height: 34px; } }
.footer-brand p { font-size: 12.5px; color: rgba(255,255,255,0.5); line-height: 1.72; max-width: 26ch; }
.footer-lic { margin-top: 12px; font-size: 10.5px; color: rgba(255,255,255,0.5); line-height: 1.72; }
.footer-cred { margin-top: 14px; padding-top: 13px; border-top: 1px solid rgba(255,255,255,0.08); font-size: 11px; color: rgba(255,255,255,0.6); line-height: 1.7; max-width: 34ch; }
.footer-cred-i { width: 13px; height: 13px; vertical-align: -2px; margin-right: 6px; fill: var(--gold-light); }
.footer-col h6, .footer-col h3 { font-size: 10px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255,255,255,0.8); margin-bottom: 12px; }
.footer-col h6::before, .footer-col h3::before { content: ''; display: block; width: 16px; height: 2px; border-radius: 2px; background: var(--gold); opacity: 0.9; margin-bottom: 9px; }
.footer-col a { display: block; font-size: 12.5px; color: rgba(255,255,255,0.62); padding: 3px 0; transition: color 0.15s, transform 0.15s; }
.footer-col a:hover { color: #fff; transform: translateX(3px); }
/* ── FOOTER SITEMAP ── */
.footer-sitemap {
  border-top: 1px solid rgba(255,255,255,0.08);
  padding: 24px 0 20px;
  display: flex;
  flex-wrap: wrap;
  gap: 20px 48px;
}
.footer-sitemap-hd {
  font-size: 9px; font-weight: 700; letter-spacing: 0.13em; text-transform: uppercase;
  color: rgba(255,255,255,0.35); display: block; margin-bottom: 10px;
}
.footer-sitemap a {
  font-size: 11.5px; color: rgba(255,255,255,0.52); text-decoration: none;
  display: block; line-height: 1.9; transition: color .2s;
}
.footer-sitemap a:hover { color: rgba(255,255,255,0.88); }
@media (max-width: 600px) {
  .footer-sitemap { gap: 16px 28px; }
}

.footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.05); padding-top: 20px; margin-top: 24px;
  display: flex; justify-content: space-between; align-items: center;
  font-size: 11px; color: rgba(255,255,255,0.5);
  flex-wrap: wrap; gap: 8px;
}
.footer-bottom a:hover { color: rgba(255,255,255,0.78); }

/* ── WHATSAPP FAB ── */
.wa-fab {
  position: fixed; bottom: 20px; right: 20px;
  width: 48px; height: 48px; background: #25D366; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 16px rgba(37,211,102,0.40); z-index: 98;
  transition: transform 0.2s;
}
@media (min-width: 768px) { .wa-fab { bottom: 28px; right: 28px; width: 52px; height: 52px; } }
.wa-fab:hover { transform: scale(1.08); }
.wa-fab svg { width: 22px; height: 22px; fill: white; }

/* ── PAGE HERO (inner pages) ── */
.page-hero {
  padding-top: 64px; background: var(--deep);
  padding-bottom: 72px; position: relative; overflow: hidden;
}
@media (min-width: 1024px) { .page-hero { padding-top: 72px; padding-bottom: 96px; } }
.page-hero::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.04) 1px, transparent 1px);
  background-size: 58px 58px;
  -webkit-mask-image: radial-gradient(ellipse 72% 82% at 28% 18%, #000 18%, transparent 78%);
  mask-image: radial-gradient(ellipse 72% 82% at 28% 18%, #000 18%, transparent 78%);
}
.page-hero::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: linear-gradient(90deg, var(--gold), transparent 55%);
  opacity: 0.55;
}
.ph-arc { position: absolute; right: -110px; top: -120px; width: 460px; height: 460px; pointer-events: none; opacity: 0.42; z-index: 0; }
@media (max-width: 700px) { .ph-arc { width: 300px; height: 300px; right: -90px; top: -80px; } }
.fact-strip { display: flex; flex-wrap: wrap; margin-top: 24px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); border-radius: 14px; overflow: hidden; max-width: 720px; }
.fact-strip > div { flex: 1 1 130px; padding: 14px 20px; border-right: 1px solid rgba(255,255,255,0.08); }
.fact-strip > div:last-child { border-right: none; }
.fact-strip b { display: block; font-size: 19px; font-weight: 700; color: #fff; letter-spacing: -0.01em; }
.fact-strip b i { color: var(--gold); font-style: normal; font-weight: 600; font-size: 12.5px; margin-left: 2px; }
.fact-strip span { font-size: 10px; color: rgba(255,255,255,0.5); text-transform: uppercase; letter-spacing: 0.07em; }
.page-hero-inner {
  position: relative; z-index: 1;
  max-width: 1320px; margin: 0 auto; padding: 64px 20px 0;
}
@media (min-width: 768px) { .page-hero-inner { padding: 80px 32px 0; } }
@media (min-width: 1024px) { .page-hero-inner { padding: 96px 40px 0; } }
.breadcrumb { display: flex; gap: 6px; font-size: 11px; color: rgba(255,255,255,0.28); margin-bottom: 18px; }
.breadcrumb a:hover { color: rgba(255,255,255,0.6); }

/* ── TICKER ── */
.ticker-outer { overflow: hidden; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 14px 0; }
.ticker-track { display: flex; animation: ticker 32s linear infinite; }
@media (prefers-reduced-motion: reduce) { .ticker-track { animation: none; } }
.ticker-item { font-size: 10.5px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text3); padding: 0 28px; border-right: 1px solid var(--border); white-space: nowrap; flex-shrink: 0; }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ════════════════════════════════════════════════
   TEXTURE & MOTION  (brand-aligned, restrained)
   ════════════════════════════════════════════════ */

/* ── HERO BACKGROUND — brand blue (restored from D1 light override) ── */
.hero {
  background: linear-gradient(150deg, #06053A 0%, #0C0B95 45%, #0F07BD 75%, #1309D4 100%);
  position: relative;
  overflow: hidden;
}

/* ── HERO TEXT COLOURS — white on dark blue ── */
.hero .hero-title       { color: #FFFFFF; }
.hero .hero-title em    { color: var(--gold); }
.hero .hero-sub,
.hero .hero-pitch       { color: rgba(255,255,255,0.84); }
.hero .hero-eyebrow,
.hero .eyebrow          { color: rgba(255,255,255,0.65); letter-spacing: 0.12em; }
.hero .hero-eyebrow-line { background: var(--gold); }

/* ── LIGHT-HERO HEADER (Decree §3: the header is dark-on-light over the light
   hero). Applied to migrated light-hero pages via body.lighthero; mirrors the
   .art-bc treatment — header solid from the top, blue logo, dark nav, indigo CTA.
   Replaces the former white-on-dark homepage hero-nav rules. ── */
body.lighthero .site-header {
  background: rgba(255,255,255,0.92);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  border-bottom-color: var(--border);
  box-shadow: 0 1px 24px rgba(9,8,42,0.07);
}
@media (max-width: 1023px) {
  body.lighthero .site-header {
    background: rgba(251,250,247,0.98);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}
body.lighthero .site-header .logo-on-dark      { display: none; }
body.lighthero .site-header .logo-on-light     { display: block; }
body.lighthero .site-header .nav-links a       { color: var(--text2); }
body.lighthero .site-header .nav-links a:hover { color: var(--indigo); }
body.lighthero .site-header .nav-cta           { background: var(--indigo); color: #fff !important; }
body.lighthero .site-header .nav-cta:hover     { background: var(--indigo-dark) !important; }
body.lighthero .site-header .nav-toggle span   { background: var(--text); }

/* Film grain — quiet richness on dark surfaces */
.grain::after {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: 0.055; mix-blend-mode: overlay;
}

/* Aurora — slow drifting brand glow (colour set per-section) */
.aurora { position: absolute; inset: -14%; z-index: 0; pointer-events: none; background-size: 165% 165%; }
.hero-aurora {
  background:
    radial-gradient(38% 44% at 72% 14%, rgba(201,152,26,0.14), transparent 70%),
    radial-gradient(44% 52% at 22% 84%, rgba(74,90,230,0.22), transparent 72%);
}
.cta-aurora {
  background:
    radial-gradient(38% 50% at 20% 26%, rgba(22,14,214,0.55), transparent 68%),
    radial-gradient(32% 44% at 82% 74%, rgba(201,152,26,0.18), transparent 70%),
    radial-gradient(46% 56% at 60% 114%, rgba(15,7,189,0.42), transparent 72%);
}
@media (prefers-reduced-motion: no-preference) {
  .aurora { animation: auroraShift 26s ease-in-out infinite alternate; }
}
@keyframes auroraShift {
  0%   { background-position: 14% 16%, 84% 78%, 56% 100%; }
  100% { background-position: 32% 38%, 68% 58%, 40% 76%; }
}

/* keep real content above the decorative layers */
.hero-inner,
.cta-strip .wrap,
.founder-dark .wrap { position: relative; z-index: 2; }

/* CTA strip — showpiece treatment */
.cta-strip { background: #070620; }
.cta-strip::before { background: radial-gradient(125% 115% at 50% 45%, transparent 42%, rgba(0,0,0,0.45) 100%); }
.cta-accent { color: var(--gold); }
.btn-lg { padding: 16px 34px; font-size: 14px; }
.cta-meta {
  display: flex; align-items: center; justify-content: center;
  flex-wrap: wrap; gap: 9px 14px; margin-top: 22px;
  font-size: 11.5px; color: rgba(255,255,255,0.42);
}
.cta-meta b { color: rgba(255,255,255,0.72); font-weight: 600; }
.cta-meta .dot { width: 3px; height: 3px; border-radius: 50%; background: rgba(255,255,255,0.28); }

/* ════════════════════════════════════════════════
   INNER-PAGE TEMPLATE COMPONENTS (reused on every sub-page)
   ════════════════════════════════════════════════ */
/* Inner-page hero — refined, unmistakably BLUE premium gradient.
   Every stop stays in the indigo family (focal #1B13D6 → true brand-indigo #160FB0
   → deep blue-navy #0B0836), so the field reads blue, never muddy near-black.
   White text clears 9.95:1+ on every stop. */
.page-hero { background: radial-gradient(135% 125% at 78% -10%, #1B13D6 0%, #160FB0 34%, #0E0A5E 70%, #0B0836 100%); background-color: var(--deep); padding-bottom: 56px; }
@media (min-width: 1024px) { .page-hero { padding-bottom: 76px; } }
.page-hero-inner { z-index: 2; }
.ip-rule { width: 46px; height: 3px; background: var(--gold); border-radius: 3px; margin: 0 0 20px; }
.ph-h1 {
  font-size: clamp(2.05rem, 5.2vw, 3.4rem); font-weight: 700; letter-spacing: -0.03em;
  line-height: 1.1; color: #fff; max-width: 20ch; margin: 8px 0 18px;
  text-wrap: balance;
}
.ph-h1 em { font-style: normal; color: var(--gold); }
.ph-sub { font-size: clamp(1rem, 2.1vw, 1.15rem); font-weight: 400; color: rgba(255,255,255,0.78); max-width: 58ch; line-height: 1.7; margin-bottom: 28px; }
.ph-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 30px; }
.ph-facts { display: flex; flex-wrap: wrap; gap: 9px 16px; }
.ph-fact { font-size: 12px; color: rgba(255,255,255,0.55); display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.ph-fact b { color: #fff; font-weight: 600; }
.ph-fact + .ph-fact::before { content: ''; width: 3px; height: 3px; border-radius: 50%; background: rgba(255,255,255,0.3); }

.lede { font-size: clamp(15px, 1.7vw, 18px); font-weight: 400; color: var(--text2); line-height: 1.8; max-width: 64ch; }
.lede strong { color: var(--text); font-weight: 600; }

/* Process / steps */
.steps { border-top: 1px solid var(--border); }
.step { display: grid; grid-template-columns: auto 1fr; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--border); align-items: start; }
.step-n { width: 40px; height: 40px; border-radius: 50%; background: rgba(15,7,189,0.07); border: 1px solid rgba(15,7,189,0.16); color: var(--indigo); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; flex-shrink: 0; }
.step-t { font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: 4px; letter-spacing: 0; }
.step-d { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.72; max-width: 62ch; }

/* Honest callout */
.callout { border-left: 2px solid var(--gold); background: var(--ivory); border-radius: 0 12px 12px 0; padding: 24px 28px; }
.callout p { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.8; }
.callout p + p { margin-top: 10px; }
.callout strong { color: var(--text); font-weight: 600; }

/* Price line (reused) */
.priceline { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.priceline .amt { font-size: clamp(1.6rem, 3vw, 2.1rem); font-weight: 700; color: var(--indigo); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.priceline .unit { font-size: 13px; color: var(--text3); }

/* ════════════════════════════════════════════════
   INTERNAL PAGE SYSTEM — editorial, reused across all sub-pages
   ════════════════════════════════════════════════ */

/* Founder / origin note (editorial body) */
.note-body { max-width: 64ch; }
.note-body p { font-size: 15px; color: var(--text2); line-height: 1.92; margin-bottom: 14px; }
.note-body p strong, .note-body p b { color: var(--text); font-weight: 600; }
.note-sign { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--border); font-size: 14px; font-weight: 700; color: var(--text); }
.note-sign span { display: block; font-size: 12px; font-weight: 500; color: var(--text3); margin-top: 3px; letter-spacing: 0.02em; }
/* Legal sub-headings (privacy + terms) — into the brand-blue heading system.
   Without this rule bare <h3> fell back to ink --text, breaking the all-blue
   heading language. 700 weight (never 800/900). Indigo on white = 11.76:1. */
.note-body h3 {
  color: var(--indigo);
  font-weight: 700;
  font-size: 1.05rem;
  letter-spacing: -0.01em;
  line-height: 1.3;
  margin: 22px 0 6px;
}
.note-body h3:first-child { margin-top: 0; }

/* 3-column credentials */
.cols-3 { display: grid; grid-template-columns: 1fr; gap: 20px; }
@media (min-width: 768px) { .cols-3 { grid-template-columns: repeat(3, 1fr); gap: 28px; } }
.col-label { font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--indigo); margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--border); }
.col-body { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.82; }

/* Commitments — quote cards */
.commit-grid { display: grid; grid-template-columns: 1fr; gap: 12px; }
@media (min-width: 700px) { .commit-grid { grid-template-columns: 1fr 1fr; gap: 20px; } }
.commit { position: relative; padding: 22px 22px 22px 28px; background: #fff; border: 1px solid var(--border); border-radius: 16px; transition: border-color .25s, transform .25s; }
.commit:hover { border-color: rgba(15,7,189,0.18); transform: translateY(-3px); }
.commit::before { content: '\201C'; position: absolute; left: 16px; top: 10px; font-size: 38px; line-height: 1; color: rgba(201,152,26,0.55); font-family: Georgia, 'Times New Roman', serif; }
.commit p { font-size: 15px; font-weight: 500; color: var(--text); line-height: 1.65; letter-spacing: 0; }

/* Detail rows (entity / contact) */
.detail-rows { border-top: 1px solid var(--border); max-width: 580px; }
.detail-row { display: grid; grid-template-columns: 130px 1fr; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--border); font-size: clamp(15px,1.6vw,15.5px); align-items: start; }
.detail-row .k { color: var(--text3); font-weight: 700; font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; padding-top: 3px; }
.detail-row .v { color: var(--text2); line-height: 1.65; }
.detail-row .v a { color: var(--indigo); font-weight: 600; }

/* Split (two-column) layout + sticky aside */
.split { display: grid; grid-template-columns: 1fr; gap: 36px; }
@media (min-width: 920px) { .split { grid-template-columns: 1.08fr 0.92fr; gap: 48px; align-items: start; } }
.aside-card { background: var(--ivory); border: 1px solid var(--border); border-radius: 16px; padding: 26px; }
@media (min-width: 920px) { .aside-card.sticky { position: sticky; top: 104px; } }
.aside-card h3 { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 14px; letter-spacing: 0; }
.aside-card + .aside-card { margin-top: 14px; }

/* ── FORM ── */
.form { display: flex; flex-direction: column; gap: 14px; }
.form-head { font-size: 12.5px; font-weight: 600; color: var(--text2); display: inline-flex; align-items: center; gap: 9px; margin-bottom: 2px; }
.form-head::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: #16a34a; box-shadow: 0 0 0 3px rgba(22,163,74,0.16); flex-shrink: 0; }
.field { display: flex; flex-direction: column; gap: 5px; }
.field label { font-size: 12px; font-weight: 600; color: var(--text); }
.field label .req { color: var(--gold); }
.field input, .field select, .field textarea {
  font-family: var(--font); font-size: 16px; color: var(--text); width: 100%;
  background: #fff; border: 1px solid rgba(9,8,42,0.16); border-radius: 9px; padding: 13px 14px;
  transition: border-color .15s, box-shadow .15s;
}
.field textarea { resize: vertical; min-height: 112px; }
.field input::placeholder, .field textarea::placeholder { color: var(--text3); }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--indigo); box-shadow: 0 0 0 3px rgba(15,7,189,0.12); }
.field-row { display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 560px) { .field-row { grid-template-columns: 1fr 1fr; } }
.form-note { font-size: 11.5px; color: var(--text3); line-height: 1.6; }
.form-ok { display: none; padding: 16px 18px; background: rgba(22,163,74,0.08); border: 1px solid rgba(22,163,74,0.3); border-radius: 10px; font-size: 13.5px; color: #15803d; line-height: 1.6; }
.form-ok.show { display: block; }

/* CTA strip — homepage: full brand blue moment (not the soft tint from D1) */
.cta-strip:not(.ip) {
  background: linear-gradient(135deg, var(--indigo) 0%, #1309D4 100%);
}
.cta-strip:not(.ip) .s-title,
.cta-strip:not(.ip) .cta-accent,
.cta-strip:not(.ip) p,
.cta-strip:not(.ip) .cta-meta { color: #FFFFFF; }
.cta-strip:not(.ip) .btn-primary {
  background: var(--gold);
  color: #09082A;
  border-color: var(--gold);
}
.cta-strip:not(.ip) .btn-outline {
  color: #FFFFFF;
  border-color: rgba(255,255,255,0.40);
}
.cta-strip:not(.ip) .btn-outline:hover { background: rgba(255,255,255,0.12); }

/* Internal CTA (no skyline — simpler than homepage) */
.cta-strip.ip { background: #0a0930; }
.cta-strip.ip::before { background: radial-gradient(120% 130% at 50% -10%, rgba(15,7,189,0.28), transparent 62%); }
.cta-rule { width: 46px; height: 3px; background: var(--gold); border-radius: 3px; margin: 0 auto 16px; }

/* ── Premium light cards (gold top accent) ── */
.pcard-grid { display: grid; grid-template-columns: 1fr; gap: 18px; }
@media (min-width: 640px) { .pcard-grid.c2 { grid-template-columns: 1fr 1fr; gap: 20px; } }
@media (min-width: 900px) { .pcard-grid.c3 { grid-template-columns: repeat(3, 1fr); gap: 20px; } }
.pcard { position: relative; background: #fff; border: 1px solid rgba(9,8,42,0.09); border-radius: 16px; padding: 28px 24px 24px; overflow: hidden; display: flex; flex-direction: column; transition: transform 260ms cubic-bezier(0.22,1,0.36,1), box-shadow 260ms cubic-bezier(0.22,1,0.36,1), border-color 260ms; box-shadow: 0 2px 8px rgba(9,8,42,0.04), 0 16px 40px -18px rgba(9,8,42,0.14); --mx: 50%; --my: 50%; }
.pcard:hover { transform: translateY(-5px); box-shadow: 0 2px 6px rgba(9,8,42,0.08), 0 20px 48px rgba(9,8,42,0.12); border-color: rgba(15,7,189,0.14); }
.pcard-ic { width: 42px; height: 42px; border-radius: 11px; background: rgba(15,7,189,0.07); color: var(--indigo); display: flex; align-items: center; justify-content: center; margin-bottom: 12px; }
.pcard-ic svg { width: 23px; height: 23px; }
.pcard h3 { font-size: 15.5px; font-weight: 600; color: var(--text); margin-bottom: 8px; letter-spacing: -0.01em; line-height: 1.3; transition: color .2s; }
.pcard:hover h3 { color: var(--indigo); }
.pcard::before { content: ''; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(260px circle at var(--mx) var(--my), rgba(15,7,189,0.09), transparent 70%); opacity: 0; transition: opacity 0.3s; pointer-events: none; z-index: 0; }
.pcard:hover::before { opacity: 1; }
.pcard::after { content: '→'; position: absolute; bottom: 20px; right: 20px; font-size: 13px; color: var(--indigo); opacity: 0; transform: translateX(-4px); transition: opacity 0.2s, transform 0.22s cubic-bezier(0.22,1,0.36,1); pointer-events: none; z-index: 2; }
.pcard:hover::after { opacity: 1; transform: translateX(0); }
.pcard > * { position: relative; z-index: 1; }
@media (prefers-reduced-motion: reduce) {
  .pcard, .svc-card { transition: border-color .2s !important; }
  .pcard:hover, .svc-card:hover { transform: none !important; box-shadow: 0 1px 2px rgba(9,8,42,0.05), 0 8px 24px rgba(9,8,42,0.06) !important; }
  .pcard::before, .svc-card::before, .pcard::after { display: none !important; }
  .svc-ico, .svc-card:hover .svc-ico { transform: none !important; }
}
.pcard p { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.74; }
.pcard .pcard-tag { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); font-size: 10.5px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text3); }
.pcard .pnum { position: absolute; top: 18px; right: 20px; font-size: 12px; font-weight: 700; color: var(--text3); letter-spacing: 0.06em; }

/* ── Route panels (detailed eligibility blocks) ── */
.route-list { display: grid; gap: 16px; }
.route { background: #fff; border: 1px solid var(--border); border-radius: 16px; padding: 26px; position: relative; overflow: hidden; }
.route::before { content: ''; position: absolute; top: 0; left: 0; bottom: 0; width: 3px; background: linear-gradient(180deg, var(--gold), rgba(201,152,26,0.1)); }
.route-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 880px) { .route-grid { grid-template-columns: 270px 1fr; gap: 36px; } }
.route-n { font-size: 13px; font-weight: 700; color: var(--indigo); letter-spacing: 0.1em; margin-bottom: 10px; font-variant-numeric: tabular-nums; }
.route-title { font-size: 17px; font-weight: 600; color: var(--text); letter-spacing: -0.01em; margin-bottom: 10px; line-height: 1.3; }
.route-th { display: inline-block; font-size: 12px; font-weight: 600; color: var(--text); background: rgba(201,152,26,0.12); border: 1px solid rgba(201,152,26,0.28); border-radius: 8px; padding: 7px 12px; }
.route-applies { margin-top: 14px; font-size: 12px; color: var(--text3); line-height: 1.65; }
.route-applies .lbl { color: var(--text2); font-weight: 700; font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; display: block; margin-bottom: 3px; }
.route-applies .lbl:not(:first-child) { margin-top: 12px; }
.route-body { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.82; }
.route-body p { margin-bottom: 13px; }
.route-body p:last-child { margin-bottom: 0; }
.route-body ul { margin: 12px 0; display: flex; flex-direction: column; gap: 7px; }
.route-body li { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.6; padding-left: 18px; position: relative; }
.route-body li::before { content: ''; position: absolute; left: 0; top: 8px; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); opacity: 0.65; }

/* ── Honest view rows ── */
.honest { border-top: 1px solid var(--border); }
.honest-item { display: grid; grid-template-columns: 1fr; gap: 10px; padding: 22px 0; border-bottom: 1px solid var(--border); }
@media (min-width: 768px) { .honest-item { grid-template-columns: 270px 1fr; gap: 36px; } }
.honest-label { font-size: 16px; font-weight: 600; color: var(--text); letter-spacing: 0; line-height: 1.4; }
.honest-label::before { content: ''; display: block; width: 28px; height: 2px; background: var(--gold); margin-bottom: 10px; }
.honest-body { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.85; }
.honest-n { font-size: 2.0rem; font-weight: 700; color: rgba(201,152,26,0.3); line-height: 1; margin-bottom: 8px; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }

/* Route icon tile + hover */
.route-ic { width: 44px; height: 44px; border-radius: 11px; background: rgba(201,152,26,0.1); border: 1px solid rgba(201,152,26,0.24); color: var(--gold); display: flex; align-items: center; justify-content: center; margin-bottom: 16px; }
.route-ic svg { width: 22px; height: 22px; }
.route { transition: border-color .25s var(--ease-out), box-shadow .25s, transform .25s; }
.route:hover { border-color: rgba(201,152,26,0.32); box-shadow: 0 2px 6px rgba(9,8,42,0.04), 0 22px 46px rgba(9,8,42,0.09); }
.route:hover .route-ic { background: var(--gold); color: #fff; border-color: var(--gold); }
.route-ic { transition: background .25s, color .25s, border-color .25s; }

/* ════════════════════════════════════════════════
   INTERNAL-PAGE CRAFT PASS  (scoped to body.ip — homepage untouched)
   ════════════════════════════════════════════════ */
/* Section-header signature: a gold kicker rule before every eyebrow */
body.ip .eyebrow { display: inline-flex; align-items: center; }
body.ip .eyebrow::before { content: ''; width: 22px; height: 2px; background: var(--gold); border-radius: 2px; margin-right: 12px; flex-shrink: 0; opacity: 0.9; }
/* ── THE DATUM LINE (site-wide brand motion): the eyebrow's gold rule draws itself in on scroll.
   Decorative only (the label text never hides); gated on html.js (no-JS = full); reduced-motion = static. ── */
html.js body.ip .eyebrow::before { transform: scaleX(0); transform-origin: left; }
html.js body.ip .eyebrow.is-drawn::before { transform: scaleX(1); transition: transform 0.55s var(--ease-out); }
@media (prefers-reduced-motion: reduce) { html.js body.ip .eyebrow::before { transform: none !important; } }
body.ip .cta-strip .eyebrow { display: inline-flex; }

/* Confident, tighter internal headings + higher-contrast hero sub */
body.ip .s-title { letter-spacing: -0.028em; line-height: 1.14; }
body.ip .ph-h1 { letter-spacing: -0.032em; }
body.ip .ph-sub { color: rgba(255,255,255,0.8); }
body.ip .section { padding-top: 56px; padding-bottom: 56px; }
@media (min-width: 1024px) { body.ip .section { padding-top: 80px; padding-bottom: 80px; } }

/* Credential strip → premium (gold top hairline, gradient fill, larger numerals) */
.fact-strip { background: linear-gradient(180deg, rgba(255,255,255,0.055), rgba(255,255,255,0.015)); position: relative; }
.fact-strip::before { content: ''; position: absolute; top: 0; left: 22px; right: 22px; height: 1px; background: linear-gradient(90deg, transparent, rgba(201,152,26,0.6), transparent); }
.fact-strip > div { border-right-color: rgba(255,255,255,0.07); }
.fact-strip b { font-size: clamp(1.15rem, 2.2vw, 1.5rem); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }

/* Softer, layered card shadows + icon hover fill — shadow values now managed by CARD DEPTH + TILT SYSTEM block at end of file */
.pcard-ic { transition: background .25s, color .25s; }
.pcard:hover .pcard-ic { background: var(--indigo); color: #fff; }
.pcard .pcard-cost { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); font-size: 14px; font-weight: 700; color: var(--indigo); letter-spacing: 0; font-variant-numeric: tabular-nums; }
.pcard .pcard-cost span { display: block; font-size: 10px; font-weight: 600; color: var(--text3); text-transform: uppercase; letter-spacing: 0.07em; margin-bottom: 4px; }
.pcard .pcard-when { font-size: 13px; color: var(--text2); line-height: 1.7; }
.pcard .pcard-link { margin-top: 12px; display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 700; color: var(--indigo); transition: gap .2s; }
.pcard:hover .pcard-link { gap: 10px; }

/* Decision columns / panels / checklists (service pages) */
.duo { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 760px) { .duo { grid-template-columns: 1fr 1fr; gap: 20px; } }
.panel { background: #fff; border: 1px solid var(--border); border-radius: 16px; padding: 24px 22px; }
.panel.ivory { background: var(--ivory); }
.panel.gold { border-color: rgba(201,152,26,0.3); box-shadow: 0 1px 3px rgba(201,152,26,0.06); }
.panel-h { font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 14px; color: var(--indigo); }
.panel-h.muted { color: var(--text3); }
.checklist { display: flex; flex-direction: column; gap: 10px; }
.checklist li { font-size: clamp(15px,1.6vw,15.5px); color: var(--text2); line-height: 1.55; padding-left: 27px; position: relative; }
.checklist li::before { position: absolute; left: 0; top: 0; font-weight: 700; font-size: 13px; }
.checklist.do li::before { content: '\2713'; color: var(--gold); }
.checklist.alt li::before { content: '\2192'; color: var(--indigo); }
.checklist.no li::before { content: '\2715'; color: var(--text3); }
.checklist.no li { color: var(--text3); }

/* ── FOUNDER PHOTO PLACEHOLDER (P1.5) ── */
.founder-wrap-photo{display:grid;grid-template-columns:1fr;gap:32px;align-items:start;}
@media(min-width:768px){.founder-wrap-photo{grid-template-columns:300px 1fr;gap:48px;}}
/* Note: the :not(:has(img)) rule was removed — the photo placeholder uses a <div><span>,
   not an <img>, so it always triggered the single-column collapse. The 2-col layout
   (300px 1fr) is always used at ≥768px regardless of photo vs placeholder. */
.founder-photo-ph{position:relative;width:100%;max-width:300px;aspect-ratio:4/5;border-radius:14px;overflow:hidden;border:1px solid var(--border);background:linear-gradient(150deg,var(--ivory),color-mix(in srgb,var(--indigo) 8%,var(--ivory)));display:flex;align-items:center;justify-content:center;margin:0 auto 28px;}
@media(min-width:768px){.founder-photo-ph{margin:0;}}
.founder-photo-mono{font-size:64px;font-weight:700;color:var(--indigo);opacity:0.18;letter-spacing:-0.03em;}
.founder-content{flex:1;min-width:0;}
.founder-opener{font-size:clamp(15px,1.6vw,16px);color:var(--text2);line-height:1.75;margin-bottom:24px;font-style:italic;max-width:60ch;}
/* Video slot: hidden until a real video is supplied — avoids large blank dashed box */
.founder-video-slot{display:none;}
/* ── TRUST / CASE CARDS (C1) ── */
.case-cards{display:grid;grid-template-columns:1fr;gap:16px;margin:24px 0;}
@media(min-width:640px){.case-cards{grid-template-columns:repeat(3,1fr);}}
.case-card{background:var(--white);border:1px solid var(--border);border-radius:16px;padding:20px 20px 24px;position:relative;}
.case-card::before{content:'';position:absolute;top:0;left:24px;right:24px;height:2px;background:var(--gold);border-radius:0 0 2px 2px;}
.case-text{font-size:clamp(15px,1.6vw,15.5px);color:var(--text2);line-height:1.75;margin:0;}
/* ── PROOF DISCLAIMER (P1.2) ── */
.proof-disclaimer{font-size:13px;color:var(--text3);text-align:center;margin-top:20px;max-width:60ch;margin-left:auto;margin-right:auto;line-height:1.5;}
/* ── CALL FAB (P2.2) ── */
.call-fab{position:fixed;bottom:80px;right:24px;z-index:900;width:52px;height:52px;border-radius:50%;background:var(--indigo);color:var(--white);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(15,7,189,.35);text-decoration:none;transition:transform .2s,background .2s;}
.call-fab:hover{transform:scale(1.08);background:#1a10d0;}
.call-fab-tooltip{position:absolute;right:64px;top:50%;transform:translateY(-50%);background:var(--deep);color:var(--white);padding:8px 12px;border-radius:8px;font-size:13px;font-weight:500;white-space:nowrap;line-height:1.5;opacity:0;pointer-events:none;transition:opacity .2s;}
.call-fab:hover .call-fab-tooltip,.call-fab:focus .call-fab-tooltip{opacity:1;}
@media(max-width:768px){.call-fab-tooltip{display:none;}}
/* ── STICKY CTA BAR (P2.5) ── */
.sticky-cta-bar{position:fixed;bottom:0;left:0;right:0;z-index:800;background:var(--deep);padding:14px 24px;display:flex;align-items:center;justify-content:center;gap:20px;transform:translateY(100%);transition:transform .3s ease;border-top:1px solid rgba(255,255,255,.08);}
.sticky-cta-bar.visible{transform:translateY(0);}
.sticky-cta-text{color:rgba(255,255,255,.85);font-size:14px;font-weight:500;margin:0;}
.sticky-cta-btn{background:var(--gold);color:var(--deep);padding:9px 20px;border-radius:6px;font-size:13px;font-weight:700;text-decoration:none;white-space:nowrap;transition:opacity .2s;display:inline-block;}
.sticky-cta-btn:hover{opacity:.9;}
.sticky-cta-close{background:none;border:none;color:rgba(255,255,255,.5);font-size:22px;cursor:pointer;padding:4px 8px;transition:color .2s;line-height:1;}
.sticky-cta-close:hover{color:var(--white);}
.sticky-bar-active .wa-fab{bottom:86px;transition:bottom .3s ease;}
.sticky-bar-active .call-fab{bottom:148px;transition:bottom .3s ease;}
@media(max-width:768px){.sticky-cta-text{display:none;}}
/* ── GOLDEN VISA CHECKER TOOL ── */
.checker-wrap{max-width:620px;margin:0 auto;background:var(--white);border:1px solid var(--rule);border-radius:16px;padding:40px;box-shadow:var(--shadow-card-h);}
.checker-progress{height:4px;background:var(--border);border-radius:2px;margin-bottom:32px;overflow:hidden;}
.checker-progress-fill{height:100%;background:var(--indigo);border-radius:2px;transition:width .4s ease;}
.checker-step-label{font-size:12px;font-weight:600;color:var(--text3);letter-spacing:.08em;margin-bottom:12px;}
.checker-q{font-size:clamp(17px,2.2vw,20px);font-weight:700;color:var(--text);margin-bottom:8px;line-height:1.4;font-variant-numeric:tabular-nums;}
.checker-hint{font-size:14px;color:var(--text3);margin-bottom:24px;line-height:1.6;}
.checker-options{display:flex;flex-direction:column;gap:10px;margin-bottom:28px;}
.checker-option{display:flex;align-items:center;gap:14px;padding:14px 18px;border:1.5px solid var(--border);border-radius:10px;cursor:pointer;transition:border-color .15s,background .15s;font-size:15px;color:var(--text);font-weight:500;background:var(--white);text-align:left;width:100%;}
.checker-option:hover{border-color:var(--indigo);background:rgba(15,7,189,.03);}
.checker-option.selected{border-color:var(--gold);background:rgba(201,152,26,.06);}
.checker-option-dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--border);flex-shrink:0;transition:border-color .15s,background .15s;}
.checker-option.selected .checker-option-dot{border-color:var(--gold);background:var(--gold);}
.checker-nav{display:flex;gap:12px;justify-content:space-between;}
.checker-btn-next{background:var(--gold);color:var(--deep);padding:12px 28px;border-radius:8px;font-size:15px;font-weight:600;border:none;cursor:pointer;box-shadow:var(--shadow-gold);transition:opacity .2s,transform .2s,box-shadow .2s;}
.checker-btn-next:hover{transform:translateY(-2px);box-shadow:var(--shadow-gold-h);}
.checker-btn-next:hover{opacity:.9;}
.checker-btn-prev{background:none;border:1.5px solid var(--border);color:var(--text2);padding:12px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:border-color .2s;}
.checker-btn-prev:hover{border-color:var(--text2);}
.checker-result{background:var(--ivory);border-left:3px solid var(--indigo);border-radius:0 10px 10px 0;padding:24px;margin-bottom:24px;}
.checker-result-label{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--indigo);margin-bottom:10px;}
.checker-result-text{font-size:15px;color:var(--text);line-height:1.75;}
.checker-email-group{display:flex;flex-direction:column;gap:8px;margin:20px 0;}
.checker-email-input{padding:14px 16px;border:1.5px solid var(--border);border-radius:8px;font-size:16px;font-family:var(--font);color:var(--text);background:var(--white);transition:border-color .2s;width:100%;box-sizing:border-box;}
.checker-email-input:focus{outline:none;border-color:var(--indigo);}
.checker-submit-btn{background:var(--indigo);color:var(--white);padding:14px 28px;border-radius:8px;font-size:15px;font-weight:700;border:none;cursor:pointer;width:100%;transition:opacity .2s;}
.checker-submit-btn:hover{opacity:.9;}
.checker-step{display:none;}.checker-step.active{display:block;animation:stepIn .25s ease;}
@keyframes stepIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
.checker-confirm{text-align:center;padding:16px 0;}
.checker-confirm-icon{font-size:40px;margin-bottom:16px;}
.checker-confirm-title{font-size:20px;font-weight:700;color:var(--text);margin-bottom:8px;}

/* ── PARTNER LOGOS SECTION ── */
.logos-section { padding:40px 0 36px; border-top:1px solid var(--border); background:var(--white); }
.logos-heading { text-align:center; font-size:11px; font-weight:700; letter-spacing:.12em; color:var(--text3); text-transform:uppercase; margin-bottom:24px; display:block; }
.logos-row { margin-bottom:20px; }
.logos-row:last-child { margin-bottom:0; }
.logos-row-label { font-size:10.5px; font-weight:700; letter-spacing:.1em; color:var(--text3); text-transform:uppercase; text-align:center; margin-bottom:10px; }
.logo-static-grid { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:16px 28px; padding:4px 0; }
.logo-item { height:30px; width:auto; max-width:140px; object-fit:contain; display:block; flex-shrink:0; opacity:0.82; transition:opacity .2s ease; filter:grayscale(20%); }
.logo-item:hover { opacity:1; }
/* Inline contextual grid (inside content sections) */
.logo-inline-strip { display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; padding:20px 0 6px; border-top:1px solid var(--border); margin-top:20px; }
/* White chip so light/white wordmarks (IFZA, DIFC) read on the ivory section
   instead of vanishing. Full opacity + hairline border unifies the strip.
   content-box keeps height:28px as the logo height; padding sits around it. */
.logo-inline-strip .logo-item {
  height:28px; opacity:1;
  background:#FFFFFF;
  border:1px solid var(--border);
  border-radius:6px;
  padding:7px 12px;
  box-sizing:content-box;
}
/* IFZA ships as a PURE-WHITE wordmark (every pixel luminance 255) — invisible on
   the white chip above. Give just IFZA a deep-navy chip so its white mark reads
   (19.45:1), matching the dark-boxed logos already in the strip. Targeted by
   alt + src so it survives either attribute. CSS-only; no asset/HTML change. */
.logo-inline-strip .logo-item[alt="IFZA"],
.logo-inline-strip .logo-item[src*="ifza"] {
  background:#09082A;
  border-color:rgba(255,255,255,0.12);
}
.logo-inline-strip .logo-item:hover { opacity:1; }
.logo-inline-label { font-size:10.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--text3); margin-bottom:0; width:100%; }
.checker-confirm-text{font-size:15px;color:var(--text2);line-height:1.7;}
/* ── BANK CARDS WITH LOGO ── */
.bank-pcard { display:flex; flex-direction:column; }
.bank-logo-wrap { height:52px; display:flex; align-items:center; margin-bottom:16px; padding-bottom:16px; border-bottom:1px solid var(--border); }
/* Real bank logos, optically normalized: each is sized to its own shape (driven by --blh)
   so the heterogeneous set reads at even visual weight in identical card cells — wide
   wordmarks shorter, compact/stacked marks taller (same technique as .zl free-zone logos). */
.bank-logo { display:block; width:auto; max-width:190px; height:var(--blh,30px); object-fit:contain; object-position:left center; flex-shrink:0; }
.bank-logo[data-bank="emirates-nbd"]      { --blh:39px; }
.bank-logo[data-bank="fab"]               { --blh:36px; }
.bank-logo[data-bank="wio"]               { --blh:33px; }
.bank-logo[data-bank="dib"]               { --blh:32px; }
.bank-logo[data-bank="standard-chartered"]{ --blh:30px; }
.bank-logo[data-bank="adcb"]              { --blh:28px; }
.bank-logo[data-bank="hsbc"]              { --blh:27px; }
.bank-logo[data-bank="rakbank"]           { --blh:26px; }
.bank-logo[data-bank="adib"]              { --blh:24px; }
.bank-logo[data-bank="mashreq"]           { --blh:20px; }

/* ── BANK CHIP (D3: uniform typographic treatment) ── */
.bank-chip {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 56px;
  border: 1px solid var(--border, rgba(0,0,0,0.08));
  border-radius: 10px;
  background: var(--ivory);
  font-weight: 700;
  font-size: 15px;
  color: var(--text);
  letter-spacing: -0.01em;
}
.bank-chip-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 12px;
}
@media (max-width:600px) {
  .bank-chip-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ── ZONE CHIP ── typographic network signal (free zones / authorities) when no logos are licensed; reusable across structure/jurisdiction pages */
.zone-net { margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--border); }
.zone-net-label { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text3); margin-bottom: 13px; }
.zone-chip-row { display: flex; flex-wrap: wrap; gap: 9px; }
.zone-chip { display: inline-flex; align-items: center; height: 34px; padding: 0 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--ivory); font-size: 13px; font-weight: 600; color: var(--text2); letter-spacing: -0.005em; }

/* ── ZONE LOGOS ── real free-zone / financial-centre logos, normalized in uniform white cells (reusable) ── */
.zone-logos { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--border); }
.zone-logos-label { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text3); margin-bottom: 16px; }
.zone-logos-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.zl { height: 80px; border: 1px solid var(--border); border-radius: 12px; background: #fff; display: flex; align-items: center; justify-content: center; padding: 12px 18px; box-shadow: 0 1px 2px rgba(9,8,42,0.04); transition: border-color .2s, box-shadow .2s, transform .2s; }
a.zl:hover { border-color: rgba(15,7,189,0.18); box-shadow: var(--shadow-card-h); transform: translateY(-2px); }
/* Optical normalization: each logo is sized to its own shape (driven by --zlh) so all ten read
   at equal visual weight inside identical cells — wide wordmarks shorter, square/compact emblems
   taller. Tuned per logo; this is what makes a heterogeneous logo wall look intentional. */
.zl img { width: auto; max-width: 100%; height: var(--zlh, 28px); object-fit: contain; display: block; }
.zl[data-z="ifza"]        img { --zlh: 23px; }
.zl[data-z="adgm"]        img { --zlh: 26px; }
.zl[data-z="dmcc"]        img { --zlh: 26px; }
.zl[data-z="difc"]        img { --zlh: 23px; }
.zl[data-z="spc"]         img { --zlh: 28px; }
.zl[data-z="meydan"]      img { --zlh: 31px; }
.zl[data-z="dafza"]       img { --zlh: 33px; }
.zl[data-z="jafza"]       img { --zlh: 35px; }
.zl[data-z="dubai-south"] img { --zlh: 42px; }
.zl[data-z="rakez"]       img { --zlh: 46px; }
@media (max-width: 560px) {
  .zone-logos-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .zl { height: 70px; padding: 10px 16px; }
  .zl img { height: calc(var(--zlh, 28px) * 0.9); }
}

/* ── LOGO PLACEHOLDER BOX ── reserved space for real logos; drop image in and remove this */
.logo-ph-box {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--ivory);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 0 14px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text3);
  white-space: nowrap;
  overflow: hidden;
  flex-shrink: 0;
}

/* ════════════════════════════════════════════════
   D4: MOBILE POLISH
   ════════════════════════════════════════════════ */

/* D4 §11 — section vertical padding tighter on mobile */
@media (max-width:768px) {
  section, .section { padding-top: 44px; padding-bottom: 44px; }
}
@media (max-width:480px) {
  section, .section { padding-top: 36px; padding-bottom: 36px; }
}

/* D4 §12 — tap targets ≥ 44px */
.nav-link, .mob-sub a, .nav-toggle,
.wa-fab, .btn, button,
details.faq-item summary { min-height: 44px; }

/* D4 §13 — prevent iOS zoom on form inputs */
@media (max-width:768px) {
  input, select, textarea { font-size: 16px !important; }
}

/* D4 §14 — compare table: shrink + reveal the cost column on mobile.
   2-col cost/fee tables (golden-visa, mainland) fit without scroll on narrow phones.
   The 5-col free-zone table uses .zone-cards swap (see end of file).
   The d-matrix on company-setup uses .d-matrix-cards swap (existing). */
@media (max-width: 640px) {
  .compare-table { min-width: 0; width: 100%; }
  .compare-table th,
  .compare-table td { padding: 9px 10px; font-size: 12.5px; white-space: normal; }
  .compare-table .row-label { font-size: 12px; }
}

/* D4 §15 — consistent 20px horizontal gutters on mobile */
@media (max-width:768px) {
  .container, .inner { padding-left: 20px; padding-right: 20px; }
}

/* D4 §16 — FAB + sticky CTA must not overlap */
@media (max-width:768px) {
  .wa-fab { bottom: 16px; }
  .call-fab { bottom: 72px; }
}
/* When sticky bar is visible on mobile, push FABs above it */
@media (max-width:768px) {
  .sticky-bar-active .wa-fab { bottom: 72px; }
  .sticky-bar-active .call-fab { bottom: 132px; }
}

/* D4 §17 — hero H1 must not overflow at 360px (floor synced to new desktop ceilings) */
@media (max-width:400px) {
  .hero .hero-title, .ph-h1 { font-size: clamp(1.65rem, 7vw, 2.05rem) !important; }
}

/* ── TESTIMONIAL CARDS (tcard) ── */
.tcard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
}
.tcard {
  background: #fff;
  border: 1px solid var(--border, rgba(0,0,0,0.08));
  border-top: 3px solid var(--indigo);
  border-radius: 14px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.tcard-body {
  font-size: 1.0625rem;
  line-height: 1.72;
  color: var(--text2);
  font-style: italic;
  flex: 1;
}
.tcard-foot { display: flex; flex-direction: column; gap: 4px; }
.tcard-name { font-weight: 700; color: var(--text); font-size: 0.95rem; font-style: normal; }
.tcard-title { font-size: 0.85rem; color: var(--text2); }
.tcard-source { font-size: 0.8rem; color: var(--indigo); text-decoration: none; }
.tcard-source:hover { text-decoration: underline; }

/* Verified indicator on testimonial source links.
   Checkmark prefix makes it instantly clear the review is independently verifiable. */
.tcard-source::before {
  content: "\2713\00a0";
  color: var(--indigo);
  font-weight: 700;
}

/* Rating badge — more prominent near testimonials */
.rating-badge { display: inline-flex; margin: 14px 0; }
.rating-badge a {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 0.9rem; font-weight: 700; color: var(--indigo);
  text-decoration: none; padding: 8px 18px;
  border: 1.5px solid var(--indigo); border-radius: 99px;
  transition: background 0.2s, color 0.2s;
}
.rating-badge a:hover { background: var(--indigo); color: #fff; }

.founder-video-slot {
  width: 100%; margin: 24px 0;
}
.founder-video-slot iframe,
.founder-video-slot > div {
  width: 100%; aspect-ratio: 16/9; border-radius: 12px;
}

/* ── MARKETING ENHANCEMENTS ──────────────────────────────────────────────── */

/* 1. Hero primary CTA — subtle breathing pulse.
   Applied to the first .btn-gold inside .hero-actions so only the primary
   booking CTA pulses — not every gold button on the page.
   Also available via explicit class .btn-gold.cta-pulse on any page hero.
   Merged into the existing box-shadow so hover shadow still works correctly.
   Respects prefers-reduced-motion: stops entirely when opted out. */
@keyframes cta-pulse {
  0%, 100% { box-shadow: 0 4px 16px rgba(201,152,26,0.28), 0 0 0 0 rgba(201,152,26,0.40); }
  50%       { box-shadow: 0 4px 16px rgba(201,152,26,0.28), 0 0 0 8px rgba(201,152,26,0); }
}
.btn-gold.cta-pulse,
.hero-actions .btn-gold:first-child,
.hero-actions .btn-primary:first-child {
  animation: cta-pulse 2.8s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
  .btn-gold.cta-pulse,
  .hero-actions .btn-gold:first-child,
  .hero-actions .btn-primary:first-child {
    animation: none;
  }
}

/* 2. Sticky CTA bar action button.
   Deep-ink #09082A on gold = 7.40:1 (WCAG AA). White-on-gold would be 2.63:1
   (FAIL) — keep deep ink, consistent with the locked gold-fill button policy. */
.sticky-cta-bar .sticky-cta-btn {
  background: var(--gold);
  color: #09082A;
  font-weight: 700;
}
.sticky-cta-bar .sticky-cta-btn:hover { opacity: 0.88; }


/* ════════════════════════════════════════════════
   UX IMPROVEMENTS — NNGroup audit pass
   All changes are additive; they do not touch homepage-fenced HTML.
   ════════════════════════════════════════════════ */

/* ── 1a. SECTION SEPARATORS — subtle visual break between adjacent light sections ── */
.section + .section {
  border-top: 1px solid rgba(15,7,189,0.06);
}
/* Suppress between dark/proof sections that already carry their own boundary */
.bg-deep + .section,
.section + .bg-deep,
.cta-strip + .section,
.section + .cta-strip,
.proof-wrap + .section,
.section + .proof-wrap,
.logos-section + .section,
.section + .logos-section {
  border-top: none;
}

/* ── 1b. CARD HOVER — premium soft-deep, blue-tinted shadow + lift ──
   Refreshed (2026) to the spcfz/Meydan "soft + depth" stacked-shadow language,
   kept in the brand indigo so the hover reads as DMC, not a generic drop shadow.
   Grouped across every inner-page card type for one consistent interaction. */
.pcard:hover,
.route:hover,
.tcard:hover,
.case-card:hover,
.commit:hover {
  transform: translateY(-5px);
  box-shadow: 0 2px 6px rgba(9,8,42,0.08), 0 20px 48px rgba(9,8,42,0.12);
}
.svc-card:hover {
  box-shadow: 0 2px 6px rgba(9,8,42,0.08), 0 20px 48px rgba(9,8,42,0.12);
}
@media (prefers-reduced-motion: reduce) {
  .pcard:hover, .route:hover, .tcard:hover, .case-card:hover, .commit:hover { transform: none; }
}

/* ── 2a. HERO CTA BUTTONS — full-width stacked on narrow mobile ── */
@media (max-width: 600px) {
  .hero-actions {
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }
  .hero-actions .btn-gold,
  .hero-actions .btn-outline-ink,
  .hero-actions .btn-primary,
  .hero-actions .btn-outline-light,
  .hero-actions .btn-outline-white {
    width: 100%;
    text-align: center;
    justify-content: center;
  }
}

/* ── 2b. PREMIUM CARD GRIDS — single column below 600px ── */
@media (max-width: 600px) {
  .pcard-grid.c2,
  .pcard-grid.c3 {
    grid-template-columns: 1fr;
  }
}

/* ── 2c. NAVIGATION DROPDOWN — legible min-width on 768–1024px tablets ── */
@media (max-width: 1024px) and (min-width: 769px) {
  .nav-dd {
    min-width: 220px;
  }
}

/* ── 3a. FORM SUBMIT BUTTON — full-width on mobile ── */
@media (max-width: 600px) {
  .form .btn-gold,
  .form .btn-primary,
  .form [type="submit"] {
    width: 100% !important;
    justify-content: center;
  }
}

/* ── 3b. FORM SUCCESS STATE — branded indigo (overrides earlier generic green) ── */
.form-ok {
  border-left: 4px solid var(--indigo) !important;
  background: rgba(15,7,189,0.04) !important;
  padding: 20px !important;
  border-radius: 8px !important;
  color: var(--indigo) !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
}

/* ── 4. FOCUS STATES — keyboard-safe accessible ring ── */
/* :focus-visible fires only for keyboard/assistive navigation; mouse clicks do
   not trigger it, so sighted pointer users see no persistent outline rings. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
summary:focus-visible {
  outline: 2px solid var(--indigo);
  outline-offset: 3px;
  border-radius: 3px;
}

/* ════════════════════════════════════════════════
   BRAND FORM FOCUS RING — global layer
   The .field-scoped rule (line ~1025) already covers form components
   inside the .field wrapper. This global catch-all covers standalone
   inputs outside that wrapper (checker tool, inline search, etc.).
   Uses 0.15 opacity vs the 0.12 in .field — slightly more visible
   on unstyled contexts. No !important — specificity cascade is correct.
   ════════════════════════════════════════════════ */
input:focus, select:focus, textarea:focus {
  border-color: var(--indigo);
  box-shadow: 0 0 0 3px rgba(15,7,189,0.15);
  outline: none;
}

/* ════════════════════════════════════════════════
   BRAND SCROLLBAR — webkit
   Track: warm off-white (matches ivory page backgrounds).
   Thumb: indigo (primary brand trust colour) → gold on hover
   (the one interaction moment gold is permitted: hover state on dark).
   Keeps the indigo/gold brand system even at the OS chrome level.
   ════════════════════════════════════════════════ */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: #f0ede6; }
::-webkit-scrollbar-thumb { background: var(--indigo); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--gold); }

/* ════════════════════════════════════════════════════════════════════════
   MOTION LIBRARY v2  +  IMAGE PLACEHOLDERS   (2026 refresh — fully additive)
   ────────────────────────────────────────────────────────────────────────
   Layers on the EXISTING `.reveal → .visible` IntersectionObserver already
   wired into every page (no JS change needed for the CSS reveal variants).
   Reference inspiration: spcfz.ae / IFZA / Meydan FZ / Apple — adapted to the
   LOCKED DMC system: blue-dominant, gold highlights-only, Montserrat 700,
   never bouncy. Every transform/clip below is neutralised under
   prefers-reduced-motion at the foot of this block.
   ════════════════════════════════════════════════════════════════════════ */

/* ── Reveal variants (add alongside `.reveal`; the observer toggles `.visible`) ── */
/* Figure / image clip-wipe — reveals upward behind its own overflow box.
   Overrides the base translateY/blur so a figure gets ONE clean wipe, not two moves. */
.reveal.reveal-clip {
  transform: none; filter: none;
  clip-path: inset(0 0 100% 0);
  transition: clip-path 1.05s var(--ease-out), opacity 0.9s var(--ease-out);
}
.reveal.reveal-clip.visible { clip-path: inset(0 0 0 0); }

/* Directional slides for side-by-side / split content (skips the blur). */
.reveal.reveal-left  { transform: translateX(-32px); filter: none; }
.reveal.reveal-right { transform: translateX(32px);  filter: none; }

/* ── Animated gold underline (opt-in on a heading that also carries `.reveal`) ──
   Decorative gold bar (not text) → contrast-safe on light surfaces. */
.ul-draw { position: relative; }
.ul-draw::after {
  content: ''; position: absolute; left: 0; bottom: -12px;
  width: 48px; height: 3px; border-radius: 3px; background: var(--gold);
  transform: scaleX(0); transform-origin: left;
  transition: transform 0.8s var(--ease-out) 0.25s;
}
.ul-draw.visible::after { transform: scaleX(1); }
.ul-draw.ul-center::after { left: 50%; transform: translateX(-50%) scaleX(0); }
.ul-draw.ul-center.visible::after { transform: translateX(-50%) scaleX(1); }

/* ── CTA / link micro-accents (IFZA-style sliding arrow) ──
   Opt-in: structure as  <a class="lnk-arrow">Text <span class="arr">→</span></a> */
.lnk-arrow .arr { display: inline-block; transition: transform 0.25s var(--ease-out); }
.lnk-arrow:hover .arr, .lnk-arrow:focus-visible .arr { transform: translateX(4px); }
/* Restrained gold accent-dot that can lead an eyebrow/label (one moment, decorative). */
.acc-dot { position: relative; padding-left: 16px; }
.acc-dot::before {
  content: ''; position: absolute; left: 0; top: 50%; width: 7px; height: 7px;
  margin-top: -3.5px; border-radius: 50%; background: var(--gold);
  box-shadow: 0 0 0 4px rgba(201,152,26,0.16);
}

/* ── Form-field micro-interactions ("field-specific") ──
   Subtle focus lift + label highlight; reuses the existing focus ring/border. */
.field input, .field select, .field textarea {
  transition: border-color 0.2s var(--ease-out), box-shadow 0.2s var(--ease-out), transform 0.2s var(--ease-out);
}
.field input:focus, .field select:focus, .field textarea:focus { transform: translateY(-1px); }
.field:focus-within label { color: var(--indigo); }
.field:focus-within label .req { color: var(--gold); }

/* ════════════════════════════════════════════════════════════════════════
   IMAGE PLACEHOLDERS (phase-2 ready)
   Reuses the proven `.founder-photo-ph` recipe (aspect-ratio + ivory→indigo
   gradient + overflow). A placeholder carries NO <img> (the SEO gate requires
   alt on every <img>); the real image is a commented <img alt="…"> template
   inside. When that <img> is uncommented, `:has(img)` hides the label and the
   image fills the frame — all scrim/grade/zoom "formatting on top" is pre-baked.
   ════════════════════════════════════════════════════════════════════════ */
.img-ph {
  position: relative; width: 100%; border-radius: 14px; overflow: hidden;
  border: 1px solid var(--border);
  background: linear-gradient(150deg, var(--ivory), color-mix(in srgb, var(--indigo) 7%, var(--ivory)));
  display: flex; align-items: center; justify-content: center;
}
.img-ph__label {
  display: inline-flex; align-items: center; gap: 9px; padding: 0 18px; text-align: center;
  font-size: 11.5px; font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase;
  color: var(--text3); line-height: 1.5;
}
.img-ph__label svg { width: 18px; height: 18px; stroke: var(--indigo); opacity: 0.5; flex-shrink: 0; }
.img-ph > img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
}
/* Phase-2: when a real <img> is dropped in, hide the holding label automatically. */
.img-ph:has(img) .img-ph__label { display: none; }
/* Hide the placeholder box entirely when no image is present — avoids a large blank area.
   When a real <img> is added, the :not(:has(img)) no longer matches and the box reappears. */
.img-ph:not(:has(img)) { display: none; }

/* Aspect-ratio variants */
.img-ph--wide   { aspect-ratio: 16 / 9; }
.img-ph--photo  { aspect-ratio: 4 / 5; }
.img-ph--square { aspect-ratio: 1 / 1; }
.img-ph--hero   { aspect-ratio: 4 / 3; }
.img-ph--tall   { aspect-ratio: 3 / 4; }

/* Pre-baked "formatting on top / filters" the owner asked to have ready: */
.img-ph--scrim::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to top, rgba(9,8,42,0.55), transparent 62%);
}
.img-ph--scrim:not(:has(img))::after { display: none; }      /* no dark veil over an empty box */
.img-ph--grade > img { filter: saturate(1.05) contrast(1.02); }
.img-ph--zoom  > img { transition: transform 0.9s var(--ease-out); }
.img-ph--zoom:hover > img { transform: scale(1.04); }
/* A caption that rides over the bottom of a scrimmed image (shown only with an image). */
.img-ph__cap {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 16px 18px;
  font-size: 12.5px; font-weight: 600; color: #fff; display: none;
}
.img-ph:has(img) .img-ph__cap { display: block; }

/* ── Inner-page hero photographic layer (spcfz/IFZA/Meydan scrim look) ──
   First child of `.page-hero`; sits behind `.page-hero-inner` (z-index:2).
   INERT until a real <img> is added → zero change to the current hero now. */
.page-hero-media { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.page-hero-media:not(:has(img)) { display: none; }
.page-hero-media > img { width: 100%; height: 100%; object-fit: cover; opacity: 0.30; }
.page-hero-media::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(100deg, rgba(11,8,54,0.92) 0%, rgba(11,8,54,0.55) 50%, rgba(11,8,54,0.22) 100%);
}

/* ── Light figure parallax — progressive enhancement, NO JS ──
   Modern scroll-driven timeline; degrades to the static clip-reveal elsewhere. */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) and (min-width: 1024px) {
    .parallax-fig > img {
      animation: figRise linear both;
      animation-timeline: view();
      animation-range: entry 0% cover 40%;
    }
  }
}
@keyframes figRise { from { transform: translateY(26px); } to { transform: translateY(0); } }

/* ── Reduced-motion guard for everything added above ── */
@media (prefers-reduced-motion: reduce) {
  .reveal.reveal-clip { clip-path: none; transition: none; }
  .reveal.reveal-left, .reveal.reveal-right { transform: none; }
  .ul-draw::after, .ul-draw.ul-center::after { transform: scaleX(1); transition: none; }
  .ul-draw.ul-center::after { transform: translateX(-50%) scaleX(1); }
  .lnk-arrow .arr { transition: none; }
  .field input:focus, .field select:focus, .field textarea:focus { transform: none; }
  .img-ph--zoom:hover > img { transform: none; }
  .parallax-fig > img { animation: none; }
}

/* Phase-2 enablers for the EXISTING founder placeholders (homepage `.founder-photo-ph`
   + the hidden `.founder-video-slot`): drop in a real <img>/<iframe> and it fills, while
   the monogram / "coming soon" state resolves automatically — no markup change needed. */
.founder-photo-ph > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.founder-photo-ph:has(img) .founder-photo-mono { display: none; }
.founder-video-slot:has(iframe) { display: block; }
.founder-video-slot:has(iframe) > div { display: none; }

/* ════════════════════════════════════════════════════════════════════════
   REVENUE MACHINERY — wizard · calculators · consent · trust · booking modal
   All reuse design tokens. Titles 700 max. Inputs 16px (no iOS zoom).
   Tap targets ≥48px. AA contrast on every surface. (dmc.js drives behaviour.)
   ════════════════════════════════════════════════════════════════════════ */

/* ── CONSENT BANNER (opt-in; pixels load only after Accept) ── */
body.dmc-consent-open .wa-fab, body.dmc-consent-open .call-fab { opacity: 0; pointer-events: none; transition: opacity .25s; }
.mobile-nav.open { z-index: 450; }
.dmc-consent {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 400;
  background: var(--deep); color: #fff;
  border-top: 2px solid var(--gold);
  box-shadow: 0 -12px 40px rgba(9,8,42,0.28);
  animation: dmcSlideUp .4s var(--ease-out) both;
}
@keyframes dmcSlideUp { from { transform: translateY(100%); } to { transform: none; } }
.dmc-consent-in {
  max-width: 1320px; margin: 0 auto; padding: 16px 20px;
  display: flex; gap: 16px 24px; align-items: center; justify-content: space-between; flex-wrap: wrap;
}
.dmc-consent-txt { font-size: 13.5px; line-height: 1.6; color: rgba(255,255,255,0.86); max-width: 760px; margin: 0; }
.dmc-consent-txt a { color: var(--gold-light); text-decoration: underline; }
.dmc-consent-btns { display: flex; gap: 10px; flex-shrink: 0; }
.dmc-consent button {
  min-height: 48px; padding: 0 22px; border-radius: 8px; font-family: var(--font);
  font-weight: 600; font-size: 14px; transition: transform .15s var(--ease), background .2s;
}
.dmc-consent-yes { background: var(--gold); color: var(--deep); }
.dmc-consent-yes:hover { transform: translateY(-1px); background: var(--gold-light); }
.dmc-consent-no { background: rgba(255,255,255,0.10); color: #fff; border: 1px solid rgba(255,255,255,0.28); }
.dmc-consent-no:hover { background: rgba(255,255,255,0.18); }
@media (max-width: 560px) { .dmc-consent-btns { width: 100%; } .dmc-consent button { flex: 1; } }

/* ── WIZARD (multi-route qualification) ── */
.dmc-wiz-intro { text-align: center; max-width: 640px; margin: 0 auto 30px; }
.dmc-wiz-intro .eyebrow { color: var(--indigo); }
.dmc-wiz-intro .s-lead { margin-left: auto; margin-right: auto; }
.dmc-wizard {
  background: var(--white); border: 1px solid var(--border); border-radius: 16px;
  box-shadow: 0 24px 70px rgba(9,8,42,0.14), 0 2px 0 var(--indigo) inset;
  padding: 28px 24px 30px; max-width: 600px; margin: 0 auto; position: relative; overflow: hidden;
}
.dmc-wizard::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--indigo), var(--gold)); }
@media (min-width: 768px) { .dmc-wizard { padding: 36px 40px 40px; } }
.dmc-wiz-bar { height: 4px; background: rgba(15,7,189,0.10); border-radius: 99px; margin-bottom: 22px; overflow: hidden; }
.dmc-wiz-bar > span { display: block; height: 100%; background: linear-gradient(90deg, var(--indigo), var(--gold)); border-radius: 99px; transition: width .4s var(--ease-out); }
.dmc-wiz-eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--indigo); margin-bottom: 8px; }
.dmc-wiz-q { font-size: 21px; font-weight: 700; line-height: 1.25; color: var(--text); margin-bottom: 8px; }
@media (min-width: 768px) { .dmc-wiz-q { font-size: 24px; } }
.dmc-wiz-sub { font-size: 14.5px; color: var(--text2); line-height: 1.6; margin-bottom: 20px; }
.dmc-wiz-opts { display: grid; gap: 10px; }
.dmc-wiz-opt {
  display: flex; flex-direction: column; gap: 3px; text-align: left;
  min-height: 56px; padding: 14px 18px; border-radius: 11px;
  background: var(--white); border: 1.5px solid var(--border); color: var(--text);
  font-family: var(--font); transition: border-color .18s, background .18s, transform .12s;
}
.dmc-wiz-opt:hover { border-color: var(--indigo); background: rgba(15,7,189,0.03); transform: translateY(-1px); }
.dmc-wiz-opt:focus-visible { outline: 3px solid rgba(15,7,189,0.35); outline-offset: 2px; }
.dmc-wiz-opt-l { font-size: 15.5px; font-weight: 600; }
.dmc-wiz-opt-h { font-size: 13px; color: var(--text3); font-weight: 400; }
.dmc-wiz-fields { display: grid; gap: 14px; }
.dmc-wiz-field { display: grid; gap: 6px; }
.dmc-wiz-field > span { font-size: 13px; font-weight: 600; color: var(--text2); }
.dmc-wiz-field input, .dmc-wiz-field select, .dmc-wiz-field textarea {
  width: 100%; min-height: 48px; font-size: 16px; font-family: var(--font); color: var(--text);
  padding: 12px 14px; border: 1.5px solid var(--border); border-radius: 10px; background: var(--white);
  transition: border-color .18s, box-shadow .18s;
}
.dmc-wiz-field textarea { min-height: 84px; resize: vertical; }
.dmc-wiz-field input:focus, .dmc-wiz-field select:focus, .dmc-wiz-field textarea:focus {
  outline: none; border-color: var(--indigo); box-shadow: 0 0 0 3px rgba(15,7,189,0.12);
}
.dmc-wiz-err { border-color: #C0392B !important; box-shadow: 0 0 0 3px rgba(192,57,43,0.12) !important; }
.dmc-wiz-nav { margin-top: 20px; }
.dmc-wiz-nav .btn-gold { width: 100%; }
.dmc-wiz-back {
  display: inline-flex; align-items: center; min-height: 40px; margin-bottom: 6px; padding: 0 6px;
  font-family: var(--font); font-size: 13.5px; font-weight: 600; color: var(--text3);
}
.dmc-wiz-back:hover { color: var(--indigo); }
.dmc-wiz-done { text-align: center; }
.dmc-wiz-done-btns { display: grid; gap: 12px; margin: 22px 0 16px; }
@media (min-width: 560px) { .dmc-wiz-done-btns { grid-template-columns: 1fr 1fr; } }
.dmc-wiz-done-btns a, .dmc-wiz-done-btns button { width: 100%; }
.dmc-wiz-trust { font-size: 12px; color: var(--text3); letter-spacing: .02em; }

/* ── CALCULATORS ── */
.dmc-calc { background: var(--white); border: 1px solid var(--border); border-radius: 16px; box-shadow: 0 18px 54px rgba(9,8,42,0.10); padding: 26px 22px; }
@media (min-width: 768px) { .dmc-calc { padding: 34px 36px; display: grid; grid-template-columns: 1.05fr .95fr; gap: 36px; align-items: start; } }
.dmc-calc-controls { display: grid; gap: 20px; }
.dmc-calc-ctl { display: grid; gap: 8px; }
.dmc-calc-ctl-top { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.dmc-calc-ctl-top > span:first-child { font-size: 13.5px; font-weight: 600; color: var(--text2); }
.dmc-calc-ctl-top [data-calc-val] { font-size: 15px; font-weight: 700; color: var(--indigo); }
.dmc-calc input[type="range"] { width: 100%; accent-color: var(--indigo); height: 28px; }
.dmc-calc select, .dmc-calc input[type="number"] {
  width: 100%; min-height: 48px; font-size: 16px; font-family: var(--font); color: var(--text);
  padding: 12px 14px; border: 1.5px solid var(--border); border-radius: 10px; background: var(--white);
}
.dmc-calc select:focus, .dmc-calc input:focus { outline: none; border-color: var(--indigo); box-shadow: 0 0 0 3px rgba(15,7,189,0.12); }
.dmc-calc-seg { display: flex; gap: 8px; flex-wrap: wrap; }
.dmc-calc-seg label {
  flex: 1; min-width: 90px; min-height: 48px; display: flex; align-items: center; justify-content: center;
  padding: 10px; border: 1.5px solid var(--border); border-radius: 10px; font-size: 14px; font-weight: 600; color: var(--text2);
  cursor: pointer; text-align: center; transition: border-color .18s, background .18s, color .18s;
}
.dmc-calc-seg input { position: absolute; opacity: 0; pointer-events: none; }
.dmc-calc-seg input:checked + span, .dmc-calc-seg label:has(input:checked) { }
.dmc-calc-seg label:has(input:checked) { border-color: var(--indigo); background: rgba(15,7,189,0.05); color: var(--indigo); }
.dmc-calc-result { margin-top: 22px; padding: 22px; background: var(--ivory); border-radius: 14px; border: 1px solid var(--border); }
@media (min-width: 768px) { .dmc-calc-result { margin-top: 0; } }
.dmc-calc-output { display: grid; gap: 4px; margin-bottom: 16px; }
.dmc-calc-head { font-size: 26px; font-weight: 700; color: var(--text); line-height: 1.15; }
.dmc-calc-sub { font-size: 14px; font-weight: 600; color: var(--indigo); }
.dmc-calc-row { display: flex; justify-content: space-between; gap: 16px; padding: 9px 0; border-top: 1px solid var(--border); font-size: 13.5px; }
.dmc-calc-row span:first-child { color: var(--text2); } .dmc-calc-row span:last-child { color: var(--text); font-weight: 600; text-align: right; }
.dmc-calc-note { font-size: 12px; color: var(--text3); line-height: 1.55; margin: 14px 0 18px; }
.dmc-calc-cta { width: 100%; }

/* ── TRUST STRIP (regulatory credentials near conversion blocks) ── */
.trust-strip { display: flex; flex-wrap: wrap; gap: 10px 14px; justify-content: center; align-items: stretch; margin: 4px auto 0; max-width: 760px; }
.trust-chip {
  display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; border-radius: 99px;
  background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.16);
  font-size: 12.5px; font-weight: 600; letter-spacing: .01em; color: rgba(255,255,255,0.92);
}
.trust-chip svg { width: 15px; height: 15px; flex-shrink: 0; color: var(--gold-light); }
.trust-strip.on-light .trust-chip { background: var(--ivory); border-color: var(--border); color: var(--text2); }
.trust-strip.on-light .trust-chip svg { color: var(--indigo); }
.trust-note { font-size: 11.5px; color: var(--text3); text-align: center; max-width: 680px; margin: 12px auto 0; line-height: 1.55; }
.trust-strip.on-dark + .trust-note, .cta-strip .trust-note, .page-hero .trust-note { color: rgba(255,255,255,0.6); }

/* ── BOOKING MODAL ── */
.dmc-modal { position: fixed; inset: 0; z-index: 500; display: flex; align-items: center; justify-content: center; padding: 20px; animation: dmcFade .2s ease both; }
@keyframes dmcFade { from { opacity: 0; } to { opacity: 1; } }
.dmc-modal-bd { position: absolute; inset: 0; background: rgba(9,8,42,0.62); backdrop-filter: blur(3px); }
.dmc-modal-panel {
  position: relative; z-index: 1; width: 100%; max-width: 560px; max-height: 86vh; overflow: auto;
  background: var(--white); border-radius: 16px; padding: 30px 26px; box-shadow: 0 40px 100px rgba(9,8,42,0.4);
  animation: dmcPop .26s var(--ease-out) both;
}
@keyframes dmcPop { from { transform: translateY(16px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }
.dmc-modal-x { position: absolute; top: 12px; right: 14px; width: 40px; height: 40px; font-size: 26px; line-height: 1; color: var(--text3); border-radius: 8px; }
.dmc-modal-x:hover { color: var(--text); background: var(--ivory); }
.dmc-book-card { text-align: center; }
.dmc-book-card h3 { font-size: 22px; font-weight: 700; color: var(--text); margin-bottom: 10px; }
.dmc-book-card p { font-size: 14.5px; color: var(--text2); line-height: 1.6; margin-bottom: 22px; }
.dmc-book-card a { display: block; width: 100%; margin-top: 10px; }

@media (prefers-reduced-motion: reduce) {
  .dmc-consent, .dmc-modal, .dmc-modal-panel { animation: none; }
  .dmc-wiz-opt, .dmc-consent button { transition: none; }
}


/* ════════════════════════════════════════════════════════════════════════
   DIAGRAMS  (Part 2 — 2026-06)
   D-A: engagement flow  |  D-B: structure matrix  |  D-C: GV route picker
   D-D: compliance calendar  |  D-E: banking ladder  |  D-F: fit checker
   All: 1.75px SVG stroke, brand tokens, mobile-first, reduced-motion safe.
   ════════════════════════════════════════════════════════════════════════ */

/* ── Shared ── */
.d-caption { font-size: 12px; color: var(--text3); text-align: center; margin-top: 20px; font-style: italic; letter-spacing: 0.01em; }

/* ─────────────────────── D-A  Engagement Flow ─────────────────────── */
.d-flow {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin-top: 40px;
}
@media (min-width: 640px) {
  .d-flow {
    grid-template-columns: 1fr 32px 1fr 32px 1fr 32px 1fr;
    align-items: start;
  }
}
.d-flow-arrow { display: none; }
@media (min-width: 640px) {
  .d-flow-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    padding-top: 26px;
  }
  .d-flow-arrow svg { width: 28px; height: 18px; }
}
.d-flow-step {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 22px 14px 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  transition: border-color .2s, box-shadow .2s;
}
.d-flow-step:hover {
  border-color: rgba(15,7,189,0.22);
  box-shadow: 0 4px 20px rgba(15,7,189,0.07);
}
@media (max-width: 639px) {
  .d-flow-step {
    flex-direction: row;
    text-align: left;
    align-items: flex-start;
    gap: 14px;
    border-radius: 0;
    border: none;
    border-bottom: 1px solid var(--border);
    padding: 16px 0;
    box-shadow: none !important;
  }
  .d-flow-step:last-child { border-bottom: none; }
}
.d-flow-num {
  width: 30px; height: 30px;
  border-radius: 50%;
  background: var(--gold); color: var(--deep);
  font-size: 13px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin-bottom: 10px;
}
@media (max-width: 639px) { .d-flow-num { margin-bottom: 0; margin-top: 3px; } }
.d-flow-icon {
  width: 40px; height: 40px;
  color: var(--indigo);
  margin-bottom: 10px;
}
.d-flow-icon svg { width: 100%; height: 100%; }
@media (max-width: 639px) { .d-flow-icon { display: none; } }
.d-flow-body { flex: 1; }
.d-flow-title { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 5px; }
.d-flow-desc { font-size: 13px; color: var(--text2); line-height: 1.55; max-width: 145px; margin: 0 auto; }
@media (max-width: 639px) { .d-flow-desc { max-width: none; margin: 0; } }

/* ─────────────────── D-B  Structure Comparison Matrix ─────────────────── */
.d-matrix { margin-top: 36px; overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: 16px; border: 1px solid var(--border); }
.d-matrix table {
  width: 100%; min-width: 520px;
  border-collapse: collapse;
  table-layout: fixed;
}
.d-matrix thead th, .d-matrix tbody td {
  padding: 11px 15px;
  border-bottom: 1px solid var(--border);
  border-right: 1px solid var(--border);
  font-size: 13px; line-height: 1.45;
  vertical-align: middle;
  text-align: left;
}
.d-matrix thead th:last-child, .d-matrix tbody td:last-child { border-right: none; }
.d-matrix tbody tr:last-child td { border-bottom: none; }
.d-matrix thead th { background: var(--deep); color: #fff; font-weight: 700; font-size: 13px; padding: 13px 15px; }
.d-mx-corner { background: rgba(255,255,255,0.04) !important; }
.d-mx-hl { background: rgba(15,7,189,0.04) !important; }
.d-matrix thead .d-mx-hl { background: var(--indigo) !important; color: #fff !important; }
.d-mx-label { font-weight: 600; color: var(--text2); font-size: 12px; width: 28%; }
.d-matrix tbody tr:nth-child(odd) td { background: rgba(15,7,189,0.015); }
.d-matrix tbody tr:nth-child(odd) .d-mx-hl { background: rgba(15,7,189,0.04) !important; }
.d-chk  { color: #15803d; font-weight: 700; }
.d-cross { color: #dc2626; font-weight: 700; }
.d-partial { color: #b45309; font-weight: 700; }

/* ─────────────────── D-C  Golden Visa Route Quick-Picker ─────────────────── */
.d-routes {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin: 28px 0 40px;
}
@media (min-width: 500px) { .d-routes { grid-template-columns: 1fr 1fr; } }
@media (min-width: 780px) { .d-routes { grid-template-columns: repeat(3, 1fr); } }
.d-route-card {
  background: var(--white);
  border: 1.5px solid var(--border);
  border-radius: 16px;
  padding: 16px 16px 14px;
  display: flex; flex-direction: column; gap: 7px;
  transition: border-color .2s, transform .2s;
}
.d-route-card:hover { border-color: rgba(15,7,189,0.28); transform: translateY(-2px); }
.d-route-ic { width: 36px; height: 36px; color: var(--indigo); }
.d-route-ic svg { width: 100%; height: 100%; }
.d-route-name { font-size: 14px; font-weight: 700; color: var(--text); }
.d-route-th {
  display: inline-block;
  font-size: 11px; font-weight: 600; color: #92710d;
  background: rgba(201,152,26,0.12); border: 1px solid rgba(201,152,26,0.28);
  border-radius: 6px; padding: 3px 9px; width: fit-content;
}
.d-route-desc { font-size: 12.5px; color: var(--text2); line-height: 1.5; flex: 1; }
.d-route-cta { font-size: 12px; font-weight: 600; color: var(--indigo); cursor: pointer; background: none; border: none; padding: 0; text-align: left; font-family: var(--font); }
.d-route-cta:hover { text-decoration: underline; }

/* ── ROUTE CARD EXPANDABLE DETAIL ── */
.d-route-detail { margin-top: 12px; border-top: 1px solid var(--border); padding-top: 10px; }
.d-route-detail-toggle { font-size: 12.5px; font-weight: 600; color: var(--indigo); cursor: pointer; list-style: none; display: flex; align-items: center; gap: 6px; padding: 2px 0; }
.d-route-detail-toggle::-webkit-details-marker { display: none; }
.d-route-detail-toggle::after { content: '+'; font-size: 15px; font-weight: 700; line-height: 1; transition: transform .2s; }
details.d-route-detail[open] .d-route-detail-toggle::after { transform: rotate(45deg); }
.d-route-detail-body { padding-top: 10px; font-size: 13.5px; color: var(--text2); line-height: 1.72; }
.d-route-detail-body p { margin-bottom: 10px; }
.d-route-detail-body ul { padding-left: 20px; margin-bottom: 10px; }
.d-route-detail-body li { margin-bottom: 6px; }
.routes-disclaimer { font-size: 11px; color: var(--text3); text-align: center; margin-top: 12px; line-height: 1.65; }

/* ─────────────────── D-D  Tax & Compliance Calendar ─────────────────── */
.d-cal { margin-top: 36px; }
.d-cal-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
@media (min-width: 600px) { .d-cal-grid { grid-template-columns: repeat(4, 1fr); } }
.d-cal-q { background: var(--white); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
.d-cal-q-head {
  background: var(--deep); color: #fff;
  font-size: 12px; font-weight: 700;
  padding: 9px 13px;
  display: flex; justify-content: space-between; align-items: baseline;
}
.d-cal-months { font-size: 10.5px; opacity: 0.55; font-weight: 400; }
.d-cal-events { padding: 10px; display: flex; flex-direction: column; gap: 7px; }
.d-cal-ev { padding: 7px 10px; border-radius: 7px; font-size: 11.5px; line-height: 1.4; }
.d-cal-ev-name { font-weight: 700; display: block; margin-bottom: 1px; }
.d-cal-ev-date { font-size: 10.5px; opacity: 0.72; }
.d-cal-ev--vat { background: rgba(15,7,189,0.07); color: var(--indigo); border-left: 2px solid var(--indigo); }
.d-cal-ev--ct  { background: rgba(201,152,26,0.10); color: #92710d; border-left: 2px solid var(--gold); }
.d-cal-ev--lic { background: rgba(9,8,42,0.05); color: var(--text2); border-left: 2px solid var(--text3); }
.d-cal-ev--ubo { background: rgba(22,163,74,0.07); color: #15803d; border-left: 2px solid #16a34a; }
.d-cal-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 16px; }
.d-cal-leg { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text2); }
.d-cal-leg-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.d-cal-leg-dot--vat { background: var(--indigo); }
.d-cal-leg-dot--ct  { background: var(--gold); }
.d-cal-leg-dot--lic { background: var(--text3); }
.d-cal-leg-dot--ubo { background: #16a34a; }

/* ─────────────────── D-E  Banking Readiness Ladder ─────────────────── */
.d-ladder { max-width: 620px; margin: 36px auto 0; }
.d-rung { display: flex; align-items: flex-start; gap: 16px; padding: 16px 0; position: relative; }
.d-rung:not(:last-child)::after {
  content: '';
  position: absolute; left: 19px; top: 54px;
  width: 2px; height: calc(100% - 14px);
  background: linear-gradient(to bottom, rgba(15,7,189,0.18), rgba(15,7,189,0.04));
}
.d-rung-n {
  width: 40px; height: 40px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700;
  flex-shrink: 0; position: relative; z-index: 1;
  border: 2px solid transparent;
}
.d-rung-n--base { background: var(--ivory); color: var(--text2); border-color: var(--border); }
.d-rung-n--mid  { background: rgba(15,7,189,0.09); color: var(--indigo); border-color: rgba(15,7,189,0.22); }
.d-rung-n--top  { background: var(--indigo); color: #fff; border-color: var(--indigo); }
.d-rung-content { flex: 1; padding-top: 7px; }
.d-rung-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.d-rung-desc  { font-size: 13.5px; color: var(--text2); line-height: 1.55; }
.d-rung-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.d-rung-chip  { font-size: 11px; background: rgba(15,7,189,0.06); color: var(--indigo); border-radius: 5px; padding: 3px 8px; font-weight: 600; }
@media (max-width: 480px) { .d-ladder { max-width: 100%; } }

/* ─────────────────── D-F  Structure Fit Checker ─────────────────── */
.d-fit { display: grid; grid-template-columns: 1fr; gap: 20px; margin-top: 36px; }
@media (min-width: 600px) { .d-fit { grid-template-columns: 3fr 2fr; gap: 36px; } }
.d-fit-yes, .d-fit-no { display: flex; flex-direction: column; gap: 0; }
.d-fit-head {
  font-size: 13.5px; font-weight: 700; margin-bottom: 16px;
  padding: 10px 14px; border-radius: 10px;
}
.d-fit-head--yes { background: rgba(15,7,189,0.07); color: var(--indigo); }
.d-fit-head--no  { background: rgba(9,8,42,0.05); color: var(--text2); font-weight: 600; }
.d-fit-list { display: flex; flex-direction: column; gap: 9px; margin-bottom: 20px; flex: 1; }
.d-fit-list li { font-size: 13.5px; color: var(--text); line-height: 1.55; padding-left: 18px; position: relative; }
.d-fit-list li::before { content: ''; position: absolute; left: 0; top: 8px; width: 7px; height: 7px; border-radius: 50%; }
.d-fit-yes .d-fit-list li::before { background: var(--indigo); }
.d-fit-no  .d-fit-list li { color: var(--text2); }
.d-fit-no  .d-fit-list li::before { background: var(--text3); }
.d-fit-alt-link { font-size: 13px; font-weight: 600; color: var(--text2); }
.d-fit-alt-link:hover { color: var(--indigo); }

/* ── Reduced-motion guard ── */
@media (prefers-reduced-motion: reduce) {
  .d-flow-step, .d-route-card, .d-tree-leaf { transition: none !important; transform: none !important; }
}


/* ════ MOBILE MATRIX CARDS + QUALIFY MODAL SHEET  (Part 4 — 2026-06) ════ */

/* D-B: hide table / show stacked cards below 520px */
.d-matrix-cards { display: none; margin-top: 28px; }
@media (max-width: 519px) {
  .d-matrix table { display: none; }
  .d-matrix-cards { display: grid; gap: 14px; }
}
.d-mx-card { background: var(--white); border: 1px solid var(--border); border-radius: 16px; overflow: hidden; }
.d-mx-card--hl { border-color: var(--indigo); }
.d-mx-card-head {
  padding: 10px 16px; font-size: 12.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  background: var(--ivory); color: var(--text2); border-bottom: 1px solid var(--border);
}
.d-mx-card--hl .d-mx-card-head { background: var(--indigo); color: #fff; border-bottom-color: transparent; }
.d-mx-card-row {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 8px 16px; border-bottom: 1px solid rgba(9,8,42,0.05); font-size: 13px;
}
.d-mx-card-row:last-child { border-bottom: none; }
.d-mx-card-k { color: var(--text3); font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; min-width: 110px; flex-shrink: 0; }
.d-mx-card-v { color: var(--text); text-align: right; }

/* Modal mobile bottom-sheet */
@keyframes dmcSlideUp { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-width: 640px) {
  .dmc-modal { align-items: flex-end; padding: 0; }
  .dmc-modal-panel {
    max-width: none; width: 100%; max-height: 90vh;
    border-radius: 16px 16px 0 0;
    padding: 24px 20px 32px;
    animation: dmcSlideUp .28s var(--ease-out) both;
  }
}
/* Qualify panel: slightly wider than booking on desktop */
.dmc-qual-panel { max-width: 620px; }
/* Wizard mount inside modal — inherits dmc-wizard styles but no extra border */
.dmc-modal-wiz-mount { margin-top: 4px; }
.dmc-modal-wiz-mount.dmc-wiz-live { background: none; box-shadow: none; border: none; padding: 0; }
.dmc-modal-wiz-mount.dmc-wiz-live::before { display: none; }
/* Trigger CTA wrap in #start section (replaces inline wizard) */
.dmc-wiz-trigger-wrap { text-align: center; padding: 8px 0 0; }
.dmc-wiz-trigger-wrap .btn-gold { min-width: 260px; max-width: 360px; width: 100%; }
.dmc-wiz-trigger-note { font-size: 13.5px; color: var(--text3); margin-top: 14px; }
.dmc-wiz-trigger-note a { color: var(--indigo); }
@media (prefers-reduced-motion: reduce) {
  .dmc-modal-panel { animation: none !important; }
}

/* ── PROCESS FLOW ── */
.process-flow{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;position:relative}
.pf-step{display:flex;align-items:flex-start;gap:16px;padding-bottom:28px;position:relative}
.pf-step:not(:last-child)::after{content:'';position:absolute;left:19px;top:44px;bottom:0;width:1px;background:linear-gradient(to bottom,rgba(15,7,189,.2),rgba(15,7,189,.04))}
.pf-node{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;position:relative;z-index:1;background:rgba(15,7,189,.09);color:var(--indigo);border:2px solid rgba(15,7,189,.22)}
.pf-node--gold{background:var(--gold);color:#fff;border-color:var(--gold)}
.pf-content{flex:1;padding-top:6px}
.pf-title{font-size:15px;font-weight:700;color:var(--text);margin:0 0 3px}
.pf-desc{font-size:13.5px;color:var(--text2);line-height:1.55;margin:0}
@media(min-width:768px){
  .process-flow{flex-direction:row;align-items:flex-start;gap:0}
  .pf-step{flex:1;flex-direction:column;align-items:center;text-align:center;gap:14px;padding-bottom:0}
  .pf-step:not(:last-child)::after{left:calc(50% + 22px);top:19px;right:calc(-50% + 22px);bottom:auto;width:auto;height:1px;background:rgba(15,7,189,.18);transform-origin:left;transform:scaleX(0);transition:transform .55s cubic-bezier(.22,1,.36,1)}
  .pf-step:nth-child(1):not(:last-child)::after{transition-delay:.05s}
  .pf-step:nth-child(2):not(:last-child)::after{transition-delay:.2s}
  .pf-step:nth-child(3):not(:last-child)::after{transition-delay:.35s}
  .pf-step:nth-child(4):not(:last-child)::after{transition-delay:.5s}
  .pf-step:nth-child(5):not(:last-child)::after{transition-delay:.65s}
  .process-flow.pf-revealed .pf-step:not(:last-child)::after{transform:scaleX(1)}
  .pf-content{text-align:center}
}
@media(prefers-reduced-motion:reduce){
  .pf-step:not(:last-child)::after{transition:none!important;transform:scaleX(1)!important}
}

/* ── CARD DEPTH + TILT SYSTEM ──────────────────────────────────────────────
   Replaces the flat at-rest shadow with a 3-layer + inset-highlight system.
   JS (DMC.initCardTilt) handles the perspective transform on pointer:fine devices.
   The duplicate shadow rules formerly at lines 1298-1300 have been neutralised above.
   ────────────────────────────────────────────────────────────────────────── */

/* At-rest: 3-layer depth + glass-shelf inset highlight + subtle warm surface */
.pcard, .svc-card {
  background: linear-gradient(160deg, #ffffff 0%, rgba(247,245,240,0.50) 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.85),
    0 1px 3px rgba(9,8,42,0.07),
    0 4px 14px rgba(9,8,42,0.08),
    0 14px 36px rgba(9,8,42,0.07);
  will-change: transform;
}

/* Desktop hover elevation — tilt transform applied by DMC.initCardTilt */
@media (hover: hover) and (pointer: fine) {
  .pcard:hover, .svc-card:hover {
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.90),
      0 2px 6px rgba(9,8,42,0.10),
      0 8px 24px rgba(9,8,42,0.13),
      0 24px 60px rgba(9,8,42,0.11);
    border-color: rgba(15,7,189,0.16);
  }
}

/* Mobile: no transforms; at-rest depth does all visual work; clean tap state */
@media (hover: none) {
  .pcard, .svc-card {
    background: #fff;
    will-change: auto;
    transform: none !important;
  }
  .pcard:active, .svc-card:active {
    border-color: rgba(15,7,189,0.20);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.85),
      0 1px 3px rgba(9,8,42,0.07),
      0 4px 14px rgba(9,8,42,0.08),
      0 14px 36px rgba(9,8,42,0.07);
  }
}

/* Reduced-motion: transitions stripped, no tilt, no lift */
@media (prefers-reduced-motion: reduce) {
  .pcard, .svc-card {
    transition: border-color .2s !important;
    transform: none !important;
  }
}

/* ── ZONE COMPARISON CARDS (mobile swap for free-zone 5-col table) ────────────
   .compare-scroller.zone-scroller hidden at ≤640px; .zone-cards shown instead.
   Each zone row becomes its own stacked card — readable on a 360px phone.
   ────────────────────────────────────────────────────────────────────────── */
.zone-cards { display: none; margin-top: 24px; }
@media (max-width: 640px) {
  .zone-scroller { display: none !important; }
  .zone-cards { display: flex; flex-direction: column; gap: 14px; }
}
.zone-card {
  background: #fff;
  border: 1px solid rgba(9,8,42,0.09);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(9,8,42,0.05), 0 4px 12px rgba(9,8,42,0.05);
}
.zone-card-head {
  padding: 11px 16px;
  font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  background: var(--deep); color: #fff;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.zone-card-row {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 8px;
  padding: 9px 16px;
  border-bottom: 1px solid rgba(9,8,42,0.06);
}
.zone-card-row:last-child { border-bottom: none; }
.zone-card-k {
  font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text3); flex-shrink: 0; padding-top: 1px; min-width: 76px;
}
.zone-card-v { font-size: 12.5px; color: var(--text); text-align: right; }

/* ── MAINLAND VS FREE ZONE COMPARISON CARDS (mobile swap for the 3-col matrix)
   .mvsfz-scroller hides at ≤640px; two .zone-card items show side-by-side
   in a 2-column grid — each column = one option with key rows listed.
   ─────────────────────────────────────────────────────────────────────── */
.mvsfz-cards { display: none; margin-top: 24px; }
@media (max-width: 640px) {
  .mvsfz-scroller { display: none !important; }
  .mvsfz-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
}
/* Highlight head for the Free Zone card */
.mvsfz-cards .zone-card:last-child .zone-card-head { background: var(--indigo); }

/* ── COST RANGE BARS (compare pages) ───────────────────────────────────────── */
.cost-bars { display: flex; flex-direction: column; gap: 16px; margin-top: 24px; max-width: 520px; }
.cost-bar-row { display: flex; align-items: center; gap: 12px; }
.cost-bar-label { font-size: 12.5px; font-weight: 600; color: var(--text2); min-width: 140px; flex-shrink: 0; }
.cost-bar-track {
  flex: 1; height: 8px; background: rgba(15,7,189,0.08);
  border-radius: 4px; overflow: hidden;
}
.cost-bar-fill { height: 100%; border-radius: 4px; background: var(--indigo); opacity: .7; }
.cost-bar-range { font-size: 12px; color: var(--text3); font-variant-numeric: tabular-nums; white-space: nowrap; min-width: 100px; text-align: right; }
@media (max-width: 640px) {
  .cost-bar-label { min-width: 100px; font-size: 12px; }
  .cost-bar-range { min-width: 80px; font-size: 11.5px; }
}

/* ── QUICK ANSWER CALLOUT (compare pages — AI-citation target) ─────────────── */
.quick-answer {
  background: linear-gradient(135deg, rgba(15,7,189,0.04) 0%, rgba(15,7,189,0.02) 100%);
  border: 1.5px solid rgba(15,7,189,0.15);
  border-left: 4px solid var(--indigo);
  border-radius: 10px;
  padding: 20px 24px;
  margin: 28px 0;
  max-width: 72ch;
}
.quick-answer-label {
  font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--indigo); margin-bottom: 8px;
}
.quick-answer p { font-size: 15px; line-height: 1.7; color: var(--text); margin: 0; }
.quick-answer strong { color: var(--indigo); }

/* ── DECISION QUESTION CARDS ───────────────────────────────────────────────── */
.decide-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 32px; }
@media (max-width: 640px) { .decide-grid { grid-template-columns: 1fr; } }
.decide-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 20px 22px;
  box-shadow: 0 1px 3px rgba(9,8,42,0.05), 0 4px 14px rgba(9,8,42,0.06);
}
.decide-n {
  display: inline-block;
  width: 28px; height: 28px; line-height: 28px; text-align: center;
  background: var(--indigo); color: #fff;
  font-size: 12px; font-weight: 700; border-radius: 50%;
  margin-bottom: 12px;
}
.decide-q { font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.5; margin-bottom: 12px; }
.decide-yes, .decide-no {
  display: flex; align-items: flex-start; gap: 7px;
  font-size: 12.5px; line-height: 1.5; margin-bottom: 6px;
}
.decide-yes::before { content: "Yes"; font-weight: 700; color: #1a7a3c; flex-shrink: 0; min-width: 26px; }
.decide-no::before  { content: "No";  font-weight: 700; color: var(--text3); flex-shrink: 0; min-width: 26px; }
.decide-nudge {
  margin-top: 12px; padding: 8px 12px;
  background: rgba(201,152,26,0.08); border-radius: 6px;
  font-size: 12px; color: var(--text2); line-height: 1.5;
}
.decide-nudge strong { color: var(--text); }


/* ────────────────────────────────────────────────────────────────────────
   ARTICLE / BLOG PAGES (.art-*): guides + updates long-form template
   Reconciled to design tokens: --deep (navy), --white (bg). Article breadcrumb
   is scoped as .art-bc so it never touches the global in-hero .breadcrumb.
   ──────────────────────────────────────────────────────────────────────── */
.art-bc { background: var(--white); border-bottom: 1px solid var(--border); padding: 12px 0; }
.art-bc .bc-list { display: flex; list-style: none; gap: 8px; align-items: center; font-size: 12px; color: var(--text3); margin: 0; padding: 0; flex-wrap: wrap; }
.art-bc .bc-list a { color: var(--text3); text-decoration: none; }
.art-bc .bc-list a:hover { color: var(--indigo); }
.art-bc .bc-list li:not(:last-child)::after { content: "\203A"; margin-left: 8px; }
.art-bc .bc-list li[aria-current="page"] { color: var(--text2); }

.art-hero { background: linear-gradient(135deg, #ECEBF8 0%, var(--ivory) 52%, #FBFAFE 100%); border-bottom: 1px solid var(--border); padding: 52px 0 44px; }
/* Left-align the hero content to the body column. The element is `.wrap.art-hero-inner`,
   so .wrap was centering it; keep the wrap width and cap only the content children. */
.art-hero-inner > * { max-width: 780px; }
.art-meta { display: flex; gap: 16px; align-items: center; margin-bottom: 20px; flex-wrap: wrap; }
.art-cat { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--indigo); background: rgba(15,7,189,0.07); padding: 3px 10px; border-radius: 4px; }
.art-date, .art-read { font-size: 12px; color: var(--text3); }
.art-h1 { font-size: clamp(1.6rem, 3.5vw, 2.4rem); font-weight: 700; letter-spacing: -0.025em; line-height: 1.18; color: var(--deep); margin: 0 0 16px; }
.art-deck { font-size: clamp(15px, 1.8vw, 17px); color: var(--text2); line-height: 1.6; margin: 0 0 24px; }
.art-author { display: flex; align-items: center; gap: 12px; }
.art-author-img { border-radius: 50%; width: 40px; height: 40px; object-fit: cover; }
.art-author-name { font-size: 13px; font-weight: 600; color: var(--text); }
.art-author-title { font-size: 11.5px; color: var(--text3); }

.art-wrap { display: grid; grid-template-columns: 1fr 300px; gap: 64px; align-items: start; max-width: 1320px; }
@media(max-width: 900px) { .art-wrap { grid-template-columns: 1fr; } .art-sidebar { display: none; } }
.art-content { max-width: 720px; }
.art-content h2 { font-size: clamp(1.2rem, 2.4vw, 1.6rem); font-weight: 700; color: var(--deep); margin: 48px 0 16px; letter-spacing: -0.02em; line-height: 1.25; scroll-margin-top: 90px; }
.art-content h3 { font-size: clamp(1rem, 1.8vw, 1.2rem); font-weight: 600; color: var(--text); margin: 32px 0 12px; }
.art-content p { font-size: 16px; color: var(--text2); line-height: 1.82; margin: 0 0 18px; }
.art-content a:not([class]) { color: var(--indigo); text-decoration: underline; text-underline-offset: 2px; }
.art-content strong { color: var(--text); font-weight: 600; }
.art-content ul, .art-content ol { margin: 0 0 18px 0; padding-left: 20px; }
.art-content li { font-size: 16px; color: var(--text2); line-height: 1.75; margin-bottom: 6px; }

.art-callout { background: rgba(15,7,189,0.04); border-left: 3px solid var(--indigo); border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 28px 0; }
.art-callout-h { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--indigo); margin-bottom: 8px; }
.art-callout p { font-size: 14px; color: var(--text); margin: 0; line-height: 1.6; }
.art-callout-gold { background: rgba(201,152,26,0.06); border-left-color: var(--gold); }
.art-callout-gold .art-callout-h { color: #966010; }
.art-warning { background: #FEF3E2; border-left: 3px solid #C97820; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 28px 0; }
.art-warning .art-callout-h { color: #704010; }

.art-inline-cta { background: var(--deep); color: #fff; border-radius: 12px; padding: 24px 28px; margin: 40px 0; }
.art-inline-cta h3 { font-size: 16px; font-weight: 700; color: #fff; margin: 0 0 8px; }
.art-inline-cta p { font-size: 14px; color: rgba(255,255,255,0.7); margin: 0 0 16px; }

.art-sidebar { position: sticky; top: 100px; }
.art-toc { background: var(--ivory); border: 1px solid var(--border); border-radius: 10px; padding: 16px 18px; margin-bottom: 16px; }
.art-toc-h { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text3); margin-bottom: 12px; }
.art-toc a { display: block; font-size: 13px; color: var(--text2); padding: 5px 0; border-bottom: 1px solid var(--border); text-decoration: none; line-height: 1.4; }
.art-toc a:last-child { border: none; }
.art-toc a:hover { color: var(--indigo); }
.art-magnet { background: var(--ivory); border: 1px solid var(--border); border-radius: 10px; padding: 18px; margin-bottom: 16px; }
.art-magnet-h { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text3); margin-bottom: 8px; }
.art-magnet-title { font-size: 14px; font-weight: 700; color: var(--deep); margin-bottom: 4px; line-height: 1.3; }
.art-magnet-desc { font-size: 12px; color: var(--text3); margin-bottom: 12px; }
.art-magnet .magnet-form-sm { display: flex; flex-direction: column; gap: 8px; }
.art-magnet .magnet-form-sm input { padding: 9px 12px; border: 1px solid var(--border); border-radius: 7px; font-size: 13px; font-family: inherit; }
.magnet-form-inline input { padding: 11px 14px; border: 1px solid rgba(255,255,255,0.18); border-radius: 8px; font-size: 14px; font-family: inherit; background: rgba(255,255,255,0.96); }
.btn-sm { padding: 9px 14px !important; font-size: 12.5px !important; }
.art-cta-box { background: var(--deep); border-radius: 10px; padding: 18px; }
.art-cta-h { font-size: 13px; font-weight: 700; color: var(--gold); margin-bottom: 8px; }
.art-cta-box p { font-size: 12.5px; color: rgba(255,255,255,0.7); margin-bottom: 14px; line-height: 1.5; }

.art-related-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; }
.art-rel-card { background: var(--white); border: 1px solid var(--border); border-radius: 10px; padding: 20px; text-decoration: none; transition: border-color .2s; display: block; }
.art-rel-card:hover { border-color: var(--indigo); }
.art-rel-cat { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--indigo); margin-bottom: 8px; display: block; }
.art-rel-title { font-size: 14px; font-weight: 600; color: var(--deep); line-height: 1.4; }

.art-hero.news-hero { background: linear-gradient(135deg, var(--deep) 0%, #1B1890 100%); }
.art-hero.news-hero .art-h1, .art-hero.news-hero .art-deck { color: rgba(255,255,255,0.95); }
.art-hero.news-hero .art-date, .art-hero.news-hero .art-read { color: rgba(255,255,255,0.55); }
.news-badge { display: inline-block; background: var(--gold); color: var(--deep); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; padding: 3px 10px; border-radius: 4px; margin-bottom: 16px; }

.art-table { width: 100%; border-collapse: collapse; margin: 24px 0; font-size: 14px; }
.art-table th { background: var(--deep); color: #fff; padding: 10px 14px; text-align: left; font-weight: 600; font-size: 12px; letter-spacing: 0.04em; }
.art-table td { padding: 10px 14px; border-bottom: 1px solid var(--border); color: var(--text2); }
.art-table tr:nth-child(even) td { background: var(--ivory); }

.art-faq { margin-top: 48px; padding-top: 32px; border-top: 2px solid var(--border); }
.art-faq-h { font-size: 22px; font-weight: 700; color: var(--deep); margin-bottom: 24px; letter-spacing: -0.02em; }


/* art-table responsive: scroll within the column on mobile, never overflow the page */
@media (max-width: 600px) {
  .art-table { display: block; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* grid-item min-width fix: let .art-content shrink so wide tables scroll instead of overflowing */
.art-content { min-width: 0; }

/* ════════════════════════════════════════════════════════════════════════
   BUILD JUNE 2026 — BLOCK 1: live render bug fixes (header overlap + FABs)
   ════════════════════════════════════════════════════════════════════════ */

/* BUG 1a: /guides/ and /updates/ pages open with .art-bc as the first child of
   <main> and have no dark hero, so the fixed header sat directly on the white
   breadcrumb. Push the breadcrumb (and the page) clear of the fixed header. */
.art-bc { margin-top: 64px; }
@media (min-width: 1024px) { .art-bc { margin-top: 72px; } }

/* BUG 1b: with no dark hero behind it, the header's default transparent state
   rendered a white logo + white nav over the white breadcrumb (invisible). On
   any page that opens with .art-bc, render the header solid from the top. */
body:has(.art-bc) .site-header {
  background: rgba(255,255,255,0.92);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  border-bottom-color: var(--border);
  box-shadow: 0 1px 24px rgba(9,8,42,0.07);
}
@media (max-width: 1023px) {
  body:has(.art-bc) .site-header {
    background: rgba(251,250,247,0.98);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}
body:has(.art-bc) .site-header .logo-on-dark      { display: none; }
body:has(.art-bc) .site-header .logo-on-light     { display: block; }
body:has(.art-bc) .site-header .nav-links a       { color: var(--text2); }
body:has(.art-bc) .site-header .nav-links a:hover { color: var(--indigo); }
body:has(.art-bc) .site-header .nav-start         { color: var(--indigo) !important; border-color: rgba(15,7,189,0.28); }
body:has(.art-bc) .site-header .nav-start:hover   { background: rgba(15,7,189,0.06); border-color: var(--indigo); color: var(--indigo-dark) !important; }
body:has(.art-bc) .site-header .nav-cta           { background: var(--indigo); color: #fff !important; }
body:has(.art-bc) .site-header .nav-cta:hover     { background: var(--indigo-dark) !important; }
body:has(.art-bc) .site-header .nav-toggle span   { background: var(--text); }

/* BUG 2: unify the floating buttons into one right-edge stack with a clean gap,
   and lift both above the sticky CTA bar with a transform (supersedes the older
   per-button bottom jumps so they cannot collide or misalign). */
.wa-fab   { bottom: 20px; right: 20px; }
.call-fab { bottom: 84px; right: 20px; }
@media (min-width: 768px) {
  .wa-fab   { bottom: 24px; right: 24px; }
  .call-fab { bottom: 88px; right: 24px; }
}
body.sticky-bar-active .wa-fab   { bottom: 20px; transform: translateY(-64px); transition: transform .3s ease; }
body.sticky-bar-active .call-fab { bottom: 84px; transform: translateY(-64px); transition: transform .3s ease; }
@media (min-width: 768px) {
  body.sticky-bar-active .wa-fab   { bottom: 24px; }
  body.sticky-bar-active .call-fab { bottom: 88px; }
}

/* ════════════════════════════════════════════════════════════════════════
   BUILD JUNE 2026 — BLOCK 3: homepage rewrite (situation router + sections)
   ════════════════════════════════════════════════════════════════════════ */

/* Situation router: the homepage centrepiece. A scannable grid of real
   situations, each routing to the matching page. 1 col mobile, 2 tablet, 3 desktop. */
.router-head { max-width: 720px; }
.router-grid { display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: 36px; }
@media (min-width: 640px) { .router-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 980px) { .router-grid { grid-template-columns: repeat(3, 1fr); } }
.router-tile {
  display: flex; flex-direction: column; gap: 8px;
  padding: 22px 22px 20px; background: var(--white);
  border: 1px solid var(--border); border-radius: 16px;
  text-decoration: none; color: var(--text);
  box-shadow: 0 1px 0 rgba(9,8,42,0.02);
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease), transform .2s var(--ease);
}
.router-tile:hover { border-color: var(--indigo); box-shadow: 0 12px 30px rgba(9,8,42,0.08); transform: translateY(-2px); }
.router-ico {
  width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 10px; background: rgba(15,7,189,0.06); color: var(--indigo); margin-bottom: 4px;
}
.router-ico svg { width: 24px; height: 24px; }
.router-tile-label { font-size: 16px; font-weight: 700; color: var(--text); line-height: 1.32; }
.router-tile-desc { font-size: 13.5px; color: var(--text2); line-height: 1.55; flex: 1 1 auto; }
.router-tile-go { font-size: 12.5px; font-weight: 600; color: var(--indigo); margin-top: auto; padding-top: 8px; }
.router-tile-links { display: flex; flex-wrap: wrap; gap: 16px; margin-top: auto; padding-top: 8px; }
.router-tile-links a { font-size: 12.5px; font-weight: 600; color: var(--indigo); text-decoration: none; }
.router-tile-links a:hover { text-decoration: underline; }
.router-tile.is-static { cursor: default; }
@media (max-width: 600px) { .router-tile-label { font-size: 15.5px; } }

/* Proof bar intro line (above the animated counters). */
.proof-intro { text-align: center; font-size: clamp(17px, 2.2vw, 21px); font-weight: 700; color: var(--text); letter-spacing: -0.01em; margin: 0 0 30px; }

/* "What we will and will not do" two-column promise block. */
.dodont-wrap { display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: 36px; }
@media (min-width: 760px) { .dodont-wrap { grid-template-columns: 1fr 1fr; gap: 20px; } }
.dodont-col { background: var(--white); border: 1px solid var(--border); border-radius: 16px; padding: 28px 26px; }
.dodont-col.do  { border-top: 3px solid var(--indigo); }
.dodont-col.dont { border-top: 3px solid var(--gold); }
.dodont-h { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; margin: 0 0 16px; }
.dodont-col.do  .dodont-h { color: var(--indigo); }
.dodont-col.dont .dodont-h { color: #8a6610; }
.dodont-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.dodont-list li { position: relative; padding-left: 30px; font-size: 15px; line-height: 1.5; color: var(--text); }
.dodont-list li::before { position: absolute; left: 0; top: 1px; width: 20px; height: 20px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; }
.dodont-col.do  .dodont-list li::before { content: "\2713"; background: rgba(15,7,189,0.08); color: var(--indigo); }
.dodont-col.dont .dodont-list li::before { content: "\00D7"; background: rgba(201,152,26,0.12); color: #9a7416; font-size: 14px; }
.dodont-close { text-align: center; font-size: clamp(18px, 2.6vw, 23px); font-weight: 700; color: var(--text); max-width: 30ch; margin: 34px auto 0; line-height: 1.4; }

/* Coverage / depth map (signals the full-site breadth). */
.coverage-grid { display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: 36px; }
@media (min-width: 760px) { .coverage-grid { grid-template-columns: repeat(3, 1fr); } }
.coverage-card { background: var(--white); border: 1px solid var(--border); border-radius: 16px; padding: 26px 24px; }
.coverage-card h3 { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--indigo); margin: 0 0 14px; }
.coverage-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.coverage-chip { font-size: 12.5px; font-weight: 600; color: var(--text2); background: var(--ivory); border: 1px solid var(--border); border-radius: 999px; padding: 5px 12px; }
.coverage-foot { text-align: center; max-width: 60ch; margin: 30px auto 0; color: var(--text2); font-size: 15px; line-height: 1.6; }
.coverage-actions { display: flex; flex-wrap: wrap; gap: 18px; justify-content: center; margin-top: 18px; }
.coverage-actions a { font-size: 13px; font-weight: 600; color: var(--indigo); text-decoration: none; }
.coverage-actions a:hover { text-decoration: underline; }
@media (max-width: 600px) { .dodont-list li, .coverage-foot { font-size: 14.5px; } }

/* ════════════════════════════════════════════════════════════════════════
   BUILD JUNE 2026 — BLOCK 4: auto-scroll client reviews carousel
   ════════════════════════════════════════════════════════════════════════ */
.reviews { margin-top: 40px; }
.reviews-agg { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 22px; }
.reviews-stars { color: var(--gold); font-size: 18px; letter-spacing: 3px; }
.reviews-agg-text { font-size: 14px; font-weight: 600; color: var(--text2); }
.reviews-viewport { overflow: hidden; }
.reviews-track { display: flex; list-style: none; margin: 0; padding: 0; transition: transform .55s var(--ease); }
.review-card { flex: 0 0 100%; max-width: 100%; padding: 0 10px; box-sizing: border-box; }
.review-card > figure { margin: 0; height: 100%; background: var(--white); border: 1px solid var(--border); border-radius: 16px; padding: 26px 24px; box-shadow: 0 6px 24px rgba(9,8,42,0.05); display: flex; flex-direction: column; }
.review-stars { color: var(--gold); font-size: 15px; letter-spacing: 2px; margin-bottom: 14px; }
.review-quote { font-size: 15.5px; line-height: 1.72; color: var(--text); margin: 0 0 22px; font-weight: 400; }
.review-quote::before { content: "\201C"; } .review-quote::after { content: "\201D"; }
.review-cite { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-top: auto; flex-wrap: wrap; }
.review-who { display: flex; flex-direction: column; }
.review-name { font-size: 14.5px; font-weight: 700; color: var(--text); }
.review-role { font-size: 12.5px; color: var(--text3); margin-top: 2px; }
.review-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 7px; }
.review-src { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--text2); text-decoration: none; }
.review-src svg { flex: none; }
.review-src:hover { color: var(--indigo); }
.review-verified { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; color: #1a7f37; background: rgba(26,127,55,0.09); border-radius: 999px; padding: 3px 9px; }
.review-verified::before { content: "\2713"; font-size: 10px; }
.reviews-dots { display: flex; gap: 8px; justify-content: center; margin-top: 24px; }
.reviews-dot { width: 9px; height: 9px; border-radius: 50%; border: none; background: rgba(9,8,42,0.18); cursor: pointer; padding: 0; transition: background .2s, transform .2s; }
.reviews-dot.is-active { background: var(--indigo); transform: scale(1.3); }
@media (min-width: 1024px) { .reviews-dot { min-width: 9px; } }
@media (max-width: 600px) { .review-quote { font-size: 14.8px; } }

/* ════════════════════════════════════════════════════════════════════════
   BUILD JUNE 2026 — BLOCK 5: exit-intent / scroll-depth second-chance modal
   ════════════════════════════════════════════════════════════════════════ */
/* ── GUIDE BAND — the page's single inline lead-magnet offer ── */
.guide-band { display: grid; grid-template-columns: 1fr; gap: 20px; align-items: center; margin-top: 40px; padding: 26px 24px; background: var(--ivory); border: 1px solid var(--rule); border-top: 3px solid var(--indigo); border-radius: 16px; box-shadow: var(--shadow-card); }
@media (min-width: 768px) { .guide-band { grid-template-columns: 128px 1fr auto; gap: 36px; padding: 30px 36px; } }
.guide-band-sub { max-width: 60ch; }
.guide-band-img { width: 100%; height: 120px; object-fit: cover; object-position: center 40%; border-radius: 10px; display: block; }
@media (min-width: 768px) { .guide-band-img { height: 132px; } }
.guide-band-h { font-family: var(--serif); font-weight: 500; font-size: clamp(20px, 4.5vw, 26px); line-height: 1.2; color: var(--text); margin: 10px 0 0; }
.guide-band-sub { font-size: 14.5px; line-height: 1.65; color: var(--text2); margin: 10px 0 0; max-width: 52ch; }
.guide-band-cta { display: flex; flex-direction: column; align-items: flex-start; }
.guide-band-fine { font-size: 12px; color: var(--text3); margin: 10px 0 0; }

/* ── QUIET EXIT CARD (founder-approved, Homepage Lock Sprint) ──
   ONE small dismissible slide-in: bottom-right, max 320px, never full-screen,
   never blocking. Shown by DMC.exitCard: desktop exit-intent / mobile 70%
   scroll-up reversal, never within 10s of landing, once per session, dismissal
   persists 7 days, never on /contact/ or /thank-you/. Sits above the FABs
   (z 900) and below modals (z 1000). */
.dmc-exitcard { position: fixed; right: 16px; bottom: 16px; z-index: 980; width: min(320px, calc(100vw - 32px)); background: var(--white); border: 1px solid var(--rule); border-radius: 14px; box-shadow: 0 22px 48px -20px rgba(9,8,42,0.4); padding: 18px 18px 14px; opacity: 0; transform: translateY(14px); transition: opacity .35s var(--ease-out), transform .35s var(--ease-out); }
.dmc-exitcard.is-in { opacity: 1; transform: none; }
.dmc-exitcard-x { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border: none; background: var(--ivory); border-radius: 50%; font-size: 17px; color: var(--text2); cursor: pointer; line-height: 1; display: flex; align-items: center; justify-content: center; }
.dmc-exitcard-h { font-family: var(--serif); font-weight: 500; font-size: 17px; line-height: 1.25; color: var(--text); margin: 0 26px 0 0; }
.dmc-exitcard-sub { font-size: 13px; line-height: 1.55; color: var(--text2); margin: 7px 0 0; }
.dmc-exitcard form { display: flex; gap: 8px; margin-top: 12px; }
.dmc-exitcard input[type="email"] { flex: 1 1 auto; min-width: 0; font-family: var(--font); font-size: 16px; padding: 10px 12px; border: 1px solid var(--rule); border-radius: 8px; color: var(--text); background: var(--white); }
.dmc-exitcard input[type="email"]:focus { outline: 2px solid var(--indigo); outline-offset: 1px; }
.dmc-exitcard .btn-gold { padding: 10px 14px; font-size: 13px; border-radius: 8px; white-space: nowrap; }
.dmc-exitcard-fine { font-size: 11px; color: var(--text3); margin: 8px 0 0; }
.dmc-exitcard .dmc-magnet-msg { font-size: 13px; color: var(--text); line-height: 1.55; margin: 0; }
@media (prefers-reduced-motion: reduce) { .dmc-exitcard { transition: none; transform: none; } }

/* ── WELCOME-BACK CONTINUE CHIP (quiet inline line, no popup) ── */
.dmc-wiz-continue { font-size: 13.5px; color: var(--text2); margin: 12px 0 0; }
.dmc-wiz-continue-btn { font-family: var(--font); font-weight: 600; font-size: 13.5px; color: var(--indigo); background: none; border: none; padding: 0; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }

.dmc-exit { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(9,8,42,0.55); opacity: 0; transition: opacity .25s; }
.dmc-exit.is-open { opacity: 1; }
.dmc-exit-card { position: relative; background: var(--white); border-radius: 18px; max-width: 460px; width: 100%; padding: 34px 30px 26px; box-shadow: 0 30px 80px rgba(9,8,42,0.3); transform: translateY(14px); transition: transform .25s var(--ease); }
.dmc-exit.is-open .dmc-exit-card { transform: none; }
.dmc-exit-x { position: absolute; top: 14px; right: 14px; width: 34px; height: 34px; border: none; background: var(--ivory); border-radius: 50%; font-size: 20px; color: var(--text2); cursor: pointer; line-height: 1; display: flex; align-items: center; justify-content: center; }
.dmc-exit-x:hover { color: var(--indigo); }
.dmc-exit-eyebrow { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: #9a7416; margin: 0 0 8px; }
.dmc-exit-h { font-size: 21px; font-weight: 700; color: var(--text); margin: 0 0 10px; line-height: 1.3; }
.dmc-exit-sub { font-size: 14px; color: var(--text2); line-height: 1.6; margin: 0 0 18px; }
.dmc-exit-form { display: flex; gap: 8px; flex-wrap: wrap; }
.dmc-exit-form input { flex: 1 1 200px; min-height: 46px; padding: 0 14px; border: 1px solid var(--border); border-radius: 8px; font-size: 16px; font-family: inherit; color: var(--text); }
.dmc-exit-form input:focus { outline: none; border-color: var(--indigo); }
.dmc-exit-form .btn-gold { min-height: 46px; }
.dmc-exit-fine { font-size: 11.5px; color: var(--text3); margin: 12px 0 0; }
@media (max-width: 600px) { .dmc-exit-h { font-size: 19px; } .dmc-exit-form .btn-gold { flex: 1 1 100%; } }

/* ════════════════════════════════════════════════════════════════════════
   BUILD JUNE 2026 — BLOCK 8: mobile pass (Section 11 M1-M4 + tap targets)
   ════════════════════════════════════════════════════════════════════════ */

/* M1: mobile text floor. Every label below 12px is lifted to 12px under 600px
   (audit-derived full list: footer, hero eyebrow, card tags, the new visuals). */
@media (max-width: 600px) {
  .fact-strip span, .eyebrow, .hero-eyebrow span, .detail-row .k, .pcard-tag,
  .breadcrumb, .art-bc .bc-list, .trust-note, .trust-item,
  .svc-tags, .svc-no, .ticker-item, .proof-label,
  .pricing-sub, .pricing-note, .mob-col-sub, .mob-row-k, .founder-title,
  .guide-label, .guide-num small, .logos-row-label, .logos-heading, .logo-inline-label, .logo-ph-box,
  .asc-believe-lbl, .asc-see-lbl, .routes-disclaimer, .form-note, .review-verified,
  .d-mx-card-k, .d-route-th, .d-cal-ev-name, .d-cal-ev-date, .d-cal-months,
  .compyear-tag, .gvroutes-th-sub, .csflow-stage-dur,
  .footer-lic, .footer-cred, .footer-col h3, .footer-col h6,
  .footer-bottom a, .footer-bottom span,
  .d-rung-chip, .art-rel-cat, .pcard-cost span, .art-rel-card > span:last-child,
  .costbars-seglabel, .guide-tag, .news-badge,
  .zone-card-k, .guide-read-time, .quick-answer-label, .most-chosen, .checker-step-label, .art-cat,
  .art-callout-h { font-size: 12px !important; }
}

/* M2: 44px minimum touch targets on touch screens (WCAG 2.5.5 / Apple HIG).
   The carousel dots keep a 9px visual via ::before inside a 44px hit area. */
@media (max-width: 1023px) {
  .btn-sm, .mob-sub a, .review-src { min-height: 44px; display: inline-flex; align-items: center; }
  .reviews-dot { width: 44px; height: 44px; background: transparent; position: relative; }
  .reviews-dot::before { content: ""; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 9px; height: 9px; border-radius: 50%; background: rgba(9,8,42,0.22); transition: background .2s var(--ease), transform .2s var(--ease); }
  .reviews-dot.is-active::before { background: var(--indigo); transform: translate(-50%, -50%) scale(1.3); }
  .reviews-dots { gap: 2px; }
}

/* M3: checker / wizard padding tightened on small screens. */
@media (max-width: 600px) { .checker-wrap { padding: 22px 18px; } }

/* M4: hero fact-strip becomes a 2-column grid under 560px so a wrapped row
   never shows a dangling per-item right border. */
@media (max-width: 560px) {
  .fact-strip { display: grid; grid-template-columns: 1fr 1fr; }
  .fact-strip > div { border-right: none; border-bottom: 1px solid rgba(255,255,255,0.08); }
}

/* ════════════════════════════════════════════════════════════════════════
   BUILD JUNE 2026 — BLOCK B: matched-CTA proof cue (beside the primary ask)
   ════════════════════════════════════════════════════════════════════════ */
.cta-proof { margin-top: 18px; display: inline-flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 600; color: rgba(255,255,255,0.86); }
.cta-proof svg { flex: none; opacity: 0.9; }
.cta-proof-stars { color: var(--gold); letter-spacing: 1px; }
@media (max-width: 600px) { .cta-proof { font-size: 12.5px; margin-top: 14px; flex-wrap: wrap; } }

/* ════════════════════════════════════════════════════════════════════════
   SMART HEADER + ANCHOR OFFSET: the fixed header slid out of the way on
   scroll-down so it never covers the hero title or a section while reading,
   and anchor jumps land below it instead of underneath it.
   ════════════════════════════════════════════════════════════════════════ */
html { scroll-padding-top: 88px; }
.site-header { transition: background 0.35s var(--ease), border-color 0.35s, box-shadow 0.35s, transform 0.3s var(--ease); }
.site-header.header-hidden { transform: translateY(-100%); }
:where(h1, h2, h3, [id]) { scroll-margin-top: 88px; }
@media (prefers-reduced-motion: reduce) { .site-header { transition: background 0.35s, border-color 0.35s, box-shadow 0.35s; } .site-header.header-hidden { transform: none; } }

/* ════════════════════════════════════════════════════════════════════════
   LEAD SYSTEM — phone country-code widget · validation errors · honeypot
   All reuse design tokens. Weights ≤700. AA contrast. Tap targets ≥44px.
   Behaviour lives in /assets/js/dmc.js (DMC.phone / DMC.validate / DMC.forms).
   ════════════════════════════════════════════════════════════════════════ */

/* ── Visually-hidden honeypot utility ── (off-screen, NOT display:none, so bots
   still see and fill it; real users never reach it: aria-hidden + tabindex -1) */
.dmc-vhide {
  position: absolute !important; left: -9999px !important; top: auto !important;
  width: 1px !important; height: 1px !important; overflow: hidden !important;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; padding: 0; margin: -1px;
}

/* ── "(optional)" field tag (replaces inline style on the contact form) ── */
.opt-tag { color: var(--text3); font-weight: 500; }

/* ── Inline validation error text (accessible red, clears AA on white) ── */
.dmc-err {
  margin: 6px 0 0; font-size: 13px; font-weight: 600; line-height: 1.5;
  color: #B42318; font-family: var(--font);
}
.dmc-err[hidden] { display: none; }
/* Typo-nudge "Did you mean …?" link — indigo, underlined, inline button. */
.dmc-nudge {
  display: inline; padding: 0; border: 0; background: none; cursor: pointer;
  font: inherit; font-weight: 700; color: var(--indigo); text-decoration: underline;
  text-underline-offset: 2px;
}
.dmc-nudge:hover { color: var(--indigo-dark); }
.dmc-nudge:focus-visible { outline: 3px solid rgba(15,7,189,0.35); outline-offset: 2px; border-radius: 3px; }
/* Wizard field error reuses the same accessible red. */
.dmc-wiz-emailerr { margin-top: 8px; }

/* ── Lead-magnet success / "we'll email it" states ── */
.dmc-magnet-msg { margin: 0; font-size: 13px; font-weight: 600; line-height: 1.55; color: var(--text); }
.dmc-magnet-err { margin: 8px 0 0; }

/* ── Phone country-code widget ── */
.dmc-phone { display: flex; align-items: stretch; width: 100%; position: relative; }
.dmc-phone-input { flex: 1 1 auto; min-width: 0; border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; }
.dmc-phone-btn {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px;
  min-height: 48px; padding: 0 12px; cursor: pointer;
  font-family: var(--font); font-size: 15px; font-weight: 600; color: var(--text);
  background: var(--ivory);
  border: 1px solid var(--border); border-right: 0;
  border-top-left-radius: 9px; border-bottom-left-radius: 9px;
  transition: background .18s var(--ease), border-color .18s;
}
.dmc-phone-btn:hover { background: #efece6; }
.dmc-phone-btn:focus-visible { outline: 3px solid rgba(15,7,189,0.35); outline-offset: 2px; }
.dmc-phone.is-open .dmc-phone-btn { border-color: var(--indigo); }
.dmc-phone-flag { font-size: 18px; line-height: 1; }
.dmc-phone-dial { font-variant-numeric: tabular-nums; }
.dmc-phone-caret {
  width: 0; height: 0; margin-left: 1px;
  border-left: 4px solid transparent; border-right: 4px solid transparent;
  border-top: 5px solid var(--text2); transition: transform .18s var(--ease);
}
.dmc-phone.is-open .dmc-phone-caret { transform: rotate(180deg); }

/* Dropdown panel */
.dmc-phone-panel {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 60;
  width: 300px; max-width: min(300px, 88vw);
  background: var(--white); border: 1px solid var(--border); border-radius: 12px;
  box-shadow: 0 22px 60px rgba(9,8,42,0.20);
  padding: 8px; display: none;
}
.dmc-phone.is-open .dmc-phone-panel { display: block; }
.dmc-phone-search { padding: 2px 2px 8px; }
.dmc-phone-search input {
  width: 100%; min-height: 44px; padding: 0 12px; font-family: var(--font); font-size: 15px;
  color: var(--text); background: var(--ivory);
  border: 1px solid var(--border); border-radius: 8px;
}
.dmc-phone-search input::placeholder { color: var(--text3); }
.dmc-phone-search input:focus { outline: none; border-color: var(--indigo); box-shadow: 0 0 0 3px rgba(15,7,189,0.12); }
.dmc-phone-list { list-style: none; margin: 0; padding: 0; max-height: 248px; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.dmc-phone-opt {
  display: flex; align-items: center; gap: 10px;
  min-height: 44px; padding: 8px 10px; border-radius: 8px; cursor: pointer;
  font-size: 14px; color: var(--text);
}
.dmc-phone-opt:hover { background: rgba(15,7,189,0.05); }
.dmc-phone-opt.is-sel { background: rgba(15,7,189,0.08); }
.dmc-phone-opt:focus-visible { outline: 2px solid var(--indigo); outline-offset: -2px; }
.dmc-phone-opt-flag { font-size: 18px; line-height: 1; flex: 0 0 auto; }
.dmc-phone-opt-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dmc-phone-opt-dial { flex: 0 0 auto; color: var(--text2); font-weight: 600; font-variant-numeric: tabular-nums; }
.dmc-phone-none { padding: 14px 10px; font-size: 14px; color: var(--text3); text-align: center; }

@media (max-width: 600px) {
  .dmc-err, .dmc-magnet-msg, .dmc-phone-opt, .dmc-phone-opt-dial, .dmc-phone-none { font-size: 13px; }
  .dmc-phone-btn, .dmc-phone-dial, .dmc-phone-search input { font-size: 16px; } /* no iOS zoom */
  .dmc-phone-panel { width: 88vw; }
}
@media (prefers-reduced-motion: reduce) {
  .dmc-phone-btn, .dmc-phone-caret { transition: none; }
}

/* ════════════════════════════════════════════════════════════════════════
   == DECREE COMPONENTS ==   (DMC Design Decree v1.1)
   Light editorial advisory system: ruled, typographic, calm. Mobile-first.
   DMC Display ONLY >=24px. Weight ceiling 600. One gold moment per viewport.
   ADDITIVE — new class names only; does not alter pre-migration components.
   Motion engines live in dmc.js: DMC.reveal (toggles .is-visible) + DMC.footerField.
   ════════════════════════════════════════════════════════════════════════ */

/* ── Reveal + line-draw (engine: DMC.reveal). Hidden ONLY under html.js (set by
   an early inline head script), so no-JS / JS-error users always see content. ── */
html.js [data-reveal] { opacity: 0; transform: translateY(8px); }
html.js [data-reveal].is-visible { opacity: 1; transform: none; transition: opacity var(--t-base) var(--ease-out), transform var(--t-base) var(--ease-out); }
html.js .line-draw { transform: scaleX(0); transform-origin: left; }
html.js .line-draw.is-visible { transform: scaleX(1); transition: transform var(--t-slow) var(--ease-out); }
@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-reveal].is-visible, .line-draw, .line-draw.is-visible { opacity: 1; transform: none; transition: none; }
}

/* ════════════════════════════════════════════════════════════════════════
   == CRITICAL FIRST-PAINT FIX (permanent rule, closed 2026-06-12) ==
   Nothing above the fold may depend on JavaScript to become visible.
   Hero content (H1, lead, CTAs, file-stack, ledger, seal) renders fully
   visible in plain CSS at first paint on EVERY page; the JS reveal engines
   ([data-reveal]/.is-visible and .reveal/.visible) are permitted BELOW the
   fold only. This block exempts all three hero containers site-wide
   (#hero / .page-hero / .art-hero — 191/191 pages carry one) and replaces
   the JS-gated hero entrance with a pure CSS keyframe whose final frame
   equals the static state. Do NOT remove or re-gate heroes on .is-visible. */
html.js #hero [data-reveal], html.js .page-hero [data-reveal], html.js .art-hero [data-reveal],
html.js #hero .reveal,       html.js .page-hero .reveal,       html.js .art-hero .reveal {
  opacity: 1; transform: none; filter: none;
}
/* calm one-time entrance — runs with or without JS; pure enhancement */
@keyframes heroRise { from { opacity: 0; transform: translateY(10px); } }
#hero [data-reveal], .page-hero [data-reveal], .art-hero [data-reveal],
#hero .reveal, .page-hero .reveal, .art-hero .reveal {
  animation: heroRise 0.62s var(--ease-out) backwards;
}
/* the homepage file-stack choreographs its own cards on desktop (see
   DOCUMENT-DOSSIER SYSTEM) — suppress the container rise there */
@media (min-width: 760px) { #hero .file-stack[data-reveal] { animation: none; } }
@media (prefers-reduced-motion: reduce) {
  #hero [data-reveal], .page-hero [data-reveal], .art-hero [data-reveal],
  #hero .reveal, .page-hero .reveal, .art-hero .reveal { animation: none; }
}

/* ── DMC Display typographic helpers (display floor 24px enforced by sizes) ── */
/* TYPOGRAPHY SPEC (locked by founder, 2026-06-12): H1/H2 + display render on the
   DMC Display 500 instance — never the heavier cut. Hierarchy comes from size and
   spacing, not weight. Standing fallback if founder's eye rejects the corrected
   render: Hanken Grotesk via the --serif token. */
.d-display { font-family: var(--serif); font-weight: 500; letter-spacing: -0.015em; color: var(--text); text-wrap: balance; }
.d-h1 { font-family: var(--serif); font-weight: 500; font-size: var(--fs-h1); line-height: 1.12; letter-spacing: -0.015em; color: var(--text); margin: 0; text-wrap: balance; }
.d-h2 { font-family: var(--serif); font-weight: 500; font-size: var(--fs-h2); line-height: 1.18; letter-spacing: -0.015em; color: var(--text); margin: 0; text-wrap: balance; }
.d-lead { font-size: var(--fs-lead); font-weight: 400; line-height: 1.65; color: var(--text2); max-width: 62ch; margin: 0; }
.d-accent { font-family: var(--serif); font-style: normal; font-weight: 500; color: var(--indigo); }
/* accent settle is pure CSS (first-paint safe): ink at load, settles to indigo.
   The JS .is-settled hook remains as a harmless duplicate for legacy calls. */
@keyframes accentSettle { to { color: var(--indigo); } }
.d-accent[data-settle] { color: var(--text); animation: accentSettle 0.7s var(--ease-out) 0.42s forwards; }
.d-accent[data-settle].is-settled { color: var(--indigo); transition: color var(--t-slow) var(--ease-out); }
@media (prefers-reduced-motion: reduce) { .d-accent[data-settle] { color: var(--indigo); animation: none; } }

/* ── Dateline (15.2) ── */
.dateline { display: inline-flex; align-items: center; gap: 9px; font-family: var(--font); font-weight: 500; font-size: var(--fs-eyebrow); letter-spacing: 0.18em; text-transform: uppercase; color: var(--text3); }
.dateline::before { content: ''; width: 18px; height: 1px; background: var(--gold); }
.byline-date { font-family: var(--font); font-weight: 500; font-size: 12.5px; letter-spacing: 0.04em; color: var(--text3); }

/* ── 5.3 SEAL (a seal whispers; never larger than 44px) ── */
.dmc-seal { display: inline-flex; align-items: center; gap: 11px; }
.dmc-seal-mark { flex: 0 0 auto; width: 40px; height: 40px; border: 1.5px solid var(--seal); border-radius: 50%; display: grid; place-items: center; color: var(--seal); }
.dmc-seal-mark svg { width: 20px; height: 20px; }
.dmc-seal-cap { font-family: var(--font); font-weight: 500; font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase; line-height: 1.5; color: var(--text3); }
@media (max-width: 430px) { .dmc-seal-mark { width: 34px; height: 34px; } .dmc-seal-mark svg { width: 17px; height: 17px; } }

/* ── 5.1 RATE CARD (THE signature component) ── */
.rate-card { position: relative; background: var(--paper); border: 1px solid var(--rule); border-radius: 8px; padding: 24px 20px; }
@media (min-width: 768px) { .rate-card { padding: 32px 36px; } }
.rate-card-eyebrow { font-family: var(--font); font-weight: 500; font-size: var(--fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; color: var(--text3); margin: 0 0 5px; }
.rate-card-title { font-family: var(--serif); font-weight: 500; font-size: var(--fs-h3); line-height: 1.25; color: var(--text); margin: 0 0 16px; }
.rate-card-corner { position: absolute; top: 16px; right: 16px; color: var(--rule); pointer-events: none; }
.rate-row { display: flex; align-items: baseline; padding: 9px 0; border-bottom: 1px solid var(--rule); }
.rate-label { font-family: var(--font); font-weight: 400; font-size: 14px; color: var(--text); }
.rate-tag { flex: 0 0 auto; margin-left: 7px; padding: 1px 6px; font-family: var(--font); font-weight: 600; font-size: 9px; letter-spacing: 0.06em; text-transform: uppercase; border-radius: 4px; color: var(--text3); border: 1px solid var(--rule); white-space: nowrap; }
.rate-tag.is-govt { color: var(--text2); border-color: rgba(9,8,42,0.22); }
.rate-tag.is-package { color: var(--indigo); border-color: rgba(15,7,189,0.40); }
.rate-leader { flex: 1 1 auto; align-self: stretch; border-bottom: 1px dotted var(--rule-dotted); margin: 0 8px; transform: translateY(-3px); min-width: 18px; }
.rate-value { flex: 0 0 auto; font-family: var(--font); font-weight: 500; font-size: 14px; color: var(--text); font-variant-numeric: tabular-nums; white-space: nowrap; }
.rate-total { display: flex; align-items: baseline; margin-top: 6px; padding-top: 10px; border-top: 1.5px solid var(--text); }
.rate-total-label { font-family: var(--font); font-weight: 600; font-size: 13px; letter-spacing: 0.02em; color: var(--text); }
.rate-total-value { margin-left: auto; font-family: var(--serif); font-weight: 500; font-size: clamp(19px, 4.6vw, 26px); line-height: 1; color: var(--indigo); border-bottom: 3px double var(--text); padding-bottom: 3px; font-variant-numeric: tabular-nums; }
.rate-verify { display: block; margin-top: 12px; text-align: right; font-family: var(--font); font-weight: 500; font-size: 10.5px; letter-spacing: 0.02em; color: var(--gold); }
.rate-verify svg { width: 11px; height: 11px; vertical-align: -1px; margin-right: 3px; }
.rate-verify.is-pending { color: var(--text3); font-style: italic; }
.rate-note { margin: 10px 0 0; font-size: 12px; line-height: 1.55; color: var(--text3); }
/* row stagger: DMC.reveal sets per-row transition-delay then adds .is-visible */
.js .rate-card[data-stagger] .rate-row,
.js .rate-card[data-stagger] .rate-total { opacity: 0; transform: translateY(6px); transition: opacity var(--t-base) var(--ease-out), transform var(--t-base) var(--ease-out); }
.js .rate-card[data-stagger].is-visible .rate-row,
.js .rate-card[data-stagger].is-visible .rate-total { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js .rate-card[data-stagger] .rate-row,
  .js .rate-card[data-stagger] .rate-total { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* ── 5.2 ADVISOR NOTE (annotation block) ── */
.advisor-note { background: var(--ivory); border-left: 2px solid var(--indigo); border-radius: 0; padding: 16px 18px; }
.an-claim-label { font-family: var(--font); font-weight: 500; font-size: 11px; letter-spacing: 0.03em; color: var(--text3); margin: 0 0 6px; }
.an-claim { font-family: var(--serif); font-weight: 500; font-size: clamp(16px, 4vw, 18px); line-height: 1.35; color: var(--text3); text-decoration: line-through; text-decoration-color: rgba(9,8,42,0.40); margin: 0 0 10px; }
.an-note { font-size: 13.5px; line-height: 1.6; color: var(--text2); margin: 0; }
.an-note .an-prefix { font-family: var(--font); font-weight: 500; font-style: normal; color: var(--indigo); }
.an-note .an-voice { font-family: var(--font); font-weight: 500; font-style: italic; }

/* ── 5.4 PROOF LEDGER (homepage hero only) ── */
.proof-ledger { background: var(--paper); border: 1px solid var(--rule); border-radius: 8px; padding: 20px; max-width: 440px; }
.proof-ledger-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.proof-ledger-eyebrow { font-family: var(--font); font-weight: 500; font-size: var(--fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; color: var(--text3); }
.proof-ledger-verif { font-family: var(--font); font-weight: 500; font-size: 10.5px; letter-spacing: 0.04em; color: var(--indigo); white-space: nowrap; }
.proof-ledger .rate-row:last-of-type { border-bottom: 0; }
.rate-value.is-zero { color: var(--indigo); display: inline-flex; align-items: center; gap: 5px; }
.rate-value.is-zero svg { color: var(--gold); }
.rate-value.is-zero svg { width: 13px; height: 13px; }

/* ── 5.5 PACKAGE CARD (value first; price is the last, quietest line) ── */
.pkg-card { position: relative; display: flex; flex-direction: column; height: 100%; background: var(--paper); border: 1px solid var(--rule); border-radius: 16px; padding: 26px 24px; box-shadow: var(--shadow-card); transition: transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease); }
.pkg-card:hover { transform: translateY(-3px); box-shadow: 0 24px 48px -26px rgba(9,8,42,0.26); border-color: rgba(15,7,189,0.22); }
/* the "Most chosen" card (Established) is quietly elevated — gold badge on an indigo top edge */
.pkg-card:has(.pkg-flag) { border-top: 3px solid var(--indigo); box-shadow: 0 22px 50px -26px rgba(15,7,189,0.26); }
.pkg-name { font-family: var(--serif); font-weight: 500; font-size: clamp(22px, 5vw, 26px); line-height: 1.15; color: var(--text); margin: 0 0 4px; }
.pkg-for { font-size: 13px; line-height: 1.5; color: var(--text2); margin: 0 0 16px; }
.pkg-handled { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.pkg-handled li { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; line-height: 1.5; color: var(--text); }
.pkg-handled li svg { flex: 0 0 auto; width: 16px; height: 16px; color: var(--indigo); margin-top: 2px; }
.pkg-hr { height: 1px; background: var(--rule); border: 0; margin: 0 0 14px; }
.pkg-price { margin-top: auto; font-family: var(--font); font-weight: 500; font-size: 16px; line-height: 1.5; color: var(--text); }
.pkg-price .pkg-amt { font-variant-numeric: tabular-nums; }
.pkg-flag { position: absolute; top: 0; right: 18px; transform: translateY(-50%); padding: 4px 12px; background: var(--gold); color: var(--deep); font-family: var(--font); font-weight: 600; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; border-radius: 99px; }

/* ── 5.6 ROUTER TILE v2 (index of a well-made document, not app buttons) ── */
.router-tiles { display: grid; grid-template-columns: 1fr; border-top: 1px solid var(--rule); }
@media (min-width: 760px) { .router-tiles { grid-template-columns: 1fr 1fr; column-gap: 40px; } }
.router-tile { position: relative; display: flex; align-items: flex-start; gap: 14px; padding: 20px 4px; border-bottom: 1px solid var(--rule); color: var(--text); text-decoration: none; }
.router-tile:hover { background: rgba(15,7,189,0.025); }
.router-tile-body { flex: 1 1 auto; }
.router-tile-line { display: block; font-family: var(--serif); font-weight: 500; font-size: 19px; line-height: 1.25; color: var(--text); margin: 0 0 4px; text-decoration: none; }
.router-tile-exp { display: block; font-size: 13px; line-height: 1.5; color: var(--text2); margin: 0; }
.router-tile-arrow { flex: 0 0 auto; align-self: flex-end; color: var(--indigo); transition: transform var(--t-fast) var(--ease-out); }
.router-tile-arrow svg { width: 20px; height: 16px; display: block; }
/* cover-link tile (used where a tile holds a second, nested destination):
   the cover link stretches over the whole tile; sub-links stack above it */
a.router-tile-cover { color: var(--text); text-decoration: none; }
a.router-tile-cover::after { content: ''; position: absolute; inset: 0; }
.router-tile-exp a { position: relative; z-index: 1; color: var(--indigo); text-decoration: underline; text-underline-offset: 2px; }
.router-tile:hover .router-tile-arrow, .router-tile:focus-visible .router-tile-arrow { transform: translateX(4px); }
.router-tile:focus-visible { outline: 2px solid var(--indigo); outline-offset: 2px; }

/* ── 5.8 QUIET CTA (btn-primary already defined above; matches Decree) ── */
.btn-quiet { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font); font-weight: 600; font-size: 13px; color: var(--text); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: none; }
.btn-quiet .qa { color: var(--indigo); transition: transform var(--t-fast) var(--ease-out); }
.btn-quiet:hover .qa { transform: translateX(4px); }

/* ── 15.1 KHATAM (the eight-point star: two overlapping squares) ── */
.khatam { display: inline-block; vertical-align: middle; line-height: 0; }
.sec-divider { display: flex; align-items: center; border: 0; margin: 0; }
.sec-divider::before, .sec-divider::after { content: ''; flex: 1 1 auto; height: 1px; background: var(--rule); }
.sec-divider .khatam { margin: 0 16px; color: var(--gold); }
.khatam-list { list-style: none; margin: 0; padding: 0; }
.khatam-list li { display: flex; align-items: flex-start; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--rule); font-size: 15px; line-height: 1.55; color: var(--text); }
.khatam-list li .khatam { flex: 0 0 auto; margin-top: 3px; color: var(--indigo); }
.lattice-band { display: block; width: 100%; height: 28px; }

/* ── 16.2 PATH MARKER (a quiet orientation instrument; never pressures) ── */
.path-marker { padding: 0; }
.path-marker-eyebrow { font-family: var(--font); font-weight: 500; font-size: var(--fs-eyebrow); letter-spacing: 0.16em; text-transform: uppercase; color: var(--text3); margin: 0 0 14px; }
.path-track { display: flex; align-items: flex-start; }
.path-node { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: 8px; width: 64px; }
.path-node-sq { width: 11px; height: 11px; border-radius: 50%; border: 1.5px solid var(--text3); background: transparent; }
.path-node.is-done .path-node-sq { background: var(--indigo); border-color: var(--indigo); }
.path-node.is-current .path-node-sq { border: 2px solid var(--indigo); box-shadow: 0 0 0 2px var(--white), 0 0 0 3.5px rgba(15,7,189,0.25); }
.path-node.is-proceed .path-node-sq { border-color: var(--gold); }
.path-node-lbl { font-family: var(--font); font-weight: 500; font-size: 9.5px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--text3); text-align: center; }
.path-node.is-done .path-node-lbl, .path-node.is-current .path-node-lbl { color: var(--text2); }
.path-link { flex: 1 1 auto; height: 1px; background: var(--rule); margin: 5px 2px 0; }
.path-next { margin: 14px 0 0; font-size: 13px; color: var(--text2); }
.path-next a { color: var(--indigo); font-weight: 600; }

/* ── 6 / 15.3 FOOTER FIELD (canvas; engine DMC.footerField) ── */
.footer-field { display: block; width: 100%; height: 140px; }
@media (min-width: 768px) { .footer-field { height: 180px; } }
/* FAB tucks away while the closing CTA strip is in view (engine: DMC.fabHide) */
.wa-fab.is-tucked { opacity: 0; transform: translateY(14px) scale(0.94); pointer-events: none; transition: opacity var(--t-base) var(--ease-out), transform var(--t-base) var(--ease-out); }
@media (prefers-reduced-motion: reduce) { .wa-fab.is-tucked { transition: none; } }

/* ── 5.7 INFOGRAPHIC PRIMITIVES (inline SVG per use; wrappers + labels here) ── */
.dmc-figure { margin: 0; }
.fig-cap, .dmc-figure figcaption { font-family: var(--font); font-weight: 500; font-size: 12px; letter-spacing: 0.02em; color: var(--text3); margin-top: 10px; }
/* TIMELINE RAIL (vertical mobile / horizontal desktop) */
.tl-rail { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.tl-step { position: relative; display: flex; gap: 14px; padding: 0 0 24px; }
.tl-step:last-child { padding-bottom: 0; }
.tl-marker { flex: 0 0 auto; position: relative; width: 12px; }
.tl-dot { width: 13px; height: 13px; border-radius: 50%; border: 2px solid var(--indigo); background: var(--indigo); margin-top: 3px; }
.tl-step.is-end .tl-dot { border-color: var(--gold); background: var(--gold); box-shadow: 0 0 0 4px rgba(201,152,26,0.12); }
.tl-line { position: absolute; left: 5px; top: 14px; bottom: -3px; width: 1px; background: var(--rule); }
.tl-step:last-child .tl-line { display: none; }
.tl-day { font-family: var(--font); font-weight: 600; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text3); }
.tl-body { font-size: 14px; line-height: 1.5; color: var(--text); margin-top: 2px; }
@media (min-width: 900px) {
  .tl-rail.is-horizontal { flex-direction: row; }
  .tl-rail.is-horizontal .tl-step { flex: 1 1 0; flex-direction: column; padding: 0 24px 0 0; }
  .tl-rail.is-horizontal .tl-marker { width: auto; }
  .tl-rail.is-horizontal .tl-line { left: 16px; right: -10px; top: 6px; bottom: auto; width: auto; height: 2px; background: linear-gradient(90deg, rgba(15,7,189,0.25), rgba(15,7,189,0.08)); }
}
/* SPLIT BAR (govt vs everything-else) */
.split-bar { display: flex; height: 34px; border-radius: 4px; overflow: hidden; border: 1px solid var(--rule); }
.split-bar .sb-seg { display: flex; align-items: center; justify-content: center; font-family: var(--font); font-size: 11px; font-weight: 600; color: var(--text2); }
.split-bar .sb-govt { background: repeating-linear-gradient(45deg, rgba(15,7,189,0.16), rgba(15,7,189,0.16) 5px, rgba(15,7,189,0.06) 5px, rgba(15,7,189,0.06) 10px); }
.split-bar .sb-rest { background: var(--ivory); }
/* DECISION SPINE */
.spine { list-style: none; margin: 0; padding: 0; position: relative; }
.spine::before { content: ''; position: absolute; left: 7px; top: 6px; bottom: 6px; width: 1px; background: var(--rule); }
.spine-node { position: relative; padding: 0 0 22px 28px; }
.spine-node::before { content: ''; position: absolute; left: 3px; top: 5px; width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid var(--indigo); background: var(--white); }
.spine-q { font-family: var(--serif); font-weight: 500; font-size: 18px; line-height: 1.3; color: var(--text); }
.spine-branches { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 6px; }
.spine-branch { font-size: 13px; color: var(--text2); }
/* ELIGIBILITY DIAL wrapper */
.elig-dial { display: block; max-width: 240px; margin: 0 auto; }

/* ── T5 marginalia (key figures pulled into the left margin at desktop) ── */
.art-margin-num { font-family: var(--serif); font-weight: 500; font-size: var(--fs-num); line-height: 1; color: var(--indigo); display: block; }
.marginalia { margin: 22px 0; padding: 6px 0 6px 16px; border-left: 2px solid var(--rule); }
.marginalia > p, .marginalia .mg-label, .marginalia figcaption { font-size: 12.5px; color: var(--text3); line-height: 1.5; margin: 4px 0 0; }

/* ── T4 consequence figure (the AED stakes; one per objection page) ── */
.art-consequence { margin: 32px 0; padding: 24px 20px; border-left: 2px solid var(--indigo); background: var(--ivory); }
.art-consequence .ac-num { font-family: var(--serif); font-weight: 500; font-size: var(--fs-num); line-height: 1.1; color: var(--text); margin: 0 0 8px; }
.art-consequence .ac-label { font-size: 13px; color: var(--text2); font-weight: 500; line-height: 1.5; margin: 0; }

/* ── Dark closing strip helper (one dark section per page, before footer) ── */
.cta-close { position: relative; background: var(--deep); color: #fff; overflow: hidden; padding: var(--sec-pad) 0; }
/* refined top hairline — the gold "line" returns, no triangles (sits above the scrim) */
.cta-close::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; z-index: 2; background: linear-gradient(90deg, transparent, rgba(201,152,26,0.5) 28%, rgba(201,152,26,0.5) 72%, transparent); }
/* dimension tick — a measurement mark from the drafting/decision-path motif */
.cta-tick { display: block; width: 42px; height: 2px; margin: 0 auto 20px; background: var(--gold); border-radius: 2px; position: relative; }
.cta-tick::before, .cta-tick::after { content: ''; position: absolute; top: -3px; width: 1px; height: 8px; background: var(--gold); opacity: 0.85; }
.cta-tick::before { left: 0; } .cta-tick::after { right: 0; }
.cta-close-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 42%; opacity: 0.58; }
.cta-close-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(9,8,42,0.94) 0%, rgba(9,8,42,0.5) 52%, rgba(9,8,42,0.88) 100%); }
.cta-close > .wrap { position: relative; z-index: 1; }
.cta-close .lattice-band { position: absolute; top: 0; left: 0; right: 0; }
/* cta-close styles its own children so migrated pages need ZERO inline color here */
.cta-close .d-h2, .cta-close h2, .cta-close h3 { color: #fff; }
.cta-close .d-lead, .cta-close p { color: rgba(255,255,255,0.80); }
.cta-close .btn-quiet, .cta-close .btn-quiet .qa, .cta-close a.btn-quiet { color: #fff; }
.cta-close .byline-date, .cta-close .dateline, .cta-close .eyebrow, .cta-close .path-marker-eyebrow { color: rgba(255,255,255,0.62); }
.cta-close .d-accent { color: var(--gold); }

/* ── Text-color utilities (use these instead of inline color; tokens only, AA-safe) ── */
.t-white { color: #fff; }
.t-white-soft { color: rgba(255,255,255,0.80); }
.t-white-mut { color: rgba(255,255,255,0.62); }
.t-gold { color: var(--gold); }
.t-ink { color: var(--text); }
.t-ink2 { color: var(--text2); }
.t-ink3 { color: var(--text3); }
/* .s-sub: section sub-heading, indigo (was a load-bearing inline color site-wide) */
.s-sub { color: var(--indigo); }

/* ── 8.1 RATE FILTER (/pricing/ — calm ruled toggle, zero backend, AA) ── */
.rate-filter legend { padding: 0; }
.filter-chip { display: inline-flex; align-items: center; min-height: 36px; padding: 7px 15px; font-family: var(--font); font-weight: 500; font-size: 13px; letter-spacing: 0.01em; color: var(--text2); background: var(--white); border: 1px solid var(--rule); border-radius: 99px; cursor: pointer; transition: color var(--t-fast) var(--ease-out), border-color var(--t-fast) var(--ease-out), background var(--t-fast) var(--ease-out); }
.filter-chip:hover { color: var(--text); border-color: rgba(9,8,42,0.22); }
.filter-chip.is-active { color: var(--white); background: var(--indigo); border-color: var(--indigo); }
.filter-chip:focus-visible { outline: 2px solid var(--indigo); outline-offset: 2px; }
.rate-card-wrap[hidden] { display: none; }
@media (prefers-reduced-motion: reduce) { .filter-chip { transition: none; } }

/* ════════════════════════════════════════════════════════════════════════
   == DECREE v1.2.2 — DOCUMENT-DOSSIER SYSTEM ==   ("Your file, in order")
   Heroes become abstracted document evidence, never replicas.
   COMPLIANCE (locked): no government logos / emblems / seals / authority names;
   no real QR codes; licence numbers masked ("No 14577XX"); placeholder entity
   names ("Your Company L.L.C"); the only stamp wording is "DM CONSULTANCY".
   Weight ceiling 600. One stamp per viewport, two per page. AA on light.
   Motion is PURE CSS keyframes (CRITICAL FIRST-PAINT FIX): the hero never
   depends on JS to be visible; disabled state = the final visible frame.
   ════════════════════════════════════════════════════════════════════════ */

/* hero clears the fixed transparent header with real breathing room (the hero is
   the only section sitting under the 64-72px header at the very top — 80px section
   padding left it cramped/busy, only ~8px below the header on desktop) */
@media (max-width: 1023px) { #hero { padding-top: 96px; } }
@media (min-width: 1024px) { #hero { padding-top: 134px; } }

/* ════════════════════════════════════════════════════════════════════════
   == HOMEPAGE POP (2026-06-12) — stat band + reviews marquee ==
   Founder-directed rebalance toward the market centre: confident brand-colour
   blocking + first-class social proof, with the honesty core unchanged.
   ════════════════════════════════════════════════════════════════════════ */
/* section split + photo (homepage life pass: real images connect the page) */
.sec-split { display: grid; grid-template-columns: 1fr; gap: 26px; align-items: center; }
@media (min-width: 920px) { .sec-split { grid-template-columns: 1.12fr 0.88fr; gap: 52px; } }
.sec-split .dmc-wiz-intro, .sec-split .dmc-wiz-trigger-wrap { text-align: left; margin-left: 0; margin-right: 0; }
.sec-split .dmc-wiz-intro .d-lead { margin-inline: 0; }
.sec-photo { width: 100%; height: 190px; object-fit: cover; border-radius: 16px; display: block; box-shadow: 0 16px 36px -22px rgba(9,8,42,0.35); }
@media (min-width: 920px) { .sec-photo { height: 340px; } .sec-photo-tall { height: 396px; } }

/* hero boldness comes from SCALE (weight stays locked at 500): a 5-word H1
   earns a much larger canvas, mobile-first. */
.hero-h1 { font-size: clamp(42px, 11vw, 74px); line-height: 1.05; letter-spacing: -0.02em; max-width: 13ch; text-wrap: balance; }
.hero-h1 .d-accent { white-space: nowrap; }
.hero-lead { font-family: var(--serif); font-weight: 500; font-size: clamp(18px, 4.8vw, 23px); line-height: 1.3; color: var(--text2); margin: 16px 0 0; }
.hero-trust-tel { font-weight: 600; color: var(--indigo); white-space: nowrap; }

.stat-band { background: var(--indigo); color: #fff; padding: 38px 0 34px; }
.stat-band-tag { font-family: var(--serif); font-weight: 500; font-size: clamp(17px, 4.4vw, 21px); color: #fff; margin: 0 0 22px; }
.stat-band-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 26px 16px; }
@media (min-width: 760px) { .stat-band { padding: 48px 0 44px; } .stat-band-grid { grid-template-columns: repeat(4, 1fr); gap: 24px; } }
.stat { display: flex; flex-direction: column; gap: 7px; }
.stat-n { font-family: var(--serif); font-weight: 500; font-size: clamp(36px, 7vw, 54px); line-height: 1; letter-spacing: -0.015em; color: #fff; display: inline-flex; align-items: center; gap: 9px; }
.stat-n svg { width: 22px; height: 22px; color: var(--gold-light); }
.stat-l { font-family: var(--font); font-weight: 500; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; color: rgba(255,255,255,0.76); line-height: 1.5; }

/* reviews — aggregate badge + branded Google/LinkedIn cards in an auto-scroll row.
   Pure CSS loop (duplicated track, translateX -50%); pauses on hover/focus;
   reduced-motion = static scrollable row. Real reviews; SEO/no-JS fallback. */
.rev-agg { display: flex; align-items: center; gap: 8px 16px; flex-wrap: wrap; margin-bottom: 26px; padding: 16px 22px; background: var(--paper); border: 1px solid var(--rule); border-radius: 14px; max-width: 620px; box-shadow: 0 14px 30px -22px rgba(9,8,42,0.3); }
.rev-agg-g { flex: 0 0 auto; display: inline-flex; }
.rev-agg-main { display: inline-flex; align-items: center; gap: 9px; }
.rev-agg-score { font-family: var(--serif); font-weight: 500; font-size: 30px; line-height: 1; color: var(--text); letter-spacing: -0.01em; }
.rev-agg-stars { color: var(--gold); display: inline-flex; }
.rev-agg-sub { flex: 1 1 220px; font-size: 12px; line-height: 1.5; color: var(--text3); }
.rev-agg-link { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--indigo); white-space: nowrap; }
.rev-marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
.rev-track { display: flex; gap: 16px; width: max-content; padding: 6px 0 18px; animation: revScroll 64s linear infinite; }
.rev-marquee:hover .rev-track, .rev-marquee:focus-within .rev-track { animation-play-state: paused; }
@keyframes revScroll { to { transform: translateX(-50%); } }
.rev-card { flex: 0 0 auto; width: min(340px, 80vw); background: var(--paper); border: 1px solid var(--rule); border-radius: 16px; padding: 20px 20px 16px; box-shadow: 0 12px 28px -20px rgba(9,8,42,0.26); display: flex; flex-direction: column; }
.rev-card--g { border-top: 3px solid #4285F4; }
.rev-card--l { border-top: 3px solid #0A66C2; }
.rev-card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 13px; }
.rev-src { display: inline-flex; align-items: center; gap: 7px; }
.rev-src-t { font-family: var(--font); font-weight: 600; font-size: 10px; letter-spacing: 0.07em; text-transform: uppercase; color: var(--text3); }
.rev-stars { color: var(--gold); display: inline-flex; line-height: 1; }
.rev-card-q { font-size: 13.5px; line-height: 1.64; color: var(--text2); margin: 0 0 16px; flex: 1 1 auto; }
.rev-card-meta { display: flex; align-items: center; gap: 11px; }
.rev-av { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; color: #fff; font-family: var(--font); font-weight: 600; font-size: 14px; display: inline-flex; align-items: center; justify-content: center; }
.rev-av--g { background: #185ABC; }
.rev-av--l { background: var(--indigo); }
.rev-id { display: flex; flex-direction: column; min-width: 0; }
.rev-card-name { font-family: var(--font); font-weight: 600; font-size: 13px; color: var(--text); }
.rev-card-role { font-size: 11.5px; color: var(--text3); line-height: 1.35; }
.rev-card-src { margin-left: auto; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--rule); color: var(--indigo); display: inline-flex; align-items: center; justify-content: center; transition: background .2s, border-color .2s; }
.rev-card-src:hover { background: rgba(15,7,189,0.06); border-color: var(--indigo); }
@media (prefers-reduced-motion: reduce) {
  .rev-track { animation: none; }
  .rev-marquee { overflow-x: auto; -webkit-mask-image: none; mask-image: none; }
}

/* ── SITUATION ROUTER — icon cards (scoped to win over the legacy block) ── */
.router-tiles { display: grid; grid-template-columns: 1fr; gap: 14px; border-top: none; }
@media (min-width: 720px) { .router-tiles { grid-template-columns: 1fr 1fr; gap: 16px; } }
.router-tiles .router-tile { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 13px; padding: 24px 24px 54px; background: var(--white); border: 1px solid var(--rule); border-radius: 16px; box-shadow: 0 3px 10px rgba(9,8,42,0.04), 0 16px 38px -22px rgba(9,8,42,0.15); text-decoration: none; transition: border-color .2s var(--ease), box-shadow .2s var(--ease), transform .2s var(--ease); }
.router-tiles .router-tile:hover { border-color: var(--indigo); box-shadow: 0 18px 40px -22px rgba(9,8,42,0.22); transform: translateY(-3px); }
.router-tile-ico { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 12px; background: rgba(15,7,189,0.06); color: var(--indigo); display: inline-flex; align-items: center; justify-content: center; transition: background .2s, color .2s; }
.router-tile-ico svg { width: 22px; height: 22px; }
.router-tiles .router-tile:hover .router-tile-ico { background: var(--indigo); color: #fff; }
.router-tiles .router-tile-body { display: block; }
.router-tiles .router-tile-line { display: block; font-family: var(--serif); font-weight: 500; font-size: 18px; line-height: 1.25; color: var(--text); margin: 0 0 5px; text-decoration: none; }
.router-tiles .router-tile-exp { display: block; font-size: 13px; line-height: 1.55; color: var(--text2); margin: 0; }
.router-tiles .router-tile-exp a { position: relative; z-index: 1; color: var(--indigo); text-decoration: underline; text-underline-offset: 2px; }
.router-tiles .router-tile-arrow { position: absolute; left: 24px; bottom: 22px; color: var(--indigo); transition: transform var(--t-fast) var(--ease-out); }
.router-tiles .router-tile-arrow svg { width: 22px; height: 16px; display: block; }
.router-tiles .router-tile:hover .router-tile-arrow { transform: translateX(5px); }
a.router-tile-cover { color: var(--text); text-decoration: none; }
a.router-tile-cover::after { content: ''; position: absolute; inset: 0; }

/* ── HOW WE WORK — "we always do / we never do" commitments ── */
.commit-split { display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: 30px; }
@media (min-width: 760px) { .commit-split { grid-template-columns: 1fr 1fr; gap: 22px; } }
.commit-col { background: var(--paper); border: 1px solid var(--rule); border-radius: 16px; padding: 22px 22px 18px; box-shadow: 0 3px 10px rgba(9,8,42,0.04), 0 16px 38px -22px rgba(9,8,42,0.15); }
.commit-col--do { border-top: 3px solid var(--indigo); }
.commit-col--dont { border-top: 3px solid var(--text3); }
.commit-head { display: flex; align-items: center; gap: 10px; font-family: var(--font); font-weight: 600; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text3); margin: 0 0 15px; }
.commit-mark { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; }
.commit-mark svg { width: 12px; height: 12px; }
.commit-mark--do { background: rgba(15,7,189,0.1); color: var(--indigo); }
.commit-mark--dont { background: rgba(9,8,42,0.06); color: var(--text2); }
.commit-col ul { display: flex; flex-direction: column; gap: 13px; margin: 0; padding: 0; list-style: none; }
.commit-col li { position: relative; padding-left: 17px; font-size: 14px; line-height: 1.55; color: var(--text2); }
.commit-col li::before { content: ''; position: absolute; left: 0; top: 8px; width: 6px; height: 6px; border-radius: 50%; }
.commit-col--do li::before { background: var(--indigo); }
.commit-col--dont li::before { background: var(--text3); }

/* ── DECISION PATH — numbered connected spine (Proceed = gold arrival) ── */
.dpath { position: relative; margin: 0; padding: 0; list-style: none; }
.dpath-step { position: relative; display: flex; gap: 18px; padding: 0 0 34px; }
.dpath-step:last-child { padding-bottom: 0; }
.dpath-step:not(:last-child)::before { content: ''; position: absolute; left: 17px; top: 32px; bottom: -2px; width: 1.5px; background: var(--rule); }
.dpath-node { position: relative; z-index: 1; flex: 0 0 auto; width: 35px; height: 35px; border-radius: 50%; border: 1.5px solid var(--rule); background: var(--paper); color: var(--indigo); font-family: var(--serif); font-weight: 500; font-size: 15px; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 5px 14px -8px rgba(9,8,42,0.3); }
.dpath-step.is-end .dpath-node { border-color: var(--gold); color: #7A5C0E; box-shadow: 0 0 0 4px rgba(201,152,26,0.1); }
.dpath-c { padding-top: 4px; }
.dpath-t { font-family: var(--font); font-weight: 600; font-size: 17px; line-height: 1.3; color: var(--text); margin: 0; }
.dpath-d { font-size: 14px; line-height: 1.55; color: var(--text2); margin: 4px 0 0; }
.dpath-link { font-size: 13px; line-height: 1.5; margin: 8px 0 0; }
.dpath-link a { color: var(--indigo); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }

/* ── FIVE ASSUMPTIONS — numbered editorial grid (myth struck → what we see) ── */
.assumptions-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 860px) { .assumptions-grid { grid-template-columns: 1fr 1fr; gap: 18px; } .assumptions-grid .assumption:last-child { grid-column: 1 / -1; } }
.assumption { position: relative; background: var(--paper); border: 1px solid var(--rule); border-radius: 16px; padding: 24px 24px 22px; overflow: hidden; box-shadow: 0 16px 38px -22px rgba(9,8,42,0.30); transition: transform .25s var(--ease), box-shadow .25s var(--ease); }
.assumption:hover { transform: translateY(-3px); box-shadow: 0 26px 50px -24px rgba(9,8,42,0.32); }
.assumption-n { position: absolute; top: 4px; right: 20px; font-family: var(--serif); font-weight: 500; font-size: 76px; line-height: 1; color: rgba(15,7,189,0.10); pointer-events: none; }
.assumption-believe { font-family: var(--font); font-weight: 600; font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text3); margin: 0 0 9px; }
.assumption-claim { position: relative; font-family: var(--serif); font-weight: 500; font-size: clamp(18px, 4vw, 22px); line-height: 1.26; color: var(--text3); text-decoration: line-through; text-decoration-color: rgba(201,152,26,0.7); text-decoration-thickness: 2px; margin: 0 0 16px; max-width: 88%; }
.assumption-see { display: inline-flex; align-items: center; gap: 9px; font-family: var(--font); font-weight: 600; font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--indigo); margin: 0 0 8px; }
.assumption-see::before { content: ''; width: 18px; height: 2px; background: var(--gold); border-radius: 2px; }
.assumption-note { font-size: 14px; line-height: 1.62; color: var(--text2); margin: 0; }

}

/* hero visual — the file-stack anchored over a subtle Emirati mashrabiya
   texture (the sanctioned 5% UAE touch): grounds the floating stack AND signals
   a local, Dubai-rooted firm. Desktop-only; mobile hero stays pristine. */
.hero-visual { position: relative; }
.hero-visual .file-stack { position: relative; z-index: 1; }
.hero-uae { position: absolute; z-index: 0; inset: -14% -10% -14% 2%; background: url('/assets/images/mashrabiya-hero.webp') center / cover; opacity: 0.11; filter: saturate(0.5) contrast(1.05); -webkit-mask-image: radial-gradient(circle at 60% 48%, #000 26%, transparent 68%); mask-image: radial-gradient(circle at 60% 48%, #000 26%, transparent 68%); pointer-events: none; }
@media (max-width: 919px) { .hero-uae { display: none; } }

/* hero trust line — the one universal market pattern (first-viewport proof)
   adopted quietly: stars are SVG graphics (gold), text stays AA --text3. */
.hero-trust { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin: 18px 0 0; font-family: var(--font); font-weight: 500; font-size: 12.5px; letter-spacing: 0.02em; color: var(--text3); }
.hero-trust-stars { color: var(--gold); line-height: 1; display: inline-flex; }
.hero-trust-sep { color: var(--text3); }

/* hero light blooms — static depth so the ivory field doesn't read flat.
   Pure CSS, no motion, no asset. */
#hero { position: relative; overflow: hidden; }
#hero::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(640px 420px at 82% 12%, rgba(15,7,189,0.06), transparent 68%),
    radial-gradient(720px 480px at 6% 92%, rgba(201,152,26,0.055), transparent 70%);
}
#hero > .wrap { position: relative; }

/* ── hero 2-column scaffold (text + dossier) ── */
.d-hero-grid { display: grid; grid-template-columns: 1fr; gap: 36px; align-items: start; }
@media (min-width: 920px) { .d-hero-grid { grid-template-columns: 1.04fr 0.96fr; gap: 56px; align-items: center; } }
.d-sub-precise { font-size: 14.5px; line-height: 1.6; color: var(--text2); max-width: 54ch; margin: 14px 0 0; }

/* ── 9.1 DOC-CARD — one abstracted document ── */
.doc-card { position: relative; background: var(--paper); border: 1px solid var(--rule); border-radius: 9px; padding: 18px 18px 16px; box-shadow: 0 1px 0 rgba(255,255,255,0.7) inset, 0 14px 34px -18px rgba(9,8,42,0.30); overflow: hidden; }
.doc-card::after { content: ''; position: absolute; top: 0; right: 0; width: 26px; height: 26px; background: linear-gradient(225deg, var(--ivory) 0 50%, transparent 50%); border-left: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.doc-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding-right: 24px; border-bottom: 1px solid var(--rule); padding-bottom: 9px; margin-bottom: 11px; }
.doc-card-kind { font-family: var(--font); font-weight: 600; font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--indigo); }
.doc-card-no { font-family: var(--font); font-weight: 500; font-size: 10px; letter-spacing: 0.04em; color: var(--text3); font-variant-numeric: tabular-nums; white-space: nowrap; }
.doc-card-field { display: flex; align-items: baseline; gap: 10px; padding: 5px 0; }
.doc-card-field + .doc-card-field { border-top: 1px dotted var(--rule-dotted); }
.doc-card-k { flex: 0 0 38%; font-family: var(--font); font-weight: 500; font-size: 10.5px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text3); }
.doc-card-v { flex: 1 1 auto; font-family: var(--font); font-weight: 500; font-size: 13px; color: var(--text); }
.doc-card-v.is-ok { color: var(--indigo); }
.doc-card-lines { margin-top: 11px; display: flex; flex-direction: column; gap: 6px; }
.doc-card-lines span { height: 5px; border-radius: 3px; background: var(--rule); }
.doc-card-lines span:nth-child(1) { width: 92%; }
.doc-card-lines span:nth-child(2) { width: 78%; }
.doc-card-lines span:nth-child(3) { width: 86%; }
.doc-card-wm { position: absolute; right: 12px; bottom: 8px; font-family: var(--font); font-weight: 600; font-size: 8.5px; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(201,152,26,0.62); border: 1px solid rgba(201,152,26,0.5); border-radius: 4px; padding: 2px 6px; transform: rotate(-6deg); }

/* ── 9.2 FILE-STACK — fanned dossier hero ── */
.file-stack { position: relative; width: 100%; max-width: 360px; margin-inline: auto; }
.file-stack .doc-card { width: 100%; }
.file-stack .doc-card.is-back1, .file-stack .doc-card.is-back2 { display: none; }
@media (min-width: 760px) {
  .file-stack { min-height: 360px; }
  .file-stack .doc-card.is-back1, .file-stack .doc-card.is-back2 { display: block; position: absolute; top: 0; left: 0; right: 0; }
  .file-stack .doc-card.is-back2 { z-index: 1; transform: rotate(-5deg) translate(-7%, 6%); }
  .file-stack .doc-card.is-back1 { z-index: 2; transform: rotate(4deg) translate(7%, 3%); }
  .file-stack .doc-card.is-front { z-index: 3; transform: rotate(-1deg); position: relative; }
  /* entry choreography — pure CSS keyframes (first-paint safe, zero JS):
     cards slide up into the fan already rotated, stamp presses last.
     The final frame of every keyframe equals the static fan above, so with
     animations disabled the fan simply renders complete. */
  @keyframes fsBack2 { from { opacity: 0; transform: rotate(-5deg) translate(-7%, 26%); } to { opacity: 1; transform: rotate(-5deg) translate(-7%, 6%); } }
  @keyframes fsBack1 { from { opacity: 0; transform: rotate(4deg) translate(7%, 23%); } to { opacity: 1; transform: rotate(4deg) translate(7%, 3%); } }
  @keyframes fsFront { from { opacity: 0; transform: rotate(-1deg) translateY(26px); } to { opacity: 1; transform: rotate(-1deg) translateY(0); } }
  .file-stack .doc-card.is-back2 { animation: fsBack2 0.7s var(--ease-out) 0.05s backwards; }
  .file-stack .doc-card.is-back1 { animation: fsBack1 0.7s var(--ease-out) 0.16s backwards; }
  .file-stack .doc-card.is-front { animation: fsFront 0.7s var(--ease-out) 0.27s backwards; }
}
@keyframes stampPress { from { opacity: 0; transform: rotate(-11deg) scale(1.16); } to { opacity: 1; transform: rotate(-11deg) scale(1); } }
.file-stack .dmc-stamp { animation: stampPress 0.4s var(--ease-out) 0.66s backwards; }
@media (prefers-reduced-motion: reduce) {
  .file-stack .doc-card, .file-stack .dmc-stamp { animation: none !important; }
}
.file-stack .dmc-stamp { position: absolute; z-index: 4; top: -18px; right: -8px; }
@media (max-width: 759px) { .file-stack .dmc-stamp { top: -14px; right: 0; } }

/* ── 9.3 DMC-STAMP — the firm's own approval mark (never an authority seal) ── */
.dmc-stamp { position: relative; width: 92px; height: 92px; border-radius: 50%; border: 2.5px solid var(--gold); display: grid; place-items: center; text-align: center; color: var(--gold); background: rgba(247,245,240,0.66); transform: rotate(-11deg); box-shadow: 0 8px 22px -14px rgba(201,152,26,0.6); }
.dmc-stamp::before { content: ''; position: absolute; inset: 6px; border: 1px solid var(--gold); border-radius: 50%; opacity: 0.65; }
.dmc-stamp-status { font-family: var(--font); font-weight: 600; font-size: 14px; letter-spacing: 0.06em; text-transform: uppercase; line-height: 1; color: #7A5C0E; }
.dmc-stamp-mark { display: block; margin: 3px auto 2px; width: 15px; height: 15px; }
.dmc-stamp-org { display: block; font-family: var(--font); font-weight: 600; font-size: 6.5px; letter-spacing: 0.14em; text-transform: uppercase; opacity: 1; color: #7A5C0E; }
@media (max-width: 430px) { .dmc-stamp { width: 76px; height: 76px; } .dmc-stamp-status { font-size: 11.5px; } }

/* ── 9.4 FILE-STEPS — "what we put in order" checklist ── */
.file-steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.file-steps li { display: flex; align-items: flex-start; gap: 12px; }
.file-steps .fs-check { flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%; background: rgba(15,7,189,0.08); color: var(--indigo); display: grid; place-items: center; margin-top: 1px; }
.file-steps .fs-check svg { width: 13px; height: 13px; }
.file-steps .fs-label { font-size: 14px; line-height: 1.55; color: var(--text); }
.file-steps .fs-label b { font-weight: 600; color: var(--text); }

/* ── TOOL PROMO (contextual tool entry points on inner pages) ── */
.tool-promo { display:flex; align-items:center; gap:22px; background:#fff; border:1px solid var(--border); border-radius:16px; padding:24px 26px; box-shadow:var(--shadow-card); position:relative; overflow:hidden; }
.tool-promo::before { content:''; position:absolute; left:0; top:0; bottom:0; width:3px; background:linear-gradient(180deg,var(--indigo),rgba(15,7,189,0.25)); }
.tool-promo-ic { width:50px; height:50px; border-radius:13px; background:rgba(15,7,189,0.07); color:var(--indigo); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.tool-promo-ic svg { width:26px; height:26px; }
.tool-promo-body { flex:1; min-width:0; }
.tool-promo-k { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.08em; color:var(--text3); margin-bottom:5px; }
.tool-promo-t { font-size:18px; font-weight:600; color:var(--text); letter-spacing:-0.01em; line-height:1.3; margin-bottom:5px; }
.tool-promo p { font-size:14px; color:var(--text2); line-height:1.6; margin:0; }
.tool-promo .btn-primary { flex-shrink:0; white-space:nowrap; align-self:center; }
@media (max-width:640px) { .tool-promo { flex-direction:column; align-items:flex-start; gap:16px; padding:22px 20px; } .tool-promo .btn-primary { width:100%; text-align:center; } }

/* ── ZONE COMPARISON TABLE (jurisdiction pages: this zone vs others, logos as headers) ── */
.zcompare { margin-top: 30px; border: 1px solid var(--border); border-radius: 16px; overflow: hidden; box-shadow: var(--shadow-card); background: #fff; }
.zcompare table { width: 100%; border-collapse: collapse; }
.zcompare th, .zcompare td { padding: 13px 16px; text-align: left; border-bottom: 1px solid var(--rule); border-right: 1px solid var(--rule); vertical-align: middle; font-size: 13px; line-height: 1.45; color: var(--text); }
.zcompare th:last-child, .zcompare td:last-child { border-right: none; }
.zcompare tbody tr:last-child td { border-bottom: none; }
.zcompare thead th { background: var(--ivory); height: 78px; text-align: center; vertical-align: middle; }
.zcompare thead th img { max-height: 28px; max-width: 92px; width: auto; object-fit: contain; display: inline-block; }
.zcompare .zc-corner { background: #fff; width: 22%; min-width: 120px; }
.zcompare .zc-rl { font-size: 11.5px; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: var(--text3); }
.zcompare .zc-hl { background: rgba(15,7,189,0.045); }
.zcompare thead th.zc-hl { background: rgba(15,7,189,0.08); border-top: 3px solid var(--indigo); position: relative; }
.zcompare thead th.zc-hl::after { content: "You are here"; position: absolute; top: 6px; left: 0; right: 0; font-size: 9.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--indigo); }
.zcompare .zc-num { font-weight: 600; }
.zc-pill { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 99px; }
.zc-pill.t-lowest { background: rgba(15,7,189,0.07); color: var(--indigo); }
.zc-pill.t-low { background: rgba(15,7,189,0.07); color: var(--indigo); }
.zc-pill.t-mid { background: rgba(74,72,105,0.10); color: var(--text2); }
.zc-pill.t-premium { background: rgba(201,152,26,0.14); color: #7A5C0E; }
.zc-dots { display: inline-flex; gap: 3px; vertical-align: middle; margin-right: 7px; }
.zc-dot { width: 7px; height: 7px; border-radius: 50%; background: rgba(15,7,189,0.16); }
.zc-dot.on { background: var(--indigo); }
.zc-cell-sub { display: block; font-size: 11.5px; color: var(--text3); margin-top: 3px; line-height: 1.4; }
.zcompare-cards { display: none; }
@media (max-width: 760px) {
  .zcompare { display: none; }
  .zcompare-cards { display: grid; gap: 14px; margin-top: 26px; }
  .zc-card { border: 1px solid var(--border); border-radius: 16px; overflow: hidden; background: #fff; box-shadow: var(--shadow-card); }
  .zc-card.zc-card-hl { border-color: var(--indigo); }
  .zc-card-head { display: flex; align-items: center; gap: 12px; padding: 14px 18px; background: var(--ivory); border-bottom: 1px solid var(--rule); }
  .zc-card.zc-card-hl .zc-card-head { background: rgba(15,7,189,0.06); }
  .zc-card-head img { max-height: 24px; max-width: 90px; width: auto; }
  .zc-card-tag { margin-left: auto; font-size: 10px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--indigo); }
  .zc-card-row { display: flex; gap: 14px; padding: 11px 18px; border-bottom: 1px solid var(--rule); font-size: 13px; }
  .zc-card-row:last-child { border-bottom: none; }
  .zc-card-k { flex: 0 0 104px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--text3); }
  .zc-card-v { flex: 1; min-width: 0; color: var(--text); }
}

/* ── JURISDICTION HERO "AT A GLANCE" (logo-led) + WHERE-IT-SITS SCALE + FLAG LIST ── */
.zone-hero-grid { max-width: none; }
@media (min-width: 920px) { .zone-hero-grid { display: grid; grid-template-columns: 1.08fr 0.92fr; gap: 48px; align-items: center; } }
.art-hero-inner > .zone-hero-grid { max-width: none; }
.zone-glance { background: #fff; border: 1px solid var(--rule); border-top: 3px solid var(--indigo); border-radius: 16px; padding: 24px 26px 22px; box-shadow: var(--shadow-card); margin-top: 34px; }
@media (min-width: 920px) { .zone-glance { margin-top: 0; } }
.zone-glance-logo { height: 44px; display: flex; align-items: center; margin-bottom: 16px; }
.zone-glance-logo img { max-height: 38px; max-width: 168px; width: auto; object-fit: contain; display: block; }
.zone-glance-tier { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; font-size: 13px; color: var(--text3); }
.zone-glance-stats { list-style: none; margin: 0; padding: 0; }
.zone-glance-stats li { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--rule); }
.zone-glance-stats li:last-child { border-bottom: 0; }
.zone-glance-stats .zg-k { font-size: 13px; color: var(--text2); }
.zone-glance-stats .zg-v { font-size: 14px; font-weight: 600; color: var(--text); text-align: right; }
.zone-scale { margin-top: 26px; display: flex; border: 1px solid var(--rule); border-radius: 14px; overflow: hidden; box-shadow: var(--shadow-card); }
.zone-scale-tier { flex: 1; padding: 18px 14px; text-align: center; background: #fff; border-right: 1px solid var(--rule); }
.zone-scale-tier:last-child { border-right: 0; }
.zone-scale-tier.is-here { background: rgba(15,7,189,0.05); border-top: 3px solid var(--indigo); }
.zone-scale-cost { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--text3); margin-bottom: 8px; }
.zone-scale-tier.is-here .zone-scale-cost { color: var(--indigo); }
.zone-scale-zones { font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.4; }
.zone-scale-tier.is-here .zone-scale-zones { color: var(--indigo-dark); }
.zone-scale-axis { font-size: 11.5px; color: var(--text3); margin: 10px 0 0; text-align: right; }
@media (max-width: 640px) { .zone-scale { flex-direction: column; } .zone-scale-tier { border-right: 0; border-bottom: 1px solid var(--rule); display: flex; align-items: center; justify-content: space-between; text-align: left; gap: 14px; } .zone-scale-tier:last-child { border-bottom: 0; } .zone-scale-cost { margin-bottom: 0; } .zone-scale-axis { display: none; } }
.flag-list { list-style: none; margin: 26px 0 0; padding: 0; }
.flag-list li { display: flex; gap: 13px; align-items: flex-start; padding: 14px 0; border-bottom: 1px solid var(--rule); font-size: 15px; line-height: 1.6; color: var(--text2); }
.flag-list li:last-child { border-bottom: 0; }
.flag-list li::before { content: ""; flex: 0 0 auto; width: 20px; height: 20px; margin-top: 2px; border-radius: 50%; background: rgba(201,152,26,0.14); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237A5C0E' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 8v5M12 17h.01'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: center; }

/* ── SETUP-REALITY TILES (jurisdiction pages: the facts as a visual icon grid) ── */
.setup-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(186px, 1fr)); gap: 14px; margin-top: 28px; }
.setup-tile { background: #fff; border: 1px solid var(--rule); border-radius: 14px; padding: 20px 20px 18px; box-shadow: var(--shadow-card); transition: border-color .2s, box-shadow .2s, transform .2s; }
.setup-tile:hover { border-color: rgba(15,7,189,0.18); box-shadow: var(--shadow-card-h); transform: translateY(-2px); }
.setup-ico { display: inline-flex; width: 36px; height: 36px; border-radius: 9px; background: rgba(15,7,189,0.07); color: var(--indigo); align-items: center; justify-content: center; margin-bottom: 14px; }
.setup-ico svg { width: 19px; height: 19px; }
.setup-v { display: block; font-size: 16.5px; font-weight: 600; color: var(--text); line-height: 1.25; }
.setup-k { display: block; font-size: 12px; color: var(--text3); margin-top: 5px; letter-spacing: .02em; }

/* ── LOGO PLACEHOLDER (small chip with the zone name; swap for the real logo when delivered) ── */
.logo-ph { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 7px 18px; border: 1px dashed var(--border); border-radius: 8px; background: var(--ivory); font-family: var(--serif); font-weight: 500; font-size: 16px; color: var(--text2); letter-spacing: .01em; white-space: nowrap; }
.zcompare thead th .logo-ph { font-size: 13px; min-height: 30px; padding: 5px 12px; }
.zc-card-head .logo-ph { font-size: 13px; min-height: 28px; padding: 4px 12px; }

/* ══════════════════════════════════════════════════════════════════
   CONTENT-PAGE HERO + MONEY-FILTER KIT  (gc- prefix)
   Reusable art-directed hero for non-service content pages
   (guides, industries, updates, compare, persona). Connects them to
   the homepage / company-setup / jurisdiction design language.
   Promoted from the /guides/uae-company-formation-cost-2026/ exemplar
   (founder-approved 2026-06-14). Pair with global .pcard / .setup-grid
   / .rev-agg / .cta-strip.ip. NEVER expose service fees or stack
   authority-verification disclaimers in these components.
   ══════════════════════════════════════════════════════════════════ */
.gc-hero{padding:128px 0 60px;background:linear-gradient(135deg,#ECEBF8,var(--ivory) 54%,#FBFAFE);position:relative;overflow:hidden}
@media(max-width:1023px){.gc-hero{padding:98px 0 44px}}
.gc-hero-grid{display:grid;grid-template-columns:1.12fr .88fr;gap:50px;align-items:center}
@media(max-width:920px){.gc-hero-grid{grid-template-columns:1fr;gap:30px}}
.gc-meta{display:flex;gap:14px;align-items:center;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);margin-bottom:14px;flex-wrap:wrap}
.gc-meta .gc-cat{color:var(--indigo)}
.gc-h1{font-size:clamp(33px,4.6vw,50px);line-height:1.06;letter-spacing:-.02em;margin:0 0 18px;text-wrap:balance}
.gc-deck{font-family:var(--serif);font-weight:300;font-size:clamp(17px,1.9vw,20px);line-height:1.5;color:var(--text2);max-width:40ch;margin:0 0 24px}
.gc-byline{display:flex;align-items:center;gap:11px;margin-top:24px}
.gc-byline img{width:42px;height:42px;border-radius:50%}
.gc-byline-n{font-weight:600;font-size:13.5px;color:var(--text)}
.gc-byline-t{font-size:12px;color:var(--text3)}
.gc-panel{background:#fff;border:1px solid var(--border);border-radius:18px;padding:26px 26px 22px;box-shadow:var(--shadow-card);border-top:3px solid var(--indigo)}
.gc-panel-h{font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);margin:0 0 6px}
.gc-panel-sub{font-size:13px;line-height:1.45;color:var(--text2);margin:0 0 16px}
.gc-panel-row{display:flex;gap:13px;padding:13px 0;border-top:1px solid var(--rule)}
.gc-panel-ico{flex:none;width:30px;height:30px;border-radius:8px;background:rgba(15,7,189,.07);display:grid;place-items:center;color:var(--indigo)}
.gc-panel-ico svg{width:16px;height:16px}
.gc-panel-k{font-weight:600;font-size:14px;color:var(--text);margin:0 0 2px;line-height:1.3}
.gc-panel-v{font-size:12.5px;line-height:1.45;color:var(--text2);margin:0}
.gc-anchor{margin-top:16px;padding:14px 16px;background:var(--ivory);border-radius:11px;font-size:12.5px;line-height:1.55;color:var(--text2)}
.gc-anchor b{color:var(--text);font-weight:600}
.gc-card-n{font-family:var(--serif);font-weight:500;font-size:14px;color:var(--indigo);display:block;margin-bottom:8px;letter-spacing:.04em}
.gc-card-decides{display:block;margin-top:12px;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text3)}
.gc-note{max-width:70ch;margin-top:18px;font-size:13px;line-height:1.65;color:var(--text2)}
.gc-note b{color:var(--text);font-weight:600}
.gc-rev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:24px}
@media(max-width:820px){.gc-rev-grid{grid-template-columns:1fr}}
.gc-pgrid .pcard p{margin-top:6px}

/* ══════════════════════════════════════════════════════════════════
   INTERACTIVE UI BRAND BLEND  (2026-06-14)
   Unifies the dynamically-revealed UI (booking / magnet / exit modals,
   the quiet exit card, tool quizzes, forms) to the current premium
   language: display-font titles, capped-600 eyebrows with the gold
   datum dash, the card-system indigo top accent + soft elevation, a
   blurred navy backdrop, and consistent branded focus + close states.
   Override-only, no structural change. ══════════════════════════════ */

/* modal / popup titles -> display font 500 (were 700 Montserrat) */
.dmc-exit-h, .dmc-book-card h3 { font-family: var(--serif); font-weight: 500; letter-spacing: -0.01em; line-height: 1.22; font-size: 22px; }

/* eyebrow -> brand eyebrow: 600 weight, muted label colour, gold datum dash (was 700 off-gold, AA + weight-ceiling fix) */
.dmc-exit-eyebrow { font-weight: 600; font-size: 11.5px; letter-spacing: .12em; color: var(--text3); display: inline-flex; align-items: center; gap: 9px; }
.dmc-exit-eyebrow::before { content: ''; width: 18px; height: 2px; background: var(--gold); border-radius: 2px; flex: none; }

/* modal cards adopt the card-system indigo top accent + premium elevation; blurred navy backdrop */
.dmc-exit-card { border-top: 3px solid var(--indigo); box-shadow: 0 36px 90px -26px rgba(9,8,42,0.55); }
.dmc-modal-panel { border-top: 3px solid var(--indigo); box-shadow: 0 36px 90px -26px rgba(9,8,42,0.5); }
.dmc-exit { backdrop-filter: blur(3px); }

/* consistent branded focus rings on every interactive input/select */
.dmc-exit-form input:focus, .dmc-exitcard input[type="email"]:focus,
.dmc-modal-panel input:focus, .dmc-modal-panel select:focus,
.checker-wrap input:focus, .checker-wrap select:focus {
  outline: 2px solid var(--indigo); outline-offset: 2px; border-color: var(--indigo);
}

/* consistent branded close-button hover across all popups */
.dmc-exit-x:hover, .dmc-modal-x:hover, .dmc-exitcard-x:hover { color: var(--indigo); background: rgba(15,7,189,.08); }

/* tool quiz: selected option -> indigo identity (gold stays a highlight, not a selection state) */
.checker-option.selected { border-color: var(--indigo); background: rgba(15,7,189,.05); }
.checker-option.selected .checker-option-dot { border-color: var(--indigo); background: var(--indigo); box-shadow: inset 0 0 0 3px var(--white); }

/* ── PARTNER PROMO + PROMO POPUP (Wafeq · bookkeeping) ───────────────── */
.wafeq-promo { display: grid; grid-template-columns: 1fr; gap: 30px; align-items: center; background: linear-gradient(135deg,#F1F0FB,var(--ivory) 58%,#FBFAFE); border: 1px solid var(--border); border-top: 3px solid var(--indigo); border-radius: 20px; padding: 34px 28px; box-shadow: var(--shadow-card); }
@media (min-width: 880px) { .wafeq-promo { grid-template-columns: 1.15fr 0.85fr; gap: 50px; padding: 46px 48px; } }
.wafeq-promo-l .eyebrow { margin-bottom: 0; }
.wafeq-promo-l h2 { margin: 12px 0 0; }
.wafeq-promo-l .d-lead { margin-top: 14px; }
.wafeq-feats { list-style: none; margin: 22px 0 28px; padding: 0; display: grid; gap: 12px; }
.wafeq-feats li { position: relative; padding-left: 30px; font-size: 15px; line-height: 1.5; color: var(--text2); }
.wafeq-feats li svg { position: absolute; left: 0; top: 1px; width: 19px; height: 19px; color: var(--indigo); }
.wafeq-card { background: #fff; border: 1px solid var(--border); border-radius: 16px; padding: 32px 26px; text-align: center; box-shadow: var(--shadow-card-h); }
.wafeq-card .wafeq-logo { height: 32px; width: auto; display: block; margin: 0 auto 20px; }
.wafeq-plan-label { font-size: 11.5px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text3); }
.wafeq-price { margin-top: 12px; font-family: var(--serif); font-size: 14px; font-weight: 400; color: var(--text3); line-height: 1.3; }
.wafeq-price s { text-decoration: line-through; }
.wafeq-price b { display: block; font-size: 25px; font-weight: 600; color: var(--indigo); margin-top: 4px; }
.wafeq-worth { margin-top: 16px; padding-top: 15px; border-top: 1px solid var(--rule); font-size: 13px; color: var(--text3); }

.wafeq-pop { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.wafeq-pop[hidden] { display: none; }
.wafeq-pop-bd { position: absolute; inset: 0; background: rgba(9,8,42,0.62); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
.wafeq-pop-panel { position: relative; z-index: 1; width: 100%; max-width: 430px; background: #fff; border-radius: 18px; border-top: 3px solid var(--indigo); box-shadow: 0 30px 80px -18px rgba(9,8,42,0.5); padding: 36px 32px 30px; text-align: center; animation: wafeqPopIn 0.42s cubic-bezier(0.22,1,0.36,1); }
@keyframes wafeqPopIn { from { opacity: 0; transform: translateY(14px) scale(0.985); } to { opacity: 1; transform: none; } }
.wafeq-pop-x { position: absolute; top: 11px; right: 13px; width: 32px; height: 32px; border: none; background: transparent; color: var(--text3); font-size: 22px; line-height: 1; cursor: pointer; border-radius: 8px; }
.wafeq-pop-x:hover { background: var(--ivory); color: var(--text); }
.wafeq-pop-logo { height: 28px; width: auto; display: block; margin: 0 auto 16px; }
.wafeq-pop-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 11.5px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text3); }
.wafeq-pop-eyebrow::before { content: ""; width: 22px; height: 1.5px; background: var(--gold); }
.wafeq-pop-panel h3 { font-family: var(--serif); font-weight: 500; font-size: 23px; line-height: 1.22; color: var(--text); margin: 12px 0 0; }
.wafeq-pop-panel h3 em { font-style: normal; color: var(--indigo); }
.wafeq-pop-panel p { font-size: 14.5px; line-height: 1.6; color: var(--text2); margin: 12px 0 22px; }
.wafeq-pop-cta { width: 100%; }
.wafeq-pop-later { display: block; width: 100%; margin-top: 12px; border: none; background: transparent; color: var(--text3); font-size: 13.5px; cursor: pointer; padding: 6px; }
.wafeq-pop-later:hover { color: var(--text2); }
@media (prefers-reduced-motion: reduce) { .wafeq-pop-panel { animation: none; } }

/* ── FOUNDER MOMENT · pull-quote + direct line (homepage / about) ───── */
.founder-quote { font-family: var(--serif); font-weight: 500; font-size: clamp(19px,2.3vw,24px); line-height: 1.42; color: var(--text); margin: 18px 0 0; padding-left: 20px; border-left: 3px solid var(--gold); }
.founder-direct { display: flex; flex-wrap: wrap; gap: 12px 16px; align-items: center; margin-top: 22px; }

/* ── HOMEPAGE: router compression (3-col, denser, arrow top-right) + founder photo fill ── */
@media (min-width: 980px) { .router-tiles { grid-template-columns: repeat(3, 1fr); gap: 14px; } }
.router-tiles .router-tile { padding: 18px 18px 16px; gap: 10px; }
.router-tiles .router-tile-arrow { left: auto; right: 18px; top: 18px; bottom: auto; }
.router-tiles .router-tile-ico { width: 38px; height: 38px; border-radius: 10px; }
.router-tiles .router-tile-ico svg { width: 19px; height: 19px; }
.router-tiles .router-tile-line { font-size: 16px; margin-bottom: 3px; }
.router-tiles .router-tile-exp { font-size: 12.5px; line-height: 1.5; }
#founder .split { align-items: center; }
@media (min-width: 920px) { #founder .split { grid-template-columns: 0.84fr 1.16fr; } }
#founder .split > div:first-child { text-align: center; }
#founder .split > div:first-child img { width: 100%; max-width: 540px; height: auto; margin: 0 auto; }

/* ── FAQ: compact single-column accordion (collapsed by default, one open at a time) ── */
.faq-q { padding: 16px 0; }
.faq-q h3, details.faq-item > summary.faq-q h3, .faq-q h4, details.faq-item > summary.faq-q h4 { font-size: 15.5px; line-height: 1.4; }
.faq-a { font-size: 14.5px; line-height: 1.72; padding: 2px 0 18px; max-width: 74ch; }
details.faq-item[open] > summary.faq-q { background: rgba(15,7,189,0.03); }
/* show the +/- toggle at all widths; the answer follows the open state (accordion on desktop too) */
@media (min-width: 1024px) {
  .faq-icon { display: flex; }
  .faq-a { display: none; }
  details.faq-item[open] > .faq-a { display: block; }
}
/* FAQ split: heading/intro beside the accordion so it fills the width + stays balanced */
.faq-split { display: grid; grid-template-columns: 1fr; gap: 22px; align-items: start; }
.faq-split > .faq-list { margin-top: 0; }
.faq-split > .faq-col > :first-child { margin-top: 0; }
@media (min-width: 920px) {
  .faq-split { grid-template-columns: 0.74fr 1.26fr; column-gap: 56px; }
  .faq-split > .faq-col { position: sticky; top: 104px; }
}

/* ── HUB OVERVIEW 2-COL HERO + FACTS PANEL (locked design, generalized from company-setup) ── */
.hero-2col > :last-child { background: #fff; border: 1px solid var(--rule); border-top: 3px solid var(--indigo); border-radius: 16px; padding: 24px 26px 20px; box-shadow: var(--shadow-card); }
.hero-panel-title { font-size: 12.5px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text3); margin: 0 0 14px; }
.hero-2col .rate-value { white-space: normal; overflow-wrap: anywhere; }
@media (min-width: 920px) {
  .hero-2col { display: grid; grid-template-columns: 1.12fr 0.9fr; gap: 52px; align-items: center; max-width: 1320px; }
  .hero-2col > * { max-width: none; margin-top: 0 !important; }
}

/* ── QUICK-ASSESSMENT POPUP CTA (#6: in-page lead-capture tool, opens the qualify modal) ── */
.qz-cta { padding: 0 0 var(--sec-pad); }
.qz-cta-inner { position: relative; background: #fff; border: 1px solid var(--rule); border-top: 3px solid var(--indigo); border-radius: 16px; box-shadow: var(--shadow-card); padding: 28px 26px; display: grid; gap: 18px; align-items: center; }
@media (min-width: 820px) { .qz-cta-inner { grid-template-columns: 1fr auto; padding: 34px 38px; gap: 44px; } }
.qz-cta-eyebrow { display: block; font-size: 12px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--indigo); margin-bottom: 10px; }
.qz-cta h2 { font-size: clamp(21px, 2.8vw, 29px); line-height: 1.12; letter-spacing: -0.01em; margin: 0 0 10px; text-wrap: balance; }
.qz-cta p { color: var(--text2); max-width: 56ch; font-size: 15px; line-height: 1.6; margin: 0; }
.qz-cta-btn { white-space: nowrap; }
@media (max-width: 819px) { .qz-cta-btn { width: 100%; justify-content: center; } }

/* ── MOBILE DENSITY + DEPTH OVERHAUL (2026-06-17 · founder: mobile felt busy, cramped, flat) ── */
/* 1 · breathing room inside cards + between them */
.pcard { padding: 30px 26px 26px; }
.pcard-grid { gap: 22px; }
/* 2 · soft depth on light surfaces so sections read as layered planes, not one flat sheet */
.bg-ivory { background: linear-gradient(177deg, #FBFAF6 0%, var(--ivory) 60%); }
/* 3 · a hairline of separation where two light sections meet (quiet structure, not a hard line) */
.section + .section:not(.bg-ivory):not(.bg-deep):not(.bg-indigo) { box-shadow: inset 0 1px 0 rgba(9,8,42,0.05); }
/* 4 · mobile: calmer rhythm — decorative ghost numerals are visual noise on a small screen */
@media (max-width: 600px) {
  .assumption-n { opacity: 0.5; }
  .pcard-grid { gap: 18px; }
}

/* ── MOBILE "SHOW MORE" CLAMP — collapse detail on small screens, keep everything (founder-approved: collapse, not cut) ── */
.m-more { display: none; }
@media (max-width: 600px) {
  .m-clamp.is-clamped { position: relative; overflow: hidden; max-height: var(--m-clamp, 150px); transition: max-height .34s var(--ease-out); }
  .m-clamp.is-clamped.m-open { max-height: 3200px; }
  .m-clamp.is-clamped:not(.m-open)::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 46px; background: linear-gradient(180deg, transparent, var(--m-clamp-bg, #fff)); pointer-events: none; }
  .m-more { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; font-size: 13px; font-weight: 600; color: var(--indigo); background: none; border: 0; padding: 4px 0; cursor: pointer; }
  .m-more svg { width: 13px; height: 13px; transition: transform .25s; }
  .m-more.is-open svg { transform: rotate(180deg); }
  .pkg-handled.m-clamp { --m-clamp: 104px; --m-clamp-bg: var(--paper); }
  .assumption-note.m-clamp { --m-clamp: 86px; }
  .m-more-grid { display: flex; justify-content: center; width: 100%; margin-top: 4px; padding: 13px 18px; border: 1px solid var(--rule); border-radius: 11px; background: #fff; box-shadow: var(--shadow-card); font-size: 13.5px; }
  .m-more-grid svg { width: 14px; height: 14px; }
}

/* ── GLOBAL FAQ + CLOSING-CTA HEADING — ONE locked style everywhere (2026-06-17 · founder: fix once, globally, not per-page) ── */
/* FAQ section heading: DMC Display 500, one moderate size on every page (was d-h2 on 141 pages, Montserrat-700 s-title on the homepage; d-h2 was a page-level size that dominated the narrow column) */
.faq-col h1, .faq-col h2, .faq-col h3 {
  font-family: var(--serif); font-weight: 500; color: var(--text);
  font-size: clamp(25px, 3.4vw, 34px); line-height: 1.14; letter-spacing: -0.015em; text-wrap: balance;
}
.faq-col h2::after, .faq-col h2::before { display: none !important; } /* kill the homepage s-title underline-draw so FAQ heads match */
/* Closing CTA heading: same DMC Display 500 across BOTH the photo band (.cta-close) and the dark strip (.cta-strip) — were different fonts/weights/sizes */
.cta-strip h2, .cta-close h2 {
  font-family: var(--serif); font-weight: 500;
  font-size: clamp(1.7rem, 4.2vw, 2.5rem); line-height: 1.14; letter-spacing: -0.02em;
}
@media (max-width: 640px) {
  /* the old mobile rule shrank the strip heading to ~18px and left-aligned it; make it consistent + centered like cta-close */
  .cta-strip h2 { text-align: center; max-width: 24ch; margin-left: auto; margin-right: auto; }
  .cta-strip-sub { text-align: center; margin-left: auto; margin-right: auto; }
}

/* ── GLOBAL HERO BREATHING — ONE consistent generous spacing across ALL ~80 hero variants (2026-06-17 · founder: heroes cramped, no central control) ── */
/* section[class*="-hero"] (0,1,1) outranks every page-scoped .x-hero (0,1,0), so this governs them all */
section[class*="-hero"] { padding-top: 106px; padding-bottom: 56px; }
@media (min-width: 768px)  { section[class*="-hero"] { padding-top: 130px; padding-bottom: 68px; } }
@media (min-width: 1024px) { section[class*="-hero"] { padding-top: 152px; padding-bottom: 86px; } }
/* hero inner rhythm: a touch more air under the eyebrow/dateline and lead so it stops feeling packed */
section[class*="-hero"] .d-lead { margin-top: 20px; line-height: 1.68; }
/* ── MORE SECTION BREATHING site-wide (founder: sections tightly packed) ── */
.section { padding: 48px 0; }
@media (min-width: 768px)  { .section { padding: 66px 0; } }
@media (min-width: 1024px) { .section { padding: 86px 0; } }
