#shandy-room { --ufo-shift:1.3s; isolation:isolate; }
#shandy-room .ufo-starfield {
  position:absolute; inset:0; z-index:-1; pointer-events:none; opacity:0;
  background:#000 url("/shandy-ufo-stars.svg") center top / min(100%,1000px) auto repeat;
  transition:opacity var(--ufo-shift) ease-in-out;
}
#shandy-room.disco-on .ufo-starfield { opacity:1; }
#shandy-room header,#shandy-room footer { transition:background-color var(--ufo-shift) ease; }
#shandy-room.disco-on header,#shandy-room.disco-on footer { background-color:#000 !important; }
#shandy-room .ufo-logo-toggle,#shandy-room .ufo-heart-toggle {
  position:relative; display:block; margin:0; padding:0; border:0; background:none; color:inherit; cursor:pointer;
}
#shandy-room .ufo-logo-toggle { width:100%; }
#shandy-room .ufo-logo-toggle:hover img { opacity:.93; }
#shandy-room .ufo-logo-toggle:focus-visible,#shandy-room .ufo-heart-toggle:focus-visible {
  outline:1px solid #9bdfff; outline-offset:4px; border-radius:5px;
}
#shandy-room .ufo-logo-flare {
  position:absolute; inset:0; pointer-events:none; opacity:0;
  background:url("/shandy-ufo-wordmark.webp") center / 100% 100% no-repeat;
  filter:url(#ufo-floating-ink) brightness(1.62) saturate(1.48) drop-shadow(0 0 7px #a59fff);
  mask-image:linear-gradient(104deg,transparent 43%,#000 50%,transparent 57%);
  mask-size:280% 100%; mask-repeat:no-repeat;
  mix-blend-mode:screen;
}
#shandy-room .ufo-heart-toggle {
  display:grid; place-items:center; width:44px; height:44px;
  color:#d4baff; font:24px/1 system-ui,sans-serif;
  text-shadow:0 0 8px #8479e5;
}
#shandy-room .ufo-heart-toggle:hover { color:#b7e8ff; }
#shandy-room .ufo-return { color:inherit; text-decoration:underline; text-underline-offset:3px; }
#shandy-room :is(.jewel-divider,.ufo-pyramid,.ufo-header-wave,.player-scrollwork) svg {
  transition:filter var(--ufo-shift) ease;
}
#shandy-room.disco-on :is(.jewel-divider,.ufo-pyramid,.ufo-header-wave,.player-scrollwork) svg {
  filter:drop-shadow(0 0 4px #9786ee8f);
}
#shandy-room.disco-on .song .art,#shandy-room.disco-on .song:nth-child(2n) .art {
  border-color:#adc3f2; box-shadow:0 0 10px #8b72dd35;
}
#shandy-room.disco-on .song .tile:is(:hover,:focus-visible) .art {
  border-color:#b0e8ff; box-shadow:0 0 15px #75c7ff61;
}
#shandy-room dialog {
  --ufo-player-chrome:132px;
  box-sizing:border-box; width:min(92vw,960px,calc((100vh - var(--ufo-player-chrome)) * 16 / 9));
  width:min(92vw,960px,calc((100dvh - var(--ufo-player-chrome)) * 16 / 9));
  max-height:calc(100dvh - 12px); overflow:auto;
  transition:background-color var(--ufo-shift) ease,border-color var(--ufo-shift) ease,box-shadow var(--ufo-shift) ease;
}
#shandy-room .playerhead {
  position:sticky; top:0; z-index:2; min-height:48px; padding:4px 48px !important;
  background:#0a0d18; border:0;
}
#shandy-room .player-project { min-height:48px; }
#shandy-room .player-project img { width:auto; max-width:100%; height:48px; margin:0; }
#shandy-room .ufo-header-wave svg { height:36px; }
#shandy-room .playerhead .close { right:4px; top:2px; min-width:44px; min-height:44px; color:#eef2fa; }
#shandy-room .song-caption {
  display:grid; grid-template-columns:minmax(20px,1fr) minmax(0,2.25fr) minmax(20px,1fr);
  grid-template-areas:"left title right" ". heart ."; gap:0 9px; padding:7px 12px 5px;
}
#shandy-room .song-caption .session-title { grid-area:title; max-width:none; }
#shandy-room .song-caption .player-scrollwork { min-width:0; align-self:center; transform:translateY(-3px); }
#shandy-room .ufo-foot-left { grid-area:left; }
#shandy-room .ufo-foot-right { grid-area:right; }
#shandy-room .ufo-player-heart {
  grid-area:heart; justify-self:center; color:#d1b7f9; line-height:1; font-size:15px; text-shadow:0 0 7px #859df4;
}
#shandy-room.disco-on dialog {
  background:#000 url("/shandy-ufo-stars.svg") center / 800px auto;
  border-color:#c8bbed; box-shadow:0 0 18px #847bdf58,0 24px 100px #000c;
}
#shandy-room.disco-on dialog::backdrop { background:#000e; }
#shandy-room.disco-on .playerhead { background:#000 url("/shandy-ufo-stars.svg") center top / 700px auto; }
#shandy-room.disco-on .screen { border-color:#b7b6e0; }
@media (max-height:400px) {
  #shandy-room dialog { --ufo-player-chrome:119px; }
  #shandy-room .playerhead,#shandy-room .player-project { min-height:44px; }
  #shandy-room .player-project img { height:44px; }
  #shandy-room .playerhead .close { top:0; }
}
@media (prefers-reduced-motion:reduce) {
  #shandy-room *,#shandy-room *::before,#shandy-room *::after { transition-duration:.01ms !important; }
}

