/* Hologram treatment for the scanline figures (figure[data-holo]). The original image stays the source; holo.js adds two
   fringe copies and points the sweep mask at the image. Reduced motion: same look, no sweep, flicker or glitch. */
[data-holo]{mix-blend-mode:screen}
[data-holo] picture{position:relative;isolation:isolate}
[data-holo] img.holo__base{filter:grayscale(1) sepia(1) hue-rotate(125deg) saturate(2.6) brightness(1.3) contrast(1.1)
  drop-shadow(0 0 6px rgba(80,240,230,.45)) drop-shadow(0 0 22px rgba(60,220,215,.22));opacity:.9;mix-blend-mode:screen!important}
[data-holo] img.holo__fr{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen!important;opacity:.42}
[data-holo] img.holo__fr--r{filter:grayscale(1) sepia(1) hue-rotate(-50deg) saturate(5) brightness(.8);transform:translateX(-2.5px)}
[data-holo] img.holo__fr--b{filter:grayscale(1) sepia(1) hue-rotate(180deg) saturate(5) brightness(.85);transform:translateX(2.5px)}
/* scan lines through the figure (only darken the lit parts) */
[data-holo] picture::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:multiply;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.55) 0 1px,transparent 1px 3px)}
/* the slow sweep: a bright band, masked to the figure's own light */
[data-holo] picture::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;mix-blend-mode:screen;
  background:linear-gradient(180deg,transparent 0,rgba(140,255,245,0) 40%,rgba(160,255,248,.55) 49%,rgba(220,255,252,.8) 50%,rgba(140,255,245,0) 60%,transparent 100%) 0 0/100% 300% no-repeat;
  -webkit-mask:var(--holo-src) center/100% 100% no-repeat;mask:var(--holo-src) center/100% 100% no-repeat luminance;
  animation:holo-sweep 6.5s linear infinite}
@keyframes holo-sweep{0%{background-position:0 100%}100%{background-position:0 0%}}
[data-holo] picture{animation:holo-flick 7.3s steps(1) infinite}
@keyframes holo-flick{0%,100%{opacity:1}31%{opacity:.82}31.6%{opacity:1}64%{opacity:.9}64.4%{opacity:.7}65%{opacity:1}88%{opacity:.88}88.3%{opacity:1}}
[data-holo] img.holo__fr--r{animation:holo-glitch-r 5.9s steps(1) infinite}
[data-holo] img.holo__fr--b{animation:holo-glitch-b 5.9s steps(1) infinite}
@keyframes holo-glitch-r{0%,100%{transform:translateX(-2.5px);clip-path:none}62%{transform:translateX(-12px);clip-path:inset(38% 0 52% 0)}63%{transform:translateX(6px);clip-path:inset(58% 0 30% 0)}64%{transform:translateX(-2.5px);clip-path:none}}
@keyframes holo-glitch-b{0%,100%{transform:translateX(2.5px);clip-path:none}62%{transform:translateX(10px);clip-path:inset(40% 0 50% 0)}63%{transform:translateX(-7px);clip-path:inset(60% 0 28% 0)}64%{transform:translateX(2.5px);clip-path:none}}
@media (prefers-reduced-motion:reduce){[data-holo] picture,[data-holo] picture::after,[data-holo] img.holo__fr{animation:none!important}
  [data-holo] picture::after{background-position:0 50%;opacity:.5}}
/* L05 Attend: the hand and cord back in the head (as before 196131a). Desktop: right of the lede, clear of the shaft lane. */
@media (min-width:820px){
  #measure > .floor__head{position:relative}
  #measure > .floor__head > figure[data-holo]{position:absolute;right:calc(var(--gut) + 24px);bottom:4px;width:clamp(260px,24vw,360px);z-index:1;pointer-events:none}
}
@media (max-width:819px){#measure > .floor__head > figure[data-holo]{max-width:420px;margin-inline:auto!important}}
/* L03 Architect: projector hologram (holo3d.js draws it on canvas). Replaces the maker bust. */
.holo3d{position:relative;aspect-ratio:5/6;width:100%;max-width:340px;margin:0 auto!important;mix-blend-mode:screen;pointer-events:none}
.holo3d__c{position:absolute;inset:0;width:100%;height:100%;display:block}
@media (min-width:821px){
  #make > .floor__head{position:relative}
  .floor--one > .floor__head .holo3d{display:block;position:absolute;right:calc(var(--gut) + 40px);bottom:0;width:clamp(170px,14vw,215px);max-width:none;z-index:1}
}
@media (max-width:820px){#make .holo3d{max-width:260px;margin-top:-12px!important}}
/* L02 Specify and L04 Launch projectors: same placement as L03 (right of the head, clear of the shaft lane on desktop) */
@media (min-width:821px){
  #scope > .floor__head,#work > .floor__head{position:relative}
  #scope > .floor__head > .holo3d,#work > .floor__head > .holo3d{position:absolute;right:calc(var(--gut) + 40px);bottom:0;width:clamp(170px,14vw,215px);max-width:none;z-index:1}
}
@media (max-width:820px){#scope .holo3d,#work .holo3d{max-width:260px;margin-top:-4px!important}}

/* L01 Audit projector overlay + hologram "Click here to read" on the box screen */
.au-proj{--projector-safe-bottom:env(safe-area-inset-bottom,0px);position:fixed;top:0;left:0;width:100%;height:100dvh;pointer-events:none;z-index:30}
#audit.mk .au-details{font-family:"Big Shoulders Display",var(--text),sans-serif!important;text-transform:uppercase;letter-spacing:.12em!important;color:#cffaf2!important;
  background:repeating-linear-gradient(0deg,rgba(127,224,210,.16) 0 1px,transparent 1px 3px),rgba(6,22,20,.45)!important;
  text-shadow:-1px 0 rgba(255,80,120,.45),1px 0 rgba(80,200,255,.5),0 0 10px rgba(127,224,210,.85)!important;box-shadow:inset 0 0 18px rgba(127,224,210,.35)}
#audit.mk.is-done .au-details:not([hidden]){animation:au-fade .5s ease,holo-read 3.2s steps(1) .5s infinite!important}
@keyframes holo-read{0%,100%{opacity:1;transform:none}46%{opacity:.7}47%{opacity:1}71%{opacity:.85;transform:translateX(1px)}72%{transform:none}}
@media (prefers-reduced-motion:reduce){#audit.mk.is-done .au-details:not([hidden]){animation:none!important}}
@media (min-width:821px){#audit.mk .au-details{font-size:15px!important}}
#audit.mk .au-details{transform:none!important;cursor:pointer;justify-content:center!important;align-items:center!important;border-radius:3px}
#audit.mk .au-details:focus-visible{outline:2px solid #cffaf2!important;outline-offset:3px!important;box-shadow:inset 0 0 18px rgba(127,224,210,.35),0 0 0 5px rgba(127,224,210,.35)!important}

/* The result prompt stays steady and legible when it is available. */
#audit.mk.is-done .au-details:not([hidden]){animation:none!important}

/* Idle and completed scans stay unlit, regardless of older scene pulses. */
#audit:not([data-scan-state="running"]) .au-scr{opacity:0!important;animation:none!important}

/* During analysis, screen illumination follows the physical beam geometry. */
#audit[data-scan-state="running"] .au-scr{opacity:calc(var(--proj,0) * .85)!important;animation:none!important}
