/* Adarify Group. Page layer on top of scrollcraft.css.
   Six colours, one family (Geist, with its mono cut for engagement data).
   Never restyle .sc-stage, .sc-copy or [data-sc-*]: those are the mechanism. */

:root {
  --sc-canvas:     #0b0d10;
  --sc-surface:    #13171c;
  --sc-ink:        #ecebe6;
  --sc-ink-soft:   #a1aab2;
  --sc-accent:     #ff4d36;
  --sc-accent-ink: #0b0d10;
  --sc-font-display: "Geist", system-ui, sans-serif;
  --sc-font-text:    "Geist", system-ui, sans-serif;
  --sc-font-mono:    "Geist Mono", ui-monospace, monospace;
  --sc-shadow-color: 214 30% 3%;
  --bar-h: 4.25rem;
  --ledger-h: 3.5rem;
  --ad-red-dim: color-mix(in oklab, var(--sc-accent) 32%, transparent);
}

body { letter-spacing: 0; line-height: 1.66; }
.sc-display { font-weight: 560; }
.sc-display--xl { line-height: 0.98; }
.sc-body { line-height: 1.68; }
.mono { font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; }
.soft { color: var(--sc-ink-soft); }
.red { color: var(--sc-accent); }
.vh { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.skip {
  position: fixed; left: var(--sc-4); top: calc(-1 * var(--sc-9)); z-index: 200;
  background: var(--sc-ink); color: var(--sc-canvas); padding: var(--sc-3) var(--sc-4);
  border-radius: var(--sc-r-sm); text-decoration: none;
}
.skip:focus { top: var(--sc-4); }

/* ---------------------------------------------------------------- bar -- */
.bar {
  position: fixed; inset: 0 0 auto 0; z-index: var(--sc-z-chrome);
  height: var(--bar-h);
  display: flex; align-items: center; justify-content: space-between; gap: var(--sc-6);
  padding-inline: var(--sc-gutter);
  background: linear-gradient(to bottom, color-mix(in oklab, var(--sc-canvas) 82%, transparent), transparent);
}
.bar__mark { display: flex; align-items: center; gap: var(--sc-3); text-decoration: none; font-weight: 600; font-size: 1.02rem; letter-spacing: -0.01em; white-space: nowrap; }
.bar__mark img { width: 30px; height: 30px; border-radius: 8px; }
.bar__mark span { color: var(--sc-ink-soft); font-weight: 450; }
.bar__nav { display: flex; align-items: center; gap: var(--sc-6); font-size: var(--sc-t-sm); }
.bar__nav a { text-decoration: none; color: var(--sc-ink-soft); padding-block: var(--sc-2); transition: color var(--sc-d-fast) var(--sc-ease-out); }
.bar__nav a:hover, .bar__nav a[aria-current="page"] { color: var(--sc-ink); }
.bar__nav a[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--sc-accent); text-underline-offset: 0.5em; }
.bar__menu { display: none; }

.btn {
  display: inline-flex; align-items: center; gap: var(--sc-3);
  min-height: 2.75rem; padding: 0 var(--sc-5);
  border-radius: var(--sc-r-sm); border: 1px solid var(--sc-accent);
  background: var(--sc-accent); color: var(--sc-accent-ink);
  font-weight: 600; font-size: var(--sc-t-sm); text-decoration: none; white-space: nowrap;
  box-shadow: var(--sc-e1);
  transition: transform var(--sc-d-fast) var(--sc-ease-out), background-color var(--sc-d-fast) var(--sc-ease-out);
}
.btn:hover { background: color-mix(in oklab, var(--sc-accent) 86%, white); }
.btn:active { transform: translateY(1px); }
.btn--ghost { background: transparent; color: var(--sc-ink); border-color: var(--sc-hairline-strong); box-shadow: none; }
.btn--ghost:hover { background: color-mix(in oklab, var(--sc-ink) 8%, transparent); }
.bar .btn { min-height: 2.5rem; }
.btn[disabled] { opacity: 0.55; cursor: progress; }

@media (max-width: 980px) {
  .bar__nav { display: none; }
  .bar__menu {
    display: inline-flex; align-items: center; justify-content: center;
    min-height: 2.75rem; padding: 0 var(--sc-4); border-radius: var(--sc-r-sm);
    border: 1px solid var(--sc-hairline-strong); background: transparent; cursor: pointer;
    font-size: var(--sc-t-sm);
  }
  .bar.is-open .bar__nav {
    display: flex; flex-direction: column; align-items: stretch; gap: 0;
    position: fixed; inset: var(--bar-h) 0 auto 0; padding: var(--sc-4) var(--sc-gutter) var(--sc-6);
    background: var(--sc-canvas); border-bottom: 1px solid var(--sc-hairline);
  }
  .bar.is-open .bar__nav a { padding-block: var(--sc-3); font-size: var(--sc-t-lg); color: var(--sc-ink); }
  .bar.is-open .bar__nav .btn { margin-top: var(--sc-4); justify-content: center; }
}

/* ------------------------------------------------------------- ledger --
   The signature: the visitor's scroll is the engagement clock. Fixed at the
   bottom edge, it is also navigation (each hop jumps to its phase). */
.ledger {
  position: fixed; inset: auto 0 0 0; z-index: var(--sc-z-chrome);
  height: var(--ledger-h);
  display: grid; grid-template-columns: auto auto 1fr; align-items: center; gap: var(--sc-6);
  padding-inline: var(--sc-gutter);
  background: linear-gradient(to top, color-mix(in oklab, var(--sc-canvas) 92%, transparent) 30%, transparent);
  font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--sc-ink-soft);
  transition: opacity var(--sc-d-slow) var(--sc-ease-out), transform var(--sc-d-slow) var(--sc-ease-out);
}
.ledger.is-hidden { opacity: 0; transform: translateY(100%); pointer-events: none; }
.ledger__clock { color: var(--sc-ink); font-variant-numeric: tabular-nums; min-width: 9ch; }
.ledger__access b { font-weight: 500; color: var(--sc-ink); }
.ledger[data-state="owned"] .ledger__access b { color: var(--sc-accent); }
.ledger__hops { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; min-width: 0; }
.ledger__hops li { flex: 1 1 0; display: flex; align-items: center; min-width: 0; }
.ledger__hops li + li::before {
  content: ""; flex: 1 1 auto; height: 1px; margin-inline: var(--sc-2);
  background: var(--sc-hairline-strong);
  background-image: linear-gradient(var(--sc-accent), var(--sc-accent));
  background-repeat: no-repeat; background-size: calc(var(--fill, 0) * 100%) 100%;
}
.ledger__hops a {
  display: inline-flex; align-items: center; gap: var(--sc-2);
  text-decoration: none; white-space: nowrap; color: var(--sc-ink-soft);
  padding-block: var(--sc-2);
  transition: color var(--sc-d-base) var(--sc-ease-out);
}
.ledger__hops a::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%; flex: none;
  border: 1px solid var(--sc-hairline-strong);
  transition: background-color var(--sc-d-base) var(--sc-ease-out), border-color var(--sc-d-base) var(--sc-ease-out);
}
.ledger__hops [data-hop-state="hit"] a { color: var(--sc-ink); }
.ledger__hops [data-hop-state="hit"] a::before { background: var(--sc-accent); border-color: var(--sc-accent); }
.ledger__hops [data-hop-state="closed"] a { color: var(--sc-ink-soft); text-decoration: line-through; text-decoration-color: var(--sc-ink); }
.ledger__hops [data-hop-state="closed"] a::before { background: var(--sc-ink); border-color: var(--sc-ink); }
.ledger__hops [data-hop-state="closed"]::before { background-image: linear-gradient(var(--sc-ink), var(--sc-ink)); }
.ledger__note { display: none; }
@media (max-width: 1180px) {
  .ledger__hops .ledger__name { display: none; }
}
@media (max-width: 640px) {
  .ledger { grid-template-columns: auto 1fr; gap: var(--sc-4); }
  .ledger__hops { grid-column: 1 / -1; display: none; }
  .ledger__access { text-align: right; }
}

