/* ============ Кибер-осада · общая тема ============ */
@font-face{font-family:"Unbounded";font-weight:700;font-display:swap;src:url(/fonts/unbounded-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Unbounded";font-weight:700;font-display:swap;src:url(/fonts/unbounded-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Unbounded";font-weight:900;font-display:swap;src:url(/fonts/unbounded-cyrillic-900-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Unbounded";font-weight:900;font-display:swap;src:url(/fonts/unbounded-latin-900-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Onest";font-weight:400;font-display:swap;src:url(/fonts/onest-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Onest";font-weight:400;font-display:swap;src:url(/fonts/onest-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Onest";font-weight:600;font-display:swap;src:url(/fonts/onest-cyrillic-600-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Onest";font-weight:600;font-display:swap;src:url(/fonts/onest-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"JetBrains Mono";font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  color-scheme:dark;
  --bg:#05070f; --bg2:#0a0f1f; --bg3:#101831;
  --glass:rgba(255,255,255,.045); --glass2:rgba(255,255,255,.08); --stroke:rgba(160,190,255,.14); --stroke2:rgba(160,190,255,.28);
  --text:#eef3ff; --muted:#93a0c8; --dim:#5f6c92;
  --cyan:#26d9ff; --violet:#b06cff; --amber:#ffb23e; --red:#ff3d5a; --green:#3dffa0; --pink:#ff4fd8;
  --c-warm:#9aa4b2; --c-stego:#b06cff; --c-pass:#ffb23e; --c-web:#26d9ff;
  --f-display:"Unbounded","Onest",system-ui,sans-serif;
  --f-body:"Onest",system-ui,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Consolas,monospace;
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font-family:var(--f-body);font-weight:400;line-height:1.45;overflow-x:hidden;-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.mono{font-family:var(--f-mono);font-weight:500}
.disp{font-family:var(--f-display);font-weight:700;letter-spacing:-.01em}

/* фон: сетка + свечения + сканлайн */
.bg{position:fixed;inset:0;z-index:-1;overflow:hidden;background:radial-gradient(120% 90% at 15% 0%,#0f1d44 0%,transparent 55%),radial-gradient(100% 80% at 100% 100%,#2a0f4d 0%,transparent 55%),var(--bg)}
.bg::before{content:"";position:absolute;inset:-2px;background-image:linear-gradient(rgba(120,170,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(120,170,255,.07) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse at 50% 40%,#000 25%,transparent 80%);animation:gridmove 22s linear infinite}
.bg::after{content:"";position:absolute;left:0;right:0;height:30%;top:-30%;background:linear-gradient(180deg,transparent,rgba(38,217,255,.07),transparent);animation:scan 9s linear infinite}
@keyframes gridmove{to{transform:translateY(48px)}}
@keyframes scan{to{top:110%}}

.glass{background:var(--glass);border:1px solid var(--stroke);border-radius:18px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.neon-text{background:linear-gradient(95deg,var(--cyan),var(--violet) 55%,var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}

/* глитч заголовка */
.glitch{position:relative;display:inline-block}
.glitch::before,.glitch::after{content:attr(data-t);position:absolute;inset:0;overflow:hidden;opacity:.0;pointer-events:none}
.glitch::before{color:var(--cyan);transform:translate(-2px,0);clip-path:inset(0 0 55% 0);animation:glitch 4.5s steps(1) infinite}
.glitch::after{color:var(--pink);transform:translate(2px,0);clip-path:inset(55% 0 0 0);animation:glitch 4.5s steps(1) infinite .4s}
@keyframes glitch{0%,92%,100%{opacity:0}93%{opacity:.9;transform:translate(-3px,1px)}95%{opacity:.9;transform:translate(3px,-1px)}97%{opacity:.8;transform:translate(-2px,0)}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  .bg::before,.bg::after{animation:none}
}
