/* ============================================================================
   haal — umbrella website
   Visual system: brandbook V3 (Feb 2026). Industrial, sharp, operator-grade.
   Tokens, fonts, type scale and rules taken verbatim from
   CIRCL/Haal_Brandbook/haal-brand-system.tsx
   ========================================================================== */

:root {
  /* Foundation */
  --black:      #0C0F17;
  --slate:      #1E293B;
  --white:      #FFFFFF;
  --off-white:  #F5F0EB;
  /* Accent */
  --flame:      #EA580C;
  --ember:      #9A3412;
  /* Industrial neutrals */
  --concrete:   #78716C;
  --steel:      #A8A29E;
  --dust:       #D6D3D1;
  /* Operational status */
  --green:      #16A34A;
  --amber:      #D97706;
  --red:        #DC2626;

  /* Semantic — light surface (default) */
  --bg:         var(--off-white);
  --surface:    var(--white);
  --ink:        var(--black);
  --muted:      var(--concrete);
  --line:       var(--dust);

  --max: 1120px;
  --font: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
}

/* ----------------------------------------------------------------- reset */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.6;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img, svg, video { max-width: 100%; height: auto; display: block; }

/* ----------------------------------------------------------------- type */
h1, h2, h3, h4 { margin: 0 0 .5em; font-weight: 700; letter-spacing: -0.02em; }
h1 { font-size: clamp(2.1rem, 1.2rem + 3.4vw, 3rem); line-height: 1.08; }
h2 { font-size: clamp(1.55rem, 1.1rem + 1.6vw, 1.875rem); line-height: 1.2; font-weight: 600; letter-spacing: -0.01em; }
h3 { font-size: 1.25rem; line-height: 1.3; font-weight: 600; letter-spacing: -0.01em; }
p  { margin: 0 0 1em; }
a  { color: var(--ember); text-decoration: none; }
a:hover { color: var(--flame); }
strong { font-weight: 600; }
::selection { background: var(--flame); color: #fff; }

.lede { font-size: clamp(1.06rem, 1rem + .4vw, 1.2rem); line-height: 1.55; color: #33312e; max-width: 46em; }
.lede a { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--flame); }

.eyebrow {
  font-family: var(--mono);
  font-size: .75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: .14em;
  color: var(--flame);
  margin: 0 0 1rem;
  display: flex;
  align-items: center;
  gap: .55rem;
}
.eyebrow::before {
  content: "";
  width: 14px; height: 1px;
  background: var(--flame);
  display: inline-block;
}

/* --------------------------------------------------------------- layout */
.wrap { max-width: var(--max); margin: 0 auto; padding: 0 24px; }
.section { padding: clamp(56px, 8vw, 92px) 0; }
.section--tight { padding: clamp(40px, 5vw, 60px) 0; }

/* Surface variants */
.section--dark { background: var(--black); color: var(--white); }
.section--dark .lede { color: var(--steel); }
.section--dark h1, .section--dark h2, .section--dark h3 { color: #fff; }
.section--dark a { color: #fff; text-decoration-color: var(--flame); }

.section--paper { background: var(--bg); }
.section--surface { background: var(--surface); }

/* ---------------------------------------------------------------- grids */
.grid { display: grid; gap: 20px; }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 860px) { .grid-3, .grid-4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } }

/* skip link — hidden until keyboard focus */
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 300;
  background: var(--ink); color: #fff; padding: 10px 16px;
  font-family: var(--mono); font-size: .72rem; text-transform: uppercase; letter-spacing: .1em;
}
.skip-link:focus { left: 0; }

/* ---------------------------------------------------------------- cards */
.card {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--line);
  padding: 27px 26px 26px;
  transition: border-color .15s linear, transform .15s linear;
}
/* subtle flame tick — ties every card to the blueprint motif */
.card::before { content: ""; position: absolute; top: 0; left: 0; width: 28px; height: 2px; background: var(--flame); opacity: .8; }
.card h3 { margin-bottom: .35em; }
.card p:last-child { margin-bottom: 0; }
.card .eyebrow { color: var(--concrete); }
.card .eyebrow::before { background: var(--concrete); }

a.card { color: var(--ink); display: block; }
a.card:hover { border-color: var(--flame); transform: translateY(-2px); }
a.card h3 { color: var(--ink); }
a.card:hover h3 { color: var(--ember); }
.card .go {
  display: inline-block; margin-top: 1rem;
  font-family: var(--mono); font-size: .8rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .08em; color: var(--flame);
}

