/* Datavation site — enterprise data-platform marketing.
   White paper, dark product, Brand Blue. Square corners.
   Craft bar: Databricks + Snowflake. Product at scale, no diagrams. */

@keyframes dv-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

.dv {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  color: var(--fg);
  font-family: var(--sans);
}

.dv-main a { color: var(--link); }
.dv-main a:hover { color: var(--fg); }
.dv a.dv-btn,
.dv-main a.dv-btn { color: var(--fg); }
.dv a.dv-btn--fill,
.dv button.dv-btn--fill,
.dv-main a.dv-btn--fill {
  background: var(--accent);
  border-color: var(--accent);
  color: #0B1220;
}
.dv a.dv-btn--fill:hover,
.dv button.dv-btn--fill:hover,
.dv-main a.dv-btn--fill:hover {
  background: var(--accent-2);
  border-color: var(--accent-2);
  color: #0B1220;
}
.dv a.dv-btn--ghost,
.dv-main a.dv-btn--ghost {
  color: var(--fg);
  border-color: var(--fg);
}
.dv a.dv-btn--ghost:hover,
.dv-main a.dv-btn--ghost:hover {
  background: var(--fg);
  color: var(--bg);
}

.dv-skip {
  position: absolute;
  left: 16px;
  top: -48px;
  z-index: 100;
  background: var(--accent);
  color: #0B1220;
  padding: 8px 14px;
  font-size: 14px;
}
.dv-skip:focus { top: 16px; }

.dv-wrap {
  width: 100%;
  max-width: var(--maxw);
  margin: 0 auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
  box-sizing: border-box;
}

.dv-main { flex: 1; display: flex; flex-direction: column; }

/* Type — Archivo. Headings carry their own weight. No kickers. */
.dv-h1 {
  font-family: var(--display);
  font-weight: 500;
  font-size: clamp(40px, 5.4vw, 68px);
  line-height: 1.08;
  letter-spacing: -0.03em;
  margin: 0;
}
.dv-h1--page {
  font-size: clamp(32px, 4.2vw, 48px);
  max-width: 18ch;
  line-height: 1.18;
  letter-spacing: -0.028em;
}
.dv-h2 {
  font-family: var(--display);
  font-weight: 500;
  font-size: clamp(26px, 3.2vw, 36px);
  line-height: 1.25;
  letter-spacing: -0.025em;
  margin: 0;
}
.dv-lede {
  font-size: 19px;
  color: var(--fg-dim);
  line-height: 1.55;
  margin-top: 20px;
  max-width: 42ch;
  overflow-wrap: break-word;
}
.dv-body {
  font-size: 16px;
  color: var(--fg-dim);
  line-height: 1.65;
  max-width: 52ch;
}
.dv-body strong { color: var(--fg); font-weight: 500; }
.dv-cap {
  font-size: 13px;
  color: var(--fg-mute);
  margin-top: 14px;
}
.dv-text-link {
  display: inline-block;
  margin-top: 22px;
  font-size: 15px;
  font-weight: 500;
  color: var(--fg);
  border-bottom: 1px solid var(--accent);
  padding-bottom: 2px;
}
.dv-text-link:hover { color: var(--link); }

.dv-kicker {
  font-size: 13px;
  color: var(--fg-mute);
  letter-spacing: 0;
  text-transform: none;
}

.dv-hero { padding: 56px var(--gutter) 0; width: 100%; box-sizing: border-box; }
.dv-hero + .dv-layer { padding-top: 40px; }
.dv-section { padding: 96px var(--gutter) 0; width: 100%; box-sizing: border-box; }
.dv-section--tight { padding-top: 64px; }
.dv-section--close { padding: 96px var(--gutter) 120px; }
.dv-section--score { padding: 72px var(--gutter) 120px; }
.dv-section--score .dv-h1,
.dv-section--score .dv-lede,
.dv-section--score .dv-q,
.dv-section--score .dv-opts,
.dv-section--score .dv-score-weights { max-width: 640px; }
.dv-section--gap { padding-top: 24px; }

/* ── Hero: claim + product at scale ── */
/* The graph-paper hairline grid and the blue radial glow are the two
   sanctioned background exceptions (Brand v6.0, see tokens.css). The white
   veil layer fades the grid out toward the page edges so the device holds
   the product shot without gridding the whole viewport. */
.dv-hero-lead {
  padding: 36px var(--gutter) 40px;
  width: 100%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  text-align: left;
  background:
    radial-gradient(1000px 680px at 72% 38%, transparent 30%, var(--bg) 78%),
    repeating-linear-gradient(0deg, var(--line-2) 0 1px, transparent 1px 56px),
    repeating-linear-gradient(90deg, var(--line-2) 0 1px, transparent 1px 56px),
    radial-gradient(760px 500px at 72% 40%, rgba(41, 138, 250, 0.15), transparent 70%),
    var(--bg);
}
.dv-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.18fr);
  gap: 56px;
  align-items: center;
}
.dv-hero__shot,
.dv-shot__frame { min-width: 0; max-width: 100%; }
.dv-hero__copy .dv-h1 {
  max-width: none;
  font-size: clamp(38px, 4.9vw, 68px);
}
.dv-hero__copy .dv-lede { max-width: 38ch; }
.dv-hero__shot .dv-shot__frame {
  position: relative;
  width: 100%;
  box-shadow: 0 24px 60px rgba(11, 18, 32, 0.14);
}
.dv-hero__shot .dv-shot__poster {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.dv-hero__shot .dv-cap { margin-top: 12px; }
.dv-product-frame {
  width: 100%;
  max-width: 1120px;
  margin-top: 40px;
  margin-bottom: 8px;
  text-align: left;
}

/* ── Nav ── */
.dv-nav {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  gap: 32px;
  padding: 14px var(--gutter);
  border-bottom: 1px solid var(--line);
  background: var(--bg);
}
.dv a.dv-nav__logo,
.dv a.dv-nav__logo:hover {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--fg);
  flex: none;
}
.dv-nav__mark { color: var(--accent); flex: none; }
.dv-nav__word {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--fg);
}
.dv-nav__links {
  display: flex;
  gap: 28px;
  font-size: 14px;
  white-space: nowrap;
}
.dv-nav__links a { color: var(--fg-dim); }
.dv-nav__links a:hover,
.dv-nav__links a.is-active { color: var(--fg); }
.dv-nav__links a.is-active { box-shadow: inset 0 -2px 0 var(--accent); }
.dv-nav__spacer { flex: 1; }
.dv-nav__cta { flex: none; }
.dv-nav__note {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--fg-mute);
}
.dv-nav__menu {
  display: none;
  width: 44px;
  height: 44px;
  position: relative;
  color: var(--fg);
}
.dv-nav__menu span {
  position: absolute;
  left: 10px;
  right: 10px;
  height: 1px;
  background: currentColor;
}
.dv-nav__menu span:first-child { top: 15px; }
.dv-nav__menu span:last-child { bottom: 15px; }
.dv-nav__drawer {
  display: none;
  flex-direction: column;
  gap: 18px;
  padding: 8px var(--gutter) 28px;
  border-bottom: 1px solid var(--line);
}
.dv-nav__drawer a { color: var(--fg-dim); font-size: 16px; }

