/* ===== mobile-first, шаблон pqsm ===== */

/* PT Sans — self-hosted woff2 (кириллица + латиница) */
@font-face { font-family: 'PT Sans'; font-style: normal; font-weight: 400; font-display: swap;
    src: url('/fonts/ptsans-400-cyrillic.woff2') format('woff2');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'PT Sans'; font-style: normal; font-weight: 400; font-display: swap;
    src: url('/fonts/ptsans-400-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; }
@font-face { font-family: 'PT Sans'; font-style: normal; font-weight: 700; font-display: swap;
    src: url('/fonts/ptsans-700-cyrillic.woff2') format('woff2');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'PT Sans'; font-style: normal; font-weight: 700; font-display: swap;
    src: url('/fonts/ptsans-700-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; }

* { box-sizing: border-box; }
body { font-family: 'PT Sans', -apple-system, 'Segoe UI', Roboto, sans-serif; margin: 0; background: #f4f4f6; color: #423e3e; font-size: 16px; }
a { color: #5a5656; }
img { max-width: 100%; }
.wrap { max-width: 1180px; margin: 0 auto; padding: 0 10px; }

/* --- шапка --- */
header.site-header { background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.12); position: sticky; top: 0; z-index: 50; }
header.site-header .wrap { display: flex; align-items: center; gap: 10px; padding-top: 8px; padding-bottom: 8px; flex-wrap: wrap; }
.logo { display: inline-flex; align-items: center; gap: 8px; font-size: 20px; font-weight: bold; color: #423e3e; text-decoration: none; white-space: nowrap; }
.logo .logo-mark { display: block; flex: none; border-radius: 6px; }
.logo span { color: #423e3e; }
.header-city { color: #555; font-size: 13px; white-space: nowrap; }
.header-spacer { flex-grow: 1; }
.btn-add { display: inline-block; background: #d61f26; color: #fff; text-decoration: none; padding: 8px 14px; border-radius: 20px; font-weight: bold; font-size: 14px; white-space: nowrap; }
.btn-add:hover { background: #b01820; }

/* --- поиск (лупа в шапке + раскрывающаяся форма) --- */
.search-toggle { display: flex; align-items: center; justify-content: center; min-height: 44px; min-width: 44px; cursor: pointer; color: #423e3e; padding: 8px; background: none; border: 0; }
.search-toggle[aria-expanded="true"] { color: #d61f26; }
.header-search { background: #fff; border-top: 1px solid #eee; }
.header-search .wrap { display: flex; gap: 8px; padding-top: 8px; padding-bottom: 8px; }
.header-search input { flex: 1; min-width: 0; padding: 10px 14px; border: 1px solid #ddd; border-radius: 20px; font-size: 15px; font-family: inherit; }
.header-search input:focus { outline: none; border-color: #d61f26; }
.header-search button, .search-form button { background: #d61f26; color: #fff; border: 0; border-radius: 20px; padding: 10px 18px; font-weight: bold; font-size: 14px; cursor: pointer; font-family: inherit; }
.header-search button:hover, .search-form button:hover { background: #b01820; }
.search-form { display: flex; gap: 8px; margin: 12px 0; }
.search-form input { flex: 1; min-width: 0; padding: 10px 14px; border: 1px solid #ddd; border-radius: 20px; font-size: 15px; font-family: inherit; }
.search-form input:focus { outline: none; border-color: #d61f26; }

/* --- меню (мобильное: сворачивается) --- */
.menu-toggle { display: flex; align-items: center; justify-content: center; gap: 7px; min-height: 44px; min-width: 44px; cursor: pointer; color: #423e3e; font-weight: bold; font-size: 15px; padding: 8px 10px; background: none; border: 0; user-select: none; font-family: inherit; }
.menu-toggle .mt-ico { font-size: 20px; line-height: 1; }
nav.main-menu { display: none; background: #fff; border-top: 1px solid #eee; }
nav.main-menu.open { display: block; animation: menuDrop .18s ease; }
@keyframes menuDrop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
nav.main-menu ul { list-style: none; margin: 0; padding: 6px 10px; }
nav.main-menu > ul > li { border-bottom: 1px solid #f0f0f0; }
nav.main-menu > ul > li:last-child { border-bottom: 0; }
nav.main-menu a { text-decoration: none; color: #423e3e; }
nav.main-menu > ul > li > a, nav.main-menu summary { display: block; padding: 10px 4px; font-weight: bold; cursor: pointer; list-style: none; }
nav.main-menu summary::-webkit-details-marker { display: none; }
nav.main-menu summary:after { content: '▾'; float: right; color: #595959; }
nav.main-menu details[open] summary:after { content: '▴'; }
nav.main-menu .drop { columns: 2; padding: 0 0 8px 10px; }
nav.main-menu .drop li { break-inside: avoid; }
nav.main-menu .drop a { display: block; padding: 5px 4px; font-size: 14px; }
nav.main-menu .drop a:hover { color: #000; }
nav.main-menu .drop li.drop-group { padding: 6px 4px 3px; font-size: 13px; color: #595959; border-top: 1px solid #f0f0f0; margin-top: 4px; break-inside: avoid; }
nav.main-menu .drop li.drop-group:first-child { border-top: 0; margin-top: 0; }
nav.main-menu .drop li.drop-group b { font-weight: bold; color: #423e3e; }
nav.main-menu li.active > a { color: #000; }

main { padding: 14px 0 30px; }

h1 { font-size: 22px; margin: 10px 0 14px; }
.total-count { margin: -8px 0 12px; color: #595959; font-size: 14px; }
.muted { color: #595959; font-size: 14px; }

/* --- подкатегории-пилюли --- */
.subnav { margin: 0 0 14px; display: flex; flex-wrap: wrap; gap: 8px; }
.subnav a { display: inline-block; padding: 7px 14px; border-radius: 18px; text-decoration: none; background: #fff; color: #423e3e; border: 1px solid #ddd; font-size: 14px; }
.subnav a.active { background: #423e3e; color: #fff; border-color: #423e3e; font-weight: bold; }

/* --- карточки анкет: фото сверху, mobile = 1 колонка --- */
.cards { display: grid; grid-template-columns: 1fr; gap: 14px; }
.article { background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.10); display: flex; flex-direction: column; position: relative; cursor: pointer; transition: box-shadow .2s ease, transform .2s ease; }
.article .head { display: flex; justify-content: space-between; align-items: center; gap: 6px; margin-bottom: 4px; }
.article .h4 { font-size: 18px; font-weight: bold; }
.article .h4 a { color: #423e3e; text-decoration: none; }
/* вся карточка кликабельна: ссылка имени растянута на всю карточку */
.article .h4 a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.article .h4 a:hover { color: #000; }
/* интерактивные элементы поверх растянутой ссылки */
.article-socials a, .btn-call { position: relative; z-index: 2; }
.article-socials { display: flex; gap: 8px; list-style: none; margin: 0; padding: 0; }
.article-socials a { display: block; width: 26px; height: 26px; background-position: center; background-size: contain; background-repeat: no-repeat; }
.svgbg.whatsapp { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath fill='%230dc143' d='M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z'/%3E%3C/svg%3E"); }
.svgbg.telegram { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'%3E%3Cpath fill='%230f85c1' d='M248 8C111.033 8 0 119.033 0 256S111.033 504 248 504 496 392.967 496 256 384.967 8 248 8ZM362.952 176.66c-3.732 39.215-19.881 134.378-28.1 178.3-3.476 18.584-10.322 24.816-16.948 25.425-14.4 1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25 5.342-39.5 3.652-3.793 67.107-61.51 68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608 69.142-14.845 10.194-26.894 9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7 18.45-13.7 108.446-47.248 144.628-62.3c68.872-28.647 83.183-33.623 92.511-33.789 2.052-.034 6.639.474 9.61 2.885a10.452 10.452 0 0 1 3.53 6.716A43.765 43.765 0 0 1 362.952 176.66Z'/%3E%3C/svg%3E"); }
.svgbg.viber { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='%23665cac' d='M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z'/%3E%3C/svg%3E"); }
.article-foto { position: relative; }
.article-foto a { display: block; position: relative; aspect-ratio: 3/4; overflow: hidden; background: #efeef0; }
.article-foto img { width: 100%; height: 100%; object-fit: contain; display: block; }
.article-foto img.ph-hover { position: absolute; inset: 0; opacity: 0; transition: opacity .25s ease; }
.no-photo { width: 100%; aspect-ratio: 3/4; display: flex; align-items: center; justify-content: center; color: #595959; background: #efeef0; font-size: 13px; }
.badges { position: absolute; top: 6px; left: 6px; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.badge { color: #fff; font-size: 11px; font-weight: bold; padding: 2px 8px; border-radius: 10px; }
.b-verified { background: #008800; }
.b-video { background: #6b7280; }
.b-new { background: #2563eb; }
.article-body { padding: 8px 10px 10px; display: flex; flex-direction: column; gap: 3px; flex-grow: 1; }
.article-geo, .article-params { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.article-geo { font-size: 14px; }
.article-params { font-size: 13px; }
.article-price-row { display: flex; justify-content: space-between; align-items: baseline; margin-top: 4px; }
.article-price { font-weight: bold; font-size: 19px; color: #2b2828; letter-spacing: .2px; }
.article-hours { font-size: 13px; color: #555; font-weight: bold; }
.btn-call { display: block; text-align: center; background: #d61f26; color: #fff; text-decoration: none; font-weight: bold; font-size: 14px; padding: 8px 0; border-radius: 18px; margin-top: 7px; }
.btn-call:hover { background: #b01820; }
.article-work-hours { font-size: 13px; color: #555; font-weight: bold; margin-bottom: 4px; }

/* --- страница анкеты --- */
.anketa section { background: #fff; border-radius: 10px; box-shadow: 0 1px 4px rgba(0,0,0,.10); padding: 12px 14px; margin-bottom: 14px; }
.anketa .h2 { font-size: 18px; font-weight: bold; margin: 0 0 10px; }
.similar { margin-top: 24px; }
.similar .h2 { font-size: 18px; font-weight: bold; margin: 0 0 12px; }
.anketa-head h1 { margin: 0 0 6px; }
.badge-verified { display: inline-block; background: #008800; color: #fff; font-size: 12px; padding: 2px 8px; border-radius: 3px; vertical-align: middle; }
.badge-video { display: inline-block; background: #6b7280; color: #fff; font-size: 12px; padding: 2px 8px; border-radius: 3px; vertical-align: middle; }
.anketa-phone { font-size: 24px; font-weight: bold; margin: 8px 0; }
.anketa-phone a { color: #423e3e; text-decoration: none; }
.anketa-geo { color: #555; font-size: 14px; }
.anketa-geo a { color: inherit; text-decoration: none; }
.anketa-geo a:hover { text-decoration: underline; }
.breadcrumbs { font-size: 13px; color: #888; margin: 26px 0 16px; }
.breadcrumbs a { color: #555; text-decoration: none; }
.breadcrumbs a:hover { text-decoration: underline; }
.breadcrumbs .bc-sep { margin: 0 6px; color: #bbb; }
.anketa-messengers { display: flex; gap: 10px; margin: 8px 0; }
.anketa-messengers a { display: inline-flex; align-items: center; gap: 5px; text-decoration: none; font-weight: bold; font-size: 14px; color: #423e3e; }
.anketa-messengers i { display: block; width: 22px; height: 22px; background-position: center; background-size: contain; background-repeat: no-repeat; }
.photos video { width: 100%; }
.anketa video { display: block; max-width: 100%; width: auto; max-height: 70vh; margin: 10px auto 0; border-radius: 8px; }

/* --- галерея анкеты: мобильная свайп-лента --- */
.photos { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 8px; -webkit-overflow-scrolling: touch; scrollbar-width: none; align-items: flex-start; }
.photos::-webkit-scrollbar { display: none; }
.photos .ph { flex: 0 0 78%; scroll-snap-align: center; aspect-ratio: 3/4; overflow: hidden; background: #efeef0; border-radius: 8px; }
.photos .ph img { width: 100%; height: 100%; object-fit: contain; display: block; cursor: pointer; }
.gallery-hint { text-align: center; color: #595959; font-size: 13px; margin-top: 6px; }

/* --- лайтбокс --- */
.lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.93); z-index: 200; display: flex; align-items: center; justify-content: center; touch-action: none; }
.lightbox[hidden] { display: none; }
.lightbox img { max-width: 96vw; max-height: 88vh; object-fit: contain; border-radius: 6px; }
.lb-btn { position: absolute; background: rgba(255,255,255,.14); color: #fff; border: 0; font-size: 26px; width: 46px; height: 46px; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.lb-close { top: 12px; right: 12px; }
.lb-prev { left: 8px; top: 50%; transform: translateY(-50%); }
.lb-next { right: 8px; top: 50%; transform: translateY(-50%); }
.lb-counter { position: absolute; bottom: 14px; left: 0; right: 0; text-align: center; color: #ccc; font-size: 14px; }

/* --- липкая панель звонка (мобильная) --- */
.cta-bar { position: fixed; bottom: 0; left: 0; right: 0; background: #fff; box-shadow: 0 -2px 12px rgba(0,0,0,.18); padding: 8px 10px; display: flex; gap: 10px; align-items: center; z-index: 90; }
.cta-bar .btn-call { flex: 1; margin-top: 0; padding: 12px 0; font-size: 16px; }
.cta-bar .cta-msg { display: block; width: 42px; height: 42px; background-position: center; background-size: contain; background-repeat: no-repeat; flex-shrink: 0; }
body.has-cta main { padding-bottom: 70px; }
@media (min-width: 768px) { .cta-bar { display: none; } body.has-cta main { padding-bottom: 30px; } }
table.params-table { border-collapse: collapse; width: 100%; font-size: 14px; }
table.params-table td, table.params-table th { border-bottom: 1px solid #f0f0f2; padding: 9px 10px; text-align: left; }
table.params-table tr:nth-child(even) td, table.params-table tr:nth-child(even) th { background: #f8f8fa; }
table.params-table tr:last-child td, table.params-table tr:last-child th { border-bottom: 0; }
table.params-table th { width: 45%; color: #595959; font-weight: normal; }
table.params-table th .p-ico { display: inline-block; width: 20px; text-align: center; margin-right: 4px; }
.services-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.services-grid div { background: #f3f4f6; border-radius: 14px; padding: 6px 12px; font-size: 14px; }
.services-grid a { color: inherit; text-decoration: none; }
.services-grid a:hover { text-decoration: underline; }
.services-grid .svc-comment { display: block; color: #595959; font-size: 13px; }
.about-text { font-size: 14px; line-height: 1.5; }

/* --- страницы «Все метро» / «Все районы» --- */
.geo-index { background: #fff; border-radius: 10px; box-shadow: 0 1px 4px rgba(0,0,0,.10); padding: 14px; }
.geo-letter { font-weight: bold; font-size: 17px; color: #423e3e; margin: 12px 0 4px; }
.geo-letter:first-child { margin-top: 0; }
.geo-list { list-style: none; margin: 0; padding: 0; columns: 2; }
.geo-list li { break-inside: avoid; padding: 3px 0; }
.geo-list a { text-decoration: none; color: #423e3e; }
.geo-list a:hover { color: #000; text-decoration: underline; }
.geo-count { color: #595959; font-size: 13px; }
@media (min-width: 768px) { .geo-list { columns: 3; } }
@media (min-width: 1024px) { .geo-list { columns: 4; } }

.pagination { margin: 22px 0; text-align: center; }
.pagination nav { display: inline-block; }
.pagination a, .pagination span { color: #423e3e; padding: 4px 8px; text-decoration: none; }
.pagination-desktop { display: none; }
.btn-more { display: block; text-align: center; background: #423e3e; color: #fff; text-decoration: none; font-weight: bold; font-size: 16px; padding: 14px 0; border-radius: 24px; margin: 20px 0; }

footer.site-footer { background: #423e3e; color: #bcbcbc; padding: 24px 0 18px; font-size: 14px; }
footer.site-footer a { color: #e8e8e8; text-decoration: none; }
footer.site-footer a:hover { color: #fff; }
.footer-cols { display: flex; flex-wrap: wrap; gap: 18px 40px; }
.footer-col { min-width: 140px; }
.footer-col .f-head { color: #fff; font-weight: bold; margin-bottom: 8px; font-size: 15px; }
.footer-col ul { list-style: none; margin: 0; padding: 0; columns: 1; }
.footer-col li { margin-bottom: 5px; }
.footer-bottom { margin-top: 18px; padding-top: 14px; border-top: 1px solid #575353; font-size: 13px; display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; }

/* ===== планшет ===== */
@media (min-width: 768px) {
    .cards { grid-template-columns: repeat(3, 1fr); gap: 16px; }
    .photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; overflow: visible; }
    .photos .ph { flex: none; scroll-snap-align: none; }
    nav.main-menu .drop { columns: 3; }
    .pagination-desktop { display: block; }
    .btn-more { display: none; }
}

/* ===== десктоп ===== */
@media (min-width: 1024px) {
    .menu-toggle { display: none; }
    nav.main-menu { display: block; }
    nav.main-menu > ul { display: flex; flex-wrap: wrap; gap: 2px 14px; padding: 0 10px; max-width: 1180px; margin: 0 auto; }
    nav.main-menu > ul > li { border-bottom: 0; position: relative; }
    nav.main-menu > ul > li > a, nav.main-menu summary { padding: 10px 4px; }
    nav.main-menu details .drop { position: absolute; top: 100%; left: 0; min-width: 220px; background: #fff; box-shadow: 0 4px 12px rgba(0,0,0,.15); columns: 1; z-index: 40; padding: 6px 0; }
    .cards { grid-template-columns: repeat(4, 1fr); gap: 18px; }
    .photos { grid-template-columns: repeat(4, 1fr); }
    .anketa .cols { display: flex; gap: 14px; }
    .anketa .cols > section { flex: 1; margin-bottom: 0; }
}

/* ховер-эффект только на устройствах с мышью */
@media (hover: hover) {
    .article:hover .article-foto img.ph-hover { opacity: 1; }
    .article:hover { box-shadow: 0 6px 18px rgba(0,0,0,.18); transform: translateY(-2px); }
    .article:hover .h4 a { color: #d61f26; }
}

/* --- тач-таргеты минимум 44px на сенсорных устройствах (Apple HIG / Material) --- */
@media (pointer: coarse) {
    .btn-add { padding: 12px 18px; font-size: 15px; }
    nav.main-menu > ul > li > a, nav.main-menu summary { padding: 13px 4px; }
    nav.main-menu .drop a { padding: 11px 4px; }
    .article-socials { gap: 4px; }
    .article-socials a { width: 44px; height: 44px; background-size: 26px 26px; }
    .btn-call { padding: 12px 0; font-size: 16px; min-height: 44px; }
    .geo-list li { padding: 0; }
    .geo-list a { display: block; padding: 11px 4px; }
    footer.site-footer .footer-col a { display: inline-block; padding: 7px 0; }
    .anketa-messengers a { padding: 10px 4px; }
    .anketa-messengers i { width: 26px; height: 26px; }
    .btn-more { padding: 16px 0; }
}

/* --- пагинация (кастомный вид вместо Tailwind-дефолта) --- */
.pgn { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; }
.pgn-btn { min-width: 40px; min-height: 40px; display: inline-flex; align-items: center; justify-content: center; padding: 6px 12px; border-radius: 8px; background: #fff; color: #423e3e; text-decoration: none; font-weight: bold; font-size: 14px; box-shadow: 0 1px 3px rgba(0,0,0,.10); }
.pgn-btn:hover { box-shadow: 0 2px 6px rgba(0,0,0,.14); }
.pgn-cur { background: #d61f26; color: #fff; }
.pgn-dis { opacity: .45; }

/* ===== a11y / adaptivity fixes ===== */

/* Дропдауны меню: не за правый край вьюпорта, скролл по высоте */
@media (min-width: 1024px) {
    nav.main-menu details .drop {
        max-height: calc(100vh - 110px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }
    nav.main-menu > ul > li:last-child .drop,
    nav.main-menu > ul > li:nth-last-child(2) .drop {
        left: auto;
        right: 0;
    }
}

/* Длинные неразрывные строки не ломают вёрстку */
.services-grid div, .about-text, .anketa-phone a,
.geo-list a, nav.main-menu .drop a, h1 {
    overflow-wrap: anywhere;
}

/* Инлайн-ссылки в контенте — подчёркивание (WCAG 1.4.1) */
main p a, .about-text a, .cat-text a { text-decoration: underline; text-underline-offset: 2px; }

/* Явные focus-состояния */
a:focus-visible, button:focus-visible, summary:focus-visible {
    outline: 3px solid #2563eb; outline-offset: 2px; border-radius: 4px;
}
.btn-call:focus-visible, .btn-add:focus-visible {
    outline-color: #fff; box-shadow: 0 0 0 3px #2563eb;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* Ширина 45% — только первой колонке таблиц, не шапке таблицы цен */
table.params-table th { width: auto; }
table.params-table tr > th:first-child { width: 45%; }

/* Скрытый текст для скринридеров */
.visually-hidden {
    position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Страховка пропорций и от горизонтального скролла */
img { height: auto; }
body { overflow-x: clip; } /* не ломает position: sticky, Safari 16+ */

/* Быстрые фильтры на мобильном (первый экран каталога); на десктопе есть меню */
.quick-filters { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 10px; margin: 0 0 12px; scrollbar-width: thin; }
.quick-filters a { flex: 0 0 auto; padding: 7px 14px; border-radius: 18px; text-decoration: none; background: #fff; color: #423e3e; border: 1px solid #ddd; font-size: 14px; white-space: nowrap; }
.quick-filters a:focus-visible { outline: 2px solid #d61f26; outline-offset: 2px; }
@media (min-width: 768px) { .quick-filters { display: none; } }

/* Страница 404 */
.e404 { text-align: center; padding: 48px 16px 64px; }
.e404-code { font-size: 72px; font-weight: 700; color: #d61f26; line-height: 1; }
.e404-h { font-size: 24px; margin: 12px 0 8px; }
.e404-t { color: #6b6b6b; margin: 0 0 24px; }
.e404-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.e404-actions .btn-cta { background: #d61f26; color: #fff; text-decoration: none; font-weight: bold; padding: 12px 26px; border-radius: 24px; }
.e404-actions .btn-ghost { background: #fff; color: #423e3e; text-decoration: none; padding: 12px 22px; border-radius: 24px; border: 1px solid #ddd; }
.e404-actions a:focus-visible { outline: 2px solid #d61f26; outline-offset: 2px; }

/* SEO-текст категории (сайт-уровень, site_category_texts) */
.seo-text { max-width: 760px; color: #555; margin-top: 26px; font-size: 14px; line-height: 1.55; }
.seo-text h2 { font-size: 20px; color: #423e3e; margin: 0 0 12px; line-height: 1.3; }
.seo-text h3 { font-size: 16px; color: #423e3e; margin: 22px 0 8px; line-height: 1.3; }
.seo-text h4 { font-size: 15px; color: #423e3e; margin: 18px 0 6px; }
.seo-text p { margin: 0 0 12px; }
.seo-text ul, .seo-text ol { margin: 0 0 12px; padding-left: 22px; }
.seo-text li { margin: 0 0 6px; }
.seo-text a { color: #d61f26; text-decoration: underline; }
.seo-text a:hover { text-decoration: none; }
.seo-text a:focus-visible { outline: 2px solid #d61f26; outline-offset: 2px; }
.seo-text strong, .seo-text b { color: #423e3e; }

/* --- жалоба на анкету (предупреждение + модалка) --- */
.pay-warning { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; background: #fff3f3; border: 1px solid #f3c2c2; border-radius: 10px; padding: 10px 14px; margin: 12px 0; }
.pay-warning p { flex: 1 1 260px; margin: 0; font-size: 13px; color: #8a1c1c; line-height: 1.45; }
.pay-warning .complaint-ok { color: #1c6e1c; font-weight: bold; }
.btn-complaint { background: #d61f26; color: #fff; border: 0; border-radius: 20px; padding: 8px 16px; font-weight: bold; font-size: 14px; cursor: pointer; font-family: inherit; white-space: nowrap; }
.btn-complaint:hover { background: #b01820; }
.complaint-modal { position: fixed; inset: 0; z-index: 210; display: flex; align-items: center; justify-content: center; padding: 16px; }
.complaint-modal[hidden] { display: none; }
.cm-overlay { position: absolute; inset: 0; background: rgba(0,0,0,.55); }
.cm-box { position: relative; background: #fff; border-radius: 12px; padding: 20px; width: 100%; max-width: 460px; box-shadow: 0 10px 40px rgba(0,0,0,.3); }
.cm-close { position: absolute; top: 8px; right: 10px; background: none; border: 0; font-size: 26px; line-height: 1; cursor: pointer; color: #777; }
.cm-title { font-size: 18px; font-weight: bold; color: #423e3e; margin-bottom: 8px; }
.cm-info { font-size: 13px; color: #555; line-height: 1.45; margin: 0 0 12px; }
.cm-box textarea { width: 100%; min-height: 110px; box-sizing: border-box; border: 1px solid #ddd; border-radius: 8px; padding: 10px; font-size: 14px; font-family: inherit; resize: vertical; }
.cm-box textarea:focus { outline: none; border-color: #d61f26; }
.cm-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.cm-file { display: block; font-size: 13px; color: #555; margin: 10px 0; }
.cm-file input { display: block; margin-top: 4px; font-size: 13px; }
.cm-error { color: #d61f26; font-size: 13px; margin: 8px 0 0; }
.cm-submit { background: #d61f26; color: #fff; border: 0; border-radius: 20px; padding: 10px 20px; font-weight: bold; font-size: 14px; cursor: pointer; font-family: inherit; width: 100%; }
.cm-submit:hover { background: #b01820; }
.cm-captcha { display: flex; gap: 10px; align-items: center; margin: 10px 0; }
.cm-captcha img { height: 44px; border: 1px solid #ddd; border-radius: 8px; cursor: pointer; flex: none; }
.cm-captcha input { flex: 1; min-width: 0; padding: 10px 12px; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; font-family: inherit; }
.cm-captcha input:focus { outline: none; border-color: #d61f26; }
.faq-section-title { margin: 22px 0 10px; font-size: 20px; }
.faq-list { display: flex; flex-direction: column; gap: 8px; }
.faq-item { border: 1px solid #e5e5e5; border-radius: 10px; background: #fff; }
.faq-item summary { padding: 12px 40px 12px 14px; font-weight: bold; cursor: pointer; list-style: none; position: relative; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary:after { content: '▾'; position: absolute; right: 14px; top: 12px; color: #595959; }
.faq-item[open] summary:after { content: '▴'; }
.faq-answer { padding: 0 14px 12px; line-height: 1.55; }
