/* ===== ambient.js ===== */
Export: window.EngineerAmbient  { pause, resume, setDensity, drop, destroy }

#ambient-web{
     position:fixed; inset:0;
     width:100%; height:100%;
     display:block;
     z-index:0;
     pointer-events:none;
   }

main > section { position:relative; z-index:1; }

/* ===== cursor.js ===== */
#silk-cursor-canvas {
     position: fixed;
     inset: 0;
     z-index: 9999;
     pointer-events: none;
   }

[data-magnetic] {
     will-change: transform;
   }

/* ===== eastereggs.js ===== */
.eng-egg-canvas{position:fixed;inset:0;width:100vw;height:100vh;
     z-index:9990;pointer-events:none}

.eng-egg-stamp{position:fixed;z-index:9991;pointer-events:none;
     font-family:var(--mono,"JBMono",ui-monospace,monospace);font-size:11px;
     line-height:1.8;letter-spacing:.08em;text-transform:uppercase;
     color:var(--silk,#F2EDE4);background:var(--panel,#121110);
     border:1px solid var(--orange,#E8622C);padding:12px 16px;opacity:0;
     transition:opacity .18s linear}

.eng-egg-stamp::before,.eng-egg-stamp::after{content:"";position:absolute;
     width:7px;height:7px;border:0 solid var(--orange,#E8622C)}

.eng-egg-stamp::before{top:-4px;left:-4px;border-width:1px 0 0 1px}

.eng-egg-stamp::after{bottom:-4px;right:-4px;border-width:0 1px 1px 0}

.eng-egg-stamp .eng-egg-doc{color:var(--orange,#E8622C);display:block}

.eng-egg-stamp .eng-egg-dim{color:var(--silk-dim,#8A837C)}

.eng-egg-stamp.center{left:50%;top:50%;
     transform:translate(-50%,-50%) scale(1.05)}

.eng-egg-stamp.center.on{transform:translate(-50%,-50%) scale(1)}

.eng-egg-stamp.corner{left:16px;bottom:16px}

.eng-egg-stamp.on{opacity:1}

html.eng-egg-blueprint{filter:invert(1) hue-rotate(180deg) saturate(1.15)
     contrast(1.02)}

html.eng-egg-blueprint img,html.eng-egg-blueprint video{
     filter:invert(1) hue-rotate(180deg)}

@media (prefers-reduced-motion:no-preference){
     html.eng-egg-blueprint,html{transition:filter .3s linear}
     .eng-egg-stamp.center{transition:opacity .18s linear,
       transform .22s cubic-bezier(.2,.9,.3,1)}
   }

/* ===== perf.js ===== */
.fx-off::after {
     animation: none !important;
     transition: none !important;
   }

.perf-reduced [data-min-tier] {
     animation: none !important;
     transition: none !important;
   }

canvas.is-offscreen { visibility: hidden; }

opts: { minTier: 0–3 (default 1),
                                            el: Element (skipped offscreen),
                                            fps: number (throttle, e.g. 30) }

opts: { onResize(w, h, dpr) }

/* ===== reveal.js ===== */
EVENTS (bubble): "reveal:in" {items}

html.rvl-js [data-reveal]{
     opacity:0;
     will-change:transform,opacity;
     transition:
       opacity   var(--rvl-dur,.62s) var(--rvl-ease,cubic-bezier(.22,.61,.36,1)),
       transform var(--rvl-dur,.62s) var(--rvl-ease,cubic-bezier(.22,.61,.36,1)),
       clip-path var(--rvl-dur,.62s) var(--rvl-ease,cubic-bezier(.22,.61,.36,1)),
       filter    var(--rvl-dur,.62s) var(--rvl-ease,cubic-bezier(.22,.61,.36,1));
   }

html.rvl-js [data-reveal="rise"]   { transform:translateY(18px); }

html.rvl-js [data-reveal="drop"]   { transform:translateY(-16px); }

html.rvl-js [data-reveal="left"]   { transform:translateX(-24px); }

html.rvl-js [data-reveal="right"]  { transform:translateX(24px); }

html.rvl-js [data-reveal="scale"]  { transform:scale(.96); }

html.rvl-js [data-reveal="blur"]   { transform:translateY(8px); filter:blur(10px); }

html.rvl-js [data-reveal="stamp"]  { transform:scale(1.035); --rvl-dur:.2s; }

html.rvl-js [data-reveal="mask-up"]{ opacity:1; }

html.rvl-js [data-reveal="mask"]   { clip-path:inset(0 100% 0 0); }

html.rvl-js [data-reveal="mask-up"]{ clip-path:inset(100% 0 0 0); }

html.rvl-js [data-reveal].is-in{ opacity:1; transform:none; filter:none; }

html.rvl-js [data-reveal="mask-up"].is-in{ clip-path:inset(0 0 0 0); }

html.rvl-js [data-reveal].is-done{ will-change:auto; }

html.rvl-instant [data-reveal]{
     transition:none !important; opacity:1 !important;
     transform:none !important; clip-path:none !important; filter:none !important;
   }

/* ===== scrollspy.js ===== */
Exports:  window.ENGSpy = { refresh, scrollToId, progress }

.eng-nav ol, #eng-nav-list { position: relative; }

.spy-ink {
     position: absolute; left: 0; bottom: -2px;
     width: 1px; height: 2px;
     background: var(--orange);
     transform-origin: 0 50%;
     pointer-events: none;
     transition: transform .38s cubic-bezier(.22,.9,.24,1), opacity .2s linear;
     opacity: 0;
   }

.spy-ink.on { opacity: 1; }

@media (prefers-reduced-motion: reduce) { .spy-ink { transition: none; } }

[data-nav-for] .spy-pct {
     font: 500 9px/1 var(--mono, monospace);
     font-style: normal;
     color: var(--silk-dim);
     margin-left: .45em;
     letter-spacing: .04em;
     opacity: .0;
     transition: opacity .25s linear;
   }

[data-nav-for][data-spy-seen] .spy-pct { opacity: .75; }

[data-nav-for][aria-current="true"] .spy-pct { color: var(--orange); opacity: 1; }

.spy-rail {
     position: fixed; left: 0; top: 0;
     width: 22px; height: 100vh; height: 100dvh;
     z-index: 60; cursor: pointer;
     touch-action: none;
   }

@media (max-width: 900px), (pointer: coarse) { .spy-rail { display: none; } }

/* ===== sound.js ===== */
.snd-toggle{
     position:fixed; left:20px; bottom:20px; z-index:900;
     display:flex; align-items:center; gap:8px;
     padding:7px 10px 6px;
     background:var(--panel); border:1px solid var(--hairline);
     color:var(--silk-dim);
     font-family:var(--mono,monospace); font-size:10px; letter-spacing:.14em;
     cursor:pointer; user-select:none;
     transition:color .2s, border-color .2s;
   }

.snd-toggle:focus-visible{ color:var(--silk); border-color:var(--orange); outline:none; }

.snd-toggle[aria-pressed="true"]{ color:var(--silk); border-color:var(--ember); }

.snd-toggle[aria-pressed="true"] .snd-toggle__state{ color:var(--orange); }

.snd-toggle__meter{ display:block; width:36px; height:12px; }

@media (max-width:700px){ .snd-toggle{ left:12px; bottom:12px; } }

Export: window.EngineerSound = { enabled, enable(), disable(), toggle(),
                                    play(name, opts) }

/* ===== textfx.js ===== */
.tfx-word{ display:inline-block; }

.tfx-char{ display:inline-block; position:relative; }

.tfx-lineclip{ display:block; overflow:hidden; }

.tfx-line{ display:block; }

[data-fx="silk"] .tfx-char{
  opacity:0; transform:translateY(-115%); filter:blur(5px);
}

[data-fx="silk"].tfx-in .tfx-char{
  animation:tfx-silk-drop var(--tfx-dur,620ms) cubic-bezier(.22,.9,.3,1) both;
  animation-delay:calc(var(--tfx-d,0ms) + var(--i,0) * var(--tfx-stag,40ms));
}

[data-fx="silk"] .tfx-char::before{
  content:""; position:absolute; left:50%; bottom:88%;
  width:1px; height:120vh;
  background:var(--hairline,#2A2724);
  transform:scaleY(0); transform-origin:top center;
  pointer-events:none;
}

[data-fx="silk"].tfx-in .tfx-char::before{
  animation:tfx-silk-thread 900ms linear both;
  animation-delay:calc(var(--tfx-d,0ms) + var(--i,0) * var(--tfx-stag,40ms) - 140ms);
}

@keyframes tfx-silk-drop{
  0%   { opacity:0; transform:translateY(-115%); filter:blur(5px);
         font-variation-settings:"wght" 300; }
  55%  { opacity:1; filter:blur(0); }
  78%  { transform:translateY(3.5%); }
  100% { opacity:1; transform:translateY(0); filter:blur(0);
         font-variation-settings:"wght" 800; }
}

@keyframes tfx-silk-thread{
  0%   { transform:scaleY(0); opacity:.8; }
  30%  { transform:scaleY(1); opacity:.8; }
  100% { transform:scaleY(1); opacity:.16; }
}

[data-fx="weight"]{
  transition:font-variation-settings var(--tfx-dur,900ms)
             cubic-bezier(.3,.7,.2,1) var(--tfx-d,0ms);
}

[data-fx="lines"] .tfx-line{ transform:translateY(112%); }

[data-fx="lines"].tfx-in .tfx-line{
  transform:translateY(0);
  transition:transform var(--tfx-dur,760ms) cubic-bezier(.16,1,.3,1);
  transition-delay:calc(var(--tfx-d,0ms) + var(--i,0) * var(--tfx-stag,80ms));
}

[data-fx="sweep"]{ position:relative; }

[data-fx="sweep"] .tfx-sweepbar{
  position:absolute; top:-0.08em; bottom:-0.08em; left:0; width:40%;
  pointer-events:none; opacity:0;
  background:linear-gradient(100deg,
    transparent 0%,
    rgba(232,98,44,0)   12%,
    rgba(232,98,44,.28) 45%,
    rgba(255,138,76,.5) 50%,
    rgba(232,98,44,.28) 55%,
    transparent 88%);
  mix-blend-mode:screen;
  transform:translateX(-101%);
}

[data-fx="sweep"].tfx-in .tfx-sweepbar{
  animation:tfx-sweep var(--tfx-dur,900ms) cubic-bezier(.6,.05,.28,.99)
            var(--tfx-d,0ms) 1 forwards;
}

@keyframes tfx-sweep{
  0%   { opacity:1; transform:translateX(-101%); }
  99%  { opacity:1; }
  100% { opacity:0; transform:translateX(253%); }
}

[data-fx="scramble"] .tfx-char.tfx-hot{ color:var(--silk-dim,#8A837C); }

[data-fx="scramble"] .tfx-char.tfx-set{ color:inherit; }

[data-fx="plot"]{ position:relative; }

[data-fx="plot"] .tfx-char{ opacity:0; }

[data-fx="plot"] .tfx-char.tfx-plotted{ opacity:1; }

.tfx-pen{
  position:absolute; top:0; left:0; width:2px; pointer-events:none;
  background:var(--orange-hi,#FF8A4C);
  box-shadow:0 0 6px 1px rgba(232,98,44,.55);
  mix-blend-mode:screen; z-index:2;
  transition:opacity 200ms linear;
}

.tfx-hidden [data-fx] .tfx-sweepbar{
  animation-play-state:paused !important;
}

.tfx-reduced [data-fx] .tfx-line{
  animation:none !important; transition:none !important;
  opacity:1 !important; transform:none !important; filter:none !important;
}

.tfx-reduced [data-fx]{ transition:none !important; }

.tfx-reduced [data-fx="silk"] .tfx-char::before{ display:none !important; }

.tfx-reduced [data-fx="sweep"] .tfx-sweepbar{ display:none !important; }

/* ===== transitions.js ===== */
.eng-tr-host{position:relative}

.eng-tr-layer{position:absolute;inset:0;pointer-events:none;z-index:3}

.eng-tr-band{position:absolute;left:0;right:0;pointer-events:none;z-index:3}

.eng-tr-curtain-clip{position:absolute;inset:0;overflow:hidden;
     pointer-events:none;z-index:4}

.eng-tr-curtain{position:absolute;left:0;top:0;width:100%;
     will-change:transform;
     background:linear-gradient(180deg,var(--void,#0A0908) 0,
       var(--void,#0A0908) calc(100% - 22px),var(--ember,#B33F14) 100%)}