.dv-region {
  display: inline-flex;
  flex: none;
  border: 1px solid var(--line);
  overflow: hidden;
}
.dv-region__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 5px 10px 5px 8px;
  color: var(--fg-mute);
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  text-decoration: none;
}
.dv-region__btn + .dv-region__btn { border-left: 1px solid var(--line); }
.dv a.dv-region__btn { color: var(--fg-mute); }
.dv a.dv-region__btn:hover { color: var(--fg); background: var(--bg-2); }
.dv a.dv-region__btn.is-active {
  background: var(--bg-2);
  color: var(--fg);
}
.dv-region__flag {
  width: 22px;
  height: 11px;
  display: block;
  flex: none;
  outline: 1px solid rgba(11, 18, 32, 0.14);
  outline-offset: -1px;
}
.dv-region__btn:not(.is-active) .dv-region__flag { opacity: 0.55; }
.dv-region__btn:not(.is-active):hover .dv-region__flag { opacity: 0.9; }

.dv-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--accent);
  color: var(--fg);
  min-height: 44px;
  padding: 10px 22px;
  font-size: 14px;
  font-weight: 500;
  font-family: var(--sans);
  background: none;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  border-radius: 0;
  transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
}
.dv-btn:hover { background: var(--accent-dim); color: var(--fg); }
.dv-btn--fill {
  background: var(--accent);
  border-color: var(--accent);
  color: #0B1220;
}
.dv-btn--fill:hover {
  background: var(--accent-2);
  border-color: var(--accent-2);
  color: #0B1220;
}
.dv-btn--lg { padding: 16px 32px; font-size: 16px; min-height: 52px; }
.dv-btn--md { padding: 12px 26px; font-size: 15px; min-height: 48px; }
/* Ink button lives only on the constant-blue Data Score field, so it keeps
   literal ink/paper in both themes. */
.dv-main a.dv-btn--ink {
  background: #0B1220;
  border-color: #0B1220;
  color: #FFFFFF;
}
.dv-main a.dv-btn--ink:hover {
  background: #1B2536;
  border-color: #1B2536;
  color: #FFFFFF;
}
.dv-btn--ghost {
  border-color: var(--fg);
  color: var(--fg);
  background: transparent;
}
.dv-btn--ghost:hover {
  background: var(--fg);
  border-color: var(--fg);
  color: #fff;
}
.dv a.dv-btn--line,
.dv button.dv-btn--line,
.dv-main a.dv-btn--line {
  border-color: var(--accent);
  color: var(--link);
  background: none;
}
.dv a.dv-btn--line:hover,
.dv button.dv-btn--line:hover,
.dv-main a.dv-btn--line:hover {
  background: var(--accent-dim);
  border-color: var(--accent);
  color: var(--link);
}
.dv-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.dv-btn-row { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 28px; }
.dv-btn-row--center { justify-content: center; }

/* ── Agent demo — dark product object ── */
.dv-demo {
  border: 1px solid #1b1f28;
  background: var(--product);
  color: var(--product-fg);
  box-shadow: 0 24px 60px rgba(11, 18, 32, 0.16);
  text-align: left;
}
.dv-demo .dv-demo__label,
.dv-demo .dv-demo__clock,
.dv-demo .dv-demo__meta,
.dv-demo .dv-demo__trace,
.dv-demo .dv-demo__ctrl,
.dv-demo .dv-demo__disclaimer,
.dv-demo .dv-demo__action p { color: var(--product-dim); }
.dv-demo .dv-demo__question,
.dv-demo .dv-demo__answer { color: var(--product-fg); }
.dv-demo .dv-demo__bar,
.dv-demo .dv-demo__q,
.dv-demo .dv-demo__disclaimer { border-color: rgba(255, 255, 255, 0.08); }
.dv-demo .dv-demo__action { border-color: rgba(41, 138, 250, 0.45); }
.dv-demo .dv-demo__ctrl { border-color: rgba(255, 255, 255, 0.14); color: var(--product-dim); }
.dv-demo .dv-demo__ctrl:hover { color: var(--product-fg); }
.dv-demo__bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.dv-demo__live {
  width: 7px;
  height: 7px;
  background: var(--accent);
  animation: dv-blink 2s infinite;
  flex: none;
}
.dv-demo__label,
.dv-demo__clock {
  font-size: 12px;
  letter-spacing: 0;
  color: var(--product-dim);
}
.dv-demo__clock { margin-left: 4px; font-variant-numeric: tabular-nums; }
.dv-demo__controls { display: flex; gap: 8px; margin-left: auto; }
.dv-demo__ctrl {
  font-size: 12px;
  color: var(--product-dim);
  border: 1px solid rgba(255, 255, 255, 0.14);
  padding: 4px 10px;
  min-height: 32px;
  background: none;
  cursor: pointer;
}
.dv-demo__ctrl:hover { color: var(--product-fg); border-color: var(--accent); }
.dv-demo__grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  min-height: min(460px, calc(100vh - 280px));
}
.dv-demo__q {
  padding: 32px 36px;
  border-right: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.dv-demo__a {
  padding: 32px 36px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  justify-content: center;
}
.dv-demo__meta {
  font-size: 12px;
  color: var(--product-mute);
  margin-bottom: 10px;
}
.dv-demo__meta--ans { color: var(--accent); margin-bottom: 12px; }
.dv-demo__question {
  font-size: clamp(17px, 2vw, 22px);
  line-height: 1.45;
  min-height: 64px;
  color: var(--product-fg);
  text-align: left;
}
.dv-demo__caret {
  display: inline-block;
  width: 8px;
  height: 18px;
  background: var(--accent);
  vertical-align: -3px;
  margin-left: 3px;
  animation: dv-blink 1s infinite;
}
.dv-demo__traces { display: flex; flex-direction: column; gap: 8px; }
.dv-demo__trace {
  font-family: var(--mono);
  font-size: 13px;
  color: var(--product-dim);
  display: flex;
  gap: 10px;
  text-align: left;
}
.dv-demo__trace b { color: var(--accent); font-weight: 400; }
.dv-demo__answer { font-size: 17px; line-height: 1.55; color: var(--product-fg); text-align: left; }
.dv-demo__action {
  border: 1px solid rgba(41, 138, 250, 0.45);
  padding: 16px 18px;
  margin-top: 6px;
  text-align: left;
}
.dv-demo__action p { font-size: 14.5px; line-height: 1.5; color: var(--product-dim); }
.dv-demo__sent {
  font-size: 12px;
  color: var(--accent);
  margin-top: 10px;
}
.dv-demo__disclaimer {
  font-size: 12px;
  color: var(--product-mute);
  padding: 10px 20px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  text-align: left;
}

/* ── At-a-glance strip ── */
.dv-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  padding: 28px 0 0;
  margin-top: 40px;
  border-top: 1px solid var(--line);
  width: 100%;
  box-sizing: border-box;
}
.dv-strip > * { min-width: 0; padding-right: 32px; }
.dv-strip > * + * { padding-left: 32px; border-left: 1px solid var(--line); }
.dv-strip__n {
  font-size: clamp(26px, 3vw, 38px);
  letter-spacing: -0.03em;
  font-weight: 500;
}
.dv-strip__n--accent { color: var(--accent); }
.dv-strip__l { margin-top: 8px; font-size: 14px; color: var(--fg-mute); }

