/* Proposals — reusable public-policy publication system */
:root {
  --proposal-ink: #f1f1f1;
  --proposal-line: #2b2b2b;
  --proposal-line-strong: #4a4a4a;
  --proposal-panel: rgba(20, 20, 20, 0.92);
  --proposal-panel-soft: rgba(17, 17, 17, 0.78);
  --proposal-fact: #d8d8d8;
  --proposal-model: #9faec0;
  --proposal-policy: #c4bda7;
  --proposal-unknown: #c1a2a2;
}

html:not(.js) [data-js-control] {
  display: none !important;
}

.proposal-social-link {
  border-bottom: 0;
}

.proposal-kicker,
.proposal-eyebrow,
.proposal-chapter-number,
.explainer-number {
  color: var(--text-dim);
  font-size: 0.69rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  line-height: 1.4;
  text-transform: uppercase;
}

.proposal-index-hero {
  padding: 148px 0 82px;
  border-bottom: 1px solid var(--proposal-line);
}

.proposal-index-hero h1 {
  margin-top: 18px;
  color: var(--bright);
  font-size: clamp(3.4rem, 10vw, 7.25rem);
  font-weight: 500;
  letter-spacing: -0.065em;
  line-height: 0.92;
}

.proposal-index-lede {
  max-width: 760px;
  margin-top: 34px;
  color: var(--white);
  font-size: clamp(1.2rem, 2.6vw, 1.85rem);
  letter-spacing: -0.025em;
  line-height: 1.4;
}

.proposal-method-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-top: 64px;
  border-top: 1px solid var(--proposal-line);
  border-bottom: 1px solid var(--proposal-line);
}

.proposal-method-strip span {
  min-height: 76px;
  padding: 18px 20px;
  border-left: 1px solid var(--proposal-line);
  color: var(--text-muted);
  font-size: 0.77rem;
  line-height: 1.45;
}

.proposal-method-strip span:first-child {
  border-left: 0;
}

.proposal-method-strip b {
  display: block;
  margin-bottom: 4px;
  color: var(--white);
  font-weight: 600;
}

.proposal-catalog {
  padding: 86px 0 112px;
}

.proposal-catalog-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 32px;
  margin-bottom: 34px;
}

.proposal-catalog-heading h2,
.proposal-standard h2 {
  margin-top: 8px;
  color: var(--white);
  font-size: clamp(1.8rem, 4vw, 3rem);
  font-weight: 500;
  letter-spacing: -0.04em;
  line-height: 1.08;
}

.proposal-catalog-heading > p {
  color: var(--text-dim);
  font-size: 0.78rem;
}

.proposal-grid {
  display: grid;
  /* Wide enough that a proposal title, its summary and its metadata all fit
     without shrinking the type to the edge of legibility. */
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 20px;
}

.proposal-card {
  min-width: 0;
}

/* The card used to be locked to 4/3 with the artwork taking whatever height it
   wanted, which left the body 51 pixels of a 249-pixel card: the title was cut
   through the middle of its letters and the summary, the metadata and the "read
   the complete proposal" line were clipped away entirely. The proportion now
   belongs to the artwork panel; the card is as tall as the words it carries. */
.proposal-card-link {
  display: flex;
  height: 100%;
  min-height: 0;
  flex-direction: column;
  border: 1px solid var(--proposal-line);
  /* Opaque. At 78% the site's animated background drifted its words straight
     through the card's own copy — "ASYMMETRIC VIOLENCE" reading across the
     proposal number is not atmosphere, it is noise on top of text. */
  background: #111111;
  color: var(--text);
  text-decoration: none;
  transition: border-color 180ms ease, transform 180ms ease, background 180ms ease;
}

.proposal-card-link:hover,
.proposal-card-link:focus-visible {
  border-color: #6b6b6b;
  background: #191919;
  color: var(--text);
  transform: translateY(-3px);
}

.proposal-card-link:focus-visible {
  outline: 2px solid var(--white);
  outline-offset: 4px;
}

.proposal-card-visual {
  position: relative;
  flex: 0 0 auto;
  /* 4:3, uncapped: the commissioned cover art is drawn at exactly this
     proportion, and cropping it to a letterbox cuts the party mark off the top
     of every card. */
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 1px solid var(--proposal-line);
  background: #101010;
}

.proposal-card-visual svg {
  width: 100%;
  height: 100%;
}

/* The commissioned cover art. It is 4:3, the same proportion the artwork panel
   holds, so it fills the panel without cropping at the panel's natural size and
   crops only from the top on a wide card — the wordmark sits at the foot of the
   drawing and must survive. */
.proposal-card-cover {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* The index cards used to carry a hand-drawn SVG — abstract shapes, a river
   line, pulsing nodes and a dashed animated seam. They now carry the
   commissioned cover art, so those rules and their keyframes are gone rather
   than left behind styling nothing. */

/* Above the art, not over it: the drawing carries the proposal's name across
   its own foot, and a caption laid on top of that reads as a mistake. */
.proposal-card-visual-label {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  padding: 11px 16px 22px;
  background: linear-gradient(to bottom, rgba(12, 12, 12, 0.92), rgba(12, 12, 12, 0));
  color: #c4c4c4;
  font-size: 0.7rem;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.proposal-card-body {
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
  padding: 18px 20px 20px;
}

.proposal-card-topline {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--text-dim);
  font-size: 0.7rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.proposal-status {
  text-align: right;
}

.proposal-card h3 {
  margin-top: 10px;
  color: var(--bright);
  font-size: clamp(1.55rem, 2.4vw, 2rem);
  font-weight: 500;
  letter-spacing: -0.045em;
  line-height: 1;
}

.proposal-card-body > p {
  margin-top: 10px;
  color: var(--text-muted);
  font-size: 0.84rem;
  line-height: 1.42;
}

.proposal-card-meta {
  display: grid;
  gap: 4px;
  margin-top: auto;
  padding-top: 14px;
}

.proposal-card-meta div {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  border-top: 1px solid var(--proposal-line);
  padding-top: 5px;
  font-size: 0.7rem;
}

.proposal-card-meta dt {
  color: var(--text-dim);
}

.proposal-card-meta dd {
  color: var(--text-muted);
  text-align: right;
}

.proposal-card-action {
  margin-top: 14px;
  color: var(--white);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.03em;
}

.proposal-standard {
  border-top: 1px solid var(--proposal-line);
  padding: 96px 0 120px;
}

.proposal-standard-grid,
.proposal-position-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.88fr) minmax(0, 1.12fr);
  gap: 76px;
}

.proposal-standard-copy p,
.proposal-position-copy p {
  margin-bottom: 20px;
  color: var(--text-muted);
  font-size: 1.02rem;
  line-height: 1.75;
}

/* One Boise canonical reader */
.one-boise-hero {
  padding: 118px 0 82px;
  border-bottom: 1px solid var(--proposal-line);
}

.proposal-backlink {
  display: inline-block;
  margin-bottom: 50px;
  border-bottom: 0;
  color: var(--text-dim);
  font-size: 0.74rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.one-boise-hero h1 {
  max-width: 1000px;
  margin-top: 17px;
  color: var(--bright);
  font-size: clamp(4rem, 12vw, 9.75rem);
  font-weight: 500;
  letter-spacing: -0.075em;
  line-height: 0.84;
}

.one-boise-deck {
  margin-top: 31px;
  color: var(--white);
  font-size: clamp(1.4rem, 3.4vw, 2.55rem);
  font-weight: 400;
  letter-spacing: -0.04em;
  line-height: 1.12;
}

.one-boise-summary {
  max-width: 770px;
  margin-top: 24px;
  color: var(--text-muted);
  font-size: clamp(1.05rem, 2vw, 1.25rem);
  line-height: 1.65;
}

.proposal-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 58px;
  border-top: 1px solid var(--proposal-line);
  border-bottom: 1px solid var(--proposal-line);
}

