:root{--surface-base: oklch(.13 0 0);--surface-elevated: oklch(.17 0 0);--surface-overlay: oklch(.21 0 0);--text-primary: oklch(1 0 0 / 100%);--text-secondary: oklch(1 0 0 / 70%);--text-tertiary: oklch(1 0 0 / 50%);--text-muted: oklch(1 0 0 / 40%);--text-faint: oklch(1 0 0 / 30%);--separator: oklch(1 0 0 / 8%);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 16px;--panel-width: 260px}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;background:#000;overflow:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--text-primary);-webkit-font-smoothing:antialiased}#panel{position:fixed;top:10px;left:10px;width:var(--panel-width);max-height:calc(100vh - 20px);background:#161616;border:1px solid oklch(1 0 0 / 7%);border-radius:var(--radius-md);display:flex;flex-direction:column;-webkit-user-select:none;user-select:none;overflow:hidden;z-index:10;--text-primary: oklch(.7 0 0 / 100%);opacity:.25;transition:opacity 3s ease 3s}#panel.light-bg{opacity:.1}#panel:hover{--text-primary: oklch(1 0 0 / 100%);opacity:1;transition:opacity .4s ease 0ms}body.color-picker-open #panel,#panel.no-content{--text-primary: oklch(1 0 0 / 100%);opacity:1}#panel.hidden{display:none}#nav{position:relative;display:flex;align-items:center;justify-content:space-between;padding:12px 12px 8px;cursor:pointer;background:#161616;border-radius:var(--radius-md) var(--radius-md) 0 0;flex-shrink:0}#nav .nav-links{display:flex;gap:12px}.nav-title{font-family:inherit;font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;background:none;color:var(--text-primary);border:none;padding:0;cursor:pointer;position:relative;transition:color .15s}.nav-title:after{content:"▾";position:absolute;left:calc(100% + 6px);top:50%;transform:translateY(-65%);font-size:14px;line-height:1;color:var(--text-muted);opacity:0;pointer-events:none;transition:opacity .15s}#nav:hover .nav-title:after,#nav.open .nav-title:after{opacity:1}#tool-menu{position:absolute;top:calc(100% + 4px);left:12px;right:12px;background:#161616;border:1px solid oklch(1 0 0 / 8%);border-radius:var(--radius-md);box-shadow:0 8px 32px #00000080;padding:8px;display:flex;flex-direction:column;gap:2px;z-index:50}.tool-item{font-family:inherit;font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;text-align:left;background:none;border:none;color:var(--text-tertiary);padding:10px 14px;border-radius:8px;cursor:pointer;transition:color .15s,background .15s}.tool-item:hover,.tool-item.active{color:var(--text-primary);background:#1d1d1d}.tool-item.stub{color:var(--text-faint);cursor:not-allowed}.tool-item.stub:hover{background:none;color:var(--text-faint)}.nav-quick{display:flex;gap:2px}.quick-btn{position:relative;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-muted);cursor:pointer;border-radius:4px;padding:0;transition:color .15s,background .15s}.quick-btn:hover{color:var(--text-primary);background:#1d1d1d}.quick-btn svg{display:block}.quick-btn[data-shortcut]:after{content:"(" attr(data-shortcut) ") " attr(data-label);position:absolute;top:calc(100% + 6px);right:0;font-family:inherit;font-size:10px;font-weight:500;letter-spacing:.02em;background:#1d1d1d;color:var(--text-primary);padding:4px 8px;border-radius:4px;border:1px solid oklch(1 0 0 / 8%);opacity:0;pointer-events:none;transition:opacity .15s;white-space:nowrap;z-index:100}.quick-btn[data-shortcut]:hover:after{opacity:1}#panel-stub{position:fixed;top:10px;left:10px;display:flex;align-items:center;gap:10px;padding:12px;background:#161616;border:1px solid oklch(1 0 0 / 7%);border-radius:var(--radius-md);cursor:pointer;color:var(--text-muted);font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;-webkit-user-select:none;user-select:none;z-index:10;transition:color .15s,background .15s}#panel-stub.hidden{display:none}#panel-stub:hover{color:var(--text-primary);background:#1d1d1d}.panel-stub-icon{display:flex;align-items:center;color:var(--text-muted)}#panel-stub:hover .panel-stub-icon{color:var(--text-primary)}#panel-body{padding:12px;display:flex;flex-direction:column;gap:8px;flex:1;min-height:0;overflow-y:auto}.section-label{margin-top:16px}.section-label:first-child{margin-top:0}.section-label{font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}#shape-drop{border:1px dashed oklch(1 0 0 / 15%);border-radius:var(--radius-md);height:176px;flex-shrink:0;position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s;overflow:hidden}#shape-drop:hover{border-color:#ffffff40}#shape-drop.drag-over{border-color:#fff6;background:#ffffff08}#shape-drop.has-shape{border-style:solid;border-color:#ffffff1a}#shape-hint{display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;transition:opacity .15s}#shape-hint svg{width:20px;height:20px;opacity:.25}#shape-hint span{font-size:11px;color:var(--text-faint)}#shape-drop:hover #shape-hint svg{opacity:.45}#shape-drop:hover #shape-hint span{color:var(--text-tertiary)}#camera-prompt{position:relative;border:1px solid oklch(1 0 0 / 15%);border-radius:var(--radius-md);height:176px;flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s,opacity .15s;overflow:hidden}#camera-prompt:before,#image-drop:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 32px #caff9147;animation:source-prompt-pulse 5s ease-in-out infinite}@keyframes source-prompt-pulse{0%,to{opacity:.35}50%{opacity:1}}#camera-prompt:hover{border-color:#ffffff40;background:#1d1d1d}#camera-prompt.busy{cursor:progress;opacity:.6}#camera-prompt.busy:before{animation:none;opacity:.3}#image-drop.has-image:before{display:none}@media(prefers-reduced-motion:reduce){#camera-prompt:before,#image-drop:before{animation:none;opacity:.5}}.camera-prompt-inner{display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;color:var(--text-faint);transition:color .15s}.camera-prompt-inner svg{width:20px;height:20px;opacity:.4;transition:opacity .15s}.camera-prompt-inner span{font-size:11px}#camera-prompt:hover .camera-prompt-inner svg{opacity:.6}#camera-prompt:hover .camera-prompt-inner{color:var(--text-tertiary)}#image-drop{border:1px dashed oklch(1 0 0 / 15%);border-radius:var(--radius-md);height:176px;flex-shrink:0;position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s;overflow:hidden}#image-drop:hover{border-color:#ffffff40}#image-drop.drag-over{border-color:#fff6;background:#ffffff08}#image-drop.has-image{border-style:solid;border-color:#ffffff1a;cursor:default}.image-drop-hint{display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;color:var(--text-faint);transition:color .15s}.image-drop-hint svg{width:20px;height:20px;opacity:.4;transition:opacity .15s}.image-drop-hint span{font-size:11px}#image-drop:hover .image-drop-hint svg{opacity:.6}#image-drop:hover .image-drop-hint{color:var(--text-tertiary)}.image-drop-preview{width:100%;height:100%;object-fit:cover;display:block}.close-btn{width:20px;height:20px;padding:0;border:none;border-radius:50%;background:#0000008c;color:#ffffffa6;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.close-btn:hover{background:#000c;color:#fff}.close-btn:active{background:#000000e5}.close-btn svg{width:12px;height:12px;display:block}#image-drop>.close-btn{position:absolute;top:6px;right:6px;z-index:1;display:none}#image-drop.has-image>.close-btn{display:flex}[hidden]{display:none!important}.separator{height:1px;background:var(--separator)}.control-row{display:grid;grid-template-columns:72px 1fr 36px;align-items:center;gap:8px}.control-row.readout{grid-template-columns:70px 1fr}.control-row.readout .val{text-align:left}.control-row.toggle{grid-template-columns:70px 1fr}.control-row.select{grid-template-columns:72px 1fr}.control-row.select select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#1d1d1d;border:none;border-radius:var(--radius-sm);padding:6px 28px 6px 10px;color:var(--text-primary);font-family:inherit;font-size:11px;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 9l6 6 6-6' stroke='%23888' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 8px center;background-size:12px}.control-row.select select:hover{background-color:#282828}.control-row.color-row,.control-row.reshuffle-row{grid-template-columns:72px 1fr}.reshuffle-btn{width:100%;background:#1d1d1d;border:none;border-radius:var(--radius-sm);padding:6px 10px;color:var(--text-primary);font-family:inherit;font-size:11px;cursor:pointer;text-align:left}.reshuffle-btn:hover{background:#282828}.reshuffle-btn:active{background:#333}.color-swatch{width:14px;height:14px;border:none;border-radius:100px;padding:0;cursor:pointer;justify-self:start;background:#fff;box-shadow:0 0 0 1px #ffffff1f}.combo-swatch{position:relative;width:24px;height:24px;padding:0;border:none;background:none;cursor:pointer;justify-self:start}.combo-swatch-outer{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:100px;background:#000;box-shadow:0 0 0 1px #ffffff1f}.combo-swatch-inner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:11px;height:11px;border-radius:100px;background:#fff;box-shadow:0 0 0 1.5px var(--surface-elevated)}.color-popover{position:fixed;width:220px;background:#161616;border:1px solid oklch(1 0 0 / 8%);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:12px;z-index:100;box-shadow:0 8px 32px #00000080}.sv-area{position:relative;width:100%;height:140px;border-radius:8px;cursor:crosshair;background:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,hsl(var(--hue, 0),100%,50%));touch-action:none}.sv-dot{position:absolute;width:12px;height:12px;border:2px solid #FFF;border-radius:100px;transform:translate(-50%,-50%);pointer-events:none;box-shadow:0 0 0 1px #0006}.hue-slider{position:relative;width:100%;height:12px;border-radius:100px;cursor:ew-resize;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red);touch-action:none}.hue-dot{position:absolute;top:-2px;width:16px;height:16px;border:2px solid #FFF;border-radius:100px;transform:translate(-50%);pointer-events:none;box-shadow:0 0 0 1px #0006}.hex-row{display:flex;align-items:center;gap:4px;background:#1d1d1d;border-radius:8px;padding:8px 12px}.hex-hash{color:var(--text-muted);font-size:12px;font-feature-settings:"tnum"}.hex-input{flex:1;background:none;border:none;color:var(--text-primary);font-family:inherit;font-size:12px;outline:none;text-transform:uppercase;font-feature-settings:"tnum";letter-spacing:.04em;padding:0;min-width:0}.picker-tabs{display:flex;gap:4px;background:#1d1d1d;border-radius:8px;padding:4px}.picker-tabs button{flex:1;font-family:inherit;font-size:12px;font-weight:500;padding:6px 12px;background:none;color:var(--text-tertiary);border:none;border-radius:6px;cursor:pointer;transition:color .15s,background .15s}.picker-tabs button:hover{color:var(--text-secondary)}.picker-tabs button.active{background:#282828;color:var(--text-primary)}.picker-section{display:flex;flex-direction:column;gap:12px}.mode-row{display:flex;gap:4px;justify-content:flex-start}.mode-btn{width:28px;height:28px;border:none;background:none;color:var(--text-faint);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:color .15s,background .15s}.mode-btn:hover{color:var(--text-tertiary);background:#1d1d1d}.mode-btn.active{color:var(--text-primary);background:#1d1d1d}.image-drop{position:relative;border:1px dashed oklch(1 0 0 / 15%);border-radius:8px;height:160px;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:border-color .15s,background .15s}.image-drop:hover{border-color:#ffffff40;background:#ffffff08}.image-drop.drag-over{border-color:#fff6;background:#ffffff0d}.image-hint{display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;transition:opacity .15s}.image-hint svg{width:20px;height:20px;opacity:.25;transition:opacity .15s}.image-hint span{font-size:11px;color:var(--text-faint);transition:color .15s}.image-drop:hover .image-hint svg{opacity:.45}.image-drop:hover .image-hint span{color:var(--text-tertiary)}.image-preview{width:100%;height:100%;object-fit:cover;display:block;border-radius:8px}.image-remove{position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:100px;border:none;background:#0009;color:#fff;font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.image-remove:hover{background:#000c}.control-row.toggle input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;justify-self:start;width:28px;height:16px;border-radius:8px;background:#1d1d1d;cursor:pointer;position:relative;margin:0;transition:background .15s}.control-row.toggle input[type=checkbox]:before{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#888;transition:transform .15s,background .15s}.control-row.toggle input[type=checkbox]:hover{background:#282828}.control-row.toggle input[type=checkbox]:checked{background:#9e9e9e}.control-row.toggle input[type=checkbox]:checked:before{transform:translate(12px);background:#161616}.control-row label{font-size:12px;color:var(--text-muted)}.control-row .val{font-size:12px;text-align:right;color:var(--text-muted);font-feature-settings:"tnum"}.slider-track{position:relative;height:20px;background:#1d1d1d;border-radius:var(--radius-sm);cursor:ew-resize;overflow:hidden}.slider-fill{position:absolute;top:0;bottom:0;left:0;right:auto;background:#282828;border-radius:var(--radius-sm);pointer-events:none;transition:background .1s}.slider-track:hover .slider-fill{background:#333}.panel-actions{display:flex;gap:6px;margin-top:16px}.play-btn{width:30px;height:30px;flex-shrink:0;flex-grow:0!important;flex-basis:30px!important;border-radius:100px;border:none;background:#1d1d1d;color:var(--text-tertiary);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s,color .15s}.play-btn:hover{background:#282828;color:var(--text-primary)}.play-btn:active{background:#333;color:var(--text-primary)}.play-btn svg{width:20px!important;height:20px!important;display:block}.section-label+.panel-actions{margin-top:0}.panel-actions button{flex:1;font-family:inherit;font-size:11px;font-weight:500;padding:8px 12px;background:#1d1d1d;color:var(--text-tertiary);border:none;border-radius:100px;cursor:pointer;transition:color .15s,background .15s}.panel-actions button:hover{color:var(--text-secondary);background:#282828}.panel-actions button:active{background:#333;color:var(--text-primary)}.panel-actions button.active{background:#edecec;color:var(--surface-base)}.panel-actions button.recording{background:#c33;color:#fff;animation:rec-pulse 1.4s ease-in-out infinite}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.7}}#stage{position:fixed;top:0;right:0;bottom:0;left:0;background:#000}#canvas{display:block}#site-link{position:fixed;right:10px;top:10px;width:16px;height:16px;border-radius:50%;background:#2a2a2a;mix-blend-mode:difference;z-index:50;transition:background .2s ease}#site-link:hover{background:#fff}body.mobile #panel,body.mobile #site-link{display:none}body.mobile #canvas{touch-action:none}
