.scrollable-wrapper{position:relative}.scrollable-content{overflow:hidden;scrollbar-width:none}.scrollable-content::-webkit-scrollbar{display:none}.scrollable-content.scrollable{overflow-y:auto}.scrollable-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between}.terminal-bar{position:fixed;bottom:2rem;left:0;right:0;z-index:15;display:flex;flex-direction:column;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.68rem;line-height:1.6;pointer-events:none}.terminal-bar-inner{position:relative;margin:0 auto;width:min(90vw,640px);background:var(--tw-glass-bg, rgba(15, 20, 35, .05));border:none;border-radius:12px;padding:8px 14px;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);box-shadow:0 2px 12px #0000001f;transition:background-color .3s ease,box-shadow .2s ease;pointer-events:auto}.terminal-bar-inner:hover{box-shadow:0 0 0 1px var(--tw-ring, rgba(200, 220, 255, .45)),0 0 0 4px var(--tw-ring-outer, rgba(180, 210, 255, .14)),0 2px 12px #0000001f}.terminal-bar-inner.active{box-shadow:0 0 0 1px var(--tw-ring-active, rgba(180, 210, 255, .3)),0 2px 12px #00000026}.terminal-bar[data-variant=transparent] .terminal-bar-inner{--tw-variant-bg: rgba(15, 23, 42, .55);--tw-variant-blur: none;--tw-variant-saturate: none;background:var(--tw-variant-bg, rgba(15, 20, 35, .05));backdrop-filter:var(--tw-variant-blur, blur(20px) saturate(180%));-webkit-backdrop-filter:var(--tw-variant-blur, blur(20px) saturate(180%));border:1px solid rgba(148,163,184,.1)}.terminal-bar[data-variant=label] .terminal-bar-inner{--tw-variant-bg: rgba(200, 210, 225, .22);--tw-variant-blur: none;--tw-variant-saturate: none;background:var(--tw-variant-bg);backdrop-filter:var(--tw-variant-blur, blur(20px) saturate(180%));-webkit-backdrop-filter:var(--tw-variant-blur, blur(20px) saturate(180%));border:none}.terminal-bar[data-variant=label] .terminal-bar-inner .terminal-echo{color:#ebf2fff2;font-weight:500}.terminal-bar[data-variant=label] .terminal-bar-inner .terminal-echo .echo-prefix{color:#ebf2fff2}.terminal-bar[data-variant=label] .terminal-bar-inner:hover{box-shadow:0 0 0 1px color-mix(in srgb,var(--pill-accent) 80%,transparent),0 4px 12px #0000004d}.terminal-bar[data-variant=minimal] .terminal-bar-inner{--tw-variant-bg: transparent;--tw-variant-blur: none;--tw-variant-saturate: none;background:var(--tw-variant-bg);backdrop-filter:var(--tw-variant-blur, blur(20px) saturate(180%));-webkit-backdrop-filter:var(--tw-variant-blur, blur(20px) saturate(180%));border:none;box-shadow:none}.terminal-bar[data-variant=minimal] .terminal-bar-inner:hover,.terminal-bar[data-variant=minimal] .terminal-bar-inner.active{box-shadow:none}.floating-label-pill.expanded .terminal-bar-inner{background:color-mix(in srgb,var(--pill-accent) 12%,rgba(8,12,24,.88));backdrop-filter:none;-webkit-backdrop-filter:none}[data-theme=day] .floating-label-pill.expanded .terminal-bar-inner{background:color-mix(in srgb,var(--pill-accent) 18%,rgba(248,250,252,.82))}[data-theme=day] .terminal-bar[data-variant=label] .terminal-bar-inner{background:#64748b2e}[data-theme=day] .terminal-bar[data-variant=label] .terminal-bar-inner .terminal-echo,[data-theme=day] .terminal-bar[data-variant=label] .terminal-bar-inner .terminal-echo .echo-prefix{color:#0f172ae0}[data-theme=day] .terminal-bar[data-variant=label] .terminal-bar-inner:hover{box-shadow:0 0 0 1px color-mix(in srgb,var(--pill-accent) 80%,transparent),0 4px 12px #00000014}.floating-label-pill.expanded .terminal-placeholder{color:#ffffff47}[data-theme=day] .floating-label-pill.expanded .terminal-placeholder{color:#0003}.terminal-echo{color:var(--tw-echo, #7c8aa0);white-space:pre-wrap;overflow-wrap:break-word;word-break:normal;text-align:left}.terminal-echo .echo-prefix{color:var(--tw-prefix, #64748b)}.echo-scroll-up,.echo-scroll-down{align-self:flex-end;font-size:.68rem;line-height:1.6;color:var(--tw-echo, rgba(255, 255, 255, .25));opacity:0;transition:opacity .15s ease;pointer-events:none;-webkit-user-select:none;user-select:none;padding:0 4px}.echo-scroll-up.visible,.echo-scroll-down.visible{opacity:1}.terminal-input-line{position:relative;display:flex;align-items:baseline;text-align:left;margin-top:0;max-height:0;overflow:hidden;opacity:0;transform:translateY(2px);pointer-events:none;transition:opacity .3s ease,margin-top .3s ease,max-height .3s ease,transform .3s ease}.terminal-input-line.visible{margin-top:5px;max-height:2em;opacity:1;transform:translateY(0);pointer-events:auto}.terminal-prompt{color:var(--tw-prompt, #0ea5e9);flex-shrink:0;margin-right:.5em}.terminal-cursor{flex-shrink:0;display:inline-block;width:1ch;text-align:center}.terminal-cursor.dim{color:var(--tw-cursor-dim, #0ea5e9);opacity:.25}.terminal-cursor.bright{position:relative;color:var(--color-body-bg, #050811);background:transparent;transition:color .16s ease;animation:cursor-text-blink 1.15s step-end infinite;z-index:0}.terminal-cursor.bright:before{content:"";position:absolute;left:0;right:0;top:.12em;bottom:.12em;background:var(--tw-cursor-bright, #e2e8f0);box-shadow:0 0 8px color-mix(in srgb,var(--tw-cursor-bright, #e2e8f0) 18%,transparent);transition:opacity .16s ease,box-shadow .16s ease;animation:cursor-block-blink 1.15s step-end infinite;z-index:-1}.terminal-cursor.bright.steady{animation:none}.terminal-cursor.bright.steady:before{animation:none}.terminal-cursor.bright.at-line-end{min-width:1ch}@keyframes cursor-text-blink{62%,to{color:var(--tw-input, #e2e8f0)}}@keyframes cursor-block-blink{62%,to{opacity:0;box-shadow:none}}.terminal-placeholder{color:var(--tw-placeholder, rgba(255, 255, 255, .15));font-style:italic;margin-left:4px}.terminal-input-text{color:var(--tw-input, #e2e8f0)}.terminal-input-char{display:inline-block;width:1ch;color:var(--tw-input, #e2e8f0);text-align:center;transition:color .16s ease,background-color .16s ease,box-shadow .16s ease,transform .16s ease}.terminal-input-char.selected{color:var(--color-body-bg, #050811);background:var(--tw-cursor-bright, #e2e8f0);box-shadow:0 0 10px color-mix(in srgb,var(--tw-cursor-bright, #e2e8f0) 26%,transparent);transform:translateY(-.02em)}.terminal-typing-cursor{color:var(--tw-echo, #7c8aa0);animation:typing-cursor-blink 1s step-end infinite}@keyframes typing-cursor-blink{50%{opacity:0}}.info-panel-terminal .echo-prefix,.info-panel-terminal .terminal-echo>span:first-child{font-weight:600}.info-panel-terminal .terminal-bar-inner{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border:1px solid transparent;box-shadow:none;transition:border-color .3s ease}[data-theme=day] .info-panel-terminal .terminal-bar-inner{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;color:#0f172ae0}.info-panel-terminal .terminal-bar-inner:hover{border-color:#64b4ff1f;box-shadow:none}[data-theme=day] .info-panel-terminal .terminal-bar-inner:hover{border-color:#1e40af40}.info-panel-terminal .terminal-bar-inner.active{border-color:transparent;box-shadow:none}.floating-labels-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none}.floating-label-pill{position:fixed;pointer-events:auto;cursor:default;opacity:.9;transition:opacity .3s ease,width .5s cubic-bezier(.4,0,.2,1),box-shadow .2s ease,transform .15s ease-out}.floating-label-pill:hover{opacity:1}.floating-label-pill.expanded{box-shadow:0 0 0 1.5px var(--pill-accent),0 6px 20px #0006}.brand-title{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;pointer-events:none;transform:translateY(calc(var(--text-offset-y, 0px) - 4vh))}.brand-title.no-transition,.brand-title.no-transition *{transition:none!important}.brand-title-row{display:grid;grid-template:1fr / 1fr;align-items:end;justify-items:start}.brand-title-icon{grid-area:1 / 1;font-size:clamp(1.8rem,4.5vw,3.5rem);height:2.8em;width:auto;margin-bottom:-.08em;vertical-align:baseline;object-fit:contain;transform:translateY(-6px)}.brand-title-text{grid-area:1 / 1;display:flex;flex-direction:column;align-items:flex-end;gap:.05rem;--icon-fs: clamp(1.8rem, 4.5vw, 3.5rem);margin-left:calc(467 / 1024 * 2.8 * var(--icon-fs));margin-bottom:.15em;z-index:1;position:relative}.brand-title-main{margin:0 -.05em 0 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.8rem,4.5vw,3.5rem);font-weight:600;color:var(--color-brand-line1);letter-spacing:.05em;white-space:nowrap;text-align:left}.brand-title-sub{margin:0 -.04em 0 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(.55rem,1vw,.75rem);font-weight:400;color:var(--color-brand-line2);letter-spacing:.04em;font-style:italic;text-align:left}.composition-panel{top:52px;right:12px;width:min(420px,calc(100vw - 24px));max-height:min(80vh,calc(100vh - 24px));overflow:hidden;border:1px solid rgba(148,163,184,.28);border-radius:8px;background:linear-gradient(180deg,#080d1ceb,#030712e0);color:#dbeafe;font:12px/1.45 Consolas,SFMono-Regular,Liberation Mono,monospace;box-shadow:0 16px 48px #0000005c,inset 0 1px #ffffff0a;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.composition-panel__header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;padding:8px 10px 8px 12px;border-bottom:1px solid rgba(148,163,184,.18);background:#070c19f5}.composition-panel__header strong{color:#e5edf8;font-size:12px;letter-spacing:0}.composition-panel__body{max-height:calc(min(80vh,100vh - 24px) - 38px);overflow:auto;padding:8px 12px 12px;scrollbar-color:rgba(148,163,184,.55) rgba(15,23,42,.58);scrollbar-width:thin}.composition-panel__body::-webkit-scrollbar{width:8px}.composition-panel__body::-webkit-scrollbar-track{background:#0f172a94;border-left:1px solid rgba(148,163,184,.08)}.composition-panel__body::-webkit-scrollbar-thumb{min-height:32px;border:2px solid rgba(15,23,42,.78);border-radius:8px;background:#94a3b89e}.composition-panel__body::-webkit-scrollbar-thumb:hover{background:#cbd5e1c2}.composition-panel section+section{margin-top:10px;padding-top:8px;border-top:1px solid rgba(148,163,184,.12)}.composition-panel h3{margin:0 0 4px;color:#93c5fd;font-size:11px;font-weight:700;letter-spacing:0;text-transform:uppercase}.composition-panel-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;border:1px solid rgba(148,163,184,.28);border-radius:6px;background:#0f172ad6;color:#dbeafe;font:700 14px/1 Consolas,SFMono-Regular,Liberation Mono,monospace;cursor:pointer}.composition-panel-toggle:hover{border-color:#cbd5e194;background:#1e293beb}.composition-panel-toggle:focus-visible{outline:2px solid rgba(147,197,253,.9);outline-offset:2px}.composition-panel-toggle--collapsed{top:52px;right:12px;height:30px;padding:0 10px;border-color:#94a3b852;background:#080d1ce6;box-shadow:0 10px 30px #00000047;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:12px}.fps-meter{top:12px;right:12px;display:grid;gap:2px;min-width:86px;padding:6px 10px;border:1px solid rgba(148,163,184,.3);border-radius:6px;background:#080d1ce6;color:#dbeafe;font:700 12px/1.1 Consolas,SFMono-Regular,Liberation Mono,monospace;box-shadow:0 10px 30px #00000047;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.fps-meter span{min-width:26px;text-align:right}.fps-meter small{color:#cbd5e1b8;font-size:10px;font-weight:700;letter-spacing:0}.fps-meter__row{display:grid;grid-template-columns:28px 1fr;align-items:baseline;gap:8px}.fps-meter[data-level=good] span{color:#86efac}.fps-meter[data-level=warn] span{color:#fde68a}.fps-meter[data-level=bad] span{color:#fca5a5}.lusion-atmosphere-overlay{overflow:hidden}.lusion-atmosphere-overlay__tyndall,.lusion-atmosphere-overlay__debug{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;pointer-events:none;transition:opacity .18s ease}.lusion-atmosphere-overlay__tyndall{opacity:1;mix-blend-mode:screen}.lusion-atmosphere-overlay__debug{opacity:1;mix-blend-mode:normal}:root{--color-body-bg: #0b101d;--color-footer: #888;--color-footer-link: #999;--color-brand-line1: #f1f5f9;--color-brand-line2: #cbd5e1;--tw-echo: #7c8aa0;--tw-prefix: #64748b;--tw-prompt: #0ea5e9;--tw-placeholder: rgba(255,255,255,.15);--tw-input: #e2e8f0;--tw-cursor-bright: #e2e8f0;--tw-cursor-dim: #0ea5e9;--tw-ring: rgba(200,220,255,.45);--tw-ring-outer: rgba(180,210,255,.14);--tw-ring-active: rgba(180,210,255,.3);--tw-glass-bg: rgba(15,20,35,.05);--color-orbit: #cbd5e1;--color-guide-line: rgba(200, 210, 225, .45)}[data-theme=day]{--color-body-bg: #f1f5f9;--color-footer: #64748b;--color-footer-link: #475569;--color-brand-line1: #1e293b;--color-brand-line2: #64748b;--tw-echo: #475569;--tw-prefix: #64748b;--tw-prompt: #0369a1;--tw-placeholder: rgba(0,0,0,.08);--tw-input: #1e293b;--tw-cursor-bright: #1e293b;--tw-cursor-dim: #0369a1;--tw-ring: rgba(30,64,175,.3);--tw-ring-outer: rgba(30,64,175,.08);--tw-ring-active: rgba(30,64,175,.2);--tw-glass-bg: rgba(255,255,255,.35);--color-orbit: #64748b;--color-guide-line: rgba(60, 72, 90, .35)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;overflow-x:hidden;background:var(--color-body-bg);font-family:Noto Sans SC,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif;-webkit-font-smoothing:antialiased;transition:background-color .5s ease}#root{position:relative;width:100%}canvas{display:block}.focus-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.focus-hud-overlay{opacity:0;will-change:opacity}.overlay-ring{animation:ring-in .6s ease-out both}@keyframes ring-in{0%{opacity:0;stroke-dashoffset:30}to{opacity:1;stroke-dashoffset:0}}.overlay-line{animation:line-in .8s ease-out .2s both}@keyframes line-in{0%{opacity:0;stroke-dashoffset:20}to{opacity:1;stroke-dashoffset:0}}.app-footer{position:fixed;bottom:.7rem;left:0;right:0;z-index:20;text-align:center;font-size:.6rem;color:var(--color-footer);pointer-events:none}.app-footer a{color:var(--color-footer-link);text-decoration:none;pointer-events:auto}