/* ------------------------------------------------------- act: outside -- */
.outside .sc-copy { bottom: calc(var(--ledger-h) + clamp(2.5rem, 10vh, 7rem)); }
.outside h1 { max-width: 14ch; }
.outside .sc-body { color: var(--sc-ink); opacity: 0.86; max-width: 40ch; margin-top: var(--sc-5); }
.outside__actions { display: flex; flex-wrap: wrap; gap: var(--sc-4); margin-top: var(--sc-6); }
.rain { position: absolute; inset: -4%; z-index: 2; pointer-events: none; width: 108%; height: 108%; }
.haze {
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(80% 50% at 70% 18%, color-mix(in oklab, #9fb3c8 10%, transparent), transparent 70%);
  mix-blend-mode: screen;
}

/* --------------------------------------------------------- act: recon -- */
.recon { display: grid; place-items: center; background: var(--sc-canvas); }
.recon__grid {
  position: absolute; inset: 0; opacity: 0.5;
  background-image:
    linear-gradient(var(--sc-hairline) 1px, transparent 1px),
    linear-gradient(90deg, var(--sc-hairline) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(60% 55% at 50% 50%, black, transparent);
  transform: scale(calc(1 + var(--sc-p, 0) * 0.08));
}
.recon__line {
  position: absolute; left: var(--sc-gutter); right: var(--sc-gutter); top: 50%;
  translate: 0 -50%;
  font-size: var(--sc-t-3xl); font-weight: 520; line-height: 1.04; letter-spacing: var(--sc-track-tight);
  max-width: 18ch; margin: 0 auto; text-align: left; text-wrap: balance;
}
.recon__line small { display: block; margin-top: var(--sc-5); font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--sc-accent); font-weight: 400; }

/* ------------------------------------------------------ act: foothold -- */
.foothold .sc-copy { bottom: calc(var(--ledger-h) + clamp(2.5rem, 10vh, 7rem)); }
.foothold h2 { max-width: 13ch; margin-left: auto; }
.foothold .sc-body { margin-top: var(--sc-4); margin-left: auto; max-width: 34ch; color: var(--sc-ink); opacity: 0.84; }

/* -------------------------------------------------------- act: domain -- */
.domain { background: #07080a; }
.domain canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.domain__quiet { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; padding: var(--sc-gutter); }
.domain__quiet p { margin: 0; font-size: var(--sc-t-lg); color: var(--sc-ink-soft); }
.domain__steps { position: absolute; left: var(--sc-gutter); bottom: calc(var(--ledger-h) + var(--sc-7)); width: min(26rem, 80vw); }
.domain__step { position: absolute; left: 0; bottom: 0; width: 100%; }
.domain__step .mono { color: var(--sc-accent); }
.domain__step p { margin: var(--sc-2) 0 0; font-size: var(--sc-t-lg); line-height: 1.35; }
.domain__flood { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; padding: var(--sc-gutter); pointer-events: none; }
.domain__flood > div { max-width: 52rem; }
.domain__flood h2 { text-shadow: 0 2px 24px rgb(7 8 10 / 0.9); }
.domain__flood p { margin: var(--sc-5) auto 0; max-width: 40ch; color: var(--sc-ink); text-shadow: 0 1px 12px rgb(7 8 10 / 0.95); }
.domain__honest { position: absolute; right: var(--sc-gutter); top: calc(var(--bar-h) + var(--sc-4)); color: var(--sc-ink-soft); }

/* ---------------------------------------------------------- act: dawn -- */
.dawn img.plate { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; }
.dawn figure { position: absolute; inset: 0; margin: 0; }
.dawn .sc-copy { top: calc(var(--bar-h) + clamp(2rem, 8vh, 5rem)); bottom: auto; }
.dawn h2 { max-width: 14ch; }
.dawn .sc-body { color: var(--sc-ink); margin-top: var(--sc-5); max-width: 42ch; }
.dawn .sc-scrim { --sc-scrim-angle: 180deg; }

/* ---------------------------------------------------------- act: scope -- */
.scope { display: flex; align-items: center; }
.scope__rail { gap: clamp(1rem, 2.4vw, 2rem); padding-inline: var(--sc-gutter); align-items: stretch; padding-top: var(--bar-h); }
.scope__lead { flex: 0 0 min(30rem, 80vw); align-self: center; padding-right: var(--sc-7); }
.scope__lead .sc-body { margin-top: var(--sc-5); }
.svc { flex: 0 0 clamp(15rem, 23vw, 21rem); display: flex; flex-direction: column; text-decoration: none; }
.svc figure { margin: 0; aspect-ratio: 3 / 4; overflow: hidden; border-radius: var(--sc-r-md); box-shadow: var(--sc-e2), var(--sc-edge); background: var(--sc-surface); }
.svc img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms var(--sc-ease-out); }
.svc h3 { margin: var(--sc-4) 0 0; font-size: var(--sc-t-xl); font-weight: 560; letter-spacing: var(--sc-track-snug); line-height: 1.1; }
.svc p { margin: var(--sc-2) 0 0; color: var(--sc-ink-soft); font-size: var(--sc-t-sm); line-height: 1.55; max-width: 32ch; }
@media (hover: hover) and (pointer: fine) { .svc:hover img { transform: scale(1.035); } }
.scope__end { flex: 0 0 min(22rem, 76vw); align-self: center; padding-left: var(--sc-6); }
.scope__end p { margin: 0 0 var(--sc-5); font-size: var(--sc-t-lg); line-height: 1.4; }
@media (prefers-reduced-motion: no-preference) {
  .svc { opacity: calc(0.55 + 0.45 * min(1, max(0, (var(--sc-p, 0) * 7 - var(--i, 0) + 1)))); }
}

/* ---------------------------------------------------------- act: proof -- */
.proof { padding-block: clamp(4rem, 8vw, 8rem); }
.proof__grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(2.5rem, 6vw, 6rem); align-items: start; }
.proof__figure { display: flex; align-items: baseline; gap: var(--sc-4); border-top: 1px solid var(--sc-hairline); padding-top: var(--sc-5); margin-top: var(--sc-7); }
.proof__figure:first-of-type { margin-top: var(--sc-8); }
.proof__figure b { font-size: var(--sc-t-4xl); font-weight: 520; letter-spacing: var(--sc-track-tight); line-height: 0.9; }
.proof__figure span { color: var(--sc-ink-soft); max-width: 22ch; line-height: 1.45; }
.creds { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--sc-hairline); }
.creds li { display: grid; grid-template-columns: 2.25rem 5.5rem 1fr; align-items: center; gap: var(--sc-4); padding-block: var(--sc-3); border-bottom: 1px solid var(--sc-hairline); }
.creds img { width: 28px; height: 28px; object-fit: contain; border-radius: 6px; background: #f2f1ec; padding: 3px; }
.creds b { font-family: var(--sc-font-mono); font-weight: 500; font-size: var(--sc-t-sm); letter-spacing: 0.04em; }
.creds span { color: var(--sc-ink-soft); font-size: var(--sc-t-sm); line-height: 1.4; }
.proof__more { display: flex; gap: var(--sc-6); flex-wrap: wrap; margin-top: var(--sc-6); }
.link { color: var(--sc-ink); text-decoration: underline; text-decoration-color: var(--sc-accent); text-underline-offset: 0.35em; }
.link:hover { text-decoration-thickness: 2px; }
@media (max-width: 860px) {
  .proof__grid { grid-template-columns: 1fr; }
}

/* -------------------------------------------------------- act: debrief -- */
.debrief { display: grid; grid-template-rows: 1fr auto; background: var(--sc-canvas); }
.debrief__inner { align-self: center; padding: calc(var(--bar-h) + var(--sc-6)) var(--sc-gutter) var(--sc-6); max-width: var(--sc-maxw); width: 100%; margin-inline: auto; display: grid; grid-template-columns: 1.2fr 1fr; gap: clamp(2rem, 6vw, 6rem); align-items: end; }
.debrief__status { font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--sc-ink-soft); display: grid; gap: var(--sc-2); }
.debrief__status b { color: var(--sc-ink); font-weight: 500; }
.debrief h2 { margin-top: var(--sc-5); }
.debrief__ask p { margin: 0 0 var(--sc-6); color: var(--sc-ink-soft); max-width: 40ch; }
@media (max-width: 860px) { .debrief__inner { grid-template-columns: 1fr; align-items: start; } }

