/* ============================================================
   0. ШРИФТОВЕ — местни копия, не Google Fonts
   ============================================================
   Дотук <head> дърпаше един <link> към fonts.googleapis.com. Той е
   render-blocking и на трети домейн: браузърът не рисува НИЩО, докато не
   мине DNS + TLS към googleapis, не свали CSS-а, и чак тогава научи адресите
   на самите шрифтове на ЧЕТВЪРТИ домейн (gstatic). Четири последователни
   отивания-връщания преди първата буква — това правеше FCP 3.9 s на телефон.

   Сега файловете са в static/assets/fonts/ и се четат от същия домейн, от
   вече отворената връзка, докато styles.css още се сваля.

   Файловете са ПРОМЕНЛИВИ (variable) — един файл носи всички тегла, затова
   `font-weight: 400 700` вместо по един файл на тегло.

   Свалени са само подмножествата `cyrillic` и `latin`. Сайтът е на
   български; `latin-ext`, `greek` и `vietnamese` не се ползват от нито един
   знак и само тежаха. `unicode-range` пази това: браузърът сваля латинския
   файл само ако на страницата наистина има латиница.

   `font-display: swap` значи, че текстът се вижда веднага със системния
   шрифт и се пребоядисва, щом Comfortaa/Nunito пристигне. Без него има
   период, в който текстът е невидим.

   Ако някога трябва да се обновят: bin/get-fonts.sh ги тегли наново.
   ============================================================ */
