:root{color:var(--content);background:var(--background);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#15171d;--surface:#1c1f26;--surface-hover:#292d37;--content:#f1f2f6;--muted:#a9aebb;--accent:#b79aff;--accent-content:#201632;--accent-hover:#c9b3ff;--accent-soft:#30283f;--signal:#83d8b0;--error:#ffb4b4;--border:#363b47;--track:#59606f;--shadow:0 24px 80px #0006;--stage:#111418;--stage-text:#f1f2f6;--stage-muted:#a9aebb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:light){:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f3f4f7;--surface:#fff;--surface-hover:#e9eaf0;--content:#242632;--muted:#626777;--accent:#6944ba;--accent-content:#fff;--accent-hover:#5934a4;--accent-soft:#eee8fa;--signal:#267451;--error:#ac303e;--border:#d5d8e1;--track:#878c9b;--shadow:0 24px 80px #19213c26}}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{margin:0}button,input{font:inherit}button,summary,input{-webkit-tap-highlight-color:transparent}button{color:inherit}button,summary{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}h1,h2,p{margin:0}button,input,summary{outline-offset:4px}:focus-visible{outline:2px solid var(--accent)}.icon{flex:none;width:18px;height:18px}.app-shell{flex-direction:column;height:100dvh;min-height:620px;padding:0 24px;display:flex}.app-header{flex:none;justify-content:space-between;align-items:center;gap:24px;min-height:88px;padding:16px 0;display:flex}.brand{flex-shrink:0;align-items:center;gap:11px;display:flex}.brand-name{letter-spacing:-.9px;font-size:25px;font-weight:650}.brand-tagline{border-left:1px solid var(--border);color:var(--muted);margin-left:10px;padding-left:20px;font-size:13px}.brand-mark{width:26px;height:28px;color:var(--accent);align-items:center;gap:3px;display:flex}.brand-mark i{background:currentColor;border-radius:2px;width:3px;height:10px}.brand-mark i:nth-child(2),.brand-mark i:nth-child(4){height:19px}.brand-mark i:nth-child(3){height:28px}.header-actions,.stage-actions{align-items:center;gap:8px;display:flex}.button,.icon-button{background:0 0;border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:9px 14px;font-size:13px;font-weight:550;line-height:1.3;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s,transform .15s;display:inline-flex}.button:not(:disabled):active,.icon-button:not(:disabled):active{transform:translateY(1px)}.button-primary{background:var(--accent);color:var(--accent-content)}.button-primary:hover:not(:disabled){background:var(--accent-hover)}.button-secondary{background:var(--surface);border-color:var(--border)}.button-secondary:hover:not(:disabled),.button-quiet:hover:not(:disabled),.icon-button:hover:not(:disabled){background:var(--surface-hover)}.button-quiet{color:var(--muted)}.icon-button{width:36px;min-height:36px;color:var(--muted);flex:none;padding:8px}.generator-button{font-size:12px}.toolbar-divider{background:var(--border);width:1px;height:22px;margin:0 8px}.workspace{flex:1;gap:14px;min-height:0;display:flex}.stage{background:var(--stage);min-width:0;color:var(--stage-text);--accent:#b79aff;border:1px solid #303540;border-radius:16px;flex:1;position:relative;overflow:hidden}.viewer{position:absolute;inset:68px 0 60px}.viewer canvas{touch-action:none;outline-offset:-4px;width:100%;height:100%;display:block}.stage-toolbar{z-index:2;justify-content:space-between;align-items:center;gap:12px;min-height:68px;padding:12px 20px;display:flex;position:absolute;inset:0 0 auto}.stage-heading{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.stage-heading h1{font-size:14px;font-weight:550}.dancer-count{color:var(--stage-muted);font-variant-numeric:tabular-nums;border-left:1px solid #363b47;padding-left:12px;font-size:12px}.stage-button{color:var(--stage-muted);padding:8px 11px;font-size:12px}.stage-button:hover:not(:disabled){color:var(--stage-text);background:#252a33}.stage-button.is-active{color:#cbb5ff;background:#30283f}.character-picker{position:relative}.character-picker summary{cursor:pointer;list-style:none}.character-picker summary::-webkit-details-marker{display:none}.character-picker summary[aria-disabled=true]{opacity:.45;cursor:not-allowed}.character-chevron{width:12px;height:12px;transform:rotate(90deg)}.character-options{width:220px;color:var(--stage-text);background:#1c1f26;border:1px solid #363b47;border-radius:12px;padding:6px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 32px #0006}.character-current{color:var(--stage-muted);overflow-wrap:anywhere;padding:8px 10px;font-size:12px;line-height:1.5}.character-option{text-align:left;justify-content:space-between;width:100%;min-height:44px;font-size:13px}.character-option:hover:not(:disabled){background:#292d37}.character-option[aria-pressed=true]{color:#cbb5ff}.character-upload{border-top:1px solid #363b47;border-radius:0 0 8px 8px;justify-content:flex-start;margin-top:5px}.stage-footer{z-index:2;pointer-events:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;bottom:12px;left:20px;right:16px}.stage-footer button{pointer-events:auto}.camera-hint{color:var(--stage-muted);font-size:12px}.camera-hint span{margin:0 8px}.reset-view{min-height:36px}.reset-view .icon{width:15px;height:15px}.stage-welcome{pointer-events:none;background:#111418ed;border-radius:12px;max-width:275px;padding:16px;position:absolute;bottom:78px;left:28px}.stage-welcome h2{letter-spacing:-.45px;font-size:21px;font-weight:550;line-height:1.3}.stage-welcome p{color:var(--stage-muted);margin-top:8px;font-size:13px;line-height:1.65}.stage-welcome .button{pointer-events:auto;color:#201632;margin-top:14px}.viewer-message{z-index:1;text-align:center;color:var(--stage-muted);justify-content:center;align-items:center;gap:12px;padding:24px;font-size:14px;display:flex;position:absolute;inset:0}.viewer-message-error{flex-direction:column}.viewer-message-error p{max-width:300px;line-height:1.6}.inspector{border:1px solid var(--border);background:var(--surface);border-radius:16px;flex:0 0 280px;width:280px;padding:17px 20px 22px;animation:.18s ease-out panel-enter;overflow:auto}.inspector-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.inspector h2{font-size:15px;font-weight:600}.section-description{color:var(--muted);margin:2px 0 26px;font-size:12px;line-height:1.6}.control-group{gap:24px;display:grid}.slider-label{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;font-size:13px;display:flex}.slider-label label{font-weight:550}.slider-label output{text-align:right;min-width:36px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.control-hint{color:var(--muted);margin-top:1px;font-size:12px;line-height:1.5}input[type=range]{--range-progress:0%;appearance:none;cursor:pointer;background:0 0;border-radius:4px;width:100%;height:28px;margin:0;display:block}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--range-progress), var(--track) var(--range-progress));border-radius:4px;height:4px}input[type=range]::-moz-range-track{background:linear-gradient(to right, var(--accent) var(--range-progress), var(--track) var(--range-progress));border-radius:4px;height:4px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent);width:13px;height:13px;box-shadow:0 0 0 3px var(--surface);border:0;border-radius:50%;margin-top:-4.5px;transition:box-shadow .15s}input[type=range]::-moz-range-thumb{background:var(--accent);width:13px;height:13px;box-shadow:0 0 0 3px var(--surface);border:0;border-radius:50%}input[type=range]:hover::-webkit-slider-thumb{box-shadow:0 0 0 5px var(--accent-soft)}input[type=range]:disabled{cursor:not-allowed;opacity:.4}input[type=range]:disabled::-webkit-slider-thumb{visibility:hidden}input[type=range]:disabled::-moz-range-thumb{visibility:hidden}.advanced-settings{border-top:1px solid var(--border);margin-top:26px;padding-top:16px}.advanced-settings summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:36px;font-size:13px;font-weight:550;list-style:none;display:flex}.advanced-settings summary::-webkit-details-marker{display:none}.advanced-settings summary .icon{width:15px;height:15px;color:var(--muted);transition:transform .15s}.advanced-settings[open] summary .icon{transform:rotate(90deg)}.advanced-settings .control-group{padding-top:18px}.transport{flex:none;grid-template-columns:minmax(140px,260px) auto minmax(100px,1fr) auto;align-items:center;gap:24px;min-height:104px;padding:22px 0;display:grid}.song-info{align-items:center;gap:12px;min-width:0;display:flex}.song-icon{width:44px;height:44px;color:var(--accent);border:1px solid var(--border);background:var(--surface);border-radius:11px;flex:none;place-items:center;display:grid}.song-copy{flex-direction:column;gap:5px;min-width:0;display:flex}.song-title{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:550;overflow:hidden}.song-detail{color:var(--muted);font-size:12px}.playback-controls{align-items:center;gap:12px;display:flex}.play-button{background:var(--accent);width:44px;height:44px;color:var(--accent-content);border:0;border-radius:50%;place-items:center;transition:background-color .15s,transform .15s;display:grid}.play-button:hover:not(:disabled){background:var(--accent-hover)}.play-button:active:not(:disabled){transform:scale(.95)}.play-button .icon{width:20px;height:20px}.transport-empty .play-button{color:var(--muted);background:var(--surface-hover)}.timeline{min-width:0;padding-top:10px;position:relative}.beat-markers{pointer-events:none;height:9px;position:absolute;top:0;left:7px;right:7px;overflow:hidden}.beat-markers span{background:var(--muted);opacity:.65;width:1px;height:4px;position:absolute;bottom:0}.beat-markers .downbeat{opacity:1;background:var(--content);height:8px}.playback-time{font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:8px;font-size:12px;display:flex}.playback-time>:last-child,.time-divider{color:var(--muted)}.stage-notices{z-index:3;pointer-events:none;align-items:flex-start;display:flex;position:absolute;inset:76px 20px 72px}.notice{border:1px solid var(--border);background:var(--surface);width:fit-content;max-width:min(560px,100%);max-height:100%;color:var(--content);pointer-events:auto;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:10px 14px;font-size:13px;line-height:1.5;animation:.18s ease-out panel-enter;display:flex;overflow:auto;box-shadow:0 8px 24px #0003}.notice-content{overflow-wrap:anywhere;flex:160px;align-items:center;gap:10px;min-width:0;display:flex}.notice-content>span:last-child{min-width:0}.notice-error .notice-content{color:var(--error)}.notice-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;max-width:100%;margin-left:auto;display:flex}@media (prefers-color-scheme:light){.notice{--accent:#6944ba}}.spinner{border:1.5px solid;border-right-color:#0000;border-radius:50%;flex:none;width:15px;height:15px;animation:.8s linear infinite spin}.generator-dialog{border:1px solid var(--border);width:min(480px,100% - 32px);max-height:calc(100dvh - 32px);color:var(--content);background:var(--surface);box-shadow:var(--shadow);border-radius:20px;padding:26px;overflow:auto}.generator-dialog[open]{animation:.18s ease-out panel-enter}.generator-dialog::backdrop{background:#080b14a6}.dialog-heading{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.dialog-icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent);border-radius:12px;place-items:center;display:grid}.dialog-icon .icon{width:22px;height:22px}.generator-dialog h2{letter-spacing:-.4px;font-size:22px;font-weight:600;line-height:1.3}.generator-dialog form{margin-top:24px}.connected-host{color:var(--signal);overflow-wrap:anywhere;align-items:flex-start;gap:8px;margin-top:20px;font-size:12px;line-height:1.6;display:flex}.connected-host strong{font-weight:500}.generator-setup{border:1px solid var(--border);border-radius:10px;margin-top:20px}.generator-setup summary{cursor:pointer;border-radius:9px;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:10px 14px;font-size:13px;font-weight:550;list-style:none;display:flex}.generator-setup summary::-webkit-details-marker{display:none}.generator-setup summary:hover{background:var(--surface-hover)}.generator-setup summary .icon{width:15px;height:15px;color:var(--muted);flex:none;transition:transform .15s}.generator-setup[open] summary .icon{transform:rotate(90deg)}.setup-guide{color:var(--muted);overflow-wrap:anywhere;padding:10px 14px 16px;font-size:13px;line-height:1.65}.setup-guide p+p{margin-top:8px}.setup-guide a{color:var(--accent);text-underline-offset:3px}.setup-guide a:hover{color:var(--accent-hover)}.setup-guide code{color:var(--content);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.setup-steps{margin:20px 0 12px;padding-left:20px}.setup-steps li+li{margin-top:24px}.setup-steps li::marker{color:var(--content);font-weight:600}.setup-steps h3{color:var(--content);margin:0 0 6px;font-size:13px;font-weight:600}.setup-guide strong{color:var(--content);font-weight:550}.setup-guide .setup-aside{margin-top:8px;font-size:12px}.setup-commands{background:var(--background);border-radius:8px;margin:12px 0}.setup-command-heading{justify-content:space-between;align-items:center;gap:8px;padding:0 4px 0 12px;font-size:11px;display:flex}.setup-command-heading .button{gap:5px;min-height:44px;padding:8px;font-size:12px}.setup-command-heading .icon{width:14px;height:14px}.setup-commands pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:0 12px 12px}.setup-commands .setup-copy-error{color:var(--error);padding:0 12px 12px;font-size:12px}.setup-guide-link{align-items:center;min-height:44px;display:inline-flex}.form-field{flex-direction:column;gap:8px;margin-top:18px;font-size:13px;font-weight:550;display:flex}.form-field input{border:1px solid var(--border);background:var(--background);width:100%;min-height:44px;color:var(--content);border-radius:9px;padding:11px 12px;font-size:14px;font-weight:400;transition:border-color .15s}.form-field input:hover{border-color:var(--muted)}.form-field input::placeholder{color:var(--muted);opacity:1}.form-hint{color:var(--muted);margin-top:10px;font-size:12px;line-height:1.6}.connection-note{background:var(--background);color:var(--muted);border-radius:9px;margin-top:20px;padding:12px 14px;font-size:12px;line-height:1.65}.form-message{color:var(--signal);overflow-wrap:anywhere;margin-top:18px;font-size:13px;line-height:1.6}.is-error{color:var(--error)}.dialog-actions{flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:24px;display:flex}.dialog-primary-actions{flex-wrap:wrap;flex:1;justify-content:flex-end;gap:8px;display:flex}@keyframes spin{to{transform:rotate(360deg)}}@keyframes panel-enter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (width<=1100px){.brand-tagline{display:none}.transport{grid-template-columns:minmax(140px,220px) auto minmax(100px,1fr) auto;gap:16px}.stage-heading{flex-direction:column;align-items:flex-start;gap:5px}.dancer-count{border:0;padding:0}.stage-welcome{max-width:230px;bottom:62px;left:12px}.stage-welcome h2{font-size:18px}}@media (width<=760px){.app-shell{height:auto;min-height:100dvh;padding:0 14px}.app-header{flex-wrap:wrap;gap:14px;padding:18px 0 14px}.brand{flex:1}.header-actions{display:contents}.generator-button{order:1}.brand{order:0}.toolbar-divider{display:none}.upload-button{order:2;width:calc(50% - 7px)}.export-button{order:3;width:calc(50% - 7px)}.button,.icon-button{min-height:44px}.workspace{flex-direction:column;flex:1;gap:12px;min-height:0}.stage{flex:1 0 auto;height:calc(100dvh - 320px);min-height:440px}.stage-toolbar{align-items:flex-start;padding:12px}.stage-actions{gap:2px}.character-picker{position:static}.character-options{max-width:calc(100% - 24px);top:100%;right:12px}.stage-button{padding:8px}.stage-heading{padding-top:6px}.stage-heading h1{font-size:13px}.stage-welcome{max-width:225px;padding:12px;bottom:54px}.stage-welcome h2{font-size:17px}.stage-welcome p{font-size:12px}.stage-footer{bottom:8px;left:16px;right:8px}.camera-hint{font-size:11px}.camera-hint span{margin:0 4px}.reset-view{font-size:11px}.inspector{flex-basis:auto;width:100%;padding:16px 20px 20px;overflow:visible}.inspector .icon-button{width:44px}.control-group{gap:18px}input[type=range]{height:44px}.section-description{margin-bottom:20px}.transport{padding:18px 2px max(18px, env(safe-area-inset-bottom));grid-template-columns:minmax(0,1fr) auto;gap:12px 16px;display:grid}.song-info{grid-area:1/1}.playback-controls{grid-area:1/2;gap:8px}.restart-button{width:44px}.timeline{grid-area:2/1}.playback-time{grid-area:2/2;justify-content:flex-end;padding-top:10px}.stage-notices{inset:88px 12px 64px}}@media (width<=480px){.dialog-actions{flex-direction:column}.dialog-actions>.button{align-self:flex-start}.dialog-primary-actions{order:-1}.form-field input{font-size:16px}}@media (width<=390px){.app-shell{padding:0 10px}.brand-name{font-size:23px}.brand{gap:8px}.generator-button{padding:8px;font-size:11px}.stage-heading h1{font-size:12px}.stage-button{gap:5px;padding:7px;font-size:11px}.stage-button .icon{width:15px;height:15px}.character-chevron{display:none}.generator-dialog{padding:20px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (prefers-reduced-transparency:reduce){.stage-welcome{background:var(--stage)}.generator-dialog::backdrop{background:#111418}}@media (prefers-contrast:more){:root{--muted:var(--content);--border:var(--content);--track:var(--content)}.stage{border-color:var(--stage-text)}.stage-button,.camera-hint,.stage-welcome p,.dancer-count{color:var(--stage-text)}}@media (forced-colors:active){.button,.icon-button,.play-button{border:1px solid buttontext}input[type=range]{appearance:auto}input[type=range]::-webkit-slider-thumb{appearance:auto}}
