:root{
  --bg:#000;
  --fg:#fff;
  --muted:rgba(255,255,255,.5);
  --dim:rgba(255,255,255,.14);
  --dimmer:rgba(255,255,255,.07);
  --ease:cubic-bezier(.16,1,.3,1);
}

*{margin:0;padding:0;box-sizing:border-box}

html,body{
  height:100%;
  background:var(--bg);
  color:var(--fg);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

body{cursor:none}
a{color:inherit;text-decoration:none}
::selection{background:var(--fg);color:var(--bg)}

/* Preloader */
#preloader{
  position:fixed;inset:0;z-index:10000;background:#000;
  display:flex;align-items:center;justify-content:center;
  transition:opacity .6s ease,visibility .6s ease;
}
#preloader.hidden{opacity:0;visibility:hidden}
.preloader-inner{text-align:center;width:min(90vw,720px);opacity:0;animation:preIn .6s ease .15s forwards}
@keyframes preIn{to{opacity:1}}
.preloader-text{
  font-family:'JetBrains Mono',monospace;
  font-size:clamp(13px,2.4vw,20px);
  letter-spacing:.3em;font-weight:500;
  margin-bottom:28px;word-spacing:.3em;
}
.preloader-bar{width:100%;height:1px;background:var(--dim);position:relative;overflow:hidden}
.preloader-bar-fill{height:100%;background:var(--fg);width:0;transition:width .1s linear}
.preloader-meta{
  margin-top:16px;font-family:'JetBrains Mono',monospace;
  font-size:10px;letter-spacing:.35em;color:var(--muted);
}

/* Background layers (minimal for perf) */
#binary{position:fixed;inset:0;z-index:0;opacity:.35}
.grid-overlay{
  position:fixed;inset:0;z-index:1;pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);
  background-size:90px 90px;
  mask-image:radial-gradient(ellipse at center,#000 0%,transparent 80%);
  -webkit-mask-image:radial-gradient(ellipse at center,#000 0%,transparent 80%);
}
.vignette{
  position:fixed;inset:0;z-index:2;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 0%,transparent 50%,rgba(0,0,0,.7) 100%);
}

/* Cursor */
.cursor{
  position:fixed;top:0;left:0;width:6px;height:6px;background:var(--fg);
  border-radius:50%;pointer-events:none;z-index:9999;
  transform:translate3d(-100px,-100px,0);
  transition:width .2s,height .2s,opacity .2s;
  mix-blend-mode:difference;
  will-change:transform;
}
.cursor-ring{
  position:fixed;top:0;left:0;width:34px;height:34px;border:1px solid var(--fg);
  border-radius:50%;pointer-events:none;z-index:9998;
  transform:translate3d(-100px,-100px,0);
  transition:width .25s,height .25s,opacity .25s;
  opacity:.4;mix-blend-mode:difference;
  will-change:transform;
}
.cursor.hover{width:0;height:0}
.cursor-ring.hover{width:56px;height:56px;opacity:1}

.trail-char{
  position:fixed;top:0;left:0;
  font-family:'JetBrains Mono',monospace;
  font-size:12px;color:rgba(255,255,255,.7);
  pointer-events:none;z-index:9997;user-select:none;
  animation:trailFall .8s linear forwards;
}
@keyframes trailFall{
  0%{opacity:.8;transform:translate(0,0)}
  100%{opacity:0;transform:translate(6px,30px)}
}

.click-ring{
  position:fixed;top:0;left:0;width:6px;height:6px;
  border:1px solid var(--fg);border-radius:50%;
  pointer-events:none;z-index:9996;
  animation:clickRing .5s ease-out forwards;
  mix-blend-mode:difference;
}
@keyframes clickRing{
  0%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(12)}
}

/* Layout */
.container{position:relative;z-index:10;min-height:100vh;display:flex;flex-direction:column}

/* Nav */
nav{
  display:flex;justify-content:space-between;align-items:center;
  padding:24px 36px;font-size:12px;
  letter-spacing:.16em;text-transform:uppercase;
  opacity:0;animation:fadeUp .8s var(--ease) .15s forwards;
}
.logo{display:flex;align-items:center;gap:14px;font-weight:600}
.logo-mark{
  width:24px;height:24px;border:1px solid var(--fg);
  display:flex;align-items:center;justify-content:center;
  font-size:0;font-weight:700;transition:all .5s var(--ease);
  position:relative;
}
.logo-mark::after{
  content:'';position:absolute;inset:3px;border:1px solid var(--dimmer);
  transition:all .5s var(--ease);
}
.logo:hover .logo-mark{transform:rotate(45deg);background:var(--fg);color:var(--bg)}
.logo:hover .logo-mark::after{transform:rotate(-90deg);border-color:var(--bg)}

