:root{--bg: #07090c;--panel: #0e1217;--panel-2: #131921;--line: #1f2731;--line-2: #2a3542;--text: #e7edf3;--muted: #8b98a7;--faint: #5d6a78;--accent: #7fd6f2;--accent-2: #ffb02e;--ok: #7be0b0;--radius: 12px;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit}.app-shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:18px;height:52px;padding:0 20px;background:#07090ceb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-weight:650;letter-spacing:.01em;white-space:nowrap}.brand-mark{width:26px;height:26px;display:grid;place-items:center;border-radius:7px;background:linear-gradient(140deg,#ffb02e,#e8705f);color:#1a0d05}.brand small{color:var(--muted);font-weight:500}.nav{display:flex;gap:4px;margin-left:auto}.nav a,.nav button{border:0;background:none;color:var(--muted);padding:7px 11px;border-radius:8px;text-decoration:none;cursor:pointer;font-size:13px}.nav a:hover,.nav button:hover,.nav .on{color:var(--text);background:var(--panel-2)}.sim{padding:14px 20px 40px;max-width:1720px;margin:0 auto}.case-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-bottom:12px}.case-card{display:flex;align-items:center;gap:10px;text-align:left;padding:6px 12px 6px 6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);cursor:pointer;transition:border-color .15s,background .15s}.case-card:hover{border-color:var(--line-2)}.case-card.active{border-color:var(--accent-2);background:linear-gradient(180deg,#ffb02e17,#ffb02e05)}.case-card img{width:52px;height:52px;border-radius:9px;background:#0a0d11;object-fit:cover;flex:none}.case-card b{display:block;font-size:14px}.case-card small{display:block;color:var(--muted);font-size:12px;line-height:1.3}.stage{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:12px}.pane{display:flex;flex-direction:column;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.pane>header,.pane>footer{display:flex;align-items:center;gap:8px;padding:8px 10px;min-height:42px}.pane>header{justify-content:space-between;border-bottom:1px solid var(--line)}.pane>footer{border-top:1px solid var(--line);flex-wrap:wrap}.pane h2{display:flex;align-items:center;gap:7px;margin:0;font-size:13px;font-weight:600;white-space:nowrap}.pane h2 svg{color:var(--muted)}.badge{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);border:1px solid rgba(127,214,242,.35);padding:1px 6px;border-radius:999px}.pane-canvas{position:relative;background:#000;touch-action:pan-y}.pane-3d .pane-canvas{touch-action:none}.pane-tee .pane-canvas,.pane-section .pane-canvas{aspect-ratio:1.3 / 1}.pane-3d .pane-canvas{flex:1;min-height:320px}.pane-canvas.heart{background:radial-gradient(ellipse at 50% 40%,#121a24,#06080b 75%)}.pane-canvas canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:block}.pane-canvas .overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.pane-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted);font-size:13px}.pane-loading.error{color:#ff9c8a;padding:20px;text-align:center}.spin{animation:spin 1s linear infinite;vertical-align:-3px;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}.overlay .depth-scale line{stroke:#dce6f08c;stroke-width:1}.overlay .depth-scale text{fill:#dce6f0a6;font-size:10px}.overlay .tag rect{fill:#05080cb8;stroke-width:1.3}.overlay .tag text{fill:#fff;font-size:11px;font-weight:600}.overlay .tag.faded{opacity:.3}.overlay .caliper line{stroke:#ffe45c;stroke-width:1.6}.overlay .caliper line.depth{stroke-dasharray:4 3}.overlay .crosshair circle,.overlay .crosshair line{stroke:#fff;stroke-width:1.5;fill:none}.scanner-hud{position:absolute;top:8px;left:10px;display:flex;align-items:center;gap:6px;pointer-events:none}.hud-angle{font:600 18px/1 ui-monospace,SF Mono,Menlo,monospace;color:#e9f6ff}.mp-icon circle{fill:none;stroke:#e9f6ffbf;stroke-width:1.3}.mp-icon line{stroke:#ffe45c;stroke-width:2}.mp-icon .dot{fill:#ffe45c;stroke:none}.scanner-foot{position:absolute;left:10px;right:10px;bottom:6px;display:flex;justify-content:space-between;gap:8px;font:10px/1.2 ui-monospace,SF Mono,Menlo,monospace;color:#dce6f08c;pointer-events:none}.hover-card{position:absolute;left:10px;bottom:24px;display:flex;align-items:center;gap:7px;padding:5px 9px;border-radius:8px;background:#080b0fe0;border:1px solid var(--line-2);font-size:12.5px;pointer-events:none;max-width:calc(100% - 20px)}.hover-card small{color:var(--muted)}.pane-canvas.heart .hover-card{bottom:10px}.swatch{width:10px;height:10px;border-radius:3px;flex:none}.scene-tags{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.scene-tag{font-size:11px;font-weight:600;color:#f4f7fa;background:#06090d9e;border:1px solid rgba(255,255,255,.16);padding:1px 6px;border-radius:6px;white-space:nowrap}.scene-tag.laa{border-color:var(--accent-2);color:#ffd48a}.scene-tag.lcx{border-color:#ffe45c;color:#fff3a8}.seg{display:inline-flex;background:#0a0d11;border:1px solid var(--line);border-radius:8px;padding:2px;gap:2px;flex-wrap:wrap}.seg button{border:0;background:none;color:var(--muted);font-size:12px;padding:4px 8px;border-radius:6px;cursor:pointer;white-space:nowrap}.seg button:hover{color:var(--text)}.seg button.on{background:var(--panel-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}.switch-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#0a0d11;color:var(--muted);font-size:12px;padding:4px 9px;border-radius:999px;cursor:pointer}.switch-btn.on{color:#071016;background:var(--accent);border-color:var(--accent)}.readout{margin-left:auto;font:600 12px/1 ui-monospace,SF Mono,Menlo,monospace;color:#ffe45c}.legend-row{color:var(--faint);font-size:12px}.dock{display:grid;grid-template-columns:1.05fr .9fr 1.25fr 1.2fr;gap:12px;margin-top:12px}.dock-card,.learn-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;min-width:0}.dock-card h3,.learn-card h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:13px;font-weight:600}.preset-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px}.preset-label{width:46px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}.chip{border:1px solid var(--line-2);background:#0a0d11;border-radius:8px;padding:5px 10px;font-size:12.5px;cursor:pointer;color:var(--text)}.chip:hover{border-color:var(--muted)}.chip.on{background:var(--accent-2);border-color:var(--accent-2);color:#1b1003;font-weight:600}.preset-row.actions{margin-top:4px}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);background:var(--panel-2);border-radius:8px;padding:6px 10px;font-size:12.5px;cursor:pointer}.btn:hover{border-color:var(--muted)}.btn:disabled{opacity:.4;cursor:default}.btn.ghost{background:none}.angle-dial{display:block;width:100%;max-width:230px;margin:-4px auto 0;cursor:pointer;touch-action:none;outline:none}.angle-dial:focus-visible{outline:2px solid var(--accent);border-radius:10px}.angle-dial .track{fill:none;stroke:#1c242e;stroke-width:10;stroke-linecap:round}.angle-dial .fill{fill:none;stroke:#7fd6f273;stroke-width:10;stroke-linecap:round}.angle-dial line{stroke:#3a4655;stroke-width:1.2}.angle-dial line.major{stroke:#6d7b8b}.angle-dial text{fill:var(--muted);font-size:10px}.angle-dial .needle{stroke:#ffe45c;stroke-width:2.5;stroke-linecap:round}.angle-dial .knob{fill:#ffe45c;stroke:#0b0e12;stroke-width:2}.angle-dial .hub{fill:#ffe45c}.angle-readout{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:2px}.angle-readout output{font:600 22px/1 ui-monospace,SF Mono,Menlo,monospace;min-width:64px;text-align:center}.ctl-slider{display:block;margin-bottom:9px}.ctl-head{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.ctl-head output{color:var(--text);font:600 12px/1.4 ui-monospace,SF Mono,Menlo,monospace}.ctl-slider input[type=range]{width:100%;margin:3px 0 0;accent-color:var(--accent)}.ctl-ends{display:flex;justify-content:space-between;color:var(--faint);font-size:10.5px;margin-top:-2px}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hint{margin:2px 0 0;color:var(--faint);font-size:11px}.seen-list{list-style:none;margin:0;padding:0;max-height:268px;overflow:auto}.seen-list li{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;padding:5px 6px;border-radius:7px;font-size:12.5px;cursor:default}.seen-list li:hover,.seen-list li.on{background:var(--panel-2)}.seen-list .where{color:var(--muted);font-size:11.5px;white-space:nowrap}.muted{color:var(--muted)}.small{font-size:11.5px}.learn{display:grid;grid-template-columns:1fr 1.15fr .9fr;gap:12px;margin-top:12px}.learn-card p{margin:0 0 8px;color:#c9d3dc}.learn-card ul{margin:0 0 8px;padding-left:18px;color:#c9d3dc}.learn-card li{margin-bottom:4px}.eyebrow{font-size:10.5px!important;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)!important;margin-bottom:4px!important}.learn-card h3{font-size:16px;margin-bottom:8px}.definition{color:#ffd48a!important}.pitfall{border-left:3px solid #ff8f70;padding-left:10px}.closure{border-left:3px solid var(--accent);padding-left:10px}.link{border:0;background:none;padding:0;color:var(--accent);cursor:pointer;font-size:13px;text-align:left}.link:hover{text-decoration:underline}.sizing{width:100%;border-collapse:collapse;margin-bottom:8px;font-size:13px}.sizing th{text-align:left;font-weight:500;color:var(--faint);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:4px 6px}.sizing td{padding:5px 6px;border-top:1px solid var(--line);font-family:ui-monospace,SF Mono,Menlo,monospace}.sizing tr.on td{background:#7fd6f212}.sizing td.max{color:#ffe45c;font-weight:600}.sector-note{color:var(--faint);font-size:11.5px;margin:14px 2px 0}.stage-bar{display:flex;align-items:center;gap:12px;margin-bottom:10px;min-height:34px}.stage-hint{color:var(--faint);font-size:12px;flex:1;min-width:0}.zoom-ctl{display:flex;align-items:center;gap:4px;margin-left:auto}.zoom-ctl .btn{padding:5px 8px}.zoom-ctl output{font:600 12px/1 ui-monospace,SF Mono,Menlo,monospace;min-width:44px;text-align:center}.hud-zoom{font:600 12px/1 ui-monospace,SF Mono,Menlo,monospace;color:#ffe45c;margin-left:4px}.seg button:disabled{opacity:.4;cursor:default}.seg.locked{position:relative}.foot-3d{row-gap:8px}.foot-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;width:100%}.foot-label{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--muted)}.foot-label{width:52px}.peel{display:inline-flex;align-items:center;gap:6px}.peel input{width:110px;accent-color:var(--accent)}.peel output{font:600 11.5px/1 ui-monospace,SF Mono,Menlo,monospace;color:var(--muted);min-width:48px}.locked-badge{display:inline-flex;align-items:center;gap:4px;color:#ffe45c;border-color:#ffe45c66}.stage.synced{grid-template-columns:1fr 1fr 1fr}.stage.synced .pane-3d .pane-canvas{flex:none;min-height:0;aspect-ratio:1.3 / 1}.pane-canvas.heart.synced,.stage.synced .pane-canvas.tee,.stage.synced .pane-canvas.section{cursor:grab;touch-action:none}.stage.synced .pane-canvas:active{cursor:grabbing}.hud-free{font:600 12px/1 ui-monospace,SF Mono,Menlo,monospace;color:#ffb02e;background:#080b0fb3;padding:4px 7px;border-radius:6px}.free-banner .btn{padding:4px 10px}.free-banner{display:flex;align-items:center;gap:12px;justify-content:space-between;flex:1;min-width:0;padding:3px 4px 3px 12px;border:1px solid rgba(255,176,46,.45);background:#ffb02e14;border-radius:10px;font-size:12.5px;color:#f3dcb0}.drag-mode button{min-width:58px}.hud-note{font:600 11px/1 ui-monospace,SF Mono,Menlo,monospace;color:#ff9c8a;margin-left:4px}.pane-canvas.tee,.pane-canvas.section{cursor:crosshair}@media(max-width:1280px){.stage{grid-template-columns:1fr 1fr}.pane-3d{grid-column:1 / -1;order:3}.stage.synced .pane-3d{grid-column:auto;order:0}.dock,.learn{grid-template-columns:1fr 1fr}.learn-card:last-child{grid-column:1 / -1}}@media(max-width:760px){.topbar{padding:0 12px;gap:10px}.brand small{display:none}.sim{padding:10px 12px 32px}.case-strip{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px}.case-card{flex:0 0 72%;scroll-snap-align:start}.stage,.stage.synced,.dock,.learn{grid-template-columns:1fr}.stage-bar{flex-wrap:wrap}.stage-hint{order:3;flex-basis:100%}.pane-3d .pane-canvas{min-height:0;aspect-ratio:1 / 1}.pane>header{flex-wrap:wrap}}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0009;display:grid;place-items:center;padding:16px}.modal{position:relative;width:min(680px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--panel);border:1px solid var(--line-2);border-radius:14px;padding:22px 24px}.modal h2{margin:0 0 10px;font-size:19px}.modal h3{margin:16px 0 6px;font-size:14px}.modal p,.modal li{color:#c9d3dc}.modal ul{padding-left:18px}.modal a{color:var(--accent)}.about-creator{display:flex;align-items:flex-start;gap:18px;margin:8px 0 22px;padding:0 16px 20px 0;border-bottom:1px solid var(--line-2)}.about-creator img{flex:0 0 auto;object-fit:cover;object-position:center 25%;border-radius:10px}.about-creator .eyebrow{margin:0 0 6px;color:var(--muted)}.about-creator p{margin:0 0 10px}@media(max-width:520px){.about-creator{flex-direction:column;padding-right:0}}.modal-x{position:absolute;top:12px;right:12px;border:0;background:none;color:var(--muted);cursor:pointer;padding:4px}.orient{color:var(--muted)}.orient b{color:var(--accent);margin:0 3px 0 8px}.orient b:first-child{margin-left:0}.quickbar{display:none}@media(max-width:760px){.nav a,.nav button{padding:6px 7px;font-size:12px}.nav .nav-long{display:none}.quickbar{position:sticky;bottom:0;z-index:20;display:flex;align-items:center;gap:6px;margin:12px -12px -32px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#07090cf0;border-top:1px solid var(--line-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.quickbar input{flex:1;min-width:60px;accent-color:#ffe45c}.quickbar output{font:600 14px/1 ui-monospace,SF Mono,Menlo,monospace;min-width:38px;text-align:right}.quickbar .chip{padding:6px 8px}}.overlay .device-marks .ostium{stroke:#ffe45c;stroke-width:1.4;stroke-dasharray:5 4}.overlay .device-marks line.shoulder{stroke:#ffb02e;stroke-width:3}.overlay .device-marks text{font:700 11px/1 ui-monospace,SF Mono,Menlo,monospace;paint-order:stroke;stroke:#000000d9;stroke-width:3px}.overlay .device-marks text.shoulder{fill:#ffb02e}.overlay .device-marks text.leak{fill:#ff6b5a}.overlay .device-marks .edge{fill:#e6eef6;stroke:#0b0e12;stroke-width:1}.overlay .device-marks .edge.leaky{fill:#ff3b2f}.device-panel{display:grid;grid-template-columns:minmax(280px,1fr) 320px minmax(360px,1.3fr);gap:16px;margin-top:12px;padding:14px 16px;background:var(--panel);border:1px solid rgba(195,207,219,.35);border-radius:var(--radius)}.device-panel h3{margin:0 0 10px;font-size:14px}.dp-row,.dp-pattern,.dp-scen{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:10px}.dp-label{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}.dot.tilt{color:#ffe45c}.dot.shift{color:#7fd6f2}.pattern-result{color:#f3dcb0}.dp-map{display:flex;flex-direction:column;align-items:center}.rim-map{width:100%;max-width:320px;touch-action:none;-webkit-user-select:none;user-select:none}.rim-map .rim-face{fill:#1b232d;stroke:#3a4655}.rim-map .rim-edge{fill:none;stroke:#c3cfdb;stroke-width:1.2}.rim-map .view-line line{stroke:#7fd6f28c;stroke-width:1.2;stroke-dasharray:4 3}.rim-map .view-line text{fill:#9fe7ff;font:600 10.5px/1 ui-monospace,SF Mono,Menlo,monospace}.rim-map .view-line text.end{fill:#5d8798}.rim-map .view-line circle{fill:#7fd6f2}.rim-map .view-line.on line{stroke:#7fd6f2;stroke-width:2.4;stroke-dasharray:none}.rim-map .view-line.on text{fill:#fff}.rim-map .leak-label{fill:#ffb3a8;font:700 10px/1 ui-monospace,SF Mono,Menlo,monospace}.rim-map .landmark{fill:var(--muted);font-size:10.5px}.rim-map .centre-label{fill:var(--faint);font-size:9.5px}.rim-map .handle{cursor:grab}.rim-map .handle.tilt circle{fill:#ffe45c;stroke:#0b0e12;stroke-width:2}.rim-map .handle.shift rect{fill:#7fd6f2;stroke:#0b0e12;stroke-width:2}.rim-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 12px;font-size:11px;color:var(--muted)}.rim-legend .lg{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}.lg.contact{background:#3fbf9b}.lg.leak{background:#ff3b2f}.lg.shoulder{background:#ffb02e}.lg.view{background:#7fd6f2}.pass-table td.good{color:var(--ok)}.pass-table td.bad,.pass-table span.bad{color:#ff6b5a;font-weight:700}.pass-table span.warn{color:#ffb02e;font-weight:700}.pass-table span.warn-red{color:#ff8f80;font-weight:700}.pass{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}.pass-chip{font-size:11.5px;padding:3px 8px;border-radius:999px;border:1px solid var(--line-2)}.pass-chip.good{color:var(--ok);border-color:#7be0b066}.pass-chip.warn{color:#ffb02e;border-color:#ffb02e73}.pass-chip.bad{color:#ff6b5a;border-color:#ff6b5a80}.dp-story{margin:0 0 6px;padding-left:16px;font-size:12.5px;color:#c9d3dc}.dp-story li{margin-bottom:4px}.dp-story li.note{color:#ffb3a8}@media(max-width:1280px){.device-panel{grid-template-columns:1fr 300px}.dp-table{grid-column:1 / -1}}@media(max-width:760px){.device-panel{grid-template-columns:1fr}}
