/* Neurohaven Café v128 — cleaner atmospheric field + interaction-safe hover band. */

/* Keep the visual field inside the carousel, but feather every edge so no
   rectangular gradient/mask cut can become visible against the page. */
.cafe-carousel::before {
  inset: 1.5rem 0 3.5rem !important;
  border: 0 !important;
  border-radius: 0 !important;
  background:
    radial-gradient(ellipse 58% 42% at 50% 44%,
      rgba(73, 220, 242, .060) 0%,
      rgba(59, 155, 225, .030) 38%,
      rgba(39, 82, 151, .012) 58%,
      transparent 79%) !important;
  box-shadow: none !important;
  opacity: .68 !important;
  -webkit-mask-image: radial-gradient(ellipse 92% 80% at 50% 46%, #000 0 48%, rgba(0,0,0,.72) 64%, rgba(0,0,0,.28) 80%, transparent 100%) !important;
  mask-image: radial-gradient(ellipse 92% 80% at 50% 46%, #000 0 48%, rgba(0,0,0,.72) 64%, rgba(0,0,0,.28) 80%, transparent 100%) !important;
}

[data-theme="light"] .cafe-carousel::before {
  background:
    radial-gradient(ellipse 58% 42% at 50% 44%,
      rgba(29, 171, 194, .045) 0%,
      rgba(61, 130, 190, .020) 42%,
      transparent 79%) !important;
  opacity: .56 !important;
}

.cafe-carousel__fx {
  inset: 3% 2% 10% !important;
  overflow: visible !important;
  opacity: .50 !important;
  -webkit-mask-image: radial-gradient(ellipse 88% 78% at 50% 44%, #000 0 46%, rgba(0,0,0,.62) 64%, rgba(0,0,0,.20) 82%, transparent 100%) !important;
  mask-image: radial-gradient(ellipse 88% 78% at 50% 44%, #000 0 46%, rgba(0,0,0,.62) 64%, rgba(0,0,0,.20) 82%, transparent 100%) !important;
}

.cafe-carousel__fx::before {
  left: 13% !important;
  right: 13% !important;
  top: 12% !important;
  height: 46% !important;
  background: radial-gradient(ellipse at center,
    rgba(76, 223, 244, .070) 0%,
    rgba(63, 121, 217, .022) 46%,
    transparent 76%) !important;
  filter: blur(3.8rem) !important;
  opacity: .72 !important;
}

/* The old outlined elliptical halo was one of the visually hardest edges.
   Replace it with a very soft, borderless pool of light. */
.cafe-carousel__fx::after {
  left: 25% !important;
  right: 25% !important;
  top: 20% !important;
  height: 35% !important;
  border: 0 !important;
  background: radial-gradient(ellipse at center,
    rgba(113, 232, 249, .040) 0%,
    rgba(78, 103, 205, .016) 44%,
    transparent 76%) !important;
  box-shadow: none !important;
  filter: blur(2.8rem) !important;
  opacity: .62 !important;
}

.cafe-carousel__fx i:nth-child(1),
.cafe-carousel__fx i:nth-child(2) {
  opacity: .34 !important;
  filter: blur(4rem) !important;
}
.cafe-carousel__fx i:nth-child(3) {
  opacity: .30 !important;
  filter: blur(3rem) !important;
}

.cafe-carousel__ambient {
  inset: 14% 13% 20% !important;
  opacity: .36 !important;
  overflow: visible !important;
  -webkit-mask-image: radial-gradient(ellipse at center, #000 0 46%, rgba(0,0,0,.62) 65%, rgba(0,0,0,.20) 82%, transparent 100%) !important;
  mask-image: radial-gradient(ellipse at center, #000 0 46%, rgba(0,0,0,.62) 65%, rgba(0,0,0,.20) 82%, transparent 100%) !important;
}
.cafe-carousel__ambient::before {
  background: conic-gradient(from 90deg,
    transparent 0 34%,
    rgba(86, 231, 250, .026) 43%,
    rgba(113, 100, 255, .018) 50%,
    rgba(86, 231, 250, .026) 57%,
    transparent 66% 100%) !important;
  filter: blur(4rem) !important;
  opacity: .55 !important;
}
.cafe-carousel__ambient::after {
  inset: 16% 25% !important;
  background: radial-gradient(ellipse at center,
    rgba(80, 234, 252, .055) 0%,
    rgba(63, 120, 255, .018) 44%,
    transparent 74%) !important;
  filter: blur(2.8rem) !important;
  opacity: .40 !important;
}
.cafe-carousel.is-moving .cafe-carousel__ambient::after {
  opacity: .52 !important;
  transform: scale(1.025) !important;
}

/* Steering edge cues remain, but become subtle feathered light rather than
   obvious side blocks. */
.cafe-carousel__stage::before,
.cafe-carousel__stage::after {
  top: 16% !important;
  bottom: 24% !important;
  width: 18% !important;
  filter: blur(.8rem) !important;
  -webkit-mask-image: radial-gradient(ellipse at center, #000 0 30%, rgba(0,0,0,.55) 56%, transparent 100%) !important;
  mask-image: radial-gradient(ellipse at center, #000 0 30%, rgba(0,0,0,.55) 56%, transparent 100%) !important;
}
.cafe-carousel__stage::before {
  background: radial-gradient(ellipse at 0 50%, rgba(89, 224, 248, .070), rgba(61, 151, 255, .018) 38%, transparent 76%) !important;
}
.cafe-carousel__stage::after {
  background: radial-gradient(ellipse at 100% 50%, rgba(89, 224, 248, .070), rgba(61, 151, 255, .018) 38%, transparent 76%) !important;
}
.cafe-carousel.is-steering-left .cafe-carousel__stage::before,
.cafe-carousel.is-steering-right .cafe-carousel__stage::after {
  opacity: calc(.10 + var(--cafe-drive, .4) * .18) !important;
}

/* The detail panel is explicitly above the carousel interaction plane. The JS
   also treats it as a neutral hover zone and quickly catches the nearest card. */
.cafe-carousel__detail {
  position: relative;
  z-index: 40 !important;
}
.cafe-carousel__enter {
  position: relative;
  z-index: 41;
}


/* Neurohaven Café v176 — carousel-first page composition. */
.cafe-carousel-section{
  padding-top:clamp(1.65rem,3.2vw,3.15rem)!important;
  padding-bottom:clamp(3.5rem,6vw,6rem)!important;
}
.cafe-carousel-heading{
  width:min(100%,56rem)!important;
  margin:0 auto .15rem!important;
  text-align:center;
}
.cafe-carousel-heading .eyebrow{margin-bottom:.42rem}
.cafe-carousel-heading h2{
  margin:.05rem 0 .38rem!important;
  font-size:clamp(2.25rem,4.2vw,4.35rem)!important;
  line-height:1.02;
  letter-spacing:-.045em!important;
}
.cafe-carousel-intro{
  width:min(100%,52rem);
  margin:0 auto;
  color:var(--muted);
  font-size:clamp(.82rem,1.05vw,.98rem);
  line-height:1.62;
  letter-spacing:.005em;
  text-wrap:balance;
}
.cafe-carousel{
  padding-top:1.15rem!important;
}
@media(max-width:52rem){
  .cafe-carousel-section{padding-top:1.35rem!important}
  .cafe-carousel-heading{padding-inline:1rem!important}
  .cafe-carousel-heading h2{font-size:clamp(2rem,9vw,3.15rem)!important}
  .cafe-carousel-intro{font-size:.84rem;line-height:1.55}
  .cafe-carousel{padding-top:.7rem!important}
}
@media(max-width:36rem){
  .cafe-carousel-section{padding-top:1.05rem!important}
  .cafe-carousel-heading{margin-bottom:0!important}
}

/* Neurohaven Café v201 — photographic carousel hero.
   The supplied lounge artwork is the only atmospheric field behind the cards.
   It is clipped to the existing cyan orbit so no photograph can appear below
   the blue curve. Legacy gradient halos/card effects are deliberately removed. */
.cafe-carousel-section{
  background:var(--bg)!important;
}
.cafe-carousel{
  isolation:isolate;
}
.cafe-carousel::before,
.cafe-carousel__fx,
.cafe-carousel__ambient,
.cafe-carousel__pedestal,
.cafe-carousel__card-glow{
  display:none!important;
}
.cafe-carousel__stage{
  isolation:isolate;
  overflow:clip!important;
  border-radius:2.35rem 2.35rem 0 0;
}
.cafe-carousel__scene{
  position:absolute;
  z-index:0;
  top:.2rem;
  right:1.5%;
  bottom:0;
  left:1.5%;
  overflow:hidden;
  pointer-events:none;
  border-radius:2.35rem 2.35rem 0 0;
  /* Polygon is a fallback; the SVG mask below mirrors the orbit curve. */
  clip-path:polygon(0 0,100% 0,100% 72%,97% 73%,85% 78%,73% 83%,61% 87.5%,50% 89.4%,39% 87.5%,27% 83%,15% 78%,3% 73%,0 72%);
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 320' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1200V232L1170 234C955 270 770 284 600 286C430 284 245 270 30 234L0 232Z'/%3E%3C/svg%3E");
  -webkit-mask-size:100% 100%;
  -webkit-mask-position:center;
  -webkit-mask-repeat:no-repeat;
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 320' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1200V232L1170 234C955 270 770 284 600 286C430 284 245 270 30 234L0 232Z'/%3E%3C/svg%3E");
  mask-size:100% 100%;
  mask-position:center;
  mask-repeat:no-repeat;
  box-shadow:inset 0 1px rgba(255,255,255,.08),0 1.8rem 4rem rgba(0,0,0,.22);
}
.cafe-carousel__scene img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 46%;
  filter:brightness(.66) saturate(.92) contrast(1.08);
  transform:scale(1.012);
}
/* Keep only the real blue orbit as the lower visual boundary. */
.cafe-carousel__orbit,
.cafe-carousel__orbit-nodes{
  z-index:2!important;
}
.cafe-carousel__orbit-shadow{
  opacity:.55;
}
/* The supplied card artwork already contains its own premium frame. Remove the
   previous generated glass/gradient shells and sheens around those images. */
.cafe-carousel__item,
[data-theme="light"] .cafe-carousel__item{
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
.cafe-carousel__item:hover,
.cafe-carousel__item.is-active,
.cafe-carousel.is-moving .cafe-carousel__item.is-active,
.cafe-carousel.is-locked .cafe-carousel__item.is-active{
  border-color:transparent!important;
  box-shadow:none!important;
}
.cafe-carousel__item::before,
.cafe-carousel__item::after{
  display:none!important;
}
.cafe-carousel__art img,
.cafe-carousel__item.is-active .cafe-carousel__art img{
  filter:drop-shadow(0 1.15rem 2.4rem rgba(0,0,0,.42))!important;
}
/* Steering remains fully functional but no longer paints synthetic side glows. */
.cafe-carousel__stage::before,
.cafe-carousel__stage::after{
  display:none!important;
}
/* The information strip sits below the photographic curve as a restrained,
   solid glass panel rather than another decorative gradient. */
.cafe-carousel__detail{
  background:rgba(5,13,24,.88)!important;
  border-color:rgba(104,225,246,.22)!important;
  box-shadow:inset 0 1px rgba(255,255,255,.06),0 1.45rem 3.6rem rgba(0,0,0,.26)!important;
  backdrop-filter:blur(18px) saturate(1.08);
}
[data-theme="light"] .cafe-carousel__detail{
  background:rgba(247,251,253,.92)!important;
  border-color:rgba(37,148,176,.20)!important;
}
@media(max-width:52rem){
  .cafe-carousel__stage{border-radius:1.8rem 1.8rem 0 0}
  .cafe-carousel__scene{border-radius:1.8rem 1.8rem 0 0}
  .cafe-carousel__scene img{object-position:54% 48%;filter:brightness(.61) saturate(.9) contrast(1.08)}
}
@media(max-width:36rem){
  .cafe-carousel__stage{border-radius:1.35rem 1.35rem 0 0}
  .cafe-carousel__scene{left:0;right:0;border-radius:1.35rem 1.35rem 0 0}
  .cafe-carousel__scene img{object-position:58% 50%}
}

/* Neurohaven Café v202 — unified editable photographic hero.
   The heading now lives inside the same photographic stage as the carousel,
   with no opaque/gradient heading panel. The photo is clipped to the actual
   cyan orbit geometry, so it cannot paint below the blue curve. */
.cafe-carousel-section{
  background:var(--bg)!important;
}
.cafe-carousel{
  padding-top:0!important;
}
.cafe-carousel__stage{
  height:clamp(37rem,48vw,45rem)!important;
  padding-top:0!important;
  overflow:clip!important;
  border-radius:2.35rem 2.35rem 0 0;
}
.cafe-carousel__scene{
  top:0!important;
  right:1.5%!important;
  bottom:0!important;
  left:1.5%!important;
  border-radius:2.35rem 2.35rem 0 0!important;
  /* Anchor the photo boundary to the orbit's real SVG path instead of to a
     percentage of stage height. These offsets mirror the y positions of the
     M30…M600…M1170 blue curve and remain stable when the hero gets taller. */
  -webkit-mask-image:none!important;
  mask-image:none!important;
  clip-path:polygon(
    0 0,100% 0,
    100% calc(100% - 9.4rem),
    97.5% calc(100% - 9.07rem),
    79.6% calc(100% - 5.27rem),
    64.2% calc(100% - 3.91rem),
    50% calc(100% - 3.63rem),
    35.8% calc(100% - 3.91rem),
    20.4% calc(100% - 5.27rem),
    2.5% calc(100% - 9.07rem),
    0 calc(100% - 9.4rem)
  )!important;
  box-shadow:none!important;
}
.cafe-carousel__scene img{
  object-position:center 45%!important;
  filter:brightness(.63) saturate(.92) contrast(1.08)!important;
  transform:scale(1.012);
}
.cafe-carousel-heading{
  position:relative;
  z-index:7;
  width:min(100%,58rem)!important;
  max-width:58rem!important;
  margin:0 auto!important;
  padding:clamp(1.45rem,2.8vw,2.5rem) var(--shell-x) 0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  text-align:center;
  pointer-events:auto;
}
.cafe-carousel-heading .eyebrow{
  margin-bottom:.42rem!important;
  color:rgba(193,246,255,.88)!important;
  text-shadow:0 .12rem .9rem rgba(0,0,0,.72);
}
.cafe-carousel-heading h2{
  color:#f7fcff!important;
  text-shadow:0 .12rem .9rem rgba(0,0,0,.78),0 0 2.2rem rgba(20,34,47,.35);
}
.cafe-carousel-intro{
  width:min(100%,52rem)!important;
  color:rgba(235,246,250,.84)!important;
  text-shadow:0 .1rem .75rem rgba(0,0,0,.82);
}
/* Cards move down just enough to give the editable copy a clear premium
   breathing zone without changing the carousel mechanics or orbit geometry. */
.cafe-carousel__item{top:10.75rem!important}
/* The background is a native core-page image field. In media-edit mode only,
   expose its pointer plane so Replace image / Media library can select it. */
.nh-fe-active.nh-media-edit-mode .cafe-carousel__scene{
  pointer-events:auto!important;
}
.nh-fe-active.nh-media-edit-mode .cafe-carousel__scene [data-nh-core-type="image"]{
  pointer-events:auto!important;
  cursor:pointer;
}
@media(max-width:76rem){
  .cafe-carousel__stage{height:39rem!important}
  .cafe-carousel__item{top:9.6rem!important}
}
@media(max-width:52rem){
  .cafe-carousel__stage{height:34rem!important;border-radius:1.8rem 1.8rem 0 0}
  .cafe-carousel__scene{border-radius:1.8rem 1.8rem 0 0!important}
  .cafe-carousel-heading{padding:1.25rem 1rem 0!important}
  .cafe-carousel-heading h2{font-size:clamp(2rem,9vw,3.15rem)!important}
  .cafe-carousel-intro{font-size:.84rem!important;line-height:1.55!important}
  .cafe-carousel__item{top:8.7rem!important}
  .cafe-carousel__scene img{object-position:54% 47%!important;filter:brightness(.59) saturate(.9) contrast(1.08)!important}
}
@media(max-width:36rem){
  .cafe-carousel__stage{height:31rem!important;border-radius:1.35rem 1.35rem 0 0}
  .cafe-carousel__scene{left:0!important;right:0!important;border-radius:1.35rem 1.35rem 0 0!important}
  .cafe-carousel-heading{padding:.95rem .9rem 0!important}
  .cafe-carousel__item{top:8.2rem!important}
  .cafe-carousel__scene img{object-position:58% 49%!important}
}


/* Neurohaven Café v203 — full-bleed photographic hero + clearer carousel spacing.
   The photographic stage now meets the viewport edges and starts immediately
   below the site header. The blue orbit remains the only lower image boundary. */
.cafe-carousel-section{
  padding-top:0!important;
  padding-inline:0!important;
}
.cafe-carousel-shell{
  width:100%!important;
  max-width:none!important;
  margin-inline:0!important;
  padding-inline:0!important;
}
.cafe-carousel{
  width:100%!important;
  margin-top:0!important;
  --cafe-card-w:clamp(9.55rem,13.8vw,13.7rem);
  --cafe-card-h:clamp(12.75rem,18.4vw,18.2rem);
}
.cafe-carousel__stage{
  border-radius:0!important;
}
.cafe-carousel__scene{
  top:0!important;
  right:0!important;
  left:0!important;
  border-radius:0!important;
}
/* Keep copy aligned to the normal content grid even though the image is full bleed. */
.cafe-carousel-heading{
  padding-top:clamp(1.7rem,3vw,2.7rem)!important;
  padding-inline:max(var(--shell-x),calc((100vw - var(--shell))/2 + var(--shell-x)))!important;
}
/* The visual cards are the primary carousel buttons. Make them slightly smaller
   and lower so the title/intro, cards and orbit each have their own clear band. */
.cafe-carousel__item{
  top:12rem!important;
}
/* Secondary control chrome, when present, should also sit below the copy rather
   than sharing its vertical band. */
.cafe-carousel__controls{
  top:4.1rem!important;
  right:max(1.1rem,var(--shell-x))!important;
  gap:.2rem!important;
  padding:.22rem!important;
}
.cafe-carousel__nav,
.cafe-carousel__sound{
  width:1.82rem!important;
  height:1.82rem!important;
}
.cafe-carousel__nav svg,
.cafe-carousel__sound svg{
  width:.82rem!important;
  height:.82rem!important;
}
.cafe-carousel__enter{
  min-height:2.25rem!important;
  padding:.4rem .72rem!important;
  font-size:.68rem!important;
}
@media(max-width:76rem){
  .cafe-carousel{
    --cafe-card-w:clamp(9.2rem,15vw,12rem);
    --cafe-card-h:clamp(12.3rem,20vw,16rem);
  }
  .cafe-carousel__item{top:10.85rem!important}
  .cafe-carousel__controls{top:3.65rem!important}
}
@media(max-width:52rem){
  .cafe-carousel{
    --cafe-card-w:9.35rem;
    --cafe-card-h:12.5rem;
  }
  .cafe-carousel__stage,
  .cafe-carousel__scene{
    border-radius:0!important;
  }
  .cafe-carousel-heading{
    padding:1.35rem 1rem 0!important;
  }
  .cafe-carousel__item{top:9.85rem!important}
  .cafe-carousel__controls{
    top:3.25rem!important;
    right:.85rem!important;
  }
}
@media(max-width:36rem){
  .cafe-carousel{
    --cafe-card-w:8.75rem;
    --cafe-card-h:11.7rem;
  }
  .cafe-carousel-heading{padding:.95rem .9rem 0!important}
  .cafe-carousel__item{top:9.1rem!important}
  .cafe-carousel__controls{top:2.95rem!important;right:.65rem!important}
}

/* Neurohaven Café v204 — single-line copy + lower, smaller carousel cards.
   v203 aligned the copy with large viewport-derived padding inside a fixed
   58rem box; on wide screens that could squeeze even the short title. v204
   makes the copy container itself follow the site shell, then keeps the title
   and desktop intro on clean single lines while preserving responsive wrapping. */
.cafe-carousel-heading{
  width:min(100%,var(--shell))!important;
  max-width:var(--shell)!important;
  padding-inline:var(--shell-x)!important;
  box-sizing:border-box!important;
}
.cafe-carousel-heading h2{
  white-space:nowrap!important;
  text-wrap:nowrap!important;
}
@media(min-width:64.01rem){
  .cafe-carousel-intro{
    width:min(100%,78rem)!important;
    max-width:none!important;
    white-space:nowrap!important;
    text-wrap:nowrap!important;
    font-size:clamp(.8rem,.88vw,.92rem)!important;
    line-height:1.42!important;
  }
}
/* Reduce the visual card-buttons another small step and give the copy a larger
   no-overlap band above them. The orbit and card mechanics are unchanged. */
.cafe-carousel{
  --cafe-card-w:clamp(9.1rem,13.05vw,12.95rem);
  --cafe-card-h:clamp(12.15rem,17.4vw,17.25rem);
}
.cafe-carousel__item{
  top:13.15rem!important;
}
.cafe-carousel__controls{
  top:5rem!important;
}
.cafe-carousel__nav,
.cafe-carousel__sound{
  width:1.72rem!important;
  height:1.72rem!important;
}
.cafe-carousel__enter{
  min-height:2.12rem!important;
  padding:.36rem .66rem!important;
  font-size:.65rem!important;
}
@media(max-width:76rem){
  .cafe-carousel{
    --cafe-card-w:clamp(8.95rem,14.2vw,11.45rem);
    --cafe-card-h:clamp(11.95rem,18.95vw,15.25rem);
  }
  .cafe-carousel__item{top:11.75rem!important}
  .cafe-carousel__controls{top:4.45rem!important}
}
@media(max-width:64rem){
  .cafe-carousel-intro{
    white-space:normal!important;
    text-wrap:pretty!important;
  }
}
@media(max-width:52rem){
  .cafe-carousel{
    --cafe-card-w:8.95rem;
    --cafe-card-h:11.95rem;
  }
  .cafe-carousel-heading{padding-inline:1rem!important}
  .cafe-carousel__item{top:10.7rem!important}
  .cafe-carousel__controls{top:3.85rem!important}
}
@media(max-width:36rem){
  .cafe-carousel{
    --cafe-card-w:8.35rem;
    --cafe-card-h:11.15rem;
  }
  .cafe-carousel-heading{padding-inline:.9rem!important}
  .cafe-carousel__item{top:9.8rem!important}
  .cafe-carousel__controls{top:3.4rem!important}
}

/* Neurohaven Café v206 — borderless full-screen destination modal.
   Café destinations (including TV Lounge) own the entire viewport while open.
   The existing header actions float over the embedded destination instead of
   consuming layout space, and the existing v130 Escape handler remains the
   authoritative keyboard close path. */
.nh-cafe-destination-modal{
  padding:0!important;
  place-items:stretch!important;
  background:#000!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.nh-cafe-destination-modal .nh-cafe-destination-modal__dialog{
  width:100vw!important;
  max-width:none!important;
  height:100dvh!important;
  max-height:none!important;
  margin:0!important;
  grid-template-rows:minmax(0,1fr)!important;
  border:0!important;
  border-radius:0!important;
  background:#000!important;
  box-shadow:none!important;
}
.nh-cafe-destination-modal .nh-app-modal__header{
  position:absolute!important;
  z-index:6!important;
  top:0!important;
  right:0!important;
  left:0!important;
  grid-template-columns:minmax(0,1fr) auto 2.5rem!important;
  gap:.65rem!important;
  padding:.55rem .65rem .95rem .9rem!important;
  border:0!important;
  background:linear-gradient(180deg,rgba(2,5,15,.84) 0%,rgba(2,5,15,.48) 58%,rgba(2,5,15,0) 100%)!important;
  pointer-events:none!important;
}
.nh-cafe-destination-modal .nh-app-modal__heading,
.nh-cafe-destination-modal .nh-app-modal__external,
.nh-cafe-destination-modal .nh-app-modal__close{
  pointer-events:auto!important;
}
.nh-cafe-destination-modal .nh-app-modal__external{
  background:rgba(3,7,18,.62)!important;
  backdrop-filter:blur(.55rem)!important;
  -webkit-backdrop-filter:blur(.55rem)!important;
}
.nh-cafe-destination-modal .nh-app-modal__close{
  width:2.5rem!important;
  height:2.5rem!important;
  background:rgba(3,7,18,.68)!important;
  backdrop-filter:blur(.55rem)!important;
  -webkit-backdrop-filter:blur(.55rem)!important;
}
.nh-cafe-destination-modal .nh-app-modal__stage{
  grid-row:1!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  background:#000!important;
}
.nh-cafe-destination-modal .nh-app-modal__stage iframe{
  width:100%!important;
  height:100%!important;
  border:0!important;
  border-radius:0!important;
  background:#000!important;
}
@media(max-width:40rem){
  .nh-cafe-destination-modal{
    padding:0!important;
  }
  .nh-cafe-destination-modal .nh-cafe-destination-modal__dialog{
    width:100vw!important;
    height:100dvh!important;
    border-radius:0!important;
  }
  .nh-cafe-destination-modal .nh-app-modal__header{
    grid-template-columns:minmax(0,1fr) auto 2.35rem!important;
    padding:.45rem .5rem .85rem .65rem!important;
  }
  .nh-cafe-destination-modal .nh-app-modal__external{
    grid-column:2!important;
    grid-row:1!important;
    justify-self:end!important;
    padding:.42rem .6rem!important;
    font-size:.68rem!important;
  }
  .nh-cafe-destination-modal .nh-app-modal__close{
    grid-column:3!important;
    grid-row:1!important;
    width:2.35rem!important;
    height:2.35rem!important;
  }
}



/* Neurohaven Café v216 — hard cinematic gate.
   The public hero remains video-only until JS explicitly marks the single-play
   sequence complete (or a genuine media timeout/error triggers fail-open).
   This attribute gate prevents unrelated class changes from exposing the
   static background/cards after a transient autoplay rejection. */
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel__scene-image{
  opacity:0!important;
}
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel__intro-video{
  opacity:1!important;
  display:block!important;
  pointer-events:auto!important;
  cursor:pointer;
}
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel-heading,
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel__items,
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel__detail,
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel__dots,
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel__hint,
.cafe-carousel[data-cafe-cinematic]:not([data-cafe-cinematic-complete="1"]) .cafe-carousel__controls{
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  transform:translateY(.8rem)!important;
}

/* Neurohaven Café v217 — single-play cinematic preloader with click-for-sound.
   The intro MP4 lives inside the exact same clipped scene as the editable
   photographic background, so both media layers terminate on the existing
   blue orbit curve. The card UI is non-interactive until the static hero and
   card artwork have been preloaded and the single video play has completed. */
.cafe-carousel__scene-image{
  position:relative;
  z-index:1;
  opacity:1;
  transition:opacity 1.05s cubic-bezier(.22,.72,.16,1);
}
.cafe-carousel__intro-video{
  position:absolute;
  z-index:2;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 45%;
  opacity:0;
  pointer-events:none;
  background:#02060c;
  filter:brightness(.72) saturate(.96) contrast(1.06);
  transform:scale(1.012);
  transition:opacity 1.05s cubic-bezier(.22,.72,.16,1);
}
.cafe-carousel-heading,
.cafe-carousel__items,
.cafe-carousel__detail,
.cafe-carousel__dots,
.cafe-carousel__hint,
.cafe-carousel__controls{
  transition:
    opacity .72s cubic-bezier(.22,.72,.16,1),
    transform .72s cubic-bezier(.22,.72,.16,1);
}
.cafe-carousel.is-cinematic-boot .cafe-carousel__scene-image{
  opacity:0!important;
}
.cafe-carousel.is-cinematic-boot .cafe-carousel__intro-video{
  opacity:1!important;
}
.cafe-carousel.is-cinematic-boot .cafe-carousel-heading,
.cafe-carousel.is-cinematic-boot .cafe-carousel__items,
.cafe-carousel.is-cinematic-boot .cafe-carousel__detail,
.cafe-carousel.is-cinematic-boot .cafe-carousel__dots,
.cafe-carousel.is-cinematic-boot .cafe-carousel__hint,
.cafe-carousel.is-cinematic-boot .cafe-carousel__controls{
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  transform:translateY(.8rem)!important;
}
.cafe-carousel.is-cinematic-transition .cafe-carousel-heading,
.cafe-carousel.is-cinematic-transition .cafe-carousel__items,
.cafe-carousel.is-cinematic-transition .cafe-carousel__detail,
.cafe-carousel.is-cinematic-transition .cafe-carousel__dots,
.cafe-carousel.is-cinematic-transition .cafe-carousel__hint,
.cafe-carousel.is-cinematic-transition .cafe-carousel__controls{
  pointer-events:none!important;
}
.cafe-carousel.is-cinematic-reveal .cafe-carousel-heading,
.cafe-carousel.is-cinematic-reveal .cafe-carousel__items,
.cafe-carousel.is-cinematic-reveal .cafe-carousel__detail,
.cafe-carousel.is-cinematic-reveal .cafe-carousel__dots,
.cafe-carousel.is-cinematic-reveal .cafe-carousel__hint,
.cafe-carousel.is-cinematic-reveal .cafe-carousel__controls{
  transition-delay:.22s;
}
.cafe-carousel.is-cinematic-live .cafe-carousel__intro-video{
  display:none!important;
}
@media(max-width:52rem){
  .cafe-carousel__intro-video{object-position:54% 47%}
}
@media(max-width:36rem){
  .cafe-carousel__intro-video{object-position:58% 49%}
}
@media(prefers-reduced-motion:reduce){
  .cafe-carousel__scene-image,
  .cafe-carousel__intro-video,
  .cafe-carousel-heading,
  .cafe-carousel__items,
  .cafe-carousel__detail,
  .cafe-carousel__dots,
  .cafe-carousel__hint,
  .cafe-carousel__controls{
    transition-duration:.01ms!important;
    transition-delay:0ms!important;
  }
}

/* Neurohaven Café v218 — approved reference cards.
   The nine public Café buttons now use the user's supplied neon-line artwork,
   normalized to the carousel's existing vertical 3:4 silhouette. Keep the
   visual treatment restrained: about 10% smaller than v217, with only a
   slightly richer depth/glow so the approved artwork remains authoritative. */
.cafe-carousel{
  --cafe-card-w:clamp(8.2rem,11.75vw,11.65rem);
  --cafe-card-h:clamp(10.95rem,15.65vw,15.53rem);
}
.cafe-carousel__item,
[data-theme="light"] .cafe-carousel__item{
  border-radius:1.5rem!important;
  box-shadow:
    0 1.05rem 2.35rem rgba(0,0,0,.34),
    0 0 0 1px rgba(106,229,250,.035)!important;
}
.cafe-carousel__item:hover,
.cafe-carousel__item.is-active,
.cafe-carousel.is-moving .cafe-carousel__item.is-active,
.cafe-carousel.is-locked .cafe-carousel__item.is-active{
  box-shadow:
    0 1.7rem 3.7rem rgba(0,0,0,.48),
    0 0 0 1px rgba(128,237,255,.08),
    0 0 1.35rem rgba(73,220,245,.19),
    0 0 3.2rem rgba(59,120,255,.09)!important;
}
.cafe-carousel__art img{
  border-radius:1.42rem!important;
  filter:
    drop-shadow(0 .85rem 1.65rem rgba(0,0,0,.36))
    saturate(1.045)
    contrast(1.025)
    brightness(1.01)!important;
}
.cafe-carousel__item.is-active .cafe-carousel__art img{
  transform:translateY(-.12rem) scale(1.016)!important;
  filter:
    drop-shadow(0 1.15rem 2.4rem rgba(0,0,0,.44))
    drop-shadow(0 0 .7rem rgba(87,229,251,.16))
    saturate(1.075)
    contrast(1.035)
    brightness(1.035)!important;
}
@media(max-width:76rem){
  .cafe-carousel{
    --cafe-card-w:clamp(8.05rem,12.8vw,10.3rem);
    --cafe-card-h:clamp(10.75rem,17.05vw,13.73rem);
  }
}
@media(max-width:52rem){
  .cafe-carousel{
    --cafe-card-w:8.05rem;
    --cafe-card-h:10.75rem;
  }
}
@media(max-width:36rem){
  .cafe-carousel{
    --cafe-card-w:7.52rem;
    --cafe-card-h:10.04rem;
  }
  .cafe-carousel__item{border-radius:1.3rem!important}
  .cafe-carousel__art img{border-radius:1.22rem!important}
}
