.bottleneck-model {
  --model-observed: #7f3430;
  --model-strong: #8a5d17;
  --model-weak: #79682f;
  --model-unknown: #5f6b75;
  --model-clear: #35664d;
}

.bottleneck-model .model-layout {
  max-width: 1620px;
  grid-template-columns: 190px minmax(0, 1040px) 230px;
}

.bottleneck-model .model-document {
  min-width: 0;
  padding-inline: clamp(28px, 4vw, 58px);
  overflow-wrap: anywhere;
}

.bottleneck-model .model-document > h1 {
  max-width: 940px;
  font-size: clamp(2.5rem, 5.3vw, 4.7rem);
  line-height: 1.02;
}

.bottleneck-model .model-document > .dek {
  max-width: 850px;
  font-size: clamp(18px, 2vw, 23px);
}

.model-nav nav a {
  padding-block: 8px;
}

.collection-back {
  display: inline-block;
  margin: 18px 8px;
  font-size: 12px;
}

.model-section {
  padding-top: 18px;
  scroll-margin-top: 74px;
}

.section-number {
  display: block;
  margin-top: 46px;
  color: var(--link);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.model-section > h2 {
  margin-top: 9px;
  font-size: clamp(1.8rem, 3vw, 2.5rem);
}

.current-call {
  margin-top: 26px;
  padding: 24px 26px;
  border-left-width: 5px;
}

.current-call p {
  margin: 0;
  font: 600 clamp(20px, 2.2vw, 28px)/1.45 var(--serif);
}

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

.judgment-grid article {
  min-height: 190px;
  padding: 22px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.judgment-grid article > span,
.stage-signals span,
.falsification-strip span {
  color: var(--muted);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.judgment-grid article > strong {
  display: block;
  margin: 15px 0 9px;
  font: 600 20px/1.3 var(--serif);
}

.judgment-grid p,
.falsification-strip p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.falsification-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 24px 0;
  border: 1px solid var(--line);
  background: #f7f9fb;
}

.falsification-strip article {
  padding: 17px;
  border-right: 1px solid var(--line);
}

.falsification-strip article:last-child {
  border-right: 0;
}

.capacity-ladder {
  display: grid;
  grid-template-columns: repeat(15, auto);
  align-items: stretch;
  gap: 0;
  margin: 28px 0 18px;
  padding: 0;
  list-style: none;
}

.capacity-ladder li:not(.not-equal) {
  min-width: 0;
  padding: 13px 10px;
  border: 1px solid var(--line);
  background: #fff;
}

.capacity-ladder li:not(.not-equal):last-child {
  border-color: #9c895c;
  background: #faf7ee;
}

.capacity-ladder li > span {
  display: block;
  color: var(--muted);
  font: 9px var(--mono);
}

.capacity-ladder li > strong {
  display: block;
  margin-top: 7px;
  overflow-wrap: anywhere;
  font: 700 9px/1.4 var(--sans);
  letter-spacing: .04em;
}

.capacity-ladder li > small {
  display: block;
  margin-top: 8px;
  color: var(--muted);
  font-size: 9px;
  line-height: 1.4;
}

.capacity-ladder .not-equal {
  align-self: center;
  padding: 0 5px;
  color: var(--model-observed);
  font: 700 17px var(--serif);
}

.capacity-warning {
  padding: 15px 18px;
  border-left: 3px solid var(--model-observed);
  background: #fbf5f3;
  font-size: 13px;
}

.stage-map {
  margin: 34px 0 0;
  padding: 0;
  list-style: none;
  counter-reset: none;
}

.stage-record {
  margin-bottom: 17px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--model-unknown);
  background: #fff;
}

.stage-record[data-state="STRONG_BOTTLENECK_CANDIDATE"] { border-left-color: var(--model-strong); }
.stage-record[data-state="WEAK_BOTTLENECK_CANDIDATE"] { border-left-color: var(--model-weak); }
.stage-record[data-state="OBSERVED_BOTTLENECK"] { border-left-color: var(--model-observed); }
.stage-record[data-state="NOT_CURRENTLY_BOTTLENECKED"] { border-left-color: var(--model-clear); }

.stage-head {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) minmax(210px, auto);
  gap: 16px;
  align-items: center;
  padding: 18px 20px;
  border-bottom: 1px solid var(--line);
}

.stage-number {
  color: var(--muted);
  font: 18px var(--mono);
}

.stage-head code {
  color: var(--muted);
  font-size: 9px;
  overflow-wrap: anywhere;
}

.stage-head h3 {
  margin: 3px 0 0;
  font-size: 1.28rem;
  overflow-wrap: anywhere;
}

.stage-head > div { min-width: 0; }

.stage-state {
  text-align: right;
}

.stage-state > span:last-child {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: 10px;
  text-transform: uppercase;
}

