/* PRION — polish layer CSS */

/* ---------- custom cursor ---------- */
html:not(.reduced){ cursor:none; }
html:not(.reduced) *{ cursor:none !important; }
#prion-cursor{
  position:fixed;left:0;top:0;width:40px;height:40px;pointer-events:none;z-index:9999;
  color:var(--primary);opacity:0;transition:opacity .2s,color .15s;
  mix-blend-mode:screen;will-change:transform;
}
#prion-cursor.on{opacity:1}
#prion-cursor.hit{color:#fff}
#prion-cursor.hit svg g circle:first-child{animation:cur-pulse .6s ease infinite}
@keyframes cur-pulse{0%,100%{r:13;opacity:.5}50%{r:17;opacity:.8}}
html.reduced #prion-cursor{display:none}
html.reduced, html.reduced *{cursor:auto}

/* ---------- running scanline ---------- */
#prion-runscan{
  position:fixed;left:0;right:0;top:0;height:120px;pointer-events:none;z-index:2;
  background:linear-gradient(to bottom, rgba(0,255,102,0), rgba(0,255,102,.08) 40%, rgba(0,255,102,.18) 50%, rgba(0,255,102,.08) 60%, rgba(0,255,102,0));
  mix-blend-mode:screen;
  animation:runscan 7.5s linear infinite;
}
@keyframes runscan{
  0%{transform:translateY(-120px)}
  100%{transform:translateY(100vh)}
}
html.reduced #prion-runscan{display:none}
body.noscan #prion-runscan{display:none}

/* ---------- matrix rain ---------- */
#prion-rain{
  position:fixed;inset:0;z-index:0;opacity:.18;pointer-events:none;mix-blend-mode:screen;
}
body.norain #prion-rain{display:none}

/* header must sit ABOVE the scanbar so nav buttons stay interactive */
header.site{z-index:50 !important;background:transparent !important;backdrop-filter:none !important;border-bottom:none !important}
header.site .bar{
  background:rgba(5,10,5,.72) !important;backdrop-filter:blur(10px);
  border:1px solid var(--border-bright);border-radius:4px;
  margin-top:12px !important;padding:14px 22px !important;
  min-height:60px;align-items:center;
  box-shadow:0 0 24px rgba(0,255,102,.08), 0 8px 30px rgba(0,0,0,.5);
  position:relative;z-index:2;
}
header.site .bar > *{position:relative;z-index:3}

#prion-scanbar{
  position:fixed;left:0;right:0;top:0;height:280px;pointer-events:none;z-index:1;
  background:
    linear-gradient(to bottom,
      transparent 0%,
      rgba(0,255,102,.02) 30%,
      rgba(0,255,102,.09) 46%,
      rgba(0,255,102,.22) 50%,
      rgba(255,255,255,.35) 50.2%,
      rgba(0,255,102,.22) 50.4%,
      rgba(0,255,102,.09) 54%,
      rgba(0,255,102,.02) 70%,
      transparent 100%);
  mix-blend-mode:screen;
  animation:scanbar 11s cubic-bezier(.45,0,.55,1) infinite;
  filter:blur(.3px);
}
#prion-scanbar::before{
  content:"";position:absolute;left:0;right:0;top:50%;height:1px;transform:translateY(-.5px);
  background:rgba(200,255,220,.9);box-shadow:0 0 14px rgba(0,255,102,.85), 0 0 32px rgba(0,255,102,.45);
}
@keyframes scanbar{
  0%{transform:translateY(-280px)}
  48%{transform:translateY(calc(100vh - 100px))}
  52%{transform:translateY(calc(100vh - 100px))}
  100%{transform:translateY(-280px)}
}
html.reduced #prion-scanbar{display:none}
body.noscanbar #prion-scanbar{display:none}

