:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#050505;color:#f5f5f0}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{background:#050505}.stage{--stage-pad: 16px;position:relative;width:100%;height:100vh;height:100dvh;min-width:0;min-height:0}#shader-canvas{display:block;inline-size:100%;block-size:100%;background:#000;touch-action:none}.is-waiting-for-audio #shader-canvas{opacity:0}.control-hotspot{position:fixed;inset-block:0;inset-inline-end:0;z-index:3;width:42px;pointer-events:auto}.control-hotspot-left{inset-inline-start:0;inset-inline-end:auto}.control-hotspot[hidden]{display:none}.control-hotspot:before{position:absolute;inset-block:18px;inset-inline-end:8px;width:1px;border-radius:999px;background:#f5f5f038;content:"";opacity:.45;transition:opacity .18s ease}.control-hotspot-left:before{inset-inline-start:8px;inset-inline-end:auto}.control-hotspot:hover:before,.control-hotspot:focus-within:before{opacity:0}.control-panel{position:absolute;top:max(var(--stage-pad),env(safe-area-inset-top));right:max(var(--stage-pad),env(safe-area-inset-right));display:grid;gap:14px;width:min(292px,calc(100vw - 20px));max-height:calc(100dvh - 2 * var(--stage-pad));min-width:0;padding:12px;overflow:auto;border:1px solid rgba(245,245,240,.13);border-radius:8px;background:#050505b3;box-shadow:0 20px 70px #00000057;opacity:0;pointer-events:none;transform:translate(calc(100% + 20px));transition:opacity .18s ease,transform .22s ease;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);scrollbar-width:thin}.control-hotspot-left .control-panel{right:auto;left:max(var(--stage-pad),env(safe-area-inset-left));transform:translate(calc(-100% - 20px))}.control-hotspot:hover .control-panel,.control-hotspot:focus-within .control-panel{opacity:1;pointer-events:auto;transform:translate(0)}.title{display:grid;gap:2px;min-width:0}.title strong{font-size:13px;line-height:1.1;font-weight:650;letter-spacing:0}.title span{max-width:100%;overflow:hidden;color:#f5f5f0ad;font-size:11px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.transport,.control-row,.toggles{display:grid;gap:8px}.transport,.control-row{grid-template-columns:repeat(2,minmax(0,1fr))}.control-group{display:grid;gap:10px}label,.select-line{display:grid;gap:6px;min-width:0}label>span,.select-line>span{display:flex;align-items:baseline;justify-content:space-between;gap:8px;color:#f5f5f0b8;font-size:11px;line-height:1.1}output{color:#f5f5f080;font-variant-numeric:tabular-nums}input,select{min-width:0;color:#f5f5f0;font:inherit}select{width:100%;height:30px;padding:0 8px;border:1px solid rgba(245,245,240,.13);border-radius:8px;background:#f5f5f014}input[type=range]{width:100%;height:18px;accent-color:#f5f5f0}input[type=checkbox]{width:14px;height:14px;margin:0;accent-color:#f5f5f0}.toggles{grid-template-columns:repeat(2,minmax(0,1fr))}.toggles label{display:flex;align-items:center;gap:7px;min-height:24px;color:#f5f5f0ad;font-size:11px}.step-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:7px}.step-dot{display:grid;width:100%;aspect-ratio:1;min-width:0;height:auto;padding:0;place-items:center;border-radius:999px;color:#f5f5f08c;font-size:10px;font-variant-numeric:tabular-nums}.step-dot.is-active{background:#f5f5f0db;color:#050505}button{min-width:0;height:34px;padding:0 12px;border:1px solid rgba(245,245,240,.16);border-radius:8px;background:#f5f5f01a;color:#f5f5f0;font:inherit;font-size:12px;line-height:1;cursor:pointer;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}button:hover{background:#f5f5f02b}button:active{transform:translateY(1px)}.audio-start{position:fixed;top:50%;left:50%;z-index:4;width:auto;min-width:0;height:auto;min-height:0;padding:8px 12px;border-color:#f5f5f0b8;border-radius:4px;background:#050505;color:#f5f5f0;font-size:11px;line-height:1;text-transform:lowercase;transform:translate(-50%,-50%)}.audio-start:hover{background:#f5f5f0;color:#050505}.audio-start:active{transform:translate(-50%,calc(-50% + 1px))}.audio-start[hidden]{display:none}@media(max-width:560px){.stage{--stage-pad: 10px}.control-hotspot{width:34px}.control-panel{width:min(286px,calc(100vw - 16px))}}@media(max-width:380px){.step-grid{grid-template-columns:repeat(4,1fr)}}@media(max-height:360px){.control-panel{gap:10px;padding:10px}.control-group{gap:8px}button{height:30px}}
