/**
 * Aura – the soft colour light that runs through the whole site.
 * Loaded on every page (assets/css/aura.css in the theme).
 *
 * Usage: <div class="aw-aura aw-aura--hero" aria-hidden="true"></div> as first
 * child of a section with position: relative. The colour follows --c (the
 * attraction colour of the page); --spectrum uses all four attraction colours.
 */
.aw-aura {
  --aura-a: color-mix(in srgb, var(--c) 55%, transparent);
  --aura-b: color-mix(in srgb, var(--c) 30%, transparent);
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  /* Fade out towards the section edges: no visible seams between sections */
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 12%, #000 65%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0, #000 12%, #000 65%, transparent 100%);
}
/* Heroes start right under the header: no fade at the top */
.aw-aura--hero,
.aw-aura--spectrum:not(.aw-aura--dim) {
  -webkit-mask-image: linear-gradient(180deg, #000 0, #000 60%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0, #000 60%, transparent 100%);
}
.aw-aura::before,
.aw-aura::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  will-change: transform;
}
/* Main blob */
.aw-aura::before {
  width: var(--aura-w, 60vw);
  height: var(--aura-h, 60vw);
  left: var(--aura-x, -15vw);
  top: var(--aura-y, -20vw);
  background: radial-gradient(closest-side, var(--aura-a), transparent);
}
/* Second, weaker blob */
.aw-aura::after {
  width: var(--aura-w2, 45vw);
  height: var(--aura-h2, 45vw);
  left: var(--aura-x2, 60vw);
  top: var(--aura-y2, 10vw);
  background: radial-gradient(closest-side, var(--aura-b), transparent);
}

/* Variants -------------------------------------------------------------- */
.aw-aura--hero { --aura-w: 70vw; --aura-h: 55vw; --aura-x: -20vw; --aura-y: -18vw; --aura-x2: 55vw; --aura-y2: -5vw; }
.aw-aura--right { --aura-x: 55vw; --aura-y: -10vw; --aura-x2: -15vw; --aura-y2: 20vw; }
.aw-aura--soft { --aura-a: color-mix(in srgb, var(--c) 32%, transparent); --aura-b: color-mix(in srgb, var(--c) 18%, transparent); }

/* All four attraction colours (frontpage, reviews, footer) */
.aw-aura--spectrum::before {
  width: 100vw; height: 60vw;
  left: -10vw; top: -25vw;
  background:
    radial-gradient(closest-side at 15% 50%, rgb(200 0 0 / .7), transparent),
    radial-gradient(closest-side at 42% 38%, rgb(200 24 220 / .55), transparent),
    radial-gradient(closest-side at 70% 55%, rgb(39 185 163 / .45), transparent),
    radial-gradient(closest-side at 92% 32%, rgb(71 177 209 / .5), transparent);
}
.aw-aura--spectrum::after { display: none; }

/* Dimmed spectrum for content sections */
.aw-aura--dim { opacity: .55; }
.aw-aura--dim::before { top: -10vw; }

/* Slow drift – the aura breathes, never jumps */
@media (prefers-reduced-motion: no-preference) {
  .aw-aura::before { animation: aw-aura-drift 22s ease-in-out infinite alternate; }
  .aw-aura::after { animation: aw-aura-drift 28s ease-in-out infinite alternate-reverse; }
}
@keyframes aw-aura-drift {
  0%   { transform: translate3d(0, 0, 0) scale(1); }
  50%  { transform: translate3d(4vw, 2vw, 0) scale(1.08); }
  100% { transform: translate3d(-2vw, 4vw, 0) scale(.95); }
}

/* Sections that host an aura */
.aw-hero, .aw-reviews, .aw-prices, .aw-room-hero, .aw-page-hero { position: relative; isolation: isolate; }

/* Content sits above the aura */
.aw-aura ~ * { position: relative; z-index: 1; }

/* Gradient line: the four colours blended, used under the header and above the footer */
.aw-spectrum-line {
  height: 2px;
  background: linear-gradient(90deg, var(--aw-escape), var(--aw-laser) 35%, var(--aw-golf) 68%, var(--aw-gamer));
}

/* Film grain over everything: removes gradient banding, adds texture */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 100;
  pointer-events: none;
  opacity: .05;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