/* ---------- animated PNG brand mark in header + hero ---------- */
.brand-logo, .hero-logo{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  color:var(--primary);overflow:hidden;
}
.brand-logo img, .hero-logo img{
  display:block;object-fit:contain;
  filter:drop-shadow(0 0 6px currentColor) drop-shadow(0 0 14px currentColor);
  animation:neon-flicker 5.8s infinite;
}
.brand-logo{width:38px;height:38px}
.brand-logo img{width:100%;height:100%}
.hero-logo{width:auto;height:96px;overflow:visible}
.hero-logo img{width:auto;height:100%;filter:drop-shadow(0 0 8px currentColor) drop-shadow(0 0 18px currentColor)}

.brand-logo::after, .hero-logo::after{
  content:"";position:absolute;left:-4%;right:-4%;top:0;height:28%;
  background:linear-gradient(to bottom,
    transparent 0%,
    rgba(255,255,255,.15) 45%,
    rgba(255,255,255,.55) 50%,
    rgba(255,255,255,.15) 55%,
    transparent 100%);
  mix-blend-mode:screen;pointer-events:none;
  animation:neon-scan 4s linear infinite;
}
.hero-logo::after{animation-duration:4.6s}
html.reduced .brand-logo img, html.reduced .hero-logo img{animation:none}
html.reduced .brand-logo::after, html.reduced .hero-logo::after{display:none}

/* ---------- scroll reveal ---------- */
[data-reveal]{
  opacity:0;transform:translateY(14px);
  transition:opacity .7s cubic-bezier(.2,.7,.3,1), transform .7s cubic-bezier(.2,.7,.3,1);
  transition-delay:.05s;
}
[data-reveal].revealed{opacity:1;transform:none}
html.reduced [data-reveal]{opacity:1;transform:none;transition:none}

/* ---------- glitch transition ---------- */
body.glitching main.wrap{
  animation:crtGlitch .14s steps(3) 1;
}
@keyframes crtGlitch{
  0%{filter:hue-rotate(0) saturate(1)}
  33%{transform:translateX(2px);filter:hue-rotate(-40deg) saturate(1.6) contrast(1.2)}
  66%{transform:translateX(-3px);filter:hue-rotate(60deg) saturate(1.4)}
  100%{transform:none;filter:none}
}
html.reduced body.glitching main.wrap{animation:none}

/* ---------- hero headline glitch-on-hover ---------- */
.hero h1{cursor:default;position:relative}
.hero h1:hover{animation:titleGlitch .35s steps(3) 1}
@keyframes titleGlitch{
  0%,100%{transform:none;filter:none}
  25%{transform:translate(-2px,1px) skewX(-2deg);filter:hue-rotate(-40deg)}
  60%{transform:translate(2px,-1px) skewX(1.5deg);filter:hue-rotate(30deg)}
}

/* ---------- stroke-draw helper ---------- */
.mode-art svg path, .mode-art svg line, .mode-art svg polygon, .mode-art svg circle, .mode-art svg rect{
  vector-effect:non-scaling-stroke;
}

