/* zubla.ru — new design (2026-11). Own visual language: Onest, zubla blue for brand and links,
   coral for the booking action, mint for verified facts; soft cards with shadow, rounded pills,
   search first. One file, no framework, mobile first (720px and 1024px steps). */
@font-face { font-family: "Onest"; src: url(/v2/fonts/onest-400.woff2) format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Onest"; src: url(/v2/fonts/onest-600.woff2) format("woff2"); font-weight: 500 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Onest"; src: url(/v2/fonts/onest-700.woff2) format("woff2"); font-weight: 700 800; font-style: normal; font-display: swap; }

:root {
  --z-ink: #12213a; --z-muted: #5b6b80; --z-faint: #8a97a8; --z-line: #e3e9f0;
  --z-bg: #ffffff; --z-soft: #f2f7fb; --z-soft-2: #e8f2f9;
  --z-brand: #0b7bba; --z-brand-dark: #075a8a; --z-brand-tint: #dcecf7;
  --z-cta: #f2603f; --z-cta-dark: #d64a2b; --z-cta-tint: #fdebe6;
  --z-mint: #138a66; --z-mint-tint: #e3f5ee;
  --z-star: #f2a516;
  --z-r: 18px; --z-r-sm: 12px;
  --z-shadow: 0 1px 2px rgba(18, 33, 58, .04), 0 6px 20px rgba(18, 33, 58, .06);
  --z-f: "Onest", "Segoe UI", Roboto, Arial, sans-serif;
  --z-w: 1180px;
  --z-gl: max(16px, env(safe-area-inset-left, 0px));
  --z-gr: max(16px, env(safe-area-inset-right, 0px));
  color-scheme: light;
}
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 76px; }
body { margin: 0; background: var(--z-bg); color: var(--z-ink); font: 16px/1.55 var(--z-f); }
img { max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; color: inherit; }
a { color: var(--z-brand); text-decoration: none; }
a:hover { color: var(--z-brand-dark); text-decoration: underline; text-underline-offset: 3px; }
:focus-visible { outline: 3px solid #ffbf47; outline-offset: 2px; }
h1, h2, h3, h4 { margin: 0; text-wrap: balance; letter-spacing: -.015em; }
h1 { font-size: 28px; line-height: 1.15; font-weight: 800; }
h2 { font-size: 22px; line-height: 1.2; font-weight: 700; }
h3 { font-size: 17px; line-height: 1.3; font-weight: 600; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; }
.z-ul { list-style: none; }
.z-wrap { max-width: var(--z-w); margin: 0 auto; padding-left: var(--z-gl); padding-right: var(--z-gr); }
.z-skip { position: absolute; left: -999px; top: 8px; z-index: 50; background: #fff; padding: 8px 12px; border-radius: 10px; }
.z-skip:focus { left: 8px; }
.z-muted { color: var(--z-muted); }
.z-small { font-size: 14px; color: var(--z-muted); }
.z-nowrap { white-space: nowrap; }

/* ---------- top bar ---------- */
.z-top { position: sticky; top: 0; z-index: 30; background: rgba(255, 255, 255, .96); backdrop-filter: saturate(1.4) blur(8px); border-bottom: 1px solid var(--z-line); padding-top: env(safe-area-inset-top, 0px); }
.z-top__in { display: flex; align-items: center; gap: 10px; min-height: 60px; }
.z-logo { display: inline-flex; align-items: center; gap: 8px; color: var(--z-ink); font-weight: 800; font-size: 22px; letter-spacing: -.03em; }
.z-logo:hover { text-decoration: none; color: var(--z-ink); }
.z-logo__mark { width: 30px; height: 30px; border-radius: 10px; background: var(--z-brand); color: #fff; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.z-logo__mark svg { display: block; }
.z-logo b { color: var(--z-brand); font-weight: 800; }
.z-city { position: relative; }
.z-city > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; padding: 6px 12px; border-radius: 999px; background: var(--z-soft); font-size: 14px; font-weight: 500; color: var(--z-ink); white-space: nowrap; }
.z-city > summary::-webkit-details-marker { display: none; }
.z-city > summary svg { color: var(--z-brand); flex: none; }
.z-city__menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 5; min-width: 200px; background: #fff; border-radius: var(--z-r-sm); box-shadow: var(--z-shadow); padding: 6px; }
.z-city__menu a { display: block; padding: 10px 12px; border-radius: 10px; color: var(--z-ink); }
.z-city__menu a:hover, .z-city__menu a[aria-current] { background: var(--z-soft); text-decoration: none; }
.z-menu { display: none; }
.z-menu a { color: var(--z-ink); font-weight: 500; }
.z-menu a:hover { color: var(--z-brand); text-decoration: none; }
.z-menu a[aria-current] { color: var(--z-brand); }
.z-top__act { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.z-iconbtn { -webkit-appearance: none; appearance: none; width: 44px; height: 44px; border: 0; border-radius: 12px; background: transparent; color: var(--z-ink); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex: none; }
.z-iconbtn:hover { background: var(--z-soft); }
.z-iconbtn svg { display: block; }
.z-drawer { position: fixed; inset: 0; z-index: 60; background: rgba(18, 33, 58, .35); }
.z-drawer__panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(340px, 88vw); background: #fff; padding: calc(12px + env(safe-area-inset-top, 0px)) var(--z-gr) 24px 20px; overflow-y: auto; display: flex; flex-direction: column; gap: 4px; }
.z-drawer__panel a { display: flex; align-items: center; min-height: 48px; color: var(--z-ink); font-weight: 500; border-bottom: 1px solid var(--z-line); }
.z-drawer__close { align-self: flex-end; }
.z-drawer__sub { margin-top: 14px; font-size: 13px; text-transform: uppercase; letter-spacing: .06em; color: var(--z-faint); }

/* ---------- path (breadcrumbs) ---------- */
.z-path { display: flex; flex-wrap: wrap; gap: 2px 6px; padding: 14px 0 0; font-size: 13px; color: var(--z-muted); }
.z-path a { color: var(--z-muted); }
.z-path li { list-style: none; display: inline-flex; align-items: center; gap: 6px; }
.z-path li + li::before { content: ""; width: 5px; height: 5px; border-right: 1.5px solid var(--z-faint); border-top: 1.5px solid var(--z-faint); transform: rotate(45deg); margin-right: 2px; }

/* ---------- hero / page head ---------- */
.z-head { padding: 14px 0 22px; }
.z-head h1 { margin-top: 10px; }
.z-head__lead { margin-top: 10px; color: var(--z-muted); max-width: 70ch; }
/* абзац под H1 листингов (V2Lead): спокойный, мельче основного текста, чтобы список начинался на первом экране телефона */
.z-lead { font-size: 15px; line-height: 1.5; }
.z-lead__more { margin-top: 6px; font-size: 14px; color: var(--z-muted); }
.z-hero .z-lead { max-width: 62ch; }
.z-facts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.z-fact { display: inline-flex; align-items: baseline; gap: 6px; padding: 8px 14px; border-radius: 999px; background: var(--z-soft); font-size: 14px; color: var(--z-muted); }
.z-fact b { color: var(--z-ink); font-size: 16px; font-weight: 700; }
.z-fact_mint { background: var(--z-mint-tint); color: var(--z-mint); }
.z-fact_mint b { color: var(--z-mint); }
.z-hero { background: linear-gradient(180deg, var(--z-soft-2) 0%, #fff 100%); padding: 26px 0 30px; }
.z-hero h1 { font-size: 30px; max-width: 22ch; }
.z-hero__lead { margin-top: 10px; font-size: 17px; color: var(--z-muted); max-width: 52ch; }

/* ---------- search ---------- */
.z-search { margin-top: 18px; display: flex; gap: 8px; background: #fff; border-radius: 16px; box-shadow: var(--z-shadow); padding: 6px; max-width: 720px; }
.z-search__in { flex: 1; min-width: 0; border: 0; padding: 10px 12px; font-size: 16px; background: transparent; border-radius: 12px; }
.z-search__in:focus { outline: none; }
.z-search:focus-within { box-shadow: 0 0 0 3px var(--z-brand-tint), var(--z-shadow); }
.z-search__go { flex: none; }
.z-suggest { position: relative; max-width: 720px; }
.z-suggest__list { position: absolute; left: 0; right: 0; top: 6px; z-index: 20; background: #fff; border-radius: 14px; box-shadow: var(--z-shadow); padding: 6px; max-height: 60vh; overflow-y: auto; }
.z-suggest__list a { display: flex; justify-content: space-between; gap: 10px; padding: 10px 12px; border-radius: 10px; color: var(--z-ink); }
.z-suggest__list a:hover, .z-suggest__list a.is-on { background: var(--z-soft); text-decoration: none; }
.z-suggest__list small { color: var(--z-faint); }
.z-quick { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }

/* ---------- buttons, pills ---------- */
.z-btn { -webkit-appearance: none; appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 46px; padding: 0 20px; border: 0; border-radius: 14px; background: var(--z-cta); color: #fff; font-weight: 600; font-size: 16px; cursor: pointer; text-align: center; }
.z-btn:hover { background: var(--z-cta-dark); color: #fff; text-decoration: none; }
.z-btn_brand { background: var(--z-brand); }
.z-btn_brand:hover { background: var(--z-brand-dark); }
.z-btn_line { background: #fff; color: var(--z-brand); box-shadow: inset 0 0 0 1.5px var(--z-brand-tint); }
.z-btn_line:hover { background: var(--z-soft); color: var(--z-brand-dark); }
.z-btn_sm { min-height: 38px; padding: 0 14px; font-size: 14px; border-radius: 12px; }
.z-btn_wide { width: 100%; }
.z-pill { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 14px; border-radius: 999px; background: #fff; box-shadow: inset 0 0 0 1px var(--z-line); color: var(--z-ink); font-size: 14px; white-space: nowrap; }
.z-pill:hover { box-shadow: inset 0 0 0 1.5px var(--z-brand); color: var(--z-brand); text-decoration: none; }
.z-pill[aria-current], .z-pill.is-on { background: var(--z-brand); color: #fff; box-shadow: none; }
.z-pill small { color: var(--z-faint); }
.z-pill.is-on small, .z-pill[aria-current] small { color: rgba(255, 255, 255, .8); }
.z-pills { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding: 2px 2px 6px; margin: 0 -2px; }
.z-pills::-webkit-scrollbar { display: none; }
.z-pills_wrap { flex-wrap: wrap; overflow: visible; }

/* ---------- sections ---------- */
.z-sec { padding: 28px 0; }
.z-sec + .z-sec { padding-top: 6px; }
.z-band { background: var(--z-soft); }
.z-band + .z-band { padding-top: 6px; }
.z-sec__h { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.z-sec__h a { font-size: 15px; white-space: nowrap; }
.z-sec__sub { margin-top: -8px; margin-bottom: 16px; color: var(--z-muted); }
.z-grid { display: grid; gap: 14px; }
.z-card { background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 18px; }
.z-band .z-card { box-shadow: 0 1px 2px rgba(18, 33, 58, .05); }

/* ---------- toolbar over lists ---------- */
.z-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.z-bar__n { font-weight: 600; }
.z-mapbtn { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; min-height: 38px; padding: 0 14px; border-radius: 12px; border: 1px solid var(--z-line); background: #fff; color: var(--z-brand); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.z-mapbtn[aria-expanded="true"] { background: var(--z-brand-tint); border-color: var(--z-brand-tint); }
/* карта клиник списка (z.js): Яндекс.Карты грузятся только по кнопке «На карте» */
.z-lmap { margin: 0 0 16px; border-radius: var(--z-r); overflow: hidden; border: 1px solid var(--z-line); background: var(--z-soft); }
.z-lmap__box { height: 440px; }
.z-lmap__note { padding: 8px 14px; font-size: 13px; color: var(--z-muted); background: #fff; border-top: 1px solid var(--z-line); }
.z-balloon { font: 14px/1.4 var(--z-f); color: var(--z-ink); max-width: 240px; }
.z-balloon b { display: block; font-size: 15px; margin-bottom: 4px; }
.z-balloon p { margin: 0 0 6px; color: var(--z-muted); }
.z-balloon .z-btn { min-height: 34px; padding: 0 12px; font-size: 14px; }
@media (max-width: 640px) { .z-lmap__box { height: 62vh; } }
.z-sort { -webkit-appearance: none; appearance: none; min-height: 38px; padding: 0 34px 0 14px; border-radius: 12px; border: 1px solid var(--z-line); background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235b6b80' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 12px center; font-size: 14px; cursor: pointer; }

/* ---------- clinic card ---------- */
.z-clinics { display: grid; gap: 14px; }
.z-clinic { background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 16px; display: grid; gap: 12px; }
.z-clinic__top { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 12px; align-items: start; }
.z-clinic__ava { width: 56px; height: 56px; border-radius: 14px; background: var(--z-soft); object-fit: cover; display: flex; align-items: center; justify-content: center; color: var(--z-brand); font-weight: 800; font-size: 20px; overflow: hidden; }
.z-clinic__ava img { width: 100%; height: 100%; object-fit: cover; }
.z-clinic__name { font-size: 18px; font-weight: 700; line-height: 1.25; color: var(--z-ink); }
.z-clinic__name a { color: inherit; }
.z-clinic__meta { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 4px; font-size: 14px; color: var(--z-muted); }
.z-clinic__addr { font-size: 14px; color: var(--z-muted); }
.z-clinic__tags { display: flex; flex-wrap: wrap; gap: 6px; }
.z-tag { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 999px; font-size: 13px; background: var(--z-soft); color: var(--z-muted); }
.z-tag_mint { background: var(--z-mint-tint); color: var(--z-mint); }
.z-tag_brand { background: var(--z-brand-tint); color: var(--z-brand-dark); }
.z-tag_cta { background: var(--z-cta-tint); color: var(--z-cta-dark); }
.z-prices { display: grid; gap: 2px; background: var(--z-soft); border-radius: 14px; padding: 6px 12px; }
.z-prices li { list-style: none; display: flex; align-items: baseline; gap: 10px; padding: 7px 0; font-size: 15px; }
.z-prices li + li { border-top: 1px dashed var(--z-line); }
.z-prices__n { flex: 1; min-width: 0; color: var(--z-ink); }
.z-prices__p { flex: none; font-weight: 700; white-space: nowrap; }
.z-prices__old { color: var(--z-faint); text-decoration: line-through; font-weight: 400; font-size: 13px; margin-right: 4px; }
.z-prices__all { font-size: 14px; padding: 6px 0 2px; }
.z-clinic__act { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.z-clinic__act > :only-child { grid-column: 1 / -1; }

/* rating */
.z-rate { display: inline-flex; align-items: center; gap: 5px; font-size: 14px; color: var(--z-muted); white-space: nowrap; }
.z-rate__v { display: inline-flex; align-items: center; gap: 3px; padding: 1px 8px 1px 6px; border-radius: 999px; background: #fff6e0; color: #8a5a00; font-weight: 700; }
.z-rate__v svg { color: var(--z-star); }
.z-metro { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.z-metro__dot { width: 9px; height: 9px; border-radius: 50%; background: var(--z-faint); flex: none; }

/* ---------- doctor card ---------- */
.z-docs { display: grid; gap: 14px; }
.z-doc { background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 16px; display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 14px; align-items: start; }
.z-doc__ava { width: 72px; height: 72px; border-radius: 50%; background: var(--z-soft); overflow: hidden; display: flex; align-items: center; justify-content: center; color: var(--z-brand); font-weight: 800; font-size: 22px; }
.z-doc__ava img { width: 100%; height: 100%; object-fit: cover; }
.z-doc__name { font-weight: 700; font-size: 17px; line-height: 1.25; }
.z-doc__name a { color: var(--z-ink); }
.z-doc__spec { font-size: 14px; color: var(--z-muted); margin-top: 2px; }
.z-doc__facts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.z-doc__where { margin-top: 8px; font-size: 14px; color: var(--z-muted); }
.z-doc__act { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding-top: 10px; border-top: 1px solid var(--z-line); }
.z-doc__price { font-size: 15px; }
.z-doc__price b { font-size: 17px; }

/* ---------- more / pager ---------- */
.z-more { display: flex; justify-content: center; margin-top: 18px; }
.z-pager { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-top: 14px; font-size: 14px; }
.z-pager a, .z-pager span { min-width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; background: var(--z-soft); color: var(--z-ink); padding: 0 10px; }
.z-pager span[aria-current] { background: var(--z-brand); color: #fff; }

/* ---------- link lists ---------- */
.z-links { columns: 1; column-gap: 28px; }
.z-links li { list-style: none; break-inside: avoid; padding: 6px 0; display: flex; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--z-line); }
.z-links li a { color: var(--z-ink); }
.z-links li a:hover { color: var(--z-brand); }
.z-links small { color: var(--z-faint); white-space: nowrap; }
.z-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.z-tile { display: flex; flex-direction: column; justify-content: space-between; gap: 6px; min-height: 92px; padding: 14px; border-radius: 16px; background: #fff; box-shadow: var(--z-shadow); color: var(--z-ink); }
.z-tile:hover { text-decoration: none; color: var(--z-ink); box-shadow: 0 0 0 1.5px var(--z-brand-tint), var(--z-shadow); }
.z-tile b { font-weight: 600; line-height: 1.3; }
.z-tile span { font-size: 14px; color: var(--z-muted); }
.z-band .z-tile { box-shadow: 0 1px 2px rgba(18, 33, 58, .05); }

/* ---------- price table (service list) ---------- */
.z-ptable { width: 100%; border-collapse: collapse; font-size: 15px; background: #fff; border-radius: var(--z-r); overflow: hidden; box-shadow: var(--z-shadow); }
.z-ptable th, .z-ptable td { text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--z-line); vertical-align: top; }
.z-ptable th { font-size: 13px; font-weight: 600; color: var(--z-muted); background: var(--z-soft); }
.z-ptable td:last-child, .z-ptable th:last-child { text-align: right; white-space: nowrap; }
.z-ptable tr:last-child td { border-bottom: 0; }
.z-ptable a { color: var(--z-ink); }
.z-ptable a:hover { color: var(--z-brand); }
.z-tw { overflow-x: auto; }
.z-group { margin-top: 18px; }
.z-group > summary { cursor: pointer; list-style: none; font-weight: 700; font-size: 18px; display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 0; }
.z-group > summary::-webkit-details-marker { display: none; }
.z-group > summary::after { content: ""; width: 8px; height: 8px; border-right: 2px solid var(--z-muted); border-bottom: 2px solid var(--z-muted); transform: rotate(45deg); margin-right: 6px; transition: transform .15s; }
.z-group[open] > summary::after { transform: rotate(-135deg); }

/* ---------- clinic / doctor page ---------- */
.z-profile { display: grid; gap: 18px; padding: 16px 0 6px; }
.z-profile__main { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 14px; align-items: start; }
.z-profile__ava { width: 76px; height: 76px; border-radius: 20px; background: var(--z-soft); overflow: hidden; display: flex; align-items: center; justify-content: center; color: var(--z-brand); font-weight: 800; font-size: 26px; }
.z-profile__ava_round { border-radius: 50%; }
.z-profile__ava img { width: 100%; height: 100%; object-fit: cover; }
.z-profile__ava_logo { background: #fff; box-shadow: inset 0 0 0 1px var(--z-line); }
.z-profile__ava_logo img { object-fit: contain; padding: 6px; }
.z-profile__sub { margin-top: 6px; color: var(--z-muted); font-size: 15px; }
.z-profile__facts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.z-side { background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 18px; display: grid; gap: 12px; align-self: start; }
.z-side__price { font-size: 15px; color: var(--z-muted); }
.z-side__price b { display: block; color: var(--z-ink); font-size: 24px; }
.z-dl { display: grid; gap: 10px; }
.z-dl div { display: grid; gap: 2px; }
.z-dl dt { font-size: 13px; color: var(--z-faint); }
.z-dl dd { margin: 0; }
.z-toc { position: sticky; top: calc(60px + env(safe-area-inset-top, 0px)); z-index: 20; background: rgba(255, 255, 255, .97); border-bottom: 1px solid var(--z-line); }
.z-toc .z-pills { padding: 8px 2px; }
.z-gallery { display: flex; gap: 10px; overflow-x: auto; scrollbar-width: thin; padding-bottom: 6px; }
.z-gallery img { width: 220px; height: 150px; object-fit: cover; border-radius: 14px; flex: none; background: var(--z-soft); }
.z-hours { display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; font-size: 15px; }
.z-hours dt { color: var(--z-muted); }
.z-hours dd { margin: 0; }
.z-map { height: 280px; border-radius: var(--z-r); background: var(--z-soft); display: flex; align-items: center; justify-content: center; overflow: hidden; }

/* ---------- reviews ---------- */
.z-reviews { display: grid; gap: 12px; }
.z-review { background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 16px; }
.z-review__top { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px; font-size: 14px; color: var(--z-muted); }
.z-review__who { font-weight: 600; color: var(--z-ink); }
.z-review__txt { margin-top: 8px; }
.z-review__about { margin-top: 8px; font-size: 14px; color: var(--z-muted); }
.z-review__reply { margin-top: 10px; padding: 10px 12px; border-radius: 12px; background: var(--z-soft); font-size: 14px; }

/* ---------- faq ---------- */
.z-faq { display: grid; gap: 10px; }
.z-faq details { background: #fff; border-radius: 16px; box-shadow: var(--z-shadow); padding: 0 16px; }
.z-faq summary { cursor: pointer; list-style: none; padding: 14px 0; font-weight: 600; display: flex; justify-content: space-between; gap: 12px; }
.z-faq summary::-webkit-details-marker { display: none; }
.z-faq summary::after { content: "+"; color: var(--z-brand); font-size: 22px; line-height: 1; }
.z-faq details[open] summary::after { content: "–"; }
.z-faq details > div { padding: 0 0 16px; color: var(--z-ink); }

/* ---------- prose (articles, seo text, static) ---------- */
.z-prose { max-width: 74ch; }
/* text section without text (catalog pages have no seo_text): no empty band before the footer */
.z-sec:has(> .z-wrap > .z-prose:empty) { display: none; }
.z-prose > * + * { margin-top: 14px; }
.z-prose h2 { margin-top: 30px; }
.z-prose h3 { margin-top: 22px; }
.z-prose ul, .z-prose ol { padding-left: 22px; }
.z-prose li + li { margin-top: 6px; }
.z-prose img { border-radius: 14px; }
.z-prose table { border-collapse: collapse; width: 100%; font-size: 15px; }
.z-prose th, .z-prose td { border: 1px solid var(--z-line); padding: 8px 10px; text-align: left; }
.z-prose__table { overflow-x: auto; }
.z-prose blockquote { margin: 0; padding: 12px 16px; border-left: 4px solid var(--z-brand-tint); background: var(--z-soft); border-radius: 0 12px 12px 0; }
.z-prose a { overflow-wrap: anywhere; }
.z-collapse { position: relative; max-height: 260px; overflow: hidden; }
.z-collapse::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 80px; background: linear-gradient(rgba(255, 255, 255, 0), #fff); }
.z-band .z-collapse::after { background: linear-gradient(rgba(242, 247, 251, 0), var(--z-soft)); }
.z-collapse.is-open { max-height: none; }
.z-collapse.is-open::after { display: none; }
.z-byline { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 14px; color: var(--z-muted); margin-top: 10px; }
.z-note { font-size: 13px; color: var(--z-faint); margin-top: 18px; }

/* ---------- article cards ---------- */
.z-arts { display: grid; gap: 14px; }
.z-art { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 12px; background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 12px; color: var(--z-ink); }
.z-art:hover { text-decoration: none; color: var(--z-ink); box-shadow: 0 0 0 1.5px var(--z-brand-tint), var(--z-shadow); }
.z-art img { width: 96px; height: 80px; object-fit: cover; border-radius: 12px; background: var(--z-soft); }
.z-art b { display: block; line-height: 1.3; }
.z-art span { font-size: 13px; color: var(--z-muted); }

/* ---------- q&a ---------- */
.z-qa { background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 16px; display: grid; gap: 8px; }
.z-qa__q { font-weight: 600; }
.z-qa__a { padding: 12px 14px; border-radius: 14px; background: var(--z-soft); }
.z-qa__who { font-size: 14px; color: var(--z-muted); }

/* ---------- booking dialog ---------- */
.z-dialog { border: 0; padding: 0; border-radius: 22px; width: min(440px, calc(100vw - 24px)); box-shadow: 0 20px 60px rgba(18, 33, 58, .25); }
.z-dialog::backdrop { background: rgba(18, 33, 58, .45); }
.z-form { padding: 22px; display: grid; gap: 12px; }
.z-form h2 { font-size: 20px; padding-right: 34px; }
.z-form label { display: grid; gap: 4px; font-size: 14px; color: var(--z-muted); }
.z-form input, .z-form textarea { width: 100%; border: 1.5px solid var(--z-line); border-radius: 12px; padding: 11px 12px; font-size: 16px; background: #fff; }
.z-form input:focus, .z-form textarea:focus { outline: none; border-color: var(--z-brand); }
.z-form__x { position: absolute; top: 12px; right: 12px; }
.z-form__ok { color: var(--z-mint); font-weight: 600; }
.z-form__err { color: var(--z-cta-dark); }
.z-form__legal { font-size: 12px; color: var(--z-faint); }
.z-check { display: flex !important; grid-template-columns: none !important; align-items: flex-start; gap: 8px; }
.z-check input { width: auto; margin-top: 3px; }

/* ---------- floating booking on phones ---------- */
.z-float { position: fixed; z-index: 25; right: var(--z-gr); bottom: calc(14px + env(safe-area-inset-bottom, 0px)); box-shadow: 0 10px 24px rgba(242, 96, 63, .35); border-radius: 999px; }
.z-float.z-btn { border-radius: 999px; padding: 0 22px; }

/* ---------- footer ---------- */
.z-foot { margin-top: 36px; background: var(--z-soft-2); color: var(--z-muted); font-size: 14px; padding: 30px 0 calc(30px + env(safe-area-inset-bottom, 0px)); }
.z-foot__grid { display: grid; gap: 22px; }
.z-foot__h { font-weight: 700; color: var(--z-ink); margin-bottom: 8px; font-size: 15px; }
.z-foot a { color: var(--z-ink); }
.z-foot li { list-style: none; padding: 3px 0; }
.z-foot__legal { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--z-brand-tint); display: grid; gap: 6px; font-size: 13px; }
.z-disclaimer { font-size: 13px; color: var(--z-muted); background: #fff; border-radius: 14px; padding: 12px 14px; margin-top: 18px; }

/* ---------- cookie note ---------- */
.z-cookie { position: fixed; z-index: 40; left: var(--z-gl); right: var(--z-gr); bottom: calc(76px + env(safe-area-inset-bottom, 0px)); max-width: 460px; margin: 0 auto; background: var(--z-ink); color: #e9eef5; border-radius: 16px; padding: 12px 14px; display: flex; align-items: center; gap: 12px; font-size: 13px; }
.z-cookie a { color: #9fd3f5; }
.z-cookie .z-btn { min-height: 36px; padding: 0 14px; font-size: 14px; flex: none; }

/* ---------- empty state ---------- */
.z-empty { padding: 20px; border-radius: var(--z-r); background: var(--z-soft); color: var(--z-muted); }

@media (min-width: 720px) {
  h1 { font-size: 34px; }
  h2 { font-size: 24px; }
  .z-hero { padding: 40px 0 44px; }
  .z-hero h1 { font-size: 40px; }
  .z-clinic { grid-template-columns: minmax(0, 1fr) 300px; grid-template-areas: "top prices" "tags prices" "act prices"; column-gap: 18px; padding: 18px; }
  .z-clinic__top { grid-area: top; grid-template-columns: 64px minmax(0, 1fr); }
  .z-clinic__ava { width: 64px; height: 64px; }
  .z-clinic__tags { grid-area: tags; }
  .z-clinic__prices { grid-area: prices; }
  .z-clinic__act { grid-area: act; align-self: end; grid-template-columns: auto auto; justify-content: start; }
  .z-links { columns: 2; }
  .z-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .z-docs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .z-foot__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .z-float { display: none; }
  .z-cookie { bottom: calc(20px + env(safe-area-inset-bottom, 0px)); }
  .z-arts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .z-reviews { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .z-menu { display: flex; gap: 22px; margin-left: 16px; }
  .z-burger { display: none; }
  .z-links { columns: 3; }
  .z-tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .z-profile { grid-template-columns: minmax(0, 1fr) 340px; align-items: start; }
  .z-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; align-items: start; }
  .z-layout__side { position: sticky; top: 80px; }
}
@media (max-width: 380px) {
  .z-clinic__act { grid-template-columns: 1fr; }
  .z-logo { font-size: 20px; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; } }


/* ---------- шаблон clinic ---------- */
/* zubla.ru — new design: clinic page (template 6). Only z-clinic-* additions on top of z.css; mobile first. */
.z-clinic-head .z-profile__sub { display: flex; flex-wrap: wrap; gap: 2px 12px; }
.z-clinic-head .z-profile__facts { align-items: center; }
.z-clinic-head .z-fact:hover { text-decoration: none; background: var(--z-soft-2); }
.z-clinic-addr { display: flex; align-items: flex-start; gap: 6px; margin-top: 12px; font-size: 15px; }
.z-clinic-addr svg { flex: none; margin-top: 3px; color: var(--z-brand); }
.z-clinic-addr a { color: var(--z-ink); }
.z-clinic-metro { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 6px; font-size: 14px; color: var(--z-muted); }
.z-clinic-metro a { color: inherit; }
.z-clinic-metro a:hover { color: var(--z-brand); }
.z-clinic-tags { margin-top: 10px; }
.z-clinic-head .z-side .z-hours { margin-top: 4px; }
.z-clinic-closed { margin-top: 12px; padding: 12px 14px; border-radius: var(--z-r-sm); background: var(--z-cta-tint); color: var(--z-cta-dark); font-size: 16px; }
.z-clinic-closed a { color: inherit; text-decoration: underline; }
/* closed clinic: no call card on the right — the head takes the full width */
.z-clinic-head.z-clinic-head_closed { grid-template-columns: minmax(0, 1fr); }

/* sticky section menu: pills + call button on wide screens (phones have the floating button) */
.z-clinic-toc { display: flex; align-items: center; gap: 12px; }
.z-clinic-toc .z-pills { flex: 1; min-width: 0; }
.z-clinic-tocbtn { display: none; }

/* prices */
.z-clinic-pgroup > summary { font-size: 17px; }
.z-clinic-pgroup > summary > span { min-width: 0; }
.z-clinic-pgroup > summary .z-small { font-weight: 400; white-space: nowrap; }
.z-clinic-pgroup .z-ptable td:first-child { overflow-wrap: anywhere; }

/* «Ещё N …» under doctors and reviews */
.z-clinic-more > summary { font-size: 16px; color: var(--z-brand); }
.z-clinic-more .z-links { margin-top: 4px; }
.z-clinic-more .z-reviews { margin-top: 6px; }

.z-clinic-verdict { margin-top: 8px; }
.z-clinic-sec .z-review__txt, .z-clinic-sec .z-review__reply, .z-clinic-facts dd { overflow-wrap: anywhere; }

/* address & map: the map loads only on the button */
.z-clinic-geo { display: grid; gap: 14px; }
.z-clinic-geo .z-dl dd { overflow-wrap: anywhere; }
.z-clinic-route { margin-top: 14px; font-size: 15px; }
.z-clinic-map { position: relative; }
.z-clinic-mapframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* photos and licence scans */
.z-clinic-gal a, .z-clinic-lic a { flex: none; display: block; }
.z-clinic-lic img { width: 110px; height: 160px; border-radius: 10px; box-shadow: 0 0 0 1px var(--z-line); background: #fff; }
.z-clinic-licnum { margin-bottom: 12px; }

/* about */
.z-clinic-facts { margin-bottom: 18px; }
.z-clinic-about { margin-top: 4px; }

/* nearby clinics */
.z-clinic-near { grid-template-columns: minmax(0, 1fr); }
.z-clinic-near .z-tile b { overflow-wrap: anywhere; }
.z-revform .z-form { margin-top: 8px; max-width: 640px; }
.z-revform select { width: 100%; border: 1.5px solid var(--z-line); border-radius: 12px; padding: 10px 12px; font-size: 16px; background: #fff; color: var(--z-ink); max-width: 100%; }
.z-revform fieldset { border: 0; padding: 0; margin: 0; display: grid; gap: 6px; }
.z-revform legend { font-size: 14px; color: var(--z-muted); margin-bottom: 4px; }
.z-revform .z-check { color: var(--z-ink); font-size: 16px; }
.z-revform .z-btn { justify-self: start; }

@media (min-width: 720px) {
  .z-clinic-tocbtn { display: inline-flex; flex: none; }
  .z-clinic-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
  .z-clinic-near { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .z-clinic-geo { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: stretch; }
  .z-clinic-geo .z-map { height: auto; min-height: 320px; }
  .z-clinic-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .z-clinic-near { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
/* anchors land below the sticky top bar and section menu (html scroll-padding covers only the top bar) */
.z-clinic-sec { scroll-margin-top: 56px; }


/* ---------- шаблон network ---------- */
/* zubla.ru new design — network page (templates/network.html). Only z-network-* classes; the rest is z.css. */
.z-network-cta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.z-network-cta .z-btn { min-width: 200px; }

/* microdata wrapper around a branch card: hidden address metas, the card itself is the grid item */
.z-network-branch > span { display: none; }

/* «Показать ещё …» without scripts: <details>, the summary is a button that disappears once opened */
.z-network-more { margin-top: 18px; }
.z-network-more > summary { list-style: none; display: flex; width: max-content; max-width: 100%; margin: 0 auto; }
.z-network-more > summary::-webkit-details-marker { display: none; }
.z-network-more[open] > summary { display: none; }
.z-network-more[open] { margin-top: 14px; }

/* price table: group rows (specialization) read left to right */
.z-ptable th.z-network-gh { text-align: left; white-space: normal; color: var(--z-ink); }

/* anchors from the sticky section bar: html already keeps 76px for the top bar, the bar itself is ~53px more */
.z-network .z-sec[id] { scroll-margin-top: 48px; }

/* sections on a soft band: z.css gives any .z-sec after .z-sec only 6px on top — too tight where the colour changes */
.z-network .z-sec.z-band, .z-network .z-band + .z-sec { padding-top: 28px; }

/* review: whom it is about, rating star in one line; long words and links in patient texts must not widen the page */
.z-network-rv { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.z-network-rtxt { overflow-wrap: anywhere; }
/* the review card is white inside a soft band — the fade of a collapsed text must be white too */
.z-band .z-review .z-network-rtxt.z-collapse::after { background: linear-gradient(rgba(255, 255, 255, 0), #fff); }

/* actions */
.z-network-acts { display: grid; gap: 14px; }
.z-network-acts__txt { margin-top: 8px; }
.z-network-acts .z-small { margin-top: 8px; }

@media (min-width: 720px) {
  .z-network-acts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 380px) {
  .z-network-cta .z-btn { width: 100%; min-width: 0; }
}


/* ---------- шаблон doctors ---------- */
/* zubla.ru new design — doctor lists (templates 27, 28): only what z.css lacks. Prefix z-doctors-. */
.z-doctors-n { font-size: 18px; line-height: 1.3; }
.z-doctors-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-left: auto; }
.z-doctors-list .z-doc__where a { color: var(--z-ink); font-weight: 500; }
.z-doctors-list .z-doc__where a:hover { color: var(--z-brand); }
.z-doctors-list .z-doc__where .z-metro { margin-top: 2px; }
.z-doctors-txt { overflow-wrap: anywhere; }
.z-doctors-qa .z-qa__q { font-size: 17px; }
.z-doctors-qa .z-qa__q a { color: var(--z-ink); }
.z-doctors-qa .z-qa__q a:hover { color: var(--z-brand); }
.z-doctors-qa .z-qa__a { overflow-wrap: anywhere; }
@media (max-width: 380px) {
  .z-doctors-btns { width: 100%; }
  .z-doctors-btns .z-btn { flex: 1; }
}
@media (min-width: 720px) {
  .z-doctors-qa { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* ---------- шаблон doctor ---------- */
/* zubla.ru new design — doctor page (template 19): only what z.css lacks. Prefix z-doctor-. */
.z-doctor-specs a { color: var(--z-muted); text-decoration: underline; text-decoration-color: var(--z-line); text-underline-offset: 3px; }
.z-doctor-specs a:hover { color: var(--z-brand); }
.z-doctor-side-where a { font-weight: 500; }
.z-doctor-side .z-side__price .z-small { display: block; margin-top: 2px; }
.z-doctor-clinics { gap: 12px; }
.z-doctor-clinic { display: grid; gap: 8px; align-content: start; }
.z-doctor-clinic h3 a { color: var(--z-ink); }
.z-doctor-clinic h3 a:hover { color: var(--z-brand); }
.z-doctor-addr { color: var(--z-muted); font-size: 15px; }
.z-doctor-clinic .z-metro { font-size: 15px; }
.z-doctor-clinic .z-prices { margin-top: 2px; }
.z-doctor-act { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; margin-top: 4px; }
.z-doctor-act > :only-child { grid-column: 1 / -1; }
.z-doctor-txt { overflow-wrap: anywhere; }
.z-doctor-more { margin-top: 12px; }
.z-doctor-more > summary { list-style: none; cursor: pointer; }
.z-doctor-more > summary::-webkit-details-marker { display: none; }
.z-doctor-more[open] > summary { display: none; }
.z-doctor-side p { margin: 0; }
.z-doctor-more > .z-reviews { margin-top: 0; }
.z-doctor-more_list > summary { display: inline-block; margin-top: 8px; color: var(--z-brand); font-size: 15px; font-weight: 500; }
.z-doctor-edu { display: grid; gap: 12px; }
.z-doctor-edu h3 { margin-bottom: 8px; }
.z-doctor-list { list-style: none; display: grid; gap: 0; }
.z-doctor-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; padding: 8px 0; border-top: 1px solid var(--z-line); font-size: 15px; }
.z-doctor-list li:first-child { border-top: 0; padding-top: 0; }
.z-doctor-list li > span { overflow-wrap: anywhere; }
.z-doctor-list li > small { grid-column: 1; color: var(--z-muted); font-size: 14px; }
.z-doctor-list li > b { grid-column: 2; grid-row: 1; font-weight: 600; color: var(--z-muted); }
.z-doctor-lic { margin-top: 8px; }
.z-doctor-lic a { flex: none; }
.z-doctor-lic img { width: 110px; height: 160px; object-fit: cover; border-radius: 10px; box-shadow: inset 0 0 0 1px var(--z-line); }
@media (max-width: 380px) {
  .z-doctor-act { grid-template-columns: 1fr; }
}
@media (min-width: 720px) {
  .z-doctor-act { grid-template-columns: auto auto; justify-content: start; }
  .z-doctor-clinics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .z-doctor-edu { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* ---------- шаблон service ---------- */
/* zubla.ru — new design: service page (templates 4 and 47). Only z-service-* additions on top of z.css; mobile first. */
.z-service-lead > * + * { margin-top: 8px; }

/* prices: from / median / to / clinics */
.z-service-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.z-service-stat { display: flex; flex-direction: column; gap: 4px; padding: 14px; border-radius: 16px; background: #fff; box-shadow: 0 1px 2px rgba(18, 33, 58, .05); }
.z-service-stat span { font-size: 13px; color: var(--z-muted); }
.z-service-stat b { font-size: 20px; font-weight: 700; line-height: 1.2; white-space: nowrap; }

/* «От чего зависит цена», «Ещё N отзывов» */
.z-service-more > summary { font-size: 16px; color: var(--z-brand); }
.z-service-more .z-prose { margin-top: 4px; }
.z-service-more .z-reviews { margin-top: 6px; }

.z-service-sec .z-review__txt, .z-service-sec .z-review__reply, .z-service-sec .z-prose, .z-service-sec .z-doc__where { overflow-wrap: anywhere; }
.z-service-go { margin: 0; }

@media (min-width: 720px) {
  .z-service-stats { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
}


/* ---------- шаблон group ---------- */
/* zubla.ru — new design: service group and specialization pages (templates 33, 11) and «Услуги и цены» (26).
   Only z-group-* additions on top of z.css; mobile first. */

/* services table: name | clinics | price «от» */
.z-group-table th:nth-child(2), .z-group-table td:nth-child(2) { text-align: right; white-space: nowrap; color: var(--z-muted); }
.z-group-table td:first-child { overflow-wrap: anywhere; }
.z-group-table .z-group-none { color: var(--z-faint); font-weight: 400; }
.z-group-table td:last-child { font-weight: 600; }

/* «Ещё N услуг», «Ещё N отзывов» */
.z-group-more > summary { font-size: 16px; color: var(--z-brand); }
.z-group-more .z-tw, .z-group-more .z-reviews { margin-top: 6px; }

.z-group-sec .z-review__txt, .z-group-sec .z-review__reply, .z-group-sec .z-prose, .z-group-sec .z-doc__where { overflow-wrap: anywhere; }
.z-group-sec .z-doc__where { margin-top: 0; min-width: 0; }

/* questions */
.z-group-qa { display: grid; gap: 10px; }
.z-group-qa .z-qa__q { color: var(--z-ink); }
.z-group-qa .z-qa__q:hover { color: var(--z-brand); }

/* «Услуги и цены»: filter over all groups, group head with count and price */
.z-group-find { margin: 0 0 6px; max-width: 520px; }
.z-group-find input { width: 100%; min-height: 46px; padding: 10px 14px; border: 1.5px solid var(--z-line); border-radius: 14px; background: #fff; font-size: 16px; }
.z-group-find input:focus { outline: none; border-color: var(--z-brand); }
.z-group-sum { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.z-group-sum small { font-size: 14px; font-weight: 400; color: var(--z-muted); }
.z-group-link { margin: 4px 0 10px; font-size: 15px; }
.z-group-list > .z-group { border-bottom: 1px solid var(--z-line); margin-top: 0; }
.z-group-list > .z-group > summary { padding: 14px 0; }

@media (min-width: 720px) {
  .z-group-qa { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .z-group-sum { flex-direction: row; align-items: baseline; gap: 12px; }
}


/* ---------- шаблон article ---------- */
/* zubla.ru — new design: article page (template 29). Only z-article-* additions on top of z.css; mobile first. */
.z-article-head { padding-bottom: 16px; }
.z-article-head h1 { max-width: 30ch; }
.z-article-cover { display: block; width: 100%; max-width: 650px; height: auto; border-radius: var(--z-r); background: var(--z-soft); }

/* table of contents: before the text on phones, sticky column on wide screens */
.z-article-sec { padding-top: 22px; }
.z-article-toc { background: var(--z-soft); border-radius: var(--z-r); padding: 0 16px; margin-bottom: 24px; }
.z-article-toc > summary { cursor: pointer; list-style: none; font-weight: 700; padding: 13px 0; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.z-article-toc > summary::-webkit-details-marker { display: none; }
.z-article-toc > summary::after { content: ""; width: 8px; height: 8px; border-right: 2px solid var(--z-muted); border-bottom: 2px solid var(--z-muted); transform: rotate(45deg); margin-right: 4px; }
.z-article-toc[open] > summary::after { transform: rotate(-135deg); }
.z-article-toc ol { padding: 0 0 14px 22px; display: grid; gap: 8px; font-size: 15px; line-height: 1.4; }
.z-article-toc a { color: var(--z-ink); }
.z-article-toc a:hover { color: var(--z-brand); }

/* the article text as it is in the base */
.z-article-text { overflow-wrap: break-word; }
.z-article-text iframe { display: block; width: 100%; max-width: 640px; height: auto; aspect-ratio: 16 / 9; border: 0; border-radius: 14px; background: var(--z-soft); }
.z-article-text img { display: block; margin-left: auto; margin-right: auto; }
.z-article-text th { background: var(--z-soft); }
.z-article-faq { margin-top: 32px; max-width: 74ch; }
.z-article-faq h2 { margin-bottom: 14px; }
/* sources: the reference list from the end of the text, smaller and muted */
.z-article-src { margin-top: 32px; max-width: 74ch; }
.z-article-src h2 { margin-bottom: 10px; }
.z-article-src ol { padding-left: 22px; display: grid; gap: 6px; font-size: 14px; line-height: 1.45; color: var(--z-muted); overflow-wrap: anywhere; }
/* reviewed by a doctor: only for articles listed in data/v2_article_review.php */
.z-article-review { display: flex; gap: 8px; align-items: baseline; margin-top: 10px; font-size: 14px; line-height: 1.45; color: var(--z-ink); }
.z-article-review__mark { flex: none; display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--z-brand); color: #fff; font-size: 11px; font-weight: 700; transform: translateY(3px); }
/* expert page: articles the expert reviewed */
.z-static-reviews { margin-top: 32px; }
.z-static-reviews h2 { margin-bottom: 14px; }

/* where to get it done: prices and clinics of the article services */
.z-article-where .z-ptable td:first-child { overflow-wrap: anywhere; }
.z-article-where__h { margin: 24px 0 12px; font-size: 18px; }
.z-article-where__more { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.z-article-where__more .z-btn { flex: 1 1 260px; white-space: normal; text-align: center; padding-top: 8px; padding-bottom: 8px; }
.z-article-noimg { width: 96px; height: 80px; border-radius: 12px; background: var(--z-soft); }

@media (min-width: 720px) {
  .z-article-where__more .z-btn { flex: 0 1 auto; }
}
@media (min-width: 1024px) {
  .z-article-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 0 48px; align-items: start; }
  .z-article-layout_one { display: block; }
  .z-article-toc { grid-column: 2; grid-row: 1; position: sticky; top: 84px; max-height: calc(100vh - 100px); overflow-y: auto; margin-bottom: 0; }
  .z-article-main { grid-column: 1; grid-row: 1; min-width: 0; }
}


/* ---------- шаблон blog ---------- */
/* zubla.ru — new design: blog and article sections (templates 30, 31). Only z-blog-* additions on top of z.css. */
.z-blog-nav { margin-top: -6px; }


/* ---------- шаблон static ---------- */
/* zubla.ru — new design: static pages (template 9). Only z-static-* additions on top of z.css; mobile first. */
.z-static-text { padding-bottom: 8px; overflow-wrap: break-word; }
.z-static-text iframe { display: block; width: 100%; max-width: 640px; height: auto; aspect-ratio: 16 / 9; border: 0; border-radius: 14px; }

/* old layout tables (the team page) become a grid of cards */
.z-static-cells { display: grid; gap: 14px; }
.z-static-cell { background: #fff; border-radius: var(--z-r); box-shadow: var(--z-shadow); padding: 16px; }
.z-static-cell > * + * { margin-top: 8px; }
.z-static-cell img { width: 120px; height: 120px; object-fit: cover; border-radius: 50%; background: var(--z-soft); }
.z-static-cell h2 { margin-top: 10px; font-size: 19px; }
.z-static-cell h4 { color: var(--z-muted); font-weight: 500; font-size: 15px; }

@media (min-width: 720px) {
  .z-static-cells { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* «Спроси стоматолога»: раздел, направление, вопрос (templates/qna.html) */
.z-qna-pills { margin-bottom: 4px; }
.z-qna-list { display: grid; gap: 12px; }
.z-qna-card .z-qa__q { font-size: 17px; line-height: 1.3; font-weight: 600; overflow-wrap: anywhere; }
.z-qna-card .z-qa__q a { color: var(--z-ink); }
.z-qna-card .z-qa__q a:hover { color: var(--z-brand); }
.z-qna-card__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: 14px; color: var(--z-muted); }
.z-qna-card .z-qa__who { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.z-qna-more { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.z-qna-more .z-btn { white-space: normal; }
/* «Все вопросы: профессиональная гигиена и профилактика» не помещается в строку с заголовком на телефоне */
.z-qna-sec .z-sec__h { flex-wrap: wrap; }
.z-qna-sec .z-sec__h a { white-space: normal; }

/* страница вопроса */
.z-qna-page { max-width: 800px; padding-bottom: 8px; }
.z-qna-page .z-head { padding-bottom: 16px; }
.z-qna-page .z-byline { align-items: center; }
.z-qna-txt { overflow-wrap: anywhere; }
.z-qna-txt p + p { margin-top: 10px; }
.z-qna-q { font-size: 16px; }
.z-qna-imgs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.z-qna-imgs a { display: block; border-radius: 12px; overflow: hidden; background: var(--z-soft); }
.z-qna-imgs img { display: block; width: 112px; height: 112px; object-fit: cover; }
.z-qna-answers { margin-top: 26px; display: grid; gap: 12px; }
.z-qna-answers > .z-sec__h { margin-bottom: 4px; }
.z-qna-a { gap: 12px; }
.z-qna-a__who { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 12px; align-items: center; }
.z-doc__ava.z-qna-a__ava { width: 56px; height: 56px; font-size: 18px; }
.z-qna-a__date { font-size: 13px; color: var(--z-faint); }
.z-qna-a__act { display: grid; gap: 10px; padding-top: 12px; border-top: 1px solid var(--z-line); }
.z-qna-a__where { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 15px; }
.z-qna-a__btns { display: flex; flex-wrap: wrap; gap: 8px; }

/* статьи по теме без картинки */
.z-qna-art__ph { width: 96px; height: 80px; border-radius: 12px; background: var(--z-soft); }

@media (min-width: 720px) {
  .z-qna-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .z-qna-a__act { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .z-qna-imgs img { width: 128px; height: 128px; }
}

/* телефон, 09.11.2026: длинное название услуги в плитке («Металлокерамическая…») раздвигало страницу главной на 5 px;
   ссылка «Все …» в заголовке секции переносится, а не вылезает за экран */
.z-tile b { overflow-wrap: anywhere; hyphens: auto; }
.z-sec__h { flex-wrap: wrap; }
.z-sec__h a { white-space: normal; min-width: 0; }
