
/* Meteo Lab · module/chapter layer */
.module-shell {
  --subnav-h: 58px;
}
.module-subnav {
  position: sticky;
  top: var(--header-h);
  z-index: 42;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 94%, transparent);
  backdrop-filter: blur(16px);
}
.module-subnav-inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 8px 22px;
  min-height: var(--subnav-h);
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 6px;
  overflow: visible;
}
.chapter-link {
  min-width: 0;
  min-height: 40px;
  padding: 7px 10px;
  border: 1px solid transparent;
  border-radius: 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  text-align: center;
  line-height: 1.15;
  text-decoration: none;
  color: var(--muted);
  font-size: .72rem;
  white-space: normal;
}
.module-subnav-inner .chapter-link:not(.active) {
  display: none;
}
.chapter-link b {
  color: inherit;
  font-size: .69rem;
  letter-spacing: .06em;
}
.chapter-link.active {
  color: var(--text);
  border-color: var(--line-strong);
  background: var(--accent-soft);
}
.chapter-link.active b { color: var(--accent); }
.chapter-link.disabled {
  opacity: .46;
  cursor: default;
}

.chapter-hero {
  padding: 68px 0 48px;
}
.chapter-breadcrumb {
  color: var(--muted);
  font-size: .76rem;
  margin-bottom: 17px;
}
.chapter-breadcrumb a {
  color: var(--muted);
  text-decoration: none;
}
.chapter-breadcrumb a:hover { color: var(--text); }
.chapter-title {
  margin: 0;
  max-width: 950px;
  font-size: clamp(2.8rem, 7vw, 6.3rem);
  line-height: .93;
  letter-spacing: -.06em;
  font-weight: 720;
}
.chapter-title span { color: var(--accent); }
.chapter-deck {
  margin: 24px 0 0;
  max-width: 800px;
  color: var(--muted);
  font-size: clamp(1rem, 2vw, 1.22rem);
}
.chapter-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin-top: 25px;
}
.meta-pill {
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--muted);
  border-radius: 999px;
  padding: .43rem .65rem;
  font-size: .69rem;
}
.meta-pill strong { color: var(--text); }

.chapter-grid {
  display: grid;
  gap: 28px;
}
.chapter-main {
  min-width: 0;
}
.chapter-aside {
  display: none;
}
.toc {
  position: sticky;
  top: calc(var(--header-h) + var(--subnav-h) + 24px);
  border-left: 1px solid var(--line);
  padding-left: 18px;
}
.toc strong {
  display: block;
  font-size: .67rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--accent);
  margin-bottom: 10px;
}
.toc a {
  display: block;
  text-decoration: none;
  color: var(--muted);
  font-size: .76rem;
  padding: 5px 0;
}
.toc a:hover { color: var(--text); }

.content-section {
  padding: 56px 0;
  border-top: 1px solid var(--line);
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 18px);
}
.content-section:first-child { border-top: 0; padding-top: 24px; }
.content-section h2 {
  margin: 0 0 17px;
  font-size: clamp(1.65rem, 4vw, 2.65rem);
  line-height: 1.05;
  letter-spacing: -.035em;
}
.content-section h3 {
  margin: 30px 0 10px;
  font-size: 1.07rem;
}
.content-section p {
  margin: 0 0 17px;
  max-width: 790px;
  color: var(--muted);
}
.content-section p strong { color: var(--text); }

.definition {
  border-left: 3px solid var(--accent);
  padding: 18px 20px;
  background: linear-gradient(90deg, var(--accent-soft), transparent 75%);
  border-radius: 0 16px 16px 0;
  margin: 24px 0;
  max-width: 850px;
}
.definition strong {
  display: block;
  margin-bottom: 5px;
  color: var(--text);
}
.definition p { margin: 0; }

.equation {
  display: block;
  width: fit-content;
  max-width: 100%;
  overflow-x: auto;
  margin: 22px 0;
  padding: 15px 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg-soft);
  color: var(--text);
  font-family: "Times New Roman", Cambria, serif;
  font-size: clamp(1.12rem, 3vw, 1.45rem);
  letter-spacing: .01em;
}
.equation small {
  display: block;
  margin-top: 8px;
  font-family: Inter, ui-sans-serif, system-ui, sans-serif;
  font-size: .68rem;
  color: var(--muted);
}

.concept-grid,
.scale-grid,
.takeaway-grid {
  display: grid;
  gap: 12px;
  margin: 24px 0;
}
.concept-card,
.scale-card,
.takeaway-card {
  border: 1px solid var(--line);
  border-radius: 17px;
  background: var(--surface);
  padding: 18px;
}
.concept-card b,
.scale-card b,
.takeaway-card b {
  display: block;
  margin-bottom: 7px;
  font-size: .92rem;
}
.concept-card p,
.scale-card p,
.takeaway-card p {
  margin: 0;
  font-size: .8rem;
}
.concept-card .symbol {
  color: var(--accent);
  font-size: 1.3rem;
  font-weight: 700;
  margin-bottom: 7px;
}

.figure {
  margin: 26px 0;
  border: 1px solid var(--line);
  border-radius: 22px;
  overflow: hidden;
  background: #0d1721;
}
.figure img {
  display: block;
  width: 100%;
  height: auto;
}
.figure figcaption {
  border-top: 1px solid rgba(157,201,226,.15);
  padding: 12px 15px;
  color: #9eb3c0;
  font-size: .7rem;
}

.note {
  margin: 22px 0;
  padding: 17px 18px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--surface);
  max-width: 850px;
}
.note b { color: var(--accent); }
.note p { margin: 6px 0 0; font-size: .82rem; }

.system-lab {
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--surface);
  padding: 20px;
  margin-top: 26px;
}
.system-lab-head {
  display: grid;
  gap: 6px;
  margin-bottom: 18px;
}
.system-lab-head h3 { margin: 0; font-size: 1.1rem; }
.system-lab-head p { margin: 0; font-size: .8rem; }
.system-controls {
  display: grid;
  gap: 9px;
}
.system-toggle {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  padding: 12px 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--bg-soft);
  cursor: pointer;
}
.system-toggle input {
  margin-top: 3px;
  accent-color: var(--accent);
}
.system-toggle b {
  display: block;
  font-size: .82rem;
}
.system-toggle span {
  display: block;
  color: var(--muted);
  font-size: .7rem;
  margin-top: 2px;
}
.system-output {
  margin-top: 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--bg-soft);
  padding: 17px;
}
.system-output strong {
  display: block;
  color: var(--accent);
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .09em;
  margin-bottom: 9px;
}
.system-output ul {
  margin: 0;
  padding-left: 1.15rem;
  color: var(--muted);
  font-size: .79rem;
}
.system-output li + li { margin-top: 5px; }

.misconception {
  display: grid;
  grid-template-columns: 34px 1fr;
  gap: 12px;
  align-items: start;
  margin: 12px 0;
  padding: 15px 16px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--surface);
}
.misconception .x {
  width: 29px;
  height: 29px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  background: rgba(255, 115, 115, .10);
  color: #ff9f9f;
  font-weight: 800;
}
.misconception b { display: block; font-size: .85rem; }
.misconception p { margin: 4px 0 0; font-size: .76rem; }

.crossrefs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.crossref {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: .58rem .72rem;
  background: var(--surface);
  color: var(--muted);
  font-size: .74rem;
}
.crossref[href] {
  text-decoration:none;
  cursor:pointer;
}
.crossref[href]:hover,
.crossref[href]:focus-visible {
  color:var(--text);
  border-color:var(--accent);
  outline:none;
}
.crossref strong { color: var(--text); }

.next-chapter {
  margin-top: 38px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background:
    radial-gradient(circle at 100% 0, rgba(123,208,255,.10), transparent 18rem),
    var(--surface);
  padding: 21px;
}
.next-chapter span {
  display: block;
  color: var(--accent);
  font-size: .67rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  margin-bottom: 6px;
}
.next-chapter strong {
  display: block;
  font-size: 1.08rem;
}
.next-chapter p { margin: 7px 0 0; font-size: .78rem; }


@media (min-width: 720px) {
  .module-shell { --subnav-h: 102px; }
  .module-subnav-inner {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
  .module-subnav-inner .chapter-link:not(.active) {
    display: inline-flex;
  }
  .chapter-link {
    min-height: 40px;
    padding: 6px 7px;
    font-size: .68rem;
  }
}

@media (min-width: 1180px) {
  .module-shell { --subnav-h: 58px; }
  .module-subnav-inner {
    grid-template-columns: repeat(10, minmax(0, 1fr));
  }
  .chapter-link {
    font-size: .66rem;
  }
}

@media (min-width: 720px) {
  .concept-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .scale-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .takeaway-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .system-controls { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (min-width: 980px) {
  .chapter-grid {
    grid-template-columns: minmax(0, 1fr) 220px;
    gap: 54px;
  }
  .chapter-aside { display: block; }
  .concept-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .takeaway-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
}


/* M1K2 · composition lab */
.composition-lab {
  margin-top: 26px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--surface);
  padding: 20px;
}
.composition-layout {
  display: grid;
  gap: 20px;
}
.composition-controls {
  display: grid;
  gap: 14px;
}
.composition-control label {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: var(--text);
  font-size: .8rem;
}
.composition-control output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.composition-bars {
  display: grid;
  gap: 10px;
}
.comp-row {
  display: grid;
  grid-template-columns: 74px minmax(0,1fr) 62px;
  gap: 10px;
  align-items: center;
  font-size: .74rem;
}
.comp-row span:first-child { color: var(--text); }
.comp-row span:last-child {
  color: var(--muted);
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.comp-track {
  height: 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  overflow: hidden;
  background: var(--bg-soft);
}
.comp-fill {
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: var(--accent);
  transition: width .12s ease-out;
}
.comp-fill.secondary { background: var(--accent-2); }
.comp-fill.muted { background: color-mix(in srgb, var(--muted) 72%, transparent); }
.composition-note {
  margin-top: 14px;
  padding: 13px 14px;
  border-radius: 14px;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: .76rem;
}
.data-table-wrap {
  max-width: 100%;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 16px;
  margin: 24px 0;
}
.data-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 620px;
  font-size: .78rem;
}
.data-table th,
.data-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  text-align: left;
}
.data-table th {
  color: var(--text);
  background: var(--surface-2);
  font-size: .7rem;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.data-table td { color: var(--muted); }
.data-table tr:last-child td { border-bottom: 0; }

@media (min-width: 820px) {
  .composition-layout {
    grid-template-columns: minmax(240px,.7fr) minmax(0,1.3fr);
    align-items: start;
  }
}

.composition-total {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  margin-top: 3px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: .72rem;
}
.composition-total strong {
  color: var(--text);
  font-variant-numeric: tabular-nums;
}


/* M1K3 · state lab */
.state-lab {
  margin-top: 26px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--surface);
  padding: 20px;
}
.state-lab-grid {
  display: grid;
  gap: 20px;
}
.state-controls {
  display: grid;
  gap: 16px;
}
.state-control label {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: .8rem;
  color: var(--text);
}
.state-control output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.state-readouts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 9px;
}
.state-readout {
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg-soft);
}
.state-readout strong {
  display: block;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-size: 1rem;
}
.state-readout span {
  color: var(--muted);
  font-size: .66rem;
}
.state-visual {
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--bg-soft);
  padding: 10px;
}
.state-visual svg {
  display: block;
  width: 100%;
  height: auto;
}
@media (min-width: 820px) {
  .state-lab-grid {
    grid-template-columns: minmax(250px,.75fr) minmax(0,1.25fr);
    align-items: start;
  }
}

