/* Laplace's scientific-paper landing: Hanken Grotesk, cobalt, mathematical figures. */
.hero { isolation: isolate; padding: clamp(2.5rem, 5vw, 4.5rem) 0 3.5rem; }
.hero > .wrap { grid-template-columns: minmax(0, .86fr) minmax(0, 1.14fr); gap: clamp(2rem, 4vw, 4rem); align-items: center; }
.hero::before { content: ''; position: absolute; inset: 0; z-index: -2; pointer-events: none; background: repeating-radial-gradient(ellipse at 76% 38%, transparent 0 48px, color-mix(in srgb, var(--brand) 8%, transparent) 49px 50px, transparent 51px 84px); mask-image: linear-gradient(90deg, transparent 30%, #000); }
.hero[data-shader="ready"]::before { opacity: 0; }
.hero::after { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: .13; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23888' filter='url(%23grain)' d='M0 0h160v160H0z'/%3E%3C/svg%3E"); }
.market-field { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -2; pointer-events: none; }
.hero-copy { min-width: 0; }
.hero-title { font-size: clamp(2.7rem, 4.1vw, 3.6rem); font-weight: 600; line-height: 1.08; letter-spacing: -.035em; max-width: 16ch; margin: 0 0 1.6rem; }
.hero-title .brace { margin: .22em 0 .66em; }
.hero-title .brace svg { top: calc(100% + .05em); }
.hero-title .brace .note { top: calc(100% + 20px); font-size: 17px; }
.hero .standfirst { font-size: 1.13rem; line-height: 1.65; max-width: 46ch; margin-bottom: 1.55rem; }
.hero .kicker { font-size: 12px; margin-bottom: 1.4rem; border-color: var(--rule-strong); }
.hero .cmd-label { padding: 0 .65rem; }
.hero .cmd .search input { min-width: 0; font-size: 14px; }
.hero .hint { font-size: 12.5px; }
.research-loop { margin-top: 2rem; }
.research-loop .loop b { font-size: 14px; }
.research-loop .loop span.d { font-size: 12px; line-height: 1.4; }
.research-loop .loop .n { background: color-mix(in srgb, var(--surface) 80%, transparent); }
.research-loop .loop-back { font-size: 12.5px; margin-bottom: 0; }
.forecast-demo { min-width: 0; margin: 0; scroll-margin-top: 90px; }
.forecast-demo-card { padding: 1rem 1rem .75rem; background: color-mix(in srgb, var(--surface) 92%, transparent); border: 1px solid var(--rule-strong); border-radius: 8px; box-shadow: 0 1px 2px rgba(24,20,60,.06), 0 6px 16px -8px rgba(24,20,60,.1), 0 18px 40px -24px rgba(30,36,110,.16), inset 0 1px 0 color-mix(in srgb, var(--surface) 90%, transparent); }
.demo-controls { display: flex; flex-wrap: wrap; gap: .45rem; justify-content: space-between; padding-bottom: .8rem; }
.demo-presets { display: flex; gap: .3rem; }
.demo-controls button { cursor: pointer; border: 1px solid var(--rule-strong); border-radius: 3px; background: transparent; padding: .4rem .6rem; font-size: 12px; line-height: 1.4; transition: background .18s, border-color .18s; }
.demo-controls button:hover { background: var(--brand-wash); }
.demo-controls button[aria-pressed="true"] { color: var(--brand); background: var(--brand-wash); border-color: var(--brand); box-shadow: inset 0 -2px 0 var(--brand); }
.demo-controls button:disabled { cursor: default; opacity: .65; }
.demo-heading { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; padding: .65rem 0 .8rem; border-bottom: 1px solid var(--rule); }
.demo-heading h2 { font-size: 16px; font-weight: 500; line-height: 1.4; margin: 0; flex: 1; }
.demo-heading .fig-number { font-size: 12px; font-weight: 600; margin-right: .2rem; }
.demo-heading .badge { font-size: 11px; padding: .15rem .35rem; font-weight: 500; background: transparent; }
.demo-heading .badge::before { width: 5px; height: 5px; }
.demo-plot { width: 100%; height: auto; display: block; overflow: visible; margin-top: .75rem; }
.demo-plot text { fill: var(--ink); font-family: var(--sans); font-size: 13px; }
.demo-plot .demo-math { font-family: var(--math); font-style: italic; font-size: 17px; }
.demo-plot .demo-quantile { fill: var(--brand); }
.demo-plot .demo-grid { stroke: var(--rule); stroke-width: .8; stroke-dasharray: 2 4; }
.demo-plot .demo-axis { stroke: var(--muted); stroke-width: 1; }
.demo-plot .demo-now { stroke: var(--muted); stroke-width: 1; stroke-dasharray: 4 4; }
.demo-plot .demo-future { fill: var(--brand); fill-opacity: .035; }
.demo-plot .demo-history { fill: none; stroke: var(--muted); stroke-opacity: .6; stroke-width: 1.3; }
.demo-plot .demo-observation { fill: var(--ink); }
.demo-plot .demo-interval { fill: none; stroke: var(--brand); stroke-opacity: .36; stroke-width: 1; }
.demo-plot .demo-miss { fill: none; stroke: var(--neg); stroke-width: 1.5; }
.demo-plot .demo-band { fill: var(--brand); fill-opacity: .1; }
.demo-plot .demo-band-inner { fill-opacity: .13; }
.demo-plot .demo-sample { fill: none; stroke: var(--brand); stroke-opacity: .12; stroke-width: 1; }
.demo-plot .demo-bound { fill: none; stroke: var(--brand); stroke-opacity: .55; stroke-width: 1; }
.demo-plot .demo-median { fill: none; stroke: var(--brand); stroke-width: 1.9; stroke-dasharray: 5 4; }
.demo-statistics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-block: 1px solid var(--rule); margin: .7rem 0 0; }
.demo-statistics > div { padding: .65rem .7rem; }
.demo-statistics > div:first-child { padding-left: 0; }
.demo-statistics > div + div { border-left: 1px solid var(--rule-soft); }
.demo-statistics dt { font-size: 11px; line-height: 1.4; }
.demo-statistics dd { margin: .4rem 0 0; font-size: 16px; line-height: 1.25; font-variant-numeric: tabular-nums; white-space: nowrap; }
.demo-statistics i { font-family: var(--math); font-size: 19px; font-weight: 400; }
.demo-equation { position: relative; margin: .9rem 0 .1rem; text-align: center; font-family: var(--math); font-size: 19px; line-height: 1.4; }
.demo-equation .eq-number { float: right; font-size: 13px; font-family: var(--sans); color: var(--muted); padding-top: .2rem; }
.forecast-demo figcaption { font-size: 12px; line-height: 1.6; margin-top: .8rem; color: var(--muted); }
.forecast-demo figcaption b { color: var(--ink); font-weight: 600; }
.demo-fallback { fill: var(--ink); }
.demo-fallback text { font-family: var(--sans); font-size: 15px; }
.live-evidence { display: grid; grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr); gap: 3rem; align-items: center; margin: 0 0 3rem; }
.live-evidence h3 { font-size: 1.6rem; font-weight: 500; line-height: 1.2; margin: 0 0 .9rem; }
.live-evidence p { line-height: 1.7; max-width: 48ch; }
.research-item { transition: border-color .25s, background-color .25s; padding: 1.2rem 0; }
.research-item:hover { border-top-color: var(--brand); }
.research-item h3 { font-weight: 500; letter-spacing: -.02em; }
.research-item .kicker { border: 0; padding: 0; background: none; margin: 0; font-size: 12px; }
.research-item p:not(.kicker) { font-weight: 300; font-size: 16px; }
/* Reveal is opt-in; without JS or observers every section stays visible. */
.motion-reveal { transition: opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1); }
.motion-reveal.is-pending { opacity: 0; transform: translateY(18px); }
html[data-motion-paused="true"] .motion-reveal { transition: none; }
@media (max-width: 1100px) {
  .hero > .wrap { gap: 1.5rem; }
  .demo-controls button { padding-inline: .45rem; }
  .hero-title { font-size: 2.8rem; }
}
@media (max-width: 960px) {
  .hero > .wrap { grid-template-columns: minmax(0,1fr); gap: 2.5rem; }
  .hero-copy { max-width: 680px; }
  .hero-title { max-width: 19ch; font-size: clamp(2.4rem,6vw,3.5rem); }
  .hero .standfirst { max-width: 52ch; }
  .forecast-demo { width: 100%; max-width: 760px; justify-self: center; }
  .research-loop { max-width: 560px; }
  .live-evidence { grid-template-columns: minmax(0,1fr); gap: 1rem; }
}
@media (max-width: 640px) {
  .hero { padding-top: 2rem; }
  .hero-title { font-size: 2.4rem; margin-bottom: 1rem; }
  .hero .kicker { font-size: 11px; margin-bottom: 1.2rem; }
  .hero-title .brace .note { left: 50%; transform: translateX(-50%); font-size: 15px; }
  .hero .standfirst { font-size: 1.05rem; line-height: 1.55; margin-bottom: 1.1rem; }
  .research-loop { margin-top: 1.7rem; }
  .research-loop .loop { grid-template-columns: repeat(4,minmax(0,1fr)); gap: .5rem; }
  .research-loop .loop li:nth-child(2)::before, .research-loop .loop li:nth-child(2)::after { display: block; }
  .research-loop .loop span.d { font-size: 11px; }
  .research-loop .loop-back { margin-left: 0; }
  .forecast-demo-card { padding: .65rem; }
  .demo-heading h2 { font-size: 14px; }
  .demo-controls button { font-size: 11px; }
  .demo-statistics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .demo-statistics > div:nth-child(3) { border-left: 0; padding-left: 0; }
  .demo-statistics > div:nth-child(n+3) { border-top: 1px solid var(--rule-soft); }
  .demo-statistics dt { font-size: 12px; }
  .demo-statistics dd { font-size: 17px; }
  .demo-plot text { font-size: 22px; }
  .demo-plot .demo-math { font-size: 24px; }
  .demo-equation { font-size: 17px; }
}
@media (prefers-reduced-motion: reduce) {
  .motion-reveal, .research-item, .demo-controls button { transition: none; }
  .motion-reveal.is-pending { opacity: 1; transform: none; }
  .market-field { display: none; }
  .hero[data-shader="ready"]::before { opacity: 1; }
}
