/* cyberpunk.codes production stylesheet (design: Breach Protocol + comic covers) */

/* ---- self-hosted fonts (latin subsets) ---- */
@font-face{font-family:'Rajdhani';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/rajdhani-500.woff2') format('woff2')}
@font-face{font-family:'Rajdhani';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/rajdhani-600.woff2') format('woff2')}
@font-face{font-family:'Rajdhani';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/rajdhani-700.woff2') format('woff2')}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/chakra-petch-600.woff2') format('woff2')}
@font-face{font-family:'Chakra Petch';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/chakra-petch-700.woff2') format('woff2')}
@font-face{font-family:'Share Tech Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/share-tech-mono-400.woff2') format('woff2')}

:root{
  --yellow:#FCEE0A; --cyan:#00F0FF; --magenta:#FF003C; --teal:#49c5b1;
  --nb-yellow:#FCEE0A; --dr-red:#B03434; --al-cyan:#35BEC9;
  --ink:#050507; --panel:#0d0d12; --line:#1e1e26;
  --text:#e6e6e0; --muted:#7d7d88;
  --display:'Chakra Petch',sans-serif; --ui:'Rajdhani',sans-serif; --mono:'Share Tech Mono',monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--ink);color:var(--text);font-family:var(--ui);font-weight:500;line-height:1.55;font-size:17px;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:var(--cyan);text-decoration:none}
a:hover{color:var(--yellow)}

/* ==== global overlays: scanlines + grain ==== */
body::before{content:"";position:fixed;inset:0;z-index:98;pointer-events:none;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.22) 0 1px,transparent 1px 3px);opacity:.5}
body::after{content:"";position:fixed;inset:0;z-index:97;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E")}

/* ==== breach hex rain ==== */
.rain{position:fixed;inset:0;z-index:0;pointer-events:none;display:flex;justify-content:space-between;
  padding:0 4vw;font-family:var(--mono);font-size:13px;color:var(--teal);opacity:.14;user-select:none}
.rain span{white-space:pre-line;line-height:2.1;animation:fall 14s linear infinite}
.rain span:nth-child(2n){animation-duration:19s;animation-delay:-6s}
.rain span:nth-child(3n){animation-duration:11s;animation-delay:-3s}
.rain span:nth-child(4n){animation-duration:23s;animation-delay:-11s}
@keyframes fall{from{transform:translateY(-45%)}to{transform:translateY(15%)}}

main{position:relative;z-index:1}
.wrap{max-width:1060px;margin:0 auto;padding:0 1.5rem}

/* ==== top status bar ==== */
.statusbar{border-bottom:1px solid var(--line);background:rgba(5,5,7,.9);position:sticky;top:0;z-index:50;backdrop-filter:blur(4px)}
.statusbar .wrap{display:flex;align-items:center;gap:1.4rem;height:52px;font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase}
.statusbar .ok{color:var(--teal)}
.statusbar .ok::after{content:"▮";animation:blink 1.1s steps(1) infinite;margin-left:.35em}
@keyframes blink{50%{opacity:0}}
.statusbar .links{margin-left:auto;display:flex;gap:1.2rem;flex-wrap:wrap}
.statusbar a{color:var(--muted)}
.statusbar a:hover{color:var(--yellow)}
.statusbar .target{color:var(--muted)}
@media (max-width:720px){.statusbar .target{display:none}}

/* ==== hero ==== */
header{padding:6.5rem 0 5rem;position:relative}
.k-strip{position:absolute;top:1rem;left:0;right:0;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);opacity:.55}
.k-strip .k-in{display:inline-block;white-space:nowrap;font-family:var(--mono);font-size:.7rem;letter-spacing:.35em;color:var(--yellow);padding:.35em 0;animation:marquee 28s linear infinite}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.breach-label{font-family:var(--mono);color:var(--teal);font-size:.75rem;letter-spacing:.22em;text-transform:uppercase;margin-bottom:1.2rem}
.glitch{font-family:var(--display);font-weight:700;text-transform:uppercase;color:var(--yellow);
  font-size:clamp(2.6rem,8.2vw,5.8rem);line-height:.95;position:relative;display:inline-block;letter-spacing:-.01em}