/* --------------------------------------------------------------- foot -- */
.foot {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--sc-4);
  padding: var(--sc-5) var(--sc-gutter) calc(var(--ledger-h) + var(--sc-4));
  border-top: 1px solid var(--sc-hairline);
  font-size: var(--sc-t-xs); color: var(--sc-ink-soft);
}
.foot nav { display: flex; flex-wrap: wrap; gap: var(--sc-5); }
.foot a { text-decoration: none; }
.foot a:hover { color: var(--sc-ink); }
body:not(.has-ledger) .foot { padding-bottom: var(--sc-5); }

/* ========================================================= inner pages == */
.page { padding-top: calc(var(--bar-h) + clamp(3rem, 8vw, 7rem)); }
.page-head { padding-bottom: clamp(3rem, 7vw, 6rem); }
.page-head h1 { max-width: 16ch; }
.page-head .sc-lede { margin-top: var(--sc-6); color: var(--sc-ink-soft); }
.page-hero { position: relative; height: min(78vh, 52rem); overflow: hidden; }
.page-hero img { width: 100%; height: 100%; object-fit: cover; max-width: none; }
.page-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, var(--sc-canvas), transparent 55%); }

.svc-detail { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 6vw, 6rem); padding-block: clamp(3.5rem, 7vw, 7rem); border-top: 1px solid var(--sc-hairline); align-items: start; }
.svc-detail:nth-of-type(even) figure { order: 2; }
.svc-detail figure { margin: 0; aspect-ratio: 3 / 4; border-radius: var(--sc-r-md); overflow: hidden; position: sticky; top: calc(var(--bar-h) + var(--sc-5)); box-shadow: var(--sc-e2); }
.svc-detail figure img { width: 100%; height: 100%; object-fit: cover; }
.svc-detail h2 { font-size: var(--sc-t-2xl); }
.svc-detail .sc-lede { margin-top: var(--sc-5); }
.facts { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sc-6) var(--sc-7); margin-top: var(--sc-7); }
.facts h3 { margin: 0 0 var(--sc-3); font-family: var(--sc-font-mono); font-weight: 400; font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--sc-accent); }
.facts ul { margin: 0; padding: 0; list-style: none; }
.facts li { padding-block: var(--sc-2); border-bottom: 1px solid var(--sc-hairline); color: var(--sc-ink-soft); font-size: var(--sc-t-sm); line-height: 1.5; }
@media (max-width: 860px) {
  .svc-detail, .facts { grid-template-columns: 1fr; }
  .svc-detail figure { position: relative; top: 0; aspect-ratio: 4 / 3; order: 0 !important; }
}

/* approach: phases as a pinned sequence */
.phases__stage { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; padding: calc(var(--bar-h) + var(--sc-6)) var(--sc-gutter) var(--sc-7); max-width: var(--sc-maxw); margin-inline: auto; height: 100%; }
.phases__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sc-2); }
.phases__list li { font-size: var(--sc-t-xl); font-weight: 520; letter-spacing: var(--sc-track-snug); color: color-mix(in oklab, var(--sc-ink) 34%, transparent); transition: color var(--sc-d-base) var(--sc-ease-out); }
.phases__list li.is-on { color: var(--sc-ink); }
.phases__list li.is-on::before { content: ""; display: inline-block; width: 0.42em; height: 0.42em; border-radius: 50%; background: var(--sc-accent); margin-right: 0.45em; vertical-align: 0.14em; }
.phases__body { position: relative; min-height: 22rem; }
.phase { position: absolute; inset: 0 0 auto 0; }
.phase h2 { font-size: var(--sc-t-2xl); }
.phase p { margin-top: var(--sc-5); }
.phase ul { margin: var(--sc-5) 0 0; padding-left: 1.1em; color: var(--sc-ink-soft); }
.phase li + li { margin-top: var(--sc-2); }
@media (max-width: 860px) {
  .phases__stage { grid-template-columns: 1fr; align-content: start; }
  .phases__list { grid-auto-flow: column; overflow-x: auto; gap: var(--sc-5); }
  .phases__list li { font-size: var(--sc-t-base); white-space: nowrap; }
}

