:root {
  color-scheme:dark;
  --bg:#0b141d;
  --panel:#142532;
  --text:#e7eef4;
  --muted:#9eb6c8;
  --line:#355060;
  --gold:#e8bd6b;
  --mint:#71d7ce;
  --orange:#f4ac68;
  --blue:#76b9ee
}
* {
  box-sizing:border-box
}
body {
  margin:0;
  background:radial-gradient(ellipse at 40% 0,#1c3344 0,transparent 58%),var(--bg);
  color:var(--text);
  font:15px/1.6 Inter,Arial,sans-serif
}
button,input,select {
  font:inherit
}
button,a,input,select,summary {
  -webkit-tap-highlight-color:transparent
}
button,summary {
  cursor:pointer
}
button:disabled {
  opacity:.4;
  cursor:default
}
a {
  color:#b0d5eb;
  text-decoration:none
}
a:hover {
  color:white
}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible {
  outline:2px solid var(--mint);
  outline-offset:4px
}
.shell {
  max-width:1440px;
  margin:auto;
  padding:0 28px
}
.topbar {
  border-bottom:1px solid var(--line);
  background:#0a141ee8
}
.topbar nav {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding-top:14px;
  padding-bottom:14px
}
.brand {
  display:flex;
  align-items:center;
  gap:12px;
  font-size:11px;
  letter-spacing:.08em
}
.brand small {
  display:block;
  color:var(--muted);
  letter-spacing:0;
  margin-top:2px;
  font-size:12px
}
.brand img {
  object-fit:contain
}
.page-head {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  margin-top:30px
}
h1 {
  font-size:clamp(28px,4vw,44px);
  line-height:1.18;
  margin:8px 0 12px;
  letter-spacing:-.035em
}
h2 {
  font-size:18px;
  line-height:1.4;
  margin:0 0 14px
}
.eyebrow {
  font:600 10px/1.5 'IBM Plex Mono',monospace;
  letter-spacing:.13em;
  color:var(--gold)
}
.intro {
  max-width:860px;
  margin:0 0 22px;
  color:var(--muted);
  font-size:16px
}
.pill {
  display:inline-block;
  font:500 10px/1.5 'IBM Plex Mono',monospace;
  white-space:nowrap;
  padding:5px 9px;
  background:#0d1b25;
  border:1px solid var(--line);
  border-radius:8px;
  color:var(--muted)
}
.progress {
  display:flex;
  gap:10px;
  margin-bottom:20px;
  overflow-x:auto;
  padding-bottom:5px
}
.step {
  flex:1;
  min-width:140px;
  white-space:nowrap;
  background:linear-gradient(#263c4c,#152733);
  color:var(--muted);
  border:1px solid var(--line);
  border-radius:12px;
  padding:13px 12px;
  box-shadow:inset 0 1px 0 #ffffff14,0 4px 0 #071019;
  font-size:13px;
  font-weight:600
}
.step b {
  font:500 11px 'IBM Plex Mono',monospace;
  margin-right:8px;
  color:var(--gold)
}
.step.active {
  background:linear-gradient(#3a5e70,#214351);
  color:white;
  border-color:#739dad;
  box-shadow:inset 0 1px 0 #ffffff30,0 4px 0 #0a1b25,0 0 16px #71d7ce14
}
.experience {
  display:grid;
  grid-template-columns:minmax(0,1fr) 360px;
  gap:22px;
  align-items:start
}
.visual-column {
  position:sticky;
  top:18px;
  min-width:0
}
.stage {
  position:relative;
  height:clamp(450px,47vw,640px);
  border:1px solid #527283;
  border-radius:20px;
  overflow:hidden;
  background:radial-gradient(ellipse at 50% 42%,#243f51 0,#142936 56%,#0b1a26 100%);
  box-shadow:inset 0 0 70px #09172360,0 18px 35px #0004
}
.stage canvas {
  display:block;
  width:100%;
  height:100%;
  touch-action:none
}
.stage-hud {
  position:absolute;
  left:16px;
  right:16px;
  top:15px;
  display:flex;
  justify-content:space-between;
  gap:10px;
  pointer-events:none
}
.stage-hud span {
  font:500 10px 'IBM Plex Mono',monospace;
  letter-spacing:.03em;
  background:#0c1a25bd;
  border:1px solid #466475;
  border-radius:8px;
  padding:7px 9px
}
.stage-caption {
  position:absolute;
  bottom:48px;
  left:20px;
  right:20px;
  text-align:center;
  pointer-events:none;
  font-size:12px;
  color:#d3e6f1
}
.stage-caption small {
  display:block;
  margin-top:3px;
  font-size:10px;
  color:var(--muted)
}
.gesture {
  position:absolute;
  bottom:15px;
  left:10px;
  right:10px;
  text-align:center;
  font-size:10px;
  color:#9eb6c8;
  pointer-events:none
}
.toolbar {
  display:flex;
  align-items:center;
  gap:9px;
  flex-wrap:wrap;
  margin-top:14px
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid #486272;
  border-radius:10px;
  background:linear-gradient(#31495a,#1b2e3c);
  color:var(--text);
  padding:9px 13px;
  line-height:1.35;
  font-size:12px;
  font-weight:600;
  box-shadow:inset 0 1px 0 #ffffff1c,0 3px 0 #06121c,0 4px 10px #0004
}
.button:hover:not(:disabled) {
  filter:brightness(1.12)
}
.button:active:not(:disabled) {
  transform:translateY(2px);
  box-shadow:inset 0 1px 3px #0004
}
.button.primary {
  color:#102b31;
  background:linear-gradient(#a6e9de,#62bbb1);
  border-color:#a7e5dc;
  box-shadow:inset 0 1px 0 #fff8,0 3px 0 #28655f,0 6px 18px #64ccc522
}
.button[aria-pressed=false] {
  color:var(--muted)
}
.button.mini {
  padding:6px 8px;
  font-size:10px;
  flex-shrink:0
}
.speed {
  display:flex;
  align-items:center;
  gap:8px;
  font-size:11px;
  flex:1 1 220px
}
.speed input {
  width:100px;
  flex:1;
  min-width:60px
}
.speed output {
  min-width:27px;
  font-family:'IBM Plex Mono',monospace
}
.time-note {
  font-size:10px;
  color:var(--muted);
  width:100%
}
input[type=range] {
  accent-color:var(--mint);
  cursor:pointer;
  min-width:0;
  height:24px
}
.legend {
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  font-size:11px;
  color:var(--muted);
  margin:15px 0
}
.legend span::before,.graph-key span::before {
  content:'';
  display:inline-block;
  width:7px;
  height:7px;
  border-radius:50%;
  background:currentColor;
  margin-right:6px
}
.red {
  color:#e18093
}
.gold {
  color:var(--gold)
}
.aqua {
  color:var(--mint)
}
.green {
  color:#82cdb0
}
.blue {
  color:var(--blue)
}
.orange {
  color:var(--orange)
}
.white {
  color:#e7eef4
}
.info-card,.card {
  background:linear-gradient(145deg,#203443,#12232f);
  border:1px solid var(--line);
  border-radius:16px;
  box-shadow:inset 0 1px 0 #ffffff0c,0 7px 18px #0003;
  padding:20px
}
.info-card {
  border-left:3px solid var(--mint)
}
.info-card h2 {
  margin:8px 0;
  font-size:21px
}
.info-card p {
  color:var(--muted);
  margin:0;
  font-size:13px
}
.microtags {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:14px
}
.microtags span {
  font-size:10px;
  background:#0e1c26;
  padding:4px 8px;
  border-radius:6px;
  color:#aec5d4
}
.panel {
  display:grid;
  gap:16px
}
.model-card {
  border-left:3px solid var(--mint)
}
.scenario-card {
  border-left:3px solid var(--gold)
}
.fluid-card {
  border-left:3px solid var(--blue)
}
.card-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px
}
.card-heading h2 {
  margin:0
}
.select-label {
  display:block;
  font-size:11px;
  color:var(--muted);
  margin-bottom:6px
}
select {
  width:100%;
  border:1px solid #55707f;
  border-radius:8px;
  background:#0f212e;
  color:#dfecf5;
  padding:8px;
  font-size:12px
}
.equation {
  font:500 12px/1.7 'IBM Plex Mono',monospace;
  text-align:center;
  padding:12px 6px;
  border-radius:9px;
  background:#0b1c27;
  color:#bee4ed
}
.small {
  font-size:11px;
  line-height:1.7;
  color:var(--muted);
  margin:10px 0 0
}
.causas {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px
}
.causas button {
  font-size:11px;
  padding:9px 5px;
  line-height:1.35;
  color:#b6cbd8;
  border:1px solid #425e6f;
  background:linear-gradient(#263b4c,#162937);
  border-radius:8px;
  box-shadow:inset 0 1px 0 #ffffff12,0 2px 0 #081822
}
.causas button.on {
  border-color:var(--gold);
  color:#fae8ba;
  background:linear-gradient(#554834,#332e27)
}
.volume {
  display:flex;
  align-items:baseline;
  gap:12px;
  margin:8px 0
}
.volume b {
  font:500 34px 'IBM Plex Mono',monospace;
  color:#bbdef5
}
.volume span {
  font-size:11px;
  color:var(--muted)
}
.bar {
  height:5px;
  background:#0a1822;
  border-radius:9px;
  overflow:hidden
}
.bar i {
  display:block;
  height:100%;
  width:0;
  background:#76b9ee;
  transition:width .2s
}
.balance {
  font-size:12px;
  margin:16px 0 0
}
.balance div {
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:7px 0;
  border-bottom:1px solid #3b566444
}
.balance dt {
  color:var(--muted)
}
dd {
  margin:0;
  font-family:'IBM Plex Mono',monospace;
  font-size:11px
}
.balance .net {
  border:0;
  color:var(--gold)
}
.parameters summary {
  font-weight:600;
  font-size:14px;
  list-style-position:outside;
  margin-left:14px
}
.parameters .card-heading {
  margin-top:14px
}
.ctrl {
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:4px;
  font-size:11px;
  color:#bfd1de;
  margin-top:12px
}
.ctrl output {
  font:400 10px 'IBM Plex Mono',monospace;
  color:var(--gold)
}
.ctrl input {
  width:100%;
  margin:0
}
.analysis-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:22px;
  margin-top:24px;
  align-items:stretch
}
.force-card {
  border-left:3px solid var(--orange)
}
.force-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:12px
}
.force-grid>div {
  padding:12px;
  border:1px solid #476174;
  border-left:3px solid var(--orange);
  background:#0d1e2b;
  border-radius:10px
}
.force-grid>div.inward {
  border-left-color:var(--blue)
}
.force-grid span {
  font-size:10px;
  display:block;
  color:var(--muted)
}
.force-grid b,.result b {
  display:block;
  font:500 13px/1.65 'IBM Plex Mono',monospace;
  margin:6px 0;
  color:#f1d1a8
}
.force-grid .inward b {
  color:#afd8f9
}
.force-grid small,.result small {
  font-size:10px;
  color:var(--muted)
}
.result {
  padding:14px;
  margin-top:12px;
  border:1px solid #6a8994;
  border-radius:10px;
  background:#1a3646
}
.result>span {
  font-size:12px
}
.result b {
  color:#e5f6ff
}
.graph-card {
  border-left:3px solid #a692d6
}
.graph-card .card-heading label {
  display:flex;
  align-items:center;
  gap:6px;
  font-size:10px
}
.graph-card select {
  width:82px;
  padding:5px
}
.graph-card canvas,.history-card canvas {
  display:block;
  width:100%;
  height:220px
}
.graph-key {
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  font-size:10px;
  margin-top:8px
}
.ends {
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  margin:16px 0 0
}
.ends dt {
  font-size:10px;
  color:var(--muted)
}
.ends dd {
  font-size:11px
}
.history-card {
  border-left:3px solid var(--blue)
}
.ra-box {
  border-left:3px solid var(--gold)
}
model-viewer {
  width:100%;
  height:190px;
  border-radius:12px;
  background:radial-gradient(#243e50,#0d202c);
  margin-bottom:12px
}
.references {
  margin:30px 0;
  padding:20px 0;
  border-top:1px solid var(--line);
  color:var(--muted);
  font-size:12px
}
.references h2 {
  font-size:15px;
  color:#d1e1ec
}
.references p {
  max-width:1050px
}
footer {
  display:flex;
  align-items:center;
  gap:16px;
  font-size:11px;
  color:var(--muted);
  border-top:1px solid var(--line);
  padding-top:18px!important;
  padding-bottom:18px!important
}
.labels {
  position:absolute;
  inset:0;
  pointer-events:none
}
.labels svg {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:hidden
}
.labels line {
  stroke:#c6e0ee88;
  stroke-width:1
}
.labels circle {
  fill:#b8d9e9
}
.label {
  position:absolute;
  background:#102430df;
  border:1px solid #7498a9;
  border-left:3px solid var(--mint);
  border-radius:7px;
  padding:6px 8px;
  font:500 10px 'IBM Plex Mono',monospace;
  max-width:150px;
  color:#e2f2fa
}
.label.albumina {
  border-left-color:var(--gold)
}
.label.arterial {
  border-left-color:#e17c92
}
.label.venoso {
  border-left-color:#b197cd
}
.label.linfa {
  border-left-color:#7cccaf
}
.stage:fullscreen {
  height:100vh;
  width:100vw;
  border:0;
  border-radius:0
}
.stage:fullscreen .stage-caption {
  bottom:55px
}
@media(min-width:1600px) {
  .stage {
    height:650px
  }

}
@media(max-width:1050px) {
  .experience {
    grid-template-columns:minmax(0,1fr) 310px;
    gap:16px
  }
  .shell {
    padding:0 20px
  }
  .card {
    padding:16px
  }
  .stage {
    height:490px
  }
  .label {
    font-size:9px;
    max-width:130px
  }

}
@media(max-width:820px) {
  .experience {
    grid-template-columns:1fr
  }
  .visual-column {
    position:static
  }
  .panel {
    grid-template-columns:1fr 1fr
  }
  .parameters {
    grid-column:1/-1
  }
  .parameters .ctrl {
    display:inline-flex;
    width:48%;
    margin-right:1%
  }
  .analysis-grid {
    gap:16px
  }
  .stage {
    height:540px
  }

}
@media(max-width:540px) {
  .shell {
    padding:0 14px
  }
  .brand {
    font-size:8px;
    gap:7px
  }
  .brand small {
    font-size:10px
  }
  .brand img {
    width:34px;
    height:34px
  }
  .topbar .button {
    font-size:10px;
    padding:7px
  }
  .page-head {
    margin-top:24px
  }
  .page-head>.pill {
    display:none
  }
  .intro {
    font-size:13px;
    line-height:1.7
  }
  .progress {
    gap:8px
  }
  .step {
    min-width:128px;
    font-size:11px;
    padding:11px 8px
  }
  .experience {
    gap:16px
  }
  .stage {
    height:420px;
    border-radius:14px
  }
  .stage-hud {
    left:10px;
    right:10px;
    top:10px
  }
  .stage-hud span {
    font-size:8px;
    padding:6px
  }
  .stage-caption {
    font-size:10px;
    left:10px;
    right:10px;
    bottom:43px
  }
  .stage-caption small,.gesture {
    font-size:8px
  }
  .toolbar {
    gap:8px
  }
  .toolbar .button {
    font-size:10px;
    padding:9px 11px
  }
  .speed {
    flex:1 1 200px
  }
  .legend {
    gap:12px;
    font-size:10px
  }
  .panel,.analysis-grid {
    grid-template-columns:1fr
  }
  .parameters .ctrl {
    display:flex;
    width:100%;
    margin-right:0
  }
  .card,.info-card {
    padding:17px
  }
  .info-card h2 {
    font-size:19px
  }
  .graph-card canvas,.history-card canvas {
    height:210px
  }
  .label {
    font-size:8px;
    max-width:114px;
    padding:5px 6px
  }
  .force-grid b {
    font-size:11px
  }
  .force-grid>div {
    padding:10px
  }
  .references {
    font-size:11px
  }
  footer {
    font-size:10px
  }

}
@media(prefers-reduced-motion:reduce) {
  * {
    scroll-behavior:auto!important;
    transition:none!important
  }

}
.button.primary[aria-pressed=false] {
  color:#102b31
}
.fullscreen-exit {
  display:none
}
.stage:fullscreen .fullscreen-exit {
  display:inline-flex;
  position:absolute;
  top:60px;
  right:16px;
  z-index:5
}

/* All five levels remain visible, including narrow screens. */
.progress { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); overflow:visible; }
.step { min-width:0; white-space:normal; }
.ra-choices { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:15px 0; }
.ra-choices .button { padding:10px 8px; }
.ra-choices [aria-pressed="true"] { border-color:var(--mint); background:linear-gradient(#365b6a,#1c4049); color:#fff; }
.ra-box h3 { font-size:15px; margin:16px 0 8px; color:var(--mint); }
[data-var] { --variable-color:var(--text); }
[data-var="pc"] { --variable-color:var(--var-pc); }
[data-var="pi"] { --variable-color:var(--var-pi); }
[data-var="oncPlasma"] { --variable-color:var(--var-oncPlasma); }
[data-var="oncInter"] { --variable-color:var(--var-oncInter); }
[data-var="oncSub"] { --variable-color:var(--var-oncSub); }
[data-var="sigma"] { --variable-color:var(--var-sigma); }
[data-var="kf"] { --variable-color:var(--var-kf); }
[data-var="jv"] { --variable-color:var(--var-jv); }
[data-var="efetiva"] { --variable-color:var(--var-efetiva); }
[data-var="volume"] { --variable-color:var(--var-volume); }
[data-var="tempo"] { --variable-color:var(--var-tempo); }
[data-var="linfa"] { --variable-color:var(--var-linfa); }
.var-token { color:var(--variable-color); font-weight:600; }
.ctrl[data-var] { border-left:3px solid var(--variable-color); padding-left:10px; }
.ctrl[data-var] output, .balance [data-var] dt, .balance [data-var] dd,
.ends dd, .volume[data-var] b, .volume[data-var] span, .time-note[data-var],
h2[data-var], .graph-key [data-var] { color:var(--variable-color); }
.ctrl[data-var] input { accent-color:var(--variable-color); }
.force-grid>div[data-var], .force-grid>div[data-var].inward { border-color:var(--variable-color); }
.force-grid>div[data-var]>span, .force-grid>div[data-var] b,
.force-grid>div[data-var].inward b, .result[data-var] b, .result[data-var]>span { color:var(--variable-color); }
.force-grid>div small { color:var(--muted); }
.result[data-var] { border-left:3px solid var(--variable-color); }
.graph-key .sign-key { color:var(--muted); }
.graph-key .sign-key::before { background:#9eb6c8; }
.graph-key [data-var]::before { background:var(--variable-color); }
.variable-guide { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:20px 0; }
.variable-guide article { padding:16px; border:1px solid var(--line); border-left:4px solid var(--variable-color); background:#0e1c27; border-radius:12px; }
.variable-guide h3 { color:var(--variable-color); font-size:14px; line-height:1.5; margin:0 0 8px; }
.variable-guide .unit { display:block; font:11px 'IBM Plex Mono',monospace; color:var(--variable-color); }
.variable-guide p, .interpretation>p, .reading-guide p { color:var(--muted); font-size:13px; }
.interpretation { margin-top:24px; }
.interpretation h3 { font-size:15px; }
.unit-guide dl { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.unit-guide dt { font-family:'IBM Plex Mono',monospace; color:var(--text); }
.unit-guide dd { margin:5px 0 0; color:var(--muted); font-size:12px; }
@media(max-width:900px) { .progress { grid-template-columns:repeat(3,minmax(0,1fr)); } .variable-guide,.unit-guide dl { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:560px) { .progress,.ra-choices { grid-template-columns:repeat(2,minmax(0,1fr)); } .variable-guide,.unit-guide dl { grid-template-columns:1fr; } .ctrl[data-var] { font-size:11px; } }

.ctrl[data-var], .references [data-var], .force-key [data-var] { color:var(--variable-color); }
.bar i { background:var(--var-volume); }
.force-key { display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:15px; font-size:10px; }
.force-key span::before { content:''; display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:6px; background:var(--variable-color); }
.var-token[data-var] { color:var(--variable-color); }
.force-grid .var-token { display:inline; }
