/* IQAI Gap Analysis frontier interaction layer.
   Quiet by default. Attention reveals structure. */

.ga-story-shell{
  margin-top:70px;
  display:grid;
  grid-template-columns:minmax(0,1.48fr) minmax(250px,.52fr);
  gap:54px;
  align-items:start;
  position:relative;
}
.ga-story-visual{position:sticky;top:78px;align-self:start;min-width:0;z-index:4}
.ga-story-visual .ga-plant{margin-top:0;position:relative;background:#fff;overflow:visible}
.ga-story-steps{min-width:0;position:relative;padding-left:18px}
.ga-story-steps::before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:#ededed}
.ga-story-steps::after{content:"";position:absolute;left:0;top:0;width:1px;height:calc(var(--story-progress,0) * 100%);background:#111;transition:height .12s linear}
.ga-story-step{
  min-height:62vh;
  padding:17vh 0 9vh;
  border-top:1px solid #e2e2e2;
  opacity:.3;
  transition:opacity .35s ease,transform .35s cubic-bezier(.22,1,.36,1);
}
.ga-story-step:first-child{border-top:0}
.ga-story-step.is-active{opacity:1;transform:translateX(-5px)}
.ga-story-step small{display:block;margin-bottom:20px;font-size:9px;letter-spacing:.11em;color:#888}
.ga-story-step h2{margin:0;max-width:310px;font-size:clamp(27px,2.45vw,36px);line-height:1.02;letter-spacing:-.043em;font-weight:400}
.ga-story-step p{margin:16px 0 0;max-width:310px;font-size:13px;line-height:1.52;color:#666}

/* Semantic depth: earlier layers remain as context instead of disappearing. */
.ga-plant[data-story-stage="plant"] .ga-plant-process{opacity:1!important;transform:scale(1.012)!important}
.ga-plant[data-story-stage="plant"] .ga-control-layer{opacity:.11!important;transform:none!important}
.ga-plant[data-story-stage="plant"] .ga-cyber-layer{opacity:.045!important;transform:none!important}
.ga-plant[data-story-stage="plant"] .ga-iqai-core{opacity:.055!important;transform:none!important}

.ga-plant[data-story-stage="control"] .ga-plant-process{opacity:.38!important;transform:none!important}
.ga-plant[data-story-stage="control"] .ga-control-layer{opacity:1!important;transform:scale(1.014)!important}
.ga-plant[data-story-stage="control"] .ga-cyber-layer{opacity:.08!important;transform:none!important}
.ga-plant[data-story-stage="control"] .ga-iqai-core{opacity:.08!important;transform:none!important}

.ga-plant[data-story-stage="cyber"] .ga-plant-process{opacity:.27!important;transform:none!important}
.ga-plant[data-story-stage="cyber"] .ga-control-layer{opacity:.46!important;transform:none!important}
.ga-plant[data-story-stage="cyber"] .ga-cyber-layer{opacity:1!important;transform:scale(1.014)!important}
.ga-plant[data-story-stage="cyber"] .ga-iqai-core{opacity:.11!important;transform:none!important}

.ga-plant[data-story-stage="iqai"] .ga-plant-process{opacity:.23!important;transform:none!important}
.ga-plant[data-story-stage="iqai"] .ga-control-layer{opacity:.34!important;transform:none!important}
.ga-plant[data-story-stage="iqai"] .ga-cyber-layer{opacity:.48!important;transform:none!important}
.ga-plant[data-story-stage="iqai"] .ga-iqai-core{opacity:1!important;transform:scale(1.018)!important}

.ga-water-line{
  stroke-dasharray:18 8;
  animation:gaWaterMove 12s linear infinite;
}
.ga-water-line-soft{stroke-dasharray:none;animation:none}
@keyframes gaWaterMove{to{stroke-dashoffset:-104}}

/* The inspection lens is supplemental. All meaning exists elsewhere in text. */
.ga-gap-lens{
  --lens-x:50%;
  --lens-y:50%;
  position:absolute;
  left:var(--lens-x);
  top:var(--lens-y);
  width:218px;
  height:218px;
  transform:translate(-50%,-50%) scale(.94);
  border:1px solid #1d1d1d;
  border-radius:50%;
  background:rgba(255,255,255,.96);
  box-shadow:0 22px 70px rgba(0,0,0,.10);
  padding:37px 30px 28px;
  pointer-events:none;
  z-index:8;
  opacity:0;
  transition:opacity .16s ease,transform .22s cubic-bezier(.22,1,.36,1);
  overflow:visible;
}
.ga-plant[data-lens-active="true"] .ga-gap-lens{opacity:1;transform:translate(-50%,-50%) scale(1)}
.ga-gap-lens-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:16px;font-size:8px;letter-spacing:.09em;color:#888}
.ga-gap-lens-head b{font-weight:400;color:#111}
.ga-gap-lens-state{padding:8px 0;border-top:1px solid #e4e4e4}
.ga-gap-lens-state small{display:block;font-size:7.5px;letter-spacing:.09em;color:#999}
.ga-gap-lens-state strong{display:block;margin-top:4px;font-size:10.5px;line-height:1.25;font-weight:400;color:#333}
.ga-gap-lens-unknown strong{color:#111}
.ga-lens-dots{position:absolute;inset:-34px;pointer-events:none}
.ga-lens-dot{position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:#111;opacity:.12;transform:translate(-50%,-50%) rotate(var(--a)) translateX(var(--r));animation:gaDotBreathe 2.8s ease-in-out var(--delay) infinite}
@keyframes gaDotBreathe{0%,100%{opacity:.06}50%{opacity:.32}}

/* Evidence Wake: a conclusion reveals the evidence path backwards. */
.ga-wake-layer{pointer-events:none}
.ga-wake-path{
  fill:none;
  stroke:#111;
  stroke-width:1.8;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:12 8;
  stroke-dashoffset:68;
  opacity:0;
  transition:opacity .16s ease;
}
.ga-wake-gap{
  fill:#fff;
  stroke:#111;
  stroke-width:1;
  vector-effect:non-scaling-stroke;
  opacity:0;
  transform-box:fill-box;
  transform-origin:center;
}
.ga-plant[data-wake="pump"] .ga-wake-pump,
.ga-plant[data-wake="historian"] .ga-wake-historian,
.ga-plant[data-wake="remote"] .ga-wake-remote,
.ga-plant[data-wake="inventory"] .ga-wake-inventory,
.ga-plant[data-wake="all"] .ga-wake-path,
.ga-plant[data-wake="all"] .ga-wake-gap{
  opacity:1;
}
.ga-plant[data-wake] .ga-wake-path{animation:gaWakeBack 1.05s cubic-bezier(.22,1,.36,1) forwards;filter:drop-shadow(0 0 1px rgba(0,0,0,.22))}
.ga-plant[data-story-stage="iqai"]:not([data-wake]) .ga-wake-path{opacity:.22;animation:gaWakeBack 1.55s cubic-bezier(.22,1,.36,1) forwards}
.ga-plant[data-story-stage="iqai"]:not([data-wake]) .ga-wake-gap{opacity:.18;animation:gaGapPulse 2.1s ease-in-out 1}
.ga-plant[data-wake] .ga-wake-gap{animation:gaGapPulse 1.6s ease-in-out infinite}
@keyframes gaWakeBack{to{stroke-dashoffset:0}}
@keyframes gaGapPulse{0%,100%{transform:scale(.78);opacity:.25}50%{transform:scale(1.35);opacity:1}}

[data-evidence-source]{cursor:crosshair}
.ga-plant[data-wake] [data-evidence-source]{opacity:.24;transition:opacity .18s ease}
.ga-plant[data-wake="pump"] [data-evidence-source="pump"],
.ga-plant[data-wake="pump"] [data-evidence-source="plc"],
.ga-plant[data-wake="historian"] [data-evidence-source="historian"],
.ga-plant[data-wake="remote"] [data-evidence-source="remote"],
.ga-plant[data-wake="inventory"] [data-evidence-source="inventory"],
.ga-plant[data-wake="all"] [data-evidence-source="iqai"]{opacity:1}

/* Micro-case wake travels from blocked conclusion back to observation. */
[data-evidence-chain] [data-chain-step]{
  transition:background .25s ease,transform .25s cubic-bezier(.22,1,.36,1),opacity .2s ease;
}
[data-evidence-chain].is-waking [data-chain-step]{opacity:.28}
[data-evidence-chain].is-waking [data-chain-step].is-wake-active{
  opacity:1;
  background:#f6f6f6;
  transform:translateY(-3px);
}
[data-evidence-chain].is-waking .ga-case-arrow{color:#111}

/* Proof is rendered as evidence populations, not a chart. */
.ga-proof-population{
  display:grid;
  grid-template-columns:1fr 156px;
  gap:32px;
  align-items:center;
  min-height:150px;
  padding:24px 0 22px;
  border-bottom:1px solid #d7d7d7;
}
.ga-proof-dots{display:grid;grid-template-columns:1.55fr .75fr;gap:30px;align-items:center}
.ga-proof-dot-group{display:flex;flex-wrap:wrap;gap:7px;align-content:center;min-height:70px}
.ga-proof-dot{width:5px;height:5px;border-radius:50%;background:#111;opacity:0;transform:scale(.25);transition:opacity .32s ease,transform .4s cubic-bezier(.22,1,.36,1)}
.ga-proof-dot.is-request{width:7px;height:7px;background:#fff;border:1px solid #555}
.ga-proof-population.is-visible .ga-proof-dot{opacity:.62;transform:scale(1)}
.ga-proof-population.is-visible .ga-proof-dot.is-request{opacity:1}
.ga-proof-gate{min-height:82px;border-left:1px solid #222;padding-left:24px;display:flex;flex-direction:column;justify-content:space-between}
.ga-proof-gate span{font-size:8px;letter-spacing:.1em;color:#888}
.ga-proof-gate strong{font-size:21px;font-weight:400;letter-spacing:-.025em}
.ga-proof-population.is-visible .ga-proof-gate{animation:gaGateHold 1.2s ease both}
@keyframes gaGateHold{0%{opacity:.2;transform:translateX(7px)}100%{opacity:1;transform:none}}

/* OT + IQAI combine interaction. */
.ga-combine{
  position:relative;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:18px;
  align-items:center;
  padding:26px 0 30px;
  border-bottom:1px solid #d7d7d7;
  overflow:hidden;
}
.ga-combine-rail{min-height:92px;padding:18px 19px;border:1px solid #d5d5d5;display:flex;flex-direction:column;justify-content:space-between;transition:transform .45s cubic-bezier(.22,1,.36,1),background .3s ease}
.ga-combine-rail small{font-size:8px;letter-spacing:.1em;color:#888}.ga-combine-rail strong{font-size:16px;font-weight:400;letter-spacing:-.02em}
.ga-combine button{min-height:44px;padding:0 14px;border:1px solid #bdbdbd;background:#fff;font:inherit;font-size:11px;color:#444;cursor:pointer;z-index:2}
.ga-combine button:hover,.ga-combine button:focus-visible{border-color:#111;color:#111}
.ga-combine-result{position:absolute;left:50%;top:50%;width:260px;min-height:74px;transform:translate(-50%,-50%) scale(.88);background:#111;color:#fff;padding:14px 18px;display:flex;flex-direction:column;justify-content:space-between;opacity:0;pointer-events:none;transition:opacity .35s ease,transform .45s cubic-bezier(.22,1,.36,1);z-index:1}
.ga-combine-result span{font-size:8px;letter-spacing:.1em;color:#aaa}.ga-combine-result strong{font-size:17px;font-weight:400}
.ga-combine.is-combined .ga-combine-ot{transform:translateX(32%) scale(.96);background:#f5f5f5}
.ga-combine.is-combined .ga-combine-iqai{transform:translateX(-32%) scale(.96);background:#f5f5f5}
.ga-combine.is-combined .ga-combine-result{opacity:1;transform:translate(-50%,-50%) scale(1)}
.ga-combine.is-combined button{opacity:.12}

/* Attention-responsive subtle depth, only where information is present. */
.ga-process-node,.ga-control-node,.ga-cyber-node,.ga-iqai-core{
  transition:opacity .22s ease,transform .28s cubic-bezier(.22,1,.36,1),filter .22s ease;
}
.ga-plant[data-proximity] [data-evidence-source]{filter:contrast(1.04)}
.ga-plant-controls button{transition:background .18s ease,color .18s ease,transform .18s ease}
.ga-plant-controls button:hover{transform:translateY(-1px)}

/* Mobile keeps the same semantics without sticky or pointer-only effects. */
@media(max-width:980px){
  .ga-story-shell{grid-template-columns:1fr;gap:0}
  .ga-story-visual{position:relative;top:auto}
  .ga-story-step{min-height:auto;padding:28px 0;border-top:1px solid #e2e2e2;opacity:1;transform:none!important}
  .ga-story-step h2,.ga-story-step p{max-width:660px}
  .ga-gap-lens{display:none}
  .ga-proof-population{grid-template-columns:1fr 130px}
  .ga-combine.is-combined .ga-combine-ot{transform:translateX(18%) scale(.96)}
  .ga-combine.is-combined .ga-combine-iqai{transform:translateX(-18%) scale(.96)}
}
@media(max-width:760px){
  .ga-story-shell{margin-top:52px}
  .ga-proof-population{grid-template-columns:1fr;gap:16px}
  .ga-proof-dots{grid-template-columns:1fr;gap:18px}
  .ga-proof-gate{border-left:0;border-top:1px solid #222;padding:14px 0 0;min-height:62px}
  .ga-combine{grid-template-columns:1fr;gap:10px}
  .ga-combine button{justify-self:start}
  .ga-combine-result{position:relative;left:auto;top:auto;width:100%;transform:none;display:none}
  .ga-combine.is-combined .ga-combine-ot,.ga-combine.is-combined .ga-combine-iqai{transform:none}
  .ga-combine.is-combined .ga-combine-result{display:flex;opacity:1;transform:none}
  .ga-combine.is-combined button{opacity:1}
}
@media(pointer:coarse){.ga-gap-lens{display:none}}
@media(prefers-reduced-motion:reduce){
  .ga-water-line,.ga-wake-path,.ga-wake-gap,.ga-lens-dot,.ga-proof-population.is-visible .ga-proof-gate{animation:none!important}
  .ga-story-step,.ga-gap-lens,.ga-proof-dot,.ga-combine-rail,.ga-combine-result{transition:none!important}
}

/* Keep the semantic plant pinned on common landscape/tablet widths.
   Only collapse the story fully on genuinely narrow screens. */
@media(min-width:841px) and (max-width:980px){
  .ga-story-shell{grid-template-columns:minmax(0,1.32fr) minmax(225px,.68fr);gap:34px}
  .ga-story-visual{position:sticky;top:76px}
  .ga-story-step{min-height:58vh;padding:14vh 0 8vh;opacity:.32}
  .ga-story-step.is-active{opacity:1;transform:translateX(-4px)}
  .ga-story-step h2{font-size:28px}
  .ga-story-step p{font-size:12.5px}
}


/* Release-quality accessibility + mobile integrity.
   Context remains visible, but readable text never loses contrast. */
.iq-page-gap-analysis :where(
  .ga-plant-top,
  .ga-section-head>span,
  .ga-flow-top,
  .ga-flow-readout>div:first-child,
  .ga-boundary,
  .ga-case-note,
  .ga-compare-note,
  .ga-proof-foot,
  .ga-loop-foot,
  .ga-final>div:first-child>span
){color:#666!important}

.iq-page-gap-analysis :where(
  .ga-story-step small,
  .ga-case-col small,
  .ga-case-outcome>span,
  .ga-arch-layer small,
  .ga-architecture-readout>span,
  .ga-arch-role>span,
  .ga-cyber-path small,
  .ga-combine-rail small,
  .ga-compare-head>*,
  .ga-proof-gate>span,
  .ga-loop small,
  .ga-scale-path small,
  .ga-user-grid small,
  .ga-maturity small,
  .ga-maturity span
){color:#666!important}

.iq-page-gap-analysis .ga-case em{color:#666!important}
.iq-page-gap-analysis .ga-plant-controls button span{color:#666!important}
.iq-page-gap-analysis .ga-plant-controls button[aria-pressed=true] span{color:#d0d0d0!important}
.iq-page-gap-analysis .ga-arch-layer[aria-pressed=true] small{color:#d0d0d0!important}

.ga-story-step{opacity:1!important}
.ga-story-step h2{color:#666;transition:color .25s ease}
.ga-story-step p{color:#666;transition:color .25s ease}
.ga-story-step.is-active h2{color:#111}
.ga-story-step.is-active p{color:#555}

/* Keep labels accessible while shapes carry the contextual dimming. */
.ga-plant[data-story-stage] :where(.ga-plant-process,.ga-control-layer,.ga-cyber-layer,.ga-iqai-core){
  opacity:1!important;
}
.ga-plant .ga-svg-kicker{fill:#666!important}

.ga-plant[data-story-stage="plant"] .ga-control-layer :is(rect,path,circle),
.ga-plant[data-story-stage="plant"] .ga-cyber-layer :is(rect,path,circle){opacity:.16}
.ga-plant[data-story-stage="plant"] .ga-iqai-core :is(rect,path,circle,line){opacity:.10}

.ga-plant[data-story-stage="control"] .ga-plant-process :is(rect,path,circle){opacity:.38}
.ga-plant[data-story-stage="control"] .ga-cyber-layer :is(rect,path,circle){opacity:.18}
.ga-plant[data-story-stage="control"] .ga-iqai-core :is(rect,path,circle,line){opacity:.12}

.ga-plant[data-story-stage="cyber"] .ga-plant-process :is(rect,path,circle){opacity:.30}
.ga-plant[data-story-stage="cyber"] .ga-control-layer :is(rect,path,circle){opacity:.48}
.ga-plant[data-story-stage="cyber"] .ga-iqai-core :is(rect,path,circle,line){opacity:.14}

.ga-plant[data-story-stage="iqai"] .ga-plant-process :is(rect,path,circle){opacity:.30}
.ga-plant[data-story-stage="iqai"] .ga-control-layer :is(rect,path,circle){opacity:.42}
.ga-plant[data-story-stage="iqai"] .ga-cyber-layer :is(rect,path,circle){opacity:.58}
.ga-plant[data-story-stage="iqai"] .ga-iqai-core :is(rect,path,circle,line){opacity:1}

.ga-plant:not([data-story-stage="iqai"]) .ga-iqai-core .ga-core-title,
.ga-plant:not([data-story-stage="iqai"]) .ga-iqai-core .ga-core-kicker,
.ga-plant:not([data-story-stage="iqai"]) .ga-iqai-core .ga-svg-small{fill:#666!important}
.ga-plant[data-story-stage="iqai"] .ga-iqai-core .ga-core-title{fill:#fff!important}
.ga-plant[data-story-stage="iqai"] .ga-iqai-core .ga-core-kicker{fill:#c8c8c8!important}
.ga-plant[data-story-stage="iqai"] .ga-iqai-core .ga-svg-small{fill:#d2d2d2!important}

.ga-compare:focus-visible{outline:2px solid #111;outline-offset:4px}

@media(max-width:980px){
  .ga-story-shell,.ga-story-visual{min-width:0;max-width:100%}
  .ga-story-visual .ga-plant{
    max-width:100%;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
  }
}

/* Deterministic interaction mechanics: decorative arrows never capture input. */
.ga-flow-row>i,
.ga-case-arrow,
.ga-loop>i,
.ga-cyber-path>i,
.ga-scale-path>span[aria-hidden="true"]{pointer-events:none!important}

[data-evidence-chain] [data-chain-step].is-wake-active{
  transition-delay:var(--wake-delay,0ms);
}

/* Preserve 3D depth while letting negative-Z planes remain true hit targets. */
.ga-architecture-stage{pointer-events:none}
.ga-arch-layer{pointer-events:auto}


/* ==========================================================
   V6 · ISOMETRIC WATER-TREATMENT ENVIRONMENT
   Physical plant first. Evidence overlays emerge by stage.
   ========================================================== */

.ga-plant-scene-svg{
  min-width:0;
  overflow:visible;
  filter:saturate(.72);
}
.ga-scene-base{pointer-events:none}
.ga-site-shadow{fill:#000;opacity:.055;transform:translateY(17px)}
.ga-site-plane{stroke:#c9c9c4;stroke-width:1;vector-effect:non-scaling-stroke}
.ga-site-grid{opacity:.28}
.ga-site-road{
  fill:none;
  stroke:#d4d4d0;
  stroke-width:28;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke
}
.ga-site-road-thin{stroke-width:18;opacity:.75}
.ga-fence{fill:none;stroke:#b7b7b1;stroke-width:1;stroke-dasharray:5 7;vector-effect:non-scaling-stroke}

.ga-scene-kicker{font-size:9px!important;letter-spacing:.12em}
.ga-scene-caption{font:400 10px "Helvetica Neue",Helvetica,Arial,sans-serif;fill:#666}
.ga-scene-asset{
  transform-box:fill-box;
  transform-origin:center;
  transition:transform .3s cubic-bezier(.22,1,.36,1),filter .25s ease,opacity .22s ease
}
.ga-scene-asset:hover{transform:translateY(-3px)}
.ga-face-top{fill:#f8f8f6;stroke:#777;stroke-width:.8}
.ga-face-left{fill:#e6e6e2;stroke:#777;stroke-width:.8}
.ga-face-right{fill:#d6d7d3;stroke:#777;stroke-width:.8}
.ga-asset-label{
  font:500 8.5px "Helvetica Neue",Helvetica,Arial,sans-serif;
  letter-spacing:.095em;
  fill:#444
}
.ga-asset-label-strong{fill:#111}

.ga-water-channel{fill:url(#gaSceneWater);stroke:#849ba4;stroke-width:1}
.ga-water-channel-edge{fill:none;stroke:#778e97;stroke-width:1.3}
.ga-intake-grille{fill:#8d9496;opacity:.68}
.ga-cylinder-side{fill:#dadbd7;stroke:#777;stroke-width:.8}
.ga-cylinder-rim{fill:#f5f5f2;stroke:#6f7070;stroke-width:1}
.ga-cylinder-water{fill:url(#gaSceneWater);stroke:#82969e;stroke-width:.75}
.ga-cylinder-inner{fill:#f1f1ed;stroke:#777;stroke-width:.75}
.ga-clarifier-arm{stroke:#707476;stroke-width:1.3;fill:none}
.ga-clarifier-hub{fill:#676b6c}
.ga-basin-wall{fill:#f4f4f1;stroke:#777;stroke-width:.8}
.ga-basin-water{fill:url(#gaSceneWater);stroke:#879aa2;stroke-width:.65}
.ga-basin-front{fill:#d9dad6;stroke:#777;stroke-width:.8}
.ga-basin-side{fill:#e5e5e1;stroke:#777;stroke-width:.8}
.ga-roof-detail{fill:#e2e3e0;stroke:#888;stroke-width:.7}
.ga-door{fill:#949a9a}
.ga-window-strip{stroke:#a6b0b3;stroke-width:8;stroke-linecap:square;opacity:.78}
.ga-pump-pad{fill:#d9d9d5;stroke:#aaa;stroke-width:.7}
.ga-pump-roof{fill:#f3f3f0}
.ga-pump-motors ellipse{fill:#d4d6d3;stroke:#666;stroke-width:.7}
.ga-pump-motors path{fill:#c7c9c6;stroke:#666;stroke-width:.7}
.ga-tank-side{fill:#d8d9d5;stroke:#777;stroke-width:.8}
.ga-tank-top{fill:#f3f3f0;stroke:#6f7070;stroke-width:.9}
.ga-tank-water{fill:url(#gaSceneWater);stroke:#879aa2;stroke-width:.7}
.ga-tank-ring{fill:none;stroke:#a1a29f;stroke-width:.8}
.ga-glass-panel{fill:url(#gaGlass);stroke:#7f898c;stroke-width:.7}
.ga-antenna{stroke:#666;stroke-width:1.1}
.ga-antenna-dot{fill:#333}

.ga-process-pipe{
  fill:none;
  stroke-width:8;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
  opacity:.9
}
.ga-pipe-water{stroke:#91a8b1}
.ga-pipe-distribution{stroke:#7f949c}
.ga-valve{fill:#f5f5f2;stroke:#5c686c;stroke-width:1.4}
.ga-plant[data-story-stage="plant"] .ga-process-pipe{
  stroke-dasharray:12 9;
  animation:gaProcessFlow 4.8s linear infinite
}
@keyframes gaProcessFlow{to{stroke-dashoffset:-84}}

.ga-control-cabinet{
  transform-box:fill-box;transform-origin:center;
  transition:transform .25s cubic-bezier(.22,1,.36,1)
}
.ga-control-cabinet:hover{transform:translateY(-3px)}
.ga-cabinet-top{fill:#f3f3f0;stroke:#676767;stroke-width:.7}
.ga-cabinet-front{fill:#cfd0cd;stroke:#676767;stroke-width:.7}
.ga-cabinet-side{fill:#e1e1de;stroke:#676767;stroke-width:.7}
.ga-led{fill:#555}
.ga-historian-node rect{fill:#f6f6f3;stroke:#555;stroke-width:.8}
.ga-historian-node path{fill:none;stroke:#777;stroke-width:.9}
.ga-data-link{
  fill:none;stroke:#242424;stroke-width:1.15;stroke-dasharray:4 6;
  vector-effect:non-scaling-stroke;opacity:.86
}
.ga-data-link-secondary{stroke:#6f6f6f;opacity:.62}
.ga-data-node{fill:#fff;stroke:#111;stroke-width:1.2}
.ga-plant[data-story-stage="control"] .ga-data-link{
  animation:gaDataMove 2.2s linear infinite
}
@keyframes gaDataMove{to{stroke-dashoffset:-30}}
.ga-ot-labels rect{fill:#fff;stroke:#777;stroke-width:.65}
.ga-ot-labels text{font:500 8px "Helvetica Neue",Helvetica,Arial,sans-serif;fill:#333;letter-spacing:.08em}

.ga-cyber-perimeter{
  fill:none;stroke:#222;stroke-width:1.2;stroke-dasharray:9 7;opacity:.78
}
.ga-cyber-zone-line{fill:none;stroke:#888;stroke-width:.85;stroke-dasharray:4 6}
.ga-remote-path{
  fill:none;stroke:#444;stroke-width:1.2;stroke-dasharray:5 7;vector-effect:non-scaling-stroke
}
.ga-remote-node circle{fill:#fff;stroke:#222;stroke-width:1}
.ga-remote-node path{stroke:#333;stroke-width:1;fill:none}
.ga-cyber-context rect{fill:#fff;stroke:#666;stroke-width:.8}
.ga-cyber-context text{font:500 8px "Helvetica Neue",Helvetica,Arial,sans-serif;fill:#333;letter-spacing:.08em}
.ga-plant[data-story-stage="cyber"] .ga-cyber-perimeter,
.ga-plant[data-story-stage="cyber"] .ga-remote-path{
  animation:gaCyberPulse 2.8s ease-in-out infinite
}
@keyframes gaCyberPulse{0%,100%{stroke-opacity:.45}50%{stroke-opacity:1}}

.ga-evidence-plane{
  fill:#fff;fill-opacity:.79;stroke:#111;stroke-width:1.1;stroke-dasharray:6 7;
  filter:url(#gaSoftShadow)
}
.ga-evidence-plane-edge{fill:#d8d8d4;fill-opacity:.82;stroke:#777;stroke-width:.6}
.ga-evidence-scan{fill:none;stroke:#111;stroke-width:1.15;stroke-dasharray:18 10;opacity:.7}
.ga-plant[data-story-stage="iqai"] .ga-evidence-scan{animation:gaEvidenceScan 2.4s linear infinite}
@keyframes gaEvidenceScan{to{stroke-dashoffset:-56}}
.ga-evidence-anchor circle{fill:#fff;stroke:#111;stroke-width:1.1}
.ga-evidence-anchor text{font:500 8px "Helvetica Neue",Helvetica,Arial,sans-serif;letter-spacing:.08em;fill:#222}
.ga-anchor-unknown circle{fill:#111}
.ga-anchor-request circle{stroke-dasharray:3 2}
.ga-console-top{fill:#252525;stroke:#111;stroke-width:.8}
.ga-console-left{fill:#121212;stroke:#111;stroke-width:.8}
.ga-console-right{fill:#050505;stroke:#111;stroke-width:.8}
.ga-assurance-console .ga-core-kicker{font:500 8px "Helvetica Neue",Helvetica,Arial,sans-serif;fill:#bfbfbf;letter-spacing:.12em}
.ga-assurance-console .ga-core-title{font:400 18px "Helvetica Neue",Helvetica,Arial,sans-serif;fill:#fff;letter-spacing:-.025em}
.ga-assurance-console .ga-core-rule{stroke:#777;stroke-width:.8}
.ga-assurance-console .ga-core-small{font:500 5.8px "Helvetica Neue",Helvetica,Arial,sans-serif;fill:#ccc;letter-spacing:.045em}

/* Stage hierarchy: keep the physical plant visible while overlays acquire authority. */
.ga-plant[data-story-stage="plant"] .ga-scene-physical{opacity:1!important}
.ga-plant[data-story-stage="plant"] .ga-scene-control{opacity:.18!important}
.ga-plant[data-story-stage="plant"] .ga-scene-cyber{opacity:.10!important}
.ga-plant[data-story-stage="plant"] .ga-scene-iqai{opacity:.08!important}

.ga-plant[data-story-stage="control"] .ga-scene-physical{opacity:.76!important}
.ga-plant[data-story-stage="control"] .ga-scene-control{opacity:1!important}
.ga-plant[data-story-stage="control"] .ga-scene-cyber{opacity:.16!important}
.ga-plant[data-story-stage="control"] .ga-scene-iqai{opacity:.10!important}

.ga-plant[data-story-stage="cyber"] .ga-scene-physical{opacity:.58!important}
.ga-plant[data-story-stage="cyber"] .ga-scene-control{opacity:.72!important}
.ga-plant[data-story-stage="cyber"] .ga-scene-cyber{opacity:1!important}
.ga-plant[data-story-stage="cyber"] .ga-scene-iqai{opacity:.13!important}

.ga-plant[data-story-stage="iqai"] .ga-scene-physical{opacity:.54!important}
.ga-plant[data-story-stage="iqai"] .ga-scene-control{opacity:.70!important}
.ga-plant[data-story-stage="iqai"] .ga-scene-cyber{opacity:.76!important}
.ga-plant[data-story-stage="iqai"] .ga-scene-iqai{opacity:1!important}

/* The older generic dimming rules only target primitive shapes. Override them for
   the v6 scene so labels stay readable and 3D geometry, not text, carries depth. */
.ga-plant[data-story-stage] :where(.ga-scene-physical,.ga-scene-control,.ga-scene-cyber,.ga-scene-iqai){
  transition:opacity .34s ease,filter .3s ease,transform .3s cubic-bezier(.22,1,.36,1)
}
.ga-plant[data-story-stage="plant"] .ga-scene-physical,
.ga-plant[data-story-stage="control"] .ga-scene-control,
.ga-plant[data-story-stage="cyber"] .ga-scene-cyber,
.ga-plant[data-story-stage="iqai"] .ga-scene-iqai{
  filter:drop-shadow(0 8px 14px rgba(0,0,0,.045))
}

/* Evidence wake is now embedded in the physical scene. */
.ga-plant-scene-svg .ga-wake-path{stroke-width:2}
.ga-plant-scene-svg .ga-wake-gap{fill:#fff;stroke-width:1.4}

/* Pointer inspection remains a lens, not a custom cursor. */
.ga-plant-scene-svg [data-lens-zone]{cursor:crosshair}
.ga-plant-scene-svg [data-lens-zone]:hover{filter:brightness(.985)}

/* Mobile: preserve the scene as one engineering object and allow internal pan. */
@media(max-width:980px){
  .ga-plant-scene-svg{min-width:960px!important}
}
@media(max-width:760px){
  .ga-scene-caption{display:none}
  .ga-plant-scene-svg{min-width:900px!important}
}
@media(prefers-reduced-motion:reduce){
  .ga-process-pipe,.ga-data-link,.ga-cyber-perimeter,.ga-remote-path,.ga-evidence-scan{animation:none!important}
}


/* V6 release-safe semantic reveal.
   Do not lower text contrast to create depth; dim geometry and reveal labels by stage. */
.ga-plant[data-story-stage] :where(.ga-scene-physical,.ga-scene-control,.ga-scene-cyber,.ga-scene-iqai){
  opacity:1!important
}
.ga-plant[data-story-stage="plant"] .ga-scene-control :is(rect,path,circle,line,polygon,ellipse,polyline),
.ga-plant[data-story-stage="plant"] .ga-scene-cyber :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.16}
.ga-plant[data-story-stage="plant"] .ga-scene-iqai :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.08}

.ga-plant[data-story-stage="control"] .ga-scene-physical :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.68}
.ga-plant[data-story-stage="control"] .ga-scene-cyber :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.18}
.ga-plant[data-story-stage="control"] .ga-scene-iqai :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.10}

.ga-plant[data-story-stage="cyber"] .ga-scene-physical :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.53}
.ga-plant[data-story-stage="cyber"] .ga-scene-control :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.70}
.ga-plant[data-story-stage="cyber"] .ga-scene-iqai :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.12}

.ga-plant[data-story-stage="iqai"] .ga-scene-physical :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.50}
.ga-plant[data-story-stage="iqai"] .ga-scene-control :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.70}
.ga-plant[data-story-stage="iqai"] .ga-scene-cyber :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:.78}
.ga-plant[data-story-stage="iqai"] .ga-scene-iqai :is(rect,path,circle,line,polygon,ellipse,polyline){opacity:1}

.ga-plant[data-story-stage="plant"] :is(.ga-scene-control,.ga-scene-cyber,.ga-scene-iqai) text,
.ga-plant[data-story-stage="control"] :is(.ga-scene-cyber,.ga-scene-iqai) text,
.ga-plant[data-story-stage="cyber"] .ga-scene-iqai text{visibility:hidden}
.ga-plant[data-story-stage="control"] .ga-scene-control text,
.ga-plant[data-story-stage="cyber"] :is(.ga-scene-control,.ga-scene-cyber) text,
.ga-plant[data-story-stage="iqai"] :is(.ga-scene-control,.ga-scene-cyber,.ga-scene-iqai) text{visibility:visible}

.ga-plant[data-story-stage="plant"] :is(.ga-scene-control,.ga-scene-cyber,.ga-scene-iqai),
.ga-plant[data-story-stage="control"] :is(.ga-scene-cyber,.ga-scene-iqai),
.ga-plant[data-story-stage="cyber"] .ga-scene-iqai{pointer-events:none}
.ga-plant[data-story-stage="plant"] .ga-scene-physical,
.ga-plant[data-story-stage="control"] :is(.ga-scene-physical,.ga-scene-control),
.ga-plant[data-story-stage="cyber"] :is(.ga-scene-physical,.ga-scene-control,.ga-scene-cyber),
.ga-plant[data-story-stage="iqai"] :is(.ga-scene-physical,.ga-scene-control,.ga-scene-cyber,.ga-scene-iqai){pointer-events:auto}
.ga-evidence-plane,.ga-evidence-plane-edge,.ga-evidence-scan{pointer-events:none}
