@import url('https://fonts.cdnfonts.com/css/minecraftia');

:root{
  --bg:#020602;
  --surface:#0d1310;
  --card:#111913;
  --accent:#00ff88;
  --accent-dark:#00c46b;
  --muted:#92cfa7;
  --text:#e8ffeb;
  --shadow:0 20px 80px rgba(0,196,107,0.12);
}
*{box-sizing:border-box}
html,body{height:100%;scroll-behavior:smooth}
body{
  margin:0;
  font-family:Inter,system-ui,Segoe UI,Roboto,"Helvetica Neue",Arial;
  background:radial-gradient(circle at top, rgba(0,196,107,0.12), transparent 35%),
    linear-gradient(180deg, #020602 0%, #030904 40%, #050a05 100%);
  color:var(--text);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
#bg {
  position: fixed;
  inset: 0;
  z-index: -2; /* Уводим кубы на самый задний план */
  pointer-events: none;
  background: radial-gradient(circle at 40% 20%, rgba(0,196,107,0.11), transparent 18%),
              linear-gradient(180deg, #020602 0%, #030904 40%, #050a05 100%);
  /* Сюда автоматически подгрузится твоя текстура кубов из Three.js или CSS, если она генерировалась кодом */
}
.container{width:min(1100px,94%);margin:0 auto;position:relative;z-index:2}

.audio-widget{position:fixed;left:18px;bottom:18px;z-index:50;background:rgba(0,0,0,0.62);border:1px solid rgba(0,255,136,0.18);backdrop-filter:blur(10px);border-radius:999px;padding:10px 14px;display:flex;align-items:center;gap:10px;box-shadow:0 18px 48px rgba(0,196,107,0.14)}
.audio-widget button{background:linear-gradient(90deg,rgba(0,255,136,0.18),rgba(0,196,107,0.14));border:1px solid rgba(0,255,136,0.3);color:var(--text);padding:10px 14px;border-radius:999px;cursor:pointer;transition:all 220ms ease;font-weight:700}
.audio-widget button:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,255,136,0.18)}
.audio-widget span{color:var(--muted);font-size:0.95rem}
.top{padding:20px 0;background:rgba(0,0,0,0.24);backdrop-filter:blur(12px);position:sticky;top:0;z-index:30}
.top-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{font-weight:900;background:linear-gradient(90deg,#7cffb7,#00c46b);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:1.25rem;letter-spacing:0.5px;text-shadow:0 10px 30px rgba(0,196,107,0.14)}
.lang-switch .lang{background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.14);color:var(--text);padding:10px 14px;margin-left:6px;border-radius:999px;cursor:pointer;transition:all 220ms ease}
.lang-switch .lang:hover{background:rgba(0,196,107,0.18);border-color:rgba(0,196,107,0.25)}
.lang.active{background:linear-gradient(90deg, rgba(0,255,136,0.18), rgba(0,196,107,0.12));border-color:var(--accent);color:var(--accent)}
.fullwidth{width:100%;padding:60px 0 100px}
.hero-inner{padding:40px 0;position:relative;z-index:1}
.hero{position:relative;overflow:hidden}
.hero::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 40% 20%, rgba(0,255,136,0.14), transparent 18%),radial-gradient(circle at 80% 10%, rgba(0,255,136,0.08), transparent 16%);pointer-events:none}
.hero h1 {
  font-family: 'Minecraftia', 'Inter', sans-serif; /* Подключаем майнкрафт-шрифт */
  font-size: clamp(2.8rem, 5vw, 4.5rem);
  margin: 0 0 14px;
  white-space: nowrap;
  letter-spacing: 0.3rem; /* Пиксельные шрифты круто смотрятся с небольшим зазором букв */
  
  /* Твой текущий градиент на тексте */
  background: linear-gradient(90deg,#7affe3,#00c46b 45%,#7affe3);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: 0 18px 70px rgba(0,196,107,0.12);
}
.subtitle{font-size:1.25rem;color:var(--muted);max-width:780px;line-height:1.85}
.about, .portfolio, .contacts{padding:70px 0}
.about p{white-space:pre-line;line-height:1.95;max-width:900px;color:var(--muted);margin-top:18px}
.section-header{display:flex;align-items:center;justify-content:space-between;gap:18px}
.section-header h2{font-size:clamp(1.9rem,2.4vw,2.8rem);margin:0;letter-spacing:0.05rem}
.section-header::after{content:'';display:block;width:90px;height:4px;background:linear-gradient(90deg,rgba(0,255,136,0.9),rgba(0,196,107,0.4));border-radius:999px;margin-top:14px}
.filters{display:flex;gap:10px;flex-wrap:wrap}
.filter{background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);color:var(--text);padding:10px 16px;border-radius:999px;cursor:pointer;transition:all 220ms ease;font-weight:600}
.filter.active{background:linear-gradient(90deg, rgba(0,255,136,0.18), rgba(0,196,107,0.14));border-color:var(--accent)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:22px;margin-top:30px}
.card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.01));
  border: 1px solid rgba(255, 255, 255, 0.03);
  padding: 16px;
  border-radius: 12px;
  /* Убираем min-height: 180px, чтобы карточка подстраивалась под контент */
  height: 100%; 
}

