/* The gravity portal: landing page and the pages that share its design.
   Screen stack: two warm tones, Inter (display cut at large sizes), JetBrains Mono for instrument labels.
   Colour carries meaning only: cyan the light cone, ink the plus polarization and the lattice, magenta the cross polarization on
   the wave figures and, on the other explorers, the quantity under study; green proved (and measured values), red open, gold
   identified. Small text in cyan or magenta uses the --gv-*-text tokens. Square corners, solid rules, no gradients or soft shadows.
   The shared header, navigation and footer keep their own light styles in both modes. */

:root {
  color-scheme: light dark;
  --gv-paper: #faf8f3; --gv-ink: #1d1d1b; --gv-body: #2a2926; --gv-soft: #3c3a36; --gv-hair: #8a8a8a;
  --gv-rule: color-mix(in srgb, var(--gv-ink) 16%, var(--gv-paper));
  --gv-faint: color-mix(in srgb, var(--gv-ink) 7%, var(--gv-paper));
  --gv-cyan: #009fe3; --gv-magenta: #e6007e;
  --gv-cyan-text: #00739f; --gv-magenta-text: #c0006a;   /* the same hues for small text: 5.0 and 5.7 to 1 on paper */
  --gv-ok: #0b7a3e; --gv-red: #c8401f; --gv-gold: #ffc328; --gv-gold-ink: #8a5f00;
  --gv-display: "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif;
  --gv-text: "Inter", -apple-system, "Helvetica Neue", Arial, sans-serif;
  --gv-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
}
@media (prefers-color-scheme: dark) {
  :root {
    --gv-paper: #141413; --gv-ink: #faf8f3; --gv-body: #e9e6df; --gv-soft: #c9c5bc; --gv-hair: #8a8a8a;
    --gv-cyan: #2bb3f0; --gv-magenta: #ff3d9e; --gv-cyan-text: #2bb3f0; --gv-magenta-text: #ff3d9e; --gv-ok: #3fae6c; --gv-red: #e8613f; --gv-gold-ink: #ffc328;
  }
}

html body[data-rpi-page] { background: var(--gv-paper); }
.gv { background: var(--gv-paper); color: var(--gv-body); font: 420 17px/1.42 var(--gv-text); font-optical-sizing: auto;
  overflow-wrap: break-word; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; padding-bottom: 72px; }
.gv *, .gv *::before, .gv *::after { box-sizing: border-box; }
.gv :is(h1, h2, h3, p, ol, ul, dl, dd, figure) { margin: 0; }
.gv :is(ol, ul) { list-style: none; padding: 0; }
.gv a { color: var(--gv-ink); text-decoration-thickness: 1px; text-underline-offset: 3px; }
.gv a:hover { text-decoration-thickness: 2px; }
.gv sup, .gv sub { font-size: .7em; line-height: 0; }
body[data-rpi-page] .gv :is(a, button, input, summary, video, canvas[tabindex]):focus-visible { outline: 3px solid var(--gv-ink) !important; outline-offset: 3px; }
.gv [hidden] { display: none !important; }
.gv .sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.gv [id] { scroll-margin-top: 24px; }
/* At 960px and below the shared header sticks to the top (76px and a rule): a linked heading lands clear of it. */
@media (max-width: 960px) { body.rpi-mobile-ready .gv [id] { scroll-margin-top: 100px; } }
/* Same column as the shared header's container. */
.gv .wrap { width: min(calc(100% - 4rem), 75rem); margin-inline: auto; }

/* Type roles */
.gv .k { font: 700 11px/1.3 var(--gv-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gv-soft); }
/* Greek and other symbols keep their case inside uppercase labels (an uppercase kappa reads as K). */
.gv .nc { text-transform: none; letter-spacing: .04em; }
.gv .k-ink { color: var(--gv-ink); }
.gv .eyebrow { font: 700 12px/1.2 var(--gv-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gv-soft); }
.gv .eyebrow a { color: inherit; }
body[data-rpi-page] .gv h1 { font-family: var(--gv-display); font-weight: 820; font-size: clamp(2.75rem, 5.9vw, 5.3rem); line-height: .94;
  letter-spacing: -.045em; color: var(--gv-ink); text-shadow: 0 0 .5px color-mix(in srgb, var(--gv-ink) 55%, transparent);
  text-wrap: balance; }
body[data-rpi-page] .gv h2 { font-family: var(--gv-display); font-weight: 820; font-size: clamp(2rem, 1.2rem + 2.6vw, 3.6rem); line-height: .96;
  letter-spacing: -.038em; color: var(--gv-ink); text-wrap: balance;
  text-shadow: 0 0 .5px color-mix(in srgb, var(--gv-ink) 55%, transparent); }
.gv h3 { font-family: var(--gv-display); font-weight: 780; font-size: clamp(1.25rem, 1.05rem + .6vw, 1.6rem); line-height: 1.05;
  letter-spacing: -.02em; color: var(--gv-ink); text-wrap: balance; }
.gv .lede { font-weight: 450; font-size: clamp(1.15rem, 1rem + .55vw, 1.5rem); line-height: 1.32; letter-spacing: -.008em;
  color: var(--gv-ink); max-width: 58ch; }
.gv .src { font: 400 12px/1.45 var(--gv-mono); color: var(--gv-soft); }
.gv .note { font-size: 15px; line-height: 1.45; color: var(--gv-soft); }

/* Hero */
.gv .hero { padding: 40px 0 8px; }
.gv .hero .eyebrow { margin-bottom: 18px; }
.gv .hero .lede { margin-top: 20px; max-width: 80ch; font-size: clamp(1.15rem, 1rem + .4vw, 1.375rem); }
.gv .status-line { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 6px 18px; font: 700 11.5px/1.5 var(--gv-mono);
  letter-spacing: .1em; text-transform: uppercase; color: var(--gv-soft); }
.gv .status-line .sq { display: inline-block; width: 10px; height: 10px; margin-right: 8px; vertical-align: -1px; }

