:root{
  /* cool-white type; neon accent lives in the particles + tiny UI bits */
  --bg:#080a0e; --panel:#0d1016;
  --ink:#eef3fb; --ink-2:#c7d0e0; --muted:#97a1b4; --soft:#5b6474;
  --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.16);
  --accent:#34d8ee; --accent-2:#2fd39a;
  --blue:#5b8cff; --cyan:#34d8ee; --green:#2fd39a; --violet:#8b7bff;
  --glass:rgba(255,255,255,.04);
  --mono:"SF Mono",ui-monospace,"Cascadia Code",Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);overflow-x:hidden;
  font-family:Inter,"Segoe UI",-apple-system,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
#bg{transition:opacity .4s ease}   /* dimmed on scroll by JS */
a{color:inherit;text-decoration:none}
.soft{color:var(--soft)}
.mono{font-family:var(--mono)}

/* radial atmosphere behind the canvas */
#bg{position:fixed;inset:0;z-index:0;
  background:
    radial-gradient(60% 50% at 50% 42%, rgba(43,74,155,.35), transparent 70%),
    radial-gradient(50% 40% at 78% 20%, rgba(52,216,238,.14), transparent 70%),
    radial-gradient(50% 50% at 20% 80%, rgba(47,211,154,.12), transparent 70%),
    #05060a;}
#matrix{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:.72;
  -webkit-mask:radial-gradient(80% 70% at 52% 44%,transparent 8%,rgba(0,0,0,.6) 40%,#000 78%);
  mask:radial-gradient(80% 70% at 52% 44%,transparent 8%,rgba(0,0,0,.6) 40%,#000 78%)}
#gl{position:absolute;inset:0;width:100%;height:100%;display:block}
.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(120% 100% at 50% 45%, transparent 45%, rgba(5,6,10,.85) 100%)}
.grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ===== preloader ===== */
#preloader{position:fixed;inset:0;z-index:50;background:#05060a;display:flex;flex-direction:column;
  justify-content:space-between;padding:42px 52px;transition:opacity .8s ease, visibility .8s}
#preloader.done{opacity:0;visibility:hidden;pointer-events:none}
.pl-top,.pl-bottom{display:flex;justify-content:space-between;align-items:flex-start}
.pl-title{font-size:clamp(30px,5vw,58px);font-weight:800;letter-spacing:-1.5px;line-height:.9}
.pl-title span{display:block;font-size:14px;font-weight:600;letter-spacing:3px;color:var(--muted);margin-top:8px}
.pl-year,.pl-bottom span{font-family:var(--mono);font-size:11px;letter-spacing:1.5px;color:var(--soft);text-align:right;line-height:1.6}
.pl-bottom span{text-align:left}
.pl-center{position:absolute;inset:0;display:grid;place-items:center}
.pl-ring{width:150px;height:150px;transform:rotate(-90deg)}
.pl-ring .track{fill:none;stroke:rgba(255,255,255,.08);stroke-width:1.5}
.pl-ring .prog{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;
  stroke-dasharray:301.6;stroke-dashoffset:301.6;filter:drop-shadow(0 0 6px rgba(52,216,238,.65))}
.pl-pct{position:absolute;font-family:var(--mono);font-size:26px;font-weight:600;letter-spacing:1px}
.pl-pct i{font-style:normal;font-size:14px;color:var(--muted);margin-left:2px}

@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
