/* Visual refinement: spacing, editorial photography and console hierarchy. */
:root{--surface:#111923;--surface-2:#17212c;--text-3:#a1adb8}
.section{padding-block:clamp(72px,7.5vw,112px)}
.section-heading,.gallery-heading{margin-top:32px;margin-bottom:48px;gap:48px}
h2{font-size:clamp(38px,4.1vw,64px);line-height:1.06;letter-spacing:-.7px}
h3{line-height:1.12}
.eyebrow,.eyebrow.on-light{color:#b4c4cd;letter-spacing:1.2px;font-weight:500}
.eyebrow i{width:5px;height:5px;box-shadow:none}
.small{letter-spacing:.8px}
.light,.about,.services-section,.contact{background:#0d151e}
.projects-section,.gallery-section{background:#0a0e14}
.events-section{background:#0f1822}
.section-heading h2 span,.gallery-heading h2 span{color:#d1dce3}
.hero-inner{padding-top:64px;padding-bottom:32px}
.hero-top{margin-bottom:30px}
.hero-bottom{gap:28px}
.hero-bottom p{font-size:18px;line-height:1.75}
.hero-foot{margin-top:38px}
.hero-shade{background:linear-gradient(90deg,#070d16e6,#070d1680 50%,#070d1610),linear-gradient(0deg,#070d16b3,transparent 55%)}
.experience-strip{background:#0f1822}
.experience-strip .wrap{padding-block:24px}
.button{border-radius:8px}
.button.ghost{border-color:#ffffff30}
.nav-cta{background:#e8eef2}
.nav-cta:hover{box-shadow:0 8px 24px #0003}
.cards,.event-grid,.video-grid{gap:26px}
.pro-card,.event-card,.video-card{border-radius:12px;box-shadow:none}
.pro-card .ph{aspect-ratio:4/3}
.pro-card .pb{padding:28px}
.pro-card .tag,.event-label,.video-tag{color:#a6b8c5;letter-spacing:1px;font-weight:500}
.pro-card .pb h3{font-size:32px;margin-block:12px}
.pro-card:hover,.event-card:hover{border-color:#70889780}
.video-body{padding:24px}
.split{gap:64px}
.split img.round{height:540px;border-radius:12px;box-shadow:none}
/* A leading portrait with two landscape details, followed by two panoramas. */
.home-page .gallery{grid-template-columns:repeat(12,minmax(0,1fr));gap:20px;grid-auto-rows:260px}
.home-page .gallery-item{grid-column:span 5;aspect-ratio:auto;border-radius:10px}
.home-page .gallery-item.wide{grid-column:span 7;grid-row:span 2}
.home-page .gallery-item:nth-child(n+4){grid-column:span 6;grid-row:span 1}
.gallery-item>span{bottom:22px;left:22px;right:22px}
.gallery-item b{font-size:14px;line-height:1.5;font-weight:500}
.gallery-item i{width:36px;height:36px;background:#0b11194d;border-color:#ffffff50;flex-shrink:0}
.gallery-item:after{background:linear-gradient(180deg,transparent 55%,#050a12bf)}
.cta-band{background:#12202c;border-color:#31424e;border-radius:16px;padding:48px;margin-block:32px 88px}
.cta-band h2{max-width:650px}
footer{background:#080c12}
/* Console styling changes only: the stage's drawing and geometry stay independent. */
.stage-interactive{border-color:#354552;box-shadow:0 20px 60px #0004}
.stage-console{background:#101b26;border-left-color:#354552;scrollbar-color:#50616f #101b26}
.stage-console-heading p{font-size:14px;color:#aebec9}
.stage-console .mini-label{font-size:11px;letter-spacing:.7px;color:#aebec9;font-weight:500}
.stage-switches button{border-radius:8px;background:#0c141e;border-color:#354552}
.stage-control-icon{font-size:19px;width:30px;height:30px;display:grid;place-items:center;border-radius:6px;background:#ffffff06}
.stage-switches button[aria-pressed="true"]{background:#17323d;border-color:#56bfd0;box-shadow:inset 0 -2px 0 #56bfd0}
.stage-presets button,.stage-tracks button{border-radius:7px;border-color:#415361}
.stage-presets button[aria-pressed="true"],.stage-tracks button[aria-pressed="true"]{background:#d9e7ed;color:#10212a;border-color:#d9e7ed}
.stage-name input,.light-effect-select{border-color:#415361;border-radius:7px;background:#0b141d;color:#eef3f6}
.stage-show-actions #stage-show{background:var(--cyan);border-radius:8px;min-height:52px;box-shadow:0 6px 18px #0003}
.stage-show-actions .stage-fullscreen{border-color:#415361;border-radius:7px;background:transparent}
.stage-show-actions #stage-finale{color:#c3d3de;border-color:#415361}
.stage-status{color:#aebec9}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #75d8e8;outline-offset:4px}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
  .pro-card .ph img,.event-card img,.gallery-item img{transition:transform .55s ease}
  .pro-card:hover .ph img,.event-card:hover img,.gallery-item:hover img{transform:scale(1.025)}
  .card-link:hover i,.gallery-item:hover i{background:#e8eef2;color:#101820;border-color:#e8eef2}
}
@media(min-width:761px){.hero{min-height:600px}.hero-title{font-size:clamp(70px,7.2vw,110px)}}
@media(max-width:1000px) and (min-width:761px){.home-page .gallery{grid-auto-rows:210px}.section-heading{gap:30px}.section-heading p{max-width:340px}}
@media(max-width:760px){
  .section{padding:64px 20px}
  .section-heading,.gallery-heading{margin:24px 0 32px;gap:20px}
  h2{font-size:42px}
  .hero-inner{padding-top:40px;padding-bottom:24px}
  .hero-top{margin-bottom:22px}
  .hero-bottom p{font-size:16px}
  .hero-foot{margin-top:26px}
  .cards,.event-grid,.video-grid{gap:16px}
  .pro-card .pb,.video-body{padding:22px}
  .split{gap:32px}
  .split img.round{height:360px}
  .home-page .gallery{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;gap:12px}
  .home-page .gallery-item,.home-page .gallery-item:nth-child(n+4){grid-column:span 1;grid-row:auto;aspect-ratio:3/4}
  .home-page .gallery-item.wide{grid-column:1/-1;grid-row:auto;aspect-ratio:4/3}
  .gallery-item>span{left:14px;right:14px;bottom:14px;gap:8px}
  .gallery-item b{font-size:12px}
  .gallery-item i{width:28px;height:28px;font-size:16px}
  .cta-band{padding:28px 24px;margin-bottom:64px}
}
@media(prefers-reduced-motion:reduce){.gallery-item img,.pro-card .ph img,.event-card img{transition:none;transform:none!important}}
/* Choices share one aligned row; their labels occupy the full row above. */
.stage-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.stage-tracks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.stage-presets>.mini-label,.stage-tracks>.mini-label{grid-column:1/-1}
.stage-presets button,.stage-tracks button{min-width:0;padding:10px 4px;margin:0;font-size:11px;text-align:center}
/* Balanced editorial palette: warm paper for information, navy for live media. */
:root{--paper:#f7f6f2;--paper-2:#efeee8;--cyan-dark:#076577;--muted-dark:#4c5962}
body{background:var(--paper);color:#172632}
p{color:#4c5962}
header{background:#fffffff2;border-bottom:1px solid #dce1e3;backdrop-filter:blur(16px)}
nav a.nav-link{color:#35434e}
nav a.nav-link:hover{background:#edf2f3;color:#152632}
nav a.nav-link.active{color:#076577;background:#e6f1f3}
.nav-cta{background:#102e3b;color:#fff!important}
.nav-cta span{background:#52c7d8;color:#102632}
#lang-btn{background:#f0f3f4;border-color:#d5dfe2;color:#253541}
#menu-toggle{color:#253541;border-color:#c8d4da;background:transparent}
.light,.about,.services-section,.contact{background:var(--paper);color:#172632}
.section:not(.light):not(.stage-section):not(.events-section):not(.gallery-section):not(.video-section){background:#efeee8;color:#172632}
.light p,.about-copy>p,.about-copy .about-lead,.about-lead-home,.about-copy-home,.contact-main>div:first-child>p,.contact-note{color:#45535e}
.about-copy .about-lead,.about-lead-home{color:#253541}
.light .section-heading p,.light .small,.light .feature p,.contact .feature p,.feature p{color:#4c5962}
.light .section-heading h2 span,.light h2 em,.about h2 em,.contact h2 span{color:#076577;font-style:normal}
.light .eyebrow,.eyebrow.on-light,.contact .eyebrow{color:#076577}
.light .pro-card,.light .feature,.contact .feature,.feature{background:#fff;border-color:#d8dfe2;color:#172632;box-shadow:0 8px 30px #1e334805}
.light .pro-card .pb p{color:#4c5962}
.light .pro-card .tag{color:#076577}
.light .card-link{color:#17303d}
.light .card-link i{background:#eef3f4;border-color:#d5dfe2;color:#17303d}
.checks li{background:#fff;color:#354754;border-color:#d8dfe2;border-radius:9px}
.checks b{background:#e6f1f3;color:#076577}
.about-signature{border-color:#ced7dc}
.about-signature>div{color:#4c5962}
.about-layout{margin-top:0;gap:64px;align-items:start}
.about-copy h2{font-size:clamp(38px,3.7vw,58px);line-height:1.08}
.about-photo{height:600px;border-radius:12px;box-shadow:none}
.about-photo-caption,.about-photo-caption b,.about-photo-caption span{color:#fff}
.feature .ico,.light .feature .ico,.contact .feature .ico{background:#e6f1f3;color:#076577;border-color:#bdd8df}
.service-list{border-top-color:#ccd7dc}
.service{border-bottom-color:#ccd7dc}
.service-toggle{color:#172632}
.service.active{background:#fff}
.service.active .service-toggle,.service-detail a{color:#076577}
.service-detail p{color:#4c5962}
.number{border-color:#bdcbd1;color:#4c5962}
.service-icon{border-color:#bdcbd1}
.contact-panel{background:#fff;color:#172632;border-color:#d0dce1;box-shadow:0 16px 44px #1e334808}
.contact-panel p,.contact-panel .mini-label,.contact-note a{color:#45535e}
.contact-row{background:#fff;border-color:#d0dce1;color:#172632}
.event-options button{background:#fff;border-color:#b6c6ce;color:#253541}
.event-options .selected{background:#102e3b;border-color:#102e3b;color:#fff}
.quote-fields label,.quote-services legend{color:#253541}
.quote-fields input,.quote-services label{background:#f8fafb;border-color:#bacbd2;color:#172632;color-scheme:light}
.quote-fields input::placeholder{color:#627681;opacity:1}
.quote-services label:has(input:checked){background:#e6f1f3;border-color:#076577}
.quote-services input{accent-color:#076577}
.message-preview,textarea.message-preview,textarea.message-preview:focus-visible{background:#f3f6f7;border-color:#c6d4da;color:#253541}
.message-tools,.location,.location>span,.location address{color:#45535e}
.message-tools button,.copy-button,#copy-status{color:#076577}
.location{border-color:#ced7dc}
.contact .button.dark,.light .button{background:#102e3b;color:#fff}
/* Dark media panels retain bright text and are framed by the paper sections. */
.hero,.page-hero,.stage-section,.events-section,.gallery-section,.video-section,.experience-strip,.cta-band,footer{color:#edf2f5}
.stage-section{background:#0b1722}
.projects-section,.video-section{background:#10202d}
.gallery-section{background:#10202d}
.events-section{background:#142634}
.hero p,.page-hero p.lead,.stage-section p,.events-section p,.video-section p,.gallery-section p,.cta-band p,footer p{color:#c4d0d9}
.hero .button.ghost,.cta-band .button.ghost{color:#fff}
.stage-section .section-heading h2 span,.events-section .section-heading h2 span,.gallery-heading h2 span{color:#bcd5df}
.cta-band{background:#102e3b;border-color:#102e3b;margin-block:64px 80px}
.cta-band h2 span{color:#71d7e5}
.section .feature-grid{gap:24px}
/* Prevent oversized italic headlines and preserve sensible mobile layouts. */
@media(max-width:760px){
  header{background:#fffffff5}
  nav{background:#fff;color:#253541;border-color:#dce1e3}
  nav a.nav-link{color:#253541}
  .about-layout{gap:32px}
  .about-photo{height:430px}
  .section .feature-grid{grid-template-columns:1fr!important}
  .cta-band{margin-block:40px 56px}
}
.section:not(.stage-section):not(.events-section):not(.gallery-section):not(.video-section) .eyebrow{color:#076577}
.section:not(.stage-section):not(.events-section):not(.gallery-section):not(.video-section) .small{color:#4c5962}
.about-copy strong{color:#172632;font-weight:600}
.service-photo{box-shadow:none;border:1px solid #d4dcdf;border-radius:12px}
.light h2 span{color:#076577!important}
/* Three round LED wash heads, interleaved between the four existing fixtures. */
.mh-ledwash{width:36px;height:19px;flex-shrink:0}
.mh-ledwash::before{display:none}
.mh-ledwash img{position:absolute;width:36px;height:41px;max-width:none;left:0;bottom:-1px;filter:saturate(.1) brightness(.45);transition:filter .5s}
.lights-on .mh-ledwash img{filter:saturate(1) brightness(1.15) drop-shadow(0 0 3px #457cff80)}
.mh-ledwash::after{width:110px;height:230px;transform:translateX(-50%) rotate(0deg);background:linear-gradient(180deg,#668cff70,#5075ff10 70%,transparent);clip-path:polygon(43% 0,57% 0,100% 100%,0 100%);mask-image:linear-gradient(90deg,transparent,#000 40% 60%,transparent)}
.motion-ok .lights-on .mh-ledwash::after{animation:mh-pan 6s ease-in-out infinite alternate}
.motion-ok .lights-on .mh-ledwash:nth-child(4)::after{animation-delay:-2s;animation-direction:alternate-reverse}
.motion-ok .lights-on .mh-ledwash:nth-child(6)::after{animation-delay:-4s}
.stage-preview[data-preset="boda"] .mh-ledwash::after{background:linear-gradient(180deg,#ffdea370,#ffd89910 70%,transparent)}
.stage-preview[data-preset="corporativo"] .mh-ledwash::after{background:linear-gradient(180deg,#c8eaff70,#bddaff10 70%,transparent)}
/* Two matching heads at the marked outer ends; keep the inner row in place. */
.stage-movers .wash-edge{position:absolute;top:0}
.stage-movers .wash-edge-left{left:-38px}
.stage-movers .wash-edge-right{right:-38px}
.motion-ok .lights-on .wash-edge-left::after{animation-delay:-1s}
.motion-ok .lights-on .wash-edge-right::after{animation-delay:-3s;animation-direction:alternate-reverse}
/* LED wash colours run continuously while the lights are on. */
.mh-ledwash{--wash-phase:0s}
.mh-ledwash:nth-child(4){--wash-phase:-2s}
.mh-ledwash:nth-child(6){--wash-phase:-4s}
.mh-ledwash.wash-edge-left{--wash-phase:-6s}
.mh-ledwash.wash-edge-right{--wash-phase:-8s}
@keyframes wash-lens-colours{
  from{filter:hue-rotate(0deg) saturate(1.65) brightness(1.35) drop-shadow(0 0 4px #668cff90)}
  to{filter:hue-rotate(360deg) saturate(1.65) brightness(1.35) drop-shadow(0 0 4px #668cff90)}
}
@keyframes wash-beam-colours{from{filter:hue-rotate(0deg)}to{filter:hue-rotate(360deg)}}
.motion-ok .lights-on .mh-ledwash img{animation:wash-lens-colours 10s linear var(--wash-phase) infinite}
.motion-ok .lights-on .stage-movers .mh-ledwash::after{animation:mh-pan 6s ease-in-out var(--wash-phase) infinite alternate,wash-beam-colours 10s linear var(--wash-phase) infinite;opacity:.45}
@media(prefers-reduced-motion:reduce){.mh-ledwash img,.mh-ledwash::after{animation:none!important}}
/* Pan and tilt: heads pivot above their bases, beams sweep and change reach. */
.mh-ledwash img{transform-origin:50% 85%}
@keyframes wash-beam-scan{
  0%,100%{transform:translateX(-50%) rotate(-26deg) scaleY(.7)}
  20%{transform:translateX(-50%) rotate(24deg) scaleY(1.35)}
  40%{transform:translateX(-50%) rotate(6deg) scaleY(.48)}
  60%{transform:translateX(-50%) rotate(-20deg) scaleY(1.2)}
  80%{transform:translateX(-50%) rotate(30deg) scaleY(.82)}
}
.motion-ok .lights-on .mh-ledwash img{animation:wash-lens-colours 10s linear var(--wash-phase) infinite}
.motion-ok .lights-on .stage-movers .mh-ledwash::after{animation:wash-beam-scan 8s ease-in-out var(--wash-phase) infinite,wash-beam-colours 10s linear var(--wash-phase) infinite}
.editing-lights .stage-fixtures i,.editing-lights .stage-movers b,.editing-lights .stage-strobes b,.editing-lights .stage-strobes-side b{pointer-events:auto;cursor:move;touch-action:none;outline:1px dashed #75d8e8;outline-offset:4px}
.editing-lights .position-selected{outline:2px solid #ffdc72!important;outline-offset:5px}
.editing-lights .gear-peek{display:none!important}
.light-position-panel{position:fixed;z-index:999;bottom:16px;left:16px;width:min(380px,calc(100vw - 32px));padding:16px;background:#fff;color:#172632;border:1px solid #bacbd2;border-radius:12px;box-shadow:0 8px 32px #0004;font:13px/1.5 Inter,sans-serif;display:grid;gap:8px}
.light-position-panel strong{font-size:16px}
.light-position-panel output{font-variant-numeric:tabular-nums;color:#076577}
.light-position-panel>div{display:flex;gap:8px}
.light-position-panel button{padding:9px 12px;border:1px solid #b6c6ce;border-radius:6px;background:#edf3f5;color:#172632;cursor:pointer}
.light-position-panel button[data-action="save"]{background:#102e3b;color:#fff}
.light-position-panel small{color:#4c5962}
/* Full-width alternating row: nine round wash heads and eight rectangular lights. */
.stage-movers{left:12%;right:12%;align-items:flex-end}
.stage-movers .mh{width:2.7cqw;height:2.3cqw;flex-shrink:0}
.stage-movers .mh::before{width:2.5cqw;height:1.5cqw}
.stage-movers .mh-ledwash{width:4.4cqw}
.stage-movers .mh-ledwash img{width:4.4cqw;height:5cqw;bottom:-.12cqw}
.stage-movers .mh-ledwash::after{width:13.4cqw;height:28cqw}
.stage-movers .mh-ledwash:nth-child(4n+1){--wash-phase:0s}
.stage-movers .mh-ledwash:nth-child(4n+3){--wash-phase:-3s}
.stage-movers .mh-ledwash:nth-child(3n+1){--wash-phase:-6s}
.stage-movers .mh-ledwash:nth-child(5n+1){--wash-phase:-8s}
/* Give the two lighting rows separate vertical space. */
.stage-fixtures{top:15%}
.stage-movers{top:25.5%}
/* Matching beam fixtures at both ends of the upper row. */
.stage-fixtures .fixture-edge{position:absolute;top:0}
.stage-fixtures .fixture-edge-left{left:-29%;--pan:-12deg;--delay:-2s;--timing:9s}
.stage-fixtures .fixture-edge-right{right:-29%;--pan:12deg;--delay:-6s;--timing:9s}
/* Moving heads: base and yoke stay put; the round LED head turns on its pivot in step with
   its beam (same 8s timeline as wash-beam-scan), foreshortening as it aims away. */
.mh-ledwash .wash-head{transform-origin:50% 35.3%}
.lights-on .mh-ledwash .wash-yoke{filter:brightness(.9)}
@keyframes wash-head-aim{
  0%,100%{transform:translateX(5%) scale(.84,.9)}
  20%{transform:translateX(-5%) scale(.86,.74)}
  40%{transform:translateX(-1%) scale(.98,1)}
  60%{transform:translateX(4%) scale(.88,.78)}
  80%{transform:translateX(-6%) scale(.82,.88)}
}
.motion-ok .lights-on .mh-ledwash .wash-yoke{animation:none}
.motion-ok .lights-on .mh-ledwash .wash-head{animation:wash-lens-colours 10s linear var(--wash-phase) infinite,wash-head-aim 8s ease-in-out var(--wash-phase) infinite}
@media(prefers-reduced-motion:reduce){.mh-ledwash .wash-head{animation:none!important}}
/* The lower light row stands on its own truss bar, tower to tower; the LED screens start just
   below it instead of behind the fixtures. */
.stage-preview .stage-led{top:30.6%}
.stage-preview .stage-led-wing{top:30.6%}
.stage-movers::after{content:'';position:absolute;z-index:-1;left:-1.4%;right:-1.4%;top:100%;height:1.9cqh;
  background:linear-gradient(#93a7b6,#93a7b6) top/100% 1.5px no-repeat,linear-gradient(#6f8494,#6f8494) bottom/100% 1.5px no-repeat,
  repeating-linear-gradient(60deg,transparent 0 5px,#5e7383 5px 6.4px,transparent 6.4px 10px),repeating-linear-gradient(-60deg,transparent 0 5px,#4e6170 5px 6.4px,transparent 6.4px 10px),#111a23;
  box-shadow:0 3px 6px #0008}
.lights-on .stage-movers::after{filter:brightness(1.25)}
.stage-preview[data-mode="day"] .stage-movers::after{filter:brightness(1.7) saturate(.6)}
/* Deck-edge LED bar: the front nosing and the line under it run through colours together.
   The colour lives on the deck SVG (--led-c), so the beat pulses on the bar keep working. */
@property --led-c{syntax:'<color>';inherits:true;initial-value:#19c2dc}
@keyframes led-bar-concert{0%,100%{--led-c:#19c2dc}20%{--led-c:#8b5cff}40%{--led-c:#ff2fa0}60%{--led-c:#ff8a1f}80%{--led-c:#2fe07a}}
@keyframes led-bar-boda{0%,100%{--led-c:#ffc46b}33%{--led-c:#ff8f6b}66%{--led-c:#ffe2a8}}
@keyframes led-bar-corporativo{0%,100%{--led-c:#7db8ff}50%{--led-c:#e6f2ff}}
.stage-deck-svg .deck-nosing{fill:var(--led-c);opacity:.35;transition:opacity .6s}
.stage-deck-svg .deck-led{stroke:var(--led-c);stroke-width:3;opacity:.3;transition:opacity .6s}
.lights-on .stage-deck-svg .deck-nosing,.sound-on .stage-deck-svg .deck-nosing{fill:var(--led-c);opacity:1;filter:drop-shadow(0 0 4px var(--led-c)) drop-shadow(0 0 12px var(--led-c))}
.lights-on .stage-deck-svg .deck-led,.sound-on .stage-deck-svg .deck-led{stroke:var(--led-c);opacity:.85;filter:drop-shadow(0 0 4px var(--led-c))}
.motion-ok .stage-deck-svg{animation:led-bar-concert 9s linear infinite}
.motion-ok .stage-preview[data-preset="boda"] .stage-deck-svg{animation-name:led-bar-boda}
.motion-ok .stage-preview[data-preset="corporativo"] .stage-deck-svg{animation-name:led-bar-corporativo}
.motion-ok .show-running .stage-deck-svg{animation-duration:4.5s}
@media(prefers-reduced-motion:reduce){.stage-deck-svg{animation:none!important}}
.stage-preview .stage-sub{top:77.2%;bottom:7.6%}
/* Upper moving heads: one slow circle instead of jumps. The head swings left-right while its
   beam lengthens and shortens a quarter turn later, so the beam tip traces an ellipse.
   Replaces the per-bar jumps of beat sync; the finale fan-out (!important) still wins. */
@property --reach{syntax:'<number>';inherits:true;initial-value:1}
@keyframes head-circle{
  0%,100%{transform:rotate(0deg);--reach:1.15}
  12.5%{transform:rotate(15.5deg);--reach:1.09}
  25%{transform:rotate(22deg);--reach:.95}
  37.5%{transform:rotate(15.5deg);--reach:.81}
  50%{transform:rotate(0deg);--reach:.75}
  62.5%{transform:rotate(-15.5deg);--reach:.81}
  75%{transform:rotate(-22deg);--reach:.95}
  87.5%{transform:rotate(-15.5deg);--reach:1.09}
}
.stage-fixtures i s{scale:1 var(--reach)}
.motion-ok .lights-on .stage-fixtures i,.motion-ok .lights-on .stage-fixtures i:nth-child(even),.motion-ok .lights-on[data-light-effect] .stage-fixtures i{animation:head-circle 16s linear var(--delay,0s) infinite!important;transition:none!important}
.motion-ok .lights-on[data-light-effect="color"] .stage-fixtures i{animation:head-circle 16s linear var(--delay,0s) infinite,optical-color 12s linear infinite!important}
@media(prefers-reduced-motion:reduce){.stage-fixtures i{animation:none!important}}

/* LED wash heads, take two: a real pan/tilt turn in perspective (no scaling, so they no longer
   seem to come closer and move away). Head and beam follow the same slow circle. */
@keyframes wash-head-circle{
  0.0%{transform:perspective(160px) rotateY(0.0deg) rotateX(16.0deg)}
  12.5%{transform:perspective(160px) rotateY(19.8deg) rotateX(11.3deg)}
  25.0%{transform:perspective(160px) rotateY(28.0deg) rotateX(0.0deg)}
  37.5%{transform:perspective(160px) rotateY(19.8deg) rotateX(-11.3deg)}
  50.0%{transform:perspective(160px) rotateY(0.0deg) rotateX(-16.0deg)}
  62.5%{transform:perspective(160px) rotateY(-19.8deg) rotateX(-11.3deg)}
  75.0%{transform:perspective(160px) rotateY(-28.0deg) rotateX(-0.0deg)}
  87.5%{transform:perspective(160px) rotateY(-19.8deg) rotateX(11.3deg)}
  100.0%{transform:perspective(160px) rotateY(-0.0deg) rotateX(16.0deg)}
}
@keyframes wash-beam-circle{
  0.0%{transform:translateX(-50%) rotate(0.0deg) scaleY(0.72)}
  12.5%{transform:translateX(-50%) rotate(17.0deg) scaleY(0.80)}
  25.0%{transform:translateX(-50%) rotate(24.0deg) scaleY(1.00)}
  37.5%{transform:translateX(-50%) rotate(17.0deg) scaleY(1.20)}
  50.0%{transform:translateX(-50%) rotate(0.0deg) scaleY(1.28)}
  62.5%{transform:translateX(-50%) rotate(-17.0deg) scaleY(1.20)}
  75.0%{transform:translateX(-50%) rotate(-24.0deg) scaleY(1.00)}
  87.5%{transform:translateX(-50%) rotate(-17.0deg) scaleY(0.80)}
  100.0%{transform:translateX(-50%) rotate(-0.0deg) scaleY(0.72)}
}
.motion-ok .lights-on .mh-ledwash .wash-head{animation:wash-lens-colours 10s linear var(--wash-phase) infinite,wash-head-circle 12s linear var(--wash-phase) infinite}
.motion-ok .lights-on .stage-movers .mh-ledwash::after{animation:wash-beam-circle 12s linear var(--wash-phase) infinite,wash-beam-colours 10s linear var(--wash-phase) infinite}
.stage-preview .stage-movers .mh-ledwash{pointer-events:auto;cursor:pointer}
.countdown .stage-movers .mh-ledwash{cursor:default}
