:root {
  --paper: #f8f4ef;
  --navy: #062633;
  --teal: #147e81;
  --cyan: #24d8d1;
  --ochre: #b99a43;
  --muted: #6f696d;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --sans: "Inter", system-ui, sans-serif;
  --coupling-rail-width: clamp(9.5rem, 12vw, 11.5rem);
}

* { box-sizing: border-box; }

html,
body { margin: 0; min-height: 100%; }

body {
  overflow: hidden;
  background:
    linear-gradient(90deg, transparent 0 3.5rem, rgba(167, 90, 90, 0.16) 3.5rem calc(3.5rem + 1px), transparent calc(3.5rem + 1px)),
    radial-gradient(circle, rgba(6, 38, 51, 0.09) 0 0.75px, transparent 0.9px),
    var(--paper);
  background-size: auto, 20px 20px, auto;
  color: var(--navy);
  font-family: var(--sans);
}

a { color: inherit; }

.coupling-skip-link {
  position: fixed;
  z-index: 20;
  top: 0.75rem;
  left: 0.75rem;
  padding: 0.7rem 0.9rem;
  background: var(--navy);
  color: var(--paper);
  font: 500 0.7rem/1 var(--mono);
  transform: translateY(-180%);
}

.coupling-skip-link:focus { transform: translateY(0); }

.coupling-page__nav {
  position: fixed;
  z-index: 5;
  top: 0;
  right: 0;
  left: 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  min-height: 4.75rem;
  padding-inline: clamp(1.25rem, 4vw, 4.5rem);
  border-bottom: 1px solid rgba(6, 38, 51, 0.18);
  background: rgba(248, 244, 239, 0.76);
  transition: border-color 900ms ease, background-color 900ms ease;
}

