/* Websense Engine (V10): boot sequence, blueprint gears, decoding labels,
   kinetic stack marquee and performance tier. Additive only: nothing here
   touches the existing scroll choreography. */

/* ---------- Boot sequence ---------- */
.ws-boot{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;background:#05080d;color:#e8f1ff;font-family:var(--font-mono,ui-monospace,monospace);transition:clip-path .9s cubic-bezier(.77,0,.18,1),visibility 0s .9s;clip-path:inset(0 0 0 0)}
html.ws-booted .ws-boot{display:none}
.ws-boot.is-done{clip-path:inset(0 0 100% 0);visibility:hidden;pointer-events:none}
.ws-boot__grid{position:absolute;inset:0;background-image:linear-gradient(rgba(var(--blue-light-rgb),.06) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--blue-light-rgb),.06) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(circle at 50% 50%,#000 20%,transparent 70%)}
.ws-boot__core{position:relative;display:grid;justify-items:center;gap:26px;width:min(440px,86vw)}
.ws-boot__gears{position:relative;width:132px;height:132px}
.ws-boot__gears svg{position:absolute;overflow:visible}
.ws-boot__gears .g1{left:0;top:0;width:96px;height:96px;animation:wsSpin 3.2s linear infinite}
.ws-boot__gears .g2{right:0;bottom:0;width:64px;height:64px;animation:wsSpin 2.2s linear infinite reverse}
.ws-boot__gears path{fill:rgba(var(--blue-light-rgb),.08);stroke:var(--blue-light);stroke-width:1.4;vector-effect:non-scaling-stroke}
.ws-boot__gears circle{fill:none;stroke:var(--cyan);stroke-width:1.4;vector-effect:non-scaling-stroke}
@keyframes wsSpin{to{transform:rotate(360deg)}}
.ws-boot__title{display:flex;justify-content:space-between;width:100%;font-size:12px;letter-spacing:.2em}
.ws-boot__title b{color:var(--blue-light);font-weight:600}
.ws-boot__pct{font-variant-numeric:tabular-nums;color:#fff}
.ws-boot__bar{position:relative;width:100%;height:2px;background:rgba(var(--blue-light-rgb),.15);overflow:hidden}
.ws-boot__bar i{position:absolute;inset:0;background:linear-gradient(90deg,var(--blue-light),var(--cyan),#ff7a59);transform:scaleX(var(--boot,0));transform-origin:0 50%;transition:transform .25s ease-out}
.ws-boot__log{width:100%;min-height:96px;margin:0;padding:0;list-style:none;font-size:11px;line-height:1.75;color:#7f90a8}
.ws-boot__log li{opacity:0;transform:translateY(4px);animation:wsLogIn .3s ease forwards}
.ws-boot__log li b{color:#64efc0;font-weight:600}
@keyframes wsLogIn{to{opacity:1;transform:none}}
.ws-boot__skip{position:absolute;right:24px;bottom:22px;border:1px solid rgba(var(--blue-light-rgb),.3);background:transparent;color:#9fb0c6;font:600 10px/1 var(--font-mono,ui-monospace,monospace);letter-spacing:.18em;padding:9px 12px;border-radius:999px;cursor:pointer}
.ws-boot__skip:hover{color:#fff;border-color:var(--blue-light)}

/* ---------- Blueprint gears behind the mascot ---------- */
.ws-gears{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.55}
.ws-gears svg{position:absolute;overflow:visible;will-change:transform}
.ws-gears path{fill:url(#wsGearFill);stroke:rgba(var(--blue-light-rgb),.55);stroke-width:1;vector-effect:non-scaling-stroke}
.ws-gears circle{fill:none;stroke:rgba(var(--cyan-rgb),.5);stroke-width:1;vector-effect:non-scaling-stroke}
.ws-gears .ws-gear--accent path{stroke:rgba(255,122,89,.55)}
.ws-gears__hud{position:absolute;font:600 9px/1 var(--font-mono,ui-monospace,monospace);letter-spacing:.16em;color:rgba(var(--blue-light-rgb),.55);text-transform:uppercase;white-space:nowrap}
@media(max-width:768px){.ws-gears{opacity:.35}}

/* ---------- Kinetic stack marquee ---------- */
.ws-stack{position:relative;padding:34px 0;border-top:1px solid rgba(var(--blue-light-rgb),.1);border-bottom:1px solid rgba(var(--blue-light-rgb),.1);background:linear-gradient(180deg,#070b12,#0a111c 50%,#070b12);overflow:hidden}
.ws-stack::before,.ws-stack::after{content:'';position:absolute;top:0;bottom:0;width:12vw;z-index:2;pointer-events:none}
.ws-stack::before{left:0;background:linear-gradient(90deg,#070b12,transparent)}
.ws-stack::after{right:0;background:linear-gradient(270deg,#070b12,transparent)}
.ws-stack__row{display:flex;width:max-content;will-change:transform}
.ws-stack__row+.ws-stack__row{margin-top:14px}
.ws-stack__set{display:flex;align-items:center;flex-shrink:0}
.ws-stack__item{display:inline-flex;align-items:center;gap:22px;padding-right:22px;font-size:clamp(28px,4.2vw,64px);font-weight:800;letter-spacing:-.04em;line-height:1;color:#fff;white-space:nowrap;transition:color .3s ease}
.ws-stack__row--alt .ws-stack__item{color:transparent;-webkit-text-stroke:1px rgba(var(--blue-light-rgb),.45)}
.ws-stack__item svg{width:.55em;height:.55em;flex-shrink:0}
.ws-stack__item svg path{fill:none;stroke:var(--blue-light);stroke-width:1.5;vector-effect:non-scaling-stroke}
.ws-stack__row--alt .ws-stack__item svg path{stroke:#ff7a59}
@media(hover:hover){.ws-stack__item:hover{color:var(--blue-light)}.ws-stack__row--alt .ws-stack__item:hover{color:#fff;-webkit-text-stroke-color:transparent}}

/* ---------- Decoding labels ---------- */
.ws-decoding{font-variant-ligatures:none}

/* ---------- Performance tier (system panel) ---------- */
.ws-tier{display:flex;gap:6px;margin-top:10px}
.ws-tier button{flex:1;padding:8px 0;border-radius:8px;border:1px solid rgba(var(--blue-light-rgb),.2);background:transparent;color:#8a94a6;font:600 10px/1 var(--font-mono,ui-monospace,monospace);letter-spacing:.12em;cursor:pointer;transition:color .2s,border-color .2s,background .2s}
.ws-tier button[aria-pressed="true"]{color:#04101f;background:var(--blue-light);border-color:var(--blue-light)}
.ws-fps{display:flex;justify-content:space-between;margin-top:10px;font:600 10px/1 var(--font-mono,ui-monospace,monospace);letter-spacing:.12em;color:#6c788a}
.ws-fps b{color:#64efc0;font-weight:600}
html.ws-saver .ws-gears,html.ws-saver .ws-stack__row{animation:none!important}
html.ws-saver .ws-gears{display:none}

@media(prefers-reduced-motion:reduce){.ws-boot{display:none}.ws-boot__gears svg{animation:none}}

/* Failsafe: never let the boot screen outlive a script failure. */
.ws-boot{animation:wsBootFailsafe .6s 4.5s forwards}
@keyframes wsBootFailsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
html.ws-saver #particleCanvas,html.ws-saver #heroFx{display:none}
.ws-gears svg{left:0;top:0;width:100%;height:100%}
.ws-stack__item svg{animation:wsSpin 9s linear infinite}
.ws-stack__row--alt .ws-stack__item svg{animation-direction:reverse}
@media(hover:hover){.ws-stack__item:hover svg{animation-duration:1.6s}}
html.ws-saver .ws-stack__item svg{animation:none}
@media(prefers-reduced-motion:reduce){.ws-stack__item svg{animation:none}.ws-stack__row{transform:none!important}}