.section--dark .card { background: #11151f; border-color: var(--slate); }
.section--dark .card h3 { color: #fff; }
.section--dark .card p { color: var(--steel); }
.section--dark a.card { color: #fff; }
.section--dark a.card:hover { border-color: var(--flame); }

/* --------------------------------------------------------------- buttons */
.btn {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 13px 22px;
  font-family: var(--font); font-size: .95rem; font-weight: 600;
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: background-color .15s linear, border-color .15s linear, color .15s linear;
  white-space: nowrap;
}
.btn:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--flame); }
.btn-primary { background: var(--flame); color: #fff; }
.btn-primary:hover { background: var(--ember); color: #fff; }
.btn-ghost { background: transparent; border-color: var(--steel); color: var(--ink); }
.btn-ghost:hover { border-color: var(--flame); color: var(--ember); }
.section--dark .btn-ghost { color: #fff; border-color: var(--slate); }
.section--dark .btn-ghost:hover { border-color: var(--flame); color: #fff; }
.btn .mono { font-family: var(--mono); font-weight: 500; }

/* ----------------------------------------------------------- site header */
.site-head {
  position: sticky; top: 0; z-index: 60;
  background: rgba(245,240,235,.88);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}
.bar { display: flex; align-items: center; gap: 28px; height: 66px; }
.brand { display: inline-flex; align-items: center; }
.brand svg { height: 26px; width: auto; }
.desktop-nav { display: flex; gap: 6px; margin-left: auto; align-items: center; }
.desktop-nav > a, .dd > a {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 9px 12px;
  color: var(--ink); font-size: .92rem; font-weight: 500;
  border-bottom: 2px solid transparent;
}
.desktop-nav > a:hover, .dd > a:hover,
.desktop-nav > a[aria-current], .dd > a[aria-current] { color: var(--ember); }
.desktop-nav > a[aria-current="page"] { border-bottom-color: var(--flame); }
.dd { position: relative; }
.dd > a::after { content: "▾"; font-size: .7em; color: var(--concrete); }
.dd .panel {
  display: none; position: absolute; top: 100%; left: 0; min-width: 230px;
  background: var(--surface); border: 1px solid var(--line);
  box-shadow: 0 14px 40px rgba(12,15,23,.12);
  padding: 6px;
}
.dd:hover .panel, .dd:focus-within .panel { display: block; }
.dd .panel a {
  display: block; padding: 10px 12px; color: var(--ink); font-size: .9rem;
  border-left: 2px solid transparent;
}
.dd .panel a:hover { background: var(--bg); border-left-color: var(--flame); color: var(--ember); }
.dd .panel a .sub { display: block; font-family: var(--mono); font-size: .68rem; color: var(--concrete); text-transform: uppercase; letter-spacing: .06em; margin-top: 2px; }
.head-cta { margin-left: 6px; padding: 10px 18px; font-size: .9rem; }

/* mobile nav */
.menu-toggle { display: none; margin-left: auto; background: none; border: 1.5px solid var(--steel); padding: 8px 12px; font-family: var(--mono); font-size: .78rem; text-transform: uppercase; letter-spacing: .1em; cursor: pointer; color: var(--ink); }
.mobile-nav { display: none; }
.bar--min { justify-content: space-between; }
.bar--min .head-cta { margin-left: auto; }
.bar--min .brand { flex: none; } /* never let the wordmark be the item that collapses */
/* propane identity chip — plain text, deliberately NOT a link (no funnel exits).
   It's the shrinkable item: its label ellipsises before the wordmark or CTA give. */
.head-chip {
  display: inline-flex; align-items: center; gap: 8px; min-width: 0;
  margin: 0 16px; font-size: .64rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .13em; color: var(--concrete);
}
.head-chip .dot, .head-chip .hc-name { flex: none; } /* 'Alex' always survives the squeeze */
.head-chip .hc-tail { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 460px) { .head-chip { letter-spacing: .08em; font-size: .56rem; margin: 0 8px; } }
@media (max-width: 940px) {
  .bar--min .head-cta { display: inline-flex; }
}
@media (max-width: 940px) {
  .desktop-nav, .head-cta { display: none; }
  .menu-toggle { display: inline-block; }
  .mobile-nav {
    display: none; position: fixed; inset: 66px 0 0; z-index: 55;
    background: var(--bg); overflow-y: auto; padding: 14px 24px 40px;
    border-top: 1px solid var(--line);
  }
  .mobile-nav.open { display: block; }
  .m-group { border-bottom: 1px solid var(--line); padding: 6px 0; }
  .m-group > a { display: block; padding: 12px 0; color: var(--ink); font-weight: 600; font-size: 1.05rem; }
  .m-sub { display: block; padding: 8px 0 8px 16px; color: var(--concrete); font-size: .95rem; }
  .m-sub:hover, .m-group > a:hover { color: var(--ember); }
  .mobile-nav .btn { width: 100%; justify-content: center; margin-top: 18px; }
  body.nav-open { overflow: hidden; }
}

/* ------------------------------------------------------------- hero bits */
.hero-ctas { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 26px; }
.datastrip {
  font-family: var(--mono); font-size: .72rem; letter-spacing: .08em;
  text-transform: uppercase; color: var(--steel);
  display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 30px;
  padding-top: 22px; border-top: 1px solid var(--slate);
}
.datastrip span { display: inline-flex; align-items: center; gap: 8px; }
.dot { width: 7px; height: 7px; border-radius: 50%; background: var(--flame); display: inline-block; }
.dot.green { background: var(--green); }

/* --------------------------------------------------------- loop diagram */
.loop { list-style: none; padding: 0; margin: 28px 0 0; display: flex; flex-wrap: wrap; gap: 10px; align-items: stretch; counter-reset: step; }
.loop li {
  flex: 1 1 160px; position: relative;
  background: var(--surface); border: 1px solid var(--line);
  padding: 18px 18px 20px;
}
.section--dark .loop li { background: #11151f; border-color: var(--slate); }
.loop li .num { font-family: var(--mono); font-size: .7rem; color: var(--concrete); letter-spacing: .1em; }
.loop li .step { display: block; font-weight: 700; font-size: 1.05rem; margin: 4px 0 6px; }
.loop li .detail { color: var(--muted); font-size: .88rem; line-height: 1.45; }
.section--dark .loop li .detail { color: var(--steel); }
.loop li .mod { display: inline-block; margin-top: 12px; font-family: var(--mono); font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; color: var(--flame); border: 1px solid var(--flame); padding: 3px 8px; }
.loop .arrow { align-self: center; color: var(--flame); font-weight: 700; font-size: 1.2rem; }
@media (max-width: 760px) { .loop .arrow { display: none; } .loop li { flex-basis: 100%; } }

/* ------------------------------------------------------------ proof block */
.proof { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
@media (max-width: 700px) { .stats { grid-template-columns: 1fr; gap: 22px; } }
.stat .big { font-family: var(--mono); font-size: clamp(1.9rem, 1.4rem + 1.6vw, 2.5rem); font-weight: 700; letter-spacing: -.02em; color: var(--ink); display: block; }
.section--dark .stat .big { color: #fff; }
.stat .small { color: var(--muted); font-size: .95rem; display: block; margin-top: 6px; }
.section--dark .stat .small { color: var(--steel); }
.quotes { margin-top: 32px; }
blockquote { margin: 0; }
blockquote p { font-size: 1.05rem; }
blockquote footer { color: var(--muted); font-size: .85rem; font-family: var(--mono); }

/* --------------------------------------------------------- breadcrumbs */
.crumbs { display: flex; flex-wrap: wrap; gap: 9px; padding: 20px 0 0; font-family: var(--mono); font-size: .76rem; text-transform: uppercase; letter-spacing: .07em; color: var(--concrete); }
.crumbs a { color: var(--concrete); }
.crumbs a:hover { color: var(--flame); }
.crumbs .sep { color: var(--steel); }
.crumbs [aria-current="page"] { color: var(--ink); }

/* ------------------------------------------------------- where-this-fits */
.fits { border-top: 1px solid var(--slate); background: var(--black); color: var(--steel); padding: 26px 0; }
.fits .row { display: flex; flex-wrap: wrap; gap: 12px 30px; align-items: baseline; }
.fits .ctx { margin: 0; color: var(--steel); font-size: .92rem; max-width: 40em; }
.fits nav { display: flex; flex-wrap: wrap; gap: 20px; margin-left: auto; }
.fits nav a { font-family: var(--mono); font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; color: #fff; font-weight: 500; }
.fits nav a:hover { color: var(--flame); }

/* --------------------------------------------------------------- CTA band */
.cta-row { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 22px; }

/* ------------------------------------------------------------- lists/etc */
.steps { list-style: none; counter-reset: s; padding: 0; margin: 0; display: grid; gap: 2px; }
.steps li { counter-increment: s; position: relative; padding: 20px 20px 20px 70px; background: var(--surface); border: 1px solid var(--line); }
.steps li::before { content: counter(s, decimal-leading-zero); position: absolute; left: 22px; top: 18px; font-family: var(--mono); font-weight: 700; color: var(--flame); font-size: 1rem; }
.steps li strong { display: block; margin-bottom: 3px; }

.connects { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; padding: 0; margin: 0 0 24px; }
.connects li { border: 1px solid var(--line); padding: 7px 14px; background: var(--surface); font-family: var(--mono); font-size: .8rem; letter-spacing: .02em; }
.connects li a { color: var(--ember); }

.tag { display: inline-block; font-family: var(--mono); font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; padding: 3px 9px; background: rgba(234,88,12,.1); color: var(--ember); border: 1px solid rgba(234,88,12,.25); margin-bottom: 12px; }

.logo-row { display: flex; flex-wrap: wrap; gap: 30px; align-items: center; margin-top: 16px; }
.logo-row img { height: 34px; width: auto; filter: grayscale(1); opacity: .7; }

/* --------------------------------------------------------------- forms */
.cform { display: grid; gap: 16px; max-width: 500px; margin: 8px 0 16px; }
.cform label { display: grid; gap: 6px; font-size: .82rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--concrete); }
.cform input, .cform textarea {
  border: 1px solid var(--steel); background: var(--surface); padding: 12px 13px;
  font: 400 1rem/1.5 var(--font); color: var(--ink);
}
.cform input:focus, .cform textarea:focus { outline: none; border-color: var(--flame); box-shadow: 0 0 0 2px rgba(234,88,12,.2); }
.cform button { justify-self: start; margin-top: 4px; }

/* --------------------------------------------------------------- footer */
.site-foot { background: var(--black); color: var(--steel); padding: 64px 0 32px; position: relative; overflow: hidden; }
.site-foot .btn-ghost { color: #fff; border-color: var(--slate); }
.site-foot .btn-ghost:hover { border-color: var(--flame); color: #fff; }
.foot-cols { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 40px; }
@media (max-width: 760px) { .foot-cols { grid-template-columns: 1fr; gap: 30px; } }
.site-foot .brand svg { height: 24px; }
.foot-tag { color: var(--steel); max-width: 28em; margin-top: 14px; font-size: .95rem; }
.foot-geo { font-family: var(--mono); font-size: .76rem; text-transform: uppercase; letter-spacing: .1em; color: var(--concrete); margin-top: 10px; }
.foot-col h4 { color: #fff; font-family: var(--mono); font-size: .72rem; text-transform: uppercase; letter-spacing: .12em; font-weight: 500; margin-bottom: 14px; }
.foot-col a { display: block; color: var(--steel); padding: 5px 0; font-size: .92rem; }
.foot-col a:hover { color: var(--flame); }
.foot-legal { margin-top: 48px; padding-top: 22px; border-top: 1px solid var(--slate); display: flex; flex-wrap: wrap; gap: 10px 24px; justify-content: space-between; font-family: var(--mono); font-size: .74rem; text-transform: uppercase; letter-spacing: .08em; color: var(--concrete); }

/* --------------------------------------------------------------- propane umbrella strip */
.umbrella-strip { background: var(--black); color: var(--off-white); font-family: var(--mono); font-size: .76rem; letter-spacing: .04em; padding: 10px 24px; display: flex; gap: 14px; align-items: center; justify-content: center; flex-wrap: wrap; }
.umbrella-strip a { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
.umbrella-strip a:hover { color: var(--flame); }

/* ============================================================================
   MOTION & DEPTH  — gated behind prefers-reduced-motion
   ========================================================================== */

/* ---- hero: animated background (grid + slow flame glow) ---- */
.hero { position: relative; overflow: hidden; }
/* any section carrying a .hero-bg needs the same containment (e.g. the #talk band) */
.section--dark { position: relative; overflow: hidden; }
.section--dark > .wrap { position: relative; z-index: 1; }
.hero-bg { position: absolute; inset: 0; pointer-events: none; z-index: 0; }
.hero-bg::before {
  /* faint engineering grid */
  content: ""; position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(168,162,158,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(168,162,158,.06) 1px, transparent 1px);
  background-size: 46px 46px;
  mask-image: radial-gradient(120% 100% at 20% 0%, #000 30%, transparent 78%);
}
.hero-bg::after {
  /* flame glow */
  content: ""; position: absolute; width: 60vw; height: 60vw; max-width: 760px; max-height: 760px;
  top: -22%; right: -10%;
  background: radial-gradient(circle, rgba(234,88,12,.32), rgba(234,88,12,0) 62%);
  filter: blur(8px);
}
.hero .wrap { position: relative; z-index: 1; }

.hero-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 48px; align-items: center; }
@media (max-width: 940px) { .hero-grid { grid-template-columns: 1fr; gap: 32px; } }

/* ---- live ops console ---- */
.console {
  background: rgba(8,10,16,.72);
  border: 1px solid var(--slate);
  box-shadow: 0 24px 60px rgba(0,0,0,.45), inset 0 0 0 1px rgba(255,255,255,.02);
  backdrop-filter: blur(2px);
  font-family: var(--mono);
  display: flex; flex-direction: column;
}
.console-head {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; border-bottom: 1px solid var(--slate);
  font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--steel);
}
.console-head .who { color: #fff; }
.console-head .console-meta { margin-left: auto; color: var(--concrete); font-size: .66rem; }
.console-feed { padding: 16px; display: flex; flex-direction: column; justify-content: flex-end; gap: 11px; font-size: .78rem; line-height: 1.45; flex: 1; min-height: 252px; }
.console-foot {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 16px; border-top: 1px solid var(--slate);
  font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: var(--concrete);
}
.console-foot .ok { color: var(--green); }
.console-foot .sp { margin-left: auto; }
.feed-line { display: grid; grid-template-columns: auto auto 1fr; gap: 12px; align-items: baseline; opacity: 0; transform: translateY(6px); }
.feed-line.show { opacity: 1; transform: none; transition: opacity .35s ease, transform .35s ease; }
.feed-line .t { color: var(--concrete); }
.feed-line .tag-k {
  font-size: .62rem; letter-spacing: .12em; padding: 2px 7px; align-self: center;
  border: 1px solid currentColor; white-space: nowrap;
}
.feed-line .msg { color: var(--steel); }
.feed-line.k-call  .tag-k { color: var(--flame); }
.feed-line.k-order .tag-k { color: var(--amber); }
.feed-line.k-route .tag-k { color: var(--steel); }
.feed-line.k-track .tag-k { color: #6aa9ff; }
.feed-line.k-done  .tag-k { color: var(--green); }
.feed-line .msg b { color: #fff; font-weight: 500; }
.console-cursor { color: var(--flame); animation: blink 1.05s steps(1) infinite; }

/* ---- ops console guided tour: feed ⇄ route ⇄ order, self-driving ---- */
.od-stage { position: relative; min-height: 318px; flex: 1; }
.od-panel { position: absolute; inset: 0; display: flex; flex-direction: column; padding: 0; opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .4s ease, transform .4s ease, visibility 0s linear .4s; }
.od-panel.is-on { opacity: 1; visibility: visible; transform: none; transition: opacity .45s ease, transform .45s ease; }
.od-panel[data-view="feed"] { padding: 0; }
.od-panel[data-view="route"], .od-panel[data-view="order"], .od-panel[data-view="daily"] { padding: 16px; gap: 13px; }
/* daily query echo + the typed text in the live prompt */
.od-query { font-size: .8rem; color: var(--steel); }
.od-query .od-q-text { color: #fff; }
.od-typed { color: #fff; }
.od-back { align-self: flex-start; background: none; border: none; color: var(--concrete); font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; padding: 0; cursor: default; }
/* route map */
.od-map-wrap { position: relative; border: 1px solid var(--slate); background: #0c0f17; aspect-ratio: 800 / 271; overflow: hidden; }
.od-map { width: 100%; height: 100%; display: block; }
.od-map image { opacity: .92; }
/* route line draws on, glow sits under it */
.od-route-glow { opacity: .2; }
.od-route-line { stroke-dasharray: 1100; stroke-dashoffset: 1100; }
.od-panel[data-view="route"].is-on .od-route-line { animation: od-draw 1.3s ease forwards; }
@keyframes od-draw { to { stroke-dashoffset: 0; } }
/* stops fade in after the line; depot + destination are flame */
.od-stop { fill: #fff; stroke: var(--flame); stroke-width: 1.5; opacity: 0; }
.od-end { fill: var(--flame); stroke: #0c0f17; stroke-width: 1.5; opacity: 0; }
.od-panel[data-view="route"].is-on .od-stop,
.od-panel[data-view="route"].is-on .od-end { animation: od-rise .4s 1.1s ease forwards; }
/* live truck marker rides the actual road geometry (offset-path is inline) */
.od-truck { offset-distance: 0%; offset-rotate: 0deg; opacity: 0; }
.od-panel[data-view="route"].is-on .od-truck { animation: od-truck-in .3s 1.2s ease forwards, od-drive 4s 1.3s ease-in-out forwards; }
@keyframes od-truck-in { to { opacity: 1; } }
@keyframes od-drive { to { offset-distance: 100%; } }
.od-truck-ping { transform-origin: center; transform-box: fill-box; animation: od-ping 1.9s ease-out infinite; }
@keyframes od-ping { 0% { transform: scale(.55); opacity: .85; } 100% { transform: scale(1.9); opacity: 0; } }
.od-map-tag { position: absolute; top: 8px; left: 8px; font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; color: var(--flame); background: rgba(12,15,23,.82); padding: 4px 7px; }
.od-attr { position: absolute; bottom: 5px; right: 7px; font-size: .5rem; letter-spacing: .04em; color: var(--concrete); background: rgba(12,15,23,.6); padding: 2px 5px; }
/* route stats */
.od-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.od-stats > div { display: flex; flex-direction: column; gap: 2px; }
.od-stats .v { font-size: 1.05rem; font-weight: 500; color: #fff; letter-spacing: -.01em; }
.od-stats .v i { font-style: normal; font-size: .62rem; color: var(--steel); margin-left: 2px; }
.od-stats .k { font-size: .54rem; letter-spacing: .1em; text-transform: uppercase; color: var(--concrete); }
.od-stats > div { opacity: 0; transform: translateY(5px); }
.od-panel.is-on .od-stats > div { animation: od-rise .4s ease forwards; }
.od-panel.is-on .od-stats > div:nth-child(1) { animation-delay: .55s; }
.od-panel.is-on .od-stats > div:nth-child(2) { animation-delay: .68s; }
.od-panel.is-on .od-stats > div:nth-child(3) { animation-delay: .81s; }
.od-panel.is-on .od-stats > div:nth-child(4) { animation-delay: .94s; }
@keyframes od-rise { to { opacity: 1; transform: none; } }
/* AI overview */
.od-ai { display: flex; gap: 10px; border-left: 2px solid var(--flame); padding: 2px 0 2px 11px; }
.od-ai-tag { flex: none; font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; color: var(--flame); padding-top: 1px; }
.od-ai p { margin: 0; font-size: .72rem; line-height: 1.5; color: var(--steel); font-family: var(--font); }
.od-panel.is-on .od-ai { opacity: 0; animation: od-rise .5s 1.3s ease forwards; }
/* order detail */
.od-order-head { display: flex; align-items: center; gap: 12px; }
.od-oid { font-size: 1.5rem; font-weight: 500; color: #fff; letter-spacing: -.01em; }
.od-chip { font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; color: var(--flame); border: 1px solid var(--flame); padding: 4px 9px; }
.od-rows { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; }
.od-rows > div { display: flex; flex-direction: column; gap: 3px; border-top: 1px solid var(--slate); padding-top: 8px; }
.od-rows .k { font-size: .56rem; letter-spacing: .1em; text-transform: uppercase; color: var(--concrete); }
.od-rows .v { font-size: .82rem; color: #fff; font-family: var(--font); }
/* order timeline */
.od-timeline { display: flex; justify-content: space-between; position: relative; margin-top: 2px; }
.od-timeline::before { content: ""; position: absolute; top: 4px; left: 4px; right: 4px; height: 1px; background: var(--slate); }
.od-tl { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; font-size: .5rem; letter-spacing: .06em; text-transform: uppercase; color: var(--concrete); flex: 1; }
.od-tl i { width: 9px; height: 9px; background: var(--ink); border: 1px solid var(--slate); border-radius: 50%; z-index: 1; transition: background .2s, border-color .2s; }
.od-tl.on i { background: var(--flame); border-color: var(--flame); }
.od-tl.on { color: var(--steel); }
/* simulated cursor */
.od-cursor { position: absolute; top: 0; left: 0; width: 20px; height: 20px; margin: -2px 0 0 -3px; pointer-events: none; opacity: 0; z-index: 6; filter: drop-shadow(0 2px 4px rgba(0,0,0,.5)); transition: transform .7s cubic-bezier(.5,0,.2,1), opacity .25s ease; }
.od-cursor.clicking::after { content: ""; position: absolute; inset: -9px; border: 1.5px solid var(--flame); border-radius: 50%; animation: od-ring .42s ease-out; }
@keyframes od-ring { from { transform: scale(.3); opacity: .9; } to { transform: scale(1.2); opacity: 0; } }
/* feed drill-in target affordance */
.feed-line.od-pick { outline: 1px solid rgba(234,88,12,.55); outline-offset: 3px; }
.feed-line.od-pick .msg::after { content: " \203A"; color: var(--flame); font-weight: 700; }
.feed-line.od-hit { background: rgba(234,88,12,.12); }
@media (prefers-reduced-motion: reduce) { .od-cursor { display: none; } }
@media (max-width: 460px) { .od-stats .v { font-size: .92rem; } .od-oid { font-size: 1.3rem; } }

/* pulsing live dot */
.dot.live { position: relative; }
.dot.live::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  background: var(--green); animation: ping 1.8s cubic-bezier(0,0,.2,1) infinite;
}

@keyframes ping { 0% { transform: scale(1); opacity: .7; } 70%,100% { transform: scale(2.6); opacity: 0; } }
@keyframes blink { 50% { opacity: 0; } }

/* ---- scroll reveal ---- */
.reveal { opacity: 1; }
@media (prefers-reduced-motion: no-preference) {
  .reveal { opacity: 0; transform: translateY(18px); }
  .reveal.in { opacity: 1; transform: none;
    transition: opacity .65s cubic-bezier(.2,.7,.2,1), transform .65s cubic-bezier(.2,.7,.2,1);
    transition-delay: var(--d, 0ms); }
}

/* ---- loop: a signal travels the chain ---- */
.loop li { position: relative; overflow: hidden; }
.loop li::after {
  content: ""; position: absolute; left: 0; top: 0; height: 3px; width: 100%;
  background: var(--flame); transform: scaleX(0); transform-origin: left;
}
@media (prefers-reduced-motion: no-preference) {
  .loop.in li::after { animation: trace 5s cubic-bezier(.4,0,.2,1) infinite; }
  .loop.in li:nth-of-type(1)::after { animation-delay: 0s; }
  .loop.in li:nth-of-type(2)::after { animation-delay: .55s; }
  .loop.in li:nth-of-type(3)::after { animation-delay: 1.1s; }
  .loop.in li:nth-of-type(4)::after { animation-delay: 1.65s; }
  .loop.in li:nth-of-type(5)::after { animation-delay: 2.2s; }
  .loop.in .arrow { animation: arrowpulse 5s ease-in-out infinite; }
  .loop.in .arrow:nth-of-type(2) { animation-delay: .55s; }
  .loop.in .arrow:nth-of-type(4) { animation-delay: 1.1s; }
  .loop.in .arrow:nth-of-type(6) { animation-delay: 1.65s; }
  .loop.in .arrow:nth-of-type(8) { animation-delay: 2.2s; }
}
@keyframes trace { 0% { transform: scaleX(0); } 6% { transform: scaleX(1); } 22% { transform: scaleX(1); } 30%,100% { transform: scaleX(0); transform-origin: right; } }
@keyframes arrowpulse { 0%,100% { transform: translateX(0); opacity: .6; } 10% { transform: translateX(3px); opacity: 1; } }

/* ---- animated flame underline on prose links ---- */
.lede a, .fits nav a, .card .go {
  background-image: linear-gradient(var(--flame), var(--flame));
  background-size: 0% 1.5px; background-position: 0 100%; background-repeat: no-repeat;
  transition: background-size .25s ease;
  text-decoration: none;
}
.lede a:hover, .fits nav a:hover, a.card:hover .go { background-size: 100% 1.5px; }

/* ---- card flame corner on hover ---- */
a.card { position: relative; }
a.card::after {
  content: ""; position: absolute; top: 0; right: 0; width: 0; height: 0;
  border-style: solid; border-width: 0 22px 22px 0; border-color: transparent var(--flame) transparent transparent;
  opacity: 0; transition: opacity .18s ease;
}
a.card:hover::after { opacity: 1; }

/* ---- button arrow slide ---- */
.btn { position: relative; }
.go::after { content: ""; }

/* ---- nav elevates on scroll ---- */
.site-head { transition: box-shadow .2s ease, background-color .2s ease; }
.site-head.scrolled { box-shadow: 0 6px 24px rgba(12,15,23,.10); background: rgba(245,240,235,.96); }

/* ---- stat number sweep ---- */
.stat .big { position: relative; display: inline-block; }
.stat .big::after {
  content: ""; position: absolute; left: 0; bottom: -6px; height: 3px; width: 100%;
  background: var(--flame); transform: scaleX(0); transform-origin: left; transition: transform .7s cubic-bezier(.2,.7,.2,1);
}
.proof.in .stat .big::after { transform: scaleX(1); }
.proof.in .stat:nth-child(2) .big::after { transition-delay: .12s; }
.proof.in .stat:nth-child(3) .big::after { transition-delay: .24s; }

/* --------------------------------------------------------------- utility */
.center { text-align: center; }
.maxprose { max-width: 50em; }
.mt-s { margin-top: 14px; }
.muted { color: var(--muted); }
.mono { font-family: var(--mono); }

/* ============================================================================
   DESIGN SYSTEM v2 — editorial / engineering-blueprint language
   ========================================================================== */

/* registration corner-marks (TL + BR) — the blueprint motif on key panels */
.marked { position: relative; }
.marked::before, .marked::after {
  content: ""; position: absolute; width: 13px; height: 13px;
  border: 1.5px solid var(--flame); pointer-events: none; z-index: 2;
}
.marked::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
.marked::after  { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }

/* numbered section header: mono index + extending rule + heading */
.sec-head { margin-bottom: clamp(28px, 4vw, 44px); max-width: 60ch; }
.sec-index {
  font-family: var(--mono); font-size: .72rem; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase; color: var(--flame);
  display: flex; align-items: center; gap: 16px; margin-bottom: 20px;
}
.sec-index::after { content: ""; flex: 1; height: 1px; background: var(--line); min-width: 40px; }
.section--dark .sec-index::after { background: var(--slate); }
.sec-head h2 { margin-bottom: .35em; }
.sec-head .lede { margin-top: 14px; }

/* hero: bigger display type + tighter rhythm */
.hero { padding: clamp(66px, 10vw, 116px) 0 clamp(56px, 8vw, 92px); }
.hero h1 { font-size: clamp(2.5rem, 1.4rem + 4.6vw, 4.1rem); line-height: 1.02; letter-spacing: -0.035em; }
/* home (dark) hero only: longer umbrella headline — hold it to 3 lines on desktop. propane (.hero--light) keeps the larger size */
.hero:not(.hero--light) h1 { font-size: clamp(2.2rem, 1.1rem + 3.4vw, 3.3rem); }
.hero .lede { font-size: clamp(1.1rem, 1rem + .5vw, 1.32rem); max-width: 30ch; }
/* home (dark) hero lede: a touch wider so the longer subhead holds 4 lines, not 5 (propane keeps 30ch) */
.hero:not(.hero--light) .lede { max-width: 36ch; }
.hero-copy .eyebrow { margin-bottom: 1.4rem; }

/* live metrics bar beneath the hero */
.metrics-bar { background: var(--black); border-top: 1px solid var(--slate); color: var(--steel); }
.metrics-bar .wrap { display: flex; flex-wrap: wrap; gap: 0; }
.metric {
  flex: 1 1 200px; padding: 22px 26px; border-left: 1px solid var(--slate);
  display: flex; flex-direction: column; gap: 5px;
}
.metric:first-child { border-left: 0; padding-left: 0; }
.metric .mv { font-family: var(--mono); font-size: 1.5rem; font-weight: 500; color: #fff; letter-spacing: -.01em; }
.metric .mk { font-family: var(--mono); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--concrete); }
.metric .mv .u { color: var(--flame); }
@media (max-width: 760px) { .metric { flex-basis: 50%; padding: 18px 18px; border-left: 1px solid var(--slate); } .metric:first-child { padding-left: 18px; } }

/* console: corner marks + tighter chrome */
.console { position: relative; }
.console .corner { position: absolute; width: 12px; height: 12px; border: 1.5px solid var(--flame); z-index: 3; }
.console .corner.tl { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
.console .corner.tr { top: -1px; right: -1px; border-left: 0; border-bottom: 0; }
.console .corner.bl { bottom: -1px; left: -1px; border-right: 0; border-top: 0; }
.console .corner.br { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }

/* loop pipeline — node numbers + cleaner cards */
.loop li { padding: 20px 18px 22px; }
.loop li .num { font-family: var(--mono); font-size: 1.45rem; font-weight: 500; color: var(--flame); letter-spacing: -.02em; line-height: 1; }
.loop li .step { font-size: 1.1rem; margin-top: 10px; }
.loop .arrow { font-size: 1rem; }

/* DOORS — large editorial entry points */
.doors { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--line); border: 1px solid var(--line); }
@media (max-width: 700px) { .doors { grid-template-columns: 1fr; } }
.door2 {
  background: var(--surface); padding: clamp(28px, 4vw, 48px); display: flex; flex-direction: column;
  min-height: 280px; color: var(--ink); position: relative; overflow: hidden;
  transition: background-color .35s ease, color .35s ease;
}
.door2 .d-index { font-family: var(--mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--concrete); }
.door2 h3 { font-size: clamp(1.4rem, 1rem + 1.4vw, 1.95rem); margin: 18px 0 14px; letter-spacing: -.02em; line-height: 1.08; }
.door2 p { color: var(--muted); max-width: 34ch; }
.door2 .go { margin-top: auto; display: inline-flex; align-items: center; gap: 10px; font-family: var(--mono); font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; color: var(--flame); }
.door2 .go .ar { transition: transform .25s ease; }
.door2:hover { background: var(--black); color: #fff; }
.door2:hover h3 { color: #fff; }
.door2:hover p { color: var(--steel); }
.door2:hover .d-index { color: var(--steel); }
.door2:hover .go .ar { transform: translateX(6px); }
.door2::before { /* optional photo, fades in on hover (set --door-img per door) */
  content: ""; position: absolute; inset: 0; z-index: 0;
  background: var(--door-img, none) center/cover no-repeat;
  opacity: 0; transition: opacity .35s ease; pointer-events: none;
}
.door2:hover::before { opacity: .25; }
.door2 .d-index, .door2 h3, .door2 p, .door2 .go { position: relative; z-index: 1; }
.door2::after { /* flame seam that grows on hover */
  content: ""; position: absolute; left: 0; bottom: 0; height: 3px; width: 100%;
  background: var(--flame); transform: scaleX(0); transform-origin: left; transition: transform .35s ease;
}
.door2:hover::after { transform: scaleX(1); }

/* PROOF — dark framed band, oversized mono numbers */
.proof2 { background: var(--black); color: #fff; border-top: 0; border-bottom: 0; }
.proof2 .frame { border: 1px solid var(--slate); padding: clamp(28px, 4vw, 46px); position: relative; }
.proof2 .stats { gap: 0; }
.proof2 .stat { padding: 8px 30px; border-left: 1px solid var(--slate); }
.proof2 .stat:first-child { border-left: 0; padding-left: 0; }
@media (max-width: 700px) { .proof2 .stat { border-left: 0; border-top: 1px solid var(--slate); padding: 22px 0 0; } .proof2 .stat:first-child { border-top: 0; padding-top: 0; } }
.proof2 .stat .big { font-size: clamp(2.4rem, 1.6rem + 3vw, 3.4rem); color: #fff; }
.proof2 .stat .small { color: var(--steel); }
.proof2 .eyebrow { color: var(--flame); }

/* section index ticks on plain eyebrows: tighten + uppercase already handled */

/* FOOTER v2 — watermark wordmark + geo coordinates */
.site-foot { position: relative; overflow: hidden; }
.foot-watermark {
  position: absolute; right: -2%; bottom: 12%; width: 58%; max-width: 760px;
  opacity: .04; pointer-events: none; user-select: none;
}
.foot-geo .coords { display: block; font-size: .66rem; color: var(--concrete); margin-top: 4px; letter-spacing: .06em; }

/* interior page hero — designed, not bare */
.pagehero { padding: clamp(40px, 6vw, 76px) 0 clamp(48px, 7vw, 88px); }
.pagehero .crumbs { padding-top: 0; margin-bottom: clamp(26px, 4vw, 40px); }
.pagehero-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(32px, 5vw, 60px); align-items: center; }
.pagehero-grid.solo { grid-template-columns: 1fr; max-width: 46rem; }
.pagehero-grid.solo .lede { max-width: 46ch; }
.pagehero h1 { font-size: clamp(2.2rem, 1.4rem + 3vw, 3.3rem); letter-spacing: -0.03em; }
.pagehero .lede { max-width: 34ch; }
@media (max-width: 940px) { .pagehero-grid { grid-template-columns: 1fr; gap: 30px; } .pagehero-grid.solo { max-width: none; } }

/* dark breadcrumbs (inside page hero) */
.section--dark .crumbs a { color: var(--steel); }
.section--dark .crumbs a:hover { color: var(--flame); }
.section--dark .crumbs .sep { color: var(--slate); }
.section--dark .crumbs [aria-current="page"] { color: #fff; }

/* spec-sheet panel */
.spec { position: relative; border: 1px solid var(--slate); background: rgba(8,10,16,.5); align-self: center; }
.spec-head {
  font-family: var(--mono); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase;
  color: var(--flame); padding: 13px 18px; border-bottom: 1px solid var(--slate);
}
.spec-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 18px;
  padding: 13px 18px; border-bottom: 1px solid var(--slate); font-family: var(--mono);
}
.spec-row:last-child { border-bottom: 0; }
.spec-row .k { color: var(--concrete); text-transform: uppercase; letter-spacing: .08em; font-size: .68rem; white-space: nowrap; }
.spec-row .v { color: #fff; font-size: .82rem; text-align: right; }
.spec-row .v .flame { color: var(--flame); }

/* mobile nav now lives outside the (backdrop-filtered) header — pin to viewport */
@media (max-width: 940px) {
  .mobile-nav { top: 66px; }
}

/* ---- contact block: invitation + methods on the left, framed form panel right ---- */
.contact-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(30px, 4vw, 56px); align-items: start; }
@media (max-width: 860px) { .contact-grid { grid-template-columns: 1fr; gap: 30px; } }
.contact-methods { list-style: none; padding: 0; margin: 24px 0 0; border-top: 1px solid var(--line); }
.contact-methods li { display: flex; gap: 18px; align-items: baseline; padding: 15px 0; border-bottom: 1px solid var(--line); }
.contact-methods .k { font-family: var(--mono); font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete); width: 64px; flex: none; }
.contact-methods a { font-weight: 500; color: var(--ink); }
.contact-methods a:hover { color: var(--ember); }

.formcard { position: relative; border: 1px solid var(--steel); background: var(--surface); box-shadow: 0 18px 50px rgba(12,15,23,.07); }
.formcard-head {
  font-family: var(--mono); font-size: .7rem; text-transform: uppercase; letter-spacing: .14em;
  color: var(--flame); padding: 14px 22px; border-bottom: 1px solid var(--line);
  display: flex; align-items: center; gap: 9px;
}
.formcard-head .dot { background: var(--flame); }
.formcard-body { padding: clamp(22px, 3vw, 32px); display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.formcard-body .full { grid-column: 1 / -1; }
.formcard label { display: grid; gap: 8px; font-family: var(--mono); font-size: .64rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete); }
.formcard input, .formcard textarea {
  border: 1px solid var(--steel); background: var(--bg); padding: 13px 14px;
  font: 400 1rem/1.5 var(--font); color: var(--ink); width: 100%;
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.formcard input::placeholder, .formcard textarea::placeholder { color: var(--steel); }
.formcard input:focus, .formcard textarea:focus { outline: none; border-color: var(--flame); background: var(--surface); box-shadow: 0 0 0 3px rgba(234,88,12,.16); }
.formcard textarea { resize: vertical; min-height: 96px; }
.formcard button { justify-self: start; }
@media (max-width: 520px) { .formcard-body { grid-template-columns: 1fr; } }

/* editorial "statement" — heading left, prose right (fixes lone-lede sections) */
.statement { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(28px, 5vw, 72px); align-items: start; }
.statement .sec-head { margin-bottom: 0; max-width: none; }
.statement .st-body { padding-top: 4px; }
.statement .st-body > :last-child { margin-bottom: 0; }
@media (max-width: 820px) { .statement { grid-template-columns: 1fr; gap: 18px; } }

/* operator-record cards (homepage founder) */
.record .rec-k { font-family: var(--mono); font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; color: var(--flame); display: block; margin-bottom: 8px; }
.record h3 { margin-bottom: .35em; }

/* footer reach links in the legal bar */
.foot-reach { display: inline-flex; gap: 8px 20px; flex-wrap: wrap; }
.foot-reach a { color: var(--concrete); text-transform: none; }
.foot-reach a:hover { color: var(--flame); }

/* anchor offset so sticky header doesn't cover #targets */
:target { scroll-margin-top: 86px; }

/* selection refinement in dark */
.section--dark ::selection, .proof2 ::selection, .site-foot ::selection { background: var(--flame); color: #fff; }

/* ============================================================================
   SHOWCASE COMPONENTS — Alex call mockup, audio demos, hub-and-spoke
   ========================================================================== */

/* ---- hero flame full-stop (markup + flicker from the approved reference) ---- */
.text-flame { color: var(--flame); }
.hero-flame-wrap {
  display: inline-block; position: relative;
  width: .22em; height: .32em;
  vertical-align: baseline; margin-left: .03em;
}
.hero-flame { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
.hero-flame-2 { opacity: .5; }
@media (prefers-reduced-motion: no-preference) {
  .hero-flame-1 { transform-origin: 50% 100%; animation: flame1 .6s ease-in-out infinite alternate; }
  .hero-flame-2 { transform-origin: 50% 100%; animation: flame2 .5s ease-in-out infinite alternate; }
}
@keyframes flame1 {
  0%   { transform: scaleX(1) scaleY(1) rotate(0deg); opacity: 1; }
  33%  { transform: scaleX(.9) scaleY(1.08) rotate(-2deg); opacity: .9; }
  66%  { transform: scaleX(1.05) scaleY(.95) rotate(1deg); opacity: 1; }
  100% { transform: scaleX(.95) scaleY(1.05) rotate(-1deg); opacity: .85; }
}
@keyframes flame2 {
  0%   { transform: scaleX(1.05) scaleY(.95) rotate(1.5deg); opacity: .4; }
  50%  { transform: scaleX(.9) scaleY(1.1) rotate(-2deg); opacity: .6; }
  100% { transform: scaleX(1.08) scaleY(.92) rotate(2deg); opacity: .3; }
}

/* ---- operating-layer graphic — crisp static isometric slabs + spine ----
   Tiles never move; selection = glow + flame ring + spine node (reversible). */
.stack-wrap {
  display: grid; grid-template-columns: 208px minmax(320px, 1fr) minmax(280px, 350px);
  gap: clamp(20px, 3vw, 48px); align-items: center; margin-top: 10px;
}

/* left rail — tier-grouped nav */
.stack-labels { display: flex; flex-direction: column; }
.stack-labels .grp { margin-top: 20px; }
.stack-labels .grp:first-child { margin-top: 0; }
.grp-head {
  font-family: var(--mono); font-size: .58rem; font-weight: 700; letter-spacing: .15em;
  text-transform: uppercase; display: flex; align-items: center; gap: 9px; padding-bottom: 9px;
}
.grp-head .swatch { width: 11px; height: 11px; flex: none; }
.grp-head .ln { height: 1px; flex: 1; background: currentColor; opacity: .32; }
.grp.t-haal .grp-head { color: var(--flame); }
.grp.t-shared .grp-head { color: var(--ember); }
.grp.t-yours .grp-head { color: var(--steel); }
.grp.t-haal .swatch { background: var(--flame); }
.grp.t-yours .swatch { background: var(--steel); }
.grp.t-shared .swatch { background: linear-gradient(135deg, var(--steel) 0 50%, var(--flame) 50% 100%); }
.stack-labels .nav {
  display: flex; align-items: center; gap: 12px; width: 100%; text-align: left;
  background: none; border: 0; padding: 9px 0; cursor: pointer; color: var(--concrete);
  font-family: var(--mono); font-size: .74rem; font-weight: 500; letter-spacing: .06em;
  text-transform: uppercase; transition: color .22s ease;
}
.stack-labels .nav .dot { width: 7px; height: 7px; flex: none; background: var(--line); border-radius: 50%; transition: background .22s, transform .22s, box-shadow .22s; }
.stack-labels .nav .nn { font-size: .62rem; color: var(--steel); margin-left: auto; letter-spacing: .06em; transition: color .22s; }
.stack-labels .nav:hover { color: var(--ink); }
.stack-labels .nav.is-active { color: var(--ink); }
.stack-labels .nav.is-active .dot { background: var(--flame); transform: scale(1.5); box-shadow: 0 0 0 4px rgba(234,88,12,.14); }
.stack-labels .nav.is-active .nn { color: var(--flame); }
.stack-labels .nav:focus-visible { outline: none; color: var(--ink); }
.stack-labels .nav:focus-visible .dot { box-shadow: 0 0 0 3px rgba(234,88,12,.35); }

/* iso stage */
.stack-iso { position: relative; }
.iso-svg { display: block; width: 100%; height: auto; overflow: visible; }
.slab { cursor: pointer; }
.slab .body { transition: opacity .35s ease; }
.slab .ring { fill: none; stroke: var(--flame); stroke-width: 2.4; opacity: 0; transition: opacity .3s ease; }
.slab.is-active .ring { opacity: 1; }
.slab .halo { opacity: 0; transition: opacity .4s ease; }
.slab.is-active .halo { opacity: 1; }
.slab:focus-visible { outline: none; }
.slab:focus-visible .ring { opacity: 1; stroke-dasharray: 4 3; }
.node { transition: fill .3s ease, stroke .3s ease, r .3s ease; }
.seg { transition: stroke-opacity .3s ease, stroke-width .3s ease; }
/* dim non-active tiles slightly so the active one reads as focused — never moved */
.stack.has-active .slab:not(.is-active) { opacity: .72; transition: opacity .35s ease; }
.stack .slab { opacity: 1; transition: opacity .35s ease; }
/* spine pulse — "one connected system" */
.iso-svg .pulse { fill: var(--flame); opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
  .iso-svg .pulse { animation: spineTravel 3.4s linear infinite; }
}
@keyframes spineTravel {
  0% { opacity: 0; transform: translateY(0); }
  8% { opacity: 1; } 92% { opacity: 1; }
  100% { opacity: 0; transform: translateY(198px); }
}

/* detail panel */
.stack-detail { position: relative; min-height: 240px; }
.sd-pane { display: none; }
.sd-pane.active { display: block; animation: sdIn .35s ease; }
@media (prefers-reduced-motion: reduce) { .sd-pane.active { animation: none; } }
@keyframes sdIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.sd-k { display: flex; align-items: center; gap: 9px; font-size: .66rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--flame); margin-bottom: 12px; }
.sd-k .tier-tag { margin-left: auto; font-size: .56rem; font-weight: 700; letter-spacing: .12em; padding: 3px 7px; border: 1px solid currentColor; }
.sd-pane.t-haal .tier-tag { color: var(--flame); }
.sd-pane.t-shared .tier-tag { color: var(--ember); }
.sd-pane.t-yours .tier-tag { color: var(--steel); }
.sd-pane h3 { font-size: 1.45rem; margin-bottom: .4em; }
.sd-pane p { color: var(--muted); max-width: 38em; }
.sd-pane .connects { margin: 18px 0 0; }

@media (max-width: 940px) {
  .stack-wrap { grid-template-columns: 1fr; gap: 28px; }
  .stack-labels { flex-direction: row; flex-wrap: wrap; gap: 4px 22px; }
  .stack-labels .grp { margin-top: 0; flex: 1 1 100%; }
  .stack-iso { max-width: 360px; margin: 0 auto; }
  .stack-detail { min-height: 0; }
}

/* ---- loop demo composite — one call becomes lookup → dispatch → delivery → SMS
   (ported from the approved reference; ships static-complete, JS replays) ---- */
.demoband { position: relative; overflow: hidden; }
.demo-composite {
  display: grid; grid-template-columns: 1fr 300px 1fr; gap: 20px;
  align-items: center; position: relative; margin-top: 8px;
}
.demo-composite::before, .demo-composite::after {
  content: ""; position: absolute; top: 50%; height: 1px;
  background: linear-gradient(90deg, transparent, var(--slate), transparent);
  transform: translateY(-50%); z-index: 0;
}
.demo-composite::before { left: 0; right: 50%; }
.demo-composite::after { left: 50%; right: 0; }
.demo-panel-left, .demo-panel-right { display: flex; flex-direction: column; gap: 16px; position: relative; z-index: 1; }
.demo-sys-card { background: var(--black); border: 1px solid var(--slate); padding: 18px 20px; }
.sys-card-label {
  font-family: var(--mono); font-size: .68rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .1em; color: var(--steel); margin-bottom: 14px;
}
.sys-card-row { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; border-bottom: 1px solid rgba(30,41,59,.6); }
.sys-card-row:last-child { border-bottom: none; }
.sys-key { font-size: .82rem; color: var(--concrete); }
.sys-val { font-size: .82rem; color: var(--dust); }
.sys-val .amber { color: var(--amber); }
.sys-card-big { font-size: 1.5rem; font-weight: 700; color: #fff; margin-bottom: 12px; }
.sys-sms p { margin: 0; font-size: .82rem; line-height: 1.5; color: var(--dust); background: rgba(30,41,59,.5); padding: 12px; border-left: 2px solid var(--flame); }
.dispatch-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.dispatch-text { font-family: var(--mono); font-size: .72rem; color: var(--dust); white-space: nowrap; }

.badge {
  display: inline-flex; align-items: center; padding: 3px 10px;
  font-family: var(--mono); font-size: .66rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .04em; border: 1px solid;
}
.badge-online  { border-color: rgba(22,163,74,.6);  background: rgba(22,163,74,.1);  color: var(--green); }
.badge-warning { border-color: rgba(217,119,6,.6);  background: rgba(217,119,6,.1);  color: var(--amber); }
.badge-flame   { border-color: rgba(234,88,12,.6);  background: rgba(234,88,12,.1);  color: var(--flame); }

/* phone — center column */
.demo-phone-wrapper { display: flex; justify-content: center; position: relative; z-index: 2; }
.phone-frame { width: 300px; background: var(--slate); border: 1px solid rgba(168,162,158,.2); overflow: hidden; box-shadow: 0 24px 60px rgba(0,0,0,.45); }
.phone-notch { width: 100px; height: 24px; margin: 0 auto; background: var(--black); border-radius: 0 0 10px 10px; }
.phone-screen { padding: 14px; }
.phone-header { display: flex; align-items: center; gap: 8px; padding-bottom: 10px; border-bottom: 1px solid var(--slate); margin-bottom: 12px; }
.phone-header img { width: 22px; height: 22px; }
.phone-header-text { display: flex; flex-direction: column; flex: 1; }
.phone-brand { font-size: .82rem; font-weight: 600; color: #fff; }
.phone-role { font-size: .64rem; color: var(--steel); }
.phone-status { font-family: var(--mono); font-size: .64rem; font-weight: 500; color: var(--green); text-transform: uppercase; letter-spacing: .05em; }
.phone-waveform { display: flex; flex-direction: column; align-items: center; gap: 7px; margin-bottom: 12px; background: none; border: 0; padding: 4px 0; width: 100%; cursor: pointer; color: var(--flame); -webkit-tap-highlight-color: transparent; }
.phone-waveform:focus-visible { outline: 2px solid var(--flame); outline-offset: 3px; border-radius: 10px; }
.wave-stage { position: relative; display: flex; align-items: center; justify-content: center; height: 44px; }
.wave-bars { display: flex; align-items: center; gap: 3px; height: 44px; }
.wave-cta { font-family: var(--mono); font-size: .62rem; letter-spacing: .04em; text-transform: uppercase; color: var(--flame); display: inline-flex; align-items: center; }
.phone-waveform:hover .wave-cta, .phone-waveform:focus-visible .wave-cta { text-decoration: underline; text-underline-offset: 3px; }
.cta-live { display: none; }
.phone-waveform.playing .cta-idle { display: none; }
.phone-waveform.playing .cta-live { display: inline-flex; }
.wave-bars i { width: 3px; height: var(--h); background: var(--flame); display: block; }
.wp-btn { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 34px; height: 34px; border-radius: 50%; background: rgba(12,15,23,.66); border: 1px solid rgba(255,255,255,.22); display: flex; align-items: center; justify-content: center; color: var(--flame); backdrop-filter: blur(2px); box-shadow: 0 2px 10px rgba(0,0,0,.45); transition: background .15s ease, transform .15s ease; }
.phone-waveform:hover .wp-btn, .phone-waveform:focus-visible .wp-btn { background: rgba(12,15,23,.85); transform: translate(-50%, -50%) scale(1.07); }
.wp-btn .ic-play { margin-left: 2px; }
.wp-btn .ic-pause { display: none; }
.phone-waveform.playing .ic-play { display: none; }
.phone-waveform.playing .ic-pause { display: block; margin: 0; }
.phone-waveform.playing .wp-btn { background: var(--flame); border-color: var(--flame); color: #0C0F17; }
@media (prefers-reduced-motion: no-preference) {
  .phone-waveform.playing .wp-btn { animation: wpPulse 1.6s ease-out infinite; }
}
@keyframes wpPulse { 0% { box-shadow: 0 0 0 0 rgba(234,88,12,.5); } 70% { box-shadow: 0 0 0 13px rgba(234,88,12,0); } 100% { box-shadow: 0 0 0 0 rgba(234,88,12,0); } }
@media (prefers-reduced-motion: no-preference) {
  .wave-bars i { animation: waveAnim 1s ease-in-out var(--d) infinite alternate; }
}
@keyframes waveAnim { 0% { transform: scaleY(.3); opacity: .4; } 100% { transform: scaleY(1); opacity: 1; } }
.phone-chat { display: flex; flex-direction: column; gap: 8px; min-height: 300px; justify-content: flex-end; }
.chat-bubble { padding: 9px 11px; font-size: .76rem; line-height: 1.5; color: var(--dust); }
.chat-customer { background: rgba(30,41,59,.8); border-left: 2px solid var(--steel); }
.chat-ai { background: rgba(234,88,12,.08); border-left: 2px solid var(--flame); color: #fff; }
.chat-sender { display: block; font-size: .62rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 3px; color: var(--steel); }
.chat-ai .chat-sender { color: var(--flame); }

/* static-complete by default; only a JS-driven cycle hides/reveals.
   Everything keeps its layout space (opacity only) — the page never shifts. */
.demo-composite.js-cycle .demo-anim { opacity: 0; transform: translateY(12px); transition: opacity .6s ease, transform .6s ease; }
.demo-composite.js-cycle .demo-anim.demo-visible { opacity: 1; transform: translateY(0); }
.demo-composite.js-cycle .chat-bubble { opacity: 0; transform: translateY(6px); transition: opacity .4s ease, transform .4s ease; }
.demo-composite.js-cycle .chat-bubble.show { opacity: 1; transform: translateY(0); }
.demo-composite.paused .wave-bars i { animation-play-state: paused; }

/* pause control — bottom right of the demo band */
.demo-controls { display: flex; justify-content: flex-end; margin-top: 18px; }
.demo-pause {
  background: transparent; border: 1px solid var(--slate); color: var(--steel);
  font-family: var(--mono); font-size: .68rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .1em; padding: 8px 14px; cursor: pointer;
  transition: border-color .15s linear, color .15s linear;
}
.demo-pause:hover { border-color: var(--flame); color: #fff; }
.demo-pause:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--black), 0 0 0 4px var(--flame); }

@media (max-width: 940px) {
  .demo-composite { grid-template-columns: 1fr; max-width: 420px; margin: 8px auto 0; }
  .demo-composite::before, .demo-composite::after { display: none; }
  .demo-panel-left { order: 2; } .demo-phone-wrapper { order: 1; } .demo-panel-right { order: 3; }
}

/* ---- enterprise product showcase ---- */
.showband { position: relative; overflow: hidden; }
.showcase { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: clamp(28px, 4vw, 52px); align-items: start; margin-top: 8px; }
.sc-stage { min-width: 0; }
@media (max-width: 880px) { .showcase { grid-template-columns: 1fr; } .sc-rail { flex-direction: row; flex-wrap: wrap; } }
.sc-rail { display: flex; flex-direction: column; gap: 4px; }
.sc-tab {
  background: transparent; border: 1px solid transparent; border-left: 2px solid var(--slate);
  padding: 14px 16px; text-align: left; cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease;
}
.sc-tab .sc-k { display: block; color: var(--steel); font-weight: 600; font-size: .95rem; transition: color .2s ease; }
.sc-tab .sc-sub { display: block; font-family: var(--mono); font-size: .66rem; text-transform: uppercase; letter-spacing: .08em; color: var(--concrete); margin-top: 3px; }
.sc-tab:hover .sc-k { color: #fff; }
.sc-tab.active { border-left-color: var(--flame); background: rgba(234,88,12,.06); }
.sc-tab.active .sc-k { color: #fff; }
.sc-tab.active .sc-sub { color: var(--flame); }
.sc-tab:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--black), 0 0 0 4px var(--flame); }

.sc-panel { display: none; }
.sc-panel.active { display: block; animation: sdIn .35s ease; }
@media (prefers-reduced-motion: reduce) { .sc-panel.active { animation: none; } }
.sc-cap { margin: 14px 2px 0; font-size: .85rem; color: var(--steel); }

.app-frame { background: #11151f; border: 1px solid var(--slate); box-shadow: 0 24px 60px rgba(0,0,0,.45); }
.af-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 11px 16px; border-bottom: 1px solid var(--slate);
  font-family: var(--mono); font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--steel);
}
.af-live { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; font-size: .64rem; color: var(--green); }
.af-live.ok { color: var(--green); }
.af-cols { display: grid; grid-template-columns: 1.2fr .9fr; min-height: 250px; }
@media (max-width: 620px) { .af-cols { grid-template-columns: 1fr; } }
.af-map { background: #0d111a; border-right: 1px solid var(--slate); }
.af-map svg { width: 100%; height: 100%; min-height: 230px; display: block; }
.af-side { padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.af-h { font-family: var(--mono); font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; color: #fff; }
.af-stat { display: flex; align-items: center; gap: 10px; color: var(--steel); font-size: .82rem; }
.af-stat b { color: #fff; font-family: var(--mono); }
.af-stop { font-family: var(--mono); font-size: .7rem; color: var(--steel); padding: 7px 10px; border: 1px solid var(--slate); }
.af-stop.done { color: var(--green); border-color: rgba(22,163,74,.35); }
.af-stop.next { color: var(--flame); border-color: rgba(234,88,12,.45); }

.af-body { padding: 16px; display: flex; flex-direction: column; gap: 12px; min-height: 250px; }
.af-alert { font-size: .8rem; color: var(--amber); border: 1px solid rgba(217,119,6,.4); background: rgba(217,119,6,.08); padding: 9px 12px; }
.af-alert b { color: #fff; font-weight: 600; }
.af-tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
@media (max-width: 620px) { .af-tiles { grid-template-columns: 1fr 1fr; } }
.af-tile { border: 1px solid var(--slate); padding: 10px 12px; }
.af-tile .t-k { display: block; font-family: var(--mono); font-size: .58rem; text-transform: uppercase; letter-spacing: .1em; color: var(--concrete); }
.af-tile .t-v { display: block; font-family: var(--mono); font-size: 1.25rem; font-weight: 700; color: #fff; margin-top: 4px; }
.af-tile .t-v.flame { color: var(--flame); }
.af-row { display: flex; justify-content: space-between; gap: 14px; font-size: .8rem; color: var(--dust); padding: 9px 2px; border-bottom: 1px solid rgba(30,41,59,.6); }
.af-row .r-warn { font-family: var(--mono); font-size: .7rem; color: var(--amber); }
.af-row .r-ok { font-family: var(--mono); font-size: .7rem; color: var(--green); }

.af-chat { justify-content: center; gap: 10px; }
.af-chat .chat-bubble { max-width: 85%; }
.af-chat .chat-ai { align-self: flex-end; }
.af-meta { font-family: var(--mono); font-size: .64rem; text-transform: uppercase; letter-spacing: .08em; color: var(--green); margin-top: 4px; }

.af-ph { align-items: stretch; }
.ph-frame {
  flex: 1; min-height: 170px; border: 1.5px dashed var(--slate);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
}
.ph-frame .ph-k { font-family: var(--mono); font-size: .72rem; text-transform: uppercase; letter-spacing: .12em; color: var(--steel); }
.ph-frame .ph-note { font-family: var(--mono); font-size: .62rem; color: var(--concrete); }
.ph-chips { margin: 0; }
.ph-chips li { background: transparent; border-color: var(--slate); color: var(--steel); }

/* ---- showcase additions: real shots, honesty tags, kv rows, IoT, live-ops ---- */
.af-shot { width: 100%; display: block; }
.af-rec { margin-left: auto; font-size: .6rem; letter-spacing: .12em; color: var(--concrete); border: 1px solid var(--slate); padding: 2px 8px; text-transform: uppercase; }
.cap-note { color: var(--concrete); }
.af-kv { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-size: .8rem; color: var(--steel); padding: 7px 0; border-bottom: 1px solid rgba(30,41,59,.6); }
.af-kv b { font-family: var(--mono); color: #fff; font-weight: 600; }
.af-photo { background: #0d111a; border-right: 1px solid var(--slate); display: flex; align-items: stretch; justify-content: center; }
.af-photo-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.af-photo .ph-frame { margin: 16px; flex: 1; }
.iot-map { border: 1px solid var(--slate); background: #0d111a; }
.iot-map svg { display: block; width: 100%; }
@media (prefers-reduced-motion: no-preference) {
  .iot-ring { animation: iotPing 2.2s ease-out infinite; transform-origin: 118px 56px; }
}
@keyframes iotPing { 0% { transform: scale(.45); opacity: 1; } 80%, 100% { transform: scale(1.25); opacity: 0; } }

/* ---- engagement stepper — auto-advancing, clickable ---- */
.steps.engage li { cursor: pointer; overflow: hidden; transition: border-color .25s ease, background-color .25s ease; }
.steps.engage li .step-fill {
  position: absolute; left: 0; bottom: 0; height: 2.5px; width: 100%;
  background: var(--flame); transform: scaleX(0); transform-origin: left;
}
.steps.engage li.active { border-color: var(--flame); background: var(--surface); }
.steps.engage li.active::before { color: var(--flame); }
@media (prefers-reduced-motion: no-preference) {
  .steps.engage li.active .step-fill { animation: stepFill var(--step-ms, 3200ms) linear forwards; }
}
@keyframes stepFill { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* ---- integrations grid (ported pattern: logos around the haal core) ---- */
.int-grid-wrap { display: flex; justify-content: center; margin-top: 34px; }
.int-grid { position: relative; display: flex; flex-direction: column; gap: 10px; width: min(560px, 100%); }
.int-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.int-row.faded { opacity: .28; }
.int-card {
  position: relative; height: 64px; border: 1px solid var(--line); background: var(--surface);
  display: flex; align-items: center; justify-content: center; padding: 12px 16px;
  transition: border-color .3s ease, box-shadow .3s ease;
}
.int-card img { max-height: 30px; max-width: 82%; width: auto; object-fit: contain; filter: grayscale(1); opacity: .72; transition: filter .3s ease, opacity .3s ease; }
.int-card.lit { border-color: var(--flame); box-shadow: 0 0 0 1px var(--flame), 0 10px 26px rgba(234,88,12,.18); }
.int-card.lit img { filter: grayscale(0); opacity: 1; }
.int-card.int-ghost span, .int-card .int-ghost { font-family: var(--mono); font-size: .68rem; color: var(--concrete); letter-spacing: .04em; }
.int-card.int-center { background: var(--black); border-color: var(--black); }
.int-card.int-center img { filter: none; opacity: 1; max-height: 26px; }
.int-card.int-center.pulse { box-shadow: 0 0 0 2px var(--flame), 0 12px 30px rgba(234,88,12,.3); border-color: var(--flame); }
.int-lines { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; overflow: visible; }
.int-lines line { stroke: var(--flame); stroke-width: 1.5; opacity: 0; transition: opacity .25s ease; }
.int-lines line.on { opacity: 1; }

/* ---- map backgrounds on showcase panels ---- */
.af-map-real { position: relative; background: url('/assets/img/product/map-nairobi.jpg') center/cover no-repeat; }
.af-map-real svg { position: relative; z-index: 1; }
.map-attr { position: absolute; right: 6px; bottom: 4px; z-index: 2; font-family: var(--mono); font-size: .52rem; color: rgba(12,15,23,.55); background: rgba(255,255,255,.55); padding: 1px 5px; }
.iot-map-real { position: relative; background: url('/assets/img/product/map-nairobi.jpg') 64% 38%/220% no-repeat; min-height: 96px; }
.iot-map-real svg { position: relative; z-index: 1; display: block; width: 100%; }

/* ---- Dispatch & Routes — the real RoutesPage, recreated 1:1 from the product.
   FE tokens: haal-black #0C0F17, slate #1E293B, flame #EA580C, dust #D6D3D1,
   text 2ndary #78716C / tertiary #A8A29E. Square corners everywhere
   (rounded-none); dark sidebar, LIGHT full-bleed map, white floating
   controls with shadow-lg. ---- */
/* Render the whole app at real desktop-screenshot proportions, then scale
   the fixed-width frame down to fit the column (haal.js sets --rs + the box
   height). Reads as a printscreen of the product, but stays interactive. */
.rapp-scale { position: relative; width: 100%; overflow: hidden; }
.rapp-frame { overflow: hidden; width: 1280px; transform: scale(var(--rs, 1)); transform-origin: top left; }
.rapp { display: grid; grid-template-columns: 256px 1fr; background: #0C0F17; font-family: var(--sans, 'Inter', system-ui, sans-serif); }
/* --- sidebar (always dark, 256px, p-24) --- */
.rapp-side { display: flex; flex-direction: column; background: #0C0F17; padding: 24px; min-width: 0; }
.rapp-logo { margin-bottom: 32px; padding-bottom: 24px; border-bottom: 1px solid #1E293B; }
.rapp-logo img { display: block; height: 26px; width: auto; }
.rapp-nav { display: flex; flex-direction: column; gap: 4px; }
.rnav-row, .rnav-subrow { display: flex; align-items: center; }
.rnav-subrow { margin-top: 4px; }
.rnav-elbow { width: 32px; text-align: center; color: #D6D3D1; font-size: .9rem; line-height: 1; flex: 0 0 auto; user-select: none; }
.rnav-link { flex: 1; display: flex; align-items: center; gap: 12px; padding: 12px 16px; color: #D6D3D1; font-size: .875rem; font-weight: 500; line-height: 1; white-space: nowrap; overflow: hidden; }
.rnav-subrow .rnav-link { gap: 10px; padding: 10px 12px; }
.rnav-link .rnav-i { width: 18px; height: 18px; flex: 0 0 auto; }
.rnav-subrow .rnav-link .rnav-i { width: 16px; height: 16px; }
.rnav-link > span { overflow: hidden; text-overflow: ellipsis; }
.rnav-link.active { background: var(--flame); color: #fff; }
.rapp-user { margin-top: auto; padding-top: 24px; border-top: 1px solid #1E293B; display: flex; align-items: center; gap: 12px; }
.ru-av { width: 32px; height: 32px; flex: 0 0 auto; background: #1E293B; color: var(--flame); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: .875rem; }
.ru-uinfo { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; }
.ru-n { color: #fff; font-size: .875rem; font-weight: 500; overflow: hidden; text-overflow: ellipsis; }
.ru-e { color: #D6D3D1; font-size: .75rem; overflow: hidden; text-overflow: ellipsis; }
.ru-chev { color: #D6D3D1; flex: 0 0 auto; }
/* --- main area: full-bleed light map + floating controls --- */
.rapp-main { position: relative; min-width: 0; height: 720px; background: #F5F0EB; overflow: hidden; }
/* width/height:100% (not just inset:0) so it fills even though maplibre-gl.css
   forces position:relative on the .maplibregl-map container after load */
.rmap { position: absolute; inset: 0; width: 100%; height: 100%; background: #e9e6df; }
/* Live operations geofence map — in-flow inside the showcase af-cols */
.rmap-geo { position: relative; inset: auto; width: 100%; height: 360px; background: #e9e6df; border-right: 1px solid var(--slate); }
@media (max-width: 620px) { .rmap-geo { border-right: 0; border-bottom: 1px solid var(--slate); height: 300px; } }
.rmap-geo.ready .rmap-skel { opacity: 0; pointer-events: none; }
.rmap-geo .maplibregl-ctrl-attrib, .rmap-geo .maplibregl-ctrl-logo { display: none !important; }
/* live operations map = full-bleed .rmap (same chrome as routes) */
.rmap.ready .rmap-skel { opacity: 0; pointer-events: none; }
.rmap-liveind { position: absolute; left: 16px; bottom: 60px; z-index: 9; display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; background: #fff; border: 1px solid #D6D3D1; box-shadow: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1); font-size: .8rem; color: #0C0F17; }
/* transient "agent" toast — slides in above the chat button as the truck
   enters a customer geofence (or deviates), then auto-dismisses */
.rmap-agent { position: absolute; right: 78px; bottom: 18px; z-index: 9; max-width: 360px; display: flex; align-items: flex-start; gap: 11px; padding: 14px 17px; background: #fff; border: 1px solid #D6D3D1; box-shadow: 0 12px 18px -3px rgba(0,0,0,.16), 0 5px 8px -4px rgba(0,0,0,.13); font-size: .95rem; line-height: 1.35; color: #0C0F17; opacity: 0; transform: translateY(6px); pointer-events: none; transition: opacity .3s ease, transform .3s ease; }
.rmap-agent.show { opacity: 1; transform: translateY(0); }
.rmap-agent .ra-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; margin-top: 4px; background: var(--green); }
.rmap-agent.alert .ra-dot { background: #DC2626; }
.rmap-agent .ra-who { font-family: var(--mono); font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; color: #78716C; }
.rmap-agent b { font-weight: 600; }
@media (prefers-reduced-motion: reduce) { .rmap-agent { transition: none; } }
@media (max-width: 760px) { .rmap-agent { display: none; } }
.rmap canvas { outline: none; }
/* squared MapLibre nav control (bottom-left), matching rounded-none */
.rapp-main .maplibregl-ctrl-group { border-radius: 0; box-shadow: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1); border: 1px solid #D6D3D1; }
.rapp-main .maplibregl-ctrl-group button { width: 30px; height: 30px; }
.rapp-main .maplibregl-ctrl-bottom-left { left: 16px; bottom: 16px; }
.rapp-main .maplibregl-ctrl-attrib { background: rgba(255,255,255,.7); border-radius: 0; font-size: .62rem; }
/* floating top controls — absolute top-4 left-4 right-4, space-between */
.rmap-top { position: absolute; top: 16px; left: 16px; right: 16px; z-index: 10; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; pointer-events: none; }
.rmap-top-l, .rmap-top-r { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; pointer-events: auto; }
.rmap-top-l { gap: 12px; }
.rmap-card { background: #fff; border: 1px solid #D6D3D1; border-radius: 0; box-shadow: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1); color: #0C0F17; font-size: .875rem; }
.rt-i { flex: 0 0 auto; }
.rt-date { display: inline-flex; align-items: center; gap: 8px; padding: 9px 12px; }
.rt-stats { display: inline-flex; align-items: center; gap: 16px; padding: 10px 16px; color: #78716C; }
.rt-stats b { color: #0C0F17; font-weight: 700; }
.rt-div { width: 1px; height: 16px; background: #D6D3D1; }
.rt-active { display: inline-flex; align-items: center; gap: 6px; color: var(--flame); }
.rt-active .rt-i { width: 14px; height: 14px; }
.rt-btn { display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; font-weight: 500; }
.rt-seg { display: inline-flex; align-items: center; gap: 4px; padding: 4px; }
.rt-seg-b { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border: 0; border-radius: 0; background: transparent; font: inherit; font-size: .875rem; font-weight: 500; color: #78716C; cursor: pointer; transition: background .15s linear, color .15s linear; }
.rt-seg-b:hover { color: #0C0F17; }
.rt-seg-b.active { background: var(--flame); color: #fff; }
.rt-seg-b:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--flame); }
.rt-icobtn { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; color: #78716C; cursor: pointer; }
.rt-icobtn:hover { color: #0C0F17; }
.rt-icobtn.active { background: var(--flame); color: #fff; border-color: var(--flame); }
@media (max-width: 760px) { .rt-stats, .rt-btn span:not(.rt-i) { display: none; } }
/* floating Trips panel — absolute top-20 right-4 bottom-4 w-[520px] */
.rtrips { position: absolute; top: 72px; right: 16px; bottom: 16px; width: min(420px, calc(100% - 32px)); z-index: 10; background: #fff; border: 1px solid #D6D3D1; border-radius: 0; box-shadow: 0 20px 25px -5px rgba(0,0,0,.12), 0 8px 10px -6px rgba(0,0,0,.12); display: flex; flex-direction: column; overflow: hidden; }
.rtrips[hidden] { display: none; }
.rtrips-head { display: flex; align-items: flex-start; justify-content: space-between; padding: 16px; border-bottom: 1px solid #D6D3D1; }
.rtrips-title { font-size: 1rem; font-weight: 600; color: #0C0F17; }
.rtrips-sub { font-size: .875rem; color: #78716C; margin-top: 2px; }
.rtrips-x { border: 0; background: transparent; padding: 6px; color: #A8A29E; cursor: pointer; line-height: 0; }
.rtrips-x:hover { color: #0C0F17; }
.rtrips-list { flex: 1; overflow: auto; }
.rt-card { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #D6D3D1; }
.rt-badge { width: 36px; height: 36px; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: .875rem; }
.rt-cbody { flex: 1; min-width: 0; }
.rt-cname { display: flex; align-items: baseline; gap: 8px; font-size: .9rem; font-weight: 500; color: #0C0F17; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-cveh { font-family: var(--mono); font-size: .72rem; color: #A8A29E; flex: 0 0 auto; }
.rt-cmeta { display: flex; align-items: center; gap: 6px; font-size: .8rem; color: #78716C; margin-top: 3px; white-space: nowrap; }
.rt-cmeta .rt-i { width: 14px; height: 14px; }
.rt-mdot { color: #D6D3D1; }
.rt-cprog { margin-top: 8px; }
.rt-cprog-l { display: flex; justify-content: space-between; font-size: .625rem; color: #78716C; margin-bottom: 4px; }
.rt-cbar { height: 6px; background: #D6D3D1; overflow: hidden; }
.rt-cbar span { display: block; height: 100%; }
.rt-cright { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; color: #A8A29E; }
.rt-status { padding: 3px 8px; border-radius: 0; font-size: .625rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; border: 1px solid; }
.rt-status-done { color: var(--green); background: rgba(22,163,74,.1); border-color: rgba(22,163,74,.3); }
.rt-status-prog { color: var(--amber, #D97706); background: rgba(217,119,6,.1); border-color: rgba(217,119,6,.3); }
/* chat FAB (squared flame, bottom-right) */
.rmap-fab { position: absolute; right: 16px; bottom: 16px; z-index: 9; width: 44px; height: 44px; background: var(--flame); display: flex; align-items: center; justify-content: center; box-shadow: 0 10px 15px -3px rgba(234,88,12,.4); }
/* loading skeleton */
.rmap-skel { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; gap: 9px; background: #F5F0EB; color: #78716C; font-family: var(--mono); font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; transition: opacity .4s ease; }
.rapp-main.ready .rmap-skel { opacity: 0; pointer-events: none; }
.rmap-skel-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green); animation: rmPulse 1.4s ease-out infinite; }
@keyframes rmPulse { 0% { box-shadow: 0 0 0 0 rgba(22,163,74,.55); } 70% { box-shadow: 0 0 0 9px rgba(22,163,74,0); } 100% { box-shadow: 0 0 0 0 rgba(22,163,74,0); } }
@media (prefers-reduced-motion: reduce) { .rmap-skel-dot { animation: none; } }
/* pulsing red marker for the flagged unplanned stop (Live operations) */
.lv-pulse { animation: lvPulse 1.6s ease-out infinite; }
@keyframes lvPulse { 0% { box-shadow: 0 0 0 0 rgba(239,68,68,.55); } 70% { box-shadow: 0 0 0 12px rgba(239,68,68,0); } 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0); } }

/* ---- Assets & Stock — InventoryHubPage "Overview" tab, recreated (light) ---- */
.as-page { height: 100%; overflow: hidden; padding: 26px 30px; display: flex; flex-direction: column; gap: 20px; color: #0C0F17; }
.as-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.as-page .as-h1 { font-size: 1.5rem; font-weight: 700; color: #0C0F17; line-height: 1.1; }
.as-sub { color: #78716C; margin-top: 4px; font-size: .9rem; }
.as-actions { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; }
.as-btn { display: inline-flex; align-items: center; gap: 8px; padding: 10px 20px; font-size: .875rem; font-weight: 500; }
.as-btn-soft { background: rgba(234,88,12,.1); color: var(--flame); }
.as-btn-flame { background: var(--flame); color: #fff; }
.as-btn .rt-i { width: 16px; height: 16px; }
.as-tabs { display: flex; gap: 4px; border-bottom: 1px solid #D6D3D1; }
.as-tab { display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; font-size: .875rem; font-weight: 500; color: #78716C; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.as-tab .rt-i { width: 16px; height: 16px; }
.as-tab.active { color: var(--flame); border-bottom-color: var(--flame); }
.as-alert { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border: 1px solid rgba(217,119,6,.6); background: rgba(217,119,6,.1); }
.as-alert-ico { color: #D97706; flex: 0 0 auto; } .as-alert-ico .rt-i { width: 20px; height: 20px; }
.as-alert-main { flex: 1; min-width: 0; }
.as-alert-title { font-weight: 600; color: #D97706; }
.as-alert-text { font-size: .85rem; color: rgba(154,86,5,.9); margin-top: 2px; }
.as-alert-act { display: inline-flex; align-items: center; gap: 4px; color: #D97706; font-weight: 500; flex: 0 0 auto; } .as-alert-act .rt-i { width: 14px; height: 14px; }
.as-card { border: 1px solid #D6D3D1; background: #fff; }
.as-cardhead { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid #D6D3D1; }
.as-cardhead-l { display: flex; align-items: center; gap: 12px; }
.as-ic { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.as-ic-amber { background: rgba(217,119,6,.1); color: #D97706; }
.as-ic-flame { background: rgba(234,88,12,.1); color: var(--flame); }
.as-ic .rt-i { width: 16px; height: 16px; }
.as-page .as-cardtitle { font-weight: 600; color: #0C0F17; }
.as-cardsub { font-size: .75rem; color: #78716C; margin-top: 1px; }
.as-cardnote { font-size: .75rem; color: #A8A29E; }
.as-viewall { display: inline-flex; align-items: center; gap: 4px; font-size: .875rem; font-weight: 500; color: var(--flame); } .as-viewall .rt-i { width: 14px; height: 14px; }
.as-lowrow { display: flex; align-items: center; gap: 16px; padding: 12px 20px; border-bottom: 1px solid #D6D3D1; }
.as-lowrow:last-child { border-bottom: 0; }
.as-lowico { width: 32px; height: 32px; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; background: rgba(220,38,38,.1); color: #DC2626; } .as-lowico .rt-i { width: 14px; height: 14px; }
.as-lowbody { flex: 1; min-width: 0; }
.as-lowname { font-size: .875rem; font-weight: 500; color: #0C0F17; }
.as-lowsub { font-size: .75rem; color: #78716C; margin-top: 1px; }
.as-lowright { text-align: right; flex: 0 0 auto; }
.as-lowq { font-family: var(--mono); font-variant-numeric: tabular-nums; font-weight: 600; color: #DC2626; font-size: .875rem; }
.as-lowlab { font-size: .72rem; color: #78716C; }
.as-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.as-stat { border: 1px solid #D6D3D1; background: #fff; padding: 16px; }
.as-stat-l { font-size: .6875rem; text-transform: uppercase; letter-spacing: .05em; color: #78716C; }
.as-stat-v { font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: 28px; font-weight: 700; margin-top: 4px; color: #0C0F17; }
.as-amber { color: #D97706; }
.as-tablewrap { overflow: hidden; }
.as-table { width: 100%; border-collapse: collapse; }
.as-th { padding: 12px 20px; text-align: left; font-size: .6875rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: #78716C; border-bottom: 1px solid #D6D3D1; }
.as-th-r { text-align: right; }
.as-trow { border-bottom: 1px solid #D6D3D1; }
.as-trow:last-child { border-bottom: 0; }
.as-td { padding: 13px 20px; font-size: .875rem; vertical-align: middle; }
.as-prodname { font-weight: 500; color: #0C0F17; }
.as-prodsku { font-size: .72rem; color: #A8A29E; margin-top: 1px; }
.as-num { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; font-weight: 500; color: #0C0F17; }
.as-neg { color: #DC2626; font-weight: 600; }
.as-pos { color: var(--green); font-weight: 600; }
.as-barcell { width: 112px; }
.as-bar { width: 100%; height: 8px; background: rgba(214,211,209,.45); overflow: hidden; }
.as-bar span { display: block; height: 100%; }
.as-bar-pos { background: var(--green); }
.as-bar-neg { background: rgba(220,38,38,.6); }
.as-trendcell { text-align: right; }
.as-spark { display: inline-block; vertical-align: middle; }
.as-dash { color: #A8A29E; }
/* tabs are <button> now + switchable views */
.as-tab { background: transparent; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px; cursor: pointer; font-family: inherit; }
.as-tab:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--flame); }
.as-body { position: relative; }
.as-view { display: none; flex-direction: column; gap: 20px; }
.as-view.active { display: flex; animation: sdIn .4s ease; }
@media (prefers-reduced-motion: reduce) { .as-view.active { animation: none; } }
.as-stat-hint { font-size: .72rem; color: #A8A29E; margin-top: 4px; }
.as-red { color: #DC2626; }
/* customer cylinder balances — section label + variance table */
.as-section { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; border-bottom: 1px solid #D6D3D1; padding-bottom: 12px; }
.as-section-l { font-weight: 700; letter-spacing: .04em; text-transform: uppercase; font-size: .95rem; color: #0C0F17; }
.as-section-h { font-size: .8rem; color: #A8A29E; }
.as-vtable thead tr { background: #F5F0EB; }
.as-vtd { padding: 13px 16px; font-size: .85rem; vertical-align: middle; border-bottom: 1px solid #D6D3D1; color: #0C0F17; }
.as-vrow:last-child .as-vtd { border-bottom: 0; }
.as-vcust { font-weight: 500; }
.as-vsku { font-family: var(--mono); font-size: .72rem; color: #78716C; }
.as-vname { font-size: .8rem; color: #0C0F17; margin-top: 1px; }
.as-vnum { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; }
td.as-vnum.as-red, td.as-vnum.as-amber { font-weight: 600; }
.as-vby { font-size: .72rem; color: #A8A29E; margin-top: 1px; }

/* ---- Haal Intelligence — askable, animated chat (presentation briefing) ---- */
.intel-frame { display: flex; flex-direction: column; }
.af-bar .intel-avatar { display: inline-flex; align-items: center; justify-content: center; color: var(--flame); margin-right: 2px; }
.af-bar .intel-avatar .rt-i { width: 15px; height: 15px; }
.intel-body { background: #0b0e15; height: 300px; overflow-y: auto; padding: 20px; scrollbar-width: thin; scrollbar-color: var(--slate) transparent; }
.intel-body::-webkit-scrollbar { width: 8px; }
.intel-body::-webkit-scrollbar-track { background: transparent; }
.intel-body::-webkit-scrollbar-thumb { background: var(--slate); border: 2px solid #0b0e15; }
.intel-body::-webkit-scrollbar-thumb:hover { background: #34466a; }
.intel-thread { display: flex; flex-direction: column; gap: 14px; }
.im { display: flex; gap: 11px; max-width: 88%; opacity: 0; transform: translateY(8px); transition: opacity .35s ease, transform .35s ease; }
.im.show { opacity: 1; transform: none; }
.im-av { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 0; background: var(--flame); display: flex; align-items: center; justify-content: center; }
.im-av svg { width: 16px; height: 16px; fill: #fff; }
.im-bub { background: #11161f; border: 1px solid var(--slate); border-radius: 0; padding: 11px 14px; color: #E7E5E4; font-size: .9rem; line-height: 1.45; }
.im-bub b { color: #fff; font-weight: 600; }
.im-label { display: flex; align-items: center; gap: 7px; font-family: var(--mono); font-size: .62rem; letter-spacing: .07em; text-transform: uppercase; color: var(--steel); margin-bottom: 6px; }
.im-label svg { width: 13px; height: 13px; flex: 0 0 auto; }
.im-label.lb-alert { color: #D97706; }
.im-label.lb-rec { color: var(--green); }
.im-rec .im-bub { border-color: rgba(22,163,74,.4); }
.im-rec .im-txt { color: #86efac; }
.im-bars { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.im-bar { display: flex; align-items: center; gap: 8px; font-size: .72rem; }
.im-bar .bn { width: 46px; flex: 0 0 auto; color: var(--steel); font-family: var(--mono); }
.im-bar .bt { flex: 1; height: 8px; background: rgba(255,255,255,.06); border-radius: 0; overflow: hidden; }
.im-bar .bf { display: block; height: 100%; background: #EF4444; }
.im-bar .bx { width: 26px; flex: 0 0 auto; text-align: right; color: #EF4444; font-family: var(--mono); font-weight: 700; }
.im-user { align-self: flex-end; max-width: 82%; opacity: 0; transform: translateY(8px); transition: opacity .3s ease, transform .3s ease; }
.im-user.show { opacity: 1; transform: none; }
.im-ubub { background: rgba(234,88,12,.16); border: 1px solid rgba(234,88,12,.45); border-radius: 0; padding: 9px 13px; color: #fff; font-size: .9rem; }
.im-typing .im-bub { display: inline-flex; gap: 4px; padding: 14px; }
.im-typing .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--steel); animation: imTyping 1.2s infinite; }
.im-typing .dot:nth-child(2) { animation-delay: .2s; }
.im-typing .dot:nth-child(3) { animation-delay: .4s; }
@keyframes imTyping { 0%, 60%, 100% { opacity: .3; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-3px); } }
.intel-foot { border-top: 1px solid var(--slate); background: #0d111a; padding: 12px 14px; }
.intel-suggest { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.intel-chip { font: inherit; font-size: .78rem; padding: 7px 12px; border: 1px solid var(--slate); background: transparent; color: var(--steel); border-radius: 0; cursor: pointer; transition: color .15s, border-color .15s; }
.intel-chip:hover { color: #fff; border-color: var(--flame); }
.intel-chip:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--flame); }
.intel-box { display: flex; align-items: center; gap: 10px; padding: 11px 14px; border: 1px solid var(--slate); border-radius: 0; background: #11161f; }
.intel-ph { flex: 1; color: var(--concrete); font-size: .88rem; }
.intel-send { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 0; background: var(--flame); display: flex; align-items: center; justify-content: center; color: #fff; }
.intel-send svg { width: 15px; height: 15px; }
@media (prefers-reduced-motion: reduce) { .im, .im-user { transition: none; } .im-typing .dot { animation: none; } }
/* --- MapLibre custom markers (built in haal.js) --- */
.rm-depot { width: 40px; height: 40px; background: #0F172A; border: 2px solid #fff; border-radius: 0; box-shadow: 0 3px 10px rgba(0,0,0,.4); display: flex; align-items: center; justify-content: center; }
.rm-depot svg { width: 18px; height: 18px; fill: #fff; }
.rm-pin { position: relative; width: 30px; height: 30px; cursor: default; filter: drop-shadow(0 2px 3px rgba(0,0,0,.35)); }
.rm-pin svg { width: 100%; height: 100%; display: block; }
.rm-pin .rm-pin-n { position: absolute; top: 5px; left: 0; right: 0; text-align: center; color: #fff; font: 700 11px/1 var(--sans, 'Inter', sans-serif); }
.rm-truck { width: 30px; height: 30px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 2px 9px rgba(0,0,0,.5); display: flex; align-items: center; justify-content: center; }
.rm-truck svg { width: 15px; height: 15px; fill: #fff; }

/* ---- engagement: steps + rollout photo panel ---- */
.engage-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(24px, 4vw, 48px); align-items: stretch; }
@media (max-width: 880px) { .engage-grid { grid-template-columns: 1fr; } }
.engage-photo { position: relative; background: var(--black); overflow: hidden; min-height: 360px; }
.ep-pane { position: absolute; inset: 0; margin: 0; display: none; }
.ep-pane.active { display: block; animation: sdIn .4s ease; }
@media (prefers-reduced-motion: reduce) { .ep-pane.active { animation: none; } }
.ep-pane img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ep-pane figcaption {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: 14px 18px; font-size: .85rem; color: #fff;
  background: linear-gradient(transparent, rgba(12,15,23,.88) 55%);
  display: flex; align-items: baseline; gap: 12px;
}
.ep-pane figcaption .mono { font-size: .64rem; text-transform: uppercase; letter-spacing: .12em; color: var(--flame); flex: none; }
.ep-pane.ep-ph .ph-frame.light { position: absolute; inset: 16px 16px 56px; border-color: var(--slate); }
.ep-pane.ep-ph { background: #11151f; }

/* ---- audit band ---- */
.auditband { position: relative; overflow: hidden; }
.audit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
@media (max-width: 880px) { .audit-grid { grid-template-columns: 1fr; } }
.audit-console .console-feed { min-height: 0; justify-content: flex-start; }
.audit-feed .tag-k { min-width: 74px; text-align: center; }

/* ---- company: founder photo + field-record strip ---- */
.founder-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
@media (max-width: 880px) { .founder-grid { grid-template-columns: 1fr; } }
.founder-shot { position: relative; margin: 0; background: var(--black); overflow: hidden; }
.founder-shot img { width: 100%; height: 100%; max-height: 460px; object-fit: cover; display: block; }
.founder-shot figcaption {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: 14px 18px; font-size: .85rem; color: #fff;
  background: linear-gradient(transparent, rgba(12,15,23,.88) 60%);
  display: flex; align-items: baseline; gap: 12px;
}
.founder-shot figcaption .mono { font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; color: var(--flame); flex: none; }

.fieldband { position: relative; overflow: hidden; }
.field-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
@media (max-width: 860px) { .field-strip { grid-template-columns: 1fr 1fr; } }
.field-strip figure { position: relative; margin: 0; overflow: hidden; border: 1px solid var(--slate); }
.field-strip img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; display: block; filter: saturate(.92); transition: transform .35s ease; }
.field-strip figure:hover img { transform: scale(1.04); }
.field-strip figcaption {
  position: absolute; left: 0; bottom: 0; right: 0;
  padding: 8px 12px; font-size: .64rem; text-transform: uppercase; letter-spacing: .12em; color: #fff;
  background: linear-gradient(transparent, rgba(12,15,23,.85));
}

/* ---- spinning wireframe globe (company footprint) ---- */
.globe-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
@media (max-width: 820px) { .globe-grid { grid-template-columns: 1fr; } .globe-wrap { max-width: 260px; margin: 0 auto; } }
.globe { width: min(300px, 100%); display: block; margin: 0 auto; }
.g-outer { fill: none; stroke: var(--steel); stroke-width: 1.2; }
.g-line { fill: none; stroke: var(--dust); stroke-width: 1; }
.g-dot { fill: var(--flame); }
@media (prefers-reduced-motion: no-preference) {
  .g-mer.m1 { animation: spinMer1 7s linear infinite; }
  .g-mer.m2 { animation: spinMer2 7s linear infinite; }
  .g-dot { animation: dotPulse 2.4s ease-in-out infinite; }
  .g-dot.d2 { animation-delay: .8s; }
  .g-dot.d3 { animation-delay: 1.6s; }
  .g-dot.d4 { animation-delay: 2s; }
}
@keyframes spinMer1 { 0% { rx: 62px; } 25% { rx: 12px; } 50% { rx: 62px; } 75% { rx: 84px; } 100% { rx: 62px; } }
@keyframes spinMer2 { 0% { rx: 30px; } 25% { rx: 78px; } 50% { rx: 30px; } 75% { rx: 8px; } 100% { rx: 30px; } }
@keyframes dotPulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* ════════ ALEX LANDING (umbrella-aligned) ════════ */
/* light hero variant — warm page, engineering grid, no dark band */
.hero--light { background: var(--bg); color: var(--ink); }
.hero--light .hero-bg::before {
  background-image:
    linear-gradient(rgba(120,113,108,.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(120,113,108,.08) 1px, transparent 1px);
}
.hero--light .hero-bg::after { opacity: .5; }
.hero--light h1, .hero--light h2 { color: var(--ink); }
.hero--light .lede { color: #33312e; }
.datastrip--light { color: var(--concrete); border-top-color: var(--line); }
.datastrip--light b { color: var(--ink); font-weight: 600; }

/* hero meet-Alex card */
.meet-card { background: var(--surface); border: 1px solid var(--line); padding: 24px; display: flex; flex-direction: column; gap: 14px; align-self: center; }
.mc-head { font-size: .7rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete); display: flex; align-items: center; gap: 9px; }
.mc-line { margin: 0; font-weight: 600; }
.mc-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; border-top: 1px solid var(--line); padding-top: 14px; }
.mc-stats > div { display: flex; flex-direction: column; gap: 3px; }
.mc-stats .v { font-size: 1.15rem; font-weight: 700; color: var(--ink); }
.mc-stats .k { font-size: .6rem; text-transform: uppercase; letter-spacing: .08em; color: var(--concrete); }

/* brand audio player (restored) */
.player audio { width: 100%; }
.player.enhanced audio { display: none; }
.p-label { display: block; font-size: .64rem; text-transform: uppercase; letter-spacing: .12em; color: var(--flame); margin-bottom: 8px; }
.p-ui { display: flex; align-items: center; gap: 14px; border: 1px solid var(--line); padding: 10px 14px; background: var(--surface); }
.p-btn {
  flex: none; width: 38px; height: 38px; cursor: pointer;
  border: 1.5px solid var(--flame); background: transparent; color: var(--flame);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .8rem; transition: background-color .15s linear, color .15s linear;
}
.p-btn:hover { background: var(--flame); color: #fff; }
.p-btn:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--flame); }
.p-track { flex: 1; height: 3px; background: var(--dust); position: relative; cursor: pointer; }
.p-fill { position: absolute; inset: 0 auto 0 0; width: 0%; background: var(--flame); }
.p-time { font-family: var(--mono); font-size: .7rem; color: var(--concrete); letter-spacing: .04em; flex: none; }
.section--dark .p-ui { background: #11151f; border-color: var(--slate); }
.section--dark .p-time { color: var(--steel); }

/* cited stat cards */
.scite .sc-big { display: block; font-size: clamp(2rem, 1.5rem + 2vw, 2.8rem); font-weight: 700; color: var(--flame); letter-spacing: -.02em; }
.scite p { margin: 8px 0 12px; }
.scite .sc-src { font-size: .64rem; text-transform: uppercase; letter-spacing: .1em; color: var(--concrete); }

/* meet-Alex section */
.meet-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(28px, 5vw, 60px); align-items: stretch; }
@media (max-width: 880px) { .meet-grid { grid-template-columns: 1fr; } }
.meet-highlight {
  border-left: 3px solid var(--flame); background: var(--surface);
  padding: 16px 18px; margin: 18px 0; font-size: .98rem; line-height: 1.6;
}
.meet-highlight strong { display: block; margin-bottom: 2px; }
.safety-line { font-size: .85rem; border-top: 1px solid var(--line); padding-top: 14px; }

/* meet visual — the agent panel: video inside, A-bubble, live pill, nameplate
   (the original's meet-visual column, sharp-cornered) */
.meet-visual {
  position: relative; overflow: hidden; isolation: isolate;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px;
  min-height: 440px; padding: 40px 24px 76px;
  background: var(--surface); border: 1px solid var(--line);
}
.meet-visual > video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  z-index: -2; filter: saturate(.9);
}
/* warm veil is a real element — ::before/::after stay reserved for .marked corner-marks */
.mv-overlay {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgba(255,247,237,.5) 0%, rgba(255,255,255,.28) 45%, rgba(255,247,237,.55) 100%);
}
.meet-visual.marked::after { border-color: #fff; opacity: .9; } /* BR mark sits on the dark strip */
.mv-live {
  position: absolute; top: 14px; right: 14px; z-index: 1;
  display: inline-flex; align-items: center; gap: 8px;
  background: rgba(12,15,23,.82); color: #fff; padding: 7px 11px;
  font-size: .62rem; text-transform: uppercase; letter-spacing: .14em;
}
.mv-live .wave { display: inline-flex; align-items: center; gap: 2px; height: 12px; }
.mv-live .wave i { width: 2px; background: var(--flame); animation: mv-wave 1s ease-in-out infinite; }
.mv-live .wave i:nth-child(1) { height: 5px; }
.mv-live .wave i:nth-child(2) { height: 10px; animation-delay: .12s; }
.mv-live .wave i:nth-child(3) { height: 7px;  animation-delay: .24s; }
.mv-live .wave i:nth-child(4) { height: 11px; animation-delay: .06s; }
.mv-live .wave i:nth-child(5) { height: 6px;  animation-delay: .18s; }
@keyframes mv-wave { 0%, 100% { transform: scaleY(.55); } 50% { transform: scaleY(1.25); } }
.mv-bubble {
  position: relative; width: 168px; height: 168px; border-radius: 50%; border: none; cursor: pointer; padding: 0;
  background: linear-gradient(135deg, var(--flame), var(--ember)); color: #fff;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 0 10px rgba(234,88,12,.14), 0 0 0 20px rgba(234,88,12,.06), 0 20px 50px -14px rgba(234,88,12,.5);
  transition: transform .2s ease, box-shadow .2s ease;
}
/* idle "breathing" ring so the panel feels alive without hover */
.mv-bubble::before {
  content: ""; position: absolute; inset: -7px; border-radius: 50%;
  border: 2px solid rgba(234,88,12,.45); animation: mv-pulse 2.6s ease-out infinite; pointer-events: none;
}
@keyframes mv-pulse { 0% { transform: scale(1); opacity: .8; } 70%, 100% { transform: scale(1.22); opacity: 0; } }
.mv-bubble:hover { transform: translateY(-2px) scale(1.02); }
.mv-bubble:focus-visible { outline: 3px solid var(--ink); outline-offset: 4px; }
.mv-bubble .letter { font-size: 5.6rem; font-weight: 800; letter-spacing: -.02em; opacity: .35; transition: opacity .15s linear; }
/* the play affordance is ALWAYS visible at rest — white disc, flame triangle */
.mv-bubble .mv-play {
  position: absolute; width: 58px; height: 58px; padding: 16px 13px 16px 19px;
  border-radius: 50%; background: #fff; color: var(--flame);
  box-shadow: 0 6px 18px rgba(12,15,23,.28); transition: transform .15s ease;
}
.mv-bubble:hover .letter { opacity: .18; }
.mv-bubble:hover .mv-play { transform: scale(1.07); }
.mv-playing { position: absolute; display: none; align-items: center; gap: 4px; }
.mv-playing i { width: 4px; background: #fff; animation: mv-wave .9s ease-in-out infinite; }
.mv-playing i:nth-child(1) { height: 18px; }
.mv-playing i:nth-child(2) { height: 32px; animation-delay: .14s; }
.mv-playing i:nth-child(3) { height: 15px; animation-delay: .28s; }
.mv-playing i:nth-child(4) { height: 27px; animation-delay: .08s; }
.mv-playing i:nth-child(5) { height: 20px; animation-delay: .2s; }
.mv-bubble.playing .letter, .mv-bubble.playing .mv-play { opacity: 0; }
.mv-bubble.playing .mv-playing { display: inline-flex; }
.mv-plate { text-align: center; background: rgba(255,255,255,.88); padding: 12px 26px 13px; border: 1px solid var(--line); }
.mv-plate .nm { display: block; font-size: 1.5rem; font-weight: 800; letter-spacing: -.02em; color: var(--ink); }
.mv-plate .rl { display: block; font-size: .62rem; text-transform: uppercase; letter-spacing: .14em; color: var(--concrete); margin-top: 3px; }
/* reads as the panel's button, not a caption: flame fill like .btn-primary */
.mv-listen {
  position: absolute; left: 0; right: 0; bottom: 0;
  display: flex; align-items: center; justify-content: center; gap: 10px;
  background: var(--flame); color: #fff; padding: 16px;
  font-weight: 700; font-size: .95rem; transition: background .15s linear;
}
.mv-listen svg { color: #fff; flex: none; }
.mv-listen .arr { transition: transform .15s ease; }
.mv-listen:hover { background: var(--ember); color: #fff; }
.mv-listen:hover .arr { transform: translateX(4px); }
/* stat strip reused inside the meet copy column — bottom-balances against the panel */
.meet-grid > div:first-child { display: flex; flex-direction: column; }
.meet-stats { margin-top: 4px; }
.meet-grid .safety-line { margin-top: auto; padding-top: 16px; }

/* job cards */
.job .job-img { margin: -27px -26px 18px; border-bottom: 1px solid var(--line); overflow: hidden; }
.job .job-img img, .job .job-img video { width: 100%; aspect-ratio: 16 / 7; object-fit: cover; display: block; filter: saturate(.92); }
.job-why { font-size: .85rem; color: var(--muted); border-left: 2px solid var(--flame); padding-left: 12px; }

/* try-it: portrait demo short (narrow) + stacked call/book cards (wide) —
   the original's demo-grid proportions */
.try-grid { display: grid; grid-template-columns: minmax(280px, 360px) minmax(0, 1fr); gap: 20px; align-items: stretch; }
@media (max-width: 860px) { .try-grid { grid-template-columns: 1fr; } }
.try-demo { display: flex; flex-direction: column; }
.try-side { display: flex; flex-direction: column; gap: 20px; }
.try-side .callnow { flex: 1; }
.td-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.td-len { font-size: .68rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete); }
.vframe {
  position: relative; display: block; width: 100%; aspect-ratio: 9 / 16; margin-top: 18px;
  border: 1px solid var(--line); background: var(--ink); padding: 0; cursor: pointer; overflow: hidden;
}
.vframe img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform .25s ease, opacity .2s linear; }
.vframe:hover img { transform: scale(1.015); }
.vframe .vf-overlay {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(180deg, rgba(12,15,23,0) 40%, rgba(12,15,23,.35) 100%);
}
.vframe .vf-play {
  width: 72px; height: 72px; padding: 22px 19px 22px 25px; border-radius: 50%;
  background: var(--flame); color: #fff;
  box-shadow: 0 0 0 9px rgba(234,88,12,.22), 0 14px 36px -8px rgba(12,15,23,.5);
  transition: transform .2s ease, background .15s linear;
  /* stays centered: the source thumbnail has a play graphic baked in at center —
     our button must sit exactly over it */
}
.vframe:hover .vf-play { transform: scale(1.06); }
.vframe:focus-visible { outline: 3px solid var(--flame); outline-offset: 3px; }
.vframe .vf-playing { display: none; align-items: center; gap: 4px; width: 72px; height: 72px; padding: 0 18px; border-radius: 50%; background: var(--flame); justify-content: center; }
.vframe .vf-playing i { width: 4px; background: #fff; animation: mv-wave .9s ease-in-out infinite; }
.vframe .vf-playing i:nth-child(1) { height: 14px; }
.vframe .vf-playing i:nth-child(2) { height: 26px; animation-delay: .14s; }
.vframe .vf-playing i:nth-child(3) { height: 12px; animation-delay: .28s; }
.vframe .vf-playing i:nth-child(4) { height: 22px; animation-delay: .08s; }
.vframe .vf-playing i:nth-child(5) { height: 16px; animation-delay: .2s; }
.vframe.playing .vf-play { display: none; }
.vframe.playing .vf-playing { display: inline-flex; }
.book-card .bc-eyebrow { font-size: .64rem; text-transform: uppercase; letter-spacing: .14em; color: var(--concrete); margin: 0 0 8px; }
.book-card .btn { margin-top: 14px; }
.callnow {
  position: relative; overflow: hidden;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px;
  /* lit, not muddy: brightening sweep + white glow top-right (the proven card's energy) */
  background:
    radial-gradient(480px 380px at 82% 6%, rgba(255,255,255,.2), transparent 62%),
    linear-gradient(160deg, #EA580C 0%, #F97316 55%, #F59E0B 130%);
  color: #fff; padding: 40px 24px; text-align: center;
  transition: transform .2s ease, box-shadow .2s ease;
}
.callnow:hover { transform: translateY(-2px); box-shadow: 0 18px 44px rgba(234,88,12,.35); color: #fff; }
.cn-live { font-size: .68rem; text-transform: uppercase; letter-spacing: .12em; display: inline-flex; gap: 8px; align-items: center; opacity: .95; }
.callnow .dot { background: #fff; box-shadow: 0 0 0 4px rgba(255,255,255,.25); }
.cn-number { font-size: clamp(1.8rem, 1rem + 3.2vw, 3.75rem); font-weight: 700; letter-spacing: -.01em; text-shadow: 0 2px 14px rgba(154,52,18,.3); }
.cn-tap {
  display: inline-flex; align-items: center; gap: 9px;
  background: #fff; color: #C2410C; font-weight: 700; padding: 13px 26px;
  box-shadow: 0 8px 22px -6px rgba(124,45,18,.45);
  transition: transform .15s ease;
}
.callnow:hover .cn-tap { transform: scale(1.04); }
.cn-open { font-size: .68rem; text-transform: uppercase; letter-spacing: .12em; opacity: .85; }
.callnow.marked::before { border-color: #fff; opacity: 1; top: 8px; left: 8px; }
.callnow.marked::after { border-color: #fff; opacity: 1; bottom: 8px; right: 8px; }
.callnow .cn-flame { position: absolute; right: -18px; bottom: -30px; width: 250px; opacity: .14; pointer-events: none; }
.callnow > :not(.cn-flame) { position: relative; z-index: 1; }

/* getting started — horizontal step flow (stacks on mobile) */
.sec-start {
  position: relative; overflow: hidden;
  /* faint warm floor so the white step cards register on the white section */
  background: radial-gradient(900px 420px at 50% 100%, rgba(234,88,12,.05), transparent 65%), var(--surface);
}
.sec-start > .wrap { position: relative; z-index: 1; }
/* large muted Haal flame watermark, top-right (matches the original landing page) */
.gs-flame { position: absolute; top: 20px; right: -110px; width: 480px; height: 690px; color: var(--flame); opacity: .08; transform: rotate(-9deg); pointer-events: none; z-index: 0; }
@media (max-width: 760px) { .gs-flame { width: 300px; height: 430px; top: 10px; right: -70px; } }
.gs-flow { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: 14px; align-items: stretch; }
@media (max-width: 920px) {
  .gs-flow { grid-template-columns: 1fr; }
  .gs-arrow { transform: rotate(90deg); justify-self: center; }
}
.gs-step { display: flex; flex-direction: column; padding-top: 22px; box-shadow: 0 14px 34px -18px rgba(12,15,23,.14); }
.gs-num { font-size: .8rem; font-weight: 500; color: var(--flame); letter-spacing: .08em; margin-bottom: 14px; }
.gs-step h3 { font-size: 1.18rem; }
.gs-step p { font-size: .95rem; color: var(--muted); }
.gs-action {
  display: inline-block; margin: 2px 0 14px;
  font-family: var(--mono); font-size: .78rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .08em; color: var(--flame);
  text-decoration: underline; text-underline-offset: 4px; text-decoration-color: rgba(234,88,12,.45);
}
.gs-action:hover { color: var(--ember); text-decoration-color: var(--ember); }
.gs-meta {
  margin-top: auto; padding-top: 12px; border-top: 1px solid var(--line);
  font-size: .64rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete);
}
.gs-arrow { align-self: center; font-size: 2rem; font-weight: 500; color: var(--flame); }
.gs-final { border-color: var(--flame); background: linear-gradient(135deg, rgba(234,88,12,.06), var(--surface)); }
.gs-final.marked::before { width: 13px; height: 13px; background: none; border: 1.5px solid var(--flame); border-right: 0; border-bottom: 0; top: -1px; left: -1px; }
.gs-cta { margin-top: 30px; display: flex; justify-content: center; }

/* press cards */
.press { display: flex; flex-direction: column; }
.press .pr-date { font-size: .64rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete); margin-bottom: 10px; }
.press p { font-size: 1.02rem; line-height: 1.55; }
.press footer { margin-top: auto; padding-top: 12px; font-size: .82rem; color: var(--muted); }
.press footer a { color: var(--ember); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--flame); }

/* what-it-takes equation (ported, sharp) */
.takes-grid { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(32px, 5vw, 64px); align-items: center; }
@media (max-width: 880px) { .takes-grid { grid-template-columns: 1fr; gap: 40px; } }
.takes-copy .sec-head { margin-bottom: 18px; }
.takes-eq { display: flex; flex-direction: column; align-items: stretch; gap: 6px; max-width: 460px; }
@media (max-width: 880px) { .takes-eq { margin: 0 auto; width: 100%; } }
.eq-card {
  display: flex; align-items: center; gap: 18px;
  background: var(--surface); border: 1px solid var(--line); padding: 20px 24px;
}
.eq-icon {
  flex: none; width: 46px; height: 46px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg); color: var(--ink);
}
.eq-icon svg { width: 22px; height: 22px; }
.eq-card strong { display: block; font-size: 1.02rem; font-weight: 700; letter-spacing: -.01em; }
.eq-card .eq-sub { display: block; font-size: .82rem; color: var(--muted); margin-top: 2px; }
.eq-op { font-family: var(--mono); font-size: 1.35rem; font-weight: 600; color: var(--flame); text-align: center; line-height: 1; padding: 2px 0; }
.eq-result { border-color: var(--flame); background: linear-gradient(135deg, rgba(234,88,12,.07), var(--surface)); box-shadow: 0 10px 30px rgba(234,88,12,.12); }
.eq-result .eq-icon { background: var(--flame); color: #fff; }
.eq-result strong { color: var(--flame); }
.eq-coda { margin: 12px 4px 0; font-size: .85rem; line-height: 1.55; color: var(--muted); text-align: center; }

/* getting-started step meta */
.steps .step-meta { display: block; margin-top: 10px; font-size: .64rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete); border-top: 1px solid var(--line); padding-top: 9px; }

/* cases: receipts */
.case-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(20px, 4vw, 44px); align-items: center; }
@media (max-width: 820px) { .case-grid { grid-template-columns: 1fr; } }
.receipt { background: var(--surface); border: 1px solid var(--line); padding: 20px 22px; }
.rc-head { font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; color: var(--flame); margin-bottom: 14px; }
.rc-cal { display: flex; gap: 16px; align-items: flex-start; }
.rc-cal .rc-date { flex: none; text-align: center; border: 1px solid var(--line); padding: 8px 12px; font-size: .66rem; line-height: 1.3; color: var(--concrete); }
.rc-cal .rc-date b { font-size: 1.3rem; color: var(--ink); }
.rc-cal div { display: flex; flex-direction: column; gap: 4px; font-size: .9rem; }
.rc-cal div span { color: var(--muted); font-size: .85rem; }
.rc-ok { color: var(--green) !important; font-size: .68rem !important; text-transform: uppercase; letter-spacing: .08em; }
.rc-sms .rc-who { display: block; font-size: .66rem; text-transform: uppercase; letter-spacing: .1em; color: var(--concrete); margin-bottom: 8px; }
.rc-sms p { margin: 0; background: var(--bg); border-left: 2px solid var(--red); padding: 12px 14px; font-size: .9rem; }
.rc-lead { display: flex; flex-direction: column; gap: 5px; font-size: .9rem; }
.rc-lead span { color: var(--muted); font-size: .85rem; }
.rec-coming { font-size: .72rem; text-transform: uppercase; letter-spacing: .12em; border: 1.5px dashed var(--line); padding: 22px; text-align: center; }

/* let's talk — warm light close: two action cards + the wide framed form
   (the original contact section's hierarchy, sharp-cornered) */
.sec-talk { background: radial-gradient(900px 420px at 50% 0%, rgba(234,88,12,.08), transparent 70%), var(--surface); }
.talk-grid { display: grid; grid-template-columns: 1fr 1fr 1.4fr; gap: 18px; align-items: stretch; }
@media (max-width: 1020px) {
  .talk-grid { grid-template-columns: 1fr 1fr; }
  .talk-grid .formcard { grid-column: 1 / -1; }
}
@media (max-width: 640px) { .talk-grid { grid-template-columns: 1fr; } .talk-grid .formcard { grid-column: auto; } }
.talk-card, a.talk-card { display: flex; flex-direction: column; gap: 12px; } /* a.talk-card beats a.card{display:block} */
.talk-card h3 { margin: 0; }
.talk-card p { color: var(--muted); }
.tc-icon {
  width: 44px; height: 44px; flex: none;
  background: rgba(234,88,12,.1); color: var(--flame);
  display: flex; align-items: center; justify-content: center;
}
.tc-icon svg { width: 20px; height: 20px; }
.tc-actions { display: flex; flex-direction: column; gap: 12px; padding-top: 10px; }
.tc-tel { display: inline-flex; align-items: center; gap: 10px; font-size: 1.3rem; font-weight: 700; color: var(--ink); }
.tc-tel svg { width: 17px; height: 17px; color: var(--flame); flex: none; }
.tc-tel:hover { color: var(--flame); }
.tc-mail { display: inline-flex; align-items: center; gap: 10px; font-size: .88rem; color: var(--muted); }
.tc-mail svg { width: 15px; height: 15px; color: var(--steel); flex: none; }
.tc-mail:hover { color: var(--flame); }
.tc-mail:hover svg { color: var(--flame); }
.tc-foot { margin-top: auto; font-size: .62rem; text-transform: uppercase; letter-spacing: .12em; color: var(--concrete); border-top: 1px solid var(--line); padding-top: 11px; }
a.tc-book { color: var(--ink); }
a.tc-book:hover h3 { color: var(--ember); }
.tc-pill {
  margin-top: auto; align-self: flex-start;
  display: inline-flex; align-items: center; gap: 9px;
  background: var(--ink); color: #fff; font-weight: 600; font-size: .92rem;
  padding: 12px 22px; transition: background .15s linear;
}
.tc-pill .arr { transition: transform .15s ease; }
a.tc-book:hover .tc-pill { background: var(--flame); }
a.tc-book:hover .tc-pill .arr { transform: translateX(3px); }
/* display:contents keeps "(optional)" on the same grid row as the label text */
.formcard label .opt { display: contents; text-transform: none; }
.talk-grid .formcard .form-ok { margin: 20px; }

/* ---- atmospheric section media — faded image/video under an off-white wash
   (the original landing page's depth treatment, brand-aligned: media sits at
   ~50% behind a light gradient; cards/copy stay flat, sharp, opaque) ---- */
.sec-media { position: relative; overflow: hidden; isolation: isolate; }
.sec-bg {
  position: absolute; inset: 0; z-index: -2; pointer-events: none;
  background-size: cover; background-position: center 60%; opacity: .5;
}
.sec-bg video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.9); }
.sec-wash {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,.66) 0%, rgba(255,255,255,.45) 50%, rgba(255,255,255,.7) 100%);
}
.sec-wash--warm { background: linear-gradient(180deg, rgba(255,247,237,.62) 0%, rgba(245,240,235,.5) 50%, rgba(245,240,235,.68) 100%); }
@media (prefers-reduced-motion: reduce) {
  .sec-bg video, .meet-visual > video { display: none; }
  .mv-live .wave i, .mv-playing i, .vframe .vf-playing i { animation: none; }
}

/* breadcrumbs inside the light hero — pull tight to the top, above the grid bg */
.hero--light > .crumbs { position: relative; z-index: 1; padding: 0; margin-top: calc(-1 * clamp(28px, 5vw, 56px)); margin-bottom: clamp(28px, 5vw, 52px); }

/* meet-card video head (hero) — bleeds to the card edge, live chip overlaid */
.meet-card .mc-media { position: relative; margin: -24px -24px 0; border-bottom: 1px solid var(--line); }
.meet-card .mc-media video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; filter: saturate(.92); }
.meet-card .mc-live {
  position: absolute; top: 12px; left: 12px;
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(12,15,23,.78); color: #fff; padding: 6px 10px;
  font-size: .62rem; text-transform: uppercase; letter-spacing: .12em;
}

/* press card head — publication logo + date */
.press .pr-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 12px; }
.press .pr-head .pr-date { margin-bottom: 0; }
.press .pr-logo { height: 30px; width: auto; max-width: 150px; object-fit: contain; object-position: left center; }

/* cited stat — linked source */
a.sc-src { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--steel); }
a.sc-src:hover { color: var(--flame); text-decoration-color: var(--flame); }

/* try-demo thumbnail row */
.try-demo .td-row { display: flex; gap: 16px; align-items: flex-start; margin-bottom: 10px; }
.try-demo .td-thumb { flex: none; width: 72px; height: 72px; object-fit: cover; border: 1px solid var(--line); }
.try-demo .td-row .tag { margin-bottom: 8px; }
.try-demo .td-row h3 { margin-bottom: 0; }

/* lead form — honeypot + inline success */
form .hp { display: none !important; }
.form-ok { border: 1px solid var(--green); background: rgba(22,163,74,.07); padding: 16px 18px; font-size: .95rem; line-height: 1.55; color: var(--ink); }
.form-ok strong { display: block; margin-bottom: 4px; color: var(--green); }
.form-ok a { font-weight: 600; color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }

/* faq — collapsible <details> accordion (no-JS friendly) */
.faq-list { display: grid; gap: 10px; }
details.faq { background: var(--surface); border: 1px solid var(--line); transition: border-color .15s linear; }
details.faq:hover { border-color: var(--steel); }
details.faq[open] { border-color: var(--flame); }
details.faq summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  padding: 19px 22px;
}
details.faq summary::-webkit-details-marker { display: none; }
details.faq summary h3 { font-size: 1.06rem; margin: 0; }
details.faq[open] summary h3 { color: var(--ember); }
/* plus → minus toggle glyph */
.faq-x { position: relative; flex: none; width: 16px; height: 16px; }
.faq-x::before, .faq-x::after {
  content: ""; position: absolute; background: var(--flame); transition: transform .18s ease;
}
.faq-x::before { left: 0; right: 0; top: 7px; height: 2px; }
.faq-x::after { top: 0; bottom: 0; left: 7px; width: 2px; }
details.faq[open] .faq-x::after { transform: scaleY(0); }
.faq-a { padding: 0 22px 20px; }
.faq-a p { margin: 0; color: var(--muted); max-width: 70ch; }
.faq-a strong { color: var(--ink); }

/* ---- hub-and-spoke: systems around the haal core ---- */
.hubspoke {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px;
  margin: 26px 0 30px; border: 1px solid var(--line); background: var(--line);
}
.hs-tile, .hs-hub {
  background: var(--surface); padding: 18px 14px; text-align: center;
  font-size: .74rem; letter-spacing: .04em; color: var(--muted);
  transition: color .3s ease, box-shadow .3s ease;
}
.hs-tile.active { color: var(--ink); box-shadow: inset 0 0 0 1.5px var(--flame); }
.hs-hub {
  background: var(--black); color: #fff; font-weight: 700; font-size: 1.05rem;
  letter-spacing: -.02em; display: flex; align-items: center; justify-content: center;
}
@media (max-width: 600px) { .hubspoke { grid-template-columns: repeat(3, 1fr); } .hs-tile, .hs-hub { padding: 14px 8px; font-size: .66rem; } }

/* ---- merged platform modules ---- */
.module .mod-foot { margin-top: 26px; display: grid; gap: 14px; }
.module .connects { margin-bottom: 0; }
.proofline { font-size: .78rem; letter-spacing: .04em; color: var(--muted); margin: 0; max-width: 60ch; }