.coupling-page__nav :where(a, p) {
  margin: 0;
  font: 500 0.68rem/1.2 var(--mono);
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.coupling-page__brand {
  justify-self: start;
  font-family: var(--sans) !important;
  font-size: 1.35rem !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  text-decoration: none;
  transition: opacity 900ms ease, transform 900ms ease;
}

.coupling-page__nav p { color: rgba(6, 38, 51, 0.52); }

.coupling-page__back {
  justify-self: end;
  text-decoration: none;
  transition: opacity 900ms ease, font-size 900ms ease;
}

.coupling-page__back span { margin-left: 0.55rem; color: var(--teal); }

.coupling-page__back:focus-visible,
.coupling-page__brand:focus-visible {
  outline: 1px solid var(--cyan);
  outline-offset: 0.35rem;
}

.coupling-experience {
  position: relative;
  height: 100svh;
  min-height: 42rem;
  padding: 4.75rem clamp(1.25rem, 4vw, 4.5rem) 1.5rem;
  overflow: hidden;
}

.coupling-experience__header {
  position: absolute;
  z-index: 3;
  top: clamp(6.5rem, 12vh, 9rem);
  left: clamp(2rem, 9vw, 10rem);
  max-width: 40rem;
  pointer-events: none;
  transition: top 1100ms cubic-bezier(.2,.7,.2,1), left 1100ms cubic-bezier(.2,.7,.2,1), opacity 900ms ease;
}

.coupling-experience__eyebrow,
.coupling-experience__register {
  margin: 0;
  color: rgba(6, 38, 51, 0.58);
  font: 500 0.68rem/1.4 var(--mono);
  letter-spacing: 0.11em;
}

.coupling-experience__header h1 {
  margin: 0.75rem 0 0;
  font-size: clamp(4.25rem, 10vw, 10.5rem);
  line-height: 0.84;
  letter-spacing: -0.07em;
  transition: font-size 1100ms cubic-bezier(.2,.7,.2,1), letter-spacing 1100ms ease, opacity 900ms ease;
}

.coupling-experience__header > p:last-child {
  max-width: 30ch;
  margin: 2rem 0 0;
  color: rgba(6, 38, 51, 0.76);
  font-size: clamp(1rem, 1.3vw, 1.25rem);
  line-height: 1.55;
  transition: margin 900ms ease, opacity 700ms ease, font-size 900ms ease;
}

.coupling-experience__field {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-top: 1px solid rgba(53, 85, 94, 0.12);
  border-bottom: 1px solid rgba(53, 85, 94, 0.12);
  box-shadow: inset 0 0 0 1px rgba(53, 85, 94, 0.035);
  transition: border-color 480ms ease, box-shadow 480ms ease;
}

.coupling-experience__field[data-field-climate="engaged"] { border-color: rgba(20, 126, 129, 0.18); box-shadow: inset 0 0 0 1px rgba(20, 126, 129, 0.08); }
.coupling-experience__field[data-field-climate="strained"] { border-color: rgba(36, 184, 181, 0.3); box-shadow: inset 0 0 0 1px rgba(20, 126, 129, 0.15); }
.coupling-experience__field[data-field-climate="overloaded"] { border-color: rgba(61, 171, 170, 0.42); box-shadow: inset 0 0 0 1px rgba(20, 126, 129, 0.22), inset 2px 0 0 rgba(20, 126, 129, 0.045); }

.coupling-experience__field::before,
.coupling-experience__field::after {
  content: "";
  position: absolute;
  z-index: 2;
  width: 0.8rem;
  height: 0.8rem;
  pointer-events: none;
}

[data-field-climate="calm"]::before,
[data-field-climate="calm"]::after { border-color: rgba(53, 85, 94, 0.12); }
[data-field-climate="engaged"]::before,
[data-field-climate="engaged"]::after { border-color: rgba(36, 184, 181, 0.34); }
[data-field-climate="strained"]::before,
[data-field-climate="strained"]::after { border-color: rgba(36, 216, 209, 0.5); }
[data-field-climate="overloaded"]::before,
[data-field-climate="overloaded"]::after { border-color: rgba(66, 177, 177, 0.62); animation: coupling-frame-strain 1.4s ease-in-out infinite alternate; }

[data-climate-transition="engaged"]::before { animation: coupling-frame-engage 680ms ease-out 1; }
[data-climate-transition="strained"]::before { animation: coupling-frame-strained 680ms ease-out 1; }
[data-climate-transition="overloaded"]::after { animation: coupling-frame-overload 680ms ease-out 1; }

@keyframes coupling-frame-strain { from { transform: translateX(0); } to { transform: translateX(0.7px); } }
@keyframes coupling-frame-engage { 0% { opacity: 0.25; } 45% { opacity: 0.72; } 100% { opacity: 0.4; } }
@keyframes coupling-frame-strained { 0% { transform: translate(0, 0); opacity: 0.42; } 48% { transform: translate(0.5px, -0.3px); opacity: 0.82; } 100% { transform: translate(0, 0); opacity: 0.58; } }
@keyframes coupling-frame-overload { 0% { transform: translate(0, 0); opacity: 0.42; } 42% { transform: translate(-1px, 0.6px); opacity: 0.9; } 100% { transform: translate(0.35px, -0.2px); opacity: 0.64; } }

.coupling-experience__field::before {
  top: -1px;
  left: -1px;
  border-top: 1px solid var(--cyan);
  border-left: 1px solid var(--cyan);
}

.coupling-experience__field::after {
  right: -1px;
  bottom: -1px;
  border-right: 1px solid var(--ochre);
  border-bottom: 1px solid var(--ochre);
}

.coupling-experience__canvas {
  display: block;
  width: calc(100% - var(--coupling-rail-width));
  height: 100%;
  cursor: crosshair;
  touch-action: none;
  opacity: 0.62;
  filter: contrast(0.88);
  transition: opacity 1100ms ease, filter 1100ms ease;
}

.coupling-page[data-coupling-entry="activation"] .coupling-experience__canvas { opacity: 0.84; filter: contrast(0.96); }
.coupling-page[data-coupling-entry="play"] .coupling-experience__canvas { opacity: 1; filter: contrast(1.04); }
.coupling-page[data-coupling-entry="activation"] .coupling-experience__header,
.coupling-page[data-coupling-entry="play"] .coupling-experience__header { top: 5.55rem; left: clamp(1.6rem, 5vw, 5.4rem); }
.coupling-page[data-coupling-entry="activation"] .coupling-experience__header h1 { font-size: clamp(2.2rem, 4.2vw, 4.4rem); letter-spacing: -0.055em; opacity: 0.66; }
.coupling-page[data-coupling-entry="play"] .coupling-experience__header h1 { font-size: clamp(1.35rem, 2.25vw, 2.25rem); font-weight: 600; letter-spacing: -0.025em; opacity: 0.46; transition-duration: 450ms; }
.coupling-page[data-coupling-entry="activation"] .coupling-experience__header > p:last-child { margin-top: 0.45rem; font-size: 0.7rem; opacity: 0.42; }
.coupling-page[data-coupling-entry="play"] .coupling-experience__header > p:last-child { max-width: 19rem; margin-top: 0.3rem; font-size: 0.62rem; opacity: 0.2; transition-duration: 360ms; }
.coupling-page[data-coupling-entry="activation"] .coupling-experience__eyebrow,
.coupling-page[data-coupling-entry="play"] .coupling-experience__eyebrow { opacity: 0.42; }
.coupling-page[data-coupling-entry="play"] .coupling-page__nav { border-bottom-color: rgba(6, 38, 51, 0.09); background: rgba(248, 244, 239, 0.46); }
.coupling-page[data-coupling-entry="play"] .coupling-page__brand { opacity: 0.64; transform: scale(0.92); transform-origin: left center; }
.coupling-page[data-coupling-entry="play"] .coupling-page__back { opacity: 0.34; font-size: 0.58rem; }
.coupling-page[data-coupling-entry="play"] .coupling-page__back:hover,
.coupling-page[data-coupling-entry="play"] .coupling-page__back:focus-visible { opacity: 1; }

.coupling-experience__canvas:focus-visible {
  outline: 1px solid rgba(53, 85, 94, 0.16);
  outline-offset: -0.6rem;
}

[data-field-climate="engaged"] .coupling-experience__canvas:focus-visible { outline-color: rgba(20, 126, 129, 0.2); }
[data-field-climate="strained"] .coupling-experience__canvas:focus-visible { outline-color: rgba(36, 184, 181, 0.3); }
[data-field-climate="overloaded"] .coupling-experience__canvas:focus-visible { outline-color: rgba(61, 171, 170, 0.42); }

.coupling-experience__register {
  position: absolute;
  z-index: 3;
  right: calc(var(--coupling-rail-width) + clamp(1rem, 2.5vw, 2.5rem));
  bottom: clamp(1rem, 2vw, 1.8rem);
  display: flex;
  gap: 1.1rem;
  pointer-events: none;
}

.coupling-experience__register span + span {
  padding-left: 1.1rem;
  border-left: 1px solid rgba(6, 38, 51, 0.22);
}

.coupling-session {
  position: absolute;
  z-index: 3;
  top: clamp(1rem, 2vw, 1.8rem);
  right: calc(var(--coupling-rail-width) + clamp(1rem, 2.5vw, 2.5rem));
  display: flex;
  align-items: center;
  gap: 0.8rem;
  pointer-events: none;
  font: 500 0.61rem/1.2 var(--mono);
  letter-spacing: 0.11em;
}

.coupling-session__state,
.coupling-session__load { margin: 0; }

.coupling-session__state::before {
  content: "";
  display: inline-block;
  width: 0.38rem;
  height: 0.38rem;
  margin-right: 0.5rem;
  border: 1px solid currentColor;
  border-radius: 50%;
}

.coupling-session__load {
  min-width: 8.5rem;
  padding-left: 0.8rem;
  border-left: 1px solid rgba(6, 38, 51, 0.2);
  color: rgba(6, 38, 51, 0.42);
  opacity: 0;
  transition: opacity 320ms ease, color 320ms ease;
}

.coupling-session__load.is-perceptible { opacity: 1; }
.coupling-session__load.is-high { color: var(--teal); font-weight: 500; }

.coupling-perceptual-debug { position: absolute; z-index: 8; top: 5.6rem; right: 1rem; width: 19rem; margin: 0; padding: 0.8rem; border: 1px solid rgba(6, 38, 51, 0.25); background: rgba(248, 244, 239, 0.92); color: rgba(6, 38, 51, 0.76); pointer-events: none; font: 0.57rem/1.5 var(--mono); }

.coupling-rail {
  --rail-load: 0;
  position: absolute;
  z-index: 3;
  top: 0;
  right: 0;
  bottom: 0;
  width: var(--coupling-rail-width);
  padding: clamp(4.8rem, 8vh, 6.8rem) clamp(1rem, 1.5vw, 1.45rem) 2rem;
  border-left: 1px solid rgba(6, 38, 51, 0.1);
  color: rgba(6, 38, 51, 0.58);
  opacity: 0;
  transform: translateX(0.55rem);
  transition: opacity 900ms ease, transform 900ms ease, border-color 500ms ease;
  pointer-events: none;
  font-family: var(--mono);
}

[data-entry-state="activation"] .coupling-rail { opacity: 0.38; transform: translateX(0); }
[data-entry-state="play"] .coupling-rail,
[data-game-state="ending"] .coupling-rail { opacity: 0.72; transform: translateX(0); }
[data-game-state="result"] .coupling-rail { opacity: 0; }
[data-field-climate="strained"] .coupling-rail { border-left-color: rgba(20, 126, 129, 0.16); }
[data-field-climate="overloaded"] .coupling-rail { border-left-color: rgba(20, 126, 129, 0.24); }

.coupling-rail__section + .coupling-rail__section { margin-top: clamp(1.45rem, 3.2vh, 2.35rem); }
.coupling-rail h2,
.coupling-rail p,
.coupling-rail dl,
.coupling-rail dd { margin: 0; }
.coupling-rail h2 { margin-bottom: 0.52rem; color: rgba(6, 38, 51, 0.34); font: 500 0.5rem/1 var(--mono); letter-spacing: 0.14em; }
.coupling-rail__section > p { color: rgba(6, 38, 51, 0.67); font: 500 0.62rem/1.25 var(--mono); letter-spacing: 0.055em; }

.coupling-rail__time-line { display: block; height: 1px; margin-top: 0.62rem; background: rgba(6, 38, 51, 0.1); overflow: hidden; }
.coupling-rail__time-line i { display: block; width: 100%; height: 1px; background: rgba(20, 126, 129, 0.52); transform: scaleX(var(--rail-session, 0)); transform-origin: left; transition: transform 180ms linear; }

.coupling-rail__slots { display: flex; align-items: center; gap: 0.5rem; min-height: 0.65rem; }
.coupling-rail__slots i { position: relative; display: block; width: 0.43rem; height: 0.43rem; border: 1px solid rgba(6, 38, 51, 0.2); border-radius: 50%; transition: opacity 280ms ease, background-color 280ms ease, border-color 280ms ease, transform 280ms ease; }
.coupling-rail__slots i.is-coupled { border-color: rgba(20, 126, 129, 0.62); background: rgba(20, 126, 129, 0.58); }
.coupling-rail__slots i.is-stressed { border-style: double; background: rgba(20, 126, 129, 0.38); transform: scale(1.08); }
.coupling-rail__slots i.is-shedding { border-style: dashed; background: transparent; opacity: 0.46; transform: scale(0.88); }
.coupling-rail__coupling > p { margin-top: 0.52rem; color: rgba(6, 38, 51, 0.44); font-size: 0.53rem; }

.coupling-rail__composition dl div { display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 0.22rem 0; }
.coupling-rail__composition dt { display: flex; align-items: center; gap: 0.48rem; color: rgba(6, 38, 51, 0.48); font: 500 0.52rem/1 var(--mono); letter-spacing: 0.065em; }
.coupling-rail__composition dd { color: rgba(6, 38, 51, 0.7); font: 500 0.58rem/1 var(--mono); transition: opacity 220ms ease; }
.coupling-rail__composition dt i { display: block; width: 0.48rem; height: 0.48rem; border: 1px solid currentColor; border-radius: 50%; }
.coupling-rail__composition [data-rail-type="anchor"] dt i { border-width: 1.4px; }
.coupling-rail__composition [data-rail-type="pulse"] dt i { box-shadow: 0 0 0 2px rgba(6, 38, 51, 0.08); transform: scale(0.65); }
.coupling-rail__composition [data-rail-type="echo"] dt i { box-shadow: 3px 0 0 -1px var(--paper), 3px 0 0 0 rgba(6, 38, 51, 0.28); }

.coupling-rail__relation {
  margin-top: 0.72rem;
  padding-top: 0.68rem;
  border-top: 1px solid rgba(6, 38, 51, 0.1);
  opacity: 0.78;
}
.coupling-rail__relation[hidden] { display: none; }
.coupling-rail__relation h3 { margin: 0 0 0.42rem; color: rgba(6, 38, 51, 0.3); font: 500 0.46rem/1 var(--mono); letter-spacing: 0.14em; }
.coupling-rail__relation p { color: rgba(20, 126, 129, 0.78); font: 500 0.56rem/1.2 var(--mono); letter-spacing: 0.09em; }

.coupling-rail__load > p { transition: opacity 320ms ease; }
.coupling-rail__tension { display: block; width: 100%; height: 1px; margin-top: 0.62rem; background: repeating-linear-gradient(90deg, rgba(6, 38, 51, 0.09) 0 4px, transparent 4px 7px); overflow: hidden; }
.coupling-rail__tension i { display: block; width: 100%; height: 1px; background: rgba(20, 126, 129, 0.5); transform: scaleX(var(--rail-load)); transform-origin: left; transition: transform 240ms ease; }
[data-rail-load="strained"] .coupling-rail__tension i { background: repeating-linear-gradient(90deg, rgba(20, 126, 129, 0.58) 0 5px, transparent 5px 7px); }
[data-rail-load="overloaded"] .coupling-rail__tension i { background: repeating-linear-gradient(90deg, rgba(20, 126, 129, 0.62) 0 3px, transparent 3px 5px); }

.coupling-rail__control button {
  padding: 0 0 0.18rem;
  border: 0;
  border-bottom: 1px solid rgba(6, 38, 51, 0.12);
  background: transparent;
  color: rgba(6, 38, 51, 0.23);
  cursor: default;
  font: 500 0.5rem/1 var(--mono);
  letter-spacing: 0.075em;
  transition: color 260ms ease, border-color 260ms ease, opacity 260ms ease;
}
.coupling-rail[data-can-release="true"] .coupling-rail__control button { border-bottom-color: rgba(20, 126, 129, 0.24); color: rgba(6, 38, 51, 0.54); cursor: pointer; }
.coupling-rail[data-release-emphasis="true"] .coupling-rail__control button { border-bottom-color: rgba(20, 126, 129, 0.48); color: rgba(20, 126, 129, 0.7); }
.coupling-rail__control button:focus-visible { outline: 1px solid var(--cyan); outline-offset: 0.3rem; }

.coupling-rail__debug { position: absolute; right: 0.6rem; bottom: 0.6rem; left: 0.6rem; margin: 0; padding-top: 0.45rem; border-top: 1px solid rgba(6, 38, 51, 0.15); color: rgba(150, 30, 76, 0.8); white-space: pre-wrap; font: 0.46rem/1.35 var(--mono); }
.coupling-audio-debug { position: absolute; z-index: 9; top: 5.6rem; left: 1rem; width: 18rem; margin: 0; padding: 0.75rem; border: 1px solid rgba(6, 38, 51, 0.2); background: rgba(248, 244, 239, 0.92); color: rgba(150, 30, 76, 0.8); pointer-events: none; white-space: pre-wrap; font: 0.52rem/1.45 var(--mono); }

body[data-debug-grayscale="true"] .coupling-experience__canvas { filter: grayscale(1) contrast(1.08) !important; }

.coupling-annotation {
  position: absolute;
  z-index: 4;
  top: clamp(3.4rem, 7vw, 5.4rem);
  right: calc(var(--coupling-rail-width) + clamp(1rem, 2.5vw, 2.5rem));
  margin: 0;
  color: var(--teal);
  font: 500 0.62rem/1 var(--mono);
  letter-spacing: 0.15em;
  opacity: 0;
  transform: translateY(0.3rem);
  transition: opacity 700ms ease, transform 700ms ease;
  pointer-events: none;
}

.coupling-annotation.is-visible { opacity: 0.78; transform: translateY(0); transition-duration: 180ms; }
.coupling-annotation.is-leaving { opacity: 0; transform: translateY(-0.08rem); }

.coupling-notes-toggle {
  position: absolute;
  z-index: 4;
  left: clamp(1rem, 2.5vw, 2.5rem);
  bottom: clamp(1rem, 2vw, 1.8rem);
  padding: 0;
  border: 0;
  background: transparent;
  color: rgba(6, 38, 51, 0.5);
  cursor: pointer;
  font: 500 0.58rem/1 var(--mono);
  letter-spacing: 0.11em;
}

.coupling-sound-toggle {
  position: absolute;
  z-index: 4;
  left: clamp(7.5rem, 10vw, 9.5rem);
  bottom: clamp(1rem, 2vw, 1.8rem);
  padding: 0;
  border: 0;
  background: transparent;
  color: rgba(6, 38, 51, 0.5);
  cursor: pointer;
  font: 500 0.58rem/1 var(--mono);
  letter-spacing: 0.11em;
}

.coupling-sound-toggle:focus-visible { outline: 1px solid var(--cyan); outline-offset: 0.35rem; }

@media (pointer: fine) {
  [data-game-state="running"] .coupling-experience__canvas { cursor: none; }
}

.coupling-notes-toggle:focus-visible,
.coupling-notes button:focus-visible { outline: 1px solid var(--cyan); outline-offset: 0.35rem; }

.coupling-notes {
  position: absolute;
  z-index: 6;
  right: clamp(1rem, 2.5vw, 2.5rem);
  bottom: clamp(3.5rem, 7vh, 5.5rem);
  width: min(23rem, calc(100% - 2rem));
  max-height: min(31rem, calc(100% - 8rem));
  padding: 1.1rem 1.2rem;
  overflow-y: auto;
  border: 1px solid rgba(6, 38, 51, 0.25);
  background: rgba(248, 244, 239, 0.9);
  backdrop-filter: blur(5px);
}

.coupling-experience__field[data-notes-open="true"] .coupling-experience__canvas { opacity: 0.34; filter: contrast(0.78); }

.coupling-notes__header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.coupling-notes__header p { margin: 0; font: 500 0.67rem/1 var(--mono); letter-spacing: 0.14em; }
.coupling-notes__header button,
.coupling-notes__reset { padding: 0; border: 0; background: transparent; color: rgba(6, 38, 51, 0.52); cursor: pointer; font: 500 0.54rem/1 var(--mono); letter-spacing: 0.1em; }
.coupling-notes__entries dl { margin: 0; }
.coupling-notes__entries div { padding: 0.65rem 0; border-top: 1px solid rgba(6, 38, 51, 0.12); }
.coupling-notes__entries dt { color: var(--teal); font: 500 0.62rem/1.35 var(--mono); letter-spacing: 0.1em; }
.coupling-notes__entries dt span { display: block; margin-bottom: 0.25rem; color: rgba(6, 38, 51, 0.42); font-size: 0.5rem; }
.coupling-notes__entries dd { margin: 0.3rem 0 0; color: rgba(6, 38, 51, 0.68); font-size: 0.72rem; line-height: 1.45; }
.coupling-notes__empty { margin: 0; color: rgba(6, 38, 51, 0.48); font: 400 0.67rem/1.5 var(--mono); }
.coupling-notes__reset { margin-top: 1.2rem; padding-top: 0.8rem; border-top: 1px solid rgba(6, 38, 51, 0.12); }

.coupling-prompt,
.coupling-result {
  position: absolute;
  z-index: 4;
  left: clamp(1rem, 2.5vw, 2.5rem);
  bottom: clamp(3.8rem, 8vh, 6.5rem);
  width: min(26rem, calc(100% - 2rem));
  transition: opacity 360ms ease, transform 360ms ease;
}

.coupling-prompt.is-hidden,
.coupling-result[aria-hidden="true"] {
  opacity: 0;
  transform: translateY(0.5rem);
  pointer-events: none;
}

.coupling-prompt p {
  max-width: 32ch;
  margin: 0 0 1rem;
  color: rgba(6, 38, 51, 0.7);
  font: 500 0.65rem/1.4 var(--mono);
  letter-spacing: 0.1em;
  line-height: 1.5;
}

[data-entry-state="activation"] .coupling-prompt button,
[data-entry-state="play"] .coupling-prompt button { opacity: 0; pointer-events: none; }
[data-entry-state="activation"] .coupling-prompt { opacity: 0.5; transform: translateY(-0.15rem); }
[data-player-moved="true"] .coupling-prompt { opacity: 0; transform: translateY(0.5rem); pointer-events: none; }

.coupling-prompt button,
.coupling-result button {
  padding: 0.75rem 0;
  border: 0;
  border-bottom: 1px solid var(--teal);
  background: transparent;
  color: var(--navy);
  cursor: pointer;
  font: 500 0.65rem/1 var(--mono);
  letter-spacing: 0.12em;
}

.coupling-prompt button:focus-visible,
.coupling-result button:focus-visible {
  outline: 1px solid var(--cyan);
  outline-offset: 0.35rem;
}

.coupling-result {
  width: min(70rem, calc(100% - 2rem));
  max-height: calc(100% - 6rem);
  padding: clamp(1.1rem, 2.5vw, 2rem);
  overflow-y: auto;
  border: 1px solid rgba(6, 38, 51, 0.28);
  background: rgba(248, 244, 239, 0.94);
}

.coupling-result__eyebrow {
  margin: 0 0 1.2rem;
  font: 500 0.68rem/1 var(--mono);
  letter-spacing: 0.14em;
}

.coupling-result dl { margin: 0; }

.coupling-result dl div {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 1rem;
  padding: 0.45rem 0;
  border-top: 1px solid rgba(6, 38, 51, 0.13);
  font: 400 0.67rem/1.3 var(--mono);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.coupling-result dt { color: rgba(6, 38, 51, 0.55); }
.coupling-result dd { margin: 0; color: var(--teal); }

.coupling-result__header { display: grid; grid-template-columns: auto 1fr; gap: 2rem; align-items: end; margin-bottom: 1rem; }
.coupling-result__session { margin: 0.35rem 0 0; color: rgba(6, 38, 51, 0.48); font: 500 0.57rem/1 var(--mono); letter-spacing: 0.12em; }
.coupling-result__identity { display: flex; justify-content: flex-end; align-items: center; gap: clamp(0.8rem, 2vw, 1.4rem); min-width: 0; }
.coupling-result__kicker,
.coupling-result__section-label { margin: 0 0 0.48rem; color: rgba(6, 38, 51, 0.48); font: 500 0.52rem/1 var(--mono); letter-spacing: 0.13em; }
.coupling-result__header h2 { margin: 0; text-align: right; font-size: clamp(1.9rem, 4.2vw, 4rem); line-height: 0.86; letter-spacing: -0.055em; }
.coupling-result__emblem { --anchor-share: .33; --pulse-share: .33; --echo-share: .33; --emblem-scale: 1; --emblem-rotation: 0deg; --emblem-opacity: 1; --emblem-saturation: 1; --emblem-contrast: 1; position: relative; flex: 0 0 5.5rem; width: 5.5rem; aspect-ratio: 1; border: 1px solid rgba(20, 126, 129, 0.18); border-radius: 50%; }
.coupling-result__emblem img { position: absolute; z-index: 1; inset: -9%; width: 118%; height: 118%; object-fit: contain; opacity: var(--emblem-opacity); filter: saturate(var(--emblem-saturation)) contrast(var(--emblem-contrast)); transform: rotate(var(--emblem-rotation)) scale(var(--emblem-scale)); transform-origin: center; transition: opacity 420ms ease, filter 420ms ease, transform 620ms cubic-bezier(.2,.7,.2,1); }
.coupling-result__emblem::before,
.coupling-result__emblem::after { content: ""; position: absolute; inset: 18%; z-index: 0; border: 1px solid rgba(6, 38, 51, 0.12); border-radius: 50%; transform: rotate(-18deg) scaleX(1.28); }
.coupling-result__emblem::after { inset: 5%; border-style: dashed; border-color: rgba(20, 126, 129, calc(.08 + var(--echo-share) * .24)); transform: rotate(32deg) scaleY(.72); }
.coupling-result__emblem b,
.coupling-result__emblem i { position: absolute; z-index: 2; display: block; border-radius: 50%; }
.coupling-result__emblem b { left: 50%; top: 50%; width: .48rem; height: .48rem; transform: translate(-50%, -50%); background: var(--navy); box-shadow: 0 0 0 .16rem rgba(248, 244, 239, .72); }
.coupling-result__emblem i { width: .32rem; height: .32rem; background: currentColor; box-shadow: 0 0 0 .13rem rgba(248, 244, 239, .7); }
.coupling-result__emblem i:nth-of-type(1) { left: 9%; top: 58%; color: #b99a43; opacity: calc(.18 + var(--anchor-share) * .82); }
.coupling-result__emblem i:nth-of-type(2) { right: 7%; top: 27%; color: var(--teal); opacity: calc(.18 + var(--pulse-share) * .82); }
.coupling-result__emblem i:nth-of-type(3) { right: 21%; bottom: 4%; color: #8a65a6; opacity: calc(.18 + var(--echo-share) * .82); }
.coupling-result__emblem[data-density="sparse"]::after { transform: rotate(32deg) scale(.78, .56); }
.coupling-result__emblem[data-density="dense"]::before { box-shadow: 0 0 0 .38rem rgba(20, 126, 129, .05), 0 0 0 .75rem rgba(6, 38, 51, .025); }
.coupling-result__emblem[data-character="volatile"]::after { border-color: rgba(184, 96, 70, .42); }
.coupling-result__emblem[data-family="volatile-overloaded"] img { transform: rotate(var(--emblem-rotation)) scale(var(--emblem-scale)) skewX(-1.5deg); }
.coupling-result__emblem-family { margin: .48rem 0 0; color: rgba(20, 126, 129, .72); font: 500 .48rem/1 var(--mono); letter-spacing: .12em; }
.coupling-result__patterns { display: grid; grid-template-columns: 1.2fr .8fr .8fr; margin-bottom: 1rem !important; border-top: 1px solid rgba(6, 38, 51, 0.2); border-bottom: 1px solid rgba(6, 38, 51, 0.14); }
.coupling-result__patterns div { display: block !important; padding: .65rem 1rem .65rem 0 !important; border-top: 0 !important; }
.coupling-result__patterns div + div { padding-left: 1rem !important; border-left: 1px solid rgba(6, 38, 51, 0.12); }
.coupling-result__patterns dt { margin-bottom: .35rem; font-size: .48rem; letter-spacing: .12em; }
.coupling-result__patterns dd { color: var(--navy); font-size: .64rem; letter-spacing: .08em; }
.coupling-result__body { display: grid; grid-template-columns: minmax(15rem, 0.82fr) minmax(21rem, 1.35fr); gap: clamp(1.5rem, 3vw, 3.2rem); }
.coupling-result__evidence > dl div { padding: .3rem 0; }
.coupling-result__trace { margin: 0; }
.coupling-result__trace canvas { display: block; width: 100%; height: 8.8rem; border-bottom: 1px solid rgba(6, 38, 51, 0.14); }
.coupling-result__trace figcaption { margin-top: 0.45rem; color: rgba(6, 38, 51, 0.48); font: 400 0.55rem/1.4 var(--mono); }
.coupling-result__composition { margin-top: .75rem; }
.coupling-result__composition > p,
.coupling-result__moments > p { margin: 0 0 0.45rem; color: rgba(6, 38, 51, 0.48); font: 500 0.55rem/1 var(--mono); letter-spacing: 0.1em; }
.coupling-result__composition dl { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; border-top: 1px solid rgba(6, 38, 51, 0.13); }
.coupling-result__composition dl div { display: block; padding: 0.38rem 0 0; border-top: 0; }
.coupling-result__composition dl div + div { padding-left: .6rem; border-left: 1px solid rgba(6, 38, 51, 0.1); }
.coupling-result__composition dd { margin-top: .18rem; }
.coupling-result__analysis { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(1.5rem, 4vw, 4rem); margin-top: 1rem; padding-top: .9rem; border-top: 1px solid rgba(6, 38, 51, 0.14); }
.coupling-result__analysis section > p:last-child { margin: 0; color: rgba(6, 38, 51, 0.72); font-size: .72rem; line-height: 1.48; }
.coupling-result__lens { padding-left: 1rem; border-left: 1px solid rgba(6, 38, 51, 0.12); }
.coupling-result__lens h3 { margin: 0 0 .32rem; color: var(--teal); font: 500 .78rem/1.2 var(--sans); letter-spacing: .02em; }
.coupling-result__lens > p:last-child { color: var(--teal) !important; }
.coupling-result__moments { margin-top: 1rem; }
.coupling-result__moments ol { display: flex; flex-wrap: wrap; gap: 0.45rem 1rem; margin: 0; padding: 0; list-style: none; color: rgba(6, 38, 51, 0.65); font: 500 0.55rem/1.3 var(--mono); letter-spacing: 0.06em; }
.coupling-result__actions { display: flex; gap: 1.4rem; align-items: center; margin-top: 1.2rem; }
.coupling-result__actions button:last-child { border-bottom-color: rgba(6, 38, 51, 0.2); color: rgba(6, 38, 51, 0.48); font-size: 0.53rem; }
.coupling-result__debug { white-space: pre-wrap; font: 0.6rem/1.4 var(--mono); }

.coupling-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 44rem) {
  body {
    background:
      radial-gradient(circle, rgba(6, 38, 51, 0.09) 0 0.75px, transparent 0.9px),
      var(--paper);
    background-size: 20px 20px, auto;
  }

  .coupling-page__nav {
    grid-template-columns: 1fr auto;
    min-height: 4.25rem;
    padding: env(safe-area-inset-top) calc(1rem + env(safe-area-inset-right)) 0 calc(1rem + env(safe-area-inset-left));
  }

  .coupling-page__nav p { display: none; }

  .coupling-experience {
    min-height: 100svh;
    padding: 4.25rem 0.75rem 0.75rem;
  }

  .coupling-experience__canvas { width: 100%; }

  .coupling-rail {
    top: auto;
    right: calc(0.75rem + env(safe-area-inset-right));
    bottom: calc(2.45rem + env(safe-area-inset-bottom));
    left: calc(0.75rem + env(safe-area-inset-left));
    display: grid;
    grid-template-columns: 0.72fr 1fr 0.9fr;
    grid-template-areas: "session coupling load" "composition composition control";
    align-items: center;
    gap: 0.48rem 0.72rem;
    width: auto;
    min-height: 2.7rem;
    padding: 0.58rem 0.68rem;
    border-top: 1px solid rgba(6, 38, 51, 0.1);
    border-left: 0;
    background: rgba(248, 244, 239, 0.88);
    box-shadow: 0 -0.35rem 1rem rgba(248, 244, 239, 0.72);
    transform: translateY(0.35rem);
  }

  [data-entry-state="activation"] .coupling-rail,
  [data-entry-state="play"] .coupling-rail,
  [data-game-state="ending"] .coupling-rail { transform: translateY(0); }
  .coupling-rail__section + .coupling-rail__section { margin-top: 0; }
  .coupling-rail__session { grid-area: session; }
  .coupling-rail__coupling { grid-area: coupling; justify-self: center; }
  .coupling-rail__composition { grid-area: composition; }
  .coupling-rail__load { grid-area: load; justify-self: end; }
  .coupling-rail__control { grid-area: control; justify-self: end; }
  .coupling-rail h2 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
  .coupling-rail__section > p { font-size: 0.6rem; white-space: nowrap; }
  .coupling-rail__session [data-rail-session-total],
  .coupling-rail__time-line,
  .coupling-rail__coupling > p,
  .coupling-rail__tension { display: none; }
  .coupling-rail__slots { gap: 0.34rem; }
  .coupling-rail__slots i { width: 0.4rem; height: 0.4rem; }
  .coupling-rail__composition dl { display: flex; gap: 0.42rem; }
  .coupling-rail__composition dl div { display: flex; gap: 0.18rem; padding: 0; }
  .coupling-rail__composition dt { gap: 0; font-size: 0.5rem; }
  .coupling-rail__composition dt i { display: none; }
  .coupling-rail__composition dt span { font-size: 0; }
  .coupling-rail__composition dt span::after { font-size: 0.5rem; }
  .coupling-rail__composition [data-rail-type="anchor"] dt span::after { content: "A"; }
  .coupling-rail__composition [data-rail-type="pulse"] dt span::after { content: "P"; }
  .coupling-rail__composition [data-rail-type="echo"] dt span::after { content: "E"; }
  .coupling-rail__composition dd { font-size: 0.56rem; }
  .coupling-rail:not([data-can-release="true"]) .coupling-rail__composition { display: none; }
  .coupling-rail__relation { display: none; }
  .coupling-rail__control button { display: none; min-width: 5.4rem; min-height: 2.75rem; padding: 0.7rem 0.8rem; border: 1px solid rgba(20, 126, 129, 0.18); background: rgba(248, 244, 239, 0.84); font-size: 0.56rem; text-align: center; }
  .coupling-rail[data-can-release="true"] .coupling-rail__control button { display: block; pointer-events: auto; }
  .coupling-rail[data-release-emphasis="true"] .coupling-rail__control button,
  .coupling-rail[data-rail-load="strained"] .coupling-rail__control button,
  .coupling-rail[data-rail-load="overloaded"] .coupling-rail__control button { border-color: rgba(20, 126, 129, 0.5); background: rgba(232, 242, 239, 0.92); color: var(--teal); }
  .coupling-rail__control button span { display: none; }
  .coupling-rail__debug { display: none; }

  .coupling-experience__header {
    top: 5.75rem;
    left: 1.5rem;
    max-width: calc(100% - 3rem);
  }

  .coupling-experience__header h1 {
    font-size: clamp(3.1rem, 15vw, 5rem);
  }

  .coupling-experience__header > p:last-child {
    margin-top: 1.15rem;
    font-size: 0.95rem;
  }

  .coupling-page[data-coupling-player-moved="true"] .coupling-experience__header { opacity: 0; }
  [data-entry-state="play"] .coupling-session { display: none; }

  .coupling-experience__register {
    right: 0.75rem;
    bottom: 2.75rem;
    left: 0.75rem;
    justify-content: flex-end;
    gap: 0.6rem;
    font-size: 0.54rem;
  }

  [data-player-moved="true"] .coupling-experience__register { opacity: 0; }

  .coupling-experience__register span + span {
    padding-left: 0;
    border-left: 0;
  }

  .coupling-session {
    top: calc(0.75rem + env(safe-area-inset-top));
    right: calc(0.75rem + env(safe-area-inset-right));
    font-size: 0.52rem;
  }

  .coupling-session__load { min-width: 0; }

  .coupling-annotation { top: calc(3rem + env(safe-area-inset-top)); right: calc(0.75rem + env(safe-area-inset-right)); font-size: 0.64rem; }

  .coupling-perceptual-debug { top: 6rem; right: 0.75rem; width: calc(100% - 1.5rem); font-size: 0.5rem; }
  .coupling-audio-debug { top: 6rem; left: 0.75rem; width: calc(100% - 1.5rem); font-size: 0.48rem; }

  .coupling-notes-toggle { left: calc(0.75rem + env(safe-area-inset-left)); bottom: calc(0.75rem + env(safe-area-inset-bottom)); }

  .coupling-sound-toggle { left: calc(7rem + env(safe-area-inset-left)); bottom: calc(0.75rem + env(safe-area-inset-bottom)); }

  .coupling-notes { right: 0.75rem; bottom: 3rem; width: calc(100% - 1.5rem); }

  .coupling-prompt,
  .coupling-result {
    left: 0.75rem;
    bottom: 3.25rem;
    width: min(24rem, calc(100% - 1.5rem));
  }

  .coupling-result { width: calc(100% - 1.5rem); max-height: calc(100% - 4.5rem); padding: 1.15rem; overflow-x: hidden; background: rgba(248, 244, 239, 0.97); }
  .coupling-result__header,
  .coupling-result__body,
  .coupling-result__analysis { grid-template-columns: 1fr; gap: 1rem; }
  .coupling-result__header { gap: 1.15rem; }
  .coupling-result__eyebrow { margin-bottom: .6rem; }
  .coupling-result__header h2 { text-align: left; font-size: clamp(1.55rem, 7.2vw, 2.15rem); line-height: .9; overflow-wrap: anywhere; }
  .coupling-result__identity { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); justify-content: flex-start; }
  .coupling-result__identity > div:last-child { min-width: 0; }
  .coupling-result__emblem { display: block; flex-basis: 4.5rem; width: 4.5rem; }
  .coupling-result__emblem-family { line-height: 1.35; }
  .coupling-result__patterns { grid-template-columns: 1fr 1fr; }
  .coupling-result__patterns div { min-width: 0; }
  .coupling-result__patterns div:first-child { grid-column: 1 / -1; }
  .coupling-result__patterns div:nth-child(2) { padding-left: 0 !important; border-left: 0; border-top: 1px solid rgba(6, 38, 51, 0.1) !important; }
  .coupling-result__patterns dd { overflow-wrap: anywhere; }
  .coupling-result__trace canvas { height: 7rem; }
  .coupling-result__analysis { gap: 1.2rem; }
  .coupling-result__lens { padding-left: 0; border-left: 0; }
  .coupling-result__moments ol { display: grid; grid-template-columns: 1fr; gap: .38rem; }
  .coupling-result__actions { flex-wrap: wrap; gap: .8rem 1.2rem; }
}

@media (prefers-reduced-motion: reduce) {
  .coupling-experience__canvas { cursor: default; }
  .coupling-page__nav,
  .coupling-page__brand,
  .coupling-page__back,
  .coupling-experience__header,
  .coupling-experience__header h1,
  .coupling-experience__header > p:last-child,
  .coupling-experience__canvas,
  .coupling-rail,
  .coupling-rail__slots i,
  .coupling-rail__time-line i,
  .coupling-rail__tension i,
  .coupling-rail__control button,
  .coupling-annotation,
  .coupling-prompt,
  .coupling-result { transition: none; }
  [data-field-climate="overloaded"]::before,
  [data-field-climate="overloaded"]::after,
  [data-climate-transition]::before,
  [data-climate-transition]::after { animation: none; }
}