.glitch::before,.glitch::after{content:attr(data-text);position:absolute;inset:0;overflow:hidden}
.glitch::before{color:var(--cyan);z-index:-1;animation:g1 3.4s steps(1) infinite}
.glitch::after{color:var(--magenta);z-index:-2;animation:g2 2.9s steps(1) infinite}
@keyframes g1{0%,86%{transform:none;clip-path:inset(0)}87%{transform:translate(-6px,2px);clip-path:inset(12% 0 60% 0)}89%{transform:translate(5px,-1px);clip-path:inset(55% 0 18% 0)}91%{transform:translate(-3px,0);clip-path:inset(78% 0 4% 0)}93%{transform:none;clip-path:inset(0)}}
@keyframes g2{0%,90%{transform:none;clip-path:inset(0)}91%{transform:translate(6px,-2px);clip-path:inset(30% 0 48% 0)}93%{transform:translate(-5px,1px);clip-path:inset(6% 0 82% 0)}95%{transform:none;clip-path:inset(0)}}
.tagline{font-size:clamp(1.05rem,2.1vw,1.4rem);font-weight:600;text-transform:uppercase;max-width:36em;margin-top:1.6rem;letter-spacing:.03em}
.tagline em{font-style:normal;color:var(--yellow)}
.sub{font-family:var(--mono);color:var(--muted);font-size:.8rem;margin-top:.9rem;letter-spacing:.06em}
.daemons{margin-top:2.4rem;display:flex;flex-direction:column;gap:.7rem;max-width:520px}
.daemon{display:flex;align-items:center;gap:1rem;border:1px solid var(--teal);padding:.65rem 1rem;
  font-family:var(--mono);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%);transition:.15s;position:relative}
