
:root{color-scheme:dark;--bg:#09111d;--panel:#121e2d;--panel2:#0e1926;--line:#314359;--line2:#526a83;--ink:#f7f9fc;--muted:#b7c6d8;--air:#64d1ff;--exhale:#d9adff;--teal:#8fe5dc;--green:#9be4b3;--yellow:#ffd276;--red:#ff8578;--tissue:#d78389;--mucus:#d4b05d}
*{box-sizing:border-box}html,body{margin:0;width:100%;min-height:100%;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}html{font-size:17px}body{height:100dvh;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button,a.btn{border:1px solid var(--line2);background:#19293b;color:var(--ink);border-radius:9px;padding:8px 11px;min-height:40px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}button:hover,a.btn:hover{background:#253b53}button[aria-pressed=true],button.active{background:#e2edf9;color:#101927;border-color:#e2edf9}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid #fff;outline-offset:2px}
header{height:68px;padding:9px 17px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);background:#0c1624}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}h1{margin:2px 0 0;font-size:clamp(23px,2vw,32px);line-height:1.05}.header-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.header-actions a,.header-actions button{font-size:14px}
main{height:calc(100dvh - 68px);padding:10px 12px;display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:12px;min-height:0}.visual{height:100%;min-height:0;min-width:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:linear-gradient(150deg,#142235,#0b1522);display:grid;grid-template-rows:minmax(0,1fr) auto}.canvas-wrap{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(circle at 48% 42%,rgba(52,81,109,.18),transparent 63%)}canvas{display:block;width:100%;height:100%}.caption{padding:10px 14px;min-height:52px;border-top:1px solid var(--line);background:#18273a;font-size:clamp(16px,1.02vw,19px);line-height:1.28}.caption strong{color:var(--teal)}
.controls{height:100%;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:9px;padding-right:2px}.control{padding:11px 13px;background:var(--panel);border:1px solid var(--line);border-radius:12px}.control h2{font-size:17px;margin:0 0 7px}.control p{margin:0;color:var(--muted);font-size:14px;line-height:1.38}.keypoint{border-left:4px solid var(--teal);padding-left:11px}.keypoint strong{font-size:16px;line-height:1.3;display:block}.tabs,.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.tabs.three,.choice-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.tabs button,.choice-grid button{font-size:13px;padding:7px 6px}.value-row{display:flex;align-items:baseline;gap:8px}.value-row output{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums}.unit{font-size:14px;color:var(--muted)}input[type=range]{width:100%;accent-color:var(--air);height:28px}.range-ends{display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.status{margin-top:8px;padding:8px 10px;border:1px solid #44566d;border-radius:9px;background:var(--panel2);font-size:14px;line-height:1.35}.status strong{display:block;margin-bottom:2px}.status.good{border-color:#426b51}.status.good strong{color:var(--green)}.status.warn{border-color:#8c6a2e;background:#211a0e}.status.warn strong{color:var(--yellow)}.status.critical{border-color:#82413f;background:#241414}.status.critical strong{color:var(--red)}.row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid #29394d}.row:last-child{border-bottom:0}.row span{color:var(--muted);font-size:13px}.row strong{font-size:14px;text-align:right}.small{font-size:12px!important;color:#91a7bf!important}.warning{padding:8px 10px;border:1px solid #82413f;background:#251414;border-radius:9px;color:#ffd1cc;font-weight:700;font-size:13px}.legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:7px;color:var(--muted);font-size:12px}.legend span{display:inline-flex;align-items:center;gap:5px}.dotkey{width:10px;height:10px;border-radius:50%;display:inline-block}
@media(max-width:1100px) and (min-width:821px){main{grid-template-columns:minmax(0,1fr) 305px;padding:8px;gap:8px}.control{padding:10px}.header-actions a{display:none}}
@media(max-width:820px){body{height:auto;overflow:auto}header{height:auto;min-height:62px;padding:9px 10px;align-items:flex-start}.eyebrow{display:none}h1{font-size:22px}.header-actions a{display:none}main{height:auto;grid-template-columns:1fr;padding:8px;gap:9px}.visual{height:auto}.canvas-wrap{height:auto;aspect-ratio:16/10}.caption{font-size:16px;min-height:0}.controls{height:auto;overflow:visible}.tabs.three,.choice-grid.three{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:480px){.tabs.three,.choice-grid.three{grid-template-columns:1fr}.header-actions button{font-size:12px;padding:6px 8px}.control{padding:10px}.canvas-wrap{aspect-ratio:4/3}}
.canvas-wrap:fullscreen,.canvas-wrap:-webkit-full-screen{width:100vw!important;height:100vh!important;max-width:none!important;max-height:none!important;background:#09111d!important}.canvas-wrap:fullscreen canvas,.canvas-wrap:-webkit-full-screen canvas{width:100vw!important;height:100vh!important;display:block!important}


/* 2026-09-26 responsive-only QA patch. Vertical page scroll prevents clipped instructions. */
html,body{max-width:100%;overflow-x:clip}
body{height:auto;min-height:100vh;min-height:100dvh;overflow-y:auto;overscroll-behavior-y:auto}
header{height:auto;min-height:68px;flex-wrap:wrap;align-items:center}
main{height:auto;min-height:calc(100dvh - 85px);align-items:start;grid-template-columns:minmax(0,1fr) minmax(300px,360px)}
.visual{position:sticky;top:8px;height:clamp(455px,calc(100dvh - 90px),940px);min-height:0;min-width:0}
.controls{height:auto;min-height:0;overflow:visible;overflow-wrap:anywhere;padding-bottom:16px}
.controls>*{max-width:100%;min-width:0}
.stage-head,.header-actions,.transport{flex-wrap:wrap}
.scene-shell,.canvas-wrap,.svg-wrap{min-height:0}
@media(min-width:1700px){main{grid-template-columns:minmax(0,1fr) minmax(360px,390px)}}
@media(max-width:1180px){
 body{height:auto;min-height:100dvh;overflow-y:auto}
 header{height:auto;min-height:62px}
 main{grid-template-columns:minmax(0,1fr);height:auto;min-height:0;padding:9px;gap:12px}
 .visual{position:relative;top:auto;height:auto;min-height:0;max-width:100%}
 .scene-shell,.canvas-wrap,.svg-wrap{height:auto;min-height:0;aspect-ratio:16/10}
 .controls{height:auto;min-height:0;overflow:visible}
}
@media(max-width:620px){
 header{padding:9px 10px;gap:8px}
 h1{font-size:clamp(20px,6vw,27px);overflow-wrap:anywhere}
 .header-actions{gap:6px;max-width:100%;justify-content:flex-start}
 .header-actions button,.header-actions a{min-width:0;white-space:normal;overflow-wrap:anywhere}
 main{padding:7px;gap:10px}
 .scene-shell,.canvas-wrap,.svg-wrap{aspect-ratio:4/3}
 .stage-head{gap:7px}
 .caption{min-height:0;overflow-wrap:anywhere}
 .transport{gap:6px}
 .transport>*{min-width:0;overflow-wrap:anywhere}
 .controls{padding-bottom:20px}
 .controls select{display:block;width:100%;max-width:100%;min-width:0}
}
@media(max-height:700px) and (min-width:1181px){
 .visual{height:clamp(400px,calc(100dvh - 80px),620px)}
 main{min-height:0}
}
/* Fullscreen animations are governed by their existing selectors; do not crop canvases. */

.site-copyright{color:var(--muted);font-size:12px;text-align:center;padding:12px 14px;margin:0;border-top:1px solid var(--line);line-height:1.35}
