/* ── токены (поменяй здесь — поменяется весь сайт) ─── */
:root{
  --bg:        #06081a;
  --bg2:       #0b0f28;
  --card:      #10163a;
  --card2:     #141b45;
  --line:      rgba(255,255,255,.08);
  --line2:     rgba(255,255,255,.15);
  --text:      #e8ecff;
  --muted:     #9aa2c8;
  --dim:       #5c6489;
  --acc:       #a855f7;       /* основной фиолетовый */
  --acc2:      #c084fc;       /* светло-фиолетовый */
  --blue:      #3b82f6;       /* акцент синий */
  --blue2:     #60a5fa;
  --sans:      'Manrope',system-ui,sans-serif;
  --mono:      'JetBrains Mono',ui-monospace,monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:86px}
body{
  font-family:var(--sans);
  background:var(--bg);
  color:var(--text);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  min-height:100vh;
}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--acc);color:#1a0a2e}
.mono{font-family:var(--mono)}
.wrap{max-width:1060px;margin:0 auto;padding:0 22px;position:relative;z-index:2}

/* ── фон (canvas лежит под всем) ──────────────────── */
#bg-canvas{
  position:fixed; inset:0; z-index:0; pointer-events:none;
  width:100%; height:100%; display:block;
}
/* дополнительный градиент для глубины поверх канваса */
body::before{
  content:''; position:fixed; inset:0; z-index:1; pointer-events:none;
  background:
    radial-gradient(900px 500px at 50% -120px, rgba(168,85,247,.15), transparent 70%),
    radial-gradient(1100px 600px at 90% 40%,  rgba(59,130,246,.08), transparent 60%),
    radial-gradient(800px 500px  at 10% 80%,  rgba(168,85,247,.07), transparent 60%);
}
/* сетка поверх */
body::after{
  content:''; position:fixed; inset:0; z-index:1; pointer-events:none;
  background:radial-gradient(circle, rgba(255,255,255,.04) 1px, transparent 1px);
  background-size:30px 30px;
  -webkit-mask-image:linear-gradient(#000 0%, transparent 78%);
          mask-image:linear-gradient(#000 0%, transparent 78%);
}

/* ── шапка ────────────────────────────────────────── */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(6,8,26,.75);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.header-in{height:64px;display:flex;align-items:center;gap:22px}
.logo{
  font-weight:700; font-size:15px; letter-spacing:.04em;
  display:flex; align-items:center; gap:9px; white-space:nowrap;
}
.logo > span{color:var(--acc)}
.pulse{
  width:8px; height:8px; border-radius:50%;
  background:var(--acc); box-shadow:0 0 12px var(--acc);
  animation:pulse 2.4s infinite;
}
@keyframes pulse{50%{opacity:.35}}
.nav{
  display:flex; gap:22px; margin-left:auto;
  font-size:12px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--muted);
}
.nav a{padding:6px 2px;border-bottom:1px solid transparent;transition:.15s}
.nav a:hover{color:var(--acc)}
.lang{
  display:flex; border:1px solid var(--line2); border-radius:9px;
  overflow:hidden; margin-left:12px;
}
.nav + .lang{margin-left:0}
.lang button{
  font-family:var(--mono); font-size:11.5px;
  letter-spacing:.08em; padding:6px 12px;
  color:var(--dim); transition:.15s;
}
.lang button.on{background:var(--acc);color:#1a0a2e;font-weight:700}
.lang button:not(.on):hover{color:var(--text)}

/* ── hero ─────────────────────────────────────────── */
.hero{padding:96px 0 30px;text-align:left}
.kicker{font-size:12.5px;letter-spacing:.18em;color:var(--acc);margin-bottom:22px}
h1{
  font-size:clamp(2.3rem,6.4vw,4.1rem);
  font-weight:800; line-height:1.08; letter-spacing:-.02em;
}
h1 em{
  font-style:normal;
  background:linear-gradient(90deg,var(--acc),var(--blue2),var(--acc2));
  background-size:200% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  animation:hueshift 8s ease-in-out infinite;
}
@keyframes hueshift{50%{background-position:100% 0}}
.sub{
  max-width:680px; color:var(--muted);
  font-size:clamp(1rem,2.2vw,1.15rem);
  margin:22px 0 26px;
}
.chips{display:flex;flex-wrap:wrap;gap:9px}
.chip{
  font-size:13px; padding:6px 13px; border-radius:999px;
  border:1px solid var(--line2); color:var(--muted);
  background:rgba(255,255,255,.02);
}
.chip.ok{color:var(--acc2);border-color:rgba(168,85,247,.4)}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin:30px 0 0}
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  gap:8px; padding:13px 24px; border-radius:11px;
  font-weight:700; font-size:15px; border:1px solid var(--line2);
  transition:.18s;
}
.btn.primary{
  background:linear-gradient(135deg,var(--acc),var(--blue));
  color:#fff; border-color:transparent;
  box-shadow:0 10px 30px -12px rgba(168,85,247,.55);
}
.btn.primary:hover{
  transform:translateY(-2px);
  box-shadow:0 16px 36px -12px rgba(168,85,247,.8),
             0 0 0 1px rgba(192,132,252,.35);
}
.btn.ghost{color:var(--text)}
.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}

