/* FRAME Experience — JOURNEY + ATLAS
   Art direction "Horizonte": one hairline is the protagonist. It is the horizon
   on arrival, splits into source strata, releases the gold points that need
   Franklyn, frames the decision, runs on as the relay of responsibility,
   becomes the freshness ruler and closes as one line again. The Atlas keeps the
   same strata as a spatial register. Gold appears only where Franklyn is
   genuinely needed. */

@font-face {
  font-family: "Manrope Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url("./fonts/manrope-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Manrope Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url("./fonts/manrope-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url("./fonts/instrument-serif-latin-400-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url("./fonts/instrument-serif-latin-400-italic.woff2") format("woff2");
}

:root {
  color-scheme: dark;
  --fx-bg: #0a0908;
  --fx-bg-raise: #12100e;
  --fx-ink: #f4f0e8;
  --fx-ink-2: rgba(244, 240, 232, 0.74);
  --fx-ink-3: rgba(244, 240, 232, 0.52);
  --fx-ink-4: rgba(244, 240, 232, 0.2);
  --fx-hair: rgba(244, 240, 232, 0.12);
  --fx-gold: #f6cc84;
  --fx-gold-soft: rgba(246, 204, 132, 0.16);
  --fx-alert: #ec9a7f;
  --fx-sans: "Manrope Variable", "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --fx-serif: "Instrument Serif", ui-serif, Georgia, serif;
  --fx-ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --fx-ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --fx-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
  --fx-gutter: clamp(1rem, 5.2vw, 5.5rem);
  --fx-bar-h: 3.75rem;
}

*, *::before, *::after { box-sizing: border-box; }

html { background: var(--fx-bg); -webkit-text-size-adjust: 100%; }

body.fx {
  margin: 0;
  min-height: 100svh;
  background: var(--fx-bg);
  color: var(--fx-ink);
  font-family: var(--fx-sans);
  font-size: 1rem;
  font-weight: 450;
  line-height: 1.55;
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}

body.fx.fx-atlas-open { overflow: hidden; }

.sr-only {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

:where(.fx) :focus-visible {
  outline: 1.5px solid var(--fx-ink);
  outline-offset: 3px;
  border-radius: 2px;
}

:where(.fx) button { font: inherit; color: inherit; }

.fx-skip {
  position: fixed; left: var(--fx-gutter); top: 0.75rem; z-index: 90;
  transform: translateY(-160%);
  padding: 0.55rem 0.9rem; background: var(--fx-ink); color: var(--fx-bg);
  font-weight: 650; font-size: 0.82rem; text-decoration: none; border-radius: 999px;
  transition: transform 180ms var(--fx-ease-out);
}
.fx-skip:focus-visible { transform: translateY(0); }

/* ── Top bar ─────────────────────────────────────────────────────────── */
.fx-bar {
  position: fixed; inset: 0 0 auto 0; z-index: 30;
  height: var(--fx-bar-h);
  display: flex; align-items: center; gap: 1rem;
  padding: 0 var(--fx-gutter);
  background: linear-gradient(to bottom, rgba(10, 9, 8, 0.92), rgba(10, 9, 8, 0.6) 70%, transparent);
}
.fx-mark {
  font-weight: 700; font-size: 0.86rem; letter-spacing: 0.32em; color: var(--fx-ink);
  text-decoration: none; padding-right: 0.2rem;
}
.fx-mode {
  font-size: 0.72rem; font-weight: 650; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--fx-ink-3); border-left: 1px solid var(--fx-ink-4); padding-left: 0.9rem;
  white-space: nowrap;
}
.fx-mode[data-mode="demo"] { color: var(--fx-gold); }
.fx-bar-end { margin-left: auto; display: flex; align-items: center; gap: 0.35rem; }
.fx-stand {
  font-size: 0.72rem; color: var(--fx-ink-3); margin-right: 0.6rem; white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.fx-stand b { font-weight: 600; color: var(--fx-ink-2); }

.fx-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  min-height: 2.5rem; padding: 0 1.05rem;
  border: 1px solid var(--fx-ink-4); border-radius: 999px; background: transparent;
  font-size: 0.78rem; font-weight: 650; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--fx-ink); text-decoration: none; cursor: pointer;
  transition: background-color 160ms ease, border-color 160ms ease, transform 120ms var(--fx-ease-out);
}
.fx-btn:active { transform: scale(0.97); }
.fx-btn[disabled] { opacity: 0.45; cursor: not-allowed; }
.fx-btn--solid { background: var(--fx-ink); color: var(--fx-bg); border-color: var(--fx-ink); }
.fx-btn--gold { background: var(--fx-gold); color: #1a1408; border-color: var(--fx-gold); }
.fx-btn--quiet { border-color: transparent; color: var(--fx-ink-2); }
.fx-icon-btn { width: 2.5rem; padding: 0; }
.fx-icon-btn svg { width: 1.05rem; height: 1.05rem; }
@media (hover: hover) and (pointer: fine) {
  .fx-btn:hover { border-color: var(--fx-ink-3); background: rgba(244, 240, 232, 0.05); }
  .fx-btn--solid:hover { background: #fffaf2; border-color: #fffaf2; }
  .fx-btn--gold:hover { background: #ffd894; border-color: #ffd894; }
  .fx-btn--quiet:hover { color: var(--fx-ink); background: transparent; }
}
.fx-is-busy .fx-icon-btn svg { animation: fx-spin 900ms linear infinite; }
@keyframes fx-spin { to { transform: rotate(360deg); } }
/* ── World canvas ───────────────────────────────────────────────────── */
#fxWorld {
  position: fixed; inset: 0; width: 100vw; height: 100svh; z-index: 0;
  pointer-events: none; display: block;
}

/* ── Journey scenes ─────────────────────────────────────────────────── */
.fx-journey { position: relative; z-index: 1; }

.scene { position: relative; }
.scene--film { height: var(--scene-len, 190svh); }
.scene--film > .scene-stage {
  position: sticky; top: 0; height: 100svh;
  padding: calc(var(--fx-bar-h) + clamp(1.5rem, 7svh, 5rem)) var(--fx-gutter) clamp(1.5rem, 6svh, 4rem);
  display: flex; flex-direction: column;
}

.fx-eyebrow {
  margin: 0 0 1.1rem; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--fx-ink-3);
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.85rem;
}
.fx-eyebrow .fx-num { color: var(--fx-ink-2); font-variant-numeric: tabular-nums; letter-spacing: 0.12em; }
.fx-eyebrow > span:not(.fx-num) { letter-spacing: 0.04em; text-transform: none; font-weight: 500; }

.fx-display {
  margin: 0; max-width: 15ch;
  font-size: clamp(2.5rem, min(6.4vw, 11svh), 6.2rem); font-weight: 600;
  line-height: 0.98; letter-spacing: -0.048em; text-wrap: balance;
}
.fx-h2 {
  margin: 0; max-width: 18ch;
  font-size: clamp(2rem, min(4.6vw, 8.4svh), 4.3rem); font-weight: 600;
  line-height: 1.02; letter-spacing: -0.042em; text-wrap: balance;
}
.fx-serif {
  margin: 1.1rem 0 0; max-width: 34ch;
  font-family: var(--fx-serif); font-weight: 400;
  font-size: clamp(1.22rem, min(2.05vw, 3.6svh), 1.85rem); line-height: 1.3;
  color: var(--fx-ink-2); text-wrap: pretty;
}
.fx-serif em { font-style: italic; color: var(--fx-ink); }
.fx-gold { color: var(--fx-gold); }
.fx-mini-head { margin: 0 0 0.55rem; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.22em; text-transform: uppercase; color: var(--fx-ink-3); }
.fx-boundary {
  margin: 0.8rem 0 0; max-width: 62ch; padding-left: 0.9rem; border-left: 1px dashed var(--fx-ink-4);
  font-size: 0.86rem; line-height: 1.5; color: var(--fx-ink-3);
}

.fx-reveal { opacity: var(--o, 1); transform: translate3d(0, var(--y, 0px), 0); will-change: opacity, transform; }

/* arrival */
.scene-arrival .scene-stage { justify-content: flex-start; }
.fx-arrival-copy { max-width: 62rem; }
.fx-tally {
  margin: 2rem 0 0; padding: 0; list-style: none;
  display: flex; flex-wrap: wrap; gap: 0.4rem 1.6rem;
  font-size: 0.78rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fx-ink-3);
}
.fx-tally b { color: var(--fx-ink); font-weight: 650; font-variant-numeric: tabular-nums; margin-right: 0.4rem; }
.fx-tally .is-gold b { color: var(--fx-gold); }
.fx-arrival-go { margin-top: auto; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.6rem; }
.fx-cue {
  margin: 0; display: flex; align-items: center; gap: 0.85rem;
  font-size: 0.72rem; font-weight: 650; letter-spacing: 0.22em; text-transform: uppercase; color: var(--fx-ink-3);
}
.fx-cue::before { content: ""; width: 2.6rem; height: 1px; background: var(--fx-ink-4); }

/* reality: on wide screens labels sit on the canvas lines */
.fx-strata-labels { position: absolute; inset: 0; margin: 0; padding: 0; list-style: none; pointer-events: none; }
.fx-stratum-label {
  position: absolute; top: 0; left: var(--fx-gutter); right: var(--fx-gutter);
  display: flex; align-items: baseline; gap: 1rem;
  transform: translate3d(0, calc(var(--sy, 0px) - 1.55rem), 0);
  opacity: var(--o, 0);
  font-size: 0.82rem;
}
.fx-stratum-label strong { font-weight: 650; font-size: 0.95rem; letter-spacing: -0.01em; min-width: 6.5rem; }
.fx-stratum-label span { color: var(--fx-ink-3); font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; }
.fx-stratum-label .is-changed { color: var(--fx-ink); }
.fx-stratum-label .is-attention { color: var(--fx-gold); }
.fx-changes {
  margin: 1.4rem 0 0; padding: 0; list-style: none; max-width: 36rem;
  display: grid; gap: 0.5rem; font-size: 0.95rem; color: var(--fx-ink);
}
.fx-changes li { display: flex; gap: 0.8rem; align-items: baseline; }
.fx-changes li::before { content: ""; flex: 0 0 auto; width: 0.9rem; height: 1px; background: var(--fx-ink-2); transform: translateY(-0.3rem); }
.fx-changes li span { min-width: 0; overflow-wrap: anywhere; }
.fx-changes small { display: block; margin-top: 0.15rem; color: var(--fx-ink-3); font-size: 0.8rem; line-height: 1.45; }
.fx-changes .fx-changes-more { color: var(--fx-ink-3); font-size: 0.82rem; }
.fx-strata-flat { display: none; }
@media (min-width: 821px) and (min-aspect-ratio: 10/11) {
  .scene-reality .fx-changes {
    position: absolute; right: var(--fx-gutter); width: min(30rem, 34vw); margin: 0;
    top: calc(var(--fx-bar-h) + clamp(1.5rem, 7svh, 5rem) + 3.4rem);
  }
}

/* ── AUFMERKSAMKEIT · work surface: calm document flow ─────────────── */
.scene--work {
  min-height: 100svh;
  padding: calc(var(--fx-bar-h) + clamp(2.5rem, 9svh, 6rem)) var(--fx-gutter) clamp(4rem, 12svh, 8rem);
  background: var(--fx-bg);
}
.fx-work { width: min(100%, 50rem); }
.fx-work .fx-h2 { max-width: 16ch; }
.fx-work-count {
  margin: 1.2rem 0 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 0.55rem;
  font-size: 0.95rem; color: var(--fx-ink-2);
}
.fx-work-count span { flex-basis: 100%; font-size: 0.82rem; color: var(--fx-ink-3); }
.fx-count-n { display: inline-block; font-size: 1.7rem; line-height: 1; font-weight: 650; color: var(--fx-gold); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }
.fx-count-n.is-ticking { animation: fx-tick 560ms var(--fx-ease-out); }
@keyframes fx-tick { from { transform: translate3d(0, -0.4em, 0); opacity: 0.15; } }