/* Обязательно добавляем position: relative для корректного позиционирования пометки */
/* Возвращаем обложку в дефолтный вид */
.card .cover {
  aspect-ratio: 16 / 7;
  width: 100%;
  height: auto;
  border-radius: 8px;
  overflow: hidden;
  background: #060606;
  margin-bottom: 6px;
}

/* Строка-контейнер для цены и плашки */
.card-footer-row {
  display: flex;
  justify-content: space-between; /* Цена уйдет влево, плашка — вправо */
  align-items: center;
  margin-top: auto; /* Выталкивает строку к самому низу карточки */
  padding-top: 10px;
}

/* Обновленная кастомная зеленая подложка в углу */
.custom-project-badge {
  background: linear-gradient(135deg, rgba(0, 255, 136, 0.9) 0%, rgba(0, 196, 107, 0.9) 100%);
  color: #00110a;
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05rem;
  padding: 4px 10px;
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0, 196, 107, 0.2);
  transition: transform 220ms ease;
}

/* Главная секция первого экрана */
.hero {
  position: relative;
  overflow: hidden;
  padding: 80px 0 40px; /* Увеличили верхний отступ, чтобы сбалансировать шапку */
}

/* Контейнер флексов, зажатый строго внутри сетки .container */
.hero-inner {
  display: flex;
  align-items: center;
  justify-content: space-between; /* Текст влево, аватарка вправо */
  gap: 20px; /* Уменьшаем минимальный зазор, чтобы элементы не выталкивали друг друга */
  position: relative;
  z-index: 10;
  width: 100%;
}

/* Текстовый блок: даем ему больше пространства */
.hero-text {
  flex: 1.3; /* Занимает чуть больше места, чтобы никнейм не переносился */
  max-width: 650px;
  text-align: left;
}

/* Заголовок теперь не будет ломаться на ровном месте */
.hero h1 {
  font-size: clamp(2.8rem, 5vw, 4.5rem); /* Слегка оптимизировали размер для баланса */
  margin: 0 0 14px;
  white-space: nowrap; /* Запрещаем перенос букв никнейма */
}

/* Контейнер для скина бобра в правой части */
.hero-avatar-wrap {
  flex: 0.9; /* Занимает чуть меньше пространства, аккуратно вставая в угол */
  max-width: 320px;
  display: flex;
  justify-content: flex-end; /* Сдвигаем картинку ближе к центру, подальше от правого края */
  position: relative;
}

/* Картинка скина с мягким растворением в кубах */
.hero-avatar {
  width: 100%;
  max-width: 260px; /* Ограничиваем физический размер картинки */
  height: auto;
  display: block;
  object-fit: contain;
  z-index: 12;
  
  /* Идеальный градиент: верх полностью виден, с 60% начинается мягкое растворение */
  -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 55%, rgba(0,0,0,0) 95%);
  mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 55%, rgba(0,0,0,0) 95%);
}

/* Адаптивность для мобильных телефонов и планшетов */
@media (max-width: 900px) {
  .hero-inner {
    flex-direction: column; /* На маленьких экранах выстраиваем в один столбик */
    text-align: center;
    gap: 40px;
  }
  .hero-text {
    text-align: center;
    margin: 0 auto;
  }
  .hero h1 {
    white-space: normal; /* На телефонах перенос имени разрешен, если экран совсем крошечный */
  }
  .hero-avatar-wrap {
    max-width: 220px;
    justify-content: center;
    margin: 0 auto;
  }
}