.faq { border-top: 1px solid var(--sc-hairline); }
.faq details { border-bottom: 1px solid var(--sc-hairline); }
.faq summary { cursor: pointer; list-style: none; padding: var(--sc-5) 0; font-size: var(--sc-t-lg); font-weight: 520; display: flex; justify-content: space-between; gap: var(--sc-5); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: var(--sc-accent); font-weight: 400; transition: transform var(--sc-d-fast) var(--sc-ease-out); }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details p { margin: 0 0 var(--sc-5); max-width: var(--sc-measure); color: var(--sc-ink-soft); }

/* research archive */
.archive { border-top: 1px solid var(--sc-hairline); }
.archive__head { display: flex; justify-content: space-between; gap: var(--sc-4); padding-block: var(--sc-4); color: var(--sc-ink-soft); }
.advisory { display: grid; grid-template-columns: 3rem minmax(12rem, 16rem) 1fr auto; gap: var(--sc-5); align-items: baseline; padding-block: var(--sc-5); border-top: 1px solid var(--sc-hairline); }
.advisory__id { font-family: var(--sc-font-mono); font-size: var(--sc-t-sm); color: var(--sc-ink); }
.advisory h3 { margin: 0; font-size: var(--sc-t-lg); font-weight: 500; line-height: 1.35; }
.advisory__state { color: var(--sc-ink-soft); }
.advisory--cve .advisory__id { color: var(--sc-ink-soft); }
@media (max-width: 760px) { .advisory { grid-template-columns: 2.5rem 1fr; } .advisory h3, .advisory__state { grid-column: 2; } }

.disclose { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sc-6); margin-top: var(--sc-7); }
.disclose div { border-top: 1px solid var(--sc-hairline-strong); padding-top: var(--sc-4); }
.disclose h3 { margin: var(--sc-2) 0 var(--sc-3); font-size: var(--sc-t-lg); font-weight: 540; }
.disclose p { margin: 0; color: var(--sc-ink-soft); font-size: var(--sc-t-sm); }
@media (max-width: 860px) { .disclose { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .disclose { grid-template-columns: 1fr; } }

/* credentials page */
.cred-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--sc-hairline); }
.cred-list li { display: grid; grid-template-columns: 3.5rem 7rem 1fr auto; gap: var(--sc-5); align-items: center; padding-block: var(--sc-5); border-bottom: 1px solid var(--sc-hairline); }
.cred-list img { width: 40px; height: 40px; object-fit: contain; border-radius: 8px; background: #f2f1ec; padding: 5px; }
.cred-list b { font-family: var(--sc-font-mono); font-weight: 500; font-size: var(--sc-t-base); }
.cred-list h3 { margin: 0; font-size: var(--sc-t-lg); font-weight: 500; line-height: 1.3; }
.cred-list h3 small { display: block; margin-top: var(--sc-1); color: var(--sc-ink-soft); font-size: var(--sc-t-sm); font-weight: 400; }
.cred-list a { white-space: nowrap; color: var(--sc-ink-soft); font-size: var(--sc-t-sm); }
.cred-group { margin-top: clamp(3rem, 6vw, 5rem); }
.cred-group:first-of-type { margin-top: 0; }
.cred-group > .mono { display: block; color: var(--sc-accent); margin-bottom: var(--sc-4); }
@media (max-width: 760px) { .cred-list li { grid-template-columns: 3rem 1fr; } .cred-list h3, .cred-list a { grid-column: 2; } }
.note { color: var(--sc-ink-soft); font-size: var(--sc-t-sm); max-width: var(--sc-measure); margin-top: var(--sc-6); }

/* contact */
.contact { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2.5rem, 7vw, 7rem); align-items: start; }
.contact__steps { list-style: none; padding: 0; margin: var(--sc-7) 0 0; counter-reset: s; border-top: 1px solid var(--sc-hairline); }
.contact__steps li { counter-increment: s; padding: var(--sc-4) 0; border-bottom: 1px solid var(--sc-hairline); display: grid; grid-template-columns: 2rem 1fr; gap: var(--sc-3); color: var(--sc-ink-soft); }
.contact__steps li::before { content: counter(s); font-family: var(--sc-font-mono); color: var(--sc-accent); }
.contact__steps b { color: var(--sc-ink); font-weight: 520; display: block; }
.form { display: grid; gap: var(--sc-5); padding: clamp(1.5rem, 3vw, 2.5rem); background: var(--sc-surface); border-radius: var(--sc-r-lg); box-shadow: var(--sc-e3), var(--sc-edge); }
.field { display: grid; gap: var(--sc-2); }
.field label, .field legend { font-size: var(--sc-t-sm); color: var(--sc-ink); }
.field input, .field textarea, .field select {
  width: 100%; min-height: 2.9rem; padding: var(--sc-3) var(--sc-4);
  border-radius: var(--sc-r-sm); border: 1px solid var(--sc-hairline-strong);
  background: color-mix(in oklab, var(--sc-canvas) 70%, var(--sc-surface));
  transition: border-color var(--sc-d-fast) var(--sc-ease-out);
}
.field textarea { min-height: 9rem; resize: vertical; }
.field input:hover, .field textarea:hover, .field select:hover { border-color: color-mix(in oklab, var(--sc-ink) 40%, transparent); }
.field input:focus-visible, .field textarea:focus-visible, .field select:focus-visible { border-color: var(--sc-accent); outline-offset: 1px; }
.field--row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sc-4); }
fieldset.field { border: 0; padding: 0; margin: 0; }
.chips { display: flex; flex-wrap: wrap; gap: var(--sc-2); margin-top: var(--sc-2); }
.chips label { display: inline-flex; align-items: center; gap: var(--sc-2); min-height: 2.5rem; padding: 0 var(--sc-4); border: 1px solid var(--sc-hairline-strong); border-radius: var(--sc-r-sm); cursor: pointer; font-size: var(--sc-t-sm); color: var(--sc-ink-soft); transition: border-color var(--sc-d-fast) var(--sc-ease-out), color var(--sc-d-fast) var(--sc-ease-out); }
.chips input { width: 1rem; height: 1rem; margin: 0; }
.chips label:has(input:checked) { border-color: var(--sc-accent); color: var(--sc-ink); }
.chips label:has(input:focus-visible) { outline: 2px solid var(--sc-accent); outline-offset: 2px; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form__note { font-size: var(--sc-t-xs); color: var(--sc-ink-soft); margin: 0; }
.form__status { margin: 0; min-height: 1.5em; font-size: var(--sc-t-sm); }
.form__status.is-ok { color: var(--sc-ink); }
.form__status.is-err { color: var(--sc-accent); }
@media (max-width: 860px) { .contact, .field--row { grid-template-columns: 1fr; } }

.prose { max-width: var(--sc-measure); }
.prose h2 { font-size: var(--sc-t-xl); margin: var(--sc-8) 0 var(--sc-3); font-weight: 560; letter-spacing: var(--sc-track-snug); }
.prose h2:first-child { margin-top: 0; }
.prose p { color: var(--sc-ink-soft); margin: 0 0 var(--sc-4); }

.cta-band { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: var(--sc-6); padding-block: clamp(4rem, 9vw, 8rem); border-top: 1px solid var(--sc-hairline); }
.cta-band h2 { max-width: 14ch; }

/* ------------------------------------------------------------- mobile -- */
@media (max-width: 700px) {
  .sc-display--xl { font-size: var(--sc-t-2xl); line-height: 1.02; }
  .sc-display--lg { font-size: clamp(2rem, 1.5rem + 2.4vw, 2.6rem); line-height: 1.04; }
  .recon__line { font-size: clamp(1.9rem, 1.4rem + 2.8vw, 2.5rem); }
  .foothold h2, .foothold .sc-body { margin-left: 0; }
  .domain__honest { left: var(--sc-gutter); right: auto; }
  .scope__lead { padding-right: var(--sc-4); }
}
@media (max-width: 380px) {
  .bar .btn { padding-inline: var(--sc-3); }
}

/* Portrait art direction: keep the subject of each 16:9 plate in frame
   instead of the centre crop. */
@media (max-width: 860px) {
  .outside :is(video, .sc-stage__poster) { object-position: 66% 50%; }
  .foothold :is(video, .sc-stage__poster) { object-position: 72% 50%; }
  .dawn img.plate { object-position: 64% 50%; }
}

/* dawn: density only behind the copy, top left, over the brightest sky */
.dawn__scrim {
  background: radial-gradient(74% 66% at 18% 22%,
    color-mix(in oklab, var(--sc-canvas) 92%, transparent) 0%,
    color-mix(in oklab, var(--sc-canvas) 74%, transparent) 45%,
    transparent 78%);
}

/* receive */
.receive__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2.5rem, 6vw, 6rem); align-items: start; }
.receive__list { margin: 0; border-top: 1px solid var(--sc-hairline); }
.receive__list > div { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: var(--sc-5); padding-block: var(--sc-5); border-bottom: 1px solid var(--sc-hairline); }
.receive__list dt { font-size: var(--sc-t-lg); font-weight: 540; line-height: 1.3; letter-spacing: var(--sc-track-snug); }
.receive__list dd { margin: 0; color: var(--sc-ink-soft); font-size: var(--sc-t-sm); line-height: 1.6; }
@media (max-width: 860px) {
  .receive__grid, .receive__list > div { grid-template-columns: 1fr; }
  .receive__list > div { gap: var(--sc-2); }
}