.fx-lane { margin-top: clamp(2.2rem, 6svh, 3.4rem); }
.fx-work-lane-head {
  margin: 0 0 0.75rem;
  font-size: 0.72rem; font-weight: 650; letter-spacing: 0.22em; text-transform: uppercase; color: var(--fx-ink);
}
.fx-work-lane-head small { display: block; margin-top: 0.3rem; font-size: 0.8rem; font-weight: 500; letter-spacing: 0.01em; text-transform: none; color: var(--fx-ink-3); }
.fx-queue { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--fx-hair); }
.fx-q { border-bottom: 1px solid var(--fx-hair); }
.fx-q.is-leaving {
  height: 0 !important; overflow: hidden; opacity: 0; transform: translate3d(1rem, 0, 0);
  border-bottom-color: transparent;
  transition: height 300ms var(--fx-ease-in-out) 90ms, opacity 180ms ease, transform 240ms var(--fx-ease-out), border-color 300ms ease;
}
.fx-q.is-arriving .fx-q-panel { animation: fx-arrive 420ms var(--fx-ease-out); }
@keyframes fx-arrive { from { opacity: 0; transform: translate3d(0, 8px, 0); } }
.fx-q-head {
  display: grid; grid-template-columns: 1.6rem minmax(0, 1fr); align-items: start;
  width: 100%; min-height: 44px; margin: 0; padding: 0.95rem 0;
  border: 0; background: transparent; text-align: left; cursor: pointer;
}
.fx-q-head[disabled] { cursor: default; }
.fx-q-mark { width: 7px; height: 7px; margin-top: 0.55rem; border-radius: 50%; background: var(--fx-gold); }
.fx-q[data-lane="source"] .fx-q-mark { background: transparent; border: 1px solid var(--fx-ink-2); }
.fx-q-title { display: block; font-size: 1.02rem; line-height: 1.42; font-weight: 520; color: var(--fx-ink); text-wrap: pretty; overflow-wrap: anywhere; }
.fx-q-meta { display: block; margin-top: 0.3rem; font-size: 0.75rem; line-height: 1.4; color: var(--fx-ink-3); overflow-wrap: anywhere; }
.fx-q[data-open="true"] .fx-q-title { font-weight: 640; }
@media (hover: hover) and (pointer: fine) {
  .fx-q-head:not([disabled]):hover .fx-q-title { color: var(--fx-gold); }
}
.fx-q-panel { padding: 0 0 1.5rem 1.6rem; }
.fx-q-full { margin: 0 0 1.1rem; max-width: 62ch; font-size: 0.95rem; line-height: 1.6; color: var(--fx-ink-2); }
.fx-q-facts { margin: 0; display: grid; gap: 0.85rem; }
.fx-q-facts dt, .fx-q-proof dt, .fx-lane-facts dt, .fx-loop-list dt, .fx-course-frame dt {
  font-size: 0.7rem; font-weight: 650; letter-spacing: 0.2em; text-transform: uppercase; color: var(--fx-ink-3);
}
.fx-q-facts dd { margin: 0.3rem 0 0; max-width: 62ch; font-size: 0.92rem; line-height: 1.5; color: var(--fx-ink); overflow-wrap: anywhere; }
.fx-q-status { margin-top: 1.2rem; padding: 0.85rem 1rem; border-left: 2px solid var(--fx-ink-3); background: rgba(244, 240, 232, 0.035); }
.fx-q-status[hidden] { display: none; }
.fx-q-status[data-tone="busy"] { border-left-color: var(--fx-gold); }
.fx-q-status[data-tone="ok"] { border-left-color: var(--fx-ink); }
.fx-q-status[data-tone="open"] { border-left-color: var(--fx-gold); background: rgba(246, 204, 132, 0.06); }
.fx-q-status[data-tone="fail"] { border-left-color: var(--fx-alert); background: rgba(236, 154, 127, 0.07); }
.fx-q-message { margin: 0; font-size: 0.9rem; line-height: 1.5; color: var(--fx-ink); }
.fx-q-status[data-tone="fail"] .fx-q-message { color: var(--fx-alert); }
.fx-steps { margin: 0 0 0.75rem; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 0.4rem 1.1rem; font-size: 0.74rem; color: var(--fx-ink-3); }
.fx-steps li { display: flex; align-items: center; gap: 0.45rem; }
.fx-steps i { width: 7px; height: 7px; border-radius: 50%; border: 1px solid var(--fx-ink-3); }
.fx-steps [data-state="done"] { color: var(--fx-ink-2); }
.fx-steps [data-state="done"] i { background: var(--fx-ink); border-color: var(--fx-ink); }
.fx-steps [data-state="active"] { color: var(--fx-ink); }
.fx-steps [data-state="active"] i { background: var(--fx-gold); border-color: var(--fx-gold); animation: fx-pulse 1.4s ease-in-out infinite; }
.fx-steps [data-state="failed"] { color: var(--fx-alert); }
.fx-steps [data-state="failed"] i { background: var(--fx-alert); border-color: var(--fx-alert); }
.fx-steps [data-state="unknown"] i { border-style: dashed; }
@keyframes fx-pulse { 50% { opacity: 0.35; } }
.fx-q-actions { margin-top: 1.2rem; display: flex; flex-wrap: wrap; gap: 0.55rem; align-items: center; }
.fx-q-actions[hidden], .fx-q-confirm[hidden] { display: none; }
.fx-q-confirm { margin-top: 1.2rem; padding: 1rem 1.1rem 1.1rem; border: 1px solid var(--fx-gold); background: rgba(246, 204, 132, 0.05); }
.fx-q-confirm > p { margin: 0; max-width: 62ch; font-size: 0.9rem; line-height: 1.5; color: var(--fx-ink-2); }
.fx-q-confirm .fx-q-actions { margin-top: 0.9rem; }
.fx-q-proof { margin-top: 1rem; }
.fx-q-proof summary, .fx-sources-details summary {
  display: flex; align-items: center; gap: 0.6rem; min-height: 44px; cursor: pointer; list-style: none;
  font-size: 0.72rem; font-weight: 650; letter-spacing: 0.2em; text-transform: uppercase; color: var(--fx-ink-3);
}
.fx-q-proof summary::-webkit-details-marker, .fx-sources-details summary::-webkit-details-marker { display: none; }
.fx-q-proof summary::after, .fx-sources-details summary::after { content: "+"; font-size: 0.9rem; letter-spacing: 0; }
.fx-q-proof[open] summary::after, .fx-sources-details[open] summary::after { content: "−"; }
.fx-q-proof dl { margin: 0.2rem 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem 1.6rem; }
.fx-q-proof dd { margin: 0.3rem 0 0; font-size: 0.84rem; line-height: 1.45; color: var(--fx-ink-2); overflow-wrap: anywhere; }
.fx-note { margin: 0.9rem 0 0; max-width: 60ch; font-size: 0.8rem; line-height: 1.5; color: var(--fx-ink-3); }
.fx-queue-more { margin: 1.3rem 0 0; font-size: 0.84rem; color: var(--fx-ink-3); }
.fx-work > .fx-queue { margin-top: 2rem; }

.fx-fresh { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.16em; color: var(--fx-ink-3); }
.fx-fresh svg { width: 1.6rem; height: 6px; overflow: visible; }
.fx-fresh svg line { stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; }
.fx-fresh[data-state="current"], .fx-fresh[data-state="projection"] { color: var(--fx-ink-2); }
.fx-fresh[data-state="unavailable"] { color: var(--fx-alert); }
.fx-state-note { margin: 0.6rem 0 0; font-size: 0.82rem; line-height: 1.45; color: var(--fx-ink-2); }
.fx-state-note b { color: var(--fx-ink); font-weight: 600; }
.fx-rel--missing li { padding: 0.35rem 0; color: var(--fx-ink-3); font-size: 0.82rem; border-bottom: 1px dashed var(--fx-hair); }
.fx-consequence { margin-top: 1.4rem; padding: 0.95rem 1.1rem; border-left: 2px solid var(--fx-gold); background: var(--fx-gold-soft); font-size: 0.86rem; line-height: 1.5; color: var(--fx-ink-2); }
.fx-consequence strong { display: block; margin-bottom: 0.3rem; font-size: 0.72rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--fx-gold); }
.fx-actions { margin-top: 1.5rem; display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; }

/* ── ABSCHLUSS · flow ───────────────────────────────────────────────── */
.scene--flow {
  min-height: 100svh;
  padding: calc(var(--fx-bar-h) + clamp(3rem, 12svh, 8rem)) var(--fx-gutter) clamp(4rem, 14svh, 9rem);
}
.fx-flow { max-width: 60rem; }
.fx-horizon-anchor { display: block; height: 1px; margin-top: 2.6rem; }
.fx-outcomes { margin: 1.6rem 0 0; padding: 0; list-style: none; display: grid; gap: 0.2rem; max-width: 46rem; }
.fx-outcomes li { display: grid; grid-template-columns: 1.6rem minmax(0, 1fr) auto; gap: 0.7rem; align-items: baseline; padding: 0.7rem 0; border-top: 1px solid var(--fx-hair); }
.fx-outcomes .fx-o-mark { width: 9px; height: 9px; border-radius: 50%; border: 1.2px solid var(--fx-ink-2); transform: translateY(0.05rem); }
.fx-outcomes [data-state="done"] .fx-o-mark { background: var(--fx-ink); border-color: var(--fx-ink); }
.fx-outcomes [data-state="progress"] .fx-o-mark { background: linear-gradient(90deg, var(--fx-ink) 50%, transparent 50%); }
.fx-outcomes b { font-weight: 600; font-size: 0.98rem; }
.fx-outcomes span { display: block; font-size: 0.8rem; color: var(--fx-ink-3); margin-top: 0.15rem; }
.fx-outcomes small { font-size: 0.72rem; font-weight: 650; letter-spacing: 0.2em; color: var(--fx-ink-3); }
.fx-sources-details { margin-top: 2.6rem; max-width: 46rem; border-top: 1px solid var(--fx-hair); }
.fx-sources-details summary span { font-size: 0.8rem; font-weight: 500; letter-spacing: 0.02em; text-transform: none; color: var(--fx-ink-3); }
.fx-sources-details summary b { color: var(--fx-ink); font-weight: 600; }
.fx-sources { margin: 0.2rem 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 2rem; }
.fx-sources li { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 0.5rem 0; border-top: 1px solid var(--fx-hair); font-size: 0.84rem; }
.fx-sources li span:first-child { color: var(--fx-ink); font-weight: 550; }
.fx-sources li small { font-size: 0.72rem; color: var(--fx-ink-3); text-align: right; font-variant-numeric: tabular-nums; }
.fx-closing { margin-top: 3rem; display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; }

/* rail — chapter navigation, forward and backward */
.fx-rail {
  position: fixed; right: clamp(0.6rem, 1.6vw, 1.6rem); top: 50%; z-index: 20;
  transform: translateY(-50%);
  display: grid; gap: 0.15rem;
}
.fx-rail button {
  display: flex; align-items: center; justify-content: flex-end; gap: 0.7rem;
  border: 0; background: transparent; cursor: pointer; padding: 0.35rem 0.2rem;
  font-size: 0.72rem; font-weight: 650; letter-spacing: 0.2em; color: transparent; text-transform: uppercase;
  transition: color 160ms ease;
}
.fx-rail button::after { content: ""; width: 2rem; height: 1px; background: var(--fx-ink-4); transform: scaleX(0.55); transform-origin: 100% 50%; transition: transform 220ms var(--fx-ease-out), background-color 160ms ease; }
.fx-rail button[aria-current="step"] { color: transparent; }
.fx-rail button[aria-current="step"]::after { transform: none; background: var(--fx-ink); }
.fx-rail button:focus-visible { color: var(--fx-ink-2); }
@media (hover: hover) and (pointer: fine) {
  .fx-rail:hover button { color: var(--fx-ink-3); }
  .fx-rail button:hover { color: var(--fx-ink); }
}

/* ── Gate + states ──────────────────────────────────────────────────── */
.fx-center {
  position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; padding: var(--fx-gutter);
  background: var(--fx-bg);
}
.fx-center[hidden] { display: none; }
.fx-gate { width: min(100%, 24rem); }
.fx-gate h1 { margin: 0.4rem 0 0; font-size: 2rem; font-weight: 600; letter-spacing: -0.04em; line-height: 1.05; }
.fx-gate p { color: var(--fx-ink-2); font-size: 0.92rem; }
.fx-gate label { display: block; margin-top: 1.6rem; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.22em; color: var(--fx-ink-3); }
.fx-gate input {
  width: 100%; margin-top: 0.5rem; padding: 0.75rem 0; border: 0; border-bottom: 1px solid var(--fx-ink-3);
  background: transparent; color: var(--fx-ink); font: 600 1.6rem/1 var(--fx-sans); letter-spacing: 0.5em;
}
.fx-gate input:focus-visible { outline: none; border-bottom-color: var(--fx-ink); }
.fx-gate .fx-error { min-height: 1.4rem; color: var(--fx-alert); font-size: 0.84rem; margin: 0.8rem 0; }
.fx-gate .fx-actions { margin-top: 0.4rem; }
.fx-loading { font-size: 0.72rem; font-weight: 650; letter-spacing: 0.2em; text-transform: uppercase; color: var(--fx-ink-3); }

/* ── ATLAS ──────────────────────────────────────────────────────────── */
.fx-atlas {
  position: fixed; inset: 0; z-index: 40;
  display: block; overflow-y: auto; overscroll-behavior: contain;
  scrollbar-gutter: stable; scroll-padding-block: 1rem;
  background: var(--fx-bg);
  opacity: 0;
  transition: opacity 180ms ease;
}
.fx-atlas[hidden] { display: none; }
.fx-atlas.is-open { opacity: 1; transform: none; }

.fx-atlas-head {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(14rem, 26rem) auto; align-items: center; gap: 1.2rem;
  padding: 0.85rem var(--fx-gutter) 0.9rem;
  border-bottom: 1px solid var(--fx-hair);
}
.fx-crumbs { display: flex; align-items: center; gap: 0.2rem; min-width: 0; flex-wrap: wrap; font-size: 0.72rem; color: var(--fx-ink-3); }
.fx-crumbs b { font-size: 0.86rem; font-weight: 700; letter-spacing: 0.32em; color: var(--fx-ink); margin-right: 0.8rem; }
.fx-crumbs button { border: 0; background: transparent; cursor: pointer; padding: 0.3rem 0.25rem; color: var(--fx-ink-2); font-size: 0.78rem; letter-spacing: 0.01em; }
.fx-crumbs button[aria-current="location"] { color: var(--fx-ink); font-weight: 600; }
.fx-crumbs i { font-style: normal; color: var(--fx-ink-4); }

.fx-search { position: relative; }
.fx-search input {
  width: 100%; height: 2.5rem; padding: 0 0.9rem 0 2.2rem; border-radius: 999px;
  border: 1px solid var(--fx-ink-4); background: transparent; color: var(--fx-ink);
  font: 500 0.86rem var(--fx-sans);
}
.fx-search input::placeholder { color: var(--fx-ink-3); }
.fx-search input:focus-visible { outline: none; border-color: var(--fx-ink-2); }
.fx-search svg { position: absolute; left: 0.85rem; top: 50%; width: 0.85rem; height: 0.85rem; transform: translateY(-50%); color: var(--fx-ink-3); }
.fx-results {
  position: absolute; z-index: 5; left: 0; right: 0; top: calc(100% + 0.4rem);
  margin: 0; padding: 0.35rem; list-style: none; background: var(--fx-bg-raise); border: 1px solid var(--fx-ink-4); border-radius: 14px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.55);
  transform-origin: 50% 0;
  animation: fx-pop 160ms var(--fx-ease-out);
}
.fx-results[hidden] { display: none; }
@keyframes fx-pop { from { opacity: 0; transform: scale(0.97); } }
.fx-results li { display: flex; justify-content: space-between; gap: 1rem; padding: 0.55rem 0.7rem; border-radius: 9px; cursor: pointer; font-size: 0.86rem; }
.fx-results li small { color: var(--fx-ink-3); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; }
.fx-results li[aria-selected="true"] { background: rgba(244, 240, 232, 0.08); }
.fx-results .fx-empty { color: var(--fx-ink-3); cursor: default; }

