/* Каркас сети SVOY. НЕ ПРАВИТЬ РУКАМИ: файл собирается из
   src/lib/brand.ts скриптом ~/gen_brand_css.py на каждом деплое. */
:root{
  /* SVOY BRAND TOKENS v1.1 — канон сети: ~/svoy-brand/svoy-brand.css
     База общая для всех сайтов сети (BRAND_SYSTEM.md §3), меняется только акцент.
     svoy.io — мастер-бренд, акцент золото. */
  --paper:#F6F3EE; --surface:#FFFFFF; --surface2:#EFEAE1;
  --night:#1A1A1A; --night2:#141414;
  --ink:#1A1A1A; --ink2:#43403a; --muted:#6b655c; --ink-on-night:#EDE8DF;
  --gold:#C9A227; --gold-deep:#806410; --gold-soft:#F2D98A;
  --line:#dfd9cf; --line-gold:rgba(201,162,39,.5); --line-night:rgba(201,162,39,.18);
  --serif:'Fraunces',Georgia,serif; --sans:'Inter',system-ui,sans-serif;
  --shadow-card:0 1px 2px rgba(26,26,26,.05); --shadow-card-hover:0 18px 44px rgba(26,26,26,.12);
}
*{margin:0;padding:0;box-sizing:border-box}
/* На <body> в layout.tsx висит tailwind-класс bg-[#0A0A0A] text-white — он держит
   тёмную тему остального сайта. Класс сильнее селектора по тегу, поэтому светлую
   тему вешаем через body[class] (0,1,2 бьёт 0,1,0), без !important. */
html{scroll-behavior:smooth}
html:root{background:var(--paper)}
html body[class]{background:var(--paper);color:var(--ink);font-family:var(--sans);font-weight:300;line-height:1.6;-webkit-font-smoothing:antialiased}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
/* SKIP-LINK — «перейти к содержимому», первый элемент body (layout.tsx).
   До 30.08.2026 человек с клавиатуры проходил экобар, шапку и всё меню на
   каждой из 1 236 страниц. Видна только в фокусе (WCAG 2.4.1). */
.skiplink{position:absolute;left:-9999px;top:0;z-index:200;background:var(--night);color:#fff;
  padding:12px 20px;border-radius:0 0 8px 0;font-size:14px;font-family:var(--sans);font-weight:500}
.skiplink:focus{left:0}
/* ФОКУС С КЛАВИАТУРЫ — одно кольцо на всю сеть. До 31.08.2026 своего стиля
   не было вовсе: человек, идущий по сайту с клавиатуры, видел только
   подсветку браузера, а она на золотых кнопках и на фото почти не читается
   (WCAG 2.4.7). Мышью кольцо не появляется — на то и :focus-visible. */
:focus-visible{outline:2px solid var(--gold-deep);outline-offset:2px;border-radius:4px}
nav .links :focus-visible,.hero :focus-visible,.final :focus-visible,footer :focus-visible,.ecobar :focus-visible,.ctile:focus-visible{outline-color:var(--gold-soft)}
/* Плавающая кнопка WhatsApp не должна перекрывать подвал на узком экране. */
@media(max-width:560px){[data-wa-fab]{height:50px!important;padding:0 16px 0 13px!important;font-size:14px!important}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.wrap{max-width:1280px;margin:0 auto;padding:0 32px}
h1,h2,h3{font-family:var(--serif);font-weight:300;line-height:1.06;letter-spacing:-.01em;color:var(--ink)}
em{font-style:italic;color:var(--gold-deep)}
section{padding:118px 0}

/* KICKER — надстрочная строка семьи: «— SVOY · ПО ВСЕМУ МИРУ». Есть на home и baby,
   поэтому это опознавательный знак сети, а не украшение. */
.kick{display:inline-flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold-deep);font-weight:600;font-family:var(--sans)}
.kick::before{content:"";width:28px;height:1px;background:currentColor;opacity:.7}
.kick.nodash::before{display:none}
.eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-deep);font-weight:600}

.ic{width:30px;height:30px;stroke:var(--gold-deep);stroke-width:1.3;fill:none;stroke-linecap:round;stroke-linejoin:round}

