.map-exhibit {
  display: grid;
  grid-template-columns: minmax(12rem, 0.42fr) minmax(0, 1fr);
  gap: clamp(1.5rem, 5vw, 4rem);
  align-items: center;
  margin-top: 1.5rem;
}

.layer-controls {
  display: grid;
  gap: 0.6rem;
}

.layer-control {
  display: grid;
  grid-template-columns: 1.3rem 1fr;
  gap: 0.65rem;
  align-items: start;
  min-height: 2.75rem;
  border-bottom: 1px solid rgb(23 27 32 / 0.18);
  padding-block: 0.55rem;
}

.layer-control input {
  width: 1.2rem;
  height: 1.2rem;
  margin-top: 0.2rem;
}

.layer-control small {
  display: block;
  color: var(--ink-soft);
}

.kalisz-map-figure {
  min-width: 0;
  margin: 0;
}

.kalisz-map {
  position: relative;
  aspect-ratio: 10 / 7;
  overflow: hidden;
  border: var(--edge-width) solid rgb(23 27 32 / var(--edge-alpha));
  border-radius: var(--edge-radius);
  background:
    radial-gradient(circle at 47% 47%, rgb(102 76 130 / 0.08), transparent 46%),
    var(--paper-deep);
}

.kalisz-map-base,
.kalisz-map-locator,
.map-layer {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}

.kalisz-map-base {
  z-index: 0;
  color: var(--ink-soft);
}

.kalisz-grid path {
  fill: none;
  stroke: currentColor;
  stroke-dasharray: 2 11;
  stroke-opacity: 0.16;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.kalisz-map-kicker,
.kalisz-map-coordinates {
  fill: currentColor;
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.12em;
}

.kalisz-map-coordinates {
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.06em;
}

.map-layer {
  opacity: 0;
  transition: opacity 180ms ease;
  object-fit: cover;
}

.map-layer[data-visible="true"] {
  opacity: 1;
}

.map-layer-politica {
  z-index: 4;
}

.map-layer-language {
  z-index: 2;
  overflow: visible;
  color: #541e18;
  pointer-events: none;
}

.map-layer-watershed {
  z-index: 3;
}

.map-layer-lights {
  z-index: 1;
}

.dialect-route {
  position: absolute;
  display: block;
  opacity: 0.75;
}

.dialect-route-north {
  top: 0;
  left: 47%;
  height: 47%;
  border-left: 2px dashed currentColor;
}

.dialect-route-east {
  top: 47%;
  right: 0;
  left: 47%;
  border-top: 2px dashed currentColor;
}

.dialect-point {
  position: absolute;
  display: block;
  max-width: min(17rem, 42%);
  border: 1px solid currentColor;
  border-radius: 0.35rem;
  background: rgb(255 250 242 / 0.93);
  padding: 0.38rem 0.5rem;
  font-family: var(--sans);
  font-size: clamp(0.55rem, 1.35vw, 0.78rem);
  line-height: 1.25;
  box-shadow: 0 0.25rem 1.25rem rgb(23 27 32 / 0.13);
}

.dialect-point strong,
.dialect-point small {
  display: block;
}

.dialect-point small {
  margin-top: 0.15rem;
  color: #653a33;
}

.dialect-point-kalisz {
  top: 47%;
  left: 47%;
  width: 0.8rem;
  height: 0.8rem;
  max-width: none;
  overflow: hidden;
  border: 3px solid #fffaf2;
  border-radius: 50%;
  background: currentColor;
  padding: 0;
  color: transparent;
  box-shadow: 0 0 0 4px rgb(125 47 37 / 0.32);
  transform: translate(-50%, -50%);
}

.dialect-point-stawiszyn {
  top: 0.65rem;
  left: 47%;
  transform: translateX(-50%);
}

.dialect-point-zlotniki {
  top: 47%;
  right: 0.65rem;
  transform: translateY(-50%);
}

.dialect-model-card {
  position: absolute;
  bottom: 0.65rem;
  left: 0.65rem;
  width: min(24rem, 54%);
  border: 1px solid rgb(125 47 37 / 0.52);
  border-radius: 0.4rem;
  background: rgb(255 250 242 / 0.94);
  padding: clamp(0.55rem, 1.5vw, 0.8rem);
  font-family: var(--sans);
  box-shadow: 0 0.5rem 1.8rem rgb(23 27 32 / 0.16);
}

.dialect-model-card > strong {
  display: block;
  font-size: clamp(0.72rem, 1.6vw, 0.95rem);
}

.dialect-model-card ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.28rem 0.6rem;
  margin: 0.45rem 0;
  padding: 0;
  list-style: none;
}

.dialect-model-card li {
  color: #653a33;
  font-size: clamp(0.52rem, 1.15vw, 0.68rem);
  line-height: 1.25;
}