.fx-atlas-tools { display: flex; align-items: center; gap: 0.3rem; justify-content: flex-end; }
.fx-filters { display: flex; gap: 0.15rem; margin-right: 0.6rem; }
.fx-filters button {
  border: 0; background: transparent; cursor: pointer; padding: 0.45rem 0.6rem; border-radius: 999px;
  font-size: 0.72rem; font-weight: 650; letter-spacing: 0.16em; text-transform: uppercase; color: var(--fx-ink-3);
}
.fx-filters button[aria-pressed="true"] { color: var(--fx-ink); background: rgba(244, 240, 232, 0.08); }

.fx-atlas-body { position: relative; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; padding-bottom: max(2rem, env(safe-area-inset-bottom)); }
.fx-atlas-body.has-inspector { grid-template-columns: minmax(0, 1fr) minmax(20rem, 26rem); }
.fx-register { position: relative; min-height: 72svh; display: flex; flex-direction: column; padding: 0 var(--fx-gutter) 0 calc(var(--fx-gutter) + 3.2rem); }
.fx-arcs { position: absolute; left: 0; top: 0; width: calc(var(--fx-gutter) + 3.2rem); height: 100%; overflow: visible; pointer-events: none; }
.fx-arcs path { fill: none; stroke: var(--fx-ink-4); stroke-width: 1; transition: stroke 200ms ease, opacity 200ms ease; }
.fx-arcs path.is-lit { stroke: var(--fx-ink-2); }
.fx-arcs path.is-gold { stroke: var(--fx-gold); }
.fx-links { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.fx-links path { fill: none; stroke: var(--fx-gold); stroke-width: 1; opacity: 0.7; }
.fx-links circle { fill: var(--fx-gold); }

.fx-band {
  position: relative; flex: 1 1 0; min-height: 2.6rem;
  border-top: 1px solid var(--fx-hair);
  display: flex; flex-direction: column;
  transition: flex-grow 520ms var(--fx-ease-in-out), opacity 260ms ease;
  overflow: hidden;
}
.fx-band:last-child { border-bottom: 1px solid var(--fx-hair); }
.fx-register.is-focused .fx-band { flex: 0 0 auto; }
.fx-register.is-focused .fx-band.is-focus { flex: 1 0 auto; overflow: visible; }
.fx-register.is-focused .fx-band.is-focus .fx-band-body { overflow: visible; max-height: none; padding-bottom: 1.5rem; }
.fx-band-head {
  width: 100%; display: grid; grid-template-columns: 2.4rem minmax(9rem, 0.9fr) minmax(0, 1.6fr) auto; gap: 1.2rem; align-items: center;
  border: 0; background: transparent; cursor: pointer; text-align: left; padding: 0; min-height: 2.6rem; flex: 1 1 auto;
}
.fx-register.is-focused .fx-band-head { flex: 0 0 auto; }
.fx-band-idx { font-size: 0.72rem; font-weight: 650; letter-spacing: 0.14em; color: var(--fx-ink-3); font-variant-numeric: tabular-nums; }
.fx-band-label {
  font-size: clamp(1.15rem, min(2.6vw, 4.2svh), 2.35rem); font-weight: 600; letter-spacing: -0.035em; line-height: 1;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0;
  transition: color 200ms ease;
}
.fx-register.is-focused .fx-band:not(.is-focus) .fx-band-label { font-size: clamp(0.95rem, 1.5vw, 1.3rem); color: var(--fx-ink-2); }
.fx-barcode { display: flex; align-items: center; gap: 3px; height: 1.1rem; min-width: 0; overflow: hidden; }
.fx-barcode i { flex: 0 0 auto; width: 1.5px; height: 100%; background: var(--fx-ink-2); border-radius: 1px; transition: opacity 200ms ease; }
.fx-barcode i[data-state="projection"] { height: 85%; opacity: 0.8; }
.fx-barcode i[data-state="stale"] { height: 70%; opacity: 0.6; }
.fx-barcode i[data-state="unknown"] { height: 30%; opacity: 0.45; }
.fx-barcode i[data-state="unavailable"] { height: 100%; width: 1px; background: transparent; border-left: 1px dashed var(--fx-alert); opacity: 0.8; }
.fx-barcode i.is-attention { background: var(--fx-gold); width: 2.5px; }
.fx-barcode i.is-dim { opacity: 0.12; }
.fx-band-meta { font-size: 0.75rem; color: var(--fx-ink-3); letter-spacing: 0.01em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.fx-band-meta .fx-gold { font-weight: 650; }
.fx-band.is-hover .fx-band-label, .fx-band-head:focus-visible .fx-band-label { color: var(--fx-ink); }
@media (hover: hover) and (pointer: fine) {
  .fx-register:not(.is-focused) .fx-band:hover { background: rgba(244, 240, 232, 0.02); }
}

.fx-band-body {
  display: none; min-height: 0; overflow: auto; padding: 0.4rem 0 1.4rem 3.6rem;
  scrollbar-width: thin;
}
.fx-band.is-focus .fx-band-body { display: block; }
.fx-band-summary { margin: 0 0 1.2rem; max-width: 60ch; font-family: var(--fx-serif); font-size: 1.2rem; line-height: 1.3; color: var(--fx-ink-2); }
/* MOMENTUM owner navigation: two original FRAME groups, one source model. */
.fx-frame-owner-rail {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px; margin: 0 0 1.45rem; border: 1px solid var(--fx-hair);
  background: var(--fx-hair);
}
.fx-frame-owner-rail button {
  display: flex; min-width: 0; align-items: baseline; gap: 0.8rem;
  padding: 0.85rem 1rem; border: 0; background: var(--fx-bg);
  color: var(--fx-ink); cursor: pointer; text-align: left;
}
.fx-frame-owner-rail button:hover { background: rgba(244,240,232,.055); }
.fx-frame-owner-rail button:focus-visible { outline: 1.5px solid var(--fx-ink); outline-offset: -3px; }
.fx-frame-owner-rail small {
  color: var(--fx-gold); font-size: .69rem; letter-spacing: .14em; font-weight: 700;
}
.fx-frame-owner-rail strong {
  font-size: .77rem; line-height: 1.4; font-weight: 650; letter-spacing: .07em;
}
.fx-frame-owner-rail span {
  margin-left: auto; color: var(--fx-ink-3); font-size: .7rem; line-height: 1.4;
  white-space: nowrap;
}
.fx-col[data-case-owner="true"] {
  border-top: 1px solid rgba(244,240,232,.32); padding-top: .75rem;
}
.fx-col[data-case-owner="true"] h3 { color: var(--fx-ink-2); }
@media (max-width: 600px) {
  .fx-frame-owner-rail { grid-template-columns: 1fr; }
  .fx-frame-owner-rail button { padding: .7rem .8rem; }
  .fx-frame-owner-rail strong { font-size: .74rem; }
}

.fx-columns { display: grid; grid-template-columns: repeat(auto-fill, minmax(13.5rem, 1fr)); gap: 1.4rem 2.2rem; }
.fx-col h3 { margin: 0 0 0.4rem; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.22em; color: var(--fx-ink-3); }
.fx-col h3 button { all: unset; cursor: pointer; padding: 0.3rem 0; }
.fx-col h3 button:focus-visible { outline: 1.5px solid var(--fx-ink); outline-offset: 3px; }
.fx-col ul { margin: 0; padding: 0; list-style: none; }
.fx-entity {
  width: 100%; display: grid; grid-template-columns: 1.7rem minmax(0, 1fr); gap: 0.3rem; align-items: baseline;
  padding: 0.42rem 0; border: 0; border-top: 1px solid var(--fx-hair); background: transparent; cursor: pointer; text-align: left;
  opacity: 0; transform: translate3d(0, 6px, 0);
  animation: fx-rise 320ms var(--fx-ease-out) forwards; animation-delay: calc(var(--i, 0) * 18ms);
}
@keyframes fx-rise { to { opacity: 1; transform: none; } }
.fx-entity svg { width: 1.2rem; height: 6px; overflow: visible; color: var(--fx-ink-2); }
.fx-entity svg line { stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; }
.fx-entity span { font-size: 0.88rem; font-weight: 550; letter-spacing: -0.005em; line-height: 1.3; }
.fx-entity small { grid-column: 2; display: block; font-size: 0.72rem; color: var(--fx-ink-3); letter-spacing: 0.04em; }
.fx-entity.is-attention span { color: var(--fx-gold); }
.fx-entity.is-attention svg { color: var(--fx-gold); }
.fx-entity[aria-current="true"] { background: rgba(244, 240, 232, 0.05); }
.fx-entity.is-related span { color: var(--fx-ink); text-decoration: underline; text-decoration-color: var(--fx-gold); text-underline-offset: 3px; }
.fx-entity.is-dim { opacity: 0.28 !important; }
@media (hover: hover) and (pointer: fine) {
  .fx-entity:hover span { color: var(--fx-ink); }
}

.fx-inspector {
  position: relative; min-width: 0;
  border-left: 1px solid var(--fx-hair);
}
.fx-inspector[hidden] { display: none; }
.fx-inspector-inner { padding: 1.2rem 1.5rem 2rem; }
.fx-inspector h2 { margin: 0.6rem 0 0; font-size: 1.6rem; font-weight: 600; letter-spacing: -0.035em; line-height: 1.1; overflow-wrap: anywhere; }
.fx-inspector .fx-summary { margin: 0.9rem 0 0; font-size: 1rem; line-height: 1.6; color: var(--fx-ink-2); }
.fx-inspector dl { margin: 1.4rem 0 0; display: grid; gap: 0.85rem; }
.fx-inspector dt { font-size: 0.72rem; font-weight: 650; letter-spacing: 0.22em; text-transform: uppercase; color: var(--fx-ink-3); }
.fx-inspector dd { margin: 0.25rem 0 0; font-size: 0.86rem; color: var(--fx-ink-2); overflow-wrap: anywhere; }
.fx-inspector ol { margin: 0.4rem 0 0; padding-left: 1.1rem; font-size: 0.84rem; color: var(--fx-ink-2); }
.fx-rel { margin: 0.4rem 0 0; padding: 0; list-style: none; }
.fx-rel button { width: 100%; text-align: left; border: 0; border-top: 1px solid var(--fx-hair); background: transparent; cursor: pointer; padding: 0.5rem 0; display: flex; justify-content: space-between; gap: 0.8rem; font-size: 0.86rem; }
.fx-rel button small { color: var(--fx-ink-3); font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; }
.fx-inspector .fx-close { margin-bottom: 1.25rem; min-height: 44px; }
.fx-inspector .fx-actions { margin-top: 1.6rem; }

/* ── Mobile / tall composition ──────────────────────────────────────── */
@media (max-width: 820px), (max-aspect-ratio: 10/11) {
  :root { --fx-bar-h: 3.4rem; }
  .fx-stand { display: none; }
  /* Keep text scrolling underneath from bleeding through the navigation. */
  .fx-bar { background: var(--fx-bg); border-bottom: 1px solid var(--fx-hair); }

  .fx-mode { display: none; }
  .fx-bar-link { display: none; }
  .fx-rail { display: none; }

  .fx-atlas-head { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "crumbs tools" "search search"; gap: 0.7rem; }
  .fx-crumbs { grid-area: crumbs; }
  .fx-search { grid-area: search; }
  .fx-atlas-tools { grid-area: tools; }
  .fx-atlas-body { grid-template-columns: minmax(0, 1fr); }
  .fx-register { padding: 0 var(--fx-gutter) 3.6rem calc(var(--fx-gutter) + 1.6rem); }
  .fx-arcs { width: calc(var(--fx-gutter) + 1.6rem); }
  .fx-band-head { grid-template-columns: 1.8rem minmax(0, 1fr) auto; gap: 0.7rem; }
  .fx-band-head .fx-barcode { display: none; }
  .fx-band.is-focus .fx-band-head .fx-barcode { display: none; }
  .fx-band-body { padding-left: 0; }
  .fx-band-label { font-size: clamp(1.15rem, 5.4vw, 1.6rem); }
  .fx-inspector.is-open .fx-inspector-inner { animation: none; }
}

@media (max-width: 420px) {
  .fx-display { font-size: clamp(2.2rem, 11vw, 3rem); }
  .fx-h2 { font-size: clamp(1.8rem, 9vw, 2.4rem); }
  .fx-bar-end .fx-btn:not(.fx-icon-btn) { padding: 0 0.8rem; }
}

/* ── Reduced motion: same content, nothing moves on its own ─────────── */
@media (prefers-reduced-motion: reduce) {
  .fx-atlas { transition: opacity 160ms ease; transform: none; }
  .fx-band, .fx-band-label, .fx-inspector, .fx-rail button::after { transition: none; }
  .fx-inspector.is-open .fx-inspector-inner { animation: none; }
  .fx-entity { animation: fx-fade 160ms ease forwards; transform: none; }
  @keyframes fx-fade { from { opacity: 0; } to { opacity: 1; } }
  .fx-is-busy .fx-icon-btn svg { animation: none; }
  .fx-reveal { transform: none !important; }
}

/* FRAME COMMUNICATE · focused capability, not a second navigation shell. */
body.fx.fx-communicate-open { overflow: hidden; }
.fx-communicate[hidden] { display: none !important; }
.fx-communicate {
  position: fixed; inset: 0; z-index: 85;
  display: grid; place-items: stretch;
  isolation: isolate;
}
.fx-comm-backdrop { position: absolute; inset: 0; background: rgba(4,4,4,.85); backdrop-filter: blur(14px); }
.fx-comm-room {
  position: relative; margin: auto; width: min(100%, 1400px);
  height: min(94dvh, 960px); overflow-y: auto; overscroll-behavior: contain; scroll-padding-block: 1.25rem; scrollbar-gutter: stable;
  background: #12100e; border: 1px solid var(--fx-hair);
  box-shadow: 0 32px 120px rgba(0,0,0,.55);
  animation: fx-comm-enter 180ms var(--fx-ease-out) both;
}
@keyframes fx-comm-enter { from { opacity: 0; transform: translateY(18px) scale(.99); } to { opacity: 1; transform: none; } }
.fx-comm-top {
  position: relative; display: flex;
  align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1rem clamp(1rem,3vw,2.5rem);
  background: rgba(18,16,14,.97); border-bottom: 1px solid var(--fx-hair);
}
.fx-comm-top .fx-eyebrow { margin: 0; }
.fx-comm-top h1 { font-family: var(--fx-sans); font-size: clamp(1.6rem,3vw,2.4rem); font-weight: 600; line-height: 1.15; letter-spacing: -.035em; margin: .3rem 0 0; }
.fx-comm-period { color: var(--fx-gold); }
.fx-comm-content { display: grid; grid-template-columns: minmax(0, 1fr) minmax(26rem, 1fr); }
.fx-comm-main { padding: clamp(1.1rem, 3vw, 2.5rem); min-width: 0; }
.fx-comm-lead { font: italic clamp(1.25rem, 2.1vw, 1.75rem)/1.35 var(--fx-serif); max-width: 24em; margin: 0 0 2rem; }
.fx-comm-context { border-top: 1px solid var(--fx-hair); border-bottom: 1px solid var(--fx-hair); padding: 1rem 0; margin-bottom: 2rem; }
.fx-comm-context .fx-eyebrow, .fx-comm-gate .fx-eyebrow { margin: 0; }
.fx-comm-context p:not(.fx-eyebrow) { font-weight: 640; margin: .65rem 0 .2rem; }
.fx-comm-context small, .fx-comm-gate small { color: var(--fx-ink-3); font-size: .76rem; }
.fx-comm-field { margin-bottom: 1.3rem; }
.fx-comm-field label { display: flex; justify-content: space-between; gap: .5rem; font-size: .78rem; font-weight: 700; margin-bottom: .65rem; letter-spacing: .035em; }
.fx-comm-field label span { color: var(--fx-ink-3); font-weight: 450; }
.fx-comm-field input, .fx-comm-field select, .fx-comm-field textarea {
  width: 100%; min-width: 0; border: 1px solid var(--fx-hair); border-radius: 1px;
  padding: .85rem 1rem; font: 450 .95rem/1.55 var(--fx-sans);
  color: var(--fx-ink); background: rgba(255,255,255,.035);
}
.fx-comm-field textarea { resize: vertical; min-height: 12rem; }
.fx-comm-field input::placeholder, .fx-comm-field textarea::placeholder { color: var(--fx-ink-3); }
.fx-comm-field input:focus, .fx-comm-field textarea:focus, .fx-comm-field select:focus { outline: 1px solid var(--fx-gold); outline-offset: 1px; }
.fx-comm-consent { display: flex; align-items: start; gap: .75rem; font-size: .82rem; margin: 1.25rem 0; color: var(--fx-ink-2); }
.fx-comm-consent input { width: 1rem; height: 1rem; margin-top: .2rem; accent-color: var(--fx-gold); flex-shrink: 0; }
.fx-comm-actions[hidden] { display: none; }
.fx-comm-actions { display: flex; flex-wrap: wrap; gap: .6rem; }
.fx-comm-actions a { text-decoration: none; }
.fx-comm-status { scroll-margin-block: 1.25rem; margin-top: 1.5rem; padding: .8rem 1rem; border-left: 2px solid var(--fx-gold); background: rgba(246,204,132,.07); font-size: .8rem; color: var(--fx-ink-2); }
.fx-comm-status[data-state=blocked] { border-color: var(--fx-alert); background: rgba(236,154,127,.07); }
.fx-comm-aside { padding: clamp(1.1rem, 3vw, 2.5rem); border-left: 1px solid var(--fx-hair); background: rgba(0,0,0,.13); min-width: 0; }
.fx-comm-note { color: var(--fx-ink-3); font-size: .77rem; line-height: 1.7; }
.fx-comm-preview { white-space: pre-wrap; overflow-wrap: anywhere; padding: 2rem 1.1rem; background: #0b0b0b; color: #f5f2ec; min-height: 12rem; line-height: 1.7; font-size: .87rem; border: 1px solid #31302e; margin: 1.3rem 0 2rem; }
.fx-comm-preview[data-shell=WHITE] { color: #171717; background: #f7f7f7; border: 1px solid #111; font-family: Helvetica, Arial, sans-serif; }
.fx-comm-gate { border-top: 1px solid var(--fx-hair); padding-top: 1.2rem; }
.fx-comm-gate > p:not(.fx-eyebrow) { font-size: .85rem; color: var(--fx-ink-2); }
.fx-comm-legacy { border-top: 1px solid var(--fx-hair); margin-top: 2rem; padding-top: 1rem; font-size: .77rem; color: var(--fx-ink-2); }
.fx-comm-legacy summary { cursor: pointer; color: var(--fx-ink); font-weight: 650; margin-bottom: 1rem; }
.fx-comm-legacy ul { padding-left: 1rem; }
.fx-comm-legacy li { margin: .5rem 0; }
.fx-comm-legacy li button { background: none; border: 0; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; text-align: left; color: var(--fx-ink-2); font: inherit; }
@media(max-width: 1100px) {
  .fx-comm-room { width: 100%; height: 100dvh; border: 0; }
  .fx-comm-content { grid-template-columns: 1fr; }
  .fx-comm-aside { border-left: 0; border-top: 1px solid var(--fx-hair); }
  .fx-comm-top { padding: .8rem 1rem; }
  .fx-comm-main { padding: 1.35rem 1rem; }
}
@media(max-width: 520px) {
  .fx-bar-end .fx-bar-link { display: none; }
  .fx-comm-trigger { border-color: var(--fx-gold) !important; }
}
@media(prefers-reduced-motion: reduce) {
  .fx-comm-room { animation: none; }
  .fx-comm-backdrop { backdrop-filter: none; }
}

.fx-comm-real-html { display:block; width:100%; height:clamp(330px,60vh,630px); border:0; background:white; }
.fx-comm-preview:has(.fx-comm-real-html) { padding:0; background:white; }
.fx-comm-approval { margin:1.7rem 0; border:1px solid var(--fx-gold); padding:1rem 1.2rem; background:rgba(246,204,132,.06); }
.fx-comm-approval[hidden] { display:none; }
.fx-comm-approval>p { font-size:.84rem; color:var(--fx-ink-2); overflow-wrap:anywhere; }
.fx-comm-approval>p strong { color:var(--fx-ink); }
.fx-comm-approved-details { font-size:.84rem; color:var(--fx-ink-2); overflow-wrap:anywhere; line-height:1.6; }
.fx-comm-drop { border:1px dashed var(--fx-ink-3); padding:1rem; background:rgba(255,255,255,.025); }
.fx-comm-drop p { margin:0 0 .8rem; color:var(--fx-ink-2); font-size:.82rem; line-height:1.5; }
.fx-comm-drop input[type=file] { width:100%; min-height:44px; padding:.45rem; font-size:.8rem; }
.fx-comm-drop input[type=file]::file-selector-button { border:1px solid var(--fx-gold); background:transparent; color:var(--fx-ink); padding:.5rem .75rem; margin-right:.7rem; cursor:pointer; }
.fx-comm-drop:focus-within { outline:2px solid var(--fx-gold); outline-offset:2px; }
.fx-comm-attachments ul, .fx-lab-mail ul { list-style:none; padding:0; margin:.8rem 0; }
.fx-comm-attachments li, .fx-lab-mail li { overflow-wrap:anywhere; }
.fx-comm-attachments li { display:flex; flex-wrap:wrap; align-items:center; gap:.45rem; padding:.6rem 0; border-bottom:1px solid var(--fx-hair); font-size:.78rem; }
.fx-comm-attachments li span { flex:1 1 13rem; }
.fx-comm-attachments li button, .fx-lab-mail li button { min-height:44px; border:0; background:none; color:var(--fx-gold); text-decoration:underline; cursor:pointer; }
.fx-comm-file-policy { max-width:65ch; font-size:.75rem; line-height:1.55; color:var(--fx-ink-2); }
.fx-comm-plain { overflow-wrap:anywhere; white-space:pre-wrap; font:inherit; padding:.65rem; border:1px solid var(--fx-hair); }
.fx-comm-approval button:disabled { opacity:.45; cursor:wait; }
@media(max-width:380px) {
  .fx-comm-top { flex-wrap:wrap; }
  .fx-comm-top .fx-btn { min-height:44px; }
  .fx-comm-field label { flex-wrap:wrap; }
  .fx-comm-approval { padding:.85rem; }
}


/* ── MOMENTUM · KURS lens ───────────────────────────────────────────── */
.fx-atlas-head { grid-template-columns: minmax(0, 1fr) auto minmax(12rem, 22rem) auto; }
.fx-lens { display: flex; gap: 0.15rem; padding: 0.2rem; border: 1px solid var(--fx-hair); border-radius: 999px; }
.fx-lens button {
  min-height: 2.25rem; padding: 0 0.95rem; border: 0; border-radius: 999px; background: transparent; cursor: pointer;
  font-size: 0.74rem; font-weight: 650; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fx-ink-3);
  transition: background-color 160ms ease, color 160ms ease;
}
.fx-lens button[aria-selected="true"] { color: var(--fx-bg); background: var(--fx-ink); }
.fx-atlas[data-view="course"] .fx-filters { display: none; }
.fx-atlas-body[hidden], .fx-course[hidden] { display: none; }
.fx-course { min-height: 0; }
.fx-course:focus { outline: none; }
.fx-course-inner { max-width: 74rem; padding: clamp(1.8rem, 6svh, 3.6rem) var(--fx-gutter) 6rem; }
.fx-course-phase {
  margin: 0.1rem 0 0; font-size: clamp(3.2rem, 9vw, 7.4rem); font-weight: 600;
  line-height: 0.9; letter-spacing: -0.055em;
}
.fx-course-phase:focus { outline: none; }
.fx-course-lead { max-width: 46ch; }
.fx-course-frame { margin: 1.8rem 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 2.6rem; max-width: 64rem; }
.fx-course-frame > div { padding-top: 0.8rem; border-top: 1px solid var(--fx-hair); }
.fx-course-frame dd { margin: 0.35rem 0 0; font-size: 0.88rem; line-height: 1.5; color: var(--fx-ink-2); }

.fx-lanes-wrap { margin-top: clamp(2.8rem, 8svh, 4.6rem); }
.fx-lanes-top { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.6rem 2rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--fx-ink-4); }
.fx-lanes-top .fx-eyebrow { margin: 0; }
.fx-legend { margin: 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 0.4rem 1.3rem; font-size: 0.72rem; color: var(--fx-ink-3); }
.fx-legend li { display: flex; align-items: center; gap: 0.5rem; }
.fx-legend li::before { content: ""; display: block; }
.fx-legend [data-key="known"]::before { width: 1.2rem; height: 1px; background: var(--fx-ink-2); }
.fx-legend [data-key="now"]::before { width: 9px; height: 9px; border-radius: 50%; border: 1.2px solid var(--fx-ink); box-shadow: inset 0 0 0 2px var(--fx-bg), inset 0 0 0 6px var(--fx-ink); }
.fx-legend [data-key="gap"]::before { width: 1.2rem; border-top: 1px dotted var(--fx-ink-3); }
.fx-legend [data-key="goal"]::before { width: 1px; height: 0.8rem; background: var(--fx-ink); }

.fx-lanes { margin: 0; padding: 0; list-style: none; }
.fx-lane-row {
  display: grid; grid-template-columns: minmax(11rem, 17rem) minmax(0, 1fr); column-gap: clamp(1.4rem, 4vw, 3.6rem);
  padding: 1.35rem 0 1.5rem; border-bottom: 1px solid var(--fx-hair);
}
.fx-lane-head {
  grid-column: 1; grid-row: 1 / span 3; align-self: start;
  display: grid; grid-template-columns: 2.1rem minmax(0, 1fr); min-height: 44px;
  margin: 0; padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; color: var(--fx-ink);
}
.fx-lane-rank { padding-top: 0.4rem; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.14em; color: var(--fx-ink-3); font-variant-numeric: tabular-nums; }
.fx-lane-title { font-size: clamp(1.1rem, 1.8vw, 1.42rem); font-weight: 650; line-height: 1.2; letter-spacing: -0.02em; overflow-wrap: anywhere; }
.fx-lane-state { grid-column: 2; margin-top: 0.35rem; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fx-ink-3); }
@media (hover: hover) and (pointer: fine) { .fx-lane-head:hover .fx-lane-title { color: var(--fx-gold); } }
.fx-lane-row[data-open="true"] .fx-lane-title::after { content: " −"; color: var(--fx-ink-3); font-weight: 400; }
.fx-lane-row[data-open="false"] .fx-lane-title::after { content: " +"; color: var(--fx-ink-3); font-weight: 400; }
.fx-track { grid-column: 2; position: relative; height: 14px; margin-top: 0.5rem; }
.fx-track i { position: absolute; top: 50%; display: block; }
.fx-track-known { left: 0; width: 32%; height: 1px; background: var(--fx-ink-2); }
.fx-track-now { left: 32%; width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; border-radius: 50%; border: 1.2px solid var(--fx-ink); background: var(--fx-bg); box-shadow: inset 0 0 0 2.2px var(--fx-bg), inset 0 0 0 6px var(--fx-ink); }
.fx-track-gap { left: calc(32% + 9px); right: 2px; border-top: 1px dotted var(--fx-ink-3); }
.fx-track-goal { right: 0; width: 1px; height: 14px; margin-top: -7px; background: var(--fx-ink); }
.fx-lane-row[data-known="false"] .fx-track-known { background: none; border-top: 1px dotted var(--fx-ink-4); }
.fx-lane-row[data-known="false"] .fx-track-now { box-shadow: none; border-style: dashed; border-color: var(--fx-ink-3); }
.fx-lane-row[data-parked="true"] .fx-track i { opacity: 0.4; }
.fx-lane-row[data-parked="true"] .fx-lane-title, .fx-lane-row[data-parked="true"] .fx-lane-lines { color: var(--fx-ink-3); }
.fx-lane-lines { grid-column: 2; margin-top: 0.95rem; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.9rem 2.2rem; }
.fx-lane-lines p { margin: 0; font-size: 0.9rem; line-height: 1.5; color: var(--fx-ink-2); }
.fx-lane-lines b { display: block; margin-bottom: 0.25rem; font-size: 0.68rem; font-weight: 650; letter-spacing: 0.2em; text-transform: uppercase; color: var(--fx-ink-3); }
.fx-lane-lines p:first-child span { color: var(--fx-ink); }
.fx-deadline { font-style: normal; white-space: nowrap; color: var(--fx-gold); font-size: 0.8rem; font-weight: 600; }
.fx-lane-body { grid-column: 2; margin-top: 1.3rem; }
.fx-lane-body[hidden] { display: none; }
.fx-lane-facts { margin: 0; display: grid; gap: 0.95rem; }
.fx-lane-facts dd { margin: 0.3rem 0 0; max-width: 70ch; font-size: 0.88rem; line-height: 1.55; color: var(--fx-ink-2); }
.fx-marks { margin-top: 1.6rem; }
.fx-marks ul { margin: 0.8rem 0 0; padding: 0; list-style: none; }
.fx-marks li { padding: 0.85rem 0; border-top: 1px solid var(--fx-hair); }
.fx-mark-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.3rem 1rem; }
.fx-mark-head button, .fx-mark-head strong {
  padding: 0.2rem 0; border: 0; border-bottom: 1px solid var(--fx-ink-4); background: transparent; cursor: pointer;
  font-size: 0.95rem; font-weight: 650; color: var(--fx-ink); text-align: left;
}
.fx-mark-head strong { cursor: default; border: 0; }
.fx-mark-head small { font-size: 0.72rem; color: var(--fx-ink-3); }
.fx-trail { margin: 0.6rem 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 0.35rem 1rem; }
.fx-trail li { display: flex; align-items: center; gap: 0.45rem; padding: 0; border: 0; font-size: 0.74rem; line-height: 1.35; letter-spacing: 0.03em; color: var(--fx-ink-2); }
.fx-trail i { flex: 0 0 auto; width: 6px; height: 6px; border-radius: 50%; background: var(--fx-ink-2); }
.fx-trail [data-open="true"] { color: var(--fx-ink); }
.fx-trail [data-open="true"] i { background: transparent; border: 1px solid var(--fx-gold); }
.fx-mark-next { margin: 0.6rem 0 0; font-size: 0.86rem; line-height: 1.5; color: var(--fx-ink-2); }
.fx-mark-next b { margin-right: 0.35rem; font-weight: 600; color: var(--fx-ink); }

