/* ============================================================
   GEIZER · Лендинг «Бизнес во Вьетнаме» (RU)
   Дизайн-токены и компоненты — как на остальных страницах сайта.
   Обвязку шапки, меню, плавающих кнопок и футера стилизует
   shared/navigation.css — здесь только контент страницы.
   ============================================================ */
:root{
  --bg:#061630;--bg2:#091f43;--card:#0c2a57;--line:#234f84;
  --blue:#087cff;--cyan:#44bfff;--lime:#cce935;--green:#31d98a;
  --white:#f5f8ff;--muted:#9bb0ce;--max:1240px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--white);font:15px/1.55 Inter,Arial,sans-serif;overflow-x:hidden}
body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(circle at 78% 8%,rgba(0,126,255,.16),transparent 30%),radial-gradient(circle at 6% 60%,rgba(204,233,53,.05),transparent 26%)}
a{color:inherit;text-decoration:none}.phone{font-weight:900}
img{display:block;max-width:100%;height:auto}
em{font-style:normal}

.eyebrow{color:var(--cyan);font-weight:900;text-transform:uppercase;letter-spacing:.17em;font-size:11px}
.grid{background-image:linear-gradient(rgba(66,184,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(66,184,255,.045) 1px,transparent 1px);background-size:48px 48px}

/* Базовая раскладка шапки (флекс-строка). Остальную обвязку — логотип,
   меню, чип, телефон, бургер, футер — задаёт shared/navigation.css. */
.header{height:82px;display:flex;align-items:center;gap:24px;position:sticky;top:0;z-index:30;
  padding:0 max(28px,calc((100vw - var(--max))/2 + 28px));
  border-bottom:1px solid rgba(89,148,211,.2);background:rgba(6,22,48,.87);backdrop-filter:blur(18px)}
@media(max-width:640px){.header{height:70px;padding:0 16px;gap:12px}}

/* ---------- Кнопки ---------- */
.button{border:1px solid transparent;border-radius:999px;padding:16px 26px;font-weight:900;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:12px;transition:.25s;color:#fff;font-size:14px}
.button:hover{transform:translateY(-2px)}
.primary{background:linear-gradient(110deg,#087cff,#34aaff);box-shadow:0 12px 35px rgba(8,124,255,.24)}
.ghost{background:#0a244d;border-color:var(--line)}
.full{width:100%}

/* ---------- HERO ---------- */
.hero{position:relative;min-height:calc(100vh - 82px);overflow:hidden;
  padding:60px max(28px,calc((100vw - var(--max))/2 + 28px));display:flex;align-items:center}
.hero-bg{position:absolute;inset:0;z-index:0}
.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:center}
/* слева гасим фото в цвет страницы, чтобы текст читался без плашки */
.hero:after{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,var(--bg) 8%,rgba(6,22,48,.82) 42%,rgba(6,22,48,.35) 70%,rgba(6,22,48,.55) 100%)}
.hero-copy{position:relative;z-index:2;max-width:680px}
.hero h1{font-size:clamp(40px,5.6vw,76px);line-height:1;letter-spacing:-.045em;margin:18px 0}
.hero h1 em{color:#ffe900;text-shadow:0 0 28px rgba(255,233,0,.1)}
.hero-copy>p{font-size:19px;color:#c6d6ec;max-width:600px}
.actions{display:flex;gap:12px;margin:32px 0 30px;flex-wrap:wrap}
.trust{display:flex;gap:14px;flex-wrap:wrap}
.trust span{flex:1 1 170px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(8,28,60,.55);color:var(--muted);font-size:12px}
.trust b{display:block;color:#fff;font-size:14px;margin-bottom:3px}

/* ---------- Секции ---------- */
.section{max-width:var(--max);margin:auto;padding:104px 28px}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:46px}
.section-head h2{font-size:clamp(34px,4.4vw,58px);line-height:1.02;letter-spacing:-.04em;margin:16px 0 0}
.section-head>p{max-width:430px;color:var(--muted);font-size:15px}

/* Почему Вьетнам */
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.why-card{border:1px solid var(--line);border-radius:20px;background:linear-gradient(160deg,#0b2853,#0a2049);padding:28px 24px;transition:transform .3s,border-color .3s}
.why-card:hover{transform:translateY(-6px);border-color:var(--cyan)}
.why-ic{display:inline-block;color:var(--cyan);font-weight:900;font-size:13px;letter-spacing:.1em;margin-bottom:16px}
.why-card h3{font-size:19px;margin:0 0 10px}
.why-card p{color:var(--muted);margin:0;font-size:13.5px}

/* Под ключ */
.turnkey-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.tk{border:1px solid var(--line);border-radius:18px;background:#0a244c;padding:26px;transition:border-color .3s,transform .3s}
.tk:hover{border-color:var(--cyan);transform:translateY(-4px)}
.tk b{display:block;color:#fff;font-size:17px;margin-bottom:9px}
.tk b:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:10px;
  background:var(--cyan);box-shadow:0 0 12px rgba(68,191,255,.8);vertical-align:middle}
.tk p{color:var(--muted);margin:0;font-size:13.5px}

/* Этапы */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.step-card{position:relative;border:1px solid var(--line);border-radius:18px;background:#0b2853;padding:28px 24px;overflow:hidden}
.step-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--blue),var(--cyan))}
.step-n{display:block;font-size:34px;font-weight:900;letter-spacing:-.04em;
  color:rgba(74,128,184,.55);margin-bottom:14px}
.step-card h3{font-size:18px;margin:0 0 9px}
.step-card p{color:var(--muted);margin:0;font-size:13.5px}

/* Галерея */
.gallery{display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-auto-rows:300px;gap:14px}
.gallery figure{margin:0;position:relative;border-radius:18px;overflow:hidden;border:1px solid var(--line)}
.gallery .big{grid-row:span 1;grid-column:span 1}
.gallery img{width:100%;height:100%;object-fit:cover;transition:.6s}
.gallery figure:hover img{transform:scale(1.05)}
.gallery figcaption{position:absolute;bottom:14px;left:14px;background:rgba(5,22,48,.85);padding:7px 12px;border-radius:999px;font-size:11px;font-weight:800}

.vn-locations{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.vn-loc{border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--card);transition:transform .25s,border-color .25s}
.vn-loc:hover{transform:translateY(-4px);border-color:var(--cyan)}
.vn-loc-mosaic{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:110px;gap:2px}
.vn-loc-mosaic .vn-photo-open{position:relative;display:block;overflow:hidden}
.vn-loc-mosaic .vn-photo-open.is-big{grid-column:1;grid-row:1/3}
.vn-loc-mosaic.two-up .vn-photo-open{grid-row:1/3}
.vn-loc-mosaic img{width:100%;height:100%;object-fit:cover;transition:.5s}
.vn-loc-mosaic .vn-photo-open:hover img{transform:scale(1.08)}
.vn-loc-copy{padding:16px 18px 19px}
.vn-loc-copy span{display:block;color:var(--cyan);font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.vn-loc-copy h3{margin:6px 0 3px;font-size:19px;letter-spacing:-.02em}
.vn-loc-copy p{margin:0;color:#9db1cc;font-size:12px}
@media(max-width:980px){.vn-locations{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.vn-locations{grid-template-columns:1fr}.vn-loc-mosaic{grid-auto-rows:150px}}

/* Финальный CTA */
.final-cta{border:1px solid var(--line);border-radius:25px;background:linear-gradient(110deg,#103363,#092249);
  display:flex;align-items:center;justify-content:space-between;gap:34px;padding:48px}
.final-cta h2{font-size:clamp(30px,4vw,52px);line-height:1.04;letter-spacing:-.04em;margin:14px 0 12px}
.final-cta p{color:var(--muted);max-width:640px;margin:0}
.final-cta .button{min-width:230px;flex:0 0 auto}

/* ---------- Диалог заявки ---------- */
#leadDialog{position:relative;width:min(500px,calc(100% - 28px));background:#0b2853;border:1px solid #32679e;border-radius:22px;padding:34px;color:#fff}
dialog::backdrop{background:rgba(0,8,20,.8);backdrop-filter:blur(6px)}
#leadDialog h2{font-size:34px;letter-spacing:-.03em;margin:10px 0}
#leadDialog>p{color:var(--muted)}
.close{position:absolute;right:16px;top:12px;background:none;border:0;color:#fff;font-size:30px;line-height:1;cursor:pointer}
form{display:grid;gap:12px;margin-top:6px}
form label{font-size:11px;color:#b8cae0}
form input:not([type=checkbox]){display:block;width:100%;background:#061a38;border:1px solid #315d91;border-radius:11px;padding:14px;color:#fff;margin-top:5px;font-size:14px}
form input:focus{outline:none;border-color:var(--cyan)}
.agree{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
.agree a{color:var(--cyan)}
.success{text-align:center;padding:34px 10px}
.success strong{display:block;font-size:24px;color:var(--green);margin-bottom:8px}
.success p{color:var(--muted);margin:0}

.vn-photo-open{padding:0;border:0;background:none;cursor:pointer}
.vn-lightbox{width:min(1100px,calc(100% - 32px));padding:0;border-radius:20px;background:#020c1f;border-color:rgba(70,157,233,.4);overflow:visible}
.vn-lightbox img{display:block;width:100%;max-height:86vh;object-fit:contain;border-radius:19px}
.vn-lightbox-close{position:absolute;right:-14px;top:-14px;width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.28);border-radius:50%;background:var(--blue);color:#fff;font-size:22px;line-height:1;cursor:pointer;z-index:2}
.vn-lightbox-close:hover{background:var(--cyan)}
@media(max-width:640px){.vn-lightbox-close{right:0;top:-48px}}

/* ---------- Анимация появления ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:.7s}
.reveal.visible{opacity:1;transform:none}
.delay-1{transition-delay:.1s}
.delay-2{transition-delay:.2s}

/* ---------- Адаптив ---------- */
@media(max-width:980px){
  .section{padding:78px 22px}
  .section-head{display:block}
  .section-head>p{margin-top:14px}
  .why-grid{grid-template-columns:1fr 1fr}
  .turnkey-grid{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr 1fr}
  .gallery{grid-template-columns:1fr 1fr;grid-auto-rows:240px}
  .final-cta{flex-direction:column;align-items:flex-start;padding:38px 26px}
  .final-cta .button{width:100%}
}
@media(max-width:600px){
  .hero{min-height:auto;padding:70px 18px 60px}
  .hero h1{font-size:40px}
  .hero-copy>p{font-size:16px}
  .actions{flex-direction:column}
  .actions .button{width:100%}
  .section{padding:64px 18px}
  .why-grid,.turnkey-grid,.steps{grid-template-columns:1fr}
  .gallery{grid-template-columns:1fr}
  .final-cta{padding:32px 22px}
  #leadDialog{padding:26px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}

/* ============================================================
   Продающие блоки: доход в hero, хук, цифры, «это для вас», форма на странице
   ============================================================ */
.hero-income{margin:16px 0 6px;font-size:clamp(18px,2.3vw,25px);color:#e6eefb;font-weight:700;letter-spacing:-.01em}
.hero-income b{color:#ffe900;font-weight:900}
.hero-income sup{color:#ffe900;font-size:.55em;top:-.7em}
.disclaimer{margin-top:22px;max-width:580px;color:#7f97b7;font-size:11px;line-height:1.45}

/* Хук «почему сейчас» */
.hook{max-width:var(--max);margin:auto;padding:20px 28px}
.hook p{margin:0;max-width:920px;font-size:clamp(18px,2.3vw,27px);line-height:1.42;letter-spacing:-.01em;color:#c6d6ec}
.hook b{color:#fff}

/* Цифры */
.numbers{max-width:var(--max);margin:36px auto;padding:0 28px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.numbers article{border:1px solid var(--line);border-radius:18px;background:linear-gradient(160deg,#0b2853,#0a2049);padding:26px 20px;text-align:center}
.numbers strong{display:block;font-size:clamp(28px,3.7vw,44px);line-height:1;letter-spacing:-.04em;color:#fff}
.numbers strong sup{color:var(--cyan);font-size:.5em;top:-.8em}
.numbers article:first-child strong{color:#ffe900}
.numbers article:first-child strong sup{color:#ffe900}
.numbers p{margin:9px 0 0;color:var(--muted);font-size:12px}

/* «Это для вас, если…» */
.fit-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.fit{position:relative;border:1px solid var(--line);border-radius:18px;background:#0a244c;padding:26px 26px 26px 30px;overflow:hidden}
.fit:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--green),var(--cyan))}
.fit-q{display:block;color:#fff;font-size:17px;font-weight:800;margin-bottom:10px}
.fit p{color:var(--muted);margin:0;font-size:14px}

/* Форма на странице (воронка 2) */
.apply{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:center;
  border:1px solid var(--line);border-radius:25px;background:linear-gradient(110deg,#103363,#092249);padding:46px}
.apply-copy h2{font-size:clamp(28px,3.6vw,46px);line-height:1.05;letter-spacing:-.03em;margin:14px 0 12px}
.apply-copy h2 em{color:#ffe900}
.apply-copy>p{color:var(--muted);margin:0 0 20px;max-width:460px}
.apply-benefits{list-style:none;padding:0;margin:0;display:grid;gap:11px}
.apply-benefits li{position:relative;padding-left:28px;color:#dfeaf9;font-size:14px}
.apply-benefits li:before{content:"✓";position:absolute;left:0;top:-1px;color:var(--green);font-weight:900;font-size:15px}
.apply-form-wrap{background:#0b2853;border:1px solid #315d91;border-radius:18px;padding:28px}
.apply-form{display:grid;gap:12px;margin:0}
.apply-form label{font-size:11px;color:#b8cae0}
.apply-form input:not([type=checkbox]){display:block;width:100%;background:#061a38;border:1px solid #315d91;border-radius:11px;padding:14px;color:#fff;margin-top:5px;font-size:14px}
.apply-form input:focus{outline:none;border-color:var(--cyan)}
.apply-success{text-align:center;padding:34px 10px}
.apply-success strong{display:block;font-size:23px;color:var(--green);margin-bottom:8px}
.apply-success p{color:var(--muted);margin:0}

@media(max-width:980px){
  .numbers{grid-template-columns:1fr 1fr}
  .fit-grid{grid-template-columns:1fr}
  .apply{grid-template-columns:1fr;padding:34px}
}
@media(max-width:600px){
  .hook{padding:14px 18px}
  .numbers{margin:24px auto;padding:0 18px;gap:10px}
  .numbers article{padding:20px 12px}
  .apply{padding:26px 20px}
  .apply-form-wrap{padding:22px}
}

/* ---------- Лайтбокс галереи: листание + адрес объекта ---------- */
.vn-lightbox{position:relative}
.vn-lightbox img{border-radius:19px}
.vn-lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;display:grid;
  place-items:center;z-index:3;border:1px solid rgba(255,255,255,.22);border-radius:50%;
  background:rgba(4,14,34,.6);color:#fff;font-size:20px;line-height:1;cursor:pointer;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .2s,border-color .2s}
.vn-lightbox-nav:hover{background:var(--blue);border-color:transparent}
.vn-lightbox-prev{left:14px}
.vn-lightbox-next{right:14px}
/* Подпись — снизу слева, поверх фото, на мягкой затемняющей подложке,
   иначе светлый низ кадра съедает текст. */
.vn-lightbox-cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:44px 20px 18px;
  border-radius:0 0 19px 19px;text-align:left;pointer-events:none;
  background:linear-gradient(180deg,rgba(2,10,26,0),rgba(2,10,26,.86) 62%)}
.vn-lightbox-city{display:block;color:var(--cyan);font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.vn-lightbox-name{display:block;margin:4px 0 2px;color:#fff;font-size:19px;letter-spacing:-.02em}
.vn-lightbox-addr{display:block;color:#c2d4ea;font-size:13px}
.vn-lightbox-count{position:absolute;right:16px;bottom:18px;z-index:2;color:#9fb6d2;font-size:12px;font-weight:800;letter-spacing:.06em}
@media(max-width:640px){
  .vn-lightbox-nav{width:40px;height:40px}
  .vn-lightbox-prev{left:6px}
  .vn-lightbox-next{right:6px}
  .vn-lightbox-cap{padding:36px 14px 14px}
  .vn-lightbox-name{font-size:16px}
}
/* Пока открыт просмотр фото — страница под подложкой зафиксирована.
   position:fixed + сохранённый top держат позицию, поэтому после закрытия
   человек возвращается ровно туда, где смотрел галерею. */
body.vn-noscroll{position:fixed;left:0;right:0;width:100%;overflow:hidden}
/* ======================= vn2 ==========================================
   Правки после разбора страницы семью ролями. Ниже — только оформление
   новых блоков и оговорок; объяснение «зачем» стоит в разметке. */

/* Оговорка под блоком цифр. Раньше звёздочка у «3 млн ₽» вела в никуда:
   расшифровка осталась экраном выше. Кегль намеренно не мелкий — сведения,
   поданные так, что их не прочесть, считаются не доведёнными вовсе. */
.numbers-fine{max-width:900px;margin:16px auto 0;padding:0 28px;
  color:#a8bcd8;font-size:13px;line-height:1.6}

/* «Что нужно знать про бизнес за границей» — новый блок: за что отвечаем мы,
   что остаётся на партнёре и какие обязанности возникают перед налоговой РФ. */
.before-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.before-card{padding:26px;border:1px solid rgba(120,170,235,.28);border-radius:20px;
  background:linear-gradient(155deg,rgba(18,58,112,.55),rgba(10,34,71,.5))}
.before-card h3{margin:0 0 12px;font-size:19px;letter-spacing:-.02em;color:#fff}
.before-card p{margin:0;color:#b6c9e4;font-size:13.5px;line-height:1.65}
/* Средняя карточка — про чужую зону ответственности. Отмечаем её, чтобы
   читатель не пролистал именно то, о чём потом спрашивают на созвоне. */
.before-card:nth-child(2){border-color:rgba(255,216,115,.42)}
.before-card:nth-child(2) h3{color:#ffd873}

/* Строка внутренних ссылок под шагами: в теле страницы не было ни одной
   статической ссылки, и для поиска она была тупиком. */
.steps-note{margin:22px 0 0;color:#a8bcd8;font-size:13px;line-height:1.7}
.steps-note a{color:#8fd0ff;border-bottom:1px solid rgba(143,208,255,.35)}

@media(max-width:980px){ .before-grid{grid-template-columns:1fr} }
@media(max-width:640px){
  .numbers-fine{font-size:12.5px;padding:0 18px}
  .before-card{padding:22px}
}
/* vn2 · ЕДИНСТВО С САЙТОМ И ПЕРВЫЙ ЭКРАН.

   1. Отступ героя считался под непрозрачную шапку. Замер: надзаголовок
      «GEIZER · Международная сеть · Вьетнам» стоял на 66 px при высоте шапки
      82 — то есть внутри неё, и читался как часть логотипа. Та же болезнь уже
      вылечена на франшизе и на оборудовании; берём то же решение. */
.hero{padding-top:clamp(112px,12vh,150px)}

/* 2. Главная кнопка была синей, тогда как на Главной и на франшизе она давно
      золотая. На экране одновременно оказывались золотая «Стать партнёром» в
      шапке и синяя «Получить расчёт» в герое — глаз уходил в шапку, мимо
      воронки. Золото на сайте означает действие и деньги. */
.button.primary{background:linear-gradient(180deg,#ffe14a,#ffc400);color:#14233f;
  box-shadow:0 16px 34px -12px rgba(255,190,0,.55)}
.button.primary:hover{box-shadow:0 22px 44px -14px rgba(255,190,0,.72);color:#14233f}

/* 3. Раз кнопка стала золотой, золото в заголовке начинает с ней спорить.
      Возвращаем герою тот же приём, что на франшизе: контурная подсветка. */
.hero h1 em{color:transparent;-webkit-text-stroke:1px #7fc8ff}
.apply-copy h2 em{color:#fff}

/* 4. Заголовок рвался посреди слова: «самообслуживани / я». На узком ноутбуке
      слово длиннее колонки, а переносы были включены только до 560 px. */
.hero h1{font-size:clamp(30px,4.6vw,62px);hyphens:auto;-webkit-hyphens:auto}
.hero-copy{max-width:760px}

/* 5. Якоря приземляли заголовок под фиксированную шапку — на странице три
      внутренние ссылки, и все три уводили в перекрытие. */
html{scroll-padding-top:100px}
@media(max-width:640px){html{scroll-padding-top:78px}}

/* 6. Единственная контекстная ссылка в карточках была неотличима от текста:
      глобальное правило гасит цвет и подчёркивание у всех ссылок. */
.why-card a,.fit a,.tk a{color:#ffd873;border-bottom:1px solid rgba(255,216,115,.45);padding-bottom:1px}

/* 7. Чекбокс согласия — 13×13 px: на телефоне в него надо целиться, а без
      галочки форма не отправится. */
.agree input[type=checkbox]{width:22px;height:22px;flex:none;accent-color:#ffc400}
.agree{align-items:flex-start;font-size:13px}

/* ======================= vn6 ==========================================
   Блок вопросов перед формой. Оформление то же, что на франшизе: аккордеон
   на <details> работает без JS, текст виден поиску и в закрытом виде,
   клавиатуру и стрелки обрабатывает сам браузер. */
.faq-list{display:grid;gap:9px}
.faq-item{border:1px solid var(--line);border-radius:16px;background:#0a244c;overflow:hidden}
.faq-item summary{list-style:none;cursor:pointer;position:relative;
  padding:19px 52px 19px 22px;font-weight:800;font-size:16px;color:#fff}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"";position:absolute;right:22px;top:50%;width:9px;height:9px;
  margin-top:-6px;border-right:2px solid #ffd873;border-bottom:2px solid #ffd873;
  transform:rotate(45deg);transition:transform .25s}
.faq-item[open] summary::after{transform:rotate(-135deg);margin-top:-2px}
.faq-item summary:hover{background:rgba(255,216,115,.05)}
.faq-item summary:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}
.faq-item>div{padding:0 22px 21px}
.faq-item p{margin:0;color:#b6c9e4;font-size:14px;line-height:1.7}
.faq-item a{color:#8fd0ff;border-bottom:1px solid rgba(143,208,255,.35)}
.faq-more{margin:22px 0 0;color:#a8bcd8;font-size:13px;line-height:1.7}
.faq-more a{color:#8fd0ff;border-bottom:1px solid rgba(143,208,255,.35)}
@media(max-width:640px){
  .faq-item summary{padding:16px 44px 16px 17px;font-size:15px}
  .faq-item>div{padding:0 17px 18px}
}

/* vn6 · ПЕРВЫЙ ЭКРАН.

   1. «во Вьетнаме» стояло контуром по прозрачной заливке. На франшизе тот же
      приём работает — там слово лежит на ровном тёмно-синем фоне. Здесь под ним
      фотография с небом, и полая буква на светлом пятне почти пропадает: самая
      важная строка страницы читалась хуже подписи под ней. Заливаем цветом.
      С золотой кнопкой голубой не спорит — это разные роли, а не два акцента. */
.hero h1 em{color:#8fd0ff;-webkit-text-stroke:0;text-shadow:0 2px 20px rgba(0,10,30,.6)}

/* 2. Затемнение фотографии заканчивалось на середине текста. Замер: колонка
      идёт от 128 до 888 px, то есть до 62% ширины окна, а плотность подложки
      падала с 0,82 уже на 42% и до 0,35 на 70%. Правая половина заголовка,
      обеих кнопок и карточек лежала прямо на светлом небе. Держим плотность
      до конца колонки и отпускаем фото только правее неё. */
.hero:after{background:linear-gradient(90deg,var(--bg) 6%,rgba(6,22,48,.9) 36%,
  rgba(6,22,48,.78) 62%,rgba(6,22,48,.4) 84%,rgba(6,22,48,.58) 100%)}

/* 3. Сноска про расчётный характер выручки шла 19-м кеглем — тем же, что и
      основной текст героя, и занимала три строки. Юридически её достаточно
      видно и тринадцатым: так же набрана оговорка под блоком цифр. Заодно
      первый экран становится короче на 40 px. */
.hero .disclaimer{max-width:640px;margin-top:20px;font-size:13px;line-height:1.6;color:#a8bcd8}

/* 4. Номер шага rgba(74,128,184,.55) на карточке давал контраст около 1,9:1 —
      цифру приходилось угадывать. */
.step-n{color:rgba(126,180,240,.85)}

/* 5. «с одного поста» — не украшение, а единица измерения: без неё цифра
      читается как выручка всего объекта, и сравнить её не с чем. Держим её
      рядом с суммой, но тише, чтобы не спорить с ней по весу. */
.per-post{color:#b9cbe4;font-weight:600;font-size:.72em;letter-spacing:0}
.hero-income sup{margin-left:1px}

/* 6. Телефон. Первый экран занимал 1021 px при экране 844 — полтора экрана,
      причём линия обрыва приходилась ровно на середину карточек доверия, и
      человек не понимал, что там дальше. Считаем по частям: три карточки в две
      строки каждая — 233 px, отступ сверху 112 при шапке 70, снизу ещё 60.
      Ставим карточки в одну строку, поджимаем поля — экран сходится. */
@media(max-width:640px){
  .hero{padding-top:92px;padding-bottom:44px}
  .trust span{flex:1 1 100%;padding:10px 13px;font-size:11.5px;background:rgba(8,28,60,.82)}
  .trust b{display:inline;font-size:12.5px;margin:0 5px 0 0}
  /* Подложка была горизонтальной: на узком экране она гасила кадр по всей
     ширине, и фотографии словно не было. Разворачиваем по вертикали — текст
     наверху лежит на плотном, а низ кадра с постами остаётся видно. */
  .hero:after{background:linear-gradient(180deg,rgba(6,22,48,.94),rgba(6,22,48,.9) 58%,rgba(6,22,48,.6))}
  .hero-bg img{object-position:54% 46%}
}

/* ============================================================
   vn8 · ТРИ СХЕМЫ ВМЕСТО ДВАДЦАТИ ОДНОЙ КАРТОЧКИ ПРОЗЫ
   Разметку и «зачем» смотри в index.html — здесь только оформление.
   Интерактива ни в одном блоке нет: раскладку держит CSS Grid,
   без JS ничего не ломается и нечего деградировать.
   ============================================================ */

/* --- 1. «Кто что делает»: пять этапов в двух дорожках --------------- */
.vn-lanes-wrap{
  --vn-us:var(--cyan);
  --vn-you:#ffd873;        /* золотом на сайте уже помечена «чужая» зона */
  --vn-cell:#0a244c;       /* фон как у .faq-item — блок не выпадает из ритма */
}
/* Легенда. Цвет — не единственный носитель смысла: метка «GEIZER» / «Вы»
   продублирована текстом в каждой ячейке, поэтому схема читается и при
   дальтонизме, и в чёрно-белой печати. */
.vn-legend{display:flex;flex-wrap:wrap;gap:10px 24px;margin:0 0 20px;color:var(--muted);font-size:12.5px}
.vn-key{display:inline-flex;align-items:center;gap:8px}
.vn-key:before{content:"";width:10px;height:10px;border-radius:3px;background:var(--vn-us)}
.vn-key.is-you:before{background:var(--vn-you)}

/* display:contents отдаёт ячейки прямо в общий грид: ряды «этап / мы / вы»
   выравниваются между всеми колонками без subgrid, то есть работает и в
   старых Safari. role="list"/"listitem" возвращают семантику списка,
   которую display:contents в части браузеров снимает. */
.vn-lanes{list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(5,1fr);
  grid-template-rows:auto 1fr auto;grid-auto-flow:column;gap:12px}
.vn-lanes>.vn-stage{display:contents}

.vn-stage-t{position:relative;margin:0;padding:0 0 18px;font-size:15px;letter-spacing:-.01em;color:#fff}
.vn-stage-t span{display:block;color:var(--cyan);font-size:11px;font-weight:900;letter-spacing:.14em;margin-bottom:6px}
/* Линия маршрута: точка на этапе и отрезок к следующему. У последнего
   этапа отрезок обрывается по краю — у пути есть конец. */
.vn-stage-t:before{content:"";position:absolute;left:0;bottom:2px;width:7px;height:7px;border-radius:50%;
  background:var(--cyan);box-shadow:0 0 0 4px rgba(68,191,255,.14)}
.vn-stage-t:after{content:"";position:absolute;left:12px;right:-12px;bottom:5px;height:1px;
  background:linear-gradient(90deg,var(--line),rgba(35,79,132,.25))}
.vn-lanes>.vn-stage:last-child .vn-stage-t:after{right:0}

.vn-cell{border:1px solid var(--line);border-left:3px solid var(--vn-us);
  border-radius:14px;background:var(--vn-cell);padding:16px 16px 17px}
.vn-cell.is-you{border-color:rgba(255,216,115,.32);border-left-color:var(--vn-you);
  background:linear-gradient(180deg,rgba(255,216,115,.07),rgba(255,216,115,0) 70%),var(--vn-cell)}
.vn-who{display:block;color:var(--cyan);font-size:10px;font-weight:900;letter-spacing:.13em;
  text-transform:uppercase;margin-bottom:10px}
.vn-cell.is-you .vn-who{color:var(--vn-you)}
.vn-cell ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.vn-cell li{position:relative;padding-left:15px;color:#c3d3e9;font-size:13px;line-height:1.45}
.vn-cell li:before{content:"";position:absolute;left:0;top:7px;width:5px;height:5px;border-radius:50%;
  background:rgba(68,191,255,.78)}
.vn-cell.is-you li:before{background:rgba(255,216,115,.85)}
/* «Ничего — работаем мы»: маркер меняется на прочерк, чтобы строка
   не читалась как ещё одна обязанность партнёра. */
.vn-cell .is-none{color:#8ea6c4}
.vn-cell .is-none:before{width:9px;height:1px;border-radius:0;top:10px;background:#5c7396}

.vn-lanes-note{margin:24px 0 0;max-width:900px;color:#a8bcd8;font-size:13px;line-height:1.7}

@media(max-width:980px){
  .vn-lanes{grid-template-columns:1fr;grid-template-rows:auto;grid-auto-flow:row;gap:18px}
  .vn-lanes>.vn-stage{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}
  .vn-stage-t{grid-column:1/-1;padding-bottom:2px}
  .vn-stage-t:before,.vn-stage-t:after{display:none}
  .vn-stage-t span{display:inline;margin:0 10px 0 0}
}
@media(max-width:600px){
  .vn-lanes>.vn-stage{grid-template-columns:1fr;gap:8px}
  .vn-cell{padding:14px}
  .vn-legend{margin-bottom:16px}
}

/* --- 2. Календарь сезона: 12 месяцев против 7–8 ---------------------
   Первая версия подписывала клетки одной буквой — Я Ф М А М И И А С О Н Д.
   Понять в этом месяцы нельзя: М и И повторяются дважды, а с чего строка
   начинается, не сказано вовсе. Теперь над дорожками стоит нормальная шкала
   с сокращениями, а над ней — прямая подпись, что это год. Клетки чистые:
   они несут только «работает / не работает», и подпись им не нужна. */
.vn-season{
  --on:linear-gradient(180deg,#5cd8ff,#2596f0);
  --off:rgba(35,79,132,.4);
  --hatch:repeating-linear-gradient(135deg,rgba(92,216,255,.5) 0 4px,rgba(35,79,132,.45) 4px 8px);
  margin-top:26px;border:1px solid var(--line);border-radius:20px;
  background:linear-gradient(160deg,#0b2853,#0a2049);padding:26px 26px 22px;
  display:grid;grid-template-columns:210px 1fr 92px;gap:12px 20px;align-items:center}
.vn-season-lead{grid-column:1/-1;margin:0 0 4px;color:#fff;font-size:15px;font-weight:800;letter-spacing:-.01em}
.vn-season-gap{display:block}

/* Шкала месяцев. Ровно та же сетка из двенадцати колонок, что и у дорожек,
   поэтому подпись всегда стоит над своей клеткой. */
.vn-scale{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(12,1fr);gap:4px}
.vn-scale li{text-align:center;color:#7e97b8;font-size:10.5px;letter-spacing:.02em}

.vn-season-t{margin:0;color:#fff;font-size:16px;font-weight:800;letter-spacing:-.01em;line-height:1.3}
.vn-season-t span{display:block;margin-top:4px;color:var(--muted);font-size:12px;font-weight:400}

.vn-months{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(12,1fr);gap:4px}
.vn-months li{height:34px;border-radius:7px;background:var(--off)}
.vn-months li.on{background:var(--on);box-shadow:0 6px 16px -9px rgba(37,150,240,.95)}
/* Штриховка = «как повезёт». Сплошной заливкой мы утверждали бы то, чего
   не знаем: «7–8 месяцев» — это диапазон, а не цифра. */
.vn-months li.part{background:var(--hatch)}

.vn-season-n{margin:0;text-align:right;color:var(--muted);font-size:11.5px;white-space:nowrap}
.vn-season-n b{display:block;color:#fff;font-size:26px;font-weight:900;letter-spacing:-.03em;line-height:1;margin-bottom:2px}
.vn-season-n.is-ru b{color:var(--muted)}

/* Легенда: без неё штриховка читается как брак печати. */
.vn-season-legend{grid-column:1/-1;margin:6px 0 0;display:flex;flex-wrap:wrap;gap:8px 22px;
  color:var(--muted);font-size:12px}
.vn-season-legend .lg{display:inline-flex;align-items:center;gap:8px}
.vn-season-legend .lg:before{content:"";width:14px;height:14px;border-radius:4px;background:var(--off)}
.vn-season-legend .lg.on:before{background:var(--on)}
.vn-season-legend .lg.part:before{background:var(--hatch)}
.vn-season-note{margin:16px 0 0;max-width:820px;color:#a8bcd8;font-size:13px;line-height:1.7}

@media(max-width:980px){
  .vn-season{grid-template-columns:1fr auto;gap:10px 14px}
  .vn-season-gap{display:none}
  .vn-scale{grid-column:1/-1;order:-1}
  .vn-season-t{grid-column:1}
  .vn-season-n{grid-column:2}
  .vn-months{grid-column:1/-1}
  .vn-season-n b{display:inline;font-size:20px;margin:0 4px 0 0}
}
@media(max-width:600px){
  .vn-season{padding:20px 16px}
  .vn-months{gap:3px}
  .vn-months li{height:28px;border-radius:5px}
  .vn-scale{gap:3px}
  /* На 390 px «янв» в клетку 24 px не влезает. Оставляем каждую третью
     подпись — январь, апрель, июль, октябрь: шкала всё ещё читается. */
  .vn-scale li{font-size:9px}
  .vn-scale li:not(:nth-child(3n+1)){visibility:hidden}
  .vn-season-t{font-size:15px}
}
/* --- 3. Карта объектов ----------------------------------------------
   Контур собран из открытых геоданных и упрощён до 241 точки, точки
   объектов стоят на своих настоящих координатах в той же проекции.
   Рисовать силуэт Вьетнама на глаз нельзя: он слишком узнаваем, и
   приблизительный контур читается как «сделано наспех» — на странице,
   которая продаёт сделку на миллионы, это дороже отсутствия карты.
   Интерактив ровно один и полезный: метка — ссылка на карточку объекта
   ниже. Никакого JS, работает с клавиатуры. */
/* Карта и объекты — одна композиция: слева страна, справа сами мойки.
   Раньше это были две карточки подряд, и у карты был собственный список
   городов — тот же самый, что и карточки под ней. Список выброшен: номер
   на снимке совпадает с номером метки, и связь читается без подписей. */
.vn-objects{display:grid;grid-template-columns:minmax(0,236px) 1fr;gap:26px;align-items:start}
/* vn17: карта не прилипает — по решению владельца стоит на месте. */
.vn-objects-map{display:grid;gap:14px;justify-items:center}
.vn-map-canvas{position:relative;width:100%;max-width:210px}
.vn-map-canvas svg{display:block;width:100%;height:auto}
.vn-map-land{fill:rgba(30,86,150,.55);stroke:rgba(120,190,255,.55);stroke-width:1.4;
  stroke-linejoin:round;vector-effect:non-scaling-stroke}
.vn-map-refs circle{fill:rgba(150,180,215,.75)}
.vn-map-refs text{fill:#8fa6c4;font-size:13px;font-family:Inter,Arial,sans-serif}
.vn-map-free{margin:0;color:#a8bcd8;font-size:12px;line-height:1.6;text-align:center;max-width:236px}

/* Метки. Позиция в процентах от рамки холста — те же координаты, что и в
   проекции контура, поэтому точка не «плавает» при любом размере карты.
   Названий на карте нет намеренно: подписи по 90 px не расходятся на холсте
   в 210 px — Дак Мил и Нячанг стоят в 47 px друг от друга, Хошимин и Вунгтау
   в 20. Поэтому на карте номера, а названия — на самих карточках объектов. */
.vn-pin{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);
  width:18px;height:18px;display:grid;place-items:center;border-radius:50%;
  background:#ffd873;color:#14233f;font-size:10.5px;font-weight:900;line-height:1;
  box-shadow:0 0 0 3px rgba(255,216,115,.2),0 4px 10px -3px rgba(0,0,0,.6);
  transition:box-shadow .2s,transform .2s}
.vn-pin b{font-weight:900}
/* Кружок 18 px — маленькая цель для пальца. Расширяем область нажатия
   прозрачным полем до 32 px, не трогая вид метки. */
.vn-pin:before{content:"";position:absolute;inset:-7px;border-radius:50%}
.vn-pin:hover,.vn-pin:focus-visible{outline:none;
  box-shadow:0 0 0 7px rgba(255,216,115,.3),0 6px 14px -3px rgba(0,0,0,.7);
  transform:translate(-50%,-50%) scale(1.12)}

/* Номер точки на карточке объекта. Тот же кружок, что и на карте, — по нему
   глаз и связывает снимок с местом на карте. */
.vn-loc-num{position:absolute;left:18px;top:-13px;width:26px;height:26px;
  display:grid;place-items:center;border-radius:50%;background:#ffd873;color:#14233f;
  font-size:12px;font-weight:900;line-height:1;box-shadow:0 6px 14px -6px rgba(0,0,0,.8)}
.vn-loc-copy{position:relative}

/* Внутри двух колонок объектам достаётся меньше места: три в ряд превратились
   бы в узкие полоски, поэтому здесь их два в ряд. */
.vn-objects .vn-locations{grid-template-columns:repeat(2,1fr)}
@media(max-width:1080px){
  .vn-objects{grid-template-columns:1fr;gap:22px}
  .vn-objects-map{grid-template-columns:210px 1fr;align-items:center;
    justify-items:start;gap:20px}
  .vn-map-free{text-align:left;max-width:none}
}
@media(max-width:760px){
  .vn-objects-map{grid-template-columns:1fr;justify-items:center;gap:14px}
  .vn-map-canvas{max-width:190px}
  .vn-map-free{text-align:center}
  .vn-pin{width:16px;height:16px;font-size:9px}
  .vn-loc-num{width:24px;height:24px;font-size:11px}
}
@media(max-width:560px){
  .vn-objects .vn-locations{grid-template-columns:1fr}
}
/* --- 4. «Объект работает сам»: ночное фото и экран владельца -------- */
.vn-remote{display:grid;grid-template-columns:1.05fr .95fr;gap:26px;align-items:stretch}
.vn-remote-shot{position:relative;margin:0;border:1px solid var(--line);border-radius:22px;overflow:hidden;
  background:var(--card);min-height:420px}
.vn-remote-shot img{width:100%;height:100%;object-fit:cover;object-position:center}
.vn-remote-shot figcaption{position:absolute;left:16px;bottom:16px;padding:8px 14px;border-radius:999px;
  background:rgba(5,22,48,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  color:#dbe7f7;font-size:11.5px;font-weight:800;letter-spacing:.03em}

.vn-remote-side{display:grid;grid-template-columns:246px 1fr;gap:22px;align-content:start;
  border:1px solid var(--line);border-radius:22px;background:#0a244c;padding:26px}
/* Телефон: рамка на CSS, содержимое — обычная разметка. Мокап собран из
   текста, а не из картинки: масштабируется вместе со шрифтом и не весит
   ни байта трафика. */
.vn-phone{grid-row:1/3;border:1px solid rgba(120,170,235,.34);border-radius:26px;padding:9px;
  background:linear-gradient(165deg,#16345f,#0a1f42);box-shadow:0 26px 50px -28px rgba(2,8,22,.95)}
.vn-phone-scr{border-radius:19px;background:#061a38;padding:16px 14px 15px;display:grid;gap:13px}
.vn-scr-top{margin:0;display:flex;align-items:center;gap:7px;color:#9fb6d2;font-size:11px;font-weight:800}
.vn-scr-top em{margin-left:auto;font-style:normal;font-size:9px;letter-spacing:.12em;text-transform:uppercase;
  color:#0b1f3d;background:#ffd873;border-radius:4px;padding:2px 5px}
.vn-dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(49,217,138,.18);
  animation:vnPulse 2.6s ease-in-out infinite}
@keyframes vnPulse{0%,100%{box-shadow:0 0 0 3px rgba(49,217,138,.18)}50%{box-shadow:0 0 0 6px rgba(49,217,138,.05)}}
.vn-scr-sum{margin:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.vn-scr-sum b{color:#fff;font-size:25px;font-weight:900;letter-spacing:-.035em;line-height:1}
.vn-scr-sum i{font-style:normal;color:var(--muted);font-size:11.5px}
.vn-scr-bays{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.vn-scr-bays li{display:grid;grid-template-columns:52px 1fr 34px;gap:9px;align-items:center;
  color:#c3d3e9;font-size:11px}
.vn-scr-bays em{position:relative;height:6px;border-radius:99px;background:rgba(35,79,132,.6);overflow:hidden}
.vn-scr-bays em:after{content:"";position:absolute;inset:0 auto 0 0;width:var(--l);border-radius:99px;
  background:linear-gradient(90deg,#2596f0,#5cd8ff)}
.vn-scr-bays b{text-align:right;color:#fff;font-size:11px;font-weight:800}
/* Проблемный пост помечен не только цветом: под списком стоит строка,
   которая называет проблему словами. */
.vn-scr-bays .is-warn em:after{background:linear-gradient(90deg,#c98b18,#ffd873)}
.vn-scr-bays .is-warn b{color:#ffd873}
.vn-scr-alert{margin:0;padding:10px 12px;border-radius:11px;color:#ffe4a6;font-size:11px;line-height:1.5;
  background:rgba(255,216,115,.09);border:1px solid rgba(255,216,115,.3)}

.vn-remote-list{list-style:none;margin:0;padding:0;display:grid;gap:14px;align-content:start}
.vn-remote-list li{position:relative;padding-left:22px;color:#b6c9e4;font-size:13.5px;line-height:1.55}
.vn-remote-list b{display:block;color:#fff;font-size:14.5px;margin-bottom:2px}
.vn-remote-list li:before{content:"";position:absolute;left:0;top:7px;width:9px;height:9px;border-radius:3px;
  background:var(--cyan);box-shadow:0 0 12px rgba(68,191,255,.55)}
.vn-remote-note{grid-column:2;margin:0;color:#6f88a8;font-size:11px;line-height:1.55}

@media(max-width:980px){
  .vn-remote{grid-template-columns:1fr;gap:18px}
  .vn-remote-shot{min-height:0;aspect-ratio:16/9}
  .vn-remote-side{grid-template-columns:224px 1fr;padding:22px}
}
@media(max-width:600px){
  .vn-remote-shot{aspect-ratio:4/3;border-radius:18px}
  .vn-remote-side{grid-template-columns:1fr;gap:18px;padding:18px}
  .vn-phone{grid-row:auto;width:min(100%,262px);margin:0 auto}
  .vn-remote-note{grid-column:1}
  .vn-scr-sum b{font-size:22px}
}
@media(prefers-reduced-motion:reduce){.vn-dot{animation:none}}
