/* Адаптация вёрстки макета к живому сайту: настоящие формы, списки, окна. Цвета — из tokens.css. */
body.service-site { background: var(--bg); color: var(--ink); font-family: var(--font); }
.main { display: block; }
[hidden] { display: none !important; }
.dock button { display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--ink-dock-2); text-align: center; }
/* Главная: город, поиск, ячейки — настоящие поля и выпадающие окна */
.c-top { z-index: 12; }
.c-city-pop { position: relative; }
.c-city-pop > summary { list-style: none; cursor: pointer; }
.c-city-pop > summary::-webkit-details-marker { display: none; }
.c-city-pop .cf-panel { position: absolute; z-index: 40; left: 0; top: calc(100% + 8px); width: 240px; padding: 10px; border: 1px solid var(--line); border-radius: 18px; background: var(--bg); box-shadow: 0 18px 40px -16px rgb(0 0 0 / .85); }
.cf-city__list { margin: 6px 0 0; padding: 0; list-style: none; max-height: 280px; overflow-y: auto; scrollbar-width: none; }
.cf-city__list::-webkit-scrollbar { display: none; }
.cf-city__list a { display: flex; justify-content: space-between; padding: 11px 10px; border-radius: 12px; font-size: 14px; }
.cf-city__list a[aria-current] { color: var(--accent-dock-2); }
.cf-city__list span { color: var(--ink-2); }
.cf-find { display: flex; align-items: center; gap: 8px; height: 40px; padding: 0 12px; border: 1px solid var(--line); border-radius: 20px; }
.cf-find svg { width: 16px; height: 16px; stroke-width: 1.5; }
.cf-find input { flex: 1; min-width: 0; font-size: 14px; outline: 0; }
.c-top__me { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.c-top__avatar { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--accent-book); color: var(--white); font-weight: 700; }
.notification-bell { position: relative; display: grid; place-items: center; width: 34px; height: 34px; }
.notification-bell svg { width: 21px; height: 21px; }
.c-panel { z-index: 10; }
.c-search__f { position: relative; flex: 1; min-width: 0; height: 100%; }
.c-search__f input { width: 100%; margin-left: 10.5px; }
.c-search__filters { position: relative; display: grid; place-items: center; }
.c-search__count { position: absolute; right: -6px; top: -6px; display: grid; place-items: center; min-width: 15px; height: 15px; border-radius: 8px; background: var(--accent-book); color: var(--white); font-size: 10px; }
.suggest:empty { display: none; }
.suggest { position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 8px); padding: 6px; border: 1px solid var(--line); border-radius: 16px; background: var(--bg); }
.c-cells { position: relative; }
.c-cell > span { min-width: 0; }
.c-cell__v { display: block; width: 100%; padding: 0; border: 0; background: none; color: inherit; font-size: 12.75px; font-weight: 700; line-height: 17px; text-align: left; outline: 0; list-style: none; cursor: pointer; white-space: nowrap; }
.c-cell__v::-webkit-details-marker { display: none; }
input.c-cell__v::placeholder { color: var(--ink); opacity: 1; }
.c-cell--guests { position: relative; }
.c-cell--guests select { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.c-cell--guests .c-cell__v::before { content: ""; position: absolute; inset: 0; }
.nh-cal { left: 0 !important; right: 0 !important; top: calc(100% + 4px) !important; }
.nh-times:not([hidden]) { display: grid; position: absolute; z-index: 30; left: 0; right: 0; top: calc(100% + 4px); grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; padding: 12px; max-height: 260px; overflow-y: auto; border: 1px solid var(--line); border-radius: 16px; background: var(--bg); box-shadow: 0 18px 40px -18px rgb(0 0 0 / .8); }
.nh-times button { height: 34px; border: 1px solid var(--line); border-radius: 999px; background: var(--plate-4); font-size: 12px; text-align: center; white-space: nowrap; }
.nh-times button.is-selected { border-color: transparent; background: var(--accent-book); color: var(--white); font-weight: 700; }
.nh-times button:disabled { opacity: .3; }
.c-hint { padding: 0 2px; color: var(--accent-soft); font-size: 11.5px; }
.c-chips { position: relative; display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 16px 0; }
.c-chip { padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; font-size: 12px; }
.c-map { display: inline-flex; }
.c-card--nophoto { height: 60px; }
.c-fav[aria-pressed="true"] { color: var(--accent-book); }
.c-fav[aria-pressed="true"] svg { fill: currentColor; }
.c-results { position: relative; }
/* Шторка фильтров: настоящее окно поверх страницы, как экран g-filters */
.fl-dialog { width: 100%; max-width: 560px; max-height: calc(100dvh - 60px); margin: auto auto 0; padding: 0; border: 0; background: none; color: var(--ink); overflow-y: auto; }
.fl-dialog::backdrop { background: rgb(0 0 0 / .55); }
.fl-dialog .fl-sheet { margin: 0; }
.fl-h h1:focus { outline: 0; }
.fl-sheet .cf-check input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.fl-sheet .cf-check { position: relative; cursor: pointer; }
.fl-chip:has(input:checked), .fl-type:has(input:checked), .fl-types:not(:has(input:checked)) .fl-type--any { background: var(--seg-on); border: 1px solid var(--line-7); color: var(--white); font-weight: 700; }
.fl-chip:has(input:disabled), .fl-type:has(input:disabled) { opacity: .45; }
.fl-seg { grid-template-columns: repeat(3, 1fr); }
.fl-seg label { display: grid; place-items: center; border-radius: var(--r-seg); font-weight: 700; }
.fl-seg label:has(input:checked) { background: var(--seg-on); }
.fl-sel { position: relative; }
.fl-sel .wk-dd { position: static; display: flex; flex: 1; align-self: stretch; }
.ds .fl-sel .wk-dd__btn { height: 100%; padding: 0 22px 0 0; background: transparent; color: var(--ink-tab); font-size: 13px; font-weight: 400; letter-spacing: .03em; }
.ds .fl-sel .wk-dd__list { left: 0; right: 0; top: calc(100% + 6px); z-index: 60; background: var(--bg); }
.ds .fl-sel .wk-dd__list button.is-selected { color: var(--accent-book); }
.fl-metro > summary { list-style: none; cursor: pointer; }
.fl-metro > summary::-webkit-details-marker { display: none; }
.fl-metro__list { display: grid; gap: 6px; margin-top: 8px; }
.fl-metro__list input[type=search] { height: 36px; padding: 0 14px; border: 1px solid var(--line); border-radius: 18px; font-size: 13px; outline: 0; }
.fl-metro__list .cf-check { display: flex; justify-content: space-between; padding: 8px 14px; border-radius: 14px; font-size: 13px; }
.fl-metro__list .cf-check:has(input:checked) { background: var(--seg-on); }
.fl-metro__list small { color: var(--ink-2); }
.fl-show { width: 100%; }
.cf-more, [data-cf-fold] > button { grid-column: 1 / -1; justify-self: start; display: flex; align-items: center; gap: 9px; height: 30px; padding: 0 14px; border-radius: 15px; background: var(--plate-4); font-size: 12px; }
html.cf-lock { overflow: hidden; }
.cf-map { position: relative; margin: 0 16px; }
.cf-map__canvas { height: 460px; border-radius: 16px; overflow: hidden; }
.empty { margin: 24px 16px; text-align: center; color: var(--ink-2); }
.empty .btn { display: inline-block; margin-top: 12px; padding: 10px 18px; border: 1px solid var(--line); border-radius: 999px; }
.catalog-alternatives { padding: 0 16px; }
/* Толик открывается из нижнего меню, отдельная кнопка на телефоне не нужна */
.booking-assistant__launcher { display: none !important; }
.catalog-main { position: relative; }
/* Место под нижнее меню */
body.service-site { padding-bottom: 64px; }
/* Толик: окно на весь экран над нижним меню, раскладка как g-tolik */
.to-panel { position: fixed; z-index: 45; inset: 0 0 63px; display: flex; flex-direction: column; background: var(--bg-deep); color: var(--ink); }
.to-panel .to-h { position: relative; flex: none; }
.to-close { position: absolute; right: 14px; top: 30px; display: none; color: var(--ink); }
@media (min-width: 761px) { .to-close { display: grid; } }
.to-scroll { flex: 1; min-height: 0; overflow-y: auto; padding: 0 !important; background: none !important; }
.to-welcome { position: relative; }
.to-panel .to-img { top: 0; }
.to-panel .to-bubble { top: 33px; }
.to-panel .to-start { margin-top: 239px; }
.to-form { flex: none; }
.to-panel .to-in { margin: 8px 18px 0; }
.to-in textarea { flex: 1; min-width: 0; height: 22px; padding: 0; border: 0; outline: 0; resize: none; background: none; color: var(--ink); font: inherit; font-size: 13.500px; line-height: 22px; }
.to-in textarea::placeholder { color: var(--ink-tab); opacity: 1; }
.to-status:empty { display: none; }
.to-status { display: block; margin: 6px 18px 0; color: var(--ink-tab); font-size: 12px; }
.to-note a { color: inherit; text-decoration: underline; }
.booking-assistant__note { margin: 0 18px 8px; color: var(--ink-tab); font-size: 9.5px; text-align: center; }
.to-panel .assistant-message { margin: 10px 18px; }
.to-panel { inset: 0; z-index: 60; text-align: left; }
.to-panel .to-s { text-align: left; }
.to-s .g-chev { margin-left: auto; }
.to-panel .to-start { margin-top: 239px; text-align: left; }
.to-bubble { text-align: left; }
.to-panel .to-in { margin-top: 0; }
/* Карточка заведения: живые вкладки, галерея, «Поделиться», часы */
body.service-site:has(.dock--place) { padding-bottom: 143px; }
.p-tab[aria-current] { color: var(--white); font-weight: 700; }
.p-tab[aria-current]::before { content: ""; position: absolute; left: 14%; right: 14%; bottom: -1px; height: 3px; border-radius: 3px; background: var(--tab-line); }
#screen:has([data-vh-panel="about"]:not([hidden])) .p-tabs--line { border-bottom: 0; }
.p-hero .scene-slider { position: absolute; inset: 0; }
.p-hero .scene-slide { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; object-fit: cover; opacity: 0; }
.p-hero .scene-slide.is-active { opacity: 1; }
.p-hero .scene-counter, .p-hero .venue-lightbox-open, .illustration-label { display: none; }
.p-hero__fade { pointer-events: none; }
.p-hero__btns { z-index: 3; }
.p-hero__back { margin-right: auto; }
.vp-share summary { list-style: none; cursor: pointer; }
.vp-share summary::-webkit-details-marker { display: none; }
.vp-share .vp-panel { position: absolute; right: 0; top: calc(100% + 8px); bottom: auto; z-index: 30; width: 260px; padding: 10px; border: 1px solid var(--line); border-radius: 18px; background: var(--bg); }
/* Телефон: окно «Поделиться» по центру экрана, под кнопкой. Не absolute: фото-шапка обрезает всё, что ниже её края */
@media (max-width: 1023px) {
  .vp-share .vp-panel { position: fixed; top: 62px; left: 0; right: 0; width: min(320px, calc(100vw - 32px)); max-height: calc(100dvh - 80px); margin: 0 auto; }
}
.vp-share__url { width: 100%; height: 38px; padding: 0 12px; border: 1px solid var(--line); border-radius: 19px; font-size: 12px; color: var(--ink-tab); }
.vp-share .vp-btn { display: block; width: 100%; height: 38px; margin: 8px 0; border-radius: 19px; background: var(--accent-book); color: var(--white); font-size: 14px; font-weight: 600; text-align: center; }
.vp-share__item { display: flex; align-items: center; gap: 10px; padding: 8px 4px; font-size: 14px; }
.vp-share__logo { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--brand); }
.vp-share__logo svg { width: 15px; height: 15px; fill: #fff; stroke: none; }
.p-row--hours details { position: relative; }
.p-row--hours summary { display: flex; align-items: center; gap: 6px; list-style: none; cursor: pointer; }
.p-row--hours summary::-webkit-details-marker { display: none; }
.vp-hours__panel { position: absolute; z-index: 30; left: -38px; top: calc(100% + 6px); width: 300px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 16px; background: var(--bg); }
.vp-hours__panel p { display: flex; justify-content: space-between; margin: 4px 0; font-size: 13.5px; }
.vp-hours__panel p.is-today { color: var(--white); font-weight: 700; }
.vp-hours__note { color: var(--ink-2); font-size: 12px; }
.p-hint { display: block; color: var(--ink-2); font-size: 12px; }
.p-note { margin: 8px 20px 0; color: var(--ink-2); font-size: 12px; }
.p-closed { display: grid; gap: 2px; margin: 10px 20px 0; padding: 10px 14px; border: 1px solid var(--line); border-radius: 14px; font-size: 13px; }
.p-extra:empty { display: none; }
.p-extra { padding: 0 20px; }
.p-extra .vp-notice { margin-top: 14px; color: var(--ink-2); font-size: 13px; line-height: 1.45; }
.p-extra .panel, .p-extra .venue-claim { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 14px; font-size: 13px; }
.p-extra .btn { display: inline-block; margin-top: 8px; padding: 9px 14px; border-radius: 14px; background: var(--accent-book); color: var(--white); font-size: 13px; font-weight: 600; }
.venue-offers h2 { margin: 16px 0 9px; font-size: 19px; font-weight: 800; }
.venue-offer { margin-top: 8px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 14px; font-size: 13px; }
.m-row { gap: 12px; }
.m-row span:first-child { flex: 1; min-width: 0; }
.m-row small { display: block; color: var(--ink-2); font-size: 12px; }
.m-row--photo { height: auto; padding: 6px 0; }
.m-row--photo img { width: 48px; height: 48px; border-radius: 10px; object-fit: cover; }
.m-list .vp-btn { display: inline-block; margin-top: 10px; padding: 9px 14px; border-radius: 14px; background: var(--accent-book); color: var(--white); font-size: 13px; }
.m-list .muted { color: var(--ink-2); font-size: 13px; }
.r-sort { display: flex; gap: 6px; padding: 12px 20px 0; font-size: 12px; }
.r-sort a { padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; }
.r-sort a.is-active { background: var(--seg-on); }
.r-tags { margin-top: 8px; color: var(--ink-2); font-size: 12px; }
.r-ava { object-fit: cover; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* Бронь: настоящие поля и окна выбора внутри плашек макета */
body.service-site:not(:has(.dock)) { padding-bottom: 0; }
.b-form { display: block; }
.vp-field { position: relative; }
.vp-native { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.vp-picker > summary { list-style: none; cursor: pointer; }
.vp-picker > summary::-webkit-details-marker { display: none; }
.b-pick span { min-width: 0; flex: 1; }
.b-pick--select { position: relative; cursor: pointer; }
.b-pick--select .wk-dd { position: static; display: block; }
.ds .b-pick--select .wk-dd__btn { height: 24px; padding: 0; border-radius: 0; background: transparent; color: var(--ink-value); font-size: 16.5px; font-weight: 700; line-height: 24px; }
.ds .b-pick--select .wk-dd__btn::after { display: none; }
.ds .b-pick--select .wk-dd__btn::before { content: ""; position: absolute; inset: -30px -70px -10px -70px; }
.ds .b-pick--select .wk-dd__list { left: 0; right: 0; top: calc(100% + 6px); z-index: 40; max-height: 260px; background: var(--bg); }
.ds .b-pick--select .wk-dd__list button { color: var(--ink); font-size: 15px; }
.ds .b-pick--select .wk-dd__list button.is-selected { background: var(--accent-book); color: var(--white); font-weight: 600; }
.b-pick select:not(.wk-dd__native) { display: block; width: 100%; height: 24px; color: var(--ink-value); font: inherit; font-weight: 700; }
.vp-panel.vp-cal, .vp-panel.vp-times { position: absolute; z-index: 40; left: 0; right: 0; top: calc(100% + 6px); bottom: auto; padding: 12px; border: 1px solid var(--line); border-radius: 18px; background: var(--bg); box-shadow: 0 18px 40px -16px rgb(0 0 0 / .85); }
.vp-cal__head { display: flex; align-items: center; justify-content: space-between; height: 36px; font-size: 15px; }
.vp-cal__head button { width: 36px; height: 36px; border-radius: 50%; font-size: 20px; text-align: center; }
.vp-cal__head button:disabled { opacity: .3; }
.vp-cal__week, .vp-cal__days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); text-align: center; }
.vp-cal__week span { padding: 4px 0; color: var(--ink-2); font-size: 11.5px; }
.vp-cal__week .is-weekend { color: var(--accent-soft); }
.vp-cal__days button { height: 38px; border-radius: 50%; text-align: center; font-size: 14px; }
.vp-cal__days button:disabled { opacity: .25; }
.vp-cal__days button.is-today { box-shadow: inset 0 0 0 1px var(--line); }
.vp-cal__days button.is-selected, .vp-cal__days button[aria-selected="true"] { background: var(--accent-book); color: var(--white); font-weight: 700; }
/* Время брони: барабан часов и минут, как в будильнике iPhone */
.vp-time { display: none; }
.vp-wheels { position: relative; display: grid; grid-template-columns: 1fr 16px 1fr; align-items: center; height: 200px; }
.vp-wheels[hidden] { display: none; }
.vp-wheels::before { content: ""; position: absolute; left: 0; right: 0; top: 80px; height: 40px; border-radius: 12px; background: var(--plate-3); pointer-events: none; }
.vp-wheels > i { position: relative; color: var(--ink); font-size: 20px; font-style: normal; font-weight: 700; text-align: center; }
.vp-wheel { position: relative; height: 200px; padding: 80px 0; overflow-y: auto; scroll-snap-type: y mandatory; overscroll-behavior: contain; scrollbar-width: none; -webkit-mask-image: linear-gradient(transparent, #000 32%, #000 68%, transparent); mask-image: linear-gradient(transparent, #000 32%, #000 68%, transparent); }
.vp-wheel::-webkit-scrollbar { display: none; }
.vp-wheel button { display: block; width: 100%; height: 40px; color: var(--ink); font-size: 20px; font-weight: 600; text-align: center; scroll-snap-align: center; }
.vp-wheel-done { display: block; width: 100%; height: 44px; margin-top: 10px; border-radius: 22px; background: var(--accent-book); color: var(--white); font-size: 15px; font-weight: 700; text-align: center; }
.vp-radio { display: none; }
.vp-times__closed { padding: 8px 4px 0; color: var(--ink-2); font-size: 13px; }
.b-error { display: block; margin: -4px 26px 0; color: var(--accent-soft); font-size: 12px; }
.is-bad.b-input, .is-bad.b-pick, .is-bad .b-pick { border-color: var(--accent-soft); }
.b-note--msg { height: auto; min-height: 53px; padding: 12px 16px; }
button.b-cta { width: calc(100% - 32px); }
.b-legal { margin: 0 20px 18px; color: var(--ink-2); font-size: 11px; line-height: 16px; text-align: center; }
.b-legal a { text-decoration: underline; }
.ds .b-pick--select .wk-dd__btn { border: 0; box-shadow: none; }
/* Вход и регистрация: настоящие формы, выбор кода страны, глазик пароля, ошибки */
.a-field .na-cc { display: flex; align-items: center; gap: 6px; font-size: 14px; white-space: nowrap; }
.a-field .na-cc::after { content: ""; width: 6px; height: 6px; margin: -3px 0 0 4px; border: solid currentColor; border-width: 0 1.6px 1.6px 0; transform: rotate(45deg); }
.na-phone { position: relative; }
.na-phone > select { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.na-cc-list:not([hidden]) { position: absolute; z-index: 40; left: 0; top: calc(100% + 6px); width: 260px; max-height: 260px; overflow-y: auto; padding: 6px; border: 1px solid var(--line); border-radius: 16px; background: var(--bg); box-shadow: 0 18px 40px -16px rgb(0 0 0 / .85); }
.na-cc-list button { display: flex; gap: 10px; width: 100%; padding: 9px 10px; border-radius: 10px; font-size: 13.5px; }
.na-cc-list button b { flex: none; }
.na-cc-list button.is-selected { color: var(--accent-book); }
.pw-field { display: flex; flex: 1; align-items: center; min-width: 0; height: 100%; }
.pw-toggle { display: grid; place-items: center; flex: none; width: 24px; height: 24px; color: var(--ink); }
.pw-toggle svg { width: 20px; height: 20px; stroke-width: 1.8; }
/* Автозаполнение браузера (Яндекс, Chrome): без синей подложки во всех полях — поле остаётся своего цвета,
   текст белый. Подложку браузер рисует фоном, поэтому её смену «откладываем» на очень долгий переход. */
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus, textarea:-webkit-autofill, select:-webkit-autofill {
  -webkit-text-fill-color: var(--ink); caret-color: var(--ink); box-shadow: none; transition: background-color 600000s 0s, color 600000s 0s; }
.a-err { display: block; margin: 8px 4px 0; color: var(--accent-soft); font-size: 12px; line-height: 16px; }
.a-field.is-bad { border-color: var(--accent-soft); }
.a-btn { cursor: pointer; }
.a-body--biz h1 { max-width: 180px; }
.a-body--biz > p { max-width: 240px; }
.a-body--rs h1 { max-width: 230px; }
.a-forgot { text-decoration: none; }
.h-contacts a { display: flex; align-items: center; gap: 12px; }
@media (max-width: 760px) { .a-back.is-swipe { display: none; } }
.pw-field { position: relative; }
/* Шапка и меню: настоящие колокольчик, окно аккаунта и меню сайта */
.g-bell b.is-empty { display: none; }
.g-acc > summary { list-style: none; cursor: pointer; overflow: hidden; }
.g-acc > summary::-webkit-details-marker { display: none; }
.g-acc img { width: 100%; height: 100%; object-fit: cover; }
.g-acc .pn-acc { z-index: 40; }
.pn-acc form { display: flex; }
.notification-panel.pn-panel { z-index: 40; max-height: 70vh; overflow-y: auto; }
.notification-panel [data-notification-list] p { padding: 14px 0; color: var(--ink-2); font-size: 13px; }
.notification-item { position: relative; display: flex; gap: 12px; padding: 11px 0 12px; border-bottom: 1px solid var(--line-2); }
.notification-item:last-child { border: 0; }
.notification-item > i { flex: none; width: 8px; height: 8px; margin-top: 7px; border-radius: 50%; }
.notification-item.is-unread > i { background: var(--accent-book); }
.notification-item strong { display: block; font-size: 14.5px; font-weight: 700; line-height: 22px; }
.notification-item span span { display: block; font-size: 14px; line-height: 24px; color: var(--ink-row); }
.notification-item time { display: block; color: var(--ink-2); font-size: 12.5px; line-height: 20px; }
.me-dialog { width: 100%; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; background: var(--bg); color: var(--ink); overflow-y: auto; }
.me-dialog::backdrop { background: var(--bg); }
.me-dialog .me-auth a { display: grid; place-items: center; }
.me-pill[aria-pressed="true"], .pm-pill[aria-pressed="true"] { background: var(--seg-on); }
.pm-out { width: calc(100% - 32px); }
.i-gear, .g-gear { color: var(--ink); }
.sv-link { margin: 14px 16px 0; color: var(--ink-2); font-size: 13px; text-decoration: underline; }
.sv-owner { margin: 22px 20px 0; color: var(--ink-2); font-size: 13px; line-height: 1.45; }
/* Контакты, блог, карта, банкет, брони, заявка, профиль: живые элементы */
.bl-a { display: block; }
.bl-f a { flex: none; }
.bl-none { padding: 20px 16px; }
.l-foot { display: flex; }
/* Карта: настоящая Leaflet под элементами макета */
.mp-canvas { position: absolute; inset: 0; z-index: 0; }
.mp-map { height: calc(100dvh - 110px - 63px); min-height: 460px; margin-bottom: 0; }
.mp-filters { position: absolute; z-index: 500; left: 16px; top: 12px; max-width: calc(100% - 32px); }
.mp-filters > summary { position: static; display: inline-flex; align-items: center; list-style: none; cursor: pointer; }
.mp-filters > summary::-webkit-details-marker { display: none; }
.map-filter-options { display: grid; gap: 8px; margin-top: 8px; padding: 12px; border: 1px solid var(--line); border-radius: 16px; background: var(--bg); font-size: 13px; }
.map-filter { display: flex; align-items: center; gap: 8px; }
.map-select { height: 36px; padding: 0 12px; border: 1px solid var(--line); border-radius: 18px; background: var(--plate-4); color: var(--ink); }
.mp-loc { z-index: 500; top: auto; bottom: 92px; }
.mp-hint { z-index: 500; top: auto; bottom: 88px; pointer-events: none; }
.mp-status { position: absolute; z-index: 500; left: 16px; bottom: 28px; color: var(--ink-2); font-size: 12px; }
.mp-status:empty { display: none; }
.mp-map .leaflet-top.leaflet-left { top: 60px; }
.mp-map .leaflet-control-zoom.leaflet-bar { display: grid; gap: 6px; margin: 0 0 0 11px; border: 0; box-shadow: none; }
.mp-map .leaflet-control-zoom.leaflet-bar a { width: 32px; height: 32px; border: 0; border-radius: 50%; background: var(--map-ui); color: var(--ink); font: 400 22px/30px var(--font); }
/* Банкет: настоящие поля в плашках */
.q-field--sel { position: relative; padding: 0; border: 0; background: none; }
.q-field input { width: 100%; }
.q-field--sel .wk-dd, .q-field--sel .wk-date { width: 100%; }
.ds .q-field--sel .wk-dd__btn { width: 100%; height: 100%; padding: 0 34px 0 16px; border: 1px solid var(--line); border-radius: 22px; background: transparent; color: var(--ink); font-size: 14px; font-weight: 400; box-shadow: none; }
.ds .q-field--sel .wk-dd__list { left: 0; right: 0; background: var(--bg); }
.ds .q-field--sel .wk-dd__list button { font-size: 14px; }
.ds .q-field--sel .wk-dd__list button.is-selected { background: var(--accent-book); color: var(--white); }
/* Брони и заявка */
.b-empty { margin: 8px 16px; padding: 16px; border: 1px solid var(--line); border-radius: 18px; font-size: 14px; }
.b-empty p + p { margin-top: 4px; color: var(--ink-2); }
.b-empty__go { display: inline-grid; place-items: center; height: 40px; margin-top: 12px; padding: 0 18px; border-radius: 20px; background: var(--accent-book); color: var(--white); font-weight: 600; }
.b-try { margin: 8px 18px; color: var(--ink-2); font-size: 13px; }
.b-try a { color: var(--accent-soft); }
.b-row__noimg { flex: none; width: 58px; height: 58px; border-radius: 12px; background: var(--plate-4); }
.booking-result .w-chat.has-msgs { height: auto; padding-bottom: 60px; }
.booking-chat__list { width: 100%; margin: 10px 0 0; padding: 0 12px; list-style: none; display: grid; gap: 8px; max-height: 340px; overflow-y: auto; }
.booking-chat__msg { max-width: 86%; padding: 8px 12px; border-radius: 14px; background: var(--plate-4); font-size: 13.5px; line-height: 19px; }
.booking-chat__msg.is-mine { justify-self: end; background: var(--seg-on); }
.booking-chat__meta { display: block; color: var(--ink-2); font-size: 11.5px; }
.booking-chat__msg svg { display: none; }
.k-chat { height: auto; }
.k-chat__sub { margin-top: 7px; }
.booking-chat__report { margin-top: 10px; color: var(--ink-2); font-size: 12px; }
.booking-chat__report input { width: 100%; height: 36px; margin: 6px 0; padding: 0 12px; border: 1px solid var(--line); border-radius: 18px; }
.w-chat .booking-chat__report { display: none; }
.k-cancel > summary { list-style: none; cursor: pointer; }
.k-cancel > summary::-webkit-details-marker { display: none; }
.cancel-form { display: grid; gap: 8px; margin-top: 10px; font-size: 12.5px; color: var(--ink-2); }
.cancel-form textarea, .k-extra textarea, .k-extra input[type=number] { width: 100%; padding: 10px 14px; border: 1px solid var(--line); border-radius: 18px; color: var(--ink); resize: none; }
.w-cancel { margin: -10px 14px 18px; }
.k-det { height: auto; }
.k-det > summary { list-style: none; cursor: pointer; }
.k-det > summary::-webkit-details-marker { display: none; }
.k-det:not([open]) { height: auto; }
.k-det > summary svg { transition: transform .15s; transform: rotate(-90deg); }
.k-det[open] > summary svg { transform: none; }
.k-note { margin-top: 6px; color: var(--ink-row); font-size: 13px; line-height: 18px; }
.k-ico--off { opacity: .55; }
.k-extra { height: auto; margin: 14px 14px 0; padding: 14px 17px; font-size: 13.5px; }
.k-extra h2 { margin-bottom: 8px; font-size: 16.5px; font-weight: 700; }
.k-extra .muted, .k-extra .small { color: var(--ink-2); font-size: 12.5px; }
.preorder__menu { margin: 8px 0; padding: 0; list-style: none; }
.preorder__menu li { display: flex; justify-content: space-between; gap: 10px; padding: 6px 0; }
.guest-review__rating { display: flex; flex-direction: row-reverse; justify-content: flex-end; gap: 4px; font-size: 24px; }
.guest-review__rating input { position: absolute; opacity: 0; }
.guest-review__rating label { color: var(--star-off); cursor: pointer; }
.guest-review__rating input:checked ~ label { color: var(--star-on); }
.guest-review__tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.chip { padding: 6px 10px; border: 1px solid var(--line); border-radius: 999px; font-size: 12px; }
/* Профиль */
.pr-confirm { display: block; }
.pr-confirm button { color: var(--accent-soft); }
.pr-list .pr-pw > summary { list-style: none; cursor: pointer; }
.pr-list .pr-pw > summary::-webkit-details-marker { display: none; }
.pr-form { display: grid; gap: 8px; padding: 12px 20px; font-size: 13px; }
.pr-form .field { display: grid; gap: 5px; }
.pr-form input[type=password] { flex: 1; min-width: 0; height: 42px; padding: 0 16px; border: 1px solid var(--line); border-radius: 21px; color: var(--ink); }
.pr-form .pw-field { border: 0; }
.pr-form .field__error { color: var(--accent-soft); font-size: 12px; }
.pr-forgot { display: block; margin-top: 8px; color: var(--ink-2); font-size: 12.5px; text-align: center; }
.d-err { margin: 4px 16px 0; }
.f-empty { display: flex; }
.n-st:empty { display: none; }
.n-st { margin-top: 8px; color: var(--ink-2); font-size: 12.5px; }
.meetup-screen { font-size: 14px; }
/* Колокольчик: служебное правило .ds не должно менять положение по макету */
.ds .g-notif { position: static; }
.ds .notification-bell.g-bell { position: absolute; right: 125px; top: 22px; width: 26px; height: 26px; border-radius: 50%; background: none; color: var(--ink); }
.ds .g-bell svg { width: 26px; height: 26px; stroke-width: 1.6; }
/* Число на колокольчике: белое жирное на ярком оранжевом, кружок 18px растягивается под «15», обводка цветом фона
   отделяет его от колокольчика (было 16px, 10px шрифт, «15» теснилось; решение Влада 3.11) */
.ds .g-bell .notification-bell__count { top: -8px; left: 15px; right: auto; display: grid; place-items: center; width: auto; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--accent-book); color: var(--white); box-shadow: 0 0 0 2px var(--bg); font-size: 11px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; }
.ds .g-bell .notification-bell__count.is-empty { display: none; }
/* Карта по макету: до нижнего меню, кнопки в тех же местах */
.mp-map .mp-canvas { position: absolute !important; inset: 0; width: 100%; height: 100%; }
.mp-loc { bottom: 37px; }
.mp-hint { bottom: 36px; }
.mp-status { bottom: 8px; }
.mp-map .leaflet-top.leaflet-left { top: 72px; }
.mp-map .leaflet-control-zoom.leaflet-bar a { width: 32px !important; height: 32px !important; line-height: 30px !important; }
/* Банкет: поля выбора как в макете */
:root .ds .q-field--sel .wk-dd__btn { height: 44px; min-height: 0; padding: 0 44px 0 14px; border: 1px solid var(--line); border-radius: 22px; background: var(--plate-3); box-shadow: none; color: var(--ink); font-size: 14.5px; font-weight: 400; }
.ds .q-field--sel .wk-dd__btn::after { right: 24px; width: 9px; height: 9px; border-width: 0 1.6px 1.6px 0; }
.ds .q-field--sel .wk-date__btn::after { right: 21px; width: 16px; height: 16px; margin-top: -8px; border: 0; transform: none; background: var(--ink); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 2v5M16 2v5'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 2v5M16 2v5'/%3E%3C/svg%3E") center / contain no-repeat; }
/* Блог: фильтры — ссылки вместо кнопок */
.bl-f a { display: inline-flex; align-items: center; height: 35px; padding: 0 13.5px; border: 1px solid var(--line); border-radius: 18px; }
.bl-f a.is-on { border: 0; }
/* Карта: старое ограничение высоты страницы больше не нужно */
.ds .screen.map-page { height: auto; min-height: 0; overflow: visible; }
/* Переписка и встреча: как в макете, высота по содержимому */
.k-meet { height: auto; }
.ds .booking-chat.k-chat h2 { margin: 0; font-size: 16.5px; font-weight: 700; line-height: 24px; text-align: left; }
.ds .k-chat .booking-chat__empty { margin: 7px 0 0; color: var(--ink-tab); font-size: 13.5px; line-height: 24px; }
.ds .k-chat .booking-chat__form { display: block; }
.ds .k-chat .booking-chat__form textarea { min-height: 0; height: 78px; margin-top: 11px; padding: 12px 16px; border: 1px solid var(--line); border-radius: 24px; background: none; resize: none; }
.k-chat .k-btn--send { width: 100%; margin-top: 12px; }
/* Окно «Столик на главном экране»: на сайте есть, в макете нет — собрано из его элементов */
.ds .install-offer { width: min(358px, calc(100vw - 32px)); margin: auto; padding: 22px 18px 18px; border: 1px solid var(--line); border-radius: 24px; background: var(--bg); color: var(--ink); box-shadow: none; }
.ds .install-offer[open] { display: grid; gap: 10px; }
.ds .install-offer::backdrop { background: rgb(0 0 0 / .55); }
.ds .install-offer h2 { padding-right: 34px; font-size: 18.5px; font-weight: 700; line-height: 26px; }
.ds .install-offer p { color: var(--ink-2); font-size: 14px; line-height: 21px; }
.ds .install-offer__close { position: absolute; top: 12px; right: 12px; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--plate-4); color: var(--ink); font-size: 20px; line-height: 1; }
.ds .install-offer .btn { display: grid; place-items: center; width: 100%; height: 46px; margin: 0; border: 1px solid var(--line); border-radius: 23px; background: none; color: var(--ink); font-size: 14.5px; font-weight: 500; box-shadow: none; }
.ds .install-offer .btn--primary { border: 0; background: var(--accent-book); color: var(--white); font-weight: 700; }
/* Кабинет заведения: живые элементы вместо кнопок макета */
body.service-site:has(.dock--biz) { padding-bottom: 66px; }
.seg a { display: grid; place-items: center; border-radius: var(--r-seg); font-weight: 700; }
.seg a[aria-current] { background: var(--seg-on); }
.cb-seg a:not([aria-current]) { color: var(--ink-tab); }
.cb-row .side__icon { flex: none; width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.cb-row svg:last-child { margin-left: auto; }
.cb-start { margin-top: 12px; }
.cb-find { display: flex; gap: 8px; margin-top: 10px; }
.cb-find input { flex: 1; min-width: 0; height: 44px; padding: 0 14px; border: 1px solid var(--line); border-radius: 22px; color: var(--ink); }
.cb-find button { height: 44px; padding: 0 18px; border-radius: 22px; background: var(--accent-book); font-weight: 700; }
.cb-start .cb-law, .cb-trial .cb-law { margin: 10px 0 0; }
.j-add { width: 100%; }
.biz-place { margin: 0 0 10px; }
.biz .biz-place { position: relative; }
.screen:not(.pad) > .biz-place { margin: 12px 16px 0; }
.biz-empty { padding: 14px 0; color: var(--ink-2); font-size: 14px; }
.biz-empty--m { margin: 0 16px; }
.cb-allback { display: flex; align-items: center; gap: 8px; height: 44px; margin: 8px 16px 0; font-weight: 600; }
.cb-wait { height: auto; min-height: 77px; }
.cb-wait__days { display: flex; flex-wrap: wrap; }
.cb-wait__days a { display: inline-flex; align-items: center; height: 25px; margin: 5px 4px 0 0; padding: 0 10px; border: 1px solid transparent; border-radius: 13px; background: var(--plate); font-size: 12px; }
.cb-wait__days .is-on { border-color: var(--accent-book); background: none; }
.cb-bk > svg:first-child { flex: none; }
/* Календарь в полосе даты */
.j-date, .cb-date { position: relative; }
.j-date__step { color: inherit; }
details.j-date__cal { display: block; width: 52.5px; height: 48px; padding: 0; }
details.j-date__cal > summary { display: grid; place-items: center; height: 100%; list-style: none; cursor: pointer; border-radius: 0 24px 24px 0; }
details.j-date__cal > summary::-webkit-details-marker { display: none; }
/* Полоса новых заявок — как плашка макета */
.business-alerts { margin: 16px 16px 0; font-size: 14px; line-height: 20px; }
.business-alerts--compact > :not(#bookingNotice) { display: none; }
.business-alerts--compact #bookingNotice { display: flex; align-items: center; gap: 11px; min-height: 61px; padding: 10px 16px; border-radius: 18px; background: var(--status-bg); color: var(--ink); }
.business-alerts--compact #bookingNotice:empty { display: none; }
.business-alerts--compact #bookingNotice::before { content: ""; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--accent-book); }
/* Служебная полоса звука и уведомлений на страницах кабинета: работает, но не занимает места */
.main > .container:has(> .business-alerts) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
/* Окно «Добавить бронь» */
dialog.ad-sheet { position: fixed; inset: 160px 16px auto; width: auto; max-width: none; max-height: calc(100dvh - 176px); margin: 0; overflow-y: auto; border: 0; color: var(--ink); color-scheme: dark; }
dialog.ad-sheet:not([open]) { display: none; }
dialog.ad-sheet::backdrop { background: var(--scrim-2); }
.ad-x { display: grid; place-items: center; width: 34px; height: 34px; margin-right: 4px; border-radius: 50%; }
.ad-send { width: 100%; }
.ad-sheet select { width: 100%; height: 46px; margin-top: 6px; padding: 0 14px; border: 1px solid var(--line-2); border-radius: 23px; background: none; color: var(--ink); }
/* Полоса даты: календарь без старых отступов */
.ds details.j-date__cal { margin: 0 -3.5px 0 0; padding: 0; border: 0; }
.ds details.j-date__cal > summary { width: 100%; height: 100%; padding-top: 1.5px; }
.ds .j-date__cal summary svg { width: 24px; height: 24px; }
.ds .wk-cal__panel { left: 0; right: 0; z-index: 40; padding: 14px; border: 1px solid var(--line); border-radius: 22px; background: var(--bg); }
.ds .wk-cal__grid a[aria-current] { box-shadow: inset 0 0 0 1.6px var(--accent-book); }
/* Окно выбора даты: число ровно в центре круга, круг — в центре своего столбца под днём недели */
.ds .wk-picker__day { display: grid; place-items: center; justify-self: center; width: 100%; max-width: 40px; text-align: center; line-height: 1; }
/* Карточка брони: настоящие ссылки, формы и правка условий */
.bd-terms { display: block; }
.bd-box--a .bd-terms { margin: 0; }
.bd-edit button { display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--line); border-radius: 50%; color: var(--ink); }
.bd-facts dd > span[hidden] { display: none; }
.bd-facts input, .bd-facts select { width: 100%; height: 36px; padding: 0 10px; border: 1px solid var(--line); border-radius: 18px; color: var(--ink); font-size: 13.5px; font-weight: 400; color-scheme: dark; }
.bd-facts .wk-term { min-width: 0; padding-right: 8px; }
.bd-save { display: grid; place-items: center; width: 100%; height: 44px; margin-top: 8px; border-radius: 22px; background: var(--accent); color: var(--white); font-size: 14.5px; font-weight: 700; }
.bd-save[hidden] { display: none; }
.bd-write { width: calc(100% - 32px); }
.bd-count { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px; background: var(--accent-book); font-size: 12px; }
.bd-area { display: block; }
.bd-wish p { margin-top: 3px; font-size: 13.5px; line-height: 20px; }
.bd-wish .small, .bd-who .small { color: var(--ink-2); font-size: 12px; line-height: 18px; }
.bd-who:empty { display: none; }
.bd-who > * { margin: 8px 16px 0; }
.bd-vh { display: flex; align-items: center; justify-content: space-between; }
.bd-box .bd-vh em { padding: 0 12px; height: 27px; border: 1px solid var(--line); border-radius: 14px; font-style: normal; font-size: 13px; line-height: 25px; color: var(--ink-tab); }
.bd-two--one { grid-template-columns: 1fr; }
.bd-two--wait button { opacity: .55; }
.bd-hint--in { margin: 8px 0 0; }
.bd-cancel { display: block; }
.bd-cancel > summary { color: var(--ink-tab); font-size: 14px; font-weight: 600; list-style: none; cursor: pointer; line-height: 26px; }
.bd-cancel > summary::-webkit-details-marker { display: none; }
.bd-cancel textarea { display: block; width: 100%; margin-top: 6px; padding: 10px 14px; border: 1px solid var(--line); border-radius: 18px; color: var(--ink); resize: none; }
.bd-cancel label { display: block; margin-top: 8px; font-size: 13px; }
.bd-links { display: block; }
.bd-links > form { margin: 0; }
.bd-links a, .bd-links button { color: inherit; font-size: inherit; line-height: inherit; text-decoration: underline; }
.bd-box--m > a, .bd-box--m > form > button, .bd-card--m > a, .bd-card--m > form > button, .bd-card--s > a, .bd-card--s > form > button { display: block; }
.bd-line { margin-bottom: 8px; font-size: 13px; line-height: 19px; color: var(--ink-row); }
.bd-card--s > .guest-mark, .bd-box--m > .guest-mark { line-height: 29px; }
.guest-mark .small { color: var(--ink-2); font-size: 12px; line-height: 18px; }
.guest-mark__form > summary { color: var(--accent); font-size: 14.5px; list-style: none; cursor: pointer; text-decoration: none; }
.guest-mark__form > summary::-webkit-details-marker { display: none; }
.guest-mark__fields { display: grid; gap: 8px; margin: 6px 0 10px; font-size: 13px; line-height: 20px; }
.guest-mark__fields fieldset { border: 0; padding: 0; display: grid; gap: 4px; }
.guest-mark__fields select, .guest-mark__fields textarea { display: block; width: 100%; margin-top: 4px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); }
.guest-mark__fields .btn { height: 40px; border: 1px solid var(--line); border-radius: 20px; text-decoration: none; }
/* Шторка переписки */
dialog.ch-sheet { position: fixed; inset: 138px 0 65px; width: auto; max-width: none; height: auto; max-height: none; margin: 0; border: 0; border-radius: 26px; color: var(--ink); }
dialog.ch-sheet:not([open]) { display: none; }
dialog.ch-sheet::backdrop { background: var(--scrim-2); }
.ch-sheet header button { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; }
.ch-list { position: absolute; top: 120px; left: 20px; right: 20px; bottom: 74px; overflow-y: auto; }
.ch-m p { width: auto; max-width: 250px; }
.ch-none { margin-top: 10px; }
/* Один диалог по всем броням гостя: подпись «Бронь № … · дата» перед сообщениями каждой брони */
.booking-chat__bk, .ch-bk { list-style: none; margin: 14px 0 6px; color: var(--ink-tab); font-size: 12px; text-align: center; }
/* Писать нельзя: пояснение на месте поля ввода */
.ch-closed { position: absolute; left: 20px; right: 20px; bottom: 16px; padding: 12px 16px; border: 1px solid var(--line); border-radius: 18px; color: var(--ink-tab); font-size: 13.5px; line-height: 20px; }
.ch-closed a { color: var(--accent-ink); font-weight: 700; white-space: nowrap; }
/* Вход и регистрация: логотип был под блоком страницы (его верхний отступ перекрывал ссылку) — поднимаем,
   а нажимается только сам логотип, не полоса во всю ширину */
.a-logo { z-index: 2; left: 50%; right: auto; transform: translateX(-50%); white-space: nowrap; }
/* Страницы с диалогами: высота по содержимому, а не как у снимка макета */
#screen:has(dialog.ad-sheet), #screen:has(dialog.ch-sheet) { height: auto; min-height: 778px; }
.biz-note { margin: 10px 16px 0; padding: 10px 14px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink-row); font-size: 13px; line-height: 19px; }
.biz-note.is-bad { border-color: var(--accent-soft); }
.biz-err { display: block; margin: -6px 4px 10px; color: var(--accent-soft); font-size: 12px; line-height: 18px; }
.is-bad.dt-i, .is-bad.dt-t, .is-bad.dt-chips, .is-bad.dt-pick { border-color: var(--accent-soft); }
/* Аналитика */
.an-seg a { font-weight: 600; color: var(--ink-tab); }
.an-seg a[aria-current] { margin: 3px 0; background: var(--plate-4); color: var(--ink); }
.an-dl a { display: grid; place-items: center; height: 47px; border: 1px solid var(--line); border-radius: 24px; }
.an-dl .is-main { border: 0; background: var(--accent-book); }
.an-x span { min-width: 0; }
/* Статус */
.st-form .st-closed { display: block; }
.st-form:has(input[value="open"]:checked) .st-closed { display: none; }
.st-card-p { margin: 13px 16px 0; }
.st-card-p h2 { margin-bottom: 8px; }
.st-closed select.dt-i { padding: 0 16px; }
.st-closed .dt-t { margin-top: 0; }
.st-n { margin: 8px 0 0; }
.st-n2 { margin: 10px 18px 0; }
.st-bk { margin: 8px 0 0; }
.dt-i[type=date] { color-scheme: dark; }
/* Меню */
.mn-card form { display: block; }
.mn-f svg { flex: none; }
.mn-photo { cursor: pointer; }
.mn-sw { position: relative; cursor: pointer; margin: 0; font-size: 14.5px; }
.mn-sw input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.mn-sw b { display: block; flex: none; width: 40px; height: 22px; padding: 2px; border-radius: 11px; background: var(--switch-off); }
.mn-sw b i { display: block; width: 18px; height: 18px; border-radius: 50%; background: var(--white); }
.mn-sw input:checked + b { background: var(--accent-book); }
.mn-sw input:checked + b i { margin-left: auto; }
.mn-sw input:focus-visible + b { outline: 2px solid var(--accent-book); outline-offset: 2px; }
.mn-card .mn-sw { display: flex; font-weight: 400; }
.mn-item { display: grid; grid-template-columns: 56px 1fr; gap: 6px 10px; margin: 0 16px 8px; padding: 10px; border: 1px solid var(--line); border-radius: 18px; }
.mn-item.is-hidden { opacity: .6; }
.mn-item img, .mn-item__nophoto { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 12px; background: var(--plate-4); object-fit: cover; }
.mn-item__text b { display: block; font-size: 14px; line-height: 20px; }
.mn-item__text span { color: var(--ink-2); font-size: 12.5px; line-height: 18px; }
.mn-item__actions { grid-column: 1 / -1; display: flex; gap: 8px; }
.mn-item__actions button { height: 32px; padding: 0 14px; border: 1px solid var(--line); border-radius: 16px; font-size: 12.5px; font-weight: 600; }
/* Мастер данных */
.dt-form { display: block; }
.dt-steps--3 + .dt-form > .dt-card--3 { margin-top: 26px; }
.dt-steps--5 + .dt-form > .dt-card--5:first-of-type { margin-top: 28.75px; }
.dt-steps--4 + .dt-form > .dt-card--4:first-of-type { margin-top: 28px; }
.dt-nav button { display: grid; place-items: center; height: 46px; border: 1px solid var(--line); border-radius: 23px; font-weight: 700; }
.dt-nav .is-main { border: 0; background: var(--accent-book); color: var(--ink); }
.dt-nav--4 button { border-radius: 14px; }
.dt-chips { flex-wrap: wrap; height: auto; min-height: 48px; padding: 6px 8px; row-gap: 6px; }
.dt-chip { position: relative; cursor: pointer; }
.dt-chip input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.dt-chip:not(:has(input:checked)) { opacity: .55; }
.dt-chip:not(:has(input:checked)) svg { display: none; }
.dt-more > summary { list-style: none; cursor: pointer; }
.dt-more > summary::-webkit-details-marker { display: none; }
.dt-more[open] { flex-basis: 100%; }
.dt-more[open] > summary { display: inline-block; transform: rotate(45deg); }
.dt-more > div { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; font-weight: 400; }
.dt-yn__b label { position: relative; cursor: pointer; }
.dt-yn__b input, .dt-mode input, .dt-seg input, .dt-days input, .dt-off input, .dt-check input, .dt-break input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.dt-yn__b label > span { display: grid; place-items: center; width: 79px; height: 37px; border: 1px solid var(--line); border-radius: 19px; font-weight: 700; font-size: 14px; }
.dt-yn__b input:checked + span { background: var(--seg-on); }
.dt-yn.is-fill label > span { height: 34px; border: 0; background: var(--plate-7); font-weight: 400; color: var(--ink-tab); }
.dt-yn.is-fill input:checked + span { background: var(--seg-on); color: var(--ink); }
.dt-yn__b input:focus-visible + span, .dt-mode input:focus-visible + span, .dt-seg input:focus-visible + span { outline: 2px solid var(--accent-book); outline-offset: 2px; }
.dt-meal { min-width: 0; margin: 0; padding: 0; border: 0; }
.dt-meal__body { display: none; padding: 4px 0 12px; }
.dt-meal:has(.dt-yn input[value="yes"]:checked) .dt-meal__body { display: block; }
.dt-days { display: flex; gap: 4px; }
.dt-days label { flex: 1; cursor: pointer; }
.dt-days span { display: grid; place-items: center; height: 34px; border: 1px solid var(--line); border-radius: 17px; font-size: 12.5px; }
.dt-days input:checked + span { border-color: transparent; background: var(--accent-book); }
.dt-range { display: grid; grid-template-columns: auto 1fr auto 1fr; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px; }
.dt-check { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px; }
.dt-check span::before { content: ""; display: inline-block; width: 16px; height: 16px; margin-right: 8px; border: 1px solid var(--ink-3); border-radius: 5px; vertical-align: -3px; }
.dt-check input:checked + span::before { border-color: transparent; background: var(--accent-book); }
.dt-mode label { position: relative; cursor: pointer; }
.dt-mode span { display: grid; place-items: center; height: 40px; border: 1px solid var(--line-2); border-radius: 20px; font-size: 14px; }
.dt-mode input:checked + span { background: var(--seg-on); font-weight: 700; }
.dt-day { margin-top: 18px; }
.dt-day__n, .dt-off { display: none; }
.dt-time { margin-top: 0; }
.dt-hours:has(input[value="daily"]:checked) .dt-day:not(:nth-of-type(2)) { display: none; }
.dt-hours:has(input[value="days"]:checked) .dt-day { display: grid; grid-template-columns: 26px 1fr auto; align-items: center; gap: 6px; margin-top: 8px; }
.dt-hours:has(input[value="days"]:checked) .dt-day__n { display: block; font-size: 13px; font-weight: 600; }
.dt-hours:has(input[value="days"]:checked) .dt-off { display: block; position: relative; cursor: pointer; font-size: 11px; color: var(--ink-tab); }
.dt-off input:checked + span { color: var(--accent-soft); }
.dt-day:has(.dt-off input:checked) .dt-time { opacity: .35; pointer-events: none; }
:root .ds .dt-time .wk-dd__btn, :root .ds .dt-range .wk-dd__btn { height: 44px; padding: 0 34px 0 13px; border: 1px solid var(--line); border-radius: 22px; background: none; box-shadow: none; color: var(--ink); font-size: 15px; font-weight: 400; text-align: right; }
.ds .wk-dd__list { background: var(--bg); color: var(--ink); }
.dt-card--3 .dt-n { margin: 12px 0 0; }
.dt-break { position: relative; cursor: pointer; }
.dt-brk .dt-range { display: none; }
.dt-brk:has(input[name="break_on"]:checked) .dt-range { display: grid; }
.dt-brk .dt-range { grid-template-columns: 1fr 24px 1fr; gap: 0; margin-top: 10px; }
.dt-range i { align-self: center; font-style: normal; text-align: center; }
.dt-break b { font-weight: 700; }
.dt-break__on, .dt-break__del { display: none; }
.dt-brk:has(input[name="break_on"]:checked) .dt-break > span, .dt-brk:has(input[name="break_on"]:checked) .dt-break__add { display: none; }
.dt-brk:has(input[name="break_on"]:checked) .dt-break__on { display: inline; }
.dt-brk:has(input[name="break_on"]:checked) .dt-break svg { transform: rotate(-90deg); }
.dt-brk:has(input[name="break_on"]:checked) .dt-break__del { display: inline-block; margin-top: 10px; color: var(--ink-2); font-size: 13px; text-decoration: underline; cursor: pointer; }
.dt-seg label { position: relative; cursor: pointer; display: grid; }
.dt-seg span { display: grid; place-items: center; border-radius: var(--r-seg); font-weight: 400; }
.dt-seg input:checked + span { background: var(--seg-on); }
.dt-max { display: block; }
:root .ds .dt-card--4 .wk-dd__btn { height: 46px; margin-top: 7px; padding: 0 44px 0 18px; border: 1px solid var(--line); border-radius: 23px; background: none; box-shadow: none; color: var(--ink-tab); font-size: 14.5px; font-weight: 400; }
.dt-cover { position: relative; cursor: pointer; }
.dt-cover img { object-fit: cover; }
.dt-cover__t { display: grid; place-items: center; height: 100%; border: 1px dashed var(--ink-3); border-radius: 18px; font-size: 13px; font-weight: 700; }
.dt-gal__add { cursor: pointer; color: var(--ink); }
.dt-gal__ph { position: relative; margin: 0; padding: 0; overflow: hidden; border-style: solid; border-color: var(--line); }
.dt-gal__ph img { width: 100%; height: 100%; object-fit: cover; }
.dt-gal__ph button { position: absolute; top: 4px; right: 4px; width: 24px; height: 24px; border-radius: 50%; background: rgb(0 0 0 / .6); color: var(--white); }
.dt-n--st:empty { display: none; }
.dt-l--t { margin-top: 10px; }
/* Отзывы */
.rv-seg a:not([aria-current]) { color: var(--ink-tab); }
.rv-st { display: inline-flex; gap: 2px; }
.rv-st > span { display: inline-flex; }
.rv-st .is-off { opacity: .25; }
.rv-badge { color: var(--ink-2); font-size: 12px; line-height: 18px; }
.rv-open > summary, .rv-rep > summary { list-style: none; cursor: pointer; }
.rv-open > summary::-webkit-details-marker, .rv-rep > summary::-webkit-details-marker { display: none; }
.rv-rep > summary::before { content: "▸ "; }
.rv-rep[open] > summary::before { content: "▾ "; }
.rv-f { display: grid; gap: 6px; margin-top: 8px; font-size: 13px; }
.rv-f textarea { width: 100%; padding: 10px 14px; border: 1px solid var(--line); border-radius: 18px; color: var(--ink); resize: none; }
.rv-f small { color: var(--ink-2); font-size: 12px; }
.rv-send { height: 42px; border-radius: 21px; background: var(--accent-book); font-size: 14px; font-weight: 700; }
.rv-send.is-ghost { border: 1px solid var(--line); background: none; }
/* Настройки */
.se-f { display: block; margin: 0; }
.se-r { position: relative; cursor: pointer; }
.se-r > span { flex: 1; min-width: 0; }
.se-r input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.se-r b.se-sw { display: block; flex: none; }
.se-r input:checked + .se-sw { background: var(--accent-book); }
.se-r input:checked + .se-sw i { margin-left: auto; }
.se-r input:focus-visible + .se-sw { outline: 2px solid var(--accent-book); outline-offset: 2px; }
.se-tg em.is-on { color: var(--ok); }
.se-sound { margin-top: 10px; }
.se-sound .business-alerts { margin: 0; font-size: 13px; }
.se-sound .business-alerts__controls { display: grid; gap: 8px; }
.se-sound .btn { display: grid; place-items: center; min-height: 40px; width: 100%; border: 1px solid var(--line); border-radius: 20px; font-size: 13px; font-weight: 600; }
.se-sound .btn--quiet:has(+ *) { }
.se-sound .muted { margin-top: 8px; color: var(--ink-2); font-size: 12px; line-height: 17px; }
.se-sound summary { color: var(--ink-tab); font-size: 13px; cursor: pointer; }
.se-sound input[type=range] { width: 100%; accent-color: var(--accent-book); }
#bookingNotice:empty { display: none; }
/* Подписка, поддержка */
.sb-c em.is-bad { color: var(--accent-soft); }
.su-c form { display: block; }
.su-att { cursor: pointer; }
.su-t header { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 13.5px; }
.su-t em { padding: 0 10px; height: 25px; border: 1px solid var(--line); border-radius: 13px; font-style: normal; font-size: 12px; line-height: 23px; color: var(--ink-tab); white-space: nowrap; }
.su-t em.is-ok { color: var(--ok); border-color: var(--ok-bg); }
.su-t { margin-bottom: 8px; }
/* Заметки */
.cb-nseg label { position: relative; display: grid; cursor: pointer; }
.cb-nseg input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cb-nseg span { display: grid; place-items: center; border-radius: var(--r-seg); font-weight: 700; }
.cb-nseg input:checked + span { background: var(--seg-on); }
.cb-note--i { margin-top: 8px; }
.cb-note--i em { font-style: normal; color: var(--accent-soft); font-size: 12px; font-weight: 700; }
.cb-note--i small { display: block; margin-top: 4px; color: var(--ink-2); font-size: 12px; }
.cb-note form { display: block; }
/* Сотрудники */
:root .ds .st-card .wk-dd__btn, :root .ds .st-edit .wk-dd__btn { height: 42px; margin-top: 4px; padding: 0 34px 0 14px; border: 1px solid var(--line); border-radius: 21px; background: none; box-shadow: none; color: var(--ink); font-size: 14.5px; font-weight: 400; }
.st-det > summary, .st-p--b > summary { list-style: none; cursor: pointer; }
.st-det > summary::-webkit-details-marker, .st-p--b > summary::-webkit-details-marker { display: none; }
.st-det > summary::before { content: "▶ "; }
.st-det[open] > summary::before { content: "▼ "; }
.st-roles { margin: 6px 0; font-size: 12.5px; line-height: 17px; color: var(--ink-tab); }
.st-roles dt { font-weight: 700; color: var(--ink); }
.st-roles dd { margin: 0 0 6px; }
.st-edit { display: grid; gap: 8px; margin-top: 10px; font-size: 13px; }
.st-edit input { width: 100%; height: 42px; margin-top: 4px; padding: 0 14px; border: 1px solid var(--line); border-radius: 21px; color: var(--ink); }
.st-det--log .st-n { margin: 4px 16px; }
/* Организация */
.og-l input.is-bad { border-color: var(--accent-soft); }
.og-pw .pw-field { display: block; position: relative; border: 0; }
.og-pw .pw-toggle { position: absolute !important; right: 14px; top: 16px; color: var(--ink-tab); }
/* Календарь */
.s-cal-back { display: block; margin: 8px 16px 0; color: var(--ink-tab); font-size: 13px; }
.cl-w a { display: grid; place-items: center; flex: none; }
.cb-bk small.is-w { color: var(--accent-soft); }
/* Заведения */
.vn-ph { position: relative; display: block; overflow: hidden; }
.vn-ph img { width: 100%; height: 100%; object-fit: cover; }
.vn-noph { display: grid; place-items: center; height: 100%; color: var(--ink-tab); font-size: 13px; }
.vn-flag { position: absolute; left: 10px; top: 10px; padding: 3px 10px; border-radius: 12px; background: rgb(0 0 0 / .65); color: var(--white); font-size: 12px; }
.vn-flag.is-bad { color: var(--accent-soft); }
.vn-why { color: var(--accent-soft); }
.vn-g a { display: grid; place-items: center; }
.vn-s button { color: var(--ink); }
.cm-f form { grid-column: 1 / -1; }
.cm-f button { height: 34px; padding: 0 14px; border: 1px solid var(--line); border-radius: 17px; font-size: 12.5px; font-weight: 600; }
/* Счёт, новое заведение */
.iv-l.is-bad input { border-color: var(--accent-soft); }
.nv-form { display: block; }
.nv-2 > datalist { display: none; }
.nv-i[type=time] { color-scheme: dark; }
.nv-open { margin-top: 12px; }
.nv-share { margin-top: 10px; }
.nv-up { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 10px; }
.nv-up > span { flex: 1; min-width: 0; }
.nv-up > label { cursor: pointer; }
.nv-prev { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 6px; }
.nv-prev:empty { display: none; }
.nv-prev img, .nv-cur img { width: 72px; height: 72px; border-radius: 10px; object-fit: cover; }
.nv-prev figure { position: relative; margin: 0; }
.nv-prev figcaption { display: none; }
.nv-cur { flex-basis: 100%; display: flex; align-items: center; gap: 10px; font-size: 12.5px; }
.nv-rev { width: 160px; margin-top: 8px; border-radius: 10px; }
.nv-up > select, .nv-up > label[for=coverPhotoId] { flex-basis: 100%; }
/* Инструкция */
.gd-t { font-size: 18px; font-weight: 700; }
.gd-d { display: block; }
.gd-d > summary { list-style: none; cursor: pointer; }
.gd-d > summary::-webkit-details-marker { display: none; }
.gd-d > summary u { margin-left: auto; text-decoration: none; }
.gd-d > summary u::before { content: "+"; }
.gd-d[open] > summary u::before { content: "−"; }
.gd-b { margin: 0 16px 10px; padding: 0 16px 12px; font-size: 14px; line-height: 21px; color: var(--ink-row); }
.gd-b ol, .gd-b ul { margin: 0; padding-left: 18px; }
.gd-b p { margin: 6px 0; }
.gd-b a { display: block; margin-top: 8px; color: var(--accent-ink); }
.gd-b__a { display: grid; }
/* Кабинет сотрудника */
.sw-date input[type=date] { color-scheme: dark; }
.sw-date .wk-date { flex: 1; }
.sw-bk { display: block; }
.sw-fm { display: block; }
.sw-empty { margin: 16px; color: var(--ink-2); font-size: 14px; }
.sw-edit { margin: 0 16px 8px; }
.sw-edit > summary { list-style: none; cursor: pointer; }
.sw-edit > summary::-webkit-details-marker { display: none; }
.sw-edit .sw-fm label { display: block; margin-top: 6px; font-size: 13px; }
.sw-edit .sw-fm input { display: block; width: 100%; height: 40px; margin-top: 4px; padding: 0 14px; border: 1px solid var(--line); border-radius: 20px; color: var(--ink); color-scheme: dark; }
.sw-note { margin: 6px 16px; color: var(--ink-2); font-size: 12.5px; }
.sw-comment { margin: 4px 16px; font-size: 13px; }
.sw-chat { margin: 6px 16px 14px; color: var(--ink-2); font-size: 12.5px; }
.sw-chat a { color: var(--accent-soft); }
.sw-links { display: flex; justify-content: center; gap: 14px; margin: 14px 16px; color: var(--ink-tab); font-size: 13px; }
.sw-pages { display: flex; justify-content: center; gap: 14px; margin: 10px; font-size: 13px; }
.sw-bk .guest-mark { margin: 0 16px; font-size: 13px; }
.sw-switch { margin: 8px 16px 0; }
/* Приглашение */
.inv-f { display: block; }
.inv-p { margin-top: 8px; }
/* Инструкция: раскрытый раздел как в макете */
.gd-list--staff .gd-d:not(#guide-bookings):not(#guide-notifications):not(#guide-staff) { display: none; }
.gd-h1 { max-width: 270px; }
.gd-d > .gd-s { width: calc(100% - 34px); }
.gd-d[open] { margin: 21px 17px 15px; padding: 17px 14px 12px; border: 1px solid var(--line); border-radius: 18px; }
.gd-d[open] > .gd-s { width: auto; height: auto; margin: 0; padding: 0; border: 0; }
.gd-d[open] .gd-b { margin: 0; padding: 0; font-size: 15px; line-height: 24.8px; }
.gd-b ol { margin: 19.5px 0 0; padding-left: 22px; }
.gd-b li { margin-bottom: 11px; }
.gd-b a, .gd-b__a a { display: block; margin-top: 22px; color: var(--accent-soft); font-size: 15px; font-weight: 500; text-decoration: underline; }
.gd-b p { margin: 13px 0 0; }
.gs-s, .gd-list--staff .gd-s { height: 62px; margin: 0 16px 10px; width: calc(100% - 32px); border-radius: 31px; padding: 0 20px; }
/* Значок неподтверждённого номера */
.phone-unverified { display: inline-flex; align-items: center; gap: 6px; color: var(--warn); font-size: 12.5px; line-height: 20px; }
.phone-unverified svg { flex: none; width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
/* Рабочее место сотрудника: порядок как в макете — сохранить, отметить гостя, кнопки прихода, изменить */
.sw-bk { display: flex; flex-direction: column; }
.sw-bk > * { order: 5; }
.sw-bk > .sw-who, .sw-bk > .sw-tel, .sw-bk > .sw-comment, .sw-bk > .visit-answer { order: 0; }
.sw-bk > .sw-fm { display: contents; }
.sw-bk > .sw-fm > * { order: 1; }
.sw-bk > .guest-mark { order: 2; margin: 16px 16px 0; }
.sw-bk > .sw-fm > .sw-two, .sw-bk > .sw-fm > .sw-note { order: 3; }
.sw-bk > .sw-edit { order: 4; }
.sw-bk > .sw-edit > .sw-ch { display: block; margin: 19px 0 18px; }
.sw-bk .guest-mark__form > summary { font-size: 15px; font-weight: 700; line-height: 22px; }
/* Админка: шапка и общие карточки */
body.service-site:has(.dock--adm) { padding-bottom: 66px; }
.ds .ad-top .notification-bell.g-bell { right: 139px; top: 10px; width: 26px; height: 40px; }
.ds .ad-top .g-bell .notification-bell__count { left: 14px; top: -4px; }
.ad-search { display: flex; }
.ad-new[hidden] { display: none; }
.ah-c .ah-cl { display: block; min-width: 0; flex: 1; }
.ah-go { display: grid; place-items: center; }
.ah-noimg { flex: none; width: 58px; height: 58px; border-radius: 12px; background: var(--plate-4); }
.ah-det > summary { list-style: none; cursor: pointer; }
.ah-det > summary::-webkit-details-marker { display: none; }
.ah-det > summary::before { content: "▸ "; }
.ah-det[open] > summary::before { content: "▾ "; }
.ah-det > p { margin: 8px 16px 0; color: var(--ink-tab); font-size: 13.5px; line-height: 20px; }
.ah-sr { display: flex; justify-content: space-between; gap: 12px; }
.ah-sb h2 { color: var(--ink); font-size: 15px; }
.ah-card--e { text-align: center; }
.adm-c { margin: 12px 16px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 20px; font-size: 13.5px; line-height: 20px; }
.adm-c.is-new { border-color: var(--accent-soft); }
.adm-c header { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 4px; font-size: 15px; }
.adm-c em { flex: none; padding: 0 10px; height: 25px; border: 1px solid var(--line); border-radius: 13px; font-style: normal; font-size: 12px; line-height: 23px; color: var(--ink-tab); }
.adm-c p { margin-top: 3px; color: var(--ink-tab); }
.adm-c p b { color: var(--ink); }
.adm-c a { color: var(--accent-soft); }
.adm-c form { margin-top: 8px; }
.adm-b { height: 38px; padding: 0 16px; border: 1px solid var(--line); border-radius: 19px; font-size: 13px; font-weight: 600; }
.adm-b.is-main { border: 0; background: var(--accent-book); }
/* Админка: общие элементы рабочих страниц в оформлении макета */
.adm-w, .adm-w > div, .adm-w > main { display: contents; }
.adm h1 { margin: 19px 16px 0; font-size: 22px; font-weight: 700; line-height: 30px; }
.adm .page-head { display: block; margin: 0; padding: 0; }
.adm .page-head > div { display: block; }
.adm .page-head p, .adm .lead { margin: 6px 16px 0; color: var(--ink-2); font-size: 14px; line-height: 20px; overflow-wrap: anywhere; }
.adm .page-head > .btn { margin: 10px 16px 0; }
.adm h2 { color: var(--ink); font-size: 16px; font-weight: 700; line-height: 24px; }
.adm .moderation__title, .adm-w > div > h2, .adm-w > main > h2 { margin: 16px 16px 0; }
.adm h3 { font-size: 15px; font-weight: 700; line-height: 22px; }
.adm .muted, .adm .small { color: var(--ink-2); font-size: 13px; line-height: 19px; }
.adm-w > div > p, .adm-w > div > .muted { margin: 8px 16px 0; font-size: 14px; line-height: 20px; color: var(--ink-tab); }
.adm a:not(.tap):not(.btn):not(.am-r):not(.logo):not(.cb-new):not(.ah-cl) { color: var(--accent-soft); }
.adm .panel, .adm .bcard, .adm .empty { margin: 12px 16px 0; padding: 14px 16px; border: 1px solid var(--line); border-radius: 22px; background: none; box-shadow: none; font-size: 14px; line-height: 20px; }
.adm .panel--flush { padding: 0; overflow: hidden; }
.adm .panel__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 10px; padding: 12px 16px; }
.adm .panel__body { padding: 12px 16px; }
.adm .empty { padding: 21px 18px 23px; text-align: center; }
.adm .empty__icon { display: none; }
.adm .empty h3 { font-size: 15px; }
.adm .empty p { margin-top: 5px; color: var(--ink-tab); line-height: 22px; }
.adm .blist { display: grid; gap: 0; }
.adm .bcard--new { border-color: var(--accent-soft); }
.adm .bcard__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px; }
.adm .bcard__title { font-size: 15px; font-weight: 700; }
.adm .bcard__facts { display: flex; flex-wrap: wrap; gap: 2px 10px; margin-top: 4px; color: var(--ink-tab); font-size: 13px; }
.adm .bcard__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.adm .badge { display: inline-flex; align-items: center; height: 25px; padding: 0 10px; border: 1px solid var(--line); border-radius: 13px; background: none; color: var(--ink-tab); font-size: 12px; font-weight: 500; white-space: nowrap; }
.adm .badge--new, .adm .badge--pending { border-color: transparent; background: var(--status-bg); color: var(--accent-ink); }
.adm .badge--confirmed, .adm .badge--approved { color: var(--ok); border-color: var(--ok-bg); }
.adm .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 0 16px; border: 1px solid var(--line); border-radius: 19px; background: none; color: var(--ink); font-size: 13.5px; font-weight: 600; box-shadow: none; cursor: pointer; text-decoration: none; }
.adm .btn--primary, .adm .btn--ok { border: 0; background: var(--accent-book); color: var(--white); }
.adm .btn--danger { color: var(--accent-soft); }
.adm .btn--block { width: 100%; }
.adm .btn--sm { min-height: 32px; padding: 0 12px; font-size: 12.5px; }
.adm .notice { margin: 10px 16px 0; padding: 10px 14px; border-radius: 16px; background: var(--status-bg); color: var(--ink); font-size: 13px; line-height: 19px; }
.adm .table-wrap { overflow-x: auto; }
.adm table.data { width: 100%; border-collapse: collapse; font-size: 13px; line-height: 18px; }
.adm table.data th { padding: 8px 10px; color: var(--ink-2); font-size: 12px; font-weight: 600; text-align: left; white-space: nowrap; }
.adm table.data td { padding: 10px; border-top: 1px solid var(--line-2); vertical-align: top; }
.adm .form, .adm .field { display: block; }
.adm .field, .adm .form__row { margin-top: 10px; }
.adm .field label, .adm form > label { display: block; margin-bottom: 5px; font-size: 13.5px; font-weight: 600; line-height: 20px; }
.adm :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]), select, textarea) { width: 100%; min-height: 42px; padding: 0 16px; border: 1px solid var(--line); border-radius: 21px; background: var(--plate-3); color: var(--ink); font-size: 14px; color-scheme: dark; }
.adm .mp-search input { min-height: 0; padding: 0; border: 0; border-radius: 0; background: none; }
.adm textarea { padding: 10px 16px; border-radius: 18px; resize: vertical; }
.adm .field__error { color: var(--accent-soft); font-size: 12px; }
.adm .field__hint { display: block; margin-top: 4px; color: var(--ink-2); font-size: 12px; line-height: 17px; }
.adm .form__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.adm .filter, .adm .filters, .adm .toolbar, .adm .tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 16px 0; }
.adm .tabs a, .adm .filter a { display: inline-flex; align-items: center; height: 34px; padding: 0 13px; border: 1px solid var(--line); border-radius: 17px; color: var(--ink); font-size: 13px; }
.adm .tabs a[aria-current], .adm .tabs a.is-active, .adm .filter a.is-active { border-color: transparent; background: var(--seg-on); font-weight: 700; }
.adm .pagination { display: flex; justify-content: center; gap: 12px; margin: 14px 16px; font-size: 13px; }
.adm details > summary { cursor: pointer; }
.adm img { max-width: 100%; }
/* Админка: уточнение по макету */
.adm .mp-search input { min-height: 0 !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: none !important; }
.adm a:not(.tap):not(.btn):not(.am-r):not(.logo):not(.cb-new):not(.ah-cl) { color: var(--accent-soft); }
.adm .logo { color: inherit; }
.adm-w > div > .panel > h2, .adm .panel > h2, .adm .panel > h3 { margin: 0; }
.adm .panel p, .adm .bcard p { margin-top: 6px; color: var(--ink-tab); font-size: 15px; line-height: 22px; }
.adm .panel p b, .adm .bcard p b { color: var(--ink); }
.adm .panel code { font-size: 13px; color: var(--ink-tab); background: var(--plate-4); border-radius: 4px; padding: 0 4px; }
.adm .panel .btn--primary { width: 100%; min-height: 47px; border-radius: 24px; font-size: 14.5px; font-weight: 700; margin-top: 16px; }
.adm .panel form > label, .adm .panel .field label { margin-top: 8px; font-size: 14px; font-weight: 400; color: var(--ink-tab); }
/* Таблицы на телефоне: строки карточками, как в макете */
.adm table.data, .adm table.data tbody { display: block; width: 100%; }
.adm table.data thead { display: none; }
.adm table.data tr { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 12px 0; border-bottom: 1px solid var(--line-2); }
.adm .panel--flush table.data tr { padding: 12px 16px; }
.adm table.data tr:last-child { border-bottom: 0; }
.adm table.data td { padding: 0; border: 0; font-size: 14.5px; line-height: 22px; color: var(--ink-tab); }
.adm table.data td b { color: var(--ink); }
.adm .searchbox__row, .adm .search-row { display: flex; gap: 12px; margin: 10px 16px 0; }
.adm .searchbox__row input { flex: 1; min-width: 0; min-height: 44px; border-radius: 22px; background: none; }
.adm .searchbox__row .btn { min-height: 44px; padding: 0 18px; border-radius: 22px; background: none; color: var(--ink); border: 1px solid var(--line); font-weight: 700; }
.adm .panel .searchbox__row { margin: 0; }
/* Админка: фильтры и строки как в макете */
.adm .page-head > *, .adm .page-head > div > *, .adm-w > div > a:first-child { margin-left: 16px; margin-right: 16px; }
.adm .page-head h1 { margin-top: 12px; }
.adm-w > div > a:first-child { display: block; margin-top: 14px; font-size: 14px; color: var(--ink-tab) !important; }
.adm .tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
.adm .tab { display: inline-flex; flex: none; align-items: center; height: 38px; padding: 0 13px; border: 1px solid var(--line); border-radius: 19px; color: var(--ink) !important; font-size: 13.5px; font-weight: 400; background: none; }
.adm .tab.is-active { border-color: transparent; background: var(--ink); color: var(--bg) !important; }
.adm .bcard { margin: 0 16px; padding: 12px 0; border: 0; border-bottom: 1px solid var(--line-2); border-radius: 0; }
.adm .bcard--new { border-color: var(--line-2); }
.adm .bcard__actions { display: grid; }
.adm .bcard__actions .btn, .adm .bcard__actions form { width: 100%; }
.adm .bcard__actions .btn { min-height: 38px; }
.adm .btn--danger { border-color: transparent; background: var(--status-bg); }
.adm .panel { font-size: 14px; }
.adm .panel--flush .bcard { margin: 0 16px; }
/* Возвращённые элементы */
.c-parsed { margin: 8px 16px 0; color: var(--ink-2); font-size: 13px; line-height: 19px; }
.c-parsed b { color: var(--ink); }
.pn-acc__go { display: block; margin-top: 8px; color: var(--accent-soft); font-size: 14px; }
.dock--adm a { position: relative; }
.dock--adm .dot-badge { position: absolute; top: 0; left: calc(50% + 6px); display: grid; place-items: center; min-width: 16px; height: 16px; padding: 0 3px; border-radius: 8px; background: var(--accent-soft); color: var(--ink); font-size: 10px; font-weight: 800; }
.w-note { margin: 8px 16px 0; }
.m-sec > h2 { text-transform: uppercase; }
/* Админка: заголовок без двойного отступа, заявки как в макете */
.adm .page-head > div { margin-left: 0; margin-right: 0; }
.adm .form__actions { margin: 12px 16px 0; }
.adm .panel .form__actions, .adm .bcard .form__actions { margin: 12px 0 0; }
.adm #bulkClaims .btn { min-height: 44px; padding: 0 18px; border-radius: 22px; font-size: 14px; }
.adm #bulkClaims .btn--ok { border: 1px solid var(--line); background: none; color: var(--ink); font-weight: 700; }
.adm .blist > label { display: flex; align-items: center; gap: 8px; margin: 16px 16px 0 19px; font-size: 13.5px; }
.adm input[type=checkbox] { flex: none; width: 21px; height: 21px; margin: 0; accent-color: var(--accent-book); color-scheme: dark; }
.adm .bcard__title { color: var(--ink) !important; font-size: 17px; }
/* Страницы вне макета: цвета и отступы макета */
body.ds { --ds-bg: var(--bg); --ds-ink: var(--ink); --ds-muted: var(--ink-2); --ds-faint: var(--ink-3); --ds-accent: var(--accent-book); --ds-accent-press: var(--accent-book); --ds-on-accent: var(--white); --ds-accent-soft: var(--status-bg); --ds-fill: var(--plate-4); --ds-fill-2: var(--plate-3); --ds-line: var(--line); }
.pg { padding-bottom: 24px; }
.pg > *:not(.g-top):not(.i-top):not(.cb-logo):not(.adm-w):not(.panel):not(.bcard):not(.empty):not(.notice):not(h1):not(.page-head):not(.lead):not(.tabs):not(.searchbox__row):not(.form__actions):not(.table-wrap):not(dialog) { margin-left: 16px; margin-right: 16px; }
.pg .lead { margin: 6px 16px 0; color: var(--ink-2); font-size: 14px; line-height: 20px; }
.pg > .form, .pg > form { margin-top: 12px; }
.pg-h { margin: 16px 16px 6px; color: var(--ink-tab); font-size: 13px; font-weight: 700; line-height: 20px; }
.pg-link { color: var(--accent-soft); font-size: 13.5px; text-decoration: underline; }
.pg-label { display: block; margin-top: 10px; margin-bottom: 5px; font-size: 13.5px; font-weight: 600; line-height: 20px; }
.pg .am-l > a { display: flex; align-items: center; gap: 12px; min-height: 44px; border-bottom: 1px solid var(--line-2); color: var(--ink-row); font-size: 15px; }
.pg .am-l .side__icon { flex: none; width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.pg .cb-back { margin-top: 2px; }
.pg .cb-back svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.pg--auth h1 { text-align: center; }
.pg--auth .lead, .pg--auth .center { text-align: center; }
.pg--auth .panel { margin-top: 14px; }
.pg-type .dt-mode { margin-top: 0; }
.pg .t-check { margin: 12px 16px 0; font-size: 12px; line-height: 17px; }
.pg .notice { margin: 10px 16px 0; }
.pg .btn { margin-top: 10px; }
.pg code { padding: 1px 5px; border-radius: 5px; background: var(--plate-4); font-size: 13px; }
.recovery-codes { margin: 10px 0; padding-left: 20px; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 16px; }
.two-factor__steps { margin: 0 0 10px; padding-left: 18px; font-size: 14px; line-height: 21px; }
.two-factor__secret { display: block; margin: 6px 0; overflow-wrap: anywhere; }
.pg .small a, .pg p a { color: var(--accent-soft); }
.pg .registration-phone { display: grid; grid-template-columns: 124px 1fr; gap: 8px; }
.pg .field__hint { color: var(--ink-2); font-size: 12px; }
.pg .side__icon { width: 22px; height: 22px; }
/* Сообщения сайта на всех страницах макета */
.flash, .flashes > * { margin: 10px 16px 0; padding: 10px 14px; border: 1px solid var(--line); border-radius: 16px; background: var(--plate-3); color: var(--ink); font-size: 13.5px; line-height: 19px; }
.flash--error { border-color: var(--accent-soft); }
.flash--ok, .flash--success { border-color: var(--ok-bg); color: var(--ok); }
/* Правки по листам страниц вне макета */
.pg > :not(.adm-w):not(.page-head):not(.panel):not(.bcard) h1 { margin-left: 0; margin-right: 0; }
.pg > :not(.adm-w):not(.page-head) .lead { margin-left: 0; margin-right: 0; }
.adm textarea { font: inherit; font-size: 14px; }
.adm .pw-field { position: relative; display: block; border: 0; background: none; padding: 0; height: auto; }
.adm .pw-field input { padding-right: 44px; }
.adm .pw-toggle { position: absolute !important; right: 14px; top: 50%; transform: translateY(-50%); color: var(--ink-tab); }
.mn-card label.mn-photo { display: flex; margin: 0; }
.pg .dt-mode label { margin: 0; font-weight: 400; }
/* Аудит телефона: шапка и поля выбора */
.c-cell + .c-cell::before, .c-cell--guests::before { content: ""; position: absolute; left: 0; top: 0; display: block; width: 1px; height: 30px; background: var(--glass-line); }
.c-top__avatar { background: var(--status-bg) !important; color: var(--accent-soft) !important; }
.c-city-pop .cf-panel--city { width: min(240px, calc(100vw - 117px)); max-width: calc(100vw - 117px); }
.c-city-pop .cf-find, .c-city-pop .cf-city__list { width: 100%; max-width: 100%; }
.b-pick select, .b-pick .wk-dd, .b-pick .wk-dd__btn { border: 0 !important; outline: 0; background: none !important; box-shadow: none !important; }
#screen textarea, #screen input, #screen select { font-family: inherit; }
/* Ровные ряды кнопок */
.nv-nav a, .nv-nav button { height: 46px; }
.bd-table input { width: 0; min-width: 0; }
.bd-table button { flex: none; }
.dt-chip { max-width: 100%; min-width: 0; }
.dt-chip > span { min-width: 0; overflow-wrap: anywhere; }
.adm input[type=file] { width: 100%; max-width: 100%; min-height: 0; padding: 6px; }
/* Календарь в полосе даты открывается под всей полосой */
.ds details.j-date__cal { position: static; }
.ds .wk-cal__panel { box-sizing: border-box; }
/* Меню аккаунта не вылезает на узком телефоне */
@media (max-width: 360px) { .g-top .pn-acc { position: fixed; left: auto; right: 12px; max-width: calc(100vw - 24px); } }
/* Обзор админки: строки заявок */
.ah-c a.ah-cl { position: static; display: block; flex: 1; min-width: 0; padding-right: 22px; color: inherit; font-size: inherit; }
/* Поддержка: значок и подпись в одну строку */
.su-c label.su-att { display: flex; flex-direction: row; align-items: center; color: var(--ink); font-weight: 500; }
.mn-card label.mn-photo { flex-direction: column; align-items: center; justify-content: center; }
/* Рабочие страницы админки: единые поля 16 px вместо контента у края */
.adm-w { display: block; }
.adm-w > div, .adm-w > main { display: block; padding: 0 16px; }
.adm-w > div > *, .adm-w > main > *, .adm-w .page-head > *, .adm-w .page-head > div > *, .adm-w .blist > * { margin-left: 0; margin-right: 0; }
.adm-w > :not(div):not(main) { margin-left: 16px; margin-right: 16px; }
.adm-w .blist > label { margin-left: 3px; }
.adm-w .panel--flush { overflow: hidden; }
.adm-w dl { margin: 6px 0 0; }
.adm-w dd { margin-left: 18px; color: var(--ink-tab); }
.adm-w ul, .adm-w ol { padding-left: 18px; }
.adm-w h1 + p, .adm-w h1 + .lead { margin-top: 6px; color: var(--ink-2); font-size: 14px; line-height: 20px; }
.adm-w form > h2, .adm-w form > h3 { margin-top: 14px; }
/* Последние правки аудита */
.vn-c { height: auto; }
.pg form:has(> .pg-link) { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.c-search input { padding-right: 44px; }
/* Календарь даты на главной — на всю ширину панели поиска, а не ячейки */
.c-cell.nh-date, .nh-date .nh-pop, .nh-date > span { position: static; }
.c-panel { position: relative; }
.c-panel .nh-cal { left: 0 !important; right: 0 !important; top: calc(100% + 6px) !important; z-index: 60; width: auto; border: 1px solid var(--line); border-radius: 22px; background: var(--bg); }
/* Всплывающие списки времени и гостей на главной — как календарь, на ширину панели */
.c-panel .nh-times { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 60; display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; max-height: 260px; overflow-y: auto; padding: 12px; border: 1px solid var(--line); border-radius: 22px; background: var(--bg); }
.c-panel .nh-times[hidden] { display: none; }
.c-panel .nh-times button { height: 40px; border: 1px solid var(--line); border-radius: 20px; color: var(--ink); font-size: 13px; text-align: center; }
.c-panel .nh-times button.is-selected, .c-panel .nh-times button[aria-selected="true"] { border-color: transparent; background: var(--accent-book); color: var(--white); font-weight: 700; }
.c-cell select[data-nh-guests-input] { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
/* Избранное: выбрать вместе */
.f-poll { margin: 12px 16px 0; padding: 12px 16px; border: 1px solid var(--line); border-radius: 22px; font-size: 14px; }
.f-poll > summary { color: var(--accent-soft); font-weight: 600; list-style: none; cursor: pointer; }
.f-poll > summary::-webkit-details-marker { display: none; }
.f-poll .meetup-choice { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.f-poll input[type=checkbox] { width: 20px; height: 20px; accent-color: var(--accent-book); }
.f-poll p { margin-top: 10px; color: var(--ink-2); font-size: 13px; }
.f-poll .btn { display: grid; place-items: center; width: 100%; height: 46px; margin-top: 10px; border-radius: 23px; background: var(--accent-book); color: var(--white); font-weight: 700; }
.f-poll .btn:disabled { opacity: .5; }
.f-history { margin: 14px 16px 0; font-size: 14px; }
.f-history h2 { font-size: 15px; font-weight: 700; }
.f-history a { display: block; margin-top: 8px; color: var(--accent-soft); }
/* Всплывающие списки поиска — под панелью, кнопка «Показать места» остаётся доступной */
.c-panel .c-cells { position: static; }
/* Узкий телефон: блок поиска растёт вместе с текстом, ссылка не наезжает на кнопку */
#screen .vn-c { height: auto !important; min-height: 0; }
#screen .vn-new { display: block; margin-bottom: 4px; }
#screen .pg-link { display: inline-block; margin-top: 10px; }
/* Раздел 1. Глазик пароля внутри поля */
:root .ds .pw-field { position: relative; display: flex; align-items: center; width: 100%; }
:root .ds .pw-field input { padding-right: 34px; }
:root .ds .pw-toggle { position: absolute !important; top: 50%; right: 0; width: 24px; height: 24px; margin: 0; transform: translateY(-50%); }
:root .ds :is(.og-pw, .adm, .pr-form, .st-card) .pw-toggle { right: 14px; }
/* Поле «Столик» занимает ширину рядом с «Сохранить» */
.bd-table .wk-table { display: block; flex: 1; min-width: 0; }
.bd-table input { width: 100%; }
/* Счётчик гостей в ряд */
.wk-num { display: flex; align-items: center; gap: 6px; }
.wk-num__btn { display: grid; place-items: center; flex: none; width: 32px; height: 36px; border: 1px solid var(--line); border-radius: 18px; font-size: 16px; font-weight: 400; }
.wk-num input { flex: 1; width: 0; min-width: 0; padding: 0; text-align: center; appearance: textfield; }
.wk-num input::-webkit-inner-spin-button, .wk-num input::-webkit-outer-spin-button { appearance: none; margin: 0; }
/* Окно «Добавить бронь»: без рамки, фон и поля как в макете */
:root .ds dialog.ad-sheet { border: 0; border-radius: 24px; outline: 0; background: var(--plate-6); box-shadow: none; }
:root .ds .ad-sheet .wk-dd__btn { position: relative; display: block; width: 100%; height: 46px; min-height: 0; margin-top: 6px; padding: 0 38px 0 14px; border: 1px solid var(--line-2); border-radius: 23px; background: var(--plate-3); box-shadow: none; color: var(--ink); font-size: 14.5px; font-weight: 400; text-indent: 0; text-align: left; }
.ad-sheet select:invalid ~ .wk-dd__btn { color: var(--ink-3) !important; font-size: 13px !important; }
.ds .ad-sheet .wk-dd__btn::after { right: 14px; width: 18px; height: 18px; margin-top: -9px; border: 0; transform: none; background: var(--ink); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 6.500V12l3.500 2.500'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 6.500V12l3.500 2.500'/%3E%3C/svg%3E") center / contain no-repeat; }
.ds .ad-sheet .wk-date__btn::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6'%3E%3Crect x='3' y='5' width='18' height='16' rx='3'/%3E%3Cpath d='M3 10h18M8 2.500v5M16 2.500v5'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6'%3E%3Crect x='3' y='5' width='18' height='16' rx='3'/%3E%3Cpath d='M3 10h18M8 2.500v5M16 2.500v5'/%3E%3C/svg%3E"); }
.ds .ad-sheet .wk-dd__list { z-index: 5; max-height: 180px; overflow-y: auto; background: var(--bg); }
.ad-two > label { min-width: 0; }
/* Поля в кабинете сотрудника, у заведения и в админке: цвет макета вместо старого серого */
:root[data-theme="dark"] .ds :is(.staff-workspace, .adm) :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]), textarea, select) { background: var(--plate-3); }
/* a-venue-data */
.gd-eye { color: var(--accent-soft); }
.ax-main.vd-w { display: grid; place-items: center; }
.vd-c h3 { text-transform: uppercase; }
/* Выпадающие поля сотрудника и заведения: цвет макета */
:root[data-theme="dark"] .ds .staff-workspace .wk-dd__btn { background: var(--plate-3); font-size: 14.5px; }
/* Окно брони: фон и край важнее старого общего правила для окон */
dialog.ad-sheet { background: var(--plate-6) !important; box-shadow: none !important; border: 0 !important; }
/* Раздел 2. Аватар в шапке — цвет с картинки макета */
.g-ava { background: rgb(85, 42, 23); }
.ad-top .g-ava { background: rgb(85, 42, 23); }
/* «Подробнее»: подчёркивание только у наступившей брони */
.bd-links a, .bd-links button { text-decoration: none; }
.bd-card--s.bd-links > a, .bd-card--s.bd-links > form > button { text-decoration: underline; }
/* Заголовки рядом со стрелкой и рабочих страниц */
:root .ds .cb-back h1 { margin: 0; font-size: 18px; font-weight: 700; line-height: normal; }
:root .ds .adm-w h1 { margin-left: 0; margin-right: 0; font-size: 22px; line-height: 29px; }
/* Заметки: выбранная вкладка с рамкой */
.cb-nseg input:checked + span { background: var(--plate-3); box-shadow: inset 0 0 0 1px var(--line); }
/* Раздел 2: шапка кабинета и значки по картинке */
.g-gear svg { width: 26px; height: 26px; }
.f-h1--e { font-size: 30px; }
#screen:has(.cb-date) .cb-logo { height: 59px; padding-top: 25px; }
#screen .cb-date { margin-top: 10px; }
#screen .cb-seg { margin-top: 12px; }
#screen:has(.cb-note) .cb-logo { padding-top: 25px; }
#screen:has(.rv-seg) > .cb-back { margin-top: 3px; }
#screen > .rv-seg { margin-top: 10px; }
#screen > .rv-sub + .rv { margin-top: 9px; }
.rv-seg a[aria-current] { margin: 3px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); font-weight: 700; }
/* Выбранная вкладка админки: белая с тёмным текстом, как на картинке */
.adm .tabs .tab.is-active, .adm .tab.is-active { border-color: transparent !important; background: rgb(242, 242, 242) !important; color: rgb(28, 29, 29) !important; }
/* Раздел 3. Страница заведения: кадр как на картинке */
/* Избранное */
.f-card img { object-position: 50% 35.5%; }
.f-card span { color: var(--ink-row); }
.f-card b { font-size: 20px; line-height: 28px; }
.f-card div { padding-bottom: 14px; }
/* Толик */
.to-panel { bottom: 63px !important; }
/* Телефон: окно ровно по видимой части экрана (клавиатура и панели браузера сдвигают её, --mobile-viewport-* ставит mobile.js),
   страница под ним не прокручивается — иначе сверху выглядывает кусок предыдущей страницы */
@media (max-width: 1023px) {
  .to-panel { top: var(--mobile-viewport-top, 0px); bottom: max(63px, var(--mobile-viewport-bottom, 0px)) !important; }
  html:has(#assistantPanel:not([hidden])), html:has(#assistantPanel:not([hidden])) body { overflow: hidden; overscroll-behavior: none; }
}
.to-panel .to-start { margin-top: 222px; margin-left: 19px; color: var(--ink-row); }
.to-panel .to-s { min-height: 46px; margin: 0 12px 10px; background: rgba(255, 255, 255, .06); }
.to-panel .to-s svg:first-child { width: 30px; height: 30px; stroke-width: 1.5; }
.to-panel .to-bubble { left: 182px; }
/* Банкет */
#screen:has(.q-form) .g-top > * { transform: translateY(-6px); }
.q-field--sel { height: 44px; }
.q-field--sel .wk-dd, .q-field--sel .wk-date { display: block; height: 44px; }
.q-form .q-send { font-weight: 600; }
/* Карта до нижнего края, кнопки на своих местах */
.mp-map { height: 726px; }
.mp-loc { top: 588px; bottom: auto; }
.mp-hint { top: 570px; bottom: auto; }
:root .ds .mp-map .leaflet-bar a { width: 32px !important; height: 32px !important; line-height: 30px !important; }
/* Панель уведомлений */
:root .ds .notification-panel.pn-panel { position: absolute; left: 90px; right: 14px; top: 59px; width: auto; max-width: none; background: var(--plate-3); }
/* Меню */
#mobileNav form[action="/vyhod"] button { display: inline-grid; width: auto; height: 44px; padding: 0 23px; }
/* Контакты: соцсети в кругах */
.o-soc { justify-content: center; gap: 8px; }
.o-soc a, .o-soc span { display: grid; place-items: center; width: min(50px, calc((100vw - 72px) / 6)); aspect-ratio: 1; border-radius: 50%; background: var(--plate); }
.o-soc svg { width: 26px; height: 26px; }
/* Профиль */
.pr-head { margin-top: 13px; align-items: center; }
.pr-head b { font-size: 18px; }
.pr-head div > span { font-size: 17.5px; line-height: 34px; }
.pr-head small { font-size: 13px; }
.pr-list { margin-top: 24px; }
/* Личные данные */
.d-sub { color: var(--ink); margin-top: 28px; }
.d-label--thin { color: var(--ink); }
/* Вход и регистрация */
:root .ds .na-phone, :root .ds .na-phone * { box-shadow: none; }
:root .ds .na-phone { border-color: var(--line); }
#screen:has(input[name=staff]) .a-forgot { text-decoration: underline; }
.is-reg .t-btn--first { margin-top: 16px; }
#screen:has(input[name=telegram]) .t-check a { text-decoration: none; color: inherit; }
#screen:has(input[name=telegram]) h1 { font-size: 26px; }
#screen:has(input[name=telegram]) h1 + p { max-width: 270px; margin-left: auto; margin-right: auto; }
/* О нас */
.i-osm a { color: var(--accent-soft); }
/* Раздел 3, вторая проверка */
.to-panel .to-start { margin-bottom: 4px; }
.to-s > span { max-width: 190px; }
.to-form { padding-bottom: 17px; }
.q-field--sel label, .q-form .wk-dd, .q-form .wk-date { margin: 0 !important; }
.q-form label { margin: 13px 0 6px 8px !important; }
.q-form label:first-of-type { margin-top: 0 !important; }
.q-form .q-field { margin: 0 !important; }
.q-form .wk-dd__btn { margin: 0 !important; }
#screen .d-input + .d-label { margin-top: 20px; }
#screen .w-h1 { font-size: 18px; line-height: 26px; }
#screen:has(input[name=telegram]) h1 + p { max-width: 258px; }
/* Меню и уведомления: по картинке */
.pm-row { margin-bottom: 4px; }
#mobileNav form[action="/vyhod"] button { place-items: center; margin-top: 3px; }
:root .ds .notification-panel.pn-panel { padding: 8px 16px 5px; }
.q-form.banquet-picker { display: block !important; }
/* Цвета с картинок макета */
.adm .g-logo, .adm .g-logo:not(.tap) { color: rgb(255, 255, 255) !important; }
.adm a.ah-all, .adm .ah-all.ah-site, small.is-w, .gd-eye.gs-eye { color: var(--accent-ink) !important; }
.k-btn.k-btn--send { color: var(--ink); }
#screen:has(.p-tab) .foot-card { background: rgb(40, 40, 44); }
.pr-ava { background: rgb(85, 42, 23); }
.w-ico:not(.k-ico) { background: rgb(74, 36, 28); }
body:has(.d-input) { background: rgb(23, 25, 25); }
.cb-note textarea { background: rgb(40, 40, 36) !important; }
.an-seg a[aria-current] { background: rgb(62, 62, 62); }
.dt-chip { background: rgb(54, 54, 52); }
.dt-mode input:checked + span, .dt-seg input:checked + span { background: rgb(66, 64, 66); }
.dt-s.is-done { background: rgb(62, 64, 64); }
:root[data-theme="dark"] .ds .staff-workspace .wk-dd__btn { background: var(--plate-3) !important; }
#screen:has(.nv-c) :is(.nv-i, textarea), #screen:has(.nv-c) .wk-dd__btn { background: rgb(44, 44, 46) !important; }
.ah-t a { background: rgb(42, 44, 44); }
.adm .searchbox__row input { background: transparent !important; }
.adm .pn-acc { background: rgb(42, 44, 44); }
.bd-two--wait button { opacity: 1; }
#screen .cm-r em, #screen .vn-r em { background: rgb(48, 36, 28); }
:root { --accent: var(--accent-book); }
/* 1. Поиск в админке */
#screen.adm input[type=search]:not(.mp-search input) { background: rgb(26, 28, 28) !important; }
/* 2. Толик: замеры с картинки */
.to-panel { background: rgb(21, 25, 24); }
.to-panel .to-s { background: rgb(31, 37, 37); }
.to-panel .to-in { background: rgb(31, 36, 35); }
.to-panel .to-bubble { background: rgb(31, 35, 35); }
/* 3. Меню: кнопки языка и валюты */
.me-pill { background: rgb(42, 44, 44); }
.me-pill.is-on { background: var(--seg-on); }
/* 4. Затемнение за панелями и окнами */
body:has(#notificationPanel:not([hidden]))::after, body:has(.g-acc[open])::after { content: ""; position: fixed; inset: 60px 0 0; z-index: 20; background: rgb(0 0 0 / .3); pointer-events: none; }
.g-top { z-index: 30; }
:root .ds .notification-panel.pn-panel { background: rgb(35, 37, 38); }
dialog.ad-sheet::backdrop { background: var(--scrim); }
:root .ds .ad-sheet :is(input, textarea), :root .ds .ad-sheet .wk-dd__btn { background: rgb(26, 28, 28) !important; }
/* 5. Новое заведение */
#screen:has(.nv-c) :is(.nv-i, textarea), #screen:has(.nv-c) .wk-dd__btn { background: var(--plate-3) !important; }
:root .ds .nv-2 .wk-dd__btn { height: 36px; min-height: 0; padding: 0 34px 0 12px; border: 1px solid var(--line); border-radius: 18px; box-shadow: none; color: var(--ink); font-size: 14px; font-weight: 400; text-align: left; }
.ds .nv-2 .wk-dd__btn::after { right: 12px; width: 15px; height: 15px; margin-top: -7.5px; border: 0; transform: none; background: var(--ink); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 6.500V12l3.500 2.500'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 6.500V12l3.500 2.500'/%3E%3C/svg%3E") center / contain no-repeat; }
.ds .nv-2 .wk-dd__list { max-height: 200px; overflow-y: auto; background: var(--bg); }
.nv-up > label { display: grid; place-items: center; flex: none; height: 31px; padding: 0 12px; border-radius: 16px; background: var(--status-bg); color: var(--warn); font-size: 13px; font-weight: 600; }
/* Раздел 4 */
.p-hero .scene-slide { object-position: 50% 41.8%; }
.p-hero .scene-controls { display: none; }
.p-hero__back { display: inline-flex; align-items: center; gap: 6px; width: auto; padding: 0 16px 0 12px; border-radius: 19px; font-size: 13.5px; color: var(--white); }
.p-hero__back span { white-space: nowrap; }
.p-row__to { margin-left: 8px; }
.cb-row { height: 52px; margin-bottom: 4px; }
.cb-row svg:last-child { color: var(--ink-2); }
.cb-h1:not(.cb-h1--big) { margin-top: 6px; }
.cb-h1 + .cb-cap { margin-top: 10px; }
#screen:has(.bd-box--a) .cb-logo { height: 58px; }
.bd-box--a { padding-top: 9px; }
.bd-box--a .bd-tel { margin-top: 3px; }
.bd-box--a .bd-reg { margin-top: 0; }
.bd-box--a .bd-facts dd { font-size: 16.5px; }
.bd-links { font-size: 13.5px; }
.bd-links > a, .bd-links > form > button { font-size: 13.5px; line-height: 23px; }
.dt-gal > * { border-color: rgb(84, 85, 87); }
.dt-cover__t.is-over { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; border: 1px dashed rgb(120, 121, 123); background: rgb(0 0 0 / .35); color: var(--white); }
.rv-open > summary.rv-ans { display: inline-flex; align-items: center; width: auto; }
.cm-r a { color: var(--accent-ink); }
/* Инструкция: открытое руководство без оранжевого контура, как соседняя карточка */
.gd-doc.is-on { border-color: var(--line); outline: 0; }
#screen .cm-l h2 + .cm-r { margin-top: 5px; }
/* Окно переписки: на высоком экране как в макете, на низком ужимается, чтобы поле ввода оставалось на экране */
dialog.ch-sheet { inset: max(12px, calc(100dvh - 706px)) 0 auto; height: min(570px, calc(100dvh - 24px)); }
.se-more { margin: 10px 16px 16px; }
.se-more > summary { display: flex; align-items: center; height: 46px; padding: 0 16px; border: 1px solid var(--line); border-radius: 23px; font-size: 14px; font-weight: 600; list-style: none; cursor: pointer; }
.se-more > summary::-webkit-details-marker { display: none; }
.se-more .se-sound { margin: 10px 0 0; }
.me-x { background: rgb(42, 44, 44); }
/* Раздел 5. Рабочее место */
.sw-sum { display: block; list-style: none; cursor: pointer; }
.sw-sum::-webkit-details-marker { display: none; }
.sw-tel a { color: var(--accent-ink); }
.sw-tel .phone-unverified { display: none; }
.sw-item:not([open]) .sw-tel { margin-bottom: 12px; }
:root[data-theme="dark"] .ds .sw-date .wk-dd__btn { height: 42px; border: 1px solid var(--line); border-radius: 21px; background: none !important; box-shadow: none; }
.sw-date .wk-date { display: block; }
.s-cal-back { display: none; }
/* Окна админа */
.g-acc .ao-acc { z-index: 40; }
.ao-acc form { margin: 0; }
.ao-acc form button { display: block; width: 100%; height: 42px; font-size: 15px; text-align: left; }
.adm .ao-acc { background: var(--plate-6); }
:root .ds .notification-panel.ao-not { position: fixed; left: 12px; right: 12px; top: 64px; width: auto; max-width: none; height: 594px; overflow-y: auto; }
.notification-panel .notification-item b, .notification-panel .notification-item strong, .ao-not .notification-item__title { color: var(--ink) !important; }
.us-f.tabs { margin: 0; }
/* Списки админки: только общие элементы вместо старых */
.adm .us-s { display: flex; gap: 12px; }
.adm .us-s input { flex: 1; min-width: 0; }
.adm .us-s input[type=search], .adm .us-s input { min-height: 0; }
.adm .us-f { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; }
.q-b form { display: block; margin: 0; }
.adm .q-more { color: var(--ink-tab) !important; }
.adm .us-t { color: var(--accent-ink) !important; }
.adm .vv a:not(.tap) { color: var(--accent-ink) !important; }
.adm .q-t a { color: var(--accent-ink) !important; }
.us-a form { display: inline; margin: 0; }
.us-a button { color: var(--ink-tab); }
.us-r small { display: block; color: var(--ink-tab); font-size: 12.5px; line-height: 18px; }
.vv-b form { margin: 0 0 0 auto; }
.bk-r { display: flex; gap: 12px; }
.bk-k { flex: none; width: 110px; color: var(--ink-tab); }
.bk-all { display: block; }
.bk-more > summary { list-style: none; color: var(--accent-soft); }
.bk-more > summary::before { content: "▸ "; }
.bk-more[open] > summary::before { content: "▾ "; }
.adm .bk-chat, .adm .ab-add, .adm .ab-site, .adm .ax-main, .adm .tg-main { display: grid; place-items: center; }
.adm .ab h2 { font-size: 15px; }
.adm-w:has(.ad-h1) > div { padding: 0; }
.adm-w:has(.ad-h1) h1.ad-h1 { margin-left: 16px; margin-right: 16px; }
.adm-w:has(.ad-h1) .ad-p, .adm-w:has(.ad-h1) .ct-b, .adm-w:has(.ad-h1) .ub-b, .adm-w:has(.ad-h1) .kq-l, .adm-w:has(.ad-h1) .tg-h2, .adm-w:has(.ad-h1) .ct-h2 { margin-left: 16px; margin-right: 16px; }
.adm-w:has(.ad-h1) :is(.us-f, .us-s, .ax-c, .sb-box, .kq, .q-b, .ab, .ct-l, .q-x, .bk-chat, .ab-add, .ab-site, .c-all, .c-rej, .ub-c) { margin-left: 16px; margin-right: 16px; }
.adm .ct-b { color: var(--accent-ink) !important; }
.ub-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.adm .ub-c input:not([type=checkbox]), .adm .ub-c textarea { font-size: 13px; }
.a-newyear-link { color: var(--ink-tab); }
/* Раздел 5, вторая проверка */
.adm-w > section { margin-left: 0; margin-right: 0; }
.adm-w > section > .blog-editor__actions { display: block; margin: 0; }
.adm .sb-org form button { display: inline-grid; width: auto; }
#screen.adm .ct-b { color: var(--accent-ink) !important; }
#screen.adm .ao-acc a { color: var(--ink) !important; }
.ct-h { max-width: 320px; }
.contact-settings__actions { display: grid; justify-items: start; gap: 10px; margin: 16px; }
.adm .ub-b { margin-top: 8px; }
.adm .ub-h { margin-top: 2px; }
.bk-r .phone-unverified { display: none; }
.bk-back { margin-left: 16px; }
.vv-b em { white-space: nowrap; }
.sw-sum .sw-who { flex-wrap: nowrap; }
/* Фильтры: одна рамка у строки, без овала внутри */
:root .ds .fl-dialog .wk-dd__btn { padding-left: 0; border: 0; border-radius: 0; background: none; box-shadow: none; outline: 0; }
.fl-dialog input:focus, .fl-dialog input:focus-visible, .fl-dialog button:focus, .fl-dialog summary:focus { outline: 0; box-shadow: none; }
.fl-sel .wk-dd, .fl-sel .wk-dd__btn { border: 0 !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; outline: 0 !important; }
.fl-sel .wk-dd__btn { padding-left: 0 !important; }
/* Заявка на бронирование: один экран телефона */
.is-swipe-back .cb-logo { height: 44px; padding-top: 12px; }
.is-swipe-back .bd-h1, .is-swipe-back .cb-back { height: auto; line-height: 26px; }
.is-swipe-back .bd-meta { margin-top: 2px; }
.is-swipe-back .bd-card, .is-swipe-back .bd-box { margin-top: 7px; padding: 8px 14px; }
.is-swipe-back .bd-card--f .bd-facts { gap: 2px 0; margin-top: 2px; }
.is-swipe-back .bd-card--f .bd-edit, .is-swipe-back .bd-edit { margin-top: 2px; }
.is-swipe-back .bd-edit button { width: 30px; height: 30px; }
.is-swipe-back .bd-write { height: 38px; margin-top: 7px; }
.is-swipe-back .bd-card--t .bd-table { margin-top: 3px; }
.is-swipe-back .bd-card--v .bd-two--in { margin-top: 8px; }
.is-swipe-back .bd-area { height: 54px; margin: 6px 16px 6px; }
.is-swipe-back .bd-sec { margin-top: 8px; }
.is-swipe-back .bd-two { margin-top: 6px; }
.bd-fold { margin: 7px 16px 8px; border: 1px solid var(--line); border-radius: 19px; }
.bd-fold > summary { display: flex; align-items: center; justify-content: space-between; height: 38px; padding: 0 14px; font-size: 14px; font-weight: 700; list-style: none; cursor: pointer; }
.bd-fold > summary::-webkit-details-marker { display: none; }
.bd-fold[open] > summary svg { transform: rotate(180deg); }
.bd-fold .bd-links { padding: 0 14px 10px; font-size: 13.5px; }
.bd-fold .bd-links > * { display: block; line-height: 28px; }
.bd-fold .bd-links button { color: inherit; text-decoration: underline; }
/* Выпадающие списки и окна (добавить бронь, переписка и др.) листаются без полосы прокрутки */
.ds .wk-dd__list, .vp-panel, dialog, dialog * { scrollbar-width: none; }
.ds .wk-dd__list::-webkit-scrollbar, .vp-panel::-webkit-scrollbar, dialog::-webkit-scrollbar, dialog *::-webkit-scrollbar { display: none; }
/* Переписка: свои сообщения яркие, ответы контрастные, время мелко под текстом */
.ds .booking-chat__list { gap: 6px; padding: 0 2px; scrollbar-width: none; }
.ds .booking-chat__list::-webkit-scrollbar { display: none; }
.ds .booking-chat__msg, .ds .ch-m > p { max-width: 82%; padding: 8px 12px 6px; border-radius: 18px 18px 18px 6px; background: var(--plate-7); color: var(--ink); font-size: 14.5px; line-height: 20px; }
.ds .booking-chat__msg.is-mine, .ds .ch-m.is-mine > p { justify-self: end; border-radius: 18px 18px 6px 18px; background: var(--accent-book); color: var(--white); }
.ds .booking-chat .booking-chat__msg p { margin: 0; color: inherit; font-size: inherit; line-height: inherit; text-align: left; }
.ds .booking-chat__who { display: block; margin-bottom: 1px; color: var(--accent-ink); font-size: 12.5px; font-weight: 700; }
.ds .booking-chat__meta { margin-top: 2px; color: var(--ink-2); font-size: 11px; text-align: right; }
.ds .booking-chat__msg.is-mine .booking-chat__meta, .ds .booking-chat__msg.is-mine .booking-chat__tr, .ds .ch-m.is-mine time { color: rgb(255 255 255 / .8); }
.ds .ch-m.is-mine > small { display: none; }
.ds .ch-m time { display: block; margin-top: 2px; font-size: 11px; text-align: right; }
/* Админка → Заведения: «+ Добавить заведение» и галочка «Сразу показать в каталоге» в форме */
.adm .pl-add { margin: 6px 0 14px; }
.adm .nv-pub { display: flex; align-items: center; gap: 10px; margin: 18px 0 4px; font-weight: 600; }
#screen.adm:has(.nv-f) { height: auto !important; min-height: 100vh; overflow: visible; }
@media (max-width: 1023px) { .adm .nv-h1, .adm .nv-sub { padding-left: 16px; padding-right: 16px; } }
.adm .nv-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 21px 0 22px; font-size: 14.5px; font-weight: 700; }
.adm .nv-nav > * { display: grid; place-items: center; height: 46px; border: 1px solid var(--line); border-radius: 23px; color: var(--ink); }
.adm .nv-nav .is-main { border: 0; background: var(--accent-book); color: var(--white); }
/* Плашка cookie: плотный фон и кнопки в цветах сайта (были без оформления и сливались с фоном).
   Отказ так же заметен, как согласие: оранжевая рамка против оранжевой заливки */
.cookie-banner { border: 1px solid var(--line); background: var(--bg) !important; color: var(--ink); box-shadow: 0 18px 40px -16px rgb(0 0 0 / .85); }
.cookie-banner b { display: block; margin-bottom: 4px; font-size: 15px; }
.cookie-banner p { color: var(--ink-row); font-size: 13.5px; line-height: 1.45; }
.cookie-banner a { color: var(--accent-soft); text-decoration: underline; }
.cookie-banner__actions { display: grid !important; grid-template-columns: 1fr 1fr; gap: 10px !important; margin-top: 14px !important; }
.cookie-banner__actions .btn { display: grid; place-items: center; min-height: 42px; padding: 0 10px; border: 1px solid var(--accent-book); border-radius: 21px; background: none; color: var(--accent-soft); font-size: 13.5px; font-weight: 600; line-height: 1.2; text-align: center; }
.cookie-banner__actions .btn--primary { background: var(--accent-book); color: var(--white); }
/* Просмотр фото: крестик и стрелки — круглые кнопки как на фото-шапке; квадратная рамка фокуса и подсветка
   нажатия вылезали за кнопку */
body.service-site .venue-lightbox button { display: grid; place-items: center; width: 44px; min-width: 44px; height: 44px; min-height: 44px; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: var(--glass); color: var(--white); font-size: 22px; line-height: 1; -webkit-tap-highlight-color: transparent; }
body.service-site .venue-lightbox button:active:not(:disabled) { background: rgb(255 255 255 / .16); }
body.service-site .venue-lightbox button:focus { outline: 0; }
body.service-site .venue-lightbox button:focus-visible { outline: 2px solid var(--accent-book); outline-offset: 2px; }
body.service-site .venue-lightbox__head { padding: 12px 16px; }
body.service-site .venue-lightbox__controls { padding: 12px 16px 16px; }
/* На сенсорном экране окно само ставит фокус на крестик при открытии — кольцо там не нужно */
@media (hover: none) { body.service-site .venue-lightbox button:focus-visible { outline: 0; } }
/* Обязательная галочка не отмечена (mobile.js): оранжевое кольцо вокруг квадратика */
label.is-invalid input[type="checkbox"] { border-color: var(--accent-book); box-shadow: 0 0 0 2px rgb(237 84 7 / .35); }
.check-err { margin-top: 6px; }
/* Толик: строка ввода растёт под надиктованный текст (высоту ставит app.js, до ~5 строк) */
.to-in { height: auto; min-height: 46px; padding-top: 4px; padding-bottom: 4px; }
.to-in textarea { max-height: 110px; overflow-y: auto; scrollbar-width: none; }
/* Толик: идёт запись — микрофон залит оранжевым, вокруг пульсирует кольцо, оно больше, когда говоришь громче
   (--voice ставит app.js), как в Telegram. Пока распознаётся речь — кнопка приглушена. */
.to-in .is-mic { position: relative; transition: background-color .2s, color .2s, border-color .2s; }
.to-in .is-mic.is-listening { border-color: transparent; background: var(--accent-book); color: var(--white); }
.to-in .is-mic.is-listening::before, .to-in .is-mic.is-listening::after { content: ""; position: absolute; inset: -1px; border-radius: 50%; pointer-events: none; }
.to-in .is-mic.is-listening::before { background: rgb(237 84 7 / .35); transform: scale(calc(1 + var(--voice, 0) * .6)); transition: transform .1s linear; }
.to-in .is-mic.is-listening::after { border: 2px solid rgb(237 84 7 / .6); animation: mic-pulse 1.4s ease-out infinite; }
.to-in .is-mic.is-listening svg { position: relative; }
.to-in .is-mic:disabled { opacity: .5; }
@keyframes mic-pulse { from { transform: scale(1); opacity: 1; } to { transform: scale(1.7); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .to-in .is-mic.is-listening::after { animation: none; } }
/* Колёсико меню (maket/gear.html) на каталоге, странице заведения, входе и регистрации */
.m-gear { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: 50%; color: var(--ink); }
.c-top .m-gear { margin: 0 -8px 0 auto; }
.c-top__me + .m-gear { margin-left: 6px; }
.m-gear--abs { position: absolute; z-index: 14; top: 14px; right: 12px; color: var(--white); }
.p-hero__btns .m-gear.circ { width: 37px; height: 37px; color: var(--white); }
.p-hero__btns .m-gear.circ svg { width: 20px; height: 20px; }
@media (min-width: 1024px) {
  #screen .c-top .m-gear { margin-right: 0; }
  #screen.screen .c-auth { right: calc(var(--desk-pad) + 52px); } /* кнопки входа левее колёсика */
  #screen.vp .p-hero__btns .m-gear.circ { width: 44px; height: 44px; }
}
/* iPhone/iPad: Safari увеличивает страницу и сдвигает её вбок при нажатии на поле со шрифтом меньше 16px
   (строка Толика, поиск каталога). Только на iOS (класс is-ios ставит mobile.js) — там поля 16px; Android и ПК не меняются. */
html.is-ios :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]), textarea, select) { font-size: max(16px, 1em) !important; }
/* Вход и восстановление пароля на телефоне: на низком экране (iPhone с панелями браузера) форма начиналась
   на 270px и «Создать аккаунт» уходил под нижнее меню. Отступ под фото — от 130px до 270px по высоте экрана. */
@media (max-width: 1023px) {
  #screen:has(> .a-body) { --a-top: clamp(130px, calc(100svh - 565px), 270px); }
  #screen > .a-body { padding-top: var(--a-top) !important; }
  #screen > .a-hero { height: calc(var(--a-top) - 10px); }
  #screen > .a-fade { top: calc((var(--a-top) - 10px) / 2); height: calc((var(--a-top) - 10px) / 2); }
}
/* Переключатель «Тёмная тема» в меню показывает настоящее состояние: был всегда оранжевым (гость) или серым (вошедший) */
.me-sw[aria-checked="true"] { background: var(--accent-book); }
.me-sw[aria-checked="false"] { background: var(--switch-off-2); }
.me-sw[aria-checked="false"] i { margin-left: 0; }
/* Соцсети в меню: значки по центру своих ячеек, ровные промежутки, края как у карточки «О сервисе», заголовок по центру
   (были прижаты влево: у первого значка отступа нет, справа пусто — решение Влада 3.11) */
#mobileNav .me-soc-h { margin: 18px 16px 6px; text-align: center; }
#mobileNav .me-soc { justify-items: center; margin: 0 12px 18px; }
#mobileNav .me-soc > * { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; }
/* Ячейка «Дата» на главной нажимается целиком (home-search.js) — курсор-рука на всей ячейке, как у «Времени» и «Гостей» */
.c-cell.nh-date { cursor: pointer; }
/* Кадрирование фото заведения при загрузке (photo-crop.js, решение Влада 2026-11-03) */
.pc-dialog { width: min(520px, calc(100vw - 24px)); max-height: 94dvh; margin: auto; padding: 16px; overflow-y: auto; border: 1px solid var(--line); border-radius: 24px; background: var(--bg); color: var(--ink); }
.pc-dialog::backdrop { background: rgb(0 0 0 / .6); }
.pc-head { display: flex; align-items: center; gap: 10px; }
.pc-title { font-size: 17px; font-weight: 700; }
.pc-count { color: var(--ink-tab); font-size: 13px; }
.pc-x { display: grid; place-items: center; width: 36px; height: 36px; margin-left: auto; border-radius: 50%; background: var(--plate); color: var(--ink); }
.pc-hint { margin: 6px 0 12px; color: var(--ink-tab); font-size: 13px; line-height: 18px; }
.pc-stage { position: relative; overflow: hidden; border-radius: 16px; background: #000; touch-action: none; cursor: grab; user-select: none; }
.pc-stage:active { cursor: grabbing; }
.pc-stage::after { content: ""; position: absolute; inset: 0; border: 2px solid rgb(255 255 255 / .85); border-radius: 16px; pointer-events: none; }
.pc-img { position: absolute; left: 0; top: 0; max-width: none; height: auto; transform-origin: 0 0; pointer-events: none; }
.pc-zoom { display: flex; align-items: center; gap: 12px; margin: 14px 2px 0; color: var(--ink-tab); font-size: 13px; }
.pc-zoom input { flex: 1; accent-color: var(--accent-book); }
.pc-previews { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }
.pc-prev { margin: 0; }
.pc-prev canvas { display: block; width: 100%; border-radius: 10px; background: var(--plate); }
.pc-prev figcaption { margin-top: 5px; color: var(--ink-tab); font-size: 12px; text-align: center; }
.pc-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 16px; }
.pc-btn { display: grid; place-items: center; height: 46px; border: 1px solid var(--line); border-radius: 23px; color: var(--ink); font-size: 14.5px; font-weight: 700; }
.pc-btn.is-main { border: 0; background: var(--accent-book); color: var(--white); }
/* Полоса «Телефон» в кадрировании обложки: что видно в карточке каталога на телефоне, двигается вверх-вниз */
.pc-band { position: absolute; left: 0; right: 0; border: 2px solid var(--accent-book); box-shadow: 0 0 0 9999px rgb(0 0 0 / .4); cursor: ns-resize; touch-action: none; }
.pc-band span { position: absolute; left: 8px; top: 6px; padding: 2px 9px; border-radius: 10px; background: var(--accent-book); color: var(--white); font-size: 11px; font-weight: 700; pointer-events: none; }
/* Фото в статье блога: на телефоне отступы по 16 px с обеих сторон — ширину уменьшаем на них, иначе фото упирается в правый край */
#screen.blog-post > .blog-post__image { max-width: calc(100% - 32px); }