.fx-work-loops { margin-top: clamp(3rem, 9svh, 4.8rem); }
.fx-loop-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-top: 1px solid var(--fx-ink-4); }
.fx-loop-strip button {
  position: relative; min-height: 44px; padding: 1rem 0.6rem 0.9rem 0; border: 0; background: transparent; text-align: left; cursor: pointer; color: var(--fx-ink-2);
}
.fx-loop-strip button::before { content: ""; position: absolute; top: -4px; left: 0; width: 7px; height: 7px; border-radius: 50%; background: var(--fx-ink-3); }
.fx-loop-strip button b { display: block; font-size: 1.55rem; line-height: 1.1; font-weight: 600; color: var(--fx-ink); font-variant-numeric: tabular-nums; }
.fx-loop-strip button span { font-size: 0.7rem; font-weight: 650; letter-spacing: 0.14em; text-transform: uppercase; }
.fx-loop-strip button[aria-pressed="true"] { color: var(--fx-ink); }
.fx-loop-strip button[aria-pressed="true"]::before { background: var(--fx-gold); }
.fx-loop-strip button[disabled] { opacity: 0.38; cursor: default; }
.fx-loop-list { margin-top: 0.6rem; }
.fx-loop-list ul { margin: 0; padding: 0; list-style: none; }
.fx-loop-list li { padding: 0.95rem 0; border-top: 1px solid var(--fx-hair); }
.fx-loop-list strong { font-size: 0.95rem; font-weight: 600; }
.fx-loop-list small { display: block; margin-top: 0.2rem; font-size: 0.72rem; letter-spacing: 0.05em; color: var(--fx-ink-3); }
.fx-loop-list dl { margin: 0.55rem 0 0; display: grid; gap: 0.5rem; }
.fx-loop-list dd { margin: 0.2rem 0 0; max-width: 70ch; font-size: 0.86rem; line-height: 1.5; color: var(--fx-ink-2); }