/* ── секции ───────────────────────────────────────── */
.sec{padding:88px 0 0}
.label{font-size:12px;letter-spacing:.2em;color:var(--acc);margin-bottom:12px}
h2{
  font-size:clamp(1.5rem,3.6vw,2.2rem);
  font-weight:800; letter-spacing:-.015em;
  margin-bottom:26px;
}
.about-txt p{color:#c4cce8;margin:0 0 14px;max-width:760px}
.about-txt p strong{color:var(--text);font-weight:700}

/* ── девайсы ──────────────────────────────────────── */
.hw-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.dev{
  border:1px solid var(--line); border-radius:16px;
  padding:22px;
  background:linear-gradient(180deg,var(--card2),var(--card));
  position:relative; overflow:hidden;
  transition:border-color .2s, transform .2s;
}
.dev:hover{
  border-color:color-mix(in srgb,var(--dev,var(--acc)) 55%,transparent);
  transform:translateY(-3px);
}
.dev::before{
  content:''; position:absolute; inset:0 0 auto 0; height:2px;
  background:linear-gradient(90deg,var(--dev,var(--acc)),transparent);
}
.dev-head{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.dev-ico{
  width:46px; height:46px; flex:none;
  display:grid; place-items:center; font-size:23px;
  border-radius:12px;
  background:color-mix(in srgb,var(--dev,var(--acc)) 14%,transparent);
  border:1px solid color-mix(in srgb,var(--dev,var(--acc)) 32%,transparent);
}
.dev-head h3{font-size:16.5px;font-weight:800}
.dev-tag{font-family:var(--mono);font-size:11px;color:var(--dim);margin-top:2px}
.specs{list-style:none}
.specs li{
  display:flex; justify-content:space-between; gap:16px;
  padding:7px 0; border-bottom:1px dashed var(--line);
  font-size:13.5px;
}
.specs li:last-child{border-bottom:0}
.specs span{
  color:var(--dim); font-family:var(--mono);
  font-size:11.5px; flex:none; padding-top:2px;
}
.specs em{font-style:normal;text-align:right;color:#dce3ff}

/* ── ссылки ───────────────────────────────────────── */
.links-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.link-card{
  display:flex; align-items:center; gap:14px;
  padding:15px 17px; border:1px solid var(--line);
  border-radius:14px; background:var(--card);
  transition:.18s; cursor:default;
}
.link-card[href]{cursor:pointer}
.link-card[href]:hover{
  transform:translateX(4px);
  border-color:color-mix(in srgb,var(--lc,var(--acc)) 50%,transparent);
  background:color-mix(in srgb,var(--lc,var(--acc)) 8%,var(--card));
  box-shadow:0 10px 24px -14px color-mix(in srgb,var(--lc,var(--acc)) 40%,transparent);
}
.lc-ico{
  width:42px; height:42px; flex:none;
  display:grid; place-items:center; border-radius:11px;
  color:var(--lc,var(--acc));
  background:color-mix(in srgb,var(--lc,var(--acc)) 14%,transparent);
  border:1px solid color-mix(in srgb,var(--lc,var(--acc)) 30%,transparent);
}
.lc-ico svg{width:20px;height:20px}
.lc-txt b{display:block;font-size:15px}
.lc-txt small{
  font-family:var(--mono); font-size:11.5px;
  color:var(--dim); word-break:break-word;
}
.lc-arr{margin-left:auto;color:var(--dim);transition:.18s}
.link-card[href]:hover .lc-arr{color:var(--lc);transform:translate(2px,-2px)}

/* ── контакт ──────────────────────────────────────── */
.contact-card{
  border:1px solid var(--line); border-radius:18px;
  padding:28px;
  background:linear-gradient(180deg,var(--card2),var(--card));
  max-width:640px;
}
.contact-card form{display:grid;gap:16px}
.contact-card label{
  display:grid; gap:7px;
  font-family:var(--mono); font-size:11px;
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--muted);
}
.contact-card input,.contact-card textarea{
  font:15px/1.55 var(--sans);
  color:var(--text); background:rgba(6,8,26,.7);
  border:1px solid var(--line2); border-radius:10px;
  padding:12px 14px; outline:none;
  resize:vertical; text-transform:none; letter-spacing:normal;
  transition:border-color .15s, box-shadow .15s;
}
.contact-card input:focus,.contact-card textarea:focus{
  border-color:var(--acc);
  box-shadow:0 0 0 3px rgba(168,85,247,.18);
}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.mail-alt{
  margin-top:18px; display:flex; flex-direction:column;
  gap:10px; font-size:13.5px; color:var(--muted);
}
.mail-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.mail-row small{font-family:var(--mono);font-size:11px;color:var(--dim)}
.copy{
  font-family:var(--mono); font-size:12.5px;
  color:var(--acc2);
  border:1px solid rgba(168,85,247,.35);
  background:rgba(168,85,247,.08);
  border-radius:9px; padding:8px 14px;
  transition:.15s;
}
.copy:hover{background:rgba(168,85,247,.18)}
.note{font-family:var(--mono);font-size:11px;color:var(--dim);margin-top:16px}

/* ── футер ────────────────────────────────────────── */
footer{margin-top:96px;border-top:1px solid var(--line);padding:26px 0;position:relative;z-index:2}
.foot-in{
  display:flex; flex-wrap:wrap; gap:10px 22px;
  justify-content:space-between;
  font-size:12px; color:var(--dim);
}

/* ── анимации ─────────────────────────────────────── */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease, transform .6s ease}
.reveal.vis{opacity:1;transform:none}
.toast{
  position:fixed; left:50%; bottom:22px;
  transform:translateX(-50%) translateY(10px);
  z-index:99;
  background:var(--card2); border:1px solid var(--line2);
  border-radius:11px; padding:11px 20px;
  font-size:13.5px; opacity:0;
  transition:.25s; pointer-events:none;
  box-shadow:0 14px 34px -12px rgba(168,85,247,.45);
}
.toast.show{opacity:1;transform:translateX(-50%)}

/* ── адаптив ──────────────────────────────────────── */
@media (max-width:720px){
  .nav{display:none}
  .lang{margin-left:auto}
  .hw-grid,.links-grid{grid-template-columns:1fr}
  .hero{padding-top:64px}
  .sec{padding-top:64px}
  .row2{grid-template-columns:1fr}
  .contact-card{padding:22px}
}
@media (prefers-reduced-motion: reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none}
  #bg-canvas{display:none}
}