@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&display=swap');
.resonance-active label[for="bloom"],.resonance-active #bloom{display:none}
:root{color-scheme:dark;--bg:#000;--text:#e6e6e6;--muted:#777;--line:#252525;--accent:#ddd;font-family:'DM Sans',sans-serif;font-size:13px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0}button:hover{filter:brightness(1.16)}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #bdbdbd;outline-offset:5px}button,input{touch-action:manipulation}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.instrument{max-width:2000px;margin:auto;height:100svh;min-height:560px;display:flex;flex-direction:column}.topbar{height:66px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:20px;background:#000}.brand{font-size:10px;letter-spacing:2px;font-weight:500;display:flex;align-items:center;gap:12px;white-space:nowrap}.brand-mark{font-size:25px;color:#b4b4b4;font-weight:400}.now-playing{display:flex;align-items:center;gap:13px;color:#a4a4a4;font-size:10px}.now-playing #source-name{max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-playing #source-meta{font-size:9px;color:#555}.header-actions{display:flex;align-items:center;gap:18px}.shape-toggle{background:transparent;color:#999;font-size:10px;padding:10px 0}.shape-toggle[aria-expanded=true]{color:#eee}.import-button{background:#ddd;color:#161616;border-radius:4px;font-size:10px;font-weight:500;padding:9px 13px;display:flex;align-items:center;gap:9px}.import-button span{font-size:15px;line-height:1}.workspace{display:block;position:relative;flex:1;min-height:0}.stage{position:relative;height:100%;min-height:300px;overflow:hidden;background:#000}#sculpture{position:absolute;inset:0}#sculpture canvas{display:block;width:100%;height:100%;touch-action:none}.stage-bottom{position:absolute;bottom:19px;left:32px;right:30px;display:flex;align-items:center;justify-content:space-between;gap:15px;pointer-events:none}.note-readout{display:flex;flex-wrap:wrap;gap:12px;min-height:22px;align-items:center}.note-chip{padding:0;background:transparent;color:#aaa;font-size:9px;letter-spacing:1px;font-variant-numeric:tabular-nums}.reset-button{background:transparent;color:#777;font-size:20px;padding:0;line-height:1;pointer-events:auto}.inspector{position:absolute;z-index:4;right:24px;top:12px;width:248px;max-height:calc(100% - 24px);background:rgba(10,10,10,.96);border:1px solid #282828;border-radius:8px;box-shadow:0 14px 50px #0008;padding:21px;backdrop-filter:blur(20px);overflow:auto;scrollbar-width:thin;scrollbar-color:#454545 transparent}.panel-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#ddd}.text-button{font-size:10px;background:transparent;padding:0;color:#a8a8a8}.panel-heading .text-button{font-size:21px;line-height:1}.form-list{display:flex;gap:5px;margin:20px 0}.form-button{flex:1;font-size:10px;padding:9px 6px;border-radius:4px;color:#888;background:transparent;border:1px solid #282828}.form-button.selected{color:#e6e6e6;background:#252525;border-color:#494949}.palette-list{display:flex;gap:9px;margin:18px 0 22px}.palette{padding:0;background:transparent;flex:1}.palette>span{display:block;width:100%;height:24px;border-radius:3px;border:3px solid #0a0a0a;box-shadow:0 0 0 1px transparent;background:linear-gradient(100deg,#476363,#d4d9b4,#c69074)}.palette.ember>span{background:linear-gradient(100deg,#5e342d,#cc8055,#e2c89e)}.palette.ice>span{background:linear-gradient(100deg,#3b607c,#9abbd5,#d6d5f2)}.palette.pearl>span{background:#f1dcc5}.palette.selected>span{box-shadow:0 0 0 1px #bbb}.range-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#bbb;margin-top:17px}.range-label output{color:#777;font-size:10px;font-variant-numeric:tabular-nums}input[type=range]{width:100%;appearance:none;background:transparent;margin:12px 0 0;height:12px;cursor:ew-resize}input[type=range]::-webkit-slider-runnable-track{height:2px;background:#353535;border-radius:2px}input[type=range]::-webkit-slider-thumb{appearance:none;width:9px;height:9px;border-radius:50%;background:#d3d3d3;margin-top:-3.5px;box-shadow:0 0 0 4px #ffffff05}input[type=range]::-moz-range-track{height:2px;background:#353535}input[type=range]::-moz-range-thumb{width:9px;height:9px;border-radius:50%;border:0;background:#d3d3d3}.switch-row{background:transparent;display:flex;justify-content:space-between;align-items:center;width:100%;padding:16px 0 0;font-size:11px;color:#bbb}.switch{width:25px;height:14px;border-radius:8px;background:#262626;position:relative}.switch:before{content:'';width:8px;height:8px;position:absolute;left:3px;top:3px;background:#777;border-radius:50%;transition:transform .15s}.switch-row[aria-pressed=true] .switch{background:#424242}.switch-row[aria-pressed=true] .switch:before{background:#ddd;transform:translateX(11px)}.section-rule{height:1px;background:#282828;margin:22px 0 17px}.track-list{display:flex;flex-wrap:wrap;gap:6px}.track-button{background:transparent;border:1px solid #303030;border-radius:4px;padding:6px 8px;font-size:9px;display:flex;align-items:center;gap:6px;color:#bbb}.track-button[aria-pressed=false]{opacity:.35}.track-dot{height:5px;width:5px;background:var(--track-color);border-radius:50%}.demo-button{margin-top:21px;color:#888}.transport{padding:11px 30px 12px;flex-shrink:0;background:#000;border:0}.transport-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;margin-bottom:16px;min-height:38px}.playback-controls{display:flex;align-items:center;gap:17px}.icon-button{font-size:22px;background:transparent;color:#888;padding:2px}.play-button{border-radius:50%;height:38px;width:38px;background:#e0e0e0;color:#0b0b0b;font-size:14px;display:flex;align-items:center;justify-content:center;justify-self:center}.time-display{font-family:ui-monospace,monospace;font-size:10px;font-variant-numeric:tabular-nums;color:#aaa;display:flex;gap:10px}.time-display>#time-total,.time-divider{color:#555}.sound-button{justify-self:end;display:flex;align-items:center;gap:7px;font-size:10px;color:#777;background:transparent;padding:7px 0}.sound-button[aria-pressed=true]{color:#d5d5d5}.sound-button>span:first-child{font-size:13px}.score-wrap{position:relative;height:67px;background:transparent;overflow:hidden;border-radius:0}.score-wrap canvas{display:block;width:100%;height:100%}.score-wrap #seek{position:absolute;inset:0;margin:0;opacity:0;height:100%;width:100%;cursor:crosshair}.score-wrap:focus-within{outline:1px solid #555;outline-offset:2px}.timeline-foot{display:flex;font-size:7px;letter-spacing:1.2px;color:#555;margin-top:9px}.status-message{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);padding:12px 18px;border:1px solid #444;border-radius:6px;background:#181818;color:#e7e7e7;max-width:min(600px,90vw);box-shadow:0 8px 30px #0008;z-index:10;font-size:11px}.drop-overlay{position:absolute;inset:15px;border:1px dashed #999;background:#050505eb;z-index:5;display:flex;align-items:center;justify-content:center;font-size:20px;pointer-events:none}.canvas-error{position:absolute;top:45%;left:10%;right:10%;background:#222;padding:24px;border-radius:8px;font-size:14px;line-height:1.7}
@media(max-width:700px){.instrument{min-height:540px}.topbar{height:60px;padding:0 18px;gap:10px}.brand{gap:8px;letter-spacing:1.5px}.now-playing{display:none}.header-actions{gap:16px}.stage{min-height:270px}.stage-bottom{left:20px;right:20px;bottom:16px}.note-readout{gap:9px}.note-chip{font-size:8px}.inspector{right:14px;top:4px;width:240px;max-height:calc(100% - 12px);padding:19px}.transport{padding:9px 18px 11px}.transport-row{gap:10px}.playback-controls{gap:10px}.time-display{gap:6px;font-size:9px}.play-button{height:36px;width:36px}.score-wrap{height:64px}.palette-list{margin:17px 0}.range-label,.switch-row{font-size:11px}input[type=range]{height:16px}.track-button{font-size:9px;padding:6px}.panel-heading .text-button{font-size:24px}.timeline-foot{font-size:7px}.sound-button{font-size:9px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
select{font:inherit;color:inherit;cursor:pointer;color-scheme:dark}select:focus-visible{outline:2px solid #bdbdbd;outline-offset:4px}button:disabled{opacity:.3;cursor:default;filter:none}.create-toggle[aria-expanded=true]{color:#f0f0f0}.creator{display:grid;grid-template-columns:140px 188px 96px minmax(110px,160px) auto;align-items:center;justify-content:center;gap:25px;max-width:910px;margin:0 auto 26px;padding:14px 0 19px;border-bottom:1px solid #202020}.create-field{display:flex;flex-direction:column;gap:7px;min-width:0}.create-field>span,.create-field>label{font-size:9px;letter-spacing:.7px;color:#727272}.create-field select{width:100%;font-size:12px;background:#000;border:0;padding:4px 18px 4px 0;min-height:28px}.create-field select option{background:#121212;color:#ddd}.tempo-input{display:flex;gap:4px;align-items:center;height:28px}.tempo-input input{font:inherit;font-size:12px;width:45px;border:0;background:transparent;color:#ddd;padding:4px 0;appearance:textfield}.tempo-input input::-webkit-inner-spin-button,.tempo-input input::-webkit-outer-spin-button{appearance:none}.tempo-input>span{font-size:8px;color:#5f5f5f}.melody-control{display:flex;align-items:center;gap:12px;height:28px}.melody-control input[type=range]{margin:0;height:22px;min-width:50px}.variation-button{font-size:23px;background:transparent;color:#bcbcbc;line-height:1;padding:3px}.export-button{white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:9px;background:#ddd;color:#151515;border-radius:4px;font-size:10px;font-weight:500;padding:11px 15px;margin-left:10px}.export-button>span{font-size:16px;line-height:1}.creator-open .timeline-foot{justify-content:space-between}.creator-open .stage{min-height:220px}
@media(max-width:900px){.creator{grid-template-columns:118px 158px 80px minmax(85px,125px) auto;gap:15px}.export-button{margin-left:0;padding:10px}.now-playing #source-name{max-width:22vw}}
@media(max-width:700px){.header-actions{gap:13px}.brand{letter-spacing:1px;gap:7px}.import-button{padding:9px 11px}.creator{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) max-content;gap:13px 17px;margin-bottom:16px;padding:5px 0 15px}.create-field select{font-size:11px}.melody-field{grid-column:1 / 3;flex-direction:row;align-items:center;gap:16px}.melody-control{flex:1}.export-button{grid-column:3;justify-self:end;font-size:9px;padding:9px 11px;width:max-content}.creator-open .instrument{min-height:690px}.creator-open .stage-bottom{bottom:9px}.create-field>span,.create-field>label{font-size:8px}.creator-open .stage{min-height:220px}}
@media(max-width:360px){.topbar{padding:0 12px}.brand{font-size:9px;letter-spacing:.5px}.header-actions{gap:10px}.brand-mark{font-size:22px}.creator{gap:12px}.transport{padding-left:14px;padding-right:14px}}
.analysis-overlay{position:absolute;inset:0;z-index:6;display:grid;place-items:center;background:#000b;backdrop-filter:blur(5px)}.analysis-card{width:min(270px,80%);text-align:center}.analysis-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#d4d4d4}.analysis-heading #analysis-percent{font-size:10px;color:#777;font-variant-numeric:tabular-nums}.analysis-card progress{appearance:none;border:0;display:block;width:100%;height:2px;margin:19px 0 23px;border-radius:2px;background:#262626}.analysis-card progress::-webkit-progress-bar{background:#262626}.analysis-card progress::-webkit-progress-value{background:#c9c6d9}.analysis-card progress::-moz-progress-bar{background:#c9c6d9}.analysis-card button{padding:9px 20px;color:#888}.is-analysing .play-button{opacity:.4}.is-analysing #seek{pointer-events:none}
.timeline-foot{justify-content:space-between;align-items:center;gap:16px;min-height:25px}.video-export-button{background:transparent;color:#aaa;font-size:10px;padding:7px 0;white-space:nowrap;letter-spacing:0}.video-export-button>span{margin-right:5px;font-size:13px}.export-progress{width:min(360px,100%);margin:5px auto 0;text-align:center}.export-progress-label{display:flex;align-items:center;gap:12px;font-size:11px;color:#bdbdbd}.export-progress-label #export-time{margin-left:auto;font:9px ui-monospace,monospace;color:#777}.export-progress-label button{padding:7px 0 7px 9px}.export-progress progress{display:block;width:100%;height:2px;appearance:none;border:0;background:#262626;margin:5px 0 8px}.export-progress progress::-webkit-progress-bar{background:#262626}.export-progress progress::-webkit-progress-value{background:#c9c6d9}.export-progress progress::-moz-progress-bar{background:#c9c6d9}.export-hint{font-size:9px;color:#666}.is-exporting #sculpture canvas{object-fit:contain;pointer-events:none}.is-recording #sculpture canvas{pointer-events:auto;cursor:grab}.is-recording #sculpture canvas:active{cursor:grabbing}.is-exporting .stage-bottom,.is-exporting .inspector,.is-exporting .creator,.is-exporting .timeline-foot{visibility:hidden}.is-exporting .brand{pointer-events:none}.status-message a{color:#ddd;text-decoration:underline;margin-left:14px}.is-exporting .transport-row{margin-bottom:12px}
.video-export-controls{display:flex;align-items:center;gap:14px;flex-shrink:0;letter-spacing:0}.video-export-controls select{background:#000;color:#999;font-size:10px;border:0;padding:7px 2px;max-width:140px}.video-export-controls option{background:#111;color:#ddd}.timeline-foot #score-caption{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}@media(max-width:700px){.video-export-controls{gap:10px}.video-export-controls select{font-size:9px;max-width:125px}.timeline-foot{gap:10px}}

.form-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.form-button{min-height:34px}.sound-controls{display:flex;align-items:center;justify-self:end;gap:13px;min-width:0}.sound-controls select{background:#000;color:#aaa;border:0;font-size:10px;max-width:105px;padding:7px 0}.sound-controls option{background:#111;color:#ddd}@media(max-width:700px){.sound-controls{gap:7px}.sound-controls select{max-width:83px;font-size:9px}.sound-controls .sound-button{font-size:9px}}
.city-controls{display:flex;flex-direction:column;gap:8px;margin:-5px 0 17px}.city-controls select{width:100%;appearance:none;-webkit-appearance:none;background-color:#0a0a0a;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23ddd' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px 8px;border:1px solid #333;border-radius:4px;padding:9px 34px 9px 11px;font-size:11px}.city-controls span{font-size:9px;color:#999}.city-credit{position:absolute;left:32px;bottom:16px;display:flex;gap:14px;font-size:10px;color:#aaa;z-index:2}.city-credit a:hover{text-decoration:underline}.city-active .stage-bottom{bottom:41px}.is-exporting .city-credit{visibility:hidden}@media(max-width:700px){.city-credit{left:20px;font-size:9px;bottom:15px}.city-active .stage-bottom{bottom:40px}}
.city-controls .switch-row{padding-top:5px}.city-controls .switch-row>span:first-child{font-size:11px;color:#bbb}.city-active .palette.mineral>span{background:linear-gradient(100deg,#22ceba,#6172ef,#ca62c3,#efad70)}.city-active .palette.ember>span{background:linear-gradient(100deg,#663cc4,#d84d91,#ef825e,#efc978)}.city-active .palette.ice>span{background:linear-gradient(100deg,#186ccb,#27c8db,#8c79e5,#c27bcd)}
.city-range .range-label{margin-top:3px}.city-range .range-label>span{font-size:11px;color:#bbb}.city-range input{margin-top:8px}
.effects-control{position:relative}.effects-toggle{display:flex;align-items:center;gap:4px;background:transparent;color:#777;font-size:10px;letter-spacing:.3px;padding:8px 2px}.effects-toggle.active,.effects-toggle[aria-expanded=true]{color:#e0d6c9}.effects-toggle.active:after{content:'';width:3px;height:3px;background:currentColor;border-radius:50%}.effects-panel{position:absolute;right:0;bottom:calc(100% + 12px);z-index:8;width:224px;padding:18px 20px 19px;background:#0a0a0afa;border:1px solid #303030;border-radius:8px;box-shadow:0 12px 40px #0009}.effects-panel .range-label{margin-top:18px}.effects-panel input[type=range]{margin-top:11px}.effects-toggle:disabled{opacity:.4;cursor:default}@media(max-width:500px){.sound-controls #sound-label{display:none}.effects-toggle{font-size:9px}.sound-controls{gap:9px}.effects-panel{right:-20px;width:218px}}
.delay-time-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;color:#888;font-size:10px}.delay-time-row select{appearance:none;-webkit-appearance:none;width:86px;max-width:none;font:inherit;color:#ccc;background-color:#0a0a0a;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='m1 1 4 4 4-4' fill='none' stroke='%23aaa' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:10px 6px;border:1px solid #303030;border-radius:4px;padding:6px 26px 6px 9px;cursor:pointer}.delay-time-row select:focus-visible{outline:2px solid #bdbdbd;outline-offset:3px}
.effects-reset{display:block;margin:18px 0 0 auto;padding:4px 0;color:#999}.effects-reset.inactive{opacity:.35}.effects-panel{max-height:calc(100svh - 210px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#454545 transparent}

/* View controls stay outside the transport, so a collapsed scene is always recoverable. */
.view-controls{position:absolute;z-index:3;right:24px;bottom:10px;display:flex;align-items:center;gap:3px}
.view-button{display:grid;place-items:center;width:34px;height:34px;padding:7px;background:transparent;color:#888;border-radius:50%;line-height:1}
.view-button:hover,.view-button:focus-visible{color:#eee;background:#ffffff0c}
.view-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.view-button.reset-button{font-size:20px}
#compact-play{font-size:12px;color:#ccc}
.fullscreen-exit{display:none}
#transport-toggle[aria-expanded=false] svg{transform:rotate(180deg)}
#fullscreen-toggle[aria-pressed=true] .fullscreen-enter{display:none}
#fullscreen-toggle[aria-pressed=true] .fullscreen-exit{display:initial}
.stage-bottom{right:150px;min-height:22px}
.transport-collapsed .instrument{min-height:0;height:100dvh}
.transport-collapsed .stage{min-height:0}
.transport-collapsed .stage-bottom{right:186px}
.scene-fullscreen .instrument{max-width:none;width:100%;height:100dvh;min-height:0;background:#000}
.scene-fullscreen .topbar,.scene-fullscreen .inspector,.scene-fullscreen .stage-bottom{display:none}
.scene-fullscreen.fullscreen-idle .view-controls{opacity:0;pointer-events:none;transition:opacity .35s ease}
.scene-fullscreen.fullscreen-idle .view-controls button{pointer-events:none}
.scene-fullscreen.fullscreen-idle .instrument,.scene-fullscreen.fullscreen-idle .instrument *{cursor:none}
.is-exporting .view-controls{visibility:hidden}
@media(max-width:700px){.view-controls{right:12px;bottom:8px}.view-button{width:36px;height:36px}.stage-bottom{right:148px}.city-active .view-controls{bottom:34px}.transport-collapsed .stage-bottom{right:186px}}

/* Draw interface icons instead of relying on platform emoji fonts. */
.ui-icon,.brand-mark{display:block;flex-shrink:0;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.brand-mark{width:22px;height:22px;stroke-width:1.1;color:#b4b4b4}
.import-button>.ui-icon{width:14px;height:14px}
.sound-button>.ui-icon{width:15px;height:15px}
.export-button>span,.video-export-button>span{display:inline-flex;vertical-align:middle}
.export-button .ui-icon,.video-export-button .ui-icon{width:15px;height:15px}
.panel-heading .text-button{display:grid;place-items:center;width:24px;height:24px}
.variation-button{display:grid;place-items:center}
.playback-icon{display:grid;place-items:center}
.playback-icon svg,.view-button .playback-icon svg{display:block;width:16px;height:16px;fill:currentColor;stroke:none}
.playback-icon[data-playing=false] .pause-glyph,.playback-icon[data-playing=true] .play-glyph{display:none}
@media(max-width:360px){.brand-mark{width:20px;height:20px}}