#density-map {
  display: block;
  width: 100%;
  height: auto;
}
#density-marker-dot,
#density-marker-x,
#density-marker-y {
  transition: cx .10s linear, cy .10s linear, x1 .10s linear, x2 .10s linear, y1 .10s linear, y2 .10s linear;
}


/* M1K4 · Gas State Lab v2 */
.gasstate-lab {
  margin-top: 26px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--surface);
  padding: 20px;
}
.gasstate-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}
.gasstate-head h3 {
  margin: 5px 0 0;
  font-size: 1.08rem;
}
.gasstate-reset {
  appearance: none;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: .55rem .8rem;
  font: inherit;
  font-size: .7rem;
  cursor: pointer;
}
.gasstate-reset:hover { color: var(--text); }
.gasstate-modes {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
  margin-bottom: 18px;
}
.gasstate-modes button {
  appearance: none;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: 11px 12px;
  text-align: left;
  font: inherit;
  cursor: pointer;
}
.gasstate-modes button b {
  display: block;
  color: var(--text);
  font-size: .78rem;
  margin-bottom: 3px;
}
.gasstate-modes button span {
  display: block;
  font-size: .65rem;
  line-height: 1.25;
}
.gasstate-modes button[aria-pressed="true"] {
  background: var(--accent-soft);
  border-color: var(--line-strong);
}
.gasstate-modes button[aria-pressed="true"] b { color: var(--accent); }
.gasstate-grid {
  display: grid;
  gap: 18px;
}
.gasstate-controls {
  display: grid;
  gap: 14px;
}
.gasstate-control {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--bg-soft);
}
.gasstate-control.locked {
  opacity: .58;
  border-style: dashed;
}
.gasstate-control label {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
  color: var(--text);
  font-size: .78rem;
}
.gasstate-control output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.gasstate-control input:disabled { cursor: not-allowed; }
.gasstate-state {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
}
.gasstate-state > div {
  min-width: 0;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--bg-soft);
}
.gasstate-state span {
  display: block;
  color: var(--muted);
  font-size: .62rem;
  margin-bottom: 4px;
}
.gasstate-state strong {
  display: block;
  color: var(--text);
  font-size: .78rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.gasstate-equation {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.gasstate-equation > span {
  display: block;
  color: var(--muted);
  font-size: .62rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.gasstate-equation strong {
  display: block;
  margin: 7px 0 5px;
  color: var(--text);
  font-family: "Times New Roman",Cambria,serif;
  font-size: 1.4rem;
}
.gasstate-equation small { color: var(--muted); }
.gasstate-plot {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 18px;
  overflow: hidden;
  background: #0c1721;
}
.gasstate-plot svg {
  display: block;
  width: 100%;
  height: auto;
}
.gasstate-explain {
  display: grid;
  gap: 4px;
  margin-top: 14px;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg-soft);
}
.gasstate-explain strong {
  color: var(--accent);
  font-size: .75rem;
}
.gasstate-explain span {
  color: var(--muted);
  font-size: .72rem;
}
@media (min-width:760px) {
  .gasstate-modes { grid-template-columns: repeat(4,minmax(0,1fr)); }
}
@media (min-width:940px) {
  .gasstate-grid {
    grid-template-columns: minmax(285px,.72fr) minmax(0,1.28fr);
    align-items: start;
  }
}


/* C012 · figure zoom / mobile SVG readability */
.figure img {
  max-width: 100%;
  height: auto;
  object-fit: contain;
  cursor: zoom-in;
}
.figure-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(3, 9, 14, .92);
  backdrop-filter: blur(8px);
}
.figure-lightbox.open { display: flex; }
.figure-lightbox-frame {
  position: relative;
  width: min(96vw, 1400px);
  max-height: 94vh;
  overflow: auto;
  border: 1px solid var(--line-strong);
  border-radius: 18px;
  background: #0d1721;
  box-shadow: 0 24px 80px rgba(0,0,0,.45);
}
.figure-lightbox-frame img {
  display: block;
  width: auto;
  min-width: min(980px, 92vw);
  max-width: none;
  height: auto;
}
.figure-lightbox-close {
  position: sticky;
  top: 10px;
  float: right;
  z-index: 2;
  margin: 10px 10px -50px 0;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  background: rgba(8,17,26,.86);
  color: #dceef7;
  font: inherit;
  cursor: pointer;
}
@media (min-width: 900px) {
  .figure img { cursor: default; }
  .figure-lightbox-frame img {
    min-width: min(1200px, 92vw);
  }
}


/* M1K5 · Atmospheric Column Lab */
.column-lab {
  margin-top: 26px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--surface);
  padding: 20px;
}
.column-lab-grid {
  display: grid;
  gap: 18px;
}
.column-lab-controls {
  display: grid;
  gap: 14px;
}
.column-control {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--bg-soft);
}
.column-control label {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
  color: var(--text);
  font-size: .78rem;
}
.column-control output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.column-readouts {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
}
.column-readouts > div {
  min-width: 0;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--bg-soft);
}
.column-readouts span {
  display: block;
  color: var(--muted);
  font-size: .62rem;
  margin-bottom: 4px;
}
.column-readouts strong {
  display: block;
  color: var(--text);
  font-size: .82rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.column-equation {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.column-equation > span {
  display: block;
  color: var(--muted);
  font-size: .62rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.column-equation strong {
  display: block;
  margin: 7px 0 5px;
  color: var(--text);
  font-family: "Times New Roman",Cambria,serif;
  font-size: 1.4rem;
}
.column-equation small { color: var(--muted); }
.column-lab-visual {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 18px;
  overflow: hidden;
  background: #0c1721;
}
.column-lab-visual svg {
  display: block;
  width: 100%;
  height: auto;
}
@media (min-width: 920px) {
  .column-lab-grid {
    grid-template-columns: minmax(285px,.72fr) minmax(0,1.28fr);
    align-items: start;
  }
}




/* M1K6 · Hydrostatic Layer Lab v2 · compact single-viewport console */
.hydro-lab {
  margin-top: 20px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  padding: 14px;
}
.hydro-console-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.hydro-console-head > div {
  min-width: 0;
}
.hydro-console-head .kicker {
  display: block;
  margin-bottom: 2px;
}
.hydro-console-head strong {
  display: block;
  color: var(--text);
  font-size: .82rem;
}
.hydro-reset {
  appearance: none;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: .44rem .68rem;
  font: inherit;
  font-size: .66rem;
  cursor: pointer;
}
.hydro-reset:hover { color: var(--text); }

.hydro-quick-controls {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.hydro-control.compact {
  padding: 9px 10px 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg-soft);
}
.hydro-control.compact label {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
  color: var(--text);
  font-size: .7rem;
}
.hydro-control.compact output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.hydro-control.compact input {
  width: 100%;
  margin: 0;
}

.hydro-console-body {
  display: grid;
  gap: 10px;
}
.hydro-visual.compact {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #0c1721;
}
.hydro-visual.compact svg {
  display: block;
  width: 100%;
  height: auto;
}

.hydro-telemetry {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: start;
}
.hydro-readouts.compact {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.hydro-readouts.compact > div {
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.hydro-readouts.compact span {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  margin-bottom: 3px;
}
.hydro-readouts.compact strong {
  display: block;
  color: var(--text);
  font-size: .76rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.hydro-equation.compact {
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.hydro-equation.compact > span {
  display: block;
  color: var(--muted);
  font-size: .56rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.hydro-equation.compact strong {
  display: block;
  margin: 3px 0;
  color: var(--text);
  font-family: "Times New Roman",Cambria,serif;
  font-size: 1.14rem;
}
.hydro-equation.compact small {
  color: var(--muted);
  font-size: .61rem;
}
.hydro-console-note {
  display: grid;
  gap: 3px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.hydro-console-note strong {
  color: var(--accent);
  font-size: .66rem;
}
.hydro-console-note span {
  color: var(--muted);
  font-size: .62rem;
  line-height: 1.32;
}


@media (max-width: 679px) {
  .hydro-lab {
    padding: 10px;
  }
  .hydro-console-head {
    margin-bottom: 8px;
  }
  .hydro-console-head strong {
    font-size: .72rem;
  }
  .hydro-reset {
    padding: .38rem .52rem;
    font-size: .6rem;
  }
  .hydro-quick-controls {
    gap: 5px;
    margin-bottom: 7px;
  }
  .hydro-control.compact {
    min-width: 0;
    padding: 7px 6px 6px;
  }
  .hydro-control.compact label {
    display: grid;
    gap: 2px;
    margin-bottom: 4px;
    font-size: .61rem;
    line-height: 1.15;
  }
  .hydro-control.compact output {
    font-size: .59rem;
    white-space: normal;
  }
  .hydro-control.compact input {
    height: 18px;
  }
  .hydro-console-body {
    gap: 7px;
  }
  .hydro-readouts.compact > div {
    padding: 7px;
  }
  .hydro-readouts.compact strong {
    font-size: .69rem;
  }
  .hydro-equation.compact {
    padding: 8px 9px;
  }
  .hydro-console-note {
    display: none;
  }
  .hydro-visual.compact svg {
    max-height: 230px;
  }
}

@media (min-width: 680px) {
  .hydro-console-body {
    grid-template-columns: minmax(0,1.42fr) minmax(210px,.58fr);
    align-items: stretch;
  }
  .hydro-visual.compact {
    align-self: stretch;
  }
  .hydro-visual.compact svg {
    height: 100%;
    max-height: 330px;
    object-fit: contain;
  }
}

@media (min-width: 980px) {
  .hydro-lab {
    padding: 12px;
  }
  .hydro-console-head {
    margin-bottom: 8px;
  }
  .hydro-quick-controls {
    margin-bottom: 8px;
  }
  .hydro-control.compact {
    padding: 8px 9px 7px;
  }
  .hydro-console-body {
    gap: 8px;
    grid-template-columns: minmax(0,1.5fr) minmax(205px,.5fr);
  }
  .hydro-visual.compact svg {
    max-height: 305px;
  }
}

/* At normal desktop/tablet heights the interactive console itself fits below the sticky navigation. */
@media (min-width: 680px) and (min-height: 700px) {
  .hydro-lab {
    max-height: calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M1K7 · Barometric Profile Lab · compact single-viewport console */
.baro-lab {
  margin-top: 20px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  padding: 14px;
}
.baro-console-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.baro-console-head > div { min-width: 0; }
.baro-console-head .kicker {
  display: block;
  margin-bottom: 2px;
}
.baro-console-head strong {
  display: block;
  color: var(--text);
  font-size: .82rem;
}
.baro-reset {
  appearance: none;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: .44rem .68rem;
  font: inherit;
  font-size: .66rem;
  cursor: pointer;
}
.baro-reset:hover { color: var(--text); }

.baro-quick-controls {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.baro-control.compact {
  min-width: 0;
  padding: 9px 10px 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg-soft);
}
.baro-control.compact label {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
  color: var(--text);
  font-size: .7rem;
}
.baro-control.compact output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.baro-control.compact input {
  width: 100%;
  margin: 0;
}
.baro-console-body {
  display: grid;
  gap: 10px;
}
.baro-plot {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #0c1721;
}
.baro-plot svg {
  display: block;
  width: 100%;
  height: auto;
}
.baro-telemetry {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: start;
}
.baro-readouts {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.baro-readouts > div {
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.baro-readouts span {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  margin-bottom: 3px;
}
.baro-readouts strong {
  display: block;
  color: var(--text);
  font-size: .76rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.baro-equation {
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.baro-equation > span {
  display: block;
  color: var(--muted);
  font-size: .56rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.baro-equation strong {
  display: block;
  margin: 3px 0;
  color: var(--text);
  font-family: "Times New Roman",Cambria,serif;
  font-size: 1.14rem;
}
.baro-equation small {
  color: var(--muted);
  font-size: .61rem;
}
.baro-console-note {
  display: grid;
  gap: 3px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.baro-console-note strong {
  color: var(--accent);
  font-size: .66rem;
}
.baro-console-note span {
  color: var(--muted);
  font-size: .62rem;
  line-height: 1.32;
}

@media (max-width: 679px) {
  .baro-lab { padding: 10px; }
  .baro-console-head { margin-bottom: 8px; }
  .baro-console-head strong { font-size: .72rem; }
  .baro-reset {
    padding: .38rem .52rem;
    font-size: .6rem;
  }
  .baro-quick-controls {
    gap: 5px;
    margin-bottom: 7px;
  }
  .baro-control.compact {
    padding: 7px 6px 6px;
  }
  .baro-control.compact label {
    display: grid;
    gap: 2px;
    margin-bottom: 4px;
    font-size: .61rem;
    line-height: 1.15;
  }
  .baro-control.compact output {
    font-size: .59rem;
    white-space: normal;
  }
  .baro-control.compact input { height: 18px; }
  .baro-console-body { gap: 7px; }
  .baro-readouts > div { padding: 7px; }
  .baro-readouts strong { font-size: .69rem; }
  .baro-equation { padding: 8px 9px; }
  .baro-console-note { display: none; }
  .baro-plot svg { max-height: 230px; }
}
@media (min-width: 680px) {
  .baro-console-body {
    grid-template-columns: minmax(0,1.42fr) minmax(210px,.58fr);
    align-items: stretch;
  }
  .baro-plot {
    align-self: stretch;
  }
  .baro-plot svg {
    height: 100%;
    max-height: 330px;
    object-fit: contain;
  }
}
@media (min-width: 980px) {
  .baro-lab { padding: 12px; }
  .baro-console-head { margin-bottom: 8px; }
  .baro-quick-controls { margin-bottom: 8px; }
  .baro-control.compact { padding: 8px 9px 7px; }
  .baro-console-body {
    gap: 8px;
    grid-template-columns: minmax(0,1.5fr) minmax(205px,.5fr);
  }
  .baro-plot svg { max-height: 305px; }
}
@media (min-width: 680px) and (min-height: 700px) {
  .baro-lab {
    max-height: calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M1K8 · Atmospheric Layer Explorer · compact console */
.layer-lab {
  margin-top: 20px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  padding: 14px;
}
.layer-console-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.layer-console-head > div { min-width: 0; }
.layer-console-head .kicker {
  display: block;
  margin-bottom: 2px;
}
.layer-console-head strong {
  display: block;
  color: var(--text);
  font-size: .82rem;
}
.layer-reset {
  appearance: none;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: .44rem .68rem;
  font: inherit;
  font-size: .66rem;
  cursor: pointer;
}
.layer-reset:hover { color: var(--text); }

.layer-quick-controls {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.layer-control.compact {
  min-width: 0;
  padding: 9px 10px 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg-soft);
}
.layer-control.compact label {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
  color: var(--text);
  font-size: .7rem;
}
.layer-control.compact output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.layer-control.compact input {
  width: 100%;
  margin: 0;
}

.layer-console-body {
  display: grid;
  gap: 10px;
}
.layer-plot {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #0c1721;
}
.layer-plot svg {
  display: block;
  width: 100%;
  height: auto;
}
.layer-telemetry {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: start;
}
.layer-readouts {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.layer-readouts > div {
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.layer-readouts span {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  margin-bottom: 3px;
}
.layer-readouts strong {
  display: block;
  color: var(--text);
  font-size: .74rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.layer-equation {
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.layer-equation > span {
  display: block;
  color: var(--muted);
  font-size: .56rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.layer-equation strong {
  display: block;
  margin: 3px 0 5px;
  color: var(--text);
  font-family: "Times New Roman",Cambria,serif;
  font-size: 1.12rem;
}
.layer-equation small {
  display: block;
  color: var(--muted);
  font-size: .60rem;
  line-height: 1.30;
}
.layer-console-note {
  display: grid;
  gap: 3px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.layer-console-note strong {
  color: var(--accent);
  font-size: .66rem;
}
.layer-console-note span {
  color: var(--muted);
  font-size: .62rem;
  line-height: 1.32;
}

@media (max-width: 679px) {
  .layer-lab { padding: 10px; }
  .layer-console-head { margin-bottom: 8px; }
  .layer-console-head strong { font-size: .72rem; }
  .layer-reset {
    padding: .38rem .52rem;
    font-size: .6rem;
  }
  .layer-quick-controls {
    gap: 5px;
    margin-bottom: 7px;
  }
  .layer-control.compact {
    padding: 7px 6px 6px;
  }
  .layer-control.compact label {
    display: grid;
    gap: 2px;
    margin-bottom: 4px;
    font-size: .61rem;
    line-height: 1.15;
  }
  .layer-control.compact output {
    font-size: .59rem;
    white-space: normal;
  }
  .layer-control.compact input { height: 18px; }
  .layer-console-body { gap: 7px; }
  .layer-readouts > div { padding: 7px; }
  .layer-readouts strong { font-size: .67rem; }
  .layer-equation { padding: 8px 9px; }
  .layer-console-note { display: none; }
  .layer-plot svg { max-height: 230px; }
}
@media (min-width: 680px) {
  .layer-console-body {
    grid-template-columns: minmax(0,1.42fr) minmax(210px,.58fr);
    align-items: stretch;
  }
  .layer-plot {
    align-self: stretch;
  }
  .layer-plot svg {
    height: 100%;
    max-height: 330px;
    object-fit: contain;
  }
}
@media (min-width: 980px) {
  .layer-lab { padding: 12px; }
  .layer-console-head { margin-bottom: 8px; }
  .layer-quick-controls { margin-bottom: 8px; }
  .layer-control.compact { padding: 8px 9px 7px; }
  .layer-console-body {
    gap: 8px;
    grid-template-columns: minmax(0,1.5fr) minmax(205px,.5fr);
  }
  .layer-plot svg { max-height: 305px; }
}
@media (min-width: 680px) and (min-height: 700px) {
  .layer-lab {
    max-height: calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M1K9 · Standard Atmosphere Lab · compact console */
.isa-lab {
  margin-top: 20px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  padding: 14px;
}
.isa-console-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.isa-console-head > div { min-width: 0; }
.isa-console-head .kicker {
  display: block;
  margin-bottom: 2px;
}
.isa-console-head strong {
  display: block;
  color: var(--text);
  font-size: .82rem;
}
.isa-reset {
  appearance: none;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: .44rem .68rem;
  font: inherit;
  font-size: .66rem;
  cursor: pointer;
}
.isa-reset:hover { color: var(--text); }

.isa-quick-controls {
  display: grid;
  gap: 8px;
  margin-bottom: 10px;
}
.isa-control.compact {
  min-width: 0;
  padding: 9px 10px 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg-soft);
}
.isa-control.compact label {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
  color: var(--text);
  font-size: .7rem;
}
.isa-control.compact output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.isa-control.compact input {
  width: 100%;
  margin: 0;
}
.isa-modes {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 6px;
}
.isa-modes button {
  appearance: none;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: 7px 8px;
  text-align: left;
  font: inherit;
  cursor: pointer;
}
.isa-modes button b {
  display: block;
  color: var(--text);
  font-size: .72rem;
}
.isa-modes button span {
  display: block;
  margin-top: 2px;
  font-size: .58rem;
}
.isa-modes button[aria-pressed="true"] {
  background: var(--accent-soft);
  border-color: var(--line-strong);
}
.isa-modes button[aria-pressed="true"] b { color: var(--accent); }

.isa-console-body {
  display: grid;
  gap: 10px;
}
.isa-plot {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #0c1721;
}
.isa-plot svg {
  display: block;
  width: 100%;
  height: auto;
}
.isa-telemetry {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: start;
}
.isa-readouts {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.isa-readouts > div {
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.isa-readouts span {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  margin-bottom: 3px;
}
.isa-readouts strong {
  display: block;
  color: var(--text);
  font-size: .72rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.isa-equation {
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.isa-equation > span {
  display: block;
  color: var(--muted);
  font-size: .56rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.isa-equation strong {
  display: block;
  margin: 3px 0 5px;
  color: var(--text);
  font-size: .74rem;
}
.isa-equation small {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  line-height: 1.28;
}
.isa-console-note {
  display: grid;
  gap: 3px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.isa-console-note strong {
  color: var(--accent);
  font-size: .66rem;
}
.isa-console-note span {
  color: var(--muted);
  font-size: .62rem;
  line-height: 1.32;
}

@media (max-width: 679px) {
  .isa-lab { padding: 10px; }
  .isa-console-head { margin-bottom: 8px; }
  .isa-console-head strong { font-size: .72rem; }
  .isa-reset {
    padding: .38rem .52rem;
    font-size: .6rem;
  }
  .isa-quick-controls {
    gap: 6px;
    margin-bottom: 7px;
  }
  .isa-control.compact {
    padding: 7px 6px 6px;
  }
  .isa-control.compact label {
    display: grid;
    gap: 2px;
    margin-bottom: 4px;
    font-size: .61rem;
    line-height: 1.15;
  }
  .isa-control.compact output {
    font-size: .59rem;
    white-space: normal;
  }
  .isa-control.compact input { height: 18px; }
  .isa-modes { gap: 4px; }
  .isa-modes button {
    padding: 6px;
  }
  .isa-modes button span { font-size: .54rem; }
  .isa-console-body { gap: 7px; }
  .isa-readouts > div { padding: 7px; }
  .isa-readouts strong { font-size: .65rem; }
  .isa-equation { padding: 8px 9px; }
  .isa-console-note { display: none; }
  .isa-plot svg { max-height: 230px; }
}
@media (min-width: 680px) {
  .isa-quick-controls {
    grid-template-columns: minmax(0,1.25fr) minmax(250px,.75fr);
    align-items: stretch;
  }
  .isa-console-body {
    grid-template-columns: minmax(0,1.42fr) minmax(220px,.58fr);
    align-items: stretch;
  }
  .isa-plot {
    align-self: stretch;
  }
  .isa-plot svg {
    height: 100%;
    max-height: 330px;
    object-fit: contain;
  }
}
@media (min-width: 980px) {
  .isa-lab { padding: 12px; }
  .isa-console-head { margin-bottom: 8px; }
  .isa-quick-controls { margin-bottom: 8px; }
  .isa-control.compact { padding: 8px 9px 7px; }
  .isa-console-body {
    gap: 8px;
    grid-template-columns: minmax(0,1.5fr) minmax(215px,.5fr);
  }
  .isa-plot svg { max-height: 305px; }
}
@media (min-width: 680px) and (min-height: 700px) {
  .isa-lab {
    max-height: calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M1K10 · System Coupling Lab · compact console */
.coupling-lab {
  margin-top: 20px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  padding: 14px;
}
.system-console-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.system-console-head > div { min-width: 0; }
.system-console-head .kicker {
  display: block;
  margin-bottom: 2px;
}
.system-console-head strong {
  display: block;
  color: var(--text);
  font-size: .82rem;
}
.system-reset {
  appearance: none;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: .44rem .68rem;
  font: inherit;
  font-size: .66rem;
  cursor: pointer;
}
.system-reset:hover { color: var(--text); }

.system-quick-controls {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.system-control.compact {
  min-width: 0;
  padding: 9px 10px 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg-soft);
}
.system-control.compact label {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
  color: var(--text);
  font-size: .7rem;
}
.system-control.compact output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.system-control.compact input {
  width: 100%;
  margin: 0;
}

.system-console-body {
  display: grid;
  gap: 10px;
}
.system-plot {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #0c1721;
}
.system-plot svg {
  display: block;
  width: 100%;
  height: auto;
}
.system-telemetry {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: start;
}
.system-readouts {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.system-readouts > div {
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.system-readouts span {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  margin-bottom: 3px;
}
.system-readouts strong {
  display: block;
  color: var(--text);
  font-size: .74rem;
  font-variant-numeric: tabular-nums;
}
.system-equation {
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.system-equation > span {
  display: block;
  color: var(--muted);
  font-size: .56rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.system-equation strong {
  display: block;
  margin: 3px 0 5px;
  color: var(--text);
  font-family: "Times New Roman",Cambria,serif;
  font-size: 1.05rem;
}
.system-equation small {
  display: block;
  color: var(--muted);
  font-size: .59rem;
  line-height: 1.28;
}
.system-console-note {
  display: grid;
  gap: 3px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.system-console-note strong {
  color: var(--accent);
  font-size: .66rem;
}
.system-console-note span {
  color: var(--muted);
  font-size: .62rem;
  line-height: 1.32;
}

@media (max-width: 679px) {
  .coupling-lab { padding: 10px; }
  .system-console-head { margin-bottom: 8px; }
  .system-console-head strong { font-size: .72rem; }
  .system-reset {
    padding: .38rem .52rem;
    font-size: .6rem;
  }
  .system-quick-controls {
    gap: 5px;
    margin-bottom: 7px;
  }
  .system-control.compact {
    padding: 7px 6px 6px;
  }
  .system-control.compact label {
    display: grid;
    gap: 2px;
    margin-bottom: 4px;
    font-size: .61rem;
    line-height: 1.15;
  }
  .system-control.compact output {
    font-size: .59rem;
    white-space: normal;
  }
  .system-control.compact input { height: 18px; }
  .system-console-body { gap: 7px; }
  .system-readouts > div { padding: 7px; }
  .system-readouts strong { font-size: .67rem; }
  .system-equation { padding: 8px 9px; }
  .system-console-note { display: none; }
  .system-plot svg { max-height: 240px; }
}
@media (min-width: 680px) {
  .system-console-body {
    grid-template-columns: minmax(0,1.48fr) minmax(210px,.52fr);
    align-items: stretch;
  }
  .system-plot { align-self: stretch; }
  .system-plot svg {
    height: 100%;
    max-height: 340px;
    object-fit: contain;
  }
}
@media (min-width: 980px) {
  .coupling-lab { padding: 12px; }
  .system-console-head { margin-bottom: 8px; }
  .system-quick-controls { margin-bottom: 8px; }
  .system-control.compact { padding: 8px 9px 7px; }
  .system-console-body {
    gap: 8px;
    grid-template-columns: minmax(0,1.55fr) minmax(215px,.45fr);
  }
  .system-plot svg { max-height: 315px; }
}
@media (min-width: 680px) and (min-height: 700px) {
  .coupling-lab {
    max-height: calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* C020 FREEZE · M1K3–M1K5 compact-console normalization */
.state-lab,
.gasstate-lab,
.column-lab {
  margin-top: 20px;
  border-radius: 20px;
  padding: 12px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
}

/* M1K3 */
.state-lab-grid { gap: 9px; }
.state-controls {
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.state-control {
  min-width: 0;
  padding: 8px 9px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg-soft);
}
.state-control label {
  gap: 7px;
  margin-bottom: 5px;
  font-size: .68rem;
}
.state-readouts { gap: 7px; margin-top: 7px; }
.state-readout { padding: 8px 9px; border-radius: 11px; }
.state-readout strong { font-size: .76rem; }
.state-readout span { font-size: .58rem; line-height: 1.2; }
.state-visual { padding: 0; border-radius: 14px; overflow: hidden; background:#0c1721; }
.state-visual svg { max-height: 310px; object-fit: contain; }

@media (min-width: 680px) {
  .state-lab-grid {
    grid-template-columns: minmax(235px,.62fr) minmax(0,1.38fr);
    align-items: stretch;
  }
  .state-visual svg { height: 100%; max-height: 315px; }
}
@media (max-width: 679px) {
  .state-lab { padding: 10px; }
  .state-controls { gap: 5px; }
  .state-control { padding: 7px 6px; }
  .state-control label { display:grid; gap:2px; font-size:.59rem; }
  .state-control output { font-size:.58rem; white-space:normal; }
  .state-readout { padding:7px; }
  .state-visual svg { max-height: 230px; }
}

/* M1K4 */
.gasstate-head { margin-bottom: 8px; gap: 10px; }
.gasstate-head h3 { margin-top:2px; font-size:.86rem; }
.gasstate-reset { padding:.42rem .62rem; font-size:.62rem; }
.gasstate-modes {
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap:5px;
  margin-bottom:8px;
}
.gasstate-modes button { padding:6px 7px; border-radius:10px; }
.gasstate-modes button b { font-size:.66rem; margin-bottom:1px; }
.gasstate-modes button span { font-size:.54rem; line-height:1.15; }
.gasstate-grid { gap:8px; }
.gasstate-controls { gap:7px; }
.gasstate-control { padding:8px 9px; border-radius:11px; }
.gasstate-control label { margin-bottom:4px; font-size:.66rem; }
.gasstate-state { gap:5px; }
.gasstate-state > div { padding:7px; border-radius:10px; }
.gasstate-state span { font-size:.54rem; margin-bottom:2px; }
.gasstate-state strong { font-size:.68rem; }
.gasstate-equation { padding:8px 9px; border-radius:11px; }
.gasstate-equation > span { font-size:.54rem; }
.gasstate-equation strong { margin:2px 0; font-size:1.05rem; }
.gasstate-equation small { font-size:.57rem; }
.gasstate-plot { border-radius:14px; }
.gasstate-plot svg { max-height:315px; object-fit:contain; }
.gasstate-explain {
  margin-top:7px;
  padding:7px 9px;
  border-radius:10px;
  grid-template-columns:auto 1fr;
  align-items:baseline;
  gap:7px;
}
.gasstate-explain strong { font-size:.62rem; white-space:nowrap; }
.gasstate-explain span { font-size:.59rem; }

@media (min-width: 680px) {
  .gasstate-grid {
    grid-template-columns: minmax(235px,.62fr) minmax(0,1.38fr);
    align-items: stretch;
  }
  .gasstate-plot svg { height:100%; max-height:315px; }
}
@media (max-width: 679px) {
  .gasstate-lab { padding:10px; }
  .gasstate-head strong,.gasstate-head h3 { font-size:.72rem; }
  .gasstate-modes { gap:3px; }
  .gasstate-modes button { padding:5px 4px; }
  .gasstate-modes button span { display:none; }
  .gasstate-controls {
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap:5px;
  }
  .gasstate-control { padding:7px 6px; }
  .gasstate-control label { display:grid; gap:2px; font-size:.58rem; }
  .gasstate-state { grid-column:1 / -1; }
  .gasstate-equation { grid-column:1 / -1; }
  .gasstate-plot svg { max-height:230px; }
  .gasstate-explain span { line-height:1.2; }
}

/* M1K5 */
.column-lab-grid { gap:8px; }
.column-lab-controls {
  gap:7px;
}
.column-control { padding:8px 9px; border-radius:11px; }
.column-control label { margin-bottom:4px; font-size:.66rem; }
.column-readouts { gap:5px; }
.column-readouts > div { padding:7px; border-radius:10px; }
.column-readouts span { font-size:.54rem; margin-bottom:2px; }
.column-readouts strong { font-size:.70rem; }
.column-equation { padding:8px 9px; border-radius:11px; }
.column-equation > span { font-size:.54rem; }
.column-equation strong { margin:2px 0; font-size:1.05rem; }
.column-equation small { font-size:.57rem; }
.column-lab-visual { border-radius:14px; }
.column-lab-visual svg { max-height:315px; object-fit:contain; }

@media (min-width:680px) {
  .column-lab-grid {
    grid-template-columns:minmax(235px,.62fr) minmax(0,1.38fr);
    align-items:stretch;
  }
  .column-lab-visual svg { height:100%; max-height:315px; }
}
@media (max-width:679px) {
  .column-lab { padding:10px; }
  .column-lab-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
  }
  .column-control { padding:7px 6px; }
  .column-control label { display:grid; gap:2px; font-size:.58rem; }
  .column-readouts { grid-column:1 / -1; }
  .column-equation { grid-column:1 / -1; }
  .column-lab-visual svg { max-height:230px; }
}


/* M2K1 · Thermal Contact Lab · compact console */
.thermal-lab {
  margin-top: 20px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  padding: 14px;
}
.thermal-console-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.thermal-console-head > div { min-width: 0; }
.thermal-console-head .kicker { display: block; margin-bottom: 2px; }
.thermal-console-head strong {
  display: block;
  color: var(--text);
  font-size: .82rem;
}
.thermal-reset {
  appearance: none;
  flex: 0 0 auto;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg-soft);
  color: var(--muted);
  padding: .44rem .68rem;
  font: inherit;
  font-size: .66rem;
  cursor: pointer;
}
.thermal-reset:hover { color: var(--text); }

.thermal-quick-controls {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.thermal-control.compact {
  min-width: 0;
  padding: 9px 10px 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg-soft);
}
.thermal-control.compact label {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
  color: var(--text);
  font-size: .7rem;
}
.thermal-control.compact output {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.thermal-control.compact input {
  width: 100%;
  margin: 0;
}

.thermal-console-body {
  display: grid;
  gap: 10px;
}
.thermal-visual {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #0c1721;
}
.thermal-visual svg {
  display: block;
  width: 100%;
  height: auto;
}
.thermal-telemetry {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: start;
}
.thermal-readouts {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.thermal-readouts > div {
  min-width: 0;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.thermal-readouts span {
  display: block;
  color: var(--muted);
  font-size: .58rem;
  margin-bottom: 3px;
}
.thermal-readouts strong {
  display: block;
  color: var(--text);
  font-size: .74rem;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.thermal-equation {
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.thermal-equation > span {
  display: block;
  color: var(--muted);
  font-size: .56rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.thermal-equation strong {
  display: block;
  margin: 3px 0 5px;
  color: var(--text);
  font-family: "Times New Roman",Cambria,serif;
  font-size: 1.1rem;
}
.thermal-equation small {
  display: block;
  color: var(--muted);
  font-size: .59rem;
}
.thermal-console-note {
  display: grid;
  gap: 3px;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--bg-soft);
}
.thermal-console-note strong {
  color: var(--accent);
  font-size: .66rem;
}
.thermal-console-note span {
  color: var(--muted);
  font-size: .62rem;
  line-height: 1.32;
}

@media (max-width: 679px) {
  .thermal-lab { padding: 10px; }
  .thermal-console-head { margin-bottom: 8px; }
  .thermal-console-head strong { font-size: .72rem; }
  .thermal-reset { padding: .38rem .52rem; font-size: .6rem; }
  .thermal-quick-controls { gap: 5px; margin-bottom: 7px; }
  .thermal-control.compact { padding: 7px 6px 6px; }
  .thermal-control.compact label {
    display: grid;
    gap: 2px;
    margin-bottom: 4px;
    font-size: .59rem;
    line-height: 1.15;
  }
  .thermal-control.compact output { font-size: .58rem; white-space: normal; }
  .thermal-control.compact input { height: 18px; }
  .thermal-console-body { gap: 7px; }
  .thermal-readouts > div { padding: 7px; }
  .thermal-readouts strong { font-size: .68rem; }
  .thermal-equation { padding: 8px 9px; }
  .thermal-console-note { display: none; }
  .thermal-visual svg { max-height: 235px; }
}
@media (min-width: 680px) {
  .thermal-console-body {
    grid-template-columns: minmax(0,1.5fr) minmax(215px,.5fr);
    align-items: stretch;
  }
  .thermal-visual { align-self: stretch; }
  .thermal-visual svg {
    height: 100%;
    max-height: 325px;
    object-fit: contain;
  }
}
@media (min-width: 980px) {
  .thermal-lab { padding: 12px; }
  .thermal-console-head { margin-bottom: 8px; }
  .thermal-quick-controls { margin-bottom: 8px; }
  .thermal-control.compact { padding: 8px 9px 7px; }
  .thermal-console-body { gap: 8px; }
  .thermal-visual svg { max-height: 305px; }
}
@media (min-width: 680px) and (min-height: 700px) {
  .thermal-lab {
    max-height: calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K2 · Internal Energy Change Lab · compact console */
.internal-lab {
  margin-top: 20px;
  scroll-margin-top: calc(var(--header-h) + var(--subnav-h) + 12px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  padding: 14px;
}
.internal-console-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:10px;
}
.internal-console-head > div { min-width:0; }
.internal-console-head .kicker { display:block; margin-bottom:2px; }
.internal-console-head strong {
  display:block;
  color:var(--text);
  font-size:.82rem;
}
.internal-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.internal-reset:hover { color:var(--text); }

.internal-quick-controls {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.internal-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.internal-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.7rem;
}
.internal-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.internal-control.compact input { width:100%; margin:0; }

.internal-console-body {
  display:grid;
  gap:10px;
}
.internal-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.internal-visual svg {
  display:block;
  width:100%;
  height:auto;
}
.internal-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.internal-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.internal-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.internal-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.internal-readouts strong {
  display:block;
  color:var(--text);
  font-size:.74rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.internal-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.internal-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.internal-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.08rem;
}
.internal-equation small {
  display:block;
  color:var(--muted);
  font-size:.59rem;
}
.internal-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.internal-console-note strong {
  color:var(--accent);
  font-size:.66rem;
}
.internal-console-note span {
  color:var(--muted);
  font-size:.62rem;
  line-height:1.32;
}

@media (max-width:679px) {
  .internal-lab { padding:10px; }
  .internal-console-head { margin-bottom:8px; }
  .internal-console-head strong { font-size:.72rem; }
  .internal-reset { padding:.38rem .52rem; font-size:.6rem; }
  .internal-quick-controls { gap:5px; margin-bottom:7px; }
  .internal-control.compact { padding:7px 6px 6px; }
  .internal-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .internal-control.compact output { font-size:.58rem; white-space:normal; }
  .internal-control.compact input { height:18px; }
  .internal-console-body { gap:7px; }
  .internal-readouts > div { padding:7px; }
  .internal-readouts strong { font-size:.68rem; }
  .internal-equation { padding:8px 9px; }
  .internal-console-note { display:none; }
  .internal-visual svg { max-height:235px; }
}
@media (min-width:680px) {
  .internal-console-body {
    grid-template-columns:minmax(0,1.5fr) minmax(215px,.5fr);
    align-items:stretch;
  }
  .internal-visual { align-self:stretch; }
  .internal-visual svg {
    height:100%;
    max-height:325px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .internal-lab { padding:12px; }
  .internal-console-head { margin-bottom:8px; }
  .internal-quick-controls { margin-bottom:8px; }
  .internal-control.compact { padding:8px 9px 7px; }
  .internal-console-body { gap:8px; }
  .internal-visual svg { max-height:305px; }
}
@media (min-width:680px) and (min-height:700px) {
  .internal-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K3 · Heat Capacity Lab · compact console */
.capacity-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.capacity-console-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:10px;
}
.capacity-console-head > div { min-width:0; }
.capacity-console-head .kicker { display:block; margin-bottom:2px; }
.capacity-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.capacity-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.capacity-reset:hover { color:var(--text); }

.capacity-quick-controls {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.capacity-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.capacity-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.7rem;
}
.capacity-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.capacity-control.compact input { width:100%; margin:0; }

.capacity-console-body { display:grid; gap:10px; }
.capacity-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.capacity-visual svg { display:block; width:100%; height:auto; }

.capacity-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.capacity-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.capacity-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.capacity-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.capacity-readouts strong {
  display:block;
  color:var(--text);
  font-size:.72rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.capacity-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.capacity-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.capacity-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.08rem;
}
.capacity-equation small {
  display:block;
  color:var(--muted);
  font-size:.59rem;
  line-height:1.25;
}
.capacity-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.capacity-console-note strong { color:var(--accent); font-size:.66rem; }
.capacity-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .capacity-lab { padding:10px; }
  .capacity-console-head { margin-bottom:8px; }
  .capacity-console-head strong { font-size:.72rem; }
  .capacity-reset { padding:.38rem .52rem; font-size:.6rem; }
  .capacity-quick-controls { gap:5px; margin-bottom:7px; }
  .capacity-control.compact { padding:7px 6px 6px; }
  .capacity-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .capacity-control.compact output { font-size:.58rem; white-space:normal; }
  .capacity-control.compact input { height:18px; }
  .capacity-console-body { gap:7px; }
  .capacity-readouts > div { padding:7px; }
  .capacity-readouts strong { font-size:.66rem; }
  .capacity-equation { padding:8px 9px; }
  .capacity-console-note { display:none; }
  .capacity-visual svg { max-height:235px; }
}
@media (min-width:680px) {
  .capacity-console-body {
    grid-template-columns:minmax(0,1.52fr) minmax(220px,.48fr);
    align-items:stretch;
  }
  .capacity-visual { align-self:stretch; }
  .capacity-visual svg {
    height:100%;
    max-height:325px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .capacity-lab { padding:12px; }
  .capacity-console-head { margin-bottom:8px; }
  .capacity-quick-controls { margin-bottom:8px; }
  .capacity-control.compact { padding:8px 9px 7px; }
  .capacity-console-body { gap:8px; }
  .capacity-visual svg { max-height:305px; }
}
@media (min-width:680px) and (min-height:700px) {
  .capacity-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K4 · First Law Energy Lab · compact console */
.firstlaw-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.firstlaw-console-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:10px;
}
.firstlaw-console-head > div { min-width:0; }
.firstlaw-console-head .kicker { display:block; margin-bottom:2px; }
.firstlaw-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.firstlaw-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.firstlaw-reset:hover { color:var(--text); }

.firstlaw-quick-controls {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.firstlaw-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.firstlaw-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.firstlaw-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.firstlaw-control.compact input { width:100%; margin:0; }

.firstlaw-console-body { display:grid; gap:10px; }
.firstlaw-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.firstlaw-visual svg { display:block; width:100%; height:auto; }

.firstlaw-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.firstlaw-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.firstlaw-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.firstlaw-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.firstlaw-readouts strong {
  display:block;
  color:var(--text);
  font-size:.72rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.firstlaw-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.firstlaw-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.firstlaw-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.08rem;
}
.firstlaw-equation small {
  display:block;
  color:var(--muted);
  font-size:.59rem;
}
.firstlaw-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.firstlaw-console-note strong { color:var(--accent); font-size:.66rem; }
.firstlaw-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .firstlaw-lab { padding:10px; }
  .firstlaw-console-head { margin-bottom:8px; }
  .firstlaw-console-head strong { font-size:.72rem; }
  .firstlaw-reset { padding:.38rem .52rem; font-size:.6rem; }
  .firstlaw-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .firstlaw-control.compact { padding:7px 6px 6px; }
  .firstlaw-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .firstlaw-control.compact output { font-size:.58rem; white-space:normal; }
  .firstlaw-control.compact input { height:18px; }
  .firstlaw-console-body { gap:7px; }
  .firstlaw-readouts > div { padding:7px; }
  .firstlaw-readouts strong { font-size:.66rem; }
  .firstlaw-equation { padding:8px 9px; }
  .firstlaw-console-note { display:none; }
  .firstlaw-visual svg { max-height:240px; }
}
@media (min-width:680px) {
  .firstlaw-console-body {
    grid-template-columns:minmax(0,1.52fr) minmax(220px,.48fr);
    align-items:stretch;
  }
  .firstlaw-visual { align-self:stretch; }
  .firstlaw-visual svg {
    height:100%;
    max-height:330px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .firstlaw-lab { padding:12px; }
  .firstlaw-console-head { margin-bottom:8px; }
  .firstlaw-quick-controls { margin-bottom:8px; }
  .firstlaw-control.compact { padding:8px 9px 7px; }
  .firstlaw-console-body { gap:8px; }
  .firstlaw-visual svg { max-height:310px; }
}
@media (min-width:680px) and (min-height:700px) {
  .firstlaw-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K5 · p-V Process Lab · compact console */
.pvpath-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.pvpath-console-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.pvpath-console-head > div { min-width:0; }
.pvpath-console-head .kicker { display:block; margin-bottom:2px; }
.pvpath-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.pvpath-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.pvpath-reset:hover { color:var(--text); }

.pvpath-modes {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:6px;
  margin-bottom:8px;
}
.pvpath-modes button {
  appearance:none;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:7px 9px;
  font:inherit;
  cursor:pointer;
}
.pvpath-modes button b {
  display:block;
  color:var(--text);
  font-size:.68rem;
  margin-bottom:1px;
}
.pvpath-modes button span { display:block; font-size:.56rem; }
.pvpath-modes button.active {
  background:var(--accent-soft);
  border-color:var(--line-strong);
}
.pvpath-modes button.active b { color:var(--accent); }

.pvpath-quick-controls {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.pvpath-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.pvpath-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.pvpath-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.pvpath-control.compact input { width:100%; margin:0; }

.pvpath-console-body { display:grid; gap:10px; }
.pvpath-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.pvpath-visual svg { display:block; width:100%; height:auto; }

.pvpath-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.pvpath-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.pvpath-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.pvpath-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.pvpath-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.pvpath-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.pvpath-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.pvpath-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.pvpath-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.pvpath-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.pvpath-console-note strong { color:var(--accent); font-size:.66rem; }
.pvpath-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .pvpath-lab { padding:10px; }
  .pvpath-console-head { margin-bottom:7px; }
  .pvpath-console-head strong { font-size:.71rem; }
  .pvpath-reset { padding:.38rem .52rem; font-size:.6rem; }
  .pvpath-modes { gap:4px; margin-bottom:6px; }
  .pvpath-modes button { padding:5px 6px; }
  .pvpath-modes button span { display:none; }
  .pvpath-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .pvpath-control.compact { padding:7px 6px 6px; }
  .pvpath-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .pvpath-control.compact output { font-size:.58rem; white-space:normal; }
  .pvpath-control.compact input { height:18px; }
  .pvpath-console-body { gap:7px; }
  .pvpath-readouts { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .pvpath-readouts > div { padding:6px; }
  .pvpath-readouts span { font-size:.53rem; }
  .pvpath-readouts strong { font-size:.61rem; }
  .pvpath-equation { padding:7px 8px; }
  .pvpath-console-note { display:none; }
  .pvpath-visual svg { max-height:210px; }
}
@media (min-width:680px) {
  .pvpath-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .pvpath-visual { align-self:stretch; }
  .pvpath-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .pvpath-lab { padding:12px; }
  .pvpath-console-head { margin-bottom:7px; }
  .pvpath-modes { margin-bottom:7px; }
  .pvpath-quick-controls { margin-bottom:8px; }
  .pvpath-control.compact { padding:8px 9px 7px; }
  .pvpath-console-body { gap:8px; }
  .pvpath-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .pvpath-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* C026 · explicit model-validity envelope */
.model-envelope {
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
@media (max-width:679px) {
  .model-envelope { font-size:.54rem; }
}


/* M2K6 · Dry Adiabatic Process Lab · compact console */
.adiabatic-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.adiabatic-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.adiabatic-console-head > div { min-width:0; }
.adiabatic-console-head .kicker { display:block; margin-bottom:2px; }
.adiabatic-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.adiabatic-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.adiabatic-reset:hover { color:var(--text); }

.adiabatic-quick-controls {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.adiabatic-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.adiabatic-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.adiabatic-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.adiabatic-control.compact input { width:100%; margin:0; }

.adiabatic-console-body { display:grid; gap:10px; }
.adiabatic-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.adiabatic-visual svg { display:block; width:100%; height:auto; }

.adiabatic-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.adiabatic-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.adiabatic-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.adiabatic-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.adiabatic-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.adiabatic-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.adiabatic-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.adiabatic-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.adiabatic-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.adiabatic-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.adiabatic-console-note strong { color:var(--accent); font-size:.66rem; }
.adiabatic-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .adiabatic-lab { padding:10px; }
  .adiabatic-console-head { margin-bottom:7px; }
  .adiabatic-console-head strong { font-size:.71rem; }
  .adiabatic-reset { padding:.38rem .52rem; font-size:.6rem; }
  .adiabatic-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .adiabatic-control.compact { padding:7px 6px 6px; }
  .adiabatic-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .adiabatic-control.compact output { font-size:.58rem; white-space:normal; }
  .adiabatic-control.compact input { height:18px; }
  .adiabatic-console-body { gap:7px; }
  .adiabatic-readouts { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .adiabatic-readouts > div { padding:6px; }
  .adiabatic-readouts span { font-size:.53rem; }
  .adiabatic-readouts strong { font-size:.61rem; }
  .adiabatic-equation { padding:7px 8px; }
  .adiabatic-console-note { display:none; }
  .adiabatic-visual svg { max-height:210px; }
}
@media (min-width:680px) {
  .adiabatic-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .adiabatic-visual { align-self:stretch; }
  .adiabatic-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .adiabatic-lab { padding:12px; }
  .adiabatic-console-head { margin-bottom:7px; }
  .adiabatic-quick-controls { margin-bottom:8px; }
  .adiabatic-control.compact { padding:8px 9px 7px; }
  .adiabatic-console-body { gap:8px; }
  .adiabatic-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .adiabatic-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K7 · Potential Temperature Lab · compact console */
.theta-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.theta-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.theta-console-head > div { min-width:0; }
.theta-console-head .kicker { display:block; margin-bottom:2px; }
.theta-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.theta-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.theta-reset:hover { color:var(--text); }

.theta-quick-controls {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.theta-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.theta-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.theta-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.theta-control.compact input { width:100%; margin:0; }

.theta-console-body { display:grid; gap:10px; }
.theta-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.theta-visual svg { display:block; width:100%; height:auto; }

.theta-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.theta-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.theta-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.theta-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.theta-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.theta-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.theta-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.theta-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.theta-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.theta-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.theta-console-note strong { color:var(--accent); font-size:.66rem; }
.theta-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .theta-lab { padding:10px; }
  .theta-console-head { margin-bottom:7px; }
  .theta-console-head strong { font-size:.71rem; }
  .theta-reset { padding:.38rem .52rem; font-size:.6rem; }
  .theta-quick-controls {
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .theta-control.compact { padding:7px 6px 6px; }
  .theta-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .theta-control.compact output { font-size:.58rem; white-space:normal; }
  .theta-control.compact input { height:18px; }
  .theta-console-body { gap:7px; }
  .theta-readouts { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .theta-readouts > div { padding:6px; }
  .theta-readouts span { font-size:.53rem; }
  .theta-readouts strong { font-size:.61rem; }
  .theta-equation { padding:7px 8px; }
  .theta-console-note { display:none; }
  .theta-visual svg { max-height:210px; }
}
@media (min-width:680px) {
  .theta-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .theta-visual { align-self:stretch; }
  .theta-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .theta-lab { padding:12px; }
  .theta-console-head { margin-bottom:7px; }
  .theta-quick-controls { margin-bottom:8px; }
  .theta-control.compact { padding:8px 9px 7px; }
  .theta-console-body { gap:8px; }
  .theta-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .theta-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K8 · Dry Lapse Rate Lab · compact console */
.lapse-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.lapse-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.lapse-console-head > div { min-width:0; }
.lapse-console-head .kicker { display:block; margin-bottom:2px; }
.lapse-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.lapse-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.lapse-reset:hover { color:var(--text); }

.lapse-quick-controls {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.lapse-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.lapse-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.lapse-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.lapse-control.compact input { width:100%; margin:0; }

.lapse-console-body { display:grid; gap:10px; }
.lapse-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.lapse-visual svg { display:block; width:100%; height:auto; }

.lapse-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.lapse-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.lapse-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.lapse-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.lapse-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.lapse-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.lapse-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.lapse-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.lapse-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.lapse-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.lapse-console-note strong { color:var(--accent); font-size:.66rem; }
.lapse-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .lapse-lab { padding:10px; }
  .lapse-console-head { margin-bottom:7px; }
  .lapse-console-head strong { font-size:.71rem; }
  .lapse-reset { padding:.38rem .52rem; font-size:.6rem; }
  .lapse-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .lapse-control.compact { padding:7px 6px 6px; }
  .lapse-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .lapse-control.compact output { font-size:.58rem; white-space:normal; }
  .lapse-control.compact input { height:18px; }
  .lapse-console-body { gap:7px; }
  .lapse-readouts { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .lapse-readouts > div { padding:6px; }
  .lapse-readouts span { font-size:.53rem; }
  .lapse-readouts strong { font-size:.61rem; }
  .lapse-equation { padding:7px 8px; }
  .lapse-console-note { display:none; }
  .lapse-visual svg { max-height:210px; }
}
@media (min-width:680px) {
  .lapse-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .lapse-visual { align-self:stretch; }
  .lapse-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .lapse-lab { padding:12px; }
  .lapse-console-head { margin-bottom:7px; }
  .lapse-quick-controls { margin-bottom:8px; }
  .lapse-control.compact { padding:8px 9px 7px; }
  .lapse-console-body { gap:8px; }
  .lapse-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .lapse-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K9 · Parcel Energy Lab · compact console */
.parcel-energy-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.parcel-energy-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.parcel-energy-console-head > div { min-width:0; }
.parcel-energy-console-head .kicker { display:block; margin-bottom:2px; }
.parcel-energy-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.parcel-energy-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.parcel-energy-reset:hover { color:var(--text); }

.parcel-energy-quick-controls {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.parcel-energy-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.parcel-energy-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.parcel-energy-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.parcel-energy-control.compact input { width:100%; margin:0; }

.parcel-energy-console-body { display:grid; gap:10px; }
.parcel-energy-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.parcel-energy-visual svg { display:block; width:100%; height:auto; }

.parcel-energy-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.parcel-energy-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.parcel-energy-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.parcel-energy-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.parcel-energy-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.parcel-energy-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.parcel-energy-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.parcel-energy-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.parcel-energy-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.parcel-energy-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.parcel-energy-console-note strong { color:var(--accent); font-size:.66rem; }
.parcel-energy-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .parcel-energy-lab { padding:10px; }
  .parcel-energy-console-head { margin-bottom:7px; }
  .parcel-energy-console-head strong { font-size:.71rem; }
  .parcel-energy-reset { padding:.38rem .52rem; font-size:.6rem; }
  .parcel-energy-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .parcel-energy-control.compact { padding:7px 6px 6px; }
  .parcel-energy-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .parcel-energy-control.compact output { font-size:.58rem; white-space:normal; }
  .parcel-energy-control.compact input { height:18px; }
  .parcel-energy-console-body { gap:7px; }
  .parcel-energy-readouts { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .parcel-energy-readouts > div { padding:6px; }
  .parcel-energy-readouts span { font-size:.53rem; }
  .parcel-energy-readouts strong { font-size:.61rem; }
  .parcel-energy-equation { padding:7px 8px; }
  .parcel-energy-console-note { display:none; }
  .parcel-energy-visual svg { max-height:210px; }
}
@media (min-width:680px) {
  .parcel-energy-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .parcel-energy-visual { align-self:stretch; }
  .parcel-energy-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .parcel-energy-lab { padding:12px; }
  .parcel-energy-console-head { margin-bottom:7px; }
  .parcel-energy-quick-controls { margin-bottom:8px; }
  .parcel-energy-control.compact { padding:8px 9px 7px; }
  .parcel-energy-console-body { gap:8px; }
  .parcel-energy-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .parcel-energy-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M2K10 · Atmospheric Column Budget Lab · compact console */
.column-budget-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.column-budget-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.column-budget-console-head > div { min-width:0; }
.column-budget-console-head .kicker { display:block; margin-bottom:2px; }
.column-budget-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.column-budget-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.column-budget-reset:hover { color:var(--text); }

.column-budget-quick-controls {
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.column-budget-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.column-budget-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.column-budget-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.column-budget-control.compact input { width:100%; margin:0; }

.column-budget-console-body { display:grid; gap:10px; }
.column-budget-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.column-budget-visual svg { display:block; width:100%; height:auto; }

.column-budget-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.column-budget-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.column-budget-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.column-budget-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.column-budget-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.column-budget-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.column-budget-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.column-budget-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.column-budget-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.column-budget-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.column-budget-console-note strong { color:var(--accent); font-size:.66rem; }
.column-budget-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .column-budget-lab { padding:10px; }
  .column-budget-console-head { margin-bottom:7px; }
  .column-budget-console-head strong { font-size:.71rem; }
  .column-budget-reset { padding:.38rem .52rem; font-size:.6rem; }
  .column-budget-quick-controls {
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .column-budget-control.compact { padding:7px 6px 6px; }
  .column-budget-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .column-budget-control.compact output { font-size:.58rem; white-space:normal; }
  .column-budget-control.compact input { height:18px; }
  .column-budget-console-body { gap:7px; }
  .column-budget-readouts { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .column-budget-readouts > div { padding:6px; }
  .column-budget-readouts span { font-size:.53rem; }
  .column-budget-readouts strong { font-size:.61rem; }
  .column-budget-equation { padding:7px 8px; }
  .column-budget-console-note { display:none; }
  .column-budget-visual svg { max-height:180px; }
}

@media (min-width:680px) and (max-width:979px) {
  .column-budget-quick-controls { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (min-width:680px) {
  .column-budget-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .column-budget-visual { align-self:stretch; }
  .column-budget-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .column-budget-lab { padding:12px; }
  .column-budget-console-head { margin-bottom:7px; }
  .column-budget-quick-controls { margin-bottom:8px; }
  .column-budget-control.compact { padding:8px 9px 7px; }
  .column-budget-console-body { gap:8px; }
  .column-budget-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .column-budget-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M3K1 · Bulk Water Phase Lab · compact console */
.phase-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.phase-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.phase-console-head > div { min-width:0; }
.phase-console-head .kicker { display:block; margin-bottom:2px; }
.phase-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.phase-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.phase-reset:hover { color:var(--text); }

.phase-quick-controls {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.phase-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.phase-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.phase-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.phase-control.compact input { width:100%; margin:0; }

.phase-console-body { display:grid; gap:10px; }
.phase-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.phase-visual svg { display:block; width:100%; height:auto; }

.phase-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.phase-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.phase-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.phase-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.phase-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.phase-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.phase-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.phase-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.phase-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.phase-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.phase-console-note strong { color:var(--accent); font-size:.66rem; }
.phase-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .phase-lab { padding:10px; }
  .phase-console-head { margin-bottom:7px; }
  .phase-console-head strong { font-size:.71rem; }
  .phase-reset { padding:.38rem .52rem; font-size:.6rem; }
  .phase-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .phase-control.compact { padding:7px 6px 6px; }
  .phase-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .phase-control.compact output { font-size:.58rem; white-space:normal; }
  .phase-control.compact input { height:18px; }
  .phase-console-body { gap:7px; }
  .phase-readouts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .phase-readouts > div { padding:6px; }
  .phase-readouts span { font-size:.53rem; }
  .phase-readouts strong { font-size:.61rem; }
  .phase-equation { padding:7px 8px; }
  .phase-console-note { display:none; }
  .phase-visual svg { max-height:180px; }
}

@media (min-width:680px) and (max-width:979px) {
  .phase-quick-controls { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:680px) {
  .phase-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .phase-visual { align-self:stretch; }
  .phase-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .phase-lab { padding:12px; }
  .phase-console-head { margin-bottom:7px; }
  .phase-quick-controls { margin-bottom:8px; }
  .phase-control.compact { padding:8px 9px 7px; }
  .phase-console-body { gap:8px; }
  .phase-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .phase-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M3K2 · Vapor Mixture Lab · compact console */
.vapor-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.vapor-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.vapor-console-head > div { min-width:0; }
.vapor-console-head .kicker { display:block; margin-bottom:2px; }
.vapor-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.vapor-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.vapor-reset:hover { color:var(--text); }

.vapor-quick-controls {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.vapor-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.vapor-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.vapor-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.vapor-control.compact input { width:100%; margin:0; }

.vapor-console-body { display:grid; gap:10px; }
.vapor-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.vapor-visual svg { display:block; width:100%; height:auto; }

.vapor-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.vapor-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.vapor-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.vapor-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.vapor-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.vapor-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.vapor-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.vapor-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.vapor-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.vapor-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.vapor-console-note strong { color:var(--accent); font-size:.66rem; }
.vapor-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .vapor-lab { padding:10px; }
  .vapor-console-head { margin-bottom:7px; }
  .vapor-console-head strong { font-size:.71rem; }
  .vapor-reset { padding:.38rem .52rem; font-size:.6rem; }
  .vapor-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .vapor-control.compact { padding:7px 6px 6px; }
  .vapor-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .vapor-control.compact output { font-size:.58rem; white-space:normal; }
  .vapor-control.compact input { height:18px; }
  .vapor-console-body { gap:7px; }
  .vapor-readouts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .vapor-readouts > div { padding:6px; }
  .vapor-readouts span { font-size:.53rem; }
  .vapor-readouts strong { font-size:.61rem; }
  .vapor-equation { padding:7px 8px; }
  .vapor-console-note { display:none; }
  .vapor-visual svg { max-height:180px; }
}

@media (min-width:680px) and (max-width:979px) {
  .vapor-quick-controls { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:680px) {
  .vapor-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .vapor-visual { align-self:stretch; }
  .vapor-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .vapor-lab { padding:12px; }
  .vapor-console-head { margin-bottom:7px; }
  .vapor-quick-controls { margin-bottom:8px; }
  .vapor-control.compact { padding:8px 9px 7px; }
  .vapor-console-body { gap:8px; }
  .vapor-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .vapor-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M3K3 · Dalton Partial Pressure Lab · compact console */
.partial-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.partial-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.partial-console-head > div { min-width:0; }
.partial-console-head .kicker { display:block; margin-bottom:2px; }
.partial-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.partial-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.partial-reset:hover { color:var(--text); }

.partial-quick-controls {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.partial-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.partial-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.partial-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.partial-control.compact input { width:100%; margin:0; }

.partial-console-body { display:grid; gap:10px; }
.partial-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.partial-visual svg { display:block; width:100%; height:auto; }

.partial-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.partial-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.partial-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.partial-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.partial-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.partial-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.partial-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.partial-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.partial-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.partial-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.partial-console-note strong { color:var(--accent); font-size:.66rem; }
.partial-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .partial-lab { padding:10px; }
  .partial-console-head { margin-bottom:7px; }
  .partial-console-head strong { font-size:.71rem; }
  .partial-reset { padding:.38rem .52rem; font-size:.6rem; }
  .partial-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .partial-control.compact { padding:7px 6px 6px; }
  .partial-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .partial-control.compact output { font-size:.58rem; white-space:normal; }
  .partial-control.compact input { height:18px; }
  .partial-console-body { gap:7px; }
  .partial-readouts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .partial-readouts > div { padding:6px; }
  .partial-readouts span { font-size:.53rem; }
  .partial-readouts strong { font-size:.61rem; }
  .partial-equation { padding:7px 8px; }
  .partial-console-note { display:none; }
  .partial-visual svg { max-height:180px; }
}

@media (min-width:680px) and (max-width:979px) {
  .partial-quick-controls { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:680px) {
  .partial-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .partial-visual { align-self:stretch; }
  .partial-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .partial-lab { padding:12px; }
  .partial-console-head { margin-bottom:7px; }
  .partial-quick-controls { margin-bottom:8px; }
  .partial-control.compact { padding:8px 9px 7px; }
  .partial-console-body { gap:8px; }
  .partial-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .partial-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M3K4 · Saturation Vapor Pressure Lab · compact console */
.saturation-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.saturation-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.saturation-console-head > div { min-width:0; }
.saturation-console-head .kicker { display:block; margin-bottom:2px; }
.saturation-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.saturation-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.saturation-reset:hover { color:var(--text); }

.saturation-quick-controls {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.saturation-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.saturation-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.saturation-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.saturation-control.compact input { width:100%; margin:0; }

.saturation-console-body { display:grid; gap:10px; }
.saturation-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.saturation-visual svg { display:block; width:100%; height:auto; }

.saturation-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.saturation-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.saturation-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.saturation-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.saturation-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.saturation-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.saturation-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.saturation-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.saturation-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.saturation-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.saturation-console-note strong { color:var(--accent); font-size:.66rem; }
.saturation-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .saturation-lab { padding:10px; }
  .saturation-console-head { margin-bottom:7px; }
  .saturation-console-head strong { font-size:.71rem; }
  .saturation-reset { padding:.38rem .52rem; font-size:.6rem; }
  .saturation-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .saturation-control.compact { padding:7px 6px 6px; }
  .saturation-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .saturation-control.compact output { font-size:.58rem; white-space:normal; }
  .saturation-control.compact input { height:18px; }
  .saturation-console-body { gap:7px; }
  .saturation-readouts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .saturation-readouts > div { padding:6px; }
  .saturation-readouts span { font-size:.53rem; }
  .saturation-readouts strong { font-size:.61rem; }
  .saturation-equation { padding:7px 8px; }
  .saturation-console-note { display:none; }
  .saturation-visual svg { max-height:180px; }
}

@media (min-width:680px) and (max-width:979px) {
  .saturation-quick-controls { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:680px) {
  .saturation-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .saturation-visual { align-self:stretch; }
  .saturation-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .saturation-lab { padding:12px; }
  .saturation-console-head { margin-bottom:7px; }
  .saturation-quick-controls { margin-bottom:8px; }
  .saturation-control.compact { padding:8px 9px 7px; }
  .saturation-console-body { gap:8px; }
  .saturation-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .saturation-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}


/* M3K5 · Relative Humidity Lab · compact console */
.rh-lab {
  margin-top:20px;
  scroll-margin-top:calc(var(--header-h) + var(--subnav-h) + 12px);
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--surface);
  padding:14px;
}
.rh-console-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:9px;
}
.rh-console-head > div { min-width:0; }
.rh-console-head .kicker { display:block; margin-bottom:2px; }
.rh-console-head strong { display:block; color:var(--text); font-size:.82rem; }
.rh-reset {
  appearance:none;
  flex:0 0 auto;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--bg-soft);
  color:var(--muted);
  padding:.44rem .68rem;
  font:inherit;
  font-size:.66rem;
  cursor:pointer;
}
.rh-reset:hover { color:var(--text); }

.rh-quick-controls {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.rh-control.compact {
  min-width:0;
  padding:9px 10px 8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-soft);
}
.rh-control.compact label {
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
  color:var(--text);
  font-size:.68rem;
}
.rh-control.compact output {
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.rh-control.compact input { width:100%; margin:0; }

.rh-console-body { display:grid; gap:10px; }
.rh-visual {
  min-width:0;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#0c1721;
}
.rh-visual svg { display:block; width:100%; height:auto; }

.rh-telemetry {
  min-width:0;
  display:grid;
  gap:8px;
  align-content:start;
}
.rh-readouts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.rh-readouts > div {
  min-width:0;
  padding:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.rh-readouts span {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  margin-bottom:3px;
}
.rh-readouts strong {
  display:block;
  color:var(--text);
  font-size:.7rem;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.rh-equation {
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:12px;
  background:linear-gradient(135deg,var(--accent-soft),transparent 65%),var(--bg-soft);
}
.rh-equation > span {
  display:block;
  color:var(--muted);
  font-size:.56rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.rh-equation strong {
  display:block;
  margin:3px 0 5px;
  color:var(--text);
  font-family:"Times New Roman",Cambria,serif;
  font-size:1.04rem;
}
.rh-equation small {
  display:block;
  color:var(--muted);
  font-size:.58rem;
  line-height:1.25;
}
.rh-console-note {
  display:grid;
  gap:3px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--bg-soft);
}
.rh-console-note strong { color:var(--accent); font-size:.66rem; }
.rh-console-note span { color:var(--muted); font-size:.62rem; line-height:1.32; }

@media (max-width:679px) {
  .rh-lab { padding:10px; }
  .rh-console-head { margin-bottom:7px; }
  .rh-console-head strong { font-size:.71rem; }
  .rh-reset { padding:.38rem .52rem; font-size:.6rem; }
  .rh-quick-controls {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:5px;
    margin-bottom:7px;
  }
  .rh-control.compact { padding:7px 6px 6px; }
  .rh-control.compact label {
    display:grid;
    gap:2px;
    margin-bottom:4px;
    font-size:.59rem;
    line-height:1.15;
  }
  .rh-control.compact output { font-size:.58rem; white-space:normal; }
  .rh-control.compact input { height:18px; }
  .rh-console-body { gap:7px; }
  .rh-readouts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .rh-readouts > div { padding:6px; }
  .rh-readouts span { font-size:.53rem; }
  .rh-readouts strong { font-size:.61rem; }
  .rh-equation { padding:7px 8px; }
  .rh-console-note { display:none; }
  .rh-visual svg { max-height:180px; }
}

@media (min-width:680px) and (max-width:979px) {
  .rh-quick-controls { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:680px) {
  .rh-console-body {
    grid-template-columns:minmax(0,1.55fr) minmax(225px,.45fr);
    align-items:stretch;
  }
  .rh-visual { align-self:stretch; }
  .rh-visual svg {
    height:100%;
    max-height:335px;
    object-fit:contain;
  }
}
@media (min-width:980px) {
  .rh-lab { padding:12px; }
  .rh-console-head { margin-bottom:7px; }
  .rh-quick-controls { margin-bottom:8px; }
  .rh-control.compact { padding:8px 9px 7px; }
  .rh-console-body { gap:8px; }
  .rh-visual svg { max-height:312px; }
}
@media (min-width:680px) and (min-height:700px) {
  .rh-lab {
    max-height:calc(100vh - var(--header-h) - var(--subnav-h) - 54px);
  }
}