.nav-right{display:flex;align-items:center;gap:28px}
.nav-link{position:relative;color:var(--muted);transition:color .25s}
.nav-link::after{
  content:'';position:absolute;left:0;bottom:-4px;height:1px;width:0;
  background:var(--fg);transition:width .3s var(--ease);
}
.nav-link:hover{color:var(--fg)}
.nav-link:hover::after{width:100%}
.nav-link.active{color:var(--fg)}
.nav-link.active::after{width:100%}

.nav-status{display:flex;align-items:center;gap:9px;color:var(--muted);font-family:'JetBrains Mono',monospace;font-size:11px}
.status-dot{
  width:6px;height:6px;background:var(--fg);border-radius:50%;
  animation:pulse 2.2s infinite;box-shadow:0 0 6px rgba(255,255,255,.5);
}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}

/* Hero (home) */
.hero{
  flex:1;display:flex;flex-direction:column;justify-content:center;
  align-items:center;text-align:center;padding:0 36px;position:relative;
}
.hero-label{
  font-size:11px;letter-spacing:.4em;text-transform:uppercase;
  color:var(--muted);margin-bottom:32px;
  display:flex;align-items:center;gap:16px;
}
.hero-label::before,.hero-label::after{
  content:'';width:40px;height:1px;background:var(--dim);
}
.title{
  font-size:clamp(48px,9vw,148px);
  font-weight:800;letter-spacing:-.05em;line-height:.92;
  margin-bottom:24px;position:relative;
  opacity:0;animation:titleReveal 1.2s var(--ease) .6s forwards;
}
.title-line{display:block;position:relative}
.title-word{display:inline-block;position:relative;cursor:none}
.title-word::before,.title-word::after{
  content:attr(data-text);position:absolute;inset:0;
  opacity:0;pointer-events:none;
}
.title-word.glitching::before{
  opacity:1;animation:glitch1 .3s steps(2) infinite;mix-blend-mode:difference;
}
.title-word.glitching::after{
  opacity:1;animation:glitch2 .3s steps(2) infinite;mix-blend-mode:difference;
}
@keyframes glitch1{
  0%{transform:translate(0)}
  25%{transform:translate(-2px,1px) skewX(-2deg)}
  50%{transform:translate(2px,-1px)}
  75%{transform:translate(-1px,2px) skewX(1deg)}
  100%{transform:translate(0)}
}
@keyframes glitch2{
  0%{transform:translate(0)}
  25%{transform:translate(2px,-1px) skewX(2deg)}
  50%{transform:translate(-2px,1px)}
  75%{transform:translate(1px,-2px) skewX(-1deg)}
  100%{transform:translate(0)}
}
.subtitle{
  font-size:clamp(11px,1.1vw,14px);
  letter-spacing:.5em;text-transform:uppercase;
  color:var(--muted);font-weight:400;
}
.subtitle .sep{margin:0 12px;opacity:.4}

/* Marquee */
.marquee{
  width:min(1000px,100%);margin-top:56px;
  border-top:1px solid var(--dim);border-bottom:1px solid var(--dim);
  padding:16px 0;overflow:hidden;position:relative;
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.marquee-track{
  display:flex;gap:36px;white-space:nowrap;
  animation:marquee 32s linear infinite;
  font-family:'JetBrains Mono',monospace;
  font-size:12px;letter-spacing:.22em;color:var(--muted);
}
.marquee-track:hover{animation-play-state:paused}
.marquee-track span{display:inline-block}
.marquee-track .dot{color:var(--fg);opacity:.5}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Cards (shared: roles on home, steps on subpages) */
.cards{
  display:flex;width:min(860px,100%);
  margin-top:48px;border:1px solid var(--dim);
}
.card{
  flex:1;padding:26px 28px;background:rgba(0,0,0,.5);
  text-align:left;position:relative;overflow:hidden;
  transition:transform .3s var(--ease),color .3s;
  transform-style:preserve-3d;
}
.card+.card{border-left:1px solid var(--dim)}
.card::before{
  content:'';position:absolute;inset:0;background:var(--fg);
  transform:translateY(101%);
  transition:transform .5s var(--ease);z-index:0;
}
.card:hover::before{transform:translateY(0)}
.card-inner{position:relative;z-index:1;transition:color .25s}
.card:hover .card-inner,.card:hover .card-inner *{color:var(--bg)!important}
.card-glow{
  position:absolute;width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.1),transparent 70%);
  pointer-events:none;left:var(--gx,50%);top:var(--gy,50%);
  transform:translate(-50%,-50%);
  opacity:0;transition:opacity .25s;z-index:0;
}
.card:hover .card-glow{opacity:1}
.card-label{
  font-size:10px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--muted);margin-bottom:10px;
  font-family:'JetBrains Mono',monospace;
  transition:color .25s;
}
.card-title{
  font-size:20px;font-weight:600;letter-spacing:-.02em;margin-bottom:6px;
}
.card-desc{font-size:13px;color:var(--muted);line-height:1.5;transition:color .25s}
.card-arrow{
  position:absolute;bottom:22px;right:28px;font-size:16px;
  opacity:0;transform:translateX(-6px);
  transition:opacity .25s,transform .25s;z-index:1;
}
.card:hover .card-arrow{opacity:1;transform:translateX(0)}

