.heart3d-modal{position:fixed;inset:0;z-index:1800;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(15,23,42,.56);backdrop-filter:blur(8px)}
.heart3d-modal.open{display:flex}
.heart3d-dialog{width:min(1240px,96vw);height:min(810px,92vh);min-height:580px;display:flex;flex-direction:column;overflow:hidden;border:1px solid #2a3746;border-radius:18px;background:#0b1119;box-shadow:0 34px 100px rgba(0,0,0,.56)}
.heart3d-modal.fullscreen{padding:0;background:#080d13}.heart3d-modal.fullscreen .heart3d-dialog{width:100vw;height:100vh;max-width:none;max-height:none;border:0;border-radius:0}.heart3d-modal.fullscreen .heart3d-main{grid-template-columns:220px minmax(0,1fr) 320px}.heart3d-modal.fullscreen .heart3d-stage{min-height:0}
.heart3d-head{height:62px;display:flex;align-items:center;gap:12px;padding:0 18px;border-bottom:1px solid #263241;background:linear-gradient(180deg,#121b27,#0d151f)}
.heart3d-title{font-size:15px;font-weight:700;color:#e8edf3;letter-spacing:.01em}
.heart3d-subtitle{font-size:10px;color:#8190a3;letter-spacing:.025em}
.heart3d-head-spacer{flex:1}
.heart3d-head button,.heart3d-tool-btn{height:34px;border:1px solid #344255;border-radius:7px;background:#16202c;color:#aeb9c7;padding:0 11px;font:600 11px inherit;cursor:pointer;transition:.15s}
.heart3d-data-status{display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding-right:12px;border-right:1px solid #2c3948}.heart3d-data-status span{color:#63758a;font:700 7px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.11em}.heart3d-data-status b{color:#d2a96c;font-size:9px;font-weight:700}
.heart3d-head button:hover,.heart3d-tool-btn:hover{border-color:#5b7088;background:#1c2938;color:#f1f5f9}
.heart3d-close{width:34px;padding:0!important;font-size:20px!important;font-weight:400!important}
.heart3d-main{display:grid;grid-template-columns:190px minmax(0,1fr) 270px;flex:1;min-height:0}
.heart3d-side{overflow:auto;padding:16px;background:#101822;color:#b7c2cf}
.heart3d-side.left{border-right:1px solid #263241}
.heart3d-side.right{border-left:1px solid #263241}
.heart3d-section-title{margin-bottom:9px;font-size:10px;font-weight:800;color:#738297;letter-spacing:.12em;text-transform:uppercase}
.heart3d-preset-list{display:flex;flex-direction:column;gap:5px;margin-bottom:18px}.heart3d-preset{display:flex;align-items:center;justify-content:space-between;gap:7px;width:100%;min-height:31px;padding:5px 8px;border:1px solid #303d4c;border-radius:6px;background:#151f2b;color:#aeb9c7;font:650 11px inherit;text-align:left;cursor:pointer;transition:.15s}.heart3d-preset small{color:#607286;font:650 7px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.05em}.heart3d-preset:hover{border-color:#50657c;background:#1a2735;color:#eef4f8}.heart3d-preset.active{border-color:#4fb8cb;background:linear-gradient(90deg,#153a44,#192936);color:#a9edf5;box-shadow:inset 2px 0 #5ad4e7}.heart3d-preset.active small{color:#62cfe0}.heart3d-preset-summary{border-color:#285c67;background:linear-gradient(145deg,#142b32,#151f2a)}
.heart3d-lead-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:18px}
.heart3d-lead{height:34px;border:1px solid #303d4c;border-radius:7px;background:#151f2b;color:#9aa8b8;font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace;cursor:pointer;transition:.15s}
.heart3d-lead:hover{border-color:#64788f;background:#1b2836;color:#e2e8f0}
.heart3d-lead.active{border-color:#46b6ca;background:#153f49;color:#9debf6;box-shadow:inset 0 0 0 1px rgba(80,211,230,.18),0 0 16px rgba(57,193,215,.1)}
.heart3d-region-list{display:flex;flex-direction:column;gap:7px}
.heart3d-region{display:flex;align-items:center;gap:8px;width:100%;min-height:38px;padding:7px 9px;border:1px solid #303d4c;border-radius:8px;background:#151f2b;color:#aeb9c7;font:600 12px inherit;text-align:left;cursor:pointer}
.heart3d-region-dot{width:9px;height:9px;border-radius:50%;background:var(--region-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--region-color) 18%,transparent)}
.heart3d-region.active{border-color:var(--region-color);background:color-mix(in srgb,var(--region-color) 20%,#101822);color:#f1f5f9}
.heart3d-stage{position:relative;min-width:0;min-height:0;overflow:hidden;background:radial-gradient(ellipse at 50% 42%,#26303a 0,#111923 47%,#080d13 100%)}
.heart3d-stage:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.24;background-image:linear-gradient(rgba(128,153,174,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(128,153,174,.08) 1px,transparent 1px);background-size:28px 28px;mask-image:radial-gradient(circle at center,#000,transparent 78%)}
.heart3d-stage canvas{display:block;width:100%;height:100%;touch-action:none}
.heart3d-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:3;background:rgba(9,14,20,.92);color:#cbd5e1;font-size:12px;letter-spacing:.04em}
.heart3d-loading.hidden{display:none}
.heart3d-stage-tools{position:absolute;left:12px;right:12px;top:12px;display:flex;flex-wrap:wrap;gap:7px;z-index:4}
.heart3d-evidence-bar{position:absolute;left:50%;top:52px;z-index:4;display:flex;align-items:center;gap:8px;max-width:calc(100% - 34px);padding:7px 10px;border:1px solid rgba(75,105,129,.34);border-radius:7px;background:rgba(7,15,23,.88);transform:translateX(-50%);backdrop-filter:blur(8px);box-shadow:0 5px 18px rgba(0,0,0,.16)}
.heart3d-evidence-bar>div{display:flex;min-width:72px;max-width:145px;flex-direction:column;gap:2px}.heart3d-evidence-bar small{color:#607488;font:650 7px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em}.heart3d-evidence-bar b{overflow:hidden;color:#d6e1e9;font-size:9px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.heart3d-evidence-bar i{color:#446174;font:400 16px ui-monospace,SFMono-Regular,Menlo,monospace}
.heart3d-section-panel{position:absolute;left:12px;top:52px;z-index:5;display:none;width:250px;padding:11px;border:1px solid #3c586c;border-radius:9px;background:rgba(8,17,26,.94);box-shadow:0 12px 32px rgba(0,0,0,.32);backdrop-filter:blur(9px)}
.heart3d-section-panel.open{display:block}
.heart3d-section-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px;color:#e6eef5;font-size:10px}.heart3d-section-panel-head span{color:#73d5e4;font:650 9px ui-monospace,SFMono-Regular,Menlo,monospace}
.heart3d-section-axis{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:9px}.heart3d-section-axis button,.heart3d-section-actions button{height:27px;border:1px solid #344b5d;border-radius:5px;background:#132330;color:#9dafbd;font:650 9px inherit;cursor:pointer}.heart3d-section-axis button.active{border-color:#55c7d9;background:#16404a;color:#a8edf5}
.heart3d-section-panel input[type=range]{width:100%;accent-color:#51c7d9;cursor:ew-resize}
.heart3d-section-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px}.heart3d-section-actions button{padding:0 8px}.heart3d-section-actions small{color:#718596;font-size:8px}
.heart3d-section-warning{margin-top:9px;padding:7px 8px;border:1px solid rgba(245,158,11,.28);border-radius:6px;background:rgba(120,73,13,.18);color:#d7ad6d;font-size:8px;line-height:1.5}
.heart3d-tool-btn{height:30px;background:rgba(13,21,31,.82);backdrop-filter:blur(7px)}
.heart3d-tool-btn.hidden{display:none}
.heart3d-tool-btn.active{border-color:#687b91;background:#344150;color:#f8fafc;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}
.heart3d-model-badge{position:absolute;right:14px;top:15px;color:#718198;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.09em;pointer-events:none}
.heart3d-disease-telemetry{position:absolute;left:50%;top:52px;z-index:4;display:none;align-items:center;gap:9px;max-width:calc(100% - 40px);padding:7px 10px;border:1px solid rgba(84,194,213,.36);border-radius:6px;background:rgba(5,14,22,.86);color:#a9bac9;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;transform:translateX(-50%);backdrop-filter:blur(7px);white-space:nowrap}.heart3d-disease-telemetry.active{display:flex}.heart3d-disease-telemetry b{color:#eef6f8;font-size:10px}.heart3d-disease-telemetry span{color:#70d8e8}.heart3d-disease-telemetry em{padding:3px 6px;border-radius:4px;background:#18333b;color:#88e4ef;font-style:normal}.heart3d-disease-telemetry em.blocked{background:#4b1821;color:#ff8b9d;box-shadow:0 0 10px rgba(244,63,94,.18)}.heart3d-disease-telemetry.preset-sinus{border-color:rgba(112,216,232,.42)}.heart3d-disease-telemetry.preset-af{border-color:rgba(240,79,146,.50)}.heart3d-disease-telemetry.preset-af span,.heart3d-disease-telemetry em.rhythm-af{color:#ff8fbe}.heart3d-disease-telemetry em.rhythm-af{background:#40152d}.heart3d-disease-telemetry.preset-flutter{border-color:rgba(245,158,11,.52)}.heart3d-disease-telemetry.preset-flutter span,.heart3d-disease-telemetry em.rhythm-flutter{color:#ffc45b}.heart3d-disease-telemetry em.rhythm-flutter{background:#422b0c}
.heart3d-lesion-legend{position:absolute;left:14px;bottom:94px;z-index:4;display:none;align-items:center;gap:9px;max-width:min(520px,calc(100% - 28px));padding:9px 11px;border:1px solid rgba(176,103,67,.34);border-radius:7px;background:rgba(14,11,13,.90);color:#d7c9c4;font-size:9px;backdrop-filter:blur(8px)}.heart3d-lesion-legend.active{display:flex}.heart3d-lesion-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.heart3d-lesion-legend b{color:#f0d8cc;font-size:9px;letter-spacing:.04em}.heart3d-lesion-legend small{color:#c59378}.heart3d-lesion-legend em{color:#8e7d78;font-size:7px;font-style:normal;white-space:normal}.heart3d-lesion-swatch{width:34px;height:24px;flex:0 0 auto;border:1px solid rgba(190,111,71,.32);border-radius:5px;background:radial-gradient(ellipse at 58% 48%,rgba(48,7,14,.94) 0 20%,rgba(112,28,28,.76) 42%,rgba(161,70,39,.36) 65%,transparent 88%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.022)}
.heart3d-conduction-timeline{position:absolute;left:50%;bottom:130px;z-index:4;display:none;align-items:center;width:min(560px,calc(100% - 34px));padding:9px 12px;border:1px solid rgba(73,148,166,.28);border-radius:8px;background:rgba(5,13,21,.84);transform:translateX(-50%);backdrop-filter:blur(8px)}.heart3d-conduction-timeline.active{display:flex}.heart3d-conduction-timeline>div{display:grid;grid-template-columns:8px auto;align-items:center;column-gap:5px;min-width:max-content;color:#66798a;font:650 8px ui-monospace,SFMono-Regular,Menlo,monospace}.heart3d-conduction-timeline>div i{grid-row:1/3;width:7px;height:7px;border:1px solid #4f6375;border-radius:50%;background:#162330;transition:.16s}.heart3d-conduction-timeline>div small{font-size:6px;color:#526578}.heart3d-conduction-timeline>b{flex:1;height:1px;min-width:7px;margin:0 4px;background:#2b3b49}.heart3d-conduction-timeline>div.passed{color:#74b8c5}.heart3d-conduction-timeline>div.passed i{border-color:#4ba9ba;background:#2e7380}.heart3d-conduction-timeline>div.current{color:#f3fbfd}.heart3d-conduction-timeline>div.current i{border-color:#e8fbff;background:#67deef;box-shadow:0 0 12px #50d2e8;transform:scale(1.45)}.heart3d-conduction-timeline>div.current small{color:#9be6f0}
.heart3d-beat-status{position:absolute;right:14px;bottom:12px;display:flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid rgba(107,126,148,.25);border-radius:5px;background:rgba(5,10,16,.76);color:#8998aa;font:600 9px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}
.heart3d-beat-status label{color:#b7c4d3}.heart3d-beat-status input{width:47px;height:22px;box-sizing:border-box;border:1px solid #405064;border-radius:4px;outline:0;background:#111c28;color:#e7edf4;text-align:center;font:700 10px ui-monospace,SFMono-Regular,Menlo,monospace;appearance:textfield}.heart3d-beat-status input::-webkit-inner-spin-button{appearance:none}.heart3d-beat-status input:focus{border-color:#62c7d7;box-shadow:0 0 0 2px rgba(79,196,215,.12)}.heart3d-beat-status input.invalid{border-color:#ef6a61;background:#351a1d}.heart3d-bpm-source{padding-left:6px;border-left:1px solid #3a4859;color:#6fd0dd}
.heart3d-beat-dot{width:7px;height:7px;border-radius:50%;background:#ef6a61;box-shadow:0 0 9px rgba(239,106,97,.7);transition:transform 40ms linear;transform-origin:center}.heart3d-beat-dot.paused{background:#657386;box-shadow:none;transform:scale(1)!important}
.heart3d-conduction-legend{position:absolute;left:50%;bottom:94px;z-index:4;display:none;align-items:center;gap:9px;max-width:calc(100% - 30px);padding:8px 11px;border:1px solid rgba(70,190,214,.34);border-radius:7px;background:rgba(5,13,21,.86);color:#9db0c2;font-size:9px;white-space:nowrap;transform:translateX(-50%);backdrop-filter:blur(8px)}.heart3d-conduction-legend.active{display:flex}.heart3d-conduction-legend b{color:#e7eef5;font:700 8px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.1em}.heart3d-conduction-sequence i{width:14px;height:1px;background:linear-gradient(90deg,#ffd36a,#55d7f2);position:relative}.heart3d-conduction-sequence i:after{content:"";position:absolute;right:-1px;top:-2px;border-left:4px solid #55d7f2;border-top:2px solid transparent;border-bottom:2px solid transparent}.heart3d-conduction-legend small{padding-left:8px;border-left:1px solid #344456;color:#73869a}.heart3d-activation-scale{position:relative;display:flex;justify-content:space-between;width:210px;padding-top:9px;color:#aebdca;font:600 7px ui-monospace,SFMono-Regular,Menlo,monospace}.heart3d-activation-scale:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;border-radius:1px;background:linear-gradient(90deg,#e61a29 0%,#ffe14b 34%,#18b8eb 68%,#5428bc 100%);box-shadow:0 0 9px rgba(67,198,224,.18)}
.heart3d-block-key{display:inline-flex;align-items:center;gap:5px;color:#aebdca;font:600 8px ui-monospace,SFMono-Regular,Menlo,monospace}.heart3d-block-key i{width:18px;height:3px;border-radius:2px;background:#ffd84a;box-shadow:0 0 7px rgba(255,216,74,.45)}.heart3d-block-key.blocked i{height:8px;background:#ff304f;clip-path:polygon(0 35%,35% 35%,35% 0,65% 0,65% 35%,100% 35%,100% 65%,65% 65%,65% 100%,35% 100%,35% 65%,0 65%);box-shadow:0 0 8px rgba(255,48,79,.58)}.heart3d-block-key.distal i{background:#59616d;box-shadow:none}
.heart3d-rhythm-key{display:inline-flex;align-items:center;gap:6px;color:#bdc9d4;font:650 8px ui-monospace,SFMono-Regular,Menlo,monospace}.heart3d-rhythm-key i{width:20px;height:4px;border-radius:5px}.heart3d-rhythm-key.sinus i{background:linear-gradient(90deg,#ffe070,#62d8eb);box-shadow:0 0 8px rgba(255,224,112,.42)}.heart3d-rhythm-key.af i{height:8px;background:linear-gradient(155deg,transparent 0 12%,#f04f92 14% 25%,transparent 27% 40%,#38d7e8 42% 54%,transparent 56% 68%,#f04f92 70% 82%,transparent 84%);filter:drop-shadow(0 0 4px rgba(240,79,146,.32))}.heart3d-rhythm-key.flutter i{height:8px;border:2px solid #f59e0b;border-left-color:#ffd35a;border-radius:50%;background:transparent;box-shadow:0 0 7px rgba(245,158,11,.34)}
.heart3d-conduction-sequence{display:flex;align-items:center;gap:5px;margin-top:11px;color:#74ddec;font:700 9px ui-monospace,SFMono-Regular,Menlo,monospace}.heart3d-conduction-sequence span{padding:3px 5px;border:1px solid #285a65;border-radius:4px;background:#102f37}
.heart3d-orientation{position:absolute;left:14px;bottom:12px;padding:5px 8px;border-radius:5px;background:rgba(5,10,16,.7);border:1px solid rgba(107,126,148,.25);color:#8998aa;font-size:9px;letter-spacing:.04em;pointer-events:none}
.heart3d-phase-strip{position:absolute;left:50%;bottom:12px;z-index:4;display:grid;grid-template-columns:150px minmax(240px,420px);align-items:center;gap:10px;width:min(590px,calc(100% - 235px));min-height:58px;padding:7px 10px;border:1px solid rgba(69,96,116,.36);border-radius:8px;background:rgba(5,12,19,.90);transform:translateX(-50%);backdrop-filter:blur(8px)}
.heart3d-phase-meta{display:flex;flex-direction:column;gap:3px}.heart3d-phase-meta b{color:#849aab;font:750 7px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.11em}.heart3d-phase-meta span{color:#d9e4eb;font:700 10px ui-monospace,SFMono-Regular,Menlo,monospace}.heart3d-phase-meta small{color:#65798a;font-size:7px}
.heart3d-phase-strip svg{width:100%;height:52px;overflow:visible}.heart3d-phase-grid{fill:none;stroke:rgba(102,132,151,.12);stroke-width:.7}.heart3d-phase-wave{fill:none;stroke:#79b8c4;stroke-width:1.5;vector-effect:non-scaling-stroke}.heart3d-phase-cursor{stroke:#e3b269;stroke-width:1.5;vector-effect:non-scaling-stroke}.heart3d-phase-strip text{fill:#657b8d;font:650 7px ui-monospace,SFMono-Regular,Menlo,monospace}
.heart3d-info-card{padding:13px;border:1px solid #2d3948;border-radius:9px;background:#151f2a;margin-bottom:12px}
.heart3d-aha-summary{display:flex;align-items:center;gap:11px;margin-top:12px;padding-top:11px;border-top:1px solid #2b3744}.heart3d-aha-bullseye{width:106px;height:106px;flex:0 0 auto;filter:drop-shadow(0 6px 12px rgba(0,0,0,.22))}.heart3d-aha-segment{fill:#202d38;stroke:#526171;stroke-width:.75;transition:fill .18s,stroke .18s}.heart3d-aha-segment.active{fill:#7d2432;stroke:#e0a08b;stroke-width:1.15}.heart3d-aha-bullseye text{fill:#91a1af;font:600 5.7px ui-monospace,SFMono-Regular,Menlo,monospace;text-anchor:middle;pointer-events:none}.heart3d-aha-bullseye .active+text{fill:#fff3ed;font-weight:800}.heart3d-aha-copy{display:flex;min-width:0;flex-direction:column;gap:4px}.heart3d-aha-copy b{color:#dce5ec;font:750 8px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em}.heart3d-aha-copy span{color:#efa18f;font-size:9px;font-weight:700}.heart3d-aha-copy small{color:#aeb9c2;font-size:8px}.heart3d-aha-copy em{color:#71808d;font-size:7px;font-style:normal;line-height:1.45}
.heart3d-info-title{font-size:14px;font-weight:750;color:#e6ebf1;margin-bottom:5px}
.heart3d-info-desc{font-size:12px;line-height:1.65;color:#93a1b2}
.heart3d-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.heart3d-tag{padding:4px 7px;border:1px solid #275c68;border-radius:999px;background:#16333a;color:#82dce9;font:700 11px ui-monospace,SFMono-Regular,Menlo,monospace}
.heart3d-finding{padding:9px 10px;border-left:3px solid #d89a4f;border-radius:6px;background:#2b241a;color:#e6c28f;font-size:12px;line-height:1.55;margin-top:8px}
.heart3d-risk{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid #2b3745;font-size:12px;color:#a5b1bf}
.heart3d-risk:last-child{border-bottom:0}
.heart3d-risk-level{font-weight:800}.heart3d-risk-level.high{color:#b91c1c}.heart3d-risk-level.mid{color:#b45309}.heart3d-risk-level.low{color:#15803d}
.heart3d-disclaimer{padding:11px;border:1px solid #5d4931;border-radius:8px;background:#241e17;color:#d5b184;font-size:11px;line-height:1.6}
.heart3d-attribution{margin-top:12px;font-size:10px;line-height:1.55;color:#687789}.heart3d-attribution a{color:#8b9caf}
.heart3d-studio-btn{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 9px;border:1px solid #dbe3ee;border-radius:9px;background:#fff;color:#475569;font:600 11px inherit;cursor:pointer}.heart3d-studio-btn:hover{border-color:#93c5fd;color:#1d4ed8;background:#eff6ff}
.heart3d-result-btn{display:inline-flex;align-items:center;gap:7px;margin-top:10px;padding:8px 12px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1d4ed8;font:700 12px inherit;cursor:pointer}.heart3d-result-btn:hover{background:#dbeafe;border-color:#93c5fd}
.heart3d-conduction-timeline>div.blocked{color:#ff8c9c}.heart3d-conduction-timeline>div.blocked i{border-color:#ff405b;background:#8b182d;box-shadow:0 0 12px rgba(255,64,91,.65)}
@media(max-width:900px){.heart3d-main{grid-template-columns:150px minmax(0,1fr)}.heart3d-side.right{grid-column:1/-1;border-left:0;border-top:1px solid #e2e8f0;max-height:190px}.heart3d-dialog{height:94vh}.heart3d-main{overflow:auto}.heart3d-stage{min-height:420px}.heart3d-phase-strip{width:calc(100% - 28px);grid-template-columns:110px 1fr}.heart3d-evidence-bar{display:none}.heart3d-data-status{display:none}}
@media(max-width:640px){.heart3d-modal{padding:0}.heart3d-dialog{width:100vw;height:100vh;max-height:none;border-radius:0}.heart3d-main{display:flex;flex-direction:column}.heart3d-side.left{border-right:0;border-bottom:1px solid #e2e8f0}.heart3d-lead-grid{grid-template-columns:repeat(6,1fr)}.heart3d-stage{min-height:380px}.heart3d-side.right{max-height:none}}