.proposal-meta div {
  min-height: 76px;
  padding: 17px 20px;
  border-left: 1px solid var(--proposal-line);
}

.proposal-meta div:first-child {
  border-left: 0;
}

.proposal-meta span,
.proposal-meta strong {
  display: block;
}

.proposal-meta span {
  color: var(--text-dim);
  font-size: 0.63rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.proposal-meta strong {
  margin-top: 5px;
  color: var(--white);
  font-size: 0.76rem;
  font-weight: 500;
}

.proposal-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 26px;
}

.proposal-action,
.proposal-reset {
  min-height: 44px;
  border: 1px solid var(--proposal-line-strong);
  border-radius: 0;
  padding: 9px 15px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  font: inherit;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  transition: border-color 160ms ease, color 160ms ease, background 160ms ease;
}

.proposal-action:hover,
.proposal-action:focus-visible,
.proposal-reset:hover,
.proposal-reset:focus-visible {
  border-color: var(--white);
  background: #1b1b1b;
  color: var(--bright);
}

.proposal-action:focus-visible,
.proposal-reset:focus-visible,
.explainer button:focus-visible,
.risk-register summary:focus-visible,
.proposal-evidence summary:focus-visible {
  outline: 2px solid var(--white);
  outline-offset: 3px;
}

.representation-control input:focus-visible,
.dividend-row input:focus-visible {
  outline: 2px solid var(--white);
  outline-offset: 4px;
}

.proposal-action-status {
  min-width: 110px;
  color: var(--text-dim);
  font-size: 0.7rem;
}

.proposal-position {
  padding: 92px 0 112px;
  border-bottom: 1px solid var(--proposal-line);
}

.proposal-position h2 {
  margin-top: 10px;
  color: var(--white);
  font-size: clamp(2rem, 5vw, 3.8rem);
  font-weight: 500;
  letter-spacing: -0.05em;
  line-height: 1.05;
}

.proposal-commitments {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-top: 62px;
  border-top: 1px solid var(--proposal-line);
  border-bottom: 1px solid var(--proposal-line);
}

.proposal-commitments article {
  min-height: 208px;
  padding: 21px;
  border-left: 1px solid var(--proposal-line);
}

.proposal-commitments article:first-child {
  border-left: 0;
}

.proposal-commitments span {
  color: var(--text-dim);
  font-size: 0.66rem;
}

.proposal-commitments h3 {
  margin-top: 35px;
  color: var(--white);
  font-size: 1rem;
  font-weight: 500;
}

.proposal-commitments p {
  margin-top: 10px;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.58;
}

.proposal-mobile-toc-toggle,
.proposal-mobile-toc {
  max-width: 720px;
  margin-right: auto;
  margin-left: auto;
}

.proposal-mobile-toc-toggle {
  margin-top: 44px;
}

.proposal-mobile-toc > ol > li > a {
  font-size: 0.78rem;
}

.proposal-reader-layout {
  display: grid;
  grid-template-columns: 205px minmax(0, 720px);
  justify-content: center;
  gap: 68px;
  padding-top: 84px;
  padding-bottom: 130px;
}

.proposal-toc {
  position: sticky;
  top: 88px;
  align-self: start;
  max-height: calc(100vh - 112px);
  overflow: auto;
  padding-right: 16px;
}

