@charset "UTF-8";
/* Impella module: the long-axis drawing, the traces with their numbers, the P-level and depth controls. */
.imp {
  --imp-wall: #8b5348; --imp-lv: #e9b7aa; --imp-la: #edc6bc; --imp-vessel: #e8a59c; --imp-vessel-wall: #8c3a32;
  --imp-cannula: #5b7fb0; --imp-metal: #8c949c; --imp-inlet: #d8dde3; --imp-shaft: #6b7480; --imp-sensor: #e0a000;
  --imp-dot: #b54708; --imp-native: #b42318; --imp-purge: #c99700; --imp-leaf: #7a5c12;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .imp { --imp-wall: #d79a8d; --imp-lv: #5a302a; --imp-la: #4e2f2a; --imp-vessel: #5a2a26; --imp-vessel-wall: #e07b70; --imp-cannula: #7fa6e0; --imp-metal: #aab3bf; --imp-inlet: #c9d0d8; --imp-shaft: #aab3bf; --imp-sensor: #ffd479; --imp-dot: #ffb060; --imp-native: #ff8a7a; --imp-purge: #ffd479; --imp-leaf: #e8c46a; }
}
:root[data-theme="dark"] .imp { --imp-wall: #d79a8d; --imp-lv: #5a302a; --imp-la: #4e2f2a; --imp-vessel: #5a2a26; --imp-vessel-wall: #e07b70; --imp-cannula: #7fa6e0; --imp-metal: #aab3bf; --imp-inlet: #c9d0d8; --imp-shaft: #aab3bf; --imp-sensor: #ffd479; --imp-dot: #ffb060; --imp-native: #ff8a7a; --imp-purge: #ffd479; --imp-leaf: #e8c46a; }

.imp .h3d-stage-wrap, .imp .h3d-info { min-width: 0; }
.imp-panel > * { margin-bottom: 14px; }
.imp-screen { border: 1px solid var(--line); border-radius: 6px; padding: 8px; background: var(--surface); }
.imp-status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 6px; }
.imp-alarm { margin: 0; padding: 4px 10px; border-radius: 4px; font-weight: 700; font-size: 15px; border: 1px solid var(--line); }
.imp-alarm.is-ok { background: var(--ok-bg); color: var(--ok-ink); border-color: var(--ok-line); }
.imp-alarm.is-critical { background: var(--danger-bg); color: var(--danger); border-color: var(--danger-line); }
.imp-alarm.is-serious { background: var(--warn-bg); color: var(--warn-ink); border-color: var(--warn-line); }
.imp-alarm.is-advisory, .imp-alarm.is-note, .imp-alarm.is-hidden { background: var(--bg); color: var(--ink-2); }
.imp-alarm-level { font-size: 13px; color: var(--muted); }
.imp-numbers { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 8px 0 0; }
.imp-numbers div { min-width: 120px; }
.imp-numbers dt { font-size: 13px; color: var(--muted); }
.imp-numbers dd { margin: 0; font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; }
.imp-numbers dd.imp-sub { font-size: 13px; font-weight: 400; color: var(--muted); }
.imp-numbers dd.is-warn { color: var(--warn-ink); background: var(--warn-bg); border-radius: 4px; padding: 0 6px; display: inline-block; }
.imp-model { border-top: 1px dashed var(--line); padding-top: 6px; }
.imp-model::before { content: "模型示意值"; display: block; width: 100%; font-size: 12px; color: var(--muted); }
.imp-controls { display: grid; gap: 10px; }
.imp-levels { display: flex; flex-wrap: wrap; gap: 6px; }
.imp-levels .button[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.imp-depth input { width: 100%; }
.imp-k-ao { background: #ff6b5e; } .imp-k-lv { background: #b9c2c8; } .imp-k-current { background: #46e08a; }
.imp-k-pump { background: #ffa21f; } .imp-k-cannula { background: #3d8bff; } .imp-k-sensor { background: #ffc23d; }
.imp-canvas { display: block; width: 100%; border-radius: 4px; }

/* drawing */
.imp-heart { border: 1px solid var(--line); border-top: 4px solid var(--ink); border-radius: 6px; background: var(--surface); display: flex; justify-content: center; }
.imp-svg { display: block; width: 100%; max-width: 760px; height: auto; max-height: 70vh; }
.imp-svg text { fill: var(--ink); paint-order: stroke; stroke: var(--surface); stroke-width: 4px; stroke-linejoin: round; }
.imp-text { font-size: 14px; font-weight: 700; }
.imp-small { font-size: 12px; font-weight: 600; }
.imp-vessel-wall, .imp-vessel, .imp-branch-wall, .imp-branch { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.imp-branch-wall { stroke: #5e1d18; stroke-opacity: .55; stroke-width: 20; } .imp-branch { stroke: #c8564c; stroke-width: 17; }
/* The aortic root and the outflow tract lie in front of the section: dashed, as the PAC module's outflow tract. */
.imp-front { fill: #c8665b; fill-opacity: .6; stroke: #8c3a32; stroke-width: 1.5; stroke-dasharray: 6 4; }
.imp-fixed-labels text, .imp-labels, .imp-native, [data-imp="chordae"], .imp-ruler { pointer-events: none; }
.imp-heart { flex-direction: column; align-items: center; }
.imp-caption { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 16px; margin: 4px 10px 8px; font-size: 13px; color: var(--muted); }
.imp-caption .imp-ruler-text { color: var(--accent); font-weight: 700; }
.imp-caption .imp-ruler-text:empty { display: none; }
.imp-legend .h3d-key { white-space: normal; }
/* The drawing shrinks on a phone: its text grows to stay readable (as in the rhythm and PAC drawings). */
/* The textbook-style heart (the rhythm module's style B, adapted from CardioNetworks, CC BY-SA 3.0), muscle-red tone. */
.imp-b { --b-muscle: #b5473f; --b-epi: #8e332d; --b-pap: #c4594f; --b-deoxy: #8ea6d1; --b-oxy: #e6a196; }
.imp-b .b-muscle { fill: var(--b-muscle); } .imp-b .b-epi { fill: var(--b-epi); } .imp-b .b-pap { fill: var(--b-pap); }
.imp-b .b-deoxy { fill: var(--b-deoxy); } .imp-b .b-oxy { fill: var(--b-oxy); } .imp-b .b-valve { fill: #f3e6c4; } .imp-b .b-pv { fill: #7a2a24; }
.imp-b .b-cor-a { fill: #d0453c; } .imp-b .b-cor-l { fill: #5e1d18; } .imp-b .b-cor-v { fill: #a8322b; }
.imp-b .b-line, .imp-b .b-thin, .imp-b .b-none { fill: none; }
.imp-b .b-line { stroke: #3d1612; stroke-opacity: .75; } .imp-b .b-thin { stroke: #6e4a44; stroke-opacity: .6; }
.imp-b .b-line, .imp-b .b-thin { stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.66px; }
.imp-b-vessel-wall { fill: none; stroke: #3d1612; stroke-opacity: .8; stroke-linecap: round; stroke-linejoin: round; }
.imp-b-vessel { fill: none; stroke: var(--b-epi); stroke-linecap: butt; stroke-linejoin: round; }
.imp-b .imp-art { pointer-events: none; }
.imp-b .imp-front { fill: var(--b-epi); fill-opacity: .5; stroke: #3d1612; stroke-width: 2; stroke-dasharray: 8 5; }
/* Text in this drawing's units (the drawing is 1100 units wide, as the rhythm module's style B). */
.imp-b .imp-small, .imp-b .imp-label { font-size: 20px; } .imp-b .imp-text { font-size: 21px; } .imp-b .imp-note { font-size: 16px; }
.imp-b .imp-text { fill: #10141a !important; stroke: rgba(255, 255, 255, .7) !important; }
.imp-b .imp-hidden-mark { font-size: 64px; }
.imp-b .imp-inlet, .imp-b .imp-cannula { stroke-width: 13; } .imp-b .imp-outlet { stroke-width: 12; } .imp-b .imp-motor { stroke-width: 11; } .imp-b .imp-shaft { stroke-width: 4.5; }
.imp-b .imp-av { stroke-width: 4.5; } .imp-b .imp-native { stroke-width: 4; } .imp-b .imp-pointer { stroke-width: 1.4; }
.imp-b .imp-ruler path { stroke-width: 2; }
/* Clicks: wide bands along the pump (the drawing is small on a phone); the windows and the dots let clicks through. */
.imp-b .imp-hit-line { stroke-width: 30; }
.imp-window, .imp-dot { pointer-events: none; }
.imp-b-vessel-wall { stroke-linecap: butt; }
.imp-credit { flex-basis: 100%; text-align: center; font-size: 12px; }
/* The drawing shrinks on a phone: its text grows to stay readable (as in the rhythm module's style B). */
@media (max-width: 640px) {
  .imp-b .imp-small, .imp-b .imp-label { font-size: 33px; } .imp-b .imp-text { font-size: 30px; } .imp-b .imp-note { font-size: 24px; }
  .imp-b .imp-hit-line { stroke-width: 56; }
}
.imp-av { fill: none; stroke: #f3e6c4; stroke-width: 3.5; stroke-linecap: round; filter: drop-shadow(0 0 1px #8b5348); }
.imp-note { font-size: 11px; fill: var(--muted) !important; }
.imp-annulus { fill: none; stroke: var(--line-strong); stroke-width: 1.5; stroke-dasharray: 4 4; }
.imp-native { fill: none; stroke: #fff4d6; stroke-opacity: .9; stroke-width: 3; marker-end: url(#imp-arrow); transition: opacity .1s; }
.imp-arrowhead { fill: #fff4d6; }
.imp-seg { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.imp-inlet { stroke: var(--imp-inlet); stroke-width: 10; }
.imp-cannula { stroke: var(--imp-cannula); stroke-width: 10; }
.imp-outlet { stroke: var(--imp-inlet); stroke-width: 9.5; }
.imp-motor { stroke: var(--imp-metal); stroke-width: 8.5; }
.imp-seg { filter: drop-shadow(0 0 1px #1b2230); }
.imp-shaft { fill: none; stroke: var(--imp-shaft); stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }
.imp-purge { fill: none; stroke: var(--imp-purge); stroke-width: 2; stroke-dasharray: 3 5; animation: imp-purge 1.2s linear infinite; }
@keyframes imp-purge { to { stroke-dashoffset: -16; } }
.imp-window { stroke: #2b3440; stroke-width: 1.8; }
.imp-sensor { fill: var(--imp-sensor); stroke: #4a3a00; stroke-width: 1; }
.imp-dot { fill: #ffd27a; stroke: #7a3d00; stroke-width: .8; }
.imp-dot.is-out { opacity: .85; }
.imp-ruler path { fill: none; stroke: var(--accent); stroke-width: 1.5; stroke-dasharray: 2 3; }
.imp-ruler-text { fill: var(--accent) !important; }
.imp-hidden-mark { font-size: 40px; font-weight: 800; fill: var(--muted) !important; }
.imp-pointer { stroke: var(--ink-2); stroke-width: 1; }
.imp-label { font-size: 12px; font-weight: 700; }
.imp-part { cursor: pointer; }
.imp-hit { fill: transparent; stroke: none; }
.imp-hit-line { fill: none; stroke: transparent; stroke-width: 18; }
.imp-part:hover .imp-hit:not(.imp-hit-line) { fill: var(--accent-soft); fill-opacity: .5; }
.imp-part.is-selected .imp-seg, .imp-part.is-selected .imp-shaft { filter: drop-shadow(0 0 3px var(--accent)); }
.imp-part.is-selected .imp-hit:not(.imp-hit-line) { fill: var(--accent-soft); fill-opacity: .6; stroke: var(--accent); stroke-width: 2; stroke-dasharray: 5 4; }
@media (prefers-reduced-motion: reduce) { .imp-purge { animation: none; } }
.imp-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 10px 0 0; font-size: 13px; color: var(--ink-2); }
.imp-k-pump { border-radius: 50%; }
