:root{--void:#05050a;--panel:#10101ab8;--panel-solid:#0c0c14f0;--line:#ffffff17;--line-hi:#ffffff2e;--violet:#8b5cf6;--violet-bright:#a78bfa;--violet-deep:#4c1d95;--axis-x:#ef4444;--axis-y:#22c55e;--axis-z:#3b82f6;--text:#f4f4f8;--muted:#a1a1b5;--dim:#6b6b80;--warn:#ffab3d;--solid-vertex:#fbbf24;--solid-edge:#fff;--solid-face:#a78bfa;--t-xs:.72rem;--t-sm:.8rem;--t-md:.9rem;--t-lg:1.05rem;--t-title:clamp(1.1rem, 2.2vw, 1.6rem);--radius:14px;--gutter:clamp(.85rem, 2vw, 1.5rem);--panel-w:clamp(13rem, 17vw, 16.5rem);--pad-t:calc(var(--gutter) + env(safe-area-inset-top,0px));--pad-r:calc(var(--gutter) + env(safe-area-inset-right,0px));--pad-b:calc(var(--gutter) + env(safe-area-inset-bottom,0px));--pad-l:calc(var(--gutter) + env(safe-area-inset-left,0px));--font-sans:system-ui, -apple-system, "Segoe UI", Inter, Roboto, sans-serif;--font-mono:ui-monospace, "Cascadia Mono", "JetBrains Mono", "SF Mono", monospace}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html,body{overscroll-behavior:none;height:100dvh;margin:0;overflow:hidden}body{background:var(--void);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--violet-bright);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}#scene{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}.panel,.toolbar,.drawer{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.toolbar,.drawer{z-index:3;position:fixed}.panel{width:100%;padding:.85rem .95rem}.panel-head{font-size:var(--t-xs);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .3rem;font-weight:700}.panel-head.accent{color:var(--violet-bright)}.panel-sub{color:var(--violet-bright);font-size:var(--t-xs);letter-spacing:.1em;margin:.9rem 0 .4rem;font-weight:700}.panel-blurb{color:var(--muted);font-size:var(--t-sm);margin:0 0 .7rem}.topbar{z-index:4;padding:var(--pad-t) var(--pad-r) var(--gutter) var(--pad-l);pointer-events:none;flex-wrap:wrap;align-items:flex-start;gap:.6rem .9rem;display:flex;position:fixed;top:0;left:0;right:0}.topbar>*{pointer-events:auto}.back{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:2.4rem;height:2.4rem;color:var(--text);flex:none;place-items:center;font-size:1.1rem;text-decoration:none;transition:border-color .16s,color .16s;display:grid}.title{flex:14rem;min-width:0}.title h1{font-size:var(--t-title);letter-spacing:.01em;text-transform:uppercase;margin:0;font-weight:700}.title h1 em{color:var(--violet-bright);font-style:normal}.subtitle{max-width:34ch;color:var(--muted);font-size:var(--t-sm);margin:.15rem 0 0}.tabs,.views{gap:.3rem;margin-left:auto;display:flex}.views{margin-left:0}.tab{border:1px solid var(--line);background:var(--panel);text-align:center;border-radius:10px;gap:.05rem;padding:.4rem .6rem;transition:border-color .16s,background .16s;display:grid}.tab b{font-size:var(--t-sm)}.tab span{color:var(--dim);font-size:.68rem}.tab[aria-pressed=true]{border-color:var(--violet);background:#7c5cf029}.tab[aria-pressed=true] b{color:var(--violet-bright)}.tab.is-future{opacity:.35}.view-btn{border:1px solid var(--line);background:var(--panel);font-size:var(--t-xs);border-radius:10px;padding:.45rem .7rem;transition:border-color .16s,background .16s}.view-btn[aria-pressed=true]{border-color:var(--violet);color:var(--violet-bright);background:#7c5cf029}.rail{top:calc(var(--pad-t) + 6.4rem);bottom:calc(var(--pad-b) + 3.6rem);z-index:3;width:var(--panel-w);overscroll-behavior:contain;pointer-events:none;scrollbar-width:thin;flex-direction:column;gap:.6rem;display:flex;position:fixed;overflow-y:auto}.rail>*{pointer-events:auto;flex:none}.rail>:first-child{margin-top:auto}.rail>:last-child{margin-bottom:auto}.panel-left{left:var(--pad-l)}.panel-right{right:var(--pad-r);align-items:flex-end}.panel-gizmo{justify-items:center;gap:.25rem;width:auto;padding:.5rem;display:grid}.interact-list,.properties{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.interact-list li,.properties li{color:var(--muted);font-size:var(--t-sm);padding-left:.85rem;position:relative}.interact-list li:before,.properties li:before{content:"";background:var(--violet);border-radius:50%;width:4px;height:4px;position:absolute;top:.55em;left:0}.stats{gap:.35rem;margin:0;display:grid}.stat-row{border:0;border-bottom:1px solid var(--line);width:100%;font:inherit;text-align:left;background:0 0;border-radius:4px;align-items:baseline;gap:.5rem;padding:0 0 .35rem;display:flex}.stat-row:last-child{border-bottom:0}.stat-row .stat-label{color:var(--muted);font-size:var(--t-sm);flex:1;padding-left:.85rem;position:relative}.stat-row .stat-label:before{content:"";background:var(--violet);border-radius:50%;width:5px;height:5px;position:absolute;top:.45em;left:0}.stat-row[data-tone=vertex] .stat-label:before{background:var(--solid-vertex)}.stat-row[data-tone=edge] .stat-label:before{background:var(--solid-edge)}.stat-row[data-tone=face] .stat-label:before{background:var(--solid-face)}.stat-row[data-tone=angle] .stat-label:before{background:var(--axis-x)}.stat-row .stat-value{font-family:var(--font-mono);font-size:var(--t-sm);font-variant-numeric:tabular-nums;color:var(--violet-bright)}.stat-row[data-tone=vertex] .stat-value{color:var(--solid-vertex)}.stat-row[data-tone=edge] .stat-value{color:var(--solid-edge)}.stat-row[data-tone=face] .stat-value{color:var(--solid-face)}.stat-row[data-tone=angle] .stat-value{color:var(--axis-x)}.stat-group{color:var(--dim);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;margin:.55rem 0 .1rem}.stat-group:first-child{margin-top:0}button.stat-row{cursor:pointer;width:calc(100% + .8rem);margin:0 -.4rem;padding:.15rem .4rem .4rem;transition:background .16s,transform .16s}button.stat-row:focus-visible{outline:2px solid var(--violet-bright);outline-offset:1px}button.stat-row[aria-pressed=true]{background:#8b5cf62e}button.stat-row[aria-pressed=true] .stat-label{color:var(--text)}button.stat-row[aria-pressed=true] .stat-label:before{box-shadow:0 0 0 3px #8b5cf647}@media (prefers-reduced-motion:reduce){button.stat-row{transition:none}}.vector-array{color:var(--violet-bright);font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.01em;margin-bottom:.4rem;font-size:clamp(.85rem,1.35vw,1.05rem);display:block}.axes{flex-wrap:wrap;gap:.4rem;margin:0 0 .45rem;display:flex}.axis-row{border:1px solid var(--line);font-family:var(--font-mono);font-size:var(--t-xs);font-variant-numeric:tabular-nums;border-radius:8px;gap:.3rem;padding:.16rem .42rem;display:flex}.axis-row dt{color:var(--dim);text-transform:uppercase}.axis-row[data-axis="0"] dt{color:var(--axis-x)}.axis-row[data-axis="1"] dt{color:var(--axis-y)}.axis-row[data-axis="2"] dt{color:var(--axis-z)}.axis-row dd{margin:0}.axes-empty{color:var(--dim);font-size:var(--t-xs);margin:0;font-style:italic}.context-meta,.context-note,.dof{color:var(--dim);font-size:var(--t-xs);margin:.3rem 0 0}.context-note{color:var(--muted)}.keys{flex-wrap:wrap;gap:.3rem;margin-top:.7rem;display:flex}.keys-move,.keys-extra{display:contents}.key{border:1px solid var(--line);background:#ffffff08;border-radius:8px;place-items:center;gap:.05rem;min-width:2.5rem;padding:.3rem .35rem;transition:border-color .14s,background .14s;display:grid}.key .cap{font-size:var(--t-sm)}.key .ax{color:var(--dim);font-size:.66rem}.key[data-live="1"].is-down{border-color:var(--violet-bright);background:#7c5cf038}.key[data-live="0"]{opacity:.36;border-style:dashed}.key[data-live="0"] .ax{text-decoration:line-through}.key[data-live="0"].is-down{border-color:var(--warn);background:#ffab3d29}.toolbar{left:50%;bottom:var(--pad-b);max-width:calc(100vw - var(--pad-l) - var(--pad-r));align-items:center;gap:.4rem;padding:.4rem;display:flex;overflow-x:auto;transform:translate(-50%)}.tool-btn{border:1px solid var(--line);border-radius:10px;flex:none;place-items:center;width:2.3rem;height:2.3rem;font-size:1rem;transition:border-color .16s,color .16s;display:grid}.tool-btn[aria-expanded=true],.tool-btn[aria-pressed=true]{border-color:var(--violet);color:var(--violet-bright)}.tool-btn[hidden]{display:none}.segmented{border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;gap:.2rem;padding:.2rem;display:flex}.segmented[hidden]{display:none}.seg{color:var(--muted);font-size:var(--t-xs);white-space:nowrap;border:1px solid #0000;border-radius:8px;padding:.35rem .6rem;transition:border-color .14s,background .14s,color .14s}.seg[aria-pressed=true]{border-color:var(--violet);color:var(--violet-bright);background:#7c5cf02e}#gizmo{width:92px;height:92px;display:block}.gizmo-label{color:var(--dim);font-family:var(--font-mono);margin:0;font-size:.68rem}.eye-frame{aspect-ratio:4/3;border:1px solid var(--line-hi);pointer-events:none;background:0 0;border-radius:8px;width:100%}body.is-locked{cursor:none}.eye-note{color:var(--dim);font-size:var(--t-xs);margin:.5rem 0 0}.track{aspect-ratio:1;border:1px solid var(--line-hi);background:#00000040;border-radius:8px;width:100%;height:auto;display:block}.wruler{aspect-ratio:260/86;border:1px solid var(--line-hi);background:#00000040;border-radius:8px;width:100%;height:auto;display:block}.wruler-note{color:var(--muted);font-size:var(--t-xs);margin:.5rem 0 0;line-height:1.45}#lesson-card{border-left:2px solid var(--violet)}.lesson-step{color:var(--text);font-size:var(--t-sm);margin:0;line-height:1.45}#lesson-card.is-done .lesson-step{color:var(--muted)}.lesson-foot{justify-content:space-between;align-items:center;gap:.6rem;margin:.55rem 0 0;display:flex}.lesson-count{color:var(--violet-bright);font-family:var(--font-mono);letter-spacing:.08em;font-size:.68rem}.lesson-close{color:var(--dim);border:0;padding:0 .3rem;font-size:.95rem;line-height:1;transition:color .14s}.lesson-close:hover,.lesson-close:focus-visible{color:var(--text)}.hyper-list{gap:.7rem;margin:0;display:grid}.hyper-list dt{color:var(--violet-bright);font-size:var(--t-xs);letter-spacing:.06em;font-weight:700}.hyper-list dd{color:var(--muted);font-size:var(--t-xs);margin:.2rem 0 0;line-height:1.5}.drawer{right:var(--pad-r);bottom:calc(var(--pad-b) + 3.4rem);z-index:5;width:min(23rem, calc(100vw - var(--pad-l) - var(--pad-r)));max-height:calc(100dvh - var(--pad-t) - var(--pad-b) - 9rem);background:var(--panel-solid);gap:1.1rem;padding:1rem;display:grid;overflow-y:auto}.drawer[hidden]{display:none}.drawer h2{font-size:var(--t-md);margin:0 0 .4rem;font-weight:650}.eyebrow{color:var(--violet-bright);font-size:var(--t-xs);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .15rem}.note{color:var(--muted);font-size:var(--t-sm);margin:.4rem 0 0}.note.dim{color:var(--dim)}.law{color:var(--dim);font-family:var(--font-mono);font-size:var(--t-xs);margin:.5rem 0 0}.rank-frame,.perception-field{color:var(--dim);font-size:var(--t-xs);margin:0 0 .5rem}.rank-list,.relative-list{gap:.3rem;margin:0;display:grid}.rank-row,.relative-row{border-bottom:1px solid var(--line);font-size:var(--t-xs);align-items:baseline;gap:.6rem;padding-bottom:.3rem;display:flex}.rank-row dt,.relative-row dt{color:var(--muted);flex:1}.rank-row dt b{color:var(--text);margin-right:.35rem}.rank-row dt span{color:var(--dim)}.rank-row dd,.relative-row dd{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin:0}.rank-row[data-invariant="1"] dd,.relative-row[data-invariant="1"] dd{color:var(--violet-bright)}.matrix{margin-top:.7rem}.matrix[hidden]{display:none}.matrix-label,.matrix-hint{color:var(--dim);font-size:var(--t-xs);margin:0 0 .35rem}.matrix-hint{margin:.35rem 0 0}.matrix-grid{grid-template-columns:repeat(var(--cols,1), 1fr);border-left:2px solid var(--violet);border-right:2px solid var(--violet);gap:.25rem;padding:.4rem .6rem;display:grid}.matrix-cell{font-family:var(--font-mono);font-size:var(--t-xs);font-variant-numeric:tabular-nums;text-align:center}.slice-svg{width:100%;height:auto}.tick{stroke:var(--dim);stroke-width:1px}.tick-major{stroke:var(--muted)}.slice-axis{stroke:var(--line-hi);stroke-width:1.5px}.slice-wall{stroke:var(--violet-bright);stroke-width:7px;stroke-linecap:round;transition:opacity .14s}.slice-eye{fill:var(--text)}.view-caption,.feedback{z-index:6;pointer-events:none;border:1px solid var(--line);background:var(--panel-solid);font-size:var(--t-xs);text-align:center;border-radius:999px;margin:0;padding:.4rem .8rem;position:fixed;left:50%;transform:translate(-50%)}.view-caption{top:calc(var(--pad-t) + 4.4rem);color:var(--muted)}.feedback{bottom:calc(var(--pad-b) + 4.2rem);border-radius:var(--radius);max-width:min(40rem,100vw - 2rem);font-size:var(--t-sm)}.feedback[data-kind=refused]{border-color:var(--warn);color:var(--warn)}.feedback[data-kind=blocked]{border-color:var(--violet);color:var(--violet-bright)}body.is-refused .vector-array{color:var(--warn);animation:.42s refuse}@keyframes refuse{0%,to{transform:translate(0)}20%{transform:translate(-4px)}45%{transform:translate(3px)}70%{transform:translate(-2px)}}.blink{z-index:8;pointer-events:none;visibility:hidden;position:fixed;inset:0}.blink.is-active{visibility:visible}.lid{height:calc(50.4% * var(--shut,0));background:#000;position:absolute;left:0;right:0}.lid-top{border-bottom:1px solid #8b5cf638;top:0}.lid-bottom{border-top:1px solid #8b5cf638;bottom:0}body .lil-gui.lil-root{--background-color:#0c0c14f2;--widget-color:#21213a;--focus-color:#2c2c4d;--hover-color:#2c2c4d;--font-size:11px;--name-width:46%;z-index:7;top:auto;right:auto;left:var(--pad-l);bottom:calc(var(--pad-b) + 12rem);border:1px solid var(--line);border-radius:10px;overflow:hidden}@media (hover:hover){.back:hover{border-color:var(--violet);color:var(--violet-bright)}.tab:hover:not(:disabled){border-color:var(--line-hi)}.tool-btn:hover{border-color:var(--violet);color:var(--violet-bright)}.seg:hover{color:var(--text)}.key[data-live="1"]:hover{border-color:var(--violet)}button.stat-row:hover{background:#8b5cf61a}}@media (pointer:coarse){.panel,.toolbar,.drawer{-webkit-user-select:none;user-select:none}.back,.tool-btn{width:2.75rem;height:2.75rem}.key{min-width:2.75rem;min-height:2.75rem;padding:.5rem .4rem}.seg{padding:.5rem .75rem}.tab{padding:.55rem .75rem}}@media (width<=1000px){:root{--panel-w:min(15rem, 46vw)}.rail{top:auto;bottom:calc(var(--pad-b) + 3.6rem);justify-content:flex-end;max-height:34dvh}#context-card,.panel-gizmo,#eye-card,#track-card{display:none}.title h1{font-size:var(--t-md)}.subtitle{display:none}.tabs{overflow-x:auto}.segmented{flex-wrap:nowrap;flex:none}#interact-card{background:0 0;border:0;padding:0}#interact-heading,#interact-list,#lesson-card,.panel-right{display:none}body.is-info-open #interact-card{border:1px solid var(--line);background:var(--panel);padding:.85rem .95rem}body.is-info-open #interact-heading,body.is-info-open #lesson-card{display:block}body.is-info-open #interact-list{display:grid}body.is-info-open .panel-right{display:flex}}@media (width>=1001px),(pointer:fine){#info-toggle{display:none}}@media (width<=1000px) and (pointer:coarse){.keys{left:0;right:0;bottom:calc(var(--pad-b) + 4.3rem);z-index:6;pointer-events:none;margin:0;position:fixed}body.is-info-open .keys{display:none}.keys-move,.keys-extra{gap:.4rem;display:grid;position:absolute;bottom:0}.keys-move .key,.keys-extra .key{pointer-events:auto;background:#0a0a129e}.keys-move{left:var(--pad-l);grid-template-rows:repeat(3,3.1rem);grid-template-columns:repeat(3,3.1rem);grid-template-areas:".fwd.""lft.rgt"".bak."}.keys-move .key[data-act=forward]{grid-area:fwd}.keys-move .key[data-act=back]{grid-area:bak}.keys-move .key[data-act=left]{grid-area:lft}.keys-move .key[data-act=right]{grid-area:rgt}.keys-extra{right:var(--pad-r);grid-template-rows:repeat(3,2.75rem);grid-template-columns:repeat(2,2.75rem);grid-template-areas:"rs1 rs2""an1 an2""pl1 pl2"}.keys-extra .key[data-act=rise]{grid-area:rs1}.keys-extra .key[data-act=descend]{grid-area:rs2}.keys-extra .key[data-act=ana]{grid-area:an1}.keys-extra .key[data-act=kata]{grid-area:an2}.keys-extra .key[data-act=planeOut]{grid-area:pl1}.keys-extra .key[data-act=planeIn]{grid-area:pl2}}@media (width<=640px) and (orientation:portrait){.rail{left:var(--pad-l);right:var(--pad-r);justify-content:flex-start;max-height:19dvh}.panel-right{bottom:calc(var(--pad-b) + 3.6rem + 19dvh + 1.2rem)}.panel-blurb{display:none}.drawer{left:var(--pad-l);width:auto}}@media (height<=720px) and (width>=1001px){.context-note,.eye-note,.panel-blurb{display:none}.rail{top:calc(var(--pad-t) + 5.4rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
