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

:root {
  --bg:#03060d;
  --bg-2:#071022;
  --blue:#00b4ff;
  --blue-2:#0055ff;
  --cyan:#00e5ff;
  --text:#cfe2ff;
  --muted:#5f7fa6;
  --line:rgba(0,180,255,0.18);
}

html { scroll-behavior:smooth; }

body {
  font-family:'Rajdhani',sans-serif;
  background:var(--bg);
  color:var(--text);
  overflow-x:hidden;
  cursor:none;
}

a, button { cursor:none; }

/* Custom cursor */
.cursor-dot {
  position:fixed; width:6px; height:6px; background:var(--cyan);
  border-radius:50%; pointer-events:none; z-index:99999;
  transform:translate(-50%,-50%); box-shadow:0 0 12px var(--cyan);
  transition:transform .08s ease;
}
.cursor-ring {
  position:fixed; width:34px; height:34px; border:1.5px solid var(--blue);
  border-radius:50%; pointer-events:none; z-index:99998;
  transform:translate(-50%,-50%);
  transition:transform .18s ease, width .2s, height .2s, border-color .2s;
}
.cursor-ring.hover { width:56px; height:56px; border-color:var(--cyan); }

/* Shader canvas */
#shader-canvas {
  position:fixed; inset:0; z-index:0; pointer-events:none;
  width:100%; height:100%;
  background:radial-gradient(ellipse at 50% 40%, #071022 0%, #03060d 70%);
  opacity:0;
  transition:opacity 1.2s ease;
}
#shader-canvas.ready { opacity:1; }

/* Fallback canvas (старые частицы) */
#bg-canvas {
  position:fixed; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(ellipse at 50% 40%, #071022 0%, #03060d 70%);
}
#bg-canvas.hidden { opacity:0; visibility:hidden; }

/* Grid + scanlines */
.grid-overlay {
  position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.25;
  background-image:
    linear-gradient(rgba(0,180,255,.12) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,180,255,.12) 1px, transparent 1px);
  background-size:60px 60px;
  mask-image:radial-gradient(ellipse at center, #000 20%, transparent 75%);
  -webkit-mask-image:radial-gradient(ellipse at center, #000 20%, transparent 75%);
}
.scanlines {
  position:fixed; inset:0; z-index:1; pointer-events:none; opacity:.08;
  background:repeating-linear-gradient(0deg, transparent, transparent 2px, #00b4ff 2px, #00b4ff 3px);
  mix-blend-mode:overlay;
}

/* Preloader */
#preloader {
  position:fixed; inset:0; z-index:9999; background:#03060d;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:22px; transition:opacity .8s, visibility .8s;
}
#preloader.hidden { opacity:0; visibility:hidden; }
.preloader-inner { position:relative; width:200px; height:200px; display:grid; place-items:center; }
.pre-ring {
  position:absolute; inset:0; border-radius:50%;
  border:2px solid transparent; border-top-color:var(--cyan);
  border-right-color:var(--blue); animation:spin 1.4s linear infinite;
}
.pre-ring-2 {
  inset:20px; border-top-color:var(--blue-2); border-right-color:var(--cyan);
  animation-direction:reverse; animation-duration:2s;
}
#pre-avatar {
  width:120px; height:120px; border-radius:50%; object-fit:cover;
  border:2px solid var(--blue); box-shadow:0 0 40px var(--blue);
  animation:pulse 1.6s infinite;
}
@keyframes spin { to { transform:rotate(360deg); } }
@keyframes pulse {
  0%,100% { box-shadow:0 0 25px var(--blue); }
  50% { box-shadow:0 0 60px var(--cyan); }
}
.pre-title {
  font-family:'Orbitron',sans-serif; letter-spacing:8px; font-size:16px;
  color:#fff; text-shadow:0 0 20px var(--blue);
}
.pre-bar { width:260px; height:2px; background:rgba(0,180,255,.15); overflow:hidden; }
#pre-fill { height:100%; width:0; background:linear-gradient(90deg,var(--blue),var(--cyan)); box-shadow:0 0 10px var(--cyan); }
.pre-status { font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--muted); letter-spacing:2px; }
#skip-btn {
  margin-top:12px; background:transparent; border:1px solid var(--blue);
  color:var(--blue); font-family:'JetBrains Mono',monospace; font-size:12px;
  padding:8px 22px; border-radius:4px; letter-spacing:3px; transition:all .3s;
}
#skip-btn:hover { background:var(--blue); color:#000; box-shadow:0 0 20px var(--blue); }