/* The live instrument */
.gv .inst { margin-top: 24px; }
.gv .inst-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 24px; }
.gv .legend { display: flex; flex-wrap: wrap; gap: 6px 22px; }
.gv .legend li { display: flex; align-items: center; gap: 8px; }
.gv .legend i { display: inline-block; width: 18px; height: 0; border-top: 2px solid currentColor; }
.gv .c-cyan { color: var(--gv-cyan-text); } .gv .c-ink { color: var(--gv-ink); } .gv .c-mag { color: var(--gv-magenta-text); }
/* Legend swatches keep the marks' own colours; their words use the text tokens. */
.gv .legend .c-cyan i { border-top-color: var(--gv-cyan); } .gv .legend .c-mag i { border-top-color: var(--gv-magenta); }
.gv .live { display: inline-flex; align-items: center; gap: 8px; }
.gv .live::before { content: ""; width: 8px; height: 8px; background: var(--gv-cyan); }
.gv .stage { position: relative; margin-top: 10px; }
.gv .stage canvas { display: block; width: 100%; }
.gv canvas[data-gv-inset] { display: block; width: 100%; height: 130px; }
.gv .tube { height: 300px; margin-top: 4px; }
.gv .stage-cap { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 24px; margin-top: 6px; }
.gv .ctl { display: grid; gap: 28px; margin-top: 22px; padding-top: 20px; border-top: 1.5px solid var(--gv-ink); }
.gv .ctl-block { display: grid; gap: 12px; align-content: start; }
.gv .range-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 18px; }
.gv .val { font: 400 28px/1 var(--gv-mono); color: var(--gv-ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
.gv .val small { font-size: 12px; color: var(--gv-soft); letter-spacing: .06em; }
.gv .ends { display: flex; justify-content: space-between; font: 400 12px/1.3 var(--gv-mono); color: var(--gv-soft); }
.gv input[type="range"] { -webkit-appearance: none; appearance: none; width: 100%; height: 32px; background: transparent; margin: 0; cursor: pointer; }
.gv input[type="range"]::-webkit-slider-runnable-track { height: 2px; background: var(--gv-ink); }
.gv input[type="range"]::-moz-range-track { height: 2px; background: var(--gv-ink); }
.gv input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 20px; height: 20px; margin-top: -9px;
  background: var(--gv-paper); border: 2px solid var(--gv-ink); border-radius: 0; }
.gv input[type="range"]::-moz-range-thumb { width: 16px; height: 16px; background: var(--gv-paper); border: 2px solid var(--gv-ink); border-radius: 0; }
.gv .readouts { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px 18px; align-items: baseline; }
.gv .readouts dt { font: 700 11px/1.3 var(--gv-mono); letter-spacing: .14em; text-transform: uppercase; }
.gv .readouts dd { font: 400 13px/1.35 var(--gv-mono); color: var(--gv-soft); font-variant-numeric: tabular-nums; }
.gv .readouts dd b { font: 400 24px/1 var(--gv-mono); color: var(--gv-ink); margin-right: 6px; letter-spacing: -.02em; }
.gv .readouts .drift { display: block; margin-top: 4px; }
.gv .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 0 14px; border: 1.5px solid var(--gv-ink);
  background: transparent; color: var(--gv-ink); font: 700 11.5px/1 var(--gv-mono); letter-spacing: .14em; text-transform: uppercase;
  cursor: pointer; border-radius: 0; }
.gv .btn:hover { background: var(--gv-faint); }
.gv .btns { display: flex; flex-wrap: wrap; gap: 10px; }
.gv .honest { display: grid; gap: 10px; margin-top: 26px; max-width: 110ch; font-size: 15px; line-height: 1.45; color: var(--gv-soft); }
.gv .honest strong { color: var(--gv-ink); font-weight: 650; }
.gv .noscript { border: 1.5px solid var(--gv-ink); padding: 16px 18px; margin-top: 16px; }

/* Numbers */
.gv .band { border-top: 1.5px solid var(--gv-ink); padding: 44px 0 52px; }
.gv .band-head { display: grid; gap: 14px; margin-bottom: 30px; max-width: 70ch; }
.gv .tiles { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px 24px; }
.gv .tile { border-top: 2px solid var(--gv-ink); padding-top: 12px; display: grid; gap: 10px; align-content: start; }
.gv .tile .v { font-family: var(--gv-display); font-weight: 860; font-size: clamp(2.6rem, 1.8rem + 2.4vw, 4rem); line-height: .86;
  letter-spacing: -.05em; color: var(--gv-ink); font-variant-numeric: tabular-nums lining-nums; white-space: nowrap; }
.gv .tile .v sup { font-size: .5em; letter-spacing: -.02em; vertical-align: .9em; line-height: 0; }
.gv .tile p { font-size: 15px; line-height: 1.42; color: var(--gv-body); max-width: 34ch; }
.gv .tile p.k { font-size: 11px; line-height: 1.3; color: var(--gv-soft); }
.gv .tile p.src { font-size: 12px; line-height: 1.45; color: var(--gv-soft); }
.gv .once { margin-top: 26px; font: 400 13px/1.5 var(--gv-mono); color: var(--gv-soft); max-width: 90ch; }

/* How it works */
.gv .steps { display: grid; gap: 0; }
.gv .step { display: grid; gap: 10px 32px; padding: 22px 0 26px; border-top: 1px solid var(--gv-rule); }
.gv .step:first-child { border-top: 0; padding-top: 0; }
.gv .step-n { font: 700 12px/1.3 var(--gv-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gv-soft); }
.gv .step-b { display: grid; gap: 10px; max-width: 70ch; }
.gv .step-b p { color: var(--gv-body); }
.gv .step-b .go { font: 700 11.5px/1.8 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; }
.gv .step-b .go a { text-decoration: none; border-bottom: 2px solid var(--gv-ink); padding-bottom: 2px; }
.gv .step-b .go a:hover { border-bottom-color: var(--gv-cyan); }
.gv .tag { display: inline-block; font: 700 10px/1 var(--gv-mono); letter-spacing: .12em; text-transform: uppercase; white-space: nowrap;
  padding: 3px 5px 2px; border: 1px solid currentColor; vertical-align: 2px; margin-left: 4px; }
.gv .t-ok { color: var(--gv-ok); } .gv .t-open { color: var(--gv-red); } .gv .t-id { color: var(--gv-gold-ink); }

/* Status board */
.gv .board { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px 28px; }
.gv .col { border-top: 3px solid currentColor; padding-top: 12px; display: grid; gap: 14px; align-content: start; }
.gv .col > .k { display: flex; align-items: center; gap: 8px; color: inherit; }
.gv .col ul { display: grid; gap: 12px; color: var(--gv-body); font-size: 15.5px; line-height: 1.4; }
.gv .col li { padding-left: 14px; position: relative; }
.gv .col li::before { content: ""; position: absolute; left: 0; top: .55em; width: 6px; height: 6px; background: currentColor; }
.gv .col li .src { display: block; margin-top: 2px; }
.gv .col.t-ok li::before { background: var(--gv-ok); }
.gv .col.t-id li::before { background: var(--gv-gold-ink); }
.gv .col.t-open li::before { background: var(--gv-red); }

/* Explore */
.gv .doors { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 28px; }
.gv .doors a { display: grid; gap: 6px; align-content: start; padding: 16px 0 18px; border-top: 1px solid var(--gv-rule); text-decoration: none; }
.gv .doors a strong { font-weight: 780; font-size: 1.18rem; line-height: 1.12; letter-spacing: -.02em; color: var(--gv-ink); }
.gv .doors a span { color: var(--gv-soft); font-size: 15px; line-height: 1.42; }
.gv .doors a:hover strong { text-decoration: underline 2px var(--gv-cyan); text-underline-offset: 4px; }
.gv .doors a span.k { color: var(--gv-soft); font-size: 11px; line-height: 1.3; }