.dialect-model-card li span {
  display: block;
  color: #541e18;
  font-weight: 850;
}

.dialect-model-card > small {
  display: block;
  border-top: 1px solid rgb(125 47 37 / 0.25);
  padding-top: 0.4rem;
  color: #653a33;
  font-size: clamp(0.48rem, 1vw, 0.62rem);
  line-height: 1.3;
}

.kalisz-map-locator {
  z-index: 5;
  color: var(--ink);
  pointer-events: none;
}

.kalisz-map-locator circle:first-child {
  fill: var(--paper);
  stroke: var(--ink);
  stroke-width: 3px;
}

.kalisz-map-locator .locator-ring,
.kalisz-map-locator path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5px;
  vector-effect: non-scaling-stroke;
}

.kalisz-map-locator .locator-ring {
  stroke-dasharray: 2 5;
}

.kalisz-map-locator text {
  fill: currentColor;
  font-family: var(--sans);
  font-size: 20px;
  font-weight: 850;
  paint-order: stroke;
  stroke: var(--paper);
  stroke-width: 5px;
}

.kalisz-map-figure figcaption {
  margin-top: 0.7rem;
  color: var(--ink-soft);
  font-size: 0.76rem;
  line-height: 1.45;
}

.gradient-exhibit {
  margin-top: 1.5rem;
}

.color-spectrum {
  position: relative;
  height: clamp(9rem, 24vw, 15rem);
  border: var(--edge-width) solid rgb(23 27 32 / var(--edge-alpha));
  border-radius: var(--edge-radius);
  background: linear-gradient(90deg, #1648a1, #087f8c 52%, #58a236);
}

.spectrum-marker {
  position: absolute;
  top: 0;
  bottom: 0;
  left: var(--position);
  width: max(3px, var(--edge-width) * 3);
  background: #fff;
  box-shadow: 0 0 0 2px rgb(23 27 32 / 0.72);
  pointer-events: none;
}

.gradient-range {
  width: 100%;
  min-height: 2.75rem;
  margin-top: 0.75rem;
}

.gradient-labels {
  display: flex;
  justify-content: space-between;
  font-weight: 700;
}

.history-markers {
  position: relative;
  height: 1.5rem;
  margin-block: 0.5rem 1rem;
  border-bottom: 1px solid var(--line);
}

.history-marker {
  position: absolute;
  bottom: -0.3rem;
  left: var(--position);
  width: 0.6rem;
  height: 0.6rem;
  border-radius: 50%;
  background: var(--violet);
  transform: translateX(-50%);
}

.exhibit-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  align-items: center;
  margin-top: 1rem;
}

.pile-exhibit {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(15rem, 0.65fr);
  gap: clamp(1.5rem, 5vw, 4rem);
  align-items: center;
  margin-top: 1.5rem;
}

.grain-stage {
  display: flex;
  min-height: 22rem;
  align-items: flex-end;
  justify-content: center;
  overflow: hidden;
  border-bottom: calc(var(--edge-width) * 4) solid var(--ink);
  padding: 2rem 1rem 0;
}

.grain-pile {
  display: flex;
  width: min(100%, 32rem);
  flex-wrap: wrap-reverse;
  justify-content: center;
  align-content: flex-start;
  gap: 0.28rem;
}

.grain {
  width: clamp(0.85rem, 2.4vw, 1.4rem);
  height: clamp(0.4rem, 1.2vw, 0.68rem);
  border: 1px solid #6d4a19;
  border-radius: 60% 35% 60% 35%;
  background: #c89446;
  box-shadow: inset 0 -2px 0 rgb(109 74 25 / 0.28);
}

.grain-rotation-0 { transform: rotate(-20deg); }
.grain-rotation-1 { transform: rotate(-13deg); }
.grain-rotation-2 { transform: rotate(-6deg); }
.grain-rotation-3 { transform: rotate(1deg); }
.grain-rotation-4 { transform: rotate(8deg); }
.grain-rotation-5 { transform: rotate(15deg); }
.grain-rotation-6 { transform: rotate(22deg); }

.pile-controls {
  display: grid;
  gap: 0.85rem;
}

.pile-count {
  font-family: var(--serif);
  font-size: clamp(1.35rem, 3vw, 2.2rem);
  line-height: 1.2;
}

.pile-range {
  width: 100%;
  min-height: 2.75rem;
}

.threshold-history {
  margin-top: 1.5rem;
  border-top: 1px solid rgb(23 27 32 / 0.22);
  padding-top: 1rem;
}

.river-exhibit,
.organism-exhibit,
.horizon-exhibit,
.history-exhibit,
.digital-exhibit {
  margin-top: 1.5rem;
}