/* ---------- neon PNG logos (mode art) ---------- */
.neon-logo{
  position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.neon-logo img{
  max-width:88%;max-height:88%;object-fit:contain;
  filter:drop-shadow(0 0 12px currentColor) drop-shadow(0 0 28px currentColor);
  animation:neon-flicker 5.2s infinite;
  will-change:filter,opacity;
}
.neon-logo[data-mode="aconit"]{color:#00ff9a}
.neon-logo[data-mode="abrin"]{color:#ff2a55}
.neon-logo[data-mode="nanga"]{color:#b4ffff}
.neon-logo[data-mode="ergot"]{color:#d44bff}
.neon-logo[data-mode="ergot"] svg{filter:drop-shadow(0 0 12px #d44bff) drop-shadow(0 0 28px #d44bff);animation:neon-flicker 5.2s infinite}

@keyframes neon-flicker{
  0%,18%,22%,25%,54%,56%,100%{opacity:1;filter:drop-shadow(0 0 12px currentColor) drop-shadow(0 0 28px currentColor)}
  20%,24%,55%{opacity:.55;filter:drop-shadow(0 0 4px currentColor) drop-shadow(0 0 8px currentColor)}
  70%{opacity:.9}
  72%{opacity:.4}
  74%{opacity:1}
}

/* horizontal scanner line sweeping across each logo */
.neon-logo::after{
  content:"";position:absolute;left:-2%;right:-2%;top:0;height:18%;
  background:linear-gradient(to bottom,
    transparent 0%,
    rgba(255,255,255,0) 30%,
    rgba(255,255,255,.12) 46%,
    rgba(255,255,255,.45) 50%,
    rgba(255,255,255,.12) 54%,
    transparent 100%);
  mix-blend-mode:screen;pointer-events:none;
  animation:neon-scan 4.2s linear infinite;
}
.neon-logo[data-mode="abrin"]::after{animation-duration:3.6s}
.neon-logo[data-mode="nanga"]::after{animation-duration:4.8s}
.neon-logo[data-mode="ergot"]::after{animation-duration:5.2s}
@keyframes neon-scan{
  0%{transform:translateY(-20%)}
  100%{transform:translateY(620%)}
}

/* subtle vignette around each logo so it sits in space */
.neon-logo::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%, transparent 55%, rgba(0,0,0,.5) 100%);
}
html.reduced .neon-logo img, html.reduced .neon-logo svg{animation:none}
html.reduced .neon-logo::after{display:none}

/* ---------- neon treatment for original PNG logos, with black bg keyed out at runtime ---------- */
.neon-svg-wrap{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:transparent;overflow:visible}
.neon-logo-img{
  display:block;max-width:100%;max-height:100%;width:auto;height:auto;
  filter:
    drop-shadow(0 0 6px var(--nl-color,#ff2fd2))
    drop-shadow(0 0 16px var(--nl-color,#ff2fd2))
    saturate(1.15);
  animation:neon-flicker 5.8s infinite;
  user-select:none;-webkit-user-drag:none;pointer-events:none;
}

/* brand lockup in header/footer */
.brand-logo{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:transparent}
.brand-logo[data-neon] .neon-logo-img{filter:drop-shadow(0 0 3px var(--nl-color)) drop-shadow(0 0 8px var(--nl-color)) saturate(1.5) brightness(1.5)}

/* hero lockup mark: large, wide, readable */
.hero-logo{width:auto;height:140px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:transparent;position:relative;overflow:visible}
.hero-logo[data-neon] .neon-logo-img{
  height:100%;width:auto;max-width:none;object-fit:contain;
  filter:drop-shadow(0 0 8px var(--nl-color)) drop-shadow(0 0 20px var(--nl-color)) drop-shadow(0 0 40px var(--nl-color)) saturate(1.8) brightness(2.2);
  animation:neon-flicker 5.2s infinite, neon-pulse 3.6s ease-in-out infinite;
}
@keyframes neon-pulse{
  0%,100%{filter:drop-shadow(0 0 8px var(--nl-color)) drop-shadow(0 0 20px var(--nl-color)) drop-shadow(0 0 40px var(--nl-color)) saturate(1.8) brightness(2.2)}
  50%    {filter:drop-shadow(0 0 12px var(--nl-color)) drop-shadow(0 0 30px var(--nl-color)) drop-shadow(0 0 55px var(--nl-color)) saturate(2.0) brightness(2.6)}
}
/* a highlight that rides along the contour — bright diagonal sweep masked by the edge PNG */
.hero-logo[data-neon],
.brand-logo[data-neon]{position:relative}
.neon-logo-runner{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,
    transparent 0%,
    transparent 38%,
    rgba(255,255,255,.0) 44%,
    #fff 50%,
    rgba(255,255,255,.0) 56%,
    transparent 62%,
    transparent 100%);
  background-size:260% 100%;
  background-repeat:no-repeat;
  background-position:200% 0;
  -webkit-mask:var(--nl-mask) center/contain no-repeat;
          mask:var(--nl-mask) center/contain no-repeat;
  mix-blend-mode:screen;
  filter:drop-shadow(0 0 4px var(--nl-color)) drop-shadow(0 0 10px var(--nl-color));
  animation:neon-runner 3.4s linear infinite;
}
.hero-logo[data-neon] .neon-logo-runner{animation-duration:3.2s}
.brand-logo[data-neon] .neon-logo-runner{animation-duration:4.2s;filter:drop-shadow(0 0 2px var(--nl-color)) drop-shadow(0 0 5px var(--nl-color))}
@keyframes neon-runner{
  0%  {background-position:200% 0}
  100%{background-position:-100% 0}
}
@keyframes neon-pulse-OLD_REMOVED{
  0%,100%{filter:drop-shadow(0 0 3px var(--nl-color)) drop-shadow(0 0 8px var(--nl-color)) drop-shadow(0 0 18px var(--nl-color)) saturate(1.15)}
  50%    {filter:drop-shadow(0 0 4px var(--nl-color)) drop-shadow(0 0 14px var(--nl-color)) drop-shadow(0 0 28px var(--nl-color)) saturate(1.3)}
}
/* legacy hero-logo square tile rules below are overridden by data-neon variant above */
.hero-logo[data-neon]::after{display:none !important}
html.reduced .hero-logo[data-neon]::after{display:none}
html.reduced .hero-logo[data-neon] .neon-logo-img{animation:neon-flicker 5.2s infinite}

/* mode-art logos fill their card */
.neon-logo[data-neon]{overflow:visible;background:transparent}
.neon-logo[data-neon] .neon-logo-img{width:92%;height:92%;object-fit:contain}

html.reduced .neon-logo-img{animation:none}
.neon-svg-wrap::after{content:"";position:absolute;left:-2%;right:-2%;top:0;height:22%;background:linear-gradient(to bottom, transparent 0%, rgba(255,255,255,.08) 45%, rgba(255,255,255,.35) 50%, rgba(255,255,255,.08) 55%, transparent 100%);mix-blend-mode:screen;pointer-events:none;animation:neon-scan 4.4s linear infinite}
.neon-svg-wrap::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 50%, transparent 55%, rgba(0,0,0,.55) 100%)}
html.reduced .neon-logo-img{animation:none}

/* animated PRION wordmark (used in hero & brand) */
.neon-text{
  position:relative;display:inline-block;
  font-family:'Rajdhani',sans-serif;font-weight:700;letter-spacing:.22em;
  color:var(--primary);text-shadow:0 0 8px rgba(0,255,102,.7), 0 0 22px rgba(0,255,102,.45);
  animation:neon-flicker 6s infinite;
}
.neon-text::before, .neon-text::after{
  content:attr(data-text);position:absolute;left:0;top:0;pointer-events:none;mix-blend-mode:screen;
}
.neon-text::before{color:#ff00aa;animation:glitch-a 3.8s infinite steps(1)}
.neon-text::after{color:#00ddff;animation:glitch-b 3.8s infinite steps(1)}
@keyframes glitch-a{
  0%,92%,100%{transform:translate(0,0);clip-path:inset(0 0 0 0);opacity:0}
  93%{transform:translate(-2px,1px);clip-path:inset(0 0 68% 0);opacity:.7}
  96%{transform:translate(2px,-1px);clip-path:inset(60% 0 0 0);opacity:.7}
}
@keyframes glitch-b{
  0%,90%,100%{transform:translate(0,0);clip-path:inset(0 0 0 0);opacity:0}
  91%{transform:translate(2px,-1px);clip-path:inset(60% 0 0 0);opacity:.7}
  97%{transform:translate(-2px,1px);clip-path:inset(0 0 68% 0);opacity:.7}
}
html.reduced .neon-text{animation:none}
html.reduced .neon-text::before, html.reduced .neon-text::after{display:none}

/* ensure mode-art container stays proportional */
.mode-art{min-height:380px}

/* ---------- bench chart ---------- */
.bench-wrap{
  margin-top:28px;border:1px solid var(--border-bright);background:var(--surface);
  border-radius:4px;padding:18px 18px 14px;position:relative;overflow:hidden;
}
.bench-wrap::before{
  content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg, var(--primary), var(--accent), #00e5ff);
  animation:bar-slide 4s linear infinite;
  background-size:200% 100%;
}
@keyframes bar-slide{0%{background-position:0 0}100%{background-position:200% 0}}
.bench-wrap .hd{display:flex;justify-content:space-between;align-items:center;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px}
.bench-wrap .legend{display:flex;gap:14px}
.bench-wrap .legend span{display:flex;align-items:center;gap:6px;color:var(--text);font-size:10.5px}
.bench-wrap .legend i{width:8px;height:8px;border-radius:50%;display:inline-block}
#bench-chart{height:180px;position:relative}

/* ---------- FAQ ---------- */
.faq{margin-top:40px;display:grid;gap:2px}
.faq-item{
  border:1px solid var(--border);background:var(--surface);
  transition:border-color .2s;
}
.faq-item:hover{border-color:var(--border-bright)}
.faq-item.open{border-color:var(--primary);box-shadow:var(--glow-sm)}
.faq-q{
  display:flex;justify-content:space-between;align-items:center;
  padding:18px 20px;cursor:pointer;user-select:none;
  font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--text);letter-spacing:.04em;
}
.faq-q .marker{font-family:'JetBrains Mono',monospace;color:var(--primary);transition:transform .25s}
.faq-item.open .faq-q .marker{transform:rotate(45deg)}
.faq-a{
  max-height:0;overflow:hidden;transition:max-height .35s ease, padding .35s ease;
  padding:0 20px;color:#c8dcc8;font-size:13.5px;line-height:1.65;
  font-family:'Inter',system-ui,sans-serif;
}
.faq-item.open .faq-a{max-height:300px;padding:0 20px 18px}
.faq-a code{font-family:'JetBrains Mono',monospace;color:var(--primary);background:rgba(0,255,102,.06);padding:2px 6px;border-radius:2px;font-size:12.5px}

/* ---------- comparison table ---------- */
.compare{
  margin-top:40px;border:1px solid var(--border-bright);background:var(--surface);border-radius:4px;overflow:hidden;
}
.compare table{width:100%;border-collapse:collapse;font-family:'JetBrains Mono',monospace;font-size:13px}
.compare th, .compare td{padding:14px 16px;text-align:left;border-bottom:1px dashed var(--border)}
.compare thead th{
  background:#071507;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  border-bottom:1px solid var(--border-bright);font-weight:500;
}
.compare thead th.me{color:var(--primary);text-shadow:0 0 8px rgba(0,255,102,.45)}
.compare td:first-child{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:11px}
.compare td.y{color:var(--primary)}
.compare td.y::before{content:"▸ ";color:var(--primary)}
.compare td.n{color:var(--muted)}
.compare td.partial{color:var(--accent)}
.compare tbody tr:last-child td{border-bottom:none}
.compare tbody tr:hover td{background:rgba(0,255,102,.03)}

/* ---------- manifesto ---------- */
.manifesto{
  margin-top:56px;padding:44px 40px;position:relative;
  border:1px solid var(--border-bright);background:var(--surface);
  font-family:'Rajdhani',sans-serif;font-weight:600;
  font-size:clamp(22px,2.4vw,30px);line-height:1.35;color:var(--text);
  letter-spacing:.01em;
}
.manifesto::before{content:"";position:absolute;top:-1px;left:-1px;width:20px;height:20px;border-left:2px solid var(--primary);border-top:2px solid var(--primary)}
.manifesto::after{content:"";position:absolute;bottom:-1px;right:-1px;width:20px;height:20px;border-right:2px solid var(--primary);border-bottom:2px solid var(--primary)}
.manifesto .tag{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--primary);letter-spacing:.18em;text-transform:uppercase;margin-bottom:14px;display:block;font-weight:400}
.manifesto em{color:var(--primary);font-style:normal;text-shadow:0 0 10px rgba(0,255,102,.5)}
.manifesto .sig{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--muted);margin-top:18px;display:block;letter-spacing:.08em}

/* ---------- hero interactive scan ---------- */
.hero-scan{margin-top:32px;display:flex;gap:8px;align-items:center}
.hero-scan button.scan-btn{
  all:unset;cursor:pointer;padding:8px 14px;
  font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.1em;
  border:1px solid var(--border-bright);color:var(--muted);text-transform:uppercase;border-radius:2px;
  transition:all .15s;
}
.hero-scan button.scan-btn:hover{color:var(--primary);border-color:var(--primary)}
.hero-scan button.scan-btn.on{background:var(--primary);color:#000;border-color:var(--primary);box-shadow:var(--glow-sm)}

/* ---------- terminal typing ---------- */
.terminal pre[data-typing]{min-height:260px}

/* ---------- chip hover enhancement ---------- */
.chip{transition:transform .2s, border-color .2s, box-shadow .2s, background .2s}

/* ---------- reveal stagger for chip grid ---------- */
.chip-grid.revealed .chip{animation:chipIn .45s both}
.chip-grid .chip{opacity:0;transform:translateY(6px)}
.chip-grid.revealed .chip:nth-child(1){animation-delay:.02s}
.chip-grid.revealed .chip:nth-child(2){animation-delay:.04s}
.chip-grid.revealed .chip:nth-child(3){animation-delay:.06s}
.chip-grid.revealed .chip:nth-child(4){animation-delay:.08s}
.chip-grid.revealed .chip:nth-child(n+5){animation-delay:.1s}
.chip-grid.revealed .chip:nth-child(n+9){animation-delay:.14s}
.chip-grid.revealed .chip:nth-child(n+13){animation-delay:.18s}
.chip-grid.revealed .chip:nth-child(n+17){animation-delay:.22s}
.chip-grid.revealed .chip:nth-child(n+21){animation-delay:.26s}
.chip-grid.revealed .chip:nth-child(n+25){animation-delay:.3s}
@keyframes chipIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- stat counter glow ---------- */
.hero .stats .stat{position:relative;overflow:hidden}
.hero .stats .stat::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(0,255,102,.1),transparent);
  transform:translateX(-100%);transition:transform .6s;
}
.hero .stats .stat:hover::after{transform:translateX(100%)}

/* ---------- section-head eyebrow pulse ---------- */
.section-head .eyebrow::before{
  content:"● ";color:var(--primary);animation:dot-pulse 2s infinite;
}
@keyframes dot-pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* ---------- audit log ticker (in pipeline) ---------- */
.log-ticker{
  margin-top:18px;height:120px;overflow:hidden;position:relative;
  border:1px solid var(--border);background:#030703;border-radius:2px;padding:10px 14px;
  font-family:'JetBrains Mono',monospace;font-size:11.5px;line-height:1.7;color:#89b089;
}
.log-ticker::before, .log-ticker::after{
  content:"";position:absolute;left:0;right:0;height:30px;z-index:2;pointer-events:none;
}
.log-ticker::before{top:0;background:linear-gradient(to bottom,#030703,transparent)}
.log-ticker::after{bottom:0;background:linear-gradient(to top,#030703,transparent)}
.log-ticker .l{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.log-ticker .l .c-pri{color:var(--primary)}
.log-ticker .l .c-amb{color:var(--accent)}
.log-ticker .l .c-crit{color:var(--critical)}
.log-ticker .l .c-mut{color:var(--muted)}

/* ---------- compare responsive ---------- */
@media (max-width:720px){
  .compare{overflow-x:auto}
  .compare table{min-width:600px}
}
