html.embed header,html.embed .intro,html.embed .lab-note,html.embed footer,html.embed .camera-extra,html.embed .view-buttons,html.embed .workspace aside,html.embed .view-top,html.embed .view-bottom,html.embed .legend,html.embed .mode-row,html.embed .monitor{display:none!important}html.embed main{max-width:none;padding:0}html.embed .workspace{border:0;border-radius:0;height:100vh;height:100svh;grid-template-columns:1fr}html.embed .viewport{min-height:100vh;min-height:100svh}.thumb-save{position:fixed;right:16px;bottom:16px;z-index:9;background:var(--accent);color:var(--accent-ink);border-color:var(--accent);padding:0 16px}:root{--paper:#f4efe5;--paper-2:#ece5d7;--paper-3:#e3dbcb;--ink:#28231f;--muted:#655c52;--line:#d7cdbc;--line-strong:#b9ad99;--accent:#b5402c;--accent-ink:#fff6ef;--accent-soft:#f0ddd5;--surface:#1d1916;--surface-2:#2a2420;--surface-line:#3f362f;--on-surface:#efe7d9;--on-surface-muted:#b3a697;--artery:#d7363d;--vein:#3f63b8;--conduction:#f2c14e;--focus:#b5402c;--radius:4px;--serif:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif;--sans:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;color-scheme:light}:root[data-theme=dark]{--paper:#171412;--paper-2:#1f1b18;--paper-3:#2a2521;--ink:#ece4d6;--muted:#a69b8d;--line:#3a332c;--line-strong:#564c42;--accent:#d8664f;--accent-ink:#1a110e;--accent-soft:#3a241e;--surface:#100e0d;--surface-2:#1a1614;--surface-line:#332c27;--on-surface:#efe7d9;--on-surface-muted:#a2968a;--focus:#d8664f;color-scheme:dark}*{box-sizing:border-box}html{font-family:var(--sans);color:var(--ink);background:var(--paper);font-synthesis:none;-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);transition:background .3s,color .3s}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:44px;border:1px solid var(--line-strong);border-radius:var(--radius);background:transparent;color:inherit;transition:background .15s,border-color .15s,transform .15s;padding:0 12px}button:hover{background:var(--paper-3)}button:active{transform:scale(.97)}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}h1,h2,h3{font-family:var(--serif);font-weight:600;margin:0;letter-spacing:.01em}.eyebrow,.section-label,.edition{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:500}header{height:84px;padding:0 4%;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:baseline;gap:14px;color:inherit;text-decoration:none;white-space:nowrap}.brand-name{font-family:var(--serif);font-size:28px;font-weight:700;letter-spacing:.04em}.brand-sub{font-family:var(--mono);font-size:9px;letter-spacing:.2em;line-height:1.5;color:var(--muted)}nav{display:flex;gap:4px;height:100%;align-items:center;overflow-x:auto;scrollbar-width:none;flex:1;justify-content:flex-end}nav::-webkit-scrollbar{display:none}nav a{color:var(--muted);text-decoration:none;padding:12px 16px;font-size:14px;border-radius:var(--radius);min-height:44px;display:inline-flex;align-items:center;white-space:nowrap;transition:background .15s,color .15s}nav a span{font-family:var(--mono);font-size:10px;margin-right:10px;color:var(--muted);letter-spacing:.1em}nav a:hover{background:var(--paper-2);color:var(--ink)}nav a[aria-current=page]{background:var(--ink);color:var(--paper)}nav a[aria-current=page] span{color:var(--accent)}:root[data-theme=dark] nav a[aria-current=page] span{color:#f0a08e}.theme-toggle{width:44px;padding:0;display:grid;place-items:center;border-color:var(--line);color:var(--muted)}.theme-toggle[aria-pressed=true]{color:var(--ink)}main{max-width:1600px;margin:auto;padding:0 4%}.intro{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;padding:36px 0 28px}.intro .eyebrow{margin-bottom:14px}h1{font-size:clamp(28px,3vw,44px);line-height:1.35}.intro p{font-size:14px;line-height:2;color:var(--muted);margin:0 0 6px;max-width:460px}.intro p br{display:none}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 360px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--paper-2)}.viewport{position:relative;background:var(--surface);color:var(--on-surface);min-height:680px;overflow:hidden}#scene{position:absolute;inset:0}#scene canvas{width:100%;height:100%;display:block;touch-action:none}.view-top,.view-bottom{position:absolute;left:24px;right:24px;display:flex;justify-content:space-between;align-items:center;z-index:2;pointer-events:none;gap:12px}.view-top{top:22px;font-family:var(--mono);font-size:12px;letter-spacing:.08em}.view-top .status{display:inline-flex;align-items:center;gap:10px}.view-top b{font-weight:500}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 #d8664f80}.live-dot.beat{animation:beat .9s ease-out infinite}@keyframes beat{0%{transform:scale(1);box-shadow:0 0 #d8664f8c}40%{transform:scale(1.25)}to{transform:scale(1);box-shadow:0 0 0 10px #d8664f00}}#run-status{font-size:11px;color:var(--on-surface-muted)}.view-bottom{bottom:20px;font-size:11px;color:var(--on-surface-muted);letter-spacing:.02em}.view-buttons{position:absolute;top:118px;right:20px;display:grid;gap:8px;z-index:2}.view-buttons button,.camera-extra button{background:var(--surface-2);border-color:var(--surface-line);color:var(--on-surface);width:44px;display:grid;place-items:center;padding:0}.view-buttons button:hover,.camera-extra button:hover{background:#3b322c}.view-buttons button[aria-pressed=true]{background:var(--on-surface);color:var(--surface);border-color:var(--on-surface)}.view-buttons svg{width:18px;height:18px}.camera-extra{position:absolute;right:20px;bottom:88px;display:grid;grid-template-columns:repeat(2,44px);gap:8px;z-index:2}.camera-extra button{font-size:18px}.mode-row{position:absolute;left:22px;top:62px;display:flex;gap:2px;border:1px solid var(--surface-line);border-radius:var(--radius);padding:3px;background:var(--surface-2);z-index:2}.mode-row button{border:0;font-size:12px;min-height:38px;padding:0 13px;color:var(--on-surface-muted);letter-spacing:.04em}.mode-row button[aria-pressed=true]{background:var(--on-surface);color:var(--surface)}.mode-row button:hover{background:#3b322c;color:var(--on-surface)}.mode-row button[aria-pressed=true]:hover{background:#fff}.legend{position:absolute;bottom:58px;left:24px;display:flex;gap:18px;font-size:11px;color:var(--on-surface-muted);z-index:2;pointer-events:none;flex-wrap:wrap}.legend span:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--stage);margin-right:7px;vertical-align:0}aside{padding:26px 26px 30px;background:var(--paper-2)}.section-label{margin-bottom:18px}.control-block{margin:0 0 22px}.control-title{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:14px}.control-title output{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:22px;white-space:nowrap;letter-spacing:-.02em}.control-title output small{font-size:11px;color:var(--muted);margin-left:4px;letter-spacing:.06em}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:28px;margin:10px 0 0;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--line-strong);border-radius:1px}input[type=range]::-moz-range-track{height:2px;background:var(--line-strong);border-radius:1px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--paper);border:2px solid var(--ink);margin-top:-8px;transition:transform .15s}input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--paper);border:2px solid var(--ink)}input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.15)}input[type=range]:focus-visible{outline:none}input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--focus);outline-offset:3px}.range-labels{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.06em}.presets{display:flex;gap:6px;margin-top:12px}.presets button{flex:1;font-size:13px;min-height:40px;padding:0 6px}.presets button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.hint{font-size:12px;color:var(--muted);line-height:1.8;margin:10px 0 0}.play-row{display:flex;gap:10px;margin-top:4px}.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);flex:1;font-size:13px;font-weight:600;letter-spacing:.06em}.primary:hover{background:#9c3524}:root[data-theme=dark] .primary:hover{background:#e3755e}.divider{height:1px;background:var(--line);margin:22px 0}.switch-row{display:flex;align-items:center;justify-content:space-between;min-height:40px;font-size:13px;cursor:pointer}.switch-row input{width:34px;height:20px;accent-color:var(--accent);cursor:pointer;margin:0}.readings{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;margin:4px 0 20px}.readings span{font-size:11px;color:var(--muted);display:block;margin-bottom:4px;letter-spacing:.04em}.readings strong{font-family:var(--mono);font-size:20px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.readings strong small{font-size:11px;color:var(--muted);margin-left:3px;font-family:var(--mono)}h2{font-size:18px;line-height:1.5}.description{font-size:13px;line-height:1.9;margin:10px 0 0}.fact{font-size:12px;line-height:1.8;color:var(--muted);margin:10px 0 0;padding-top:10px;border-top:1px dashed var(--line)}.fact b{color:var(--ink);font-weight:600;font-family:var(--mono);font-size:10px;letter-spacing:.14em;margin-right:8px}.part-selector{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 0}.part-selector button{padding:0 11px;font-size:12px;min-height:38px;border-color:var(--line)}.part-selector button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.chart{width:100%;height:auto;display:block;margin:6px 0 0}.chart-legend{display:flex;gap:14px;font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--muted);margin-top:8px;flex-wrap:wrap}.chart-legend span:before{content:"";display:inline-block;width:14px;height:2px;background:var(--stage);margin-right:6px;vertical-align:3px}footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:22px 0 34px;font-family:var(--mono);font-size:11px;color:var(--muted);gap:20px;margin-top:40px;letter-spacing:.04em}.part-label{font-family:var(--sans);font-size:12px;padding:5px 10px;border:1px solid rgba(239,231,217,.35);background:#1d1916d1;color:var(--on-surface);border-radius:3px;min-height:30px;white-space:nowrap;pointer-events:auto;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transition:opacity .25s,background .15s}.part-label:hover{background:#efe7d9f2;color:var(--surface)}.part-label[aria-pressed=true]{background:var(--on-surface);color:var(--surface)}.part-label small{font-family:var(--mono);font-size:9px;letter-spacing:.1em;color:inherit;opacity:.7;margin-left:7px}.measure-label{pointer-events:none;background:#1d1916bf;padding:4px 8px;border-radius:3px;color:var(--on-surface);font-family:var(--mono);font-size:11px;letter-spacing:.04em}.failure{padding:120px 25px;color:var(--on-surface)}.failure button{display:block;margin-top:15px;color:inherit}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:1000px){.workspace{grid-template-columns:minmax(0,1fr) 320px}aside{padding:20px}.view-top #run-status{display:none}.legend{gap:10px}}@media(max-width:760px){header{height:auto;min-height:100px;display:grid;grid-template-columns:1fr auto;padding-top:10px;padding-bottom:8px;gap:6px 10px}.brand{grid-column:1}.theme-toggle{grid-column:2;grid-row:1}nav{grid-column:1/-1;justify-content:flex-start}nav a{font-size:12px;padding:10px}.intro{display:block;padding:24px 0 20px}.intro p{max-width:none;margin-top:12px;font-size:13px}.workspace{grid-template-columns:1fr}.viewport{min-height:520px}aside{padding:22px}.view-bottom{font-size:10px;left:14px;right:14px}.view-top{left:14px;right:14px}.legend{left:14px;font-size:10px}.mode-row{left:14px;top:58px}.mode-row button{padding:0 9px;font-size:11px}.view-buttons{top:106px;left:14px;right:auto;display:flex;gap:6px}.view-buttons button{width:38px;min-height:38px}.camera-extra{top:106px;bottom:auto;right:12px;grid-template-columns:repeat(2,38px)}.camera-extra button{min-height:38px}footer{flex-direction:column;gap:10px}}@media(min-width:761px){.workspace{height:clamp(560px,calc(100svh - 200px),860px)}.viewport{min-height:0;height:100%}.workspace aside{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.workspace aside:focus-visible{outline-offset:-3px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.lab-main .intro h1 em{font-style:normal;color:var(--accent)}.monitor{position:absolute;left:24px;bottom:92px;z-index:2;pointer-events:none;display:flex;align-items:flex-end;gap:14px}.monitor canvas{display:block;width:230px;height:52px}.monitor .bpm{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--on-surface-muted);line-height:1.4}.monitor .bpm b{display:block;font-size:26px;font-weight:500;color:var(--on-surface);letter-spacing:-.02em;line-height:1.1}.phase-chip{position:absolute;left:24px;top:112px;z-index:2;pointer-events:none;font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--on-surface-muted);text-align:left;line-height:1.6}.phase-chip b{display:block;font-family:var(--serif);font-size:18px;font-weight:600;color:var(--on-surface);letter-spacing:.06em}.phase-chip .valves{display:flex;gap:10px;justify-content:flex-start;margin-top:6px}.phase-chip .valves span{display:inline-flex;align-items:center;gap:5px}.phase-chip .valves i{width:7px;height:7px;border-radius:50%;background:var(--surface-line);display:inline-block;transition:background .2s}.phase-chip .valves i.open{background:var(--conduction)}#ui-restore{position:absolute;right:20px;top:20px;z-index:3;display:none;background:var(--surface-2);border-color:var(--surface-line);color:var(--on-surface);font-size:12px}.viewport.clean .view-top,.viewport.clean .view-bottom,.viewport.clean .mode-row,.viewport.clean .view-buttons,.viewport.clean .camera-extra,.viewport.clean .legend,.viewport.clean .monitor,.viewport.clean .phase-chip,.viewport.clean .part-label{display:none}.viewport.clean #ui-restore{display:block}.lab-note{padding:34px 0 10px;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px 56px;align-items:start}.lab-note h2{font-size:21px;line-height:1.5;margin-bottom:12px}.lab-note p{font-size:14px;line-height:1.95;color:var(--muted);margin:0 0 10px}.lab-note p b{color:var(--ink);font-weight:600}.lab-note ol,.lab-note ul{margin:0;padding-left:1.4em;font-size:14px;line-height:1.95;color:var(--muted)}.lab-note li b{color:var(--ink);font-weight:600}.lab-note .full{grid-column:1/-1}.schematic{width:100%;height:auto;display:block;max-width:560px;margin:4px auto 0;font-family:var(--sans)}.schematic text{font-size:12px;fill:var(--ink)}.schematic .en{font-family:var(--mono);font-size:9px;fill:var(--muted);letter-spacing:.06em}.schematic .box{fill:var(--paper-3);stroke:var(--line-strong);stroke-width:1}.schematic .box.active{stroke:var(--ink);stroke-width:2}.schematic .organ{fill:none;stroke:var(--line-strong);stroke-width:1;stroke-dasharray:3 3}.schematic .flow{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.schematic .flow.a{stroke:var(--artery)}.schematic .flow.v{stroke:var(--vein)}.schematic .dots{fill:none;stroke:var(--paper);stroke-width:1.6;stroke-dasharray:1.5 7;stroke-linecap:round;animation:flow var(--dur,1.2s) linear infinite}.schematic .valve line{stroke:var(--ink);stroke-width:2.4;stroke-linecap:round;transition:transform .2s;transform-box:view-box}.schematic .valve.open .l{transform:rotate(calc(60deg * var(--o)))}.schematic .valve.open .r{transform:rotate(calc(-60deg * var(--o)))}.schematic .cap{stroke-dasharray:2 2;stroke:var(--muted);stroke-width:1;fill:none}@keyframes flow{to{stroke-dashoffset:-8.5}}.phase-list{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border-top:1px solid var(--line);margin-top:6px}.phase-list button{text-align:left;border:0;border-top:2px solid transparent;border-radius:0;padding:14px 10px 12px;display:block;min-height:44px;margin-top:-1px}.phase-list button b{display:block;font-family:var(--serif);font-size:15px;font-weight:600;margin-bottom:6px}.phase-list button small{display:block;font-size:12px;line-height:1.7;color:var(--muted)}.phase-list button .no{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--muted);display:block;margin-bottom:8px}.phase-list button.active{border-top-color:var(--accent);background:var(--paper-2)}.phase-list button.active b{color:var(--accent)}.ref-list{font-size:13px;line-height:2;color:var(--muted);padding-left:1.3em;margin:0}.ref-list a{color:var(--ink)}.kbd-row{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:12px;color:var(--muted);margin-top:6px}kbd{font-family:var(--mono);font-size:10px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:3px;padding:2px 6px;color:var(--ink);margin-right:4px;background:var(--paper)}.assumptions dl{margin:0;font-size:13px;line-height:1.9;color:var(--muted)}.assumptions dt{color:var(--ink);font-weight:600;margin-top:10px}.assumptions dd{margin:0}@media(max-width:1000px){.phase-list{grid-template-columns:repeat(3,1fr)}.monitor canvas{width:180px;height:44px}}@media(max-width:760px){.lab-note{grid-template-columns:1fr;gap:22px}.phase-list{grid-template-columns:1fr 1fr}.monitor{left:14px;bottom:86px}.monitor canvas{width:150px;height:40px}.monitor .bpm b{font-size:20px}.phase-chip{left:14px;top:auto;bottom:150px}.phase-chip b{font-size:15px}.camera-extra{top:auto;bottom:38px}}.viewport.paper{--on-surface:#28231f;--on-surface-muted:#6f665c;--surface-2:#e8dfcf;--surface-line:#c9bfae;--surface:#f1e9d8}.viewport.paper .view-buttons button:hover,.viewport.paper .camera-extra button:hover,.viewport.paper .mode-row button:hover{background:#d9cfbd}.viewport.paper .monitor canvas{filter:none}.viewport.paper .part-label{background:#f1e9d8e6;color:#28231f;border-color:#28231f59}.viewport.paper .measure-label{background:transparent;color:#3a2f28;font-size:12px}.viewport.paper .live-dot{box-shadow:none}.dimension-label{pointer-events:none;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:#3a2f28;background:#f1e9d8d9;padding:2px 6px;border-radius:2px}.explode-bar{position:absolute;left:50%;bottom:56px;transform:translate(-50%);z-index:2;display:flex;align-items:center;gap:12px;padding:8px 16px;border:1px solid var(--surface-line);border-radius:999px;background:var(--surface-2);font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--on-surface-muted);white-space:nowrap}.explode-bar input[type=range]{width:200px;margin:0;height:22px}.explode-bar input[type=range]::-webkit-slider-runnable-track{background:var(--surface-line)}.explode-bar input[type=range]::-webkit-slider-thumb{background:var(--on-surface);border-color:var(--on-surface);margin-top:-8px}.explode-bar kbd{background:transparent;color:var(--on-surface-muted);border-color:var(--surface-line)}.viewport.clean .explode-bar{display:none}@media(max-width:760px){.explode-bar{bottom:50px;padding:6px 12px;gap:8px}.explode-bar input[type=range]{width:120px}.explode-bar kbd{display:none}}