/* Дополнительный чёрный градиент-подложка (синяя зона на наброске) */

/* Легкий интерактив при наведении на саму карточку */
.card:hover .custom-project-badge {
  transform: scale(1.05);
}

.card .cover img {
  width: 100%;
  height: 100%;
  /* Картинка заполнит область без деформации (лишнее аккуратно обрежется) */
  object-fit: cover; 
  object-position: center;
  display: block;
}
.card .title{font-weight:700;color:var(--accent);font-size:1.05rem}
.badge{display:inline-block;padding:6px 10px;border-radius:999px;font-size:0.85rem;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.02);margin-right:8px}
.price{font-weight:800;margin-top:6px;color:var(--text)}
.contacts-list{list-style:none;padding:0;margin:0}
.contacts-list li{margin-bottom:8px;color:var(--muted)}
.site-footer{padding:24px 0;color:rgba(255,255,255,0.45)}
.reveal{opacity:0;transform:translateY(18px);transition:all 600ms cubic-bezier(.2,.9,.3,1)}
.reveal.in-view{opacity:1;transform:none}

/* Admin / generator UI */
.fab{position:fixed;right:18px;bottom:18px;background:var(--accent);color:#00110a;padding:12px;border-radius:50%;border:none;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,0.6);z-index:40;font-weight:800}
.admin-panel{position:fixed;right:20px;bottom:80px;width:360px;max-width:calc(100% - 40px);background:linear-gradient(180deg,#07120b,#08130d);border:1px solid rgba(0,255,136,0.14);box-shadow:0 24px 70px rgba(0,196,107,0.18);padding:18px;border-radius:18px;z-index:41}
.admin-panel h3{margin:0 0 12px;color:var(--accent);font-size:1.1rem;text-transform:uppercase;letter-spacing:0.08rem}
.admin-panel label{display:block;font-size:0.85rem;color:var(--muted);margin-top:8px}
.admin-panel input,.admin-panel textarea,.admin-panel select{width:100%;padding:8px;background:transparent;border:1px solid rgba(255,255,255,0.04);color:var(--text);border-radius:6px}
.admin-panel .row{display:flex;gap:8px}
.admin-panel .row > *{flex:1}
.admin-panel button{margin-top:10px;padding:8px 10px;border-radius:8px;border:none;cursor:pointer}
.admin-actions{display:flex;gap:8px}
.card{transition:transform 280ms ease,box-shadow 280ms ease}
.card:hover{transform:translateY(-8px) scale(1.02);box-shadow:0 18px 40px rgba(0,196,107,0.06), inset 0 1px 0 rgba(255,255,255,0.02)}
.filter{transition:all 220ms}
.filter:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,196,107,0.04)}
.fab{transition:transform 160ms ease,box-shadow 160ms ease}
.fab:hover{transform:scale(1.06);box-shadow:0 12px 30px rgba(0,196,107,0.18)}

.cta-button{margin-top:20px;padding:14px 28px;background:linear-gradient(90deg,rgba(0,255,136,0.2),rgba(0,196,107,0.15));border:1px solid var(--accent);color:var(--accent);border-radius:999px;cursor:pointer;font-weight:700;font-size:1.05rem;transition:all 280ms cubic-bezier(.2,.9,.3,1);box-shadow:0 12px 35px rgba(0,255,136,0.12)}
.cta-button:hover{transform:translateY(-4px);box-shadow:0 20px 50px rgba(0,255,136,0.22),inset 0 1px 0 rgba(255,255,255,0.06);background:linear-gradient(90deg,rgba(0,255,136,0.28),rgba(0,196,107,0.22))}

/* Контейнер для заголовка контактов (добавь класс .contacts-header к своему h2 в HTML) */
/* Контейнер заголовка контактов */
.contacts-header {
  display: flex;
  align-items: center;
  justify-content: space-between; /* Раскидывает Контакты влево, Онлайн — вправо */
  gap: 18px;
  margin-bottom: 24px;
  position: relative;
  width: 100%;
}

/* Наш прямоугольник-вспышка на всю ширину экрана */
.contacts-header::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%) scaleX(0);
  
  width: 200vw; /* Растягивается на весь сайт */
  height: 140%; /* Чуть выше текста заголовка */
  
  background: radial-gradient(ellipse, rgba(0, 255, 136, 0.22) 0%, rgba(0, 196, 107, 0.04) 50%, transparent 75%);
  border-top: 1px solid rgba(0, 255, 136, 0.3);
  border-bottom: 1px solid rgba(0, 255, 136, 0.3);
  
  pointer-events: none;
  z-index: -1; /* Обязательно уводим на задний план под текст */
  opacity: 0;
  transition: transform 1s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.4s ease;
}

