/* Nova OS boot intro (see boot.js) */
#novaBoot{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse at 50% 55%,#0b1622 0%,#03070c 62%);color:#fff;font-family:"Segoe UI Variable Display","Segoe UI",system-ui,-apple-system,sans-serif;cursor:none;transition:opacity .6s ease,transform .6s ease}
#novaBoot.nb-out{opacity:0;transform:scale(1.04);pointer-events:none}
#novaBoot canvas{position:absolute;inset:0;width:100%;height:100%}
.nb-flash{position:absolute;left:50%;top:50%;width:140vmax;height:140vmax;margin:-70vmax 0 0 -70vmax;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.95) 0%,rgba(255,170,90,.5) 9%,rgba(17,103,216,.18) 22%,transparent 42%);opacity:0;pointer-events:none}
.nb-ring{position:absolute;left:50%;top:50%;width:calc(var(--nb-vmin,1vmin)*40);height:calc(var(--nb-vmin,1vmin)*40);margin:calc(var(--nb-vmin,1vmin)*-20) 0 0 calc(var(--nb-vmin,1vmin)*-20);border-radius:50%;border:3px solid #ff7a1a;opacity:0;transform:scale(.1);pointer-events:none}
.nb-ring.nb-blue{border-color:#3d8bff;border-width:2px}
.nb-stage{position:relative;display:grid;justify-items:center;gap:calc(var(--nb-vmin,1vmin)*3.2)}
.nb-logo{position:relative;width:min(calc(var(--nb-vmin,1vmin)*30),220px);aspect-ratio:1;opacity:0;transform:scale(.35);filter:drop-shadow(0 0 0 rgba(255,106,0,0))}
.nb-logo svg{display:block;width:100%;height:100%;overflow:visible}
.nb-logo .nb-n{stroke:#fff;stroke-width:6;stroke-linejoin:round;fill:#fff;fill-opacity:0;stroke-dasharray:1800;stroke-dashoffset:1800}
.nb-logo .nb-spark{transform-origin:414px 106px;transform:scale(0) rotate(-90deg)}
.nb-gleam{position:absolute;inset:0;border-radius:22.6%;overflow:hidden;pointer-events:none}
.nb-gleam:after{content:"";position:absolute;top:-30%;bottom:-30%;width:35%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-18deg)}
.nb-word{display:flex;align-items:baseline;gap:.5em;font-size:min(calc(var(--nb-vmin,1vmin)*7),52px);font-weight:800;letter-spacing:.34em;margin-right:-.34em}
.nb-word span{display:inline-block;opacity:0;transform:translateY(.5em);filter:blur(6px)}
.nb-word .nb-os{font-size:.38em;font-weight:700;letter-spacing:.2em;padding:.35em .6em .3em .8em;border-radius:99px;background:linear-gradient(90deg,#ff6a00,#1167d8);align-self:center}
.nb-hint{position:absolute;bottom:5vh;left:0;right:0;text-align:center;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.42);opacity:0;transition:opacity .5s}
.nb-gate .nb-hint{opacity:1;animation:nbPulse 1.6s ease-in-out infinite}
#novaBoot.nb-gate{cursor:pointer}
.nb-gate .nb-logo{opacity:.85;transform:scale(.6)}
.nb-gate .nb-n{fill-opacity:1;stroke-dashoffset:0;stroke-width:0}
.nb-gate .nb-spark{transform:none}

/* the timeline: classes are added by boot.js */
.nb-burst .nb-flash{animation:nbFlash .7s ease-out forwards}
.nb-burst .nb-ring{animation:nbRing 1.1s cubic-bezier(.15,.7,.3,1) forwards}
.nb-burst .nb-ring.nb-blue{animation-delay:.09s;animation-duration:1.3s}
.nb-burst .nb-logo{animation:nbPop .9s cubic-bezier(.2,1.6,.4,1) forwards,nbGlow 2.8s ease-out forwards}
.nb-burst .nb-n{animation:nbDraw .75s .12s cubic-bezier(.6,0,.3,1) forwards,nbFill .35s .8s ease-out forwards}
.nb-spark-on .nb-spark{animation:nbSpark .7s cubic-bezier(.2,1.8,.4,1) forwards}
.nb-word-on .nb-word span{animation:nbLetter .6s cubic-bezier(.2,.9,.3,1) forwards}
.nb-word-on .nb-gleam:after{animation:nbGleam .9s .15s ease-in-out forwards}
@keyframes nbFlash{0%{opacity:0;transform:scale(.2)}18%{opacity:1}100%{opacity:0;transform:scale(1)}}
@keyframes nbRing{0%{opacity:.95;transform:scale(.15)}100%{opacity:0;transform:scale(5.5)}}
@keyframes nbPop{0%{opacity:0;transform:scale(.35)}100%{opacity:1;transform:scale(1)}}
@keyframes nbGlow{0%{filter:drop-shadow(0 0 60px rgba(255,140,40,.95))}100%{filter:drop-shadow(0 14px 40px rgba(255,106,0,.28))}}
@keyframes nbDraw{to{stroke-dashoffset:0}}
@keyframes nbFill{to{fill-opacity:1;stroke-width:0}}
@keyframes nbSpark{0%{transform:scale(0) rotate(-90deg)}100%{transform:scale(1) rotate(0)}}
@keyframes nbLetter{to{opacity:1;transform:none;filter:none}}
@keyframes nbGleam{to{left:130%}}
@keyframes nbPulse{50%{color:rgba(255,255,255,.8)}}
@media (prefers-reduced-motion:reduce){#novaBoot canvas,.nb-ring,.nb-flash{display:none}.nb-burst .nb-logo,.nb-burst .nb-n,.nb-spark-on .nb-spark,.nb-word-on .nb-word span{animation-duration:.01s;animation-delay:0s}}
