/* ============================================================
   RS-MED — общее оформление (все страницы)
   1. Шрифты   2. Цвета и размеры   3. Основа   4. Кнопки и мелочи
   5. Шапка    6. Подвал            7. Нижнее меню
   8. Окно записи                   9. Полоса прокрутки, «наверх», виджеты
   Классы нового оформления начинаются с «s-» (общие) и «h-» (главная, home.css),
   чтобы не пересекаться с классами содержимого страниц (content.css, kinds/).
   ============================================================ */

/* ---------- 1. Шрифты ---------- */
/* RS Serif (Noto Serif, лицензия OFL) — заголовки. Montserrat (текст и цифры) — в fonts-latin.css / fonts-cyrillic.css */
@font-face { font-family: 'RS Serif'; font-style: italic; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/serif-cyrillic-italic.woff2) format('woff2'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'RS Serif'; font-style: italic; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/serif-latin-ext-italic.woff2) format('woff2'); unicode-range: U+0100-017F, U+2020; }
@font-face { font-family: 'RS Serif'; font-style: italic; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/serif-latin-italic.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'RS Serif'; font-style: normal; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/serif-cyrillic.woff2) format('woff2'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'RS Serif'; font-style: normal; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/serif-latin-ext.woff2) format('woff2'); unicode-range: U+0100-017F, U+2020; }
@font-face { font-family: 'RS Serif'; font-style: normal; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/serif-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; }

