/* ==========================================================================
   LOTØShield — immersive homepage layer
   Loaded by index.html only. Design language: the plant's own live system.
   Voices: Conthrax (display, brand) · Mulish (body, brand) ·
           IBM Plex Mono (telemetry: timestamps, IDs, statuses)
   Accents: signal yellow #F5B700 (status marks only) ·
            verified green #2E9E6B · telemetry cyan #35A7DC (from the logomark)
   ========================================================================== */

:root{
  --mono:"IBM Plex Mono","Consolas",monospace;
  --cyan:#35A7DC;
  --panel:#0E1C30;
}

}

/* --------------------------------------------------------------------------
   Signature: the live lockout sequence (pinned scroll scrub)
   -------------------------------------------------------------------------- */
.seq{padding:0;position:relative}
.seq-track{height:520vh;position:relative}
.seq-sticky{
  position:sticky;top:0;height:100vh;overflow:hidden;
  display:flex;flex-direction:column;justify-content:center;
  background:
    linear-gradient(rgba(53,167,220,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(53,167,220,.045) 1px,transparent 1px),
    radial-gradient(120% 90% at 70% 10%,#0D1B2E 0%,var(--navy-950) 62%);
  background-size:44px 44px,44px 44px,cover;
}
.seq-grid{
  display:grid;grid-template-columns:minmax(300px,420px) 1fr;
  gap:clamp(2rem,5vw,4.5rem);align-items:center;width:100%;
}
.seq-kicker{margin-bottom:2.2rem}
.seq-kicker h2{margin:.55rem 0 .4rem;color:#fff}
.seq-kicker p{color:var(--steel-300);max-width:34ch;margin:0}

/* step list */
.seq-steps{list-style:none;margin:0;padding:0;position:relative}
.seq-steps::before{
  content:"";position:absolute;left:13px;top:14px;bottom:14px;width:2px;
  background:rgba(185,197,211,.16);
}
.seq-steps li{
  position:relative;padding:.62rem 0 .62rem 44px;
  color:var(--steel-500);transition:color .35s ease;
}
.seq-steps .s-idx{
  position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:.68rem;font-weight:600;
  background:var(--navy-950);border:2px solid rgba(185,197,211,.28);
  color:var(--steel-500);transition:all .35s ease;z-index:1;
}
.seq-steps .s-name{
  display:block;font-weight:800;font-size:.98rem;color:inherit;
  letter-spacing:.02em;
}
.seq-steps .s-desc{
  display:block;font-size:.84rem;line-height:1.45;margin-top:2px;
  max-width:30ch;opacity:0;max-height:0;overflow:hidden;
  transition:opacity .4s ease,max-height .4s ease;
}
.seq-steps li.done{color:var(--steel-300)}
.seq-steps li.done .s-idx{
  border-color:var(--green);color:var(--green);background:rgba(46,158,107,.12);
}
.seq-steps li.active{color:#fff}
.seq-steps li.active .s-idx{
  border-color:var(--yellow);color:var(--yellow);
  box-shadow:0 0 0 5px rgba(245,183,0,.12);
}
.seq-steps li.active .s-desc{opacity:1;max-height:5.2em}

/* schematic panel */
.seq-panel{
  position:relative;border:1px solid rgba(185,197,211,.16);border-radius:14px;
  background:linear-gradient(180deg,rgba(14,28,48,.92),rgba(8,17,32,.96));
  padding:clamp(1rem,2.4vw,1.8rem);
}
/* drafting corner ticks — the drawing-sheet reference */
.seq-panel::before{
  content:"";position:absolute;inset:8px;pointer-events:none;
  background:
    linear-gradient(var(--cyan),var(--cyan)) 0 0/14px 1.5px,
    linear-gradient(var(--cyan),var(--cyan)) 0 0/1.5px 14px,
    linear-gradient(var(--cyan),var(--cyan)) 100% 0/14px 1.5px,
    linear-gradient(var(--cyan),var(--cyan)) 100% 0/1.5px 14px,
    linear-gradient(var(--cyan),var(--cyan)) 0 100%/14px 1.5px,
    linear-gradient(var(--cyan),var(--cyan)) 0 100%/1.5px 14px,
    linear-gradient(var(--cyan),var(--cyan)) 100% 100%/14px 1.5px,
    linear-gradient(var(--cyan),var(--cyan)) 100% 100%/1.5px 14px;
  background-repeat:no-repeat;opacity:.5;
}
.seq-panel .p-head{
  display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;
  color:var(--steel-500);margin:0 4px 10px;
}
.seq-panel .p-head b{color:var(--steel-300);font-weight:600}
.seq-svg{display:block;width:100%;height:auto}

/* schematic state styling (driven by data-step on .seq-panel) */
.seq-svg .pipe{stroke:#41546C;stroke-width:3;fill:none}
.seq-svg .sym{stroke:#8FA0B4;stroke-width:2;fill:none}
.seq-svg .lbl{font-family:var(--mono);font-size:11px;fill:#8FA0B4;letter-spacing:.06em}
.seq-svg .flow{stroke:var(--cyan);stroke-width:3;fill:none;stroke-dasharray:10 14;
  animation:flowmove 1.4s linear infinite;opacity:1;transition:opacity .5s}
@keyframes flowmove{to{stroke-dashoffset:-24}}
.seq-svg .valve-gate{transform-origin:260px 150px;transition:transform .6s ease;fill:#8FA0B4}
.seq-svg .lock{opacity:0;transition:opacity .5s ease}
.seq-svg .lock rect,.seq-svg .lock path{stroke:var(--yellow);fill:none;stroke-width:2.4}
.seq-svg .lock .lockbody{fill:var(--yellow);stroke:none}
.seq-svg .check{opacity:0;transition:opacity .5s ease}
.seq-svg .meter-fill{transition:height .35s linear, y .35s linear;fill:var(--cyan)}
.seq-svg .meter-val{font-family:var(--mono);font-size:15px;font-weight:600;fill:#fff}
.seq-svg .crew{opacity:0;transition:opacity .5s ease}
.seq-svg .banner{opacity:0;transition:opacity .5s ease}
.seq-svg .banner text{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.18em}

[data-step="1"] .seq-svg .flow{opacity:1}
[data-step]:not([data-step="0"]):not([data-step="1"]) .seq-svg .valve-gate{transform:rotate(90deg)}
[data-step="2"] .seq-svg .flow,[data-step="3"] .seq-svg .flow,[data-step="4"] .seq-svg .flow,
[data-step="5"] .seq-svg .flow,[data-step="6"] .seq-svg .flow{opacity:0;animation-play-state:paused}
[data-step="3"] .seq-svg .lock,[data-step="4"] .seq-svg .lock,[data-step="5"] .seq-svg .lock,
[data-step="6"] .seq-svg .lock{opacity:1}
[data-step="4"] .seq-svg .check,[data-step="5"] .seq-svg .check,[data-step="6"] .seq-svg .check{opacity:1}
[data-step="5"] .seq-svg .crew{opacity:1}
[data-step="6"] .seq-svg .banner{opacity:1}
[data-step="6"] .seq-svg .lock{opacity:.35}

/* event log */
.seq-log{
  margin-top:14px;border-top:1px dashed rgba(185,197,211,.2);
  padding:10px 4px 0;font-family:var(--mono);font-size:.72rem;
  line-height:1.9;color:var(--steel-300);min-height:11.4em;
}
.seq-log .log-line{
  display:flex;gap:1rem;opacity:0;transform:translateY(4px);
  transition:opacity .4s ease,transform .4s ease;
}
.seq-log .log-line.show{opacity:1;transform:none}
.seq-log .log-t{color:var(--cyan);flex:0 0 auto}
.seq-log .log-m{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seq-log .log-s{flex:0 0 auto;font-weight:600}
.seq-log .st-ok{color:var(--green)}
.seq-log .st-warn{color:var(--yellow)}
.seq-log .st-info{color:var(--steel-300)}

/* progress rail */
.seq-rail{
  position:absolute;left:0;right:0;bottom:0;height:3px;
  background:rgba(185,197,211,.12);
}
.seq-rail span{
  display:block;height:100%;width:0;
  background:linear-gradient(90deg,var(--cyan),var(--yellow));
}

/* --------------------------------------------------------------------------
   Cursor spotlight on dark cards (subtle, GPU-cheap)
   -------------------------------------------------------------------------- */
.on-dark .card{position:relative;overflow:hidden}
.on-dark .card::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),
             rgba(53,167,220,.14),transparent 65%);
  opacity:0;transition:opacity .35s ease;
}
.on-dark .card:hover::before{opacity:1}

/* --------------------------------------------------------------------------
   Button sheen (primary CTA only)
   -------------------------------------------------------------------------- */
.btn-primary{position:relative;overflow:hidden}
.btn-primary::after{
  content:"";position:absolute;top:0;bottom:0;width:44%;left:-60%;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.34),transparent);
  transform:skewX(-18deg);transition:left .55s ease;
}
.btn-primary:hover::after{left:130%}

/* --------------------------------------------------------------------------
   Static fallbacks: small screens & reduced motion
   -------------------------------------------------------------------------- */
@media (max-width:920px){
  .seq-track{height:auto}
  .seq-sticky{position:static;height:auto;padding:64px 0}
  .seq-grid{grid-template-columns:1fr}
  .seq-rail{display:none}
}
.seq.seq-static .seq-track{height:auto}
.seq.seq-static .seq-sticky{position:static;height:auto;padding:64px 0}
.seq.seq-static .seq-rail{display:none}
.seq.seq-static .seq-steps li{color:var(--steel-300)}
.seq.seq-static .seq-steps li .s-desc{opacity:1;max-height:none}
.seq.seq-static .seq-steps li .s-idx{
  border-color:var(--green);color:var(--green);background:rgba(46,158,107,.12);
}
.seq.seq-static .seq-log .log-line{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .seq-svg .flow{animation:none}
  .btn-primary::after{display:none}
}

/* ==========================================================================
   Opening journey — monolith-in-a-void scroll sequence (index only)
   ========================================================================== */
.journey{padding:0;position:relative;background:#060D18}
.journey.journey-off{display:none}
.journey-track{height:420vh;position:relative}
.journey-sticky{position:sticky;top:0;height:100vh;overflow:hidden}
.journey-sticky canvas{display:block;width:100%;height:100%}

/* captions: monumental, thin, wide-tracked — cinema voice, not content voice */
.j-caption{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  text-align:center;pointer-events:none;width:min(92vw,1100px);
  opacity:0;transition:opacity .5s ease;
}
.j-caption.on{opacity:1}
.j-caption .j-h{
  display:block;font-family:var(--font-body);font-weight:300;
  font-size:clamp(2.1rem,6.4vw,5.2rem);letter-spacing:.32em;text-indent:.32em;
  color:#EAF1F8;text-transform:uppercase;line-height:1.14;
  text-shadow:0 2px 30px rgba(6,13,24,.8);
}
.j-caption .j-s{
  display:block;margin-top:1.1rem;font-family:var(--mono);
  font-size:.78rem;letter-spacing:.22em;color:var(--cyan);
  text-transform:uppercase;
}
.j-caption[data-tone="green"] .j-s{color:var(--green)}

/* scroll cue + skip */
.j-cue{
  position:absolute;left:50%;bottom:26px;transform:translateX(-50%);
  font-family:var(--mono);font-size:.66rem;letter-spacing:.3em;
  color:var(--steel-500);text-transform:uppercase;pointer-events:none;
  animation:cue-bob 2.4s ease-in-out infinite;
}
@keyframes cue-bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,7px)}}
.j-skip{
  position:absolute;right:26px;bottom:22px;
  font-family:var(--mono);font-size:.68rem;letter-spacing:.22em;
  color:var(--steel-300);text-decoration:none;text-transform:uppercase;
  border:1px solid rgba(185,197,211,.3);border-radius:999px;
  padding:.55em 1.1em;background:rgba(6,13,24,.45);backdrop-filter:blur(4px);
}
.j-skip:hover{color:#fff;border-color:rgba(185,197,211,.6)}

/* handoff scrim: fades the scene into the page's navy as the journey ends */
.j-scrim{
  position:absolute;inset:0;pointer-events:none;opacity:0;
  background:var(--navy-950);
}

/* film grain — quiet atmosphere over the whole page */
.grain{
  position:fixed;inset:-50%;pointer-events:none;z-index:998;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .6 0'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode:overlay;
}
@media (prefers-reduced-motion:reduce){.j-cue{animation:none}}