/* ── Proof ── */
.dv-proof {
  padding: 88px var(--gutter) 96px;
  background: var(--bg-2);
  text-align: center;
}
.dv-proof__quote {
  font-size: clamp(28px, 4.2vw, 48px);
  line-height: 1.18;
  letter-spacing: -0.03em;
  max-width: 16ch;
  margin: 0 auto;
  font-weight: 500;
}
.dv-proof__attr {
  margin-top: 18px;
  font-size: 14px;
  color: var(--fg-mute);
}
.dv-proof__voice {
  margin: 40px auto 0;
  max-width: 38ch;
  text-align: left;
}
.dv-proof__voice p {
  font-size: 18px;
  line-height: 1.5;
  color: var(--fg);
}
.dv-proof__voice footer {
  margin-top: 14px;
  font-size: 13px;
  color: var(--fg-mute);
}

/* ── Home story: proof + stack ── */
.dv-story {
  display: grid;
  grid-template-columns: minmax(240px, 0.85fr) minmax(0, 1.25fr);
  gap: 56px 72px;
  align-items: start;
  padding: 72px var(--gutter);
  background: var(--bg-2);
  width: 100%;
  box-sizing: border-box;
}
/* Pull stat — the Cox 69% at display scale, restated on a 25-tick graticule
   (4% per tick, nearest tick; the counted figure above is the exact value,
   so the bar stays decorative and honest). */
.dv-pull { min-width: 0; }
.dv-pull__n {
  font-size: clamp(64px, 7.5vw, 96px);
  line-height: 0.95;
  letter-spacing: -0.035em;
  font-weight: 500;
  margin: 0;
  font-variant-numeric: tabular-nums;
}
/* The graticule reads as an instrument: minor ticks every 4%, major ticks
   every 20%, a baseline rule, and a 0–100 axis beneath. */
.dv-scale { margin-top: 20px; max-width: 340px; }
.dv-tickbar {
  display: flex;
  gap: 4px;
  align-items: flex-end;
  border-bottom: 1px solid var(--line);
  padding-bottom: 4px;
}
.dv-tickbar i {
  flex: 1;
  height: 10px;
  background: var(--line-2);
  transition: background 0.3s;
}
.dv-tickbar i:nth-child(5n + 1),
.dv-tickbar i:last-child {
  height: 16px;
  background: var(--line);
}
.dv-tickbar i.is-lit { background: var(--accent); }
.dv-scale__axis {
  display: flex;
  justify-content: space-between;
  margin-top: 6px;
  font-size: 11px;
  line-height: 1;
  color: var(--fg-mute);
  font-variant-numeric: tabular-nums;
}
.dv-scale__axis i { font-style: normal; }
.dv-pull__t {
  margin: 22px 0 0;
  font-size: clamp(17px, 1.6vw, 20px);
  line-height: 1.45;
  letter-spacing: -0.01em;
  color: var(--fg);
  max-width: 28ch;
}
.dv-story__attr {
  margin-top: 14px;
  font-size: 13px;
  color: var(--fg-mute);
}
.dv-story__voice {
  margin: 28px 0 0;
  max-width: 38ch;
}
.dv-story__voice p {
  font-size: 16px;
  line-height: 1.55;
  color: var(--fg);
}
.dv-story__voice footer {
  margin-top: 12px;
  font-size: 13px;
  color: var(--fg-mute);
}
.dv-story .dv-h2 { margin-bottom: 8px; max-width: 22ch; }
.dv-story .dv-stack { margin-top: 8px; }
.dv-story .dv-stack__row {
  grid-template-columns: 1fr auto;
  gap: 8px 24px;
  padding: 20px 0;
}
.dv-story .dv-stack__n { grid-column: 1 / -1; }

/* ── Home estate: sources + tenant ── */
.dv-estate {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 64px;
  row-gap: 0;
  align-items: stretch;
  padding: 56px var(--gutter);
  width: 100%;
  box-sizing: border-box;
}
.dv-estate .dv-h2 { margin-bottom: 0; }
/* Panels: heading, paragraph and rows live inside one bordered object per
   column — both stretch to the same height, so tops and bottoms are level
   with no floating text islands. */
.dv-panel {
  display: flex;
  flex-direction: column;
}
.dv-panel__intro { margin-bottom: 28px; }
.dv-panel__intro .dv-h2 {
  font-size: 24px;
  line-height: 1.3;
  letter-spacing: -0.02em;
}
.dv-panel__intro .dv-body {
  margin-top: 12px;
  font-size: 15px;
}

/* ── Product layer ── */
.dv-layer {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
  padding: 96px var(--gutter);
  width: 100%;
  box-sizing: border-box;
}
.dv-layer--flip { direction: rtl; background: var(--bg-2); }
.dv-layer--flip > * { direction: ltr; }
.dv-layer__copy .dv-h2 { margin-bottom: 16px; max-width: 18ch; }
.dv-sources {
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: 24px 32px;
}
.dv-sources__head,
.dv-sources__foot {
  font-size: 13px;
  color: var(--fg-mute);
}
.dv-sources ul {
  list-style: none;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin: 18px 0;
}
.dv-sources li {
  padding: 12px 0;
  border-top: 1px solid var(--line-2);
  font-size: 15px;
}

/* Shared card head — title left, meta right, rule beneath. Both estate
   cards open with the same construction. */
.dv-cardhead {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  font-size: 13px;
  color: var(--fg-mute);
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}