.bar__nav .btn, .bar__nav .btn:hover { color: var(--sc-accent-ink); }

@media (max-width: 860px) {
  .outside .sc-scrim--lead {
    background: linear-gradient(to top,
      color-mix(in oklab, var(--sc-canvas) 96%, transparent) 0%,
      color-mix(in oklab, var(--sc-canvas) 86%, transparent) 34%,
      color-mix(in oklab, var(--sc-canvas) 40%, transparent) 58%,
      transparent 74%);
  }
}

/* services hero + index */
.svc-hero { background: var(--sc-canvas); }
.svc-hero__plate { position: absolute; right: 0; top: -6%; height: 112%; width: min(62vw, 58rem); max-width: none; object-fit: cover; mask-image: linear-gradient(to right, transparent, black 40%); }
.svc-hero .sc-copy { bottom: clamp(3rem, 14vh, 9rem); }
.svc-hero h1 { max-width: 12ch; }
.svc-hero .sc-body { margin-top: var(--sc-5); color: var(--sc-ink); opacity: 0.86; max-width: 42ch; }
.svc-index { display: flex; flex-wrap: wrap; gap: var(--sc-2) var(--sc-5); padding-block: var(--sc-6); font-size: var(--sc-t-sm); }
.svc-index a { color: var(--sc-ink-soft); text-decoration: none; }
.svc-index a:hover { color: var(--sc-ink); }
.svc-detail { scroll-margin-top: var(--bar-h); }
@media (max-width: 860px) { .svc-hero__plate { width: 100vw; opacity: 0.55; mask-image: linear-gradient(to bottom, black 30%, transparent 85%); } }

/* ------------------------------------------------- lockup (new mark) -- */
.bar__mark { gap: var(--sc-3); }
.bar__logo { width: 30px; height: 30px; color: var(--sc-ink); flex: none; overflow: visible; }
.bar__apex { fill: var(--sc-accent); }
.bar__word { font-weight: 640; font-size: 0.98rem; letter-spacing: 0.2em; text-transform: uppercase; }
.bar__tag {
  font-family: var(--sc-font-mono); font-size: 0.68rem; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--sc-ink-soft); font-weight: 400;
  padding-left: var(--sc-3); border-left: 1px solid var(--sc-hairline-strong);
}
@media (prefers-reduced-motion: no-preference) {
  .bar__apex { transform-origin: 32px 13px; transition: transform var(--sc-d-base) var(--sc-ease-out); }
  .bar__mark:hover .bar__apex { transform: scale(1.25); }
}
@media (max-width: 1100px) { .bar__tag { display: none; } }

.page--plain { padding-bottom: var(--sc-section); }
.page--min { min-height: 70vh; }
.cta-band__act { margin-top: var(--sc-5); }
section[data-tight] { padding-bottom: 0; }

/* ---------------------------------------------------------- act: bsr --
   Six silos travel inward on --sc-p and resolve inside one boundary. */
.bsr { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); align-items: center; gap: clamp(2rem, 5vw, 5rem); padding: var(--bar-h) var(--sc-gutter) var(--ledger-h); max-width: var(--sc-maxw); margin-inline: auto; background: var(--sc-canvas);
  --k: clamp(0, calc((var(--sc-p, 0) - 0.12) / 0.5), 1); }