/* ── MOMENTUM · KURS · PAKETE ─────────────────────────────────────────
   Seven accepted packages as an index; one in focus, six as context.
   Marks are source states, never progress. Gold threads = explicit IMPACTS. */
.fx-perspective { display: inline-flex; gap: 0.15rem; margin: 0 0 clamp(1rem, 3svh, 1.8rem); padding: 0.2rem; border: 1px solid var(--fx-hair); border-radius: 999px; }
.fx-perspective button {
  min-height: 2.25rem; padding: 0 1rem; border: 0; border-radius: 999px; background: transparent; cursor: pointer;
  font-size: 0.72rem; font-weight: 650; letter-spacing: 0.16em; text-transform: uppercase; color: var(--fx-ink-3);
  transition: background-color 160ms ease, color 160ms ease;
}
.fx-perspective button small { margin-left: 0.35rem; font-size: 0.66rem; letter-spacing: 0.08em; color: inherit; opacity: 0.7; font-variant-numeric: tabular-nums; }
.fx-perspective button[aria-pressed="true"] { color: var(--fx-ink); background: rgba(244, 240, 232, 0.08); box-shadow: inset 0 0 0 1px var(--fx-ink-4); }
@media (hover: hover) and (pointer: fine) { .fx-perspective button:hover { color: var(--fx-ink); } }

.fx-pk-head { max-width: 64rem; }
.fx-pk-h2 { margin: 0.1rem 0 0; font-size: clamp(2rem, 4.2vw, 3.4rem); font-weight: 600; line-height: 1; letter-spacing: -0.045em; }
.fx-pk-h2:focus, .fx-pk-title:focus { outline: none; }
.fx-pk-lead { margin: 0.8rem 0 0; max-width: 62ch; font-size: 0.95rem; line-height: 1.55; color: var(--fx-ink-2); }
.fx-pk-legend { margin: 1rem 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 0.45rem 1.25rem; font-size: 0.72rem; color: var(--fx-ink-3); }
.fx-pk-legend li { display: flex; align-items: center; gap: 0.45rem; }
.fx-pk-legend li::before, .fx-pk-sig i, .fx-pk-loop-head i { content: ""; flex: 0 0 auto; display: block; width: 7px; height: 7px; border-radius: 50%; box-sizing: border-box; }
.fx-pk-legend [data-g="thread"]::before { width: 1.3rem; height: 0; border-radius: 0; border-top: 1px solid var(--fx-gold); }
[data-g="active"]::before, .fx-pk-sig [data-g="active"], .fx-pk-loop[data-g="active"] .fx-pk-loop-head i { background: var(--fx-ink); }
[data-g="waiting"]::before, .fx-pk-sig [data-g="waiting"], .fx-pk-loop[data-g="waiting"] .fx-pk-loop-head i { border: 1.2px solid var(--fx-ink); }
[data-g="captured"]::before, .fx-pk-sig [data-g="captured"], .fx-pk-loop[data-g="captured"] .fx-pk-loop-head i,
[data-g="unknown"]::before, .fx-pk-sig [data-g="unknown"], .fx-pk-loop[data-g="unknown"] .fx-pk-loop-head i { border: 1px dashed var(--fx-ink-2); }
[data-g="parked"]::before, .fx-pk-sig [data-g="parked"], .fx-pk-loop[data-g="parked"] .fx-pk-loop-head i { width: 8px; height: 1.5px; margin: 0 -0.5px; border-radius: 1px; background: var(--fx-ink-3); }
[data-g="closed"]::before, .fx-pk-sig [data-g="closed"], .fx-pk-loop[data-g="closed"] .fx-pk-loop-head i { width: 5px; height: 5px; background: var(--fx-ink-4); }
.fx-pk-sig [data-g="unread"] { width: 1.4rem; height: 0; border-radius: 0; border-top: 1px dotted var(--fx-ink-3); }

.fx-pk-grid { margin-top: clamp(1.4rem, 4svh, 2.4rem); display: grid; grid-template-columns: minmax(15rem, 21rem) minmax(0, 1fr); gap: clamp(1.6rem, 4vw, 4rem); align-items: start; }
.fx-pk-index { position: relative; padding-left: 1.6rem; }
.fx-pk-index ol { position: relative; margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--fx-ink-4); }
.fx-pk-index li { border-bottom: 1px solid var(--fx-hair); }
.fx-pk-arcs { position: absolute; top: 0; left: 0; width: 1.6rem; height: 100%; overflow: visible; pointer-events: none; }
.fx-pk-arcs path { fill: none; stroke: var(--fx-gold); stroke-width: 1; opacity: 0.85; }
.fx-pk-arcs path[data-direction="in"] { stroke-dasharray: 2 3; }
.fx-pk-arcs circle { fill: var(--fx-gold); }
.fx-pk-cursor {
  position: absolute; top: 0; left: 0; z-index: 0; pointer-events: none; display: block; width: 0; height: 0;
  border-left: 1.5px solid var(--fx-gold); background: linear-gradient(90deg, var(--fx-gold-soft), transparent 70%);
  transition: transform 340ms var(--fx-ease-out), height 340ms var(--fx-ease-out);
}
.fx-pk-item {
  position: relative; z-index: 1; display: grid; grid-template-columns: 2rem minmax(0, 1fr); align-items: baseline; row-gap: 0.3rem;
  width: 100%; min-height: 44px; margin: 0; padding: 0.85rem 0.6rem 0.9rem 0.7rem; border: 0; background: transparent; cursor: pointer; text-align: left; color: var(--fx-ink-2);
  transition: color 160ms ease;
}
.fx-pk-no { grid-row: 1 / span 3; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.14em; color: var(--fx-ink-3); font-variant-numeric: tabular-nums; }
.fx-pk-name { font-size: 1rem; font-weight: 650; line-height: 1.25; letter-spacing: -0.01em; overflow-wrap: anywhere; }
.fx-pk-sig { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; min-height: 9px; }
.fx-pk-line { font-size: 0.72rem; line-height: 1.4; color: var(--fx-ink-3); }
.fx-pk-rel { font-weight: 600; color: var(--fx-gold); }
.fx-pk-item[aria-current="true"] { color: var(--fx-ink); }
.fx-pk-item[aria-current="true"] .fx-pk-no { color: var(--fx-gold); }
@media (hover: hover) and (pointer: fine) { .fx-pk-item:hover { color: var(--fx-ink); } }
.fx-pk-unassigned { margin: 0.9rem 0 0; font-size: 0.76rem; line-height: 1.5; color: var(--fx-ink-3); }

