app-root{display:block}.page-shell{width:min(1540px,100%);min-height:100vh;margin:0 auto;padding:34px clamp(18px,3vw,52px) 64px}.hero{border-top:2px solid var(--ink);grid-template-columns:minmax(0,1fr) minmax(350px,.72fr);align-items:end;gap:48px;padding:34px 0 46px;display:grid}.eyebrow,.view-panel header>span,.formula-card span,.formula-card small,.section-number,.projection-status,.point-details span{letter-spacing:.08em;text-transform:uppercase;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.eyebrow{margin:0 0 20px;font-size:.72rem;font-weight:700}.hero h1{letter-spacing:-.075em;max-width:850px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(4.2rem,9vw,9.4rem);font-weight:400;line-height:.72}.hero h1 em{color:var(--signal);margin-left:.2em;font-weight:400}.formula-card{border:1px solid var(--ink);color:var(--ink);box-shadow:10px 10px 0 var(--signal);background:#f8f3e8;gap:12px;padding:26px 28px;display:grid;position:relative}.formula-card:before{content:"";background:#e0c57bb8;width:62px;height:20px;position:absolute;top:-10px;right:18px;transform:rotate(3deg)}.formula-card span{color:#332f29;font-size:.7rem;font-weight:800}.formula-card strong{color:#171613;overflow-wrap:anywhere;border-top:1px solid #aaa193;border-bottom:1px solid #aaa193;padding:12px 0;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:clamp(1rem,1.7vw,1.55rem);font-weight:700}.formula-card small{color:#403b34;letter-spacing:.04em;text-transform:none;font-size:.72rem;font-weight:650}.control-deck,.visualization-section,.point-inspector{border-top:1px solid var(--ink)}.control-deck{padding:24px 0 32px}.control-intro,.visualization-heading,.point-inspector{grid-template-columns:42px minmax(220px,1fr) auto;align-items:start;gap:18px;display:grid}.section-number{border:1px solid;border-radius:50%;place-items:center;width:32px;height:32px;font-size:.72rem;font-weight:700;display:grid}.control-intro h2,.visualization-heading h2,.point-inspector h2{letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.82rem}.control-intro p,.visualization-heading p,.point-inspector p{color:#5d574e;max-width:650px;margin:7px 0 0;font-family:Georgia,Times New Roman,serif;font-size:.92rem}.reset-button{border:1px solid var(--ink);color:var(--ink);letter-spacing:.05em;text-transform:uppercase;background:0 0;padding:9px 14px;font-family:SFMono-Regular,Consolas,monospace;font-size:.7rem;font-weight:700;transition:color .14s,background .14s}.reset-button:hover,.reset-button:focus-visible{color:var(--paper);background:var(--ink)}.control-groups{grid-template-columns:.72fr 1.2fr 1.2fr .9fr;gap:12px;margin-top:24px;display:grid}.control-group{background:#f4efe58c;border:1px solid #b6ae9e;min-width:0;margin:0;padding:18px}.control-group legend{letter-spacing:.08em;text-transform:uppercase;padding:0 8px;font-family:SFMono-Regular,Consolas,monospace;font-size:.69rem;font-weight:700}.shape-controls{grid-template-columns:58px 1fr;align-content:start;align-items:center;gap:12px;display:grid}.select-label,.control-row>label{font-family:SFMono-Regular,Consolas,monospace;font-size:.72rem;font-weight:700}select,.number-input{min-width:0;color:var(--ink);background:var(--paper);border:1px solid #938b7d;border-radius:0}select{width:100%;padding:8px;font-size:.78rem}.control-row{grid-template-columns:32px minmax(55px,1fr) 86px;align-items:center;gap:10px;min-height:38px;display:grid}.range-input{appearance:none;background:linear-gradient(#a49c8e,#a49c8e) 50%/100% 2px no-repeat;border-radius:0;width:100%;height:30px}.range-input::-webkit-slider-thumb{appearance:none;background:var(--signal);border:0;border-radius:0;width:22px;height:30px}.range-input::-moz-range-thumb{background:var(--signal);border:0;border-radius:0;width:22px;height:30px}.range-input::-moz-range-track{background:#a49c8e;height:2px}.number-wrap{grid-template-columns:1fr auto;align-items:center;gap:5px;display:grid}.number-wrap span{color:#5d564d;text-transform:uppercase;font-family:SFMono-Regular,Consolas,monospace;font-size:.59rem}.number-input{width:100%;padding:6px;font-family:SFMono-Regular,Consolas,monospace;font-size:.72rem}.size-control .control-row{grid-template-columns:36px minmax(50px,1fr) 64px}.depth-key{color:#716a5e;letter-spacing:.06em;text-transform:uppercase;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin-top:24px;font-family:SFMono-Regular,Consolas,monospace;font-size:.62rem;display:grid}.depth-key i{background:linear-gradient(90deg,#f69e79,#369af2);height:7px;display:block}.visualization-section{padding:24px 0 0}.visualization-heading{margin-bottom:20px}.projection-status{color:#5d574e;border:1px solid #9d9587;align-self:center;margin:0;padding:8px 11px;font-size:.64rem}.projection-status.has-clipped-points{border-color:var(--signal);color:var(--signal-dark);background:#d34c2f14}.view-grid{border:1px solid var(--ink);background:var(--ink);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;display:grid}.view-panel{background:#111417;min-width:0}.view-panel header{color:#f6f0e5;border-bottom:1px solid #45494c;grid-template-columns:auto 1fr;align-items:start;gap:16px;min-height:82px;padding:17px 20px;display:grid}.view-panel header>span{color:#a7a7a1;margin-top:3px;font-size:.59rem}.view-panel h3{margin:0;font-family:Georgia,Times New Roman,serif;font-size:1.3rem;font-weight:400}.view-panel header p{color:#9da1a2;margin:5px 0 0;font-family:SFMono-Regular,Consolas,monospace;font-size:.62rem}.point-navigation{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.point-navigation button{letter-spacing:.04em;text-transform:uppercase;min-height:34px;color:var(--ink);background:var(--paper);border:1px solid;padding:7px 10px;font-family:SFMono-Regular,Consolas,monospace;font-size:.62rem;font-weight:700}.view-panel svg{touch-action:pan-y pinch-zoom;width:100%;height:auto;min-height:390px;display:block;overflow:hidden}.scene-panel svg{cursor:grab;touch-action:none}.scene-panel svg.is-dragging{cursor:grabbing}.plot-field{fill:#111417;stroke:#55595b;stroke-width:1px}.grid-line,.scene-grid-line{stroke:#2c3134;stroke-width:1px}.scene-grid-line{stroke:#252a2d}.axis-line{stroke:#858b8d;stroke-width:1.3px}.axis-x{stroke:#e87758}.axis-y{stroke:#d8b453}.axis-z{stroke:#5b9fc9}.axis-label,.tick-label,.reference-label{fill:#aeb3b3;font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.tick-label,.reference-label{fill:#949b9d;font-size:9px}.projection-plane{fill:#d34c2f0f;stroke:#935442;stroke-dasharray:5 5;stroke-width:1px}.camera-mark{fill:var(--signal);stroke:#f7b39f;stroke-width:1px}.projection-ray{stroke:#f0d37a;stroke-width:1.4px;stroke-dasharray:5 4}.intersection-point{fill:#111417;stroke:#f0d37a;stroke-width:2px}.surface-point{opacity:.78;stroke:#0000;stroke-width:2px;vector-effect:non-scaling-stroke}.surface-point:hover,.surface-point.is-active{opacity:1;stroke:#fff9e8}.surface-point.is-active{filter:drop-shadow(0 0 5px #fff6d5cc)}.point-inspector{grid-template-columns:42px minmax(220px,.65fr) minmax(0,1.35fr);margin-top:28px;padding:24px 0 0}.point-details{background:#f4efe58c;border:1px solid #aaa294;grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.point-details>div,.point-details>p,.point-details>code{min-width:0;margin:0;padding:14px}.point-details>div+div{border-left:1px solid #c1b9aa}.point-details span{color:#595248;margin-bottom:7px;font-size:.58rem;display:block}.point-details strong,.point-details code{overflow-wrap:anywhere;font-family:SFMono-Regular,Consolas,monospace;font-size:.7rem;font-weight:500;display:block}.result-detail{color:var(--signal-dark);background:#d34c2f12}.clipped-detail{color:var(--signal-dark)}.inspector-empty{color:#6e675c;font-family:Georgia,Times New Roman,serif;font-size:.85rem}.point-details>code{color:#5d574e;align-self:center}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}@media (width<=1100px){.hero{grid-template-columns:1fr}.formula-card{max-width:680px}.control-groups{grid-template-columns:repeat(2,minmax(0,1fr))}.point-inspector{grid-template-columns:42px 1fr}.point-details{grid-column:2}}@media (width<=780px){.page-shell{padding:22px 14px 48px}.hero{gap:28px;padding:26px 0 38px}.hero h1{font-size:clamp(3.7rem,20vw,6.4rem)}.formula-card{box-shadow:6px 6px 0 var(--signal);padding:22px}.control-intro,.visualization-heading{grid-template-columns:38px 1fr}.control-intro .reset-button,.visualization-heading .projection-status{grid-column:2;justify-self:start}.control-groups,.view-grid{grid-template-columns:1fr}.view-panel svg{min-height:300px}.range-input{height:40px}.range-input::-webkit-slider-thumb{width:28px;height:40px}.range-input::-moz-range-thumb{width:28px;height:40px}.point-inspector{grid-template-columns:38px 1fr}.point-details{grid-column:1/-1;grid-template-columns:1fr}.point-details>div+div{border-top:1px solid #c1b9aa;border-left:0}}@media (width<=430px){.control-group{padding:14px 12px}.control-row{grid-template-columns:24px minmax(50px,1fr) 78px}.view-panel header{padding:14px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