.bottleneck-state {
  display: inline-block;
  max-width: 100%;
  padding: 4px 6px;
  border: 1px solid currentColor;
  color: var(--model-unknown);
  overflow-wrap: anywhere;
  font: 700 9px/1.3 var(--mono);
}

.bottleneck-state[data-state="STRONG_BOTTLENECK_CANDIDATE"] { color: var(--model-strong); }
.bottleneck-state[data-state="WEAK_BOTTLENECK_CANDIDATE"] { color: var(--model-weak); border-style: dashed; }
.bottleneck-state[data-state="OBSERVED_BOTTLENECK"] { color: var(--model-observed); background: #fbf2f1; }
.bottleneck-state[data-state="NOT_CURRENTLY_BOTTLENECKED"] { color: var(--model-clear); }

.stage-signals {
  display: grid;
  grid-template-columns: 1.1fr .75fr 1fr;
}

.stage-signals > div {
  min-width: 0;
  padding: 16px 19px;
  border-right: 1px solid var(--line);
}

.stage-signals > div:last-child { border-right: 0; }
.stage-signals p { margin: 7px 0 0; font-size: 12px; line-height: 1.55; }
.stage-signals .missing-signal { background: #faf8f2; }

.stage-record details,
.hypothesis-card details,
.current-gaps,
.evidence-section > details {
  border-top: 1px solid var(--line);
}

.stage-record summary,
.hypothesis-card summary,
.current-gaps > summary,
.evidence-section > details > summary {
  min-height: 46px;
  display: flex;
  align-items: center;
  padding: 10px 19px;
  color: var(--link);
  cursor: pointer;
  font-size: 11px;
  font-weight: 700;
}

.stage-detail-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  padding: 0 19px 19px;
}

.stage-detail-grid > div {
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-width: 1px 1px 0 0;
}

.stage-detail-grid h4,
.hypothesis-evidence h4 {
  margin: 0 0 7px;
  color: var(--muted);
  font: 700 9px var(--sans);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.stage-detail-grid p,
.stage-detail-grid ul {
  margin: 0;
  padding-left: 17px;
  font-size: 11px;
}

.stage-detail-grid p { padding-left: 0; }

.reference-links {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.reference-links a {
  max-width: 100%;
  padding: 3px 5px;
  border: 1px solid var(--line);
  background: #f7f9fb;
  overflow-wrap: anywhere;
  text-decoration: none;
}

.hypothesis-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 28px;
}

.hypothesis-card {
  min-width: 0;
  border: 1px solid var(--line);
  background: #fff;
}

.hypothesis-card > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 13px;
  padding: 17px 18px 0;
}

.hypothesis-card > header > span:first-child {
  color: var(--link);
  font: 700 14px var(--mono);
}

.hypothesis-card > h3,
.hypothesis-card > .confidence-line,
.hypothesis-card > dl {
  margin-inline: 18px;
}

.hypothesis-card > h3 {
  min-height: 58px;
  margin-top: 15px;
  margin-bottom: 8px;
  font-size: 1.3rem;
}

.confidence-line {
  color: var(--muted);
  font-size: 11px;
}

.hypothesis-card dl {
  margin-bottom: 18px;
}

.hypothesis-card dl div {
  padding: 10px 0;
  border-top: 1px solid var(--line);
}

.hypothesis-card dt {
  color: var(--muted);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.hypothesis-card dd {
  margin: 4px 0 0;
  font-size: 12px;
}

.hypothesis-evidence {
  padding: 0 18px 12px;
}

.hypothesis-evidence > div {
  margin-bottom: 13px;
}

.hypothesis-evidence ul {
  margin: 0;
  padding-left: 18px;
  font-size: 11px;
}

.hypothesis-card details > .reference-links {
  padding: 0 18px 18px;
}

.transmission-figure {
  margin: 28px 0;
  border: 1px solid var(--line);
  background: #fff;
}

.transmission-figure figcaption {
  padding: 20px 22px;
  border-bottom: 1px solid var(--line);
}

.transmission-figure figcaption > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.transmission-figure figcaption > div > span {
  min-width: 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  overflow-wrap: anywhere;
  text-transform: uppercase;
}

.transmission-figure figcaption p {
  margin: 9px 0 0;
  font-size: 12px;
}

.causal-chain {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
}

.causal-chain li {
  position: relative;
  min-height: 150px;
  padding: 24px;
  border-right: 1px solid var(--line);
}

.causal-chain li:last-child { border-right: 0; }
.causal-chain li:not(:last-child)::after { content: "→"; position: absolute; right: -10px; top: 58px; z-index: 2; padding: 1px 4px; color: var(--model-observed); background: #fff; font: 700 18px var(--serif); }
.causal-chain span { color: var(--model-observed); font: 11px var(--mono); }
.causal-chain p { margin: 17px 0 0; font: 600 17px/1.45 var(--serif); }

.scope-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.scope-pair article { margin: 0; }
.scope-pair ul { margin: 0; padding-left: 18px; font-size: 12px; }

.transmission-boundary {
  margin: 22px 0;
  padding: 20px 22px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--model-observed);
}

.transmission-boundary > strong {
  display: block;
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.transmission-boundary p { margin: 8px 0 12px; }

.unknown-list {
  margin: 28px 0;
  border-top: 1px solid var(--line);
}

.unknown-record {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: 17px;
  padding: 22px 0;
  border-bottom: 1px solid var(--line);
}

.unknown-rank {
  color: var(--link);
  font: 23px var(--mono);
}

.unknown-record h3 {
  margin: 0 0 12px;
  font-size: 1.22rem;
}

.unknown-record p {
  margin: 6px 0;
  font-size: 12px;
}

.unknown-record p strong {
  margin-right: 5px;
  color: var(--muted);
  font-size: 9px;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.reversal-panel {
  padding: 22px 24px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--link);
  background: #f7f9fb;
}

.reversal-panel h3 { margin-bottom: 12px; }
.reversal-panel ul { margin: 0; padding-left: 18px; }

.current-gaps { margin-top: 20px; border: 1px solid var(--line); }
.gap-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; padding: 0 20px 20px; }
.gap-grid h3 { font-size: 1.1rem; }
.gap-grid ol { padding-left: 20px; font-size: 12px; }

.authority-grid,
.source-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 23px 0;
}

.authority-record,
.source-record {
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--line);
  background: #fff;
}