.fx-pk-focus { min-width: 0; }
.fx-pk-focus-head { padding-bottom: 1.4rem; border-bottom: 1px solid var(--fx-ink-4); }
.fx-pk-focus-head .fx-eyebrow span { overflow-wrap: anywhere; }
.fx-pk-title { margin: 0.35rem 0 0; font-size: clamp(1.8rem, 3.4vw, 2.8rem); font-weight: 600; line-height: 1; letter-spacing: -0.04em; }
.fx-pk-def { margin: 1rem 0 0; max-width: 54ch; }
.fx-pk-more { margin-top: 0.7rem; font-size: 0.84rem; color: var(--fx-ink-3); }
.fx-pk-more summary { cursor: pointer; min-height: 32px; display: inline-flex; align-items: center; }
.fx-pk-more p { margin: 0.4rem 0 0; max-width: 72ch; line-height: 1.6; color: var(--fx-ink-2); }
.fx-pk-block { padding: 1.6rem 0 0.2rem; }
.fx-pk-block > .fx-eyebrow { margin-bottom: 0.8rem; }
.fx-pk-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2.4rem; }
.fx-pk-quiet { margin: 0.4rem 0 0; max-width: 64ch; font-size: 0.84rem; line-height: 1.55; color: var(--fx-ink-3); }
.fx-pk-results, .fx-pk-needs, .fx-pk-decisions, .fx-pk-rels, .fx-pk-sources, .fx-pk-group ul, .fx-pk-closed ul { margin: 0; padding: 0; list-style: none; }
.fx-pk-results li { display: grid; gap: 0.3rem; padding: 0.75rem 0; border-top: 1px solid var(--fx-hair); }
.fx-pk-results b { font-size: 0.68rem; font-weight: 650; letter-spacing: 0.18em; text-transform: uppercase; color: var(--fx-ink-3); }
.fx-pk-results span { max-width: 70ch; font-size: 0.9rem; line-height: 1.55; color: var(--fx-ink-2); }
.fx-pk-results [data-finish="true"] b { color: var(--fx-gold); }
.fx-pk-practices { margin: 0.8rem 0 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.9rem; font-size: 0.84rem; color: var(--fx-ink-2); }
.fx-pk-practices b { font-weight: 600; color: var(--fx-ink); }
.fx-pk-practices button, .fx-pk-needs button, .fx-pk-rels button, .fx-pk-chips button, .fx-finish-pkg, .fx-o-pkg {
  padding: 0.15rem 0; border: 0; border-bottom: 1px solid var(--fx-ink-4); background: transparent; cursor: pointer;
  font: inherit; color: var(--fx-ink); text-align: left; transition: border-color 160ms ease, color 160ms ease;
}
@media (hover: hover) and (pointer: fine) {
  .fx-pk-practices button:hover, .fx-pk-needs button:hover, .fx-pk-rels button:hover, .fx-pk-chips button:hover, .fx-finish-pkg:hover, .fx-o-pkg:hover { border-color: var(--fx-gold); color: var(--fx-gold); }
}
.fx-finish-pkg, .fx-o-pkg { font-size: inherit; letter-spacing: inherit; text-transform: inherit; font-weight: inherit; color: inherit; min-height: 24px; }
.fx-pk-needs li { display: grid; gap: 0.25rem; padding: 0.7rem 0; border-top: 1px solid var(--fx-hair); font-size: 0.9rem; line-height: 1.5; color: var(--fx-ink); }
.fx-pk-needs button { font-size: 0.92rem; font-weight: 600; min-height: 32px; }
.fx-pk-needs small, .fx-pk-from, .fx-pk-decisions small, .fx-pk-rels small, .fx-pk-loop small { font-size: 0.72rem; line-height: 1.45; letter-spacing: 0.03em; color: var(--fx-ink-3); overflow-wrap: anywhere; }
.fx-pk-next { margin: 0; padding-top: 0.7rem; border-top: 1px solid var(--fx-hair); max-width: 60ch; font-size: 0.98rem; line-height: 1.5; color: var(--fx-ink); }
.fx-pk-from { display: block; margin-top: 0.45rem; }
.fx-pk-decisions li { display: grid; gap: 0.35rem; padding: 0.8rem 0 0.8rem 1rem; border-left: 1px solid var(--fx-ink-4); }
.fx-pk-decisions li + li { margin-top: 0.3rem; }
.fx-pk-decisions li[data-dated="true"] { border-left-color: var(--fx-gold); }
.fx-pk-decisions q { max-width: 72ch; font-family: var(--fx-sans); font-size: .95rem; line-height: 1.6; color: var(--fx-ink); quotes: "„" "“"; }
.fx-pk-group { margin-top: 0.4rem; }
.fx-pk-group + .fx-pk-group { margin-top: 1.2rem; }
.fx-pk-loop { padding: 0.9rem 0; border-top: 1px solid var(--fx-hair); }
.fx-pk-loop-head { display: grid; grid-template-columns: 0.9rem minmax(0, 1fr) auto; align-items: baseline; gap: 0.2rem 0.6rem; }
.fx-pk-loop-head i { transform: translateY(-1px); }
.fx-pk-loop-head strong { font-size: 0.95rem; font-weight: 600; line-height: 1.4; }
.fx-pk-loop-head span { font-size: 0.66rem; font-weight: 650; letter-spacing: 0.14em; color: var(--fx-ink-3); white-space: nowrap; }
.fx-pk-loop[data-g="parked"] strong, .fx-pk-loop[data-g="closed"] strong { color: var(--fx-ink-2); font-weight: 500; }
.fx-pk-evidence { margin: 0.35rem 0 0 1.5rem; font-size: 0.78rem; line-height: 1.45; color: var(--fx-ink-3); text-transform: lowercase; }
.fx-pk-evidence::first-letter { text-transform: uppercase; }
.fx-pk-loop dl { margin: 0.55rem 0 0 1.5rem; display: grid; gap: 0.45rem; }
.fx-pk-loop dt { font-size: 0.66rem; font-weight: 650; letter-spacing: 0.18em; text-transform: uppercase; color: var(--fx-ink-3); }
.fx-pk-loop dd { margin: 0.15rem 0 0; max-width: 70ch; font-size: 0.86rem; line-height: 1.5; color: var(--fx-ink-2); }
.fx-pk-loop > small { display: block; margin: 0.55rem 0 0 1.5rem; }
.fx-pk-chips { margin: 0.5rem 0 0 1.5rem; display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; font-size: 0.78rem; }
.fx-pk-chips button { color: var(--fx-gold); border-bottom-color: rgba(246, 204, 132, 0.35); min-height: 28px; }
.fx-pk-closed { margin-top: 1.2rem; }
.fx-pk-closed summary { cursor: pointer; min-height: 40px; display: flex; align-items: center; font-size: 0.76rem; font-weight: 600; letter-spacing: 0.06em; color: var(--fx-ink-3); }
.fx-pk-rels li { display: grid; gap: 0.35rem; padding: 0.8rem 0; border-top: 1px solid var(--fx-hair); }
.fx-pk-rels + .fx-mini-head { margin-top: 1.2rem; }
.fx-pk-rels button { justify-self: start; font-size: 0.92rem; font-weight: 650; min-height: 32px; }
.fx-pk-rels button span { margin-right: 0.5rem; color: var(--fx-gold); }
.fx-pk-rels [data-direction="in"] button span { opacity: 0.8; }
.fx-pk-rels p { margin: 0; max-width: 72ch; font-size: 0.86rem; line-height: 1.55; color: var(--fx-ink-2); }
.fx-pk-sources li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.2rem 1rem; padding: 0.6rem 0; border-top: 1px solid var(--fx-hair); font-size: 0.84rem; color: var(--fx-ink-2); }
.fx-pk-nav { margin-top: 1.8rem; }

/* ── Narrow / tall: text in document flow, nothing drawn across it ─── */
@media (max-width: 820px), (max-aspect-ratio: 10/11) {
  .fx-wide-only, .scene-reality .fx-strata-labels { display: none; }
  .scene-reality { height: auto; }
  .scene-reality > .scene-stage { position: relative; height: auto; min-height: 100svh; background: var(--fx-bg); }
  .scene-reality .fx-changes { max-width: none; font-size: 1rem; line-height: 1.45; }
  .fx-strata-flat { display: block; margin-top: 2.2rem; }
  .fx-atlas[data-view="course"] .fx-search { display: none; }
  .fx-atlas-head { row-gap: 0.6rem; }
  .fx-strata-flat [data-quiet="true"] span { color: var(--fx-ink-3); }
  .scene--work { padding-top: calc(var(--fx-bar-h) + 2.2rem); }
  .fx-q-panel { padding-left: 0; }
  .fx-q-actions .fx-btn { flex: 1 1 auto; }
  .fx-q-proof dl, .fx-sources { grid-template-columns: 1fr; }
  .fx-closing .fx-btn { flex: 1 1 auto; }

  .fx-atlas-head { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "crumbs tools" "lens lens" "search search"; }
  .fx-lens { grid-area: lens; justify-self: start; }
  .fx-register.is-focused .fx-band.is-focus { flex: 0 0 auto; overflow: visible; min-height: 0; }
  .fx-register.is-focused .fx-band.is-focus .fx-band-body { overflow: visible; max-height: none; padding-bottom: 1.5rem; }
  .fx-course-frame { grid-template-columns: 1fr; }
  .fx-lane-row { grid-template-columns: minmax(0, 1fr); }
  .fx-lane-head { grid-row: auto; }
  .fx-track, .fx-lane-lines, .fx-lane-body { grid-column: 1; }
  .fx-track { margin-top: 0.9rem; }
  .fx-lane-lines { grid-template-columns: minmax(0, 1fr); }
  .fx-loop-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }

  /* PAKETE: one horizontal index with the focused package directly below. */
  .fx-pk-grid { grid-template-columns: minmax(0, 1fr); gap: 1.4rem; }
  .fx-pk-index { top: 0; z-index: 3; padding: 0.4rem 0 0.6rem; margin: 0 calc(-1 * var(--fx-gutter)); background: var(--fx-bg); border-bottom: 1px solid var(--fx-hair); }
  .fx-pk-index ol {
    display: flex; gap: 0.4rem; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
    padding: 0 var(--fx-gutter); border-top: 0; scroll-padding-inline: var(--fx-gutter);
  }
  .fx-pk-index ol::-webkit-scrollbar { display: none; }
  .fx-pk-index li { flex: 0 0 auto; width: min(11.5rem, 58vw); border: 0; scroll-snap-align: start; }
  .fx-pk-item { grid-template-columns: 1.7rem minmax(0, 1fr); height: 100%; padding: 0.7rem 0.7rem 0.75rem; border: 1px solid var(--fx-hair); border-radius: 2px; }
  .fx-pk-name { font-size: 0.9rem; }
  .fx-pk-arcs { display: none; }
  .fx-pk-cursor { display: none; }
  .fx-pk-item[aria-current="true"] { border-color: var(--fx-ink-3); background: rgba(244, 240, 232, 0.04); box-shadow: inset 0 1.5px 0 var(--fx-gold); }
  .fx-pk-index li[data-related]:not([data-related=""]) .fx-pk-item { border-color: rgba(246, 204, 132, 0.35); }
  .fx-pk-pair { grid-template-columns: minmax(0, 1fr); }
  .fx-pk-loop-head { grid-template-columns: 0.9rem minmax(0, 1fr); }
  .fx-pk-loop-head span { grid-column: 2; }
  .fx-pk-nav .fx-btn { flex: 1 1 auto; }
}

@media (prefers-reduced-motion: reduce) {
  .fx-q.is-leaving, .fx-lens button, .fx-perspective button, .fx-pk-cursor, .fx-pk-item { transition: none; }
  .fx-q.is-arriving .fx-q-panel, .fx-count-n.is-ticking, .fx-steps [data-state="active"] i { animation: none; }
}

@media (max-width: 360px) {
  .fx-bar { gap: 0.5rem; }
  .fx-bar-end { gap: 0.25rem; }
  .fx-bar-end .fx-btn:not(.fx-icon-btn) { padding: 0 0.6rem; letter-spacing: 0.04em; font-size: 0.72rem; }
  .fx-bar-end .fx-icon-btn { width: 2.5rem; padding: 0; }
  .fx-mark { letter-spacing: 0.22em; }
}

/* MOMENTUM · transparent source coverage inside the existing Owner dashboard. */
.fx-atlas[data-view="coverage"] .fx-filters { display: none; }
.fx-atlas-body[hidden], .fx-course[hidden], .fx-coverage[hidden] { display: none; }
.fx-coverage { min-height: 0; }
.fx-coverage:focus { outline: none; }
.fx-cov-inner, .fx-coverage-empty { width: 100%; max-width: 78rem; padding: clamp(1.8rem, 6svh, 3.7rem) var(--fx-gutter) 7rem; }
.fx-cov-head h2, .fx-coverage-empty h2 { margin: .2rem 0 1rem; max-width: 19ch; font-size: clamp(2.2rem, 5.6vw, 4.5rem); font-weight: 600; letter-spacing: -.048em; line-height: 1.05; }
.fx-cov-head > p:not(.fx-eyebrow), .fx-coverage-empty p:last-child { max-width: 62ch; line-height: 1.55; font-size: clamp(.96rem, 1.4vw, 1.12rem); color: var(--fx-ink-2); }
.fx-cov-tally { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; border-top: 1px solid var(--fx-ink-4); border-bottom: 1px solid var(--fx-hair); padding: 1.15rem 0 1.35rem; margin: 2.1rem 0 1rem; max-width: 50rem; }
.fx-cov-tally div { display: flex; gap: .45rem 1rem; align-items: baseline; min-width: 0; }
.fx-cov-tally b { font-size: clamp(1.65rem, 3.2vw, 2.6rem); line-height: 1.1; font-weight: 600; font-variant-numeric: tabular-nums; }
.fx-cov-tally span { font-size: .79rem; color: var(--fx-ink-2); line-height: 1.4; }
.fx-cov-head .fx-cov-disclaimer { margin-top: 1rem; max-width: 72ch; font-size: .82rem !important; line-height: 1.6; color: var(--fx-ink-3) !important; }
.fx-cov-groups { margin-top: clamp(2rem, 6svh, 3.2rem); border-top: 1px solid var(--fx-ink-4); }
.fx-cov-group { border-bottom: 1px solid var(--fx-hair); }
.fx-cov-group summary { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem 2rem; min-height: 58px; padding: 1rem 0; list-style: none; cursor: pointer; }
.fx-cov-group summary::-webkit-details-marker { display: none; }
.fx-cov-group summary strong { font-size: clamp(1.05rem, 2vw, 1.5rem); font-weight: 600; letter-spacing: -.03em; }
.fx-cov-group summary strong:before { content: '+'; display: inline-block; width: 1.35rem; font-weight: 400; color: var(--fx-ink-3); }
.fx-cov-group[open] summary strong:before { content: '−'; }
.fx-cov-group summary span { font-size: .77rem; color: var(--fx-ink-3); line-height: 1.4; text-align: right; }
.fx-cov-group summary:focus-visible, .fx-cov-actions button:focus-visible, .fx-cov-actions a:focus-visible { outline: 2px solid var(--fx-ink); outline-offset: 4px; }
.fx-cov-group ul { padding: 0 0 1.15rem 1.35rem; margin: 0; list-style: none; }
.fx-cov-item { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.35fr); gap: .7rem 2rem; padding: 1rem 0 1.1rem; border-top: 1px solid var(--fx-hair); }
.fx-cov-label strong { display: block; font-size: .97rem; font-weight: 650; letter-spacing: -.015em; overflow-wrap: anywhere; }
.fx-cov-label small { display: block; margin-top: .35rem; font-size: .72rem; line-height: 1.4; color: var(--fx-ink-3); overflow-wrap: anywhere; }
.fx-cov-state > span { font-size: .75rem; letter-spacing: .13em; font-weight: 700; text-transform: uppercase; color: var(--fx-ink-2); }
.fx-cov-item[data-status="progress"] .fx-cov-state > span { color: var(--fx-ink); }
.fx-cov-state p { margin: .35rem 0 0; font-size: .87rem; line-height: 1.6; color: var(--fx-ink-2); overflow-wrap: anywhere; }
.fx-cov-state p b { font-weight: 650; color: var(--fx-ink); }
.fx-cov-actions { margin-top: .75rem; display: flex; flex-wrap: wrap; gap: .6rem 1.2rem; }
.fx-cov-actions a, .fx-cov-actions button { display: inline-flex; align-items: center; min-height: 44px; padding: .3rem 0; border: none; border-bottom: 1px solid var(--fx-ink-4); border-radius: 0; background: transparent; color: var(--fx-ink); font-size: .82rem; font-weight: 600; text-decoration: none; cursor: pointer; }
.fx-course-coverage { margin-top: 3rem; padding: 1rem 0 1.3rem; border-top: 1px solid var(--fx-ink-4); border-bottom: 1px solid var(--fx-hair); display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .8rem 1.8rem; }
.fx-course-coverage p { margin: 0; max-width: 45rem; font-size: .88rem; line-height: 1.6; color: var(--fx-ink-2); }
.fx-course-coverage p b { color: var(--fx-ink); font-weight: 650; }
@media (max-width: 820px), (max-aspect-ratio: 10/11) {
  .fx-atlas[data-view="coverage"] .fx-search { display: none; }
  .fx-lens button { min-height: 44px; padding: 0 .8rem; font-size: .69rem; letter-spacing: .075em; }
  .fx-cov-tally div { flex-direction: column; gap: .15rem; }
  .fx-cov-tally span { font-size: .73rem; }
  .fx-cov-group summary { flex-wrap: wrap; }
  .fx-cov-group summary span { text-align: left; padding-left: 1.35rem; }
  .fx-cov-group ul { padding-left: 0; }
  .fx-cov-item { grid-template-columns: minmax(0, 1fr); gap: .45rem; }
  .fx-cov-state { padding-bottom: .35rem; }
}
@media (prefers-reduced-motion: reduce) { .fx-coverage, .fx-cov-group { scroll-behavior: auto; } }