.daemon::before{content:"";position:absolute;width:20px;height:1px;background:var(--teal);right:-3px;top:6.5px;transform:rotate(45deg)}
.daemon.hot::before{background:var(--yellow)}
.daemon:hover{background:var(--teal);color:#041210}
.daemon .tag{margin-left:auto;color:var(--yellow)}
.daemon:hover .tag{color:#041210}
.daemon.hot{border-color:var(--yellow);color:var(--yellow)}
.daemon.hot:hover{background:var(--yellow);color:#141200}
.daemon.hot:hover .tag{color:#141200}

/* ==== sections ==== */
section{padding:5rem 0;border-top:1px solid var(--line);position:relative}
section.slim{padding:3.5rem 0}
.sec-head{display:flex;align-items:baseline;gap:1.2rem;flex-wrap:wrap;margin-bottom:1.6rem}
.sec-label{font-family:var(--mono);color:var(--teal);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase}
.sec-label b{color:var(--yellow);font-weight:400}
h2{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(1.9rem,4.2vw,3rem);line-height:1;color:var(--text)}
h2 .y{color:var(--yellow)}
.story{max-width:46em;color:var(--text);font-size:1.06rem}
.quote{font-family:var(--mono);color:var(--magenta);font-size:.9rem;letter-spacing:.08em;margin:.4rem 0 1.4rem}

/* stats strip */
.stats{display:flex;flex-wrap:wrap;gap:1px;background:var(--line);border:1px solid var(--line);margin:2rem 0 .4rem}
.stat{flex:1 1 140px;background:var(--ink);padding:1rem .6rem;text-align:center}
.stat .n{font-family:var(--display);font-weight:700;font-size:1.9rem;color:var(--yellow);line-height:1}
.stat .l{font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;color:var(--muted);text-transform:uppercase;margin-top:.35rem}

/* RAM facts */
.ram{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:1rem;margin:2.2rem 0}
.cell{border:1px solid var(--line);background:rgba(13,13,18,.85);padding:1.1rem 1.2rem;position:relative;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%)}
.cell::before{content:attr(data-ram);position:absolute;top:.6rem;right:.8rem;font-family:var(--mono);
  font-size:.62rem;color:var(--cyan);letter-spacing:.12em}
.cell::after{content:"";position:absolute;width:20px;height:1px;background:var(--line);right:-3px;bottom:6.5px;transform:rotate(-45deg)}
.cell h3{font-family:var(--display);text-transform:uppercase;font-size:1.02rem;color:var(--yellow);margin-bottom:.3rem}
.cell p{color:var(--muted);font-size:.93rem}

/* screenshots w/ relic glitch hover */
.shots{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.4rem;margin:2.2rem 0}
.shot{position:relative;border:1px solid var(--cyan);overflow:hidden;
  clip-path:polygon(0 0,calc(100% - 20px) 0,100% 20px,100% 100%,20px 100%,0 calc(100% - 20px))}
.shot::before{content:"";position:absolute;width:28px;height:1px;background:var(--cyan);right:-4px;top:9.5px;transform:rotate(45deg);z-index:2}
.shot figcaption::before{content:"";position:absolute;width:28px;height:1px;background:var(--cyan);left:-4px;bottom:9.5px;transform:rotate(45deg)}
.shot img{transition:.12s;filter:saturate(1.05)}
.shot:hover img{animation:relic .35s steps(2) infinite;filter:saturate(1.3) contrast(1.1)}
@keyframes relic{0%{transform:translateX(0)}25%{transform:translateX(-4px) skewX(-1deg)}50%{transform:translateX(3px)}75%{transform:translateX(-2px) skewX(1deg)}}
.shot::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:repeating-linear-gradient(0deg,rgba(0,240,255,.14) 0 2px,transparent 2px 6px,rgba(255,0,60,.14) 6px 8px,transparent 8px 14px)}
.shot:hover::after{opacity:1}
.shot figcaption{position:absolute;left:0;bottom:0;right:0;background:rgba(5,5,7,.85);color:var(--cyan);
  font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;padding:.5em .9em;border-top:1px solid var(--cyan)}

/* route (spoiler-safe) */
.route{display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:center;font-family:var(--mono);
  font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:.6rem 0 0}
.route .stop{border:1px solid var(--line);padding:.4em .7em;color:var(--text)}
.route .sep{color:var(--teal)}

.warn{display:inline-block;border:1px solid var(--magenta);color:var(--magenta);font-family:var(--mono);
  font-size:.68rem;letter-spacing:.12em;padding:.4em .9em;margin-top:1.2rem;text-transform:uppercase}
.reqline{font-family:var(--mono);font-size:.78rem;color:var(--muted);letter-spacing:.06em;margin:1.6rem 0}
.reqline b{color:var(--text);font-weight:400}
.barcode{height:34px;width:180px;margin:2rem 0 0;opacity:.6;
  background:repeating-linear-gradient(90deg,var(--text) 0 2px,transparent 2px 5px,var(--text) 5px 9px,transparent 9px 11px,var(--text) 11px 12px,transparent 12px 17px)}

/* quotes */
.quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.4rem;margin-top:.4rem}
.quote-c{border:1px solid var(--line);background:var(--panel);padding:1.1rem 1.2rem}
.quote-c p{color:var(--text);font-size:.95rem}
.quote-c .who{font-family:var(--mono);color:var(--teal);font-size:.66rem;letter-spacing:.14em;margin-top:.7rem;text-transform:uppercase}

/* comic covers */
.covers{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.6rem;margin:2.2rem 0}
.cover{aspect-ratio:3/4;padding:1.1rem;position:relative;display:flex;flex-direction:column;color:#0A0A0C;isolation:isolate}
.cover::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.16;z-index:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0.35 0 0 0 0 0.35 0 0 0 0 0.33 0 0 0 0.9 0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='discrete' tableValues='0 0 0 0 0 0 0 1'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E")}
.cover>*{position:relative;z-index:1}
.cover.yellow{background:var(--nb-yellow)}
.cover.red{background:var(--dr-red);color:#120808}
.cover.cyan{background:var(--al-cyan);color:#06282b}
.cover .cmeta{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;line-height:1.8;opacity:.75}
.cover .title{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:1.9rem;line-height:1;margin:auto 0 .2rem}
.cover .shard{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}
.cover .cover-tag{font-family:var(--mono);font-size:.66rem;margin-top:1rem;opacity:.85;letter-spacing:.05em}
.cover .stamp{position:absolute;top:16%;right:.9rem;border:2px solid currentColor;padding:.15em .6em;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;transform:rotate(-3deg);white-space:nowrap}

/* pipeline + capabilities */
.pipeline{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-family:var(--mono);
  font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;margin:2rem 0}
.pipeline .step{border:1px solid var(--teal);color:var(--teal);padding:.5em .8em;position:relative;
  clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%)}
.pipeline .step::after{content:"";position:absolute;width:14px;height:1px;background:var(--teal);right:-2px;top:4.5px;transform:rotate(45deg)}
.pipeline .arrow{color:var(--muted)}
.findings{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.4rem;margin:2.2rem 0}
.find{border-left:3px solid var(--cyan);background:var(--panel);padding:1.2rem}
.find .n{font-family:var(--mono);color:var(--cyan);font-size:.66rem;letter-spacing:.18em}
.find h3{font-family:var(--display);text-transform:uppercase;font-size:1.02rem;margin:.4rem 0 .5rem}
.find p{color:var(--muted);font-size:.93rem}

/* code peek */
.codeblock{background:#07070b;border:1px solid var(--line);border-left:3px solid var(--yellow);
  padding:1rem 1.2rem;font-family:var(--mono);font-size:.8rem;line-height:1.7;overflow-x:auto;margin:1.8rem 0;color:var(--text)}
.codeblock .c{color:var(--muted)} .codeblock .k{color:var(--cyan)} .codeblock .s{color:var(--yellow)}

/* faq */
.faq{max-width:52em;margin-top:1.4rem}
.faq details{border:1px solid var(--line);background:var(--panel);margin-bottom:.6rem}
.faq summary{cursor:pointer;padding:.8rem 1.1rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.04em;font-size:.95rem;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"> ";font-family:var(--mono);color:var(--teal)}
.faq details[open] summary::before{content:"v "}
.faq details p{padding:0 1.1rem 1rem;color:var(--muted);font-size:.93rem}

/* changelog */
.patch{font-family:var(--mono);max-width:46em;margin:1.6rem 0;font-size:.82rem;line-height:2}
.patch .v{color:var(--yellow)}
.patch .ok{color:var(--teal)}

/* credits */
.credits{font-family:var(--mono);font-size:.75rem;color:var(--muted);letter-spacing:.05em;line-height:2.1;max-width:62em;margin-top:.4rem}
.credits b{color:var(--text);font-weight:400}

/* footer: session log + EOF */
footer{border-top:1px solid var(--line);padding:3rem 0 4rem;position:relative;z-index:1}
.syslog{font-family:var(--mono);font-size:.7rem;line-height:2.1;letter-spacing:.06em;color:var(--muted);margin-bottom:1.8rem;overflow-x:auto;white-space:nowrap}
.syslog .t{color:#45454f}
.syslog .ok{color:var(--teal)}
.syslog .err{color:var(--magenta)}
.eof-wrap{display:flex;align-items:center;justify-content:space-between;gap:2rem;margin-top:2.4rem;flex-wrap:wrap;max-width:760px}
.eof-stamp{position:relative;display:inline-block;border:2px solid currentColor;color:var(--text);opacity:.45;padding:.2em .8em;
  font-family:var(--mono);font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;transform:rotate(-2deg)}
.eof-stamp::after{content:"";position:absolute;left:-5px;right:-5px;top:56%;height:2px;background:var(--ink);transform:translateY(-50%) rotate(1deg)}
.barcode-svg{height:28px;width:286px;max-width:60vw;color:var(--text);opacity:.45}
footer .lost{font-family:var(--mono);color:var(--magenta);font-size:.7rem;letter-spacing:.25em;text-transform:uppercase}
footer .lost::after{content:"▮";animation:blink 1.1s steps(1) infinite;margin-left:.4em}
.socials{display:flex;gap:1.5rem;margin-top:1.8rem;flex-wrap:wrap;align-items:center}
.socials a{display:inline-flex;color:var(--muted)}
.socials svg{width:20px;height:20px;fill:currentColor;
  filter:drop-shadow(1.5px 0 rgba(0,240,255,.5)) drop-shadow(-1.5px 0 rgba(255,0,60,.5))}
.socials a:nth-child(2n) svg{transform:translateY(1px) skewX(-4deg)}
.socials a:nth-child(3n) svg{transform:translateY(-1px)}
.socials a:hover{color:var(--yellow)}
.socials a:hover svg{filter:drop-shadow(2px 0 rgba(0,240,255,.75)) drop-shadow(-2px 0 rgba(255,0,60,.75))}
footer p{color:var(--muted);font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;line-height:2;text-transform:uppercase;margin-top:.8rem}
footer .credit{color:var(--text)}
footer a{color:var(--yellow)}

@media (prefers-reduced-motion: reduce){
  .rain span,.glitch::before,.glitch::after,.k-strip .k-in,.shot:hover img,.statusbar .ok::after,footer .lost::after{animation:none}
}
