/* ===== SPOTLIGHT BEGIN (homepage hero: two Hollywood-premiere searchlights sweeping over the latest-release cover).
   v4: beam lives INSIDE the rotating head, so lens, drum and beam share one pivot/transform at every width.
   To revert: remove the spotlight.css <link> and spotlight.js <script> from index.html; gothic v3 is in /workspace/revert/spotlight-gothic-v3/. ===== */
.hero-inner{position:relative}
.spot-rig{position:absolute;inset:0;pointer-events:none;z-index:0}
.hero-inner>.hero-copy{position:relative;z-index:2}.hero-inner>.hero-cover{z-index:1}
.spot{position:absolute;width:0;height:0;left:var(--sx);top:var(--sy)}
/* static carriage: pedestal + yoke arms meeting the drum trunnions at the pivot (0,0) */
.spot-base{position:absolute;left:-26px;top:-6px;width:52px;height:34px;overflow:visible;filter:drop-shadow(0 2px 2px rgba(0,0,0,.9))}
/* rotating head: pivot = trunnion = .spot origin. Drum + beam both inside, so they can never drift apart */
.spot-head{position:absolute;left:0;top:0;width:0;height:0;transform:rotate(var(--a0))}
.spot-drum{position:absolute;left:-17px;top:-21px;width:34px;height:31px;overflow:visible;filter:drop-shadow(0 2px 2px rgba(0,0,0,.85))}
/* beam: starts exactly at the lens rim (y=-19 in head space), lens-wide at the bottom, gently widening column */
.spot-beam{position:absolute;left:calc(var(--bw) / -2);bottom:19px;width:var(--bw);height:var(--len);opacity:.85;mix-blend-mode:screen;
 background:linear-gradient(0deg,rgba(255,244,215,.42) 0%,rgba(255,240,208,.2) 14%,rgba(255,238,205,.08) 42%,rgba(255,238,205,.1) 75%,rgba(255,238,205,0) 100%);
 clip-path:polygon(0 0,100% 0,calc(50% + 13px) 100%,calc(50% - 13px) 100%);filter:blur(2.5px)}
.spot-beam::after{content:"";position:absolute;left:calc(50% - 9px);bottom:0;width:18px;height:40%;
 background:linear-gradient(0deg,rgba(255,250,232,.35),rgba(255,250,232,0));filter:blur(3px)}
@media (prefers-reduced-motion:no-preference){
 .spot.l .spot-head{animation:spotSweep 4.6s ease-in-out infinite alternate}
 .spot.r .spot-head{animation:spotSweep 5.4s ease-in-out -2s infinite alternate}}
@keyframes spotSweep{0%{transform:rotate(var(--a0))}100%{transform:rotate(var(--a1))}}
/* v6 OFF-SCREEN SOURCES: no visible lamps; light enters from just past the left/right screen edges.
   The rig is stretched to the viewport width by JS and clips overflow, so no horizontal scroll. */
.spot-rig{overflow:hidden;bottom:-70px}
.spot-base,.spot-drum{display:none}
.spot-beam{bottom:0}
.spot-flare{position:absolute;left:-40px;top:-40px;width:80px;height:80px;border-radius:50%;mix-blend-mode:screen;
 background:radial-gradient(closest-side,rgba(255,250,232,.75),rgba(255,236,196,.3) 40%,rgba(255,226,170,.08) 70%,transparent)}
/* v9 VOLUMETRIC: no clip-path strip. The beam element is masked by a conic cone from the source (feathered sides,
   brightest core) intersected with a lengthwise fade; fill is very faint + screen blend; soft haze bands and drifting dust
   motes sit inside the same mask so they only show within the light. */