.fx-lane-candidates { margin: 1rem 0 1.4rem; padding: 1rem 0 1.15rem; border-top: 1px solid var(--fx-hair); border-bottom: 1px solid var(--fx-hair); }
.fx-lane-candidates > p { margin: 0 0 .8rem; font-size: .85rem; color: var(--fx-ink-2); line-height: 1.5; }
.fx-lane-candidates ul { margin: 0; padding: 0; list-style: none; }
.fx-lane-candidates li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .25rem 1rem; padding: .5rem 0; font-size: .81rem; }
.fx-lane-candidates li b { font-weight: 650; color: var(--fx-ink); }
.fx-lane-candidates li span { color: var(--fx-ink-3); }
.fx-lane-candidates > button { margin-top: .6rem; }
/* Accepted /status → Operating State → FRAME Finish Line. Source read-only. */
.fx-course-finish { margin: clamp(2rem,6svh,3.2rem) 0 0; padding-top: 1rem; border-top: 1px solid var(--fx-ink-4); max-width: 67rem; }
.fx-course-finish > .fx-mini-head { margin: 0 0 .75rem; color: var(--fx-ink-3); }
.fx-finish-period { margin: 1.2rem 0 .5rem; font-size: .78rem; letter-spacing: .11em; color: var(--fx-ink-3); }
.fx-finish-empty { padding: 1rem 0 1.3rem; }
.fx-finish-empty > p { max-width: 62ch; margin: .3rem 0 1.35rem; line-height: 1.65; color: var(--fx-ink-2); font-size: .94rem; }
.fx-finish-empty > p b { color: var(--fx-ink); font-weight: 650; }
.fx-finish-handshake { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem .85rem; color: var(--fx-ink-2); font-size: .75rem; font-weight: 600; letter-spacing: .025em; }
.fx-finish-handshake span { display: inline-flex; align-items: center; min-height: 40px; border: 1px solid var(--fx-hair); padding: .4rem .85rem; border-radius: 999px; }
.fx-finish-handshake i { font-style: normal; color: var(--fx-ink-3); }
.fx-finish-packages { margin-top: 1.35rem; max-width: 57rem; border-top: 1px solid var(--fx-hair); }
.fx-finish-packages summary { padding: 1rem 0; cursor: pointer; min-height: 44px; color: var(--fx-ink-2); font-size: .85rem; }
.fx-finish-packages summary:focus-visible, .fx-finish-links summary:focus-visible { outline: 2px solid var(--fx-ink); outline-offset: 4px; }
.fx-finish-packages ul, .fx-finish-links ul { list-style: none; margin: 0; padding: 0 0 1rem; }
.fx-finish-packages li { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .4rem 1rem; border-top: 1px solid var(--fx-hair); padding: .6rem 0; font-size: .8rem; line-height: 1.5; }
.fx-finish-packages li span { color: var(--fx-ink); }
.fx-finish-packages li b { color: var(--fx-gold); }
.fx-finish-packages li small { color: var(--fx-ink-3); }
.fx-finish-lines { padding: 0; margin: 0; list-style: none; display: grid; gap: 0; }
.fx-finish-item { border-top: 1px solid var(--fx-hair); padding: 1.25rem 0 1.5rem; min-width: 0; }
.fx-finish-item-head { display: flex; justify-content: space-between; flex-wrap: wrap; align-items: baseline; gap: .4rem 1.1rem; margin-bottom: .7rem; }
.fx-finish-item-head span, .fx-finish-item-head small { color: var(--fx-ink-3); letter-spacing: .14em; font-size: .72rem; font-weight: 650; }
.fx-finish-item[data-state="done"] .fx-finish-item-head small { color: var(--fx-ink); }
.fx-finish-item[data-state="review"] .fx-finish-item-head small { color: var(--fx-gold); }
.fx-finish-item-title { display: block; font-size: clamp(1.15rem,2.8vw,1.65rem); letter-spacing: -.03em; line-height: 1.3; font-weight: 600; overflow-wrap: anywhere; }
.fx-finish-condition { margin: .45rem 0 0; max-width: 62ch; color: var(--fx-ink-2); font-size: .9rem; line-height: 1.6; overflow-wrap: anywhere; }
.fx-finish-facts { display: grid; gap: .6rem; margin: 1.05rem 0 0; grid-template-columns: repeat(2,minmax(0,1fr)); }
.fx-finish-facts > div { border-top: 1px solid var(--fx-hair); padding-top: .6rem; min-width: 0; }
.fx-finish-facts dt { color: var(--fx-ink-3); font-size: .71rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; }
.fx-finish-facts dd { color: var(--fx-ink-2); font-size: .82rem; line-height: 1.5; margin: .35rem 0 0; overflow-wrap: anywhere; }
.fx-finish-warning { margin: .75rem 0 0; max-width: 60ch; border-left: 2px solid var(--fx-gold); padding: .4rem 0 .4rem .85rem; font-size: .81rem; line-height: 1.5; color: var(--fx-ink-2); }
.fx-finish-trace-note { margin: .9rem 0 0; color: var(--fx-ink-3); font-size: .77rem; line-height: 1.45; }
.fx-finish-links { margin-top: 1rem; border-top: 1px solid var(--fx-hair); }
.fx-finish-links summary { min-height: 44px; padding: .85rem 0; font-size: .8rem; color: var(--fx-ink-2); cursor: pointer; }
.fx-finish-links li { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .3rem 1rem; border-top: 1px solid var(--fx-hair); padding: .65rem 0; align-items: baseline; }
.fx-finish-links strong { display: block; font-size: .82rem; font-weight: 650; overflow-wrap: anywhere; }
.fx-finish-links small { display: block; margin-top: .3rem; color: var(--fx-ink-3); font-size: .71rem; overflow-wrap: anywhere; }
.fx-finish-links li > span { color: var(--fx-ink-3); letter-spacing: .07em; font-size: .67rem; text-align: right; }
.fx-finish-links li > p { grid-column: 1 / -1; margin: .3rem 0 0; font-size: .8rem; line-height: 1.45; color: var(--fx-ink-2); }
@media (max-width:820px), (max-aspect-ratio:10/11) {
 .fx-finish-facts { grid-template-columns: minmax(0,1fr); }
 .fx-finish-links li { grid-template-columns: minmax(0,1fr); }
 .fx-finish-links li > span { text-align: left; }
 .fx-finish-empty > p { font-size: 1rem; }
}
@media (prefers-reduced-motion:reduce) {
 .fx-finish-lines *, .fx-finish-empty * { transition: none !important; animation: none !important; }
}

/* ── FRAME · evidence-led, automatically PROPOSED finish horizon ──────────
   This draws a trajectory, never a quantitative completion/progress bar.
   Gold marks the next owner-relevant point; no task is marked done here. */
