:root{--bg: #121317;--glass: rgba(22, 23, 28, .72);--glass-strong: rgba(22, 23, 28, .92);--line: rgba(255, 255, 255, .1);--text: #eceef3;--muted: #9aa0ad;--accent: #ff5d73;--accent-2: #4cc9f0;--radius: 16px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);--safe-r: env(safe-area-inset-right, 0px);--safe-l: env(safe-area-inset-left, 0px);color-scheme:dark;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);overscroll-behavior:none}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}#scene:active{cursor:grabbing}button{font:inherit;color:inherit}#portrait-guard{position:fixed;inset:0;z-index:90;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;background:var(--bg);text-align:center}#portrait-guard[hidden]{display:none}#portrait-guard svg{width:48px;height:48px;color:var(--accent)}#portrait-guard h1{margin:16px 0 8px;font-size:20px}#portrait-guard p{margin:0;color:var(--muted);font-size:14px}.topbar{position:fixed;left:50%;top:calc(12px + var(--safe-t));transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .3s;z-index:10}.topbar.collapsed{transform:translate(-50%,calc(-100% + 22px))}.topbar.collapsed .toolbar{opacity:0;pointer-events:none}.handle{width:52px;height:22px;display:grid;place-items:center;padding:0;border:1px solid var(--line);border-radius:999px;background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--muted);cursor:pointer}.handle:hover{color:var(--text)}.handle:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.handle svg{width:18px;height:18px;transition:transform .3s}.topbar.collapsed .handle svg{transform:rotate(180deg)}.toolbar{display:flex;gap:4px;padding:6px;background:var(--glass);border:1px solid var(--line);border-radius:999px;backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);box-shadow:0 10px 30px #00000059;transition:opacity .3s}.tool{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:999px;background:transparent;cursor:pointer;transition:background .15s,transform .1s}.tool svg{width:22px;height:22px}.tool:hover{background:#ffffff14}.tool:active{transform:scale(.92)}.tool:focus-visible,.panel button:focus-visible,.panel input:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.tool.primary{background:var(--accent);color:#fff}.tool.primary:hover{background:#ff7488}.tool.on{background:#4cc9f038;color:var(--accent-2)}.tool.pulse{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #4cc9f08c}50%{box-shadow:0 0 0 8px #4cc9f000}}.panel{position:fixed;top:calc(104px + var(--safe-t));right:calc(12px + var(--safe-r));bottom:calc(12px + var(--safe-b));width:min(340px,calc(100vw - 24px));display:flex;flex-direction:column;background:var(--glass-strong);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);box-shadow:0 20px 50px #00000073;transform:translate(calc(100% + 24px));opacity:0;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .2s;z-index:20}.panel.open{transform:none;opacity:1}.panel header{display:flex;align-items:center;justify-content:space-between;padding:14px 12px 10px 18px;border-bottom:1px solid var(--line)}.panel h1{font-size:16px;margin:0;font-weight:650}.panel .close{width:34px;height:34px;display:grid;place-items:center;border:0;border-radius:10px;background:transparent;cursor:pointer}.panel .close svg{width:18px;height:18px}.panel .close:hover{background:#ffffff14}.panel .scroll{overflow-y:auto;padding:4px 18px 18px;overscroll-behavior:contain}.panel section{padding:12px 0 8px;border-bottom:1px solid var(--line)}.panel h2{margin:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.row{margin:8px 0;font-size:14px}.row.slider{display:grid;grid-template-columns:1fr auto;row-gap:4px;align-items:center}.row.slider input{grid-column:1 / -1}.row output{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px}.row.toggle{display:flex;align-items:center;justify-content:space-between;min-height:32px}.row.toggle label{flex:1;cursor:pointer}.row.stack{display:grid;gap:6px}.label{font-size:14px}input[type=range]{width:100%;height:28px;margin:0;background:transparent;accent-color:var(--accent);cursor:pointer;touch-action:pan-y}input[type=checkbox][role=switch]{appearance:none;-webkit-appearance:none;width:42px;height:24px;border-radius:999px;background:#ffffff29;position:relative;cursor:pointer;transition:background .2s;margin:0;flex:none}input[type=checkbox][role=switch]:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s}input[type=checkbox][role=switch]:checked{background:var(--accent)}input[type=checkbox][role=switch]:checked:after{transform:translate(18px)}.seg{display:flex;background:#ffffff0f;border-radius:10px;padding:3px;gap:2px}.seg button{flex:1;min-width:0;padding:7px 4px;font-size:12.5px;border:0;border-radius:8px;background:transparent;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seg button.active{background:#ffffff29;font-weight:600}.swatches{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.swatches button{aspect-ratio:1;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;box-shadow:inset 0 0 0 1px #ffffff26}.swatches button.active{border-color:#fff}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips button{padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:#ffffff0d;font-size:13px;cursor:pointer;text-transform:capitalize}.chips button:hover{background:#ffffff1f}.help{font-size:12.5px;color:var(--muted);line-height:1.6;padding-top:8px}.help b{color:var(--text);font-weight:600}kbd{font-family:ui-monospace,monospace;font-size:11px;padding:1px 5px;border-radius:4px;border:1px solid var(--line);background:#ffffff0f;color:var(--text)}.reset-settings{width:100%;margin-top:10px;padding:10px;border-radius:10px;border:1px solid var(--line);background:transparent;cursor:pointer}.reset-settings:hover{background:#ffffff14}.stats{position:fixed;bottom:calc(12px + var(--safe-b));left:calc(12px + var(--safe-l));padding:8px 10px;border-radius:10px;background:var(--glass);border:1px solid var(--line);font:12px/1.5 ui-monospace,monospace;white-space:pre;pointer-events:none;z-index:5}.toast{position:fixed;left:50%;top:calc(104px + var(--safe-t));transform:translate(-50%,-10px);max-width:calc(100vw - 32px);padding:10px 16px;border-radius:12px;background:var(--glass-strong);border:1px solid var(--line);font-size:14px;text-align:center;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:15}.toast.show{opacity:1;transform:translate(-50%)}.ripple{position:fixed;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;border:2px solid rgba(255,255,255,.7);pointer-events:none;animation:ripple .5s ease-out forwards;z-index:4}@keyframes ripple{0%{transform:scale(.1);opacity:1}to{transform:scale(1);opacity:0}}.ui-hidden .topbar{opacity:0;pointer-events:none;transform:translate(-50%,-20px)}.ui-hidden .stats{display:none}@media(max-width:600px){.panel{top:auto;left:8px;right:8px;width:auto;bottom:calc(8px + var(--safe-b));max-height:62vh;transform:translateY(calc(100% + 40px))}.tool{width:42px;height:42px}}@media(prefers-reduced-motion:reduce){.panel,.toast,.topbar,.toolbar{transition:none}.tool.pulse{animation:none}}