/* Papers */
.gv .papers { display: grid; gap: 0; }
.gv .papers li { padding: 16px 0 18px; border-top: 1px solid var(--gv-rule); display: grid; gap: 6px; align-content: start; max-width: 86ch; }
.gv .papers li > a { font-weight: 650; color: var(--gv-ink); line-height: 1.3; text-decoration: none; }
.gv .papers li > a:hover { text-decoration: underline; }
.gv .papers p { font-size: 15px; line-height: 1.45; color: var(--gv-soft); }

@media (min-width: 640px) {
  .gv .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gv .doors { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 760px) {
  .gv .hero { padding-top: 34px; }
  .gv .tube { height: 360px; }
  .gv .step { grid-template-columns: 11rem minmax(0, 1fr); }
  .gv .board { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .gv .tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gv .ctl { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr) minmax(0, 1fr); column-gap: 44px; }
  .gv .doors { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gv .tube { height: 360px; }
}
@media (max-width: 760px) {
  .gv .wrap { width: calc(100% - 2.5rem); }
  .gv .tube { height: 300px; }
  .gv .val { font-size: 22px; }
}
@media print {
  .gv .inst { display: none; }
}

/* Explorer pages (document navigation: no shared reading layout, so the page sets its own margins). */
html body[data-rpi-document] { margin: 0; }
.gv .c-red { color: var(--gv-red); }
.gv .nw-panels { display: grid; gap: 28px; margin-top: 14px; }
.gv .nw-fig { display: grid; gap: 8px; align-content: start; min-width: 0; }
.gv .nw-fig canvas { display: block; width: 100%; }
.gv .nw-chart { height: 260px; }
.gv .nw-dev { height: 120px; }
.gv .nw-map { height: auto; aspect-ratio: 2 / 1.04; }
.gv .nw-sub { margin-top: 6px; }
.gv .nw-key { display: flex; flex-wrap: wrap; gap: 6px 18px; font: 400 12px/1.3 var(--gv-mono); color: var(--gv-soft); }
.gv .nw-key li { display: flex; align-items: center; gap: 8px; }
.gv .nw-key i { display: inline-block; width: 22px; border-top: 2px solid var(--gv-ink); }
.gv .nw-key i.d2 { border-top-style: dashed; }
.gv .nw-key i.d3 { border-top-style: dotted; }
.gv .nw-status { margin-top: 10px; min-height: 1.3em; }
.gv .nw-prog { display: grid; gap: 8px; max-width: 86ch; }
.gv .nw-prog a { font-weight: 650; }
.gv .nw-run { margin: 6px 0 0; padding: 14px 16px; border: 1px solid var(--gv-rule); background: var(--gv-faint); color: var(--gv-body);
  font: 400 12px/1.5 var(--gv-mono); white-space: pre-wrap; overflow-wrap: anywhere; max-height: 420px; overflow: auto; }
.gv .nw-back { margin-top: 26px; }
@media (min-width: 1100px) {
  .gv .nw-panels { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 44px; }
}
.gv .nw-prog > * { min-width: 0; }
.gv .nw-prog .src { overflow-wrap: anywhere; }

/* /gravity/lattice/ */
.gv .legend i.dbl { height: 5px; border-top: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; }
.gv .lt-cell { display: grid; gap: 22px; margin-top: 12px; }
.gv .lt-canvas { display: block; width: 100%; height: 380px; }
.gv .lt-side { display: grid; gap: 12px; align-content: start; }
.gv .lt-count { display: block; margin-top: 6px; font-weight: 400; letter-spacing: .06em; color: var(--gv-soft); text-transform: none; }
.gv .lt-grid { display: grid; grid-auto-flow: column; grid-template-rows: repeat(6, auto); grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.gv .lt-grid li { border: 1px solid var(--gv-rule); padding: 6px 0; text-align: center; font: 400 13px/1 var(--gv-mono); color: var(--gv-soft);
  letter-spacing: .08em; font-variant-numeric: tabular-nums; }
.gv .lt-grid li.is-found { background: var(--gv-ink); border-color: var(--gv-ink); color: var(--gv-paper); }
.gv .lt-grid li.is-new { outline: 2px solid var(--gv-magenta); outline-offset: 1px; }
.gv .lt-btns { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.gv .lt-btns .btn { letter-spacing: .06em; }
.gv .btn:disabled { opacity: .35; cursor: default; }
.gv .lt-chain { font: 400 15px/1.4 var(--gv-mono); color: var(--gv-ink); overflow-wrap: anywhere; min-height: 1.4em; }
.gv .lt-tick { display: grid; gap: 22px; margin-top: 12px; }
.gv .lt-tick-canvas { display: block; width: 100%; height: 360px; }
.gv .lt-tick-side { display: grid; gap: 14px; align-content: start; }
.gv .lt-status { border-left: 3px solid var(--gv-ink); padding: 8px 12px; background: var(--gv-faint); font-size: 15px; line-height: 1.45; color: var(--gv-ink); }
.gv .lt-classes { display: grid; gap: 12px; margin-top: 24px; }
.gv .lt-table { border-collapse: collapse; width: 100%; max-width: 40rem; font-size: 15px; }
.gv .lt-table caption { text-align: left; margin-bottom: 8px; }
.gv .lt-table th { text-align: left; font: 700 11px/1.3 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--gv-soft);
  border-bottom: 1.5px solid var(--gv-ink); padding: 6px 10px 6px 0; }
.gv .lt-table td { border-bottom: 1px solid var(--gv-rule); padding: 8px 10px 8px 0; }
.gv .lt-table .num { text-align: right; font-family: var(--gv-mono); font-variant-numeric: tabular-nums; }
.gv .lt-back { margin-top: 26px; }
@media (min-width: 1100px) {
  .gv .lt-cell { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); column-gap: 44px; align-items: start; }
  .gv .lt-canvas { height: 430px; }
  .gv .lt-tick { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); column-gap: 44px; align-items: start; }
  .gv .lt-tick-canvas { height: 420px; }
}
@media (max-width: 1099px) { .gv .ctl-block[style] { grid-column: auto !important; } }

/* /gravity/doublers/ */
.gv .db-map { display: block; width: 100%; height: auto; aspect-ratio: 2 / 1.08; margin-top: 12px; }
.gv .db-cap { display: grid; gap: 18px; margin-top: 14px; }
.gv .db-corners-wrap { display: grid; gap: 26px; margin-bottom: 40px; }
.gv .db-corners { display: grid; gap: 10px; justify-items: center; }
.gv .db-row { display: flex; gap: 8px; justify-content: center; flex-wrap: nowrap; }
.gv .db-row span { display: grid; justify-items: center; gap: 4px; min-width: 52px; padding: 8px 6px; border: 1px solid var(--gv-rule); }
.gv .db-row i { font: 400 12px/1 var(--gv-mono); font-style: normal; color: var(--gv-soft); letter-spacing: .04em; }
.gv .db-row b { font: 700 22px/1 var(--gv-mono); color: var(--gv-soft); }
.gv .db-row span.is-axis { background: var(--gv-red); border-color: var(--gv-red); }
.gv .db-row span.is-axis i, .gv .db-row span.is-axis b { color: var(--gv-paper); }
.gv .db-row span.is-origin { border: 1.5px solid var(--gv-ink); }
.gv .db-row span.is-origin b { color: var(--gv-ink); }
.gv .db-corners-side { display: grid; gap: 12px; align-content: start; max-width: 62ch; }
.gv .db-mode { display: block; width: 100%; height: 260px; margin-top: 10px; }
.gv .db-mode-cap { display: grid; gap: 12px; margin-top: 10px; }
.gv .db-log { display: grid; gap: 24px; margin-top: 10px; }
.gv .db-log-canvas { display: block; width: 100%; height: 260px; }
.gv .db-after { margin-top: 34px; }
@media (min-width: 1100px) {
  .gv .db-cap { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); column-gap: 44px; }
  .gv .db-corners-wrap { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); column-gap: 44px; align-items: center; }
  .gv .db-log { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); column-gap: 44px; align-items: start; }
  .gv .db-mode-cap { grid-template-columns: minmax(0, 1fr) auto; align-items: start; }
}
@media (max-width: 760px) {
  .gv .db-row { gap: 4px; }
  .gv .db-row span { min-width: 0; padding: 6px 3px; }
  .gv .db-row i { font-size: 10px; }
  .gv .db-row b { font-size: 17px; }
}
.gv .db-lognote { margin-top: 18px; }