/* Класс анимации, активируемый из app.js */
.contacts-header.pulse-line::before {
  transform: translate(-50%, -50%) scaleX(1);
  opacity: 1;
}
.contacts-header h2{margin:0}
.online-badge{display:flex;align-items:center;gap:8px;padding:8px 14px;background:linear-gradient(90deg,rgba(0,255,136,0.12),rgba(0,196,107,0.08));border:1px solid rgba(0,255,136,0.3);border-radius:999px;font-size:0.9rem;font-weight:600;color:var(--accent)}
.online-dot{display:inline-block;width:10px;height:10px;background:var(--accent);border-radius:50%;box-shadow:0 0 12px rgba(0,255,136,0.8),inset 0 0 4px rgba(255,255,255,0.3);animation:pulse-online 2s ease-in-out infinite}
@keyframes pulse-online{0%,100%{box-shadow:0 0 12px rgba(0,255,136,0.8),inset 0 0 4px rgba(255,255,255,0.3)}50%{box-shadow:0 0 24px rgba(0,255,136,0.95),inset 0 0 6px rgba(255,255,255,0.4)}}

.contact-item{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding:10px 12px;border-radius:10px;transition:all 240ms ease}
.contact-item svg{color:var(--accent);min-width:24px;width:24px;height:24px}
.contact-item a,.contact-item span{color:var(--muted);text-decoration:none;transition:color 240ms ease}
.contact-item:hover{background:rgba(0,196,107,0.08);transform:translateX(8px)}
.contact-item:hover svg{filter:drop-shadow(0 0 8px rgba(0,255,136,0.6))}
.contact-item:hover a,.contact-item:hover span{color:var(--text)}

.services {
  padding: 70px 0;
}

#contacts {
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.service-card {
  min-height: 150px;
  justify-content: flex-start;
  border-left: 3px solid var(--accent-dark); /* Красивая зеленая полоса слева */
  transition: all 280ms ease;
}

.service-card:hover {
  border-left-color: var(--accent);
  background: linear-gradient(180deg, rgba(0, 255, 136, 0.04), rgba(255, 255, 255, 0.01));
}

#cursor-glow {
  position: fixed; /* Именно fixed, чтобы не зависеть от скролла страницы */
  top: 0;
  left: 0;
  width: 100px;  /* Размер твоего свечения */
  height: 100px;
  background: radial-gradient(circle, rgba(0, 255, 136, 0.15) 0%, rgba(0, 0, 0, 0) 70%);
  pointer-events: none; /* Чтобы курсор не перекрывал клики по кнопкам и ссылкам */
  transform: translate(-50%, -50%); /* Сдвигает центр градиента ровно на острие мыши */
  z-index: 9999;
}
body{cursor:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><circle cx="12" cy="12" r="3" fill="%2300ff88"/></svg>') 12 12, auto}
#bgSV-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: -1; /* Светлячки летают над кубами, но под текстом и скин-аватаром */
  pointer-events: none; /* Пропускает клики мыши сквозь себя на кнопки */
  background: transparent !important; /* Убирает черный фон холста */
}

/* Холст эффекта матрицы: на весь экран, позади контента, размыт и не ловит события */
#matrix {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: -1; /* Под контентом, над фоном */
  pointer-events: none;
  background: transparent !important;
  filter: blur(6px) saturate(1.1);
  opacity: 0.9;
}

@media (max-width:600px){.section-header{flex-direction:column;align-items:flex-start;gap:12px}.top-row{gap:12px}.contacts-header{flex-direction:column;align-items:flex-start}}