/* Page content (subpages) */
.page-content{
  flex:1;display:flex;flex-direction:column;justify-content:center;
  align-items:center;text-align:center;padding:60px 36px 40px;position:relative;
}
.page-label{
  font-size:11px;letter-spacing:.4em;text-transform:uppercase;
  color:var(--muted);margin-bottom:28px;
  display:flex;align-items:center;gap:16px;
}
.page-label::before,.page-label::after{
  content:'';width:40px;height:1px;background:var(--dim);
}
.page-title{
  font-size:clamp(40px,7vw,96px);
  font-weight:800;letter-spacing:-.04em;line-height:.95;
  margin-bottom:20px;
}
.page-sub{
  font-size:clamp(11px,1vw,13px);
  letter-spacing:.45em;text-transform:uppercase;
  color:var(--muted);margin-bottom:0;
}

/* CTA */
.cta{
  display:inline-flex;align-items:center;gap:10px;
  margin-top:48px;padding:15px 36px;
  border:1px solid var(--fg);font-size:12px;
  letter-spacing:.28em;text-transform:uppercase;font-weight:600;
  position:relative;overflow:hidden;transition:color .3s;
}
.cta::before{
  content:'';position:absolute;inset:0;background:var(--fg);
  transform:translateX(-101%);
  transition:transform .4s var(--ease);z-index:0;
}
.cta:hover::before{transform:translateX(0)}
.cta span{position:relative;z-index:1}
.cta:hover{color:var(--bg)}

/* FAQ */
.faq{width:min(720px,100%);margin-top:44px;text-align:left}
.faq-item{border-bottom:1px solid var(--dim);padding:22px 0}
.faq-item:first-child{border-top:1px solid var(--dim)}
.faq-q{font-size:16px;font-weight:600;margin-bottom:8px;letter-spacing:-.01em}
.faq-a{font-size:14px;color:var(--muted);line-height:1.6}

/* Footer */
footer{
  display:flex;justify-content:space-between;align-items:center;
  padding:20px 36px;font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--muted);
  border-top:1px solid var(--dim);
  opacity:0;animation:fadeUp .8s var(--ease) 1.4s forwards;
}
.footer-coords{font-family:'JetBrains Mono',monospace;min-width:260px;text-align:right}
.footer-left{display:flex;gap:20px;align-items:center}
.footer-version{
  font-family:'JetBrains Mono',monospace;
  padding:3px 7px;border:1px solid var(--dim);font-size:10px;color:var(--muted);
}

/* Reveal */
[data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
[data-reveal].revealed{opacity:1;transform:translateY(0)}

/* Konami */
#konami-flash{
  position:fixed;inset:0;z-index:9990;
  display:flex;align-items:center;justify-content:center;
  background:var(--fg);color:var(--bg);
  font-family:'JetBrains Mono',monospace;
  font-size:clamp(18px,3.5vw,38px);letter-spacing:.4em;font-weight:700;
  opacity:0;pointer-events:none;transition:opacity .2s ease;
}
#konami-flash.show{opacity:1;animation:kFlash 1.4s ease forwards}
@keyframes kFlash{
  0%{opacity:0;transform:scale(.92)}
  15%{opacity:1;transform:scale(1)}
  85%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(1.04)}
}
body.matrix-mode #binary{opacity:.7;filter:brightness(1.2)}

/* Animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes titleReveal{
  from{opacity:0;transform:translateY(40px);filter:blur(20px)}
  to{opacity:1;transform:translateY(0);filter:blur(0)}
}

/* Mobile */
@media (max-width:768px){
  nav,.hero,.page-content,footer{padding-left:20px;padding-right:20px}
  .nav-right{gap:16px}
  .nav-link{display:none}
  .nav-status{display:flex}
  .cards{flex-direction:column;margin-top:36px}
  .card+.card{border-left:0;border-top:1px solid var(--dim)}
  body{cursor:auto}
  .cursor,.cursor-ring{display:none}
  .footer-coords{min-width:0}
  .hero-label::before,.hero-label::after,
  .page-label::before,.page-label::after{width:24px}
  .marquee{margin-top:36px}
  .footer-left{gap:12px}
  .faq{text-align:left}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