/* /gravity/software/ */
.gv .sw-how { margin-top: 18px; max-width: 72ch; }
.gv .sw-list { display: grid; gap: 0; }
.gv .sw-item { display: grid; gap: 10px; padding: 22px 0 26px; border-top: 1px solid var(--gv-rule); max-width: 92ch; }
.gv .sw-item:first-child { border-top: 1.5px solid var(--gv-ink); }
.gv .sw-item h3 a { font-family: var(--gv-mono); font-weight: 700; letter-spacing: 0; text-decoration: none; border-bottom: 2px solid var(--gv-ink); }
.gv .sw-item h3 a:hover { border-bottom-color: var(--gv-cyan); }
.gv .sw-item .src, .gv .sw-hash { overflow-wrap: anywhere; }
.gv .sw-hash { font-family: var(--gv-mono); font-size: 12px; }
.gv .sw-used { font-size: 15px; color: var(--gv-soft); }
.gv .sw-v { font-size: clamp(2.2rem, 1.6rem + 1.6vw, 3.2rem); }
@media (min-width: 1100px) { .gv .sw-ports { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 62rem; } }

/* /gravity/waves/ */
.gv .wv-ladder { display: block; width: 100%; height: 200px; margin-top: 12px; }
.gv .wv-disp { display: grid; gap: 24px; margin-top: 12px; }
.gv .wv-disp-canvas { display: block; width: 100%; height: 340px; }
.gv .wv-table th[scope="row"] { font: 700 11px/1.3 var(--gv-mono); letter-spacing: .14em; text-transform: uppercase; border-bottom: 1px solid var(--gv-rule); }
@media (min-width: 1100px) { .gv .wv-disp { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); column-gap: 44px; align-items: start; } }
.gv .readouts dd b sup, .gv .val sup { font-size: .58em; vertical-align: .75em; line-height: 0; letter-spacing: 0; }
@media (min-width: 1100px) { .gv .doors-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
/* Ten explorers in three columns: the tenth closes the grid across its full width. */
@media (min-width: 1100px) { .gv .doors-10 > a:last-child { grid-column: 1 / -1; } .gv .doors-10 > a:last-child span:not(.k) { max-width: 72ch; } }
.gv .sw-sources { margin-top: 26px; max-width: 86ch; }
.gv .sw-sources + .lt-back, .gv .sw-sources + .nw-back, .gv .sw-sources + .gl-words, .gv .gl-words + .lt-back, .gv .gl-words + .nw-back { margin-top: 10px; }
.gv .gc-scale { display: block; width: 100%; height: 120px; margin-top: 12px; }
.gv [data-gc] input[type="range"] { margin-top: 6px; }

/* /gravity/horizons/ */
.gv .hz-past { display: grid; gap: 22px; margin-top: 12px; }
.gv .hz-past-canvas { display: block; width: 100%; height: 380px; }
.gv .hz-past-side { display: grid; gap: 14px; align-content: start; }
.gv .hz-count-canvas { display: block; width: 100%; height: 300px; margin-top: 12px; }
.gv .hz-btns { margin-bottom: 8px; }
.gv .hz-btns .btn[aria-pressed="true"], .gv .lt-btns .btn[aria-pressed="true"] { background: var(--gv-ink); color: var(--gv-paper); }
@media (min-width: 1100px) {
  .gv .hz-past { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); column-gap: 44px; align-items: start; }
  .gv .hz-past-canvas { height: 440px; }
}
.gv .doors-head { margin: 26px 0 0; }

/* Phones: the instrument comes into the first screen sooner. */
@media (max-width: 760px) {
  .gv .hero { padding-top: 22px; }
  .gv .hero .eyebrow { margin-bottom: 12px; }
  .gv .hero .lede { font-size: 1.05rem; line-height: 1.36; margin-top: 14px; }
  .gv .status-line { gap: 2px 14px; font-size: 10.5px; letter-spacing: .08em; margin-top: 12px; }
  .gv .inst { margin-top: 18px; }
  .gv .inst-head { gap: 4px 16px; }
  .gv .legend { gap: 2px 14px; }
  .gv .legend.k, .gv .inst-head .k { font-size: 10px; letter-spacing: .1em; }
}
.gv .stage canvas.tube { cursor: ew-resize; touch-action: pan-y; }