#shandy-room header .home-brand {
  color:#e9d8f5;
  background:linear-gradient(96deg,#ffa6df,#e6d6f3 52%,#8edcff);
  background-clip:text;
  -webkit-text-fill-color:transparent;
  transition:filter var(--ufo-shift) ease;
}
#shandy-room header .back-to-film {
  color:#ffb0e7; border-color:#8ae5ff;
  box-shadow:0 0 12px #55cfff45,inset 0 0 9px #a475ca2b;
  transition:color var(--ufo-shift) ease,border-color var(--ufo-shift) ease,box-shadow var(--ufo-shift) ease;
}
#shandy-room.disco-on header .home-brand { filter:brightness(1.2) saturate(1.8) drop-shadow(0 0 4px #af81f3); }
#shandy-room.disco-on header .back-to-film {
  color:#f9e8ff; border-color:#c4aaff;
  box-shadow:0 0 16px #a65bff70,inset 0 0 10px #49ddff38;
}


/* Keep black next to the video and confine the nebula to the outer trim. */
#shandy-room .ufo-heart-toggle {
  width:64px; height:64px; font-size:43px;
  color:#f3b8fb; text-shadow:0 0 8px #f456ed,0 0 17px #557cff;
}
#shandy-room.disco-on .ufo-heart-toggle { color:#f7e4ff; }
#shandy-room dialog { --ufo-player-chrome:164px; background:#000; }
#shandy-room.disco-on dialog { background:#000; }
#shandy-room .playerhead,#shandy-room.disco-on .playerhead {
  background:linear-gradient(105deg,#200b2d,transparent 33%,transparent 67%,#071d2c) center top / 100% 2px no-repeat,#000 !important;
}
#shandy-room .player-project { min-height:68px; }
#shandy-room .player-project .ufo-player-wordmark {
  height:68px; width:auto; max-width:100%; object-fit:contain;
}
@media (max-width:480px),(max-height:450px) {
  #shandy-room .player-project .ufo-player-wordmark { height:56px; }
}
#shandy-room .song-caption,#shandy-room.disco-on .song-caption {
  background:linear-gradient(100deg,transparent,#211030 42%,#0d2639 62%,transparent) center bottom / 85% 2px no-repeat,#000 !important;
}
#shandy-room .song-caption .session-artist { font-size:inherit; }
@media (max-width:480px),(max-height:450px) {
  #shandy-room .player-project { min-height:56px; }

}

#shandy-room dialog,#shandy-room.disco-on dialog { background:#000 !important; }


/* One permanent starfield, with no backdrop change on logo activation. */
html,body,#shandy-room { background:#000 !important; }
#shandy-room .ufo-starfield { opacity:1; }
#shandy-room .song-caption .session-title,
#shandy-room .song-caption .session-title.has-artist {
  font-size:clamp(12px,1.5vw,15px); letter-spacing:.16em;
}
#shandy-room .song-caption .session-artist {
  font-size:clamp(10px,1.2vw,13px);
}


#shandy-room .ufo-rights { white-space:nowrap; }
#shandy-room .hero .shandy-title { margin-bottom:clamp(-42px,-3vw,-14px) !important; }
#shandy-room #ufo-gallery { margin-bottom:24px; }
#shandy-room .ufo-pyramid { margin:12px auto 4px; height:clamp(42px,6vw,76px); }
#shandy-room #covers { color:#8edfff; }
#shandy-room #covers + .grid .tile small { color:#efa6dc; }
#shandy-room { --ufo-heart-size:clamp(46px,6vw,66px); }
#shandy-room .ufo-matching-heart,#shandy-room .ufo-heart-flare {
  display:block; width:var(--ufo-heart-size); height:var(--ufo-heart-size);
  filter:drop-shadow(0 0 5px #ab87f6);
}
#shandy-room #ufo-gallery .ufo-matching-heart {
  position:absolute; left:50%; top:55%; transform:translate(-50%,-50%);
}
#shandy-room .ufo-end-spark { margin:26px 0 8px; }
#shandy-room .ufo-heart-toggle { width:var(--ufo-heart-size); height:var(--ufo-heart-size); }
#shandy-room .ufo-heart-flare {
  position:absolute; inset:0; pointer-events:none; opacity:0;
  filter:brightness(2) drop-shadow(0 0 7px #e6bfff);
  mask-image:linear-gradient(105deg,transparent 40%,#000 50%,transparent 60%);
  mask-size:280% 100%; mask-repeat:no-repeat;
}

/* The gallery waveform SVG fills the band. Its separate heart does not. */
#shandy-room #ufo-gallery > .ufo-matching-heart {
  width:var(--ufo-heart-size) !important;
  height:var(--ufo-heart-size) !important;
}