/* Manifest variant — class → named-vendor rows, one per line. */
.dv-sources--manifest ul {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  flex: 1;
  margin: 0;
}
.dv-sources--manifest li {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 24px;
  padding: 10px 0;
  border-top: 0;
  border-bottom: 1px solid var(--line-2);
}
.dv-sources--manifest li:last-child { border-bottom: 0; padding-bottom: 4px; }
.dv-sources__c { color: var(--fg); }
.dv-sources__v {
  font-size: 13px;
  color: var(--fg-mute);
  text-align: right;
}
.dv-host-card {
  background: var(--product);
  color: var(--product-fg);
  padding: 32px 36px;
  box-shadow: 0 24px 60px rgba(11, 18, 32, 0.16);
  text-align: left;
}
.dv-host-card__time {
  font-family: var(--mono);
  font-size: 13px;
  color: var(--product-dim);
}
.dv-host-card__q {
  font-size: 20px;
  margin: 14px 0 22px;
  line-height: 1.4;
}
.dv-host-card ul { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.dv-host-card li { font-size: 14px; color: var(--product-dim); }
.dv-host-card .dv-cap { color: var(--product-mute); }

/* ── Film ── */
.dv-shot { padding: 24px var(--gutter) 96px; width: 100%; box-sizing: border-box; }
.dv-shot__frame {
  position: relative;
  background: var(--product);
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(11, 18, 32, 0.14);
  aspect-ratio: 16 / 9;
}
.dv-shot video,
.dv-shot img { width: 100%; height: 100%; display: block; object-fit: contain; }
.dv-shot__poster {
  display: block;
  position: absolute;
  inset: 0;
}
.dv-shot video { position: relative; z-index: 1; opacity: 0; }
.dv-shot video.is-ready { opacity: 1; }
.dv-shot .dv-cap { margin-top: 14px; }

/* ── Tenant facts ── */
.dv-facts {
  padding: 96px var(--gutter);
  background: var(--bg-2);
  width: 100%;
  box-sizing: border-box;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: start;
}
.dv-facts__intro .dv-h2 { margin-bottom: 16px; max-width: 16ch; }
.dv-facts__list {
  list-style: none;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border-top: 1px solid var(--line);
}
.dv-facts__list li {
  padding: 22px 0;
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dv-facts__list li:nth-child(odd) { padding-right: 28px; }
.dv-facts__list li:nth-child(even) { padding-left: 28px; }
.dv-facts__list strong { font-weight: 500; }
.dv-facts__list span { color: var(--fg-dim); font-size: 15px; }

/* ── Close / Data Score ── */
.dv-close {
  padding: 80px var(--gutter) 100px;
  width: 100%;
  box-sizing: border-box;
}
.dv-close__inner {
  background: none;
  border: 1px solid rgba(41, 138, 250, 0.4);
  color: var(--fg);
  padding: 48px 56px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
}
.dv-close__inner--row {
  display: grid;
  grid-template-columns: 1.3fr auto;
  gap: 48px;
  align-items: center;
}
.dv-close .dv-h2,
.dv-close .dv-body { color: var(--fg); max-width: 36ch; }
.dv-close .dv-body { margin-top: 8px; margin-bottom: 0; color: var(--fg-dim); }
.dv-close__inner:not(.dv-close__inner--row) .dv-body { margin-bottom: 12px; }

/* The blue Data Score field — the site's one full-chroma surface (DESIGN.md:
   blue as filled CTAs and the closing Data Score field). Ink text on
   Datavation Blue; the primary button inverts to ink fill / paper text. */
.dv-close--field { background: var(--accent); }
.dv-close--field .dv-close__inner {
  border: none;
  padding: 24px 0;
}
.dv-close--field .dv-h2 {
  color: #0B1220;
  font-size: clamp(32px, 3.4vw, 46px);
}
.dv-close--field .dv-body { color: rgba(11, 18, 32, 0.78); }
/* Split close: pitch left, Data Score facts right — ink-tinted rows keep
   the secondary text derived from the field's own foreground, never gray. */
.dv-close__inner--split {
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 64px;
}
.dv-close__facts {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid rgba(11, 18, 32, 0.35);
}
.dv-close__facts li {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 24px;
  padding: 15px 0;
  border-bottom: 1px solid rgba(11, 18, 32, 0.35);
  font-size: 15px;
}
.dv-close__facts strong {
  font-weight: 500;
  color: #0B1220;
  white-space: nowrap;
}
.dv-close__facts span {
  text-align: right;
  color: rgba(11, 18, 32, 0.78);
}
@media (max-width: 980px) {
  .dv-close__inner--split { grid-template-columns: minmax(0, 1fr); gap: 40px; }
}

/* Both buttons on the blue field keep literal ink in both themes. */
.dv-close--field a.dv-btn--ghost {
  color: #0B1220;
  border-color: #0B1220;
}
.dv-close--field a.dv-btn--ghost:hover {
  background: #0B1220;
  color: #FFFFFF;
}

/* ── Contact actions: two direct paths instead of a form ── */
.dv-actions {
  border: 1px solid var(--line);
  background: var(--bg-1);
  padding: 40px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-self: start;
}
.dv-actions .dv-btn {
  display: flex;
  justify-content: center;
  text-align: center;
  width: 100%;
  box-sizing: border-box;
}
.dv-actions__note {
  font-size: 14px;
  line-height: 1.55;
  color: var(--fg-mute);
  margin: 0 0 20px;
}
.dv-actions__note:last-child { margin-bottom: 0; }

/* ── Brand graphics (Figma exports, light/dark pairs) ── */
.dv-graphic { display: block; min-width: 0; }
.dv-graphic img {
  display: block;
  width: 100%;
  height: auto;
}

/* Platform hero: claim left, Agent graphic right — the graphic takes the
   wider column so its in-frame type stays legible. */
.dv-phero {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: 48px;
  align-items: center;
}
/* Sections that pair copy with a brand graphic give the graphic the wide
   column for the same reason. */
.dv-layer--viz {
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
}
/* Posture strip inside the hero — home's at-a-glance grammar with the
   platform principles: word-scale leads, sentence support beneath. */
.dv-phero .dv-strip {
  grid-column: 1 / -1;
  margin-top: 24px;
}
/* Keep hero graphic + strip inside one packed viewport on any screen. */
.dv-phero .dv-graphic img {
  max-height: min(54svh, 540px);
  width: auto;
  max-width: 100%;
  margin-inline: auto;
}
.dv-strip--principles .dv-strip__n {
  font-size: clamp(20px, 1.9vw, 26px);
  letter-spacing: -0.02em;
}
.dv-strip--principles .dv-strip__l {
  line-height: 1.5;
  max-width: 36ch;
}
@media (max-width: 980px) {
  .dv-phero { grid-template-columns: minmax(0, 1fr); }
}

/* ── Agent band: heading, then the product working full-width ── */
.dv-agentband {
  background: var(--bg-2);
  padding: 48px var(--gutter) 56px;
  width: 100%;
  box-sizing: border-box;
}
.dv-agentband__head { margin-bottom: 28px; }
.dv-agentband__head .dv-body { max-width: 62ch; }
/* Fit the whole band in one packed scene stop. */
.dv-agentband .dv-demo__grid {
  min-height: min(400px, calc(100svh - 420px));
}

/* Legacy close band (score / platform) */
.dv-band {
  border: none;
  background: var(--accent);
  color: #0B1220;
  padding: 48px 52px;
  display: grid;
  grid-template-columns: 1.3fr auto;
  gap: 40px;
  align-items: center;
}
.dv-band .dv-h2,
.dv-band .dv-body,
.dv-band .dv-check,
.dv-band .dv-form-status { color: #0B1220; }
.dv-band input:not([type="checkbox"]) { background: #fff; }
.dv a.dv-band .dv-btn--fill,
.dv-band a.dv-btn--fill,
.dv-band button.dv-btn--fill {
  background: #0B1220;
  border-color: #0B1220;
  color: #fff;
}
.dv-band a.dv-btn--fill:hover,
.dv-band button.dv-btn--fill:hover { background: #1a2434; color: #fff; }
.dv-band__k { font-size: 13px; color: #0B1220; margin-bottom: 12px; }

/* ── Platform ── */
.dv-split {
  border: 1px solid var(--line);
  background: var(--bg-1);
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.dv-split > * { padding: 48px 52px; }
.dv-split > *:first-child { border-right: 1px solid var(--line-2); }
.dv-split__k { font-size: 13px; color: var(--fg-mute); margin-bottom: 12px; }
.dv-split__h { font-family: var(--display); font-size: 26px; margin-bottom: 12px; letter-spacing: -0.02em; }
.dv-split__sub { font-size: 16px; color: var(--fg); margin-bottom: 12px; }
.dv-split__b { font-size: 15px; color: var(--fg-dim); line-height: 1.7; }
.dv-ascii {
  font-family: var(--mono);
  font-size: 13px;
  line-height: 2.2;
  color: var(--fg-dim);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.dv-ascii--sm { font-size: 13px; line-height: 2; white-space: normal; }

.dv-cells {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--line);
}
.dv-cells > * { padding: 28px 36px 36px 0; }
.dv-cells > * + * { border-left: 1px solid var(--line); padding-left: 32px; }
.dv-cells__l { font-size: 13px; color: var(--fg-mute); margin-bottom: 12px; }
.dv-cells__b { font-size: 16px; color: var(--fg); line-height: 1.6; max-width: 34ch; }

.dv-stack { display: flex; flex-direction: column; }
.dv-stack__row {
  display: grid;
  grid-template-columns: 160px 1fr auto;
  gap: 32px;
  align-items: start;
  padding: 28px 0;
  border-top: 1px solid var(--line);
}
.dv-stack__row:last-child { border-bottom: 1px solid var(--line); }
.dv-stack__n { font-size: 14px; color: var(--fg-mute); }
.dv-stack__b { font-size: 16px; color: var(--fg-dim); line-height: 1.6; }
.dv-stack__b strong { color: var(--fg); font-weight: 500; }
.dv a.dv-stack__link {
  font-size: 14px;
  color: var(--fg);
  white-space: nowrap;
  border-bottom: 1px solid var(--accent);
  align-self: center;
}
.dv a.dv-stack__link:hover { color: var(--link); }
.dv-stack__tag { font-size: 13px; color: var(--fg-mute); white-space: nowrap; }
.dv-stack__fly { font-size: 14px; color: var(--fg-mute); margin-top: 24px; line-height: 1.65; max-width: 62ch; }
.dv-stack__row:hover { background: transparent; }

.dv-sov {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: center;
  padding: 96px var(--gutter);
  width: 100%;
  box-sizing: border-box;
  background: var(--bg-2);
}
.dv-tenant {
  border: 1px solid var(--line);
  background: var(--bg-1);
  padding: 24px 32px;
  margin: 0;
  display: flex;
  flex-direction: column;
}
/* When subgrid levels this card with the taller sources card, the four
   posture rows distribute across the extra height instead of pooling it
   at the bottom. */
.dv-tenant dl {
  margin: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.dv-tenant dl > div {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  padding: 14px 0;
  border-bottom: 1px solid var(--line-2);
  font-size: 15px;
}
.dv-tenant dl > div:last-child { border-bottom: 0; padding-bottom: 4px; }
.dv-tenant dt {
  color: var(--fg-dim);
  font-weight: 400;
}
.dv-tenant dd {
  margin: 0;
  color: var(--fg);
  font-weight: 500;
  text-align: right;
}
.dv-tenant dd.dv-tenant__nil { color: var(--link); }

/* Sources marquee — the full named-source roll in slow transit across the
   estate scene. Two identical sets tile seamlessly at translateX(-50%);
   reduced motion parks the first set. */
.dv-marq {
  grid-column: 1 / -1;
  overflow: hidden;
  border-top: 1px solid var(--line);
  padding-top: 18px;
  margin-top: 56px;
}
.dv-marq__track {
  display: flex;
  width: max-content;
  animation: dv-marq 64s linear infinite;
}
.dv-marq__set {
  list-style: none;
  display: flex;
  margin: 0;
  padding: 0;
  white-space: nowrap;
  font-size: 14px;
  color: var(--fg-mute);
}
.dv-marq__set li { display: flex; align-items: center; }
.dv-marq__set li::after {
  content: "·";
  margin: 0 22px;
  color: var(--accent);
}
@keyframes dv-marq {
  to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .dv-marq__track { animation: none; }
  .dv-tickbar i { transition: none; }
}
.dv-sov__dot { color: var(--accent); }

.dv-kpis {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--line);
}
.dv-kpis > * { padding: 28px 32px 8px 0; min-width: 0; }
.dv-kpis__n { font-size: clamp(22px, 2.6vw, 32px); letter-spacing: -0.02em; }
.dv-kpis__n--accent { color: var(--link); }
.dv-kpis__l { font-size: 13px; color: var(--fg-mute); margin-top: 8px; }
.dv-cite { font-size: 14px; color: var(--fg-mute); line-height: 1.6; margin-top: 20px; max-width: 62ch; }

/* ── Team ── */
.dv-team {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.dv-team__card {
  border: 1px solid var(--line);
  background: var(--bg-1);
  padding: 28px 30px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.dv-team__mono {
  width: 40px;
  height: 40px;
  background: var(--bg-2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  color: var(--fg);
}
.dv-team__name { font-size: 17px; font-weight: 500; margin-top: 4px; }
.dv-team__role { font-size: 13px; color: var(--fg-mute); }
.dv-team__bio { color: var(--fg-dim); font-size: 14px; line-height: 1.6; }

/* ── Forms ── */
.dv-contact {
  padding: 80px var(--gutter) 120px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 72px;
  width: 100%;
  box-sizing: border-box;
  flex: 1;
}
.dv-quote { font-size: 18px; color: var(--fg); margin-top: 32px; }
.dv-addr {
  font-size: 14px;
  color: var(--fg-mute);
  margin-top: 40px;
  line-height: 1.8;
}
.dv-form {
  border: 1px solid var(--line);
  background: var(--bg-1);
  padding: 36px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-self: start;
}
.dv-field { display: flex; flex-direction: column; gap: 8px; }
.dv-field label,
.dv-form label:not(.dv-check) {
  font-size: 13px;
  color: var(--fg-mute);
  letter-spacing: 0;
  text-transform: none;
}
.dv input:not([type="checkbox"]):not([type="radio"]),
.dv textarea,
.dv select {
  background: var(--bg);
  border: 1px solid var(--line);
  color: var(--fg);
  padding: 12px 14px;
  font-family: var(--sans);
  font-size: 15px;
  border-radius: 0;
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
}
.dv select { appearance: auto; -webkit-appearance: menulist; }
.dv input:focus,
.dv textarea:focus,
.dv select:focus {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
  border-color: var(--accent);
}
.dv input:-webkit-autofill,
.dv input:-webkit-autofill:hover,
.dv input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--fg);
  box-shadow: 0 0 0 1000px var(--bg) inset;
  caret-color: var(--fg);
}
.dv-field textarea { resize: vertical; min-height: 84px; }
.dv-field input::placeholder,
.dv-field textarea::placeholder { color: var(--fg-mute); }
.dv-check {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 13px;
  color: var(--fg-dim);
  line-height: 1.5;
  cursor: pointer;
  font-family: var(--sans);
  letter-spacing: 0;
  text-transform: none;
}
.dv-check input { width: auto; margin: 2px 0 0; accent-color: var(--accent); }
.dv-form-status { font-size: 14px; color: var(--fg-dim); }
.dv-form-status.is-error { color: var(--alert); }

/* ── Legal ── */
.dv-legal { padding: 80px var(--gutter) 120px; width: 100%; box-sizing: border-box; flex: 1; }
.dv-legal__h { margin: 0 0 48px; max-width: 18ch; }
.dv-legal__row {
  border-top: 1px solid var(--line);
  padding: 28px 0;
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 32px;
}
.dv-legal__row h2,
.dv-legal__k {
  font-family: var(--sans);
  font-size: 14px;
  font-weight: 500;
  color: var(--fg);
  margin: 0;
  letter-spacing: 0;
}
.dv-legal__b { font-size: 15px; color: var(--fg-dim); line-height: 1.7; max-width: 66ch; }
.dv-legal__b strong, .dv-legal__b .fg { color: var(--fg); font-weight: 500; }
.dv-legal__b p + p { margin-top: 14px; }
.dv-legal__b ul { margin: 10px 0 0 18px; }
.dv-legal__b li { margin: 6px 0; }
.dv-legal__b h3 {
  font-family: var(--sans);
  font-size: 16px;
  font-weight: 500;
  color: var(--fg);
  margin: 22px 0 8px;
}

/* ── Score — one-file diagnostic, daylight paper ── */
.dv-score-kicker,
.dv-score-result-kicker,
.dv-score-cat {
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.3em;
  margin: 0 0 22px;
}
.dv-score-kicker { color: var(--link); }
.dv-score-result-kicker { color: var(--fg-mute); margin-bottom: 34px; }
.dv-score-cat {
  font-size: 11px;
  letter-spacing: 0.24em;
  color: var(--link);
  margin-bottom: 18px;
}
.dv-score-weights {
  display: flex;
  gap: 40px;
  margin-top: 44px;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.16em;
  color: var(--fg-mute);
  flex-wrap: wrap;
}
.dv-section--score .dv-btn--line { margin-top: 48px; }
.dv-progress {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 56px;
}
.dv-progress__n {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--fg-mute);
  white-space: nowrap;
}
.dv-progress__bar {
  flex: 1;
  height: 1px;
  background: var(--line);
  position: relative;
}
.dv-progress__fill {
  position: absolute;
  left: 0; top: 0; height: 1px; width: 100%;
  background: var(--accent);
  transform-origin: left center;
  transition: transform 0.4s ease;
}
.dv-q { font-size: 28px; font-weight: 500; line-height: 1.4; max-width: 30ch; min-height: 118px; letter-spacing: -0.02em; }
.dv-opts { display: flex; flex-direction: column; gap: 12px; margin-top: 40px; max-width: 640px; }
.dv-opt {
  border: 1px solid var(--line);
  background: none;
  color: var(--fg-dim);
  padding: 16px 20px;
  font-size: 15px;
  font-family: var(--sans);
  cursor: pointer;
  text-align: left;
}
.dv-opt:hover, .dv-opt.is-active {
  border-color: var(--accent);
  color: var(--fg);
}
.dv-result-head { display: flex; gap: 64px; align-items: center; flex-wrap: wrap; }
.dv-result-n {
  font-family: var(--display);
  font-size: 110px;
  line-height: 1;
  letter-spacing: 0;
  font-weight: 400;
  color: var(--accent);
}
.dv-result-side { display: flex; flex-direction: column; gap: 14px; flex: 1; min-width: 300px; }
.dv-result-band {
  font-family: var(--mono);
  font-size: 13px;
  letter-spacing: 0.2em;
  color: var(--fg);
}
.dv-result-route {
  font-size: 14.5px;
  color: var(--fg-dim);
  line-height: 1.55;
  max-width: 46ch;
  margin: 0 0 4px;
}
.dv-score-moves {
  margin-top: 52px;
  padding-top: 36px;
  border-top: 1px solid var(--line);
}
.dv-score-moves__h {
  font-size: 19px;
  font-weight: 500;
  margin: 0 0 22px;
}
.dv-score-moves ol {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 16px;
  max-width: 72ch;
}
.dv-score-moves li {
  display: grid;
  grid-template-columns: 40px 1fr;
  gap: 16px;
  align-items: start;
  font-size: 16px;
  line-height: 1.55;
  color: var(--fg);
}
.dv-score-moves__n {
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.14em;
  color: var(--link);
  padding-top: 4px;
}
.dv-score-findings {
  margin-top: 40px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.dv-score-finding {
  border: 1px solid var(--line);
  padding: 24px 28px;
}
.dv-score-finding__meta {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--fg-mute);
  margin-bottom: 10px;
}
.dv-score-finding__d {
  font-size: 16px;
  line-height: 1.55;
  color: var(--fg);
  max-width: 72ch;
}
.dv-score-finding__w {
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--fg-dim);
  margin-top: 10px;
  max-width: 72ch;
}
.dv-pillar { display: flex; align-items: center; gap: 16px; }
.dv-pillar__n {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--fg-mute);
  width: 120px;
}
.dv-pillar__bar { flex: 1; height: 6px; background: var(--line); position: relative; }
.dv-pillar__fill { position: absolute; left: 0; top: 0; height: 6px; background: var(--accent); }
.dv-pillar__v {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--fg-dim);
  width: 52px;
  text-align: right;
}
.dv-score-report {
  border: 1px solid rgba(41, 138, 250, 0.28);
  padding: 36px 40px;
  margin-top: 56px;
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 44px;
  align-items: center;
  background: var(--bg);
}
.dv-score-report__h {
  font-size: 19px;
  font-weight: 500;
  margin-bottom: 10px;
}
.dv-score-report__b {
  font-size: 14.5px;
  color: var(--fg-dim);
  line-height: 1.65;
}
.dv-score-report__form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.dv-score-report .dv-btn--line { margin-top: 0; padding: 14px; width: 100%; }
.dv-restart {
  border: none;
  background: none;
  color: var(--fg-mute);
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.14em;
  cursor: pointer;
  margin-top: 28px;
  padding: 0;
}
.dv-restart:hover { color: var(--fg); }

/* ── Insights ── */
.dv-issue {
  border: 1px solid var(--line);
  padding: 40px 44px;
  display: grid;
  grid-template-columns: 1.4fr auto;
  gap: 40px;
  align-items: center;
}
.dv-issue__soon {
  border: 1px solid var(--line);
  border-top: none;
  padding: 22px 44px;
  font-size: 13px;
  color: var(--fg-mute);
}
.dv-subscribe {
  border: 1px solid var(--line);
  padding: 36px 40px;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 40px;
  align-items: center;
}

/* ── Footer ── */
.dv-footer {
  background: var(--footer);
  border-top: none;
  padding: 48px var(--gutter) 32px;
  margin-top: auto;
  color: #A8B0BC;
}
.dv-footer__marks {
  display: flex;
  align-items: flex-end;
  gap: 48px;
  flex-wrap: wrap;
  padding-bottom: 36px;
  margin-bottom: 36px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.dv-footer__marks img {
  display: block;
  width: auto;
  height: 28px;
}
.dv-footer__marks img[alt="NFDA Associate Member"] { height: 40px; }
.dv-footer__grid {
  display: grid;
  grid-template-columns: 1.6fr repeat(3, 1fr);
  gap: 40px 32px;
}
.dv-footer__brand { color: #F4F6F8; }
.dv-footer .dv-nav__mark { color: var(--accent); }
.dv-footer__word {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.02em;
  margin-top: 12px;
}
.dv-footer__place {
  font-size: 13px;
  margin-top: 14px;
  line-height: 1.7;
}
.dv-footer__col {
  display: flex;
  flex-direction: column;
  gap: 10px;
  font-size: 14px;
}
.dv-footer__col h2 {
  font-size: 13px;
  font-weight: 500;
  color: #7E8794;
  margin: 0 0 6px;
  letter-spacing: 0;
}
.dv-footer a { color: #C5CCD6; }
.dv-footer a:hover { color: #fff; }
.dv-footer__base {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 28px;
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  font-size: 12px;
}
.dv-footer__legal {
  flex-basis: 100%;
  font-size: 12px;
  line-height: 1.65;
  max-width: 90ch;
  color: #7E8794;
}

/* ── Consent ── */
.dv-nav.is-open ~ .dv-consent { display: none; }
.dv-consent {
  position: fixed;
  left: 24px;
  bottom: 24px;
  right: auto;
  width: min(380px, calc(100vw - 32px));
  z-index: 50;
  background: var(--bg-1);
  border: 1px solid var(--line);
  padding: 20px;
  box-shadow: 0 16px 40px rgba(11, 18, 32, 0.14);
  transition: opacity 180ms ease;
}
.dv-consent__inner {
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-items: stretch;
}
.dv-consent__text { font-size: 13px; color: var(--fg-dim); line-height: 1.5; }
.dv-consent__actions { display: flex; gap: 10px; }

@media (prefers-reduced-motion: reduce) {
  .dv-demo__live, .dv-demo__caret { animation: none; }
  .dv-shot video { display: none; }
  .dv-shot__poster { display: block; }
  .dv-nav { background: var(--bg); }
}

@media (max-width: 980px) {
  .dv-nav { gap: 16px; flex-wrap: wrap; }
  .dv-footer__grid { grid-template-columns: 1fr 1fr; }
  .dv-nav > .dv-nav__links,
  .dv-nav > .dv-nav__cta,
  .dv-nav > .dv-region,
  .dv-nav > .dv-nav__note { display: none; }
  .dv-nav__menu { display: block; margin-left: auto; }
  .dv-nav { position: sticky; }
  .dv-nav.is-open .dv-nav__drawer {
    display: flex;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    z-index: 45;
    background: var(--bg);
    min-height: calc(100dvh - 56px);
    padding: 28px var(--gutter) 48px;
    border-bottom: 1px solid var(--line);
  }
  .dv-nav.is-open .dv-nav__menu span:first-child { transform: rotate(45deg); top: 19px; }
  .dv-nav.is-open .dv-nav__menu span:last-child { transform: rotate(-45deg); bottom: 19px; }
  .dv-nav__drawer { flex-basis: 100%; }
  .dv-nav__drawer .dv-region { align-self: flex-start; }
  .dv-demo__grid,
  .dv-sov,
  .dv-band,
  .dv-split,
  .dv-contact,
  .dv-issue,
  .dv-subscribe,
  .dv-legal__row,
  .dv-stack__row,
  .dv-layer,
  .dv-facts,
  .dv-strip,
  .dv-hero__grid,
  .dv-story,
  .dv-estate,
  .dv-close__inner--row,
  .dv-score-report,
  .dv-story .dv-stack__row { grid-template-columns: minmax(0, 1fr); }
  .dv-story .dv-stack__n { grid-column: auto; }
  .dv-strip > * + * { padding-left: 0; border-left: 0; padding-top: 20px; border-top: 1px solid var(--line); }
  .dv-strip > * { padding-right: 0; }
  .dv-layer--flip { direction: ltr; }
  .dv-demo__q { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
  .dv-split > *:first-child { border-right: 0; border-bottom: 1px solid var(--line-2); }
  .dv-kpis, .dv-cells, .dv-team { grid-template-columns: 1fr; }
  .dv-kpis > *, .dv-cells > * { border-right: 0; }
  .dv-cells > * + * { border-left: 0; padding-left: 0; border-top: 1px solid var(--line-2); }
  .dv-stack__link, .dv-stack__tag { justify-self: start; }
  .dv-hero { padding-top: 48px; }
  .dv-hero-lead { padding-top: 32px; text-align: left; align-items: stretch; }
  .dv-hero__copy .dv-lede { margin-left: 0; }
  .dv-btn-row--center { justify-content: flex-start; }
  .dv-section { padding-top: 64px; }
  .dv-section--close, .dv-close { padding: 64px var(--gutter) 88px; }
  .dv-band, .dv-close__inner { padding: 36px 28px; }
  .dv-split > * { padding: 28px 24px; }
  .dv-layer, .dv-facts, .dv-proof, .dv-sov, .dv-story, .dv-estate { padding: 64px var(--gutter); }
  .dv-q { min-height: 0; font-size: 22px; }
  .dv-result-n { font-size: 80px; }
  .dv-score-report { padding: 28px 24px; gap: 28px; }
  .dv-demo__question { min-height: 0; }
  .dv-proof { text-align: left; }
  .dv-proof__quote { margin-left: 0; }
  .dv-marks { justify-content: flex-start; }
  .dv-facts__list { grid-template-columns: 1fr; }
  .dv-facts__list li:nth-child(odd),
  .dv-facts__list li:nth-child(even) { padding-left: 0; padding-right: 0; }
  .dv-consent__inner { flex-direction: column; align-items: stretch; }
}
@media (max-width: 600px) {
  .dv-form, .dv-issue, .dv-subscribe { padding: 24px 20px; }
  .dv-nav { padding: 12px var(--gutter); }
  .dv-h1 { font-size: 34px; }
  .dv-footer__grid { grid-template-columns: 1fr; }
  .dv-footer__marks { gap: 24px; }
  .dv-consent { right: 12px; bottom: 12px; left: 12px; width: auto; }
  .dv-hero__copy .dv-lede { max-width: none; }
  .dv-hero__copy .dv-btn-row { flex-direction: column; align-items: stretch; }
  .dv-hero__copy .dv-btn { width: 100%; white-space: normal; }
  .dv-sources ul { grid-template-columns: 1fr; }
}

/* ── Homepage snap: packed scenes, one stop each ── */
html.dv-snap,
html.dv-snap body { height: 100%; overflow: hidden; }
html.dv-snap #root { height: 100%; }
html.dv-snap .dv {
  display: block;
  height: 100%;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  scroll-snap-type: y proximity;
  scroll-padding-top: var(--header);
}
html.dv-snap--packed .dv { scroll-snap-type: y mandatory; }
html.dv-snap .dv-main { display: contents; }
html.dv-snap .dv-skip,
html.dv-snap .dv-nav,
html.dv-snap .dv-consent { scroll-snap-align: none; }
html.dv-snap:not(.dv-scrolled) .dv-consent {
  opacity: 0;
  pointer-events: none;
}
html.dv-snap .dv-scene {
  scroll-snap-align: start;
  box-sizing: border-box;
}
html.dv-snap--packed .dv-scene {
  min-height: 100svh;
  scroll-snap-stop: always;
  align-content: center;
}
html.dv-snap .dv-footer {
  margin-top: 0;
  scroll-snap-align: start;
}
html.dv-snap .dv-hero-lead {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  gap: 0;
  padding-top: calc(var(--header) + 16px);
  padding-bottom: 32px;
  text-align: left;
}
html.dv-snap .dv-hero-lead > * {
  animation: none;
  opacity: 1;
  transform: none;
}
html.dv-snap--packed .dv-scene.dv-close {
  display: block;
  min-height: auto;
  padding: 56px var(--gutter) 48px;
  background: var(--bg);
}
html.dv-snap--packed .dv-scene.dv-close--field {
  background: var(--accent);
  padding: 72px var(--gutter) 64px;
}
html.dv-snap--packed .dv-scene.dv-close .dv-close__inner {
  width: 100%;
  box-sizing: border-box;
}
html.dv-snap--packed .dv-story,
html.dv-snap--packed .dv-estate { min-height: 100svh; }

@keyframes dv-rise {
  from { opacity: 0; transform: translateY(28px); }
  to { opacity: 1; transform: none; }
}
html.dv-snap .dv-scene > * {
  opacity: 1;
  transform: none;
}
@supports (animation-timeline: view()) {
  html.dv-snap .dv-scene:not(.dv-hero-lead):not(.dv-section--score) > * {
    animation: dv-rise 0.75s cubic-bezier(0.16, 1, 0.3, 1);
    animation-timeline: view();
    animation-range: entry 0% entry 40%;
  }
  html.dv-snap .dv-hero-lead > *,
  html.dv-snap .dv-scene:first-of-type > * {
    animation: none;
    opacity: 1;
    transform: none;
  }
}
@supports not (animation-timeline: view()) {
  html.dv-snap .dv-scene:not(:first-of-type):not(.is-visible) > * {
    opacity: 0;
    transform: translateY(24px);
  }
  html.dv-snap .dv-scene:not(:first-of-type) > * {
    transition: opacity 0.65s cubic-bezier(0.16, 1, 0.3, 1), transform 0.65s cubic-bezier(0.16, 1, 0.3, 1);
  }
  html.dv-snap .dv-scene.is-visible > * {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  html.dv-snap .dv { scroll-snap-type: y proximity; }
  html.dv-snap .dv-scene > *,
  html.dv-snap .dv-scene.is-visible > * {
    animation: none;
    opacity: 1;
    transform: none;
    transition: none;
  }
}
@media (max-width: 980px) {
  html.dv-snap,
  html.dv-snap body { height: auto; overflow: visible; }
  html.dv-snap #root { height: auto; }
  html.dv-snap .dv {
    height: auto;
    overflow: visible;
    scroll-snap-type: none;
  }
  html.dv-snap .dv-main { display: flex; flex-direction: column; }
  html.dv-snap .dv-scene {
    min-height: 0;
    scroll-snap-align: none;
    scroll-snap-stop: normal;
  }
  html.dv-snap .dv-hero-lead { text-align: left; min-height: 0; }
}

/* ── Dark theme surface adjustments — the ink drop-shadows that seat the
   product objects on paper vanish on the dark ground; hairlines take over. ── */
@media (prefers-color-scheme: dark) {
  .dv-shot__frame,
  .dv-demo,
  .dv-host-card {
    border: 1px solid var(--line);
    box-shadow: none;
  }
  .dv-consent { box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5); }
}
