/* NOVU Hx V65 — canonical Patient Medical Record Model 1 surface.
   This file is the sole owner of the full-screen Patient Record layout. */
.novu-record-host{position:fixed;inset:0;z-index:15000;background:#edf3f7;display:block;overflow:hidden;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#10243b;isolation:isolate}
.novu-record-host[hidden]{display:none}
html.novu-record-open,html.novu-record-open body{overflow:hidden}
.novu-record-window{position:absolute;inset:0;background:#fff;display:grid;grid-template-rows:34px minmax(0,1fr);box-shadow:0 18px 60px rgba(20,52,80,.18);transition:inset .18s ease,border-radius .18s ease;overflow:hidden}
.novu-record-window.is-restored{inset:3.5vh 3vw;border:1px solid #cbd9e3;border-radius:12px}.novu-record-window.is-minimized{display:none}
.novu-windowbar{height:34px;display:flex;align-items:center;background:#f7fafc;border-bottom:1px solid #dce6ed;user-select:none;position:relative;z-index:10}.novu-window-title{padding-left:12px;font-size:11px;font-weight:750;letter-spacing:.2px;flex:1;color:#40566b}.novu-window-controls{display:flex;height:100%}.novu-window-controls button{width:46px;border:0;background:transparent;font:14px/1 system-ui;color:#243b50;cursor:pointer}.novu-window-controls button:hover{background:#e5edf3}.novu-window-controls .close:hover{background:#d93636;color:#fff}
.novu-record-app{min-height:0;display:grid;grid-template-columns:190px minmax(0,1fr);background:#f4f8fb;overflow:hidden}.novu-record-sidebar{min-height:0;background:#0f2f4d;border-right:none;display:flex;flex-direction:column;padding:16px 12px}.novu-record-brand{display:flex;align-items:center;gap:8px;padding:2px 5px 16px;font-weight:850;color:#fff}.novu-record-brand img{width:26px;height:26px;object-fit:contain;border-radius:6px}.novu-record-nav{overflow:auto;flex:1}.novu-record-nav small{display:block;font-size:8.5px;font-weight:850;letter-spacing:.9px;color:#7fa3c4;margin:12px 7px 5px}.novu-record-nav button{width:100%;display:flex;align-items:center;gap:9px;min-height:32px;border:0;background:transparent;border-radius:8px;padding:0 9px;font-size:11px;font-weight:650;text-align:left;color:#cfe1f2;cursor:pointer;transition:transform .14s ease,background .14s ease,color .14s ease}.novu-record-nav button:hover{transform:translateX(2px);background:rgba(255,255,255,.08);color:#fff}.novu-record-nav button.active{background:#2478f3;color:#fff}.novu-record-user{border-top:1px solid rgba(255,255,255,.14);padding:11px 5px 0;font-size:9px;color:#a9c4db}.novu-record-user strong{display:block;color:#fff!important;-webkit-text-fill-color:#fff!important;margin-bottom:5px}.novu-record-user button{border:0;background:transparent;color:#7fc4ff;font-weight:800;font-size:9px;padding:0;cursor:pointer}
.novu-record-main{min-width:0;min-height:0;overflow:auto;padding:0 14px 16px;scrollbar-gutter:stable}
.novu-patient-header{position:sticky;top:0;z-index:6;background:rgba(244,248,251,.98);backdrop-filter:blur(8px);border-bottom:1px solid rgba(219,230,238,.78);padding:14px 0 12px;display:grid;grid-template-columns:minmax(440px,520px) minmax(0,1fr);gap:22px;align-items:center}
.novu-patient-identity-panel{display:grid;grid-template-columns:68px minmax(0,1fr);gap:16px;align-items:center;min-width:0}
.novu-patient-identity-panel .novu-patient-avatar-wrap{position:relative;width:58px;display:grid;justify-items:center}.novu-patient-avatar{position:relative;width:58px;height:58px;border:0;border-radius:50%;background:#d9eef4;display:grid;place-items:center;overflow:hidden;font-weight:850;color:#0c6672;box-shadow:0 4px 16px rgba(23,82,102,.12);cursor:pointer}.novu-patient-avatar img{width:100%;height:100%;object-fit:cover}.novu-avatar-presence{position:absolute;right:0;bottom:0;width:10px;height:10px;background:#20b579;border:2px solid #fff;border-radius:50%}
.novu-patient-copy{min-width:0}.novu-patient-copy h1{margin:0 0 3px;font-size:27px;line-height:1.05;color:#102a43}.novu-patient-mrn{font-size:11px;color:#587086;margin-bottom:8px}.novu-patient-details{display:grid;grid-template-columns:1fr;row-gap:4px;font-size:10.5px;line-height:1.35;color:#405a70}.novu-patient-details>span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.novu-patient-details b{display:inline-block;min-width:72px;color:#526b80;font-size:9px;letter-spacing:.35px;text-transform:uppercase}.novu-patient-details .novu-patient-lifecycle strong{display:inline-flex;align-items:center;gap:5px;color:#21734d;font-size:10px}.novu-patient-lifecycle i{width:7px;height:7px;border-radius:50%;background:#24a66a;box-shadow:0 0 0 3px rgba(36,166,106,.12)}.novu-patient-lifecycle.is-deceased strong{color:#566573}.novu-patient-lifecycle.is-deceased i{background:#778594;box-shadow:0 0 0 3px rgba(119,133,148,.14)}
.novu-patient-command-panel{min-width:0;display:grid;grid-template-rows:auto auto;gap:10px;align-content:center}
.novu-patient-context{min-width:0}.novu-context-badges{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:8px!important;margin:0!important}.novu-context-badges>*{min-width:0;justify-content:center}
.novu-header-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;min-width:0}.novu-header-actions button{width:100%;height:40px;border:1px solid #d8e4ec;background:#fff;border-radius:8px;padding:0 8px;font-size:9px;font-weight:750;cursor:pointer;white-space:nowrap}.novu-header-actions .primary{background:#087886;border-color:#087886;color:#fff}
@media(max-width:1200px){.novu-patient-header{grid-template-columns:minmax(360px,430px) minmax(0,1fr);gap:14px}.novu-patient-details{grid-template-columns:1fr}.novu-context-badges{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:900px){.novu-patient-header{grid-template-columns:1fr;align-items:start}.novu-patient-details{grid-template-columns:repeat(2,minmax(0,1fr))}.novu-patient-command-panel{width:100%}.novu-context-badges{grid-template-columns:repeat(4,minmax(0,1fr))!important}.novu-header-actions{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:700px){.novu-patient-identity-panel{grid-template-columns:58px minmax(0,1fr)}.novu-patient-details{grid-template-columns:1fr}.novu-context-badges,.novu-header-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
.novu-summary{height:62px;border-radius:9px;background:linear-gradient(100deg,#62d1e0,#dbeefd 56%,#a9b2ed);display:grid;grid-template-columns:repeat(5,1fr);margin:7px 0 10px;overflow:hidden}.novu-summary>div{padding:9px 11px;border-right:1px solid rgba(62,100,130,.12);min-width:0}.novu-summary small{display:block;font-size:12px;font-weight:500;line-height:1.2;color:#405c70;margin-bottom:2px}.novu-summary strong{display:block;font-size:15px;font-weight:600;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.novu-vitals{display:grid;grid-template-columns:repeat(8,minmax(92px,1fr));gap:8px;margin:3px 0 10px;align-items:start}.novu-vital{text-align:center;min-width:0;padding:3px 2px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px}.novu-vital-icon{width:30px;height:30px;flex:0 0 30px;border:1px solid #d7e9e9;border-radius:50%;display:grid;place-items:center;margin:0;color:#16808a;font-size:14px;transition:transform .16s ease,background .16s ease}.novu-vital small{display:block;font-size:13px;line-height:1.15;font-weight:500;color:#526a7c;margin:0}.novu-vital strong{display:block;font-size:18px;line-height:1.1;font-weight:700;margin:0}.novu-vital em{font-style:normal;font-size:13px;line-height:1.1;font-weight:400;color:#788a98;margin:0;white-space:nowrap}
/* Per-vital colored icon fills, matching the approved mockup's color
   coding (each vital gets its own tint, not one shared teal). */
.novu-vital[data-vital="bp"] .novu-vital-icon,.novu-vital[data-vital="hr"] .novu-vital-icon{background:#fdecee;border-color:#f3c6cc;color:#d84a5c}
.novu-vital[data-vital="spo2"] .novu-vital-icon{background:#e9f3ff;border-color:#bcdcff;color:#2478f3}
.novu-vital[data-vital="temp"] .novu-vital-icon{background:#fff2e6;border-color:#f6d3ab;color:#d9791a}
.novu-vital[data-vital="weight"] .novu-vital-icon{background:#eaf8f0;border-color:#bde8cc;color:#2e9a5f}
.novu-vital[data-vital="bmi"] .novu-vital-icon{background:#f2ecfc;border-color:#d9c7f5;color:#7a4fd1}
.novu-vital[data-vital="glucose"] .novu-vital-icon{background:#fdeef0;border-color:#f6c9cf;color:#c94f6b}
.novu-vital[data-vital="bp"]:hover .novu-vital-icon,.novu-vital[data-vital="hr"]:hover .novu-vital-icon{background:#fbdde1}
.novu-vital[data-vital="spo2"]:hover .novu-vital-icon{background:#d9ecff}
.novu-vital[data-vital="temp"]:hover .novu-vital-icon{background:#fce4cc}
.novu-vital[data-vital="weight"]:hover .novu-vital-icon{background:#d8f2e2}
.novu-vital[data-vital="bmi"]:hover .novu-vital-icon{background:#e7dbf9}
.novu-vital[data-vital="glucose"]:hover .novu-vital-icon{background:#fbdde3}
.novu-record-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.22fr) minmax(220px,.26fr);gap:10px;align-items:start}.novu-domain-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.novu-domain{border:1px solid #dce6ed;border-radius:9px;background:#fff;min-height:88px;padding:10px;box-shadow:0 2px 7px rgba(28,65,95,.035);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.novu-domain:hover{transform:translateY(-2px);border-color:#c9dfe7;box-shadow:0 7px 18px rgba(28,65,95,.08)}.novu-domain-head{display:flex;align-items:center;gap:6px}.novu-domain-icon{width:25px;height:25px;border-radius:50%;background:#edf8fa;display:grid;place-items:center;color:#16808a;font-size:12px}.novu-domain h3{font-size:10px;margin:0;flex:1}.novu-domain b{font-size:12px}.novu-domain p{font-size:8px;color:#64798b;line-height:1.35;height:23px;overflow:hidden;margin:5px 0}.novu-domain button{border:0;background:transparent;color:#087886;font-size:8px;font-weight:800;padding:0;cursor:pointer}.novu-card{border:1px solid #dce6ed;border-radius:9px;background:#fff;padding:10px;box-shadow:0 2px 7px rgba(28,65,95,.035)}.novu-card-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;min-width:0}.novu-card-title h2{font-size:9px;letter-spacing:.35px;margin:0}.novu-card-title button{border:0;background:transparent;color:#087886;font-size:7.5px;cursor:pointer}.novu-trends{margin-top:8px;height:142px;position:relative;min-width:0}.novu-trend-toolbar{display:flex;gap:5px;min-width:0;overflow-x:auto;scrollbar-width:thin}.novu-trend-toolbar button{border:0;background:transparent;font-size:7px;color:#6b7e8d;cursor:pointer;white-space:nowrap;min-height:24px;padding:0 2px}.novu-trend-toolbar button.active{color:#087886;font-weight:800}.novu-trend-chart{height:100px}.novu-trend-chart svg{width:100%;height:100%;overflow:visible}.novu-trend-chart polyline{fill:none;stroke:#16808a;stroke-width:2}.novu-trend-chart circle{fill:#fff;stroke:#16808a;stroke-width:2;transition:r .12s ease;cursor:pointer;outline:none}.novu-trend-chart circle:focus{stroke-width:3;r:5px}.novu-trend-chart circle:hover{r:5}.novu-empty{display:grid;place-items:center;height:80px;font-size:8px;color:#7b8d9b;text-align:center}
.novu-recent-list{display:flex;flex-direction:column;gap:3px}.novu-recent-item{position:relative;border:0;border-bottom:1px solid #edf2f5;background:#fff;text-align:left;padding:7px 4px 7px 32px;min-height:47px;cursor:pointer;transition:background .14s ease}.novu-recent-item:hover,.novu-recent-item.active{background:#f3fafb}.novu-recent-avatar{position:absolute;left:4px;top:9px;width:22px;height:22px;border-radius:50%;background:#d9f0f2;border:1px solid #a9dde2;display:grid;place-items:center;font-size:12px;line-height:1;color:#0a6b76;transition:transform .14s ease}.novu-recent-item:hover .novu-recent-avatar{transform:scale(1.08)}.novu-recent-item small{display:block;font-size:6.5px;color:#718391;text-transform:uppercase}.novu-recent-item strong{display:block;font-size:8.5px;margin:1px 0}.novu-recent-item span{display:block;font-size:7px;color:#64798b}.novu-status{position:absolute;right:2px;bottom:8px;font-size:6px!important;color:#27834d!important;-webkit-text-fill-color:#27834d!important}.novu-preview{font-size:8px}.novu-preview h3{font-size:10px;margin:3px 0}.novu-preview-section{border-top:1px solid #edf2f5;padding-top:7px;margin-top:7px}.novu-preview-section b{display:block;font-size:8px;margin-bottom:3px}.novu-preview-vitals{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.novu-preview-vitals div{font-size:7px}.novu-preview-vitals strong{display:block;font-size:9px}.novu-preview ul,.novu-preview ol{padding-left:15px;margin:3px 0}.novu-preview li{margin:2px 0}.novu-chip-row{display:flex;gap:4px;flex-wrap:wrap}.novu-chip-row span{background:#f0f5fb;border:1px solid #dfe8f1;border-radius:999px;padding:2px 5px}.novu-preview .open-full{width:100%;height:28px;border:0;border-radius:6px;background:#087886;color:#fff;font-size:8px;font-weight:800;margin-top:8px;cursor:pointer}
.novu-minimized-chip{position:fixed;z-index:15001;left:12px;bottom:12px;height:38px;min-width:210px;border:1px solid #bfcfda;background:#fff;border-radius:8px;box-shadow:0 8px 26px rgba(18,48,72,.2);display:none;align-items:center;gap:8px;padding:0 10px;cursor:pointer}.novu-minimized-chip.show{display:flex}.novu-minimized-chip img{width:22px;height:22px}.novu-minimized-chip span{font-size:10px;font-weight:750}.novu-minimized-chip button{margin-left:auto;border:0;background:transparent;font-size:14px;cursor:pointer}
@media(max-width:1279px){.novu-record-body{grid-template-columns:minmax(0,1fr) minmax(190px,.25fr)}.novu-preview-card{position:fixed;right:0;top:34px;bottom:0;width:min(330px,40vw);z-index:12;box-shadow:-12px 0 30px rgba(25,57,82,.12);display:none;overflow:auto}.novu-preview-card.open{display:block}.novu-domain-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1023px){.novu-record-app{grid-template-columns:76px minmax(0,1fr)}.novu-record-brand span,.novu-record-nav button span:last-child,.novu-record-nav small,.novu-record-user span{display:none}.novu-record-nav button{justify-content:center}.novu-summary{grid-template-columns:repeat(5,minmax(95px,1fr));overflow:auto}.novu-vitals{grid-template-columns:repeat(4,1fr)}.novu-record-body{grid-template-columns:1fr}.novu-recent-card{display:none}}
@media(prefers-reduced-motion:reduce){.novu-record-nav button,.novu-patient-avatar,.novu-domain,.novu-vital-icon,.novu-recent-avatar{transition:none}}

/* V65 native record-domain drilldown. Uses the same VM/record data; no legacy tab modal. */
.novu-record-domain-panel{position:fixed;inset:0;z-index:16000;background:rgba(12,34,52,.42);display:grid;place-items:center;padding:22px}.novu-record-domain-panel>section{width:min(760px,92vw);max-height:82vh;background:#fff;border:1px solid #d7e4ed;border-radius:14px;box-shadow:0 24px 72px rgba(13,40,62,.24);overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr)}.novu-record-domain-panel header{display:flex;align-items:flex-start;gap:16px;padding:15px 16px;background:#f8fbfd;border-bottom:1px solid #e4edf3}.novu-record-domain-panel header>div{flex:1}.novu-record-domain-panel header small{display:block;font-size:8px;font-weight:850;letter-spacing:1px;color:#0b7280}.novu-record-domain-panel h2{margin:3px 0 0;font-size:17px}.novu-record-domain-panel header button{width:32px;height:32px;border:1px solid #d4e2eb;border-radius:8px;background:#fff;font-size:18px;cursor:pointer}.novu-domain-panel-body{overflow:auto;padding:8px 16px 16px}.novu-domain-row{width:100%;display:flex;justify-content:space-between;align-items:center;gap:14px;border:0;border-bottom:1px solid #edf2f5;background:#fff;text-align:left;padding:11px 4px;cursor:pointer}.novu-domain-row:hover{background:#f6fbfd}.novu-domain-row.static{cursor:default}.novu-domain-row.static:hover{background:#fff}.novu-domain-row span{min-width:0;flex:1}.novu-domain-row strong{display:block;font-size:10px;color:#183b58}.novu-domain-row small{display:block;font-size:8px;color:#718496;margin-top:2px}.novu-domain-row b{font-size:8px;color:#0b7280}.novu-domain-empty{padding:34px 8px;text-align:center;font-size:10px;color:#738699}

/* ===== Vital click -> real per-vital trend (dynamic, animated) ===== */
.nx-vital{cursor:pointer}
.nx-vital.is-selected{border-color:#2478f3!important;box-shadow:0 0 0 3px rgba(36,120,243,.16)}
.nx-vital.is-selected .nx-vital-ring{background:#e2f0ff}
.nx-vital-detail{display:none;background:#fff;border:1px solid #dbe6ee;border-radius:14px;padding:16px;margin:10px 0 18px;box-shadow:0 8px 22px rgba(27,66,101,.08)}
.nx-vital-detail.nx-open{display:block;animation:nxVitalDetailIn .32s ease both}
@keyframes nxVitalDetailIn{from{opacity:0;transform:translateY(-6px) scaleY(.96);transform-origin:top}to{opacity:1;transform:translateY(0) scaleY(1)}}
.nx-vital-detail-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.nx-vital-detail-head strong{font-size:14px;color:#10243b}
.nx-vital-detail-head span{font-size:11px;color:#718397}
.nx-vital-detail .nx-trend-svg{width:100%;height:170px}
.nx-vital-detail .nx-trend-svg polyline{fill:none;stroke:#2478f3;stroke-width:2.5}
.nx-vital-detail .nx-trend-svg circle{fill:#2478f3;cursor:pointer}
.nx-vital-detail .nx-trend-empty{padding:20px;text-align:center;color:#8398ab;font-size:12.5px}
@media(prefers-reduced-motion:reduce){.nx-vital-detail.nx-open{animation:none}}

/* ===== Vitals became real buttons: click -> real trend for that vital ===== */
.novu-vital{background:none;border:none;cursor:pointer;font:inherit;display:block;width:100%}
.novu-vital.is-selected .novu-vital-icon{transform:translateY(-2px);box-shadow:0 0 0 3px rgba(36,120,243,.35),0 4px 10px rgba(20,50,90,.15)}
.novu-trend-chart{transition:opacity .15s ease}
.novu-trend-chart.novu-trend-pulse{animation:novuTrendPulse .5s ease}
@keyframes novuTrendPulse{0%{opacity:.35;transform:scale(.985)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.novu-trend-chart.novu-trend-pulse{animation:none}.novu-vital.is-selected .novu-vital-icon{transform:none}}

/* ===== Contrast fix: a global dark-mode rule (body.nx-v2 h1,h2,h3,h4,
   strong,legend{color:var(--nx-text)!important}) turns these near-white
   whenever it's active, since none of them had their own explicit color.
   #novuPatientRecordHost gives enough specificity to always win, on a
   light background, regardless of that global rule's state. ===== */
#novuPatientRecordHost .novu-patient-copy h1{color:#0f2f4d!important;-webkit-text-fill-color:#0f2f4d!important;-webkit-text-fill-color:#0f2f4d!important}
#novuPatientRecordHost .novu-patient-meta span{color:#5c7083!important;-webkit-text-fill-color:#5c7083!important;-webkit-text-fill-color:#5c7083!important}
#novuPatientRecordHost .novu-summary strong{color:#10243b;-webkit-text-fill-color:#10243b}
#novuPatientRecordHost .novu-summary small{color:#405c70;-webkit-text-fill-color:#405c70}
#novuPatientRecordHost .novu-domain h3{color:#10243b!important;-webkit-text-fill-color:#10243b!important;-webkit-text-fill-color:#10243b!important}
#novuPatientRecordHost .novu-domain b{color:#087886!important;-webkit-text-fill-color:#087886!important;-webkit-text-fill-color:#087886!important}
#novuPatientRecordHost .novu-domain p{color:#64798b!important;-webkit-text-fill-color:#64798b!important;-webkit-text-fill-color:#64798b!important}
#novuPatientRecordHost .novu-card-title h2{color:#10243b!important;-webkit-text-fill-color:#10243b!important;-webkit-text-fill-color:#10243b!important}
#novuPatientRecordHost .novu-vital small{color:#526a7c;-webkit-text-fill-color:#526a7c}
#novuPatientRecordHost .novu-vital strong{color:#10243b;-webkit-text-fill-color:#10243b}
#novuPatientRecordHost .novu-vital em{color:#788a98;-webkit-text-fill-color:#788a98}
#novuPatientRecordHost .novu-recent-item strong{color:#10243b!important;-webkit-text-fill-color:#10243b!important;-webkit-text-fill-color:#10243b!important}
#novuPatientRecordHost .novu-recent-item small{color:#5c7083!important;-webkit-text-fill-color:#5c7083!important;-webkit-text-fill-color:#5c7083!important}
#novuPatientRecordHost .novu-recent-item span{color:#7b8d9b!important;-webkit-text-fill-color:#7b8d9b!important;-webkit-text-fill-color:#7b8d9b!important}
#novuPatientRecordHost .novu-window-title{color:#0f2f4d!important;-webkit-text-fill-color:#0f2f4d!important;-webkit-text-fill-color:#0f2f4d!important}

/* ===== Real value-driven vital movement (not decorative) =====
   Icon color reflects the actual clinical range (--vs-color, computed
   from the real reading). Heart Rate's pulse speed is the real BPM
   (--vs-dur = 60/bpm seconds) -- a 100 bpm reading visibly beats faster
   than a 60 bpm one, not a fixed generic animation. */
.novu-vital.has-status .novu-vital-icon{background:color-mix(in srgb,var(--vs-color) 14%,#fff);border-color:color-mix(in srgb,var(--vs-color) 45%,#fff);color:var(--vs-color)}
.novu-vital.has-status:hover .novu-vital-icon{background:color-mix(in srgb,var(--vs-color) 24%,#fff)}
/* Superseded by the comprehensive 6-vital dynamism system in style.css
   (.nx-dyn-hr/.nx-dyn-bp/.nx-dyn-spo2/etc) -- kept as a comment for
   history rather than deleted outright, since these 3 selectors were
   the original, simpler pass at this feature and explain any older
   screenshots that showed a subtler pulse.
.novu-vital[data-vital="hr"].has-status .novu-vital-icon{animation:novuHrBeat var(--vs-dur,1s) ease-in-out infinite}
@keyframes novuHrBeat{0%,100%{transform:scale(1)}30%{transform:scale(1.16)}45%{transform:scale(.97)}60%{transform:scale(1.08)}}
.novu-vital[data-vital="bp"].has-status .novu-vital-icon{animation:novuBpRing 2.4s ease-in-out infinite}
@keyframes novuBpRing{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--vs-color) 35%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb,var(--vs-color) 0%,transparent)}}
.novu-vital[data-vital="spo2"].has-status .novu-vital-icon{animation:novuSpo2Wave 2.6s ease-in-out infinite}
@keyframes novuSpo2Wave{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
*/
.novu-vital[data-level="high"].has-status .novu-vital-icon,.novu-vital[data-level="critical"].has-status .novu-vital-icon,.novu-vital[data-level="fever"].has-status .novu-vital-icon{animation-duration:.9s}
@media(prefers-reduced-motion:reduce){.novu-vital.has-status .novu-vital-icon{animation:none!important}}

/* Lock Screen button in the Patient Record sidebar — visually distinct from Sign Out (different kind of action: quick safety toggle, not ending the session). */
.novu-record-user{display:flex;flex-direction:column;gap:6px;padding-bottom:10px}
.novu-record-user [data-lock-screen]{display:block;width:100%;text-align:left;padding:6px 0;color:#8fd4e8!important;-webkit-text-fill-color:#8fd4e8!important;-webkit-text-fill-color:#8fd4e8!important}
.novu-record-user [data-lock-screen]:hover{color:#c3ecf7!important;-webkit-text-fill-color:#c3ecf7!important;-webkit-text-fill-color:#c3ecf7!important}

/* ===== Patient Trends — download buttons ===== */
.novu-trend-download{display:flex;gap:4px;margin-left:4px;flex:0 0 auto}
.novu-trend-download button{height:26px;padding:0 7px;border:1px solid #d9e6f2;border-radius:7px;background:#f7fafc;color:#3d5872;font-size:10.5px;font-weight:750;cursor:pointer;transition:background .14s ease}
.novu-trend-download button:hover{background:#e9f1f8;border-color:#b9d8f4}
.novu-card-title{flex-wrap:wrap;row-gap:6px}


/* V71 ROOT PATIENT-RECORD CORRECTIONS — uniform vitals + clean print */
#novuPatientRecordHost .novu-vitals{align-items:start}
#novuPatientRecordHost .novu-vital{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;min-height:0;padding:3px 2px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
#novuPatientRecordHost .novu-vital-icon{margin:0;width:30px;height:30px;min-height:0;flex:0 0 30px;padding:0}
#novuPatientRecordHost .novu-vital small{font-size:13px;line-height:1.15;margin:0;font-weight:500;color:#526a7c}
#novuPatientRecordHost .novu-vital strong{font-size:18px;line-height:1.1;margin:0;font-weight:700;color:#10243b;min-height:0}
#novuPatientRecordHost .novu-vital em{font-size:13px;line-height:1.1;margin:0;font-weight:400;color:#788a98;min-height:0;white-space:nowrap}

.novu-record-print-sheet{display:none}
.novu-record-copy-dialog{width:min(760px,calc(100vw - 32px));max-height:88vh;border:0;border-radius:18px;padding:0;box-shadow:0 24px 80px rgba(13,35,61,.28);color:#13283d;background:#fff}.novu-record-copy-dialog::backdrop{background:rgba(9,27,48,.58)}
.novu-record-copy-dialog form>header{display:flex;justify-content:space-between;gap:20px;padding:22px 24px;background:linear-gradient(110deg,#07547f,#246ccf);color:#fff}.novu-record-copy-dialog header h2{margin:3px 0 2px;font-size:25px}.novu-record-copy-dialog header p{margin:0;opacity:.9}.novu-record-copy-dialog header button{align-self:flex-start;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.12);color:#fff;border-radius:10px;width:40px;height:40px;font-size:25px}
.novu-record-copy-dialog form>section,.novu-record-copy-dialog form>aside{margin:0 24px;padding:18px 0;border-bottom:1px solid #dce6ef}.novu-record-copy-dialog .record-copy-patient{display:flex;flex-direction:column;gap:4px;background:#f4f8fc;margin:18px 24px 0;padding:14px 16px;border:1px solid #d8e5f0;border-radius:12px}.novu-record-copy-dialog h3{margin:0 0 10px;font-size:15px}.record-copy-radio{display:block;margin:8px 0}.record-copy-dates{display:none;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.record-copy-dates.enabled{display:grid}.record-copy-dates input{display:block;width:100%;box-sizing:border-box;margin-top:5px;padding:10px;border:1px solid #b9cfe1;border-radius:9px}.record-copy-section-head{display:flex;justify-content:space-between;align-items:center}.record-copy-section-head button{border:0;background:none;color:#1764bd;font-weight:700}.record-copy-checks{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}.record-copy-checks label{display:flex;gap:9px;padding:7px 9px;border:1px solid #e0e8ef;border-radius:9px;background:#fbfdff}.novu-record-copy-dialog aside{font-size:12px;color:#526980}.novu-record-copy-dialog footer{display:flex;justify-content:flex-end;gap:10px;padding:18px 24px}.novu-record-copy-dialog footer button{min-height:44px;padding:0 18px;border-radius:10px;border:1px solid #bfd0df;background:#fff;color:#173b61;font-weight:800}.novu-record-copy-dialog footer .primary{background:#1764d8;color:#fff;border-color:#1764d8}
@media(max-width:700px){.record-copy-checks{grid-template-columns:1fr}.novu-record-copy-dialog{width:calc(100vw - 18px)}}
@media print{@page{size:auto;margin:14mm 13mm 16mm}body.novu-printing-patient-record{background:#fff!important;margin:0!important;padding:0!important}body.novu-printing-patient-record>*:not(#novuPatientRecordPrintSheet){display:none!important}body.novu-printing-patient-record #novuPatientRecordPrintSheet{display:block!important;position:static!important;width:auto!important;margin:0!important;padding:0!important;color:#1b2d3d!important;-webkit-text-fill-color:#1b2d3d!important;background:#fff!important;font:10.5pt/1.5 Arial,Helvetica,sans-serif!important}.record-copy-cover-head{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #183b5b;padding:0 0 10px;margin-bottom:16px}.record-copy-cover-head strong{display:block;font-size:20pt;letter-spacing:-.4px}.record-copy-cover-head span,.record-copy-cover-head .print-date{font-size:9pt;color:#526a7d}.record-copy-cover{padding:2px 0 14px;margin:0 0 16px;border-bottom:1px solid #cbd8e2;break-inside:avoid}.record-copy-cover h1{font-size:19pt;margin:0 0 8px;color:#102a43}.record-copy-cover p{margin:5px 0}.record-copy-purpose{margin-top:12px!important;padding:9px 11px;background:#f4f7f9;border-left:3px solid #557b9b;color:#4e6475}.record-copy-index{break-inside:avoid}.record-copy-index ol{columns:2;column-gap:28px;margin:6px 0 14px;padding-left:22px}.record-copy-index li{padding:2px 0}.record-copy-document h2{font-size:12pt;text-transform:none;color:#173b61;border-bottom:1.5px solid #8ea8bc;padding-bottom:5px;margin:20px 0 9px;break-after:avoid}.record-copy-document h4{font-size:10.5pt;color:#173b61;margin:12px 0 5px;break-after:avoid}.record-copy-document p{margin:5px 0}.record-copy-document table{width:100%;border-collapse:collapse;font-size:9.5pt}.record-copy-document th,.record-copy-document td{border-bottom:1px solid #d8e1e8;padding:7px 6px;text-align:left;vertical-align:top}.record-copy-document th{background:#f2f5f7;font-size:8.5pt;color:#36536a;text-transform:none}.record-copy-encounter{border:1px solid #c8d5df;border-radius:4px;padding:12px 14px;margin:0 0 14px;break-inside:auto}.record-copy-encounter>header{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid #dbe4ea;padding-bottom:7px;margin-bottom:7px}.record-copy-encounter>header div{display:flex;gap:10px;align-items:baseline}.record-copy-clinical-fields{display:grid;gap:0;margin:4px 0 8px}.record-copy-clinical-field{display:grid;grid-template-columns:minmax(130px,24%) 1fr;gap:12px;padding:5px 0;border-bottom:1px solid #e4eaee;break-inside:avoid}.record-copy-field-name{font-size:9pt;font-weight:700;color:#405c72}.record-copy-field-value{min-width:0;color:#1b2d3d}.record-copy-list{display:grid;gap:5px}.record-copy-list-item{padding:0 0 5px 14px;position:relative}.record-copy-list-item:before{content:'•';position:absolute;left:2px;color:#557b9b}.record-copy-unit{color:#5c7182;font-size:9pt}.record-copy-empty{color:#6c7d89;font-style:italic}.record-copy-objective-block{margin:8px 0 12px;break-inside:avoid}.record-copy-objective-block h5{margin:0 0 6px;font-size:9pt;text-transform:uppercase;letter-spacing:.35px;color:#526a7d}.record-copy-vitals-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #cbd8e2;border-radius:4px;overflow:hidden}.record-copy-vital{display:grid;grid-template-columns:1fr auto auto;align-items:baseline;gap:5px;padding:7px 8px;border-right:1px solid #dbe4ea;border-bottom:1px solid #dbe4ea;min-height:28px}.record-copy-vital:nth-child(3n){border-right:0}.record-copy-vital span{font-size:8pt;color:#526a7d}.record-copy-vital strong{font-size:10pt;color:#102a43}.record-copy-vital small{font-size:7.5pt;color:#687d8e}.record-copy-results-table td:last-child{width:34%;white-space:nowrap}.record-copy-result-context{display:flex;flex-wrap:wrap;gap:6px 16px;padding:6px 7px;background:#f6f8fa;font-size:8.5pt;color:#526a7d}.record-copy-exam{padding:7px 8px;border-left:2px solid #9fb4c5;background:#f8fafb}.record-copy-cert{margin-top:24px;padding-top:10px;border-top:2px solid #183b5b;display:grid;gap:2px;font-size:8.5pt;color:#526980}}


/* ================================================================
   V72 — PATIENT RECORD VITAL ICON MICRO-ANIMATIONS
   Visual-only movement on the existing value-driven vital controls.
   Each animation is scoped to the canonical Patient Record surface;
   no data/state/clinical thresholds are created here.
   ================================================================ */
#novuPatientRecordHost .novu-vital .novu-vital-icon{
  position:relative;
  isolation:isolate;
  will-change:transform,box-shadow;
}
/* BP: subtle arterial wave around the existing value ring. */
@keyframes novuV72BpWave{
  0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--vs-color,#d9791a) 26%,transparent)}
  55%{box-shadow:0 0 0 6px color-mix(in srgb,var(--vs-color,#d9791a) 0%,transparent)}
}
#novuPatientRecordHost .novu-vital.nx-dyn-bp .novu-vital-icon{animation:novuV72BpWave 2.6s ease-out infinite}

/* HR: actual beat cadence remains derived from 60/BPM in app.js. */
#novuPatientRecordHost .novu-vital.nx-dyn-hr .novu-vital-icon{transform-origin:50% 55%}

/* SpO2: restrained breathing motion. */
#novuPatientRecordHost .novu-vital.nx-dyn-spo2 .novu-vital-icon{transform-origin:center}

/* Temperature: moving highlight over the existing value-driven fill. */
@keyframes novuV72TempSheen{0%{transform:translateY(115%);opacity:0}35%{opacity:.30}70%{opacity:.12}100%{transform:translateY(-115%);opacity:0}}
#novuPatientRecordHost .novu-vital.nx-dyn-temp .novu-vital-icon::after{
  content:"";position:absolute;inset:7px 5px;border-radius:999px;
  background:linear-gradient(180deg,transparent,rgba(255,255,255,.72),transparent);
  animation:novuV72TempSheen 3.4s ease-in-out infinite;pointer-events:none;z-index:0;
}

/* Weight: only moves when a real recorded weight exists; the arrow itself
   comes from the longitudinal trend, so the motion reinforces real data. */
@keyframes novuV72WeightSettle{0%,100%{transform:translateY(0)}50%{transform:translateY(1.5px)}}
#novuPatientRecordHost .novu-vital.nx-dyn-weight .novu-vital-icon{animation:novuV72WeightSettle 2.8s ease-in-out infinite}
#novuPatientRecordHost .novu-vital.nx-dyn-weight .nx-vital-trend{display:inline-block;animation:novuV72TrendFloat 1.8s ease-in-out infinite}
@keyframes novuV72TrendFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}

/* BMI: slow dimensional tilt, intentionally subtle because BMI is not a
   beat-to-beat physiologic signal. */
@keyframes novuV72BmiFloat{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-1.5px) rotate(3deg)}}
#novuPatientRecordHost .novu-vital.nx-dyn-bmi .novu-vital-icon{animation:novuV72BmiFloat 3.8s ease-in-out infinite}

/* Glucose: normal readings get a soft halo; true low/high still retain the
   faster critical blink already driven by nx-dyn-critical. */
@keyframes novuV72GlucoseHalo{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--vs-color,#2e9a5f) 22%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb,var(--vs-color,#2e9a5f) 0%,transparent)}}
#novuPatientRecordHost .novu-vital.nx-dyn-glucose:not(.nx-dyn-critical) .novu-vital-icon{animation:novuV72GlucoseHalo 2.9s ease-in-out infinite}

@media(prefers-reduced-motion:reduce){
  #novuPatientRecordHost .novu-vital .novu-vital-icon,
  #novuPatientRecordHost .novu-vital .nx-vital-trend,
  #novuPatientRecordHost .novu-vital.nx-dyn-temp .novu-vital-icon::after{animation:none!important}
}


/* ========================================================================== 
   NOVU Hx V73 — DATA-DRIVEN MEDICAL MICRO-ILLUSTRATIONS
   Visual-only output layer. All animation parameters arrive through CSS custom
   properties from app.js, which reads the existing Patient Record/live-encounter
   sources of truth. No medical thresholds live in CSS.
   ========================================================================== */
.novu-vitals{grid-template-columns:repeat(8,minmax(92px,1fr));gap:10px}
.novu-vital{appearance:none;border:0;background:transparent;min-width:0;cursor:pointer;padding:8px 4px;color:#17324a}
.novu-vital small,.novu-vital strong,.novu-vital em{display:block;text-align:center}
.novu-vital small{font-size:13px;line-height:1.15;font-weight:500;color:#526a7c;margin:0}.novu-vital strong{font-size:18px;line-height:1.1;font-weight:700;margin:0}.novu-vital em{font-style:normal;font-size:13px;line-height:1.1;font-weight:400;color:#788a98;margin:0;min-height:0;white-space:nowrap}
.novu-medical-visual{--mv-color:#168b95;--mv-ratio:.5;--mv-duration:2.4s;--mv-amplitude:.08;--mv-trend:0;position:relative;width:48px;height:48px;margin:0 auto 3px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,#fff 0%,color-mix(in srgb,var(--mv-color) 9%,#f7fbfd) 100%);border:1px solid color-mix(in srgb,var(--mv-color) 30%,#d7e5ee);box-shadow:inset 0 1px 0 rgba(255,255,255,.94),0 6px 16px color-mix(in srgb,var(--mv-color) 12%,transparent);transition:background .25s ease,border-color .25s ease,box-shadow .25s ease,transform .25s ease;overflow:hidden}
.novu-medical-visual.is-unmeasured{--mv-color:#9aabb9;filter:saturate(.35);opacity:.72;background:#f5f8fa;border-style:dashed;box-shadow:none}
.novu-medical-visual .mv-svg{width:36px;height:36px;overflow:visible;fill:none;stroke:var(--mv-color);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.novu-medical-visual .mv-svg text{fill:var(--mv-color);stroke:none;font:800 9px system-ui,-apple-system,"SF Pro Display","Segoe UI",sans-serif}
.novu-medical-visual.novu-motion-paused *{animation-play-state:paused!important}
.novu-vital:hover .novu-medical-visual,.novu-vital:focus-visible .novu-medical-visual{transform:translateY(-2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.96),0 9px 20px color-mix(in srgb,var(--mv-color) 18%,transparent)}

/* HR: exact cycle duration = 60 / recorded BPM, calculated in JS. */
@keyframes novuHeartBeat{0%,100%{transform:scale(1)}14%{transform:scale(calc(1 + var(--mv-amplitude)))}28%{transform:scale(1)}42%{transform:scale(calc(1 + var(--mv-amplitude)*.55))}58%{transform:scale(1)}}
.mv-hr.is-measured .mv-heart-shape{fill:color-mix(in srgb,var(--mv-color) 18%,transparent);transform-origin:24px 25px;animation:novuHeartBeat var(--mv-duration) cubic-bezier(.2,.8,.2,1) infinite}

/* RR: recorded breaths/min directly sets one full lung expansion cycle. */
@keyframes novuLungLeft{0%,100%{transform:scaleX(1)}50%{transform:scaleX(calc(1 + var(--mv-amplitude)))}}
@keyframes novuLungRight{0%,100%{transform:scaleX(1)}50%{transform:scaleX(calc(1 + var(--mv-amplitude)))}}
.mv-rr.is-measured .mv-lung-left{transform-origin:22px 29px;animation:novuLungLeft var(--mv-duration) ease-in-out infinite}.mv-rr.is-measured .mv-lung-right{transform-origin:26px 29px;animation:novuLungRight var(--mv-duration) ease-in-out infinite}

/* SpO2: saturation controls ring completion; motion is a lightweight wave. */
.mv-spo2 .mv-o2-ring{stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--mv-ratio)*100);transform:rotate(-90deg);transform-origin:24px 24px;transition:stroke-dashoffset .35s ease}.mv-spo2.is-measured .mv-o2-wave{animation:novuOxygenWave var(--mv-duration) ease-in-out infinite}@keyframes novuOxygenWave{0%,100%{transform:translateY(0);opacity:.72}50%{transform:translateY(-2px);opacity:1}}

/* Temperature: measured temperature controls actual SVG fill height. */
.mv-temp{--mv-temp-height:calc(18% + var(--mv-ratio)*70%)}.mv-temp .mv-therm-fill{fill:color-mix(in srgb,var(--mv-color) 55%,transparent);stroke:none;clip-path:inset(calc(100% - var(--mv-temp-height)) 0 0 0);transition:clip-path .45s cubic-bezier(.2,.8,.2,1)}.mv-temp.is-measured .mv-therm-fill{animation:novuThermSheen 2.8s ease-in-out infinite}@keyframes novuThermSheen{0%,100%{opacity:.72}50%{opacity:1}}

/* BP: BP values drive ring position and pulse-pressure-driven wave amplitude. */
.mv-bp .mv-bp-ring{stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--mv-ratio)*100);transform:rotate(-90deg);transform-origin:24px 24px;transition:stroke-dashoffset .35s ease}.mv-bp.is-measured .mv-bp-wave{transform-origin:24px 25px;animation:novuBPWave var(--mv-duration) ease-in-out infinite}@keyframes novuBPWave{0%,100%{transform:scaleY(1)}50%{transform:scaleY(calc(1 + var(--mv-amplitude)))}}

/* Glucose: actual glucose controls how full the blood drop is. */
.mv-glucose .mv-drop-outline{fill:color-mix(in srgb,var(--mv-color) 6%,transparent)}.mv-glucose .mv-drop-fill{fill:color-mix(in srgb,var(--mv-color) 58%,transparent);stroke:none;transform-origin:center bottom;transform:scaleY(var(--mv-ratio));transition:transform .45s cubic-bezier(.2,.8,.2,1)}.mv-glucose.is-measured .mv-drop-outline{animation:novuDropMicro 3.1s ease-in-out infinite}@keyframes novuDropMicro{0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}

/* Weight: measurement/trend drives the scale needle; no fake physiologic beat. */
.mv-weight .mv-scale{fill:color-mix(in srgb,var(--mv-color) 7%,transparent)}.mv-weight .mv-needle{transform-origin:24px 19px;transform:rotate(calc(clamp(-1,var(--mv-trend),1)*18deg));transition:transform .5s cubic-bezier(.2,.8,.2,1)}

/* BMI: continuous BMI position controls body-outline scale; adult clinical color is
   delegated from interpretAdultBMI(), never encoded here. */
.mv-bmi .mv-body,.mv-bmi .mv-body-head{transition:stroke-width .3s ease,transform .45s ease}.mv-bmi.is-measured .mv-body{transform-origin:24px 28px;transform:scaleX(calc(.86 + var(--mv-ratio)*.24))}

/* Medications: real medication count activates the pill; zero remains neutral. */
@keyframes novuPillActive{0%,100%{transform:rotate(-2deg) translateY(0)}50%{transform:rotate(2deg) translateY(-1px)}}.mv-medications.state-active .mv-pill{animation:novuPillActive var(--mv-duration) ease-in-out infinite;transform-origin:24px 26px}.mv-medications.state-none{filter:saturate(.25);opacity:.65}

/* Allergies: documented allergy pulses; NKDA has a calm verified state; missing data is neutral. */
.mv-allergies.state-documented .mv-alert{fill:color-mix(in srgb,var(--mv-color) 15%,transparent);animation:novuAllergyWarn var(--mv-duration) ease-in-out infinite;transform-origin:24px 27px}@keyframes novuAllergyWarn{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}.mv-allergies.state-nkda .mv-alert{fill:color-mix(in srgb,var(--mv-color) 10%,transparent)}.mv-allergies.state-unmeasured{filter:saturate(.2);opacity:.58}
.novu-domain-icon .novu-medical-visual{width:34px;height:34px;border-radius:11px;margin:0}.novu-domain-icon .novu-medical-visual .mv-svg{width:27px;height:27px}

@media(max-width:1250px){.novu-vitals{grid-template-columns:repeat(4,minmax(100px,1fr))}}
@media(max-width:900px){.novu-vitals{grid-template-columns:repeat(2,minmax(110px,1fr))}}
@media(prefers-reduced-motion:reduce){.novu-medical-visual *, .novu-medical-visual{animation:none!important;transition:none!important}}
@media print{.novu-medical-visual,.novu-medical-visual *{animation:none!important;transition:none!important}.novu-medical-visual{box-shadow:none!important}}


/* =========================================================
   NOVU Hx V76 — PATIENT RECORD CATEGORY + ENCOUNTER VISUALS
   Data-driven, vector, lightweight, print-safe.
   ========================================================= */

/* Category icon container: fixed geometry so icons cannot alter card layout. */
#novuPatientRecordHost .novu-domain-icon{
  width:28px;
  height:28px;
  min-width:28px;
  display:grid;
  place-items:center;
  overflow:visible;
  border-radius:9px;
  background:#f2f8fb;
  border:1px solid #dce9ef;
}

#novuPatientRecordHost .novu-domain-visual{
  --domain-accent:#168b95;
  --domain-bg:#eaf7f8;
  position:relative;
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  color:var(--domain-accent);
  border-radius:8px;
  transform:translateZ(0);
}
#novuPatientRecordHost .novu-domain-visual svg{
  width:19px;
  height:19px;
  display:block;
  overflow:visible;
}
#novuPatientRecordHost .visual-encounters{--domain-accent:#118a98;--domain-bg:#e7f6f8}
#novuPatientRecordHost .visual-diagnoses{--domain-accent:#6b61d8;--domain-bg:#f0efff}
#novuPatientRecordHost .visual-medications{--domain-accent:#ad7a12;--domain-bg:#fff6df}
#novuPatientRecordHost .visual-allergies{--domain-accent:#cf5c56;--domain-bg:#fff0ee}
#novuPatientRecordHost .visual-laboratory{--domain-accent:#168a75;--domain-bg:#e8f7f2}
#novuPatientRecordHost .visual-imaging{--domain-accent:#3978bd;--domain-bg:#edf5ff}
#novuPatientRecordHost .visual-procedures{--domain-accent:#7958b7;--domain-bg:#f3efff}
#novuPatientRecordHost .visual-documents{--domain-accent:#2e9a6f;--domain-bg:#ebf8f2}

#novuPatientRecordHost .novu-domain-visual::before{
  content:"";
  position:absolute;
  inset:1px;
  border-radius:7px;
  background:var(--domain-bg);
  z-index:-1;
  opacity:.9;
}
#novuPatientRecordHost .novu-domain-visual.is-empty{
  color:#8497a6;
  filter:saturate(.45);
}
#novuPatientRecordHost .novu-domain-visual.is-empty::before{
  background:#f2f5f7;
  opacity:.75;
}
#novuPatientRecordHost .novu-domain-visual-count{
  position:absolute;
  right:-5px;
  top:-5px;
  min-width:13px;
  height:13px;
  padding:0 3px;
  border-radius:999px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
  border:1px solid currentColor;
  color:inherit;
  font-size:7px;
  font-weight:900;
  line-height:1;
  box-shadow:0 1px 3px rgba(15,44,66,.12);
}
#novuPatientRecordHost .novu-domain-visual.is-empty .novu-domain-visual-count{display:none}

/* Event-driven acknowledgement only when the real count changes. */
#novuPatientRecordHost .novu-domain-visual.is-updated{
  animation:novuDomainAcknowledge .52s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes novuDomainAcknowledge{
  0%{transform:scale(1)}
  38%{transform:scale(1.13) rotate(-2deg)}
  70%{transform:scale(.98) rotate(1deg)}
  100%{transform:scale(1)}
}

/* Small state-specific micro-motion; zero-count cards remain calm. */
#novuPatientRecordHost .visual-laboratory.is-active .novu-domain-fluid{
  animation:novuLabFluid 2.6s ease-in-out infinite;
  transform-origin:center;
}
@keyframes novuLabFluid{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-1px)}
}
#novuPatientRecordHost .visual-procedures.is-active .novu-procedure-orbit{
  stroke-dasharray:10 30;
  animation:novuProcedureOrbit 4s linear infinite;
}
@keyframes novuProcedureOrbit{to{stroke-dashoffset:-40}}

/* Recent encounter visual */
#novuPatientRecordHost .novu-recent-avatar{
  width:25px;
  height:25px;
  border-radius:8px;
  background:#edf7f8;
  border:1px solid #c7e5e8;
  color:#0d7c88;
  overflow:visible;
}
#novuPatientRecordHost .novu-encounter-visual{
  position:relative;
  width:21px;
  height:21px;
  display:grid;
  place-items:center;
  color:inherit;
}
#novuPatientRecordHost .novu-encounter-visual svg{
  width:20px;
  height:20px;
  overflow:visible;
}
#novuPatientRecordHost .novu-encounter-state-dot{
  fill:#a8b7c2;
  stroke:#fff;
  stroke-width:1.1;
}
#novuPatientRecordHost .novu-encounter-visual.is-finalized .novu-encounter-state-dot{fill:#2e9a5f}
#novuPatientRecordHost .novu-encounter-visual.is-draft .novu-encounter-state-dot{fill:#d9791a}
#novuPatientRecordHost .novu-encounter-visual.is-active .novu-encounter-state-dot{fill:#168b95}
#novuPatientRecordHost .novu-encounter-visual.is-amended .novu-encounter-state-dot{fill:#7958b7}

#novuPatientRecordHost .novu-encounter-visual.is-active{
  animation:novuEncounterActive 2s ease-in-out infinite;
}
@keyframes novuEncounterActive{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.06)}
}
#novuPatientRecordHost .novu-encounter-visual.is-draft{
  animation:novuEncounterDraft 2.8s ease-in-out infinite;
}
@keyframes novuEncounterDraft{
  0%,100%{opacity:1}
  50%{opacity:.72}
}

/* Never let interactive animation affect print/PDF. */
@media print{
  #novuPatientRecordHost .novu-domain-visual,
  #novuPatientRecordHost .novu-encounter-visual,
  #novuPatientRecordHost .novu-domain-fluid,
  #novuPatientRecordHost .novu-procedure-orbit{
    animation:none!important;
    transform:none!important;
  }
}

/* Accessibility: clinical/card state remains visible without motion. */
@media (prefers-reduced-motion:reduce){
  #novuPatientRecordHost .novu-domain-visual,
  #novuPatientRecordHost .novu-encounter-visual,
  #novuPatientRecordHost .novu-domain-fluid,
  #novuPatientRecordHost .novu-procedure-orbit{
    animation:none!important;
    transition:none!important;
    transform:none!important;
  }
}

/* V77 document management + toast */
.novu-v77-doc-row{cursor:default!important}
.novu-v77-doc-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.novu-v77-doc-actions button{min-height:28px!important;height:28px!important;padding:0 9px!important;font-size:10px!important}
.novu-v77-danger{border-color:#e5a4a4!important;color:#b42318!important;-webkit-text-fill-color:#b42318!important;background:#fff!important}
.novu-v77-toast{position:fixed;right:24px;bottom:24px;z-index:100000;padding:11px 14px;border-radius:10px;background:#17324d;color:#fff;font-size:12px;font-weight:700;box-shadow:0 12px 35px rgba(15,23,42,.25);opacity:0;transform:translateY(8px);transition:.2s ease}
.novu-v77-toast.show{opacity:1;transform:translateY(0)}
@media print{.novu-v77-toast,.novu-v77-doc-actions{display:none!important}}

/* V78 Results Phase 1 + Medication History: display-only derived views. */
#novuPatientRecordHost .novu-header-actions [data-results]{border-color:#b7dce3;background:#f1fbfc;color:#087886;font-weight:800}
.novu-record-domain-panel .novu-domain-note{margin:0 0 8px;padding:8px 10px;border:1px solid #dbe8ee;border-radius:8px;background:#f8fbfc;color:#5e7485;font-size:9px;line-height:1.4}
.novu-record-domain-panel .novu-result-row small{white-space:normal;line-height:1.35}
@media print{#novuPatientRecordHost .novu-header-actions [data-results]{display:none!important}}


/* V79 shared attachment management + Results actions */
.novu-v79-result-actions{display:flex;gap:5px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.novu-v79-result-actions button{min-height:27px;height:27px;padding:0 8px;border:1px solid #bdd2df;border-radius:8px;background:#fff;color:#245a74;font-size:9px;font-weight:800;cursor:pointer}
.novu-v79-result-actions .novu-v77-danger{color:#b42318;border-color:#e3aaaa}
.novu-v79-doc-modal{position:fixed;inset:0;z-index:2147483000;background:rgba(8,28,42,.58);display:grid;place-items:center;padding:18px}
.novu-v79-doc-modal>section{width:min(620px,96vw);max-height:90vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:0 24px 80px rgba(5,25,40,.3);color:#17324d}
.novu-v79-doc-modal header{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 20px;border-bottom:1px solid #e1ebf1}.novu-v79-doc-modal header small{display:block;color:#178a98;font-size:10px;font-weight:900;letter-spacing:.1em}.novu-v79-doc-modal header h2{margin:3px 0 0;font-size:20px}.novu-v79-doc-modal header button{width:32px;height:32px;border:0;border-radius:9px;background:#eff5f8;font-size:20px;cursor:pointer}
.novu-v79-doc-fields{padding:18px 20px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.novu-v79-doc-fields label{display:grid;gap:6px;font-size:11px;font-weight:800;color:#4d6475}.novu-v79-doc-fields label.wide{grid-column:1/-1}.novu-v79-doc-fields input,.novu-v79-doc-fields textarea{width:100%;box-sizing:border-box;border:1px solid #c9d8e2;border-radius:9px;padding:9px 10px;font:inherit;color:#18364a;background:#fff}.novu-v79-doc-modal footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px 18px;border-top:1px solid #e7eef3}.novu-v79-doc-modal footer button{border:1px solid #bfd0dd;border-radius:9px;background:#fff;padding:8px 13px;font-weight:800;cursor:pointer}.novu-v79-doc-modal footer .primary{background:#0f8694;color:#fff;border-color:#0f8694}
.novu-v77-doc-actions button:disabled,.novu-v79-result-actions button:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:700px){.novu-v79-doc-fields{grid-template-columns:1fr}.novu-v79-doc-fields label.wide{grid-column:auto}.novu-v79-result-actions{justify-content:flex-start}}
@media print{.novu-v79-doc-modal,.novu-v79-result-actions{display:none!important}}
.novu-v79-doc-list{padding:12px 20px 20px;display:grid;gap:8px}.novu-v79-doc-list article{display:flex;justify-content:space-between;gap:14px;align-items:center;border:1px solid #dce7ee;border-radius:11px;padding:10px 11px;background:#fbfdfe}.novu-v79-doc-list article strong,.novu-v79-doc-list article small{display:block}.novu-v79-doc-list article small{margin-top:3px;color:#74889a;font-size:9px}.novu-v79-doc-list article>div:last-child{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.novu-v79-doc-list button{min-height:28px;border:1px solid #bdd2df;border-radius:8px;background:#fff;color:#245a74;padding:0 8px;font-size:9px;font-weight:800;cursor:pointer}.novu-v79-doc-list button:disabled{opacity:.4;cursor:not-allowed}.msoap-single-manage{margin-left:5px!important}
@media(max-width:700px){.novu-v79-doc-list article{align-items:flex-start;flex-direction:column}.novu-v79-doc-list article>div:last-child{justify-content:flex-start}}
.novu-result-group{margin:10px 0 14px}.novu-result-group>header{display:flex;align-items:center;justify-content:space-between;margin:0 0 6px;padding:0 2px;color:#294d63}.novu-result-group>header strong{font-size:11px;text-transform:uppercase;letter-spacing:.06em}.novu-result-group>header span{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;border-radius:999px;background:#eaf5f7;color:#0e7d89;font-size:9px;font-weight:900}

/* V82 — Blood Pressure is one composite measurement rendered as two related series. */
.novu-bp-trend-svg .systolic polyline,.novu-bp-trend-svg .systolic circle{stroke-width:2.4}
.novu-bp-trend-svg .diastolic polyline{stroke-dasharray:5 3;stroke-width:2.1}
.novu-bp-trend-svg .diastolic circle{stroke-width:2.1}
.novu-bp-trend-svg .novu-bp-legend text{font-size:8px;fill:currentColor}

/* =========================================================
   NOVU Hx Core Closure 01-10 — canonical Results/Timeline/Pending views
   ========================================================= */
#novuPatientRecordHost .novu-clinical-state{margin:0 18px 4px;padding:2px 10px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #d8e4ec;border-radius:8px;background:#f8fbfd;min-height:0;max-height:32px}
#novuPatientRecordHost .novu-clinical-state.needs-attention{border-color:#e1c784;background:#fffdf7}
#novuPatientRecordHost .novu-clinical-state>div:first-child{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap}
#novuPatientRecordHost .novu-clinical-state small{display:inline;font-size:11px;font-weight:600;line-height:1.1;letter-spacing:.03em;color:#64798b}
#novuPatientRecordHost .novu-clinical-state strong{display:inline;margin:0;font-size:12px;font-weight:600;line-height:1.1;color:#17324d}
#novuPatientRecordHost .novu-clinical-state small::after{content:" ·"}
#novuPatientRecordHost .novu-clinical-state-facts{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:nowrap;min-width:0}
#novuPatientRecordHost .novu-clinical-state-facts span{display:inline-flex;align-items:center;gap:3px;height:23px;box-sizing:border-box;padding:2px 6px;border:1px solid #dce6ee;border-radius:7px;background:#fff;color:#50677b;font-size:10.5px;line-height:1;white-space:nowrap}
#novuPatientRecordHost .novu-clinical-state-facts b{font-size:11px;color:#17324d}
#novuPatientRecordHost .novu-clinical-state-facts button{height:24px;min-height:24px;padding:0 8px;border:1px solid #b9cedd;border-radius:7px;background:#fff;color:#245a74;font:inherit;font-size:10.5px;font-weight:650;line-height:1;white-space:nowrap;cursor:pointer}
#novuPatientRecordHost .novu-clinical-state-facts button:hover{background:#f1f7fa}
@media(max-width:900px){#novuPatientRecordHost .novu-clinical-state{max-height:none;flex-wrap:wrap;padding:3px 8px}#novuPatientRecordHost .novu-clinical-state-facts{justify-content:flex-start;flex-wrap:wrap}}
.novu-result-status,.novu-result-notification{display:inline-flex;width:max-content;margin-top:5px;padding:3px 7px;border-radius:999px;font-size:10.5px;font-weight:700;border:1px solid #cbd9e5;background:#f7fafc;color:#486176}
.novu-result-status[data-result-state="needs review"],.novu-result-status[data-result-state="action needed"]{border-color:#e1bd72;background:#fff9ea;color:#775617}
.novu-result-status[data-result-state="reviewed"],.novu-result-status[data-result-state="completed"]{border-color:#abd5bf;background:#f2faf6;color:#286247}
.novu-result-notification{margin-left:5px;border-color:#d5b1db;background:#fbf5fc;color:#6f3979}
.novu-timeline-list{display:grid;gap:10px}
.novu-timeline-row{display:grid;grid-template-columns:minmax(108px,.25fr) minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px;border:1px solid #dce5ed;border-radius:12px;background:#fff}
.novu-timeline-row time{font-size:11px;font-weight:700;color:#60768a}
.novu-timeline-row div{display:grid;gap:3px;min-width:0}
.novu-timeline-row small{font-size:10px;font-weight:750;letter-spacing:.04em;color:#60768a;text-transform:uppercase}
.novu-timeline-row strong{font-size:13px;color:#17324d}
.novu-timeline-row p{margin:0;line-height:1.4;color:#425a6d;overflow-wrap:anywhere}
.novu-timeline-row span{font-size:10.5px;color:#6b7f91}
.novu-timeline-row>b{font-size:10.5px;font-weight:700;color:#486176}
.novu-result-workflow-modal{position:fixed;inset:0;z-index:100500;background:rgba(18,34,49,.48);display:grid;place-items:center;padding:18px}
.novu-result-workflow-modal>section{width:min(680px,96vw);max-height:min(760px,92vh);overflow:auto;background:#fff;border:1px solid #d7e1e9;border-radius:15px;box-shadow:0 24px 65px rgba(10,31,49,.26)}
.novu-result-workflow-modal header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px;border-bottom:1px solid #e4ebf0}
.novu-result-workflow-modal header small{display:block;font-size:10px;font-weight:800;letter-spacing:.05em;color:#657c90}
.novu-result-workflow-modal header h2{margin:3px 0 0;font-size:18px;color:#17324d}
.novu-result-workflow-modal header button{width:34px;height:34px;border-radius:9px}
.novu-result-workflow-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:18px}
.novu-result-workflow-body label{display:grid;gap:6px;font-size:11px;font-weight:700;color:#496277}
.novu-result-workflow-body label.wide,.novu-result-provenance{grid-column:1/-1}
.novu-result-workflow-body select,.novu-result-workflow-body input,.novu-result-workflow-body textarea{width:100%;min-height:40px;padding:8px 10px;border:1px solid #bdcedb;border-radius:9px;background:#fff;color:#17324d;font:inherit}
.novu-result-workflow-body textarea{min-height:84px;resize:vertical}
.novu-result-provenance{display:flex;flex-wrap:wrap;gap:6px 10px;padding:10px 12px;border:1px solid #e1e8ee;border-radius:10px;background:#f8fbfd;color:#5a7083;font-size:10.5px}
.novu-result-provenance b{width:100%;font-size:11px;color:#38546a}
.novu-result-workflow-modal footer{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:13px 18px;border-top:1px solid #e4ebf0}
.novu-result-workflow-modal footer button{min-height:38px;padding:0 12px;border-radius:9px}
.novu-result-workflow-modal footer .primary{background:#176fc1;color:#fff;border-color:#176fc1}
@media(max-width:760px){
  .novu-timeline-row{grid-template-columns:1fr}
  .novu-result-workflow-body{grid-template-columns:1fr}
  .novu-result-workflow-body label.wide,.novu-result-provenance{grid-column:auto}
}
@media print{.novu-result-workflow-modal{display:none!important}}


/* CORE71 50 longitudinal comparison — derived from canonical trend points */
.novu-trend-comparison{
  margin-top:4px;
  padding:4px 8px;
  border:1px solid #d8e3eb;
  border-radius:9px;
  background:#f8fbfd;
  color:#415d72;
  font-size:var(--novu-record-secondary-size,12px);
  line-height:1.25;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap
}
.novu-trend-comparison.has-data{color:#254f68}
.novu-trend-comparison.no-data{color:#738797}


.novu-followup-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:start;padding:12px;border:1px solid #dce5ed;border-radius:12px;background:#fff}.novu-followup-row>div:first-child{display:grid;gap:5px}.novu-followup-row small{line-height:1.45;color:#526a7c}.novu-followup-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;max-width:360px}.novu-followup-status{padding:4px 8px;border:1px solid #d9c37e;border-radius:999px;background:#fffaf0;font-size:11px;font-weight:650}.novu-followup-actions button,.novu-followup-manage-actions button{min-height:40px;padding:7px 10px;border:1px solid #bfd0dd;border-radius:9px;background:#fff;color:#245a74;font:inherit;cursor:pointer}.novu-followup-dialog{width:min(620px,calc(100vw - 32px));max-height:calc(100dvh - 32px);border:0;border-radius:14px;padding:0;box-shadow:0 18px 50px rgba(17,48,73,.24)}.novu-followup-dialog::backdrop{background:rgba(13,34,50,.38)}.novu-followup-dialog header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid #dce5ed}.novu-followup-dialog-body{display:grid;gap:12px;padding:16px;overflow-y:auto}.novu-followup-dialog label{display:grid;gap:5px}.novu-followup-dialog input{min-height:42px;border:1px solid #c7d6e1;border-radius:8px;padding:7px 9px;font:inherit}.novu-followup-manage-actions{display:flex;gap:8px;flex-wrap:wrap}.novu-followup-manage-actions .danger{border-color:#dfb5b5;color:#8b2e2e}@media(max-width:820px){.novu-followup-row{grid-template-columns:1fr}.novu-followup-actions{justify-content:flex-start;max-width:none}}

/* TABLET RESPONSIVE CERTIFICATION GATE — Patient Record deliberate reflow */
#novuPatientRecordHost .novu-record-window{max-width:100vw;max-height:100dvh}
#novuPatientRecordHost button,#novuPatientRecordHost [role="button"]{min-height:44px}
#novuPatientRecordHost .novu-record-main{min-width:0;overflow-x:hidden}
#novuPatientRecordHost .novu-summary>* ,#novuPatientRecordHost .novu-vital,#novuPatientRecordHost .novu-domain{min-width:0}

@media(max-width:1023px){
 #novuPatientRecordHost .novu-summary{grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
 #novuPatientRecordHost .novu-vitals{grid-template-columns:repeat(2,minmax(0,1fr))}
 #novuPatientRecordHost .novu-domain-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 #novuPatientRecordHost .novu-record-body{grid-template-columns:1fr}
 #novuPatientRecordHost .novu-recent-card{display:block!important}
}
@media(max-width:820px){
 #novuPatientRecordHost .novu-record-app{grid-template-columns:68px minmax(0,1fr)!important}
 #novuPatientRecordHost .novu-record-sidebar{width:68px;min-width:68px}
 #novuPatientRecordHost .novu-record-brand span,#novuPatientRecordHost .novu-record-nav button span:last-child,#novuPatientRecordHost .novu-record-nav small,#novuPatientRecordHost .novu-record-user>span,#novuPatientRecordHost .novu-record-user>strong{display:none!important}
 #novuPatientRecordHost .novu-record-nav button{justify-content:center!important;padding-inline:4px}
 #novuPatientRecordHost .novu-record-user button{font-size:0;min-width:44px;padding:0}
 #novuPatientRecordHost .novu-record-user [data-lock-screen]:first-letter{font-size:18px}
 #novuPatientRecordHost .novu-summary,#novuPatientRecordHost .novu-vitals,#novuPatientRecordHost .novu-domain-grid{grid-template-columns:1fr}
 #novuPatientRecordHost .novu-patient-meta{display:flex;flex-wrap:wrap;gap:6px 10px}
}


/* Patient Trends — canonical controls and internal expanded presentation */
.novu-trend-controls{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.novu-trend-controls label{display:flex;align-items:center;gap:4px;font-size:9px;color:#536b7d;white-space:nowrap}
.novu-trend-controls select,.novu-trend-controls button{height:26px;border:1px solid #d9e6f2;border-radius:7px;background:#f7fafc;color:#34566e;font-size:10px;padding:0 7px}
.novu-trend-point-detail{position:absolute;z-index:3;right:10px;bottom:8px;max-width:min(320px,55%);display:flex;align-items:flex-end;gap:8px;padding:8px 9px;border:1px solid #cbdbe6;border-radius:9px;background:#fff;box-shadow:0 5px 16px rgba(26,63,88,.12);font-size:9px;color:#486276}
.novu-trend-point-detail>div{display:grid;gap:2px}.novu-trend-point-detail strong{font-size:10px;color:#193f58}.novu-trend-point-detail span{display:block}.novu-trend-point-detail button{min-height:28px;border:1px solid #c6d8e4;border-radius:7px;background:#f7fafc;color:#176b8a;font-size:9px;white-space:nowrap}
.novu-trends.is-expanded{position:fixed;z-index:2147482400;inset:46px 18px 18px calc(var(--novu-record-sidebar-width,190px) + 18px);height:auto;margin:0;padding:16px;border-radius:14px;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;background:#fff;box-shadow:0 18px 50px rgba(15,45,67,.22)}
.novu-trends.is-expanded .novu-card-title{align-items:flex-start;flex-wrap:wrap}.novu-trends.is-expanded .novu-card-title h2{font-size:14px}.novu-trends.is-expanded .novu-trend-toolbar{order:3;flex-basis:100%;padding-top:4px}.novu-trends.is-expanded .novu-trend-toolbar button{font-size:11px;min-height:36px;padding:0 8px}.novu-trends.is-expanded .novu-trend-controls select,.novu-trends.is-expanded .novu-trend-controls button,.novu-trends.is-expanded .novu-trend-download button{height:36px;font-size:11px}.novu-trends.is-expanded .novu-trend-chart{height:auto;min-height:260px}.novu-trends.is-expanded .novu-trend-comparison{font-size:12px;padding:8px 10px}.novu-trends.is-expanded .novu-trend-point-detail{position:static;max-width:none;justify-content:space-between;font-size:11px;box-shadow:none}.novu-trends.is-expanded .novu-trend-point-detail strong{font-size:12px}
@media(max-width:1023px){.novu-trends.is-expanded{inset:46px 12px 12px 12px}.novu-trend-point-detail{max-width:70%}}
@media(max-width:820px){.novu-card-title{flex-wrap:wrap}.novu-trend-toolbar{order:4;flex-basis:100%}.novu-trend-controls{margin-left:auto}.novu-trends.is-expanded{inset:40px 8px 8px}.novu-trends.is-expanded .novu-trend-chart{min-height:220px}.novu-trend-point-detail{position:static;max-width:none;margin-top:4px}.novu-trend-download button{min-width:38px}}

/* TRUE CORE Phase 1C — fluid viewport, collapsible encounter overview, BP series legend, glucose context. */
#novuPatientRecordHost{width:100dvw!important;max-width:none!important;right:0!important;box-sizing:border-box}
#novuPatientRecordHost .novu-record-window{width:100%!important;max-width:none!important}
#novuPatientRecordHost .novu-record-app{width:100%;min-width:0}
#novuPatientRecordHost .novu-record-main{width:100%;max-width:none;box-sizing:border-box}
#novuPatientRecordHost .novu-record-body.preview-collapsed{grid-template-columns:minmax(0,1fr) minmax(190px,.24fr)}
#novuPatientRecordHost .novu-record-body.preview-collapsed .novu-preview-card{display:none!important}
#novuPatientRecordHost .novu-recent-card [data-preview-show]{font-size:8px;min-height:28px;padding:0 6px;border:1px solid #d4e2eb;border-radius:6px;background:var(--novu-surface,#fff);color:var(--novu-teal-700,#087886)}
.novu-bp-trend-svg .novu-bp-legend .legend-systolic{stroke:#16808a;fill:#fff;stroke-width:2.2}
.novu-bp-trend-svg .novu-bp-legend .legend-diastolic{stroke:#16808a;fill:#fff;stroke-width:2;stroke-dasharray:4 2}
.novu-glucose-context{display:inline-flex;align-items:center;gap:3px;margin-top:2px;padding:2px 5px;border:1px solid #d9e3eb;border-radius:999px;font-size:8px;line-height:1.1;color:#536b7d;background:#f8fbfd;white-space:nowrap}
.novu-glucose-context.fasting{border-color:#a8d6c1;background:#f1faf5;color:#276449}
.novu-glucose-context.nonfasting{border-color:#e1c98b;background:#fffaf0;color:#765b20}
@media(max-width:1279px){#novuPatientRecordHost .novu-record-body,#novuPatientRecordHost .novu-record-body.preview-collapsed{grid-template-columns:minmax(0,1fr) minmax(190px,.28fr)}#novuPatientRecordHost .novu-preview-card{position:fixed;right:0;top:34px;bottom:0;width:min(360px,44vw);z-index:20;display:none;overflow:auto}#novuPatientRecordHost .novu-preview-card.open{display:block}}
@media(max-width:900px){#novuPatientRecordHost .novu-record-body,#novuPatientRecordHost .novu-record-body.preview-collapsed{grid-template-columns:1fr}#novuPatientRecordHost .novu-preview-card{width:min(420px,92vw)}#novuPatientRecordHost .novu-vitals{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))!important}#novuPatientRecordHost .novu-domain-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important}}
/* TRUE CORE 1J — canonical Patient Context / Profile drawer. */
#novuPatientRecordHost .novu-context-badges{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
#novuPatientRecordHost .novu-context-badges button{min-height:32px;border:1px solid #c9d9e7;background:linear-gradient(180deg,#fff,#f4f8fb);border-radius:9px;padding:0 10px;font-size:11px;font-weight:750;color:#17324a;box-shadow:0 2px 7px rgba(28,65,95,.06);cursor:pointer}
#novuPatientRecordHost .novu-context-badges button:hover{border-color:#7bbdca;box-shadow:0 5px 14px rgba(28,65,95,.10);transform:translateY(-1px)}
#novuPatientRecordHost .novu-context-badges b{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:5px;border-radius:6px;background:#eaf3f7;color:#0c6974}
#novuPatientRecordHost .novu-context-badges .context-allergy b{background:#fff0e8;color:#a44b18}
#novuPatientRecordHost .novu-context-badges .context-chronic b{background:#edf0fb;color:#4b5fa7}
#novuPatientRecordHost .novu-context-badges .context-info{border-color:#7bc8d2;color:#087886}
#novuPatientRecordHost .novu-patient-profile-drawer{position:absolute;z-index:45;right:0;top:34px;bottom:0;width:min(390px,38vw);background:var(--novu-surface,#fff);border-left:1px solid #d8e4ec;box-shadow:-16px 0 34px rgba(19,47,68,.15);display:flex;flex-direction:column;animation:novuProfileIn .18s ease-out}
@keyframes novuProfileIn{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
#novuPatientRecordHost .novu-patient-profile-drawer>header{display:flex;justify-content:space-between;align-items:center;padding:15px 16px 8px}#novuPatientRecordHost .novu-patient-profile-drawer h2{margin:0;font-size:17px}#novuPatientRecordHost .novu-patient-profile-drawer>header button{border:0;background:transparent;font-size:25px;cursor:pointer}
#novuPatientRecordHost .novu-patient-profile-drawer>nav{display:grid;grid-template-columns:repeat(3,1fr);padding:0 14px;border-bottom:1px solid #e2e9ee}#novuPatientRecordHost .novu-patient-profile-drawer>nav button{border:0;border-bottom:2px solid transparent;background:transparent;padding:10px 4px;font-size:10px;font-weight:750;cursor:pointer}#novuPatientRecordHost .novu-patient-profile-drawer>nav button.active{color:#087886;border-color:#168b95}
#novuPatientRecordHost .novu-profile-scroll{overflow:auto;padding:10px 14px;flex:1}#novuPatientRecordHost .novu-profile-scroll section,#novuPatientRecordHost .novu-profile-scroll details{border:1px solid #dfe8ee;border-radius:9px;background:#fff;margin-bottom:9px;padding:10px}#novuPatientRecordHost .novu-profile-section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11px}#novuPatientRecordHost .novu-profile-section-title button{border:1px solid #c9dce7;background:#f7fbfd;border-radius:6px;color:#087886;font-size:9px;padding:4px 7px}
#novuPatientRecordHost .novu-profile-line{display:grid;grid-template-columns:115px 1fr;gap:8px;padding:5px 0;font-size:10px}#novuPatientRecordHost .novu-profile-line span{color:#64798b}#novuPatientRecordHost .novu-profile-line strong{font-weight:600;overflow-wrap:anywhere}#novuPatientRecordHost .novu-profile-scroll summary{font-size:10px;font-weight:750;cursor:pointer;padding:3px}
#novuPatientRecordHost .novu-profile-clinical article{padding:8px 0;border-bottom:1px solid #edf1f4}#novuPatientRecordHost .novu-profile-clinical article:last-child{border:0}#novuPatientRecordHost .novu-profile-clinical b{font-size:10px}#novuPatientRecordHost .novu-profile-clinical b span{display:inline-grid;place-items:center;min-width:18px;height:18px;border-radius:6px;background:#edf3f6;color:#087886}#novuPatientRecordHost .novu-profile-clinical p{font-size:9px;margin:4px 0;color:#30495c}
#novuPatientRecordHost .novu-profile-history-row{width:100%;display:grid;grid-template-columns:80px 1fr;text-align:left;gap:3px 8px;border:0;border-bottom:1px solid #edf1f4;background:transparent;padding:9px 2px;cursor:pointer}#novuPatientRecordHost .novu-profile-history-row span,#novuPatientRecordHost .novu-profile-history-row small{font-size:9px;color:#64798b}#novuPatientRecordHost .novu-profile-history-row small{grid-column:2}
#novuPatientRecordHost .novu-patient-profile-drawer>footer{padding:10px 14px 14px}#novuPatientRecordHost .novu-patient-profile-drawer>footer button{width:100%;min-height:40px;border:0;border-radius:7px;background:#087f8c;color:#fff;font-weight:800;cursor:pointer}
.novu-patient-profile-editor{width:min(820px,92vw);max-height:88vh;border:0;border-radius:14px;padding:0;box-shadow:0 25px 70px rgba(12,35,52,.25)}.novu-patient-profile-editor::backdrop{background:rgba(13,33,49,.42)}.novu-patient-profile-editor header,.novu-patient-profile-editor footer{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid #e1e8ed}.novu-patient-profile-editor footer{border-top:1px solid #e1e8ed;border-bottom:0;justify-content:flex-end;gap:8px}.novu-patient-profile-editor h2{margin:2px 0}.novu-profile-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;padding:16px 18px;overflow:auto;max-height:62vh}.novu-profile-editor-grid label{font-size:11px;font-weight:700}.novu-profile-editor-grid input{display:block;width:100%;box-sizing:border-box;margin-top:5px;min-height:38px;border:1px solid #b9cfe0;border-radius:8px;padding:7px 9px;background:#f8fbfd}.novu-patient-profile-editor button{min-height:36px;border:1px solid #cbd9e3;background:#fff;border-radius:7px;padding:0 12px}.novu-patient-profile-editor button.primary{background:#087f8c;color:#fff;border-color:#087f8c}
@media(max-width:1180px){#novuPatientRecordHost .novu-patient-profile-drawer{width:min(420px,52vw)}}
@media(max-width:760px){#novuPatientRecordHost .novu-patient-profile-drawer{position:fixed;top:34px;width:100vw;max-width:none}.novu-profile-editor-grid{grid-template-columns:1fr}}


/* TRUE CORE PHASE 1L — visual integrity consolidation */
#novuPatientRecordHost .novu-patient-avatar-wrap{width:64px;align-self:flex-start;gap:5px;position:relative;display:grid;justify-items:center}
#novuPatientRecordHost .novu-patient-avatar{width:52px;height:52px;cursor:default}
#novuPatientRecordHost .novu-photo-edit{position:static;transform:none;min-height:24px;height:auto;padding:3px 7px;border-radius:7px;font-size:8px;line-height:1.1;white-space:nowrap;display:flex;align-items:center;gap:3px}
#novuPatientRecordHost .novu-photo-edit:hover,#novuPatientRecordHost .novu-photo-edit:focus-visible{border-color:#77b9c4;outline:2px solid color-mix(in srgb,#168b95 30%,transparent);outline-offset:1px}
#novuPatientRecordHost .novu-context-badges{flex:0 1 auto;justify-content:flex-start}
#novuPatientRecordHost .novu-context-badges button{background:var(--novu-surface,#fff);border-color:var(--novu-border,#c9d9e7);box-shadow:0 2px 8px rgba(28,65,95,.07);color:var(--novu-text,#17324a)}
#novuPatientRecordHost .novu-context-badges button .context-icon{font-size:12px;color:var(--novu-teal-700,#087886)}
#novuPatientRecordHost .novu-context-badges .context-chronic,#novuPatientRecordHost .novu-context-badges .context-allergy,#novuPatientRecordHost .novu-context-badges .context-neutral,#novuPatientRecordHost .novu-context-badges .context-info{background:linear-gradient(180deg,var(--novu-surface,#fff),color-mix(in srgb,var(--novu-surface,#fff) 92%,var(--novu-teal-700,#087886) 8%));color:var(--novu-text,#17324a);border-color:color-mix(in srgb,var(--novu-border,#c9d9e7) 70%,var(--novu-teal-700,#087886) 30%)}
#novuPatientRecordHost .novu-context-badges b{background:var(--novu-teal-700,#087886)!important;color:#fff!important;-webkit-text-fill-color:#fff!important}
#novuPatientRecordHost .novu-bp-trend-svg{min-height:150px;overflow:visible}
#novuPatientRecordHost .novu-bp-series-label{color:var(--novu-teal-700,#087886)}
#novuPatientRecordHost .novu-bp-series-label line,#novuPatientRecordHost .novu-bp-series-label circle{stroke:currentColor;stroke-width:2;fill:var(--novu-surface,#fff)}
#novuPatientRecordHost .novu-bp-series-label text{fill:var(--novu-text,#17324a);font-size:11px;font-weight:800}
@media(max-width:900px){#novuPatientRecordHost .novu-patient-avatar-wrap{width:58px}#novuPatientRecordHost .novu-photo-edit span{display:none}#novuPatientRecordHost .novu-photo-edit{min-width:34px;justify-content:center}}
/* TRUE CORE 1N — visual integrity hardening. Edit is structurally outside the photo. */
#novuPatientRecordHost .novu-patient-avatar-wrap{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;width:68px!important;gap:6px!important}
#novuPatientRecordHost .novu-photo-edit{position:relative!important;inset:auto!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;transform:none!important;margin:0!important;z-index:1!important;min-height:28px!important}
#novuPatientRecordHost .novu-patient-avatar{flex:0 0 auto!important}
#novuPatientRecordHost .novu-bp-trend-svg{min-height:176px;overflow:visible}
#novuPatientRecordHost .novu-bp-grid line{stroke:currentColor;stroke-opacity:.09;stroke-width:.7}
#novuPatientRecordHost .novu-bp-grid text,#novuPatientRecordHost .novu-bp-date,#novuPatientRecordHost .novu-bp-unit{fill:currentColor;opacity:.62;font-size:7px}
#novuPatientRecordHost .novu-bp-series-label text{fill:currentColor;font-size:8px;font-weight:700}
#novuPatientRecordHost .novu-bp-series-label line,#novuPatientRecordHost .novu-bp-series-label circle{stroke:#16808a;fill:#fff;stroke-width:2}


/* TRUE CORE PHASE 1O — root visual/navigation repair.
   The avatar contains NO interactive control. Edit is a sibling action beside the patient name. */
#novuPatientRecordHost .novu-patient-avatar-wrap{width:58px!important;display:block!important;position:relative!important;align-self:center!important}
#novuPatientRecordHost .novu-patient-avatar{width:52px!important;height:52px!important;margin:0 auto!important}
#novuPatientRecordHost .novu-patient-name-row{display:flex;align-items:center;gap:8px;min-width:0}
#novuPatientRecordHost .novu-patient-name-row h1{margin:0!important;min-width:0}
#novuPatientRecordHost .novu-patient-edit-action{position:static!important;inset:auto!important;transform:none!important;margin:0!important;z-index:auto!important;min-height:28px!important;height:28px!important;padding:0 9px!important;border:1px solid var(--novu-border,#cbdbe6)!important;border-radius:8px!important;background:var(--novu-surface,#fff)!important;color:var(--novu-teal-700,#087886)!important;font-size:9px!important;font-weight:800!important;white-space:nowrap!important;box-shadow:none!important}
#novuPatientRecordHost .novu-provider-home-record{margin-bottom:6px;background:rgba(30,184,194,.12);border:1px solid rgba(103,216,222,.24);color:#fff}
#novuPatientRecordHost .novu-provider-home-record:hover{background:rgba(30,184,194,.22)}
@media(max-width:1023px){#novuPatientRecordHost .novu-patient-edit-action{min-width:38px!important;padding:0 7px!important}#novuPatientRecordHost .novu-provider-home-record{margin-bottom:8px}}

/* TRUE CORE PHASE 1Q — canonical header actions.
   Patient avatar is presentation-only. No edit action may be rendered inside or adjacent-overlapping it. */
#novuPatientRecordHost .novu-patient-avatar-wrap{position:relative!important;overflow:visible!important;flex:0 0 58px!important;width:58px!important}
#novuPatientRecordHost .novu-patient-avatar{position:relative!important;width:52px!important;height:52px!important;margin:0 auto!important;overflow:hidden!important}
#novuPatientRecordHost .novu-patient-name-row{display:block!important}
#novuPatientRecordHost .novu-header-actions [data-photo-edit],
#novuPatientRecordHost .novu-header-actions [data-patient-info],
#novuPatientRecordHost .novu-header-actions [data-provider-home]{position:static!important;inset:auto!important;transform:none!important;margin:0!important}
#novuPatientRecordHost .novu-provider-home-header{border-color:#8bc9d1!important;background:#eefbfc!important;color:#086d78!important;-webkit-text-fill-color:#086d78!important}

/* TRUE CORE 1S — canonical vital axes + patient photo preview; adaptive tablet-safe geometry. */
.novu-vital-trend-svg,.novu-bp-trend-svg{width:100%;height:auto;min-height:220px;overflow:visible}
.novu-vital-grid line,.novu-bp-grid line{stroke:rgba(111,132,151,.22);stroke-width:1}
.novu-vital-grid text,.novu-bp-grid text,.novu-vital-date,.novu-bp-date,.novu-vital-unit,.novu-bp-unit{fill:#66798d;font-size:8px}
.novu-vital-series polyline{fill:none;stroke:var(--novu-trend,#14828c);stroke-width:2.5;vector-effect:non-scaling-stroke}
.novu-vital-series circle{fill:#fff;stroke:var(--novu-trend,#14828c);stroke-width:2.5;vector-effect:non-scaling-stroke}
.novu-photo-preview{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;border:0;z-index:2147483647;background:rgba(4,18,31,.72);display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));backdrop-filter:blur(5px)}
.novu-photo-preview>section{width:min(92vw,720px);max-height:92dvh;background:var(--novu-surface,#fff);border-radius:18px;overflow:hidden;box-shadow:0 28px 80px rgba(0,0,0,.34);display:grid;grid-template-rows:auto minmax(0,1fr)}
.novu-photo-preview header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--novu-border,#dbe6ee)}
.novu-photo-preview header div{display:grid}.novu-photo-preview header span{font-size:12px;opacity:.7}.novu-photo-preview header button{min-width:44px;min-height:44px;border-radius:10px}
.novu-photo-preview-stage{min-height:0;display:grid;place-items:center;padding:18px;background:rgba(120,140,160,.08)}
.novu-photo-preview-stage img{display:block;max-width:100%;max-height:calc(92dvh - 92px);width:auto;height:auto;object-fit:contain;border-radius:12px}
.novu-patient-avatar[data-photo-preview]{cursor:zoom-in!important;touch-action:manipulation}
@media(max-width:900px){.novu-vital-trend-svg,.novu-bp-trend-svg{min-width:640px}.novu-trend-chart-wrap{overflow-x:auto;overscroll-behavior-inline:contain}.novu-photo-preview{padding:12px}.novu-photo-preview>section{width:96vw;max-height:90dvh}}

/* Phase 1T — closed-loop appointment outcomes */
.novu-provider-home-kpis{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important}
.novu-work-status.no-show{background:#fff4e5;color:#8a4b08;border-color:#f0c98b}
.novu-work-status.cancelled{background:#f7f7f8;color:#5f6875;border-color:#d9dde3}
.novu-work-status.rescheduled{background:#eef5ff;color:#245a9b;border-color:#b9d1f1}
.novu-outcomes-list article>div:nth-child(2) small{display:block;margin-top:4px;color:#6b7c93;font-size:11px}
@media(max-width:1023px){.novu-provider-home-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.novu-outcomes-list article{grid-template-columns:auto minmax(0,1fr);gap:10px}.novu-outcomes-list .novu-work-status,.novu-outcomes-list .novu-work-actions{grid-column:2}}
@media(max-width:640px){.novu-provider-home-kpis{grid-template-columns:1fr!important}}

/* TRUE CORE PHASE 1U — Patient Trends owns its full vertical canvas.
   The record page already scrolls; never let chart/comparison overflow onto the record background. */
#novuPatientRecordHost .novu-trends{
  height:auto!important;
  min-height:0!important;
  overflow:visible!important;
  display:flex!important;
  flex-direction:column!important;
  background:var(--novu-surface,#fff)!important;
}
#novuPatientRecordHost .novu-trend-chart{
  height:auto!important;
  min-height:250px!important;
  flex:0 0 auto!important;
  background:var(--novu-surface,#fff)!important;
  position:relative!important;
}
#novuPatientRecordHost .novu-trend-chart svg{
  display:block!important;
  width:100%!important;
  min-height:250px!important;
  background:transparent!important;
}
#novuPatientRecordHost .novu-trend-comparison{
  position:static!important;
  order:3!important;
  flex:0 0 auto!important;
  margin-top:10px!important;
  margin-bottom:0!important;
  background:var(--novu-surface,#fff)!important;
}
#novuPatientRecordHost .novu-trend-detail-host{
  order:4!important;
  flex:0 0 auto!important;
  background:var(--novu-surface,#fff)!important;
}
#novuPatientRecordHost .novu-trends.is-expanded{
  overflow:auto!important;
  overscroll-behavior:contain;
}
#novuPatientRecordHost .novu-trends.is-expanded .novu-trend-chart{
  min-height:clamp(340px,58dvh,680px)!important;
  flex:1 0 auto!important;
}
#novuPatientRecordHost .novu-trends.is-expanded .novu-trend-chart svg{
  min-height:clamp(340px,58dvh,680px)!important;
}
@media(max-width:1023px){
  #novuPatientRecordHost .novu-trend-chart,
  #novuPatientRecordHost .novu-trend-chart svg{min-height:230px!important}
  #novuPatientRecordHost .novu-trends.is-expanded .novu-trend-chart,
  #novuPatientRecordHost .novu-trends.is-expanded .novu-trend-chart svg{min-height:clamp(300px,54dvh,560px)!important}
}
@media(max-width:820px){
  #novuPatientRecordHost .novu-trend-chart,
  #novuPatientRecordHost .novu-trend-chart svg{min-height:220px!important}
  #novuPatientRecordHost .novu-trend-comparison{margin-top:8px!important}
}
/* Phase 1V — Clinical Time Machine change-point navigation */
.novu-time-machine{display:grid;gap:16px}.novu-time-change-strip{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;padding:12px;border:1px solid #d9e6ee;border-radius:14px;background:#fff}.novu-time-change-strip>strong{width:100%}.novu-time-change-strip>span{font-size:12px;color:#63788a}.novu-time-change-strip button{display:grid;gap:2px;min-width:130px;padding:9px 12px;border:1px solid #c9dbe6;border-radius:12px;background:#f8fbfd;text-align:left}.novu-time-change-strip button.is-treatment{border-color:#82c8cf;background:#f1fbfb}.novu-time-change-strip button b{color:#126f79}.novu-time-change-strip button small{color:#60788b}.novu-time-select{display:grid;gap:6px;font-weight:700}.novu-time-select select{width:100%;padding:11px;border:1px solid #b9d2e1;border-radius:10px;background:#fff}.novu-time-snapshot{display:grid;gap:14px}.novu-time-snapshot section{border-top:1px solid #e1e9ee;padding-top:12px}.novu-time-delta{border:1px solid #b9dfe2!important;border-radius:14px;padding:14px!important;background:#f8fdfd}.novu-time-change{display:grid;gap:3px;padding:9px 0;border-bottom:1px solid #e1edef}.novu-time-change:last-of-type{border-bottom:0}.novu-time-change b{color:#276173}.novu-time-change.is-treatment b{color:#087783}.novu-time-compare{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.novu-time-compare button{min-height:42px}.novu-time-vitals{display:flex;gap:8px;flex-wrap:wrap}.novu-time-vitals span{display:grid;padding:8px 10px;border:1px solid #dce7ed;border-radius:10px;min-width:82px}
@media(max-width:900px){.novu-time-change-strip button{flex:1 1 160px}.novu-time-compare button{flex:1 1 180px}}
@media(pointer:coarse){.novu-time-change-strip button,.novu-time-compare button,.novu-time-select select{min-height:46px}}


/* Clinical Time Machine — canonical Patient Record ownership. */
.novu-time-snapshot-actions{display:flex;justify-content:flex-end;padding-top:4px}.novu-time-snapshot-actions button{min-height:44px;border:1px solid #087f8c;border-radius:10px;padding:10px 16px;background:#087f8c;color:#fff;font-weight:800;cursor:pointer}.novu-time-comparison{display:grid;gap:12px;border:1px solid #b9dfe2;border-radius:14px;padding:14px;background:#f6fbfc}.novu-time-comparison-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.novu-time-comparison-head small{font-size:10px;font-weight:850;letter-spacing:.08em;color:#087783}.novu-time-comparison-head h3{margin:2px 0 0}.novu-time-comparison-head button{min-height:40px;border:1px solid #bfd4df;border-radius:9px;background:#fff;padding:8px 12px;font-weight:700}.novu-time-comparison-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.novu-time-state-card{display:grid;align-content:start;gap:12px;border:1px solid #d5e3ea!important;border-radius:12px!important;padding:14px!important;background:#fff!important}.novu-time-state-card>header{padding:0!important;background:transparent!important}.novu-time-state-card>header small{font-size:10px;font-weight:850;letter-spacing:.08em;color:#5d7385}.novu-time-state-card>header h4{font-size:16px;margin:3px 0}.novu-time-state-card>header p{margin:0;color:#5d7385}.novu-time-state-card>div{display:grid;gap:7px;border-top:1px solid #e6edf2;padding-top:10px}.novu-time-state-card ul{margin:0;padding-left:20px}.novu-time-compare button{border:1px solid #087f8c;border-radius:9px;background:#fff;color:#086c76;padding:9px 12px;font-weight:800;cursor:pointer}
@media(max-width:900px){.novu-time-comparison-grid{grid-template-columns:1fr}.novu-time-comparison-head{align-items:flex-start;flex-direction:column}.novu-time-comparison-head button,.novu-time-snapshot-actions button{width:100%}}
@media(pointer:coarse){.novu-time-snapshot-actions button,.novu-time-comparison-head button,.novu-time-compare button{min-height:48px}}

/* ROOT FIX — native dialog top layer keeps patient photo above the Medical Record regardless of stacking contexts. */
.novu-photo-preview::backdrop{background:rgba(4,18,31,.72);backdrop-filter:blur(5px)}
.novu-photo-preview[open]{display:grid}

/* ============================================================================
   Dark mode — Phase 3: Patient Record, every vital sign, every domain card,
   every encounter row, the trends chart, and the preview panel. Root pattern
   found throughout this file: nearly every surface (.novu-domain, .novu-card,
   .novu-recent-item, .novu-preview) hardcodes background:#fff with no theme
   awareness at all, matching the exact same class of bug fixed in Settings/
   SOAP earlier -- this file simply never received any dark-mode pass before.
   ============================================================================ */
html[data-nx-theme="dark"] #novuPatientRecordHost{background:#0b1118}
html[data-nx-theme="dark"] .novu-record-main{background:#0b1118;color:#e7eef5}
html[data-nx-theme="dark"] .novu-patient-header{color:#e7eef5}
html[data-nx-theme="dark"] .novu-patient-meta span{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-summary{background:linear-gradient(100deg,#0e3a44,#123247 56%,#1c2a4a)!important}
html[data-nx-theme="dark"] .novu-summary>div{border-right-color:rgba(160,190,210,.14)!important}
html[data-nx-theme="dark"] .novu-summary small{color:#a9c2d4!important;-webkit-text-fill-color:#a9c2d4!important}
html[data-nx-theme="dark"] .novu-summary strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}

/* Every vital sign: icon circle, label, value, unit -- all eight
   (BP/HR/RR/SpO2/Temp/Weight/BMI/Glucose) share these same classes. */
html[data-nx-theme="dark"] .novu-vital-icon{background:#16334c!important;border-color:#2c4d6d!important;color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-vital small{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-vital strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-vital em{color:#7d94a8!important;-webkit-text-fill-color:#7d94a8!important}

/* Clinical state banner + facts row */
html[data-nx-theme="dark"] .novu-clinical-state{background:#131c26!important;border-color:#2c4257!important}
html[data-nx-theme="dark"] .novu-clinical-state.needs-attention{background:#2a2412!important;border-color:#5c4c1f!important}
html[data-nx-theme="dark"] .novu-clinical-state small{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-clinical-state strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-clinical-state-facts span{background:#16334c!important;border-color:#28496a!important;color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}
html[data-nx-theme="dark"] .novu-clinical-state-facts b{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-clinical-state-facts button{background:#1c3f5c!important;border-color:#33587c!important;color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}

/* Domain grid: Encounters/Diagnoses/Medications/Allergies/Laboratory/
   Imaging/Procedures/Documents -- all eight share .novu-domain. */
html[data-nx-theme="dark"] .novu-domain{background:#131c26!important;border-color:#2c4257!important;box-shadow:none!important}
html[data-nx-theme="dark"] .novu-domain:hover{border-color:#3a577a!important}
html[data-nx-theme="dark"] .novu-domain-icon{background:#16334c!important;color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-domain h3{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-domain b{color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-domain p{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-domain button{color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}

/* Trends card + chart */
html[data-nx-theme="dark"] .novu-card{background:#131c26!important;border-color:#2c4257!important;box-shadow:none!important}
html[data-nx-theme="dark"] .novu-card-title h2{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-card-title button{color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-trend-toolbar button{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-trend-toolbar button.active{color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-trend-chart circle{fill:#131c26!important}
html[data-nx-theme="dark"] .novu-empty{color:#7d94a8!important;-webkit-text-fill-color:#7d94a8!important}

/* Recent encounters list + preview panel (right rail) */
html[data-nx-theme="dark"] .novu-recent-card{background:#131c26!important;border-color:#2c4257!important}
html[data-nx-theme="dark"] .novu-recent-item{background:#131c26!important;border-bottom-color:#233c52!important;-webkit-text-fill-color:#e7eef5!important;color:#e7eef5!important}
html[data-nx-theme="dark"] .novu-recent-item:hover,
html[data-nx-theme="dark"] .novu-recent-item.active{background:#16334c!important}
html[data-nx-theme="dark"] .novu-recent-avatar{background:#16334c!important;border-color:#2c4d6d!important;color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-recent-item small{color:#7d94a8!important;-webkit-text-fill-color:#7d94a8!important}
html[data-nx-theme="dark"] .novu-recent-item strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-recent-item span{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-preview{background:#131c26!important;color:#e7eef5}
html[data-nx-theme="dark"] .novu-preview h3{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-preview-section{border-top-color:#233c52!important;color:#dce6ee!important;-webkit-text-fill-color:#dce6ee!important}
html[data-nx-theme="dark"] .novu-chip-row span{background:#16334c!important;border-color:#28496a!important;color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}

/* Window title bar + Trends download buttons */
html[data-nx-theme="dark"] .novu-windowbar{background:#16334c!important;border-bottom-color:#28496a!important;color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}
html[data-nx-theme="dark"] .novu-window-title{color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}
html[data-nx-theme="dark"] .novu-window-controls button{color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}
html[data-nx-theme="dark"] .novu-window-controls button:hover{background:#1c3f5c!important}
html[data-nx-theme="dark"] .novu-trend-download button,
html[data-nx-theme="dark"] .novu-trend-controls select,
html[data-nx-theme="dark"] .novu-trend-controls button{background:#1c3f5c!important;border-color:#33587c!important;color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}

/* Encounter Overview / preview panel internals -- distinct sub-classes from
   the outer .novu-preview shell already covered above. */
html[data-nx-theme="dark"] .novu-preview-section b{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-preview-vitals div{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] .novu-preview-vitals strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] .novu-preview ul,
html[data-nx-theme="dark"] .novu-preview ol,
html[data-nx-theme="dark"] .novu-preview li{color:#dce6ee!important;-webkit-text-fill-color:#dce6ee!important}
html[data-nx-theme="dark"] .novu-preview .open-full{background:#0f8f7a!important;color:#fff!important;-webkit-text-fill-color:#fff!important}
html[data-nx-theme="dark"] .novu-status{color:#4ade80!important;-webkit-text-fill-color:#4ade80!important}

/* Bug fix: an ID-scoped rule (#novuPatientRecordHost .novu-card-title h2)
   forces dark text unconditionally regardless of theme -- ID specificity
   beats every class-based override above, so "RECENT ENCOUNTERS",
   "ENCOUNTER OVERVIEW" and "PATIENT TRENDS" stayed dark-on-dark. Matching
   the same ID-scoped structure here to win outright. */
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-card-title h2{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-card-title button{color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-trend-chart polyline{stroke:#4dd8b8!important}
html[data-nx-theme="dark"] .novu-trend-chart circle{stroke:#4dd8b8!important}

/* Bug fix, completing the ID-scoped-override sweep: #novuPatientRecordHost
   had 14 total unconditional text-color rules forcing dark text (only 2
   of them, .novu-card-title, were caught and fixed in the previous pass).
   The remaining 12 -- domain card titles/counts/descriptions, patient
   name/meta, vital labels/values, recent-encounter list text, and the
   window title bar -- were still winning by ID specificity regardless of
   theme. Matching every one here, scoped to dark, closes the gap
   completely rather than fixing them one screenshot at a time. */
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-patient-copy h1{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-patient-meta span{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-summary strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-summary small{color:#a9c2d4!important;-webkit-text-fill-color:#a9c2d4!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-domain h3{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-domain b{color:#4dd8b8!important;-webkit-text-fill-color:#4dd8b8!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-domain p{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-vital small{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-vital strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-vital em{color:#7d94a8!important;-webkit-text-fill-color:#7d94a8!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-recent-item strong{color:#f2f6fa!important;-webkit-text-fill-color:#f2f6fa!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-recent-item small{color:#9db4c7!important;-webkit-text-fill-color:#9db4c7!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-recent-item span{color:#7d94a8!important;-webkit-text-fill-color:#7d94a8!important}
html[data-nx-theme="dark"] #novuPatientRecordHost .novu-window-title{color:#cfe0ee!important;-webkit-text-fill-color:#cfe0ee!important}

/* ============================================================================
   V41 PATIENT MEDICAL RECORD FOREGROUND OWNERSHIP
   Patient Record is its own light clinical workspace and must not inherit
   Dark/System shell text-fill rules. Applies to header shortcuts and every
   native record-domain/history drilldown.
   ============================================================================ */
#novuPatientRecordHost .novu-context-badges button,
#novuPatientRecordHost .novu-context-badges button span{
  color:#17324a!important;-webkit-text-fill-color:#17324a!important;opacity:1!important
}
#novuPatientRecordHost .novu-context-badges button .context-icon{
  color:#087886!important;-webkit-text-fill-color:#087886!important
}
#novuPatientRecordHost .novu-context-badges button b{
  color:#fff!important;-webkit-text-fill-color:#fff!important
}
.novu-record-domain-panel>section,
.novu-record-domain-panel header,
.novu-domain-panel-body,
.novu-domain-row{
  color:#17324a!important;-webkit-text-fill-color:#17324a!important
}
.novu-record-domain-panel>section{background:#fff!important;background-color:#fff!important}
.novu-record-domain-panel header{background:#f8fbfd!important;background-color:#f8fbfd!important}
.novu-domain-panel-body,.novu-domain-row{background:#fff!important;background-color:#fff!important}
.novu-record-domain-panel header small{color:#0b7280!important;-webkit-text-fill-color:#0b7280!important;opacity:1!important}
.novu-record-domain-panel h2{color:#10243b!important;-webkit-text-fill-color:#10243b!important;opacity:1!important}
.novu-record-domain-panel header button{background:#fff!important;color:#10243b!important;-webkit-text-fill-color:#10243b!important;opacity:1!important}
.novu-domain-row strong{color:#183b58!important;-webkit-text-fill-color:#183b58!important;opacity:1!important}
.novu-domain-row small{color:#5f7588!important;-webkit-text-fill-color:#5f7588!important;opacity:1!important}
.novu-domain-row b{color:#087886!important;-webkit-text-fill-color:#087886!important;opacity:1!important}
.novu-domain-empty{color:#5f7588!important;-webkit-text-fill-color:#5f7588!important;opacity:1!important}

/* ============================================================================
   V52 SHELL OWNERSHIP CONTRACT — PATIENT RECORD MUST NEVER COVER APP RIBBON
   The global app header owns the top ribbon (Clinical Library, notifications,
   About, menu). Patient Record begins below it and lives in the workspace
   stacking layer. Global overlays opened afterward remain above the record.
   ============================================================================ */
#novuPatientRecordHost.novu-record-host{
  top:var(--novu-app-header-height,74px)!important;
  right:0!important;
  bottom:0!important;
  left:0!important;
  z-index:8000!important;
}

/* V54 SURGICAL PATIENT-TRENDS EXPANDED CANVAS FIX.
   Keep the expanded card below the Medical Record title bar and give the
   toolbar its own visible row so Range/Restore/download controls cannot clip. */
#novuPatientRecordHost .novu-trends.is-expanded{
  top:72px!important;
  bottom:18px!important;
  padding-top:18px!important;
  grid-template-rows:auto minmax(0,1fr) auto auto!important;
  overflow:auto!important;
}
#novuPatientRecordHost .novu-trends.is-expanded .novu-card-title{
  position:relative!important;
  z-index:2!important;
  min-height:82px!important;
  flex:0 0 auto!important;
  overflow:visible!important;
  background:inherit!important;
}
#novuPatientRecordHost .novu-trends.is-expanded .novu-trend-toolbar,
#novuPatientRecordHost .novu-trends.is-expanded .novu-trend-controls,
#novuPatientRecordHost .novu-trends.is-expanded .novu-trend-download{
  visibility:visible!important;
  opacity:1!important;
}
@media(max-width:1023px){#novuPatientRecordHost .novu-trends.is-expanded{top:72px!important;right:12px!important;bottom:12px!important;left:12px!important}}
@media(max-width:820px){#novuPatientRecordHost .novu-trends.is-expanded{top:68px!important;right:8px!important;bottom:8px!important;left:8px!important}}
