:root{font-family:Inter,system-ui,Arial,sans-serif;color:#e9f2fb;background:#08111d}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;background:#1a344b;border:1px solid #38617b;color:#f4f9ff;border-radius:8px;padding:10px 14px}button:hover{background:#28536c}button:disabled{opacity:.5;cursor:default}input,select{background:#122638;color:white;border:1px solid #3a5970;border-radius:7px;padding:9px;max-width:100%}a{color:#77caff}.landing{max-width:720px;margin:10vh auto;padding:24px}.card,.panel{background:#102134;border:1px solid #29455c;border-radius:14px;padding:22px;margin:14px 0}.muted{color:#a2b7c7}.badge{font-size:12px;letter-spacing:.12em;color:#ffc75a}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stack{display:grid;gap:10px}.landing input{width:220px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;min-height:100vh}.workspace{padding:18px}.sidebar{padding:18px;background:#0c1a2a;border-left:1px solid #254054;max-height:100vh;overflow:auto}.topbar{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.topbar h1{font-size:22px;margin:0}.monitor{background:#020609;border:2px solid #334451;border-radius:12px;overflow:hidden;min-height:580px;display:grid;grid-template-columns:minmax(0,1fr) 210px}.waveforms{display:grid;grid-template-rows:repeat(4,minmax(105px,1fr));min-width:0}.wave{position:relative;border-bottom:1px solid #243039;min-height:105px}.wave canvas{width:100%;height:100%;display:block}.wave label{position:absolute;top:8px;left:12px;font-size:13px;z-index:1;background:#020609b5;padding:2px 5px}.vitals{border-left:1px solid #243039;display:grid;grid-template-rows:repeat(5,1fr)}.vital{padding:12px;border-bottom:1px solid #243039}.vital small{display:block;color:#b3c5d2;font-size:12px}.vital strong{font-size:clamp(30px,4vw,52px);font-variant-numeric:tabular-nums;line-height:1.2}.green{color:#40ed76}.cyan{color:#4be3ed}.yellow{color:#ffd65d}.red{color:#ff6b78}.white{color:#f0f4ff}.monitor-footer{background:#09131c;padding:10px 14px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}.monitor-footer button{font-size:13px}.control{display:grid;grid-template-columns:1fr 100px;align-items:center;gap:8px;margin:10px 0}.control label{font-size:13px;color:#c7d8e4}.control input{width:100%}.panel h2{font-size:16px;margin:0 0 12px}.panel{padding:15px}.panel .row{margin:8px 0}.panel button{padding:8px 10px;font-size:13px}.status{padding:4px 10px;border-radius:20px;background:#174a39;color:#a5ffd0}.status.off{background:#562a33;color:#ffbdc6}.events{max-height:190px;overflow:auto;font-size:12px;color:#a6b9c9}.events div{padding:5px 0;border-bottom:1px solid #263b4a}.danger{background:#642737;border-color:#a04c59}.primary{background:#166b64;border-color:#299b90}.help{font-size:12px;color:#9cb4c6}.fullscreen .monitor{height:calc(100vh - 55px)}.participant{padding:12px}.participant .monitor{height:calc(100vh - 110px);min-height:450px}.participant .topbar{margin-bottom:8px}.alarm{color:#ffcc57;font-weight:700;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:.35}}@media(max-width:950px){.layout{display:block}.sidebar{max-height:none;border-left:0}.monitor{grid-template-columns:minmax(0,1fr) 155px}.vital{padding:8px}.vital strong{font-size:30px}}@media(max-width:540px){.monitor{grid-template-columns:minmax(0,1fr) 125px}.vital strong{font-size:25px}.waveforms{grid-template-rows:repeat(4,110px)}.monitor{min-height:440px}.participant .monitor{height:auto}}

.pairqr{width:min(76vw,320px);height:auto;background:white;padding:12px;border-radius:12px}#qrbox{text-align:center;margin:24px auto}#pairRequests .row{margin:8px 0;flex-wrap:wrap}
/* v0.3 original visual system */
:root{font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;color:#e8eef3;background:#0a1017}body{background:radial-gradient(ellipse at 10% 0%,#142333 0%,#0a1017 45%)}button{background:#1b2a38;border-color:#34495a;border-radius:9px;transition:background .15s,transform .15s}button:active{transform:scale(.98)}button:hover{background:#2b4051}input:focus,select:focus,button:focus-visible{outline:2px solid #55bfc7;outline-offset:2px}.primary{background:#176e78;border-color:#268e99}.danger{background:#713044;border-color:#ad556a}.badge{color:#f4bc68;font-size:10px;font-weight:700}.layout{grid-template-columns:minmax(0,1fr) 360px}.workspace{padding:24px;min-width:0}.sidebar{background:#0e1721;padding:22px;border-left-color:#263746}.topbar{padding:4px 0 14px;border-bottom:1px solid #253541;margin-bottom:20px}.topbar h1{font-size:22px;letter-spacing:-.045em}.brandmark{font-size:23px;font-weight:850;letter-spacing:-.065em;color:#f3f7fa}.brandmark span{color:#53bfc6}.subheading{font-size:14px;font-weight:500;letter-spacing:0;color:#90a8b7;margin-left:12px}.session-id{font-size:11px;letter-spacing:.12em;color:#7e9dab;margin-top:7px}.section-eyebrow,.sidebar-title{color:#8fa8b9;font-size:11px;font-weight:750;letter-spacing:.14em;margin-bottom:10px}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#59d2ae;box-shadow:0 0 10px #59d2ae80;margin-left:7px}.monitor-section{background:#0c151e;padding:14px;border:1px solid #293b4a;border-radius:16px;margin-bottom:18px}.monitor{border:5px solid #202d36;border-radius:15px;background:#030709;box-shadow:inset 0 0 0 1px #3b4b53,0 12px 28px #0004;min-height:550px}.wave{border-bottom:1px solid #18282c}.wave label{font-size:11px;font-weight:700;letter-spacing:.09em;background:#030709dc;border-radius:4px}.vitals{border-left-color:#1b3038}.vital{padding:15px 12px;border-bottom-color:#1b3038;display:flex;flex-direction:column;justify-content:center}.vital small{font-size:10px;letter-spacing:.085em;font-weight:700;color:#9bb1b9}.vital small em{font-style:normal;color:#718995;font-weight:500;letter-spacing:0}.vital strong{font-size:clamp(34px,4.2vw,60px);font-weight:650;letter-spacing:-.07em}.vital.red strong{letter-spacing:-.04em!important}.temp-reading{margin-top:7px;font-size:17px;color:#a7b8c4}.green{color:#56ec9b}.cyan{color:#54d8ef}.yellow{color:#f5cb66}.red{color:#ff7f87}.white{color:#e4edf6}.monitor-footer{background:#0a151d;border-top:1px solid #20343c;padding:12px}.sim-label{font-size:10px;color:#e4b77b;letter-spacing:.08em;font-weight:700;margin-right:auto}.monitor-footer button{font-size:12px;background:#152734}.panel{background:#121f2b;border-color:#293d4d;border-radius:12px;margin:0 0 14px;padding:18px}.panel h2{font-size:14px;font-weight:750;letter-spacing:-.015em}.control{grid-template-columns:minmax(0,1fr) 90px;margin:9px 0}.control label{font-size:12px}.control input{padding:9px 10px;font-variant-numeric:tabular-nums}.status{font-size:11px;font-weight:700}.participant{padding:20px;min-height:100vh}.participant .monitor{height:calc(100vh - 175px)}.participant .monitor-footer{border-radius:0 0 12px 12px}.landing{max-width:700px}.landing h1{letter-spacing:-.06em;font-size:44px}.landing .card{margin:16px 0}.events{max-height:220px}.alarm{color:#ff8b91}@media(max-width:1050px){.layout{display:block}.sidebar{max-height:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;border-left:0;border-top:1px solid #263746}.sidebar-title{grid-column:1/-1}.sidebar .panel{margin:0}.monitor{grid-template-columns:minmax(0,1fr) 180px}.vital strong{font-size:38px}}@media(max-width:600px){.workspace{padding:12px}.sidebar{padding:12px;display:block}.sidebar .panel{margin-bottom:12px}.topbar h1{font-size:18px}.brandmark{font-size:19px}.subheading{font-size:12px;margin-left:6px}.monitor-section{padding:7px}.monitor{min-height:450px;grid-template-columns:minmax(0,1fr) 125px;border-width:3px}.waveforms{grid-template-rows:repeat(4,minmax(100px,1fr))}.vital{padding:7px}.vital small{font-size:8px}.vital strong{font-size:27px}.temp-reading{font-size:13px}.participant{padding:7px}.participant .monitor{height:calc(100vh - 135px)}.monitor-footer{gap:6px;padding:8px}.monitor-footer button{padding:7px 8px;font-size:11px}.sim-label{width:100%}}

/* SimObs faculty pairing */
.faculty-qr{display:flex;justify-content:center;align-items:center;background:#fff;border-radius:12px;padding:16px;width:max-content;max-width:100%;margin:16px 0;}
.faculty-qr img,.faculty-qr canvas{max-width:100%;height:auto;}

/* v0.3.6: stable monitor geometry, including narrow landscape devices */
.monitor{min-height:0;grid-template-columns:minmax(0,1fr) clamp(118px,23%,210px);height:clamp(420px,60vh,680px);}
.waveforms{min-width:0;min-height:0;grid-template-rows:repeat(4,minmax(0,1fr));}
.wave{min-height:0;overflow:hidden;}
.wave canvas{display:block;width:100%;height:100%;}
.vitals{min-height:0;grid-template-rows:repeat(5,minmax(0,1fr));}
.vital{min-height:0;overflow:hidden;padding:clamp(4px,1vw,12px);}
.vital strong{font-size:clamp(20px,3.2vw,48px);line-height:1.05;}
.participant{min-height:100dvh;display:flex;flex-direction:column;gap:6px;padding:8px;}
.participant .topbar{flex:0 0 auto;margin:0;padding:4px 0;}
.participant .monitor{height:auto;min-height:0;flex:1 1 auto;}
.participant .monitor-footer{flex:0 0 auto;}
@media(max-width:1050px){.monitor{grid-template-columns:minmax(0,1fr) clamp(118px,23%,190px);}}
@media(max-width:600px){.monitor{min-height:0;}.waveforms{grid-template-rows:repeat(4,minmax(0,1fr));}.participant .monitor{height:auto;min-height:0;}.vital strong{font-size:clamp(18px,5vw,30px);}}
@media(orientation:landscape) and (max-height:600px){
 .participant{padding:3px 6px;gap:2px;}
 .participant .topbar{padding:0 0 2px;margin:0;min-height:0;}
 .participant .topbar h1{font-size:14px;line-height:1;}
 .participant .brandmark{font-size:17px;}
 .participant .badge{font-size:8px;}
 .participant .monitor{height:auto;min-height:0;border-width:2px;}
 .participant .monitor-footer{padding:3px 6px;gap:4px;}
 .participant .monitor-footer button{font-size:10px;padding:4px 6px;}
 .participant .sim-label{display:none;}
 .participant .vital{padding:2px 6px;}
 .participant .vital small{font-size:8px;line-height:1.1;}
 .participant .vital strong{font-size:clamp(17px,4vh,29px);line-height:1;}
 .participant .temp-reading{font-size:10px;margin-top:2px;}
 .participant .wave label{top:2px;left:4px;font-size:9px;}
}
@media(max-width:370px) and (orientation:portrait){.participant .monitor{grid-template-columns:minmax(0,1fr) 112px;}}

/* v0.3.7: one page scrollbar, rather than nested faculty scrolling */
.layout{min-height:100dvh;align-items:start}
.sidebar{max-height:none;overflow:visible}
html,body{overflow-x:hidden}
/* Fit participant monitor into the actual visible landscape viewport. */
@media (orientation:landscape) and (max-height:600px){
  .participant{height:100dvh;min-height:0;overflow:hidden;display:flex;flex-direction:column}
  .participant .topbar{flex:0 0 auto}
  .participant .monitor{flex:1 1 0;min-height:0;height:0;grid-template-columns:minmax(0,1fr) clamp(105px,24%,180px)}
  .participant .waveforms,.participant .vitals{min-height:0;height:100%}
  .participant .wave{min-height:0}
  .participant .monitor-footer{flex:0 0 auto;max-height:52px;overflow:auto;scrollbar-width:none}
  .participant .monitor-footer::-webkit-scrollbar{display:none}
  .participant .vital{padding:1px 4px}
  .participant .vital strong{font-size:clamp(15px,4.2vh,24px)}
  .participant .vital small{font-size:7px}
  .participant .temp-reading{font-size:9px;margin:0}
}

/* v0.3.8 temperature visibility */
.temp-reading[hidden]{display:none!important}

/* v0.4.0: variable monitor modules */
.monitor-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.monitor-options label{font-size:12px;display:flex;align-items:center;gap:5px}.monitor-options input{accent-color:#53bfc6}.wave-empty{display:grid;place-items:center;color:#8ca5b4;font-size:13px}.monitor .vitals{overflow:hidden}.monitor .vital{min-height:0;padding:clamp(2px,.5vw,9px)}.monitor .vital strong{font-size:clamp(14px,2.3vw,38px)}.participant .monitor .vital strong{font-size:clamp(13px,3vh,30px)}@media(orientation:landscape) and (max-height:600px){.participant .monitor .vital strong{font-size:clamp(12px,3.5vh,23px)}.participant .monitor .vital small{font-size:7px}}

/* v0.4.3: hide observations not present in the selected monitor layout */
.control[hidden],#basicObservations[hidden],#extraObservations[hidden]{display:none!important}
#extraObservations h3{font-size:14px;margin:16px 0 8px}
.preset-actions{margin:10px 0}

/* Maternity CTG: two aligned simulated rolling traces inside one optional module */
.ctg-wave{display:grid;grid-template-rows:1fr 1fr;min-height:145px}
.ctg-wave canvas{min-height:0;height:100%;width:100%;display:block}
.ctg-wave canvas:first-of-type{border-bottom:1px solid #3d3440}
#ctgControls[hidden]{display:none!important}

/* CTG: two stacked waveform canvases share one module row */
.ctg-wave{display:flex!important;flex-direction:column;min-height:135px;overflow:hidden}
.ctg-wave>label{flex:0 0 auto}
.ctg-traces{flex:1;min-height:0;display:grid;grid-template-rows:1fr 1fr}
.ctg-traces canvas{display:block;width:100%;height:100%;min-height:0}
.ctg-traces canvas:first-child{border-bottom:1px solid #28404b}
#ctgControls[hidden]{display:none!important}

.audio-source-control{display:flex;align-items:center;gap:6px;font-size:12px;color:#d0e7f1}
.audio-source-control select{max-width:145px;min-width:105px;padding:6px;background:#102635;color:#e8f5ff;border:1px solid #36546a;border-radius:6px}

/* v0.5.3: one matching row per enabled observation; no respiration trace. */
.wave-no-trace{background:#030709;min-height:0!important}
.wave-no-trace::after{content:none}
.alarm-toggle{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:12px;line-height:1.35}
.alarm-toggle input{flex:0 0 auto;margin:0;accent-color:#53bfc6}
.alarm-limit-grid{display:grid;gap:12px;margin:14px 0}
.alarm-limit-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,74px) minmax(0,74px);align-items:end;gap:8px;min-width:0}
.alarm-limit-row strong{font-size:12px;line-height:1.35;overflow-wrap:anywhere}
.alarm-limit-row label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:#9db8c9;min-width:0}
.alarm-limit-row input{width:100%;min-width:0;padding:8px 5px;text-align:center;font-size:13px}
.audio-source-control[hidden]{display:none!important}
@media(max-width:400px){.alarm-limit-row{grid-template-columns:minmax(0,1fr) 65px 65px;gap:5px}}

/* v0.5.4: waveform-aligned observations above, compact numeric-only strip below. */
.monitor{grid-template-rows:minmax(0,1fr) auto;align-content:stretch;}
.monitor .waveforms{grid-column:1;grid-row:1;min-height:0;}
.monitor .vitals{grid-column:2;grid-row:1;min-height:0;}
.monitor .numeric-strip{grid-column:1/-1;grid-row:2;display:flex;flex-wrap:wrap;align-items:stretch;gap:0;border-top:1px solid #31434a;background:#071118;min-width:0;}
.monitor .numeric-strip[hidden]{display:none;}
.monitor .numeric-strip .vital{flex:1 1 115px;min-width:90px;max-width:260px;min-height:66px;border-right:1px solid #263b44;border-bottom:0;padding:9px 14px;justify-content:center;}
.monitor .numeric-strip .vital small{font-size:10px;}
.monitor .numeric-strip .vital strong{font-size:clamp(23px,2.5vw,38px);line-height:1.1;}
.monitor .wave{min-height:0;}
.monitor .vitals .vital{min-height:0;}
@media(max-width:600px){.monitor .numeric-strip .vital{flex:1 1 80px;min-width:75px;min-height:54px;padding:5px 8px}.monitor .numeric-strip .vital strong{font-size:23px}.monitor .numeric-strip .vital small{font-size:8px}}

/* v0.5.5: one continuous grid behind all waveforms. Previously each canvas
   restarted its 25px grid, leaving discontinuities at waveform boundaries. */
.monitor .waveforms{background-color:#030709;background-image:linear-gradient(to right,#1b2a31 1px,transparent 1px),linear-gradient(to bottom,#1b2a31 1px,transparent 1px);background-size:25px 25px;background-position:0 0;}
.monitor .wave,.monitor .ctg-traces,.monitor .ctg-traces canvas{background:transparent;}
.monitor .wave canvas{background:transparent;}
.monitor .wave:not(:last-child),.monitor .vitals .vital:not(:last-child){border-bottom:1px solid #243039;}
.monitor .wave:last-child,.monitor .vitals .vital:last-child{border-bottom:0;}

/* v0.5.6: complete the grid against the left monitor edge.
   The first vertical grid rule previously appeared inset, leaving an
   open-looking partial cell along the left side of the monitor. */
.monitor .waveforms{position:relative;box-shadow:inset 1px 0 0 #1b2a31;background-origin:border-box;}
.monitor .waveforms::before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:#1b2a31;pointer-events:none;z-index:1;}

/* v0.5.7: hide inactive alarm rows even though their layout uses grid. */
.alarm-limit-row[hidden]{display:none!important}

/* v0.5.9: faculty split workspace — monitor stays visible while controls scroll. */
@media (min-width:1051px){
  .layout{height:100dvh;min-height:0;grid-template-columns:minmax(0,1fr) minmax(350px,390px);overflow:hidden;align-items:stretch}
  .layout>.workspace{height:100dvh;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:16px 20px}
  .layout>.sidebar{height:100dvh;max-height:none;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:18px}
  .layout .monitor-section{position:sticky;top:0;z-index:3;background:#0c151e;box-shadow:0 12px 22px #0008}
  .layout .monitor-section .monitor{height:clamp(320px,calc(100dvh - 155px),800px)}
  .layout .workspace>.panel{margin-top:20px}
}
/* On tablet/phone, keep the preview at the top as faculty scroll through controls. */
@media (min-width:601px) and (max-width:1050px){
  .layout>.workspace{overflow:visible}
  .layout .monitor-section{position:sticky;top:0;z-index:3;background:#0c151e;box-shadow:0 10px 20px #0009}
  .layout .monitor-section .monitor{height:clamp(260px,48dvh,480px)}
}
@media (max-width:600px){
  .layout .monitor-section{position:sticky;top:0;z-index:3;padding:5px;background:#0c151e;box-shadow:0 10px 20px #0009}
  .layout .monitor-section .section-eyebrow{font-size:9px;margin-bottom:3px}
  .layout .monitor-section .monitor{height:clamp(225px,43dvh,390px)}
  .layout .monitor-section .monitor-footer{padding:5px;gap:4px}
}

/* v0.6.0: selective programmed changes */
.transition-grid{display:grid;gap:9px;margin:12px 0}.transition-control{display:grid;grid-template-columns:18px minmax(0,1fr) 92px;align-items:center;gap:9px;font-size:12px}.transition-control input[type=checkbox]{width:16px;height:16px}.transition-control input[type=number]{width:100%;min-width:0;padding:9px}.transition-control input:disabled{opacity:.4}.transition-actions{flex-wrap:wrap;gap:9px;margin-top:14px}#transitionStatus{margin-top:12px;min-height:18px}@media(max-width:400px){.transition-control{grid-template-columns:18px minmax(0,1fr) 75px;gap:6px}}

/* v0.6.1: transition controls integrated into the existing live observation rows */
.observation-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(72px,105px) 66px;gap:7px;align-items:center}
.observation-row>label:first-child{min-width:0}
.observation-row>input[type=number]{width:100%;min-width:0}
.observation-row .ramp-option{display:flex;gap:4px;align-items:center;white-space:nowrap;font-size:11px;color:#b4d6e3}
.observation-row .ramp-option input{width:15px;height:15px;accent-color:#53bfc6}
.observation-row:has(.ramp-check:checked){background:rgba(83,191,198,.08);border-radius:6px}
.transition-inline{border-top:1px solid #2b4552;margin-top:13px;padding-top:12px}
.transition-inline #seconds{width:82px}
.transition-inline .transition-actions{align-items:center}
@media(max-width:400px){.observation-row{grid-template-columns:minmax(0,1fr) 74px 60px;gap:5px}}

/* v0.6.4 Scenario stages */
.stage-list{display:grid;gap:9px;margin:12px 0}
.stage-entry{display:grid;gap:6px;padding:10px;border:1px solid #31505d;border-radius:8px;background:rgba(255,255,255,.025)}
.stage-entry .help{overflow-wrap:anywhere}
.stage-entry .row{gap:5px;flex-wrap:wrap}
.stage-entry button{font-size:12px;padding:6px 9px}
#stageName{min-width:160px;flex:1}
#stageDuration{width:86px}
.stage-actions{flex-wrap:wrap}

/* v0.6.7 scenario timeline */
.stage-settings{display:flex;gap:12px;flex-wrap:wrap}.stage-settings label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#b4d6e3}.stage-settings input{width:115px;max-width:100%;padding:7px}.scenario-clock{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.08em;padding:10px 0;color:#9ce7e8}.stage-actions{gap:8px}

/* v0.6.9 faculty accordion controls */
.sidebar .faculty-accordion{border:1px solid #304758;border-radius:10px;background:#101e2b;margin:0 0 10px;overflow:hidden;padding:0}
.sidebar .faculty-accordion>summary{cursor:pointer;list-style:none;padding:15px 17px;font-weight:700;color:#e7f4fc;display:flex;justify-content:space-between;align-items:center;user-select:none}
.sidebar .faculty-accordion>summary::-webkit-details-marker{display:none}
.sidebar .faculty-accordion>summary:after{content:'+';font-size:22px;font-weight:400;color:#83b8c8}
.sidebar .faculty-accordion[open]>summary:after{content:'−'}
.sidebar .faculty-accordion[open]>summary{border-bottom:1px solid #304758;margin-bottom:12px}
.sidebar .faculty-accordion[open]{padding-bottom:15px}
.sidebar .faculty-accordion> :not(summary){margin-left:15px;margin-right:15px}
.rhythm-inline,.display-units-inline,.duration-inline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0}
.rhythm-inline select,.display-units-inline select{min-width:0;flex:1}
.duration-inline input{width:95px}

/* v0.7.0: faculty monitor readings adjustable by mouse wheel */
.layout .monitor .vital strong[id^="val-"]{cursor:ns-resize;touch-action:pan-y}
.layout .monitor .vital strong[id^="val-"]:hover{outline:1px dashed rgba(115,215,235,.75);outline-offset:5px;border-radius:3px}

/* v0.7.1: compact integrated pairing card between brand and connection */
.layout .topbar{display:grid;grid-template-columns:minmax(175px,auto) minmax(210px,1fr) auto;align-items:center;gap:18px}
.header-pairing{display:flex;align-items:center;gap:12px;min-width:0;max-width:440px;padding:9px 12px;background:linear-gradient(135deg,#132b38,#101e2c);border:1px solid #33596a;border-radius:12px;box-shadow:inset 0 1px 0 #ffffff0b}
.header-pairing-qr{flex:0 0 auto;padding:5px;background:#e9f6f5;border:1px solid #6cabb3;border-radius:8px;line-height:0}
.header-pairing .faculty-qr{width:100px;height:100px;min-width:100px;max-width:100px;margin:0;padding:0;border-radius:0;background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center;line-height:normal;font-size:9px;color:#172734;overflow-wrap:anywhere}
.header-pairing .faculty-qr img,.header-pairing .faculty-qr canvas{display:block;width:100px!important;height:100px!important;max-width:100%}
.header-pairing-details{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0}
.header-pairing-title{font-size:10px;letter-spacing:.13em;font-weight:800;color:#65c9d2}
.header-pairing-details p{font-size:11px;color:#b3c9d4;margin:0;line-height:1.3}
.header-join-link{font-size:12px;font-weight:650;color:#8be1e9;text-decoration:none;border-bottom:1px solid #5594a1}
.header-join-link:hover{text-decoration:underline}
.header-copy{padding:5px 10px!important;font-size:11px!important;background:#183b48;border:1px solid #3c7382}
.header-copy-status{font-size:10px;color:#a9e9d6}
.topbar-actions{justify-content:flex-end;flex-wrap:wrap}
.pair-requests{margin:12px 0;border:1px solid #315061;border-radius:10px;padding:12px;background:#10202c}
@media(max-width:1350px){.layout .topbar{grid-template-columns:minmax(170px,1fr) auto;gap:12px}.header-pairing{grid-column:1/-1;grid-row:2;max-width:100%;width:max-content}.topbar-actions{grid-column:2;grid-row:1}}
@media(max-width:650px){.layout .topbar{grid-template-columns:1fr}.topbar-actions{grid-column:1;grid-row:3;justify-content:flex-start}.header-pairing{grid-column:1;grid-row:2;width:100%}.header-pairing .faculty-qr,.header-pairing .faculty-qr img,.header-pairing .faculty-qr canvas{width:90px!important;height:90px!important;min-width:90px;max-width:90px}}

/* v0.7.2: responsive bedside monitor with bounded physical proportions.
   Avoid stretching waveform rows to the full height of a large browser. */
.participant:not(.fullscreen){
  box-sizing:border-box;
  width:100%;
  min-height:0;
  height:auto;
  overflow:visible;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  justify-content:flex-start;
  padding:clamp(5px,1vw,16px);
  gap:6px;
}
.participant:not(.fullscreen) .topbar{flex:0 0 auto;width:100%}
.participant:not(.fullscreen) .monitor{
  flex:0 0 auto;
  width:100%;
  height:clamp(320px,calc(100dvh - 135px),790px);
  max-height:790px;
  min-height:0;
  grid-template-columns:minmax(0,1fr) clamp(112px,19%,210px);
}
.participant:not(.fullscreen) .monitor-footer{
  flex:0 0 auto;
  width:100%;
  max-height:none;
  overflow:visible;
}
.participant:not(.fullscreen) .waveforms,
.participant:not(.fullscreen) .vitals{min-height:0;height:auto}
.participant:not(.fullscreen) .wave{min-height:0}
@media(max-width:700px){
  .participant:not(.fullscreen) .monitor{
    height:clamp(285px,calc(100dvh - 120px),620px);
    grid-template-columns:minmax(0,1fr) clamp(108px,23%,155px);
  }
}
@media(orientation:landscape) and (max-height:600px){
  .participant:not(.fullscreen){height:auto;overflow:visible}
  .participant:not(.fullscreen) .monitor{height:clamp(220px,calc(100dvh - 85px),490px);min-height:0;flex:0 0 auto}
  .participant:not(.fullscreen) .monitor-footer{max-height:none;overflow:visible}
}
/* In browser fullscreen, retain viewport fitting but still avoid enormous rows. */
.participant.fullscreen .monitor{max-height:100dvh}

/* v0.7.3 */
#rhythmPresetStatus{font-size:12px;line-height:1.4;margin:7px 0 0;color:#a6c3cf}

/* v0.7.4: pairing lives in a collapsible faculty panel and first-session dialog */
.join-panel .header-pairing{max-width:none;width:100%;box-sizing:border-box;flex-wrap:wrap}
.join-panel .header-pairing-details{flex:1;min-width:145px}
.join-overlay{position:fixed;inset:0;z-index:10000;background:rgba(1,9,16,.82);display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto;backdrop-filter:blur(5px)}
.join-dialog{box-sizing:border-box;width:min(100%,490px);padding:24px;border:1px solid #47788a;border-radius:17px;background:linear-gradient(150deg,#172c3c,#0d1c29);color:#e6f3f7;box-shadow:0 20px 70px #0009}
.join-dialog h2{margin:0 0 10px;font-size:22px;color:#e7f7f8}
.join-dialog>p{font-size:13px;line-height:1.55;color:#b6d0dc;margin:0 0 17px}
.join-dialog .join-panel-content{margin:0 0 18px}
.join-dialog .header-pairing{max-width:none;width:100%;box-sizing:border-box}
.join-dialog>button{width:100%;padding:11px}
@media(max-width:420px){.join-dialog{padding:16px}.join-dialog .header-pairing{gap:10px}}

/* v0.7.5: clear mouse-wheel affordance on faculty monitor values only. */
.layout .monitor .vital:has(> strong[id^="val-"]){position:relative}
.layout .monitor .vital strong[id^="val-"]{cursor:ns-resize;display:inline-block;align-self:flex-start;border-radius:6px;padding:2px 22px 2px 5px;margin-left:-5px;transition:background .12s,box-shadow .12s}
.layout .monitor .vital strong[id^="val-"]:hover{background:rgba(83,191,198,.13);box-shadow:inset 0 0 0 1px rgba(83,191,198,.5);outline:none}
.layout .monitor .vital:has(> strong[id^="val-"]:hover)::after{content:"↕";position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:19px;font-weight:700;color:#65d5dd;pointer-events:none}
/* Bedside/participant monitor remains read-only. */
.participant .monitor .vital strong[id^="val-"]{cursor:default;padding:0;margin:0;background:none;box-shadow:none}
.participant .monitor .vital:has(> strong[id^="val-"]:hover)::after{content:none}

/* v0.7.7: integrated faculty sound library and participant audio opt-in */
#simobsSoundFaculty{display:grid;gap:10px}
.sound-empty{padding:14px;border:1px dashed #416472;background:#102a35;border-radius:9px;color:#b5d8e3;line-height:1.5}
.sound-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#c5dce4}
.sound-field select{max-width:100%;min-width:0}
.sound-field input[type=range]{width:100%;accent-color:#48c5ce}
.sound-actions{display:flex;gap:8px;flex-wrap:wrap}
.sound-check{display:flex;align-items:center;gap:8px;font-size:12px}
.sound-participant{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;color:#a9c6d0}
.sound-participant button{padding:7px 10px;border:1px solid #2d8b95;background:#123945;color:#b8eff1;border-radius:7px}
.sound-participant button[hidden]{display:none}

/* Faculty-only lead connection controls; responsive beneath the monitor */
.lead-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap;max-width:100%;padding:6px;border:1px solid #355763;border-radius:8px;background:#0e2834}
.lead-controls-label{font-size:11px;font-weight:700;color:#b3cdd8;margin-right:3px;white-space:nowrap}
.monitor-footer .lead-controls button{font-size:11px;line-height:1.25;padding:7px 9px;border-radius:6px;white-space:nowrap;cursor:pointer}
.monitor-footer .lead-controls button.lead-connected{background:#173b43;color:#d2f7f1;border:1px solid #3d8d8c}
.monitor-footer .lead-controls button.lead-disconnected{background:#442733;color:#ffe2e8;border:1px solid #b95d75}
.monitor-footer .lead-controls button:hover{filter:brightness(1.2)}
.monitor-footer .lead-controls button:disabled{opacity:.55;cursor:wait}

/* v0.7.11: compact faculty preview so connection controls remain accessible */
@media (min-width:1051px){
  .layout .monitor-section{position:relative;top:auto}
  .layout .monitor-section .monitor{height:clamp(230px,43dvh,430px)}
  .layout>.workspace{padding-top:10px;padding-bottom:12px}
  .layout .monitor-footer{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
  .layout .monitor-footer .lead-controls{order:1;flex-basis:100%;margin-top:2px}
}
@media (min-width:601px) and (max-width:1050px){
  .layout .monitor-section .monitor{height:clamp(220px,35dvh,340px)}
}
@media (max-width:600px){
  .layout .monitor-section{position:relative}
  .layout .monitor-section .monitor{height:clamp(210px,34dvh,300px)}
}
.sidebar details.faculty-accordion:has(> .join-panel-content) .header-pairing{display:flex}
.sidebar details.faculty-accordion .join-panel-content{padding-top:10px}
.sidebar details.faculty-accordion .header-join-link{overflow-wrap:anywhere;word-break:break-word}


/* v0.7.12: integrated monitor-style control strip under faculty/participant display */
.integrated-console{display:grid;grid-template-columns:minmax(190px,260px) minmax(0,1fr);gap:10px;align-items:stretch;padding:12px 14px;border-top:1px solid #20343c;background:linear-gradient(180deg,#0b141b 0%,#0a1219 100%)}
.console-status,.console-group{border:1px solid #233945;border-radius:10px;background:linear-gradient(180deg,#10202a 0%,#0d1a23 100%);box-shadow:inset 0 1px 0 rgba(117,151,168,.12), inset 0 -1px 0 rgba(0,0,0,.28)}
.console-status{display:flex;flex-direction:column;justify-content:center;gap:6px;padding:10px 12px;min-width:0}
.console-alarm-text{font-size:14px;font-weight:700;color:#d9edf7;line-height:1.2}
.console-groups{display:grid;gap:10px;min-width:0}
.console-group{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 10px;min-width:0}
.console-group-primary{justify-content:flex-start}
.console-group-secondary{justify-content:flex-end}
.console-key,.integrated-console .lead-controls button{background:linear-gradient(180deg,#1e3443 0%,#152634 100%);border:1px solid #395467;border-radius:8px;color:#edf6ff;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 1px 0 rgba(0,0,0,.22);padding:9px 12px;font-weight:650;letter-spacing:.01em}
.console-key:hover,.integrated-console .lead-controls button:hover{background:linear-gradient(180deg,#28485c 0%,#1a3140 100%);filter:none}
.console-key:active,.integrated-console .lead-controls button:active{transform:translateY(1px)}
.console-key-accent{background:linear-gradient(180deg,#167b7a 0%,#11595e 100%);border-color:#3ba8a7;color:#ebffff}
.console-key-accent:hover{background:linear-gradient(180deg,#1b8c8b 0%,#14696f 100%)}
.console-inline-control{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #2f4655;border-radius:8px;background:#0b1821;color:#cfe3ef;font-size:12px;min-height:40px}
.console-inline-control span{font-weight:700;letter-spacing:.02em;white-space:nowrap}
.console-inline-control select{padding:7px 9px;min-width:150px;background:#132632;border-color:#3a5667}
.console-clock{display:inline-flex;align-items:center;justify-content:center;min-width:104px;padding:8px 10px;border:1px solid #2f4655;border-radius:8px;background:#071118;color:#f7fbff;font-variant-numeric:tabular-nums;font-size:14px;font-weight:700;box-shadow:inset 0 0 0 1px rgba(130,170,193,.05)}
.integrated-console .lead-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid #2f4655;border-radius:8px;background:#0b1821;min-height:40px}
.integrated-console .lead-controls-label{font-size:11px;font-weight:800;letter-spacing:.05em;color:#b4cdda;text-transform:uppercase;margin-right:4px}
.integrated-console .lead-controls button{font-size:11px;padding:8px 10px}
.integrated-console .lead-controls button.lead-connected{background:linear-gradient(180deg,#144047 0%,#0f3138 100%);border-color:#3d8d8c;color:#d4f7f1}
.integrated-console .lead-controls button.lead-disconnected{background:linear-gradient(180deg,#4b2b36 0%,#3a202a 100%);border-color:#b95d75;color:#ffe6eb}
.layout .monitor-footer .lead-controls{order:0;flex-basis:auto;margin-top:0}
.layout .monitor-footer .sim-label{margin-right:0}
.participant .integrated-console{grid-template-columns:minmax(150px,220px) minmax(0,1fr)}
.participant .console-group-secondary{justify-content:flex-end}
.participant .console-inline-control{max-width:280px}
@media (max-width:1200px){
  .integrated-console{grid-template-columns:1fr}
  .console-group-secondary{justify-content:flex-start}
}
@media (max-width:760px){
  .integrated-console{padding:9px;gap:8px}
  .console-group{padding:7px;gap:6px}
  .console-key,.integrated-console .lead-controls button{padding:8px 9px;font-size:11px}
  .console-inline-control{width:100%;justify-content:space-between;flex-wrap:wrap}
  .console-inline-control select{flex:1 1 150px;min-width:0}
  .console-clock{min-width:88px}
}
@media (max-width:600px){
  .participant .integrated-console{grid-template-columns:1fr}
  .participant .console-group,.participant .console-status{padding:6px 7px}
  .participant .console-inline-control{font-size:11px}
}


/* v0.7.13: fix the earlier v0.7.11 high-specificity flex override.
   Scope the integrated hardware-style control bank to faculty only. */
.layout .monitor-footer.integrated-console.console-revised {
 display:grid !important;
 grid-template-columns:minmax(0,1fr) !important;
 align-items:stretch;
 gap:0;
 padding:0 !important;
 overflow:hidden;
 border:1px solid #485e6a;
 border-top:5px solid #293d49;
 border-radius:0 0 13px 13px;
 background:linear-gradient(145deg,#263943 0%,#172630 45%,#101d26 100%);
 box-shadow:inset 0 1px 0 #6a808c55,0 8px 20px #0005;
}
.layout .console-revised .console-status {
 border:0;border-radius:0;box-shadow:none;
 display:flex;flex-direction:row;align-items:center;justify-content:space-between;
 gap:10px;min-height:32px;padding:6px 13px;
 background:#0c1c26;border-bottom:1px solid #405460;
}
.layout .console-revised .console-status .sim-label{font-size:9px;letter-spacing:.11em;color:#a3bac6;width:auto}
.layout .console-revised .console-alarm-text{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#8bd4b6;font-size:11px;letter-spacing:.025em}
.layout .console-revised .console-status .alarm{color:#ffb45e}
.layout .console-revised .console-groups{display:grid;gap:0;min-width:0}
.layout .console-revised .console-group{position:relative;display:flex;gap:7px;align-items:center;flex-wrap:wrap;
 border:0;border-radius:0;box-shadow:none;background:transparent;padding:24px 11px 10px;
}
.layout .console-revised .console-group + .console-group {border-top:1px solid #405460;padding-top:26px}
.layout .console-revised .console-group-tag{position:absolute;left:12px;top:7px;color:#8eabb8;font-size:9px;letter-spacing:.14em;font-weight:800}
.layout .console-revised .console-key,
.layout .console-revised .lead-controls button{
 appearance:none;cursor:pointer;border-radius:5px;min-height:39px;padding:8px 11px;
 font-size:11px;font-weight:800;line-height:1.12;letter-spacing:.015em;
 text-shadow:0 1px 0 #0009;
 border:1px solid #496372;background:linear-gradient(180deg,#354b57 0%,#223641 100%);
 box-shadow:inset 0 1px 0 #ffffff2a,inset 0 -3px 0 #07182180,0 2px 2px #0004;
 transition:filter .15s,transform .08s;
}
.layout .console-revised .console-key:hover,.layout .console-revised .lead-controls button:hover{filter:brightness(1.16)}
.layout .console-revised .console-key:active,.layout .console-revised .lead-controls button:active{transform:translateY(2px);box-shadow:inset 0 2px 3px #0007}
.layout .console-revised #nibp{background:linear-gradient(180deg,#208c94,#115a68);border-color:#4bbbbf;color:#fff}
.layout .console-revised .lead-controls{display:contents !important;background:none;border:0;padding:0;order:initial !important;flex-basis:auto !important;margin:0 !important}
.layout .console-revised .lead-controls-label{display:none}
.layout .console-revised .lead-controls button.lead-connected{background:linear-gradient(180deg,#21614e,#134235);border-color:#479e7a;color:#ebfff3}
.layout .console-revised .lead-controls button.lead-disconnected{background:linear-gradient(180deg,#7a3a47,#542331);border-color:#bd6477;color:#fff3f3}
.layout .console-revised .console-inline-control{background:#11242d;border-color:#49616e;border-radius:5px;min-height:39px}
.layout .console-revised .console-clock{min-height:39px;border-color:#4c6470;border-radius:5px;background:#071720;color:#d8f4ff}
@media(max-width:650px){
 .layout .console-revised .console-group{padding-left:7px;padding-right:7px}
 .layout .console-revised .console-key,.layout .console-revised .lead-controls button{font-size:10px;padding:8px 7px}
 .layout .console-revised .console-status{flex-wrap:wrap}
}

/* v0.7.14: explicit observations dialog, faculty-only. */
.rhythm-observation-overlay{position:fixed;inset:0;z-index:10005;background:rgba(2,8,13,.83);backdrop-filter:blur(5px);display:flex;justify-content:center;align-items:center;padding:16px}
.rhythm-observation-dialog{width:min(100%,580px);max-height:calc(100dvh - 32px);overflow:auto;background:#12212d;border:1px solid #48727e;box-shadow:0 24px 90px #000b;border-radius:17px;padding:24px;color:#eff8ff}
.rhythm-observation-heading h2{margin:6px 0;font-size:25px;letter-spacing:-.035em}
.rhythm-observation-heading p{margin:0;font-size:14px;color:#bfd4df}
.rhythm-observation-eyebrow{font-size:10px;letter-spacing:.16em;color:#68cbd0;font-weight:800}
.rhythm-observation-note{margin:16px 0;color:#b3cbd9;line-height:1.5;font-size:12px}
.rhythm-observation-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rhythm-observation-field{display:grid;grid-template-columns:minmax(0,1fr) 78px;align-items:center;gap:5px 9px;padding:10px;border:1px solid #304756;border-radius:9px;background:#0e1a24}
.rhythm-observation-field span{font-size:12px;font-weight:650;color:#d8eaf3}
.rhythm-observation-field input{width:78px;min-width:0;padding:7px 5px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.rhythm-observation-field small{grid-column:2;justify-self:end;color:#8bacbb;font-size:10px}
.rhythm-observation-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin-top:18px}
.rhythm-observation-actions button{font-size:12px}
.rhythm-observation-error{margin:12px 0 0;color:#f1c68b;font-size:12px}
@media(max-width:500px){.rhythm-observation-dialog{padding:15px}.rhythm-observation-fields{grid-template-columns:1fr}}

/* v0.7.17 — fullscreen the monitor plus its physical control bezel.
   Fullscreening just .monitor used to cut off NIBP and the alarm strip. */
.monitor-shell{width:100%;min-width:0}
.monitor-shell:fullscreen{
  width:100vw;height:100dvh;min-height:0;
  display:grid;grid-template-rows:minmax(0,1fr) auto;
  background:#02080d;overflow:hidden;padding:0;
}
.monitor-shell:fullscreen .monitor{
  width:100%;height:100%!important;max-height:none!important;
  min-height:0!important;border-radius:0 0 0 0;
  overflow:hidden;
}
.monitor-shell:fullscreen .waveforms,
.monitor-shell:fullscreen .vitals{height:100%;min-height:0}
.monitor-shell:fullscreen .wave{min-height:0}
.monitor-shell:fullscreen .monitor-footer{
  box-sizing:border-box;display:grid;grid-template-columns:1fr;
  width:100%;min-height:0;max-height:min(43dvh,250px);
  padding:0!important;overflow:auto;scrollbar-width:thin;
  border-radius:0;flex:none;
}
.monitor-shell:fullscreen .console-status{
  position:sticky;top:0;z-index:4;
  display:flex;flex-flow:row wrap;align-items:center;justify-content:space-between;
  gap:6px;min-height:34px;padding:7px 12px;
  background:#142733;border-bottom:1px solid #45606d;
}
.monitor-shell:fullscreen .console-alarm-text{
  font-size:clamp(12px,1.4vw,17px);font-weight:800;line-height:1.25;
  overflow-wrap:anywhere;
}
.monitor-shell:fullscreen #alarmText.alarm{color:#ffc268}
.monitor-shell:fullscreen .console-groups{display:grid;gap:0}
.monitor-shell:fullscreen .console-group{display:flex;flex-flow:row wrap;justify-content:flex-start;gap:7px;padding:8px 12px}
.monitor-shell:fullscreen .console-group-tag{display:none}
.monitor-shell:fullscreen .console-group + .console-group{border-top:1px solid #304653}
.monitor-shell:fullscreen .console-key{padding:8px 12px;min-height:36px;font-size:12px}
.monitor-shell:fullscreen #nibp{background:#126872;border:1px solid #5db8ba;color:#fff;font-weight:800}
.monitor-shell:fullscreen .console-inline-control{min-height:35px}
.monitor-shell:fullscreen .sound-participant{padding:6px 12px;border-top:1px solid #304653}
/* Keep alarm and NIBP reachable even in shallow landscape screens. */
@media (max-height:550px){
 .monitor-shell:fullscreen{grid-template-rows:minmax(0,1fr) auto}
 .monitor-shell:fullscreen .monitor-footer{max-height:min(46dvh,142px)}
 .monitor-shell:fullscreen .console-status{min-height:27px;padding:4px 8px}
 .monitor-shell:fullscreen .console-group{padding:5px 8px;gap:5px}
 .monitor-shell:fullscreen .console-group-secondary{padding-top:5px}
 .monitor-shell:fullscreen .console-key{min-height:29px;padding:5px 8px;font-size:11px}
}
/* The participant's non-fullscreen display can use its regular natural height. */
.participant .monitor-shell{flex:0 0 auto;min-height:0}
.participant .monitor-shell:fullscreen{flex:none}


/* v0.7.18 participant monitor: one compact control bezel and large readings.
   Scoped so faculty controls and their patient connections are unchanged. */
.participant .monitor-shell{display:flex;flex-direction:column;min-width:0}
.participant .monitor-shell .integrated-console{
 display:flex!important;flex-flow:row nowrap!important;align-items:center;gap:7px;
 padding:5px 9px!important;min-height:47px;max-height:70px;overflow-x:auto;overflow-y:hidden;
 border-top:1px solid #37505b;background:#101e28;scrollbar-width:thin;
}
.participant .monitor-shell .console-status{
 display:flex!important;flex-direction:row!important;align-items:center!important;gap:8px;
 flex:0 0 auto;border:0;background:transparent;box-shadow:none;
 padding:0 9px 0 0!important;min-width:0;
}
.participant .monitor-shell .sim-label{display:none!important}
.participant .monitor-shell .console-alarm-text{
 display:inline-block;white-space:nowrap;font-size:clamp(11px,1.1vw,14px);font-weight:800;color:#c8ebdd;
}
.participant .monitor-shell .console-alarm-text.alarm{color:#ffd073}
.participant .monitor-shell .console-groups{
 display:flex!important;flex-flow:row nowrap!important;align-items:center;gap:6px;
 flex:1 0 auto;min-width:max-content;
}
.participant .monitor-shell .console-group,
.participant .monitor-shell .console-group-secondary{
 display:flex!important;flex-flow:row nowrap!important;justify-content:flex-start!important;
 align-items:center;flex:0 0 auto;gap:6px;padding:0!important;
 background:transparent;border:0!important;box-shadow:none;border-radius:0;
}
.participant .monitor-shell .console-group-tag{display:none!important}
.participant .monitor-shell .console-group + .console-group{border-top:0!important;padding-top:0!important}
.participant .monitor-shell .console-key{font-size:11px;padding:6px 9px;min-height:32px;white-space:nowrap}
.participant .monitor-shell #nibp{background:#116d79;border-color:#48adb6;color:#fff;font-weight:800}
.participant .monitor-shell .console-inline-control{
 display:flex;flex-flow:row nowrap;align-items:center;width:auto;max-width:none;
 padding:3px 5px;min-height:32px;white-space:nowrap;gap:5px;
}
.participant .monitor-shell .console-inline-control span{font-size:10px}
.participant .monitor-shell .console-inline-control select{min-width:0;width:100px;flex:none;padding:4px;font-size:11px}
.participant .monitor-shell .console-clock{min-height:32px;min-width:77px;padding:5px;font-size:11px;white-space:nowrap}
.participant .monitor-shell .vitals .vital strong{
 font-size:clamp(36px,3.7vw,78px)!important;line-height:1.05!important;
 letter-spacing:-.055em;
}
.participant .monitor-shell .vitals .vital small{font-size:clamp(10px,.85vw,15px)!important}
.participant .monitor-shell .numeric-strip .vital strong{
 font-size:clamp(30px,2.6vw,52px)!important;line-height:1.07!important;
}
.participant .monitor-shell .numeric-strip .vital small{font-size:clamp(9px,.7vw,12px)!important}
/* Fullscreen includes the entire compact bezel. */
.participant .monitor-shell:fullscreen{
 display:grid!important;grid-template-rows:minmax(0,1fr) auto;
 height:100dvh;width:100vw;max-width:none;max-height:none;overflow:hidden;
 background:#03090d;
}
.participant .monitor-shell:fullscreen .monitor{
 height:100%!important;min-height:0!important;max-height:none!important;overflow:hidden;
}
.participant .monitor-shell:fullscreen .monitor-footer{
 display:flex!important;flex-flow:row nowrap!important;align-items:center!important;
 width:100%;max-height:62px!important;height:auto;min-height:45px;
 overflow-x:auto!important;overflow-y:hidden!important;padding:5px 9px!important;
}
.participant .monitor-shell:fullscreen .console-status{position:static!important;z-index:auto;min-height:0;border:0;white-space:nowrap;background:transparent!important}
.participant .monitor-shell:fullscreen .console-groups{display:flex!important;flex-flow:row nowrap!important;gap:6px}
.participant .monitor-shell:fullscreen .console-group{display:flex!important;flex-flow:row nowrap!important;gap:6px;padding:0!important;justify-content:flex-start}
.participant .monitor-shell:fullscreen .console-key{font-size:11px;padding:6px 9px;min-height:32px}
.participant .monitor-shell:fullscreen .console-group + .console-group{border:0!important}
.participant .monitor-shell:fullscreen .sound-participant{padding:0;white-space:nowrap}
/* Landscape fit runs even where a mobile browser blocks the fullscreen API. */
@media (orientation:landscape) and (pointer:coarse) and (max-width:1024px){
 .participant{padding:0!important;gap:0!important;min-height:100dvh;height:100dvh;overflow:hidden}
 .participant .topbar{display:none!important}
 .participant .monitor-shell{height:100dvh;display:grid;grid-template-rows:minmax(0,1fr) auto;overflow:hidden}
 .participant .monitor-shell .monitor{height:100%!important;min-height:0!important;max-height:none!important}
 .participant .monitor-shell .monitor-footer{min-height:40px;max-height:52px!important}
 .participant .monitor-shell .vitals .vital strong{font-size:clamp(26px,5.8vh,56px)!important}
 .participant .monitor-shell .numeric-strip .vital strong{font-size:clamp(24px,5vh,42px)!important}
}
.mobile-fullscreen-prompt{display:none!important}
@media (orientation:landscape) and (pointer:coarse) and (max-width:1024px){
 .participant .monitor-shell:not(:fullscreen) .mobile-fullscreen-prompt:not([hidden]){
  display:block!important;position:fixed;top:6px;right:8px;z-index:9998;
  border:1px solid #4ac1c3;background:#0c4f5d;color:#fff;
  border-radius:6px;font-size:10px;line-height:1;padding:5px 8px;opacity:.88;
 }
}

/* v0.7.20 — faculty fullscreen monitor: single, space-efficient key row.
   Does not affect participant monitor or the ordinary faculty preview. */
.layout .monitor-shell:fullscreen{display:grid;grid-template-rows:minmax(0,1fr) auto;overflow:hidden}
.layout .monitor-shell:fullscreen .monitor-footer.integrated-console{
 display:flex!important;flex-direction:column!important;gap:0!important;
 height:auto!important;min-height:0!important;max-height:112px!important;
 overflow:visible!important;padding:0!important;
 background:#101f29;border-top:1px solid #33505e;
}
.layout .monitor-shell:fullscreen .console-status{
 position:static!important;flex:0 0 auto;display:flex!important;
 flex-direction:row!important;justify-content:space-between!important;
 align-items:center!important;gap:8px!important;min-height:26px!important;
 padding:4px 12px!important;border:0!important;border-bottom:1px solid #314b58!important;
 background:#182d39!important;border-radius:0!important;box-shadow:none!important;
}
.layout .monitor-shell:fullscreen .console-status .sim-label{width:auto!important;margin:0!important}
.layout .monitor-shell:fullscreen .console-alarm-text{margin:0!important;white-space:nowrap;font-size:12px!important}
.layout .monitor-shell:fullscreen .console-groups{
 display:flex!important;flex:0 0 auto;align-items:center!important;
 flex-flow:row nowrap!important;gap:6px!important;
 padding:6px 10px!important;min-width:0;max-width:100%;
 overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;
}
.layout .monitor-shell:fullscreen .console-group,
.layout .monitor-shell:fullscreen .console-group-primary,
.layout .monitor-shell:fullscreen .console-group-secondary{
 display:contents!important;
}
.layout .monitor-shell:fullscreen .console-group-tag{display:none!important}
.layout .monitor-shell:fullscreen .lead-controls{
 display:contents!important;margin:0!important;border:0!important;padding:0!important;
}
.layout .monitor-shell:fullscreen .lead-controls-label{display:none!important}
.layout .monitor-shell:fullscreen .console-key,
.layout .monitor-shell:fullscreen .lead-controls button{
 flex:0 0 auto!important;white-space:nowrap;font-size:11px!important;
 padding:7px 10px!important;min-height:32px!important;line-height:1.1!important;
}
.layout .monitor-shell:fullscreen #nibp{order:0}
.layout .monitor-shell:fullscreen .lead-controls button{order:1}
.layout .monitor-shell:fullscreen #mute{order:3;margin-left:auto!important}
.layout .monitor-shell:fullscreen .console-inline-control{order:4;flex:0 0 auto!important;min-height:32px!important;padding:3px 6px!important}
.layout .monitor-shell:fullscreen #full{order:5}
.layout .monitor-shell:fullscreen #clock{order:6;flex:0 0 auto!important;min-height:32px!important;min-width:80px!important;padding:5px 7px!important;font-size:11px!important;white-space:nowrap}
@media(max-width:1200px){
 .layout .monitor-shell:fullscreen .console-groups{overflow-x:auto}
 .layout .monitor-shell:fullscreen #mute{margin-left:8px!important}
}

/* v0.7.24: Faculty-only one-screen workstation. Participant layout unchanged. */
.layout .faculty-header-clock{display:inline-flex;align-items:center;padding:5px 9px;border:1px solid #355260;border-radius:6px;background:#102632;color:#cde7f5;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.layout .monitor-footer.console-revised{display:flex!important;flex-direction:column!important;gap:0!important;padding:0!important;background:#0f2430;border:1px solid #38515f;border-radius:0 0 8px 8px;min-width:0}
.layout .monitor-footer.console-revised .console-status{display:flex!important;flex-flow:row nowrap!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;min-height:25px!important;padding:4px 9px!important;border:0!important;border-bottom:1px solid #3a5360!important;background:#142d3a!important;box-shadow:none!important;border-radius:0!important}
.layout .monitor-footer.console-revised .console-status .sim-label{font-size:9px!important;white-space:nowrap}
.layout .monitor-footer.console-revised .console-alarm-text{font-size:11px!important}
.layout .monitor-footer.console-revised .console-groups{display:flex!important;flex-direction:column!important;gap:0!important;padding:0!important;min-width:0}
.layout .monitor-footer.console-revised .console-group-primary{display:flex!important;flex-wrap:wrap!important;align-items:center!important;gap:5px!important;padding:6px 8px!important;border:0!important;border-bottom:1px solid #304958!important;background:transparent!important;border-radius:0!important;box-shadow:none!important}
.layout .monitor-footer.console-revised .console-group-primary .console-group-tag{display:none!important}
.layout .monitor-footer.console-revised .lead-controls{display:contents!important;border:0!important;margin:0!important;padding:0!important}
.layout .monitor-footer.console-revised .lead-controls-label{display:none!important}
.layout .monitor-footer.console-revised .console-group-primary button{min-height:28px!important;padding:6px 8px!important;font-size:10px!important;line-height:1.1!important;border-radius:5px!important;white-space:nowrap}
.layout .monitor-footer.console-revised #mute{margin-left:auto}
.layout .faculty-live-slot{display:flex;flex-direction:column;min-width:0;padding:5px 8px 6px;background:#112632}
.layout .faculty-live-observations{border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important;margin:0!important;min-width:0}
.layout .faculty-live-observations>h2{font-size:11px!important;font-weight:800!important;letter-spacing:.11em;text-transform:uppercase;color:#81cfe2;margin:0 0 5px!important}
.layout .faculty-live-observations>p.help{display:none}
.layout .faculty-live-observations #basicObservations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;min-width:0}
.layout .faculty-live-observations #basicObservations[hidden]{display:none}
.layout .faculty-live-observations .observation-row.control{display:grid;grid-template-columns:minmax(0,1fr) 70px;grid-template-rows:auto auto;gap:2px 4px;margin:0!important;min-height:0;padding:5px 6px;background:#0c1c27;border:1px solid #385666;border-radius:6px}
.layout .faculty-live-observations .observation-row.control[hidden]{display:none}
.layout .faculty-live-observations .observation-row>label:first-child{grid-column:1;grid-row:1;font-size:10px;font-weight:650;line-height:1.2;white-space:normal}
.layout .faculty-live-observations .observation-row>input{grid-column:2;grid-row:1/span 2;min-width:0;width:100%;padding:5px 3px;text-align:center;font-size:14px;font-weight:750;font-variant-numeric:tabular-nums}
.layout .faculty-live-observations .observation-row .ramp-option{grid-column:1;grid-row:2;display:flex;align-items:center;gap:4px;font-size:9px;color:#9abecf;margin:0!important}
.layout .faculty-live-observations .observation-row .ramp-option input{width:12px;height:12px;margin:0;padding:0;accent-color:#56bfc1}
.layout .faculty-live-observations .transition-inline{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:5px 0 0;padding:0!important}
.layout .faculty-live-observations .transition-inline>p.help{display:none}
.layout .faculty-live-observations .transition-inline .transition-actions{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:0}
.layout .faculty-live-observations .transition-actions label{font-size:10px}
.layout .faculty-live-observations .transition-actions input{width:60px;padding:5px;font-size:11px}
.layout .faculty-live-observations .transition-actions button{padding:5px 8px;font-size:10px;border-radius:5px}
.layout .faculty-live-observations #transitionStatus{margin:0;flex:1 1 120px;font-size:10px;line-height:1.25;max-height:28px;overflow:hidden}
.layout .faculty-live-slot .faculty-ctg-audio{display:flex;align-items:center;gap:7px;padding:4px 0 0;font-size:10px}
.layout .faculty-live-slot .faculty-ctg-audio[hidden]{display:none!important}
.layout .faculty-live-slot .faculty-ctg-audio select{padding:4px;font-size:10px;max-width:120px}
@media (min-width:1051px){
 .layout{height:100dvh;min-height:0;overflow:hidden}
 .layout .workspace{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:8px 12px 7px}
 .layout .topbar{flex:none;margin-bottom:6px;padding:0 0 6px}
 .layout .topbar h1{font-size:20px}
 .layout .monitor-section{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;margin-bottom:0;padding:7px}
 .layout .monitor-section .section-eyebrow{flex:none;font-size:10px;margin-bottom:5px}
 .layout .monitor-shell{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:hidden}
 .layout .monitor-section .monitor-shell .monitor{height:auto!important;max-height:none!important;min-height:140px!important;flex:1 1 auto;border-width:3px}
 .layout .monitor-section .monitor-footer{flex:0 0 auto}
 .layout .sidebar{height:100dvh;max-height:100dvh;overflow:auto}
}
@media (min-width:1051px) and (max-width:1350px){.layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1051px) and (max-height:760px){.layout .faculty-live-slot{max-height:290px;overflow-y:auto}.layout .faculty-live-observations .observation-row.control{padding:3px 5px}}
@media (max-width:1050px){.layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(2,minmax(0,1fr))}.layout .monitor-section .monitor-shell .monitor{min-height:220px!important}}

/* v0.7.25 — standalone Display units accordion, transition duration beside Start */
.sidebar .display-units-panel .display-units-label,
.sidebar .faculty-accordion .display-units-label{display:block;margin:0 0 7px;font-size:12px;color:#bed5e2}
.sidebar .faculty-accordion #unitSystem{display:block;width:100%;max-width:100%;margin:0 0 9px}
.layout .faculty-live-observations .transition-inline .transition-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px}
.layout .faculty-live-observations .transition-actions #seconds{width:58px;min-width:58px}

/* v0.7.26: cardiac rhythm in the patient-control strip, additional observations in sidebar */
.layout .monitor-footer.console-revised .console-group-primary{
 display:flex!important;flex-wrap:wrap!important;align-items:center!important;gap:5px!important;
}
.layout .monitor-footer.console-revised .faculty-rhythm-slot{
 display:flex;align-items:center;flex:1 1 270px;min-width:220px;max-width:430px;
 margin-left:4px;margin-right:auto;
}
.layout .faculty-rhythm-slot .rhythm-inline{
 display:flex;align-items:center;flex:1;min-width:0;gap:7px;
 margin:0!important;padding:0!important;
}
.layout .faculty-rhythm-slot label{
 flex:none;color:#9ecbd9;font-weight:750;font-size:10px;white-space:nowrap;
}
.layout .faculty-rhythm-slot select{
 flex:1;min-width:120px;max-width:100%;height:29px;
 padding:4px 8px;font-size:11px;border-radius:5px;
 background:#0b2331;border-color:#3b6375;
}
.layout .monitor-footer.console-revised #mute{margin-left:auto!important}
/* Keep all readings visible and give screen height back to the monitor. */
.layout .faculty-live-slot{padding-top:5px;padding-bottom:5px;min-height:0}
.layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(4,minmax(0,1fr))}
.layout .faculty-live-observations .observation-row.control{padding:4px 5px}
.layout .additional-observations-panel #extraObservations{
 display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;
}
.layout .additional-observations-panel #extraObservations[hidden]{display:none!important}
.layout .additional-observations-panel #extraObservations h3,
.layout .additional-observations-panel #extraObservations>p.help{grid-column:1/-1;margin:0}
.layout .additional-observations-panel #extraObservations .control{
 display:flex;flex-direction:column;align-items:stretch;gap:4px;margin:0;
}
.layout .additional-observations-panel #extraObservations .control[hidden]{display:none!important}
.layout .additional-observations-panel #extraObservations .control label{font-size:11px}
.layout .additional-observations-panel #extraObservations .control input{width:100%;padding:6px 8px}
@media (min-width:1051px) and (max-width:1350px){
 .layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:1050px){
 .layout .monitor-footer.console-revised .faculty-rhythm-slot{flex:1 1 190px;min-width:150px}
}

/* v0.7.27 — all observations, including ART/CVP/ICP/CO/BIS/TOF, under monitor. */
.layout .faculty-live-observations #extraObservations.compact-extra-observations{
 display:grid!important;
 grid-template-columns:repeat(4,minmax(0,1fr));
 column-gap:5px;row-gap:4px;
 margin-top:4px;padding-top:4px;
 border-top:1px solid #345161;
 min-width:0;
}
.layout .faculty-live-observations #extraObservations.compact-extra-observations[hidden]{display:none!important}
.layout .faculty-live-observations #extraObservations.compact-extra-observations h3{
 grid-column:1 / -1;margin:0;color:#8bd4e7;
 text-transform:uppercase;font-size:10px;letter-spacing:.09em;line-height:1.2;
}
.layout .faculty-live-observations #extraObservations.compact-extra-observations >p.help{display:none}
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control{
 display:grid;grid-template-columns:minmax(0,1fr) 62px;
 align-items:center;gap:4px;margin:0!important;padding:3px 5px;
 min-height:29px;border:1px solid #365261;border-radius:5px;background:#0b1c27;
}
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control[hidden]{display:none!important}
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control label{
 min-width:0;font-size:10px;line-height:1.1;color:#bed6e1;
 overflow-wrap:break-word;
}
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control input{
 width:100%;min-width:0;padding:4px 3px;font-size:12px;font-weight:750;
 text-align:center;border-radius:4px;font-variant-numeric:tabular-nums;
}
.layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:4px!important}
.layout .faculty-live-observations .observation-row.control{padding:3px 5px!important}
.layout .faculty-live-observations .transition-inline{margin-top:4px!important}
/* Prevent an overly tall observation console from crushing the waveform display. */
@media (min-width:1051px){
 .layout .monitor-section .monitor-shell .monitor{min-height:250px!important}
 .layout .faculty-live-slot{flex:0 1 auto;min-height:0;max-height:min(44dvh,340px);overflow-y:auto;scrollbar-width:thin}
}
@media (min-width:1051px) and (max-width:1370px){
 .layout .faculty-live-observations #extraObservations.compact-extra-observations{grid-template-columns:repeat(3,minmax(0,1fr))}
 .layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media (max-width:1050px){
 .layout .faculty-live-observations #extraObservations.compact-extra-observations{grid-template-columns:repeat(2,minmax(0,1fr))}
 .layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:520px){
 .layout .faculty-live-observations #extraObservations.compact-extra-observations{grid-template-columns:1fr}
}

/* v0.7.28: touch-first range sliders with precise numeric fallback. */
.layout .faculty-live-observations .control.observation-row,
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control{
 position:relative;grid-template-columns:minmax(0,1fr) 64px!important;
 grid-template-rows:auto auto!important;align-items:center;
 gap:1px 5px!important;padding:3px 6px 4px!important;
}
.layout .faculty-live-observations .control.observation-row>label:first-child,
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control>label{
 grid-column:1;grid-row:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.layout .faculty-live-observations .control.observation-row>input.obs-exact-value,
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control>input.obs-exact-value{
 grid-column:2;grid-row:1;min-width:0;width:100%;height:26px!important;
 padding:3px 4px!important;font-size:12px!important;text-align:center;
 -moz-appearance:textfield;appearance:textfield;
}
.layout .faculty-live-observations input.obs-exact-value::-webkit-inner-spin-button,
.layout .faculty-live-observations input.obs-exact-value::-webkit-outer-spin-button{
 -webkit-appearance:none;margin:0;
}
.layout .faculty-live-observations input.obs-touch-slider{
 grid-column:1/-1;grid-row:2;display:block!important;
 width:100%!important;min-width:0;height:22px!important;margin:1px 0 0!important;
 padding:0!important;border:0!important;box-shadow:none!important;
 appearance:none;-webkit-appearance:none;background:transparent!important;
 cursor:pointer;touch-action:pan-y;
}
.layout .faculty-live-observations input.obs-touch-slider::-webkit-slider-runnable-track{
 height:7px;border-radius:7px;background:linear-gradient(90deg,#1c5866,#346d7e);
 border:1px solid #407b88;
}
.layout .faculty-live-observations input.obs-touch-slider::-moz-range-track{
 height:7px;border-radius:7px;background:#255d6c;border:1px solid #407b88;
}
.layout .faculty-live-observations input.obs-touch-slider::-webkit-slider-thumb{
 appearance:none;-webkit-appearance:none;width:21px;height:21px;margin-top:-8px;
 border-radius:50%;background:#8be2e5;border:2px solid #e1fbfc;
 box-shadow:0 1px 6px #0009;
}
.layout .faculty-live-observations input.obs-touch-slider::-moz-range-thumb{
 width:18px;height:18px;border-radius:50%;background:#8be2e5;
 border:2px solid #e1fbfc;box-shadow:0 1px 6px #0009;
}
.layout .faculty-live-observations input.obs-touch-slider:focus-visible{
 outline:2px solid #8be2e5;outline-offset:2px;
}
/* Maintain a compact card with Ramp on the first line beside the label. */
.layout .faculty-live-observations .observation-row .ramp-option{
 grid-column:1;grid-row:1;justify-self:end;margin-right:2px;
 font-size:9px;white-space:nowrap;
}
.layout .faculty-live-observations #extraObservations.compact-extra-observations .control label{
 font-size:9px!important;
}
@media (max-width:850px){
 .layout .faculty-live-observations input.obs-touch-slider{height:30px!important}
 .layout .faculty-live-observations input.obs-touch-slider::-webkit-slider-thumb{width:26px;height:26px;margin-top:-11px}
}

/* v0.7.29 — one unified observation slider grid, no extra box or duplicate ART. */
.layout .faculty-live-observations #basicObservations .control.observation-row{
 min-width:0;min-height:0;
}
.layout .faculty-live-observations #basicObservations .control.observation-row[hidden]{display:none!important}
.layout .faculty-rhythm-slot .rhythm-inline{gap:0!important}
.layout .faculty-rhythm-slot select{flex:1 1 auto;width:100%;min-width:0}
.layout .faculty-rhythm-slot{flex:1 1 210px!important;max-width:320px!important;min-width:135px!important}


/* v0.7.30 — redesigned session landing/join experience */
.landing-modern{max-width:1120px;margin:0 auto;padding:clamp(22px,4vw,52px) clamp(16px,3vw,34px) 26px;min-height:100dvh;color:#f2f8ff}
.landing-modern .landing-hero{border:1px solid #294753;border-radius:21px;padding:clamp(25px,4.5vw,52px);background:radial-gradient(ellipse at 85% 5%,#17566566 0%,transparent 55%),linear-gradient(130deg,#122632 0%,#0d1926 75%);box-shadow:0 20px 55px #0003;position:relative;overflow:hidden}
.landing-modern .landing-hero:after{content:"";position:absolute;right:-70px;top:-76px;width:350px;height:350px;border-radius:50%;border:1px solid #49c5ce25;box-shadow:0 0 0 38px #49c5ce0b,0 0 0 82px #49c5ce08;pointer-events:none}
.landing-identity{display:flex;align-items:center;gap:13px;margin-bottom:28px}
.landing-logo-mark{display:grid;place-items:center;width:43px;height:43px;border-radius:12px;background:#14636d;border:1px solid #59b9c2;color:#b4fdff;font-weight:900;font-size:35px;line-height:1}
.landing-wordmark{font-size:26px;font-weight:820;letter-spacing:-.06em;line-height:1}.landing-wordmark span{color:#72dce3}
.landing-modern .landing-eyebrow{font-size:10px;letter-spacing:.2em;font-weight:850;color:#76d6dc;margin-bottom:11px}
.landing-modern .landing-hero h1{font-size:clamp(32px,5.6vw,64px);letter-spacing:-.055em;line-height:1.07;margin:0 0 14px;max-width:670px}
.landing-modern .landing-hero p{max-width:550px;margin:0;color:#b6cad6;font-size:clamp(14px,1.7vw,18px);line-height:1.6}
.landing-hero-foot{display:flex;align-items:center;gap:8px;margin-top:32px;font-size:11px;font-weight:650;color:#a4c9d3}
.landing-live-mark{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5eecad;box-shadow:0 0 0 4px #5eecad16}
.landing-version{margin-left:auto;color:#7497a5;font-size:11px}
.landing-workflows{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:19px}
.landing-action-card{display:flex;flex-direction:column;min-width:0;min-height:270px;padding:26px;border:1px solid #2a4858;border-radius:18px;background:#101f2e;box-shadow:0 10px 27px #0002}
.landing-action-featured{background:linear-gradient(145deg,#133541 0%,#10222f 75%);border-color:#32747d}
.landing-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}
.landing-step{font-size:11px;letter-spacing:.18em;font-weight:850;color:#78d4dc}
.landing-card-icon{font-size:28px;color:#77d5de;line-height:1}
.landing-action-card h2{margin:0 0 8px;font-size:22px;letter-spacing:-.035em}
.landing-action-card p{color:#aec2d0;font-size:13px;line-height:1.65;margin:0 0 25px;max-width:380px}
.landing-action-card button{min-height:45px;font-weight:750}
.landing-cta{display:flex;align-items:center;justify-content:space-between;width:100%;background:linear-gradient(120deg,#14818d,#116a79);border-color:#40aab6;padding:12px 16px;margin-top:auto;color:white}
.landing-cta:hover{background:#218d99}
.landing-join-form{margin-top:auto}.landing-join-form>label{font-size:10px;letter-spacing:.12em;color:#9bb9c8;font-weight:780;display:block;margin-bottom:9px}
.landing-join-row{display:flex;gap:9px}.landing-join-row input{flex:1;min-width:0;height:45px;padding:10px 13px;font-variant-numeric:tabular-nums;letter-spacing:.08em;text-transform:uppercase}.landing-join-row button{white-space:nowrap;padding:10px 17px;background:#1a4855;border-color:#407c8c}
.landing-secondary{margin-top:18px;padding:16px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #263d4c;border-radius:13px;background:#0c1925}
.landing-secondary>div{display:flex;flex-direction:column;gap:4px}.landing-secondary strong{font-size:13px}.landing-secondary span{font-size:12px;color:#9eb6c4}.landing-secondary button{font-size:12px;background:#172e3c;padding:10px 12px;white-space:nowrap}
.landing-disclaimer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:7px;margin-top:23px;color:#7992a2;font-size:10px;letter-spacing:.055em}
@media(max-width:720px){.landing-workflows{grid-template-columns:1fr;gap:12px}.landing-action-card{min-height:225px;padding:21px}.landing-modern .landing-hero{padding:26px}.landing-identity{margin-bottom:22px}.landing-hero-foot{margin-top:23px}.landing-secondary{align-items:flex-start;flex-direction:column}.landing-secondary button{width:100%}}
@media(max-width:400px){.landing-modern{padding:12px}.landing-modern .landing-hero{border-radius:15px;padding:22px}.landing-action-card{padding:18px}.landing-join-row button{padding:10px 12px}}


/* v0.7.31 — balanced faculty sidebar and read-only live overview */
@media (min-width:1051px){
 .layout>.sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  grid-auto-rows:min-content;align-content:start;gap:9px;padding:14px;}
 .layout>.sidebar>.sidebar-title{grid-column:1/-1;margin:0 0 3px}
 .layout>.sidebar>.faculty-accordion{margin:0;min-width:0}
 .layout>.sidebar>.faculty-accordion[open]{grid-column:1/-1}
 .layout>.sidebar>.faculty-accordion>summary{min-height:65px;padding:11px 10px;
  font-size:12px;line-height:1.25;gap:5px;overflow-wrap:anywhere}
 .layout>.sidebar>.faculty-accordion>summary::after{flex:0 0 auto;font-size:18px}
 .layout>.sidebar>.faculty-session-overview{grid-column:1/-1}
}
.faculty-session-overview{border:1px solid #304758;border-radius:12px;
 background:linear-gradient(165deg,#102633 0%,#101c29 100%);
 padding:15px;min-width:0;display:flex;flex-direction:column;gap:12px;margin-top:5px}
.overview-heading{display:flex;align-items:center;gap:8px;font-size:11px;
 font-weight:800;letter-spacing:.11em;color:#a0d8e2}
.overview-light{width:7px;height:7px;background:#57cbbb;border-radius:50%;box-shadow:0 0 8px #57cbbb65}
.overview-heading small{font-size:10px;letter-spacing:0;font-weight:500;
 color:#8daeba;margin-left:auto}
.overview-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.overview-metric{background:#0a1a25;border:1px solid #2d4556;border-radius:8px;
 padding:11px 10px;min-width:0;display:flex;flex-direction:column;gap:5px}
.overview-metric span{color:#8caebd;font-size:9px;font-weight:800;letter-spacing:.09em}
.overview-metric strong{font-size:13px;line-height:1.25;color:#e3f4f7;overflow-wrap:anywhere}
.overview-modules{display:flex;gap:5px;flex-wrap:wrap;align-content:start}
.overview-module{display:inline-flex;border:1px solid #286a67;background:#123d3c;color:#c4f4e6;
 padding:4px 7px;border-radius:5px;font-size:10px;line-height:1.1}
.overview-module.disconnected{background:#34202a;border-color:#80505d;color:#f5c8d2}
.overview-note{margin:0;color:#8daab9;font-size:11px;line-height:1.45}
@media(min-width:1051px) and (min-height:850px){
 .faculty-session-overview{min-height:225px}
}
@media(max-width:1050px){.faculty-session-overview{margin-top:5px}}

/* v0.7.32: touch-ready observation sliders in cardiac rhythm confirmation dialog */
.rhythm-observation-field{grid-template-rows:auto auto auto;gap:5px 9px}
.rhythm-observation-field .rhythm-observation-slider{
 grid-column:1/-1;grid-row:3;width:100%;min-width:0;margin:6px 0 0;padding:0;
 height:24px;cursor:pointer;accent-color:#66d1d8;touch-action:pan-y;
 background:transparent;border:0;box-shadow:none;
}
.rhythm-observation-field .rhythm-observation-slider::-webkit-slider-thumb{
 width:23px;height:23px;cursor:grab;
}
.rhythm-observation-field .rhythm-observation-slider::-moz-range-thumb{
 width:23px;height:23px;cursor:grab;
}
.rhythm-observation-field input[type=number]{appearance:textfield;-moz-appearance:textfield}
.rhythm-observation-field input[type=number]::-webkit-inner-spin-button,
.rhythm-observation-field input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
@media(max-width:500px){
 .rhythm-observation-field{padding:8px 10px}
 .rhythm-observation-slider{min-height:30px}
}


/* v0.7.33 — use entire right-hand column for the real faculty control panels.
   No duplicate session dashboard. Full-width panels expand naturally; the
   rest distribute vertically rather than leaving an unused block below. */
@media(min-width:1051px){
 .layout>.sidebar{
  display:flex!important;flex-direction:column!important;
  gap:9px!important;align-content:unset!important;
  height:100dvh;max-height:100dvh;min-height:0;
  padding:14px!important;overflow-y:auto;
 }
 .layout>.sidebar>.sidebar-title{flex:0 0 auto;margin:0 0 3px!important}
 .layout>.sidebar>.faculty-accordion{
  flex:1 1 0;min-height:65px;max-height:none;
  width:100%;margin:0!important;min-width:0;
  display:flex;flex-direction:column;
 }
 .layout>.sidebar>.faculty-accordion>summary{
  flex:1 0 63px;min-height:63px;
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 16px;font-size:14px;
 }
 .layout>.sidebar>.faculty-accordion[open]{
  flex:5 1 0;min-height:180px;overflow-y:auto;
 }
 .layout>.sidebar>.faculty-accordion[open]>summary{
  flex:0 0 auto;min-height:58px;
 }
 .layout>.sidebar>.faculty-accordion>summary::after{font-size:19px}
}
@media(min-width:1051px) and (max-height:650px){
 .layout>.sidebar>.faculty-accordion{min-height:50px}
 .layout>.sidebar>.faculty-accordion>summary{min-height:50px;flex-basis:50px;padding:9px 12px}
 .layout>.sidebar>.faculty-accordion[open]{min-height:170px}
}


/* v0.7.34 — larger participant readings, especially landscape tablets.
   These rules deliberately never affect .layout (faculty preview). */
.participant .monitor-shell .vitals .vital{
  min-width:0;overflow:hidden;padding:clamp(4px,.8vw,14px) clamp(5px,1vw,18px);
}
.participant .monitor-shell .vitals .vital strong{
  font-size:clamp(49px,5.25vw,106px)!important;
  letter-spacing:-.055em!important;line-height:1!important;
  font-weight:750!important;white-space:nowrap;
}
.participant .monitor-shell .vitals .vital small{
  font-size:clamp(11px,1vw,17px)!important;
}
.participant .monitor-shell .numeric-strip .vital{
  min-height:clamp(78px,13dvh,140px);
  min-width:0;max-width:none;
  padding:6px clamp(7px,1vw,18px);
  overflow:hidden;
}
.participant .monitor-shell .numeric-strip .vital strong{
  font-size:clamp(40px,3.6vw,78px)!important;
  line-height:1.02!important;font-weight:750!important;
  letter-spacing:-.04em;white-space:nowrap;
}
.participant .monitor-shell .numeric-strip .vital small{
  font-size:clamp(10px,.9vw,15px)!important;
}
@media (orientation:landscape) and (pointer:coarse) and (max-width:1200px){
 .participant .monitor-shell .vitals .vital strong{
   font-size:clamp(43px,9.4dvh,84px)!important;
 }
 .participant .monitor-shell .numeric-strip .vital{
   min-height:clamp(71px,16dvh,108px);
   padding:4px 8px;
 }
 .participant .monitor-shell .numeric-strip .vital strong{
   font-size:clamp(34px,8.2dvh,65px)!important;
 }
 .participant .monitor-shell .numeric-strip .vital small{
   font-size:clamp(9px,1.1vw,13px)!important;
 }
}
/* On small portrait phones, retain sufficient width for multi-digit values. */
@media (orientation:portrait) and (max-width:600px){
 .participant .monitor-shell .vitals .vital strong{
  font-size:clamp(31px,8vw,59px)!important;
 }
 .participant .monitor-shell .numeric-strip .vital{
  min-height:70px;min-width:70px;padding:4px 7px;
 }
 .participant .monitor-shell .numeric-strip .vital strong{
  font-size:clamp(31px,8vw,50px)!important;
 }
}
/* Connection-based, one-time audio permission panel (only when autoplay blocked). */
.participant-audio-choice{
 position:fixed;z-index:9995;right:max(12px,env(safe-area-inset-right));
 bottom:max(56px,env(safe-area-inset-bottom));max-width:min(400px,calc(100vw - 24px));
 background:#112532;border:1px solid #66cad5;border-radius:13px;
 box-shadow:0 14px 50px #000b;padding:15px;color:#eaf7fa;
 display:grid;gap:10px;
}
.participant-audio-choice[hidden]{display:none!important}
.participant-audio-choice strong{font-size:16px}
.participant-audio-choice p{margin:0;font-size:12px;line-height:1.5;color:#afcbd8}
.participant-audio-actions{display:flex;flex-wrap:wrap;gap:9px}
.participant-audio-actions button{
 min-height:44px;padding:9px 14px;font-weight:750;
}
.participant-audio-actions .audio-enable{background:#146a73;border-color:#4ec2c7}
.participant-audio-choice .audio-feedback{font-size:11px;color:#ffca83}
@media (orientation:landscape) and (max-height:520px){
 .participant-audio-choice{bottom:43px;right:7px;max-width:330px;padding:10px;gap:6px}
 .participant-audio-choice strong{font-size:14px}
 .participant-audio-actions button{min-height:34px;padding:6px 9px}
}

/* BP ratios use more glyphs than single-number observations. */
.participant .monitor-shell .numeric-strip .vital:has(#val-nibpVisible) strong{
 font-size:clamp(32px,3vw,62px)!important;
}
@media (orientation:landscape) and (pointer:coarse) and (max-width:1200px){
 .participant .monitor-shell .numeric-strip .vital:has(#val-nibpVisible) strong{
  font-size:clamp(29px,6dvh,50px)!important;
 }
}

/* v0.7.35 — public aggregated usage, no user/device tracking */
.landing-usage{margin-top:18px;border:1px solid #2b5262;border-radius:17px;background:linear-gradient(140deg,#122d3a,#0d1d2a);padding:20px 22px}
.landing-usage-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}
.landing-usage-eyebrow{font-size:10px;font-weight:850;letter-spacing:.17em;color:#76d6dc}
.landing-usage-heading h2{font-size:21px;letter-spacing:-.025em;margin:4px 0 0}
.landing-usage-heading button{background:#182f3c;border-color:#395968;font-size:12px;padding:8px 12px}
.landing-usage-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.landing-usage-stat{display:flex;flex-direction:column;justify-content:center;gap:7px;padding:14px 12px;min-width:0;border:1px solid #2d4d5b;border-radius:11px;background:#0b1b26}
.landing-usage-stat strong{font-size:clamp(24px,2.8vw,38px);line-height:1.1;color:#e0fafb;font-weight:800;font-variant-numeric:tabular-nums}
.landing-usage-stat span{font-size:11px;color:#a3bfcc;line-height:1.35}
.landing-usage-note{margin:13px 0 0;font-size:11px;color:#93afbe;line-height:1.5}
@media(max-width:700px){.landing-usage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.landing-usage{padding:16px}}

/* v0.7.36 — professional single-screen landing. Faculty / participant views unaffected. */
body:has(.landing-v36){background:#07121c;}
.landing-v36{--home-border:#284354;--home-muted:#9cb6c3;--home-accent:#6be1dc;
 width:100%;max-width:1500px;min-height:100dvh;margin:auto;
 padding:clamp(14px,2.2dvh,26px) clamp(18px,3vw,54px) clamp(10px,1.5dvh,22px);
 display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;
 gap:clamp(10px,1.5dvh,18px);font-family:Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
 background:radial-gradient(ellipse at 11% 25%,rgba(37,100,117,.2),transparent 44%);
}
.landing-v36 *{box-sizing:border-box}
.home-topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:54px}
.home-brand{display:flex;align-items:center;gap:12px}
.home-logo{width:50px;height:50px;display:block;filter:drop-shadow(0 5px 16px #3cc5c320)}
.home-wordmark{font-size:28px;font-weight:820;letter-spacing:-.07em;line-height:1;color:#f1fbff}
.home-wordmark span{color:#71e0e1}
.home-brand-caption{font-size:9px;color:#8caab9;letter-spacing:.17em;font-weight:800;margin-top:5px}
.home-header-meta{display:flex;gap:14px;align-items:center;color:#9db6c3;font-size:11px}
.home-system-pill{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid #2b4b59;border-radius:999px;background:#102631;font-size:10px;font-weight:750;letter-spacing:.07em}
.home-system-dot{width:7px;height:7px;background:#71e0b8;box-shadow:0 0 0 4px #71e0b81b;border-radius:50%}
.landing-v36 .landing-version{font-size:11px;color:#7fa4b4}
.home-main{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:clamp(12px,1.4vw,20px);min-height:0}
.home-showcase{border:1px solid #294b5b;border-radius:20px;position:relative;overflow:hidden;
 background:radial-gradient(ellipse at 77% 77%,#1a4b576b,transparent 42%),linear-gradient(155deg,#102939,#0b1b2a 80%);
 padding:clamp(20px,2.3vw,40px);display:flex;flex-direction:column;justify-content:space-between;min-height:0}
.home-showcase:before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.16;background-image:linear-gradient(#52889a 1px,transparent 1px),linear-gradient(90deg,#52889a 1px,transparent 1px);background-size:35px 35px;mask-image:linear-gradient(100deg,transparent 22%,black)}
.home-showcase-copy{position:relative;z-index:1}
.home-eyebrow{display:inline-flex;align-items:center;gap:8px;color:#7ce4df;font-size:10px;letter-spacing:.18em;font-weight:800}
.home-eyebrow-line{width:18px;height:2px;background:#7ce4df}
.home-showcase h1{font-size:clamp(36px,4.2vw,70px);font-weight:780;letter-spacing:-.075em;line-height:1.03;margin:clamp(15px,2.4dvh,28px) 0 clamp(10px,1.8dvh,18px)}
.home-showcase h1 em{font-style:normal;color:#76e0df}
.home-showcase-copy>p{color:#b7ced8;font-size:clamp(12px,1.1vw,16px);line-height:1.6;max-width:500px;margin:0}
.home-showcase-features{display:flex;gap:14px;flex-wrap:wrap;margin-top:clamp(13px,2dvh,24px);color:#b6d3db;font-size:10px;font-weight:650}
.home-showcase-features span{display:inline-flex;align-items:center;gap:7px}
.home-feature-dot{width:5px;height:5px;background:#75d9cb;border-radius:50%}
.home-monitor-art{position:relative;z-index:1;align-self:flex-end;width:min(87%,490px);margin-top:8px;transform:rotate(-2deg);transform-origin:bottom right}
.home-art-frame{border:6px solid #263e4d;border-radius:14px 14px 7px 7px;overflow:hidden;background:#040d15;box-shadow:0 13px 50px #0008,inset 0 0 0 1px #4f7480}
.home-art-toolbar{display:flex;align-items:center;gap:4px;padding:7px 10px;background:#112935;border-bottom:1px solid #33505e}
.home-art-toolbar span{width:5px;height:5px;border-radius:50%;background:#5eb8aa}.home-art-toolbar span:nth-child(2){background:#d5b06e}.home-art-toolbar span:nth-child(3){background:#5f8b9e}
.home-art-toolbar b{margin-left:auto;font-size:8px;letter-spacing:.13em;color:#86b4c5}
.home-art-display{padding:8px;background-color:#03111a;background-image:linear-gradient(#1a3741 1px,transparent 1px),linear-gradient(90deg,#1a3741 1px,transparent 1px);background-size:24px 24px}
.home-art-wave{position:relative;height:clamp(45px,7dvh,82px);border-bottom:1px solid #24414b}
.home-art-wave svg{width:100%;height:100%;display:block}
.home-art-label{position:absolute;z-index:1;top:3px;left:4px;font-size:9px;font-weight:800;color:#6cf1ae;letter-spacing:.04em}
.home-art-label b{position:relative;left:8px;font-size:13px}
.home-art-wave-2 .home-art-label{color:#66def0}
.home-art-wave-2{border:0}
.home-art-bottom{display:flex;justify-content:space-between;gap:8px;padding:7px 3px 0;color:#8ac5cf;letter-spacing:.1em;font-size:8px;font-weight:750}
.home-art-bottom span:first-child{color:#8cebc4}.home-art-bottom i{display:inline-block;width:5px;height:5px;background:#5addad;border-radius:50%;margin-right:5px}
.home-actions{display:grid;grid-template-rows:minmax(0,1.08fr) minmax(0,1fr) auto;gap:clamp(10px,1.5dvh,15px);min-height:0}
.home-action{display:flex;flex-direction:column;justify-content:space-between;border:1px solid #2e4d5d;border-radius:17px;background:#102231;padding:clamp(16px,2dvh,24px) clamp(18px,1.9vw,29px);min-height:0}
.home-action-primary{background:linear-gradient(115deg,#154b50,#10343e 70%);border-color:#3a8385}
.home-action-head{display:flex;align-items:center;justify-content:space-between}
.home-action-index{font-size:10px;letter-spacing:.14em;color:#82d6d7;font-weight:850}
.home-action-glyph{font-size:21px;color:#75d6d3}
.home-action h2{font-size:clamp(20px,2vw,29px);letter-spacing:-.045em;line-height:1.05;margin:5px 0}
.home-action p{margin:0 0 8px;font-size:clamp(11px,.95vw,14px);line-height:1.45;color:#b8ccd6}
.home-action button{font-weight:740;font-size:13px;min-height:41px}
.home-primary-button{display:flex;align-items:center;justify-content:space-between;width:100%;border-radius:9px;border:1px solid #76d6d7;background:#7ce5dd;color:#062830;padding:10px 13px}
.home-primary-button:hover{background:#adfff0;color:#062830}
.home-field-label{font-size:9px;letter-spacing:.12em;color:#8ebac7;font-weight:800}
.home-join-form{display:grid;gap:6px}
.home-join-row{display:flex;gap:7px}
.home-join-row input{flex:1;min-width:0;border-radius:8px;background:#091a27;border:1px solid #365d6b;color:#f2faff;padding:9px 10px;text-transform:uppercase;font-size:14px;letter-spacing:.09em}
.home-join-row input::placeholder{text-transform:none;letter-spacing:normal;color:#7395a4}
.home-join-row button{border-radius:8px;background:#1c6470;border-color:#439fac;color:#fff;padding:8px 15px;min-width:78px}
.home-join-row button:hover{background:#237a88}
.home-pairing{display:flex;align-items:center;justify-content:space-between;gap:9px;border:1px solid #2c4656;border-radius:13px;background:#101f2d;padding:clamp(10px,1.2dvh,15px) 14px}
.home-pairing>div{display:flex;align-items:center;gap:9px;min-width:0}
.home-pairing-symbol{width:32px;height:32px;display:grid;place-items:center;border:1px solid #346472;background:#143443;border-radius:9px;color:#86e6e4;font-size:18px;flex-shrink:0}
.home-pairing strong{display:block;font-size:12px;font-weight:750}
.home-pairing small{display:block;color:#8faebb;font-size:10px;margin-top:2px}
.home-pairing button{padding:8px 9px;border:1px solid #385766;background:#172e3d;color:#c9eff2;font-size:11px;white-space:nowrap;border-radius:7px}
.landing-v36 .home-usage{margin:0;padding:clamp(12px,1.4dvh,19px) clamp(15px,2vw,28px);display:grid;grid-template-columns:minmax(160px,.7fr) minmax(0,3fr);grid-template-rows:auto auto;align-items:center;gap:5px 18px;border:1px solid #2c4c59;border-radius:15px;background:linear-gradient(105deg,#102837,#0c202e)}
.home-usage-heading{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:10px;grid-row:1 / span 2}
.home-usage-heading h2{font-size:18px;margin:3px 0 0;letter-spacing:-.035em}
.home-usage-heading button{font-size:11px;padding:5px 9px;border-radius:6px;border-color:#3a626e;background:#173442}
.landing-v36 .home-usage-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.landing-v36 .landing-usage-stat{padding:10px 12px;gap:5px;border-color:#2b4856;border-radius:9px}
.landing-v36 .landing-usage-stat strong{font-size:clamp(22px,2.25vw,36px)}
.landing-v36 .landing-usage-stat span{font-size:10px;white-space:normal}
.landing-v36 .home-usage-note{grid-column:2;max-height:17px;overflow:hidden;font-size:9px;margin:0;color:#8daebb;line-height:1.4}
.home-footer{display:flex;justify-content:space-between;gap:10px;color:#7395a5;font-size:9px;letter-spacing:.08em;padding:0 2px}
@media (min-width:901px) and (min-height:650px){
 body:has(.landing-v36){overflow:hidden}
 .landing-v36{height:100dvh;min-height:0}
}
@media(max-width:900px){
 .landing-v36{grid-template-rows:auto auto auto auto;max-width:700px;gap:12px;padding:15px 14px}
 .home-main{grid-template-columns:1fr;gap:12px}
 .home-showcase{min-height:260px;padding:24px}
 .home-showcase h1{font-size:clamp(35px,6vw,52px)}
 .home-monitor-art{width:min(60%,360px);margin-top:-40px}
 .home-actions{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto;gap:10px}
 .home-action{min-height:180px;padding:17px}
 .home-pairing{grid-column:1/-1}
 .landing-v36 .home-usage{grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:9px}
 .home-usage-heading{grid-row:auto;flex-direction:row;align-items:center;justify-content:space-between}
 .landing-v36 .home-usage-note{grid-column:1}
}
@media(max-width:600px){
 .home-topbar{min-height:44px}
 .home-logo{width:40px;height:40px}.home-wordmark{font-size:23px}.home-brand-caption{font-size:7px}
 .home-system-pill{display:none}
 .home-showcase{min-height:230px;padding:20px}
 .home-showcase h1{font-size:39px;margin:12px 0}
 .home-showcase-copy>p{font-size:12px;max-width:290px}
 .home-showcase-features{gap:7px;font-size:9px}
 .home-monitor-art{width:52%;margin-top:-10px;opacity:.7}
 .home-actions{grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:9px}
 .home-action{min-height:0;gap:7px;padding:14px}
 .home-action h2{font-size:21px}.home-action p{font-size:12px}
 .home-pairing{grid-column:auto}
 .landing-v36 .home-usage-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .home-footer{flex-wrap:wrap;font-size:8px}
}
@media(max-height:760px) and (min-width:901px){
 .landing-v36{gap:9px;padding-top:10px;padding-bottom:9px}
 .home-showcase{padding:21px}
 .home-showcase h1{font-size:clamp(35px,4vw,57px);margin:12px 0}
 .home-monitor-art{width:min(76%,410px)}
 .home-art-wave{height:clamp(37px,6dvh,56px)}
 .home-action{padding:12px 17px}
 .home-action h2{font-size:22px}
 .home-action p{font-size:11px;margin:0 0 5px}
 .home-action button{min-height:36px}
 .home-usage{padding:8px 16px!important}
 .landing-v36 .landing-usage-stat{padding:7px 10px}
 .landing-v36 .landing-usage-stat strong{font-size:24px}
}
@media(prefers-reduced-motion:reduce){.home-monitor-art{transform:none}}

/* v0.7.37: make participant sound choice immediately noticeable on tablets. */
.participant-audio-choice{z-index:9999;outline:1px solid rgba(111,219,226,.35)}


/* v0.7.38: keep the close/expand heading visible when scrolling inside a faculty panel.
   This applies to both mouse-wheel scrolling and tablet touch scrolling. */
.layout .sidebar details.faculty-accordion[open]{
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.layout .sidebar details.faculty-accordion[open]>summary{
  position:sticky;top:0;z-index:10;
  background:#132637;
  box-shadow:0 2px 8px rgba(0,0,0,.35);
  cursor:pointer;
}
.layout .sidebar details.faculty-accordion[open]>summary:focus-visible{
  outline:2px solid #66d1d8;outline-offset:-2px;
}


/* v0.7.41: feedback screens and accessible form */
.feedback-footer-link,.faculty-feedback-link{color:#9aeeeb;text-decoration:underline;text-underline-offset:3px}
.faculty-feedback-link{padding:7px 9px;border:1px solid #325868;border-radius:8px;text-decoration:none;font-size:12px;white-space:nowrap}
.feedback-page{min-height:100dvh;background:radial-gradient(circle at 80% 0,#153b4b 0,transparent 36%),#07131d;color:#e9f5f8;padding:24px 18px;display:flex;flex-direction:column;align-items:center;gap:18px}
.feedback-top{width:min(100%,760px);display:flex;justify-content:space-between;align-items:center;gap:15px}
.feedback-brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:#fff;font-size:25px;font-weight:800;letter-spacing:-.055em}.feedback-accent{color:#7bdfd3}.feedback-back{color:#a4c6d2;font-size:13px;text-decoration:none}
.feedback-card{width:min(100%,760px);background:linear-gradient(140deg,#132c39,#0d202d);border:1px solid #345261;border-radius:20px;padding:clamp(20px,4vw,38px);box-shadow:0 18px 50px #0005}
.feedback-overline{font-size:11px;font-weight:800;letter-spacing:.15em;color:#82ddd5;margin:0 0 9px}.feedback-card h1{font-size:clamp(29px,5vw,42px);letter-spacing:-.055em;line-height:1.08;margin:0 0 12px}.feedback-intro{color:#b7cdd7;max-width:560px;line-height:1.5;margin:0 0 22px;font-size:14px}
#feedbackForm{display:grid;gap:19px}.feedback-field{display:grid;gap:8px}.feedback-field label,.feedback-rating legend,.feedback-admin-login label{font-size:13px;font-weight:700;color:#d9e9ed}.feedback-field label span,.feedback-rating legend span{color:#a4b9c5;font-size:12px;font-weight:400}.feedback-field .feedback-required{color:#88eadb}.feedback-field input,.feedback-field textarea,.feedback-field select,.feedback-admin-login input,.feedback-report select{width:100%;padding:12px 13px;background:#081925;color:#f3fbff;border:1px solid #3e6170;border-radius:9px;font:inherit;font-size:14px}.feedback-field textarea{resize:vertical;min-height:120px}.feedback-field small,.feedback-privacy{font-size:12px;color:#97b3c2;line-height:1.5}
.feedback-rating{border:0;padding:0;margin:0}.feedback-stars{display:flex;gap:9px;margin-top:10px}.feedback-stars label{position:relative;cursor:pointer}.feedback-stars input{position:absolute;opacity:0;inset:0}.feedback-stars label span[aria-hidden]{display:inline-grid;place-items:center;width:42px;height:42px;border:1px solid #456171;border-radius:9px;font-size:24px;color:#6e8791;background:#0c2230}.feedback-stars label:has(input:checked) span[aria-hidden],.feedback-stars label:has(~ label input:checked) span[aria-hidden]{color:#f1ca74}.feedback-stars input:focus-visible+span{outline:3px solid #9bf5e9;outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.feedback-hp{position:absolute;left:-9999px;height:0;width:0;overflow:hidden}
.feedback-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.feedback-submit{display:inline-flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 17px;border:1px solid #79e5da;border-radius:9px;background:#78dbd1;color:#08252d;font-size:14px;font-weight:800;text-decoration:none}.feedback-submit:disabled{opacity:.5;cursor:wait}#fbStatus,#fbAdminStatus{font-size:12px;color:#bde1e3}.feedback-privacy{border-top:1px solid #284453;padding-top:16px;margin-top:18px}.feedback-disclaimer{font-size:10px;color:#7699aa;letter-spacing:.1em}.feedback-success{text-align:center;padding-block:70px}.feedback-success-mark{font-size:38px;color:#81e9cb}.feedback-success p{color:#b6d0da}.feedback-return{margin-top:10px}
.feedback-admin-login{display:grid;gap:9px}.feedback-admin-key-row{display:flex;gap:9px}.feedback-admin-key-row input{min-width:0;flex:1}.feedback-admin-key-row button{white-space:nowrap}.feedback-report{border:1px solid #385768;border-radius:12px;background:#0b1e2c;margin:13px 0;padding:17px}.feedback-report-head,.feedback-report-controls{display:flex;justify-content:space-between;align-items:center;gap:12px}.feedback-report-head strong{font-size:14px}.feedback-report-head span,.feedback-report small{color:#9ebdc9;font-size:12px}.feedback-report-message{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.feedback-report-controls{justify-content:flex-end;margin-top:13px}.feedback-report select{width:auto}.feedback-report button{padding:9px 12px;border-radius:8px}
@media(max-width:520px){.feedback-page{padding:12px}.feedback-card{padding:19px}.feedback-admin-key-row{flex-direction:column}.feedback-report-head{align-items:flex-start;flex-direction:column}}


/* v0.7.42: substantial feedback action inside the faculty accordion. */
.layout .faculty-accordion .faculty-feedback-action{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:14px 15px;border:1px solid #64bfc0;border-radius:11px;background:linear-gradient(115deg,#20595e,#173b4a);text-decoration:none;color:#f2ffff;font-size:15px;font-weight:750;line-height:1.3;box-shadow:0 5px 18px #0003;transition:background .15s,border-color .15s}
.layout .faculty-accordion .faculty-feedback-action:hover{background:linear-gradient(115deg,#2b7072,#205261);border-color:#9cf3e8}
.layout .faculty-accordion .faculty-feedback-action:focus-visible{outline:3px solid #9bf5e9;outline-offset:3px}
.faculty-feedback-action-icon{display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:10px;background:#0d2c34;font-size:22px;color:#92f3e2}
.faculty-feedback-action small{display:block;margin-top:4px;font-size:11px;font-weight:400;color:#bfe4e6}
.faculty-feedback-action-arrow{margin-left:auto;font-size:21px;color:#94e3e1}

/* v0.7.43: direct feedback dashboard access and developer attribution */
.home-admin-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;padding:10px 14px;border-radius:9px;background:#73dcd7;color:#062731;font-size:12px;font-weight:800;letter-spacing:0;text-decoration:none;border:1px solid #98f3e9;box-shadow:0 2px 14px #5ed9cf21;transition:background .15s ease,transform .15s ease}
.home-admin-link:hover,.home-admin-link:focus-visible{background:#a6f5ed;color:#052631;transform:translateY(-1px)}
.home-admin-link span{font-size:16px;line-height:1}
.home-developer-credit{color:#b8e0e5;font-weight:700;letter-spacing:.025em;white-space:nowrap}
@media (max-width:1000px){.home-system-pill{display:none}}
@media (max-width:600px){.home-header-meta{gap:8px}.home-admin-link{font-size:10px;padding:9px 10px;gap:5px}.home-admin-link span{font-size:14px}.landing-v36 .landing-version{font-size:9px}.home-developer-credit{white-space:normal}}


/* SimObs v0.7.44 — iPad / tablet-first ergonomics, additive to established desktop styling. */
html{min-width:0;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-width:0;overscroll-behavior-x:none}
button,a,summary,input,select,textarea{-webkit-tap-highlight-color:transparent}
button,a,summary{touch-action:manipulation}
input,select,textarea{min-width:0}
/* Touch targets without introducing a mouse-only layout change. */
@media (pointer:coarse){
 button,.home-admin-link,.feedback-submit,.faculty-feedback-action{min-height:44px}
 .layout .sidebar details.faculty-accordion>summary{min-height:55px;padding-block:12px}
 .layout .sidebar details.faculty-accordion>summary::after{font-size:22px}
 .layout .sidebar button,.layout .sidebar select,.layout .sidebar input:not([type=range]),
 .layout .workspace button,.layout .workspace select,.layout .workspace input:not([type=range]){min-height:44px}
 .layout input[type=range],.rhythm-observation-slider{touch-action:pan-y;min-height:32px}
 .layout input[type=checkbox],.layout input[type=radio]{width:20px;height:20px;accent-color:#74e0d7}
 .home-action button,.home-join-row input,.home-pairing button,.home-usage-heading button{min-height:46px}
 .home-admin-link{min-height:44px;padding-inline:13px}
 .feedback-stars label span[aria-hidden]{width:50px;height:50px;font-size:27px}
 .feedback-field input,.feedback-field select,.feedback-field textarea,.feedback-admin-login input{font-size:16px}
 .feedback-report button,.feedback-report select{min-height:44px}
 .home-admin-link:hover,.home-admin-link:focus-visible{transform:none}
 .layout .sidebar details.faculty-accordion[open]>summary{touch-action:manipulation}
}
/* Tablet portrait: the monitor gets full width; faculty panels become a neat two-column deck. */
@media (pointer:coarse) and (min-width:601px) and (max-width:1050px){
 .layout{display:block;height:auto;min-height:100dvh;overflow:visible}
 .layout .workspace{height:auto;overflow:visible;padding:14px 16px}
 .layout .sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;padding:16px;
   height:auto;max-height:none;overflow:visible;border-left:0;border-top:1px solid #294251}
 .layout .sidebar>.sidebar-title{grid-column:1/-1}
 .layout .sidebar details.faculty-accordion{min-width:0;max-width:none;margin:0;overflow:visible}
 .layout .sidebar details.faculty-accordion[open]{grid-column:1/-1;overflow:visible}
 .layout .sidebar details.faculty-accordion[open]>summary{position:sticky;top:env(safe-area-inset-top,0px);z-index:30}
 .layout .monitor-section{margin-bottom:12px}
 .layout .monitor-section .monitor-shell .monitor{height:min(53dvh,520px);min-height:270px!important}
 .layout .faculty-live-slot{max-height:none!important;overflow:visible!important}
 .layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(3,minmax(0,1fr))!important}
 .layout .faculty-live-observations #extraObservations.compact-extra-observations{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* iPad landscape (including 11-inch and 13-inch): preserve the two-panel faculty workflow. */
@media (pointer:coarse) and (orientation:landscape) and (min-width:1051px) and (max-width:1400px){
 .layout{grid-template-columns:minmax(0,1fr) clamp(295px,29vw,350px)}
 .layout .workspace{padding:9px 11px 8px}
 .layout>.sidebar{padding:10px!important;gap:7px!important}
 .layout>.sidebar>.faculty-accordion{min-height:58px}
 .layout>.sidebar>.faculty-accordion>summary{min-height:55px;flex-basis:55px;padding:9px 11px}
 .layout>.sidebar>.faculty-accordion[open]>summary{min-height:54px;flex-basis:auto}
 .layout .faculty-live-slot{max-height:35dvh;overflow:auto;-webkit-overflow-scrolling:touch}
 .layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .layout .faculty-live-observations #extraObservations.compact-extra-observations{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* On larger iPads, the landscape patient display uses the same viewport fitting as smaller tablets. */
@media (orientation:landscape) and (pointer:coarse) and (min-width:1025px) and (max-width:1400px){
 .participant{padding:0!important;gap:0!important;height:100dvh;min-height:100dvh;overflow:hidden}
 .participant .topbar{display:none!important}
 .participant .monitor-shell{height:100dvh;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;overflow:hidden}
 .participant .monitor-shell .monitor{min-height:0!important;height:100%!important;max-height:none!important;overflow:hidden}
 .participant .monitor-shell .monitor-footer{flex:0 0 auto;max-height:74px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
 .participant .monitor-shell .numeric-strip .vital strong{font-size:clamp(34px,5dvh,62px)}
 .participant .monitor-shell .numeric-strip .vital:has(#val-nibpVisible) strong{font-size:clamp(28px,4.4dvh,50px)!important}
}
/* iPads in portrait: do not force a landscape monitor into a clipped fixed-height canvas. */
@media (orientation:portrait) and (pointer:coarse) and (min-width:601px) and (max-width:1050px){
 .participant{min-height:100dvh;height:auto;overflow:visible;padding:env(safe-area-inset-top,8px) 10px env(safe-area-inset-bottom,8px)}
 .participant .monitor-shell{min-height:0;overflow:visible}
 .participant .monitor-shell .monitor{min-height:480px;height:min(72dvh,780px)}
 .participant .monitor-shell .monitor-footer{flex-wrap:wrap;overflow:visible}
 .participant .vital strong{font-size:clamp(27px,4.7vw,50px)}
}
/* Tablet homepage: keep actions large, prevent two-column crowding and preserve all details. */
@media (pointer:coarse) and (min-width:601px) and (max-width:1199px){
 body:has(.landing-v36){overflow-y:auto!important}
 .landing-v36{height:auto!important;min-height:100dvh;grid-template-rows:auto auto auto auto;padding:clamp(14px,2vw,24px);gap:12px}
 .home-topbar{gap:12px;flex-wrap:wrap}
 .home-header-meta{flex-wrap:wrap;justify-content:flex-end}
 .home-main{grid-template-columns:1fr;gap:12px}
 .home-showcase{min-height:250px;padding:22px}
 .home-showcase h1{font-size:clamp(39px,5vw,62px)}
 .home-monitor-art{max-width:330px;width:45%;margin-top:-34px}
 .home-actions{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto;gap:12px}
 .home-action{min-height:190px;padding:18px}
 .home-pairing{grid-column:1/-1}
 .landing-v36 .home-usage{grid-template-columns:1fr;grid-template-rows:auto auto auto}
 .home-usage-heading{grid-row:auto;flex-direction:row;align-items:center;justify-content:space-between}
 .landing-v36 .home-usage-note{grid-column:1;max-height:none;overflow:visible}
}
@media (pointer:coarse) and (max-width:600px){
 .home-topbar{flex-wrap:wrap;row-gap:10px}
 .home-header-meta{width:100%;justify-content:space-between;gap:8px;flex-wrap:wrap}
 .home-action{min-height:0}
 .home-pairing{flex-wrap:wrap}
 .home-pairing button{flex:1 1 auto}
 .layout .sidebar{padding-bottom:max(16px,env(safe-area-inset-bottom))}
}
/* Keep interactive consent/action dialogs clear of notches and home indicators. */
@media (pointer:coarse){
 .participant-audio-choice{bottom:max(64px,env(safe-area-inset-bottom));right:max(10px,env(safe-area-inset-right));left:auto}
 .rhythm-observation-dialog{max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 24px);-webkit-overflow-scrolling:touch}
 .feedback-page{padding-bottom:max(20px,env(safe-area-inset-bottom))}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:520px){
 .participant-audio-choice{bottom:max(44px,env(safe-area-inset-bottom));max-height:calc(100dvh - 54px);overflow:auto}
}

/* v0.7.45: Hide previously decorative 25px squares. They were not calibrated
   to ECG paper speed and gave a misleading indication of PR/QRS duration. */
.monitor .waveforms{background-image:none!important;}
.monitor .waveforms::before{display:none!important;}

/* v0.7.51 — faculty ECG preview is a direct rhythm selector shortcut. */
.layout .monitor .faculty-ecg-jump{cursor:pointer;touch-action:manipulation}
.layout .monitor .wave.faculty-ecg-jump:hover{background:rgba(57,182,145,.055)}
.layout .monitor .faculty-ecg-jump:hover label{background:#10382ecf;color:#80ffbd}
.layout .monitor .vital.faculty-ecg-jump:hover{background:rgba(57,182,145,.075)}

/* v0.7.58: paired faculty ECG and capnography selectors, tablet-friendly. */
.layout .monitor-footer.console-revised .faculty-rhythm-slot{
  flex:1 1 440px!important;max-width:none!important;min-width:230px!important;
  display:flex;align-items:center;flex-wrap:wrap;gap:8px;
}
.layout .faculty-rhythm-slot .rhythm-inline,
.layout .faculty-rhythm-slot .capno-inline{
  display:flex;align-items:center;gap:6px!important;flex:1 1 205px;min-width:170px;margin:0!important;padding:0!important;
}
.layout .faculty-rhythm-slot .capno-inline[hidden]{display:none!important}
.layout .faculty-rhythm-slot .capno-inline label{font-size:11px;white-space:nowrap}
.layout .faculty-rhythm-slot .capno-inline select{flex:1 1 auto;min-width:100px;width:100%;max-width:100%;min-height:35px;font-size:12px}
.layout .faculty-rhythm-slot .rhythm-inline select{min-height:35px;font-size:12px}
.layout .faculty-rhythm-slot .capno-inline-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.layout .monitor .faculty-capno-jump{cursor:pointer;touch-action:manipulation}
.layout .monitor .faculty-capno-jump:hover{background-color:rgba(75,206,216,.07)}
.layout .monitor .faculty-capno-jump:active{background-color:rgba(75,206,216,.13)}
@media(max-width:650px){
 .layout .monitor-footer.console-revised .faculty-rhythm-slot{flex-basis:100%!important;min-width:0!important}
 .layout .faculty-rhythm-slot .rhythm-inline,.layout .faculty-rhythm-slot .capno-inline{flex-basis:100%;min-width:0}
}

/* v0.7.61 — compact homepage About modal; responsive for tablets/iPads. */
.home-about-link{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border:1px solid #426576;border-radius:9px;background:#142c39;color:#d6f5f5;font:inherit;font-size:12px;font-weight:750;padding:10px 13px;cursor:pointer;min-height:44px}
.home-about-link:hover,.home-about-link:focus-visible{background:#205064;outline-offset:2px}
.home-about-overlay[hidden]{display:none!important}
.home-about-overlay{position:fixed;inset:0;z-index:9999;background:rgba(2,11,18,.82);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));overflow:auto}
body.simobs-about-visible{overflow:hidden!important}
.home-about-dialog{width:min(760px,100%);max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;color:#e7f7fa;background:linear-gradient(150deg,#102e3a,#0c1a27 72%);border:1px solid #386575;border-radius:20px;box-shadow:0 35px 90px #0009;padding:clamp(17px,3vw,29px);font-size:14px;line-height:1.55}
.home-about-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.home-about-kicker{font-size:10px;letter-spacing:.18em;color:#7dd9dc;font-weight:850}.home-about-close{border:1px solid #496679;background:#183443;color:#e4fbff;width:44px;height:44px;border-radius:10px;font-size:28px;cursor:pointer;line-height:1}
.home-about-heading{display:flex;align-items:center;gap:15px;margin:4px 0 12px}.home-about-heading img{flex-shrink:0}.home-about-heading h2{margin:0;font-size:clamp(25px,3vw,35px);letter-spacing:-.04em}.home-about-version{font-size:12px;color:#8fbaca}.home-about-intro{font-size:clamp(13px,1.5vw,15px);color:#c5e0e8;margin:0 0 15px;max-width:670px}
.home-about-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 16px}.home-about-columns>div{border:1px solid #305361;background:#0c2230;border-radius:13px;padding:15px}.home-about-columns h3{margin:0 0 8px;color:#8be1df;font-size:14px}.home-about-columns ul,.home-about-columns ol{margin:0;padding-left:19px}.home-about-columns li{margin:0 0 7px}.home-about-note{color:#9fc5d0;font-size:12px;margin:10px 0 0}
.home-about-warning{border-left:3px solid #6bdfd0;background:#14313a;border-radius:7px;padding:12px 14px;font-size:12px;color:#cce9ed}.home-about-warning strong{color:#f0ffff}
.home-about-bottom{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:17px;color:#a7c4d1;font-size:12px}.home-about-bottom>div{display:flex;gap:15px;flex-wrap:wrap}.home-about-bottom a{color:#86e7e2;text-decoration:underline;text-underline-offset:3px}
@media(max-width:650px){.home-about-columns{grid-template-columns:1fr;gap:9px}.home-about-dialog{max-height:calc(100dvh - 20px);border-radius:14px}.home-header-meta{gap:6px}.home-about-link{padding:9px 10px;font-size:11px}.home-about-bottom{align-items:flex-start}}
@media(max-height:640px){.home-about-overlay{align-items:flex-start}}

/* v0.7.62: tablet-friendly automatic NIBP recycle control */
.nibp-recycle-box{display:flex;flex-direction:column;gap:6px;min-width:155px;flex:1 1 165px;align-self:stretch;padding:8px 10px;border:1px solid rgba(110,184,196,.25);background:rgba(9,30,40,.76);border-radius:10px}
.nibp-recycle-box label{font-size:12px;font-weight:700;color:#ddf3fa}
.nibp-recycle-box select{width:100%;min-height:40px;max-width:100%;padding:6px 9px;font-size:14px;color:#eaffff;background:#0a202c;border:1px solid #4a8795;border-radius:7px}
.nibp-recycle-box select:focus-visible{outline:2px solid #5fe5cd;outline-offset:2px}
.nibp-recycle-status{display:block;font-size:11px;line-height:1.4;color:#a1c6d0;min-height:16px}
@media (pointer:coarse){.nibp-recycle-box select{min-height:48px;font-size:16px}.nibp-recycle-box{padding:11px;min-width:170px}}

/* v0.7.63 — unified touch-first NIBP controls: faculty & participant */
.nibp-control-card{display:flex;flex-direction:column;justify-content:center;gap:5px;flex:0 1 290px;min-width:240px;max-width:345px;padding:9px 11px;border:1px solid #477283;border-radius:10px;background:linear-gradient(130deg,#112d3b,#0a1c28);box-shadow:inset 0 1px 0 rgba(150,234,239,.1)}
.nibp-card-label{font-size:10px;letter-spacing:.11em;font-weight:800;color:#80d5dc}
.nibp-card-row{display:flex;align-items:end;gap:10px;min-width:0}
.nibp-control-card #nibp{flex:0 0 auto!important;min-height:39px!important;padding:8px 12px!important;font-size:12px!important;border-radius:7px!important;background:#2a8e96!important;color:#f6ffff!important;border:1px solid #61d7cc!important}
.nibp-interval-field{display:flex;flex:1;min-width:90px;flex-direction:column;gap:3px;color:#c9e8f0;font-size:11px;font-weight:650}
.nibp-interval-field select{min-height:39px;max-width:100%;width:100%;padding:5px 24px 5px 8px;border:1px solid #547a8b;border-radius:7px;background:#102c3b;color:#f4ffff;font-size:13px}
.nibp-recycle-status{font-size:11px;color:#a6d6db;min-height:15px;font-variant-numeric:tabular-nums}
.participant .nibp-control-card{flex:0 1 285px}
.participant .console-group-primary{gap:9px;align-items:center}
@media(pointer:coarse){.nibp-control-card{min-width:235px;padding:10px 12px}.nibp-interval-field select,.nibp-control-card #nibp{min-height:44px!important;font-size:15px!important}}
@media(max-width:630px){.nibp-control-card{flex:1 1 100%;max-width:100%;min-width:0}.nibp-card-row{gap:8px}}

/* v0.7.64 — flattened NIBP recycle controls to match monitor buttons */
.layout .monitor-footer.console-revised .nibp-control-card,
.participant .monitor-footer.console-revised .nibp-control-card{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:wrap!important;
  align-items:center!important;
  gap:5px 6px!important;
  flex:0 1 auto!important;
  min-width:0!important;
  max-width:none!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.layout .monitor-footer.console-revised .nibp-card-label,
.participant .monitor-footer.console-revised .nibp-card-label{
  display:none!important;
}
.layout .monitor-footer.console-revised .nibp-card-row,
.participant .monitor-footer.console-revised .nibp-card-row{
  display:flex!important;
  align-items:center!important;
  gap:5px!important;
  min-width:0!important;
}
.layout .monitor-footer.console-revised .nibp-interval-field,
.participant .monitor-footer.console-revised .nibp-interval-field{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 auto!important;
  min-width:0!important;
  gap:0!important;
}
.layout .monitor-footer.console-revised .nibp-interval-field > span,
.participant .monitor-footer.console-revised .nibp-interval-field > span{
  display:none!important;
}
.layout .monitor-footer.console-revised .nibp-control-card #nibp,
.layout .monitor-footer.console-revised .nibp-interval-field select,
.participant .monitor-footer.console-revised .nibp-control-card #nibp,
.participant .monitor-footer.console-revised .nibp-interval-field select{
  min-height:28px!important;
  height:28px!important;
  padding:6px 8px!important;
  border-radius:5px!important;
  font-size:10px!important;
  line-height:1.1!important;
  white-space:nowrap!important;
  box-sizing:border-box!important;
}
.layout .monitor-footer.console-revised .nibp-control-card #nibp,
.participant .monitor-footer.console-revised .nibp-control-card #nibp{
  min-width:80px!important;
}
.layout .monitor-footer.console-revised .nibp-interval-field select,
.participant .monitor-footer.console-revised .nibp-interval-field select{
  width:auto!important;
  min-width:110px!important;
  max-width:140px!important;
  background:linear-gradient(180deg,#1e3443 0%,#152634 100%)!important;
  border:1px solid #395467!important;
  color:#edf6ff!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 1px 0 rgba(0,0,0,.22)!important;
}
.layout .monitor-footer.console-revised .nibp-recycle-status,
.participant .monitor-footer.console-revised .nibp-recycle-status{
  flex:1 0 100%!important;
  order:3!important;
  min-height:12px!important;
  margin:1px 0 0!important;
  font-size:10px!important;
  line-height:1.15!important;
  color:#8cb6c3!important;
}
@media (pointer:coarse){
  .layout .monitor-footer.console-revised .nibp-control-card #nibp,
  .layout .monitor-footer.console-revised .nibp-interval-field select,
  .participant .monitor-footer.console-revised .nibp-control-card #nibp,
  .participant .monitor-footer.console-revised .nibp-interval-field select{
    min-height:32px!important;
    height:32px!important;
    font-size:11px!important;
    padding:7px 10px!important;
  }
}

/* v0.7.65 — single-row cuff controls, readable native menu */
.layout .monitor-footer.console-revised .nibp-recycle-status,
.participant .monitor-footer.console-revised .nibp-recycle-status{
 position:absolute!important;width:1px!important;height:1px!important;
 padding:0!important;margin:-1px!important;overflow:hidden!important;
 clip:rect(0,0,0,0)!important;white-space:nowrap!important;
 border:0!important;flex:none!important;min-height:0!important;
}
.layout .monitor-footer.console-revised .nibp-control-card,
.participant .monitor-footer.console-revised .nibp-control-card{
 flex:0 0 auto!important;flex-wrap:nowrap!important;
}
.layout .monitor-footer.console-revised .nibp-interval-field select,
.participant .monitor-footer.console-revised .nibp-interval-field select{
 color:#f6ffff!important;color-scheme:dark;
 background:#183442!important;appearance:auto;
}
.layout .monitor-footer.console-revised .nibp-interval-field option,
.participant .monitor-footer.console-revised .nibp-interval-field option{
 color:#f5fbff!important;background-color:#183442!important;
}
.layout .monitor-footer.console-revised .nibp-interval-field option:checked,
.participant .monitor-footer.console-revised .nibp-interval-field option:checked{
 color:#ffffff!important;background-color:#255d6b!important;
}

/* v0.7.66 — participant-operated simulation defibrillator */
.defib-launch-row{display:flex;align-items:center;gap:10px;padding:5px 10px;background:#0a1a23;border-top:1px solid #304553}
.defib-launch{background:linear-gradient(180deg,#8d4331,#672a29)!important;border:1px solid #e18c63!important;color:#fff8ed!important;font-weight:800!important;min-height:35px}
.defib-launch.defib-active{background:linear-gradient(180deg,#b26a2d,#7e4019)!important}
.defib-launch-hint{color:#90abb9;font-size:11px}
.defib-panel{padding:12px 14px;background:#091b26;border-top:1px solid #56717c;color:#e5f5ff}
.defib-panel[hidden]{display:none!important}
.defib-title{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;letter-spacing:.07em;color:#ffe2a7}
.defib-close{background:#243843;border:1px solid #526f7d;border-radius:5px;color:#e5f5ff;min-height:34px;padding:6px 12px}
.defib-readout{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:10px 0;background:#071118;padding:9px 12px;border-radius:7px;border:1px solid #29424c;color:#d6e7f0;font-size:13px}
.defib-readout strong{font-size:23px;color:#f3cf65;font-variant-numeric:tabular-nums}
.defib-readout #defibStatus{margin-left:auto;color:#c1d2df}
.defib-actions{display:flex;gap:9px;flex-wrap:wrap;align-items:end}
.defib-actions label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:#b4cad5}
.defib-actions select{height:42px;min-width:125px;background:#172c3a;color:#fff;border:1px solid #6e8c9b;border-radius:6px;padding:8px}
.defib-actions select option{background:#172c3a;color:white}
.defib-actions button{min-height:42px;border:1px solid transparent;border-radius:6px;padding:10px 18px;font-weight:850;letter-spacing:.05em}
.defib-actions button:disabled{opacity:.42;cursor:not-allowed}
.defib-charge{background:#dfb33c;color:#191b20;border-color:#ffdf81!important}
.defib-shock{background:#ce583d;color:#fff;border-color:#ffb49c!important}
.defib-warning{display:block;margin-top:10px;color:#8babb8;font-size:10px}
.defib-faculty-panel select{width:100%;min-height:42px;padding:8px 10px;background:#132b37;color:#fff;border:1px solid #527384;border-radius:6px}
.defib-faculty-panel select option{background:#132b37;color:#fff}
@media(pointer:coarse){.defib-actions button,.defib-actions select,.defib-close,.defib-launch{min-height:44px!important}}
@media(max-width:650px){.defib-readout #defibStatus{margin-left:0;flex:1 1 100%}.defib-actions button{flex:1 1 110px}.defib-actions label{flex:1 1 120px}}


/* v0.7.67 — defibrillator opens above the patient monitor instead of being clipped
   by the fixed-height, overflow-hidden participant control strip. */
.participant .defib-panel:not([hidden]){
  position:fixed!important;
  inset:0!important;
  z-index:2147483000!important;
  display:flex!important;
  flex-direction:column!important;
  gap:clamp(10px,2.4dvh,20px)!important;
  width:100vw!important;
  height:100dvh!important;
  max-width:none!important;
  min-width:0!important;
  max-height:100dvh!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:calc(18px + env(safe-area-inset-top,0px)) max(18px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px))!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:linear-gradient(150deg,#0b2230 0%,#06131c 75%)!important;
  box-sizing:border-box!important;
  isolation:isolate;
}
.participant .defib-panel:not([hidden]) .defib-title{
  position:sticky;top:0;z-index:1;
  flex-shrink:0;min-height:46px;
  padding:8px 0;
  background:#0b2230;
  border-bottom:1px solid #345564;
  font-size:clamp(12px,2.4vw,17px);
}
.participant .defib-panel:not([hidden]) .defib-readout{
  flex-shrink:0;
  margin:0;
  padding:clamp(12px,2.5vw,22px);
}
.participant .defib-panel:not([hidden]) .defib-readout strong{font-size:clamp(26px,5vw,46px)}
.participant .defib-panel:not([hidden]) .defib-actions{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  align-items:stretch;
  flex-shrink:0;
}
.participant .defib-panel:not([hidden]) .defib-actions label{grid-column:1/-1;min-width:0}
.participant .defib-panel:not([hidden]) .defib-actions select{
  display:block;width:100%;min-width:0;min-height:48px;height:auto;font-size:16px;
}
.participant .defib-panel:not([hidden]) .defib-actions button{
  width:100%;min-width:0;min-height:56px;font-size:clamp(15px,3vw,20px);
}
.participant .defib-panel:not([hidden]) .defib-warning{
  font-size:12px;line-height:1.5;margin:0;
}
@media (max-width:520px) and (orientation:portrait){
  .participant .defib-panel:not([hidden]) .defib-actions{grid-template-columns:1fr}
  .participant .defib-panel:not([hidden]) .defib-actions label{grid-column:auto}
  .participant .defib-panel:not([hidden]) .defib-actions button{min-height:64px}
}
@media (orientation:landscape) and (max-height:520px){
  .participant .defib-panel:not([hidden]){
    gap:8px!important;padding-top:calc(7px + env(safe-area-inset-top,0px))!important;
    padding-bottom:calc(7px + env(safe-area-inset-bottom,0px))!important;
  }
  .participant .defib-panel:not([hidden]) .defib-title{min-height:36px;padding:4px 0}
  .participant .defib-panel:not([hidden]) .defib-readout{padding:8px 12px}
  .participant .defib-panel:not([hidden]) .defib-readout strong{font-size:25px}
  .participant .defib-panel:not([hidden]) .defib-actions{grid-template-columns:minmax(110px,1fr) 1fr 1fr;gap:8px}
  .participant .defib-panel:not([hidden]) .defib-actions label{grid-column:auto}
  .participant .defib-panel:not([hidden]) .defib-actions button{min-height:45px}
}

/* v0.7.68 — Shock flash stays in the participant's simulated defib view. */
.participant .defib-shock-flash{position:fixed;inset:0;z-index:15000;pointer-events:none;display:none;align-items:center;justify-content:center;background:rgba(248,253,255,.90)}
.participant .defib-shock-flash span{font-size:clamp(20px,5vw,42px);font-weight:900;letter-spacing:.12em;color:#a32212;background:rgba(255,255,255,.8);border-radius:12px;padding:12px 20px;text-align:center}
.participant .defib-shock-flash.defib-shock-flashing{display:flex;animation:simobs-defib-shock .58s ease-out both}
@keyframes simobs-defib-shock{0%{opacity:0}8%{opacity:1}24%{opacity:.98}45%{opacity:.55}80%{opacity:.18}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.participant .defib-shock-flash.defib-shock-flashing{animation:none;opacity:1}}


/* v0.7.69 — visible charging, safe simulated discharge, faculty activation popup */
.defib-charge-track{height:13px;margin:9px 0 12px;background:#263740;border:1px solid #4c6a7b;border-radius:20px;overflow:hidden}
.defib-charge-track[hidden]{display:none!important}
.defib-charge-progress{width:0;height:100%;background:linear-gradient(90deg,#e2b343,#f8de71);box-shadow:0 0 12px #f8de71aa;transition:width .12s linear}
.defib-discharge{background:#2b4554!important;color:#eef7fc!important;border:1px solid #8199a5!important}
.defib-discharge:not(:disabled):hover{background:#3c5c6d!important}
.defib-faculty-dialog{position:fixed;z-index:99999;inset:0;background:#020910bb;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));overflow:auto}
.defib-faculty-dialog[hidden]{display:none!important}
.defib-faculty-dialog-card{width:min(490px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:#102532;color:#f0f8ff;border:1px solid #6093aa;border-radius:14px;padding:22px;box-shadow:0 18px 65px #000a}
.defib-faculty-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.defib-faculty-dialog h2{font-size:20px;margin:0}
.defib-faculty-dialog p{font-size:14px;line-height:1.5;color:#c5dbe4}
.defib-faculty-dialog label{display:block;margin:12px 0 7px;font-weight:700}
.defib-faculty-dialog select{width:100%;min-height:46px;background:#192f3d;color:#fff;border:1px solid #63889a;border-radius:6px;padding:8px}
.defib-faculty-dialog select option{background:#192f3d;color:#fff}
.defib-faculty-dialog button{min-height:42px;padding:9px 14px;border-radius:7px;color:#f4fbff;border:1px solid #618195;background:#1e4052;cursor:pointer}
#defibPopupDone{width:100%;background:#226f75}
@media(max-width:600px){.participant .defib-panel:not([hidden]) .defib-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.participant .defib-panel:not([hidden]) .defib-actions label{grid-column:1/-1}.participant .defib-panel:not([hidden]) .defib-actions button{min-height:52px}.defib-faculty-dialog-card{padding:16px}}


/* v0.7.70 — participant Defib three-step energy / charge / shock layout */
.participant .defib-panel:not([hidden]) .defib-actions{
 display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
 align-items:stretch!important;gap:clamp(6px,1.5vw,14px)!important;
}
.participant .defib-panel:not([hidden]) .defib-actions label{
 grid-column:1!important;align-self:stretch;justify-content:space-between;min-width:0!important;
}
.participant .defib-panel:not([hidden]) .defib-actions label select{
 box-sizing:border-box;height:52px!important;min-height:52px!important;width:100%!important;
 padding:7px!important;font-size:clamp(13px,2.1vw,18px)!important;
}
.participant .defib-panel:not([hidden]) .defib-actions #defibCharge{grid-column:2!important}
.participant .defib-panel:not([hidden]) .defib-actions #defibShock{grid-column:3!important}
.participant .defib-panel:not([hidden]) .defib-actions #defibDischarge{
 grid-column:3!important;justify-self:end!important;align-self:start!important;
 width:auto!important;min-width:0!important;min-height:30px!important;
 padding:6px 12px!important;font-size:11px!important;letter-spacing:0!important;
 border-radius:6px!important;
}
.participant .defib-panel:not([hidden]) .defib-actions #defibCharge,
.participant .defib-panel:not([hidden]) .defib-actions #defibShock{
 min-width:0!important;min-height:52px!important;box-sizing:border-box!important;
 font-size:clamp(13px,2.4vw,19px)!important;
}
.participant .defib-panel:not([hidden]) .defib-shock-flash{
 position:fixed!important;inset:0!important;z-index:9999!important;
 pointer-events:none!important;
}
.participant .defib-panel:not([hidden]) .defib-shock-flash.defib-shock-flashing{
 display:flex!important;animation:simobs-defib-shock .58s ease-out both!important;
}
@media(max-width:390px){
 .participant .defib-panel:not([hidden]) .defib-actions{gap:5px!important}
 .participant .defib-panel:not([hidden]) .defib-actions label select{font-size:13px!important}
 .participant .defib-panel:not([hidden]) .defib-actions #defibCharge,
 .participant .defib-panel:not([hidden]) .defib-actions #defibShock{font-size:12px!important;padding:7px 4px!important}
}


/* v0.7.71 — faculty-controlled shock-count outcome */
.defib-shock-config{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;flex-wrap:wrap}
.defib-shock-config label{font-size:13px;font-weight:700;color:inherit}
.defib-shock-config select{flex:1 1 120px;min-width:110px;max-width:210px;min-height:38px}
.defib-shock-count{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;padding:8px 0}
.defib-shock-count span{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.defib-shock-count button{padding:7px 10px;font-size:12px;min-height:34px}
@media(pointer:coarse){.defib-shock-count button,.defib-shock-config select{min-height:44px}}

/* v0.7.72 — complete post-shock state editing */
.defib-post-shock-card{background:#112c3a;border:1px solid #375c6c;border-radius:9px;padding:12px;margin:10px 0;display:grid;gap:9px}
.defib-post-shock-card p{margin:0!important;color:#d5eff5;font-size:13px;line-height:1.45}
.defib-post-shock-card button{min-height:44px;background:#1b6675;color:#fff;border:1px solid #55a5b3;border-radius:7px;padding:9px 12px;font-weight:700;cursor:pointer}
.defib-post-shock-rhythm{display:flex;flex-direction:column;gap:7px;font-weight:700;margin:12px 0}
.defib-post-shock-rhythm select{min-height:44px;padding:8px 10px;border:1px solid #63889a;background:#192f3d;color:#fff;border-radius:7px}
.defib-post-shock-editor .rhythm-observation-dialog{max-height:min(90dvh,900px);overflow-y:auto;overscroll-behavior:contain}


/* v0.7.75: participant control bar fits the viewport without horizontal scrolling.
   One compact wrapping bezel across desktop, phone and tablet orientations. */
.participant .monitor-shell .monitor-footer.integrated-console.console-revised,
.participant .monitor-shell:fullscreen .monitor-footer.integrated-console.console-revised{
 display:flex!important;
 flex-flow:row wrap!important;
 align-items:center!important;
 align-content:center!important;
 justify-content:flex-start!important;
 gap:4px 6px!important;
 width:100%!important;
 height:auto!important;
 min-height:0!important;
 max-height:none!important;
 padding:5px 7px!important;
 overflow-x:hidden!important;
 overflow-y:visible!important;
 box-sizing:border-box!important;
}
.participant .monitor-shell .console-status,
.participant .monitor-shell:fullscreen .console-status{
 order:0!important;
 flex:1 0 100%!important;
 width:100%!important;
 min-width:0!important;
 padding:0 2px 3px!important;
 white-space:normal!important;
 justify-content:flex-end!important;
}
.participant .monitor-shell .console-alarm-text{
 max-width:100%;font-size:11px!important;overflow-wrap:anywhere;
}
.participant .monitor-shell .defib-launch-row{
 order:1!important;
 display:flex!important;
 flex:0 0 auto!important;
 padding:0!important;
 margin:0!important;
 border:0!important;
 background:transparent!important;
 min-width:0!important;
}
.participant .monitor-shell .defib-launch{
 min-height:32px!important;
 height:32px!important;
 padding:5px 10px!important;
 border-radius:5px!important;
 font-size:11px!important;
}
.participant .monitor-shell .console-groups,
.participant .monitor-shell:fullscreen .console-groups{
 order:2!important;
 display:flex!important;
 flex:1 1 0!important;
 flex-flow:row wrap!important;
 align-items:center!important;
 justify-content:flex-start!important;
 gap:4px 5px!important;
 width:auto!important;
 min-width:0!important;
 max-width:100%!important;
 padding:0!important;
 margin:0!important;
 overflow:visible!important;
}
.participant .monitor-shell .console-group,
.participant .monitor-shell .console-group-secondary,
.participant .monitor-shell:fullscreen .console-group{
 display:flex!important;
 flex:0 1 auto!important;
 flex-flow:row wrap!important;
 align-items:center!important;
 justify-content:flex-start!important;
 min-width:0!important;
 max-width:100%!important;
 gap:4px 5px!important;
 padding:0!important;
 margin:0!important;
}
.participant .monitor-shell .console-key,
.participant .monitor-shell:fullscreen .console-key{
 height:32px!important;
 min-height:32px!important;
 font-size:10px!important;
 padding:5px 7px!important;
}
.participant .monitor-shell .nibp-interval-field select{
 min-width:85px!important;
 max-width:98px!important;
 height:32px!important;
 min-height:32px!important;
 padding:4px 5px!important;
 font-size:10px!important;
}
.participant .monitor-shell .console-inline-control{
 height:32px!important;
 min-height:32px!important;
 max-width:100%!important;
}
.participant .monitor-shell .console-inline-control select{width:77px!important;font-size:10px!important;}
.participant .monitor-shell .console-clock{
 min-width:0!important;min-height:32px!important;height:32px!important;
 font-size:10px!important;padding:5px!important;
}
/* Reserve the remaining viewport for the monitor; the controls take only the rows they need. */
@media (orientation:landscape) and (pointer:coarse) and (max-width:1400px){
 .participant .monitor-shell,
 .participant .monitor-shell:fullscreen{
  height:100dvh!important;
  grid-template-rows:minmax(0,1fr) auto!important;
 }
 .participant .monitor-shell .monitor{min-height:0!important;}
 .participant .monitor-shell .monitor-footer{max-height:none!important;}
}
@media (max-width:680px){
 .participant .monitor-shell .console-clock{display:none!important;}
 .participant .monitor-shell .console-inline-control span{display:none!important;}
 .participant .monitor-shell .console-groups{flex:1 1 80%!important;}
}
/* User still has direct access to all controls if extremely narrow landscape makes wrapping unavoidable. */


/* v0.7.76 — compact participant sound state and safer Defib/NIBP spacing */
.participant .monitor-footer .sound-participant{display:none!important;}
.participant .monitor-shell #sound.sound-is-on,
.participant .monitor-shell:fullscreen #sound.sound-is-on{
 background:#13794b!important;border:1px solid #43cb8a!important;
 color:#ffffff!important;font-weight:800!important;
}
.participant .monitor-shell #sound.sound-is-off,
.participant .monitor-shell:fullscreen #sound.sound-is-off{
 background:#992f38!important;border:1px solid #e36e77!important;
 color:#ffffff!important;font-weight:800!important;
}
.participant .monitor-shell #sound:focus-visible{outline:2px solid #e9f8ff;outline-offset:2px;}
.participant .monitor-shell .defib-launch-row{
 margin-inline-end:14px!important;
}
@media (pointer:coarse){
 .participant .monitor-shell .defib-launch-row{margin-inline-end:18px!important;}
}

/* v0.7.77: explicitly show when alarm audio is silenced and allow restoration. */
.monitor-footer #mute.alarms-silenced{
 border:1px solid #c6a45b!important;
 background:linear-gradient(180deg,#6a5126,#493719)!important;
 color:#fff0c7!important;
}
.monitor-footer #mute.alarms-attention{
 border-color:#be6060!important;
}
.monitor-footer #mute:disabled{opacity:.7;cursor:progress;}

/* v0.7.78 — saved scenario library */
.saved-scenarios-panel .saved-scenario-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.saved-scenarios-panel .saved-scenario-list{display:flex;flex-direction:column;gap:9px;margin:10px 0}
.saved-scenarios-panel .saved-scenario-entry{display:flex;flex-direction:column;gap:4px;padding:10px;border:1px solid #365568;border-radius:9px;background:rgba(12,32,45,.7)}
.saved-scenarios-panel .saved-scenario-entry>strong{color:#e9f6fd;font-size:14px;overflow-wrap:anywhere}
.saved-scenarios-panel .saved-scenario-entry>small{color:#aac4ce}
.saved-scenarios-panel .saved-scenario-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.saved-scenarios-panel .saved-scenario-actions button{font-size:12px;padding:7px 9px;min-height:32px}
@media(pointer:coarse){.saved-scenarios-panel .saved-scenario-actions button{min-height:42px;padding:9px 11px}}

/* v0.7.79 — standalone, non-live scenario creator */
.scenario-editor-overlay{position:fixed;inset:0;z-index:11000;background:rgba(1,8,15,.88);display:flex;align-items:center;justify-content:center;padding:12px;backdrop-filter:blur(5px)}
.scenario-editor-modal{display:flex;flex-direction:column;width:min(980px,100%);max-height:min(94dvh,950px);background:#0d2330;border:1px solid #426579;border-radius:14px;color:#e9f5fa;box-shadow:0 22px 70px #000b;overflow:hidden}
.scenario-editor-header,.scenario-editor-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:#0b1c29;flex-shrink:0}
.scenario-editor-header strong{display:block;font-size:19px}.scenario-editor-header small{display:block;color:#9ebecb;margin-top:4px}.scenario-editor-scroll{padding:14px 16px;overflow-y:auto;overscroll-behavior:contain;flex:1;min-height:0}
.scenario-editor-section{border:1px solid #315064;border-radius:10px;padding:14px;margin-bottom:12px;background:#112b39}.scenario-editor-section h3{margin:0 0 10px;color:#d8f5f7;font-size:15px}
.scenario-editor-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:10px;margin:10px 0}.scenario-editor-fields label,.scenario-editor-section>label{display:flex;flex-direction:column;gap:5px;color:#c7e2e9;font-size:12px;font-weight:650}
.scenario-editor-fields input,.scenario-editor-fields select,.scenario-editor-section>label input{width:100%;min-width:0;background:#091a26;border:1px solid #56768a;border-radius:7px;color:#fff;min-height:38px;padding:8px;font-size:15px;box-sizing:border-box}
.scenario-editor-fields select option{background:#091a26;color:#fff}.scenario-editor-checkboxes{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:9px}.scenario-editor-checkboxes label{display:flex;align-items:center;gap:7px;font-size:13px}.scenario-editor-checkboxes input{accent-color:#49c4c1}
.sce-stage{border:1px solid #3b5a6b;border-radius:9px;margin:10px 0;padding:12px;background:#0b202d}.sce-stage-heading{display:flex;justify-content:space-between;align-items:center}.scenario-editor-footer #sceError{color:#ffb6ad;font-size:12px;flex:1}.scenario-editor-footer button,.scenario-editor-header button{min-height:40px}.scenario-editor-modal button{cursor:pointer}
@media(max-width:650px){.scenario-editor-overlay{padding:0}.scenario-editor-modal{height:100dvh;max-height:100dvh;border-radius:0}.scenario-editor-header,.scenario-editor-footer{padding:10px}.scenario-editor-scroll{padding:10px}.scenario-editor-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.scenario-editor-header small{font-size:11px}}


/* v0.7.80 — breach indication on the numeric observation, not the whole monitor.
   Visual alarms keep flashing even if audible alarms are silenced. */
.vital.alarm-reading-flash strong{
  color:#ff777d!important;
  animation:simobs-alarm-reading 1.1s steps(2,end) infinite;
}
@keyframes simobs-alarm-reading{
  0%,49%{opacity:1;text-shadow:0 0 10px #ff3b4c70}
  50%,100%{opacity:.18;text-shadow:none}
}
@media(prefers-reduced-motion:reduce){
  .vital.alarm-reading-flash strong{animation:none!important;color:#ff777d!important;text-decoration:underline 2px!important}
}

/* v0.7.81: device-role confirmation and explicit faculty approval */
.role-choice-page{max-width:660px;margin-inline:auto}.role-choice-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:26px 0 16px}
.role-choice-buttons button{display:flex;align-items:flex-start;justify-content:center;flex-direction:column;gap:8px;min-height:105px;padding:20px;text-align:left;border-radius:12px;font-weight:800;font-size:18px}
.role-choice-buttons button small{font-size:12px;font-weight:500;line-height:1.4;opacity:.9}
.qr-role-note{margin:8px 0;color:#a8d7e6}.faculty-access-requests{margin-top:12px;border:1px solid #4d929b;padding:12px;border-radius:10px;background:#092532}
.faculty-access-requests[hidden]{display:none!important}.faculty-access-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px}.faculty-access-row span{flex:1;min-width:100px;font-size:12px}
.switch-to-monitor{margin-top:10px;max-width:100%;white-space:normal}
@media(max-width:520px){.role-choice-buttons{grid-template-columns:1fr}.role-choice-buttons button{min-height:82px;padding:16px}}

/* v0.7.82: clear device role handoff during faculty QR approval */
.faculty-access-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0}
.faculty-access-row span{width:100%;flex:1 0 100%;color:#c8e8ef;font-weight:650}
.faculty-access-row button{white-space:normal;line-height:1.2;min-height:40px}
.faculty-access-row button.primary{background:#207f82;border-color:#62cecb}
#facultyToMonitor{background:#1a3947;color:#ddf9ff;border-color:#46717e;white-space:normal;font-size:12px;padding:7px 11px;min-height:36px}
#facultyToMonitor:hover{background:#265463}
@media (max-width:720px){.faculty-access-row button{flex:1 1 200px}#facultyToMonitor{font-size:11px}}


/* v0.7.84: tablet/iPad faculty controller compact preview.
   Shrink the live monitor preview and widen Live observations so more controls
   are visible on one screen when using a tablet as the faculty controller. */
@media (min-width:601px) and (max-width:1050px){
 .layout>.workspace{padding:10px 12px 8px}
 .layout .topbar{padding:0 0 8px;margin-bottom:10px;gap:10px}
 .layout .topbar h1{font-size:18px}
 .layout .session-id{font-size:10px;margin-top:4px}
 .layout .topbar-actions{gap:6px}
 .layout .topbar-actions button,
 .layout .topbar-actions .status,
 .layout .topbar-actions #elapsed,
 .layout .topbar-actions .faculty-header-clock{font-size:11px}
 .layout .monitor-section{padding:6px;margin-bottom:10px;border-radius:12px}
 .layout .monitor-section .section-eyebrow{font-size:9px;margin-bottom:4px}
 .layout .monitor-section .monitor{height:clamp(185px,30dvh,270px)!important;min-height:185px!important;border-width:3px}
 .layout .monitor-section .waveforms{grid-template-rows:repeat(4,minmax(42px,1fr))!important}
 .layout .monitor-section .wave{min-height:42px!important}
 .layout .monitor-section .wave label{top:4px;left:7px;font-size:8px;padding:1px 4px}
 .layout .monitor-section .vitals{grid-template-rows:repeat(5,minmax(0,1fr))!important}
 .layout .monitor-section .vital{padding:6px 7px}
 .layout .monitor-section .vital small{font-size:8px}
 .layout .monitor-section .vital strong{font-size:clamp(20px,3.1vw,30px)!important}
 .layout .monitor-section .temp-reading{font-size:12px;margin-top:4px}
 .layout .monitor-section .numeric-strip .vital strong{font-size:clamp(18px,2.6vw,24px)!important}
 .layout .monitor-footer.console-revised .console-status{min-height:22px!important;padding:3px 7px!important}
 .layout .monitor-footer.console-revised .console-status .sim-label{font-size:8px!important}
 .layout .monitor-footer.console-revised .console-alarm-text{font-size:10px!important}
 .layout .monitor-footer.console-revised .console-group-primary{gap:4px!important;padding:5px 6px!important}
 .layout .monitor-footer.console-revised .console-group-primary button{min-height:24px!important;padding:4px 7px!important;font-size:9px!important}
 .layout .monitor-footer.console-revised .faculty-rhythm-slot{flex:1 1 170px;min-width:150px;max-width:none}
 .layout .faculty-rhythm-slot label{font-size:9px}
 .layout .faculty-rhythm-slot select{height:25px;padding:3px 6px;font-size:10px}
 .layout .faculty-live-slot{padding:4px 6px 5px}
 .layout .faculty-live-slot .faculty-ctg-audio{padding-top:3px;font-size:9px}
 .layout .faculty-live-slot .faculty-ctg-audio select{font-size:9px;padding:3px}
 .layout .sidebar{padding:10px 12px 16px;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start}
 .layout .sidebar-title{grid-column:1/-1;margin-bottom:0}
 .layout .sidebar>.panel{padding:14px}
 .layout .sidebar>.panel:first-of-type{grid-column:1/-1}
 .layout .sidebar>.panel:first-of-type h2{margin-bottom:8px}
 .layout .sidebar>.panel:first-of-type .help{font-size:11px}
 .layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:5px!important}
 .layout .faculty-live-observations #extraObservations.compact-extra-observations{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:5px!important}
 .layout .faculty-live-observations .control.observation-row,
 .layout .faculty-live-observations #extraObservations.compact-extra-observations .control{padding:3px 5px 4px!important}
 .layout .faculty-live-observations .control.observation-row>label:first-child,
 .layout .faculty-live-observations #extraObservations.compact-extra-observations .control>label{font-size:9px!important}
 .layout .faculty-live-observations .control.observation-row>input.obs-exact-value,
 .layout .faculty-live-observations #extraObservations.compact-extra-observations .control>input.obs-exact-value{height:24px!important;font-size:11px!important}
 .layout .faculty-live-observations input.obs-touch-slider{height:24px!important}
 .layout .faculty-live-observations input.obs-touch-slider::-webkit-slider-thumb{width:20px;height:20px;margin-top:-8px}
 .layout .faculty-live-observations input.obs-touch-slider::-moz-range-thumb{width:20px;height:20px}
 .layout .faculty-live-observations .transition-inline{gap:6px!important;margin-top:5px!important}
 .layout .faculty-live-observations #transitionStatus{font-size:9px;max-height:none}
}
@media (min-width:601px) and (max-width:820px){
 .layout .faculty-live-observations #basicObservations{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .layout .faculty-live-observations #extraObservations.compact-extra-observations{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* v0.7.86: keep touch gestures on observation controls, not the page. */
@media (pointer:coarse) { .layout .faculty-live-observations input.obs-touch-slider { touch-action:none!important; } }
.layout .faculty-live-observations input.obs-touch-slider{touch-action:none!important}
.layout .faculty-live-observations .observation-row .obs-vertical-drag{
 touch-action:none!important;overscroll-behavior:contain;cursor:ns-resize;
 background:#173d4a;color:#d1f9f8;border:1px solid #3b8390;border-radius:7px;
 min-width:28px;min-height:28px;padding:1px 6px;font-size:18px;line-height:1;
 user-select:none;-webkit-user-select:none;
}

.layout .faculty-live-observations .observation-row .obs-vertical-drag{position:absolute;right:70px;top:4px;z-index:2;min-width:25px!important;min-height:26px!important}

/* v0.7.87: faculty preview touch handles, beside numbers in the monitor itself. */
.layout .monitor .vital{position:relative}
.layout .monitor .vital .faculty-monitor-drag-value{touch-action:none!important;user-select:none;-webkit-user-select:none;cursor:ns-resize}
.layout .monitor .vital .faculty-monitor-drag-handle{
 touch-action:none!important;overscroll-behavior:contain;user-select:none;-webkit-user-select:none;
 position:absolute;right:4px;top:50%;transform:translateY(-50%);z-index:5;
 width:30px;min-width:30px;height:38px;min-height:38px;padding:0;
 display:flex;align-items:center;justify-content:center;
 border:1px solid #3b8390;border-radius:7px;background:#173d4a;color:#d1f9f8;
 font-size:20px;font-weight:700;cursor:ns-resize;
}
.layout .monitor .vital .faculty-monitor-drag-handle.dragging{background:#246674}
.layout .monitor .vital:has(> .faculty-monitor-drag-handle)::after{display:none!important}
.participant .faculty-monitor-drag-handle{display:none!important}
/* old adjustment sliders remain for exact editing; no drag buttons in that panel */
.layout .faculty-live-observations .obs-vertical-drag{display:none!important}

/* v0.7.89: waveform itself is the faculty disconnect/reconnect target. */
.layout .monitor .faculty-wave-toggle{cursor:pointer;touch-action:manipulation}
.layout .monitor .faculty-wave-toggle:hover{background-color:rgba(80,180,205,.065)}
.layout .monitor .faculty-wave-toggle:focus-visible{outline:2px solid #7bdde6;outline-offset:-2px}
.layout .monitor .faculty-wave-toggle.is-disconnected{background-color:rgba(150,55,65,.095)}
.layout .monitor .faculty-wave-toggle.is-disconnected label{color:#ff9e9e!important}
.layout .monitor .faculty-wave-toggle.is-pending{opacity:.65}

/* v0.7.90: direct edit by tapping the faculty monitor number. */
.layout .monitor .faculty-monitor-drag-handle{display:none!important}
.layout .monitor .vital .faculty-monitor-edit-value{cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;border-radius:5px}
.layout .monitor .vital .faculty-monitor-edit-value:focus-visible{outline:2px solid #49c6e5;outline-offset:2px}
.layout .monitor .vital .faculty-monitor-edit-value:hover{background:rgba(80,180,200,.12)}
.layout .monitor .vital{position:relative}
.faculty-monitor-inline-editor{position:absolute;z-index:50;right:0;top:calc(50% + 10px);width:clamp(190px,24vw,250px);max-width:85vw;background:#122d3a;border:1px solid #56a6b6;border-radius:9px;padding:10px;box-shadow:0 8px 25px #0009;display:flex;flex-direction:column;gap:7px;color:#fff;font-size:12px;min-height:0}
.faculty-monitor-inline-editor>strong{font-size:13px;color:white!important}
.faculty-monitor-inline-editor label{display:flex;flex-direction:column;align-items:stretch;gap:3px;color:#d1e4ed;font-size:11px}
.faculty-monitor-inline-editor input{font-size:18px!important;width:100%;box-sizing:border-box;border-radius:5px;border:1px solid #68a5b3;background:#f8fcff;color:#0d2534;padding:6px;min-height:38px}
.faculty-monitor-inline-actions{display:flex;gap:5px}
.faculty-monitor-inline-actions button{min-height:36px;flex:1;padding:6px;border-radius:5px;border:1px solid #69a6b8;background:#244d60;color:white;cursor:pointer}
.faculty-monitor-inline-actions button[type=submit]{background:#177f66}

/* Keep numeric editor visible even where the monitor clips the vital panels. */
.faculty-monitor-inline-editor{position:fixed!important;top:50%!important;left:50%!important;right:auto!important;transform:translate(-50%,-50%)!important;z-index:9999!important;width:min(320px,calc(100vw - 32px))!important;box-shadow:0 0 0 100vmax rgba(0,0,0,.62),0 12px 40px #000b!important}


/* v0.7.92: real faculty workstation for tablet/desktop. Applies to large iPads
   including 12.9 inch and 13 inch models, unlike the previous max 1200px rule. */
@media (min-width:700px){
 .layout{display:flex!important;flex-direction:column!important;width:100%!important;min-height:100dvh!important;height:auto!important;overflow:visible!important;align-items:stretch!important}
 .layout>.workspace{display:block!important;flex:none!important;width:100%!important;min-width:0!important;max-width:none!important;height:auto!important;min-height:0!important;overflow:visible!important;padding:8px 12px!important}
 .layout>.workspace>.topbar{padding:3px 0 7px!important;margin-bottom:7px!important}
 .layout .faculty-workstation{display:grid!important;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr)!important;gap:10px!important;width:100%!important;max-width:none!important;align-items:start!important}
 .layout .faculty-workstation>.monitor-section{display:flex!important;flex-direction:column!important;position:relative!important;top:auto!important;min-width:0!important;width:100%!important;margin:0!important;padding:7px!important;box-shadow:none!important}
 .layout .faculty-workstation .monitor-shell{display:flex!important;flex-direction:column!important;min-width:0!important;min-height:0!important;overflow:visible!important}
 .layout .faculty-workstation .monitor{flex:none!important;height:clamp(280px,51dvh,540px)!important;max-height:540px!important;min-height:280px!important}
 .layout .faculty-observations-column{display:flex!important;flex-direction:column!important;min-width:0!important;min-height:0!important;max-height:calc(100dvh - 95px)!important;overflow-y:auto!important;overscroll-behavior:contain;padding:9px!important;background:#10202d;border:1px solid #365363;border-radius:10px}
 .layout .faculty-observations-heading{font-size:11px;font-weight:800;letter-spacing:.08em;color:#86dfe4;margin:1px 0 7px}
 .layout .faculty-observations-column .faculty-live-observations{display:block!important;min-width:0!important;max-height:none!important;overflow:visible!important;margin:0!important;padding:7px!important}
 .layout .faculty-observations-column #basicObservations{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important}
 .layout .faculty-observations-column #basicObservations .control.observation-row{min-width:0!important;min-height:43px!important;padding:3px 5px!important;margin:0!important}
 .layout .faculty-observations-column #basicObservations .control.observation-row[hidden]{display:none!important}
 .layout .faculty-observations-column #basicObservations .obs-touch-slider{height:23px!important;touch-action:none!important}
 .layout .faculty-observations-column .transition-inline{padding:5px 0!important}
 .layout>.sidebar{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;align-content:start;gap:8px;width:100%!important;height:auto!important;max-height:none!important;overflow:visible!important;padding:12px!important;border-left:0!important;border-top:1px solid #305366!important}
 .layout>.sidebar>.sidebar-title{grid-column:1/-1;margin:0}
 .layout>.sidebar>.faculty-accordion{margin:0!important;min-width:0!important}
 .layout>.sidebar>.faculty-accordion[open]{grid-column:1/-1}
}
@media (min-width:700px) and (max-width:920px){
 .layout .faculty-workstation{grid-template-columns:minmax(0,1fr) minmax(300px,.9fr)!important;gap:7px!important}
 .layout .faculty-workstation .monitor{height:clamp(260px,47dvh,470px)!important;min-height:260px!important}
 .layout .faculty-observations-column{padding:5px!important}
 .layout .faculty-observations-column .faculty-live-observations{padding:4px!important}
}
@media (max-width:699px){
 .layout .faculty-workstation{display:block}
 .layout .faculty-observations-column{display:none!important}
 .layout .faculty-workstation .monitor-section{position:relative!important;top:auto!important}
}
/* Restore a small screen-scrolling arrow box, independent of the values. */
.layout>.faculty-scroll-arrows{position:fixed;bottom:14px;right:13px;z-index:250;display:flex;flex-direction:column;gap:3px;padding:4px;border:1px solid #4b8799;border-radius:9px;background:#102b39ee;box-shadow:0 5px 20px #0008}
.layout>.faculty-scroll-arrows button{display:grid;place-items:center;width:35px;height:32px;min-width:35px;min-height:32px;font-size:19px;line-height:1;padding:0;border:1px solid #5c8ea1;border-radius:6px;background:#1a4353;color:#d8fcff;touch-action:manipulation}
.layout>.faculty-scroll-arrows button:active{background:#2b7083}




/* v0.7.93 — faculty preview fits in the first tablet landscape viewport.
   Participant monitor and fullscreen monitor are intentionally untouched. */
@media (min-width:700px){
 .layout .workspace .topbar{min-height:0!important;padding:2px 0 5px!important;margin:0 0 5px!important}
 .layout .workspace .topbar h1{font-size:clamp(14px,1.65vw,19px)!important}
 .layout .faculty-workstation{grid-template-columns:minmax(0,1fr) minmax(315px,1.05fr)!important;gap:8px!important;align-items:start!important}
 .layout .faculty-workstation>.monitor-section{padding:5px!important;min-height:0!important;max-height:calc(100dvh - 80px)!important;overflow:hidden!important}
 .layout .faculty-workstation>.monitor-section .section-eyebrow{margin:0 0 3px!important;font-size:9px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen){min-height:0!important;flex:0 1 auto!important;overflow:hidden!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor{
   height:clamp(185px,37dvh,340px)!important;
   min-height:0!important;max-height:37dvh!important;
   flex:0 0 auto!important;border-width:2px!important;border-radius:7px 7px 0 0!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .waveforms{grid-template-rows:repeat(4,minmax(0,1fr))!important;min-height:0!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .wave{min-height:0!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .wave label{font-size:8px!important;top:3px!important;left:5px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vitals{grid-template-rows:repeat(5,minmax(0,1fr))!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vital{padding:2px 5px!important;min-height:0!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vital small{font-size:8px!important;line-height:1.1!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vital strong{font-size:clamp(16px,2.25vw,26px)!important;line-height:1.05!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip .vital{min-height:37px!important;flex-basis:74px!important;padding:2px 5px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip .vital strong{font-size:clamp(14px,1.7vw,21px)!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor-footer.console-revised{flex:0 0 auto!important;max-height:min(24dvh,155px)!important;overflow-y:auto!important;overflow-x:hidden!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .console-status{padding:2px 5px!important;min-height:20px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .console-group-primary{padding:3px 5px!important;gap:3px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .console-group-primary button{font-size:9px!important;padding:3px 5px!important;min-height:24px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .console-group-secondary{padding:3px 5px!important;gap:3px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .faculty-live-slot{padding:2px 5px 3px!important}
 .layout .faculty-observations-column{max-height:calc(100dvh - 80px)!important}
}
@media (min-width:700px) and (max-height:620px){
 .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor{height:34dvh!important;max-height:34dvh!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor-footer.console-revised{max-height:26dvh!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip .vital{min-height:29px!important}
}


/* v0.7.94: adaptive rows after switching between monitor presets.
   Previous compact rules hard-coded four rows with !important; that caused
   extra waveforms to crowd together or disappear with alternate presets. */
@media (min-width:700px){
 .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor{
   --simobs-trace-count:4;
   grid-template-rows:minmax(0,1fr) auto!important;
   height:clamp(208px,43dvh,355px)!important;
   max-height:43dvh!important;
   min-width:0!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .waveforms,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vitals{
   grid-template-rows:repeat(var(--simobs-trace-count),minmax(0,1fr))!important;
   min-height:0!important;
   height:100%!important;
   overflow:hidden!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .wave,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .ctg-wave{
   min-height:0!important;
   height:auto!important;
   overflow:hidden!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .ctg-traces{min-height:0!important;overflow:hidden!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .wave canvas{min-height:0!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip{
   flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;
   min-height:0!important;max-height:25%!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip .vital{
   flex:1 0 66px!important;min-width:60px!important;max-width:none!important;
   min-height:35px!important;overflow:hidden!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vital{
   display:flex!important;flex-direction:column!important;justify-content:center!important;
   overflow:hidden!important;min-width:0!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vital small{
   font-size:clamp(7px,.8vw,10px)!important;line-height:1.2!important;
   white-space:normal!important;overflow-wrap:anywhere!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .vital strong{
   font-size:clamp(13px,1.65vw,23px)!important;
   max-width:100%!important;overflow:hidden!important;
   text-overflow:clip!important;white-space:nowrap!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .wave label{
   font-size:clamp(7px,.7vw,9px)!important;line-height:1.15!important;
   max-width:95%!important;white-space:normal!important;overflow-wrap:break-word!important;
   pointer-events:none;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor-footer.console-revised{
   max-height:min(19dvh,130px)!important;overflow-y:auto!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .console-group-primary,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .nibp-card-row{
   min-width:0!important;flex-wrap:wrap!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .console-group-primary button,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .nibp-card-label,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .nibp-recycle-status{
   white-space:normal!important;overflow-wrap:anywhere!important;line-height:1.2!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .faculty-rhythm-slot,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .nibp-control-card{
   min-width:0!important;max-width:100%!important;
 }
}
@media (min-width:700px) and (max-height:620px){
 .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor{height:40dvh!important;max-height:40dvh!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor-footer.console-revised{max-height:20dvh!important}
}


/* v0.7.95: faculty workstation-only fullscreen, with iPad in-page fallback. */
.layout .faculty-observations-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.layout .faculty-workstation-full-button{appearance:none;border:1px solid #638097;background:#172b3d;color:#f4f8fb;border-radius:6px;padding:5px 10px;font-size:12px;line-height:1.2;cursor:pointer;white-space:nowrap;touch-action:manipulation}
.layout .faculty-workstation-full-button:focus-visible{outline:2px solid #83c6ee;outline-offset:2px}
.layout .faculty-workstation:fullscreen,
.layout .faculty-workstation.faculty-fullscreen-fallback{
 width:100vw!important;height:100dvh!important;max-width:none!important;max-height:none!important;
 padding:8px!important;margin:0!important;background:#07131d!important;
 display:grid!important;grid-template-columns:minmax(0,1fr) minmax(270px,1fr)!important;
 gap:10px!important;overflow:hidden!important;align-items:stretch!important;
}
.layout .faculty-workstation.faculty-fullscreen-fallback{position:fixed!important;inset:0!important;z-index:2147483000!important}
body.faculty-workstation-full-fallback{overflow:hidden!important}
.layout .faculty-workstation:fullscreen>.monitor-section,
.layout .faculty-workstation.faculty-fullscreen-fallback>.monitor-section,
.layout .faculty-workstation:fullscreen>.faculty-observations-column,
.layout .faculty-workstation.faculty-fullscreen-fallback>.faculty-observations-column{
 height:calc(100dvh - 16px)!important;max-height:none!important;min-height:0!important;min-width:0!important;overflow:auto!important;
}
.layout .faculty-workstation:fullscreen .monitor-shell,
.layout .faculty-workstation.faculty-fullscreen-fallback .monitor-shell{max-height:none!important;min-height:0!important}
.layout .faculty-workstation:fullscreen .monitor-shell>.monitor,
.layout .faculty-workstation.faculty-fullscreen-fallback .monitor-shell>.monitor{height:min(57dvh,560px)!important;max-height:57dvh!important;min-height:0!important}
.layout .faculty-workstation:fullscreen .monitor-footer.console-revised,
.layout .faculty-workstation.faculty-fullscreen-fallback .monitor-footer.console-revised{max-height:29dvh!important;overflow-y:auto!important}
.layout .faculty-workstation:fullscreen .faculty-observations-heading,
.layout .faculty-workstation.faculty-fullscreen-fallback .faculty-observations-heading{position:sticky;top:0;z-index:8;background:#07131d;padding:5px 2px}
@media (max-width:699px){
 .layout .faculty-workstation:fullscreen,
 .layout .faculty-workstation.faculty-fullscreen-fallback{grid-template-columns:minmax(0,1fr) minmax(180px,.85fr)!important;gap:5px!important;padding:4px!important}
 .layout .faculty-workstation:fullscreen>.monitor-section,
 .layout .faculty-workstation.faculty-fullscreen-fallback>.monitor-section,
 .layout .faculty-workstation:fullscreen>.faculty-observations-column,
 .layout .faculty-workstation.faculty-fullscreen-fallback>.faculty-observations-column{height:calc(100dvh - 8px)!important}
}

/* v0.7.96 — tablet-first faculty menu. Overrides legacy sidebar grids. */
.layout .topbar-actions .faculty-menu-picker{display:flex;align-items:center;gap:7px;margin-right:8px;color:#a9e7ee;font-size:10px;font-weight:800;letter-spacing:.04em;white-space:nowrap}
.layout .topbar-actions .faculty-menu-picker select{min-width:165px;max-width:220px;width:clamp(165px,18vw,220px);padding:9px 10px;background:#143344;border:1px solid #568da4;border-radius:7px;color:#fff;font-size:13px;cursor:pointer;touch-action:manipulation}
.layout>.sidebar.faculty-menu-dialog{display:none!important;position:fixed!important;inset:5dvh max(12px,calc((100vw - 760px)/2))!important;z-index:10010!important;width:auto!important;height:90dvh!important;max-height:90dvh!important;overflow-y:auto!important;overscroll-behavior:contain!important;padding:18px!important;background:#0b202e!important;border:1px solid #5e9cad!important;border-radius:15px!important;box-shadow:0 18px 90px #000b!important;grid-template-columns:minmax(0,1fr)!important;align-content:start!important;gap:10px!important}
.layout>.sidebar.faculty-menu-dialog.faculty-menu-open{display:grid!important}
.layout>.sidebar.faculty-menu-dialog>.sidebar-title{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:-18px;z-index:5;background:#0b202e;padding:10px 2px 14px;margin:0!important;border-bottom:1px solid #315768}
.layout>.sidebar.faculty-menu-dialog>.faculty-accordion{display:none!important}
.layout>.sidebar.faculty-menu-dialog>.faculty-accordion[open]{display:block!important;grid-column:1/-1!important;margin:0!important;overflow:visible!important;min-height:0!important}
.layout>.sidebar.faculty-menu-dialog>.faculty-accordion[open]>summary{display:none!important}
.layout>.sidebar.faculty-menu-dialog .faculty-accordion[open]>*:not(summary){max-width:100%}
.layout>.sidebar.faculty-menu-dialog .faculty-menu-close{padding:8px 12px;border:1px solid #6092a6;border-radius:8px;background:#1c4051;color:#fff;cursor:pointer;white-space:nowrap}
.faculty-menu-backdrop{display:none;position:fixed;inset:0;z-index:10009;background:rgba(0,0,0,.72)}
.faculty-menu-backdrop.faculty-menu-open{display:block}
body.faculty-menu-active{overflow:hidden}
@media(max-width:700px){.layout .topbar-actions .faculty-menu-picker{flex-direction:column;align-items:flex-start;gap:3px}.layout .topbar-actions .faculty-menu-picker select{width:165px;max-width:45vw}.layout>.sidebar.faculty-menu-dialog{inset:8px!important;width:auto!important;height:calc(100dvh - 16px)!important;max-height:calc(100dvh - 16px)!important;padding:12px!important}}


/* v0.7.97 — keep every non-waveform observation visible on the compact faculty monitor.
   The previous single-row scroller could hide RR, temperature and other numerics. */
@media (min-width:700px){
 .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor{
   grid-template-rows:minmax(0,1fr) auto!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip:not([hidden]){
   display:grid!important;
   grid-template-columns:repeat(auto-fit,minmax(67px,1fr))!important;
   grid-auto-rows:minmax(40px,auto)!important;
   flex-wrap:wrap!important;
   overflow:visible!important;
   overflow-x:visible!important;
   overflow-y:visible!important;
   max-height:none!important;
   min-height:40px!important;
   width:100%!important;
   align-content:stretch!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip .vital{
   min-width:0!important;min-height:40px!important;height:auto!important;
   padding:3px 4px!important;max-width:none!important;
   overflow:visible!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip .vital small{
   font-size:clamp(8px,.75vw,10px)!important;
   overflow-wrap:anywhere!important;white-space:normal!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .numeric-strip .vital strong{
   font-size:clamp(13px,1.5vw,21px)!important;
   white-space:nowrap!important;
 }
}
/* Also keep numerics visible when workstation fullscreen is enabled. */
.layout .faculty-workstation:fullscreen .numeric-strip:not([hidden]),
.layout .faculty-workstation.faculty-fullscreen-fallback .numeric-strip:not([hidden]){
 display:grid!important;grid-template-columns:repeat(auto-fit,minmax(72px,1fr))!important;
 overflow:visible!important;max-height:none!important;
}
.layout .faculty-workstation:fullscreen .numeric-strip .vital,
.layout .faculty-workstation.faculty-fullscreen-fallback .numeric-strip .vital{
 min-width:0!important;max-width:none!important;min-height:42px!important;
}

/* v0.7.99 — scenario clock available in faculty workstation fullscreen. */
.layout .faculty-fullscreen-timeline[hidden]{display:none!important}
.layout .faculty-fullscreen-timeline{display:none;min-width:0}
.layout .faculty-workstation:fullscreen>.faculty-fullscreen-timeline,
.layout .faculty-workstation.faculty-fullscreen-fallback>.faculty-fullscreen-timeline{
 display:flex!important;grid-column:1 / -1;align-items:center;justify-content:flex-end;
 flex-wrap:wrap;gap:7px;padding:4px 9px;min-height:43px;max-height:68px;
 background:#102335;border:1px solid #2d526a;border-radius:8px;color:#e6f2fa;
}
.layout .faculty-fullscreen-timeline-title{margin-right:auto;color:#9fc7db;font-size:11px;letter-spacing:.07em;font-weight:750}
.layout .faculty-fullscreen-timeline #elapsed{font-size:19px;font-variant-numeric:tabular-nums;font-weight:800;min-width:64px;text-align:center}
.layout .faculty-fullscreen-timeline #clock{font-size:12px;color:#b7cbd8;white-space:nowrap}
.layout .faculty-fullscreen-timeline button{padding:6px 12px;font-size:12px;min-height:32px}
.layout .faculty-workstation:fullscreen,
.layout .faculty-workstation.faculty-fullscreen-fallback{grid-template-rows:auto minmax(0,1fr)!important}
.layout .faculty-workstation:fullscreen>.monitor-section,
.layout .faculty-workstation:fullscreen>.faculty-observations-column,
.layout .faculty-workstation.faculty-fullscreen-fallback>.monitor-section,
.layout .faculty-workstation.faculty-fullscreen-fallback>.faculty-observations-column{
 height:auto!important;max-height:100%!important;min-height:0!important;
}
@media(max-width:699px){
 .layout .faculty-workstation:fullscreen>.faculty-fullscreen-timeline,
 .layout .faculty-workstation.faculty-fullscreen-fallback>.faculty-fullscreen-timeline{gap:4px;padding:3px 5px}
 .layout .faculty-fullscreen-timeline-title{font-size:9px}
 .layout .faculty-fullscreen-timeline button{padding:5px 7px;font-size:11px}
}

/* v0.8.00: faculty controller presence safety cover. */
.faculty-offline-overlay[hidden]{display:none!important}
.faculty-offline-overlay{position:fixed;inset:0;z-index:2147483000;background:#07131d;color:#f2f7fa;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center}
.faculty-offline-panel{max-width:520px;padding:30px 24px;border:1px solid #536b7b;border-radius:16px;background:#112431;box-shadow:0 14px 56px #0008}
.faculty-offline-panel h2{font-size:clamp(1.35rem,3vw,2.1rem);margin:0 0 18px}
.faculty-offline-panel p{line-height:1.5;margin:12px 0;color:#d6e2e9}

/* v0.8.01: CTG workstation controls appear beside live observation sliders. */
.layout .faculty-maternity-controls{margin:8px 0 0;padding:9px;border:1px solid #3b6473;border-radius:8px;background:#0b202b;min-width:0}
.layout .faculty-maternity-controls[hidden]{display:none!important}
.layout .faculty-maternity-controls>h3{margin:0 0 3px;font-size:13px;color:#8ae2d6;letter-spacing:.025em}
.layout .faculty-maternity-controls>p.help{margin:0 0 7px;font-size:10px}
.layout .faculty-maternity-controls>.control{display:grid;grid-template-columns:minmax(100px,1fr) 58px;column-gap:7px;row-gap:3px;align-items:center;margin:0 0 6px}
.layout .faculty-maternity-controls>.control>label{font-size:11px;line-height:1.25;grid-column:1;grid-row:1}
.layout .faculty-maternity-controls>.control>input[type=number]{grid-column:2;grid-row:1;min-width:0;width:100%;padding:5px 2px;font-size:12px;text-align:center}
.layout .faculty-maternity-controls>.control>.ctg-live-slider{grid-column:1/-1;grid-row:2;display:block;width:100%;height:20px;min-width:0;accent-color:#5dd6b3;touch-action:pan-y}
.layout .faculty-maternity-controls>.control>select{grid-column:1/-1;width:100%;min-width:0;padding:6px;font-size:12px}
.layout .faculty-workstation:fullscreen .faculty-maternity-controls,.layout .faculty-workstation.faculty-fullscreen-fallback .faculty-maternity-controls{margin-top:5px;padding:6px}


/* v0.8.02: CTG styled like printed paper with dark ink trace. */
.ctg-wave{background:#f8f9f0!important;border:1px solid #c7dbc3;border-radius:3px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.ctg-wave>label{padding:4px 8px 2px;color:#2b4e2a!important;background:linear-gradient(to bottom,rgba(248,249,240,.96),rgba(248,249,240,.74));font-size:10px;letter-spacing:.03em}
.ctg-traces{background:#f8f9f0!important}
.ctg-traces canvas{background:transparent!important;image-rendering:auto}
.ctg-traces canvas:first-child{border-bottom:1px solid #a8cba7!important}
.monitor .wave.ctg-wave{border-bottom:0}
.layout .faculty-workstation .monitor-shell:not(:fullscreen) .ctg-wave>label{font-size:9px;padding:3px 6px 2px}


/* v0.8.04 — CTG deserves more vertical space than a single waveform row.
   One CTG module contains BOTH the FHR and uterine activity trace. */
.monitor.has-ctg .waveforms,.monitor.has-ctg .vitals{grid-template-rows:var(--simobs-trace-rows)!important}
.monitor.has-ctg .ctg-traces{grid-template-rows:minmax(0,2.3fr) minmax(0,1fr)!important}
.monitor.has-ctg .ctg-wave>label{flex:none;z-index:1;position:relative}
@media(min-width:700px){
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .waveforms,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .vitals{grid-template-rows:var(--simobs-trace-rows)!important}
}


/* v0.8.05 — dedicated maternity-first monitoring layout. CTG paper is the
   primary diagnostic teaching canvas; maternal ECG/SpO2 are secondary rows. */
.monitor.has-ctg .waveforms,.monitor.has-ctg .vitals{
  grid-template-rows:var(--simobs-trace-rows)!important;
  min-height:0!important;
}
.monitor.has-ctg .ctg-wave{min-height:0!important;overflow:hidden!important}
.monitor.has-ctg .ctg-traces{grid-template-rows:minmax(0,2.5fr) minmax(0,1fr)!important}
.monitor.has-ctg .vitals>.vital:first-child{
  border-bottom:1px solid #3d5c57!important;
  background:linear-gradient(180deg,#061411,#020909);
}
.monitor.has-ctg .vitals>.vital:first-child small{color:#a5dfc3!important}
.monitor.has-ctg .vitals>.vital:first-child strong{color:#5eeda9!important}
/* Taller CTG within the same responsive faculty workstation. The left monitor
   stays alongside the right-hand slider panel, without forcing page overflow. */
@media(min-width:700px){
  .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.has-ctg{
    height:clamp(275px,51dvh,445px)!important;
    max-height:51dvh!important;
  }
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .waveforms,
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .vitals{
    grid-template-rows:var(--simobs-trace-rows)!important;
  }
}
@media(min-width:700px) and (max-height:620px){
  .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.has-ctg{
    height:clamp(205px,43dvh,300px)!important;
    max-height:43dvh!important;
  }
}
/* On the participant monitor, keep all maternal numeric readings visible and
   devote the larger trace area to CTG without changing other presets. */
.participant .monitor.has-ctg .ctg-wave>label{background:rgba(248,249,240,.94)!important}


/* v0.8.06 — Keep the maternal ECG and SpO2 waveforms readable next to CTG.
   Proportional rows are set by app.js, not hard-coded across monitor presets. */
.monitor.has-ctg .waveforms>.wave:not(.ctg-wave) {min-height:0!important;}
.monitor.has-ctg .waveforms>.wave:not(.ctg-wave)>canvas {height:100%;min-height:0;}

/* v0.8.07: keep maternal numerics within the short ECG/SpO2 rows. */
.participant .monitor.has-ctg .vitals>.vital{min-height:0;min-width:0;overflow:hidden;}
.participant .monitor.has-ctg .vitals>.vital strong{line-height:.94!important;}


/* v0.8.08 — phone-size faculty maternity preview: keep BOTH maternal waveforms
   legible and the CTG trace tall enough to show its real 10 bpm variability.
   These changes are limited to the faculty controller and never alter readings. */
@media(max-width:700px){
 .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.has-ctg{
  height:clamp(380px,52dvh,510px)!important;
  max-height:none!important;
  grid-template-columns:minmax(0,1fr) 108px!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .waveforms,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .vitals{
  grid-template-rows:var(--simobs-mobile-trace-rows)!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .ctg-traces{
  grid-template-rows:minmax(0,2.4fr) minmax(0,1fr)!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .vital{
  min-width:0!important;padding:3px 4px!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .vital small{font-size:8px!important}
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .vital strong{
  font-size:clamp(17px,5.2vw,28px)!important;line-height:1!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .ctg-wave>label{
  font-size:8px!important;padding:2px 5px!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .wave:not(.ctg-wave)>label{
  font-size:9px!important;top:2px!important;left:3px!important;
 }
}


/* v0.8.09 — phone landscape should not collapse the CTG to 34–43dvh.
   Keep a readable fixed MINIMUM geometry, allowing vertical page scrolling
   instead of compressing FHR, maternal ECG and SpO2 into shallow bands.
   Tablet/desktop workstation styles remain untouched. */
@media (orientation:landscape) and (pointer:coarse) and (max-height:600px) and (max-width:1100px){
  .layout{height:auto!important;min-height:100dvh!important;overflow:visible!important;display:block!important}
  .layout>.workspace{height:auto!important;min-height:0!important;overflow:visible!important;padding:6px 8px!important}
  .layout .faculty-workstation{display:block!important;grid-template-columns:minmax(0,1fr)!important;max-height:none!important;overflow:visible!important}
  .layout .faculty-workstation>.monitor-section{position:relative!important;top:auto!important;max-height:none!important;overflow:visible!important;width:100%!important}
  .layout .faculty-workstation .monitor-shell:not(:fullscreen){max-height:none!important;overflow:visible!important}
  .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.has-ctg{
    height:380px!important;min-height:380px!important;max-height:none!important;
    grid-template-columns:minmax(0,1fr) clamp(105px,17%,145px)!important;
    grid-template-rows:minmax(0,1fr) auto!important;
  }
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .waveforms,
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .vitals{
    grid-template-rows:var(--simobs-mobile-trace-rows)!important;
    height:100%!important;min-height:0!important;
  }
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .wave,
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .ctg-wave{
    min-height:0!important;height:auto!important;overflow:hidden!important;
  }
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .ctg-traces{
    grid-template-rows:minmax(0,2.7fr) minmax(0,1fr)!important;
    min-height:0!important;
  }
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg .numeric-strip{
    max-height:none!important;overflow-x:auto!important;
  }
  .layout .faculty-observations-column{display:block!important;max-height:none!important;overflow:visible!important;margin-top:8px}
  .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor-footer.console-revised{
    max-height:none!important;overflow:visible!important;
  }
}


/* v0.8.10 — CTG space allocation applies to every preset, not just Maternity.
   When extra traces are selected, allow the monitor to GROW and the page to
   scroll instead of compressing fetal, cardiac and other waveform rows. */
.monitor.has-ctg.ctg-extra-traces {
  min-height:var(--simobs-ctg-min-height)!important;
  height:max(var(--simobs-ctg-min-height), 65dvh)!important;
  max-height:none!important;
  grid-template-rows:minmax(0,1fr) auto!important;
}
.monitor.has-ctg.ctg-extra-traces .waveforms,
.monitor.has-ctg.ctg-extra-traces .vitals {
  grid-template-rows:var(--simobs-trace-rows)!important;
  height:100%!important;
  min-height:0!important;
}
.monitor.has-ctg.ctg-extra-traces .ctg-wave,
.monitor.has-ctg.ctg-extra-traces .wave:not(.ctg-wave) {
  min-height:0!important;
  overflow:hidden!important;
}
/* Workstation layout should never crop the extra traces to a fixed viewport. */
.layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.has-ctg.ctg-extra-traces {
  height:var(--simobs-ctg-min-height)!important;
  max-height:none!important;
}
.layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg.ctg-extra-traces .waveforms,
.layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg.ctg-extra-traces .vitals {
  grid-template-rows:var(--simobs-trace-rows)!important;
}
/* Short screens, touch devices and phone orientation: do not return to
   the earlier fixed-height small monitor when four or more traces exist. */
@media (max-width:1100px), (pointer:coarse) {
 .layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.has-ctg.ctg-extra-traces {
   height:var(--simobs-ctg-min-height)!important;
   min-height:var(--simobs-ctg-min-height)!important;
   max-height:none!important;
 }
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg.ctg-extra-traces .waveforms,
 .layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg.ctg-extra-traces .vitals {
   grid-template-rows:var(--simobs-trace-rows)!important;
 }
}
/* Participant displays must likewise grow and scroll if a CTG is added to
   a monitor carrying additional waveform channels. */
.participant:has(.monitor.has-ctg.ctg-extra-traces) {
  height:auto!important;
  min-height:100dvh!important;
  overflow-y:auto!important;
}
.participant .monitor.has-ctg.ctg-extra-traces {
  height:var(--simobs-ctg-min-height)!important;
  min-height:var(--simobs-ctg-min-height)!important;
  max-height:none!important;
  flex:0 0 auto!important;
}
@media (orientation:landscape) and (max-height:600px) {
 .participant .monitor.has-ctg.ctg-extra-traces {
   height:var(--simobs-ctg-min-height)!important;
   min-height:var(--simobs-ctg-min-height)!important;
 }
}


/* v0.8.11: stop CTG plus additional channels escaping the waveform grid.
   Existing styles constrained the grid's height to the viewport but gave
   individual rows minimum heights larger than the available space.  The
   final row (often EtCO2) consequently overlaid the numeric strip. */
.monitor.has-ctg.ctg-extra-traces,
.layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.has-ctg.ctg-extra-traces,
.participant .monitor.has-ctg.ctg-extra-traces{
  display:grid!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  grid-template-rows:var(--simobs-ctg-wave-height) auto!important;
  align-content:start!important;
  overflow:hidden!important;
}
.monitor.has-ctg.ctg-extra-traces .waveforms,
.monitor.has-ctg.ctg-extra-traces .vitals,
.layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg.ctg-extra-traces .waveforms,
.layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.has-ctg.ctg-extra-traces .vitals{
  height:var(--simobs-ctg-wave-height)!important;
  min-height:var(--simobs-ctg-wave-height)!important;
  max-height:none!important;
  grid-template-rows:var(--simobs-ctg-fixed-rows)!important;
  align-content:start!important;
  overflow:hidden!important;
}
.monitor.has-ctg.ctg-extra-traces .waveforms>.wave,
.monitor.has-ctg.ctg-extra-traces .vitals>.vital{
  min-height:0!important;
  height:100%!important;
  overflow:hidden!important;
}
.monitor.has-ctg.ctg-extra-traces .waveforms>.wave>canvas{
  height:100%!important;
  display:block!important;
}
.monitor.has-ctg.ctg-extra-traces .numeric-strip{
  grid-row:2!important;
  min-height:75px!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}
/* Let the bedside monitor scroll rather than distort the trace geometry. */
.participant:has(.monitor.has-ctg.ctg-extra-traces){
  display:block!important;
  height:auto!important;
  min-height:100dvh!important;
  overflow:visible!important;
}
.participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces),
.participant .monitor-shell:fullscreen:has(.monitor.has-ctg.ctg-extra-traces){
  display:flex!important;
  flex-direction:column!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
.participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces)>.monitor{
  flex:none!important;
}
.layout .faculty-workstation:has(.monitor.has-ctg.ctg-extra-traces),
.layout .faculty-workstation:has(.monitor.has-ctg.ctg-extra-traces)>.monitor-section{
  max-height:none!important;
  overflow:visible!important;
}
.layout .faculty-workstation .monitor-shell:not(:fullscreen):has(.monitor.has-ctg.ctg-extra-traces){
  max-height:none!important;
  overflow:visible!important;
}
@media (orientation:landscape) and (max-height:600px){
  .participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces){height:auto!important;}
  .participant .monitor.has-ctg.ctg-extra-traces{height:auto!important;min-height:0!important;}
}


/* v0.8.13: Phone bedside waveform containment.
   The participant's older viewport-height and compact-grid constraints could
   force the pleth into the non-waveform strip. On a narrow screen, grow the
   monitor with the enabled trace count rather than overlapping observation
   tiles. This intentionally allows vertical scrolling. */
@media (max-width:700px),
       (orientation:landscape) and (pointer:coarse) and (max-height:600px) and (max-width:1100px){
  .participant:has(.monitor){
    display:block!important;height:auto!important;min-height:100dvh!important;
    overflow-y:auto!important;overflow-x:hidden!important;
  }
  .participant .monitor-shell,
  .participant .monitor-shell:fullscreen{
    display:flex!important;flex-direction:column!important;
    height:auto!important;min-height:0!important;max-height:none!important;
    overflow:visible!important;
  }
  .participant .monitor-shell>.monitor,
  .participant .monitor-shell:fullscreen>.monitor{
    flex:none!important;display:grid!important;
    grid-template-rows:auto auto!important;
    height:auto!important;min-height:0!important;max-height:none!important;
    align-content:start!important;overflow:hidden!important;
  }
  .participant .monitor .waveforms,
  .participant .monitor .vitals{
    grid-row:1!important;
    height:auto!important;min-height:0!important;max-height:none!important;
    align-content:start!important;overflow:hidden!important;
  }
  /* Non-CTG waveform rows: reserve an independent row for every enabled trace. */
  .participant .monitor:not(.has-ctg) .waveforms,
  .participant .monitor:not(.has-ctg) .vitals{
    grid-template-rows:repeat(var(--simobs-trace-count,3),minmax(110px,auto))!important;
  }
  /* CTG plus any other channels: use the precomputed, non-overlapping rows. */
  .participant .monitor.has-ctg.ctg-extra-traces .waveforms,
  .participant .monitor.has-ctg.ctg-extra-traces .vitals{
    height:var(--simobs-ctg-wave-height)!important;
    min-height:var(--simobs-ctg-wave-height)!important;
    grid-template-rows:var(--simobs-ctg-fixed-rows)!important;
  }
  .participant .monitor .waveforms>.wave{
    min-height:0!important;height:100%!important;overflow:hidden!important;
  }
  .participant .monitor .waveforms>.wave>canvas{
    display:block!important;width:100%!important;height:100%!important;
  }
  .participant .monitor .numeric-strip:not([hidden]){
    grid-row:2!important;grid-column:1/-1!important;
    position:relative!important;z-index:1!important;
    height:auto!important;min-height:75px!important;max-height:none!important;
    overflow:visible!important;
  }
  .participant .monitor-shell>.monitor-footer{
    flex:none!important;position:relative!important;
  }
}


/* v0.8.14 – BED-SIDE PHONE LANDSCAPE FIT
   Restore a contained viewport-height monitor (undo v0.8.13's auto-growing
   landscape design). Share available height by waveform count and give CTG
   a larger proportion. This applies to the participant ONLY; desktop and
   faculty preview layouts remain unchanged. */
@media (orientation:landscape) and (pointer:coarse) and (max-height:600px) and (max-width:1100px){
  html,body,#app{min-height:0!important;height:100%!important;overflow:hidden!important}
  .participant:has(.monitor){
    display:flex!important;flex-direction:column!important;
    height:100dvh!important;min-height:0!important;
    overflow:hidden!important;padding:3px 6px!important;gap:2px!important;
  }
  .participant>.topbar{flex:0 0 auto!important;min-height:0!important;margin:0!important;padding:0 0 2px!important}
  .participant>.monitor-shell,
  .participant>.monitor-shell:fullscreen,
  .participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces){
    display:flex!important;flex-direction:column!important;
    flex:1 1 0!important;height:0!important;min-height:0!important;
    max-height:none!important;overflow:hidden!important;
  }
  .participant .monitor-shell>.monitor,
  .participant .monitor-shell:fullscreen>.monitor,
  .participant .monitor-shell>.monitor.has-ctg.ctg-extra-traces{
    display:grid!important;flex:1 1 0!important;
    height:0!important;min-height:0!important;max-height:none!important;
    grid-template-rows:minmax(0,1fr) minmax(0,57px)!important;
    align-content:stretch!important;overflow:hidden!important;
  }
  .participant .monitor .waveforms,
  .participant .monitor .vitals,
  .participant .monitor.has-ctg.ctg-extra-traces .waveforms,
  .participant .monitor.has-ctg.ctg-extra-traces .vitals{
    grid-row:1!important;height:100%!important;min-height:0!important;
    max-height:none!important;overflow:hidden!important;align-content:stretch!important;
    grid-template-rows:var(--simobs-landscape-rows)!important;
  }
  .participant .monitor .waveforms>.wave,
  .participant .monitor .vitals>.vital,
  .participant .monitor.has-ctg.ctg-extra-traces .waveforms>.wave,
  .participant .monitor.has-ctg.ctg-extra-traces .vitals>.vital{
    min-height:0!important;height:auto!important;overflow:hidden!important;
  }
  .participant .monitor .waveforms>.wave>canvas{height:100%!important;min-height:0!important}
  .participant .monitor .numeric-strip:not([hidden]),
  .participant .monitor.has-ctg.ctg-extra-traces .numeric-strip:not([hidden]){
    grid-row:2!important;grid-column:1/-1!important;display:flex!important;
    flex-wrap:nowrap!important;min-height:0!important;height:57px!important;
    max-height:57px!important;overflow:hidden!important;z-index:1!important;
  }
  .participant .monitor .numeric-strip .vital{
    min-height:0!important;min-width:0!important;flex:1 1 0!important;
    padding:2px 7px!important;overflow:hidden!important;
  }
  .participant .monitor .numeric-strip .vital small{font-size:clamp(7px,1.4vh,10px)!important;line-height:1.1!important}
  .participant .monitor .numeric-strip .vital strong{font-size:clamp(15px,4.2vh,27px)!important;line-height:1!important}
  .participant .monitor .vitals .vital{padding:1px 4px!important}
  .participant .monitor .vitals .vital small{font-size:clamp(6px,1.25vh,9px)!important}
  .participant .monitor .vitals .vital strong{font-size:clamp(12px,4.1vh,26px)!important;line-height:1!important}
  .participant .monitor .wave label{top:1px!important;left:3px!important;font-size:8px!important;padding:1px 2px!important}
  .participant .monitor .ctg-wave>label{background:#f8f9f0!important;color:#2b4e2a!important}
  .participant .monitor .ctg-traces{grid-template-rows:minmax(0,2.3fr) minmax(0,1fr)!important}
  .participant .monitor-shell>.monitor-footer{
    flex:0 0 auto!important;position:relative!important;min-height:0!important;
    max-height:44px!important;overflow:auto!important;
  }
}

/* v0.8.15: phone bedside landscape readings must fit their shallow rows. */
@media (orientation:landscape) and (pointer:coarse) and (max-height:600px) and (max-width:1100px){
 .participant .monitor .vitals .vital strong{line-height:.94!important;letter-spacing:-.03em!important}
 .participant .monitor .numeric-strip .vital strong{line-height:.94!important;letter-spacing:-.025em!important}
 .participant .monitor .vital{justify-content:center!important}
 .participant .monitor .vital small{line-height:1!important;margin:0!important}
 .participant .monitor .numeric-strip .vital{padding:1px 5px!important}
}


/* v0.8.16: CTG + multiple waveforms on a phone in landscape.
   Preserve the single-screen bedside layout, but prevent the CTG paper from
   consuming the space needed to draw a complete capnogram/pleth. */
@media (orientation:landscape) and (pointer:coarse) and (max-height:600px) and (max-width:1100px){
 .participant:has(.monitor.has-ctg.ctg-extra-traces){display:flex!important;flex-direction:column!important;height:100dvh!important;min-height:0!important;overflow:hidden!important;gap:0!important;padding:2px 4px!important}
 .participant:has(.monitor.has-ctg.ctg-extra-traces)>.topbar{
   max-height:29px!important;min-height:0!important;overflow:hidden!important;
   padding:0!important;margin:0!important;align-items:center!important
 }
 .participant:has(.monitor.has-ctg.ctg-extra-traces) .topbar .badge{font-size:7px!important}
 .participant:has(.monitor.has-ctg.ctg-extra-traces) .topbar h1{font-size:12px!important;line-height:1!important}
 .participant:has(.monitor.has-ctg.ctg-extra-traces) .topbar .brandmark{font-size:15px!important}
 .participant:has(.monitor.has-ctg.ctg-extra-traces) .topbar .subheading{font-size:10px!important}
 .participant .monitor-shell>.monitor.has-ctg.ctg-extra-traces{
   grid-template-rows:minmax(0,1fr) minmax(0,46px)!important;
   border-width:2px!important
 }
 .participant .monitor.has-ctg.ctg-extra-traces .waveforms,
 .participant .monitor.has-ctg.ctg-extra-traces .vitals{
   min-height:0!important;height:100%!important;
   grid-template-rows:var(--simobs-landscape-rows)!important
 }
 .participant .monitor.has-ctg.ctg-extra-traces .waveforms>.wave,
 .participant .monitor.has-ctg.ctg-extra-traces .vitals>.vital{
   min-height:0!important;height:auto!important;overflow:hidden!important
 }
 .participant .monitor.has-ctg.ctg-extra-traces .waveforms>.wave:not(.ctg-wave)>canvas{
   display:block!important;width:100%!important;height:100%!important;min-height:0!important
 }
 .participant .monitor.has-ctg.ctg-extra-traces .numeric-strip:not([hidden]){
   grid-row:2!important;height:46px!important;max-height:46px!important;min-height:0!important
 }
 .participant .monitor.has-ctg.ctg-extra-traces .numeric-strip .vital{padding:0 5px!important}
 .participant .monitor.has-ctg.ctg-extra-traces .numeric-strip .vital strong{font-size:clamp(12px,3.4vh,20px)!important}
 .participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces)>.monitor-footer{
   flex:0 0 auto!important;max-height:32px!important;min-height:0!important;
   overflow-x:auto!important;overflow-y:hidden!important;padding:1px 4px!important;
   gap:2px!important
 }
 .participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces)>.monitor-footer button{
   padding:2px 4px!important;min-height:21px!important;font-size:9px!important
 }
 .participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces) .wave label{
   font-size:8px!important;top:1px!important;left:3px!important;pointer-events:none
 }
}
@media (orientation:landscape) and (pointer:coarse) and (max-height:600px) and (max-width:1100px){
 .participant .monitor-shell:has(.monitor.has-ctg.ctg-extra-traces)>.monitor.has-ctg.ctg-extra-traces{
   flex:1 1 0!important;height:0!important;min-height:0!important;max-height:none!important;
 }
}


/* v0.8.17 - bedside phone landscape: constrain the entire layout to the
   visible viewport, not a browser's full screen or minimum monitor height.
   This final override intentionally supersedes legacy CTG fixed-height rules. */
@media (orientation:landscape) and (pointer:coarse) and (max-width:1100px) and (max-height:600px){
 html,body,#app{height:100%!important;min-height:0!important;overflow:hidden!important}
 #app>.participant:has(.monitor){
  position:fixed!important;inset:0!important;width:100%!important;
  height:100dvh!important;max-height:100dvh!important;
  padding:2px max(3px,env(safe-area-inset-right)) 2px max(3px,env(safe-area-inset-left))!important;
  display:flex!important;flex-direction:column!important;gap:0!important;
  overflow:hidden!important;box-sizing:border-box!important;
 }
 #app>.participant>.topbar{
  flex:0 0 21px!important;min-height:21px!important;max-height:21px!important;
  height:21px!important;overflow:hidden!important;padding:0 3px!important;margin:0!important;
 }
 #app>.participant>.topbar .badge{font-size:6px!important;line-height:8px!important}
 #app>.participant>.topbar h1,#app>.participant>.topbar .brandmark{font-size:12px!important;line-height:12px!important}
 #app>.participant>.topbar .subheading{font-size:9px!important}
 #app>.participant>.monitor-shell{
  flex:1 1 0!important;min-height:0!important;max-height:none!important;height:0!important;
  display:flex!important;flex-direction:column!important;gap:0!important;
  overflow:hidden!important;
 }
 #app>.participant>.monitor-shell>.monitor{
  flex:1 1 0!important;min-height:0!important;max-height:none!important;height:0!important;
  display:grid!important;grid-template-rows:minmax(0,1fr) 43px!important;
  grid-template-columns:minmax(0,1fr) clamp(92px,19%,140px)!important;
  overflow:hidden!important;border-width:2px!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms,
 #app>.participant>.monitor-shell>.monitor>.vitals{
  height:100%!important;min-height:0!important;max-height:100%!important;
  display:grid!important;grid-row:1!important;overflow:hidden!important;
  grid-template-rows:var(--simobs-landscape-rows)!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms>.wave,
 #app>.participant>.monitor-shell>.monitor>.vitals>.vital{
  min-height:0!important;max-height:none!important;height:auto!important;
  overflow:hidden!important;align-self:stretch!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms>.wave:not(.ctg-wave)>canvas{
  display:block!important;width:100%!important;height:100%!important;min-height:0!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms>.ctg-wave>.ctg-traces{
  display:grid!important;min-height:0!important;max-height:100%!important;height:auto!important;
  grid-template-rows:minmax(0,2fr) minmax(0,1fr)!important;
 }
 #app>.participant>.monitor-shell>.monitor>.numeric-strip:not([hidden]){
  display:flex!important;grid-row:2!important;grid-column:1/-1!important;
  height:43px!important;min-height:0!important;max-height:43px!important;
  flex-wrap:nowrap!important;overflow:hidden!important;
 }
 #app>.participant>.monitor-shell>.monitor>.numeric-strip>.vital{
  flex:1 1 0!important;min-height:0!important;max-height:43px!important;
  overflow:hidden!important;padding:1px 5px!important;
 }
 #app>.participant>.monitor-shell>.monitor>.numeric-strip .vital strong{
  font-size:clamp(12px,3.7vh,20px)!important;line-height:1!important;
 }
 #app>.participant>.monitor-shell>.monitor>.vitals .vital strong{
  font-size:clamp(11px,3.6vh,22px)!important;line-height:1!important;
 }
 #app>.participant>.monitor-shell>.monitor .wave>label{font-size:7px!important;top:1px!important;left:3px!important;padding:1px 2px!important}
 #app>.participant>.monitor-shell>.monitor-footer{
  flex:0 0 27px!important;height:27px!important;min-height:27px!important;max-height:27px!important;
  position:relative!important;overflow-x:auto!important;overflow-y:hidden!important;
  padding:1px 3px!important;gap:2px!important;
 }
 #app>.participant>.monitor-shell>.monitor-footer button{
  padding:1px 4px!important;min-height:20px!important;font-size:9px!important;
 }
 #app>.participant>.monitor-shell>.monitor-footer .console-status{min-height:0!important;padding:0 3px!important}
 /* Proportionally reserve space for the final waveform when CTG is combined
    with ECG, pleth and capno; don't let CTG consume it. */
 #app>.participant>.monitor-shell>.monitor.has-ctg.ctg-extra-traces>.waveforms,
 #app>.participant>.monitor-shell>.monitor.has-ctg.ctg-extra-traces>.vitals{
  grid-template-rows:var(--simobs-landscape-rows)!important;
 }
}


/* v0.8.18: one consistent bedside phone landscape layout for ALL monitor presets.
   Prior forced viewport clipping made ETCO2 and other channels vanish after rotation.
   Compute row heights from the current modules and available visual viewport.
   If channels exceed the height, the page scrolls; none are hidden. */
@media (orientation:landscape) and (max-width:1100px) and (max-height:600px){
 html,body,#app{height:auto!important;min-height:100%!important;overflow-x:hidden!important;overflow-y:auto!important}
 #app>.participant:has(.monitor){
   position:relative!important;inset:auto!important;
   display:flex!important;flex-direction:column!important;
   height:auto!important;min-height:100dvh!important;max-height:none!important;
   overflow:visible!important;padding:3px 5px!important;gap:2px!important;
 }
 #app>.participant>.topbar{height:22px!important;min-height:22px!important;max-height:none!important;flex:0 0 auto!important;overflow:visible!important}
 #app>.participant>.monitor-shell{
   display:flex!important;flex-direction:column!important;flex:0 0 auto!important;
   height:auto!important;min-height:0!important;max-height:none!important;
   overflow:visible!important;
 }
 #app>.participant>.monitor-shell>.monitor{
   display:grid!important;flex:0 0 auto!important;
   height:calc(var(--simobs-phone-waves-height,190px) + 44px)!important;
   min-height:0!important;max-height:none!important;overflow:hidden!important;
   grid-template-rows:var(--simobs-phone-waves-height,190px) 44px!important;
   grid-template-columns:minmax(0,1fr) clamp(92px,19%,140px)!important;
   border-width:2px!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms,
 #app>.participant>.monitor-shell>.monitor>.vitals{
   display:grid!important;grid-row:1!important;height:var(--simobs-phone-waves-height,190px)!important;
   min-height:0!important;max-height:none!important;overflow:hidden!important;
   grid-template-rows:var(--simobs-phone-rows,minmax(0,1fr))!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms>.wave,
 #app>.participant>.monitor-shell>.monitor>.vitals>.vital{
   height:auto!important;min-height:0!important;max-height:none!important;
   overflow:hidden!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms>.wave>canvas{
   display:block!important;width:100%!important;height:100%!important;min-height:0!important;
 }
 #app>.participant>.monitor-shell>.monitor>.waveforms>.ctg-wave>.ctg-traces{
   height:100%!important;min-height:0!important;
   grid-template-rows:minmax(0,2fr) minmax(0,1fr)!important;
 }
 #app>.participant>.monitor-shell>.monitor>.numeric-strip:not([hidden]){
   grid-row:2!important;grid-column:1/-1!important;height:44px!important;
   min-height:44px!important;max-height:44px!important;overflow:hidden!important;
 }
 #app>.participant>.monitor-shell>.monitor-footer{
   flex:0 0 auto!important;height:auto!important;min-height:26px!important;max-height:none!important;
   overflow-x:auto!important;overflow-y:hidden!important;
 }
 #app>.participant>.monitor-shell>.monitor>.vitals .vital strong{font-size:clamp(11px,3.4vh,22px)!important}
 #app>.participant>.monitor-shell>.monitor>.numeric-strip .vital strong{font-size:clamp(12px,3.6vh,22px)!important}
}


/* v0.8.19: non-CTG, multi-trace monitors (Critical Care and any custom
   4+ waveform preset). Never squeeze all traces into a three-row viewport.
   The waveform stack has explicit rows; numeric readings follow underneath. */
.monitor.multi-trace-monitor,
.participant .monitor.multi-trace-monitor,
.layout .faculty-workstation .monitor-shell:not(:fullscreen)>.monitor.multi-trace-monitor{
  height:auto!important;min-height:0!important;max-height:none!important;
  grid-template-rows:var(--simobs-regular-wave-height) auto!important;
  align-content:start!important;overflow:hidden!important;
}
.monitor.multi-trace-monitor>.waveforms,
.monitor.multi-trace-monitor>.vitals,
.layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.multi-trace-monitor>.waveforms,
.layout .faculty-workstation .monitor-shell:not(:fullscreen) .monitor.multi-trace-monitor>.vitals{
  height:var(--simobs-regular-wave-height)!important;
  min-height:var(--simobs-regular-wave-height)!important;
  max-height:none!important;
  grid-template-rows:var(--simobs-regular-fixed-rows)!important;
  overflow:hidden!important;
}
.monitor.multi-trace-monitor .waveforms>.wave,
.monitor.multi-trace-monitor .vitals>.vital{min-height:0!important;overflow:hidden!important;}
.monitor.multi-trace-monitor>.numeric-strip{grid-row:2!important;grid-column:1/-1!important;max-height:none!important;}
.participant:has(.monitor.multi-trace-monitor),
.participant .monitor-shell:has(.monitor.multi-trace-monitor){
  height:auto!important;min-height:0!important;max-height:none!important;
  overflow:visible!important;
}
.participant .monitor-shell:has(.monitor.multi-trace-monitor)>.monitor{flex:none!important;}
/* The phone landscape code calculates --simobs-phone-rows (>=120 px per
   additional waveform). It must override desktop sizing here, with scrolling. */
@media (orientation:landscape) and (max-width:1100px) and (max-height:600px){
 #app>.participant>.monitor-shell>.monitor.multi-trace-monitor{
   height:calc(var(--simobs-phone-waves-height) + 44px)!important;
   grid-template-rows:var(--simobs-phone-waves-height) 44px!important;
 }
 #app>.participant>.monitor-shell>.monitor.multi-trace-monitor>.waveforms,
 #app>.participant>.monitor-shell>.monitor.multi-trace-monitor>.vitals{
   height:var(--simobs-phone-waves-height)!important;
   min-height:var(--simobs-phone-waves-height)!important;
   grid-template-rows:var(--simobs-phone-rows)!important;
 }
 #app>.participant:has(.monitor.multi-trace-monitor){overflow-y:auto!important;}
}


/* v0.8.20: desktop bedside rows must NOT shrink with preset/channel count.
   Standard (3 traces) and Critical Care (5 traces) render equal-height ordinary
   channels.  Rather than squeezing inside the viewport, let the page scroll.
   Narrow/phone landscape and CTG-specific rules are intentionally untouched. */
@media (min-width:1101px) and (min-height:601px){
 #app>.participant:has(.monitor:not(.has-ctg)){
   height:auto!important;min-height:100dvh!important;max-height:none!important;
   overflow:visible!important;display:flex!important;flex-direction:column!important;
 }
 #app>.participant>.monitor-shell:has(>.monitor:not(.has-ctg)){
   flex:0 0 auto!important;height:auto!important;min-height:0!important;
   max-height:none!important;overflow:visible!important;display:flex!important;flex-direction:column!important;
 }
 #app>.participant>.monitor-shell>.monitor:not(.has-ctg){
   flex:none!important;height:auto!important;min-height:0!important;max-height:none!important;
   display:grid!important;align-content:start!important;overflow:hidden!important;
   grid-template-rows:var(--simobs-desktop-wave-height) auto!important;
 }
 #app>.participant>.monitor-shell>.monitor:not(.has-ctg)>.waveforms,
 #app>.participant>.monitor-shell>.monitor:not(.has-ctg)>.vitals{
   grid-row:1!important;display:grid!important;
   height:var(--simobs-desktop-wave-height)!important;
   min-height:var(--simobs-desktop-wave-height)!important;
   max-height:none!important;overflow:hidden!important;
   grid-template-rows:var(--simobs-desktop-fixed-rows)!important;
 }
 #app>.participant>.monitor-shell>.monitor:not(.has-ctg)>.waveforms>.wave,
 #app>.participant>.monitor-shell>.monitor:not(.has-ctg)>.vitals>.vital{
   height:205px!important;min-height:205px!important;max-height:205px!important;overflow:hidden!important;
 }
 #app>.participant>.monitor-shell>.monitor:not(.has-ctg)>.numeric-strip{
   grid-row:2!important;grid-column:1/-1!important;max-height:none!important;
 }
}


/* v0.8.21 — bedside monitor MUST remain one-screen; overrides old fixed-205px,
   fixed CTG and mobile scroll-based layout approaches. Faculty unaffected. */
html:has(#app > .participant),
body:has(#app > .participant),
body:has(#app > .participant) #app{
 height:100%!important;min-height:0!important;max-height:100%!important;
 overflow:hidden!important;
}
#app > .participant:has(.monitor){
 position:relative!important;inset:auto!important;box-sizing:border-box!important;
 display:flex!important;flex-direction:column!important;
 height:100dvh!important;min-height:0!important;max-height:100dvh!important;
 width:100%!important;overflow:hidden!important;
 padding:clamp(2px,.5vh,8px)!important;gap:clamp(2px,.5vh,6px)!important;
}
#app > .participant > .topbar{
 flex:0 0 auto!important;min-height:0!important;height:auto!important;
 max-height:clamp(20px,8dvh,54px)!important;overflow:hidden!important;
 padding:0 2px!important;margin:0!important;
}
#app > .participant > .monitor-shell{
 position:relative!important;display:flex!important;flex-direction:column!important;
 flex:1 1 0!important;height:0!important;min-height:0!important;max-height:none!important;
 overflow:hidden!important;
}
#app > .participant > .monitor-shell > .monitor{
 box-sizing:border-box!important;display:grid!important;flex:1 1 0!important;
 height:0!important;min-height:0!important;max-height:none!important;
 align-content:stretch!important;overflow:hidden!important;
 grid-template-rows:minmax(0,1fr) clamp(40px,11dvh,92px)!important;
}
#app > .participant > .monitor-shell > .monitor > .waveforms,
#app > .participant > .monitor-shell > .monitor > .vitals{
 box-sizing:border-box!important;display:grid!important;grid-row:1!important;
 height:100%!important;min-height:0!important;max-height:100%!important;
 overflow:hidden!important;
 grid-template-rows:var(--simobs-screen-fit-rows,minmax(0,1fr))!important;
}
#app > .participant > .monitor-shell > .monitor > .waveforms{grid-column:1!important}
#app > .participant > .monitor-shell > .monitor > .vitals{grid-column:2!important}
#app > .participant > .monitor-shell > .monitor > .waveforms > .wave,
#app > .participant > .monitor-shell > .monitor > .vitals > .vital{
 height:auto!important;min-height:0!important;max-height:none!important;
 margin:0!important;overflow:hidden!important;align-self:stretch!important;
}
#app > .participant > .monitor-shell > .monitor > .waveforms > .wave > canvas{
 width:100%!important;height:100%!important;min-height:0!important;display:block!important;
}
#app > .participant > .monitor-shell > .monitor > .waveforms > .ctg-wave > .ctg-traces{
 height:100%!important;min-height:0!important;max-height:100%!important;
 grid-template-rows:minmax(0,2.4fr) minmax(0,1fr)!important;
}
#app > .participant > .monitor-shell > .monitor > .numeric-strip:not([hidden]){
 box-sizing:border-box!important;display:flex!important;grid-row:2!important;grid-column:1/-1!important;
 height:100%!important;min-height:0!important;max-height:100%!important;
 overflow:hidden!important;flex-wrap:nowrap!important;align-items:stretch!important;
}
#app > .participant > .monitor-shell > .monitor > .numeric-strip > .vital{
 min-width:0!important;max-width:none!important;min-height:0!important;max-height:100%!important;
 flex:1 1 0!important;overflow:hidden!important;padding:2px 6px!important;
}
#app > .participant > .monitor-shell > .monitor-footer{
 flex:0 0 auto!important;height:auto!important;min-height:0!important;
 max-height:clamp(27px,10dvh,68px)!important;overflow-x:auto!important;overflow-y:hidden!important;
 padding:2px 5px!important;gap:3px!important;
}
#app > .participant > .monitor-shell > .monitor .vital strong{
 max-width:100%!important;font-size:clamp(11px, min(3.7vw,4.4dvh), 56px)!important;
 line-height:1!important;white-space:nowrap!important;
}
#app > .participant > .monitor-shell > .monitor .vital small{font-size:clamp(7px,1.2dvh,11px)!important}
@media (orientation:landscape) and (max-height:600px){
 #app > .participant > .monitor-shell > .monitor{
  grid-template-rows:minmax(0,1fr) clamp(29px,12dvh,49px)!important;
 }
 #app > .participant > .monitor-shell > .monitor-footer{
  max-height:clamp(22px,9dvh,40px)!important;
 }
 #app > .participant > .monitor-shell > .monitor .vital strong{
  font-size:clamp(10px,min(2.8vw,5dvh),24px)!important;
 }
 #app > .participant > .monitor-shell > .monitor .wave > label{
  font-size:clamp(6px,1.5dvh,9px)!important;top:1px!important;left:3px!important;
 }
}


/* v0.8.22: One-screen contract for BOTH monitors. These rules deliberately
   supersede the accumulated fixed-height rules from v0.8.10–v0.8.20. */
#app > .participant:has(>.monitor-shell>.monitor),
#app > .participant:has(>.monitor-shell>.monitor) > .monitor-shell {
  min-height:0!important;max-height:none!important;overflow:hidden!important;
}
#app > .participant > .monitor-shell > .monitor,
#app > .participant > .monitor-shell > .monitor.multi-trace-monitor,
#app > .participant > .monitor-shell > .monitor.has-ctg {
  height:0!important;min-height:0!important;max-height:none!important;
  flex:1 1 0!important;align-content:stretch!important;
  grid-template-rows:minmax(0,1fr) clamp(36px,10dvh,82px)!important;
  overflow:hidden!important;
}
#app > .participant > .monitor-shell > .monitor > .waveforms,
#app > .participant > .monitor-shell > .monitor > .vitals,
#app > .participant > .monitor-shell > .monitor.multi-trace-monitor > .waveforms,
#app > .participant > .monitor-shell > .monitor.multi-trace-monitor > .vitals,
#app > .participant > .monitor-shell > .monitor.has-ctg > .waveforms,
#app > .participant > .monitor-shell > .monitor.has-ctg > .vitals {
  display:grid!important;height:100%!important;min-height:0!important;
  max-height:100%!important;grid-template-rows:var(--simobs-screen-fit-rows)!important;
  overflow:hidden!important;
}
#app > .participant > .monitor-shell > .monitor > .waveforms > .wave,
#app > .participant > .monitor-shell > .monitor > .vitals > .vital {
  height:auto!important;min-height:0!important;max-height:none!important;
  align-self:stretch!important;overflow:hidden!important;
}
#app > .participant > .monitor-shell > .monitor > .numeric-strip:not([hidden]) {
  grid-column:1/-1!important;grid-row:2!important;
  min-height:0!important;height:100%!important;max-height:100%!important;
  overflow:hidden!important;
}
#app > .participant > .monitor-shell > .monitor > .numeric-strip .vital {
  height:auto!important;min-height:0!important;max-height:100%!important;
  overflow:hidden!important;
}
/* The faculty workstation is a single bounded surface: preview left,
   observation controls right. Other faculty panels remain in their menu. */
@media(min-width:700px){
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback){
  display:grid!important;grid-template-columns:minmax(0,1fr) minmax(305px,1.05fr)!important;
  grid-template-rows:minmax(0,1fr)!important;align-items:stretch!important;
  height:calc(100dvh - 83px)!important;min-height:0!important;
  max-height:calc(100dvh - 83px)!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) > .monitor-section {
  height:100%!important;min-height:0!important;max-height:100%!important;
  overflow:hidden!important;display:flex!important;flex-direction:column!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell {
  height:0!important;flex:1 1 0!important;min-height:0!important;max-height:100%!important;
  display:flex!important;flex-direction:column!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor,
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor.has-ctg,
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor.multi-trace-monitor {
  flex:1 1 0!important;height:0!important;min-height:0!important;max-height:none!important;
  display:grid!important;grid-template-rows:minmax(0,1fr) clamp(40px,10dvh,75px)!important;
  align-content:stretch!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor > .waveforms,
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor > .vitals {
  display:grid!important;grid-row:1!important;height:100%!important;min-height:0!important;
  max-height:100%!important;overflow:hidden!important;
  grid-template-rows:var(--simobs-screen-fit-rows)!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor > .waveforms > .wave,
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor > .vitals > .vital {
  height:auto!important;min-height:0!important;max-height:none!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-shell > .monitor > .numeric-strip:not([hidden]) {
  grid-row:2!important;grid-column:1/-1!important;height:100%!important;
  min-height:0!important;max-height:100%!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) .monitor-footer.console-revised {
  flex:0 0 auto!important;max-height:clamp(38px,17dvh,108px)!important;
  overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen) > .faculty-observations-column {
  height:100%!important;min-height:0!important;max-height:100%!important;overflow-y:auto!important;
 }
}
/* Phone faculty monitor preview itself stays entirely on screen. The sliders
   remain underneath on narrow phones, since they cannot all fit beside it. */
@media(max-width:699px){
 #app .layout .faculty-workstation > .monitor-section > .monitor-shell {
  max-height:calc(100dvh - 48px)!important;min-height:0!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation .monitor-shell > .monitor,
 #app .layout .faculty-workstation .monitor-shell > .monitor.has-ctg,
 #app .layout .faculty-workstation .monitor-shell > .monitor.multi-trace-monitor {
  height:clamp(170px,46dvh,425px)!important;min-height:0!important;
  max-height:46dvh!important;display:grid!important;
  grid-template-rows:minmax(0,1fr) clamp(35px,9dvh,65px)!important;
  align-content:stretch!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation .monitor-shell > .monitor > .waveforms,
 #app .layout .faculty-workstation .monitor-shell > .monitor > .vitals {
  height:100%!important;min-height:0!important;max-height:100%!important;
  grid-template-rows:var(--simobs-screen-fit-rows)!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation .monitor-shell > .monitor > .waveforms > .wave,
 #app .layout .faculty-workstation .monitor-shell > .monitor > .vitals > .vital {
  height:auto!important;min-height:0!important;max-height:none!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation .monitor-shell > .monitor > .numeric-strip:not([hidden]) {
  grid-row:2!important;grid-column:1/-1!important;height:100%!important;
  min-height:0!important;max-height:100%!important;overflow:hidden!important;
 }
}
/* In faculty fullscreen, use the same bounded rows as the bedside display. */
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) .monitor-shell > .monitor {
  height:0!important;flex:1 1 0!important;min-height:0!important;
  grid-template-rows:minmax(0,1fr) clamp(35px,10dvh,75px)!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) .monitor-shell > .monitor > .waveforms,
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) .monitor-shell > .monitor > .vitals {
  height:100%!important;min-height:0!important;
  grid-template-rows:var(--simobs-screen-fit-rows)!important;
}


/* v0.8.24: single authoritative one-viewport layout. The extra :not() ID
 specificity prevents old v0.8.19/20 overflow rules from reviving. */
#app > .participant:has(.monitor):not(#simobs-never-id){
 position:relative!important;inset:auto!important;display:flex!important;flex-direction:column!important;
 height:100dvh!important;min-height:0!important;max-height:100dvh!important;
 overflow:hidden!important;box-sizing:border-box!important;
}
#app > .participant:has(.monitor):not(#simobs-never-id) > .monitor-shell{
 display:flex!important;flex-direction:column!important;flex:1 1 0!important;
 height:0!important;min-height:0!important;max-height:none!important;overflow:hidden!important;
}
#app > .participant:has(.monitor):not(#simobs-never-id) > .monitor-shell > .monitor{
 display:grid!important;flex:1 1 0!important;height:0!important;min-height:0!important;max-height:none!important;
 grid-template-rows:minmax(0,1fr) clamp(36px,10dvh,80px)!important;
 align-content:stretch!important;overflow:hidden!important;
}
#app > .participant:has(.monitor):not(#simobs-never-id) > .monitor-shell > .monitor > .waveforms,
#app > .participant:has(.monitor):not(#simobs-never-id) > .monitor-shell > .monitor > .vitals{
 display:grid!important;height:100%!important;min-height:0!important;max-height:100%!important;
 grid-template-rows:var(--simobs-screen-fit-rows)!important;overflow:hidden!important;
}
#app > .participant:has(.monitor):not(#simobs-never-id) > .monitor-shell > .monitor > .waveforms > .wave,
#app > .participant:has(.monitor):not(#simobs-never-id) > .monitor-shell > .monitor > .vitals > .vital{
 height:auto!important;min-height:0!important;max-height:none!important;overflow:hidden!important;
}
#app > .participant:has(.monitor):not(#simobs-never-id) > .monitor-shell > .monitor-footer{
 flex:0 0 auto!important;min-height:0!important;max-height:clamp(25px,10dvh,68px)!important;
 overflow-x:auto!important;overflow-y:hidden!important;
}
/* Faculty waveform previews fit within their existing bounded workstation.
   Extra channels share that space while retaining the same trace data. */
#app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell > .monitor:not(#simobs-never-id){
 min-height:0!important;max-height:none!important;flex:1 1 0!important;height:0!important;
 grid-template-rows:minmax(0,1fr) clamp(40px,10dvh,75px)!important;
}
#app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell > .monitor:not(#simobs-never-id) > .waveforms,
#app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell > .monitor:not(#simobs-never-id) > .vitals{
 grid-template-rows:var(--simobs-screen-fit-rows)!important;height:100%!important;min-height:0!important;
}

/* v0.8.27 — Mobile portrait faculty preview: the previous workstation rule
   assigned height:0 to a monitor with no flex-sized parent, hiding all waves.
   Give the preview a definite, viewport-bounded flex container. */
@media (orientation:portrait) and (max-width:699px){
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback){
  display:block!important;height:auto!important;min-height:0!important;
  max-height:none!important;overflow:visible!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) > .monitor-section{
  display:flex!important;flex-direction:column!important;
  height:clamp(300px,65dvh,570px)!important;
  min-height:0!important;max-height:calc(100dvh - 70px)!important;
  overflow:hidden!important;box-sizing:border-box!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell{
  display:flex!important;flex-direction:column!important;
  height:0!important;flex:1 1 0!important;
  min-height:0!important;max-height:100%!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell > .monitor:not(#simobs-never-id){
  display:grid!important;flex:1 1 0!important;height:0!important;
  min-height:0!important;max-height:none!important;overflow:hidden!important;
  grid-template-rows:minmax(0,1fr) clamp(35px,9dvh,65px)!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell > .monitor > .waveforms,
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell > .monitor > .vitals{
  height:100%!important;min-height:0!important;
  grid-template-rows:var(--simobs-screen-fit-rows)!important;overflow:hidden!important;
 }
 #app .layout .faculty-workstation:not(:fullscreen):not(.faculty-fullscreen-fallback) .monitor-shell > .monitor-footer{
  flex:0 0 auto!important;max-height:clamp(50px,13dvh,110px)!important;
  overflow:hidden!important;
 }
}

/* v0.8.29 CTG paper faculty controls */
.ctg-paper-setup{margin:12px 0 16px;padding:12px;background:rgba(86,142,122,.10);border:1px solid rgba(125,171,145,.30);border-radius:10px}
.ctg-paper-title{font-size:13px;font-weight:700;margin-bottom:5px}
.ctg-paper-actions{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 7px}
.ctg-paper-actions>button{min-width:74px;min-height:34px;padding:7px 11px;white-space:nowrap}
#ctgPaperStatus{margin:5px 0 0}

/* v0.8.29 — CTG paper history setup, kept compact on faculty phones. */
.ctg-paper-setup{margin:12px 0 16px;padding:12px;border:1px solid rgba(135,185,170,.3);border-radius:10px;background:rgba(7,26,35,.48)}
.ctg-paper-title{font-weight:700;margin-bottom:4px}
.ctg-paper-actions{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0}
.ctg-paper-actions button{white-space:nowrap;min-height:34px;padding:6px 10px}
.ctg-paper-setup #ctgPaperStatus{margin:6px 0 0}
@media(max-width:480px){.ctg-paper-setup{padding:9px}.ctg-paper-actions button{font-size:12px;padding:5px 8px}}


/* v0.8.37: compact faculty CTG controls — display only, no physiology changes. */
#app .faculty-maternity-controls:not([hidden]){padding:6px 8px!important;margin:3px 0!important;min-width:0!important}
#app .faculty-maternity-controls>h3{margin:0 0 4px!important;padding:0!important;font-size:12px!important;line-height:1.3!important}
#app .faculty-maternity-controls .ctg-paper-setup{
 margin:0 0 6px!important;padding:0!important;background:transparent!important;border:0!important;border-radius:0!important;
}
#app .faculty-maternity-controls .ctg-paper-actions{display:flex!important;align-items:center!important;flex-wrap:wrap!important;gap:4px!important;margin:0!important}
#app .faculty-maternity-controls .ctg-paper-label{font-size:10px;font-weight:700;color:#8adce5;margin-right:3px}
#app .faculty-maternity-controls .ctg-paper-actions button{
 min-width:0!important;min-height:27px!important;padding:3px 8px!important;font-size:11px!important;line-height:1.25!important;border-radius:5px!important;
}
#app .faculty-maternity-controls #ctgPaperStatus{
 display:inline-block!important;flex:1 1 95px;margin:0 0 0 4px!important;padding:0!important;
 font-size:10px!important;line-height:1.2!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
#app .faculty-maternity-controls .ctg-control-fields{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 7px!important;min-width:0!important}
#app .faculty-maternity-controls .ctg-control-fields>.control{
 display:grid!important;grid-template-columns:minmax(0,1fr) 58px!important;
 grid-template-rows:18px 18px!important;align-items:center!important;gap:1px 5px!important;
 margin:0!important;padding:4px 6px!important;min-width:0!important;min-height:44px!important;
 border:1px solid #365363!important;border-radius:6px!important;
}
#app .faculty-maternity-controls .ctg-control-fields>.control>label{
 grid-column:1!important;grid-row:1!important;min-width:0!important;margin:0!important;padding:0!important;
 font-size:10px!important;line-height:1.2!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
#app .faculty-maternity-controls .ctg-control-fields>.control>input[type=number]{
 grid-column:2!important;grid-row:1!important;width:100%!important;min-width:0!important;height:24px!important;
 min-height:0!important;padding:2px 4px!important;font-size:11px!important;text-align:center!important;margin:0!important;
}
#app .faculty-maternity-controls .ctg-control-fields>.control>.ctg-live-slider{
 grid-column:1/-1!important;grid-row:2!important;width:100%!important;min-width:0!important;
 height:18px!important;min-height:18px!important;margin:0!important;padding:0!important;touch-action:none;
}
#app .faculty-maternity-controls .ctg-control-fields>.ctg-pattern-control{grid-column:1/-1!important;grid-template-columns:62px minmax(0,1fr)!important;grid-template-rows:27px!important;min-height:35px!important}
#app .faculty-maternity-controls .ctg-pattern-control>select{
 grid-column:2!important;grid-row:1!important;min-width:0!important;min-height:26px!important;height:26px!important;
 padding:2px 6px!important;margin:0!important;font-size:11px!important;
}
@media(max-width:380px){
 #app .faculty-maternity-controls .ctg-control-fields{grid-template-columns:1fr!important}
 #app .faculty-maternity-controls .ctg-control-fields>.control{min-height:42px!important}
}

/* v0.8.37: faculty fullscreen monitor must always get a nonzero flex height.
   Older fullscreen declarations set monitor height:0 without giving its
   parent a definite flex height; that collapses the wave area on PC. */
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback){
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(270px,1fr)!important;
  grid-template-rows:auto minmax(0,1fr)!important;
  height:100dvh!important;max-height:100dvh!important;min-height:0!important;
  align-items:stretch!important;overflow:hidden!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .faculty-fullscreen-timeline{
  grid-column:1/-1!important;grid-row:1!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .monitor-section{
  grid-column:1!important;grid-row:2!important;
  display:flex!important;flex-direction:column!important;
  height:100%!important;max-height:100%!important;min-height:0!important;
  overflow:hidden!important;margin:0!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .faculty-observations-column{
  grid-column:2!important;grid-row:2!important;
  height:100%!important;max-height:100%!important;min-height:0!important;
  overflow-y:auto!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .monitor-section > .monitor-shell{
  display:flex!important;flex-direction:column!important;
  flex:1 1 0!important;height:0!important;min-height:0!important;max-height:100%!important;
  overflow:hidden!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .monitor-section > .monitor-shell > .monitor{
  display:grid!important;flex:1 1 0!important;height:0!important;
  min-height:0!important;max-height:none!important;
  grid-template-rows:minmax(0,1fr) clamp(38px,10dvh,75px)!important;
  align-content:stretch!important;overflow:hidden!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .monitor-section > .monitor-shell > .monitor > .waveforms,
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .monitor-section > .monitor-shell > .monitor > .vitals{
  height:100%!important;min-height:0!important;max-height:100%!important;
  display:grid!important;grid-template-rows:var(--simobs-screen-fit-rows)!important;
  overflow:hidden!important;
}
#app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback) > .monitor-section > .monitor-shell > .monitor-footer{
  flex:0 0 auto!important;max-height:clamp(38px,17dvh,108px)!important;
  overflow:hidden!important;
}
@media(max-width:699px){
 #app .layout .faculty-workstation:is(:fullscreen,.faculty-fullscreen-fallback){grid-template-columns:minmax(0,1fr) minmax(175px,.8fr)!important;gap:5px!important}
}


/* v0.8.38 — compact floating participant Defib dock that keeps observations visible */
.participant .monitor-shell .integrated-console{position:relative;overflow:visible!important;}
.participant .defib-panel:not([hidden]){
  position:absolute!important;
  left:8px!important;
  bottom:calc(100% + 8px)!important;
  inset:auto auto calc(100% + 8px) 8px!important;
  z-index:2400!important;
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:8px!important;
  width:min(460px,calc(100vw - 24px))!important;
  max-width:min(460px,calc(100vw - 24px))!important;
  min-width:min(280px,calc(100vw - 24px))!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
  margin:0!important;
  padding:10px!important;
  border:1px solid #5d7987!important;
  border-radius:12px!important;
  background:linear-gradient(180deg,rgba(13,31,42,.98),rgba(7,18,26,.98))!important;
  box-shadow:0 14px 34px rgba(0,0,0,.45)!important;
  box-sizing:border-box!important;
}
.participant .defib-panel:not([hidden]) .defib-title{
  position:static!important;
  display:grid!important;
  grid-template-columns:auto 1fr auto!important;
  align-items:center!important;
  gap:8px!important;
  min-height:0!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  font-size:11px!important;
  letter-spacing:.08em!important;
}
.participant .defib-panel:not([hidden]) .defib-title strong{font-size:12px!important;color:#ffe2a7!important;}
.participant .defib-panel:not([hidden]) .defib-close{min-height:30px!important;padding:5px 9px!important;font-size:11px!important;}
.participant .defib-panel:not([hidden]) .defib-readout{
  margin:0!important;
  padding:8px 10px!important;
  gap:8px!important;
  align-items:center!important;
  background:#071118!important;
  border:1px solid #29424c!important;
}
.participant .defib-panel:not([hidden]) .defib-readout strong{font-size:24px!important;line-height:1!important;}
.participant .defib-panel:not([hidden]) .defib-charge-track{margin:0!important;height:10px!important;}
.participant .defib-panel:not([hidden]) .defib-actions{
  display:grid!important;
  grid-template-columns:minmax(96px,124px) repeat(3,minmax(0,1fr))!important;
  gap:8px!important;
  align-items:end!important;
}
.participant .defib-panel:not([hidden]) .defib-actions label{grid-column:auto!important;display:flex!important;flex-direction:column!important;gap:4px!important;min-width:0!important;}
.participant .defib-panel:not([hidden]) .defib-actions label select{width:100%!important;height:40px!important;min-height:40px!important;padding:6px!important;font-size:13px!important;}
.participant .defib-panel:not([hidden]) .defib-actions button{width:100%!important;min-width:0!important;min-height:40px!important;height:40px!important;padding:6px 8px!important;font-size:12px!important;}
.participant .defib-panel:not([hidden]) .defib-warning{display:none!important;}
@media (max-width:640px){
  .participant .defib-panel:not([hidden]){
    left:6px!important;
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    min-width:0!important;
    bottom:calc(100% + 6px)!important;
    inset:auto auto calc(100% + 6px) 6px!important;
    padding:8px!important;
  }
  .participant .defib-panel:not([hidden]) .defib-title{grid-template-columns:auto 1fr auto!important;gap:6px!important;}
  .participant .defib-panel:not([hidden]) .defib-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .participant .defib-panel:not([hidden]) .defib-actions label{grid-column:1 / -1!important;}
}
.monitor-shell:fullscreen .participant .defib-panel:not([hidden]){}


/* v0.8.40: keep the active Defib dock outside the clipped footer.
   Overlay only: does not consume monitor layout space or scale waveform rows. */
#app .participant .monitor-shell > .defib-panel:not([hidden]),
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]){
  position:fixed!important;
  inset:auto max(10px,env(safe-area-inset-right,0px)) calc(clamp(42px,9dvh,76px) + env(safe-area-inset-bottom,0px)) auto!important;
  display:grid!important;
  width:min(460px,calc(100vw - 20px))!important;
  max-width:min(460px,calc(100vw - 20px))!important;
  min-width:0!important;
  height:auto!important;
  max-height:min(250px,calc(100dvh - 74px))!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  visibility:visible!important;
  opacity:1!important;
  z-index:2147483000!important;
  border:1px solid #5d7987!important;
  border-radius:12px!important;
  padding:10px!important;
  background:linear-gradient(180deg,#102a39 0%,#071923 100%)!important;
  box-shadow:0 14px 34px rgba(0,0,0,.52)!important;
}
#app .participant .monitor-shell > .defib-panel[hidden]{display:none!important;}
@media (orientation:landscape) and (max-height:520px){
 #app .participant .monitor-shell > .defib-panel:not([hidden]){
  max-height:calc(100dvh - 50px)!important;
  bottom:46px!important;
  padding:7px!important;
  gap:5px!important;
 }
 #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout{padding:4px 7px!important;}
 #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions label select,
 #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions button{height:36px!important;min-height:36px!important;}
}


/* v0.8.41 — polished participant Defib dock inspired by tablet console layout.
   Keeps observations visible and does not consume monitor layout space. */
#app .participant .monitor-shell > .defib-panel:not([hidden]),
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]){
  position:fixed!important;
  left:50%!important;
  right:auto!important;
  transform:translateX(-50%)!important;
  inset:auto auto calc(clamp(42px,9dvh,76px) + env(safe-area-inset-bottom,0px)) 50%!important;
  display:grid!important;
  grid-template-columns:minmax(150px,190px) minmax(0,1fr)!important;
  grid-template-areas:
    "head head"
    "energy controls"
    "track controls"!important;
  align-items:stretch!important;
  gap:10px!important;
  width:min(760px,calc(100vw - 24px))!important;
  max-width:min(760px,calc(100vw - 24px))!important;
  min-width:min(320px,calc(100vw - 24px))!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
  padding:12px!important;
  border:1px solid #507385!important;
  border-radius:16px!important;
  background:
    radial-gradient(circle at top left, rgba(66,130,165,.18), transparent 32%),
    linear-gradient(180deg, rgba(17,42,57,.98) 0%, rgba(8,24,34,.98) 100%)!important;
  box-shadow:0 18px 44px rgba(0,0,0,.56)!important;
  backdrop-filter:blur(8px)!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-title,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-title{
  grid-area:head!important;
  display:grid!important;
  grid-template-columns:auto 1fr auto!important;
  align-items:center!important;
  gap:10px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  background:transparent!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-title strong,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-title strong{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:34px!important;
  padding:0 12px!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,#34586d,#1c3747)!important;
  border:1px solid #6890a6!important;
  color:#eaf7ff!important;
  font-size:12px!important;
  letter-spacing:.12em!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) #defibStatus,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) #defibStatus{
  justify-self:start!important;
  display:inline-flex!important;
  align-items:center!important;
  min-height:34px!important;
  padding:0 12px!important;
  border-radius:999px!important;
  background:rgba(10,21,30,.78)!important;
  border:1px solid #365161!important;
  color:#d9ecf5!important;
  font-size:12px!important;
  font-weight:700!important;
  letter-spacing:.02em!important;
  margin-left:0!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-close,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-close{
  min-height:34px!important;
  padding:6px 12px!important;
  border-radius:10px!important;
  border:1px solid #526f7d!important;
  background:linear-gradient(180deg,#243b4a,#172a36)!important;
  color:#edf7ff!important;
  font-size:12px!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-readout{
  grid-area:energy!important;
  margin:0!important;
  min-height:112px!important;
  padding:14px 16px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  justify-content:center!important;
  gap:8px!important;
  border-radius:14px!important;
  background:linear-gradient(180deg, rgba(10,20,30,.95), rgba(6,14,22,.95))!important;
  border:1px solid #324f5d!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04)!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout span,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-readout span{
  color:#a8c5d3!important;
  font-size:11px!important;
  font-weight:700!important;
  letter-spacing:.11em!important;
  text-transform:uppercase!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout strong,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-readout strong{
  font-size:42px!important;
  line-height:1!important;
  color:#f2f7fb!important;
  font-variant-numeric:tabular-nums!important;
  text-shadow:0 0 18px rgba(96,204,255,.08)!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-charge-track,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-charge-track{
  grid-area:track!important;
  margin:0!important;
  height:14px!important;
  border-radius:999px!important;
  background:#223542!important;
  border:1px solid #466070!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-charge-progress,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-charge-progress{
  background:linear-gradient(90deg,#39b0ff,#8ee6ff 55%,#f3e67a)!important;
  box-shadow:0 0 18px rgba(123,213,255,.45)!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions{
  grid-area:controls!important;
  display:grid!important;
  grid-template-columns:minmax(130px,160px) repeat(3,minmax(0,1fr))!important;
  gap:10px!important;
  align-items:stretch!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions label,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions label{
  display:flex!important;
  flex-direction:column!important;
  gap:5px!important;
  min-width:0!important;
  color:#b7d0db!important;
  font-size:11px!important;
  font-weight:700!important;
  letter-spacing:.04em!important;
  text-transform:uppercase!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions label select,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions label select{
  width:100%!important;
  height:52px!important;
  min-height:52px!important;
  border-radius:12px!important;
  padding:0 12px!important;
  font-size:16px!important;
  font-weight:800!important;
  border:1px solid #5a7b8d!important;
  background:linear-gradient(180deg,#173040,#0f2230)!important;
  color:#eef8ff!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions button,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions button{
  width:100%!important;
  min-width:0!important;
  min-height:52px!important;
  height:52px!important;
  padding:10px 12px!important;
  border-radius:12px!important;
  font-size:15px!important;
  font-weight:800!important;
  letter-spacing:.04em!important;
  text-transform:none!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) #defibCharge,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) #defibCharge{
  background:linear-gradient(180deg,#f8c756,#dea033)!important;
  color:#182028!important;
  border-color:#f9df8e!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) #defibShock,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) #defibShock{
  background:linear-gradient(180deg,#ff6b59,#cf4639)!important;
  color:#fff!important;
  border-color:#ffb2a7!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) #defibDischarge,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) #defibDischarge{
  background:linear-gradient(180deg,#405768,#2a4050)!important;
  color:#eff7fb!important;
  border-color:#8299a7!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions button:disabled,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions button:disabled{
  opacity:.48!important;
}
#app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-warning,
#app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-warning{display:none!important;}
@media (max-width:900px){
  #app .participant .monitor-shell > .defib-panel:not([hidden]),
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]){
    width:min(640px,calc(100vw - 18px))!important;
    max-width:min(640px,calc(100vw - 18px))!important;
    grid-template-columns:170px minmax(0,1fr)!important;
  }
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions{
    grid-template-columns:minmax(120px,150px) repeat(3,minmax(0,1fr))!important;
    gap:8px!important;
  }
}
@media (max-width:700px){
  #app .participant .monitor-shell > .defib-panel:not([hidden]),
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]){
    left:50%!important;
    inset:auto auto calc(clamp(42px,9dvh,76px) + env(safe-area-inset-bottom,0px)) 50%!important;
    width:calc(100vw - 12px)!important;
    max-width:calc(100vw - 12px)!important;
    min-width:0!important;
    transform:translateX(-50%)!important;
    grid-template-columns:1fr!important;
    grid-template-areas:
      "head"
      "energy"
      "track"
      "controls"!important;
    gap:8px!important;
    padding:9px!important;
  }
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-readout{min-height:84px!important;padding:12px 14px!important;}
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout strong,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-readout strong{font-size:34px!important;}
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions label,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions label{grid-column:1/-1!important;}
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions button,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions button,
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions label select,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions label select{height:44px!important;min-height:44px!important;font-size:14px!important;}
}
@media (orientation:landscape) and (max-height:520px){
  #app .participant .monitor-shell > .defib-panel:not([hidden]),
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]){
    bottom:calc(36px + env(safe-area-inset-bottom,0px))!important;
    gap:6px!important;
    padding:7px!important;
  }
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-readout{min-height:70px!important;padding:10px 12px!important;}
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-readout strong,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-readout strong{font-size:30px!important;}
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions button,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions button,
  #app .participant .monitor-shell > .defib-panel:not([hidden]) .defib-actions label select,
  #app .participant .monitor-shell:fullscreen > .defib-panel:not([hidden]) .defib-actions label select{height:40px!important;min-height:40px!important;}
}

/* v0.8.43 — faculty touch-drag grip beside each preview number; tap number to type. */
#app .layout .monitor .vital{position:relative!important;}
#app .layout .monitor .vital .faculty-monitor-value-grip{
 position:absolute!important;right:3px!important;top:50%!important;transform:translateY(-50%)!important;
 z-index:20!important;width:26px!important;height:42px!important;min-width:26px!important;min-height:42px!important;
 display:grid!important;place-items:center!important;padding:0!important;
 color:#b6e8ef!important;background:#1c3d49d9!important;border:1px solid #517f8d!important;
 border-radius:7px!important;box-shadow:0 2px 8px #0006!important;
 font-size:20px!important;font-weight:750!important;line-height:1!important;
 touch-action:none!important;user-select:none!important;-webkit-user-select:none!important;
 cursor:ns-resize!important;overscroll-behavior:contain!important;
}
#app .layout .monitor .vital .faculty-monitor-value-grip:is(:hover,:focus-visible,.is-dragging){
 background:#277386!important;color:#fff!important;outline:2px solid #75dbed!important;outline-offset:1px!important;
}
#app .layout .monitor .vital .faculty-monitor-edit-value{cursor:pointer!important;touch-action:manipulation!important;}
#app .participant .faculty-monitor-value-grip{display:none!important;}
@media (pointer:coarse){#app .layout .monitor .vital .faculty-monitor-value-grip{width:31px!important;min-width:31px!important;height:48px!important;min-height:48px!important;}}

/* v0.8.58 — full arterial SYS/DIA stays legible in compact faculty previews. */
.layout .monitor .vitals .vital:has(#val-art){min-width:0!important;padding-right:34px!important;overflow:hidden!important;}
.layout .monitor .vitals .vital #val-art{display:block!important;max-width:100%!important;white-space:nowrap!important;overflow:visible!important;letter-spacing:-.045em!important;font-variant-numeric:tabular-nums!important;}
.layout .monitor .vitals .vital .art-map{display:block!important;font-size:9px!important;line-height:1.1!important;color:#9fc0cc!important;letter-spacing:0!important;}
@media(max-width:850px){.layout .monitor .vitals .vital #val-art{font-size:clamp(13px,2.3vw,22px)!important;}}
