/* One ruled work surface for a fixed research plan and rolling relationship groups. */
body.fx.fx-lab-open { overflow: hidden; }
.fx-lab { position: fixed; inset: 0; z-index: 70; overflow: auto; overscroll-behavior: contain; scroll-padding: 1.5rem; scrollbar-gutter: stable; background: var(--fx-bg); color: var(--fx-ink); }
.fx-lab[hidden] { display: none; }
.fx-lab-room { min-height: 100dvh; max-width: 1440px; margin: auto; padding: 0 var(--fx-gutter) max(2rem, env(safe-area-inset-bottom)); }
.fx-lab button, .fx-lab textarea { font: inherit; }
.fx-lab-top { min-height: 5.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--fx-hair); }
.fx-lab-brand { margin: 0 0 0.1rem; color: var(--fx-ink-3); font-size: 0.65rem; font-weight: 700; letter-spacing: 0.24em; }
.fx-lab-top h1 { margin: 0; font-size: clamp(1.2rem, 2.1vw, 1.85rem); font-weight: 600; letter-spacing: -0.045em; line-height: 1.15; }
.fx-lab-top h1 span { color: var(--fx-gold); }
.fx-lab-top h1:focus { outline: none; }
.fx-lab-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(17rem, 23rem); gap: clamp(1.5rem, 4vw, 4rem); align-items: end; padding: clamp(1.5rem, 3vw, 2.5rem) 0 1.5rem; }
.fx-lab-intro h2 { margin: 0; font-size: clamp(2rem, 4vw, 3.5rem); font-weight: 550; line-height: 1.02; letter-spacing: -0.055em; }
.fx-lab-intro h2 span { display: block; margin-top: 0.25rem; font-family: var(--fx-serif); font-style: italic; font-size: clamp(1.2rem, 2vw, 1.7rem); font-weight: 400; letter-spacing: 0; color: var(--fx-ink-2); }
.fx-lab-intro p { max-width: 62ch; margin: 1.15rem 0 0; font-size: 0.91rem; line-height: 1.65; color: var(--fx-ink-2); }
.fx-lab-source { border-top: 1px solid var(--fx-gold); padding-top: 0.8rem; }
.fx-lab-source strong, .fx-lab-source span { display: block; }
.fx-lab-source strong { font-size: 0.86rem; font-weight: 650; }
.fx-lab-source span { margin-top: 0.3rem; font-size: 0.78rem; line-height: 1.55; color: var(--fx-ink-2); overflow-wrap: anywhere; }
.fx-lab-source .fx-btn { margin-top: 0.8rem; }
.fx-lab-lanes { display: flex; flex-wrap: wrap; gap: 0 1.5rem; border-bottom: 1px solid var(--fx-hair); }
.fx-lab-lane { display: inline-flex; align-items: center; gap: 0.45rem; min-height: 2.9rem; padding: 0.65rem 0; border: 0; border-bottom: 1px solid transparent; background: transparent; color: var(--fx-ink-2); font-size: 0.82rem; font-weight: 650; cursor: pointer; }
.fx-lab-lane[aria-pressed="true"] { color: var(--fx-ink); border-bottom-color: var(--fx-gold); }
.fx-lab-lane:disabled { color: var(--fx-ink-3); cursor: default; }
.fx-lab-lane small { color: var(--fx-ink-3); font-size: 0.67rem; font-weight: 500; }
.fx-lab :is(button, textarea):focus-visible { outline: 2px solid var(--fx-gold); outline-offset: 3px; }
.fx-lab-roll { border-top: 1px solid var(--fx-hair); }
.fx-lab-roll button { display: block; width: 100%; min-height: 3rem; padding: 0.65rem 0; border: 0; border-bottom: 1px solid var(--fx-hair); background: transparent; color: var(--fx-ink); text-align: left; font-size: 0.8rem; font-weight: 650; cursor: pointer; }
.fx-lab-roll button:disabled { color: var(--fx-ink-3); cursor: default; }
.fx-lab-roll p { margin: 0; padding: 1rem 0; font-size: 1rem; }
.fx-lab-roll strong { font-size: 1.7rem; font-variant-numeric: tabular-nums; font-weight: 550; color: var(--fx-gold); }
.fx-lab-roll span { display: block; margin-top: 0.25rem; font-size: 0.72rem; line-height: 1.4; color: var(--fx-ink-3); }
.fx-lab-work { display: grid; grid-template-columns: minmax(17rem, 0.8fr) minmax(0, 1.4fr); gap: clamp(1.3rem, 3vw, 3rem); padding-top: 1.5rem; align-items: start; }
.fx-lab-rounds h3 { margin: 0 0 0.65rem; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--fx-ink-3); }
.fx-lab-center { min-width: 0; }
.fx-lab-round-head { border-bottom: 1px solid var(--fx-ink-4); padding-bottom: 1.2rem; }
.fx-lab-round-head p { margin: 0 0 0.5rem; font-size: 0.69rem; font-weight: 650; letter-spacing: 0.16em; text-transform: uppercase; color: var(--fx-gold); }
.fx-lab-round-head h3 { margin: 0; font-size: clamp(1.3rem, 2vw, 1.8rem); font-weight: 550; line-height: 1.15; letter-spacing: -0.04em; }
.fx-lab-round-head span { display: block; margin-top: 0.6rem; font-size: 0.8rem; color: var(--fx-ink-3); }
.fx-lab-stages { display: flex; flex-wrap: wrap; gap: 0.3rem 0.55rem; margin: 1.25rem 0 1.7rem; padding: 0; list-style: none; }
.fx-lab-stages li { display: inline-flex; align-items: center; gap: 0.55rem; font-size: 0.68rem; font-weight: 600; color: var(--fx-ink-3); }
.fx-lab-stages li + li::before { content: '→'; color: var(--fx-ink-4); }
.fx-lab-slot-list { border-top: 1px solid var(--fx-hair); }
.fx-lab-slot-list button { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 0.05rem 0.65rem; width: 100%; min-height: 3.5rem; padding: 0.6rem 0.5rem; border: 0; border-bottom: 1px solid var(--fx-hair); background: transparent; color: var(--fx-ink-2); text-align: left; cursor: pointer; transition: background-color 180ms ease; }
.fx-lab-slot-list button span { grid-row: span 2; align-self: center; font-size: 1.2rem; font-variant-numeric: tabular-nums; font-weight: 600; color: var(--fx-ink-3); }
.fx-lab-slot-list button b { font-size: 0.9rem; font-weight: 650; }
.fx-lab-slot-list button small { font-size: 0.7rem; color: var(--fx-ink-3); }
.fx-lab-slot-list button:disabled { cursor: default; opacity: .6; }
.fx-lab-lens dd { overflow-wrap: anywhere; }
.fx-lab-slot-list button[aria-pressed="true"] { background: rgba(244,240,232,.065); color: var(--fx-ink); }
.fx-lab-slot-list button[aria-pressed="true"] span { color: var(--fx-gold); }
.fx-lab-lens { min-width: 0; border-top: 1px solid var(--fx-gold); padding-top: 0.75rem; }
.fx-lab-lens-no { margin: 0; font-size: 0.72rem; font-variant-numeric: tabular-nums; color: var(--fx-gold); }
.fx-lab-lens h3 { margin: 0.35rem 0 0; font-size: clamp(1.4rem, 2vw, 2rem); font-weight: 550; line-height: 1.15; letter-spacing: -0.035em; }
.fx-lab-disposition { margin: 0.7rem 0 1.3rem; font-size: 0.77rem; color: var(--fx-ink-2); }
.fx-lab-lens dl { margin: 0; }
.fx-lab-lens dl div { padding: 0.8rem 0; border-top: 1px solid var(--fx-hair); }
.fx-lab-lens dt { font-size: 0.75rem; font-weight: 700; }
.fx-lab-lens dd { margin: 0.3rem 0 0; font-size: 0.875rem; line-height: 1.6; color: var(--fx-ink-2); }
.fx-lab-empty { padding: 0.85rem 0; margin: 0; border-top: 1px solid var(--fx-hair); font-size: 0.76rem; color: var(--fx-ink-3); }
.fx-lab-review { margin-top: 2rem; border-top: 1px solid var(--fx-ink-4); padding-top: 1.25rem; }
.fx-lab-review > summary, .fx-lab-draft h4 { margin: 0; font-size: 1rem; font-weight: 650; }
.fx-lab-review p, .fx-lab-draft p { margin: 0.35rem 0 0.9rem; font-size: 0.74rem; color: var(--fx-ink-3); }
.fx-lab-review > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.8rem; }
.fx-lab-review label, .fx-lab-draft label { display: block; font-size: 0.75rem; font-weight: 650; }
.fx-lab textarea { display: block; width: 100%; margin-top: 0.35rem; padding: 0.65rem; resize: vertical; border: 1px solid var(--fx-ink-4); border-radius: 3px; background: var(--fx-bg-raise); color: var(--fx-ink); font-size: 1rem; line-height: 1.5; }
.fx-lab textarea::placeholder { color: var(--fx-ink-3); }
.fx-lab-draft { margin-top: 1.1rem; border-top: 1px solid var(--fx-hair); padding-top: 1rem; }
.fx-lab-draft label + label { margin-top: 0.8rem; }
.fx-lab-foot { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-top: 3rem; padding-top: 1.1rem; border-top: 1px solid var(--fx-hair); }
.fx-lab-foot p { max-width: 70ch; margin: 0; font-size: 0.75rem; line-height: 1.6; color: var(--fx-ink-3); }
@media (hover: hover) and (pointer: fine) { .fx-lab-rounds button:not(:disabled):hover, .fx-lab-slot-list button:hover, .fx-lab-lane:not(:disabled):hover { color: var(--fx-ink); background: rgba(244,240,232,.045); } }
/* Group navigation is a toolbar, leaving the work surface to list and context. */
.fx-lab-rounds { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.5rem; border-block: 1px solid var(--fx-hair); padding: .7rem 0; }
.fx-lab-rounds h3 { margin: 0; }
.fx-lab-rounds select { min-width: 0; max-width: 100%; min-height: 44px; padding: .5rem .75rem; border: 1px solid var(--fx-ink-4); background: var(--fx-bg-raise); color: var(--fx-ink); font: inherit; font-size: .875rem; }
.fx-lab-roll { display: flex; flex: 1; align-items: center; justify-content: space-between; gap: 1rem; border: 0; }
.fx-lab-roll button { width: auto; min-height: 44px; border: 0; }
.fx-lab-roll p { padding: 0; text-align: center; font-size: .85rem; }
.fx-lab-roll strong { font-size: 1rem; }
.fx-lab-roll span { display: none; }
.fx-lab :is(summary, select, input):focus-visible { outline: 2px solid var(--fx-gold); outline-offset: 3px; }
.fx-lab summary { min-height: 44px; padding-block: .6rem; cursor: pointer; font-size: .82rem; font-weight: 600; color: var(--fx-ink-2); }
.fx-lab summary::marker { color: var(--fx-ink-3); }
.fx-lab-about p { margin-top: .25rem; }
.fx-lab-about span { padding-bottom: .5rem; }
.fx-lab-source { padding-top: .65rem; }
.fx-lab-source .fx-btn { margin-top: .4rem; }
.fx-lab-path { margin: .35rem 0 .6rem; }
.fx-lab-stages { margin: .4rem 0 .8rem; }
.fx-lab-back { min-height: 44px; margin: 0 0 .6rem; padding: 0; border: 0; background: transparent; color: var(--fx-ink-2); font-size: .8rem; cursor: pointer; }
.fx-lab-lens h3 { scroll-margin-top: 1.5rem; }
.fx-lab-proof { margin-top: .75rem; border-block: 1px solid var(--fx-hair); }
.fx-lab-proof summary { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem; }
.fx-lab-proof summary::before { content: '+'; }
.fx-lab-proof[open] summary::before { content: '−'; }
.fx-lab-proof summary span { margin-left: auto; color: var(--fx-ink-3); font-weight: 450; }
.fx-lab-disposition { padding-bottom: .8rem; margin-bottom: 0; }
.fx-lab-review { padding-top: .4rem; }
.fx-lab-review > summary { color: var(--fx-ink); }
.fx-lab-review > div { padding-bottom: 1rem; }
.fx-lab-foot { margin-top: 1.5rem; }
@media (max-width: 1023px) {
  .fx-lab-intro { grid-template-columns: 1fr; gap: 1rem; }
  .fx-lab-source { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .25rem 1rem; }
  .fx-lab-source > strong { grid-column: 1; }
  .fx-lab-source > .fx-lab-about { grid-column: 1; }
  .fx-lab-source > .fx-btn { grid-column: 2; grid-row: 1 / span 2; margin: 0; }
}
@media (max-width: 820px) {
  .fx-lab-work { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
  .fx-lab-round-head { padding-bottom: .75rem; }
  .fx-lab-round-head h3 { font-size: 1.35rem; }
  .fx-lab-slot-list button { min-height: 3.25rem; grid-template-columns: 2rem minmax(0, 1fr) auto; }
  .fx-lab-slot-list button span { grid-row: 1; font-size: 1rem; }
  .fx-lab-slot-list button small { align-self: center; }
  .fx-lab-lens { max-width: none; }
  .fx-lab-review > div, .fx-lab-foot { grid-template-columns: 1fr; gap: .9rem; }
}
@media (max-width: 520px) {
  .fx-lab-top { align-items: flex-start; padding-block: 1rem; }
  .fx-lab-top h1 { font-size: 1.1rem; max-width: 14ch; }
  .fx-lab-top .fx-btn { font-size: .7rem; padding-inline: .7rem; min-height: 44px; max-width: 9rem; }
  .fx-lab-lanes { gap: 0 1rem; }
  .fx-lab-lane { font-size: .78rem; }
  .fx-lab-source { display: block; }
  .fx-lab-source > .fx-btn { margin-top: .4rem; }
  .fx-lab-rounds { display: block; }
  .fx-lab-rounds h3 { margin-bottom: .3rem; }
  .fx-lab-rounds select { width: 100%; }
  .fx-lab-roll { gap: .5rem; }
  .fx-lab-roll button { max-width: 8rem; font-size: .78rem; }
  .fx-lab-roll button:last-child { text-align: right; }
  .fx-lab-slot-list button { grid-template-columns: 1.8rem minmax(0, 1fr); }
  .fx-lab-slot-list button span { grid-row: span 2; }
  .fx-lab-slot-list button small { grid-column: 2; }
  .fx-lab-round-head h3, .fx-lab-intro p { overflow-wrap: anywhere; }
}
@media (prefers-reduced-motion: reduce) { .fx-lab-slot-list button { transition: none; } }
.fx-lab-mail-entry { width:100%; margin-top:1.1rem; justify-content:space-between; min-height:44px; }
.fx-lab-mail { max-width:720px; padding:clamp(1.5rem,5vw,4rem) 0; }
.fx-lab-mail-lead { font-size:clamp(1.4rem,3vw,2.2rem); letter-spacing:-.035em; margin:0 0 1rem; }
.fx-lab-mail > p, .fx-lab-mail-gate { max-width:65ch; line-height:1.65; color:var(--fx-ink-2); }
.fx-lab-mail-gate { margin:2rem 0; padding:1rem 0; border-top:1px solid var(--fx-gold); border-bottom:1px solid var(--fx-hair); }
.fx-lab-mail-gate strong { color:var(--fx-ink); }
.fx-lab-mail-gate ol { padding-left:1.4rem; }
.fx-lab-mail label { display:block; font-size:.82rem; font-weight:650; margin-bottom:.65rem; }
.fx-lab-mail ul li { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:.5rem; border-bottom:1px solid var(--fx-hair); font-size:.8rem; }
.fx-lab-mail ul li span { min-width:0; overflow-wrap:anywhere; }
.fx-lab-mail-note { font-size:.76rem; }
.fx-lab :is(input,button):focus-visible { outline:2px solid var(--fx-gold); outline-offset:3px; }
.fx-lab-lens { scroll-margin-top: 1rem; }

/* Source-bound selection, no additional dashboard or progress store. */
.fx-lab-cycle-bar { margin: 1.5rem 0; padding: 1rem 0; border-block: 1px solid var(--fx-line, #333); }
.fx-lab-cycle-bar p, .fx-lab-cycle p { color: var(--fx-muted, #aaa); line-height: 1.65; }
.fx-lab-cycle-bar > div { display: flex; flex-wrap: wrap; gap: .6rem; }
.fx-lab-cycle { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--fx-line, #333); }
.fx-lab-cycle .fx-btn { margin: .4rem .4rem .4rem 0; max-width: 100%; white-space: normal; }
.fx-lab-cycle-bar .fx-btn { min-height: 44px; white-space: normal; }
.fx-lab-cycle-bar [aria-pressed="true"] { border-color: var(--fx-gold, #d6b97b); }

.fx-lab-checks{border:1px solid var(--fx-line,rgba(255,255,255,.15));border-radius:12px;padding:16px;margin-top:16px;min-width:0}
.fx-lab-checks legend{padding:0 6px}.fx-lab-checks label{display:flex;align-items:center;gap:12px;min-height:44px;line-height:1.5;cursor:pointer}
.fx-lab-checks input{width:20px;height:20px;flex:0 0 20px;accent-color:var(--fx-accent,#b6d9cd)}
.fx-lab-checks>div{display:flex;gap:8px;flex-wrap:wrap}.fx-lab-checks button{min-height:44px;white-space:normal}
