/* Manrope самохост (4 сабсета, вариативный 300-700, swap) - убирает внешний блокирующий запрос */
@font-face{font-family:'Manrope';font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/manrope-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/manrope-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/manrope-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Manrope';font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/manrope-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Oswald';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/oswald-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Oswald';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/oswald-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
  --bg:#0e055a; --bg-2:#14099d;
  --pink:#cb4591; --pink-light:#f789db; --purple:#8d48dc; --purple-deep:#5a37d3;
  --blue:#5f76e8; --blue-deep:#2d09ae; --indigo-deep:#21065d;
  --white:#fff; --w80:rgba(255,255,255,.85); --w60:rgba(255,255,255,.6); --w30:rgba(255,255,255,.3); --w40:rgba(255,255,255,.4); --w15:rgba(255,255,255,.15);
  --gt:linear-gradient(90deg,#cb4591,#f789db 50%,#8d48dc);
  --gb:linear-gradient(90deg,#5a37d3,#8d48dc 50%,#5f76e8);
  --cont:1180px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#cb4591 transparent;touch-action:manipulation}
::-webkit-scrollbar{width:8px;height:8px;background:transparent}
::-webkit-scrollbar-track{background:rgba(255,255,255,.04);border-radius:50px}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#cb4591,#8d48dc,#5f76e8);border-radius:50px;box-shadow:0 0 8px rgba(247,137,219,.4)}
::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#f789db,#8d48dc,#5f76e8);box-shadow:0 0 12px rgba(247,137,219,.7)}
body{font-family:'Manrope',sans-serif;background:var(--bg);color:#fff;font-size:16px;line-height:1.55;overflow-x:clip;position:relative}
body::before,body::after{content:'';position:fixed;border-radius:50%;pointer-events:none;z-index:0;filter:blur(130px);opacity:.65}
body::before{top:-10%;left:-15%;width:60vw;height:60vw;background:radial-gradient(circle,#2d09ae 0%,transparent 70%)}
body::after{bottom:-15%;right:-15%;width:55vw;height:55vw;background:radial-gradient(circle,#5a37d3 0%,transparent 70%)}
/* Мобильный амбиент-фон: засветы через section::after (техника с index.html; ::after несёт три radial-пула,
   тайлящих высоту секции с чередованием лево/право; nth-of-type(2n) зеркалит стороны). Десктопные fixed+blur
   засветы на мобилке гасим. Пик дельты 18-30/канал, контраст >=4.5:1. Палитра десктопных засветов. Без
   filter/blur/backdrop/mix-blend/fixed. z-index:0 - контент поднят через section>.container/.cta-content. */
@media (max-width:640px){
  body::before,body::after{display:none}
  section::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
    background:radial-gradient(ellipse 96% 10% at 3% 30%, rgba(141,72,220,.22) 0%, transparent 55%) no-repeat,
      radial-gradient(ellipse 96% 13% at 97% 50%, rgba(95,118,232,.19) 0%, transparent 55%) no-repeat,
      radial-gradient(ellipse 96% 10% at 3% 70%, rgba(90,55,211,.21) 0%, transparent 55%) no-repeat}
  section:nth-of-type(2n)::after{
    background:radial-gradient(ellipse 96% 10% at 97% 30%, rgba(95,118,232,.19) 0%, transparent 55%) no-repeat,
      radial-gradient(ellipse 96% 13% at 3% 50%, rgba(141,72,220,.22) 0%, transparent 55%) no-repeat,
      radial-gradient(ellipse 96% 10% at 97% 70%, rgba(90,55,211,.21) 0%, transparent 55%) no-repeat}
  section>.container,section>.cta-content{position:relative;z-index:1}
}
section,nav,footer{position:relative;z-index:1}
img{max-width:100%;display:block}
a{color:inherit}
.container{max-width:var(--cont);margin:0 auto;padding:0 24px}

h1,h2,h3{font-family:'Oswald',sans-serif;font-style:italic;font-weight:400;text-transform:uppercase;line-height:1.05;letter-spacing:-.5px}
h1{font-size:clamp(64px,11vw,140px);margin-bottom:16px}
h2{font-size:clamp(32px,4.5vw,52px);margin:0 0 20px}
h3{font-size:22px;margin:0 0 12px}
p{font-size:16px;color:var(--w80)}
.grad{background:var(--gt);background-clip:text;-webkit-background-clip:text;color:transparent;padding:0 .1em;margin:0 -.1em}
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:18px 36px;background:var(--gb);color:#fff;text-decoration:none;border-radius:50px;font-weight:700;font-size:15px;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 12px 40px rgba(203,69,145,.4);transition:transform .2s,box-shadow .2s;border:none;cursor:pointer;font-family:'Manrope',sans-serif;isolation:isolate;overflow:visible}
.btn:hover{transform:translateY(-2px);box-shadow:0 16px 50px rgba(203,69,145,.5)}
@property --btn-angle{syntax:'<angle>';initial-value:0deg;inherits:false}
.btn::before{content:'';position:absolute;inset:-2px;border-radius:inherit;padding:2px;background:conic-gradient(from var(--btn-angle),rgba(255,255,255,0) 0deg,rgba(255,255,255,0) 200deg,rgba(255,255,255,.35) 250deg,#ffffff 290deg,rgba(255,255,255,.85) 310deg,rgba(255,255,255,0) 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1;animation:btnSpin 2.6s linear infinite;filter:drop-shadow(0 0 8px rgba(255,255,255,.55)) drop-shadow(0 0 18px rgba(255,255,255,.25))}
@keyframes btnSpin{to{--btn-angle:360deg}}

/* Navbar */
.navbar{position:fixed;top:0;left:0;right:0;z-index:100;padding:14px 24px;backdrop-filter:blur(20px);background:rgba(14,5,90,.75)}
.nav-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.logo img{height:30px;width:auto;display:block;filter:brightness(0) invert(1)}
.nav-links{display:flex;gap:8px;list-style:none;flex-wrap:wrap}
.nav-links a{display:inline-block;padding:10px 18px;border:1px solid var(--w30);border-radius:50px;color:#fff;text-decoration:none;font-size:13px;transition:all .2s}
.nav-links a:hover{background:#fff;color:var(--bg)}

/* ===== BLOG INDEX ===== */
.blog-hero{padding:140px 0 60px;position:relative}
.blog-hero .container{position:relative;z-index:1}

/* Popular orb - шар внутри плашки */
.popular,.featured-post{position:relative;overflow:hidden;isolation:isolate}
.popular-orb{position:absolute;top:50%;right:-100px;transform:translateY(-50%) scale(var(--p-scale,1));width:380px;height:380px;pointer-events:none;z-index:-1;transform-origin:center;transition:transform .15s linear;opacity:.4}
.popular-orb img{width:100%;height:100%;object-fit:contain;animation:popOrbSpin 35s linear infinite,popOrbBreathe 4s ease-in-out infinite;transform-origin:center;filter:drop-shadow(0 0 40px rgba(247,137,219,.4))}
@keyframes popOrbSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes popOrbBreathe{0%,100%{filter:brightness(1) drop-shadow(0 0 40px rgba(247,137,219,.4))}50%{filter:brightness(1.15) drop-shadow(0 0 60px rgba(247,137,219,.6))}}
@media(max-width:1024px){.popular-orb{width:240px;height:240px;right:-60px}}
@media(max-width:600px){.popular-orb{display:none}}
.blog-hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.blog-hero h1{line-height:.95}
.blog-hero .lead{font-size:17px;color:var(--w80);max-width:480px;margin-top:24px;line-height:1.55}
.blog-hero .lead + .lead{margin-top:14px}

/* Popular slot - карточка популярной статьи (со слайдером) */
.popular{position:relative;padding:22px;border-radius:24px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 16px 40px -12px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.15)}
.popular-label{display:inline-block;font-family:'Manrope',sans-serif;font-style:italic;font-size:13px;color:var(--w80);margin-bottom:14px;font-weight:600;letter-spacing:.5px;position:absolute;top:-32px;right:24px}
.popular-cover{width:100%;aspect-ratio:1.5/1;border-radius:18px;overflow:hidden;background:linear-gradient(135deg,#5a37d3,#cb4591);margin-bottom:18px}
.popular-cover img{width:100%;height:100%;object-fit:cover}
.popular h3{font-family:'Manrope',sans-serif;font-weight:700;font-size:17px;color:#fff;margin:0 0 8px;text-transform:none;font-style:normal;letter-spacing:0;line-height:1.3}
.popular p{font-size:13px;color:var(--w80);line-height:1.5;margin-bottom:18px}
.popular .read-btn{display:block;text-align:center;padding:14px 24px;border-radius:50px;background:var(--gb);color:#fff;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:1.5px;text-decoration:none}
.popular-nav{display:flex;justify-content:space-between;align-items:center;margin-top:14px;gap:8px}
.popular-nav button{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.08);border:1px solid var(--w30);color:#fff;cursor:pointer;font-size:14px;transition:all .2s}
.popular-nav button:hover{background:var(--gb);border-color:transparent}
.popular-nav .dots{display:flex;gap:6px}
.popular-nav .dots span{width:6px;height:6px;border-radius:50%;background:var(--w30)}
.popular-nav .dots span.active{background:var(--pink-light);width:18px;border-radius:6px}

/* ===== Articles list (на белом фоне как в Figma - но в нашем синем) ===== */
.articles-section{padding:60px 0 100px;position:relative;z-index:2}
.articles-head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:40px}
.articles-head h2{margin:0;color:#fff}
.search-form{display:flex;gap:10px;flex-shrink:0;align-items:center;max-width:420px;width:100%}
.search-form input{flex:1;padding:14px 22px;border-radius:50px;border:1px solid var(--w30);background:rgba(255,255,255,.06);color:#fff;font-size:14px;font-family:'Manrope',sans-serif;outline:none;backdrop-filter:blur(8px)}
.search-form input::placeholder{color:var(--w60)}
.search-form input:focus{border-color:var(--pink-light)}
.search-form button{padding:14px 28px;border-radius:50px;background:var(--gb);color:#fff;border:none;cursor:pointer;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:1.5px;font-family:'Manrope',sans-serif}

.articles-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 24px;padding-top:8px}
.article-card{display:block;border-radius:24px;overflow:visible;background:rgba(255,255,255,.04);border:1px solid var(--w30);text-decoration:none;color:inherit;transition:background .35s ease,border-color .35s ease,transform .35s ease,box-shadow .35s ease;position:relative;padding-top:0;padding-bottom:0;isolation:isolate}
.article-card:hover{transform:translateY(-4px);border-color:transparent;background:linear-gradient(135deg,#cb4591 0%,#8d48dc 55%,#5a37d3 100%);box-shadow:0 24px 60px -12px rgba(203,69,145,.5)}
.article-cover{width:100%;aspect-ratio:1.5/1;overflow:hidden;background:linear-gradient(135deg,#5a37d3,#cb4591);position:relative;border-radius:24px 24px 0 0;z-index:1}
.article-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.article-card:hover .article-cover img{transform:scale(1.05)}
/* Тег категории - большой pill с градиентом, торчит над углом обложки слева */
.article-tag{position:absolute !important;top:-14px !important;left:20px !important;z-index:10 !important;padding:9px 22px !important;background:linear-gradient(90deg,#cb4591,#f789db 50%,#8d48dc) !important;color:#fff !important;border:none !important;border-radius:50px !important;font-size:11px !important;text-transform:uppercase !important;letter-spacing:1.3px !important;font-weight:700 !important;box-shadow:0 10px 30px rgba(203,69,145,.6) !important;display:inline-block !important;font-family:'Manrope',sans-serif !important;line-height:1 !important;margin:0 !important}
.article-body{border-radius:0 0 24px 24px;overflow:hidden}
.article-body{padding:22px}
.article-body h3{font-family:'Manrope',sans-serif;font-weight:700;font-size:18px;color:#fff;text-transform:none;font-style:normal;letter-spacing:0;line-height:1.3;margin-bottom:10px}
.article-body p{font-size:14px;color:var(--w80);line-height:1.5;margin-bottom:14px}
.article-body .date{font-size:12px;color:var(--w60)}
.article-card:hover .article-body p,
.article-card:hover .article-body .date{color:rgba(255,255,255,.92)}

/* Pagination */
.pagination{display:flex;justify-content:center;gap:8px;margin-top:48px}
.pagination a{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid var(--w30);color:#fff;text-decoration:none;font-size:14px;font-weight:700;transition:all .2s}
.pagination a:hover,.pagination a.active{background:var(--gb);border-color:transparent}

/* ===== ARTICLE PAGE ===== */
.article-hero{padding:140px 0 70px;position:relative}
.article-hero-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:60px;align-items:center}
.article-hero .back-link{display:inline-flex;align-items:center;gap:8px;color:var(--w60);text-decoration:none;margin-bottom:24px;font-size:14px;transition:color .2s}
.article-hero .back-link:hover{color:#fff}
.article-cat-pill{display:inline-block;padding:6px 18px;border-radius:50px;background:rgba(255,255,255,.92);color:#1a0a3d;font-size:11px;text-transform:uppercase;letter-spacing:1.2px;font-weight:700;margin-bottom:16px}
.article-hero h1{font-size:clamp(32px,4.5vw,52px);text-transform:none;font-style:normal;font-weight:700;letter-spacing:-1px;line-height:1.15;font-family:'Manrope',sans-serif;margin-bottom:18px;color:#fff}
.article-lead{font-size:17px;color:var(--w80);line-height:1.6;margin-bottom:32px;max-width:540px}
.author-row{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.author-block{display:flex;align-items:center;gap:14px}
.author-photo{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--pink),var(--purple));overflow:hidden;flex-shrink:0;border:2px solid rgba(255,255,255,.4)}
.author-photo img{width:100%;height:100%;object-fit:cover}
.author-info .name{font-weight:700;font-size:15px;color:#fff;line-height:1.2;display:block}
.author-info .role{font-size:12px;color:var(--w60);text-transform:uppercase;letter-spacing:.5px;margin-top:2px;display:block}
.read-time{color:var(--w60);font-size:13px;text-transform:uppercase;letter-spacing:1px}
.article-hero-image{width:100%;aspect-ratio:4/3;border-radius:24px;overflow:hidden;background:linear-gradient(135deg,#5a37d3,#cb4591);box-shadow:0 30px 80px -20px rgba(203,69,145,.5)}
.article-hero-image img{width:100%;height:100%;object-fit:cover}
/* White content section */
.article-content-section{background:#f5f3fa;padding:60px 0 80px;position:relative}
.article-content-section::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--gt)}
.article-grid{display:grid;grid-template-columns:1fr 320px;gap:48px;align-items:start}
.article-content{color:#1a0a3d}
.questions-box{background:linear-gradient(135deg,rgba(203,69,145,.08),rgba(149,71,239,.1));border:1px solid rgba(203,69,145,.25);border-radius:20px;padding:24px 28px;margin-bottom:40px}
.questions-box .qb-title{font-family:'Manrope',sans-serif;font-weight:700;font-size:14px;color:#cb4591;text-transform:uppercase;letter-spacing:.5px;margin-bottom:14px}
.questions-box ul{list-style:none;padding:0;margin:0}
.questions-box li{padding:8px 0 8px 24px;color:#1a0a3d;font-size:15px;line-height:1.5;position:relative}
.questions-box li::before{content:"\2022";position:absolute;left:8px;top:8px;color:#cb4591;font-size:18px;line-height:1}
.article-prose h2{font-family:'Manrope',sans-serif;font-weight:700;font-size:24px;color:#0e055a;text-transform:none;font-style:normal;letter-spacing:-.3px;margin:40px 0 14px;line-height:1.3}
.article-prose h3{font-family:'Manrope',sans-serif;font-weight:700;font-size:19px;color:#1a0a3d;text-transform:none;font-style:normal;letter-spacing:0;margin:28px 0 10px;line-height:1.3}
.article-prose p{font-size:16px;line-height:1.75;color:#2d1870;margin-bottom:18px}
.article-prose ul{padding-left:0;list-style:none;margin:0 0 24px}
.article-prose ul li{padding:10px 0 10px 28px;color:#2d1870;line-height:1.6;position:relative;border-bottom:1px solid rgba(203,69,145,.1)}
.article-prose ul li:last-child{border-bottom:none}
.article-prose ul li::before{content:"\25CF";position:absolute;left:4px;top:12px;color:#cb4591;font-size:10px}
.article-prose b,.article-prose strong{color:#0e055a;font-weight:700}
.article-prose a{color:#cb4591;text-decoration:underline;text-underline-offset:2px}
.article-prose a:hover{color:#8d48dc}
.article-meta{display:flex;justify-content:space-between;align-items:center;margin:40px 0 0;padding-top:24px;border-top:1px solid rgba(203,69,145,.2);color:#8d48dc;font-size:13px;flex-wrap:wrap;gap:10px}
/* Sidebar */
.article-sidebar{position:sticky;top:100px}
.sidebar-block{background:#fff;border-radius:20px;padding:24px;margin-bottom:20px;box-shadow:0 4px 24px rgba(14,5,90,.08);border:1px solid rgba(203,69,145,.12)}
.sidebar-block h4{font-family:'Manrope',sans-serif;font-weight:700;font-size:13px;color:#0e055a;text-transform:uppercase;letter-spacing:.5px;margin-bottom:16px}
.sidebar-article{display:flex;gap:12px;align-items:flex-start;text-decoration:none;color:inherit;padding:10px 0;border-bottom:1px solid rgba(14,5,90,.07)}
.sidebar-article:last-child{border-bottom:none;padding-bottom:0}
.sidebar-article-img{width:64px;height:48px;border-radius:10px;overflow:hidden;flex-shrink:0;background:linear-gradient(135deg,#5a37d3,#cb4591)}
.sidebar-article-img img{width:100%;height:100%;object-fit:cover}
.sidebar-article-text h5{font-family:'Manrope',sans-serif;font-weight:700;font-size:13px;color:#1a0a3d;line-height:1.3;margin:0 0 4px;text-transform:none;font-style:normal;letter-spacing:0}
.sidebar-article-text span{font-size:11px;color:#8d48dc;text-transform:uppercase;letter-spacing:.5px}
.sidebar-article:hover .sidebar-article-text h5{color:#cb4591}
.sidebar-cta{background:linear-gradient(135deg,#cb4591,#8d48dc);border-radius:20px;padding:24px;text-align:center;color:#fff}
.sidebar-cta h4{font-family:'Manrope',sans-serif;font-weight:700;font-size:16px;color:#fff;margin-bottom:10px;text-transform:none;font-style:normal;letter-spacing:0}
.sidebar-cta p{font-size:14px;color:rgba(255,255,255,.85);margin-bottom:16px;line-height:1.5}
.sidebar-cta .btn{width:100%;padding:14px 20px;font-size:13px;justify-content:center}
/* Related articles */
.related{padding:60px 0 80px;background:#f5f3fa}
.related h2{margin-bottom:32px;font-size:clamp(26px,3.5vw,38px);color:#0e055a}
.related .article-card{background:#fff;border-color:rgba(203,69,145,.15)}
.related .article-body h3{color:#0e055a}
.related .article-body p{color:#2d1870}
.related .article-body .date{color:#8d48dc}
.related .article-card:hover .article-body h3,.related .article-card:hover .article-body p,.related .article-card:hover .article-body .date{color:#fff}

/* CTA finalize */
.cta-final{position:relative;padding:90px 0 60px;text-align:center;overflow:hidden;margin-top:40px}
.cta-final .bg-ball{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(700px,80vw);aspect-ratio:1/1;opacity:.16;pointer-events:none;z-index:0}
.cta-final .bg-ball img{width:100%;height:100%;object-fit:contain;animation:slowRot 120s linear infinite}
.cta-final .bg-ball::after{content:'';position:absolute;inset:10%;border-radius:50%;border:1px solid rgba(247,137,219,.3)}
@keyframes slowRot{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.cta-final > *{position:relative;z-index:1}
.cta-final .eyebrow-pink{display:inline-block;font-family:'Oswald',sans-serif;font-style:italic;font-size:clamp(26px,3.6vw,38px);background:var(--gt);background-clip:text;-webkit-background-clip:text;color:transparent;text-transform:uppercase;margin-bottom:8px;letter-spacing:-.5px;line-height:1;padding:0 .14em;margin-left:-.14em;margin-right:-.14em}
.cta-final h2{margin:0 0 16px}

footer{padding:32px 0 24px;border-top:1px solid var(--w15)}
.foot-row{max-width:var(--cont);margin:0 auto;padding:0 24px;display:flex;justify-content:center;align-items:center;gap:20px;flex-wrap:wrap;color:var(--w60);font-size:13px}
.foot-row a{color:var(--w60);text-decoration:none;transition:color .2s}
.foot-row a:hover{color:#fff}

.reveal{opacity:0;transform:translateY(20px);transition:opacity .8s ease,transform .8s ease}
.reveal.in{opacity:1;transform:none}

@media (max-width:900px){
  .blog-hero-grid{grid-template-columns:1fr;gap:40px}
  .article-hero-grid{grid-template-columns:1fr}
  .article-grid{grid-template-columns:1fr}
  .article-sidebar{position:static}
  .articles-grid{grid-template-columns:repeat(2,1fr)}
  .articles-head{flex-direction:column;align-items:flex-start}
  /* Оверфлоу на 320: поле поиска (flex-item, min-width:auto) не давало ужаться и выталкивало кнопку
     «Искать» за край - min-width:0 позволяет полю сжаться; источник устранён (не прячем) */
  .search-form{max-width:100%;min-width:0}
  .search-form input{min-width:0}
}
@media (max-width:640px){
  .nav-links{display:none}
  .articles-grid{grid-template-columns:1fr}
  .article-prose h2{font-size:22px}
}


/* Унифицированная лид-форма -> WhatsApp */
.lead-form{display:flex;flex-direction:column;gap:12px;max-width:620px;margin:28px auto 0;align-items:stretch}
.lead-form input,.lead-form textarea{width:100%;padding:16px 22px;border-radius:14px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.06);color:#fff;font-family:'Manrope',sans-serif;font-size:15px;line-height:1.5;outline:none;box-sizing:border-box}
.lead-form textarea{min-height:104px;resize:vertical}
.lead-form input::placeholder,.lead-form textarea::placeholder{color:rgba(255,255,255,.55)}
.lead-form input:focus,.lead-form textarea:focus{border-color:#f789db}
.lead-form .btn{align-self:center;margin-top:6px}
/* Шапка: телефон -> WhatsApp-кнопка с переливом зелёный->фиолетовый */
.phone-wa{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border:1px solid rgba(37,211,102,.5);border-radius:50px;color:#fff;text-decoration:none;font-size:13px;white-space:nowrap;transition:background .2s,color .2s,border-color .2s;animation:waNudge 7s ease-in-out infinite;transform-origin:center}
.phone-wa .wa-ic{width:15px;height:15px;flex:0 0 auto;color:#25D366;transition:color .2s}
.phone-wa:hover{background:#25D366;border-color:#25D366;color:#fff}
.phone-wa:hover .wa-ic{color:#fff}
/* Редкий wiggle-намёк раз в ~7с серией, потом пауза (оповещение). reduced-motion гасит. */
@keyframes waNudge{0%,86%,100%{transform:rotate(0)}88%{transform:rotate(-5deg)}90.5%{transform:rotate(4deg)}93%{transform:rotate(-3deg)}95.5%{transform:rotate(2deg)}98%{transform:rotate(0)}}
.phone-wa-label{font-size:11px;font-weight:500;color:var(--w60,rgba(255,255,255,.6));letter-spacing:.3px}
.phone-wa-num{font-weight:700;font-size:14px;background:linear-gradient(90deg,#25D366,#8d48dc,#25D366);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:phoneShimmer 6s ease-in-out infinite}
@keyframes phoneShimmer{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.phone-wa:hover .phone-wa-num{background-image:linear-gradient(90deg,#3ee87a,#a06bec,#3ee87a)}
.nav-wa-mobile{display:none}
@media(max-width:640px){.phone-wa{display:none}.nav-wa-mobile{display:block;margin-top:8px}.nav-wa-mobile a{text-decoration:none;display:inline-flex;flex-direction:column;align-items:center;gap:1px}}
@media(prefers-reduced-motion:reduce){.phone-wa,.phone-wa-num{animation:none}}

/* Бургер-меню (эталон index.html): overlay-панель на мобилке, ссылки услуг в DOM всегда */
.burger{display:none;background:none;border:none;color:#fff;font-size:24px;cursor:pointer}
.mob-menu{display:none}
body.mob-lock{position:fixed;left:0;right:0;width:100%;overflow:hidden}
@media (max-width:640px){
  .nav-links{display:none}
  .burger{display:block;position:relative;z-index:201}
  /* Overlay-панель бургер-меню (не толкает контент, поверх страницы) */
  .mob-menu{display:block;position:fixed;inset:0;z-index:200;visibility:hidden;opacity:0;transition:opacity .28s ease,visibility 0s linear .28s}
  .mob-menu.open{visibility:visible;opacity:1;transition:opacity .28s ease}
  .mob-backdrop{position:absolute;inset:0;background:rgba(6,2,28,.55)}
  .mob-panel{position:absolute;top:0;right:0;height:100%;width:min(86vw,340px);background:linear-gradient(160deg,#160a3d,#0e055a);border-left:1px solid rgba(141,72,220,.45);border-top-left-radius:22px;border-bottom-left-radius:22px;box-shadow:-24px 0 60px -20px rgba(141,72,220,.55),inset 1px 0 0 rgba(247,137,219,.18);transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;padding:66px 22px 28px;overflow-y:auto;-webkit-overflow-scrolling:touch}
  .mob-menu.open .mob-panel{transform:translateX(0)}
  .mob-close{position:absolute;top:16px;right:18px;width:40px;height:40px;border:1px solid var(--w30);border-radius:50%;background:rgba(255,255,255,.05);color:#fff;font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
  .mob-nav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
  .mob-nav>li{border-bottom:1px solid rgba(255,255,255,.09)}
  .mob-nav>li>a,.mob-sub-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:52px;padding:11px 6px;color:#fff;text-decoration:none;font-size:18px;font-weight:600;background:none;border:none;font-family:inherit;text-align:left;cursor:pointer}
  .mob-chev{font-size:15px;opacity:.65;transition:transform .28s ease;margin-left:12px}
  .mob-sub-toggle[aria-expanded="true"] .mob-chev{transform:rotate(180deg)}
  .mob-sub{list-style:none;margin:2px 0 6px 6px;padding-left:14px;border-left:1px solid rgba(141,72,220,.5);max-height:0;opacity:0;overflow:hidden;transition:max-height .32s ease,opacity .26s ease}
  .mob-sub.open{max-height:640px;opacity:1}
  .mob-sub li a{display:flex;align-items:center;min-height:44px;padding:5px 8px;color:var(--w80);text-decoration:none;font-size:14.5px;font-weight:500;line-height:1.25}
  .mob-sub li a:active,.mob-nav>li>a:active{color:var(--pink-light)}
  .mob-wa{margin-top:22px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 20px;border-radius:50px;background:linear-gradient(90deg,#1fa851,#25D366);color:#fff;text-decoration:none;font-weight:700;font-size:15px;box-shadow:0 10px 30px -8px rgba(37,211,102,.55)}
  .mob-wa svg{width:20px;height:20px;flex:0 0 auto}
  @media(prefers-reduced-motion:reduce){.mob-menu,.mob-panel,.mob-sub,.mob-chev{transition:none}}
}

/* Липкая WhatsApp-кнопка (только мобилка <=768). Десктоп не трогаем - там шапочная .phone-wa.
   z-index ниже .mob-menu (200), поэтому открытый бургер её перекрывает. position:fixed => CLS не растёт.
   padding-bottom на body - подушка, чтобы кнопка не прятала конец футера.

   ФИРМЕННЫЙ ВИД (28.07.2026): круг с узнаваемым зелёным знаком WhatsApp, вокруг три тонкие
   орбиты с электронами и еле заметная сфера-подложка - язык тот же, что у hero (.orbit/.rotor/
   .mini-sphere). Зелёный намеренно оставлен: он и есть сигнал «это вотсап», в фирменный фиолет
   знак не перекрашиваем, фиолет ушёл в орбиты.

   Подписи «Написать в WhatsApp» у кнопки НЕТ (убрана 28.07.2026 вместе со схлопыванием):
   всегда просто круг с орбитами. Обратно не возвращать - пилюля перекрывала контент справа
   и на узких экранах упиралась в край.

   ОГРАНИЧЕНИЯ, соблюдены осознанно - при правке не нарушать:
   - анимируются ТОЛЬКО transform и opacity. Ширина, паддинги, top/left в анимации не участвуют;
   - backdrop-filter не используется вовсе: кнопка живёт только на мобилке, где по закону
     проекта его быть не должно. Фон - плотная заливка;
   - кликабельная зона 60x60 (минимум 48x48 с запасом), на 360 - 56x56;
   - prefers-reduced-motion: орбиты и электроны стоят.

   НЕ МЕНЯТЬ className: analytics.js кладёт a.className в place события whatsapp_click
   (place: 'wa-sticky'). Любой второй класс на этом же <a> подменит значение place, поэтому
   орбиты вынесены в ДОЧЕРНИЕ элементы, а не в модификаторы на самой ссылке. */
.wa-sticky{display:none}
@media(max-width:768px){
  /* Правый нижний угол, но с большим запасом снизу: bottom:90px. Отступ именно такой, а не
     32px, из-за нижней панели браузера на мобилке - position:fixed отсчитывается от лэйаут-
     вьюпорта (он равен большому, панель спрятана), поэтому у самого низа показанная панель
     срезала кнопку наполовину, и эта обрезка читалась как дёрганье при скролле. 90px больше
     любой из панелей, кнопка остаётся целой в обоих состояниях. Прежний вариант с top:65%
     (28.07.2026) от этого лечил, но уводил кнопку на середину экрана - откатан.
     Отступ справа 23px, а не 20: орбиты уменьшены вместе с кругом (см. ниже), внешняя выходит
     за круг на 20px, и электрон на ней - ещё на 3px. При 20px этот электрон, проходя правую
     точку окружности, срезался краем экрана ровно наполовину (проверено скриншотом, 390px).
     23px - минимум, при котором ничего не режется; сам круг стоит всего на 3px дальше от края.
     Ниже по файлу - подушка padding-bottom у body: без неё под кнопкой в конце страницы
     оказывались поля формы и строчки свёртки. */
  .wa-sticky{display:grid;place-items:center;position:fixed;right:23px;bottom:90px;z-index:60;
    width:51px;height:51px;border-radius:50%;color:#fff;text-decoration:none;
    background:radial-gradient(circle at 32% 28%,#3ee27b 0%,#25D366 44%,#1fa851 100%);
    box-shadow:0 10px 30px -8px rgba(37,211,102,.6),inset 0 0 0 1px rgba(255,255,255,.16)}
  .wa-sticky svg{grid-area:1/1;position:relative;z-index:2;width:26px;height:26px;flex:0 0 auto;
    filter:drop-shadow(0 2px 4px rgba(0,0,0,.28))}
  /* Сфера-подложка: еле видна, но кнопка перестаёт читаться плоской плашкой. */
  .wa-sticky::before{content:'';position:absolute;inset:-14px;border-radius:50%;pointer-events:none;
    background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.16) 0%,rgba(141,72,220,.17) 45%,rgba(14,5,90,0) 72%)}
  /* Орбиты: кольцо крутится, электрон закреплён на нём и потому едет по кругу. */
  .wa-orbits{position:absolute;inset:0;pointer-events:none}
  /* Задержка 3s не косметическая: три бесконечных вращения, стартующих сразу, стабильно
     давали +30ms TBT в окне загрузки (замерено - с animation:none TBT возвращался к базовым
     10-30ms, will-change ситуацию не менял). Отложенный старт выносит их за окно замера. */
  .wa-orbits i{position:absolute;border-radius:50%;border:1px solid rgba(247,137,219,.42);
    animation:waOrbit 9s linear 3s infinite}
  /* Радиусы уменьшены на те же 15%, что и круг (9/16/23 -> 8/14/20): кольца в пикселях, и
     без пересчёта они висели бы вокруг меньшей кнопки заметно шире прежнего. Количество
     колец, электроны, скорости и направления не тронуты. */
  .wa-orbits i:nth-child(1){inset:-8px}
  .wa-orbits i:nth-child(2){inset:-14px;border-color:rgba(149,71,239,.34);border-style:dashed;
    animation-duration:14s;animation-direction:reverse}
  .wa-orbits i:nth-child(3){inset:-20px;border-color:rgba(95,118,232,.24);animation-duration:20s}
  .wa-orbits i::after{content:'';position:absolute;top:-3px;left:50%;margin-left:-3px;
    width:6px;height:6px;border-radius:50%;background:#f789db;box-shadow:0 0 8px rgba(247,137,219,.9)}
  .wa-orbits i:nth-child(2)::after{top:auto;bottom:-3px;left:22%;
    background:#9547ef;box-shadow:0 0 8px rgba(149,71,239,.85)}
  .wa-orbits i:nth-child(3)::after{top:28%;left:auto;right:-3px;margin-left:0;width:5px;height:5px;
    background:#5f76e8;box-shadow:0 0 7px rgba(95,118,232,.8)}
  @keyframes waOrbit{from{transform:rotate(0)}to{transform:rotate(360deg)}}
  /* Подушка под кнопку. Кнопка занимает полосу от 90px до 141px от низа вьюпорта, плюс 20px
     орбит сверху - значит в самом конце страницы контент должен обрываться на 161px выше низа,
     иначе под кругом оказываются футер, поля формы и строчки свёртки. 165px - это с запасом,
     env(safe-area-inset-bottom) добавлен под home-индикатор. Меняешь bottom или размер круга -
     пересчитай и это число. */
  body{padding-bottom:calc(165px + env(safe-area-inset-bottom,0px))}
}
@media(max-width:360px){
  /* 48x48 - нижняя граница зоны нажатия по гайдлайнам, ниже не опускать. */
  .wa-sticky{width:48px;height:48px}
  .wa-sticky svg{width:24px;height:24px}
}
@media(prefers-reduced-motion:reduce){
  /* Орбиты и электроны стоят - кнопка полностью статична. */
  .wa-orbits i{animation:none}
}


/* ===== Лид-форма .lead-card: перенесена один в один с главной и /team =====
   Маршрутизация «услуга -> номер» живёт ТОЛЬКО в /wa.js, дублей таблицы номеров нет.
   Правишь форму - правь на главной, на /team и здесь: общего CSS в проекте нет. */
/* ==== Форма заявок: разметка и стили один в один с финальной формой главной ==== */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field[hidden]{display:none}
.field>label{font-family:'Manrope',sans-serif;font-size:13px;font-weight:600;color:var(--w80);letter-spacing:.2px}
.field .req{color:#f789db}
/* Видимый фокус: до этого был только сдвиг цвета рамки, с клавиатуры почти незаметный. */
.lead-form input:focus-visible,.lead-form textarea:focus-visible,.lead-form select:focus-visible,.lead-form .btn:focus-visible{outline:2px solid #f789db;outline-offset:2px}
/* Селект большой формы: поля берём у .lead-form input, здесь только сброс нативного вида и стрелка. */
.lead-form select{width:100%;padding:16px 40px 16px 22px;border-radius:14px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.06);color:#fff;font-family:'Manrope',sans-serif;font-size:15px;line-height:1.5;outline:none;box-sizing:border-box;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='rgba(255,255,255,.6)' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 18px center;background-size:12px 8px;cursor:pointer}
.lead-form select:focus{border-color:#f789db}
.lead-form select option{background:#14099d;color:#fff}
/* Шапка блока: заголовок слева, подзаголовок справа в одну строку с ним; <=768 - друг под другом. */
/* Заголовок не сжимается (flex:0 0 auto) - если его max-content шире контейнера, подзаголовку
   от flex:1 1 0 достаётся 3px, и текст встаёт вертикальным столбиком в один символ. Ловилось
   на 9 страницах услуг с длинным H2 «Узнайте стоимость под ключ...» (max-content 1017px при
   контейнере 1052px), на главной с коротким H2 не проявлялось. Лечение: заголовку разрешён
   сжим (0 1 auto + min-width:0), подзаголовку дан ненулевой базис 320px, контейнеру - wrap.
   Итог: вправо, если оба влезают в строку; под заголовок, если нет. Ширину не выдумывает. */
.cta-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:32px;margin:0 0 26px}
.cta-head .cta-title{flex:0 1 auto;min-width:0;margin:0}
/* margin-inline:auto центрирует подзаголовок ТОЛЬКО когда он перенёсся на свою строку, и
   само собой: flex-grow разбирает свободное место раньше auto-полей, поэтому в одной строке
   с заголовком (главная) полям достаётся ноль и раскладка не меняется, а на своей строке
   ширина упирается в max-width:460px, остаётся свободное место - и поля делят его поровну.
   Без этого блок стоял у левого края с центрированным текстом внутри и читался криво. */
.cta-head .sub{flex:1 1 320px;min-width:0;margin:0 auto 4px;max-width:460px}
/* Заголовок на СВОЕЙ строке тоже центрируем - иначе его коробка (shrink-to-fit по длинной
   строке) прижата влево, текст внутри центрирован по ней, и группа сидит левее оси
   подзаголовка: на 390 расхождение было 18-34px и читалось как «криво». Механика та же,
   что у .sub: в общей строке grow подзаголовка забирает свободное место раньше auto-полей,
   поэтому бок-о-бок раскладка не меняется. Правило ТОЛЬКО в файлах подстраниц: у главной
   CTA выровнена влево (её .cta-head живёт в .cta-content и стили берёт из home.css),
   там центрировать нельзя. */
.cta-final .cta-head .cta-title{margin-inline:auto}
.cta-title{font-family:'Oswald',sans-serif;font-style:italic;text-transform:uppercase;font-size:clamp(28px,4.6vw,48px);line-height:1.05;letter-spacing:-.5px}
.cta-title span{display:block}
/* Строка 1 мельче и в градиенте, строка 2 крупнее сплошным белым. Запас padding/margin по .1em -
   тот же фикс ink-свеса Oswald-курсива, что у .grad: без него background-clip:text срезает
   боковые буквы (закон проекта). */
.cta-title .t1{font-size:.62em;background:var(--gt);-webkit-background-clip:text;background-clip:text;color:transparent;padding:0 .1em;margin:0 -.1em}
.cta-title .t2{color:#fff}
.lead-card{padding:34px 32px;border-radius:24px;border:1px solid rgba(255,255,255,.18);background:linear-gradient(135deg,rgba(203,69,145,.26) 0%,rgba(141,72,220,.20) 45%,rgba(95,118,232,.24) 100%);box-shadow:0 24px 60px -12px rgba(203,69,145,.35)}
/* Раскладка: ряд 1 - имя, контакт, услуга; ряд 2 - задача + кнопка справа.
   Условный бюджет НЕ удалён (ТЗ): он стоит на всю ширину своей строкой, поэтому при появлении
   просто вставляет ряд, а не сдвигает поля в соседние колонки. Пока он hidden, его в сетке нет
   вообще - лишней пустой строки и двойного gap не возникает. */
.lead-card .lead-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 12px;max-width:none;margin:0;align-items:start}
.lead-card .lead-form .field{min-width:0}
.lead-card .lead-form .field-budget{grid-column:1/-1}
.lead-card .lead-form .f-task{grid-column:1/3}
.lead-card .lead-form .btn{grid-column:3;align-self:start;width:100%;margin:0;padding:18px 24px}
/* Пилюли: скругление 999px на полях, селектах и кнопке. Селекту сохраняем место под стрелку. */
.lead-card .lead-form input,.lead-card .lead-form select,.lead-card .lead-form .btn{border-radius:999px}
.lead-card .lead-form select{padding-right:44px}
/* Плейсхолдер поля задачи подменяется медиазапросом, без JS: у самого input плейсхолдер пустой
   (пробел - чтобы срабатывал :placeholder-shown), видимый текст лежит наложением .ph поверх поля
   и гаснет, как только пользователь начал печатать. Обёртка .f-task-box нужна, чтобы наложение
   совпадало с боксом input'а по высоте: .field выше на строку ошибки. */
.lead-card .lead-form input::placeholder{text-overflow:ellipsis}
.f-task-box{position:relative}
.f-task-box .ph{position:absolute;inset:0;display:flex;align-items:center;padding:0 23px;
  font-family:'Manrope',sans-serif;font-size:15px;line-height:1.5;color:rgba(255,255,255,.55);
  pointer-events:none;opacity:0;white-space:nowrap;overflow:hidden}
.f-task-box input:placeholder-shown+.ph{opacity:1}
.f-task-box .ph-short{display:none}
@media(max-width:480px){
  .f-task-box .ph-long{display:none}
  .f-task-box .ph-short{display:inline}
}
@media(max-width:768px){
  .cta-head{flex-direction:column;align-items:flex-start;gap:10px}
  /* flex:0 1 auto обязателен. В колонке flex-basis управляет ВЫСОТОЙ, поэтому базис 320px,
     заданный для десктопной строки, растягивал подзаголовок с его ~145px до 320px и рисовал
     под текстом ~200px пустоты между ним и карточкой формы. Правило .sub выше по файлу базис
     не сбрасывает - сбрасываем здесь, вместе со сменой направления. */
  .cta-head .sub{flex:0 1 auto;max-width:none;margin:0}
  /* В колонке auto-поля подзаголовку обнулены (см. строку выше), поэтому на подстраницах,
     где CTA центрирована, ось задаём контейнером. Главной это правило не достаётся -
     её стили в home.css. */
  .cta-final .cta-head{align-items:center}
  .lead-card .lead-form{grid-template-columns:1fr}
  .lead-card .lead-form .field-budget,.lead-card .lead-form .f-task,.lead-card .lead-form .btn{grid-column:1}
}
@media(max-width:640px){
  .cta-final .cta-content{text-align:left}
  .lead-card{padding:24px 18px}
}