.bsr__copy { position: relative; min-height: 24rem; }
.bsr__state { position: absolute; inset: 50% 0 auto 0; translate: 0 -50%; }
.bsr__state h2 { max-width: 13ch; }
.bsr__state .sc-body { margin: var(--sc-5) 0 var(--sc-5); max-width: 44ch; }
.bsr__state .mono { display: block; margin-bottom: var(--sc-4); }
.bsr__map { position: relative; aspect-ratio: 1; width: min(100%, 34rem); justify-self: center; }
.bsr__lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.bsr__lines path { fill: none; stroke: var(--sc-accent); stroke-width: 0.35; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: calc(1 - var(--k)); opacity: calc(0.2 + var(--k) * 0.6); }
.bsr__ring { position: absolute; inset: 4%; border-radius: 50%; border: 1px dashed var(--sc-hairline-strong); opacity: var(--k); transform: scale(calc(1.25 - var(--k) * 0.25)); }
.bsr__node {
  position: absolute; left: 50%; top: 50%;
  font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap;
  padding: var(--sc-2) var(--sc-3); border-radius: var(--sc-r-sm);
  background: var(--sc-surface); box-shadow: var(--sc-e1), var(--sc-edge);
  border: 1px dashed color-mix(in oklab, var(--sc-ink) calc(30% - var(--k) * 18%), transparent);
  translate: -50% -50%;
  transform: translate(calc(var(--x0) * (1 - var(--k)) + var(--x1) * var(--k)), calc(var(--y0) * (1 - var(--k)) + var(--y1) * var(--k)));
}
.bsr__node[data-n="1"] { --x0: -230%; --y0: -420%; --x1: -120%; --y1: -250%; }
.bsr__node[data-n="2"] { --x0: 250%;  --y0: -440%; --x1: 135%;  --y1: -250%; }
.bsr__node[data-n="3"] { --x0: -330%; --y0: 30%;   --x1: -190%; --y1: 0%; }
.bsr__node[data-n="4"] { --x0: 330%;  --y0: -10%;  --x1: 175%;  --y1: 0%; }
.bsr__node[data-n="5"] { --x0: -250%; --y0: 440%;  --x1: -125%; --y1: 250%; }
.bsr__node[data-n="6"] { --x0: 200%;  --y0: 430%;  --x1: 100%;  --y1: 250%; }
.bsr__core {
  position: absolute; left: 50%; top: 50%; translate: -50% -50%;
  width: 5.5rem; height: 5.5rem; border-radius: 50%; display: grid; place-items: center;
  font-weight: 640; letter-spacing: 0.14em; font-size: var(--sc-t-lg);
  background: var(--sc-accent); color: var(--sc-accent-ink);
  box-shadow: 0 10px 30px rgb(0 0 0 / 0.45);
  opacity: var(--k); transform: scale(calc(0.6 + var(--k) * 0.4));
}
@media (max-width: 860px) {
  .bsr { grid-template-columns: 1fr; grid-template-rows: auto 1fr; align-content: start; padding-top: calc(var(--bar-h) + var(--sc-4)); gap: var(--sc-4); }
  .bsr__copy { min-height: 19rem; }
  .bsr__state { inset: 0 0 auto 0; translate: none; }
  .bsr__map { width: min(78vw, 20rem); align-self: start; }
  .bsr__core { width: 4rem; height: 4rem; font-size: var(--sc-t-base); }
}
@media (prefers-reduced-motion: reduce) { .bsr { --k: 1; } }

.proof__figure--text b { font-size: var(--sc-t-2xl); line-height: 1; white-space: nowrap; }
.bsr { overflow: clip; }

/* services: BSR feature */
.bsr-feature { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 6vw, 6rem); padding: clamp(3rem, 6vw, 5rem); margin-block: clamp(2rem, 5vw, 4rem); border-radius: var(--sc-r-lg); background: var(--sc-surface); box-shadow: var(--sc-e3), var(--sc-edge); scroll-margin-top: calc(var(--bar-h) + var(--sc-4)); }
.bsr-feature h2 { font-size: var(--sc-t-2xl); }
.bsr-feature .mono { display: block; margin-bottom: var(--sc-4); }
.bsr-feature .sc-lede { margin-top: var(--sc-5); }
.bsr-feature .btn { margin-top: var(--sc-6); }
@media (max-width: 860px) { .bsr-feature { grid-template-columns: 1fr; padding: var(--sc-6); } }

/* ===================================================== round two ====== */

/* recon: one ambient loop per finding, crossfading under the lines */
.recon { place-items: stretch; }
.recon__grid { display: none; }
.recon__media { position: absolute; inset: 0; z-index: 0; }
.recon__shot { position: absolute; inset: 0; margin: 0; opacity: 0; transition: opacity 700ms var(--sc-ease-out); }
.recon__shot.is-on { opacity: 1; }
.recon__shot :is(img, video) { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; transform: scale(calc(1.04 + var(--sc-p, 0) * 0.06)); }
.recon__shot video { opacity: 0; transition: opacity 500ms var(--sc-ease-out); }
.recon__shot video.is-playing { opacity: 1; }
.recon__scrim {
  z-index: 1;
  background:
    linear-gradient(to right, color-mix(in oklab, var(--sc-canvas) 88%, transparent) 0%, color-mix(in oklab, var(--sc-canvas) 55%, transparent) 42%, transparent 70%),
    linear-gradient(to top, color-mix(in oklab, var(--sc-canvas) 70%, transparent), transparent 35%);
}
.recon__line { z-index: 2; max-width: 16ch; }
.recon__line--end { font-size: var(--sc-t-4xl); }
@media (max-width: 860px) {
  .recon__shot :is(img, video) { object-position: 70% 50%; }
  .recon__scrim { background: linear-gradient(to top, color-mix(in oklab, var(--sc-canvas) 94%, transparent) 0%, color-mix(in oklab, var(--sc-canvas) 70%, transparent) 50%, color-mix(in oklab, var(--sc-canvas) 30%, transparent) 100%); }
  .recon__line { top: auto; bottom: calc(var(--ledger-h) + var(--sc-7)); translate: none; }
  .recon__line--end { font-size: var(--sc-t-2xl); }
}

