/* Audio-only canvas overrides; ordinary upload and generation nodes keep their layouts. */
#vjtop-ref .node.media-node.audio-upload-node,
#vjtop-ref .node.generator.upload-node.audio-empty-node {
  box-sizing:border-box; width:560px; height:140px; min-height:0; aspect-ratio:4 / 1;
  border-radius:22px; background:#212121; overflow:visible;
}
#vjtop-ref .node.media-node.audio-upload-node > .node-body,
#vjtop-ref .node.generator.upload-node.audio-empty-node > .node-body.video-node-body {
  box-sizing:border-box; height:100%; min-height:0; padding:0; border:0;
  border-radius:inherit; background:transparent; box-shadow:none; overflow:visible;
}
#vjtop-ref .node.audio-upload-node .audio-node-preview { position:relative; width:100%; height:100%; }
#vjtop-ref .node.audio-upload-node .media-file-name { display:none; }
#vjtop-ref .node.audio-upload-node .music-analysis-summary { position:absolute; top:calc(100% + 10px); left:0; right:0; margin:0; }
#vjtop-ref .node.audio-upload-node .music-analysis-summary[data-state="completed"] { display:none; }
#vjtop-ref .node.audio-upload-node > .node-head > .node-menu { display:none; }
#vjtop-ref .node.media-node.audio-upload-node .video-result-panel.image-result-panel { width:100%; height:100%; min-height:0; aspect-ratio:4 / 1; border:0; border-radius:inherit; background:#212121; }
#vjtop-ref .node.media-node.audio-upload-node .video-result-placeholder { width:100%; height:100%; min-height:0; padding:12px; box-sizing:border-box; }
#vjtop-ref .node.media-node.audio-upload-node .asset-unavailable-state { display:grid; grid-template-columns:36px minmax(0,1fr) auto; grid-template-rows:auto auto; align-content:center; align-items:center; justify-items:start; gap:8px 14px; width:100%; height:100%; min-height:0; padding:18px 20px; border-radius:inherit; background:#212121; text-align:left; }
#vjtop-ref .node.media-node.audio-upload-node .asset-unavailable-state img { grid-column:1; grid-row:1 / 3; }
#vjtop-ref .node.media-node.audio-upload-node .asset-unavailable-state strong { grid-column:2; grid-row:1; }
#vjtop-ref .node.media-node.audio-upload-node .asset-unavailable-state span { grid-column:2; grid-row:2; font-size:11px; }
#vjtop-ref .node.media-node.audio-upload-node .asset-unavailable-state button { grid-column:3; width:100%; margin:0; font-size:11px; pointer-events:auto; }
#vjtop-ref .node.media-node.audio-upload-node [data-asset-unavailable-action="retry"] { grid-row:1; }
#vjtop-ref .node.media-node.audio-upload-node [data-asset-unavailable-action="replace"] { grid-row:2; }

#vjtop-ref .node.generator.upload-node.audio-empty-node > .node-head { display:none; }
#vjtop-ref .node.generator.upload-node.audio-empty-node .video-result-panel.upload-result-panel {
  box-sizing:border-box; position:relative; width:100%; height:100%; min-height:0;
  aspect-ratio:4 / 1; border:0; border-radius:inherit; background:#212121;
}
#vjtop-ref .node.generator.upload-node.audio-empty-node .upload-empty-button {
  display:grid; place-items:center; align-content:center; gap:4px;
  box-sizing:border-box; width:100%; height:100%; min-height:0; padding:12px;
  border:0; border-radius:inherit; background:transparent; cursor:grab;
}
#vjtop-ref .node.generator.upload-node.audio-empty-node .upload-empty-button:active { cursor:grabbing; }
#vjtop-ref .node.generator.upload-node.audio-empty-node .upload-empty-icon { display:grid; place-items:center; width:32px; height:32px; color:#8f8f8f; }
#vjtop-ref .node.generator.upload-node.audio-empty-node .upload-empty-icon .ui-icon { width:28px; height:28px; stroke-width:1.35; }
#vjtop-ref .node.generator.upload-node.audio-empty-node .upload-empty-button strong { font-size:15px; font-weight:400; line-height:21px; color:#a8a8a8; }
#vjtop-ref .node.generator.upload-node.audio-empty-node .upload-empty-button small { font-size:12px; line-height:17px; color:#8f8f8f; }
#vjtop-ref .node.generator.upload-node.audio-empty-node .port.pending-output { pointer-events:none; opacity:.35; }