.fx-rec {
  max-width: 69rem; position: relative; min-width: 0; margin: clamp(1.6rem,4svh,3rem) 0;
  padding: clamp(1.5rem,3vw,2.5rem) 0 clamp(1.4rem,3vw,2.2rem);
  border-top: 1px solid rgba(246,204,132,.44); border-bottom: 1px solid var(--fx-hair);
  isolation: isolate;
}
.fx-rec::before {
  content: ""; position: absolute; left: 0; top: -1px; width: clamp(3rem,13vw,9rem);
  height: 1px; background: var(--fx-gold); box-shadow: 0 0 24px rgba(246,204,132,.2);
}
.fx-rec-label {
  display: flex; gap: .45rem 1rem; flex-wrap: wrap; justify-content: space-between; align-items: center;
  font-size: .69rem; font-weight: 680; letter-spacing: .15em; text-transform: uppercase;
}
.fx-rec-kicker { color: var(--fx-gold); }
.fx-rec-period { color: var(--fx-ink-3); font-variant-numeric: tabular-nums; }
.fx-rec-headline { display: grid; grid-template-columns: 2rem minmax(0,1fr); gap: clamp(.65rem,3vw,1.4rem); align-items: start; margin-top: clamp(1.3rem,3vw,2.1rem); }
.fx-rec-target { display: block; position: relative; width: 1.5rem; height: 1.5rem; margin-top: .35rem; border: 1px solid var(--fx-gold); border-radius: 50%; }
.fx-rec-target i { display: block; position: absolute; inset: .38rem; border-radius: 50%; background: var(--fx-gold); }
.fx-rec-statement { min-width: 0; }
.fx-rec-statement h3 { font: 570 clamp(1.55rem,3.3vw,3rem)/1.2 var(--fx-sans); letter-spacing: -.052em; max-width: 30ch; margin: 0; text-wrap: pretty; overflow-wrap: anywhere; }
.fx-rec-statement > p { color: var(--fx-ink-3); font-size: .79rem; letter-spacing: .035em; margin: .85rem 0 0; }
.fx-rec-date { color: var(--fx-ink-2); margin: 1.1rem 0 0 3.4rem; font-size: .8rem; }
.fx-rec-date > span { color: var(--fx-ink-3); text-transform: uppercase; letter-spacing: .08em; font-size: .69rem; }
.fx-rec-date strong { color: var(--fx-gold); font-weight: 600; }
.fx-rec-primary-action { margin: 1.1rem 0 1.2rem 3.4rem; }
.fx-rec-immediate { display: grid; gap: .4rem; max-width: 51rem; margin: 1.5rem 0 .8rem; padding: 1.1rem 0 1rem; border-top: 1px solid var(--fx-hair); color: var(--fx-ink); line-height: 1.6; font-size: clamp(.94rem,1.7vw,1.14rem); overflow-wrap: anywhere; }
.fx-rec-immediate span { color: var(--fx-gold); font-size: .67rem; letter-spacing: .16em; font-weight: 700; }
.fx-rec-open, .fx-rec-alternatives { border-top: 1px solid var(--fx-hair); margin-top: 1rem; }
.fx-rec-open summary, .fx-rec-alternatives summary, .fx-rec-alternatives li details summary {
  color: var(--fx-ink-2); min-height: 44px; display: list-item; padding: .95rem .4rem .85rem 0;
  cursor: pointer; font-size: .8rem; letter-spacing: .015em;
}
.fx-rec-open summary:hover, .fx-rec-alternatives summary:hover { color: var(--fx-ink); }
.fx-rec-route { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: clamp(.8rem,2vw,1.65rem); margin: 1.45rem 0 .3rem; }
.fx-rec-route-step { min-width: 0; border-top: 1px solid var(--fx-ink-4); padding: .75rem 0 0; }
.fx-rec-route-goal { border-color: var(--fx-gold); }
.fx-rec-step-no { color: var(--fx-ink-3); font-size: .65rem; letter-spacing: .13em; font-variant-numeric: tabular-nums; }
.fx-rec-route-step b { display: block; margin: .35rem 0 .45rem; color: var(--fx-ink); font-size: .82rem; font-weight: 660; }
.fx-rec-route-step p { color: var(--fx-ink-2); margin: 0; font-size: .85rem; line-height: 1.65; overflow-wrap: anywhere; }
.fx-rec-route-goal .fx-rec-step-no { color: var(--fx-gold); }
.fx-rec-proof { margin: 1.25rem 0 0; padding-top: .75rem; border-top: 1px solid var(--fx-hair); display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .9rem 1.8rem; }
.fx-rec-proof p { display: grid; gap: .3rem; padding: 0; margin: 0; min-width: 0; }
.fx-rec-proof b { text-transform: uppercase; font-size: .66rem; letter-spacing: .11em; color: var(--fx-ink-3); font-weight: 650; }
.fx-rec-proof span { font-size: .78rem; line-height: 1.55; overflow-wrap: anywhere; color: var(--fx-ink-2); }
.fx-rec-boundary { margin: 1.2rem 0 0; font-size: .73rem; line-height: 1.55; color: var(--fx-ink-3); max-width: 68ch; }
.fx-rec-footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .75rem 1.25rem; margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--fx-hair); }
.fx-rec-footer > span { color: var(--fx-ink-3); font-size: .76rem; line-height: 1.4; }
.fx-rec-alternatives { margin-top: clamp(1.4rem,3svh,2.2rem); }
.fx-rec-alternatives > summary { font-weight: 650; }
.fx-rec-alternatives ol { list-style: none; padding: 0; margin: .2rem 0 0; }
.fx-rec-alternatives li { border-top: 1px solid var(--fx-hair); padding: .75rem 0 1.4rem; min-width: 0; }
.fx-rec-alt-head { display: grid; gap: .4rem; }
.fx-rec-alt-head > span { color: var(--fx-ink-3); font-size: .68rem; text-transform: uppercase; letter-spacing: .12em; }
.fx-rec-alt-head b { font-size: clamp(1rem,2vw,1.3rem); line-height: 1.4; font-weight: 620; overflow-wrap: anywhere; }
.fx-rec-alt-reason { max-width: 70ch; color: var(--fx-ink-2); font-size: .81rem; }
.fx-rec-alternatives li details > .fx-btn { margin: 1rem 0 0; }
.fx-rec-none { color: var(--fx-ink-3); font-size: .84rem; margin: 1.8rem 0; max-width: 60ch; }
.fx-rec--journey { max-width: 66rem; }
.fx-rec--course { margin-top: clamp(1.4rem,5svh,3rem); }
@media (max-width: 680px) {
  .fx-rec-route { grid-template-columns: minmax(0,1fr); gap: .95rem; }
  .fx-rec-proof { grid-template-columns: minmax(0,1fr); }
  .fx-rec-headline { grid-template-columns: 1.45rem minmax(0,1fr); gap: .8rem; }
  .fx-rec-target { width: 1.15rem; height: 1.15rem; }
  .fx-rec-target i { inset: .29rem; }
  .fx-rec-statement h3 { font-size: clamp(1.3rem,5.5vw,2rem); letter-spacing: -.04em; }
  .fx-rec-date, .fx-rec-primary-action { margin-left: 2.25rem; }
  .fx-rec-label { letter-spacing: .095em; font-size: .65rem; }
}
@media (prefers-reduced-motion: reduce) {
  .fx-rec *, .fx-rec *::before, .fx-rec *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

/* Operational geometry: one vertical scroller per work mode. Search and filters
   belong to Bereiche; neither can float across an inspector or a Kurs action. */
.fx-atlas-head { grid-template-columns: minmax(0, 1fr) auto auto; grid-template-areas: "crumbs lens return" "search filters filters"; gap: .75rem 1.5rem; }
.fx-crumbs { grid-area: crumbs; overflow-wrap: anywhere; }
.fx-lens { grid-area: lens; }
.fx-search { grid-area: search; min-width: 0; }
.fx-atlas-tools { display: contents; }
.fx-atlas-tools > [data-return] { grid-area: return; }
.fx-filters { grid-area: filters; position: static; justify-content: flex-end; flex-wrap: wrap; margin: 0; }
.fx-atlas[data-view="course"] .fx-search, .fx-atlas[data-view="coverage"] .fx-search { display: none; }
.fx-atlas:not([data-view="structure"]) .fx-atlas-head { grid-template-areas: "crumbs lens return"; }
.fx-lens button, .fx-filters button, .fx-perspective button, .fx-crumbs button { min-height: 44px; }
.fx-filters button { letter-spacing: .06em; padding-inline: .8rem; }
.fx-search input { height: 44px; }
.fx-search input:focus-visible { outline: 2px solid var(--fx-gold); outline-offset: 2px; }
.fx-results { max-height: min(24rem, 60dvh); overflow-y: auto; }
.fx-results li { min-height: 44px; align-items: center; }
.fx-results li span { min-width: 0; overflow-wrap: anywhere; }
.fx-band-head { min-height: 44px; }
.fx-inspector h2, .fx-pk-focus-head { scroll-margin-block: 1.5rem; }
.fx-pk-item, .fx-lane-head, .fx-q-head { scroll-margin-block: 1rem; }
.fx-inspector .fx-rel button { flex-wrap: wrap; min-height: 44px; }
.fx-course-inner, .fx-cov-inner { margin-inline: auto; }
@media (max-width: 1100px) {
  .fx-atlas-head { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "crumbs return" "lens lens" "search filters"; }
  .fx-atlas:not([data-view="structure"]) .fx-atlas-head { grid-template-areas: "crumbs return" "lens lens"; }
  .fx-lens { justify-self: start; }
  .fx-atlas-body.has-inspector { grid-template-columns: minmax(0, 1fr); }
  .fx-inspector { border-left: 0; border-top: 1px solid var(--fx-ink-4); margin-inline: var(--fx-gutter); background: var(--fx-bg); }
  .fx-inspector-inner { padding: 1.2rem 0 max(2rem, env(safe-area-inset-bottom)); }
  .fx-register { min-height: 0; }
  .fx-band, .fx-register.is-focused .fx-band { flex: 0 0 auto; }
  .fx-band-head, .fx-register.is-focused .fx-band-head { min-height: 3.5rem; flex: 0 0 auto; padding-block: .6rem; }
}
@media (max-width: 600px) {
  .fx-atlas-head { grid-template-areas: "crumbs return" "lens lens" "search search" "filters filters"; gap: .5rem .75rem; padding-block: .75rem; }
  .fx-atlas-tools > [data-return] { padding-inline: .75rem; font-size: .7rem; }
  .fx-crumbs b { font-size: .78rem; letter-spacing: .15em; margin-right: 0; }
  .fx-lens { width: 100%; justify-content: space-between; }
  .fx-filters { justify-content: flex-start; gap: .3rem; }
  .fx-results li { flex-wrap: wrap; gap: .25rem; }
  .fx-band-meta { max-width: 8rem; white-space: normal; text-align: right; }
}

.fx-comm-field :is(input, textarea, select) { font-size: 1rem; }
.fx-comm-field label { flex-wrap: wrap; }
.fx-comm-aside > h2 { font: 600 1.25rem/1.3 var(--fx-sans); letter-spacing: -.02em; margin: 0; scroll-margin-top: 1.5rem; }
.fx-comm-edit-link { min-height: 44px; padding: .5rem 0; border: 0; background: none; color: var(--fx-ink-2); text-decoration: underline; text-underline-offset: .25em; cursor: pointer; font-size: .85rem; }
.fx-comm-drop { transition: border-color 150ms ease, background-color 150ms ease; }
.fx-comm-drop.is-dragging { border-color: var(--fx-gold); background: var(--fx-gold-soft); }
.fx-comm-drop input[type=file] { font-size: .875rem; min-width: 0; }
.fx-comm-manifest { list-style: none; padding: 0; margin-block: 1rem; }
.fx-comm-manifest li { display: grid; gap: .3rem; padding-block: .75rem; border-top: 1px solid var(--fx-hair); }
.fx-comm-manifest strong { color: var(--fx-ink); font-weight: 600; }
.fx-comm-manifest code { font-size: .75rem; overflow-wrap: anywhere; }
.fx-comm-actions .fx-btn, .fx-comm-approval .fx-btn { min-height: 44px; height: auto; padding-block: .65rem; letter-spacing: .04em; }
.fx-comm-approval .fx-btn { width: 100%; }
.fx-comm-consent { min-height: 44px; align-items: flex-start; }
.fx-comm-consent b { font-weight: 700; }
.fx-comm-real-html { height: max(24rem, 65dvh); }
@media (max-width: 600px) {
  .fx-comm-actions .fx-btn { flex: 1 1 100%; }
  .fx-comm-top h1 { font-size: 1.6rem; }
  .fx-comm-preview { margin-bottom: 1.25rem; }
}
@media (prefers-reduced-motion: reduce) {
  .fx-btn:active { transform: none; }
  .fx-comm-drop, .fx-results { transition: none; animation: none; }
}

/* Journey remains one decision at a time. At phone widths and zoom the entry
   and reality scenes use document flow, so text growth cannot clip the stage. */
html { scroll-padding-top: calc(var(--fx-bar-h) + 1rem); }
body.fx { scrollbar-color: var(--fx-ink-4) var(--fx-bg); }
.fx ::selection { background: var(--fx-gold-soft); color: var(--fx-ink); }
.fx :is(input, textarea) { caret-color: var(--fx-gold); }
.fx-journey :is(button, a, summary) { scroll-margin-block: calc(var(--fx-bar-h) + 1rem) 2rem; }
.fx-q-head, .fx-q-title, .fx-q-actions, .fx-bar-end { min-width: 0; }
.fx-q-actions .fx-btn { min-height: 44px; height: auto; padding-block: .6rem; }
@media (max-width: 1200px) {
  .fx-stand, .fx-mode { display: none; }
}
@media (max-width: 1024px) {
  .fx-bar-link { display: none; }
}
@media (max-width: 820px), (max-aspect-ratio: 10/11), (prefers-reduced-motion: reduce) {
  .scene--film { height: auto; }
  .scene--film > .scene-stage { position: relative; height: auto; min-height: 100svh; }
  .fx-arrival-go { padding-top: 2rem; }
  .fx-reveal { opacity: 1 !important; transform: none !important; will-change: auto; }
  .scene-stage, .scene--work, .scene--flow { padding-bottom: max(3rem, env(safe-area-inset-bottom)); }
  .fx-work-count { margin-top: 1.5rem; }
}
@media (max-width: 600px) {
  body.fx-has-lab { --fx-bar-h: 6.75rem; }
  body.fx-has-lab .fx-bar { display: grid; grid-template-columns: 1fr; grid-template-rows: 1.4rem 2.75rem; align-content: center; gap: .6rem; }
  body.fx-has-lab .fx-bar-end { display: grid; grid-template-columns: 1fr .75fr 1.35fr 2.75rem; width: 100%; margin: 0; gap: .4rem; }
  body.fx-has-lab .fx-bar-end .fx-btn { min-height: 44px; padding-inline: .4rem; font-size: .7rem; letter-spacing: .035em; }
  body.fx-has-lab .fx-bar-end .fx-icon-btn { width: 44px; }
  .fx-work .fx-h2 { max-width: 100%; }
  .fx-q-title { font-size: 1.1rem; line-height: 1.4; }
  .fx-q-facts, .fx-q-proof dl { gap: 1rem; }
}
@media (max-height: 600px) {
  .scene--film { height: auto; }
  .scene--film > .scene-stage { position: relative; height: auto; min-height: 100svh; }
  .scene-reality .fx-strata-labels { display: none; }
  .scene-reality .fx-changes { position: static; width: auto; }
  .fx-strata-flat { display: block; }
  .fx-reveal { opacity: 1 !important; transform: none !important; }
}
.fx-strata-flat ul { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--fx-hair); }
.fx-strata-flat li { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 0.8rem 0; border-bottom: 1px solid var(--fx-hair); }
.fx-strata-flat strong { flex: 0 0 auto; font-size: 1rem; font-weight: 600; }
.fx-strata-flat span { min-width: 0; font-size: 0.82rem; text-align: right; color: var(--fx-ink); }
@media (prefers-reduced-motion: reduce), (max-height: 600px) {
  .scene-reality .fx-strata-labels, .scene-reality .fx-wide-only { display: none; }
  .scene-reality .scene-stage { background: var(--fx-bg); }
  .scene-reality .fx-changes { position: static; width: auto; }
  .fx-strata-flat { display: block; margin-top: 2rem; }
}
.fx-inspector { scroll-margin-top: 1rem; }

/* View-only finish-line modules. No motion or precision drag requirement. */
.fx-rec-modules { list-style: none; margin: 1rem 0 0; padding: 0; }
.fx-rec-module { min-width: 0; border-top: 1px solid var(--fx-hair); padding: 1.4rem 0; overflow-wrap: anywhere; }
.fx-rec-sort { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-bottom: 1rem; }
.fx-rec-sort span { font-size: .75rem; color: var(--fx-ink-2); }
.fx-rec-sort button { min-height: 44px; }
.fx-rec-sort [data-rec-handle] { cursor: grab; }
.fx-rec-sort button:disabled { opacity: .45; cursor: default; }
.fx-rec-module details { margin: .8rem 0; }
.fx-rec-module summary { min-height: 44px; cursor: pointer; }
.fx-rec-module :focus-visible { outline: 2px solid var(--fx-gold); outline-offset: 3px; }

.fx-rec-module .fx-rec-statement h3 { font-size: clamp(1.15rem, 2vw, 1.65rem); line-height: 1.25; }
.fx-rec-module .fx-rec-headline { margin-top: .8rem; }
.fx-rec-module .fx-rec-sort { margin-bottom: .65rem; }
.fx-rec-module .fx-rec-source-note { font-size: .72rem; color: var(--fx-ink-2); overflow-wrap: anywhere; }


/* FRAME Owner steering: one visible source-bound decision at a time. */
.fx-pk-ops { display:flex; flex-wrap:wrap; gap:0.5rem; margin-top:0.75rem; }
.fx-pk-loop-confirm:not([hidden]), .fx-rec-accept-form:not([hidden]) {
  display:grid; gap:0.65rem; margin:0.7rem 0 0;
  padding:0.9rem; border:1px solid var(--fx-hair); border-radius:0.45rem;
}
.fx-pk-loop-confirm p, .fx-rec-accept-form p { margin:0; line-height:1.45; }
.fx-pk-loop-confirm label, .fx-rec-accept-form label { display:grid; gap:0.3rem; font-size:0.82rem; }
.fx-pk-loop-confirm input, .fx-rec-accept-form input, .fx-rec-accept-form textarea {
  width:100%; min-width:0; box-sizing:border-box; border:1px solid var(--fx-hair);
  border-radius:0.3rem; background:transparent; color:inherit;
  font:inherit; padding:0.6rem; color-scheme:dark;
}
.fx-rec-accept-form textarea { resize:vertical; min-height:5.3rem; }
.fx-pk-loop-confirm [role="status"] { overflow-wrap:anywhere; }
@media (max-width:640px) {
  .fx-pk-ops .fx-btn, .fx-rec-accept-form .fx-btn { flex:1 1 auto; }
}