/* receive: sample finding sheet */
.receive__grid { align-items: center; }
.receive__list { margin-top: var(--sc-7); }
.finding {
  background: var(--sc-surface); border-radius: var(--sc-r-lg); padding: clamp(1.5rem, 3vw, 2.5rem);
  box-shadow: var(--sc-e3), var(--sc-edge); border: 1px solid var(--sc-hairline);
  font-size: var(--sc-t-sm);
}
.finding__head { display: flex; justify-content: space-between; align-items: center; gap: var(--sc-4); color: var(--sc-ink-soft); }
.finding__sev { font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; background: var(--sc-accent); color: var(--sc-accent-ink); padding: var(--sc-1) var(--sc-3); border-radius: var(--sc-r-sm); font-weight: 500; white-space: nowrap; }
.finding h3 { margin: var(--sc-5) 0; font-size: var(--sc-t-xl); line-height: 1.2; letter-spacing: var(--sc-track-snug); font-weight: 560; }
.finding__meta { margin: 0; display: grid; gap: var(--sc-4); }
.finding__meta div { display: grid; grid-template-columns: 7.5rem 1fr; gap: var(--sc-4); }
.finding__meta dt { color: var(--sc-ink-soft); font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; padding-top: 0.2em; }
.finding__meta dd { margin: 0; line-height: 1.55; }
.finding__meta dd.mono { text-transform: none; letter-spacing: 0; color: var(--sc-ink); }
.finding__evidence {
  margin: var(--sc-5) 0; padding: var(--sc-4) var(--sc-5); border-radius: var(--sc-r-md);
  background: color-mix(in oklab, var(--sc-canvas) 80%, black); border: 1px solid var(--sc-hairline);
  font-family: var(--sc-font-mono); font-size: 0.78rem; line-height: 1.75; color: var(--sc-ink-soft);
  overflow-x: auto; white-space: pre;
}
.finding__evidence .c { opacity: 0.6; }
.finding__evidence .o { color: var(--sc-ink); }
.finding__evidence .r { color: var(--sc-accent); }
.finding__foot { display: flex; justify-content: space-between; align-items: center; gap: var(--sc-4); margin-top: var(--sc-6); padding-top: var(--sc-4); border-top: 1px solid var(--sc-hairline); }
.finding__closed { font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--sc-ink); }
.finding__closed::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--sc-ink); margin-right: var(--sc-2); }
@media (max-width: 860px) { .finding__meta div { grid-template-columns: 1fr; gap: var(--sc-1); } .receive__list { margin-top: var(--sc-6); } }

/* proof: the boardroom */
.proof { position: relative; padding-block: 0; min-height: 100vh; min-height: 100svh; display: flex; align-items: center; overflow: clip; isolation: isolate; }
.proof__media { position: absolute; inset: 0; z-index: -1; }
.proof__media :is(img, video) { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; }
.proof__media video { opacity: 0; transition: opacity 600ms var(--sc-ease-out); }
.proof__media video.is-playing { opacity: 1; }
.proof__media::after { content: ""; position: absolute; inset: 0;
  background: linear-gradient(to right, var(--sc-canvas) 0%, color-mix(in oklab, var(--sc-canvas) 82%, transparent) 38%, color-mix(in oklab, var(--sc-canvas) 25%, transparent) 75%),
              linear-gradient(to top, var(--sc-canvas) 2%, transparent 40%), linear-gradient(to bottom, var(--sc-canvas) 0%, transparent 18%); }
.proof__inner { padding-block: calc(var(--bar-h) + var(--sc-8)) calc(var(--ledger-h) + var(--sc-8)); }
.proof__copy h2 { max-width: 12ch; }
.proof__copy .sc-body { color: var(--sc-ink); opacity: 0.88; max-width: 46ch; margin-top: var(--sc-5); }
.proof__marks { display: grid; grid-template-columns: repeat(3, max-content); margin-top: var(--sc-8); }
.proof__marks div { padding: 0 clamp(1.25rem, 3vw, 2.5rem); border-left: 1px solid var(--sc-hairline-strong); }
.proof__marks div:first-child { padding-left: 0; border-left: 0; }
.proof__marks b { display: block; font-size: var(--sc-t-3xl); font-weight: 560; letter-spacing: var(--sc-track-tight); line-height: 1; white-space: nowrap; }
.proof__marks span { display: block; margin-top: var(--sc-2); font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--sc-ink-soft); }
.proof__creds { list-style: none; margin: var(--sc-8) 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); max-width: 52rem; border-top: 1px solid var(--sc-hairline); }
.proof__creds li { padding: var(--sc-4) var(--sc-4) var(--sc-4) 0; border-bottom: 1px solid var(--sc-hairline); }
.proof__creds b { display: block; font-family: var(--sc-font-mono); font-weight: 500; font-size: var(--sc-t-base); letter-spacing: 0.04em; }
.proof__creds span { display: block; color: var(--sc-ink-soft); font-size: var(--sc-t-xs); margin-top: var(--sc-1); }
.proof .proof__more { margin-top: var(--sc-6); }
@media (max-width: 860px) {
  .proof__media::after { background: linear-gradient(to top, var(--sc-canvas) 30%, color-mix(in oklab, var(--sc-canvas) 70%, transparent) 70%, color-mix(in oklab, var(--sc-canvas) 40%, transparent)); }
  .proof__marks { grid-template-columns: 1fr 1fr; row-gap: var(--sc-6); }
  .proof__marks div:nth-child(3) { padding-left: 0; border-left: 0; }
  .proof__marks b { font-size: var(--sc-t-2xl); }
  .proof__creds { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ledger: more presence, and an alert every time access changes hands */
.ledger { height: 3.75rem; border-top: 1px solid var(--sc-hairline); background: color-mix(in oklab, var(--sc-canvas) 86%, transparent); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.ledger__progress { position: absolute; left: 0; top: -1px; height: 2px; width: 100%; background: var(--sc-accent); transform-origin: left; transform: scaleX(var(--eng, 0)); transition: transform 300ms var(--sc-ease-out); }
.ledger[data-state="closed"] .ledger__progress { background: var(--sc-ink); }
.ledger__hops a::before { width: 9px; height: 9px; }
.ledger__alert {
  position: absolute; left: var(--sc-gutter); bottom: calc(100% + var(--sc-3));
  display: inline-flex; align-items: center; gap: var(--sc-3);
  padding: var(--sc-2) var(--sc-4); border-radius: var(--sc-r-sm);
  background: var(--sc-accent); color: var(--sc-accent-ink);
  font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.08em; text-transform: uppercase; font-weight: 500;
  box-shadow: 0 8px 24px rgb(0 0 0 / 0.45);
  opacity: 0; transform: translateY(8px); pointer-events: none;
  transition: opacity 220ms var(--sc-ease-out), transform 220ms var(--sc-ease-out);
}
.ledger__alert b { font-weight: 700; }
.ledger__alert.is-on { opacity: 1; transform: none; }
.ledger__alert.is-closed { background: var(--sc-ink); color: var(--sc-canvas); }
@media (prefers-reduced-motion: no-preference) {
  .ledger__hops li.is-new a::before { animation: hop-ping 1.4s var(--sc-ease-out) 2; }
  .ledger__hops li.is-new a { animation: hop-flash 1.4s steps(2, jump-none) 2; }
  .ledger.is-flash { animation: ledger-flash 900ms var(--sc-ease-out); }
}
@keyframes hop-ping { 0% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--sc-accent) 80%, transparent); } 100% { box-shadow: 0 0 0 14px transparent; } }
@keyframes hop-flash { 0%, 100% { color: var(--sc-accent); } 50% { color: var(--sc-ink); } }
@keyframes ledger-flash { 0% { background: color-mix(in oklab, var(--sc-accent) 30%, var(--sc-canvas)); } 100% { background: color-mix(in oklab, var(--sc-canvas) 86%, transparent); } }
@media (max-width: 640px) { .ledger__alert { left: 50%; translate: -50% 0; white-space: nowrap; } }