#vjtop-ref .vj-music-card {
  --vj-music-accent:#d4d4d4; --vj-music-purple:var(--app-purple,#b882e8);
  position:relative; display:flex; flex-direction:column; box-sizing:border-box;
  width:100%; height:100%; min-width:0; padding:8px 16px; border:0; border-radius:inherit;
  background:transparent; color:#eceeed; box-shadow:none; font:400 12px/1.25 system-ui,-apple-system,"Segoe UI",sans-serif;
}
#vjtop-ref .vj-music-card [hidden] { display:none !important; }
#vjtop-ref .vj-music-card-heading { position:absolute; left:2px; right:2px; bottom:calc(100% + 10px); display:flex; align-items:center; gap:7px; min-width:0; min-height:20px; margin:0; cursor:grab; }
#vjtop-ref .node.has-node-type-label .vj-music-card-heading { left:58px; right:84px; top:14px; bottom:auto; min-height:20px; }
#vjtop-ref .vj-music-card-name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; font-weight:500; color:#eceeed; }
#vjtop-ref .vj-music-card-format { flex:none; margin-left:auto; padding-left:12px; font-size:11px; color:#989da3; }
#vjtop-ref .vj-music-card-state { display:none; flex:none; margin-left:auto; font-size:11px; color:#f1abb1; }
#vjtop-ref .vj-music-card[data-state="error"] .vj-music-card-state { display:inline; }
#vjtop-ref .vj-music-card .vj-music-audio { position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); pointer-events:none; }
#vjtop-ref .vj-music-controls {
  display:grid; width:100%; height:100%; min-width:0; min-height:0; align-items:center;
  grid-template-columns:32px minmax(0,1fr) 26px 26px;
  grid-template-rows:32px minmax(0,1fr) 16px 14px 12px; column-gap:12px; row-gap:2px;
}
#vjtop-ref .vj-music-controls button { display:inline-flex; align-items:center; justify-content:center; padding:0; min-width:0; min-height:0; border:0; border-radius:7px; background:transparent; color:#eee; cursor:pointer; }
#vjtop-ref .vj-music-controls button:disabled { cursor:default; opacity:.35; }
#vjtop-ref .vj-music-controls button:focus-visible,#vjtop-ref .vj-music-controls input:focus-visible { outline:2px solid #b496cc; outline-offset:2px; }
#vjtop-ref .vj-music-controls .vj-music-play { grid-column:1; grid-row:1; width:32px; height:32px; border-radius:50%; background:#3c3c3c; color:#f4f4f4; }
#vjtop-ref .vj-music-controls .vj-music-play:hover { background:#494949; }
#vjtop-ref .vj-music-icon { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; pointer-events:none; }
#vjtop-ref .vj-music-play .vj-music-icon { width:20px; height:20px; }
#vjtop-ref .vj-music-card:not([data-state="playing"]) .vj-music-play .vj-music-icon { fill:currentColor; stroke:none; }
#vjtop-ref .vj-music-controls .vj-music-loop { grid-column:4; grid-row:1; width:26px; height:26px; color:#737373; }
#vjtop-ref .vj-music-controls .vj-music-loop[aria-pressed="true"] { color:#eee; background:rgba(255,255,255,.08); }
#vjtop-ref .vj-music-controls .vj-music-loop[aria-pressed="false"]:hover { color:#999; background:rgba(255,255,255,.03); }
#vjtop-ref .vj-music-waveform { position:relative; grid-column:1 / -1; grid-row:2; width:100%; height:100%; min-height:0; }
#vjtop-ref .vj-music-waveform-svg { display:block; width:100%; height:100%; overflow:visible; pointer-events:none; }
#vjtop-ref .vj-music-waveform-base { fill:none; stroke:#76617e; stroke-width:1; }
#vjtop-ref .vj-music-waveform-played { fill:none; stroke:#cba5ed; stroke-width:1; }
#vjtop-ref .vj-music-playhead { stroke:#eee; stroke-width:1; pointer-events:none; }
#vjtop-ref .vj-music-card[data-state="playing"][data-visible="true"] .vj-music-wave-envelope { animation:vj-music-wave-breathe 3.8s ease-in-out infinite; transform-origin:500px 50px; }
@keyframes vj-music-wave-breathe { 0%,100% { transform:scaleY(1); } 50% { transform:scaleY(.94); } }
#vjtop-ref .vj-music-waveform-seek { position:absolute; inset:0; width:100%; height:100%; min-width:0; margin:0; padding:0; opacity:0; cursor:pointer; touch-action:none; }
#vjtop-ref .vj-music-waveform:has(.vj-music-waveform-seek:focus-visible) .vj-music-waveform-base { stroke:#a687b6; }
#vjtop-ref .vj-music-waveform-placeholder { display:flex; align-items:center; justify-content:center; width:100%; height:100%; color:#a6a0aa; font-size:11px; }
#vjtop-ref .vj-music-segment-band { position:relative; grid-column:1 / -1; grid-row:3; width:100%; height:100%; min-width:0; }
#vjtop-ref .vj-music-card .vj-music-segment-band[hidden] { display:block !important; visibility:hidden; }
#vjtop-ref .vj-music-segment-band .vj-music-band-segment {
  position:absolute; top:0; height:100%; padding:0 4px; border:0; border-radius:3px;
  overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:11px; line-height:1;
  color:#d6c9df; background:color-mix(in srgb,var(--vj-music-purple) 22%,#212121);
}
#vjtop-ref .vj-music-band-segment:nth-child(3n + 2) { background:color-mix(in srgb,var(--vj-music-purple) 12%,#212121); }
#vjtop-ref .vj-music-band-segment:nth-child(3n) { background:color-mix(in srgb,var(--vj-music-purple) 17%,#212121); }
#vjtop-ref .vj-music-band-segment:is([aria-current="true"],[aria-pressed="true"]) { background:color-mix(in srgb,var(--vj-music-purple) 48%,#212121); color:#fff; }
#vjtop-ref .vj-music-seek,#vjtop-ref .vj-music-volume { display:block; width:100%; height:14px; min-width:0; margin:0; padding:0; appearance:none; -webkit-appearance:none; border:0; border-radius:99px; background:transparent; cursor:pointer; touch-action:none; }
#vjtop-ref .vj-music-seek { position:relative; z-index:1; grid-column:1 / -1; grid-row:4; }
#vjtop-ref .vj-music-seek:disabled { cursor:default; opacity:.45; }
#vjtop-ref .vj-music-seek::-webkit-slider-runnable-track,#vjtop-ref .vj-music-volume::-webkit-slider-runnable-track { height:2px; border-radius:99px; background:#484848; }
#vjtop-ref .vj-music-seek::-webkit-slider-runnable-track { background:linear-gradient(to right,#d4d4d4 0 var(--vj-music-progress,0%),#484848 var(--vj-music-progress,0%) 100%); }
#vjtop-ref .vj-music-volume::-webkit-slider-runnable-track { background:linear-gradient(to right,#ddd 0 var(--vj-music-volume-progress,0%),#484848 var(--vj-music-volume-progress,0%) 100%); }
#vjtop-ref .vj-music-seek::-moz-range-track,#vjtop-ref .vj-music-volume::-moz-range-track { height:2px; border-radius:99px; background:#484848; }
#vjtop-ref .vj-music-seek::-moz-range-progress,#vjtop-ref .vj-music-volume::-moz-range-progress { height:2px; border-radius:99px; background:#ddd; }
#vjtop-ref .vj-music-seek::-webkit-slider-thumb,#vjtop-ref .vj-music-volume::-webkit-slider-thumb { appearance:none; -webkit-appearance:none; width:8px; height:8px; margin-top:-3px; border:0; border-radius:50%; background:#dedede; box-shadow:none; }
#vjtop-ref .vj-music-seek::-moz-range-thumb,#vjtop-ref .vj-music-volume::-moz-range-thumb { width:8px; height:8px; border:0; border-radius:50%; background:#dedede; box-shadow:none; }
#vjtop-ref .vj-music-time { display:contents; }
#vjtop-ref .vj-music-time-current,#vjtop-ref .vj-music-time-duration { grid-column:1 / -1; grid-row:5; font-size:11px; line-height:12px; font-variant-numeric:tabular-nums; }
#vjtop-ref .vj-music-time-current { justify-self:start; color:#c2c2c2; }
#vjtop-ref .vj-music-time-duration { justify-self:end; color:#8f8f8f; }
#vjtop-ref .vj-music-volume-wrap { grid-column:3; grid-row:1; position:static; display:inline-flex; }
#vjtop-ref .vj-music-controls .vj-music-volume-button { width:26px; height:26px; color:#737373; }
#vjtop-ref .vj-music-controls .vj-music-volume-button[data-active="true"] { color:#eee; }
#vjtop-ref .vj-music-volume-pop { display:none; align-items:center; gap:10px; box-sizing:border-box; position:absolute; bottom:calc(100% + 6px); right:16px; width:176px; padding:6px 12px; border:1px solid rgba(255,255,255,.12); border-radius:10px; background:#181818; z-index:25; }
#vjtop-ref .vj-music-volume-wrap:is([data-open="true"],[data-dragging="true"]) .vj-music-volume-pop { display:flex; }
#vjtop-ref .vj-music-card:has(.vj-music-volume-wrap:is([data-open="true"],[data-dragging="true"])) .vj-music-card-heading { right:200px; }
#vjtop-ref .node.has-node-type-label .vj-music-card:has(.vj-music-volume-wrap:is([data-open="true"],[data-dragging="true"])) .vj-music-card-heading { right:84px; }
#vjtop-ref .vj-music-card:has(.vj-music-volume-wrap:is([data-open="true"],[data-dragging="true"])) .vj-music-card-format { display:none; }
#vjtop-ref .vj-music-volume-pop .vj-music-volume { position:static; flex:1; opacity:1; pointer-events:auto; transform:none; }
#vjtop-ref .vj-music-volume-value { flex:none; width:34px; color:#eee; font-size:11px; font-variant-numeric:tabular-nums; text-align:right; }
#vjtop-ref .vj-music-playback-error { position:absolute; left:0; right:0; top:calc(100% + 10px); display:flex; align-items:center; gap:8px; color:#d0c2db; font-size:11px; line-height:18px; }
#vjtop-ref .vj-music-playback-error span { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#vjtop-ref .vj-music-playback-error button { flex:none; padding:2px 7px; border:1px solid rgba(255,255,255,.14); border-radius:5px; background:#212121; color:#ddd; font-size:11px; }
#vjtop-ref .vj-music-node-toolbar { display:flex; align-items:center; gap:2px; }
#vjtop-ref .vj-music-node-toolbar :is([data-media-action="music-analysis"],[data-media-action="agent"]) { min-width:28px; }
@media (prefers-reduced-motion:reduce) {
  #vjtop-ref .vj-music-card .vj-music-wave-envelope { animation:none !important; }
}
