/* VenueOS dev.77 — Event-backed glass for the ONE imported Grotto widget.
   Every stage uses the same frosted finish. There is no widget-owned scene image. */
.venueos-unavailable{opacity:.24!important;pointer-events:none!important;filter:grayscale(1)}
.grotto-widget~.caption{display:none}
html{background-color:transparent!important}
body,.showcase,.widget-mount{background-color:transparent!important}
.journey-stage[hidden],.widget-mount[hidden]{display:none!important}

/* The parent Event's selected responsive image is mirrored into this document
   only because a sandboxed iframe cannot sample pixels outside its own canvas.
   The scene layer remains unblurred everywhere outside the widget glass. */
#venueos-event-scene{position:fixed;inset:0;pointer-events:none;z-index:0;background-color:transparent;background-repeat:no-repeat}
.showcase{position:relative;z-index:1}

/* Use BOTH CSS backdrop-filter and a clipped, position-aligned soft-focus
   sample of the SAME Event image. The latter avoids Chrome/WebKit stacking
   context restrictions that previously made the frost vanish on some stages. */
.grotto-widget>.widget-glass,
.journey-stage>.widget-glass{
  overflow:hidden!important;
  background:linear-gradient(145deg,rgba(58,42,33,.50),rgba(14,17,18,.64))!important;
  -webkit-backdrop-filter:blur(18px) saturate(.77)!important;
  backdrop-filter:blur(18px) saturate(.77)!important;
  box-shadow:inset 0 1.2cqw 5cqw rgba(255,226,171,.08),inset 0 -5cqw 12cqw rgba(0,0,0,.22)!important;
}
.grotto-widget>.widget-glass::before,
.journey-stage>.widget-glass::before{
  content:""!important;
  position:absolute!important;
  inset:-24px!important;
  pointer-events:none!important;
  background-color:transparent!important;
  background-image:var(--venueos-frost-image,none)!important;
  background-repeat:no-repeat!important;
  background-size:var(--venueos-frost-width,cover) var(--venueos-frost-height,auto)!important;
  background-position:var(--venueos-frost-x,center) var(--venueos-frost-y,center)!important;
  -webkit-filter:blur(19px) brightness(.57) saturate(.72)!important;
  filter:blur(19px) brightness(.57) saturate(.72)!important;
  opacity:var(--venueos-frost-opacity,0)!important;
  border-radius:inherit;
  transform:translateZ(0);
}
/* Preserve the original golden outline ON TOP of the frosted scene. */
.grotto-widget>.widget-glass::after,
.journey-stage>.widget-glass::after{z-index:1}

/* Read-only live Event calendar: source sample radio months are removed on serve. */
/* dev.88: always retain previous/next arrows, including at the Event boundary.
   Boundary clicks announce why navigation does not occur instead of disabling controls. */
[data-venueos-live-calendar] .month-arrow{cursor:pointer}
[data-venueos-live-calendar] .month-arrow:focus-visible{outline:2px solid #ffe2ab;outline-offset:2px;border-radius:10%}
[data-venueos-live-calendar] .venueos-unavailable{opacity:.28!important;pointer-events:none}
[data-venueos-live-calendar] .venueos-calendar-empty,
[data-venueos-live-calendar] .venueos-calendar-alert{color:#fff0c8;text-align:center;padding:13% 6%;font:4cqw/1.35 Georgia,serif}
[data-venueos-live-calendar] .venueos-calendar-alert{position:absolute;bottom:0;left:0;right:0;background:#391611;font-size:3.5cqw;padding:2%}

[data-venueos-live-calendar] .day.venueos-event-date{background:linear-gradient(140deg,#47594a,#1e3829);border-color:#b9b06a99;box-shadow:none}
[data-venueos-live-calendar] .day.venueos-event-date::after{content:none}
/* Selected date must remain visibly red even with the live Event date theme. */
[data-venueos-live-calendar] .date-radio:checked+.day.venueos-event-date{
 background:linear-gradient(145deg,#e0181c,#a4000a 72%,#ce2515);
 border:.45cqw solid #ffda72;
 box-shadow:0 0 1.2cqw #ffdf77,0 0 2cqw #ff780d91,inset 0 0 1.2cqw #e84136;
 font-weight:bold;
}

/* dev.87: small, screen-reader-announced date-availability feedback. */
[data-venueos-live-calendar] .venueos-date-notice{
 position:absolute;z-index:5;left:2%;right:2%;bottom:1.5%;margin:0;padding:1.2cqw 1.6cqw;
 pointer-events:none;
 border:1px solid rgba(255,226,175,.38);border-radius:1.3cqw;
 color:#fff1cc;background:rgba(85,28,24,.78);
 text-align:center;font:500 2.9cqw/1.3 system-ui,sans-serif;
}
[data-venueos-live-calendar] .venueos-date-notice[hidden]{display:none!important}
/* Grey dates stay unbookable, but explain themselves when tapped or focused. */
[data-venueos-live-calendar] button.day.venueos-unavailable{
 pointer-events:auto!important;opacity:.58!important;filter:grayscale(.65);
 cursor:help;font-family:inherit;
}
[data-venueos-live-calendar] button.day.venueos-unavailable:focus-visible{
 outline:2px solid #ffe2ab;outline-offset:2px;
}
/* Intro animation is visual-only: no radio selection, no availability mutation. */
[data-venueos-live-calendar] .day.venueos-event-date.venueos-date-showcase{
 position:relative;z-index:2;isolation:isolate;
 animation:venueos-date-spotlight 480ms ease-in-out both;
}
@keyframes venueos-date-spotlight{
 0%,100%{transform:scale(1);filter:brightness(1)}
 50%{transform:scale(1.14);filter:brightness(1.14);
     background:#de2024;border-color:#ffe6a2;
     box-shadow:0 0 0 .45cqw rgba(255,238,189,.32),0 0 2.8cqw rgba(241,41,37,.75)}
}
@media (prefers-reduced-motion:reduce){
 [data-venueos-live-calendar] .venueos-date-showcase{animation:none!important}
}

/* dev.89 — server-confirmed booking hold, independent of payment and sample artwork. */
.venueos-hold-notice{position:relative;z-index:4;margin:1.2cqw auto 0;padding:1.4cqw 2cqw;
 background:rgba(26,65,47,.84);color:#fff5d3;border:1px solid rgba(247,218,143,.66);
 border-radius:1.6cqw;max-width:95%;font:500 clamp(11px,2.55cqw,17px)/1.35 system-ui,sans-serif;text-align:center}
.venueos-hold-notice[hidden]{display:none!important}