.river-stage {
  position: relative;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border: var(--edge-width) solid rgb(23 27 32 / var(--edge-alpha));
  border-radius: var(--edge-radius);
  background: #172128;
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.12);
}

.river-map-base,
.river-map-layer {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.river-map-base {
  filter: saturate(0.7) contrast(1.08) brightness(0.82);
}

.river-map-layer {
  opacity: 0;
  transition: opacity 240ms ease;
}

.river-map-layer[data-visible="true"] {
  opacity: 1;
}

.river-map-hydro { z-index: 2; }
.river-map-flood { z-index: 3; }
.river-map-divides {
  z-index: 4;
  mix-blend-mode: screen;
}

.river-map-heading {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  z-index: 6;
  max-width: calc(100% - 5rem);
  border-left: 3px solid #e8c275;
  background: rgb(11 18 23 / 0.8);
  color: #f8f1e5;
  padding: 0.45rem 0.65rem;
  font-family: var(--sans);
  backdrop-filter: blur(5px);
}

.river-map-heading strong,
.river-map-heading span {
  display: block;
}

.river-map-heading strong {
  font-size: clamp(0.72rem, 1.8vw, 1rem);
}

.river-map-heading span {
  margin-top: 0.12rem;
  color: rgb(248 241 229 / 0.72);
  font-size: clamp(0.52rem, 1.2vw, 0.68rem);
  letter-spacing: 0.05em;
}

.river-map-north {
  position: absolute;
  top: 0.8rem;
  right: 0.8rem;
  z-index: 6;
  display: grid;
  width: 2.3rem;
  place-items: center;
  color: #f8f1e5;
  font-family: var(--sans);
  font-size: 0.62rem;
  font-weight: 850;
}

.river-map-north span {
  width: 0;
  height: 0;
  border-right: 0.38rem solid transparent;
  border-bottom: 1.2rem solid #e8c275;
  border-left: 0.38rem solid transparent;
}

.river-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 1rem;
  align-items: center;
  border: 1px solid var(--line);
  border-top: 0;
  padding: 0.55rem 0.7rem;
  color: var(--ink-soft);
  font-size: 0.7rem;
}

.river-map-legend[hidden] { display: none; }

.river-map-legend > strong {
  color: var(--ink);
  font-family: var(--sans);
}

.river-legend-item {
  display: inline-flex;
  gap: 0.35rem;
  align-items: center;
}

.river-legend-item i {
  width: 1.2rem;
  border-top: 3px solid;
}