/* /gravity/quantum/ */
.gv .qt-hero { display: grid; gap: 22px; margin-top: 12px; }
.gv .qt-plane { display: block; width: 100%; aspect-ratio: 1 / 1; max-height: 560px; }
.gv .qt-side { display: grid; gap: 14px; align-content: start; }
.gv .qt-btns .btn[aria-pressed="true"] { background: var(--gv-ink); color: var(--gv-paper); }
.gv .qt-sol { display: grid; gap: 28px; }
.gv .qt-fig { display: grid; gap: 14px; min-width: 0; }
.gv .qt-u { display: grid; grid-template-columns: repeat(15, minmax(0, 1fr)); gap: 0 4px; max-width: 640px; }
.gv .qt-u li { display: grid; justify-items: center; gap: 6px; }
.gv .qt-bar { position: relative; width: 100%; height: 150px; }
.gv .qt-bar::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; border-top: 1.5px solid var(--gv-ink); }
.gv .qt-bar::after { content: ""; position: absolute; left: 18%; right: 18%; height: calc(var(--v) * 48%); background: var(--gv-ink); }
.gv .qt-bar.up::after { bottom: 50%; }
.gv .qt-bar.down::after { top: 50%; background: var(--gv-red); }
.gv .qt-bits { font: 400 10.5px/1 var(--gv-mono); color: var(--gv-soft); writing-mode: vertical-rl; transform: rotate(180deg); letter-spacing: .04em; }
.gv .qt-u li.on .qt-bits { color: var(--gv-ink); font-weight: 700; }
.gv .qt-check { display: grid; gap: 14px; align-content: start; }
.gv .qt-steps { margin-top: 34px; }
.gv .qt-damp-canvas { display: block; width: 100%; height: 340px; margin-top: 12px; }
.gv .qt-tests .qt-head { font-family: var(--gv-display); font-weight: 780; font-size: 1.3rem; line-height: 1.1; letter-spacing: -.02em; color: var(--gv-ink); }
.gv .qt-i { font-size: .62em; letter-spacing: 0; margin-left: .03em; }
@media (min-width: 1100px) {
  .gv .qt-hero { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); column-gap: 44px; align-items: start; }
  .gv .qt-sol { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); column-gap: 44px; align-items: start; }
  .gv .qt-damp-canvas { height: 380px; }
}
@media (max-width: 760px) { .gv .qt-bar { height: 120px; } .gv .qt-damp-canvas { height: 300px; } }