.spot-beam{clip-path:none!important;filter:none!important;opacity:1;mix-blend-mode:screen;
 background:linear-gradient(0deg,rgba(255,242,212,.36) 0%,rgba(255,240,208,.24) 18%,rgba(255,238,205,.15) 50%,rgba(255,238,205,.08) 80%,transparent 100%);
 -webkit-mask-image:conic-gradient(from calc(var(--ha) * -1.5) at 50% calc(100% + 150px),transparent 0deg,rgba(0,0,0,.25) calc(var(--ha) * .55),rgba(0,0,0,.8) calc(var(--ha) * 1.1),#000 calc(var(--ha) * 1.5),rgba(0,0,0,.8) calc(var(--ha) * 1.9),rgba(0,0,0,.25) calc(var(--ha) * 2.45),transparent calc(var(--ha) * 3),transparent 360deg),
  linear-gradient(0deg,#000 0%,#000 78%,transparent 100%);
 -webkit-mask-composite:source-in;
 mask-image:conic-gradient(from calc(var(--ha) * -1.5) at 50% calc(100% + 150px),transparent 0deg,rgba(0,0,0,.25) calc(var(--ha) * .55),rgba(0,0,0,.8) calc(var(--ha) * 1.1),#000 calc(var(--ha) * 1.5),rgba(0,0,0,.8) calc(var(--ha) * 1.9),rgba(0,0,0,.25) calc(var(--ha) * 2.45),transparent calc(var(--ha) * 3),transparent 360deg),
  linear-gradient(0deg,#000 0%,#000 78%,transparent 100%);
 mask-composite:intersect}
.spot-beam::after{display:none}
.spot-haze{position:absolute;left:0;right:0;top:-120px;bottom:0;display:block;opacity:.5;
 background:radial-gradient(40% 9% at 30% 20%,rgba(255,240,215,.10),transparent 70%),radial-gradient(35% 7% at 70% 45%,rgba(255,240,215,.08),transparent 70%),
  radial-gradient(45% 8% at 45% 70%,rgba(255,240,215,.09),transparent 70%),radial-gradient(30% 6% at 60% 88%,rgba(255,240,215,.08),transparent 70%)}
.spot-dust{position:absolute;left:0;right:0;top:-260px;bottom:0;display:block;
 background-image:radial-gradient(circle,rgba(255,248,228,.8) 0 .7px,transparent 1.2px),radial-gradient(circle,rgba(255,244,220,.6) 0 .5px,transparent 1px),radial-gradient(circle,rgba(255,250,235,.9) 0 .9px,transparent 1.5px);
 background-size:37px 53px,23px 31px,71px 89px;background-position:0 0,11px 17px,29px 41px;opacity:.5}
.spot-dust.d2{background-size:29px 43px,47px 61px,83px 97px;background-position:13px 5px,3px 27px,51px 13px;opacity:.35}
@media (prefers-reduced-motion:no-preference){
 .spot-dust{animation:dustDrift 26s linear infinite}
 .spot-dust.d2{animation:dustDrift2 38s linear infinite}
 .spot-haze{animation:hazeDrift 18s ease-in-out infinite alternate}
 .spot-paused .spot-dust,.spot-paused .spot-haze,.spot-paused .spot-head{animation-play-state:paused}}
@media (prefers-reduced-motion:reduce){.spot-dust{display:none}}
@keyframes dustDrift{0%{transform:translate3d(0,0,0)}50%{transform:translate3d(6px,130px,0)}100%{transform:translate3d(0,260px,0)}}
@keyframes dustDrift2{0%{transform:translate3d(0,0,0)}50%{transform:translate3d(-7px,130px,0)}100%{transform:translate3d(0,260px,0)}}
@keyframes hazeDrift{to{transform:translate3d(0,120px,0)}}
.spot-flare{opacity:.8;left:-75px;top:-75px;width:150px;height:150px}
/* light on the art: dimmer overall, brighter pools where the beams land */
#heroCover{position:relative}
.spot-art{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}
.spot-dim{position:absolute;inset:0;background:rgba(0,0,0,.28)}
.spot-pool{position:absolute;left:50%;top:50%;width:70%;aspect-ratio:1;margin:-35% 0 0 -35%;border-radius:50%;mix-blend-mode:screen;
 background:radial-gradient(closest-side,rgba(255,240,210,.55),rgba(255,232,195,.22) 55%,transparent);transform:translate(var(--p0),var(--py,0))}
.spot-pool.l{--p0:-38%;--py:-8%}.spot-pool.r{--p0:38%;--py:12%}
@keyframes spotPL{0%{transform:translate(-38%,-8%)}100%{transform:translate(32%,6%)}}
@keyframes spotPR{0%{transform:translate(38%,12%)}100%{transform:translate(-32%,-6%)}}
@media (prefers-reduced-motion:no-preference){.spot-pool.l{animation:spotPL 4.6s ease-in-out infinite alternate}.spot-pool.r{animation:spotPR 5.4s ease-in-out -2s infinite alternate}}
/* v12: beam light ON the art. The page beams pass under the cover (cover z-index 1), so the art only showed the old
   fixed pools, which weren't tied to the beams. Each beam now has an exact mirror inside the cover overlay (same pivot,
   vars and animation, clipped to the cover), screen-blended so the art brightens wherever its beam actually lands. */
.spot-pool{display:none}
.spot-art-rig{position:absolute;inset:0}
.spot-art-rig .spot-beam{mix-blend-mode:screen;background:rgba(255,240,212,.2);
 -webkit-mask-image:conic-gradient(from calc(var(--ha) * -1.5) at 50% calc(100% + 150px),transparent 0deg,rgba(0,0,0,.25) calc(var(--ha) * .55),rgba(0,0,0,.8) calc(var(--ha) * 1.1),#000 calc(var(--ha) * 1.5),rgba(0,0,0,.8) calc(var(--ha) * 1.9),rgba(0,0,0,.25) calc(var(--ha) * 2.45),transparent calc(var(--ha) * 3),transparent 360deg);
 mask-image:conic-gradient(from calc(var(--ha) * -1.5) at 50% calc(100% + 150px),transparent 0deg,rgba(0,0,0,.25) calc(var(--ha) * .55),rgba(0,0,0,.8) calc(var(--ha) * 1.1),#000 calc(var(--ha) * 1.5),rgba(0,0,0,.8) calc(var(--ha) * 1.9),rgba(0,0,0,.25) calc(var(--ha) * 2.45),transparent calc(var(--ha) * 3),transparent 360deg)}
.spot-art-rig .spot-dust,.spot-art-rig .spot-haze{display:none}
/* v14 corner fix: the cover copies were clipped by their own rotated box (bw wide) while the cone kept widening, so the
   box edge cut a hard diagonal and left the corners un-lit (and still under the dim layer) = dark wedges. Copies are now
   4x wider than the cone ever gets, the dim layer is gone (art is never darkened), and the copy lift is gentler. */
.spot-art-rig .spot-beam{left:calc(var(--bw) * -2);width:calc(var(--bw) * 4);background:rgba(255,240,212,.15)}
.spot-dim{display:none}
/* v15 WebKit-safe light on the art: the cover copies no longer use a big rotated masked + blended layer (WebKit/iOS
   dropped the calc()-based conic mask and showed the box's hard edge, leaving dark unlit corners). Each copy is now a
   soft elliptical glow riding the beam axis (same pivot + animation), plain translucent warm light, no blend mode,
   no mask, no dark stops, and it fades to transparent well inside its own box, so nothing can ever darken the cover. */
.spot-art-rig .spot-glow{position:absolute;display:block;left:calc(var(--cw) * -.6);width:calc(var(--cw) * 1.2);
 bottom:calc(var(--dist) - var(--cw) * 1.0);height:calc(var(--cw) * 2.0);pointer-events:none;
 background:radial-gradient(closest-side,rgba(255,243,218,.24),rgba(255,240,210,.13) 45%,rgba(255,240,210,.04) 75%,rgba(255,240,210,0) 100%)}
/* ===== STATIC BEAMS BEGIN (v16): beams no longer sweep. Each head is fixed at its centre aim (--lamp = angle from its edge
   source to the cover centre), so the two beams crisscross over the art; the cover glow copy uses the same vars, so it
   always lines up with its beam. Haze/dust stay but don't move; only a barely-there haze shimmer. To restore the sweep,
   delete this block. ===== */
.spot .spot-head,.spot.l .spot-head,.spot.r .spot-head{animation:none!important;transform:rotate(var(--lamp,0deg))!important}
.spot-dust,.spot-dust.d2{animation:none!important;transform:none}
.spot-pool{display:none!important}
@media (prefers-reduced-motion:no-preference){
 .spot-haze{animation:hazeShimmer 8s ease-in-out infinite alternate!important;transform:none}
 .spot.r .spot-haze{animation-delay:-3s!important}}
@keyframes hazeShimmer{from{opacity:.42}to{opacity:.58}}
/* v17: cover light = faint, crisp touch only. Page beams (outside the art) untouched. The oval wash that hazed the whole
   art is replaced by a narrow, low-alpha streak along each beam axis, so the art stays sharp. */
.spot-art-rig .spot-glow{left:calc(var(--cw) * -.09);width:calc(var(--cw) * .18);
 bottom:calc(var(--dist) - var(--cw) * .75);height:calc(var(--cw) * 1.5);
 background:linear-gradient(90deg,rgba(255,244,222,0) 0%,rgba(255,244,222,.07) 35%,rgba(255,246,228,.11) 50%,rgba(255,244,222,.07) 65%,rgba(255,244,222,0) 100%);
 -webkit-mask-image:linear-gradient(0deg,transparent 0,#000 30%,#000 70%,transparent 100%);mask-image:linear-gradient(0deg,transparent 0,#000 30%,#000 70%,transparent 100%)}
/* ===== STATIC BEAMS END ===== */
/* ===== SPOTLIGHT END ===== */