/* Navbar */
.navbar {
  position:fixed; top:0; width:100%; padding:16px 40px;
  display:flex; align-items:center; justify-content:space-between;
  background:rgba(3,6,13,.55); backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line); z-index:100;
}
.logo {
  font-family:'Orbitron',sans-serif; font-weight:900; font-size:20px;
  letter-spacing:3px; color:#fff; position:relative;
}
.logo span { color:var(--blue); }
.nav-links { display:flex; gap:26px; list-style:none; }
.nav-links a {
  color:var(--text); text-decoration:none; font-weight:600; font-size:14px;
  letter-spacing:2px; text-transform:uppercase; position:relative; padding:4px 0;
  transition:color .3s;
}
.nav-links a::after {
  content:''; position:absolute; bottom:-2px; left:0; width:0; height:1px;
  background:var(--cyan); box-shadow:0 0 8px var(--cyan); transition:width .3s;
}
.nav-links a:hover { color:var(--cyan); }
.nav-links a:hover::after { width:100%; }

.lang-switch { display:flex; gap:4px; }
.lang-switch button {
  background:transparent; border:1px solid var(--line); color:var(--muted);
  padding:5px 10px; border-radius:4px; font-family:'JetBrains Mono',monospace;
  font-weight:700; font-size:12px; letter-spacing:1px; transition:all .3s;
}
.lang-switch button:hover { color:var(--blue); border-color:var(--blue); }
.lang-switch button.active { background:var(--blue); color:#000; border-color:var(--blue); box-shadow:0 0 14px var(--blue); }

/* HERO */
.hero {
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  position:relative; padding:120px 20px 80px; text-align:center; z-index:2;
}
.hero-glow {
  position:absolute; width:700px; height:700px; border-radius:50%;
  background:radial-gradient(circle, rgba(0,180,255,.18) 0%, transparent 65%);
  filter:blur(40px); animation:floatGlow 6s ease-in-out infinite alternate;
  pointer-events:none;
}
@keyframes floatGlow {
  0% { transform:scale(1) translateY(0); }
  100% { transform:scale(1.2) translateY(-30px); }
}
.hero-tag {
  font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:4px;
  color:var(--cyan); margin-bottom:26px; animation:fadeIn 1s .2s backwards;
}
.hero-avatar-wrap {
  position:relative;
  display:inline-block;
  margin-bottom:22px;
  z-index:2;
}

.hero-avatar-wrap::before,
.hero-avatar-wrap::after {
  content:'';
  position:absolute;
  inset:-14px;
  border-radius:50%;
  border:1px solid var(--cyan);
  opacity:0;
  pointer-events:none;
  animation:breathRing 3.2s ease-out infinite;
}
.hero-avatar-wrap::after {
  border-color:var(--blue);
  animation-delay:1.6s;
}

.hero-avatar {
  width:150px; height:150px; border-radius:50%; object-fit:cover;
  border:2px solid var(--blue);
  box-shadow:0 0 40px var(--blue), 0 0 90px rgba(0,180,255,.35);
  animation:floatY 4s ease-in-out infinite, fadeIn 1s .4s backwards, avatarBreathe 3.2s ease-in-out infinite;
  display:block;
}

@keyframes avatarBreathe {
  0%,100% {
    box-shadow:0 0 30px var(--blue), 0 0 60px rgba(0,180,255,.3);
    filter:brightness(1);
  }
  50% {
    box-shadow:0 0 60px var(--cyan), 0 0 120px rgba(0,229,255,.55);
    filter:brightness(1.08);
  }
}

@keyframes breathRing {
  0%   { transform:scale(1);   opacity:0.6; }
  70%  { transform:scale(1.35); opacity:0; }
  100% { transform:scale(1.35); opacity:0; }
}

@keyframes floatY {
  0%,100% { transform:translateY(0); }
  50%      { transform:translateY(-12px); }
}

/* «Дыхание» вокруг авы — пульсирующие кольца */
.hero-avatar::before,
.hero-avatar::after {
  content:'';
  position:absolute;
  inset:-14px;
  border-radius:50%;
  border:1px solid var(--cyan);
  opacity:0;
  pointer-events:none;
  animation:breathRing 3.2s ease-out infinite;
}
.hero-avatar::after {
  inset:-14px;
  border-color:var(--blue);
  animation-delay:1.6s;
}

@keyframes avatarBreathe {
  0%,100% {
    box-shadow:0 0 30px var(--blue), 0 0 60px rgba(0,180,255,.3);
    filter:brightness(1);
  }
  50% {
    box-shadow:0 0 60px var(--cyan), 0 0 120px rgba(0,229,255,.55);
    filter:brightness(1.08);
  }
}

@keyframes breathRing {
  0% {
    transform:scale(1);
    opacity:0.6;
    box-shadow:0 0 0 0 rgba(0,229,255,0.5);
  }
  70% {
    transform:scale(1.35);
    opacity:0;
    box-shadow:0 0 0 30px rgba(0,229,255,0);
  }
  100% {
    opacity:0;
    transform:scale(1.35);
  }
}

@keyframes floatY {
  0%,100% { transform:translateY(0); }
  50%      { transform:translateY(-12px); }
}
@keyframes fadeIn { from { opacity:0; transform:translateY(20px); } to { opacity:1; transform:translateY(0); } }

.hero-name {
  font-family:'Orbitron',sans-serif; font-weight:900;
  font-size:clamp(46px,10vw,120px); letter-spacing:8px; color:#fff;
  position:relative; animation:fadeIn 1s .6s backwards;
  text-shadow:0 0 30px rgba(0,180,255,.6), 0 0 60px rgba(0,180,255,.3);
}
.hero-name::before, .hero-name::after {
  content:attr(data-glitch); position:absolute; top:0; left:0; width:100%;
  color:#fff; opacity:.85;
}
.hero-name::before { color:#00e5ff; transform:translate(-2px,-1px); opacity:.6; animation:glitch1 4s infinite; }
.hero-name::after  { color:#ff0066; transform:translate(2px,1px); opacity:.4; animation:glitch2 5s infinite; }
@keyframes glitch1 {
  0%,92%,100% { clip-path:inset(0 0 100% 0); }
  93% { clip-path:inset(20% 0 60% 0); transform:translate(-3px,0); }
  95% { clip-path:inset(50% 0 30% 0); transform:translate(3px,0); }
}
@keyframes glitch2 {
  0%,90%,100% { clip-path:inset(100% 0 0 0); }
  91% { clip-path:inset(60% 0 20% 0); transform:translate(3px,0); }
  94% { clip-path:inset(30% 0 50% 0); transform:translate(-3px,0); }
}

.terminal {
  font-family:'JetBrains Mono',monospace; font-size:15px; color:var(--cyan);
  margin:24px 0 30px; min-height:24px; animation:fadeIn 1s .8s backwards;
}
.term-prompt { color:var(--blue); margin-right:6px; }
.term-cursor { animation:blink .9s steps(1) infinite; }
@keyframes blink { 50% { opacity:0; } }

.hero-stats {
  display:flex; gap:50px; margin-bottom:36px; justify-content:center; flex-wrap:wrap;
  animation:fadeIn 1s 1s backwards;
}
.stat { display:flex; flex-direction:column; align-items:center; }
.stat-num {
  font-family:'Orbitron',sans-serif; font-size:34px; font-weight:800;
  color:#fff; text-shadow:0 0 20px var(--blue);
}
.stat-label {
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:2px;
  color:var(--muted); margin-top:4px; text-transform:uppercase;
}

.hero-buttons { display:flex; gap:16px; flex-wrap:wrap; justify-content:center; animation:fadeIn 1s 1.2s backwards; }

.btn {
  padding:13px 30px; border-radius:6px; text-decoration:none; font-weight:700;
  letter-spacing:2px; font-size:14px; text-transform:uppercase;
  transition:all .3s; display:inline-block; position:relative; overflow:hidden;
}
.btn-primary {
  background:linear-gradient(135deg,var(--blue),var(--blue-2)); color:#fff;
  box-shadow:0 0 25px rgba(0,180,255,.5);
}
.btn-primary:hover { box-shadow:0 0 45px rgba(0,229,255,.9); transform:translateY(-3px); }
.btn-ghost { border:1px solid var(--blue); color:var(--blue); }
.btn-ghost:hover { background:var(--blue); color:#000; box-shadow:0 0 20px var(--blue); }

.scroll-hint {
  position:absolute; bottom:26px; font-family:'JetBrains Mono',monospace;
  font-size:11px; letter-spacing:3px; color:var(--blue);
  animation:bounce 2s infinite;
}
@keyframes bounce { 0%,100% { transform:translateY(0); opacity:1; } 50% { transform:translateY(8px); opacity:.4; } }

/* Sections */
.section {
  padding:110px 40px; max-width:1250px; margin:0 auto;
  position:relative; z-index:2;
}
.section-head {
  display:flex; align-items:center; gap:24px; margin-bottom:60px;
}
.section-num {
  font-family:'JetBrains Mono',monospace; font-size:13px; color:var(--cyan);
  padding:6px 12px; border:1px solid var(--line); border-radius:4px;
  letter-spacing:2px;
}
.section-title {
  font-family:'Orbitron',sans-serif; font-size:clamp(26px,5vw,42px);
  font-weight:800; letter-spacing:6px; color:#fff;
  position:relative;
  display:inline-block;
}

.section-title.glitch {
  animation:titleGlitch 0.4s steps(2, end);
}

.section-title::before,
.section-title::after {
  content:attr(data-text);
  position:absolute;
  top:0; left:0;
  width:100%;
  pointer-events:none;
  opacity:0;
}

.section-title.glitch::before {
  opacity:1;
  color:#00e5ff;
  text-shadow:2px 0 #00e5ff, -2px 0 #ff0066;
  animation:glitchSliceA 0.4s steps(3, end);
}

.section-title.glitch::after {
  opacity:1;
  color:#ff0066;
  text-shadow:-2px 0 #ff0066, 2px 0 #00e5ff;
  animation:glitchSliceB 0.4s steps(3, end);
}

@keyframes titleGlitch {
  0%   { transform:translate(0,0); }
  20%  { transform:translate(-2px,1px); }
  40%  { transform:translate(2px,-1px); }
  60%  { transform:translate(-1px,-2px); }
  80%  { transform:translate(1px,2px); }
  100% { transform:translate(0,0); }
}

@keyframes glitchSliceA {
  0%   { clip-path:inset(0 0 100% 0); transform:translate(0); }
  20%  { clip-path:inset(15% 0 60% 0); transform:translate(-3px,0); }
  40%  { clip-path:inset(50% 0 30% 0); transform:translate(3px,0); }
  60%  { clip-path:inset(70% 0 10% 0); transform:translate(-2px,0); }
  80%  { clip-path:inset(30% 0 55% 0); transform:translate(2px,0); }
  100% { clip-path:inset(100% 0 0 0); transform:translate(0); }
}

@keyframes glitchSliceB {
  0%   { clip-path:inset(100% 0 0 0); transform:translate(0); }
  20%  { clip-path:inset(60% 0 20% 0); transform:translate(3px,0); }
  40%  { clip-path:inset(30% 0 45% 0); transform:translate(-3px,0); }
  60%  { clip-path:inset(10% 0 70% 0); transform:translate(2px,0); }
  80%  { clip-path:inset(55% 0 25% 0); transform:translate(-2px,0); }
  100% { clip-path:inset(0 0 100% 0); transform:translate(0); }
}
.section-title::after {
  content:''; display:block; width:60px; height:2px;
  background:linear-gradient(90deg,var(--cyan),transparent);
  margin-top:12px;
}

/* About */
.about-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:22px;
}
.about-card, .project-card, .game-card, .contact-box {
  position:relative;
  background:linear-gradient(145deg, rgba(7,16,34,.9), rgba(3,6,13,.9));
  border:1px solid var(--line);
  border-radius:10px; padding:28px;
  transition:all .4s ease;
  overflow:hidden;
}
.card-corner {
  position:absolute; top:0; right:0; width:24px; height:24px; pointer-events:none;
  border-top:1px solid var(--cyan); border-right:1px solid var(--cyan);
  border-top-right-radius:10px;
  transition:all .4s;
}
.about-card::before, .project-card::before, .game-card::before, .contact-box::before {
  content:''; position:absolute; inset:0;
  background:linear-gradient(90deg, transparent, rgba(0,180,255,.08), transparent);
  transform:translateX(-100%); transition:transform .6s;
}
.about-card:hover::before, .project-card:hover::before, .game-card:hover::before, .contact-box:hover::before {
  transform:translateX(100%);
}
.about-card:hover, .project-card:hover, .game-card:hover, .contact-box:hover {
  border-color:var(--blue); transform:translateY(-6px);
  box-shadow:0 10px 40px rgba(0,180,255,.25);
}
.about-card:hover .card-corner, .project-card:hover .card-corner,
.game-card:hover .card-corner, .contact-box:hover .card-corner {
  width:100%; height:100%; border-radius:10px;
  border-color:transparent; box-shadow:inset 0 0 0 1px var(--cyan);
}
.about-icon {
  font-size:28px; color:var(--cyan); margin-bottom:14px;
  text-shadow:0 0 15px var(--cyan);
}
.about-card h3 {
  font-family:'Orbitron',sans-serif; font-size:16px; letter-spacing:2px;
  color:#fff; margin-bottom:12px; text-transform:uppercase;
}
.about-card p { color:var(--muted); line-height:1.6; font-size:15px; }

/* Projects */
.projects-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:20px;
}
.project-card {
  text-decoration:none; color:var(--text); display:block;
}
.project-icon {
  font-size:24px; color:var(--cyan); margin-bottom:14px;
  text-shadow:0 0 15px var(--cyan);
}
.project-card h3 {
  font-family:'Orbitron',sans-serif; font-size:16px; letter-spacing:2px;
  color:#fff; margin-bottom:10px; text-transform:uppercase;
}
.project-card p { color:var(--muted); font-size:14px; line-height:1.5; margin-bottom:16px; }
.project-link {
  font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:2px;
  color:var(--blue); transition:color .3s, transform .3s;
  display:inline-block;
}
.project-card:hover .project-link { color:var(--cyan); transform:translateX(6px); }

/* Games */
.games-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:22px;
}
.game-card { text-align:center; }
.game-card h3 {
  font-family:'Orbitron',sans-serif; font-size:16px; letter-spacing:2px;
  color:var(--cyan); margin-bottom:12px; text-transform:uppercase;
}
.game-card p { color:var(--muted); margin-bottom:20px; font-size:14px; }
.game-btn {
  background:linear-gradient(135deg,var(--blue),var(--blue-2)); color:#fff;
  border:none; padding:12px 30px; border-radius:6px;
  font-family:'Rajdhani',sans-serif; font-weight:700; font-size:14px;
  letter-spacing:2px; text-transform:uppercase; transition:all .3s;
  box-shadow:0 0 20px rgba(0,180,255,.4);
}
.game-btn:hover { box-shadow:0 0 35px rgba(0,229,255,.8); transform:translateY(-2px); }
.game-btn:disabled { opacity:.5; transform:none; }
.game-btn.ready { background:linear-gradient(135deg,#00e676,#00c853); box-shadow:0 0 30px #00e676; }
.game-btn.too-soon { background:linear-gradient(135deg,#ff1744,#d50000); }

.guess-row { display:flex; gap:8px; justify-content:center; margin-bottom:12px; }
#guess-input {
  width:100px; padding:11px; border-radius:6px;
  border:1px solid var(--line); background:var(--bg); color:var(--text);
  font-family:'JetBrains Mono',monospace; font-size:15px; text-align:center; outline:none;
}
#guess-input:focus { border-color:var(--cyan); box-shadow:0 0 15px rgba(0,229,255,.4); }
.game-result {
  margin-top:16px; font-family:'JetBrains Mono',monospace; font-size:14px;
  min-height:20px; color:var(--cyan);
}

#catch-canvas {
  display:block; margin:0 auto 16px;
  border:1px solid var(--line); border-radius:6px;
  background:radial-gradient(ellipse at center, #071022, #03060d);
  cursor:crosshair;
}

/* Contact */
.contact-box { text-align:center; padding:50px 30px; }
.contact-box p { font-size:17px; margin-bottom:26px; color:var(--text); }
.contact-links { display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }

/* Footer */
.footer {
  text-align:center; padding:40px 20px; color:var(--muted); font-size:13px;
  border-top:1px solid var(--line); font-family:'JetBrains Mono',monospace;
  letter-spacing:1px; position:relative; z-index:2;
}

/* Reveal */
.reveal {
  opacity:0; transform:translateY(40px);
  transition:opacity .8s ease, transform .8s ease;
  transition-delay:calc(var(--d, 0) * 0.1s);
}
.reveal.visible { opacity:1; transform:translateY(0); }

/* Responsive */
@media (max-width:850px) {
  body, a, button { cursor:auto; }
  .cursor-dot, .cursor-ring { display:none; }
  .navbar { padding:14px 18px; flex-wrap:wrap; gap:10px; }
  .nav-links { gap:14px; font-size:12px; flex-wrap:wrap; }
  .section { padding:80px 20px; }
  .hero-stats { gap:28px; }
  .stat-num { font-size:26px; }
  .section-head { gap:14px; }
  #catch-canvas { max-width:100%; height:auto; }
}

::-webkit-scrollbar { width:8px; }
::-webkit-scrollbar-track { background:var(--bg); }
::-webkit-scrollbar-thumb { background:linear-gradient(var(--blue),var(--blue-2)); border-radius:4px; }
::-webkit-scrollbar-thumb:hover { background:var(--cyan); }
.cs-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 32px;
  font-family: 'Orbitron', sans-serif;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 1px;
  color: #00e5ff;
  border: 1px solid var(--cyan);
  border-radius: 6px;
  box-shadow: 0 0 14px rgba(0, 229, 255, 0.5), inset 0 0 10px rgba(0, 229, 255, 0.15);
  text-shadow: 0 0 8px #00e5ff;
  background: rgba(0, 229, 255, 0.06);
  transition: all 0.3s;
}
.project-card:hover .cs-badge {
  box-shadow: 0 0 25px rgba(0, 229, 255, 0.9), inset 0 0 16px rgba(0, 229, 255, 0.25);
  transform: scale(1.06);
}
