
.zero-fx-feed{position:relative!important;overflow:hidden!important;isolation:isolate}
.zero-fx-noise,.zero-fx-scanlines,.zero-fx-sweep,.zero-fx-flash,.zero-fx-error{pointer-events:none;position:absolute;inset:0}
.zero-fx-noise{z-index:41;opacity:.035;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.9) 0 .45px,transparent .6px),radial-gradient(circle at 75% 65%,rgba(255,255,255,.65) 0 .45px,transparent .6px),radial-gradient(circle at 45% 80%,rgba(255,255,255,.6) 0 .35px,transparent .55px);background-size:5px 5px,7px 7px,4px 4px;animation:zeroFxNoise .19s steps(2,end) infinite;mix-blend-mode:screen}
.zero-fx-scanlines{z-index:42;opacity:.28;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.018) 0,rgba(255,255,255,.018) 1px,rgba(0,0,0,.045) 2px,transparent 4px)}
.zero-fx-sweep{z-index:43;height:11%;inset:-14% 0 auto;opacity:0;background:linear-gradient(to bottom,transparent,rgba(170,135,255,.025) 20%,rgba(220,230,255,.13) 50%,rgba(170,135,255,.025) 80%,transparent);filter:blur(.4px)}
.zero-fx-feed.zero-fx-sweeping .zero-fx-sweep{opacity:.75;animation:zeroFxSweep .95s linear 1}
.zero-fx-flash{z-index:44;opacity:0;background:rgba(220,225,255,.085)}
.zero-fx-feed.zero-fx-flicker .zero-fx-flash{animation:zeroFxFlicker .22s steps(2,end) 2}
.zero-fx-feed.zero-fx-jitter{animation:zeroFxJitter .16s steps(2,end) 2}
.zero-fx-error{z-index:60;display:grid;place-items:center;opacity:0;visibility:hidden;background:repeating-linear-gradient(to bottom,rgba(7,9,15,.94) 0,rgba(7,9,15,.94) 3px,rgba(13,16,25,.94) 4px);transition:opacity .08s linear}
.zero-fx-error.is-visible{opacity:1;visibility:visible}
.zero-fx-error-card{max-width:78%;padding:16px 22px;border:1px solid rgba(166,111,255,.55);background:rgba(7,9,15,.88);box-shadow:0 0 26px rgba(118,72,190,.16);color:#f2eefc;font:700 12px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em;text-align:left}
.zero-fx-error-title{color:#c899ff;margin-bottom:7px}
.zero-fx-error-detail{color:#aab2c6;font-size:10px;font-weight:500}
.zero-fx-error-pulse{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#a970ff;box-shadow:0 0 9px rgba(169,112,255,.8);animation:zeroFxPulse .7s steps(2,end) infinite}
.zero-fx-error::after{content:"";position:absolute;left:0;right:0;height:7%;top:44%;opacity:.35;background:linear-gradient(90deg,transparent 0 5%,rgba(184,135,255,.35) 12%,rgba(255,255,255,.15) 31%,transparent 53%,rgba(130,85,205,.3) 77%,transparent 100%);transform:translateX(-6px)}
@keyframes zeroFxNoise{0%{transform:translate3d(-1%,0,0)}25%{transform:translate3d(1%,-1%,0)}50%{transform:translate3d(0,1%,0)}75%{transform:translate3d(-1%,1%,0)}100%{transform:translate3d(1%,0,0)}}
@keyframes zeroFxSweep{from{transform:translateY(0)}to{transform:translateY(1050%)}}
@keyframes zeroFxFlicker{0%,100%{opacity:0}35%{opacity:.62}58%{opacity:.08}78%{opacity:.42}}
@keyframes zeroFxJitter{0%,100%{transform:translate(0,0);filter:none}25%{transform:translate(1px,0);filter:contrast(1.025) brightness(.98)}50%{transform:translate(-1px,1px)}75%{transform:translate(0,-1px);filter:contrast(1.018)}}
@keyframes zeroFxPulse{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.zero-fx-noise,.zero-fx-sweep,.zero-fx-flash,.zero-fx-feed{animation:none!important}.zero-fx-noise{opacity:.018}}


/* v0.2.0 — approved Z.E.R.O. Observation live-system treatment */
.zero-fx-corner-status{
  position:absolute;right:12px;bottom:10px;z-index:52;
  display:flex;align-items:center;gap:7px;
  padding:4px 7px;border:1px solid rgba(116,92,159,.25);
  border-radius:4px;background:rgba(4,7,12,.66);
  color:#c5a7ff;font:600 9px/1.1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.08em;text-shadow:0 1px 2px #000
}
.zero-fx-dot{width:6px;height:6px;border-radius:50%;background:#8d63ff;box-shadow:0 0 8px rgba(141,99,255,.8)}
.zero-fx-status-alert .zero-fx-corner-status{color:#b991ff}
.zero-fx-status-alert .zero-fx-dot{background:#b991ff}
.zero-fx-status-error .zero-fx-corner-status{color:#ff7d86;border-color:rgba(255,87,104,.35)}
.zero-fx-status-error .zero-fx-dot{background:#ff4c5a;box-shadow:0 0 8px rgba(255,76,90,.75)}

.zero-fx-error-card{min-width:270px}
.zero-fx-error-code{color:#ba85ff;font-size:11px;margin-bottom:7px}
.zero-fx-bars{display:flex;gap:3px;margin-top:10px}
.zero-fx-bars i{display:block;width:12px;height:8px;background:#9d69ff;box-shadow:0 0 5px rgba(157,105,255,.3)}
.zero-fx-bars i:nth-child(n+7){opacity:.22}
.zero-fx-error.is-visible .zero-fx-bars i{animation:zeroFxBars .75s steps(2,end) infinite}
.zero-fx-error.is-visible .zero-fx-bars i:nth-child(2){animation-delay:.06s}
.zero-fx-error.is-visible .zero-fx-bars i:nth-child(3){animation-delay:.12s}
.zero-fx-error.is-visible .zero-fx-bars i:nth-child(4){animation-delay:.18s}
.zero-fx-error.is-visible .zero-fx-bars i:nth-child(5){animation-delay:.24s}
@keyframes zeroFxBars{50%{opacity:.28}}

.zero-fx-system-log{
  margin:14px auto 0;
  padding:0;
  border:1px solid rgba(92,77,126,.55);
  border-radius:7px;
  background:linear-gradient(180deg,rgba(9,13,20,.96),rgba(5,8,13,.98));
  color:#cbd0dc;
  overflow:hidden;
  box-shadow:inset 0 0 30px rgba(0,0,0,.28);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace
}
.zero-fx-log-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 13px;border-bottom:1px solid rgba(92,77,126,.32);
  color:#b98aff;font-size:11px;letter-spacing:.09em
}
.zero-fx-log-head span{color:#8f99aa;font-size:9px}
.zero-fx-log-head span i{display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:#32d36b;box-shadow:0 0 7px rgba(50,211,107,.45)}
.zero-fx-log-body{min-height:105px;padding:9px 13px;display:flex;flex-direction:column;gap:4px}
.zero-fx-log-row{
  display:grid;grid-template-columns:68px 72px 1fr;gap:8px;
  font-size:9px;line-height:1.35;letter-spacing:.03em;color:#8f99aa
}
.zero-fx-log-row time{color:#aeb5c3}
.zero-fx-log-row b{color:#9e73ee;font-weight:600}
.zero-fx-log-row span{color:#838c9c}

@media(max-width:700px){
 .zero-fx-error-card{min-width:0;max-width:86%;padding:13px 14px}
 .zero-fx-log-row{grid-template-columns:58px 62px 1fr;font-size:8px}
}


/* v0.3.0 — CAM 04 real UAP archive feed */
.zero-fx-uap-feed{background:#03060a!important}
.zero-fx-uap-wrap{
  position:absolute;inset:0;z-index:3;overflow:hidden;background:#03060a;
}
.zero-fx-uap-video{
  width:100%;height:100%;display:block;object-fit:cover;
  filter:brightness(.82) contrast(1.12) saturate(.72);
}
.zero-fx-uap-hud{
  position:absolute;inset:0;z-index:6;pointer-events:none;
  color:#d9dbe4;font:600 9px/1.25 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.08em;text-shadow:0 1px 3px #000;
}
.zero-fx-uap-top,.zero-fx-uap-bottom{
  position:absolute;left:10px;right:10px;display:flex;justify-content:space-between;gap:12px;
}
.zero-fx-uap-top{top:10px}
.zero-fx-uap-bottom{bottom:10px}
.zero-fx-uap-top>span:first-child{color:#c69cff}
.zero-fx-uap-source{color:#9299a8}
.zero-fx-uap-bottom strong{color:#bd8dff}
.zero-fx-uap-reticle{
  position:absolute;left:50%;top:46%;width:54px;height:54px;transform:translate(-50%,-50%);
  border:1px solid rgba(191,151,255,.55);
  box-shadow:0 0 12px rgba(143,91,228,.14) inset;
}
.zero-fx-uap-reticle:before,.zero-fx-uap-reticle:after{
  content:"";position:absolute;background:rgba(191,151,255,.65);
}
.zero-fx-uap-reticle:before{left:50%;top:-8px;width:1px;height:70px;transform:translateX(-50%)}
.zero-fx-uap-reticle:after{top:50%;left:-8px;height:1px;width:70px;transform:translateY(-50%)}
.zero-fx-uap-reticle i{
  position:absolute;inset:10px;border:1px dashed rgba(191,151,255,.32);border-radius:50%;
}
.zero-fx-uap-reticle b{
  position:absolute;width:5px;height:5px;border-radius:50%;background:#b37cff;
  left:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 8px rgba(179,124,255,.8)
}

/* v0.4.0 — CAM 03 paranormal archive: original Running Shadow footage */
.zero-fx-archive-wrap{position:absolute;inset:0;z-index:3;overflow:hidden;background:#03060a}
.zero-fx-archive-video{width:100%;height:100%;display:block;object-fit:cover;filter:brightness(.88) contrast(1.08) saturate(.72)}
.zero-fx-archive-hud{position:absolute;inset:0;z-index:6;pointer-events:none;color:#d9dbe4;font:600 9px/1.25 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.07em;text-shadow:0 1px 3px #000}
.zero-fx-archive-top,.zero-fx-archive-bottom{position:absolute;left:10px;right:10px;display:flex;justify-content:space-between;gap:12px}
.zero-fx-archive-top{top:10px;color:#a58dbd}.zero-fx-archive-top span:first-child{color:#c69cff}
.zero-fx-archive-bottom{bottom:10px;color:#a7adba}.zero-fx-archive-bottom strong{color:#c69cff}
.zero-fx-shadow-marker{position:absolute;left:48%;top:50%;width:54px;height:72px;border:1px solid rgba(198,156,255,.35);transform:translate(-50%,-50%);opacity:.55}
.zero-fx-shadow-marker:before,.zero-fx-shadow-marker:after{content:"";position:absolute;background:rgba(198,156,255,.5)}
.zero-fx-shadow-marker:before{left:50%;top:-6px;width:1px;height:84px}
.zero-fx-shadow-marker:after{top:50%;left:-6px;width:66px;height:1px}


/* v0.5.1 — CAM 02 silent aquatic field footage */
.zero-fx-water-wrap{position:absolute;inset:0;z-index:4;overflow:hidden;background:#02060a}
.zero-fx-water-video{width:100%;height:100%;display:block;object-fit:cover;filter:brightness(.86) contrast(1.08) saturate(.78)}
.zero-fx-water-hud{position:absolute;inset:0;z-index:7;pointer-events:none;color:#d8dbe4;font:600 9px/1.25 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.07em;text-shadow:0 1px 3px #000}
.zero-fx-water-top,.zero-fx-water-bottom{position:absolute;left:10px;right:10px;display:flex;justify-content:space-between;gap:12px}
.zero-fx-water-top{top:10px}.zero-fx-water-bottom{bottom:10px}
.zero-fx-water-top span:first-child{color:#c69cff}
.zero-fx-water-top span:last-child,.zero-fx-water-bottom{color:#9aa2b2}
.zero-fx-water-bottom strong{color:#c69cff}


/* v0.6.0 — CAM 01 mostly-blank forest feed with random creature flashes */
.zero-fx-cam01-feed{background:#020407!important}
.zero-fx-cam01-wrap{position:absolute;inset:0;z-index:4;overflow:hidden;background:#020407}
.zero-fx-cam01-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.zero-fx-cam01-blank{z-index:1;filter:brightness(.72) contrast(1.18) saturate(.6)}
.zero-fx-cam01-creature{
  z-index:2;opacity:0;visibility:hidden;
  filter:brightness(.68) contrast(1.22) saturate(.5);
}
.zero-fx-cam01-creature.is-visible{opacity:1;visibility:visible}

.zero-fx-cam01-heavy-static{
  position:absolute;inset:0;z-index:5;pointer-events:none;
  opacity:.26;
  background-image:
    repeating-linear-gradient(to bottom,rgba(255,255,255,.045) 0 1px,transparent 1px 3px),
    radial-gradient(circle at 20% 30%,rgba(255,255,255,.8) 0 .55px,transparent .8px),
    radial-gradient(circle at 70% 65%,rgba(255,255,255,.55) 0 .45px,transparent .75px);
  background-size:auto,5px 5px,7px 7px;
  mix-blend-mode:screen;
  animation:zeroCam01Static .12s steps(2,end) infinite;
}
.zero-fx-cam01-tear{
  position:absolute;left:0;right:0;top:-18%;height:13%;z-index:6;
  opacity:.18;background:linear-gradient(to bottom,transparent,rgba(255,255,255,.22),transparent);
  filter:blur(.5px);animation:zeroCam01Tear 4.8s linear infinite;
}
.zero-fx-cam01-burst .zero-fx-cam01-heavy-static{opacity:.78;animation-duration:.045s}
.zero-fx-cam01-burst .zero-fx-cam01-wrap{animation:zeroCam01Burst .10s steps(2,end) 4}
.zero-fx-cam01-minor-jump .zero-fx-cam01-wrap{animation:zeroCam01Jump .09s steps(2,end) 2}
.zero-fx-cam01-roll .zero-fx-cam01-tear{opacity:.65;animation-duration:.6s}

@keyframes zeroCam01Static{
  0%{transform:translate(0,0)}
  20%{transform:translate(-1.2%,.7%)}
  40%{transform:translate(.9%,-.8%)}
  60%{transform:translate(-.6%,-.4%)}
  80%{transform:translate(.7%,.8%)}
  100%{transform:translate(0,0)}
}
@keyframes zeroCam01Tear{from{transform:translateY(0)}to{transform:translateY(900%)}}
@keyframes zeroCam01Burst{
  0%,100%{transform:translate(0,0);filter:none}
  25%{transform:translate(3px,-1px);filter:contrast(1.35) brightness(1.12)}
  50%{transform:translate(-4px,1px);filter:contrast(.85)}
  75%{transform:translate(2px,0);filter:brightness(.72)}
}
@keyframes zeroCam01Jump{
  0%,100%{transform:translate(0,0)}
  50%{transform:translate(-2px,1px)}
}


/* v0.7.1 CAM 01 registration fix:
   underlying blank/anomaly imagery NEVER moves; only interference layers move. */
.zero-fx-cam01-wrap{
  transform:none !important;
  animation:none !important;
}
.zero-fx-cam01-image{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center center !important;
  transform:none !important;
  animation:none !important;
}
.zero-fx-cam01-blank{
  filter:brightness(.98) contrast(1.06) saturate(.78) !important;
}
.zero-fx-cam01-creature{
  filter:brightness(.98) contrast(1.06) saturate(.78) !important;
}
.zero-fx-cam01-burst .zero-fx-cam01-wrap,
.zero-fx-cam01-minor-jump .zero-fx-cam01-wrap{
  transform:none !important;
  animation:none !important;
  filter:none !important;
}
.zero-fx-cam01-minor-jump .zero-fx-cam01-image,
.zero-fx-cam01-burst .zero-fx-cam01-image,
.zero-fx-cam01-roll .zero-fx-cam01-image{
  transform:none !important;
  animation:none !important;
}
.zero-fx-cam01-heavy-static{
  opacity:.34;
}
.zero-fx-cam01-burst .zero-fx-cam01-heavy-static{
  opacity:.84;
}


/* =========================================================
   v0.8.0 — CAM 01 TRAIL CAMERA
   Fixed 4:3 media canvas; still/video never resize the feed.
   ========================================================= */
.zero-trail-stage{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:hidden;
  background:#020504;
  z-index:1;
}
.zero-trail-stage .zero-trail-still,
.zero-trail-stage .zero-trail-video{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  margin:0;
  padding:0;
  border:0;
  object-fit:contain;
  object-position:center center;
  background:#020504;
}
.zero-trail-stage [hidden]{
  display:none!important;
}

/* The source media is normalized 1440x1080 (4:3).
   Existing Z.E.R.O. camera chrome remains outside this media layer. */

/* v0.8.1 CAM01 startup / positioning hardening */
.zero-trail-active{
  position:relative!important;
  overflow:hidden!important;
}
.zero-trail-active > .zero-trail-stage,
.zero-trail-active .zero-trail-stage{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  z-index:8!important;
}
.zero-trail-active .zero-fx-noise,
.zero-trail-active .zero-fx-scanlines,
.zero-trail-active .zero-fx-sweep,
.zero-trail-active .zero-fx-flash,
.zero-trail-active .zero-fx-error,
.zero-trail-active .zero-fx-corner-status{
  z-index:20!important;
}
