:root { --bg:#090b0f; --surface:rgba(20,24,30,.9); --surface-3:rgba(17,22,28,.76); --text:#f3f5f7; --muted:rgba(243,245,247,.68); --line:rgba(255,255,255,.08); --line-strong:rgba(143,168,255,.26); --accent:#8fa8ff; --accent-2:#7fa7c9; --radius:10px; --radius-lg:12px; --shadow:0 18px 40px rgba(0,0,0,.28);} *{box-sizing:border-box;} html{scroll-behavior:smooth;} body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);line-height:1.6;} .page-bg{position:fixed;inset:0;background:radial-gradient(circle at 14% 18%, rgba(127,167,201,.1), transparent 26%),radial-gradient(circle at 82% 18%, rgba(143,168,255,.12), transparent 22%),linear-gradient(180deg,#090b0f 0%,#0c1016 48%,#0b1016 100%);z-index:-2;} .page-grid{position:fixed;inset:0;background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(180deg,rgba(255,255,255,.22),transparent 72%);z-index:-1;pointer-events:none;} .container{width:min(1280px,calc(100% - 40px));margin:0 auto;} .topbar{position:sticky;top:0;z-index:40;backdrop-filter:blur(16px);background:rgba(9,11,15,.78);border-bottom:1px solid var(--line);} .topbar-inner{min-height:74px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;position:relative;} .brand{width:44px;height:44px;display:grid;place-items:center;border-radius:8px;text-decoration:none;color:#0c1015;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent-2));position:relative;z-index:2;} .nav{display:flex;gap:22px;flex-wrap:wrap;} .nav-centered{justify-content:center;justify-self:center;position:absolute;left:50%;transform:translateX(-50%);width:max-content;z-index:1;} .nav a,.lang-btn{color:var(--muted);text-decoration:none;font-size:14px;background:transparent;border:none;cursor:pointer;} .nav a:hover,.lang-btn:hover,.lang-btn.active{color:var(--text);} .topbar-actions{display:flex;align-items:center;gap:12px;justify-self:end;} .lang-toggle{display:inline-flex;align-items:center;gap:8px;padding:6px;border:1px solid var(--line);background:rgba(255,255,255,.03);border-radius:8px;} .lang-btn{padding:8px 10px;border-radius:6px;} .lang-btn.active{background:rgba(255,255,255,.06);} .hero{padding:48px 0 20px;} .hero-layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:24px;align-items:stretch;} .hero-copy-main,.section-shell,.proof-card,.contact-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);transition:border-color .25s ease, box-shadow .25s ease, transform .25s ease;} .hero-copy-main:hover,.section-shell:hover,.proof-card:hover,.contact-card:hover,.info-card:hover,.timeline-item:hover{border-color:rgba(143,168,255,.42);box-shadow:0 24px 52px rgba(0,0,0,.38),0 0 0 1px rgba(143,168,255,.12) inset,0 0 28px rgba(143,168,255,.16);transform:translateY(-4px);} .hero-copy-main{padding:30px;display:flex;flex-direction:column;justify-content:center;position:relative;} .full-height-panel{min-height:660px;} .eyebrow,.section-kicker,.proof-label{display:inline-block;margin-bottom:12px;color:#d7e1fb;font-size:12px;letter-spacing:.12em;text-transform:uppercase;} .hero-corner-tags{position:absolute;top:18px;left:18px;font-size:11px;line-height:1.4;color:rgba(219,230,255,.72);text-transform:uppercase;letter-spacing:.12em;max-width:190px;} h1,h2,h3,p{margin-top:0;} h1{font-size:clamp(31px,4vw,48px);line-height:1.06;letter-spacing:-.035em;margin-bottom:18px;} .hero-name-line{max-width:none;padding-top:36px;} .hero-title-role{font-weight:600;color:#dbe6ff;} .hero-title-role-block{display:block;margin-top:6px;font-size:.9em;} h2{font-size:clamp(24px,2.5vw,36px);line-height:1.08;letter-spacing:-.03em;margin-bottom:14px;} h3{font-size:19px;line-height:1.15;letter-spacing:-.02em;margin-bottom:10px;} .subtitle{font-size:18px;color:#dbe6ff;max-width:36ch;margin-bottom:14px;} .compact-subtitle{font-size:17px;} .lead,.section-main p,.info-card p,.timeline-item p,.proof-card p{color:var(--muted);} .btn,.social-btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border-radius:8px;text-decoration:none;font-weight:700;transition:.18s ease;border:1px solid transparent;} .btn:hover,.social-btn:hover{transform:translateY(-2px);} .btn-primary{background:linear-gradient(135deg,var(--accent),#739cff);color:#0b1015;} .btn-secondary,.social-btn{background:rgba(255,255,255,.03);color:var(--text);border-color:var(--line);} .social-btn{justify-content:center;gap:10px;position:relative;overflow:hidden;} .social-btn::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(143,168,255,0),rgba(143,168,255,.12),rgba(143,168,255,0));opacity:0;transition:opacity .2s ease;} .social-btn:hover{border-color:rgba(143,168,255,.45);background:rgba(255,255,255,.06);box-shadow:0 0 0 1px rgba(143,168,255,.12) inset,0 0 24px rgba(143,168,255,.18);} .social-btn:hover::before{opacity:1;} .icon{font-size:15px;opacity:.9;min-width:18px;text-align:center;} .hero-photo-wrap{position:relative;min-height:660px;border-radius:12px;overflow:hidden;border:1px solid var(--line-strong);background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01));will-change:transform;} .hero-photo-backdrop{position:absolute;inset:0;background:none;z-index:0;} .hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;filter:none;z-index:1;} .hero-photo-overlay{position:absolute;inset:0;background:none;z-index:2;pointer-events:none;} .proof-bar{padding:8px 0 16px;} .proof-grid,.cards-grid,.timeline,.contact-shell,.equal-grid{display:grid;gap:16px;} .proof-grid-inline{grid-template-columns:repeat(4,1fr);} .proof-card{padding:18px;} .stat-card strong{display:block;font-size:28px;margin-bottom:4px;} .section{padding:30px 0;} .section-shell{padding:24px;} .section-soft .section-shell{background:var(--surface-3);} .split-shell{display:grid;grid-template-columns:1.25fr .75fr;gap:20px;} .section-aside{display:flex;align-items:stretch;} .mini-panel{width:100%;display:flex;flex-wrap:wrap;align-content:flex-start;gap:10px;padding:16px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02);} .mini-panel span{padding:10px 12px;border:1px solid var(--line);border-radius:8px;color:#dfe6f7;background:rgba(255,255,255,.03);font-size:14px;opacity:0;transform:translateY(18px) scale(.98);transition:opacity 1.75s ease, transform 1.75s cubic-bezier(.22,1,.36,1), border-color .25s ease, box-shadow .25s ease;} .mini-panel.is-visible span{opacity:1;transform:translateY(0) scale(1);} .mini-panel span:hover{border-color:rgba(143,168,255,.38);box-shadow:0 0 18px rgba(143,168,255,.12);} .expanded-panel{gap:12px;} .cards-grid{grid-template-columns:repeat(2,1fr);} .info-card,.timeline-item{padding:20px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02);height:100%;transition:border-color .2s ease, box-shadow .2s ease, transform .2s ease;} .timeline-v2{grid-template-columns:repeat(3,1fr);} .accent-card{border-color:var(--line-strong);} .contact-shell{grid-template-columns:1.2fr .8fr;align-items:stretch;} .contact-card{padding:20px;display:grid;gap:12px;} .contact-card a{text-decoration:none;color:var(--text);} .social-contact-grid{grid-template-columns:1fr;align-content:center;} .centered-socials{justify-items:center;} .centered-socials .social-btn{width:min(280px,100%);} .compact-heading{margin-bottom:18px;} .media-split{display:grid;grid-template-columns:1.1fr .9fr;gap:20px;align-items:stretch;} .media-split-reverse{grid-template-columns:.9fr 1.1fr;} .media-main,.media-side{display:flex;flex-direction:column;} .skills-title-top{margin-top:0;margin-bottom:18px;} .skills-grid-6{grid-template-columns:repeat(2,1fr);} .side-photo-wrap{width:100%;height:100%;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02);min-height:100%;transition:border-color .2s ease, box-shadow .2s ease;} .side-photo-wrap:hover{border-color:rgba(143,168,255,.42);box-shadow:0 22px 48px rgba(0,0,0,.36),0 0 26px rgba(143,168,255,.14);transform:translateY(-3px);} .tall-rect-photo{min-height:100%;} .side-photo{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s ease;} .side-photo-wrap:hover .side-photo{transform:scale(1.02);} .stretch-grid .info-card{min-height:100%;} .rectangular-card{border-radius:8px;} .mini-divider-shell{padding:0 24px;} .signal-line{display:flex;gap:8px;align-items:center;justify-content:center;opacity:.75;} .signal-line span{display:block;height:2px;flex:1;max-width:120px;background:linear-gradient(90deg,transparent,rgba(143,168,255,.55),transparent);animation:pulseLine 4s ease-in-out infinite;} .signal-line span:nth-child(2){animation-delay:.25s}.signal-line span:nth-child(3){animation-delay:.5s}.signal-line span:nth-child(4){animation-delay:.75s}.signal-line span:nth-child(5){animation-delay:1s} @keyframes pulseLine{0%,100%{opacity:.35;transform:scaleX(.92)}50%{opacity:1;transform:scaleX(1)}} .reveal-up{opacity:0;transform:translateY(34px);transition:opacity .85s ease, transform .85s cubic-bezier(.22,1,.36,1);} .reveal-up.is-visible{opacity:1;transform:translateY(0);} .footer{padding:18px 0 40px;} .footer-inner{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:14px;} @media (max-width:1100px){.hero-layout,.split-shell,.contact-shell,.proof-grid-inline,.timeline-v2,.media-split,.media-split-reverse{grid-template-columns:1fr;} .hero-photo-wrap,.full-height-panel{min-height:560px;} .topbar-inner{grid-template-columns:1fr;justify-items:start;} .nav{justify-content:flex-start;} .nav-centered{position:static;left:auto;transform:none;width:auto;} .topbar-actions{justify-self:start;} } @media (max-width:760px){.container{width:min(100% - 24px,1280px);} .topbar-inner{min-height:auto;padding:14px 0;} .nav{gap:12px;} .nav-centered{position:static;left:auto;transform:none;width:auto;} .topbar-actions{width:100%;justify-content:space-between;flex-wrap:wrap;} .brand-dynamic{display:none;} .hero-copy-main,.section-shell,.proof-card,.contact-card,.info-card,.timeline-item{padding:18px;border-radius:10px;} .cards-grid,.proof-grid-inline,.skills-grid-6{grid-template-columns:1fr;} .hero-photo-wrap,.full-height-panel{min-height:420px;} .hero-name-line{font-size:30px;} .hero-corner-tags{position:static;max-width:none;margin-bottom:10px;} .hero-name-line{padding-top:0;} .centered-socials .social-btn{width:100%;} }

/* ============================================================
   preview.css — слой интерактивных улучшений
   Подключается ПОВЕРХ базового /styles.css. Базовый вид не меняем.
   ============================================================ */

/* --- Интерактивный нейросетевой фон --- */
.neural-canvas{
  position:fixed; inset:0; z-index:-1; pointer-events:none;
  opacity:.55; mix-blend-mode:screen;
}

/* --- Курсор-«прожектор» --- */
.cursor-glow{
  position:fixed; top:0; left:0; width:520px; height:520px;
  margin:-260px 0 0 -260px; border-radius:50%;
  background:radial-gradient(circle, rgba(143,168,255,.16), rgba(143,168,255,.05) 38%, transparent 66%);
  pointer-events:none; z-index:0; opacity:0;
  transition:opacity .4s ease; will-change:transform;
}
body.cursor-active .cursor-glow{opacity:1;}

/* --- Полоса прогресса скролла --- */
.scroll-progress{
  position:fixed; top:0; left:0; height:2px; width:0%;
  background:linear-gradient(90deg, var(--accent), #739cff);
  box-shadow:0 0 12px rgba(143,168,255,.7);
  z-index:60; transition:width .08s linear;
}

/* --- Бейдж предпоказа --- */
.preview-badge{
  position:fixed; bottom:16px; left:16px; z-index:55;
  padding:6px 12px; border-radius:999px;
  font-size:11px; letter-spacing:.14em; font-weight:700;
  color:#cdd9ff; background:rgba(20,24,30,.82);
  border:1px solid var(--line-strong); backdrop-filter:blur(10px);
  box-shadow:0 6px 22px rgba(0,0,0,.4);
}

/* --- Активный пункт навигации (scroll-spy) --- */
.nav a{position:relative; transition:color .2s ease;}
.nav a::after{
  content:''; position:absolute; left:0; right:0; bottom:-6px; height:2px;
  background:linear-gradient(90deg, var(--accent), #739cff);
  border-radius:2px; transform:scaleX(0); transform-origin:left;
  transition:transform .28s cubic-bezier(.22,1,.36,1); opacity:.9;
}
.nav a.active{color:var(--text);}
.nav a.active::after{transform:scaleX(1);}

/* --- Кнопка-подсказка ⌘K --- */
.cmdk-hint{
  display:inline-flex; align-items:center; gap:8px;
  padding:8px 12px; border-radius:8px; cursor:pointer;
  color:var(--muted); font-size:13px; font-family:inherit;
  background:rgba(255,255,255,.03); border:1px solid var(--line);
  transition:.2s ease;
}
.cmdk-hint:hover{color:var(--text); border-color:rgba(143,168,255,.45); background:rgba(255,255,255,.06);}
.cmdk-keys{display:inline-flex; gap:3px;}
.cmdk-keys-inline{margin-left:8px;}
kbd{
  display:inline-grid; place-items:center; min-width:18px; height:18px; padding:0 4px;
  font-family:inherit; font-size:11px; font-weight:700; line-height:1;
  color:#cdd9ff; background:rgba(255,255,255,.06);
  border:1px solid var(--line); border-radius:5px;
}

/* --- Hero: кнопки действий + ротатор роли --- */
.hero-actions{display:flex; gap:12px; flex-wrap:wrap; margin-top:18px;}
.hero-actions .btn{font-size:14px;}
.role-rotator{color:#dbe6ff;}
.role-caret{
  display:inline-block; margin-left:2px; color:var(--accent);
  font-weight:400; animation:caretBlink 1s steps(1) infinite;
}
@keyframes caretBlink{50%{opacity:0;}}

/* --- 3D tilt --- */
[data-tilt]{transform-style:preserve-3d; will-change:transform;}
[data-tilt] > *{transform:translateZ(0);}

/* --- Магнитные кнопки --- */
.magnetic{will-change:transform; transition:transform .18s cubic-bezier(.22,1,.36,1), border-color .18s ease, box-shadow .18s ease, background .18s ease;}

/* --- Command palette --- */
.cmdk-overlay{
  position:fixed; inset:0; z-index:80; display:none;
  align-items:flex-start; justify-content:center;
  padding:14vh 20px 20px;
  background:rgba(5,7,11,.62); backdrop-filter:blur(8px);
  opacity:0; transition:opacity .18s ease;
}
.cmdk-overlay.open{display:flex; opacity:1;}
.cmdk-panel{
  width:min(560px,100%); max-height:70vh; display:flex; flex-direction:column;
  background:rgba(17,21,28,.96); border:1px solid var(--line-strong);
  border-radius:14px; overflow:hidden;
  box-shadow:0 40px 120px rgba(0,0,0,.6), 0 0 0 1px rgba(143,168,255,.08) inset;
  transform:translateY(-10px) scale(.985); transition:transform .2s cubic-bezier(.22,1,.36,1);
}
.cmdk-overlay.open .cmdk-panel{transform:translateY(0) scale(1);}
.cmdk-search{display:flex; align-items:center; gap:10px; padding:14px 16px; border-bottom:1px solid var(--line);}
.cmdk-search-icon{color:var(--accent); font-size:18px;}
.cmdk-input{
  flex:1; background:transparent; border:none; outline:none;
  color:var(--text); font-family:inherit; font-size:16px;
}
.cmdk-input::placeholder{color:rgba(243,245,247,.4);}
.cmdk-esc{font-size:11px; color:var(--muted); border:1px solid var(--line); border-radius:5px; padding:2px 6px;}
.cmdk-list{list-style:none; margin:0; padding:8px; overflow-y:auto; flex:1;}
.cmdk-item{
  display:flex; align-items:center; gap:12px; padding:11px 12px; border-radius:9px;
  cursor:pointer; color:var(--muted); transition:background .12s ease, color .12s ease;
}
.cmdk-item .ci-icon{width:26px; text-align:center; font-size:16px; opacity:.9;}
.cmdk-item .ci-text{flex:1; color:var(--text); font-size:14px;}
.cmdk-item .ci-hint{font-size:11px; color:var(--muted);}
.cmdk-item.active, .cmdk-item:hover{background:rgba(143,168,255,.14); color:var(--text);}
.cmdk-item.active{box-shadow:0 0 0 1px rgba(143,168,255,.22) inset;}
.cmdk-empty{padding:24px; text-align:center; color:var(--muted); font-size:14px;}
.cmdk-footer{
  display:flex; gap:16px; flex-wrap:wrap; padding:10px 16px; border-top:1px solid var(--line);
  color:var(--muted); font-size:11px;
}
.cmdk-footer kbd{margin-right:3px;}

/* --- Toast --- */
.toast{
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(20px);
  z-index:90; padding:12px 20px; border-radius:10px;
  background:rgba(20,24,30,.96); border:1px solid var(--line-strong); color:var(--text);
  font-size:14px; box-shadow:0 18px 50px rgba(0,0,0,.5);
  opacity:0; pointer-events:none; transition:opacity .25s ease, transform .25s ease;
}
.toast.show{opacity:1; transform:translateX(-50%) translateY(0);}

/* --- Скрываем нативный курсор только на десктопе с тонким указателем — НЕТ:
   оставляем курсор как есть, прожектор лишь дополняет. --- */

@media (max-width:760px){
  .cmdk-hint{display:none;}
  .cursor-glow{display:none;}
  .preview-badge{bottom:12px; left:12px;}
}

/* --- Уважение к prefers-reduced-motion --- */
@media (prefers-reduced-motion:reduce){
  .neural-canvas{display:none;}
  .cursor-glow{display:none;}
  .role-caret{animation:none;}
  .magnetic{transition:none;}
  [data-tilt]{transition:none;}
}

/* ============================================================
   v6.1 — доступность, GitHub-кнопка, мобильное меню
   ============================================================ */

/* --- Видимый фокус с клавиатуры (раньше было только outline:none) --- */
a:focus-visible, button:focus-visible, .lang-btn:focus-visible,
.social-btn:focus-visible, .btn:focus-visible, .cmdk-item:focus-visible,
.nav-toggle:focus-visible, .cmdk-hint:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 6px;
}
.cmdk-input:focus-visible { outline: none; }
.cmdk-search:focus-within { box-shadow: inset 0 -2px 0 var(--accent); }

/* --- GitHub-кнопка --- */
.btn-github { gap: 8px; }
.gh-mark { display: inline-flex; align-items: center; }
.gh-mark svg, .social-btn .icon svg { display: block; }

/* --- Бургер-меню (по умолчанию скрыт, только мобильный) --- */
.nav-toggle { display: none; }
@media (max-width: 760px) {
  .nav-toggle {
    display: inline-grid; gap: 4px; align-content: center; justify-items: center;
    width: 42px; height: 42px; padding: 0; cursor: pointer;
    background: rgba(255,255,255,.03); border: 1px solid var(--line); border-radius: 8px;
  }
  .nav-toggle span {
    display: block; width: 18px; height: 2px; background: var(--text); border-radius: 2px;
    transition: transform .22s ease, opacity .22s ease;
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
  .nav.nav-centered { display: none; }
  .nav.nav-centered.open { display: flex; flex-direction: column; gap: 14px; width: 100%; padding: 12px 0 4px; }
  #cmdkHint2 { display: none; }
}