.authority-record code,
.source-record code {
  overflow-wrap: anywhere;
  color: var(--muted);
  font-size: 9px;
}

.authority-record h3,
.source-record h3 {
  margin: 9px 0;
  overflow-wrap: anywhere;
  font-size: 1rem;
}

.authority-record a,
.authority-record span,
.source-record a,
.source-record span {
  font-size: 11px;
}

.authority-record p,
.source-record p {
  color: var(--muted);
  font-size: 10px;
  text-transform: lowercase;
}

.internal-record-label {
  display: block;
  color: var(--muted);
}

.evidence-section > details {
  margin-top: 14px;
  border: 1px solid var(--line);
}

.evidence-section > details .source-grid {
  margin: 0;
  padding: 0 18px 18px;
}

.model-meta .uncertainty {
  padding: 12px;
  font-size: 11px;
}

@media (max-width: 1180px) {
  .bottleneck-model .model-layout { grid-template-columns: 170px minmax(0, 1fr); }
  .bottleneck-model .model-meta { position: static; grid-column: 2; border-left: 0; background: #e9edf1; }
  .capacity-ladder { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
  .capacity-ladder .not-equal { display: none; }
  .capacity-ladder li:not(.not-equal) { min-height: 82px; }
}

@media (max-width: 900px) {
  .bottleneck-model .model-layout { display: block; }
  .bottleneck-model .model-nav { display: none; }
  .bottleneck-model .model-document { padding: 28px 18px 60px; }
  .bottleneck-model .model-document > h1 { font-size: clamp(2.25rem, 12vw, 3.4rem); }
  .bottleneck-model .breadcrumbs { margin-bottom: 14px; }
  .bottleneck-model .control-strip { display: grid; grid-template-columns: repeat(2, 1fr); }
  .bottleneck-model .control-strip div { min-width: 0; border-bottom: 1px solid var(--line); }
  .bottleneck-model .control-strip b { overflow-wrap: anywhere; }
  .judgment-grid,
  .falsification-strip,
  .hypothesis-grid,
  .scope-pair,
  .gap-grid,
  .authority-grid,
  .source-grid { grid-template-columns: 1fr; }
  .falsification-strip article { border-right: 0; border-bottom: 1px solid var(--line); }
  .falsification-strip article:last-child { border-bottom: 0; }
  .capacity-ladder { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stage-head { grid-template-columns: 34px minmax(0, 1fr); align-items: start; }
  .stage-state { grid-column: 2; text-align: left; }
  .stage-signals,
  .stage-detail-grid { grid-template-columns: 1fr; }
  .stage-signals > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .stage-signals > div:last-child { border-bottom: 0; }
  .stage-detail-grid > div { border-right: 0; }
  .hypothesis-card > h3 { min-height: 0; }
  .transmission-figure figcaption > div { align-items: flex-start; flex-direction: column; }
  .causal-chain { grid-template-columns: 1fr; }
  .causal-chain li { min-height: 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .causal-chain li:last-child { border-bottom: 0; }
  .causal-chain li:not(:last-child)::after { content: "↓"; right: auto; left: 29px; top: auto; bottom: -11px; }
  .unknown-record { grid-template-columns: 40px minmax(0, 1fr); }
  .evidence-section > details .source-grid { padding-inline: 12px; }
}

@media (max-width: 380px) {
  .capacity-ladder { grid-template-columns: 1fr; }
  .stage-head { padding-inline: 14px; }
  .stage-signals > div { padding-inline: 14px; }
  .stage-record summary,
  .hypothesis-card summary { padding-inline: 14px; }
}