/* ---------- 2. Цвета и размеры ---------- */
:root {
  /* основной цвет: 50 — самый светлый фон, 500 — кнопки, 600–700 — текст-акцент */
  --pink-50: #eefffd; --pink-100: #e3f2f5; --pink-200: #c3e4e9; --pink-300: #99d1da; --pink-400: #49c0d0; --pink-500: #25a9bb; --pink-600: #0f7f8e; --pink-700: #09636f; --pink-800: #054952; --pink-900: #02333a;
  /* серые (с лёгким оттенком основного) */
  --neutral-50: #ecf5f6; --neutral-100: #e8f0f2; --neutral-200: #d9e2e3; --neutral-300: #cad2d4; --neutral-400: #9ea6a7; --neutral-500: #727a7b; --neutral-600: #545b5d; --neutral-700: #434b4c; --neutral-800: #2b3233; --neutral-900: #1d2425;
  --s-accent: #d48a5c;   /* звёзды, акценты */
  --s-p-rgb: 37, 169, 187; --s-ink-rgb: 29, 36, 37; --s-accent-rgb: 212, 138, 92;
  /* имена, которыми пользуются стили содержимого страниц */
  --gradient-primary: linear-gradient(135deg, var(--pink-500) 0%, var(--pink-400) 100%);
  --gradient-soft: linear-gradient(180deg, var(--pink-50) 0%, #ffffff 100%);
  --gradient-hero: linear-gradient(135deg, var(--pink-50) 0%, var(--pink-100) 50%, #fff 100%);
  --shadow-pink: 0 10px 40px -10px rgba(37, 169, 187, .4);
  --s-fh: 'RS Serif', Georgia, 'Times New Roman', serif;      /* заголовки */
  --s-fb: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;   /* текст, кнопки, цифры */
  --s-fwh: 500;                                              /* жирность заголовков */
  --s-r: 28px;  --s-r-sm: 16px;  --s-r-btn: 999px;           /* скругления */
  --s-grad: linear-gradient(135deg, var(--pink-500), var(--pink-400));
  --s-sh: 0 20px 50px -24px rgba(var(--s-ink-rgb), .45);
  --s-sh-p: 0 12px 30px -12px rgba(var(--s-p-rgb), .6);
  --s-bd: 1px solid rgba(255, 255, 255, .7);
  --s-line: 1px solid var(--neutral-200);
  --s-card: rgba(255, 255, 255, .62);
  --s-hdr-h: 100px;                                          /* высота шапки: инфо-строка + меню */
  --s-dock-h: 0px;                                            /* нижнее меню есть только на телефоне и планшете (см. раздел 7) */
}

/* ---------- 3. Основа ---------- */
html { scroll-behavior: smooth; scroll-padding-top: 90px; }
body {
  margin: 0;
  font-family: var(--s-fb);
  color: var(--neutral-800);
  -webkit-font-smoothing: antialiased;
  padding-bottom: var(--s-dock-h);
  background:
    radial-gradient(60vw 60vw at 100% 0%, rgba(var(--s-p-rgb), .16), transparent 60%),
    radial-gradient(50vw 50vw at 0% 35%, rgba(var(--s-accent-rgb), .10), transparent 60%),
    radial-gradient(60vw 60vw at 90% 80%, rgba(var(--s-p-rgb), .12), transparent 60%),
    #fff;
  background-attachment: fixed;
}
.s-wrap { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
.s-nw { white-space: nowrap; }
.s-mut { color: var(--neutral-500); font-size: .9rem; }
.s-ic { width: 1.25em; height: 1.25em; flex: none; fill: none; stroke: currentColor; vertical-align: -.22em; }
.s-star { color: var(--s-accent); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* ---------- 4. Кнопки ---------- */
.s-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  padding: 14px 26px; border: 0; border-radius: var(--s-r-btn); cursor: pointer; white-space: nowrap;
  font: 600 .98rem/1.2 var(--s-fb); text-decoration: none;
  background: var(--s-grad); color: #fff; box-shadow: var(--s-sh-p);
  transition: transform .25s, box-shadow .25s, background .25s;
}
.s-btn:hover { transform: translateY(-2px); color: #fff; }
.s-btn-gh { background: transparent; color: var(--pink-700); box-shadow: inset 0 0 0 1.5px var(--pink-400); }
.s-btn-gh:hover { background: var(--pink-100); color: var(--pink-700); }
.s-btn-wh { background: #fff; color: var(--pink-700); box-shadow: none; }
.s-btn-wh:hover { color: var(--pink-700); }
.s-btn-sm { padding: 10px 18px; font-size: .88rem; }
.s-btn[disabled] { opacity: .6; cursor: wait; transform: none; }
.s-btns { display: flex; gap: 12px; flex-wrap: wrap; }

/* ---------- 5. Шапка ---------- */
.s-hdr { position: fixed; top: 0; left: 0; right: 0; z-index: 1030; font-family: var(--s-fb); }
.s-top { background: var(--pink-100); color: var(--neutral-700); border-bottom: 1px solid rgba(var(--s-p-rgb), .14); font-size: .82rem; max-height: 40px; overflow: hidden; transition: max-height .3s; }
.s-top .s-wrap { display: flex; gap: 22px; align-items: center; padding-top: 8px; padding-bottom: 8px; white-space: nowrap; }
.s-top span, .s-top a { display: inline-flex; gap: 6px; align-items: center; color: inherit; text-decoration: none; }
.s-top .s-top-tel { margin-left: auto; font-weight: 700; color: var(--pink-700); }
.s-top .s-ic { color: var(--pink-500); }
.s-hdr.scrolled .s-top { max-height: 0; }
/* размытие фона вынесено в псевдоэлемент: если поставить его на саму полосу, выпадающее меню внутри неё начинает просвечивать */
.s-bar { position: relative; border-bottom: var(--s-line); transition: box-shadow .3s; }
.s-bar::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(255, 255, 255, .86); -webkit-backdrop-filter: blur(18px) saturate(1.4); backdrop-filter: blur(18px) saturate(1.4); transition: background .3s; }
.s-hdr.scrolled .s-bar { box-shadow: 0 18px 40px -28px rgba(var(--s-ink-rgb), .55); }
.s-hdr.scrolled .s-bar::before { background: rgba(255, 255, 255, .94); }
.s-bar .s-wrap { display: flex; align-items: center; gap: 20px; height: 64px; position: relative; transition: height .3s; }
.s-hdr.scrolled .s-bar .s-wrap { height: 58px; }
.s-top .s-top-tel .s-ic { margin-right: 2px; }
/* логотип: знак в светлом круге, под названием — подпись */
.s-logo { display: flex; align-items: center; gap: 11px; font: 800 1.22rem/1 var(--s-fb); letter-spacing: .02em; color: var(--neutral-900); text-decoration: none; }
.s-logo-t { display: grid; gap: 3px; }
.s-logo small { font: 600 .6rem/1 var(--s-fb); letter-spacing: .3em; text-transform: uppercase; color: var(--pink-600); }
/* меню: текущий пункт и наведение — подчёркивание-капля */
.s-nav { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.s-nav-a { position: relative; padding: 9px 14px; border: 0; background: none; border-radius: var(--s-r-btn); cursor: pointer; font: 500 .93rem/1.3 var(--s-fb); color: var(--neutral-700); text-decoration: none; transition: color .2s, background .2s; }
.s-nav-a::before { content: ""; position: absolute; left: 50%; bottom: 3px; width: 0; height: 3px; border-radius: 3px; background: var(--s-grad); transform: translateX(-50%); transition: width .25s; }
.s-nav-a:hover { color: var(--pink-700); }
.s-nav-a:hover::before, .s-nav-a.on::before { width: 18px; }
.s-nav-a.on { color: var(--pink-700); font-weight: 700; }
.s-dd { position: relative; }
.s-dd-btn::after { content: ""; display: inline-block; width: 7px; height: 7px; margin-left: 7px; border: solid currentColor; border-width: 0 1.5px 1.5px 0; transform: translateY(-3px) rotate(45deg); transition: transform .25s; }
.s-dd.open .s-dd-btn::after { transform: translateY(1px) rotate(-135deg); }
/* список услуг: «стеклянная» панель в две колонки с картинками */
.s-dd-menu { display: none; position: absolute; left: -14px; top: calc(100% + 12px); width: 560px; margin: 0; padding: 12px; list-style: none; grid-template-columns: 1fr 1fr; gap: 2px 8px;
  background: #fff; border: var(--s-line); border-radius: var(--s-r); box-shadow: 0 34px 70px -30px rgba(var(--s-ink-rgb), .6); }
.s-dd-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -14px; height: 14px; }
.s-dd.open .s-dd-menu { display: grid; animation: s-dd-in .22s both; }
@media (hover: hover) and (min-width: 941px) { .s-dd:hover .s-dd-menu { display: grid; animation: s-dd-in .22s both; } .s-dd:hover .s-dd-btn::after { transform: translateY(1px) rotate(-135deg); } }
@keyframes s-dd-in { from { opacity: 0; transform: translateY(-8px); } }
.s-dd-menu a { display: flex; align-items: center; gap: 12px; padding: 8px 12px 8px 8px; border-radius: 16px; font-size: .9rem; font-weight: 500; color: var(--neutral-800); text-decoration: none; transition: background .2s, color .2s, transform .2s; }
.s-dd-menu img { flex: none; width: 38px; height: 38px; padding: 4px; border-radius: 50%; background: radial-gradient(circle at 32% 24%, #fff, var(--pink-100) 80%); box-shadow: 0 0 0 1px var(--pink-200); transition: transform .25s; }
.s-dd-menu a:hover, .s-dd-menu a.on { background: var(--pink-50); color: var(--pink-700); }
.s-dd-menu a:hover img { transform: scale(1.12) rotate(-6deg); }
.s-dd-sep { grid-column: 1 / -1; height: 1px; margin: 6px 10px; background: var(--neutral-200); }
.s-dd-sep + li { grid-column: 1 / -1; }
.s-dd-sep + li a { background: rgba(var(--s-p-rgb), .07); font-weight: 700; }
.s-lang { display: flex; gap: 2px; padding: 3px; background: var(--neutral-100); border-radius: var(--s-r-btn); font-size: .74rem; font-weight: 700; }
.s-lang a { padding: 5px 10px; border-radius: var(--s-r-btn); color: var(--neutral-500); text-decoration: none; transition: color .2s, background .2s; }
.s-lang a:hover { color: var(--pink-600); }
.s-lang a.on { background: #fff; color: var(--pink-600); box-shadow: 0 4px 10px -6px rgba(var(--s-ink-rgb), .5); }
.s-lang-m, .s-nav-cta { display: none; }
.s-hdr-cta { border: 0; cursor: pointer; }
/* кнопка меню: три полоски превращаются в крестик */
.s-burger { display: none; margin-left: auto; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 14px; background: var(--pink-100); cursor: pointer; flex-direction: column; align-items: center; justify-content: center; gap: 5px; transition: background .2s; }
.s-burger span { display: block; width: 20px; height: 2px; border-radius: 2px; background: var(--pink-700); transition: transform .25s, opacity .2s; }
.s-burger[aria-expanded="true"] { background: var(--s-grad); }
.s-burger[aria-expanded="true"] span { background: #fff; }
.s-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.s-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.s-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
@media (max-width: 940px) {
  :root { --s-hdr-h: 96px; }
  .s-top-x { display: none !important; }
  .s-nav { display: none; position: absolute; left: 12px; right: 12px; top: calc(100% + 8px); flex-direction: column; align-items: stretch; gap: 2px; max-height: calc(100vh - 190px); max-height: calc(100dvh - 190px); overflow: auto; padding: 12px;
    background: #fff; border: var(--s-line); border-radius: var(--s-r); box-shadow: 0 34px 70px -30px rgba(var(--s-ink-rgb), .6); }
  .s-nav.open { display: flex; animation: s-dd-in .22s both; }
  .s-nav-a { text-align: left; padding: 13px 14px; font-size: 1rem; }
  .s-nav-a::before { display: none; }
  .s-nav-a.on { background: var(--pink-50); }
  .s-dd-btn { display: flex; justify-content: space-between; align-items: center; width: 100%; }
  .s-dd-menu { position: static; width: auto; min-width: 0; grid-template-columns: 1fr; padding: 0 0 6px 4px; border: 0; background: none; box-shadow: none; }
  .s-dd.open .s-dd-menu { animation: none; }
  .s-lang-d, .s-hdr-cta { display: none; }
  .s-lang-m { display: flex; align-self: flex-start; margin: 8px 10px 4px; }
  .s-nav-cta { display: grid; gap: 8px; margin-top: 8px; padding-top: 12px; border-top: var(--s-line); }
  .s-nav-cta .s-btn { justify-content: center; color: #fff; }
  .s-nav-cta .s-btn-gh { color: var(--pink-700); }
  .s-burger { display: flex; }
  .s-logo small { letter-spacing: .24em; }
}

/* ---------- 5а. Схема проезда (вместо карты Google): своя картинка, можно двигать ---------- */
.s-map { position: relative; height: 460px; overflow: hidden; border-radius: 22px; background: #e9f5f7; cursor: grab; touch-action: pan-y; user-select: none; -webkit-user-select: none; }
.s-map.drag { cursor: grabbing; }
/* --cx/--cy — какая точка картинки стоит в центре рамки (по умолчанию метка центра; скрипт может показать сразу и метро) */
.s-map-svg { position: absolute; left: 50%; top: 50%; width: max(1240px, 108%) !important; height: auto !important; max-width: none !important;
  transform: translate(calc(var(--cx, -65%) + var(--mx, 0px)), calc(var(--cy, -40%) + var(--my, 0px))); will-change: transform; -webkit-user-drag: none; }
.s-map.fly .s-map-svg { transition: transform .6s cubic-bezier(.3, .8, .3, 1); }
.s-map-hint { position: absolute; left: 14px; top: 14px; display: inline-flex; align-items: center; gap: 6px; padding: 8px 13px; border-radius: var(--s-r-btn); background: rgba(255, 255, 255, .92); box-shadow: 0 8px 18px -12px rgba(var(--s-ink-rgb), .6);
  font: 600 .78rem/1.2 var(--s-fb); color: var(--neutral-700); pointer-events: none; transition: opacity .4s; }
.s-map-hint .s-ic { color: var(--pink-500); }
.s-map.moved .s-map-hint { opacity: 0; }
.s-map-jump { position: absolute; right: 14px; top: 14px; display: inline-flex; gap: 3px; padding: 4px; border-radius: var(--s-r-btn); background: rgba(255, 255, 255, .92); box-shadow: 0 8px 18px -12px rgba(var(--s-ink-rgb), .6); }
.s-map-jump button { display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border: 0; border-radius: var(--s-r-btn); background: none; cursor: pointer; font: 700 .78rem/1.2 var(--s-fb); color: var(--neutral-600); transition: background .2s, color .2s; }
.s-map-jump button b { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 5px; background: var(--s-accent); color: #fff; font-size: .7rem; }
.s-map-jump button:hover { color: var(--pink-700); }
.s-map-jump button.on { background: var(--s-grad); color: #fff; }
/* подпись источника данных: по лицензии должна быть видна всегда — стоит в своём углу, кнопки её не перекрывают */
.s-map-osm { position: absolute; left: 10px; bottom: 8px; padding: 3px 8px; border-radius: 8px; background: rgba(255, 255, 255, .85); font: 500 .7rem/1.3 var(--s-fb); color: var(--neutral-600) !important; text-decoration: none !important; }
.s-map-osm:hover { color: var(--pink-700) !important; }
.s-map-go { position: absolute; right: 14px; bottom: 14px; color: #fff !important; text-decoration: none !important; }
@media (max-width: 520px) { .s-map { height: 360px; } .s-map-svg { width: 1100px !important; } .s-map-hint { display: none; } .s-map-jump { left: 12px; right: auto; top: 12px; } }
@media print { .s-map-hint, .s-map-go, .s-map-jump { display: none; } }

/* ---------- 6. Подвал ---------- */
.s-ft { position: relative; overflow: hidden; padding: 56px 0 26px; font: 400 .92rem/1.6 var(--s-fb); color: var(--neutral-600);
  background: linear-gradient(180deg, rgba(var(--s-p-rgb), .05), var(--pink-100)); border-top: 1px solid rgba(var(--s-p-rgb), .14); }
/* большой знак центра фоном */
.s-ft::before { content: ""; position: absolute; right: -70px; bottom: -90px; width: 420px; height: 420px; pointer-events: none; }
.s-ft > .s-wrap { position: relative; }
.s-ft a { color: inherit; text-decoration: none; }
.s-ft a:hover { color: var(--pink-600); }
/* призыв — «стеклянная» панель */
.s-ft-top { display: flex; justify-content: space-between; align-items: center; gap: 18px 24px; flex-wrap: wrap; margin-bottom: 44px; padding: 22px 26px; border: var(--s-bd); border-radius: var(--s-r);
  background: rgba(255, 255, 255, .72); box-shadow: var(--s-sh); }
.s-ft-top > span:not(.s-btns) { flex: 1 1 260px; font: italic 400 1.25rem/1.35 var(--s-fh); color: var(--neutral-800); }
.s-ft-top .s-btn, .s-ft-top .s-btn:hover { color: #fff; }
.s-ft-top .s-btn-gh, .s-ft-top .s-btn-gh:hover { color: var(--pink-700); }
.s-ft-g { display: grid; grid-template-columns: 1.25fr repeat(3, .95fr) 1.6fr; gap: 32px; align-items: start; }
.s-ft-h { position: relative; margin: 0 0 16px; padding-bottom: 10px; font: 700 .78rem/1.3 var(--s-fb); letter-spacing: .1em; text-transform: uppercase; color: var(--pink-700); }
.s-ft-h::after { content: ""; position: absolute; left: 0; bottom: 0; width: 28px; height: 3px; border-radius: 3px; background: var(--s-grad); }
.s-ft p { margin: 0; }
.s-ft ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.s-ft-g > div:not(.s-ft-nap) ul a { display: inline-block; transition: transform .2s, color .2s; }
.s-ft-g > div:not(.s-ft-nap) ul a:hover { transform: translateX(4px); }
.s-ft address { font-style: normal; margin: 0; }
/* контакты — на отдельной панели */
.s-ft-nap { padding: 20px 22px; border: var(--s-bd); border-radius: 22px; background: rgba(255, 255, 255, .7); box-shadow: 0 16px 36px -24px rgba(var(--s-ink-rgb), .45); }
.s-ft .nap li { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; }
.s-ft .nap li.nap-name { display: block; }
.s-ft .nap li > :not(.s-ic) { min-width: 0; overflow-wrap: anywhere; }
.s-ft .nap .s-ic { color: var(--pink-500); margin-top: .2em; }
.s-ft .nap-name { font: var(--s-fwh) 1.15rem/1.3 var(--s-fh); color: var(--neutral-900); }
.s-ft .nap a[href^="tel"] { font-weight: 700; color: var(--neutral-900); }
.s-ft .nap a[href^="mailto"] { font-size: .86rem; }
.s-ft-soc { display: flex; gap: 10px; margin-top: 18px; }
.s-ft-soc a { width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center; background: #fff; color: var(--pink-600); box-shadow: 0 8px 18px -12px rgba(var(--s-ink-rgb), .5); transition: transform .25s, background .25s, color .25s; }
.s-ft-soc a:hover { background: var(--s-grad); color: #fff; transform: translateY(-3px); }
.s-ft-b { margin-top: 40px; padding-top: 22px; border-top: 1px solid rgba(var(--s-p-rgb), .18); font-size: .8rem; display: flex; gap: 16px 28px; flex-wrap: wrap; justify-content: space-between; align-items: center; }
.s-ft-b span { display: block; color: var(--neutral-500); }
.s-ft-b nav { display: flex; gap: 8px; flex-wrap: wrap; }
.s-ft-b nav a { padding: 6px 12px; border-radius: var(--s-r-btn); background: rgba(255, 255, 255, .7); transition: background .2s, color .2s; }
.s-ft-b nav a:hover { background: #fff; }
@media (max-width: 1000px) { .s-ft-g { grid-template-columns: 1fr 1fr; } .s-ft-g > div:first-child, .s-ft-nap { grid-column: 1 / -1; } }
@media (max-width: 560px) { .s-ft-g { grid-template-columns: 1fr 1fr; gap: 26px 18px; } .s-ft-top { padding: 20px 18px; } .s-ft-top .s-btns { width: 100%; } .s-ft-top .s-btn { flex: 1 1 auto; justify-content: center; } .s-ft::before { width: 280px; height: 280px; } }

/* ---------- 7. Нижнее меню (только до 991px) ---------- */
@media (max-width: 991px) { :root { --s-dock-h: 64px; } }
@media (min-width: 992px) { .s-dock { display: none !important; } }
.s-dock {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1040; height: var(--s-dock-h); box-sizing: border-box;
  display: flex; justify-content: center; align-items: center; gap: 10px; padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
  background: rgba(255, 255, 255, .8); -webkit-backdrop-filter: blur(18px) saturate(1.5); backdrop-filter: blur(18px) saturate(1.5);
  border-top: var(--s-line); box-shadow: 0 -10px 30px -18px rgba(var(--s-ink-rgb), .5);
}
.s-dock a, .s-dock button {
  display: flex; align-items: center; gap: 8px; padding: 10px 16px; border: 0; background: none; cursor: pointer; white-space: nowrap;
  border-radius: var(--s-r-btn); font: 600 .86rem/1 var(--s-fb); color: var(--neutral-700); text-decoration: none; transition: background .2s, color .2s;
}
.s-dock .s-ic { font-size: 1.15rem; color: var(--pink-600); }
.s-dock a:hover { background: var(--pink-100); color: var(--pink-700); }
.s-dock .s-dock-main { background: var(--s-grad); color: #fff; box-shadow: var(--s-sh-p); }
.s-dock .s-dock-main .s-ic { color: #fff; }
@media (max-width: 700px) {
  .s-dock { justify-content: space-between; gap: 2px; padding-left: 6px; padding-right: 6px; }
  .s-dock a, .s-dock button { flex: 1; flex-direction: column; gap: 4px; padding: 7px 2px; font-size: .66rem; border-radius: 14px; }
  .s-dock .s-ic { font-size: 1.3rem; }
}
@media print { .s-dock, .s-hdr { display: none; } }

/* ---------- 8. Окно записи ---------- */
html.s-bk-open { overflow: hidden; }
.s-bk { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(var(--s-ink-rgb), .5); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); font-family: var(--s-fb); animation: s-fade .25s both; }
.s-bk[hidden] { display: none; }
@keyframes s-fade { from { opacity: 0; } }
@keyframes s-up { from { transform: translateY(30px); opacity: 0; } }
.s-bk-box { display: flex; flex-direction: column; width: min(600px, 100%); max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); overflow: auto; background: #fff; color: var(--neutral-800); border-radius: 30px; box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .45); animation: s-up .35s both; }
.s-bk-h { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; padding: 24px 26px 14px; }
.s-bk-title { font: var(--s-fwh) 1.5rem/1.2 var(--s-fh); color: var(--neutral-900); margin-bottom: 4px; }
.s-bk-x { flex: none; width: 40px; height: 40px; border: 0; border-radius: 50%; background: var(--neutral-100); color: var(--neutral-700); cursor: pointer; font-size: 1rem; }
.s-bk-x:hover { background: var(--pink-100); color: var(--pink-700); }
.s-bk-pr { display: flex; gap: 6px; padding: 0 26px 14px; }
.s-bk-pr i { flex: 1; height: 4px; border-radius: 4px; background: var(--neutral-200); transition: background .3s; }
.s-bk-pr i.on { background: var(--pink-500); }
.s-bk-b { flex: 1; margin: 0; padding: 6px 26px 10px; }
.s-bk-s { margin-bottom: 20px; }
.s-bk-s > b { display: block; margin-bottom: 9px; font-size: .76rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--neutral-500); }
.s-bk-ch { display: flex; flex-wrap: wrap; gap: 8px; }
.s-bk-ch button { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; border: var(--s-line); border-radius: var(--s-r-btn); background: #fff; cursor: pointer; font: 600 .86rem/1.2 var(--s-fb); color: var(--neutral-800); transition: border-color .2s, background .2s; }
.s-bk-ch button i { font-style: normal; font-weight: 500; color: var(--neutral-500); }
.s-bk-ch button:hover { border-color: var(--pink-400); }
.s-bk-ch button.on { background: var(--s-grad); border-color: transparent; color: #fff; }
.s-bk-ch button.on i, .s-bk-ch button.on small { color: rgba(255, 255, 255, .85); }
.s-bk-ch button[disabled] { opacity: .35; cursor: not-allowed; }
.s-bk-ch img { width: 28px; height: 28px; margin: -3px 0 -3px -6px; border-radius: 50%; object-fit: cover; }
.s-bk-days button { flex-direction: column; gap: 2px; min-width: 66px; padding: 9px 10px; border-radius: 14px; }
.s-bk-days small { font-size: .68rem; font-weight: 500; text-transform: uppercase; color: var(--neutral-500); }
.s-bk-in { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.s-bk-in input { width: 100%; box-sizing: border-box; padding: 14px 16px; border: var(--s-line); border-radius: 14px; font: inherit; font-size: 1rem; background: #fff; color: var(--neutral-800); }
.s-bk-in input:focus { outline: 2px solid var(--pink-400); outline-offset: 1px; }
.s-bk-in input.err, .s-bk-ok.err { outline: 2px solid #ef4444; outline-offset: 2px; }
.s-bk-hp { position: absolute !important; left: -9999px; width: 1px !important; height: 1px; opacity: 0; }
.s-bk-ok { display: flex; gap: 10px; align-items: flex-start; margin-top: 12px; border-radius: 8px; font-size: .8rem; color: var(--neutral-600); cursor: pointer; }
.s-bk-ok input { margin-top: 3px; accent-color: var(--pink-500); }
.s-bk-ok a, .s-bk-alt a, .s-bk-err a { color: var(--pink-600); font-weight: 600; }
.s-bk-err { margin: 12px 0 0; font-size: .86rem; color: #b91c1c; }
.s-bk-f { position: sticky; bottom: 0; display: flex; gap: 12px; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 14px 26px; background: #fff; border-top: var(--s-line); }
.s-bk-sum { flex: 1; min-width: 180px; font-size: .82rem; color: var(--neutral-600); }
.s-bk-alt { padding: 12px 26px 20px; text-align: center; font-size: .82rem; color: var(--neutral-500); }
.s-bk-done { margin: auto; padding: 50px 30px; text-align: center; }
.s-bk-done p { margin: 8px 0 0; color: var(--neutral-600); }
.s-bk-done .s-btn { margin-top: 22px; }
.s-bk-okico { width: 72px; height: 72px; margin: 0 auto 18px; border-radius: 50%; display: grid; place-items: center; background: var(--s-grad); color: #fff; font-size: 2rem; }
@media (max-width: 760px) {
  .s-bk { padding: 8px; }
  .s-bk-in { grid-template-columns: 1fr; }
  .s-bk-h { padding: 18px 18px 10px; } .s-bk-b { padding: 4px 18px 8px; } .s-bk-pr { padding: 0 18px 12px; }
  .s-bk-f { padding: 12px 18px; gap: 8px 10px; }
  .s-bk-sum { order: -1; flex: 0 0 100%; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: .76rem; text-align: center; }
  .s-bk-f .s-btn { flex: 1; padding-top: 15px; padding-bottom: 15px; }
  .s-bk-f .s-btn-gh { flex: 0 0 auto; }
  .s-bk-f [style*="hidden"] { display: none; }
}
@media (prefers-reduced-motion: reduce) { .s-bk, .s-bk-box { animation: none; } }

/* ---------- 9. Полоса прокрутки, «наверх», виджеты ---------- */
.rs-progress { position: fixed; left: 0; right: 0; top: 0; height: 3px; z-index: 1035; pointer-events: none; }
.rs-progress__bar { height: 100%; background: var(--s-grad); transform: scaleX(0); transform-origin: 0 50%; }
.s-up { position: fixed; right: 18px; bottom: calc(var(--s-dock-h) + 84px); z-index: 1020; width: 46px; height: 46px; border: var(--s-line); border-radius: 50%; background: #fff; color: var(--pink-600); cursor: pointer; display: grid; place-items: center; box-shadow: var(--s-sh); opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .3s, transform .3s, visibility .3s; }
.s-up.show { opacity: 1; visibility: visible; transform: none; }
.s-up:hover { background: var(--s-grad); color: #fff; }

/* ---------- 10. Защита общих блоков от правил содержимого ---------- */
/* Стили страниц (content.css, kinds/) задают правила прямо для тегов p, a, ul, button.
   Здесь общим блокам возвращаются их собственные значения. */
.s-hdr *, .s-ft *, .s-dock *, .s-bk * { box-sizing: border-box; }
.s-hdr, .s-ft, .s-dock, .s-bk { line-height: 1.6; letter-spacing: normal; text-transform: none; }
.s-ft p, .s-bk p { font-size: inherit; line-height: inherit; }
.s-ft p { color: inherit; }
.s-ft li, .s-hdr li, .s-bk li { margin: 0; padding: 0; font-size: inherit; color: inherit; }
.s-ft li::before, .s-hdr li::before { content: none; }
.s-hdr ul, .s-ft ul { margin: 0; }
.s-hdr a, .s-dock a, .s-ft a, .s-bk a { text-decoration: none; }
.s-bk label { margin: 0; font-weight: 400; }
.s-hdr button, .s-dock button, .s-bk button { font-family: var(--s-fb); letter-spacing: normal; text-transform: none; }

/* ---------- 11. Виджеты (чат, скретч-карта, cookie) — выше нижнего меню ---------- */
.rsmed-chat-fab, .rsmed-sc-fab { bottom: calc(var(--s-dock-h) + 16px) !important; }
/* окно чата: на планшете — над нижним меню и не выше экрана; на телефоне — во весь экран поверх меню (иначе шапка с крестиком уезжает за край) */
.rsmed-chat-window { bottom: calc(var(--s-dock-h) + 16px) !important; max-height: calc(100vh - var(--s-dock-h) - 32px); max-height: calc(100dvh - var(--s-dock-h) - 32px); }
.rsmed-chat-window__close .sym-x { font-size: 24px; }
@media (max-width: 575px) { .rsmed-chat-window { top: 0 !important; bottom: 0 !important; height: auto !important; max-height: none; } }
.cookie-consent-banner { bottom: calc(var(--s-dock-h) + 12px) !important; }
/* контейнер чата шире своей кнопки (место под подсказку) — не должен перехватывать клики по «наверх» */
.rsmed-chat-fab { pointer-events: none; }
.rsmed-chat-fab__btn { pointer-events: auto; }

/* === аудит вёрстки 09.10 === */
/* длинные слова переносятся внутри своего блока, а не торчат из него; заголовкам на узком экране разрешены переносы по слогам */
body { overflow-wrap: break-word; }
h1, h2, h3, h4 { overflow-wrap: anywhere; }
@media (max-width: 420px) {
  h1, h2, h3, h4 { -webkit-hyphens: auto; hyphens: auto; }
  .s-btn { white-space: normal; text-align: center; padding-left: 18px; padding-right: 18px; }
  .s-btns { width: 100%; }
  .s-btns > .s-btn { max-width: 100%; }
}
/* подвал: колонки сетки не шире экрана (ссылки в две колонки на 320 px обрезались краем) */
.s-ft-g > * { min-width: 0; }
@media (max-width: 340px) { .s-ft-g { grid-template-columns: minmax(0, 1fr); } .s-ft-g > div:first-child, .s-ft-nap { grid-column: auto; } }   /* 320 px: в две колонки длинные названия рвались посреди слова */

/* ============================================================
   ginekolog-med.pl — отличия от каркаса rs-med.pl
   ============================================================ */
/* логотип: цветной знак картинкой (у rs-med — одноцветная маска), под именем — подпись без разрядки */
.s-logo { font-size: 1.08rem; font-weight: 700; letter-spacing: 0; }
.s-logo img { width: 42px; height: 42px; flex: none; transition: transform .5s; }
.s-logo:hover img { transform: rotate(-8deg) scale(1.06); }
.s-logo small { font: 600 .68rem/1 var(--s-fb); letter-spacing: .04em; text-transform: none; color: var(--pink-600); }
.s-ft::before { -webkit-mask: none; mask: none; background: url(/img/favicon.svg) center/contain no-repeat; opacity: .08; }
/* меню услуг: три группы с заголовками */
.s-dd-menu.s-dd-cols { width: 760px; grid-template-columns: 1.15fr 1fr 1fr; gap: 4px 14px; padding: 16px; }
.s-dd-cols ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.s-dd-h { display: block; margin: 2px 8px 8px; font: 700 .7rem/1.3 var(--s-fb); letter-spacing: .1em; text-transform: uppercase; color: var(--pink-700); }
.s-dd-menu a { padding: 6px 10px 6px 6px; font-size: .86rem; }
.s-dd-menu img { width: 34px; height: 34px; }
.s-dd-all { grid-column: 1 / -1; justify-content: center; margin-top: 8px; padding: 11px 12px !important; background: rgba(var(--s-p-rgb), .07); font-weight: 700 !important; color: var(--pink-700) !important; }
.s-dd-all .s-ic { color: var(--pink-500); }
@media (max-width: 1180px) { .s-bar .s-wrap { gap: 12px; } .s-nav-a { padding: 9px 10px; font-size: .9rem; } .s-lang a { padding: 5px 8px; } }
@media (max-width: 1060px) { .s-hdr-cta .s-ic { display: none; } .s-logo small { display: none; } }
@media (max-width: 940px) {
  .s-logo small { display: block; }
  .s-dd-menu.s-dd-cols { width: auto; grid-template-columns: 1fr; padding: 4px 0 6px 4px; }
  .s-dd-h { margin: 10px 8px 4px; }
}
/* баннер cookie: плашка над нижним меню */
.s-ck { position: fixed; left: 16px; right: 16px; bottom: calc(var(--s-dock-h) + 14px); z-index: 1045; display: flex; align-items: center; justify-content: space-between; gap: 12px 20px; flex-wrap: wrap;
  max-width: 760px; margin: 0 auto; padding: 14px 18px; border: var(--s-line); border-radius: 22px; background: rgba(255, 255, 255, .96); box-shadow: var(--s-sh); font: 400 .88rem/1.5 var(--s-fb); color: var(--neutral-700); }
.s-ck[hidden] { display: none; }
.s-ck p { margin: 0; flex: 1 1 260px; font-size: inherit; color: inherit; }
.s-ck .s-btns { gap: 8px; flex-wrap: nowrap; }
/* ссылка «к содержимому» для клавиатуры */
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 3000; padding: 10px 16px; background: #fff; color: var(--pink-700); border-radius: 0 0 12px 0; font: 600 .9rem/1.2 var(--s-fb); }
.skip-link:focus { left: 0; }