.river-legend-q10 i { color: #00b844; }
.river-legend-q1 i { color: #ff9800; }
.river-legend-q02 i { color: #e3291d; }

.river-map-source,
.river-map-caveat {
  margin: 0.65rem 0 0;
  color: var(--ink-soft);
  font-size: 0.72rem;
  line-height: 1.45;
}

.river-map-source {
  font-family: var(--sans);
  font-weight: 750;
}

.river-map-caveat {
  border-left: 2px solid var(--ochre);
  padding-left: 0.7rem;
}

.exhibit-range {
  width: 100%;
  min-height: 2.75rem;
  margin-top: 0.8rem;
}

.exhibit-output {
  display: block;
  min-height: 3rem;
  margin-top: 0.75rem;
  font-family: var(--serif);
  font-size: clamp(1.1rem, 2vw, 1.45rem);
  line-height: 1.4;
}

.organism-stage {
  display: grid;
  grid-template-columns: minmax(15rem, 0.78fr) minmax(0, 1.22fr);
  overflow: hidden;
  border: var(--edge-width) solid rgb(23 27 32 / var(--edge-alpha));
  border-radius: var(--edge-radius);
  background: var(--paper);
}

.organism-figure {
  position: relative;
  display: grid;
  min-height: 28rem;
  place-items: center;
  border-right: 1px solid rgb(23 27 32 / 0.15);
  padding: 1rem;
  background:
    radial-gradient(circle at 50% 45%, rgb(102 76 130 / 0.14), transparent 44%),
    linear-gradient(145deg, rgb(23 54 93 / 0.04), rgb(163 61 45 / 0.05));
}

.organism-figure svg {
  display: block;
  width: min(100%, 21rem);
  height: auto;
}

.organism-contours path {
  fill: rgb(244 240 231 / 0.68);
  stroke: rgb(23 27 32 / 0.55);
  stroke-width: 1.4;
  vector-effect: non-scaling-stroke;
}

.organism-contours path:nth-child(2) {
  fill: rgb(102 76 130 / 0.07);
  stroke-dasharray: 5 5;
}

.organism-contours path:nth-child(3) {
  fill: rgb(163 61 45 / 0.08);
  stroke: rgb(163 61 45 / 0.65);
}

.organism-links path {
  fill: none;
  stroke: rgb(23 27 32 / 0.24);
  stroke-dasharray: 3 6;
  stroke-width: 1;
}

.organism-case-node circle {
  fill: var(--paper);
  stroke: var(--ink-soft);
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}

.organism-case-node text {
  fill: var(--ink-soft);
  font-family: var(--sans);
  font-size: 14px;
  font-weight: 850;
}

.organism-case-node {
  opacity: 0.48;
  transition: opacity 180ms ease, filter 180ms ease;
}

.organism-case-node[data-selected="true"] {
  opacity: 1;
  filter: drop-shadow(0 0 8px rgb(102 76 130 / 0.34));
}

.organism-case-node[data-selected="true"] circle {
  fill: var(--violet);
  stroke: var(--paper);
  stroke-width: 3;
}

.organism-case-node[data-selected="true"] text { fill: #fffdf8; }

.organism-figure-note {
  position: absolute;
  right: 1rem;
  bottom: 0.8rem;
  left: 1rem;
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-align: center;
  text-transform: uppercase;
}

.organism-case-card {
  align-self: stretch;
  padding: clamp(1.25rem, 3vw, 2.25rem);
}

.organism-case-count {
  margin: 0 0 0.5rem;
  color: var(--violet);
  font-size: 0.72rem;
  font-weight: 850;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.organism-case-card h4 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(1.55rem, 3vw, 2.3rem);
  line-height: 1.04;
}

.organism-case-card > p:not(.organism-case-count, .organism-contrast) {
  max-width: 58ch;
  margin: 0.75rem 0 1.2rem;
  color: var(--ink-soft);
}

.organism-criteria {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  border-top: 1px solid var(--line);
  border-left: 1px solid var(--line);
}

.organism-criteria div {
  min-width: 0;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: 0.8rem;
}

.organism-criteria dt {
  color: var(--ink-soft);
  font-size: 0.68rem;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.organism-criteria dd {
  margin: 0.25rem 0 0;
  font-family: var(--serif);
  line-height: 1.32;
}

.organism-contrast {
  margin: 1rem 0 0;
  border-left: 3px solid var(--violet);
  background: rgb(102 76 130 / 0.08);
  padding: 0.8rem 0.9rem;
  font-size: 0.9rem;
  line-height: 1.45;
}

.horizon-stage {
  position: relative;
  overflow: hidden;
  border: var(--edge-width) solid rgb(229 225 216 / 0.34);
  border-radius: var(--edge-radius);
  background:
    radial-gradient(circle at 78% 18%, rgb(74 104 139 / 0.2), transparent 34%),
    radial-gradient(circle at 21% 64%, rgb(102 76 130 / 0.2), transparent 42%),
    #11151d;
  color: #f6f1e8;
}

.horizon-diagram {
  display: block;
  width: 100%;
  height: auto;
  min-height: 22rem;
}

.horizon-diagram marker path { fill: currentColor; }
.horizon-interior { fill: url(#horizon-interior); }

.horizon-grid path {
  fill: none;
  stroke: rgb(246 241 232 / 0.08);
  stroke-width: 1;
}

.horizon-axis {
  fill: none;
  stroke: rgb(246 241 232 / 0.5);
  stroke-width: 1.5;
}

.horizon-axis-label,
.horizon-label,
.horizon-region-label,
.horizon-crossing-label {
  fill: #f6f1e8;
  font-family: var(--sans);
}

.horizon-axis-label,
.horizon-region-label {
  fill: rgb(246 241 232 / 0.58);
  font-size: 12px;
  font-weight: 750;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.horizon-label { font-size: 13px; font-weight: 800; }
.horizon-crossing-label { fill: #e6c573; font-size: 11px; }

.horizon-singularity {
  fill: none;
  stroke: #d2c2db;
  stroke-dasharray: 2 5;
  stroke-width: 7;
}

.horizon-boundary {
  fill: none;
  stroke: #9f85b0;
  stroke-width: 3;
}

.horizon-label-boundary { fill: #d9c8e5; }

.horizon-receiver,
.horizon-worldline,
.horizon-light-cones,
.horizon-signal {
  transition: opacity 200ms ease;
}

.horizon-receiver path {
  fill: none;
  stroke: #d9e8f4;
  stroke-width: 2;
}

.horizon-worldline path {
  fill: none;
  stroke: #e6c573;
  stroke-width: 3;
}

.horizon-crossing {
  fill: #11151d;
  stroke: #e6c573;
  stroke-width: 3;
}

.horizon-light-cones path {
  fill: none;
  stroke: rgb(246 241 232 / 0.43);
  stroke-dasharray: 3 4;
  stroke-width: 1.25;
}

.horizon-signal path {
  fill: none;
  stroke-width: 2.5;
}

.horizon-signal circle { stroke-width: 2; }
.horizon-signal text { fill: #fffdf8; font-family: var(--sans); font-size: 11px; font-weight: 900; }
.horizon-signal-1 path { stroke: #79b8d4; }
.horizon-signal-1 circle { fill: #17365d; stroke: #79b8d4; }
.horizon-signal-2 path { stroke: #efbd65; stroke-dasharray: 8 4; }
.horizon-signal-2 circle { fill: #7b5629; stroke: #efbd65; }
.horizon-signal-3 path { stroke: #db7b70; stroke-dasharray: 3 4; }
.horizon-signal-3 circle { fill: #803b35; stroke: #db7b70; }

.horizon-stage[data-perspective="daleki"] .horizon-worldline,
.horizon-stage[data-perspective="daleki"] .horizon-light-cones,
.horizon-stage[data-perspective="daleki"] .horizon-signal-3 { opacity: 0.3; }

.horizon-stage[data-perspective="spadajacy"] .horizon-receiver,
.horizon-stage[data-perspective="spadajacy"] .horizon-signal-1,
.horizon-stage[data-perspective="spadajacy"] .horizon-signal-2 { opacity: 0.3; }

.horizon-schema-note {
  position: absolute;
  right: 1rem;
  bottom: 0.65rem;
  margin: 0;
  color: rgb(246 241 232 / 0.62);
  font-size: 0.68rem;
  letter-spacing: 0.04em;
}

.horizon-signal-key {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.65rem;
  margin: 0.75rem 0 0;
  padding: 0;
  list-style: none;
}

.horizon-signal-item {
  display: grid;
  grid-template-columns: 2rem 1fr;
  gap: 0.65rem;
  border: 1px solid var(--line);
  border-top-width: 3px;
  padding: 0.7rem;
}

.horizon-signal-item > span {
  display: grid;
  width: 2rem;
  height: 2rem;
  place-items: center;
  border: 1px solid currentColor;
  border-radius: 50%;
  font-size: 0.72rem;
  font-weight: 900;
}

.horizon-signal-item strong,
.horizon-signal-item small,
.horizon-signal-item em { display: block; }
.horizon-signal-item small { margin-top: 0.25rem; color: var(--ink-soft); line-height: 1.35; }
.horizon-signal-item em { margin-top: 0.4rem; font-size: 0.74rem; font-style: normal; font-weight: 800; }
.horizon-signal-item-1 { border-top-color: var(--navy); color: var(--navy); }
.horizon-signal-item-2 { border-top-color: #9a6b27; color: #805719; }
.horizon-signal-item-3 { border-top-color: var(--coral); color: var(--coral); }
.horizon-signal-item div { color: var(--ink); }

.perspective-controls {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.7rem;
  min-width: 0;
  margin: 0.8rem 0 0;
  border: 0;
  padding: 0;
}

.perspective-option {
  position: relative;
  display: block;
}

.perspective-option input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}

.perspective-option span {
  display: block;
  min-height: 100%;
  border: 1px solid var(--line);
  border-radius: var(--edge-radius);
  padding: 0.8rem 1rem;
  font-weight: 750;
  text-align: center;
}

.perspective-option input:checked + span {
  border-color: var(--violet);
  background: rgb(102 76 130 / 0.12);
  box-shadow: inset 0 -3px 0 var(--violet);
}

.perspective-option input:focus-visible + span {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

.history-timeline {
  border: var(--edge-width) solid rgb(23 27 32 / var(--edge-alpha));
  border-radius: var(--edge-radius);
  background:
    linear-gradient(115deg, rgb(23 54 93 / 0.05), rgb(163 61 45 / 0.04)),
    var(--paper);
  padding: clamp(1rem, 2.5vw, 1.75rem);
}

.history-scale {
  display: flex;
  justify-content: space-between;
  margin: 0 0 0.25rem 10.5rem;
  color: var(--ink-soft);
  font-size: 0.68rem;
  font-weight: 800;
}

.history-lanes { display: grid; gap: 0.6rem; }

.history-lane {
  display: grid;
  grid-template-columns: 9.75rem minmax(0, 1fr);
  gap: 0.75rem;
  align-items: center;
}

.history-lane h4 {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.72rem;
  letter-spacing: 0.07em;
  line-height: 1.25;
  text-transform: uppercase;
}

.history-lane-track {
  position: relative;
  height: 5.75rem;
  border-top: 1px solid rgb(23 27 32 / 0.16);
  border-bottom: 1px solid rgb(23 27 32 / 0.16);
  background:
    repeating-linear-gradient(90deg, transparent 0 calc(10% - 1px), rgb(23 27 32 / 0.07) calc(10% - 1px) 10%),
    rgb(255 253 248 / 0.38);
}

.history-lane-track::before {
  position: absolute;
  top: 50%;
  right: 0;
  left: 0;
  height: 1px;
  background: rgb(23 27 32 / 0.45);
  content: "";
}

.history-boundary-marker {
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  left: var(--position);
  width: 2px;
  background: var(--violet);
  box-shadow: 0 0 0 3px rgb(102 76 130 / 0.08);
  pointer-events: none;
  transform: translateX(-50%);
}

.history-point {
  position: absolute;
  z-index: 2;
  top: 50%;
  left: var(--position);
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper);
  color: var(--ink);
  padding: 0.17rem 0.38rem;
  font-size: 0.67rem;
  font-weight: 850;
  line-height: 1;
  transform: translate(-50%, -50%);
  transition: background-color 160ms ease, color 160ms ease, transform 160ms ease;
}

.history-point[data-row="0"] { top: 25%; }
.history-point[data-row="1"] { top: 50%; }
.history-point[data-row="2"] { top: 75%; }

.history-point small {
  position: absolute;
  bottom: calc(100% + 0.55rem);
  left: 50%;
  width: min(14rem, 30vw);
  border: 1px solid var(--line);
  border-radius: 0.35rem;
  background: var(--paper);
  box-shadow: 0 8px 22px rgb(23 27 32 / 0.13);
  color: var(--ink);
  opacity: 0;
  padding: 0.45rem 0.55rem;
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.25;
  pointer-events: none;
  transform: translateX(-50%);
  transition: opacity 160ms ease;
}

.history-point[data-edge="start"] small {
  left: 0;
  transform: none;
}

.history-point[data-edge="end"] small {
  right: 0;
  left: auto;
  transform: none;
}

.history-point[data-nearest="true"] {
  border-color: var(--violet);
  background: var(--violet);
  color: #fffdf8;
  transform: translate(-50%, -50%) scale(1.12);
}

.history-point[data-nearest="true"] small,
.history-point:hover small,
.history-point:focus-visible small { z-index: 5; opacity: 1; }

.history-nearest-event {
  display: grid;
  grid-template-columns: minmax(9rem, 0.35fr) minmax(12rem, 0.65fr);
  gap: 0.25rem 1.2rem;
  margin: 1rem 0 0 10.5rem;
  border-top: 1px solid var(--line);
  padding-top: 0.9rem;
}

.history-nearest-event > p:first-child {
  grid-row: 1 / span 2;
  margin: 0;
  color: var(--violet);
  font-size: 0.72rem;
  font-weight: 850;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.history-nearest-event h4,
.history-nearest-event > p:last-child { margin: 0; }
.history-nearest-event h4 { font-family: var(--serif); font-size: 1.25rem; }
.history-nearest-event > p:last-child { color: var(--ink-soft); line-height: 1.45; }

.history-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  gap: 0.8rem;
  margin-top: 1.4rem;
}

.history-gallery-item {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--edge-radius);
  background: var(--paper);
  transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.history-gallery-item[data-related="true"] {
  border-color: var(--violet);
  box-shadow: 0 0 0 3px rgb(102 76 130 / 0.16), 0 14px 32px rgb(23 27 32 / 0.12);
  transform: translateY(-3px);
}

.history-gallery-item a { display: block; }

.history-gallery-item img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  filter: saturate(0.78) sepia(0.12) contrast(1.03);
}

.history-gallery-item figcaption { padding: 0.75rem; }
.history-gallery-item figcaption strong { display: block; font-family: var(--serif); font-size: 1.05rem; }
.history-gallery-item figcaption p { margin: 0.35rem 0; color: var(--ink-soft); font-size: 0.83rem; line-height: 1.38; }
.history-gallery-item figcaption small { display: block; color: var(--ink-soft); font-size: 0.68rem; line-height: 1.35; }
.history-gallery-item a:focus-visible { outline: 4px solid var(--focus); outline-offset: -4px; }

.digital-layout {
  display: grid;
  grid-template-columns: minmax(14rem, 0.52fr) minmax(0, 1.48fr);
  gap: clamp(1.25rem, 3vw, 2.5rem);
  align-items: start;
}

.digital-controls {
  display: grid;
  gap: 0.55rem;
}

.digital-signal {
  display: grid;
  grid-template-columns: 1.3rem 1fr;
  gap: 0.7rem;
  align-items: start;
  border-bottom: 1px solid var(--line);
  padding-block: 0.6rem;
}

.digital-signal input {
  width: 1.15rem;
  height: 1.15rem;
  margin-top: 0.2rem;
}

.digital-signal strong,
.digital-signal small { display: block; }
.digital-signal small { color: var(--ink-soft); }

.digital-stage {
  border: var(--edge-width) solid rgb(23 27 32 / var(--edge-alpha));
  border-radius: var(--edge-radius);
  background:
    linear-gradient(120deg, rgb(23 54 93 / 0.04), rgb(102 76 130 / 0.05)),
    var(--paper);
  padding: clamp(0.75rem, 2vw, 1.25rem);
}

.digital-stage-head,
.digital-path {
  display: grid;
  grid-template-columns: minmax(10rem, 0.9fr) 4rem minmax(12rem, 1.1fr);
  gap: 0.65rem;
  align-items: center;
}

.digital-stage-head {
  margin-bottom: 0.4rem;
  color: var(--ink-soft);
  font-size: 0.65rem;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-align: center;
  text-transform: uppercase;
}

.digital-paths { display: grid; gap: 0.45rem; }

.digital-path {
  border-top: 1px solid rgb(23 27 32 / 0.1);
  padding-top: 0.45rem;
  opacity: 0.28;
  transition: opacity 180ms ease;
}

.digital-path[data-active="true"] { opacity: 1; }

.digital-observation {
  display: grid;
  grid-template-columns: 2rem 1fr;
  gap: 0.55rem;
  align-items: start;
}

.digital-observation > span {
  display: grid;
  width: 2rem;
  height: 2rem;
  place-items: center;
  border: 1px solid var(--navy);
  color: var(--navy);
  font-size: 0.65rem;
  font-weight: 900;
}

.digital-observation strong,
.digital-observation small { display: block; }
.digital-observation strong { font-size: 0.86rem; }
.digital-observation small { margin-top: 0.15rem; color: var(--ink-soft); font-size: 0.74rem; line-height: 1.3; }

.digital-inference-bridge {
  position: relative;
  display: grid;
  min-height: 2.5rem;
  place-items: center;
}

.digital-inference-bridge span {
  position: absolute;
  right: 0;
  left: 0;
  height: 1px;
  background: repeating-linear-gradient(90deg, var(--coral) 0 4px, transparent 4px 8px);
}

.digital-inference-bridge span::after {
  position: absolute;
  top: -4px;
  right: -1px;
  border-width: 4px 0 4px 7px;
  border-style: solid;
  border-color: transparent transparent transparent var(--coral);
  content: "";
}

.digital-inference-bridge b {
  z-index: 1;
  display: grid;
  width: 1.5rem;
  height: 1.5rem;
  place-items: center;
  border: 1px solid var(--coral);
  border-radius: 50%;
  background: var(--paper);
  color: var(--coral);
  font-family: var(--serif);
}

.digital-hypotheses {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.4rem;
}

.digital-hypotheses p {
  min-height: 100%;
  margin: 0;
  border: 1px solid rgb(23 27 32 / 0.16);
  background: rgb(255 253 248 / 0.46);
  padding: 0.45rem 0.5rem;
  font-family: var(--serif);
  font-size: 0.76rem;
  line-height: 1.3;
}

.digital-hypotheses p span {
  display: block;
  margin-bottom: 0.18rem;
  color: var(--violet);
  font-family: var(--sans);
  font-size: 0.58rem;
  font-weight: 900;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.digital-model-comparison {
  display: grid;
  grid-template-columns: minmax(10rem, 1fr) auto minmax(10rem, 1fr);
  gap: clamp(0.75rem, 2vw, 1.5rem);
  align-items: center;
  margin-top: 1rem;
  border-top: 2px solid var(--ink);
  padding-top: 1rem;
}

.digital-profile-card,
.digital-person-card { text-align: center; }
.digital-profile-card p,
.digital-person-card p { margin: 0 0 0.6rem; color: var(--ink-soft); font-size: 0.68rem; font-weight: 850; letter-spacing: 0.07em; text-transform: uppercase; }
.digital-profile-card > strong,
.digital-person-card > strong { display: block; margin-top: 0.55rem; font-size: 0.72rem; }

.digital-profile-glyph,
.digital-person-outline {
  position: relative;
  width: 6.5rem;
  height: 7.25rem;
  margin-inline: auto;
}

.digital-profile-outline {
  position: absolute;
  inset: 0;
  border: 2px dashed var(--violet);
  border-radius: 3.2rem 3.2rem 0.65rem 0.65rem;
  background:
    radial-gradient(circle at 50% 27%, transparent 0 1.05rem, rgb(102 76 130 / 0.11) 1.1rem 1.15rem, transparent 1.2rem),
    var(--paper);
}

.digital-profile-layer {
  position: absolute;
  right: 0.75rem;
  left: 0.75rem;
  height: 0.75rem;
  border: 1px solid var(--violet);
  background: repeating-linear-gradient(135deg, rgb(102 76 130 / 0.45) 0 3px, transparent 3px 6px);
  opacity: 0.08;
  transition: opacity 180ms ease, transform 180ms ease;
}

.digital-profile-layer[data-active="true"] { opacity: 1; transform: translateX(0.2rem); }
.digital-profile-layer-1 { top: 3.25rem; }
.digital-profile-layer-2 { top: 4.15rem; }
.digital-profile-layer-3 { top: 5.05rem; }
.digital-profile-layer-4 { top: 5.95rem; }

.digital-not-equal {
  color: var(--coral);
  font-family: var(--serif);
  font-size: 2.5rem;
}

.digital-person-outline { border-bottom: 2px solid var(--ink); }
.digital-person-outline::before {
  position: absolute;
  top: 0.55rem;
  left: 50%;
  width: 2.5rem;
  height: 2.5rem;
  border: 2px solid var(--ink);
  border-radius: 50%;
  content: "";
  transform: translateX(-50%);
}

.digital-person-outline span {
  position: absolute;
  right: 0.55rem;
  bottom: 0;
  left: 0.55rem;
  height: 3.55rem;
  border: 2px solid var(--ink);
  border-bottom: 0;
  border-radius: 3.5rem 3.5rem 0 0;
}

.digital-privacy-note {
  margin: 1rem 0 0;
  border-top: 1px solid var(--line);
  padding-top: 0.7rem;
  color: var(--ink-soft);
  font-size: 0.72rem;
  text-align: center;
}

@media (max-width: 46rem) {
  .map-exhibit,
  .pile-exhibit,
  .digital-layout {
    grid-template-columns: 1fr;
  }

  .organism-stage {
    grid-template-columns: 1fr;
  }

  .organism-figure {
    min-height: 21rem;
    border-right: 0;
    border-bottom: 1px solid rgb(23 27 32 / 0.16);
  }

  .organism-figure svg { width: min(100%, 17rem); }

  .organism-criteria {
    grid-template-columns: 1fr;
  }

  .perspective-controls,
  .horizon-signal-key {
    grid-template-columns: 1fr;
  }

  .horizon-diagram { min-height: 16rem; }
  .horizon-schema-note {
    position: static;
    border-top: 1px solid rgb(246 241 232 / 0.16);
    padding: 0.65rem 0.75rem;
    text-align: center;
  }

  .history-scale { margin-left: 0; }

  .history-lane {
    grid-template-columns: 1fr;
    gap: 0.25rem;
  }

  .history-lane-track { height: 4.75rem; }

  .history-point {
    width: 1rem;
    height: 1rem;
    min-width: 1rem;
    min-height: 1rem;
    overflow: visible;
    padding: 0;
    font-size: 0;
  }

  .history-point[data-nearest="true"] {
    width: 2.35rem;
    height: 2.35rem;
    min-width: 2.35rem;
    min-height: 2.35rem;
    font-size: 0.62rem;
  }

  .history-point small { display: none; }

  .history-nearest-event {
    grid-template-columns: 1fr;
    margin-left: 0;
  }

  .history-nearest-event > p:first-child { grid-row: auto; }

  .digital-stage-head { display: none; }

  .digital-path {
    grid-template-columns: 1fr;
    gap: 0.35rem;
  }

  .digital-inference-bridge { min-height: 2.4rem; }

  .digital-inference-bridge span {
    top: 0;
    bottom: 0;
    left: 50%;
    width: 1px;
    height: auto;
    background: repeating-linear-gradient(180deg, var(--coral) 0 4px, transparent 4px 8px);
  }

  .digital-inference-bridge span::after {
    top: auto;
    right: auto;
    bottom: -1px;
    left: -4px;
    border-width: 7px 4px 0;
    border-color: var(--coral) transparent transparent;
  }

  .digital-model-comparison {
    grid-template-columns: 1fr;
  }

  .digital-not-equal { line-height: 0.75; }

  .kalisz-map,
  .grain-stage {
    min-height: 16rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .river-water,
  .river-scope,
  .river-map-layer,
  .organism-case-node,
  .horizon-receiver,
  .horizon-worldline,
  .horizon-light-cones,
  .horizon-signal,
  .history-point,
  .history-point small,
  .history-gallery-item,
  .digital-path,
  .digital-profile-layer {
    transition: none;
  }
}

@media (forced-colors: active) {
  .perspective-option input:checked + span {
    border-color: Highlight;
    outline: 3px solid Highlight;
    outline-offset: -4px;
  }

  .organism-case-node[data-selected="true"] circle,
  .history-point[data-nearest="true"],
  .digital-profile-layer[data-active="true"] {
    fill: Highlight;
    border-color: Highlight;
    outline: 2px solid Highlight;
  }
}