/* BUTTONS — одна система на всю сеть: капсула, первичная залита акцентом */
.btn{display:inline-flex;align-items:center;gap:10px;padding:15px 28px;border-radius:100px;font-size:15px;
  font-weight:500;transition:.25s;width:fit-content;font-family:var(--sans);white-space:nowrap}
.btn-primary{background:var(--gold);color:#15120B;font-weight:600}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(201,162,39,.4)}
.btn-ghost{border:1px solid var(--line);color:var(--ink);background:transparent}
.btn-ghost:hover{border-color:var(--gold-deep);color:var(--gold-deep)}
.btn-dark{background:var(--night);color:#fff}
.btn-dark:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(26,26,26,.28)}
.btn.sm{padding:11px 22px;font-size:14px}
/* поверх фото кнопка-контур становится светлой */
nav .btn-ghost,.hero .btn-ghost,.final .btn-ghost,.manifesto .btn-ghost{
  border-color:rgba(255,255,255,.45);color:#fff;background:rgba(10,9,7,.28);backdrop-filter:blur(4px)}
nav .btn-ghost:hover,.hero .btn-ghost:hover,.final .btn-ghost:hover,.manifesto .btn-ghost:hover{
  background:rgba(255,255,255,.16);border-color:#fff;color:#fff}

/* ECOSYSTEM BAR — тёмный якорь сети, одинаковый на всех сайтах SVOY */
.ecobar{background:#131211;border-bottom:1px solid var(--line-night);font-size:12.5px;letter-spacing:.05em}
.ecobar .wrap{display:flex;align-items:center;justify-content:space-between;padding:10px 32px;gap:16px;flex-wrap:wrap}
.ecobar .fam{display:flex;gap:20px;align-items:center;flex-wrap:wrap;color:#8d857a}
.ecobar .fam a{transition:.2s}.ecobar .fam a:hover{color:var(--ink-on-night)}
.ecobar .fam .here{color:var(--gold);font-weight:600;letter-spacing:.14em}
.ecobar .tg{color:#8d857a}.ecobar .tg:hover{color:var(--gold)}

/* NAV + ЛОГОТИП-ЛОКАП — один знак на всю сеть: кикер сверху, «SVOY» серифом.
   Селектор именно nav.shell, а не голый nav: до 15.08.2026 правило било по
   ЛЮБОМУ <nav> на сайте, и хлебные крошки тематических страниц, виз и вузов
   получали position:absolute, top:34px, space-between и белый текст — уезжали
   из потока, растягивались во всю ширину и пропадали на светлом фоне. */
nav.shell{position:absolute;top:34px;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:18px 32px;max-width:1280px;margin:0 auto;color:#fff;gap:24px}
nav .logo{display:flex;flex-direction:column;gap:5px;text-shadow:0 2px 14px rgba(0,0,0,.45)}
nav .logo .kick{color:rgba(255,255,255,.78);font-size:10px;letter-spacing:.22em}
nav .logo .kick::before{width:20px;background:rgba(255,255,255,.6)}
nav .logo .mark{font-family:var(--serif);font-size:27px;letter-spacing:.14em;font-weight:500;line-height:1}
nav .logo .mark b{color:var(--gold);font-weight:500}
nav .navright{display:flex;align-items:center;gap:28px}
nav .links{display:flex;gap:28px;font-size:14px;align-items:center}
/* МЕНЮ НА ТЕЛЕФОНЕ, 31.08.2026. До этого дня его не было: правило
   `nav .links a:not(.btn){display:none}` прятало все пункты на экранах
   уже 900 пикселей, и человек с телефона не мог попасть из шапки ни в
   услуги, ни в страны, ни в города. Раскрытие на <details>: работает без
   скрипта и с клавиатуры. На широком экране кнопка спрятана, а список
   показан всегда — независимо от того, «открыт» details или нет. */
nav .navright{position:relative}
/* Кнопка поиска. Стоит в каркасе, а не в компоненте: её разметку ставит
   скрипт при загрузке, а стили компонента приезжают только вместе с
   открытым оверлеем — до первого клика кнопка была голой. */
nav .nsearch{display:inline-flex;align-items:center;gap:7px;padding:8px 15px;
  border-radius:100px;border:1px solid rgba(255,255,255,.3);background:rgba(10,9,7,.3);
  backdrop-filter:blur(4px);color:#fff;font-family:var(--sans);font-size:13.5px;
  cursor:pointer;transition:.2s;line-height:1}
nav .nsearch:hover{border-color:var(--gold-soft);color:var(--gold-soft)}
nav.solid .nsearch{border-color:var(--line);background:transparent;backdrop-filter:none;
  color:var(--muted)}
nav.solid .nsearch:hover{border-color:var(--gold-deep);color:var(--gold-deep)}
nav .burger{display:none;appearance:none;-webkit-appearance:none;margin:0;cursor:pointer;
  width:40px;height:40px;border-radius:100px;border:1px solid rgba(255,255,255,.3);
  background-color:rgba(10,9,7,.3);backdrop-filter:blur(4px);color:#fff;
  background-image:linear-gradient(currentColor,currentColor),
    linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor);
  background-size:16px 1.6px;background-repeat:no-repeat;
  background-position:center calc(50% - 5px),center,center calc(50% + 5px)}
nav .burger:checked{background-image:linear-gradient(currentColor,currentColor),
    linear-gradient(currentColor,currentColor);background-position:center,center;
  background-size:16px 1.6px}
nav.solid .burger{border-color:var(--line);background-color:transparent;
  backdrop-filter:none;color:var(--ink)}
nav .links a:not(.btn){text-shadow:0 1px 12px rgba(0,0,0,.6);opacity:.92}
nav .links a:not(.btn):hover{opacity:1;color:var(--gold-soft)}

/* Страна в шапке города — ссылка вверх по лестнице. Подчёркивание
   пунктиром: это не кнопка, но и не просто подпись. */
.ctry-up{border-bottom:1px dashed currentColor;padding-bottom:1px;transition:.2s}
.ctry-up:hover{color:#fff;border-bottom-style:solid}

/* ШАПКА НА ПОДЛОЖКЕ — для страниц без фото-героя. Оболочка та же,
   меняется только основа: белый фон вместо снимка, тёмный текст. */
.navbar{background:var(--surface);border-bottom:1px solid var(--line)}
nav.solid{position:static;color:var(--ink);padding:14px 32px}
nav.solid .logo{text-shadow:none}
nav.solid .logo .kick{color:var(--gold-deep)}
nav.solid .logo .kick::before{background:currentColor}
nav.solid .logo .mark{color:var(--ink)}
nav.solid .links a:not(.btn){text-shadow:none;opacity:1;color:var(--ink2)}
nav.solid .links a:not(.btn):hover{color:var(--gold-deep)}
nav.solid .btn-ghost{border-color:var(--line);color:var(--ink);background:transparent;backdrop-filter:none}
nav.solid .btn-ghost:hover{border-color:var(--gold-deep);color:var(--gold-deep);background:transparent}
@media(max-width:900px){nav.solid{padding:12px 20px}}

/* HERO — фото на всю ширину, текст в нижней трети (как на home и baby) */
.hero{position:relative;min-height:92vh;overflow:hidden;display:flex}
.hero>img{position:absolute;inset:0;transform:scale(1.06);animation:zoom 22s ease-out forwards;
  filter:saturate(1.22) brightness(1.1)}
@keyframes zoom{to{transform:scale(1)}}
/* Две шторки вместо одной глухой. Вертикальная держит шапку и низ, боковая
   затемняет только левую треть — ту, где стоит текст. Правая часть кадра
   остаётся яркой: снимок должен читаться как фотография, а не как фон. */
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(24,20,14,.44) 0%,rgba(24,20,14,.06) 26%,rgba(22,18,13,.22) 48%,rgba(20,16,11,.5) 74%,rgba(16,13,9,.78) 100%),
    linear-gradient(90deg,rgba(16,13,9,.6) 0%,rgba(16,13,9,.4) 34%,rgba(16,13,9,.08) 58%,transparent 72%)}
.hero .inner{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;
  max-width:1280px;margin:0 auto;width:100%;padding:172px 32px 88px}
.hero .kick{color:var(--gold-soft)}
.hero .kick::before{background:var(--gold-soft)}
.hero h1{font-size:clamp(46px,6.4vw,100px);max-width:20ch;color:#fff;font-weight:400;margin-top:20px;
  text-shadow:0 2px 18px rgba(12,10,7,.55),0 1px 60px rgba(12,10,7,.4)}
.hero h1 em{color:var(--gold-soft)}
.hero p{font-size:clamp(15px,1.35vw,19px);margin-top:24px;max-width:56ch;color:#e8e1d4;
  text-shadow:0 1px 18px rgba(0,0,0,.55)}
.hero .acts{display:flex;gap:12px;margin-top:34px;flex-wrap:wrap}
/* чипы-факты — как на baby: короткие обещания сразу под кнопками */
.chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.chips span{font-size:13px;color:#efe9dd;border:1px solid rgba(255,255,255,.24);background:rgba(15,13,11,.34);
  backdrop-filter:blur(6px);border-radius:100px;padding:8px 16px}
.chips b{color:var(--gold-soft);font-weight:600}
/* «короткий» герой — для внутренних страниц */
.hero.short{min-height:76vh}

/* TRUST */
.trust{border-bottom:1px solid var(--line);background:var(--surface2)}
.trust .wrap{display:flex;flex-wrap:wrap;gap:40px;justify-content:space-between;padding:44px 32px}
.stat b{font-family:var(--serif);font-size:46px;display:block;font-weight:400;color:var(--ink);line-height:1}
.stat span{font-size:12px;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-top:10px;display:block}

/* SECTION HEAD */
.shead{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:52px}
.shead h2{font-size:clamp(32px,4.2vw,58px);max-width:20ch;color:var(--ink);font-weight:400}

/* ПЛИТКА ГОРОДА — общая для главной и /cities */
.cities{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:980px){.cities{grid-template-columns:repeat(2,1fr)}}
.ctile{position:relative;aspect-ratio:4/5;border-radius:14px;overflow:hidden;background:var(--night);
  display:flex;flex-direction:column;justify-content:flex-end;transition:.3s;box-shadow:var(--shadow-card)}
.ctile img{position:absolute;inset:0;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.ctile:hover img{transform:scale(1.07)}
.ctile:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-4px)}
.ctile::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(15,13,11,.06) 38%,rgba(15,13,11,.72) 82%,rgba(15,13,11,.88))}
.ctile .cap{position:relative;z-index:2;padding:22px}
.ctile h3{color:#fff;font-size:25px;font-weight:400}
.ctile .row{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12.5px;color:#e3dccf;opacity:.92}
.ctile .row b{color:var(--gold-soft);font-weight:500}
/* плитка-ссылка «дальше», без фото */
.ctile.more{background:var(--surface2);border:1px solid var(--line);justify-content:center;text-align:left}
.ctile.more::after{display:none}
.ctile.more h3{color:var(--ink);margin-top:12px}
.ctile.more .row{color:var(--muted);display:block;line-height:1.7;margin-top:14px;font-size:13px}
.ctile.more .row b{color:var(--gold-deep)}
.ctile.more:hover{border-color:var(--gold-deep)}
.cnote{margin-top:24px;font-size:14px;color:var(--muted)}

/* FINAL CTA */
.final{position:relative;overflow:hidden;border-radius:16px;padding:112px 48px;text-align:center;border:1px solid var(--line)}
.final img{position:absolute;inset:0;z-index:0}
.final::after{content:"";position:absolute;inset:0;background:rgba(14,12,10,.62)}
.final .in{position:relative;z-index:2}
.final .kick{color:var(--gold-soft)}
.final .kick::before{background:var(--gold-soft)}
.final h2{font-size:clamp(32px,4.4vw,60px);max-width:17ch;margin:18px auto 20px;color:#fff;font-weight:400}
.final h2 em{color:var(--gold-soft)}
.final p{max-width:48ch;margin:0 auto 32px;color:#ddd6c8}
.final .acts{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* FOOTER — второй тёмный якорь сети */
footer{padding:76px 0 64px;background:var(--night);border-top:1px solid var(--line-night);color:#b3aca1;font-size:15px}
footer .wrap{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:36px}
@media(max-width:1080px){footer .wrap{grid-template-columns:1fr 1fr}}
@media(max-width:620px){footer .wrap{grid-template-columns:1fr}}
footer a:hover{color:var(--gold-soft)}
footer .col{max-width:340px}
footer .brand{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
footer .brand .kick{color:rgba(255,255,255,.6)}
footer .brand .kick::before{background:rgba(255,255,255,.45)}
footer .brand .mark{font-family:var(--serif);font-size:30px;color:#fff;font-weight:500;letter-spacing:.14em;line-height:1}
footer .brand .mark b{color:var(--gold);font-weight:500}
footer .col p{font-size:15px;line-height:1.6}
footer .ftitle{color:#fff;font-weight:600;font-size:12px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:16px}
footer .fam2 a{display:inline-block;margin:0 14px 10px 0;font-size:15px}
footer .fam2 a.master{color:var(--gold);font-weight:600}
footer .cnt a{display:block;margin-bottom:8px;font-size:15px}
footer .copy{width:100%;border-top:1px solid rgba(255,255,255,.1);margin-top:34px;padding-top:24px;font-size:14px;color:#8d857a}

/* MOBILE — ряд ссылок в шапке шире экрана, из-за overflow-x:hidden в globals.css
   кнопки просто срезались. На узких экранах оставляем логотип и одну кнопку. */
@media(max-width:900px){
  .wrap{padding:0 20px}
  .ecobar .wrap{padding:10px 20px;gap:10px}
  .ecobar .fam{gap:14px}
  .ecobar .tg{display:none}
  nav.shell{top:26px;padding:12px 20px}
  nav .navright{gap:10px}
  nav .burger{display:flex}
  /* 390 пикселей: логотип, бургер, поиск и кнопка заявки в один ряд.
     До 31.08.2026 кнопка «Оставить заявку» просто срезалась краем. */
  nav .nsearch{padding:0;width:40px;height:40px;justify-content:center;gap:0}
  nav .nsearch span{display:none}
  nav .navright>.btn{padding:10px 15px;font-size:13.5px}
  nav .logo .mark{font-size:21px}
  nav .links{display:none}
  nav .burger:checked ~ .links{display:flex}
  nav .links{position:absolute;right:0;top:calc(100% + 10px);z-index:60;
    flex-direction:column;align-items:stretch;gap:0;min-width:212px;
    background:var(--surface);border:1px solid var(--line);border-radius:14px;
    padding:6px;box-shadow:0 18px 44px rgba(26,26,26,.22)}
  nav .links a:not(.btn){display:block;padding:11px 14px;border-radius:9px;
    color:var(--ink);text-shadow:none;opacity:1;font-size:15px}
  nav .links a:not(.btn):hover{background:var(--surface2);color:var(--gold-deep)}
  nav .logo .kick{display:none}
  nav .logo .mark{font-size:23px}
  .hero::after{background:linear-gradient(180deg,rgba(24,20,14,.5) 0%,rgba(24,20,14,.1) 26%,rgba(20,16,11,.48) 62%,rgba(16,13,9,.82) 100%),
    linear-gradient(90deg,rgba(16,13,9,.44) 0%,rgba(16,13,9,.3) 100%)}
  .hero{min-height:88vh}
  .hero.short{min-height:70vh}
  .hero .inner{padding:124px 20px 58px}
  /* на узком экране длинный заголовок не влезает в строку при 46px */
  .hero h1{font-size:clamp(32px,8.6vw,46px);max-width:none;margin-top:16px}
  .hero p{margin-top:18px}
  .hero .acts{gap:10px;margin-top:26px}
  .hero .acts .btn{padding:13px 22px;font-size:14px}
  .chips span{font-size:12px;padding:7px 13px}
  section{padding:76px 0}
  .trust .wrap{gap:26px;padding:30px 20px}
  .stat b{font-size:36px}
  .final{padding:66px 24px}
  footer{padding:58px 0 48px}
}
@media(max-width:560px){
  .stat{min-width:44%}
  .shead{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:34px}
  .cities{grid-template-columns:1fr 1fr;gap:12px}
  .ctile .cap{padding:16px}
  .ctile h3{font-size:20px}
}