/* approach: header plate and per-phase frames */
.approach-head { position: relative; overflow: clip; isolation: isolate; padding-top: calc(var(--bar-h) + clamp(4rem, 10vw, 9rem)); }
.approach-head__plate { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; object-fit: cover; max-width: none; opacity: 0.55; mask-image: linear-gradient(to left, black 20%, transparent 80%), linear-gradient(to top, transparent, black 40%); mask-composite: intersect; }
.phases__side { display: grid; gap: var(--sc-6); align-content: center; }
.phases__frame { position: relative; aspect-ratio: 16 / 9; border-radius: var(--sc-r-md); overflow: hidden; box-shadow: var(--sc-e2), var(--sc-edge); background: var(--sc-surface); }
.phases__frame figure { position: absolute; inset: 0; margin: 0; opacity: 0; transition: opacity 600ms var(--sc-ease-out); }
.phases__frame figure.is-on { opacity: 1; }
.phases__frame img { width: 100%; height: 100%; object-fit: cover; transform: scale(calc(1.02 + var(--sc-p, 0) * 0.06)); }
.phases__list li { font-size: var(--sc-t-lg); }
@media (max-width: 860px) {
  .phases__side { gap: var(--sc-4); }
  .phases__frame { aspect-ratio: 21 / 9; }
  .phases__body { min-height: 26rem; }
}

.recon__line { margin: 0; right: auto; width: min(44rem, calc(100% - 2 * var(--sc-gutter))); max-width: none; }
.recon__line--end { width: auto; }
@media (min-width: 861px) {
  .recon__scrim {
    background:
      linear-gradient(to right, color-mix(in oklab, var(--sc-canvas) 94%, transparent) 0%, color-mix(in oklab, var(--sc-canvas) 80%, transparent) 38%, color-mix(in oklab, var(--sc-canvas) 30%, transparent) 62%, transparent 80%),
      linear-gradient(to top, color-mix(in oklab, var(--sc-canvas) 70%, transparent), transparent 35%);
  }
}
.contact-plate { position: fixed; inset: 0; z-index: -1; width: 100%; height: 100%; object-fit: cover; max-width: none; opacity: 0.35; mask-image: linear-gradient(to left, black 10%, transparent 70%); pointer-events: none; }
.receive__grid > *, .finding { min-width: 0; }
@media (max-width: 860px) {
  .recon__line { bottom: calc(var(--ledger-h) + 5.5rem); }
  .finding__evidence { font-size: 0.7rem; padding: var(--sc-3) var(--sc-4); }
}

/* sample finding, round three: a full write-up rather than a card */
.receive__grid--top { align-items: start; }
.receive__grid--top > div:first-child { position: sticky; top: calc(var(--bar-h) + var(--sc-6)); }
.finding__summary { margin: 0 0 var(--sc-5); color: var(--sc-ink); line-height: 1.6; }
.finding code { font-family: var(--sc-font-mono); font-size: 0.86em; color: var(--sc-ink); background: color-mix(in oklab, var(--sc-ink) 8%, transparent); padding: 0.05em 0.35em; border-radius: 4px; }
.finding__meta dd.mono { font-size: 0.72rem; word-break: break-all; }
.finding__steps { list-style: none; margin: var(--sc-5) 0; padding: 0; display: grid; gap: var(--sc-4); }
.finding__steps > li > .mono { display: block; color: var(--sc-accent); margin-bottom: var(--sc-2); }
.finding__steps .finding__evidence { margin: 0; }
.finding__evidence code { background: none; padding: 0; color: inherit; font-size: inherit; }
.finding__fix { margin-top: var(--sc-5); padding: var(--sc-4) var(--sc-5); border-radius: var(--sc-r-md); border: 1px solid var(--sc-hairline-strong); }
.finding__fix > .mono { display: block; color: var(--sc-ink-soft); margin-bottom: var(--sc-3); }
.finding__fix ol { margin: 0; padding-left: 1.2em; display: grid; gap: var(--sc-2); line-height: 1.55; }
.finding__fix li::marker { color: var(--sc-accent); font-family: var(--sc-font-mono); }
.finding__foot { flex-wrap: wrap; justify-content: flex-start; gap: var(--sc-3) var(--sc-6); }
.finding__timeline { font-family: var(--sc-font-mono); font-size: var(--sc-t-xs); letter-spacing: 0.04em; text-transform: uppercase; color: var(--sc-ink-soft); }
.finding__timeline b { color: var(--sc-ink); font-weight: 500; }
.finding__foot .finding__closed { margin-left: auto; }
@media (max-width: 860px) {
  .receive__grid--top > div:first-child { position: static; }
  .finding__foot .finding__closed { margin-left: 0; }
}

/* research: the public index is the tip */
.iceberg { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; margin-top: clamp(3rem, 6vw, 5rem); padding: clamp(2rem, 4vw, 3rem); border-radius: var(--sc-r-lg); background: var(--sc-surface); box-shadow: var(--sc-e2), var(--sc-edge); }
.iceberg h2 { font-size: var(--sc-t-2xl); }
.iceberg .mono { display: block; color: var(--sc-accent); margin-bottom: var(--sc-4); }
.iceberg ul { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--sc-hairline); }
.iceberg li { padding: var(--sc-4) 0; border-bottom: 1px solid var(--sc-hairline); color: var(--sc-ink-soft); }
.iceberg li b { display: block; color: var(--sc-ink); font-weight: 540; margin-bottom: var(--sc-1); }
@media (max-width: 860px) { .iceberg { grid-template-columns: 1fr; } }

.finding__steps > li, .finding__meta dd { min-width: 0; }
.proof__creds { display: flex; flex-wrap: wrap; column-gap: clamp(1.5rem, 3vw, 2.75rem); }
.proof__creds li { border-bottom: 0; padding-right: 0; min-width: 6.5rem; }
.proof__creds { max-width: 66rem; }