.proposal-toc > p {
  margin-bottom: 16px;
  color: var(--white);
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.proposal-toc ol {
  list-style: none;
}

.proposal-toc li {
  border-top: 1px solid var(--proposal-line);
}

.proposal-toc a {
  display: block;
  border-bottom: 0;
  padding: 8px 2px;
  color: var(--text-dim);
  font-size: 0.68rem;
  line-height: 1.35;
}

.proposal-toc a:hover,
.proposal-toc a.active,
.proposal-toc a[aria-current="location"] {
  color: var(--white);
}

.proposal-toc-download {
  margin-top: 17px;
  border: 1px solid var(--proposal-line-strong) !important;
  padding: 9px 10px !important;
  text-align: center;
  text-transform: uppercase;
}

.proposal-content {
  min-width: 0;
}

.proposal-reading-key {
  border: 1px solid var(--proposal-line);
  padding: 25px;
  background: var(--proposal-panel-soft);
}

.proposal-reading-key h2 {
  color: var(--white);
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.proposal-reading-key ul {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px 20px;
  margin-top: 19px;
  list-style: none;
}

.proposal-reading-key li {
  color: var(--text-muted);
  font-size: 0.75rem;
  line-height: 1.45;
}

.claim-label {
  display: inline-block;
  margin-right: 8px;
  border: 1px solid var(--proposal-line-strong);
  padding: 2px 7px 1px;
  color: var(--proposal-fact);
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 1.5;
  text-transform: uppercase;
  vertical-align: 0.14em;
}

.claim-label--proposal { color: var(--proposal-policy); border-color: #524f45; }
.claim-label--model { color: var(--proposal-model); border-color: #444c56; }
.claim-label--proof { color: var(--proposal-unknown); border-color: #594747; }

.proposal-chapter {
  padding-top: 90px;
}

.proposal-chapter > h2 {
  margin-top: 13px;
  color: var(--bright);
  font-size: clamp(2rem, 5vw, 3.15rem);
  font-weight: 500;
  letter-spacing: -0.047em;
  line-height: 1.07;
}

.proposal-chapter-lede {
  margin: 27px 0 31px;
  color: var(--white) !important;
  font-size: 1.16rem !important;
  line-height: 1.62 !important;
}

.proposal-chapter > p,
.proposal-position-copy p,
.proposal-standard-copy p {
  hanging-punctuation: first allow-end last;
}

.proposal-chapter > p {
  margin: 0 0 22px;
  color: var(--text);
  font-size: 1rem;
  line-height: 1.82;
}

.proposal-plain-summary,
.proposal-callout,
.proposal-commitment-box {
  margin-top: 34px;
  border: 1px solid var(--proposal-line);
  padding: 25px 27px;
  background: var(--proposal-panel-soft);
}

.proposal-plain-summary h3,
.proposal-callout h3 {
  color: var(--white);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.proposal-plain-summary p,
.proposal-callout p {
  margin-top: 11px;
  color: var(--text-muted);
  font-size: 0.86rem;
  line-height: 1.7;
}

.proposal-callout--warning {
  border-left: 3px solid #6a5050;
}

.proposal-commitment-box > p {
  margin-bottom: 16px;
}

.proposal-commitment-box ul {
  padding-left: 19px;
}

.proposal-commitment-box li {
  margin-top: 9px;
  color: var(--text-muted);
  font-size: 0.86rem;
  line-height: 1.55;
}

.proposal-static-map {
  margin: 38px 0 0;
  border: 1px solid var(--proposal-line-strong);
  background: #fff;
}

.proposal-static-map a:first-child {
  display: block;
  border-bottom: 0;
}

.proposal-static-map img {
  display: block;
  width: 100%;
  height: auto;
}

.proposal-static-map figcaption {
  padding: 15px 18px;
  border-top: 1px solid #cbd3da;
  color: #384652;
  font-size: 0.75rem;
  line-height: 1.55;
}

.proposal-static-map figcaption a {
  color: #203748;
  border-bottom-color: #7d8b96;
}

/* Native explainers */
.explainer {
  margin: 47px 0 0;
  border: 1px solid var(--proposal-line-strong);
  background: rgba(13, 13, 13, 0.95);
}

.explainer > figcaption {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: 32px;
  padding: 23px 25px;
  border-bottom: 1px solid var(--proposal-line);
}

.explainer figcaption h3 {
  margin-top: 7px;
  color: var(--bright);
  font-size: 1.05rem;
  font-weight: 500;
  line-height: 1.3;
}

.explainer figcaption > p {
  align-self: end;
  color: var(--text-muted);
  font-size: 0.75rem;
  line-height: 1.55;
}

.explainer-controls,
.scenario-controls,
.timeline-controls {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  border-bottom: 1px solid var(--proposal-line);
}

.explainer-controls button,
.scenario-controls button,
.timeline-controls button,
.department-list button,
.operating-nav button,
.legal-route button {
  min-height: 46px;
  border: 0;
  border-right: 1px solid var(--proposal-line);
  border-radius: 0;
  padding: 10px 12px;
  background: #111;
  color: var(--text-dim);
  cursor: pointer;
  font: inherit;
  font-size: 0.69rem;
  line-height: 1.25;
  transition: background 140ms ease, color 140ms ease;
}

.explainer-controls button:last-child,
.scenario-controls button:last-child,
.timeline-controls button:last-child {
  border-right: 0;
}

.explainer-controls button:hover,
.explainer-controls button.is-active,
.explainer-controls button[aria-pressed="true"],
.scenario-controls button[aria-selected="true"],
.timeline-controls button[aria-selected="true"],
.department-list button[aria-pressed="true"],
.operating-nav button[aria-pressed="true"],
.legal-route button[aria-current="step"] {
  background: #202020;
  color: var(--white);
}

.map-stage {
  position: relative;
  display: grid;
  min-height: 430px;
  overflow: hidden;
  place-items: center;
  background-color: #0d0d0d;
  background-image: linear-gradient(#181818 1px, transparent 1px), linear-gradient(90deg, #181818 1px, transparent 1px);
  background-size: 46px 46px;
}

.map-stage svg {
  width: 100%;
  height: 430px;
}

.map-boundary {
  stroke-linejoin: round;
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
  transition: fill 220ms ease, opacity 220ms ease, stroke 220ms ease;
}

.map-boundary--boise {
  fill: rgba(255, 255, 255, 0.035);
  stroke: #777;
}

.map-boundary--garden-city {
  fill: rgba(255, 255, 255, 0.13);
  stroke: #f0f0f0;
}

.map-stage[data-view="unified"] .map-boundary {
  fill: rgba(255, 255, 255, 0.085);
  stroke: #d0d0d0;
}

.map-concept-district {
  fill: rgba(196, 189, 167, 0.09);
  stroke: #c4bda7;
  stroke-dasharray: 7 6;
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}

.map-river {
  fill: none;
  stroke: #657582;
  stroke-linecap: round;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

.map-label {
  fill: #c9c9c9;
  font-family: Inter, sans-serif;
  font-size: 12px;
  paint-order: stroke;
  stroke: #0d0d0d;
  stroke-width: 4px;
  stroke-linejoin: round;
}

.map-disclaimer {
  fill: #777;
  font-family: Inter, sans-serif;
  font-size: 9px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.explainer-loading {
  color: var(--text-dim);
  font-size: 0.74rem;
}

.explainer-legend {
  display: flex;
  min-height: 47px;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 22px;
  padding: 11px 20px;
  border-top: 1px solid var(--proposal-line);
  color: var(--text-dim);
  font-size: 0.66rem;
}

.legend-key::before {
  display: inline-block;
  width: 17px;
  height: 8px;
  margin-right: 7px;
  border: 1px solid #777;
  content: '';
}

.legend-key--garden::before { border-color: #eee; background: #3a3a3a; }
.legend-key--district::before { border-color: #c4bda7; border-style: dashed; }
.legend-key--river::before { height: 0; border: 0; border-top: 2px solid #657582; }

.proposal-evidence {
  border-top: 1px solid var(--proposal-line);
}

.proposal-evidence summary {
  padding: 14px 20px;
  color: var(--text-muted);
  cursor: pointer;
  font-size: 0.7rem;
  letter-spacing: 0.04em;
}

.proposal-evidence[open] summary {
  border-bottom: 1px solid var(--proposal-line);
  color: var(--white);
}

.proposal-evidence-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--proposal-line);
}

.proposal-evidence-grid > div {
  min-width: 0;
  padding: 19px;
  background: #111;
}

.proposal-evidence h4 {
  color: var(--white);
  font-size: 0.64rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.proposal-evidence p {
  margin-top: 8px;
  color: var(--text-dim);
  font-size: 0.67rem;
  line-height: 1.55;
}

.proposal-evidence > .proposal-evidence-updated {
  margin: 13px 20px 0;
}

.proposal-evidence-updated b {
  color: var(--text-muted);
  font-weight: 600;
}

.proposal-evidence > a {
  display: inline-block;
  margin: 14px 0 16px 20px;
  color: var(--text-muted);
  font-size: 0.68rem;
}

.explainer-fallback {
  margin: 20px;
  border: 1px solid var(--proposal-line);
  padding: 18px;
}

.explainer-fallback p,
.explainer-fallback li {
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.6;
}

.explainer-fallback ol {
  padding-left: 20px;
}

/* Legal route */
.legal-route-fallback {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  list-style: none;
}

.legal-route-fallback li {
  position: relative;
  border-right: 1px solid var(--proposal-line);
}

.legal-route-fallback li:last-child { border-right: 0; }

.legal-route-fallback li:not(:last-child)::after {
  position: absolute;
  z-index: 2;
  top: 22px;
  right: -4px;
  width: 7px;
  height: 7px;
  border-top: 1px solid var(--text-dim);
  border-right: 1px solid var(--text-dim);
  content: '';
  transform: rotate(45deg);
}

.legal-route button {
  display: flex;
  width: 100%;
  min-height: 94px;
  flex-direction: column;
  align-items: flex-start;
  border-right: 0;
  text-align: left;
}

.legal-route button b {
  color: var(--text-dim);
  font-size: 0.62rem;
  font-weight: 500;
}

.legal-route button span { margin-top: 11px; }

.legal-step-detail {
  min-height: 142px;
  padding: 23px 25px;
  border-top: 1px solid var(--proposal-line);
}

.legal-step-detail h4 {
  color: var(--white);
  font-size: 0.84rem;
  font-weight: 500;
}

.legal-step-detail p {
  margin-top: 8px;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.62;
}

.legal-step-detail dl {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-top: 16px;
}

.legal-step-detail dt {
  color: var(--text-dim);
  font-size: 0.6rem;
  text-transform: uppercase;
}

.legal-step-detail dd {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.45;
}

/* Population */
.representation-numbers {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-bottom: 1px solid var(--proposal-line);
}

.representation-numbers > div {
  min-height: 90px;
  padding: 18px;
  border-right: 1px solid var(--proposal-line);
}

.representation-numbers > div:nth-child(3n) { border-right: 0; }
.representation-numbers > div:nth-child(n+4) { border-top: 1px solid var(--proposal-line); }

.representation-numbers span,
.representation-numbers strong {
  display: block;
}

.representation-numbers span {
  color: var(--text-dim);
  font-size: 0.62rem;
}

.representation-numbers strong {
  margin-top: 9px;
  color: var(--white);
  font-size: 1.15rem;
  font-weight: 500;
  letter-spacing: -0.03em;
}

.representation-control {
  display: grid;
  grid-template-columns: 140px 1fr;
  align-items: center;
  gap: 18px;
  padding: 22px 20px;
  border-bottom: 1px solid var(--proposal-line);
}

.representation-control span,
.representation-control output {
  color: var(--text-muted);
  font-size: 0.7rem;
}

.representation-control output { text-align: right; }

.representation-control input,
.dividend-row input {
  width: 100%;
  accent-color: #cfcfcf;
}

.representation-bar {
  padding: 25px 20px;
}

.representation-track {
  position: relative;
  height: 58px;
  overflow: hidden;
  border: 1px solid var(--proposal-line-strong);
  background: #111;
}

.representation-garden-fill {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  background: #5b5b5b;
  transition: width 200ms ease;
}

.representation-target-line {
  position: absolute;
  top: 0;
  bottom: 0;
  border-left: 1px dashed #fff;
}

.representation-track-labels {
  display: flex;
  justify-content: space-between;
  margin-top: 8px;
  color: var(--text-dim);
  font-size: 0.62rem;
}

.representation-scenarios {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  border-top: 1px solid var(--proposal-line);
}

.representation-scenarios > div {
  padding: 17px;
  border-right: 1px solid var(--proposal-line);
  border-bottom: 1px solid var(--proposal-line);
}

.representation-scenarios > div:nth-child(even),
.representation-scenarios > div:last-child { border-right: 0; }
.representation-scenarios > div:nth-last-child(-n+2) { border-bottom: 0; }

.representation-scenarios span,
.representation-scenarios b {
  display: block;
}

.representation-scenarios span { color: var(--text-dim); font-size: 0.62rem; }
.representation-scenarios b { margin-top: 7px; color: var(--white); font-size: 0.82rem; font-weight: 500; }
.representation-scenarios small { display: block; margin-top: 5px; color: var(--text-dim); font-size: 0.61rem; line-height: 1.4; }

/* Workforce */
.workforce-stage {
  min-height: 225px;
  padding: 27px;
}

.workforce-stage h4 {
  color: var(--white);
  font-size: 1.1rem;
  font-weight: 500;
}

.workforce-stage > p {
  max-width: 610px;
  margin-top: 9px;
  color: var(--text-muted);
  font-size: 0.82rem;
  line-height: 1.65;
}

.workforce-gate {
  margin-top: 17px !important;
  border-left: 2px solid var(--proposal-line-strong);
  padding-left: 12px;
  color: var(--text-dim) !important;
  font-size: 0.65rem !important;
  line-height: 1.5 !important;
}

.map-service-node {
  fill: #a8a8a8;
  stroke: #0d0d0d;
  stroke-width: 2;
}

.explainer-error {
  margin: auto;
  padding: 26px;
  color: var(--proposal-unknown);
  font-size: 0.76rem;
  line-height: 1.55;
  text-align: center;
}

.workforce-paths {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  margin-top: 22px;
  background: var(--proposal-line);
}

.workforce-paths > div {
  min-height: 78px;
  padding: 12px;
  background: #131313;
}

.workforce-paths b,
.workforce-paths span { display: block; }
.workforce-paths b { color: var(--white); font-size: 0.68rem; font-weight: 500; }
.workforce-paths span { margin-top: 4px; color: var(--text-dim); font-size: 0.61rem; line-height: 1.4; }

/* Departments */
.department-explorer,
.operating-layer {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr);
  min-height: 430px;
}

.department-list,
.operating-nav {
  overflow: auto;
  border-right: 1px solid var(--proposal-line);
  background: #111;
}

.department-list button,
.operating-nav button {
  width: 100%;
  border-right: 0;
  border-bottom: 1px solid var(--proposal-line);
  text-align: left;
}

.department-detail,
.operating-screen {
  padding: 29px;
}

.department-state {
  color: var(--text-dim);
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.department-detail h4,
.operating-screen h4 {
  margin-top: 12px;
  color: var(--bright);
  font-size: 1.32rem;
  font-weight: 500;
  letter-spacing: -0.025em;
}

.department-detail > p:not(.department-state) {
  margin-top: 12px;
  color: var(--text-muted);
  font-size: 0.8rem;
  line-height: 1.65;
}

.department-detail dl {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  margin-top: 23px;
  background: var(--proposal-line);
}

.department-detail dl > div {
  min-height: 92px;
  padding: 14px;
  background: #111;
}

.department-detail dt {
  color: var(--text-dim);
  font-size: 0.59rem;
  text-transform: uppercase;
}

.department-detail dd {
  margin-top: 6px;
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.45;
}

.responsive-table {
  margin-top: 35px;
  overflow-x: auto;
  border: 1px solid var(--proposal-line);
}

.responsive-table table {
  width: 100%;
  min-width: 650px;
  border-collapse: collapse;
}

.responsive-table caption {
  padding: 12px 15px;
  border-bottom: 1px solid var(--proposal-line);
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.45;
  text-align: left;
}

.responsive-table th,
.responsive-table td {
  border-right: 1px solid var(--proposal-line);
  border-bottom: 1px solid var(--proposal-line);
  padding: 13px 15px;
  color: var(--text-muted);
  font-size: 0.7rem;
  line-height: 1.5;
  text-align: left;
  vertical-align: top;
}

.responsive-table thead th {
  background: #171717;
  color: var(--white);
  font-size: 0.61rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.responsive-table tbody th {
  width: 22%;
  color: var(--white);
  font-weight: 500;
}

/* Fiscal */
.fiscal-headline {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-bottom: 1px solid var(--proposal-line);
}

.fiscal-headline > div {
  min-height: 94px;
  padding: 17px;
  border-right: 1px solid var(--proposal-line);
}

.fiscal-headline > div:last-child { border-right: 0; }
.fiscal-headline span,
.fiscal-headline strong { display: block; }
.fiscal-headline span { color: var(--text-dim); font-size: 0.61rem; }
.fiscal-headline strong { margin-top: 9px; color: var(--white); font-size: 1.05rem; font-weight: 500; letter-spacing: -0.03em; }

.fiscal-waterfall {
  display: grid;
  gap: 12px;
  min-height: 280px;
  padding: 25px 20px;
}

.waterfall-row {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) 95px;
  align-items: center;
  gap: 13px;
}

.waterfall-row > span,
.waterfall-row > strong {
  color: var(--text-muted);
  font-size: 0.66rem;
  font-weight: 400;
}

.waterfall-row > strong {
  color: var(--white);
  text-align: right;
}

.waterfall-track {
  position: relative;
  height: 16px;
  background: #181818;
}

.waterfall-fill {
  height: 100%;
  min-width: 1px;
  background: #696969;
  transition: width 230ms ease;
}

.waterfall-row--cost .waterfall-fill { background: #604e4e; }
.waterfall-row--net .waterfall-fill { background: #a6a6a6; }

.fiscal-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--proposal-line);
  border-bottom: 1px solid var(--proposal-line);
}

.fiscal-metrics > div {
  min-height: 94px;
  padding: 17px;
  border-right: 1px solid var(--proposal-line);
}

.fiscal-metrics > div:nth-child(3n) { border-right: 0; }
.fiscal-metrics > div:nth-child(n+4) { border-top: 1px solid var(--proposal-line); }
.fiscal-metrics span,
.fiscal-metrics strong,
.fiscal-metrics small { display: block; }
.fiscal-metrics span { color: var(--text-dim); font-size: 0.61rem; }
.fiscal-metrics strong { margin-top: 7px; color: var(--white); font-size: 0.93rem; font-weight: 500; }
.fiscal-metrics small { margin-top: 4px; color: var(--text-dim); font-size: 0.58rem; }

.fiscal-assumptions {
  padding: 20px;
}

.fiscal-assumptions h4 {
  color: var(--white);
  font-size: 0.68rem;
  font-weight: 500;
}

.fiscal-assumptions ul {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px 24px;
  margin-top: 11px;
  padding-left: 17px;
}

.fiscal-assumptions li {
  color: var(--text-dim);
  font-size: 0.64rem;
  line-height: 1.45;
}

.dividend-total {
  padding: 22px 25px;
  border-bottom: 1px solid var(--proposal-line);
}

.dividend-total span,
.dividend-total strong,
.dividend-total small { display: block; }
.dividend-total span { color: var(--text-dim); font-size: 0.64rem; }
.dividend-total strong { margin-top: 5px; color: var(--bright); font-size: 2rem; font-weight: 500; letter-spacing: -0.045em; }
.dividend-total small { margin-top: 4px; color: var(--text-dim); font-size: 0.6rem; }

.dividend-controls { padding: 12px 22px; }

.dividend-row {
  display: grid;
  grid-template-columns: minmax(170px, 1fr) minmax(100px, 1.1fr) 48px;
  align-items: center;
  gap: 15px;
  min-height: 52px;
  border-bottom: 1px solid var(--proposal-line);
}

.dividend-row label,
.dividend-row output { color: var(--text-muted); font-size: 0.68rem; }
.dividend-row output { color: var(--white); text-align: right; }

.dividend-check {
  padding: 11px 22px;
  border-top: 1px solid var(--proposal-line);
  border-bottom: 1px solid var(--proposal-line);
  color: var(--text-muted);
  font-size: 0.67rem;
  text-align: right;
}

.dividend-check.is-invalid { color: var(--proposal-unknown); }

.dividend-output {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  min-height: 95px;
}

.dividend-output > div {
  padding: 15px 10px;
  border-right: 1px solid var(--proposal-line);
}

.dividend-output > div:last-child { border-right: 0; }
.dividend-output b,
.dividend-output span { display: block; }
.dividend-output b { color: var(--white); font-size: 0.7rem; font-weight: 500; }
.dividend-output span { margin-top: 5px; color: var(--text-dim); font-size: 0.57rem; line-height: 1.35; }
.proposal-reset { margin: 0 0 20px 22px; }

/* Land use, coordination, implementation, risk */
.transition-overlay {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 36px;
  border: 1px solid var(--proposal-line);
}

.transition-overlay > div {
  min-height: 190px;
  padding: 20px;
  border-right: 1px solid var(--proposal-line);
}

.transition-overlay > div:last-child { border-right: 0; }
.transition-overlay span,
.transition-overlay b { display: block; }
.transition-overlay span { color: var(--text-dim); font-size: 0.62rem; text-transform: uppercase; }
.transition-overlay b { margin-top: 30px; color: var(--white); font-size: 1rem; font-weight: 500; }
.transition-overlay p { margin-top: 9px; color: var(--text-muted); font-size: 0.72rem; line-height: 1.5; }

.coordination-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  margin: 35px 0;
  border: 1px solid var(--proposal-line);
  background: var(--proposal-line);
}

.coordination-grid article {
  min-height: 170px;
  padding: 22px;
  background: #111;
}

.coordination-grid h3 {
  color: var(--white);
  font-size: 0.86rem;
  font-weight: 500;
}

.coordination-grid p {
  margin-top: 10px;
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.58;
}

/* Operating layer */
.operating-screen-top {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--proposal-line);
  color: var(--text-dim);
  font-size: 0.61rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.operating-screen ol {
  margin-top: 22px;
  list-style: none;
}

.operating-screen li {
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr);
  gap: 14px;
  padding: 12px 0;
  border-top: 1px solid var(--proposal-line);
}

.operating-screen li b {
  color: var(--white);
  font-size: 0.68rem;
  font-weight: 500;
}

.operating-screen li span {
  color: var(--text-muted);
  font-size: 0.67rem;
  line-height: 1.45;
}

.implementation-gates {
  margin-top: 35px;
  border-top: 1px solid var(--proposal-line);
  list-style: none;
}

.implementation-gates li {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr);
  gap: 24px;
  padding: 22px 0;
  border-bottom: 1px solid var(--proposal-line);
}

.implementation-gates > li > span {
  color: var(--text-dim);
  font-size: 0.64rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.implementation-gates h3 {
  color: var(--white);
  font-size: 0.9rem;
  font-weight: 500;
}

.implementation-gates p {
  margin-top: 6px;
  color: var(--text-muted);
  font-size: 0.74rem;
  line-height: 1.55;
}

.risk-register {
  margin-top: 36px;
  border-top: 1px solid var(--proposal-line);
}

.risk-register details {
  border-bottom: 1px solid var(--proposal-line);
}

.risk-register summary {
  padding: 16px 2px;
  color: var(--white);
  cursor: pointer;
  font-size: 0.82rem;
}

.risk-register p {
  max-width: 650px;
  padding: 0 0 19px 24px;
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.65;
}

/* Method and CTA */
.method-links {
  margin-top: 34px;
  border-top: 1px solid var(--proposal-line);
}

.method-links a {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 20px;
  border-bottom: 1px solid var(--proposal-line);
  padding: 16px 2px;
  text-decoration: none;
}

.method-links a:hover span { color: var(--bright); }
.method-links span { color: var(--white); font-size: 0.76rem; }
.method-links small { color: var(--text-dim); font-size: 0.66rem; line-height: 1.45; }

.proposal-method > h3 {
  margin-top: 47px;
  color: var(--white);
  font-size: 1rem;
  font-weight: 500;
}

.source-notes {
  margin-top: 19px;
  padding-left: 23px;
}

.source-notes li {
  margin-top: 13px;
  padding-left: 7px;
  color: var(--text-muted);
  font-size: 0.74rem;
  line-height: 1.65;
}

.proposal-version-note {
  margin-top: 35px !important;
  border-left: 2px solid var(--proposal-line-strong);
  padding-left: 19px;
  color: var(--text-muted) !important;
  font-size: 0.75rem !important;
}

.proposal-cta {
  margin-top: 100px;
  border: 1px solid var(--proposal-line-strong);
  padding: clamp(30px, 6vw, 55px);
  background: var(--proposal-panel);
}

.proposal-cta h2 {
  max-width: 620px;
  margin-top: 13px;
  color: var(--bright);
  font-size: clamp(2rem, 5vw, 3.35rem);
  font-weight: 500;
  letter-spacing: -0.05em;
  line-height: 1.05;
}

.proposal-cta > p:not(.proposal-eyebrow):not(.proposal-cta-note) {
  margin: 26px 0;
  color: var(--text-muted);
  font-size: 0.93rem;
  line-height: 1.72;
}

.proposal-cta-note {
  margin-top: 15px;
  color: var(--text-dim);
  font-size: 0.65rem;
}

@media (max-width: 960px) {
  .proposal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .proposal-reader-layout { grid-template-columns: minmax(0, 720px); }
  .proposal-toc { display: none; }
  .proposal-mobile-toc-toggle { display: block; }
  .proposal-standard-grid,
  .proposal-position-grid { gap: 42px; }
  .proposal-evidence-grid { grid-template-columns: 1fr; }
  .proposal-evidence-grid > div { border-bottom: 1px solid var(--proposal-line); }
}

@media (max-width: 720px) {
  .proposal-index-hero { padding: 100px 0 62px; }
  .proposal-method-strip { grid-template-columns: repeat(2, 1fr); }
  .proposal-method-strip span:nth-child(odd) { border-left: 0; }
  .proposal-method-strip span:nth-child(n+3) { border-top: 1px solid var(--proposal-line); }
  .proposal-standard-grid,
  .proposal-position-grid { grid-template-columns: 1fr; gap: 26px; }
  .proposal-commitments { grid-template-columns: repeat(2, 1fr); }
  .proposal-commitments article:nth-child(odd) { border-left: 0; }
  .proposal-commitments article:nth-child(n+3) { border-top: 1px solid var(--proposal-line); }
  .proposal-meta { grid-template-columns: repeat(2, 1fr); }
  .proposal-meta div:nth-child(odd) { border-left: 0; }
  .proposal-meta div:nth-child(n+3) { border-top: 1px solid var(--proposal-line); }
  .proposal-reader-layout { padding-top: 54px; }
  .proposal-reading-key ul { grid-template-columns: 1fr; }
  .explainer > figcaption { grid-template-columns: 1fr; gap: 10px; }
  .explainer-controls,
  .scenario-controls { grid-auto-flow: row; grid-template-columns: repeat(2, 1fr); }
  .explainer-controls button,
  .scenario-controls button { border-bottom: 1px solid var(--proposal-line); }
  .scenario-controls button:last-child { grid-column: 1 / -1; }
  .legal-route-fallback { grid-template-columns: 1fr; }
  .legal-route-fallback li { border-right: 0; border-bottom: 1px solid var(--proposal-line); }
  .legal-route-fallback li:not(:last-child)::after { display: none; }
  .legal-route button { min-height: 62px; flex-direction: row; gap: 12px; align-items: center; }
  .legal-route button span { margin-top: 0; }
  .representation-numbers { grid-template-columns: repeat(2, 1fr); }
  .representation-numbers > div:nth-child(3n) { border-right: 1px solid var(--proposal-line); }
  .representation-numbers > div:nth-child(even) { border-right: 0; }
  .representation-numbers > div:nth-child(n+3) { border-top: 1px solid var(--proposal-line); }
  .representation-control { grid-template-columns: 1fr; }
  .representation-control output { text-align: left; }
  .representation-scenarios { grid-template-columns: 1fr; }
  .representation-scenarios > div { border-right: 0; border-bottom: 1px solid var(--proposal-line); }
  .workforce-paths { grid-template-columns: 1fr; }
  .department-explorer,
  .operating-layer { grid-template-columns: 1fr; }
  .department-list,
  .operating-nav { display: grid; grid-template-columns: repeat(2, 1fr); max-height: none; border-right: 0; border-bottom: 1px solid var(--proposal-line); }
  .department-list button,
  .operating-nav button { border-right: 1px solid var(--proposal-line); }
  .fiscal-headline { grid-template-columns: repeat(2, 1fr); }
  .fiscal-headline > div:nth-child(even) { border-right: 0; }
  .fiscal-headline > div:nth-child(n+3) { border-top: 1px solid var(--proposal-line); }
  .waterfall-row { grid-template-columns: 115px minmax(0, 1fr) 78px; }
  .fiscal-assumptions ul { grid-template-columns: 1fr; }
  .dividend-output { grid-template-columns: 1fr; }
  .dividend-output > div { border-right: 0; border-bottom: 1px solid var(--proposal-line); }
  .transition-overlay { grid-template-columns: 1fr; }
  .transition-overlay > div { min-height: 0; border-right: 0; border-bottom: 1px solid var(--proposal-line); }
  .transition-overlay b { margin-top: 15px; }
}

@media (max-width: 560px) {
  .proposal-grid { grid-template-columns: 1fr; }
  /* Justified across a narrow card these two labels each wrap and interleave,
     so they stack instead. */
  .proposal-card-topline { flex-direction: column; gap: 3px; }
  .proposal-status { text-align: left; }
  .proposal-catalog-heading { align-items: start; flex-direction: column; gap: 10px; }
  .one-boise-hero { padding: 92px 0 62px; }
  .proposal-backlink { margin-bottom: 35px; }
  .proposal-meta { grid-template-columns: 1fr; }
  .proposal-meta div,
  .proposal-meta div:nth-child(odd) { min-height: 66px; border-top: 1px solid var(--proposal-line); border-left: 0; }
  .proposal-meta div:first-child { border-top: 0; }
  .proposal-commitments { grid-template-columns: 1fr; }
  .proposal-commitments article,
  .proposal-commitments article:nth-child(odd) { min-height: 0; border-top: 1px solid var(--proposal-line); border-left: 0; }
  .proposal-commitments article:first-child { border-top: 0; }
  .proposal-commitments h3 { margin-top: 15px; }
  .proposal-reader-layout { padding-right: 20px; padding-left: 20px; }
  .proposal-chapter { padding-top: 72px; }
  .explainer { margin-right: -10px; margin-left: -10px; }
  .map-stage { min-height: 330px; }
  .map-stage svg { height: 330px; }
  .timeline-controls { grid-auto-flow: row; grid-template-columns: repeat(2, 1fr); }
  .legal-step-detail dl { grid-template-columns: 1fr; }
  .fiscal-metrics { grid-template-columns: 1fr; }
  .fiscal-metrics > div { border-right: 0; border-bottom: 1px solid var(--proposal-line); }
  .waterfall-row { grid-template-columns: 1fr 68px; gap: 6px 10px; }
  .waterfall-track { grid-column: 1 / -1; grid-row: 2; }
  .dividend-row { grid-template-columns: 1fr 44px; gap: 5px 10px; padding: 8px 0; }
  .dividend-row input { grid-column: 1 / -1; grid-row: 2; }
  .coordination-grid { grid-template-columns: 1fr; }
  .operating-screen li { grid-template-columns: 1fr; gap: 4px; }
  .implementation-gates li { grid-template-columns: 1fr; gap: 7px; }
  .method-links a { grid-template-columns: 1fr; gap: 5px; }
}

@media (prefers-reduced-motion: reduce) {
  .proposal-card-link,
  .proposal-action,
  .proposal-reset,
  .explainer button,
  .map-boundary,
  .representation-garden-fill,
  .waterfall-fill { transition: none; }
}

@media print {
  @page { size: letter; margin: 0.65in; }
  body { background: #fff !important; color: #111 !important; font-size: 10pt; }
  #bg-canvas,
  #progress-bar,
  .site-nav,
  .site-footer,
  .proposal-actions,
  .proposal-mobile-toc-toggle,
  .proposal-mobile-toc,
  .proposal-toc,
  .explainer-controls,
  .scenario-controls,
  .timeline-controls,
  .proposal-reset,
  .proposal-cta { display: none !important; }
  .one-boise-hero,
  .proposal-position,
  .proposal-reader-layout { padding: 0 0 24pt; border-color: #bbb; }
  .proposal-reader-layout { display: block; }
  .one-boise-hero h1,
  .one-boise-deck,
  .proposal-position h2,
  .proposal-chapter > h2,
  .proposal-chapter-lede,
  .proposal-chapter > p,
  .proposal-reading-key h2,
  .explainer figcaption h3,
  .proposal-meta strong,
  .proposal-commitments h3,
  .proposal-evidence h4,
  .responsive-table th,
  .department-detail h4,
  .operating-screen h4 { color: #111 !important; }
  .one-boise-summary,
  .proposal-position-copy p,
  .proposal-chapter > p,
  .proposal-chapter-lede,
  .proposal-reading-key li,
  .explainer figcaption > p,
  .proposal-evidence p,
  .responsive-table td,
  .proposal-callout p,
  .proposal-plain-summary p { color: #222 !important; }
  .proposal-meta,
  .proposal-commitments,
  .proposal-reading-key,
  .explainer,
  .proposal-evidence,
  .responsive-table,
  .proposal-callout,
  .proposal-plain-summary,
  .proposal-commitment-box,
  .proposal-static-map,
  .transition-overlay,
  .coordination-grid { border-color: #999 !important; background: #fff !important; }
  .proposal-chapter { padding-top: 32pt; break-before: auto; }
  .proposal-chapter > h2 { break-after: avoid; }
  .explainer,
  .responsive-table,
  .proposal-callout,
  .proposal-plain-summary,
  .proposal-static-map,
  .transition-overlay { break-inside: avoid; }
  .proposal-evidence { display: block; }
  .proposal-evidence summary { display: none; }
  .proposal-evidence > *:not(summary) { display: block !important; }
  .proposal-evidence-grid { display: grid !important; grid-template-columns: 1fr; background: #fff; }
  .proposal-evidence-grid > div,
  .department-list,
  .operating-nav,
  .responsive-table thead th,
  .coordination-grid article { background: #fff !important; }
  a { color: #111 !important; border-bottom-color: #555; }
  a[href]::after { content: none; }
}

/* ===== Treasure Valley Light Rail ===== */

/* The corridor is 81 miles wide and needs room, but a negative-margin breakout
 * drags the figure straight across the sticky table of contents. So the TVLR
 * page widens its own reading grid instead and the map simply fills the column:
 * no overlap is possible because nothing is ever pulled out of its track.
 * Prose keeps a 760px measure so the wider grid does not wreck the line length. */
.tvlr-page .proposal-reader-layout {
  grid-template-columns: 205px minmax(0, 1fr);
  max-width: 1400px;
}

.tvlr-page .proposal-content > .proposal-chapter > *:not(.explainer--wide),
.tvlr-page .proposal-content > .proposal-reading-key,
.tvlr-page .proposal-content > .proposal-cta {
  max-width: 760px;
}

.explainer--wide {
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}

.tvlr-controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  border-bottom: 1px solid var(--proposal-line);
}

.tvlr-controls .explainer-controls {
  border-bottom: 0;
}

.tvlr-controls .explainer-controls--lens {
  border-left: 1px solid var(--proposal-line-strong);
}

/* A fixed row height keeps the 21-station side list from stretching the map
 * stage to the full height of the page; the list scrolls inside instead. */
.tvlr-map-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 268px;
  height: 580px;
}

.tvlr-map-stage {
  position: relative;
  display: block;
  height: 100%;
  min-height: 0;
  padding: 0;
  overflow: hidden;
  place-items: stretch;
}

.tvlr-map-canvas {
  display: block;
  width: 100%;
  height: 100%;
  cursor: grab;
  touch-action: none;
}

.tvlr-map-canvas.is-dragging {
  cursor: grabbing;
}

.tvlr-map-markers {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

.tvlr-map-marker {
  position: absolute;
  display: flex;
  flex-direction: column;
  align-items: center;
  transform: translate(-50%, -100%);
  text-align: center;
  text-shadow: 0 1px 3px #0c0c0c, 0 0 8px #0c0c0c;
  transition: opacity 160ms ease;
  white-space: nowrap;
}

.tvlr-map-marker b {
  color: var(--bright);
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.1;
}

.tvlr-map-marker i {
  color: var(--text-dim);
  font-size: 0.56rem;
  font-style: normal;
  letter-spacing: 0.09em;
  line-height: 1.5;
  text-transform: uppercase;
}

.tvlr-map-marker.is-dim { opacity: 0.34; }
.tvlr-map-marker.is-active b { color: #fff; }

.tvlr-map-zoom {
  position: absolute;
  top: 12px;
  right: 12px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.tvlr-map-zoom button {
  min-width: 34px;
  min-height: 34px;
  border: 1px solid var(--proposal-line-strong);
  padding: 0 8px;
  background: rgba(12, 12, 12, 0.9);
  color: var(--white);
  cursor: pointer;
  font: inherit;
  font-size: 0.72rem;
  line-height: 1;
}

.tvlr-map-zoom button:hover {
  border-color: var(--border-hover);
  background: #202020;
}

.tvlr-map-attribution {
  position: absolute;
  bottom: 8px;
  left: 12px;
  max-width: calc(100% - 90px);
  color: var(--text-dim);
  font-size: 0.55rem;
  line-height: 1.4;
  pointer-events: none;
}

.tvlr-map-side {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  border-left: 1px solid var(--proposal-line);
  background: rgba(10, 10, 10, 0.7);
}

.tvlr-station-list {
  flex: 1 1 auto;
  min-height: 0;
}

.tvlr-map-side .explainer-legend {
  display: block;
  flex: 0 0 auto;
  min-height: 0;
  padding: 14px 16px;
  border-top: 0;
  border-bottom: 1px solid var(--proposal-line);
}

.tvlr-map-side .legend-key {
  display: flex;
  align-items: baseline;
  margin-bottom: 7px;
  line-height: 1.35;
}

.tvlr-map-side .legend-key:last-child { margin-bottom: 0; }

.legend-key--phase1::before { border-color: #e8e8e8; background: #e8e8e8; }
.legend-key--phase2::before { border-color: #9faec0; background: #9faec0; }
.legend-key--phase3::before { border-color: #c4bda7; background: #c4bda7; }
.legend-key--rail::before { height: 0; border: 0; border-top: 2px dashed #6d6055; }
.legend-key--traffic::before { border-color: #c1a2a2; background: #c1a2a2; }
.legend-key--catchment::before { border-color: #9faec0; border-style: dashed; background: rgba(159, 174, 192, 0.22); }
.legend-key--boardings::before { border-color: #ffffff; background: radial-gradient(circle, #ffffff 42%, rgba(255, 255, 255, 0.18) 43%); border-radius: 50%; }
.legend-key--flow::before { border-color: #e0c4c4; background: radial-gradient(circle, #e0c4c4 45%, transparent 46%); border-radius: 50%; }
.legend-key--uplift::before { border-color: #9faec0; background: radial-gradient(circle, rgba(159, 174, 192, 0.85) 40%, rgba(159, 174, 192, 0.22) 41%); border-radius: 50%; }
.legend-key--cost::before { border-color: rgba(196, 189, 167, 0.6); background: rgba(196, 189, 167, 0.25); }

.tvlr-side-title {
  padding: 14px 16px 8px;
  color: var(--text-dim);
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.tvlr-station-list ul {
  margin: 0;
  padding: 0 10px 12px;
  list-style: none;
  overflow-y: auto;
}

.tvlr-station-list button {
  display: block;
  width: 100%;
  border: 1px solid transparent;
  padding: 8px 10px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font: inherit;
  text-align: left;
  transition: background 140ms ease, border-color 140ms ease;
}

.tvlr-station-list button:hover,
.tvlr-station-list button.is-active {
  border-color: var(--proposal-line-strong);
  background: #1a1a1a;
}

.tvlr-station-list b {
  display: block;
  color: var(--white);
  font-size: 0.82rem;
  font-weight: 500;
}

.tvlr-station-list span {
  color: var(--text-dim);
  font-size: 0.63rem;
}

.tvlr-map-inputs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(215px, 1fr));
  gap: 18px 26px;
  padding: 20px 25px;
  border-top: 1px solid var(--proposal-line);
  background: rgba(9, 9, 9, 0.75);
}

.tvlr-input-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 7px;
}

.tvlr-input label {
  color: var(--text-muted);
  font-size: 0.68rem;
}

.tvlr-input output {
  color: var(--bright);
  font-size: 0.86rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.tvlr-input input[type="range"] {
  width: 100%;
  height: 22px;
  margin: 0;
  accent-color: #9faec0;
  cursor: pointer;
}

.tvlr-input small {
  display: block;
  margin-top: 5px;
  color: var(--text-dim);
  font-size: 0.6rem;
  line-height: 1.5;
}

/* What this slider moves on the map, in plain words — brighter than the
   source basis below it, because it is the sentence that makes the control
   legible to someone who has never read a transit model. */
.tvlr-input small.tvlr-input-effect {
  color: var(--text-muted);
  font-size: 0.64rem;
}

.tvlr-input-note {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--text-dim);
  font-size: 0.64rem;
  font-style: italic;
}

/* Choosing which real railway the corridor is measured against is not a
   magnitude, so it is not a slider. It spans the row because its note carries
   the fitted rates and the goodness of fit, which is the evidence for every
   ridership figure in the panel. */
.tvlr-input--choice {
  grid-column: 1 / -1;
}

.tvlr-select {
  width: 100%;
  padding: 7px 9px;
  border: 1px solid var(--proposal-line);
  border-radius: 0;
  background: rgba(0, 0, 0, 0.5);
  color: var(--bright);
  font: inherit;
  font-size: 0.78rem;
  cursor: pointer;
}

.tvlr-select:focus-visible {
  outline: 2px solid #9faec0;
  outline-offset: 2px;
}

.tvlr-map-readout {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(215px, 1fr));
  gap: 20px 26px;
  padding: 22px 25px;
  border-top: 1px solid var(--proposal-line);
}

.tvlr-stat span {
  display: block;
  color: var(--text-dim);
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.tvlr-stat strong {
  display: block;
  margin: 5px 0 4px;
  color: var(--bright);
  font-size: 1.5rem;
  font-weight: 500;
  letter-spacing: -0.035em;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
}

.tvlr-stat small {
  display: block;
  color: var(--text-muted);
  font-size: 0.66rem;
  line-height: 1.5;
}

.tvlr-phase-card,
.tvlr-hub-card {
  grid-column: 1 / -1;
  border-left: 2px solid var(--proposal-line-strong);
  padding-left: 16px;
}

.tvlr-hub-card {
  border-left-color: #e8e8e8;
}

.tvlr-phase-label {
  color: var(--text-dim);
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.tvlr-phase-card h4,
.tvlr-hub-card h4 {
  margin: 6px 0 8px;
  color: var(--bright);
  font-size: 1.1rem;
  font-weight: 500;
  letter-spacing: -0.02em;
}

.tvlr-phase-purpose {
  margin-bottom: 12px;
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.6;
}

.tvlr-phase-meta {
  display: grid;
  grid-template-columns: minmax(0, 0.6fr) minmax(0, 1.4fr);
  gap: 5px 18px;
  margin: 0;
}

.tvlr-phase-meta dt {
  color: var(--text-dim);
  font-size: 0.64rem;
}

.tvlr-phase-meta dd {
  margin: 0;
  color: var(--white);
  font-size: 0.7rem;
  line-height: 1.5;
}

.tvlr-hub-note {
  margin-top: 10px;
  color: var(--text-dim);
  font-size: 0.66rem;
  font-style: italic;
  line-height: 1.5;
}

.tvlr-finding {
  grid-column: 1 / -1;
  border-left: 2px solid var(--proposal-unknown);
  padding: 2px 0 2px 16px;
  color: var(--text-muted);
  font-size: 0.74rem;
  line-height: 1.65;
}

.tvlr-finding b { color: var(--proposal-unknown); }

/* Charts shared by the cost, funding, growth, and measurement explainers */

.tvlr-chart {
  display: grid;
  gap: 15px;
  padding: 24px 25px;
}

.tvlr-bar {
  display: grid;
  grid-template-columns: minmax(0, 200px) minmax(0, 1fr) 82px;
  align-items: center;
  gap: 8px 16px;
}

.tvlr-bar-label {
  color: var(--text-muted);
  font-size: 0.72rem;
  line-height: 1.4;
}

.tvlr-bar-track {
  height: 11px;
  background: #171717;
}

.tvlr-bar-fill {
  height: 100%;
  background: #6e7a86;
}

.tvlr-bar.is-reference .tvlr-bar-fill { background: #9faec0; }
.tvlr-bar.is-flagged .tvlr-bar-fill { background: #7d5c5c; }

.tvlr-bar-value {
  color: var(--bright);
  font-size: 0.82rem;
  font-weight: 600;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.tvlr-bar-flag {
  grid-column: 2 / -1;
  color: var(--proposal-unknown);
  font-size: 0.63rem;
  line-height: 1.5;
}

.tvlr-cost-band,
.tvlr-allocation {
  margin-top: 6px;
  border-top: 1px solid var(--proposal-line);
  padding-top: 18px;
}

.tvlr-cost-band p {
  margin-bottom: 10px;
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.65;
}

.tvlr-split {
  display: grid;
  gap: 16px;
}

.tvlr-split-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 6px;
}

.tvlr-split-head span {
  color: var(--white);
  font-size: 0.76rem;
}

.tvlr-split-head b {
  color: var(--bright);
  font-size: 0.82rem;
  font-weight: 600;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.tvlr-split-row small,
.tvlr-allocation li small {
  display: block;
  margin-top: 5px;
  color: var(--text-dim);
  font-size: 0.64rem;
  line-height: 1.55;
}

.tvlr-allocation ol {
  display: grid;
  gap: 14px;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}

.tvlr-check-list {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr);
  gap: 0;
  margin: 0;
}

.tvlr-check-list dt,
.tvlr-check-list dd {
  padding: 10px 0;
  border-bottom: 1px solid var(--proposal-line);
}

.tvlr-check-list dt {
  color: var(--text-muted);
  font-size: 0.74rem;
}

.tvlr-check-list dd {
  margin: 0;
  color: var(--bright);
  font-size: 0.82rem;
  font-weight: 600;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.tvlr-pointer {
  padding: 24px 25px;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.65;
}

.tvlr-pointer b { color: var(--white); }

.proposal-reading-key-note {
  margin-top: 14px;
  color: var(--text-dim);
  font-size: 0.68rem;
  line-height: 1.6;
}

@media (max-width: 1080px) {
  .tvlr-map-layout { grid-template-columns: minmax(0, 1fr); height: auto; }
  .tvlr-map-stage { height: 440px; }
  .tvlr-station-list { max-height: 320px; }
  .tvlr-map-side {
    flex-direction: column;
    border-top: 1px solid var(--proposal-line);
    border-left: 0;
  }
  .tvlr-station-list ul {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 6px;
  }
}

@media (max-width: 720px) {
  .tvlr-controls { grid-template-columns: minmax(0, 1fr); }
  .tvlr-controls .explainer-controls--lens {
    border-top: 1px solid var(--proposal-line-strong);
    border-left: 0;
  }
  .tvlr-map-stage { min-height: 420px; }
  .tvlr-bar {
    grid-template-columns: minmax(0, 1fr) 76px;
    gap: 6px 12px;
  }
  .tvlr-bar-label { grid-column: 1 / -1; }
  .tvlr-check-list { grid-template-columns: minmax(0, 1fr) auto; }
  .tvlr-map-readout,
  .tvlr-map-inputs,
  .tvlr-chart { padding-left: 18px; padding-right: 18px; }
}


/* ---- station list ---- */

.tvlr-station-list {
  overflow-y: auto;
  padding-bottom: 12px;
}

.tvlr-station-group {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 12px 16px 6px;
  background: linear-gradient(#0a0a0a 72%, rgba(10, 10, 10, 0));
  color: var(--text-dim);
  font-size: 0.58rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.tvlr-station-list ul { margin: 0; }
.tvlr-station-list b { font-size: 0.78rem; }
.tvlr-station-list span { display: block; margin-top: 2px; line-height: 1.4; }

/* ---- the pre-rendered map, shown until the interactive layer takes over ----
 * A visitor must never see an empty box. The static map paints with the HTML,
 * so a slow fetch, a failed fetch, or no JavaScript at all still shows the
 * corridor. */

/* Absolutely positioned so the image's 1600x900 intrinsic size can never
 * drive the stage's layout — left in flow it collapsed the stage to a
 * portrait box and the canvas inherited that shape. */
.tvlr-map-static {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* The class sets `display: block`, which outranks the user-agent rule for
 * [hidden] — so without this the script's `hidden = true` did nothing and the
 * printed map stayed behind the live canvas, its cropped title and legend
 * showing through every transparent part of it. */
.tvlr-map-static[hidden] {
  display: none;
}

.tvlr-map-degraded {
  position: absolute;
  bottom: 30px;
  left: 16px;
  right: 16px;
  margin: 0;
  border-left: 2px solid var(--proposal-unknown);
  padding: 8px 12px;
  background: rgba(12, 12, 12, 0.92);
  color: var(--text-muted);
  font-size: 0.68rem;
  line-height: 1.5;
}

.tvlr-map-stage .explainer-loading {
  position: absolute;
  bottom: 26px;
  left: 16px;
  margin: 0;
}

/* ---- station markers by tier ---- */

.tvlr-map-marker--t1 b { font-size: 0.78rem; color: #fff; }
.tvlr-map-marker--t2 b { font-size: 0.7rem; }
.tvlr-map-marker--t3 b { font-size: 0.64rem; color: var(--text-muted); font-weight: 500; }

.legend-key--station::before {
  width: 11px;
  height: 11px;
  border: 2px solid #e8e8e8;
  border-radius: 50%;
  background: #0c0c0c;
}

@media (prefers-reduced-motion: reduce) {
  .tvlr-map-marker { transition: none; }
}

/* ---- the plank's six visualisations ---- */

.tvlr-viz {
  padding: 24px 25px 18px;
}

.tvlr-viz svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}

.tvlr-viz-caption {
  margin-top: 16px;
  border-top: 1px solid var(--proposal-line);
  padding-top: 14px;
  color: var(--text-muted);
  font-size: 0.76rem;
  line-height: 1.65;
}

.tvlr-viz-source {
  margin-top: 8px;
  color: var(--text-dim);
  font-size: 0.63rem;
  letter-spacing: 0.03em;
}

@media (max-width: 720px) {
  .tvlr-viz { padding: 18px 14px 14px; }
}
