/*! BIO-ORIGIN project=holiday-07-circulation; version=0.2.1-draft-web.1; official=https://bio2077.cn/ */
:root{--paper:#f3f5f1;--card:#fcfcf8;--ink:#173e40;--muted:#657d79;--line:#d8e1d9;--accent:#176d61;--accent-soft:#e2eeea;--organ-hi:#f8e4d6;--organ:#d9b0a2;--organ-low:#b7887e;--vessel-edge:#e3e5df;--vessel-lumen:#fcf9ef;--trace:#b18a31;--low:#267dc7;--high:#dc5248;--cavity:#c8d4cf;color-scheme:light;font:18px "Segoe UI","Microsoft YaHei",sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--paper);color:var(--ink)}button,select{font:inherit;background:var(--card);color:inherit;border:1px solid var(--line);border-radius:9px;min-height:42px;padding:8px 12px;cursor:pointer}button:hover{border-color:var(--accent);background:var(--accent-soft)}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #ccab4e;outline-offset:3px}button[aria-pressed=true]{color:var(--accent);background:var(--accent-soft);border-color:var(--accent);box-shadow:inset 0 -2px var(--accent)}button:disabled{opacity:.4}header{height:76px;display:flex;align-items:center;gap:22px;padding:0 25px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none;font-size:25px;font-weight:650;white-space:nowrap}.brand-mark{color:var(--high);font-size:35px}.brand small{display:block;font-size:12px;letter-spacing:.08em;color:var(--muted);font-weight:400;margin-top:2px}.tagline{flex:1;color:var(--muted);text-align:center;font-size:16px}.header-tools{display:flex;gap:7px;font-size:16px}nav{height:62px;display:flex;align-items:center;justify-content:center;gap:10px;padding:7px 24px;background:var(--card);border-bottom:1px solid var(--line)}nav button{flex:1;max-width:220px;font-size:19px;background:transparent;border-color:transparent}.dot{display:inline-block;width:11px;height:11px;border-radius:50%;vertical-align:middle;margin-right:8px}.dot.low{background:#3d95f6}.dot.high{background:#f75b50}main{height:calc(100dvh - 138px);min-height:600px;display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px;padding:17px 20px 17px 25px}.figure-card{min-width:0;min-height:0;border:1px solid var(--line);border-radius:17px;background:var(--card);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 22px #234b3d04}.figure-head{display:flex;align-items:center;padding:16px 21px 5px;gap:14px}.figure-head>span:first-child{font-size:12px;letter-spacing:.13em;color:var(--muted)}h1{font-size:24px;line-height:1.2;font-weight:550;margin:0;flex:1}.view-note{font-size:13px;color:var(--muted)}.stage{position:relative;display:flex;flex:1;min-height:290px;outline:none;touch-action:pan-y;overflow:hidden;background:radial-gradient(ellipse at 60% 50%,var(--accent-soft),transparent 63%)}.body-panel{width:41%;display:flex;flex-direction:column;position:relative;border-right:1px solid var(--line);margin:10px 0 0}.heart-panel{flex:1;display:flex;flex-direction:column;min-width:0;margin:10px 0 0}.panel-heading{text-align:center;font-size:17px;font-weight:550;padding:0 7px 6px}.panel-heading span{font-size:12px;color:var(--muted);display:block;font-weight:400;margin-top:4px}.svg-frame{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.anatomy-svg{display:block;width:100%;height:100%;overflow:visible;max-height:100%}.body-frame{padding:0 4px}.heart-frame{padding:2px 14px}.open-heart{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);font-size:13px;min-height:34px;padding:5px 12px;white-space:nowrap}.heart-orientation{display:flex;justify-content:center;gap:13px;align-items:center;font-size:15px;padding:5px 8px;color:var(--muted)}.heart-orientation>span:nth-child(2){font-size:12px}.stage-tools{display:flex;align-items:center;justify-content:space-between;gap:7px;padding:8px 15px;flex-wrap:wrap;border-top:1px solid var(--line)}.legend{display:flex;align-items:center;gap:18px;font-size:16px}.trace-key{font-size:14px;color:var(--trace)}.camera-tools{display:flex;gap:5px;font-size:14px}.camera-tools button{padding:6px 9px;min-height:38px}.live-caption{display:flex;align-items:center;gap:12px;margin:0 18px;padding:12px 0;border-top:1px solid var(--line);min-height:60px}.caption-kicker{font-size:13px;color:var(--muted)}.live-caption p{font-size:22px;margin:0;flex:1;line-height:1.35}.oxygen-pill{font-size:15px;padding:5px 10px;border-radius:20px;white-space:nowrap;border:1px solid var(--line)}.oxygen-pill.low{color:var(--low);background:#3d95f611}.oxygen-pill.high{color:var(--high);background:#f75b5011}.transport{display:flex;gap:7px;padding:0 16px 12px;align-items:center;font-size:16px}.primary{background:var(--accent);color:#fff;min-width:146px;font-weight:600;border-color:var(--accent)}.primary:hover{background:#19594e;color:#fff}.speed-label{display:flex;gap:7px;align-items:center;font-size:13px;color:var(--muted)}select{font-size:15px;padding:6px}.trace-progress{flex:1;min-width:85px;padding-left:6px}.trace-progress label{font-size:12px;color:var(--muted);display:flex;justify-content:space-between}input[type=range]{width:100%;accent-color:var(--accent);min-height:22px;margin:2px 0 0;cursor:pointer}.operations{border-top:1px solid var(--line);background:var(--paper);font-size:13px;color:var(--muted)}summary{cursor:pointer;min-height:34px;padding:7px 18px}.operations p{font-size:16px;line-height:1.7;padding:0 18px 13px;margin:0}.operations[open]{position:relative;z-index:3}aside{display:flex;flex-direction:column;min-height:0;gap:15px}.eyebrow{text-transform:uppercase;letter-spacing:.07em;font-size:13px;color:var(--accent);margin-bottom:9px}h2{font-size:25px;font-weight:550;line-height:1.4;margin:0 0 12px}.route-info p{font-size:18px;line-height:1.6;margin:0;color:var(--muted)}.route-destination{font-size:13px;color:var(--muted);margin-top:12px}.phase-card{border:1px solid var(--line);border-radius:12px;padding:13px 15px;background:var(--card)}h3{font-size:21px;font-weight:550;margin:0 0 11px}.phase-row{display:flex;justify-content:space-between;margin:7px 0;font-size:17px}.phase-row b{font-weight:500}.phase-row b.open{color:var(--accent)}.phase-card small{font-size:12px;color:var(--muted);line-height:1.5;display:block;margin-top:10px}.structure-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:5px}.structure-buttons button{font-size:15px;padding:6px;min-height:36px}.structure-buttons button.active{background:var(--accent-soft);border-color:var(--accent)}#structure-note{font-size:15px;line-height:1.5;color:var(--muted);margin:9px 0}#clarity{font-size:15px;width:100%;min-height:37px}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:7px;font-size:12px;color:var(--muted)}#legacy{font-size:14px;text-align:left;border:0;background:transparent;padding:0;min-height:28px;color:var(--accent)}.quiet{font-size:11px}dialog{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:18px;padding:28px;max-width:760px;width:92%;max-height:86dvh;box-shadow:0 30px 90px #001e3260}dialog::backdrop{background:#001d2a88;backdrop-filter:blur(3px)}dialog h2{margin-right:40px}dialog p{font-size:18px;line-height:1.7}dialog a{color:var(--accent)}.close{position:absolute;right:12px;top:12px;font-size:23px}#notice{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);border-radius:10px;padding:12px 20px;opacity:0;pointer-events:none;z-index:20;font-size:16px}.exchange-panel{flex:1;padding:10px;display:flex;align-items:center;justify-content:center}.exchange-panel .anatomy-svg{height:100%;max-height:560px}.stage[data-view=heart] .body-panel{display:none}.stage[data-view=lung] .heart-panel,.stage[data-view=tissue] .heart-panel{display:none}.stage[data-view=lung] .body-panel,.stage[data-view=tissue] .body-panel{width:28%}body.focus header{display:none}body.focus main{height:calc(100dvh - 62px)}
/* Four-tone relief geometry generated by the Anatomy kit. */
.relief .s0{fill:var(--organ-low)}.relief .s1{fill:#ad8e85}.relief .s2{fill:#c5a297}.relief .s3{fill:#d7bbae}.relief .face{fill:url(#heart-organ)}.relief.skin .face{fill:var(--body-fill);fill-opacity:.75}.relief.skin .edge{stroke:var(--body-edge);stroke-width:1.3;fill:none}.relief.skin .shade{fill:var(--body-edge);opacity:.25}.lung .face{fill:url(#body-organ);opacity:.68}.lung .edge{stroke:var(--lung-edge);stroke-width:1.1;fill:none}.soft .face{fill:var(--soft-organ);opacity:.45}.soft .edge{stroke:var(--soft-organ);stroke-width:.7;fill:none;opacity:.5}.heart-mini .face{fill:var(--organ);fill-opacity:.72}.heart-wall .face{fill:url(#heart-organ)}.heart-wall .edge{fill:none;stroke:var(--organ-low);stroke-width:1.3}.chamber-low .face{fill:url(#heart-low)}.chamber-high .face{fill:url(#heart-high)}.chamber-low .edge,.chamber-high .edge{fill:none;stroke:var(--organ-hi);stroke-width:3}.vessel{transition:opacity .24s}.vessel path{vector-effect:non-scaling-stroke}.vessel path{vector-effect:none}.cartilage{stroke:var(--body-edge);stroke-width:2.4}.airway{fill:var(--bronchus);stroke:var(--body-edge);stroke-width:1}.bronchus{stroke:var(--bronchus);stroke-width:6;stroke-linecap:round}.fissure{stroke:var(--lung-edge);stroke-width:1.5;opacity:.45}.gut{stroke:var(--soft-organ);stroke-width:4;opacity:.4;stroke-linecap:round}.septum{stroke:var(--organ);stroke-width:20;stroke-linecap:round}.trabecula{stroke:#d59584;stroke-width:4;stroke-linecap:round;opacity:.38}.valve-ring{stroke:var(--valve-edge);stroke-width:4;fill:var(--valve-base)}.leaflet{fill:var(--valve);stroke:var(--valve-edge);stroke-width:1.5}.chord{stroke:var(--valve);stroke-width:1.2;opacity:.75}.papillary{fill:var(--organ-low)}.heart-labels text,.body-labels text{fill:var(--ink);font-size:22px;font-weight:550;paint-order:stroke;stroke:var(--card);stroke-width:5px;stroke-linejoin:round}.heart-labels .vessel-name,.body-labels .vessel-name{font-size:18px;font-weight:400}.body-labels text{font-size:19px}.body-labels .vessel-name{font-size:16px}.blood-particle{pointer-events:none}.blood-particle.traced{filter:drop-shadow(0 0 3px var(--trace))}[data-select]{cursor:pointer;outline:none}[data-select].selected .edge{stroke:var(--trace);stroke-width:6}.valve.selected{filter:drop-shadow(0 0 5px var(--trace))}.no-labels .heart-labels,.no-labels .body-labels{display:none}.clarity .heart-wall,.clarity .trabecula,.clarity .heart-mini{opacity:.25}.clarity .chamber-low,.clarity .chamber-high{opacity:.55}.exchange-space{fill:var(--accent-soft)}.alveolar-wall{fill:var(--organ-hi);stroke:var(--organ);stroke-width:1.4}.wall-nucleus{fill:var(--organ-low)}.capillary-wall{fill:var(--cavity);fill-opacity:.6;stroke:var(--organ);stroke-width:3}.lumen-end{fill:var(--paper);fill-opacity:.55;stroke:var(--organ);stroke-width:2}.tissue-cell>path{fill:var(--organ-hi);stroke:var(--organ-low);stroke-width:2}.tissue-cell>ellipse{fill:var(--organ-low)}.exchange-labels text{fill:var(--ink);font-size:22px}.exchange-labels .small-figure-note{font-size:17px;fill:var(--muted)}.molecule-key text{font-size:23px;font-weight:600}
:root{--body-fill:#e4ebe4;--body-edge:#9aafa2;--lung-edge:#bc978d;--soft-organ:#bba29a;--bronchus:#c3b5a1;--valve:#fff5d9;--valve-edge:#bca47b;--valve-base:#b29f84}
:root[data-theme=dark]{color-scheme:dark;--paper:#0e1b22;--card:#13232b;--ink:#ebede4;--muted:#a1b6b6;--line:#294049;--accent:#b2d9bd;--accent-soft:#203d40;--organ-hi:#d5b4a5;--organ:#a47a72;--organ-low:#724f53;--vessel-edge:#0d202e;--vessel-lumen:#0b2638;--trace:#edda8b;--body-fill:#263b42;--body-edge:#4e6b6e;--lung-edge:#9f8b85;--soft-organ:#9b9390;--bronchus:#7e9190;--low:#85bdff;--high:#ff9a89;--cavity:#314954;--valve:#ebd9ae;--valve-edge:#a08f6b;--valve-base:#4e5350}.primary{color:var(--card)}:root[data-theme=dark] .relief .s0{fill:#60444a}:root[data-theme=dark] .relief .s1{fill:#76585b}:root[data-theme=dark] .relief .s2{fill:#8f6b68}:root[data-theme=dark] .relief .s3{fill:#b58c7b}:root[data-theme=dark] .lung .face{opacity:.45}
@media(min-width:1101px) and (max-height:900px){main{gap:14px;padding:12px 16px;grid-template-columns:minmax(0,1fr) 265px}aside{gap:10px}.figure-head{padding:12px 16px 3px}h1{font-size:22px}.view-note{display:none}.stage{min-height:265px}.panel-heading{font-size:15px}.panel-heading span{display:none}.route-info p{font-size:17px;line-height:1.5}h2{font-size:22px;margin-bottom:8px}.phase-card{padding:10px 12px}.structure-buttons{grid-template-columns:repeat(4,1fr)}.structure-buttons button{font-size:13px;min-height:34px;padding:4px 1px}.structure-card .eyebrow{display:none}#structure-note{font-size:13px}.phase-card small{font-size:11px}.sidebar-footer .quiet{display:none}.stage-tools{padding:6px 12px}.legend{font-size:14px;gap:13px}.camera-tools{font-size:13px}.transport{font-size:14px;gap:5px;padding-bottom:8px}.transport button{padding:7px 9px}.speed-label{font-size:0}.speed-label select{font-size:14px}.live-caption{min-height:53px;padding:10px 0}.live-caption p{font-size:20px}.caption-kicker{display:none}.primary{min-width:130px}.heart-orientation{font-size:13px}.open-heart{font-size:12px}}
@media(max-width:1100px){header{height:67px;padding:0 15px}.brand{font-size:22px}.tagline{display:none}.header-tools{margin-left:auto;font-size:14px}nav{padding:6px 10px;gap:4px;height:58px}nav button{font-size:17px;padding:7px 5px}main{height:auto;min-height:calc(100dvh - 125px);grid-template-columns:1fr;padding:12px;gap:12px}.figure-card{min-height:calc(100dvh - 150px)}.stage{min-height:460px;max-height:670px}.figure-head{padding:13px 15px}.view-note{display:none}h1{font-size:23px}aside{display:grid;grid-template-columns:1.2fr 1fr;gap:14px;padding:8px}.route-info{grid-row:span 2}.structure-card{grid-column:2}.sidebar-footer{grid-column:1}.structure-buttons{grid-template-columns:repeat(4,1fr)}.structure-buttons button{font-size:14px}.heart-orientation>span:nth-child(2){display:none}.stage-tools{gap:10px}.transport{flex-wrap:wrap}.trace-progress{min-width:150px}.route-info p{font-size:19px}.figure-head>span:first-child{font-size:11px}}
@media(max-width:650px){header{height:66px;padding:0 12px;gap:5px}.brand{font-size:21px}.brand small{font-size:10px}.brand-mark{font-size:28px}.header-tools{gap:4px}.header-tools button{font-size:13px;padding:7px;min-height:38px}#focus,#sources{display:none}nav{height:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:6px}nav button{font-size:17px;min-height:43px;max-width:none}main{padding:8px;gap:10px}.figure-card{min-height:0}.figure-head{gap:7px;padding:13px 12px 5px}.figure-head>span:first-child{display:none}h1{font-size:21px}.stage{min-height:530px;max-height:none}.stage[data-view=whole] .heart-panel,.stage[data-view=pulmonary] .heart-panel,.stage[data-view=systemic] .heart-panel{display:none}.stage .body-panel{width:100%;border:0;margin:4px 0 0}.stage[data-view=heart] .heart-panel{width:100%;min-height:440px}.stage[data-view=heart]{min-height:480px}.stage[data-view=lung] .body-panel,.stage[data-view=tissue] .body-panel{display:none}.stage[data-view=lung],.stage[data-view=tissue]{min-height:340px}.panel-heading{font-size:17px;padding-top:4px}.panel-heading span{font-size:12px}.body-frame{padding:0 18px 34px}.heart-frame{padding:0}.open-heart{font-size:16px;min-height:40px;bottom:0}.stage-tools{padding:10px;gap:10px}.legend{font-size:16px;gap:13px;justify-content:center;width:100%}.trace-key{font-size:13px}.camera-tools{display:grid;grid-template-columns:repeat(3,1fr);width:100%;gap:5px;font-size:15px}.camera-tools button{min-height:42px}.live-caption{margin:0 10px;min-height:75px;gap:8px}.live-caption p{font-size:20px}.caption-kicker{display:none}.oxygen-pill{font-size:13px;padding:4px 7px}.transport{justify-content:center;padding:0 9px 11px;gap:5px;font-size:15px}.transport button{padding:8px}.primary{min-width:137px}.trace-progress{flex-basis:70%;min-width:150px}.speed-label{font-size:0}.speed-label select{font-size:15px}.trace-progress label{font-size:13px}.operations summary{font-size:14px;min-height:38px}.operations p{font-size:17px}aside{display:flex;flex-direction:column;gap:16px;padding:9px}.route-info h2{font-size:24px}.route-info p{font-size:19px}.structure-buttons button{font-size:17px;min-height:43px}#structure-note{font-size:17px}.phase-card small{font-size:14px}.sidebar-footer{font-size:14px}.sidebar-footer .quiet{font-size:13px}#legacy{font-size:17px}.body-labels text{font-size:22px}.body-labels .vessel-name{font-size:20px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.bronchus-solid{fill:var(--bronchus)}.gut-solid{fill:var(--soft-organ);opacity:.4}.trabecula-solid{fill:#d59584;opacity:.4}.septum-solid{fill:var(--organ);stroke:var(--organ-low);stroke-width:.8}.flow-rail{opacity:.16}.heart-mini.relief .face{fill:var(--organ)}
.structure-filter{display:flex;gap:5px;margin-bottom:6px}.structure-filter button{flex:1;font-size:16px;min-height:38px;padding:6px}.structure-buttons{grid-template-columns:repeat(2,1fr)}.structure-buttons button{font-size:18px;min-height:40px;padding:6px}.structure-card .eyebrow{display:none}.valve{cursor:pointer}.valve:focus-visible{filter:drop-shadow(0 0 5px var(--trace))}@media(min-width:1101px) and (max-height:800px){#structure-note{font-size:14px;margin:7px 0}.route-info p{font-size:17px;line-height:1.45}.route-destination{margin-top:7px}.phase-card{padding:9px 12px}.phase-card .eyebrow{display:none}.structure-buttons button{min-height:36px;font-size:17px}.structure-filter button{min-height:35px;font-size:15px}.phase-card small{display:none}}
@media(max-width:650px){#sources{display:inline-block}}
.body-frame{padding-bottom:46px}
@media(max-width:650px){.body-frame{padding-bottom:52px}}
