:root{color-scheme:dark;--bg:#0c141e;--panel:#111e2b;--line:#263645;--text:#ecf1f4;--muted:#8eabbc;--accent:#5cdfb6;--ecg:#7df192;--spo2:#58d9ec;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer;min-height:36px;border:1px solid var(--line);border-radius:6px;padding:7px 12px;background:#182734;color:var(--text);font-size:14px;transition:background .15s,border-color .15s}button:hover{background:#243c4b;border-color:#557080}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.primary{background:var(--accent);color:#08251e;border-color:var(--accent);font-weight:700}.primary:hover{background:#8aedcd}.quiet{background:transparent}.app-header{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid var(--line);gap:20px}.brand{color:var(--text);text-decoration:none;display:flex;gap:13px;align-items:center;font-weight:750;font-size:20px;letter-spacing:.17em}.brand-mark{font-size:37px;letter-spacing:-.12em;color:var(--accent);line-height:1}.brand-mark span{font-size:20px;vertical-align:top;letter-spacing:0}.brand-sub{display:block;font-size:10px;letter-spacing:.18em;color:var(--muted);margin-top:5px}.session{display:flex;align-items:center;gap:10px;font-size:12px;letter-spacing:.09em;color:var(--muted)}.led,.status-dot{width:6px;height:6px;border-radius:50%;background:#647b89;display:inline-block}.led.running,.status-dot{background:var(--accent)}.divider{height:18px;width:1px;background:var(--line);margin:0 9px}time{font:20px ui-monospace,monospace;letter-spacing:.05em;color:var(--text)}.header-actions{display:flex;gap:9px}.workspace{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(500px,1.45fr);gap:22px;margin:24px 28px 72px;height:calc(100dvh - 188px);min-height:520px;max-height:1100px}.patient-panel{background:#e1e8ed;border:1px solid #5d6f7e;border-radius:10px;overflow:hidden;color:#263d4f;display:flex;flex-direction:column;position:relative}.panel-top{padding:23px 24px 0;display:flex;justify-content:space-between;align-items:center;z-index:2}.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:750;color:var(--muted)}.patient-panel .eyebrow{color:#637b8c}h1{font-size:23px;font-weight:600;margin:6px 0}.room-tag{font-size:10px;letter-spacing:.08em;border:1px solid #b7c7d1;padding:7px;border-radius:4px}.patient-stage{flex:1;min-height:0;display:flex;justify-content:center;overflow:hidden;position:relative;background:radial-gradient(ellipse,#f0f4f7 0,#d6e1e8 85%)}.patient-art{position:relative;aspect-ratio:720/1000;height:100%;max-width:100%;transform-origin:50% 50%}.patient-art img{width:100%;height:100%;object-fit:contain;display:block}.patient-overlay{position:absolute;inset:0;width:100%;height:100%}.patient-overlay [hidden]{display:none}.skin-tint{position:absolute;inset:0;pointer-events:none;mix-blend-mode:color;opacity:0;background:#b3b1a7;clip-path:polygon(38% 12%,60% 12%,65% 23%,61% 29%,70% 31%,77% 58%,70% 62%,61% 43%,62% 58%,38% 58%,38% 43%,30% 62%,22% 59%,28% 32%,38% 28%,34% 22%)}.patient-art.pale .skin-tint{opacity:.65}.patient-art.cyanotic .skin-tint{opacity:.48;background:#7e91b3}.eye-lids{position:absolute;top:18.4%;left:44.4%;width:11.8%;height:1.2%;opacity:0;background:#d2b19c;border-radius:45%;filter:blur(1px)}.patient-art.coma .eye-lids{opacity:.94}.patient-art.drowsy .eye-lids{opacity:.75}.chest-motion{position:absolute;left:37%;top:28%;width:26%;height:19%;border-radius:45%;box-shadow:inset 0 0 18px #ffffff24;pointer-events:none;opacity:var(--breath-opacity,.3)}.patient-footer{min-height:46px;display:flex;align-items:center;gap:7px;padding:10px 18px;font-size:11px;background:#ecf1f5;border-top:1px solid #c7d4df;z-index:1}.observation-dot{width:6px;height:6px;border-radius:50%;background:#769585}.patient-note{margin-left:auto;color:#788c9c;font-size:10px}.monitor{background:#060d12;border:1px solid #2d4050;border-radius:10px;overflow:hidden;display:flex;flex-direction:column;min-width:0;box-shadow:0 12px 45px #0002}.monitor-top{padding:20px 22px;display:flex;justify-content:space-between;align-items:center;color:#9eb4c4;font-size:11px;letter-spacing:.12em}.monitor-symbol{color:var(--accent);font-size:18px;vertical-align:middle;margin-right:8px}.monitor-mode{border:1px solid #30404b;border-radius:3px;padding:5px 8px;font-size:9px}.alarm-bar{min-height:36px;background:#13232f;display:flex;align-items:center;justify-content:space-between;padding:0 15px;color:#9eb1c0;font-size:12px;gap:10px}.alarm-bar button{padding:4px 7px;min-height:25px;font-size:10px;background:transparent;color:inherit;border-color:currentColor;opacity:.8}.alarm-bar.medium{background:#ebc65a;color:#30280e}.alarm-bar.high{background:#d83944;color:#fff}.alarm-bar.high #alarm-text{animation:alarmblink 1s steps(2) infinite}@keyframes alarmblink{50%{opacity:.45}}.wave-row{display:grid;grid-template-columns:minmax(0,1fr) 175px;flex:1;min-height:165px;border-bottom:1px solid #20303c}.ecg{color:var(--ecg)}.spo2{color:var(--spo2)}.wave-area{position:relative;min-width:0;overflow:hidden;border-right:1px solid #18242d}.wave-title{height:39px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;font-size:10px;letter-spacing:.035em}.wave-title strong{font-size:13px;font-weight:600}.wave-title strong span{margin-left:9px}.wave-title>span{opacity:.55;font-size:10px}.wave-area canvas{width:100%;height:calc(100% - 39px);display:block}.wave-empty{position:absolute;inset:40px 0 0;display:flex;flex-direction:column;gap:7px;justify-content:center;align-items:center;color:#4a6371;font-size:12px;background:#070e14d9}.wave-empty[hidden]{display:none}.empty-icon{font-size:40px;color:#334c5a;line-height:1}.numeric{padding:16px 15px;position:relative;display:flex;flex-direction:column;justify-content:center}.numeric-title{font-size:16px;font-weight:650}.numeric-title small{font-size:11px;font-weight:400;margin-left:6px;opacity:.65}.number{font-size:clamp(52px,5.8vw,86px);font-weight:550;letter-spacing:-.05em;line-height:1.2;font-variant-numeric:tabular-nums}.limits{position:absolute;right:13px;top:68px;font:11px ui-monospace,monospace;opacity:.5;line-height:1.65}.numeric-foot{font-size:10px;opacity:.7;margin-top:8px}.numeric-foot b{font-size:15px}.pressure{min-height:137px;display:flex;align-items:center;padding:21px 22px;gap:18px;color:#ece3da}.pressure-label{align-self:stretch;display:flex;flex-direction:column;gap:4px;min-width:108px}.pressure-label strong{font-size:15px}.pressure-label>span{font-size:10px;opacity:.7}.pressure-label .pressure-status{margin-top:auto;font-size:10px;max-width:135px}.pressure-reading{flex:1;font-size:clamp(28px,3.4vw,49px);white-space:nowrap;letter-spacing:-.04em;font-weight:550;font-variant-numeric:tabular-nums}.pressure-reading small{display:block;font-size:13px;letter-spacing:0;margin-top:4px;color:#acb6b9}.pressure-reading small b{color:#eee;font-size:20px;font-weight:500;margin-left:5px}.pressure-actions{display:flex;flex-direction:column;align-items:center;gap:10px}.pressure-actions button{font-size:11px;background:transparent}.pressure-actions>span{font-size:10px;color:#8fa1aa}.monitor-bottom{height:45px;padding:0 20px;border-top:1px solid #23313c;display:flex;justify-content:space-between;align-items:center;color:#718995;font-size:10px}.monitor-bottom>span:last-child{letter-spacing:.15em}.monitor-bottom b{color:#c1d2dc}.status-dot{width:5px;height:5px;margin-right:5px}.instructor{position:fixed;bottom:0;left:0;right:0;z-index:10;transform:translateY(calc(100% - 40px));transition:transform .24s ease;filter:drop-shadow(0 -12px 28px #0005)}.instructor.open,.instructor:focus-within{transform:translateY(0)}.drawer-handle{display:flex;align-items:center;justify-content:center;gap:15px;width:100%;height:40px;border-radius:0;background:#15232f;border-top:1px solid #3b5261;font-size:10px;font-weight:650;letter-spacing:.15em}.handle-line{width:25px;height:3px;background:#4e6879;border-radius:3px}.drawer-content{background:#111e2a;padding:22px 28px 12px;max-height:calc(100dvh - 120px);overflow:auto}.drawer-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:12px}h2{margin:5px 0 0;font-size:20px;font-weight:600}.drawer-actions{display:flex;gap:8px;align-items:center}.drawer-actions>span{font-size:12px;color:var(--accent);margin-right:10px}.control-grid{display:grid;grid-template-columns:.9fr 1.2fr 1.1fr 1.1fr;gap:24px}.control-block{min-width:0;border-right:1px solid var(--line);padding-right:24px}.control-block:last-child{border:0;padding-right:0}h3{font-size:11px;color:#69879a;margin:0 0 15px;font-weight:500}h3 span{color:#dbe7ed;font-size:13px;font-weight:600;margin-left:8px}label{display:block;font-size:11px;color:#a9bdca;margin-bottom:10px}select,input[type=number],input[type=text],#scenario-name{width:100%;min-height:36px;background:#0c1823;border:1px solid #344957;color:var(--text);border-radius:5px;padding:7px 8px;margin-top:5px;font-size:13px}select{padding-right:5px}.paired{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}.paired label{min-width:0}.paired>button{margin-bottom:10px}.checkline{display:flex;align-items:center;gap:6px;min-height:24px}.checkline input{accent-color:var(--accent);width:16px;height:16px;margin:0}.stepper{display:grid;grid-template-columns:1fr 29px 58px 29px;gap:4px;align-items:center;margin-bottom:8px}.stepper label{margin:0;font-size:12px;color:#e1eaf0}.stepper label small{display:block;font-size:9px;color:#8ca5b7;margin-top:2px}.stepper input{margin:0;text-align:center;padding:4px;font:17px ui-monospace,monospace;appearance:textfield;-moz-appearance:textfield}.stepper input::-webkit-inner-spin-button{display:none}.stepper button{padding:0;font-size:18px;min-height:36px}.device-buttons{display:grid;grid-template-columns:1fr 1fr;gap:7px}.device-buttons button{font-size:11px;text-align:left;padding:9px 8px;min-height:39px}.device-buttons button[aria-pressed=true]{border-color:#429879;background:#1e463d;color:#8fedc4}.cover-controls{margin-top:14px}.volume-label{display:flex;align-items:center;gap:10px;margin-top:5px}.volume-label input{min-width:0;width:100%;accent-color:var(--accent)}.scenarios>button{width:100%;margin:0 0 9px}.scenarios .unit{float:right;font-size:10px;color:#6b8597}.control-hint{font-size:10px;color:#819bac;margin:0;line-height:1.6}.drawer-footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:18px;padding-top:10px;font-size:10px;color:#758ea0}dialog{background:#142431;border:1px solid #3b5363;border-radius:12px;color:var(--text);padding:28px;width:430px;max-width:calc(100vw - 30px)}dialog::backdrop{background:#030a11aa;backdrop-filter:blur(3px)}dialog p{font-size:14px;color:#a9bfcc;line-height:1.6;margin:16px 0}dialog label{font-size:13px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:25px}.toast{position:fixed;top:100px;left:50%;transform:translateX(-50%);z-index:30;max-width:90vw;background:#264636;border:1px solid #5b9b77;color:#effff5;padding:12px 20px;border-radius:7px;box-shadow:0 6px 24px #0005;font-size:14px}.toast[hidden]{display:none}
@media(min-width:1600px){.workspace{grid-template-columns:1fr 1.5fr;max-width:1900px;margin-left:auto;margin-right:auto;padding:0 28px}.wave-row{grid-template-columns:1fr 215px}.number{font-size:96px}}
@media(max-width:1100px){.app-header{padding:0 20px}.workspace{margin:18px 18px 65px;gap:14px;grid-template-columns:minmax(255px,.85fr) minmax(430px,1.4fr)}.wave-row{grid-template-columns:1fr 135px}.number{font-size:60px}.limits{right:8px}.pressure{padding:17px 14px;gap:10px;flex-wrap:wrap}.pressure-actions{flex-direction:row;width:100%;justify-content:space-between}.pressure-label{min-width:85px}.pressure-reading{font-size:37px}.patient-note{display:none}.control-grid{gap:14px}.control-block{padding-right:14px}.device-buttons{grid-template-columns:1fr}.drawer-content{padding:18px}.header-actions #fullscreen span{display:none}.stepper{grid-template-columns:1fr 25px 48px 25px}.drawer-actions>span{max-width:180px}}
@media(max-width:760px){.app-header{height:72px;padding:0 12px;gap:8px}.brand{font-size:15px}.brand-mark{font-size:30px}.brand-sub{font-size:8px}.session{gap:6px}.session #run-state,.divider{display:none}.header-actions{gap:4px}.header-actions button{font-size:11px;padding:6px 8px}time{font-size:16px}.workspace{display:flex;flex-direction:column;height:auto;min-height:0;margin:12px 12px 60px}.patient-panel{height:420px;flex-shrink:0}.patient-stage{height:305px}.monitor{min-height:610px}.wave-row{min-height:165px;grid-template-columns:1fr 130px}.pressure-actions{width:auto;flex-direction:column}.pressure{flex-wrap:nowrap}.pressure-reading{font-size:31px}.control-grid{grid-template-columns:1fr 1fr;gap:22px 15px}.control-block:nth-child(2){border:0;padding-right:0}.drawer-heading{align-items:flex-start}.drawer-actions{flex-wrap:wrap;justify-content:flex-end}.drawer-actions>span{width:100%;text-align:right;margin:0}.drawer-actions button{font-size:11px;padding:5px 7px}.drawer-footer{gap:10px}.drawer-content{max-height:75dvh}.monitor-top{font-size:9px}.panel-top{padding-top:15px}.control-block h3{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){.instructor{transition:none}.alarm-bar.high #alarm-text{animation:none}}
/* Anatomical alignment to the patient illustration, 720 × 1000 coordinates. */
.skin-tint{clip-path:polygon(43% 6%,57% 6%,58% 17%,54% 20%,63% 22%,72% 43%,78% 53%,72% 56%,65% 45%,60% 35%,61% 40%,37% 40%,38% 35%,32% 44%,29% 55%,20% 54%,24% 43%,35% 22%,45% 20%,42% 17%)}
.chest-motion{inset:0;width:100%;height:100%;border-radius:0;box-shadow:none;opacity:1;background:url('./assets/patient.png') center/100% 100%;clip-path:polygon(37% 22%,60% 22%,62% 38%,37% 38%);transform-origin:49.5% 36%;transform:scaleX(var(--chest-scale,1)) scaleY(var(--chest-scale,1))}
.eye-lids{top:10.1%;left:44.8%;width:10.2%;height:1.1%;background:none;filter:none;border-radius:0;opacity:0}
.eye-lids::before,.eye-lids::after{content:'';position:absolute;top:0;width:38%;height:100%;background:#cca88b;border-radius:50%;border-bottom:1px solid #775747}
.eye-lids::before{left:0}.eye-lids::after{right:0}
/* Profile-specific medical overlays. The source illustration supplies anatomy. */
.patient-art{--patient-image:url('./assets/patient.png');--closed-image:url('./assets/man-closed.png');--urine:#e5c644}
.chest-motion{background-image:var(--patient-image);clip-path:var(--chest-clip);transform-origin:var(--chest-origin)}
.skin-tint,.patient-art.pale .skin-tint,.patient-art.cyanotic .skin-tint{width:100%;height:100%;background:none;clip-path:none;opacity:1;mix-blend-mode:normal}
.head-motion,.head-open,.head-closed{position:absolute;inset:0;pointer-events:none}
.head-motion{clip-path:var(--head-clip);transform-origin:var(--head-origin);transform:translateX(var(--head-shift,0%)) perspective(600px) rotateY(var(--head-turn,0deg));will-change:transform}
.head-open{background:var(--patient-image) center/100% 100%}.head-closed{background:var(--closed-image) center/100% 100%;opacity:0}
.patient-art.drowsy .head-closed,.patient-art.coma .head-closed{opacity:1}
.patient-art[data-profile=woman] #device-ecg{transform:translateY(-22px)}
.patient-art[data-profile=newborn] #device-ecg{transform:translate(0px,190px) scale(1,.7)}
.patient-art[data-profile=newborn] #device-oxygen{transform:translate(-65px,102px) scale(1.2)}
.patient-art[data-profile=newborn] #device-spo2{transform:translate(10px,8px)}
.patient-art[data-profile=newborn] #device-cuff{transform:translate(48px,165px) scale(.75)}
.patient-art[data-profile=newborn] #device-iv{transform:translate(0px,35px)}
.patient-art[data-profile=newborn] #device-art{transform:translate(13px,38px)}
.patient-art[data-profile=newborn] #device-urinary{transform:translate(76px,220px) scale(.8)}
.patient-art[data-profile=newborn] #blanket-upper{transform:translate(0px,158px) scale(1,.75)!important}
.patient-art[data-profile=newborn] #blanket-lower{transform:translate(0px,147px) scale(1,.78)}
.urinary-fluid{stroke-dasharray:13 3;animation:urineflow 3s linear infinite}
.patient-art.paused .urinary-fluid{animation-play-state:paused}
@keyframes urineflow{to{stroke-dashoffset:-32}}
.art{color:#ff737e}.wave-row[hidden]{display:none}.art-number{font-size:clamp(25px,2.6vw,39px);font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums;margin:6px 0;letter-spacing:-.04em}.art-map{font-size:13px}.art-map b{font-size:25px}.art-zero{position:absolute;bottom:7%;left:6px;font-size:10px;opacity:.6}
.with-art .wave-row{min-height:130px}.with-art .numeric{padding-top:9px;padding-bottom:9px}.with-art .number{font-size:clamp(44px,5vw,68px)}.with-art .pressure{min-height:108px;padding-top:12px;padding-bottom:12px}.with-art .numeric-foot{margin-top:3px}
.urine-control{margin-top:10px}.cough-controls{margin-top:6px}.cough-controls button{font-size:12px}.drawer-footer a{color:#92b8c9}.control-hint[role=status]{display:block;min-height:1.5em}
@media(min-width:761px){.workspace:has(.with-art){min-height:640px}}
@media(max-width:760px){.with-art{min-height:740px}.with-art .wave-row{min-height:150px}}
@media(prefers-reduced-motion:reduce){.head-motion{transform:none}.urinary-fluid{animation:none}}
