/* ═══════════════════════════════════════════════════════════════
   sagu4ka.ru — Кастомные стили
   Дополняет Tailwind: анимации, глитч, скроллбар, компоненты
   ═══════════════════════════════════════════════════════════════ */

/* ─── CSS Переменные (тема) ──────────────────────────────────── */
:root {
  --void:          #0a0a0f;
  --obsidian:      #12121a;
  --slate:         #1e1e2e;
  --slate-light:   #2a2a3e;
  --violet:        #7c3aed;
  --violet-bright: #8b5cf6;
  --teal:          #06b6d4;
  --emerald:       #10b981;
  --ghost:         #e2e8f0;
  --muted:         #64748b;
  --font-mono:     'JetBrains Mono', monospace;
  --font-sans:     'Inter', sans-serif;
}

/* ─── Кастомный скроллбар ────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--void); }
::-webkit-scrollbar-thumb {
  background: var(--slate-light);
  border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover { background: var(--violet); }

/* Firefox */
* { scrollbar-width: thin; scrollbar-color: var(--slate-light) var(--void); }

/* ─── Плавный скролл (полифилл для Safari) ───────────────────── */
html { scroll-behavior: smooth; }

/* ─── Выделение текста ───────────────────────────────────────── */
::selection {
  background: rgba(124, 58, 237, 0.4);
  color: var(--ghost);
}

/* ─── Хедер: стеклянный эффект при скролле ──────────────────── */
.header-scrolled {
  background: rgba(10, 10, 15, 0.85) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(42, 42, 62, 0.8);
}

/* ─── Навигационные ссылки: активная подчёркивается ─────────── */
.nav-link.active { color: var(--ghost); }
.nav-link.active::after {
  content: '';
  display: block;
  height: 1px;
  background: var(--violet-bright);
  margin-top: 2px;
}

/* ─── Мигающий курсор в typewriter ──────────────────────────── */
.typewriter-cursor {
  display: inline-block;
  animation: blink 1s step-end infinite;
}
@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* ─── Reveal-анимация при скролле ───────────────────────────── */
.reveal-element {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal-element.revealed {
  opacity: 1;
  transform: translateY(0);
}

/* ─── Теги на карточках проектов ────────────────────────────── */
.tag {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 9999px;
  border: 1px solid rgba(16, 185, 129, 0.25);
  background: rgba(16, 185, 129, 0.08);
  color: #34d399;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.05em;
}
.tag-sm {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 6px;
  border: 1px solid rgba(100, 116, 139, 0.3);
  background: rgba(30, 30, 46, 0.8);
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 10px;
}

/* ─── Элементы стека (skill items) ──────────────────────────── */
.skill-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px solid rgba(42, 42, 62, 0.8);
  background: rgba(18, 18, 26, 0.6);
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 12px;
  transition: border-color 0.2s, color 0.2s;
}
.skill-item:hover {
  border-color: rgba(139, 92, 246, 0.4);
  color: var(--ghost);
}

/* ─── Статистические карточки ────────────────────────────────── */
.stat-card {
  padding: 20px 24px;
  border-radius: 14px;
  border: 1px solid rgba(42, 42, 62, 0.8);
  background: rgba(18, 18, 26, 0.6);
  transition: border-color 0.3s, transform 0.3s;
}
.stat-card:hover {
  border-color: rgba(139, 92, 246, 0.3);
  transform: translateX(4px);
}

/* ─── Форма обратной связи ───────────────────────────────────── */
.form-label {
  display: block;
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted);
  margin-bottom: 8px;
}
.form-input {
  display: block;
  width: 100%;
  padding: 12px 16px;
  border-radius: 10px;
  border: 1px solid rgba(42, 42, 62, 0.9);
  background: rgba(10, 10, 15, 0.8);
  color: var(--ghost);
  font-family: var(--font-mono);
  font-size: 13px;
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.form-input:focus {
  border-color: rgba(139, 92, 246, 0.6);
  box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.12);
}
.form-input::placeholder { color: rgba(100, 116, 139, 0.6); }

/* ─── Кнопка Submit: состояния ───────────────────────────────── */
#contact-submit:disabled { opacity: 0.6; cursor: not-allowed; }
#contact-submit.loading { pointer-events: none; }