/* /gravity/vacuum/ */
.gv .c-ok { color: var(--gv-ok); } .gv .c-soft { color: var(--gv-soft); }
.gv .vc-hero { display: grid; gap: 22px; margin-top: 12px; }
.gv .vc-osc { display: block; width: 100%; height: 470px; }
.gv .vc-side { display: grid; gap: 14px; align-content: start; }
.gv .vc-scale { display: block; width: 100%; height: 150px; margin-top: 12px; }
.gv .vc-vol { display: block; width: 100%; height: 260px; margin-top: 12px; }
.gv .vc-cell { display: block; width: 100%; height: 360px; margin-top: 12px; }
.gv .vc-rec { display: block; width: 100%; height: 300px; margin-top: 12px; }
.gv .vc-steps { margin-top: 34px; }
.gv [data-vc-rec] + .tiles { margin-top: 34px; }
@media (min-width: 620px) { .gv .vc-osc { height: 300px; } }
@media (min-width: 1100px) {
  .gv .vc-hero { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); column-gap: 44px; align-items: start; }
  .gv .vc-osc { height: 340px; }
}
@media (min-width: 1100px) { .gv :is(.doors-7, .doors-8) { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* /gravity/einstein/ */
.gv .ei-hero { display: grid; gap: 22px; margin-top: 12px; }
.gv .ei-plot { display: block; width: 100%; aspect-ratio: 1 / 1; max-height: 520px; }
.gv .ei-side { display: grid; gap: 14px; align-content: start; }
.gv .ei-side [data-ei-drop][aria-pressed="true"] { background: var(--gv-ink); color: var(--gv-paper); }
.gv .ei-details { margin-top: 18px; }
.gv .ei-details summary { cursor: pointer; }
.gv .ei-table { border-collapse: collapse; margin-top: 10px; font: 400 13px/1.4 var(--gv-mono); color: var(--gv-ink); font-variant-numeric: tabular-nums; }
.gv .ei-table th, .gv .ei-table td { padding: 5px 14px 5px 0; border-bottom: 1px solid var(--gv-rule); text-align: right; }
.gv .ei-table th { font: 700 11px/1.3 var(--gv-mono); letter-spacing: .1em; color: var(--gv-soft); text-align: left; }
@media (min-width: 1100px) { .gv .ei-hero { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); column-gap: 44px; align-items: start; } }

/* /gravity/glossary/ */
.gv .gl-jump { margin-top: 18px; font: 700 11.5px/1.8 var(--gv-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--gv-soft); max-width: 90ch; }
.gv .gl-jump a { color: var(--gv-ink); white-space: nowrap; }
.gv .lp-jump { margin-top: 28px; }
.gv .gl-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; max-width: 92ch; }
.gv .gl-list dt { font: 780 1.2rem/1.15 var(--gv-display); letter-spacing: -.02em; color: var(--gv-ink); padding-top: 18px; border-top: 1px solid var(--gv-rule); }
.gv .gl-list dt:first-child { border-top: 0; padding-top: 0; }
.gv .gl-list dd { margin: 8px 0 18px; color: var(--gv-body); font-size: 16px; line-height: 1.5; max-width: 72ch; }
.gv .gl-go { display: inline-block; margin-left: 8px; font: 700 11px/1.3 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; text-decoration: none; border-bottom: 2px solid var(--gv-cyan); }
.gv .gl-math { font-family: var(--gv-display); }
.gv .gl-find { display: grid; gap: 8px; margin-top: 26px; max-width: 34rem; }
.gv .gl-find input { font: 400 17px/1.3 var(--gv-text); color: var(--gv-ink); background: var(--gv-paper); border: 1px solid var(--gv-ink); border-radius: 0; padding: 11px 12px; width: 100%; box-sizing: border-box; }
.gv .gl-find input::placeholder { color: var(--gv-soft); opacity: 1; }
.gv .gl-count { font: 400 13px/1.4 var(--gv-mono); color: var(--gv-soft); min-height: 1.4em; }
.gv .lb-scope { margin-top: 26px; max-width: 90ch; }
/* /gravity/einstein/#slope: which actions keep flat space a vacuum. */
.gv .sl-fig { display: grid; gap: 22px; margin-top: 12px; }
.gv .sl-col { display: grid; gap: 12px; align-content: start; min-width: 0; }
.gv .sl-plot { display: block; width: 100%; height: 300px; }
.gv .sl-pick { font: 400 15px/1.3 var(--gv-text); color: var(--gv-ink); background: var(--gv-paper); border: 1px solid var(--gv-ink); border-radius: 0; padding: 9px 10px; width: 100%; max-width: 30rem; }
.gv .sl-verdict { font-size: 15px; line-height: 1.45; color: var(--gv-ink); min-height: 2.9em; }
.gv .sl-verdict[data-stat="true"] { color: var(--gv-ok); }
.gv .sl-small { font-size: 16px !important; letter-spacing: 0 !important; }
@media (min-width: 1000px) { .gv .sl-fig { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); column-gap: 44px; } }
/* /gravity/source/: one unit on the lattice. */
.gv .ps-fig { display: grid; gap: 22px; margin-top: 12px; }
.gv .ps-figcol { display: grid; gap: 10px; align-content: start; min-width: 0; }
.gv .ps-side { display: grid; gap: 14px; align-content: start; }
.gv .ps-map, .gv .ps-tick { display: block; width: 100%; aspect-ratio: 1 / 1; max-height: 520px; }
.gv .ps-plot { display: block; width: 100%; height: 300px; }
.gv .ps-hist { display: block; width: 100%; height: 150px; }
.gv .ps-rates { display: block; width: 100%; height: 300px; }
.gv .ps-cell { font: 400 13px/1.45 var(--gv-mono); color: var(--gv-ink); min-height: 2.9em; }
.gv .ps-word { font-size: 16px !important; letter-spacing: 0 !important; }
.gv [data-ps-field]:not([data-mode="posting"]) .ps-post-only, .gv [data-ps-field][data-mode="posting"] .ps-count-only { display: none; }
@media (min-width: 1000px) { .gv .ps-fig { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 44px; } }
/* Search every gravity page (the landing's explore band). */
.gv .gs { display: grid; gap: 8px; margin: 22px 0 8px; max-width: 52rem; }
.gv .gs input { font: 400 17px/1.3 var(--gv-text); color: var(--gv-ink); background: var(--gv-paper); border: 1px solid var(--gv-ink); border-radius: 0; padding: 11px 12px; width: 100%; box-sizing: border-box; max-width: 34rem; }
.gv .gs input::placeholder { color: var(--gv-soft); opacity: 1; }
.gv .gs-count { font: 400 13px/1.4 var(--gv-mono); color: var(--gv-soft); min-height: 1.4em; }
.gv .gs-results { list-style: none; margin: 0; padding: 0; display: grid; }
.gv .gs-results li { padding: 12px 0; border-top: 1px solid var(--gv-rule); }
.gv .gs-results a { display: grid; gap: 2px; text-decoration: none; color: var(--gv-ink); }
.gv .gs-results a strong { font-weight: 650; font-size: 16px; line-height: 1.3; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.gv .gs-results p { margin: 4px 0 0; font-size: 14.5px; line-height: 1.45; color: var(--gv-body); overflow-wrap: anywhere; }
.gv .gs-results mark { background: color-mix(in srgb, var(--gv-cyan) 28%, var(--gv-paper)); color: var(--gv-ink); padding: 0 1px; }
.gv .gs-more { justify-self: start; margin-top: 6px; }
/* The entry a link points at. */
.gv .gl-list dt:target { color: var(--gv-cyan-text); }
.gv .gl-list dt:target::before { content: ""; display: inline-block; width: 10px; height: 10px; margin-right: 10px; background: var(--gv-cyan); vertical-align: .12em; }
@media (min-width: 900px) {
  .gv .gl-list { grid-template-columns: 16rem minmax(0, 1fr); column-gap: 32px; }
  .gv .gl-list dt { padding-top: 16px; }
  .gv .gl-list dd { margin: 0; padding: 16px 0; border-top: 1px solid var(--gv-rule); }
  .gv .gl-list dt:first-child + dd { border-top: 0; padding-top: 0; }
  .gv .gl-list dt:first-child { padding-top: 0; }
}
@media (min-width: 1100px) { .gv .doors-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.gv .ei-five { display: grid; gap: 16px; margin-top: 8px; }
.gv .ei-five-canvas { display: block; width: 100%; max-width: 720px; height: 230px; }
.gv .ei-five-ctl { display: grid; gap: 12px; max-width: 720px; }

/* The tour film on the landing */
.gv .tour { display: grid; gap: 14px; max-width: 960px; }
.gv .tour video { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; background: var(--gv-faint); border: 1.5px solid var(--gv-ink); }
.gv .tour-script summary { cursor: pointer; }
.gv .tour-script ol { list-style: decimal; padding-left: 1.4em; margin-top: 10px; display: grid; gap: 6px; font-size: 15px; line-height: 1.4; }
.gv .lp-chart { display: block; width: 100%; height: 300px; margin-top: 12px; }

/* Where it stands (/gravity/status/): the paper's ten parts on a ring, each part's box beside it. */
.gv .st-inst { display: grid; gap: 30px; margin-top: 26px; }
.gv .st-mapcol { display: grid; gap: 14px; align-content: start; min-width: 0; }
.gv .st-inst > .noscript { margin-top: 0; }
@media (min-width: 1240px) {
  .gv .st-inst { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); column-gap: 48px; align-items: start; }
  .gv .st-mapcol { position: sticky; top: 16px; }
  .gv .st-inst:has(> .st-mapcol[hidden]) { grid-template-columns: minmax(0, 1fr); }
}
.gv .st-order .btn[aria-pressed="true"] { background: var(--gv-ink); color: var(--gv-paper); }
.gv .st-ring { position: relative; width: 100%; height: 520px; --st-half: 22px; }
.gv .st-chords { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.gv .st-chord { fill: none; stroke: var(--gv-hair); stroke-width: 1.2; }
.gv .st-chord.is-mutual { stroke-dasharray: 5 4; }
.gv .st-chord.is-rel { stroke: var(--gv-soft); stroke-width: 1.8; }
.gv .st-chord.is-on { stroke: var(--gv-ink); stroke-width: 2.4; }
.gv .st-spoke { fill: none; stroke: var(--gv-soft); stroke-width: 1.2; stroke-dasharray: 2 4; }
.gv .st-ah { fill: var(--gv-hair); }
.gv .st-ah-on { fill: var(--gv-ink); }
.gv .st-node { position: absolute; left: 50%; top: 50%; display: flex; align-items: center; gap: 10px; width: max-content;
  text-decoration: none; color: var(--gv-ink); transform: translate(calc(-1 * var(--st-half)), -50%); }
.gv .st-node[data-side="l"] { flex-direction: row-reverse; text-align: right; transform: translate(calc(-100% + var(--st-half)), -50%); }
.gv .st-node[data-side="t"] { flex-direction: column-reverse; text-align: center; transform: translate(-50%, calc(-100% + var(--st-half))); }
.gv .st-node[data-side="b"] { flex-direction: column; text-align: center; gap: 6px;
  transform: translate(-50%, calc(-1 * var(--st-half))); }
.gv .st-dot { flex: none; display: grid; place-items: center; width: calc(2 * var(--st-half)); height: calc(2 * var(--st-half));
  border: 1.5px solid var(--gv-ink); background: var(--gv-paper); font: 700 15px/1 var(--gv-mono); color: var(--gv-ink); }
.gv .st-node:hover .st-dot { background: var(--gv-faint); }
.gv .st-node.is-rel .st-dot { border-width: 3px; }
.gv .st-node[aria-current="true"] .st-dot { background: var(--gv-ink); color: var(--gv-paper); }
.gv .st-label { display: grid; gap: 3px; max-width: 12ch; font-size: 15px; transition: opacity .2s; }
.gv .st-node[data-side="t"] .st-label, .gv .st-node[data-side="b"] .st-label { justify-items: center; }
.gv .st-node[data-side="l"] .st-label { justify-items: end; }
.gv .st-name { font-weight: 720; font-size: 15px; line-height: 1.15; letter-spacing: -.01em; text-wrap: balance; }
.gv .st-node:hover .st-name { text-decoration: underline 2px var(--gv-cyan); text-underline-offset: 3px; }
.gv .st-dec { font: 700 10px/1.2 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--gv-red); }
.gv .st-ord { font: 700 10.5px/1 var(--gv-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--gv-soft); }
.gv .st-ord:empty { display: none; }
.gv .st-ring.is-moving .st-label { opacity: 0; }
.gv .st-ring.is-narrow { --st-half: 20px; }
.gv .st-ring.is-narrow .st-node { transform: translate(-50%, -50%); }
.gv .st-ring.is-narrow .st-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.gv .st-key { display: none; }
.gv .st-ring.is-narrow + .st-key { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 14px; font-size: 14px; line-height: 1.3; color: var(--gv-body); }
.gv .st-key b { display: inline-block; min-width: 2.4ch; font: 700 13px/1 var(--gv-mono); color: var(--gv-ink); }
.gv .st-how { max-width: 62ch; }
.gv .st-boxes { display: grid; gap: 36px; min-width: 0; }
.gv .st-box { display: grid; gap: 12px; align-content: start; border-top: 2px solid var(--gv-ink); padding-top: 14px; }
.gv .st-box h3 { font-size: clamp(1.5rem, 1.2rem + .9vw, 2.1rem); }
.gv .st-plain { font-size: 1.08rem; line-height: 1.38; color: var(--gv-ink); max-width: 60ch; }
.gv .st-dl dt { display: flex; align-items: center; gap: 8px; margin-top: 12px; font: 700 11px/1.3 var(--gv-mono); letter-spacing: .14em;
  text-transform: uppercase; color: var(--gv-soft); }
.gv .st-dl dt::before { content: ""; flex: none; width: 9px; height: 9px; border: 1.5px solid var(--gv-soft); }
.gv .st-dl dt.st-ok { color: var(--gv-ok); } .gv .st-dl dt.st-ok::before { background: var(--gv-ok); border-color: var(--gv-ok); }
.gv .st-dl dt.st-id { color: var(--gv-gold-ink); } .gv .st-dl dt.st-id::before { background: var(--gv-gold); border-color: var(--gv-gold); }
.gv .st-dl dt.st-open { color: var(--gv-red); } .gv .st-dl dt.st-open::before { background: var(--gv-red); border-color: var(--gv-red); }
.gv .st-dl dd { margin-top: 4px; font-size: 15.5px; line-height: 1.48; color: var(--gv-body); max-width: 68ch; }
.gv .st-rel { font-size: 15px; line-height: 1.45; color: var(--gv-soft); border-left: 2px solid var(--gv-rule); padding-left: 12px; max-width: 68ch; }
.gv .st-box .go { font: 700 11.5px/1.8 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; }
.gv .st-box .go a { text-decoration: none; border-bottom: 2px solid var(--gv-ink); padding-bottom: 1px; }
.gv .st-box .go a:hover { border-bottom-color: var(--gv-cyan); }
/* #premises: Table 2 as rows; switched-off premises dim the rows that rest on them. */
.gv .st-sw { display: grid; gap: 10px; margin-bottom: 18px; }
.gv .st-swb[aria-pressed="true"] { background: var(--gv-ink); color: var(--gv-paper); }
.gv .st-swb[aria-pressed="false"] { text-decoration: line-through; text-decoration-thickness: 1.5px; }
.gv .st-sum { font: 400 14px/1.45 var(--gv-mono); color: var(--gv-ink); min-height: 2.9em; max-width: 90ch; }
.gv .st-rows { display: grid; }
.gv .st-row, .gv .st-t2-head { display: grid; grid-template-columns: 14px minmax(0, 1fr); gap: 4px 12px; padding: 12px 0; border-top: 1px solid var(--gv-rule); align-items: start; }
.gv .st-t2-head { display: none; }
.gv .st-row > :not(.st-mark) { grid-column: 2; }
.gv .st-mark { width: 10px; height: 10px; margin-top: 5px; background: var(--gv-ok); }
.gv .st-row[data-s="pending"] .st-mark, .gv .st-row[data-s="numerical"] .st-mark, .gv .st-row[data-s="inference"] .st-mark { background: transparent; border: 1.5px solid var(--gv-ok); }
.gv .st-row[data-s="open"] .st-mark { background: var(--gv-red); }
.gv .st-row.is-falls .st-mark { background: transparent; border: 1.5px solid var(--gv-red); }
.gv .st-row.is-part .st-mark { background: var(--gv-gold); border: 0; }
.gv .st-res { font-size: 15.5px; line-height: 1.35; color: var(--gv-ink); }
.gv .st-res b { font-weight: 650; }
.gv .st-res .tag { color: var(--gv-soft); }
.gv .st-ref { display: block; font: 400 12px/1.45 var(--gv-mono); color: var(--gv-soft); margin-top: 2px; }
.gv .st-kap { font: 700 12.5px/1.4 var(--gv-mono); color: var(--gv-ink); white-space: nowrap; }
.gv .st-oth { font-size: 14.5px; line-height: 1.42; color: var(--gv-body); }
.gv .st-state { font: 700 11px/1.3 var(--gv-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--gv-red); }
.gv .st-state:empty { display: none; }
.gv .st-row.is-part .st-state { color: var(--gv-gold-ink); }
.gv .st-row[data-s="open"] .st-state { color: var(--gv-red); }
.gv .st-row.is-falls :is(.st-res, .st-res b, .st-kap, .st-oth) { color: var(--gv-soft); }
.gv .st-row.is-falls .st-res b { font-weight: 500; }
.gv .st-t2-note { margin-top: 14px; max-width: 100ch; }
.gv .st-lab { font: 700 10.5px/1.3 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--gv-soft); }
@media (min-width: 900px) {
  .gv .st-row, .gv .st-t2-head { grid-template-columns: 14px minmax(0, 1.25fr) 7.5rem minmax(0, 1.75fr) 9.5rem; column-gap: 18px; }
  .gv .st-t2-head { display: grid; padding: 0 0 8px; border-top: 0; }
  .gv .st-row > :not(.st-mark) { grid-column: auto; }
  .gv .st-state:empty { display: block; }
  .gv .st-lab { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
/* Landing papers: three groups; each programme paper lists the pages that show it live. */
.gv .papers-groups { display: grid; gap: 34px 48px; }
.gv .papers-group { display: grid; gap: 10px; align-content: start; min-width: 0; }
.gv .papers-group h3 { padding-bottom: 2px; }
.gv .papers-live { font-size: 14px; line-height: 1.5; }
.gv .papers-live .k { margin-right: 8px; }
.gv .papers-live a { color: var(--gv-ink); }
@media (min-width: 1100px) {
  .gv .papers-groups { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .gv .papers-more { grid-column: 1 / -1; }
  .gv .papers-more .papers { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
}
/* /gravity/einstein/#obstruction */
.gv .es-plot { display: block; width: 100%; height: 340px; }
.gv [data-es-move][aria-pressed="true"] { background: var(--gv-ink); color: var(--gv-paper); }
/* High-contrast (forced colours) mode removes background colours; the status squares and marks keep theirs, since they carry meaning. */
@media (forced-colors: active) {
  .gv :is(.status-line .sq, .st-mark, .gr-m, .st-dl dt, .board) { forced-color-adjust: none; }
}
/* Print: the status page prints all ten boxes and Table 2, without the ring and its buttons; blocks keep together. */
@media print {
  .gv .st-mapcol, .gv .st-sw, .gv .st-inst > .noscript { display: none !important; }
  .gv .st-inst { display: block; }
  .gv .st-boxes .st-box[hidden] { display: grid !important; }
  .gv :is(.st-box, .st-row, .step, .tile) { break-inside: avoid; }
  .gv :is(.st-dl dt, .st-mark, .status-line .sq, .board, .gr-m) { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
/* /gravity/lattice/#cell4d */
.gv .lt4-fig { display: grid; gap: 22px; margin-top: 12px; }
.gv .lt4-canvas { display: block; width: 100%; aspect-ratio: 1 / 1; max-height: 560px; }
.gv .lt4-side { display: grid; gap: 14px; align-content: start; }
.gv .lt4-chain { font-size: 18px !important; letter-spacing: 0 !important; }
@media (min-width: 1000px) { .gv .lt4-fig { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); column-gap: 44px; align-items: center; } }
/* /gravity/graviton/: the candidates against Target 6.8, and the computed remainders. */
.gv .gr-key .gr-m { width: 12px; height: 12px; }
.gv .gr-tools { display: grid; gap: 10px; margin: 18px 0 14px; }
.gv [data-gr-f][aria-pressed="true"] { background: var(--gv-ink); color: var(--gv-paper); }
.gv .gr-sum { font: 400 14px/1.45 var(--gv-mono); color: var(--gv-ink); }
.gv .gr-rows { display: grid; }
.gv .gr-row, .gv .gr-head { display: grid; grid-template-columns: repeat(4, 34px) minmax(0, 1fr); gap: 6px 10px; padding: 12px 0; border-top: 1px solid var(--gv-rule); align-items: start; }
.gv .gr-head { display: none; }
.gv .gr-name { grid-column: 1 / -1; font-weight: 650; font-size: 15.5px; line-height: 1.3; color: var(--gv-ink); }
.gv .gr-say { grid-column: 1 / -1; font-size: 14.5px; line-height: 1.45; color: var(--gv-body); }
.gv .gr-say .src { display: block; margin-top: 3px; }
.gv .gr-m { display: inline-block; width: 16px; height: 16px; margin-top: 2px; border: 1px solid var(--gv-rule); }
.gv .gr-row .gr-m { position: relative; }
.gv .gr-row .gr-m::after { content: attr(data-c); position: absolute; left: 21px; top: -1px; font: 700 11px/1 var(--gv-mono); color: var(--gv-soft); }   /* the condition's letter, on phones */
.gv .gr-pass { background: var(--gv-ok); border-color: var(--gv-ok); }
.gv .gr-fail { background: var(--gv-ink); border-color: var(--gv-ink); }
.gv .gr-fail.gr-num { background: transparent; border: 2px solid var(--gv-ink); }
.gv .gr-fail.gr-pend { background: linear-gradient(135deg, var(--gv-ink) 50%, transparent 50%); border: 2px solid var(--gv-ink); }   /* half filled: proof complete, verification pending */
.gv .gr-pass.gr-num { background: transparent; border: 2px solid var(--gv-ok); }
.gv .gr-open { background: var(--gv-red); border-color: var(--gv-red); }
.gv .gr-col { background: none; border: 0; padding: 0; text-align: left; cursor: pointer; color: var(--gv-soft); }
.gv [data-gr][data-col="a"] .gr-m[data-c="a"], .gv [data-gr][data-col="b"] .gr-m[data-c="b"],
.gv [data-gr][data-col="c"] .gr-m[data-c="c"], .gv [data-gr][data-col="d"] .gr-m[data-c="d"] { outline: 3px solid var(--gv-cyan); outline-offset: 2px; }
.gv .gr-clauses { margin-top: 22px; display: grid; gap: 10px; }
.gv .gr-dl { display: grid; gap: 4px 18px; }
.gv .gr-dl dt { font: 700 11.5px/1.3 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--gv-ink); margin-top: 8px; cursor: pointer; }
.gv .gr-dl dt.is-on { color: var(--gv-cyan-text); }
.gv .gr-dl dd { font-size: 15px; line-height: 1.45; color: var(--gv-body); max-width: 80ch; }
.gv .gr-plane { display: block; width: 100%; height: 420px; margin-top: 10px; }
.gv .gr-pick { display: grid; gap: 10px; margin-top: 12px; }
.gv .gr-read { font-size: 15px; line-height: 1.45; color: var(--gv-ink); min-height: 2.9em; max-width: 72ch; }
@media (min-width: 900px) {
  .gv .gr-row, .gv .gr-head { grid-template-columns: minmax(0, 1.2fr) repeat(4, 30px) minmax(0, 2fr); column-gap: 14px; }
  .gv .gr-head { display: grid; padding: 0 0 8px; border-top: 0; }
  .gv .gr-name, .gv .gr-say { grid-column: auto; }
  .gv .gr-m { justify-self: center; }
  .gv .gr-row .gr-m::after { content: none; }
  .gv .gr-dl { grid-template-columns: 15rem minmax(0, 1fr); }
  .gv .gr-dl dt { margin-top: 0; }
}
.gv .band-head .go { font: 700 11.5px/1.8 var(--gv-mono); letter-spacing: .1em; text-transform: uppercase; }
.gv .band-head .go a { text-decoration: none; border-bottom: 2px solid var(--gv-ink); padding-bottom: 1px; }
.gv .band-head .go a:hover { border-bottom-color: var(--gv-cyan); }
/* Table 2 rows open their part on the ring; the selected part's rows are marked. */
.gv .st-row { cursor: pointer; }
.gv .st-row:hover { background: var(--gv-faint); }
.gv .st-row.is-sel { box-shadow: inset 3px 0 0 var(--gv-ink); background: var(--gv-faint); }
/* Landing: the open targets, as the papers state them. */
.gv .nx-groups { display: grid; gap: 34px 48px; }
.gv .nx-group { display: grid; gap: 12px; align-content: start; min-width: 0; }
.gv .nx-list { display: grid; }
.gv .nx-list li { display: grid; gap: 6px; padding: 14px 0 16px; border-top: 1px solid var(--gv-rule); }
.gv .nx-t { font-weight: 720; font-size: 1.12rem; line-height: 1.2; letter-spacing: -.015em; color: var(--gv-ink); }
.gv .nx-list li p:not(.nx-t):not(.src) { font-size: 15px; line-height: 1.45; color: var(--gv-body); max-width: 62ch; }
.gv .nx-more { margin-top: 4px; max-width: 62ch; }
@media (min-width: 1000px) { .gv .nx-groups { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