#shandy-room.disco-on::before {
  border-color:#c75bde94 !important;
  box-shadow:inset 0 0 14px #b64bd427,0 0 14px #cd4beb34 !important;
}
#shandy-room.disco-on header .back-to-film {
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
  filter:none !important;
  color:#d8e4fb !important;
  transition:color .25s ease,text-shadow .25s ease !important;
}
#shandy-room.disco-on header .back-to-film:is(:hover,:focus-visible) {
  color:#f48bdd !important;
  text-shadow:0 0 10px #e259d37a;
}
#shandy-room .ufo-band-trigger {
  position:relative; display:block; width:100%; padding:0; border:0;
  background:none; color:inherit; cursor:pointer;
}
#shandy-room .ufo-band-trigger:focus-visible {
  outline:1px solid #b5dbff; outline-offset:5px; border-radius:6px;
}
#shandy-room .ufo-saucer { width:84px; height:66px; }
#shandy-room .ufo-saucer svg {
  display:block; width:100%; height:100%; filter:drop-shadow(0 0 5px #a47be9);
}
#shandy-room .ufo-band-flare {
  position:absolute; inset:0; pointer-events:none; opacity:0;
  filter:brightness(2.25) saturate(1.35) drop-shadow(0 0 7px #d2b1ff);
  mask-image:linear-gradient(104deg,transparent 40%,#000 50%,transparent 60%);
  mask-size:280% 100%; mask-repeat:no-repeat;
}
#shandy-room #ufo-gallery .ufo-matching-heart {
  width:var(--ufo-heart-size) !important; height:var(--ufo-heart-size) !important;
}

/* Open starfield and navigation that stays available while scrolling. */
#shandy-room.disco-on { overflow:clip; }
#shandy-room.disco-on::before { content:none !important; }
#shandy-room.disco-on header {
  position:sticky; top:0; z-index:10; border-bottom:0 !important;
  background:transparent !important; backdrop-filter:none;
}
#shandy-room.disco-on header nav .back-to-film > span { display:inline; }
#shandy-room #original-songs + .grid .tile small { color:#40caff !important; }
#shandy-room #covers + .grid .tile small { color:#ef69f3 !important; }
#shandy-room #covers { color:#45caff; }
#shandy-room .ufo-saucer { width:148px; height:74px; }
#shandy-room .ufo-saucer svg { filter:drop-shadow(0 4px 7px #505cb859); }
#shandy-room .ufo-saucer [data-ufo-window] {
  opacity:.75; filter:drop-shadow(0 0 2px currentColor);
}
#shandy-room.disco-on dialog {
  border:1px solid transparent !important;
  background:linear-gradient(#000,#000) padding-box,
    linear-gradient(118deg,#ed59dc,#7043d8 29%,#33baf2 53%,#e1e9ff 73%,#b35bef) border-box !important;
  box-shadow:0 20px 75px #000a !important;
}
#shandy-room.disco-on dialog :is(.playerhead,.song-caption,.screen) {
  background:#000 !important; border:0 !important; box-shadow:none !important;
}
#shandy-room.disco-on dialog .screen { border-radius:0; }
#shandy-room.disco-on dialog .song-caption {
  display:block; text-align:center; padding:13px 12px 14px;
}
#shandy-room.disco-on dialog .session-title { color:#eaf1ff !important; }
#shandy-room.disco-on dialog .session-artist {
  color:#f275f5 !important; background:none; -webkit-text-fill-color:currentColor;
}
#shandy-room.disco-on dialog .player-project .ufo-player-wordmark {
  height:76px; filter:url(#ufo-floating-ink) brightness(1.65) drop-shadow(0 0 5px #bd6dff66);
}
@media (max-width:480px),(max-height:450px) {
  #shandy-room.disco-on dialog .player-project .ufo-player-wordmark { height:59px; }
}

#shandy-room.disco-on header :is(.home-brand,.back-to-film) {
  text-shadow:0 1px 4px #000,0 0 8px #000;
}
#shandy-room.disco-on header { pointer-events:none; }
#shandy-room.disco-on header a { pointer-events:auto; }
