:root{--bg-color: #050505;--glass-bg: rgba(20, 25, 35, .65);--glass-border: rgba(255, 255, 255, .1);--accent: #4cc2ff;--accent-glow: rgba(76, 194, 255, .4);--text-main: #e0e6ed;--text-dim: #94a3b8;--success: #22c55e;--warning: #eab308;--danger: #ef4444;--font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace}body{margin:0;overflow:hidden;background-color:var(--bg-color);font-family:var(--font-ui);color:var(--text-main);-webkit-user-select:none;user-select:none}#app{position:relative;width:100vw;height:100vh}canvas{display:block;width:100%;height:100%;outline:none}.ui-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;padding:20px;box-sizing:border-box;z-index:10}.panel{pointer-events:auto;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:12px;padding:16px;box-shadow:0 8px 32px #0006;transition:all .2s ease;max-height:85vh;overflow-y:auto}.panel h1{font-size:16px;margin:0 0 2px;font-weight:700;letter-spacing:.5px}.subtitle{font-size:11px;color:var(--text-dim);margin-bottom:16px;text-transform:uppercase;letter-spacing:1px}.control-group{margin-bottom:16px}.control-group h3{font-size:11px;text-transform:uppercase;color:var(--accent);margin:0 0 10px;opacity:.8}.input-row{margin-bottom:10px}.label-row{display:flex;justify-content:space-between;font-size:12px;color:var(--text-dim);margin-bottom:4px}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{width:100%;height:4px;background:#ffffff1a;border-radius:2px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;height:14px;width:14px;border-radius:50%;background:var(--text-main);margin-top:-5px;box-shadow:0 2px 6px #0006;transition:transform .1s,background .2s}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2);background:var(--accent)}.toggle-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.switch{position:relative;display:inline-block;width:36px;height:20px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ffffff26;transition:.3s;border-radius:20px}.slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}input:checked+.slider{background-color:var(--accent)}input:checked+.slider:before{transform:translate(16px)}.terminal{pointer-events:auto;width:100%;max-width:600px;height:160px;background:#08080ce6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--glass-border);border-radius:8px;display:flex;flex-direction:column;margin-top:auto}.terminal-header{padding:6px 10px;background:#ffffff0a;border-bottom:1px solid var(--glass-border);font-size:11px;color:var(--text-dim);display:flex;justify-content:space-between;font-family:var(--font-mono);font-weight:600}.terminal-header button{background:none;border:none;color:var(--text-dim);cursor:pointer;font-family:inherit}.terminal-header button:hover{color:#fff}.terminal-body{flex:1;padding:8px;overflow-y:auto;font-family:var(--font-mono);font-size:11px;line-height:1.4;color:#a9b7c6}.log-time{color:var(--text-dim);margin-right:8px;opacity:.5;font-size:10px}.log-state{color:var(--accent);font-weight:700}.log-info{color:var(--text-main)}.log-warn{color:var(--warning)}.log-action{color:var(--success)}@media(max-width:640px){.terminal{max-width:100%;height:92px;border-radius:10px}.terminal-header{padding:4px 8px;font-size:10px}.terminal-body{padding:6px 8px;font-size:10px;line-height:1.25}.log-time{font-size:9px;margin-right:6px}}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.stats-overlay{position:absolute;top:20px;right:20px;z-index:12;background:#000000bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:15px;border-radius:8px;border-left:3px solid var(--accent);font-family:JetBrains Mono,monospace;color:#fff;min-width:220px;pointer-events:none;box-shadow:0 4px 20px #00000080}.stats-row{display:flex;justify-content:space-between;margin-bottom:6px;font-size:13px}.stats-row.header{font-weight:700;color:var(--accent);border-bottom:1px solid rgba(255,255,255,.2);padding-bottom:4px;margin-bottom:10px;text-transform:uppercase;font-size:11px;letter-spacing:1px}.stats-label{color:#aaa}.stats-val{font-weight:600;color:#fff}.stats-val.highlight{color:var(--success)}.stats-val.warn{color:var(--warning)}@media(max-width:640px){.stats-overlay{top:12px;right:12px;padding:8px 10px;min-width:unset;border-left:0;border:0;background:#00000061;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:none}.stats-row.header{display:none}.stats-row{margin-bottom:4px;font-size:11px;line-height:1.15}.stats-label{color:#ffffff9e}.stats-val{color:#ffffffeb}.ui-layer>.panel.compact,.ui-layer>.terminal{display:none}.mobile-fab{position:fixed;left:12px;z-index:31;width:42px;height:42px;border-radius:999px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.14);background:#0f0f14b3;color:#ffffffeb;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 12px 30px #00000073;cursor:pointer}.mobile-fab--left{bottom:calc(12px + env(safe-area-inset-bottom))}.mobile-fab--left2{bottom:calc(62px + env(safe-area-inset-bottom))}.mobile-fab:hover{border-color:#ffffff38}.mobile-dialog{border:0;padding:0;background:transparent}.mobile-dialog::backdrop{background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.mobile-dialog-card{width:min(560px,calc(100vw - 24px));max-height:min(82vh,720px);overflow:hidden;border-radius:16px;border:1px solid rgba(255,255,255,.14);background:#0f0f14eb;color:#fff;box-shadow:0 18px 60px #0000008c}.mobile-dialog-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.1);background:#ffffff08}.mobile-dialog-title{font-family:var(--font-mono);font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:#ffffffeb}.mobile-dialog-close{width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:#ffffffe6;cursor:pointer}.mobile-dialog-body{padding:12px;overflow:auto}}.panel.compact{width:280px;background:#0f0f14e6}.debug-section{margin-top:20px;padding-top:15px;border-top:1px dashed rgba(255,255,255,.1)}.debug-title{font-size:11px;text-transform:uppercase;color:var(--text-dim);margin-bottom:10px;cursor:pointer;display:flex;align-items:center;gap:6px}.debug-title:hover{color:#fff}.hidden{display:none!important}.info-fab{position:absolute;right:18px;bottom:18px;z-index:20;width:42px;height:42px;border-radius:999px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.14);background:#0f0f14b3;color:#ffffffe6;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 12px 30px #00000073;cursor:pointer}.info-fab:hover{border-color:#ffffff38}.about-dialog{border:0;padding:0;background:transparent}.about-dialog::backdrop{background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.about-card{width:min(560px,calc(100vw - 32px));border-radius:16px;border:1px solid rgba(255,255,255,.14);background:#0f0f14eb;color:#fff;padding:16px;box-shadow:0 18px 60px #0000008c}.about-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.about-title{font-family:var(--font-mono);font-size:13px;letter-spacing:.6px;text-transform:uppercase;color:#ffffffeb}.about-sub{margin-top:6px;font-size:13px;color:#ffffffad;line-height:1.35}.about-close{width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:#ffffffe6;cursor:pointer}.about-close:hover{border-color:#fff3}.about-body{margin-top:14px}.about-line{font-size:14px;color:#ffffffd9}.about-link{color:var(--accent);text-decoration:none;font-weight:700}.about-link:hover{text-decoration:underline}.loading{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(1200px 800px at 20% 10%,rgba(69,99,255,.22),transparent 55%),radial-gradient(900px 700px at 80% 30%,rgba(0,255,210,.1),transparent 60%),#050505e6;z-index:50}.loading-card{background:#0f0f14e0;border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:18px;min-width:280px;box-shadow:0 12px 40px #00000080}.loading-meter{margin-top:12px;height:8px;width:100%;border-radius:999px;background:#ffffff1a;overflow:hidden;border:1px solid rgba(255,255,255,.1)}.loading-meter-bar{height:100%;width:0%;background:linear-gradient(90deg,#4cc2ffa6,#4cc2ff);box-shadow:0 0 18px #4cc2ff59;transition:width .12s linear}.loading-meta{margin-top:8px;font-family:var(--font-mono);font-size:12px;letter-spacing:.4px;color:#ffffffbf}.loading-title{font-family:var(--font-mono);font-size:14px;color:#fff;letter-spacing:.4px}.loading-sub{margin-top:6px;font-size:12px;color:#ffffffb3}.tag3d{pointer-events:none;transform:translate(-50%,-100%);background:#0f0f14bf;border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:8px 10px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 10px 30px #00000073;min-width:110px}.tag3d-title{font-family:var(--font-mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#ffffffa6}.tag3d-value{margin-top:2px;font-family:var(--font-mono);font-size:14px;font-weight:700;color:#fff}.btn{background:#ffffff14;border:1px solid rgba(255,255,255,.12);color:#fff;padding:8px 10px;border-radius:8px;font-family:var(--font-mono);font-size:12px;cursor:pointer}.btn-icon{width:44px;height:40px;display:inline-grid;place-items:center;padding:0;font-size:14px}.player-bar{display:grid;gap:10px;padding:12px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:#ffffff08}.player-row{display:grid;grid-template-columns:auto auto 1fr;gap:10px;align-items:center}.player-time{display:flex;justify-content:flex-end;align-items:baseline;gap:8px;font-family:var(--font-mono)}.player-time-label{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:#ffffff8c}.player-time-value{font-size:14px;font-weight:800;color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:hover:not(:disabled){border-color:#fff3}.select{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#fff;padding:8px 10px;border-radius:8px;font-family:var(--font-mono);font-size:12px}.select:disabled{opacity:.5}