/* Caveat — cyrillic */
@font-face {
  font-family: 'Caveat';
  font-weight: 500 600;
  font-display: swap;
  src: url(/assets/fonts/caveat-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Caveat — latin */
@font-face {
  font-family: 'Caveat';
  font-weight: 500 600;
  font-display: swap;
  src: url(/assets/fonts/caveat-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;
}
/* Comfortaa — cyrillic */
@font-face {
  font-family: 'Comfortaa';
  font-weight: 500 700;
  font-display: swap;
  src: url(/assets/fonts/comfortaa-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Comfortaa — latin */
@font-face {
  font-family: 'Comfortaa';
  font-weight: 500 700;
  font-display: swap;
  src: url(/assets/fonts/comfortaa-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;
}
/* Nunito — cyrillic */
@font-face {
  font-family: 'Nunito';
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/nunito-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Nunito — latin */
@font-face {
  font-family: 'Nunito';
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/nunito-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;
}

/* ============================================================
   1. ТОКЕНИ — design/design-system/palette
   ============================================================ */
:root{
  /* Navy — primary ink */
  --zv-navy-900:#0f1a5e;
  --zv-navy-800:#172a7a;
  --zv-navy-700:#26379a;
  --zv-navy-400:#7c88c9;
  --zv-navy-100:#dde1f2;
  /* Teal / mint — calm accent */
  --zv-teal-900:#1e5f72;
  --zv-teal-700:#3d7d7d;
  --zv-teal-600:#4a8b8b;
  --zv-teal-300:#afcfc4;
  --zv-teal-200:#c6dad2;
  --zv-teal-100:#e1e9e3;
  /* Lilac — secondary theme */
  --zv-purple-800:#5c3ba5;
  --zv-purple-600:#7b4faf;
  --zv-purple-300:#c0a8d8;
  --zv-purple-200:#e1d2e2;
  --zv-purple-100:#e5daea;
  /* Sage — pill family */
  --zv-sage-300:#c6d2a6;
  --zv-sage-200:#dce3c6;
  --zv-sage-100:#eef1e2;
  /* Amber & yellow — highlight */
  --zv-amber-700:#d99320;
  --zv-yellow-500:#f0a92e;
  --zv-yellow-400:#f9c24c;
  --zv-yellow-200:#fde3a8;
  /* Play accents — само за снимки и илюстрация, никога за UI фон */
  --zv-play-red:#d0342c;
  --zv-play-lime:#a8c93a;
  --zv-play-forest:#2f5f33;
  --zv-play-blue:#1e4fa0;
  /* Neutrals — warm, never grey */
  --zv-paper:#faf7f2;
  --zv-white:#ffffff;
  --zv-stone-100:#f3f2ec;
  --zv-stone-200:#e6e4dc;
  --zv-stone-400:#a9a69c;
  --zv-stone-600:#6b6a63;
  --zv-ink:#1c1c22;

  /* Semantic aliases */
  --text-display:var(--zv-navy-800);
  --text-display-warm:var(--zv-amber-700);
  --text-body:var(--zv-navy-900);
  --text-muted:var(--zv-stone-600);
  --text-script:var(--zv-teal-600);
  --text-link:var(--zv-teal-700);
  --surface-page:var(--zv-paper);
  --surface-card:var(--zv-stone-100);
  --surface-card-mint:var(--zv-teal-100);
  --surface-card-lilac:var(--zv-purple-100);
  --surface-pill:var(--zv-sage-200);
  --border-soft:var(--zv-stone-200);
  --accent-primary:var(--zv-teal-600);
  --accent-secondary:var(--zv-purple-600);
  --accent-highlight:var(--zv-yellow-400);
  --focus-ring:var(--zv-teal-600);
  /* Фонът под лайтбокса. Ink, а не navy: снимката трябва да се чете в
     собствените си цветове, а мастилото на бранда ги оцветяваше. */
  --surface-overlay:var(--zv-ink);

  /* Типография */
  --font-display:"Comfortaa","Nunito",system-ui,sans-serif;
  --font-body:"Nunito",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-script:"Caveat","Comfortaa",cursive;

  /* Ритъм */
  --wrap:1120px;
  --r-sm:12px;
  --r-md:18px;
  --r-lg:26px;
  --r-xl:34px;

  /* Формата на връхчето на балончето — виж .worry::after. Стои тук, а не
     в самото правило, защото се пише два пъти (с префикс за Safari). */
  --worry-tail:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 20'%3E%3Cpath d='M0 0H22L7.04 17Q4.4 20 3.54 16.09Z' fill='black'/%3E%3C/svg%3E");
}

/* ============================================================
   2. ОСНОВА
   ============================================================ */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--surface-page);
  color:var(--text-body);
  font-family:var(--font-body);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;height:auto}
a{color:var(--text-link);text-decoration-thickness:1px;text-underline-offset:3px}
h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.22;margin:0;letter-spacing:-.005em}
h1{font-size:clamp(2rem,5.4vw,3.15rem);color:var(--text-display)}
h2{font-size:clamp(1.55rem,3.6vw,2.15rem);color:var(--text-display-warm)}
h3{font-size:1.1rem;font-weight:600;color:var(--text-display)}
p{margin:0 0 1rem}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 22px}
.narrow{max-width:680px}
section{padding:76px 0}
.lede{color:var(--text-muted);font-size:1.05rem;max-width:60ch}
.script{font-family:var(--font-script);font-size:clamp(1.5rem,3.4vw,1.95rem);
  color:var(--text-script);line-height:1;margin:0 0 6px;font-weight:600}
.sec-head{margin-bottom:34px}
:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-9999px;top:0;background:var(--zv-navy-800);color:#fff;
  padding:10px 16px;border-radius:0 0 var(--r-sm) 0;z-index:99}
.skip:focus{left:0}

/* Звездичка — мотивът от логото */
.star{width:1em;height:1em;flex:none;color:var(--accent-highlight)}

/* ============================================================
   3. БУТОНИ
   ============================================================ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:var(--accent-primary);color:#fff;
  padding:13px 26px;border-radius:999px;font-weight:700;font-size:1rem;
  font-family:var(--font-body);text-decoration:none;border:0;cursor:pointer;
  transition:background .15s ease,transform .15s ease}
.btn:hover{background:var(--zv-teal-900);transform:translateY(-1px)}
.btn-ghost{background:transparent;color:var(--zv-teal-700);
  box-shadow:inset 0 0 0 2px var(--zv-teal-300)}
.btn-ghost:hover{background:var(--zv-teal-100);color:var(--zv-teal-900)}
.btn-amber{background:var(--zv-amber-700)}
.btn-amber:hover{background:var(--zv-yellow-500)}

/* ============================================================
   4. ХЕДЪР
   ============================================================ */
.top{position:sticky;top:0;z-index:50;background:rgba(250,247,242,.92);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--border-soft)}
.top .wrap{display:flex;align-items:center;gap:20px;min-height:74px;justify-content:space-between}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand img{height:40px;width:auto}
.brand b{display:none}
.nav{display:none;gap:24px;font-size:.95rem;font-weight:600}
.nav a{color:var(--text-muted);text-decoration:none}
.nav a:hover{color:var(--zv-teal-700)}
.top .btn{padding:11px 22px;font-size:.95rem}

/* --- Меню за телефон (под 980px) ---------------------------------
   Лентата на телефона събира или поканата, или менюто, но не и двете.
   Затова .top-cta слиза долу в списъка като .nav-cta — формата
   #zapisvane така или иначе е на всяка страница. */
.menu-btn{display:inline-flex;align-items:center;gap:9px;
  background:transparent;border:0;cursor:pointer;padding:9px 4px;
  font:600 .95rem/1 var(--font-body);color:var(--text-display)}
.menu-ico{display:grid;gap:4px;width:22px}
.menu-ico i{display:block;height:2px;border-radius:2px;background:currentColor;
  transition:transform .18s ease,opacity .18s ease}
.menu-btn[aria-expanded="true"] .menu-ico i:nth-child(1){transform:translateY(6px) rotate(45deg)}
.menu-btn[aria-expanded="true"] .menu-ico i:nth-child(2){opacity:0}
.menu-btn[aria-expanded="true"] .menu-ico i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

@media(max-width:979px){
  .top-cta{display:none}
  /* Панелът пада под лентата. left/right:0 се мерят спрямо padding box-а
     на .wrap, тъй че сам стига до ръба — без отрицателни полета. 22px
     отстрани повтарят падинга на .wrap, за да се подравни текстът. */
  .top .wrap{position:relative}
  .nav[data-open]{display:flex;flex-direction:column;gap:2px;
    position:absolute;left:0;right:0;top:100%;
    padding:10px 22px 18px;
    background:var(--surface-page);border-bottom:1px solid var(--border-soft);
    box-shadow:0 12px 24px -12px var(--zv-stone-400)}
  .nav[data-open] a{padding:13px 2px;color:var(--text-display);font-size:1.05rem;
    border-bottom:1px solid var(--border-soft)}
  .nav[data-open] a:last-of-type{border-bottom:0}
  .nav[data-open] .nav-cta{margin-top:12px;color:var(--zv-white);border-bottom:0;
    padding:13px 26px;font-size:1rem}
}

@media(min-width:980px){
  .nav{display:flex}
  .menu-btn,.nav-cta{display:none}
}

/* ============================================================
   5. ХИРО
   ============================================================ */
.hero{padding:56px 0 20px;position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;top:-180px;right:-140px;width:460px;height:460px;
  background:var(--zv-teal-100);border-radius:50%;z-index:0}
.hero .wrap{position:relative;z-index:1}
.hero-grid{display:grid;gap:38px;grid-template-columns:1fr;align-items:center}
@media(min-width:900px){.hero-grid{grid-template-columns:1.05fr .95fr;gap:56px}}
.hero h1{margin-bottom:16px}
.hero .lede{margin-bottom:28px}
.cta-row{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.cta-row .tel{font-size:.97rem;color:var(--text-muted);text-decoration:none;font-weight:600}
.cta-row .tel:hover{color:var(--zv-teal-700)}

/* Тревогите — реплики на родители, като балончета */
.worries{display:flex;flex-direction:column;gap:12px;margin:0}
.worry{background:var(--zv-white);border-radius:var(--r-lg);
  padding:16px 20px;box-shadow:0 2px 0 var(--border-soft);position:relative;
  font-family:var(--font-display);font-weight:500;font-size:1.02rem;line-height:1.45;
  color:var(--zv-navy-800)}
/* Връхчето — триъгълник, изрязан с clip-path, а НЕ завъртян квадрат.
   Завъртян на 45° квадрат дава връх от точно 90°: тъп и къс. С clip-path
   върхът се избира свободно — тук е на 20% от широчината, тоест ~50°, и
   сочи надолу-наляво, както говорно балонче.
     • `bottom` е (височината − 1): 1 пиксел от основата остава ПОД
       балончето, за да няма шев по линията на допиране.
     • `left` е след заобления ъгъл. Радиусът е --r-lg (26px); на 26px
       основата лежи върху кривата и връхчето изглежда откъснато.
     • `background:inherit` взема цвета на балончето — иначе всеки цвят
       по-долу трябва да се повтаря и за ::after.
     • 20px връхче се побира, защото между балончетата има 28px: `gap:12px`
       плюс глобалния `p{margin:0 0 1rem}` — балончето е <p>. Махнеш ли този
       margin, следващото балонче застъпва върха (то е по-късен съсед и се
       рисува отгоре). Тогава вдигни `gap`.

   Самият край е заоблен с МАСКА, не с clip-path: clip-path реже само по
   права и върхът излиза като игла. Пътят в маската е същият триъгълник, но
   последният ъгъл е квадратична крива — контролната точка е върхът (4.4 20),
   а краищата ѝ лежат на двете страни, тъй че кривата е допирателна към тях и
   преходът не се вижда. Числата са сметнати, не на око: краищата са на 4
   единици от върха по всяка страна.

   clip-path ОСТАВА и под маската — той е резервата за браузър без `mask`
   (там върхът е остър, както беше). Двете форми са една и съща геометрия,
   затова наслагването им не променя нищо там, където маската работи. */
.worry::after{content:"";position:absolute;left:30px;bottom:-19px;width:22px;height:20px;
  background:inherit;clip-path:polygon(0 0,100% 0,20% 100%);
  -webkit-mask:var(--worry-tail) no-repeat 0 0/100% 100%;
  mask:var(--worry-tail) no-repeat 0 0/100% 100%}
.worry:nth-child(1){background:var(--surface-card-mint);margin-right:14px}
.worry:nth-child(2){background:var(--surface-card-lilac);margin-left:22px}
.worry:nth-child(3){background:var(--zv-sage-100);margin-right:26px}
.worry:nth-child(4){background:var(--zv-yellow-200);margin-left:10px}

.hero-shot{margin:44px 0 0;border-radius:var(--r-xl);overflow:hidden;
  box-shadow:0 1px 0 var(--border-soft)}
.hero-shot img{width:100%;aspect-ratio:16/9;object-fit:cover}

/* Лентата с фактите под хирото */
.facts{display:grid;gap:14px;grid-template-columns:1fr;margin-top:26px}
@media(min-width:720px){.facts{grid-template-columns:repeat(3,1fr)}}
.fact{display:flex;gap:12px;align-items:flex-start;
  background:var(--surface-card);border-radius:var(--r-md);padding:16px 18px}
.fact .star{margin-top:4px;font-size:1.15rem}
.fact b{display:block;font-family:var(--font-display);color:var(--zv-navy-800);font-size:.98rem}
.fact span{font-size:.9rem;color:var(--text-muted);line-height:1.5}

/* ============================================================
   6. УСЛУГИ
   ============================================================ */
.grid{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:680px){.grid{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.grid{grid-template-columns:repeat(3,1fr)}}
.svc{background:var(--zv-white);border-radius:var(--r-lg);overflow:hidden;
  display:flex;flex-direction:column;box-shadow:0 1px 0 var(--border-soft);
  position:relative;transition:box-shadow .15s ease,transform .15s ease}
/* Цялата карта е кликаема. Псевдоелементът се разпъва върху нея, вместо
   <article> да се обвие в <a> — така името на връзката остава заглавието
   на услугата, а не целият текст на картата. overflow:hidden отгоре не
   реже слоя, защото той стои вътре в границите ѝ.
   ::before, а НЕ ::after — ::after вече носи стрелката „→“ по-надолу
   (секция 15) и щеше да отмени това правило. */
.svc h3 a::before{content:"";position:absolute;inset:0;border-radius:inherit;z-index:1}
.svc:hover{box-shadow:0 10px 20px -14px var(--zv-stone-400);transform:translateY(-2px)}
.svc:has(a:focus-visible){outline:3px solid var(--focus-ring);outline-offset:3px}
.svc h3 a:focus-visible{outline:0}
.svc figure{margin:0;background:var(--surface-card)}
.svc figure img{width:100%;aspect-ratio:4/3;object-fit:cover}
.svc-body{padding:22px 24px 24px;display:flex;flex-direction:column;flex:1}
.svc h3{margin-bottom:8px}
.svc p{font-size:.96rem;color:var(--text-muted);margin-bottom:16px}
.svc .age{margin-top:auto;align-self:flex-start;display:inline-block;font-size:.85rem;
  font-weight:700;color:var(--zv-navy-800);background:var(--surface-pill);
  border-radius:999px;padding:5px 14px}
/* по един уош на карта, редуват се */
.svc:nth-child(3n+1) figure{background:var(--surface-card-mint)}
.svc:nth-child(3n+2) figure{background:var(--surface-card-lilac)}
.svc:nth-child(3n+3) figure{background:var(--zv-sage-100)}

/* ============================================================
   7. ДИАГНОСТИКА — тъмен navy панел
   ============================================================ */
.diag{background:var(--zv-navy-800);color:var(--zv-navy-100);
  border-radius:var(--r-xl);padding:40px 32px;overflow:hidden}
@media(min-width:900px){.diag{padding:52px}}
.diag-grid{display:grid;gap:34px;grid-template-columns:1fr;align-items:stretch}
@media(min-width:900px){.diag-grid{grid-template-columns:1.15fr .85fr;gap:48px}}
.diag .script{color:var(--zv-teal-300)}
.diag h2{color:#fff;margin-bottom:14px}
.diag p{color:var(--zv-navy-100)}
.diag h3{color:#fff}
.diag-shot{border-radius:var(--r-lg);overflow:hidden;min-height:260px}
.diag-shot img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover}
@media(min-width:900px){.diag-shot img{aspect-ratio:auto}}
.tests{display:grid;gap:16px;grid-template-columns:1fr;margin:26px 0 24px}
@media(min-width:620px){.tests{grid-template-columns:1fr 1fr}}
.test{background:rgba(255,255,255,.08);border-radius:var(--r-md);padding:20px 22px}
.test h3{font-size:1.02rem;margin-bottom:6px}
.test p{margin:0;font-size:.92rem;color:var(--zv-teal-300)}

/* ============================================================
   8. ПЪРВАТА СРЕЩА — мента
   ============================================================ */
.steps-panel{background:var(--surface-card-mint);border-radius:var(--r-xl);padding:40px 28px}
@media(min-width:900px){.steps-panel{padding:52px}}
.steps-panel h2{color:var(--zv-navy-800)}
.steps{display:grid;gap:20px;grid-template-columns:1fr;counter-reset:step}
@media(min-width:760px){.steps{grid-template-columns:repeat(4,1fr);gap:22px}}
.step{background:var(--zv-white);border-radius:var(--r-lg);padding:24px 22px}
.step b{display:flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:50%;background:var(--accent-highlight);
  color:var(--zv-navy-900);font-family:var(--font-display);font-weight:700;
  font-size:1.15rem;margin-bottom:14px}
.step h3{margin-bottom:6px;font-size:1.05rem}
.step p{margin:0;color:var(--text-muted);font-size:.93rem}

/* ============================================================
   9. ЗА ПОЛЯ
   ============================================================ */
.about{display:grid;gap:32px;grid-template-columns:1fr;align-items:start}
@media(min-width:860px){.about{grid-template-columns:320px 1fr;gap:52px}}
.about-photo{border-radius:var(--r-xl);overflow:hidden;background:var(--surface-card-lilac)}
.about-photo img{width:100%;aspect-ratio:3/4;object-fit:cover}
.role{color:var(--text-muted);font-size:.97rem;font-weight:600;margin-bottom:18px}
.about h2{margin-bottom:4px}
/* Ползва .tags/.tag от статиите — само отстоянието е различно тук. */
.about .tags{margin:0 0 20px}

/* ============================================================
   10. ГАЛЕРИЯ
   ============================================================ */
.gal{display:grid;gap:12px;grid-template-columns:repeat(2,1fr)}
@media(min-width:720px){.gal{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1000px){.gal{grid-template-columns:repeat(5,1fr)}}
.gal img{border-radius:var(--r-md);aspect-ratio:3/4;object-fit:cover;width:100%;
  background:var(--surface-card)}
.gal a{display:block;border-radius:var(--r-md);overflow:hidden}
/* Приближаването е само за показалец. На тъч екран Safari брои допир, който
   мени рисунъка през :hover, за „посочване“ и НЕ пуска click — трябва втори
   допир. Точно това караше плочката да иска два допира, след като лайтбоксът
   веднъж е бил отварян: залепналият hover от предишния допир се изчистваше с
   първия. @media(hover:hover) маха правилото там, където няма показалец. */
.gal img{transition:transform .25s ease}
@media(hover:hover){
  .gal a:hover img{transform:scale(1.04)}
}

/* --- Лайтбокс ---------------------------------------------------------
   Слоят се прави от site.js чак при първо отваряне и стои в <body>.
   Фонът е navy, а не черно — мастилото на бранда, само с прозрачност.
   `touch-action:none` е нужно, за да стигат до скрипта плъзганията
   встрани; без него браузърът ги смята за скрол и не пуска touchmove. */
/* Затвореният слой трябва да е НАИСТИНА махнат от пътя. Само `opacity:0`
   не стига — прозрачният правоъгълник продължава да лежи върху цялата
   страница и да поглъща щраквания и плъзгания, тъй че след затваряне нищо
   не се скролва. `visibility:hidden` изважда и трите бутона от реда на
   табулацията; преминава стъпаловидно чак в края на прехода, затова
   изчезването пак се вижда как прелива. */
.lb{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  background:var(--surface-overlay);
  padding:clamp(10px,2.5vw,28px);touch-action:none;
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .18s ease,visibility .18s ease}
.lb[data-open]{opacity:1;visibility:visible;pointer-events:auto}
.lb-fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:14px;
  max-width:100%;max-height:100%}
/* Без фон: при вързана max-height кутията остава по-широка от снимката и
   `contain` би оставил видими ленти отстрани. Докато файлът се декодира,
   [data-loading] и без това крие всичко. */
.lb-img{max-width:100%;max-height:calc(100dvh - 150px);width:auto;border-radius:var(--r-md);
  object-fit:contain;
  transition:opacity .18s ease,transform .18s ease}
/* Докато следващата снимка се декодира, старата не бива да стои — иначе
   при бързо щракане се вижда чужд кадър под новия надпис. */
.lb-img[data-loading]{opacity:0}
.lb-cap{margin:0;color:var(--zv-white);font-size:.95rem;line-height:1.45;
  text-align:center;max-width:56ch}
.lb-count{display:block;margin-top:4px;color:var(--zv-stone-400);font-size:.85rem}

.lb-btn{position:absolute;display:flex;align-items:center;justify-content:center;
  width:46px;height:46px;padding:0;border:0;border-radius:999px;cursor:pointer;
  background:color-mix(in srgb,var(--zv-white) 16%,transparent);color:var(--zv-white);
  transition:background .15s ease}
.lb-btn:hover{background:color-mix(in srgb,var(--zv-white) 30%,transparent)}
.lb-btn svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
.lb-close{top:14px;right:14px}
.lb-prev{left:14px;top:50%;transform:translateY(-50%)}
.lb-next{right:14px;top:50%;transform:translateY(-50%)}
/* Един кадър галерия — стрелките нямат работа. */
.lb[data-single] .lb-prev,.lb[data-single] .lb-next{display:none}
/* На телефон снимката е от ръб до ръб: отстъпът около слоя пада, ъглите се
   изправят (заоблен ръб върху ръба на екрана изглежда като грешка) и
   надписът ляга ВЪРХУ снимката. Отдолу той изяждаше 130 пиксела височина, а
   заради тавана върху `max-height` снимката така и не стигаше до ръбовете.
   Сега таванът е целият екран и широчината е тази, която връзва.
   Четимостта я пази преливка от navy — плътна там, където е текстът, и
   нула нагоре, за да не разсече снимката с права линия.
   Стрелките лягат върху самата снимка — на 390 пиксела широчина няма къде
   другаде. */
@media(max-width:600px){
  .lb{padding:0}
  .lb-fig{width:100%;gap:0;position:relative}
  .lb-img{width:100%;border-radius:0;max-height:100dvh}
  .lb-cap{position:absolute;left:0;right:0;bottom:0;max-width:none;
    padding:44px 16px 14px;text-align:left;
    background:linear-gradient(to top,
      color-mix(in srgb,var(--surface-overlay) 92%,transparent),
      color-mix(in srgb,var(--surface-overlay) 60%,transparent) 45%,
      transparent)}
  .lb-count{margin-top:2px;color:var(--zv-stone-200)}
  .lb-btn{width:42px;height:42px}
  .lb-prev{left:6px}
  .lb-next{right:6px}
}

/* ============================================================
   11. МНЕНИЯ — лилав уош
   ============================================================ */
.quotes{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:760px){.quotes{grid-template-columns:1fr 1fr}}
.quote{background:var(--surface-card-lilac);border-radius:var(--r-lg);
  padding:28px 30px;margin:0}
.quote .star{font-size:1.6rem;color:var(--accent-secondary);margin-bottom:12px}
.quote p{font-size:1.02rem;color:var(--zv-navy-800);margin-bottom:14px;line-height:1.6}
.quote figcaption{font-size:.92rem;font-weight:700;color:var(--zv-purple-800)}

/* ============================================================
   12. ВЪПРОСИ
   ============================================================ */
details{background:var(--zv-white);border-radius:var(--r-md);margin-bottom:12px;
  box-shadow:0 1px 0 var(--border-soft)}
summary{cursor:pointer;padding:18px 22px;font-weight:700;list-style:none;
  display:flex;justify-content:space-between;gap:16px;align-items:center;
  font-family:var(--font-display);color:var(--zv-navy-800);font-size:1rem}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";color:var(--zv-amber-700);font-size:1.5rem;line-height:1;flex:none}
details[open] summary::after{content:"–"}
details p{padding:0 22px 20px;margin:0;color:var(--text-muted);font-size:.96rem}

/* ============================================================
   13. КОНТАКТИ И ФОРМА
   ============================================================ */
.contact{display:grid;gap:28px;grid-template-columns:1fr}
@media(min-width:900px){.contact{grid-template-columns:1fr 1fr;gap:36px}}
.info{background:var(--surface-card-mint);border-radius:var(--r-xl);padding:34px 30px}
.info h2{color:var(--zv-navy-800);margin-bottom:22px}
.detail{margin-bottom:18px}
.detail h3{font-family:var(--font-body);font-size:.8rem;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--zv-teal-900);margin-bottom:2px}
.detail p{margin:0;font-weight:600}
.map{border-radius:var(--r-md);overflow:hidden;margin-top:24px;background:var(--zv-white)}
.map iframe{display:block;width:100%;height:230px;border:0}

.form-card{background:var(--zv-white);border-radius:var(--r-xl);padding:34px 30px;
  box-shadow:0 1px 0 var(--border-soft)}
.form-card h2{color:var(--text-display-warm);margin-bottom:6px}
.form-card>p{color:var(--text-muted);font-size:.97rem;margin-bottom:22px}
label{display:block;font-size:.88rem;font-weight:700;margin-bottom:6px;color:var(--zv-navy-800)}
input,textarea,select{width:100%;padding:13px 15px;margin-bottom:16px;
  border:1.5px solid var(--border-soft);border-radius:var(--r-sm);
  font-family:var(--font-body);font-size:1rem;background:var(--zv-paper);color:var(--text-body)}
textarea{min-height:104px;resize:vertical}
input:focus,textarea:focus,select:focus{border-color:var(--accent-primary);outline:none;
  box-shadow:0 0 0 3px rgba(74,139,139,.18)}
.form-card .btn{width:100%}
.err{color:var(--zv-play-red,#d0342c);font-size:.87rem;margin:-11px 0 15px;display:none;font-weight:600}
.hint{font-size:.88rem;color:var(--text-muted);margin:14px 0 0}

/* ============================================================
   14. ФУТЪР
   ============================================================ */
footer{background:var(--zv-navy-800);color:var(--zv-navy-100);padding:44px 0 40px;margin-top:20px}
footer a{color:#fff}
footer img{height:44px;width:auto;margin-bottom:16px}
.f-row{display:flex;flex-wrap:wrap;gap:14px 32px;justify-content:space-between;
  align-items:flex-end;font-size:.92rem}
.f-row p{margin:0}
.f-cap{text-transform:uppercase;letter-spacing:.12em;font-size:.75rem;
  font-weight:700;color:var(--zv-navy-400);margin-bottom:6px}

/* ============================================================
   14б. ПОЯВЯВАНЕ ПРИ СКРОЛ
   ============================================================
   Скриването виси на .anim върху <html>, което слага вграденият ред в
   <head>. Без JavaScript класът липсва, тъй че съдържанието се вижда
   както винаги — нищо не остава празно, ако скриптът не се зареди.
   Затова е вграден, а не в site.js: site.js е defer и до изпълнението му
   вече има изрисуван кадър, тъй че блоковете щяха да мигнат и да изчезнат. */
.anim [data-reveal],
.anim [data-reveal-group] > *{
  opacity:0;transform:translateY(16px);
  transition:opacity .5s ease,transform .5s ease}
.anim [data-reveal].is-in,
.anim [data-reveal-group].is-in > *{opacity:1;transform:none}

/* Плочките в един ред влизат една след друга. Спира на шестата — повече
   и последната карта чака цяла секунда. */
.anim [data-reveal-group].is-in > :nth-child(2){transition-delay:.07s}
.anim [data-reveal-group].is-in > :nth-child(3){transition-delay:.14s}
.anim [data-reveal-group].is-in > :nth-child(4){transition-delay:.21s}
.anim [data-reveal-group].is-in > :nth-child(5){transition-delay:.28s}
.anim [data-reveal-group].is-in > :nth-child(n+6){transition-delay:.35s}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .btn{transition:none}
  .svc{transition:none}
  .gal img{transition:none}
  .gal a:hover img{transform:none}
  .lb,.lb-img,.lb-btn{transition:none}
  /* Появяването се изключва изцяло — не се забавя, а просто го няма. */
  .anim [data-reveal],
  .anim [data-reveal-group] > *{opacity:1;transform:none;transition:none}
}

/* ============================================================
   15. ВЪТРЕШНИ СТРАНИЦИ — трошки, проза, свързани услуги
   ============================================================ */
.crumbs{font-size:.85rem;color:var(--text-muted);padding-top:20px}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}
.crumbs li::after{content:"›";margin-left:6px;color:var(--zv-stone-400)}
.crumbs li:last-child::after{content:""}
.crumbs a{color:var(--text-muted)}
.crumbs [aria-current]{color:var(--zv-navy-800);font-weight:600}

.page-hero{padding:34px 0 8px}
.page-hero h1{margin-bottom:16px}
.page-hero .lede{margin-bottom:24px;font-size:1.1rem}
.page-shot{margin:30px 0 0;border-radius:var(--r-xl);overflow:hidden}
.page-shot img{width:100%;aspect-ratio:16/9;object-fit:cover}

.layout{display:grid;gap:40px;grid-template-columns:1fr;align-items:start}
@media(min-width:980px){.layout{grid-template-columns:1fr 380px;gap:52px}}
.aside{position:sticky;top:98px;display:grid;gap:20px}

.prose h2{margin:44px 0 14px}
.prose h2:first-child{margin-top:0}
.prose h3{margin:26px 0 8px}
.prose p{color:var(--text-body)}
.prose ul{margin:0 0 20px;padding:0;list-style:none;display:grid;gap:10px}
.prose ul li{display:flex;gap:12px;align-items:flex-start;color:var(--text-body)}
.prose ul li .star{margin-top:6px;font-size:.9rem}
.prose ol{margin:0 0 20px;padding-left:22px;display:grid;gap:8px}
.prose .note{background:var(--surface-card-mint);border-radius:var(--r-lg);
  padding:22px 26px;margin:28px 0}
.prose .note p:last-child{margin:0}
.prose .note h3{margin-top:0}

.pricebar{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 26px}
.pricebar span{background:var(--surface-pill);color:var(--zv-navy-800);
  border-radius:999px;padding:6px 16px;font-size:.9rem;font-weight:700}

.related{display:grid;gap:14px;grid-template-columns:1fr;margin-top:8px}
@media(min-width:680px){.related{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.related{grid-template-columns:repeat(3,1fr)}}
.related a{background:var(--zv-white);border-radius:var(--r-md);padding:18px 20px;
  text-decoration:none;display:block;box-shadow:0 1px 0 var(--border-soft)}
.related a:hover{background:var(--surface-card-mint)}
.related b{display:block;font-family:var(--font-display);font-weight:600;
  color:var(--zv-navy-800);margin-bottom:3px}
.related span{font-size:.88rem;color:var(--text-muted)}

/* Компактна форма в страничната колона */
.book{background:var(--zv-white);border-radius:var(--r-xl);padding:28px 26px;
  box-shadow:0 1px 0 var(--border-soft)}
.book h2{font-size:1.4rem;color:var(--text-display-warm);margin-bottom:6px}
.book>p{font-size:.94rem;color:var(--text-muted);margin-bottom:20px}
.book .btn{width:100%}
.callout{background:var(--surface-card-mint);border-radius:var(--r-xl);padding:24px 26px}
.callout h3{margin-bottom:8px}
.callout p{margin:0 0 12px;font-size:.94rem;color:var(--text-muted)}
.callout p:last-child{margin:0}
.callout a{font-weight:700}

/* Футър с колони */
.f-grid{display:grid;gap:28px;grid-template-columns:1fr;margin-bottom:30px}
@media(min-width:760px){.f-grid{grid-template-columns:1.2fr 1fr 1fr}}
.f-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:.92rem}
.f-grid a{color:var(--zv-navy-100);text-decoration:none}
.f-grid a:hover{color:#fff;text-decoration:underline}
.f-grid p{color:var(--zv-navy-100);font-size:.92rem}

/* Заглавие-връзка в картите на услугите */
.svc h3 a{color:inherit;text-decoration:none}
.svc h3 a::after{content:" →";color:var(--accent-primary);white-space:nowrap}
.svc h3 a:hover{color:var(--zv-teal-700)}

/* ============================================================
   16. СТАТИИ — карти, мета, етикети
   ============================================================ */
.cards{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:680px){.cards{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.cards{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--zv-white);border-radius:var(--r-lg);overflow:hidden;
  text-decoration:none;display:flex;flex-direction:column;
  box-shadow:0 1px 0 var(--border-soft);transition:transform .15s ease}
.card:hover{transform:translateY(-2px)}
.card img{width:100%;aspect-ratio:3/2;object-fit:cover;background:var(--surface-card)}
.card-body{padding:20px 22px 22px;display:flex;flex-direction:column;flex:1;gap:6px}
.card-kicker{font-size:.76rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--zv-teal-700)}
.card b{font-family:var(--font-display);font-weight:600;font-size:1.06rem;
  line-height:1.32;color:var(--zv-navy-800)}
.card-desc{font-size:.92rem;color:var(--text-muted);line-height:1.55}
.card-meta{margin-top:auto;padding-top:10px;font-size:.84rem;color:var(--zv-stone-400)}

.artmeta{font-size:.9rem;color:var(--text-muted);margin:0 0 18px}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin:34px 0 0}
.tag{background:var(--surface-pill);color:var(--zv-navy-800);border-radius:999px;
  padding:5px 14px;font-size:.84rem;font-weight:700}

.prose blockquote{margin:26px 0;padding:4px 0 4px 22px;
  border-left:3px solid var(--zv-teal-300)}
.prose blockquote p{margin:0;font-family:var(--font-display);font-weight:500;
  font-size:1.08rem;line-height:1.5;color:var(--zv-teal-900)}
.prose hr{border:0;border-top:1px solid var(--border-soft);margin:34px 0}
.prose h4{font-family:var(--font-display);font-weight:600;font-size:1rem;
  color:var(--zv-navy-800);margin:22px 0 6px}