/* ─── Пасхалка: терминальное окно ───────────────────────────── */
.easter-terminal {
  animation: terminalAppear 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes terminalAppear {
  from { opacity: 0; transform: scale(0.92) translateY(20px); }
  to   { opacity: 1; transform: scale(1)    translateY(0); }
}

/* Строки терминального вывода */
.terminal-line {
  opacity: 0;
  animation: lineReveal 0.05s ease forwards;
}
@keyframes lineReveal {
  to { opacity: 1; }
}

/* Цвета строк */
.terminal-line.prompt  { color: var(--violet-bright); }
.terminal-line.output  { color: var(--muted); }
.terminal-line.success { color: var(--emerald); }
.terminal-line.warn    { color: #f59e0b; }
.terminal-line.data    { color: var(--teal); }

/* ─── Глитч-эффект для формулы L > P ───────────────────────── */
.glitch-text {
  position: relative;
  display: inline-block;
}

/* Основная анимация глитча */
.glitch-text {
  animation: glitchMain 3s infinite;
}

/* Псевдоэлементы создают цветовые сдвиги */
.glitch-text::before,
.glitch-text::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.glitch-text::before {
  color: var(--teal);
  animation: glitchBefore 3s infinite;
  clip-path: polygon(0 0, 100% 0, 100% 35%, 0 35%);
}
.glitch-text::after {
  color: #f43f5e;
  animation: glitchAfter 3s infinite;
  clip-path: polygon(0 65%, 100% 65%, 100% 100%, 0 100%);
}

@keyframes glitchMain {
  0%,  90%, 100% { transform: none; }
  91%            { transform: skewX(-2deg); }
  92%            { transform: skewX(2deg); }
  93%            { transform: none; }
  95%            { transform: skewX(-1deg) scaleX(1.01); }
  97%            { transform: none; }
}

@keyframes glitchBefore {
  0%,  90%, 100% { transform: none;            opacity: 0.7; }
  91%            { transform: translateX(-3px); opacity: 0.9; }
  93%            { transform: translateX(3px);  opacity: 0.7; }
  95%            { transform: translateX(-2px); opacity: 0.9; }
  97%            { transform: none;             opacity: 0.7; }
}

@keyframes glitchAfter {
  0%,  90%, 100% { transform: none;           opacity: 0.7; }
  91%            { transform: translateX(3px); opacity: 0.9; }
  93%            { transform: translateX(-3px);opacity: 0.7; }
  95%            { transform: translateX(2px); opacity: 0.9; }
  97%            { transform: none;            opacity: 0.7; }
}

/* ─── Сканлайн-оверлей (для терминала пасхалки) ─────────────── */
.easter-terminal::after {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(0, 0, 0, 0.04) 2px,
    rgba(0, 0, 0, 0.04) 4px
  );
  pointer-events: none;
  border-radius: inherit;
  z-index: 1;
}

/* ─── Радиальное свечение за формулой ───────────────────────── */
#easter-formula::before {
  content: '';
  position: absolute;
  inset: -40px;
  background: radial-gradient(ellipse, rgba(124, 58, 237, 0.18) 0%, transparent 70%);
  z-index: -1;
  animation: pulseGlow 2s ease-in-out infinite alternate;
}
#easter-formula { position: relative; }

@keyframes pulseGlow {
  from { opacity: 0.6; }
  to   { opacity: 1;   }
}

/* ─── Пасхалка: flash-вспышка экрана при активации ─────────── */
@keyframes flashScreen {
  0%   { opacity: 0; }
  10%  { opacity: 0.15; }
  20%  { opacity: 0; }
  30%  { opacity: 0.08; }
  100% { opacity: 0; }
}
.screen-flash {
  position: fixed;
  inset: 0;
  background: var(--violet-bright);
  pointer-events: none;
  z-index: 9998;
  animation: flashScreen 0.6s ease forwards;
}

/* ─── Мобайл: убираем hover-transform на тач-устройствах ────── */
@media (hover: none) {
  .project-card:hover { transform: none; }
  .stat-card:hover    { transform: none; }
}

/* ─── Уважаем prefers-reduced-motion ────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
  .reveal-element { opacity: 1; transform: none; }
}
