/* Общая оболочка сервиса и страницы выбора заведений. */
.table-plan { border: 1px solid var(--border); border-radius: 16px; padding: 16px; min-width: 0; margin: 0 0 20px; }
.table-plan legend { font-weight: 700; padding: 0 6px; }
.table-plan h3 { margin: 16px 0 10px; font-size: 16px; }
.table-plan__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 10px; }
.table-choice { display: flex; gap: 8px; align-items: center; cursor: pointer; margin-top: 10px; }
.table-choice > span { display: grid; justify-items: center; gap: 4px; padding: 10px; border: 2px solid var(--border); border-radius: 14px; background: var(--surface); width: 100%; overflow-wrap: anywhere; }
.table-choice input { flex: 0 0 auto; width: 18px; height: 18px; accent-color: #ed6b20; }
.table-choice input:checked + span { border-color: #ed6b20; background: var(--surface-2); }
.table-choice input:focus-visible + span { outline: 3px solid var(--accent); outline-offset: 3px; }
.table-choice svg { width: 70px; height: 50px; fill: #ed6b20; }
.table-choice small { color: var(--text-muted); }
:root { --maxw: 1280px; }
.service-site { background: var(--bg); }
.service-site .header { background: var(--header-bg); backdrop-filter: none; border-bottom: 1px solid var(--border); }
.service-site .header__inner { min-height: 78px; }
.service-site .logo__mark { width: 110px; }
.service-site .logo--sm .logo__mark { width: 88px; }
.service-site .btn { border-radius: 12px; }
.service-site .btn--primary { background: #ff7c36; color: #201107; box-shadow: none; }
.service-site .btn--primary:hover { background: #ff965d; }
.service-site .section { padding-top: 32px; padding-bottom: 24px; }
.service-site .section__head h2 { font-size: clamp(23px, 2.6vw, 30px); letter-spacing: -.035em; }
.service-site .lead { font-size: 15px; }
.service-nav { display: flex; gap: 28px; align-items: center; min-height: 65px; font-size: 13px; font-weight: 600; }
.service-nav a { padding: 20px 0; }
.service-nav .is-current { color: var(--accent); border-bottom: 3px solid var(--accent); }
.service-nav > span { margin-left: auto; color: var(--text-muted); font-size: 12px; font-weight: 400; }
.home-page .hero { max-width: 1240px; width: calc(100% - 40px); margin: 12px auto 0; min-height: 365px; padding: 48px 42px 74px; border-radius: 26px; background: #060e1b; }
.home-page .hero__inner { padding: 0; }
.home-page .hero__inner::before { display: none; }
.home-page .hero__title { font-size: clamp(34px, 4.5vw, 58px); line-height: 1.08; letter-spacing: -.045em; max-width: 720px; margin: 18px 0; color: #fff; text-shadow: none; }
.home-page .hero__title .grad { background: none; -webkit-text-fill-color: #ffd2aa; color: #ffd2aa; text-shadow: none; }
.home-page .hero .eyebrow { padding: 0; background: none; color: #f5c19a; letter-spacing: .13em; font-size: 10px; }
.home-page .hero__sub { margin: 0; color: #e2e7ef; font-size: 15px; max-width: 530px; text-shadow: none; }
.home-page .scene__img { filter: none; background-position: 68% 54%; }
.home-page .scene__fade { background: linear-gradient(90deg, #071020eb, #071020b0 37%, #07102015 73%); }
.home-page .scene__fg { opacity: .12; }
.home-page .scene__bloom { opacity: .15; animation: none; }
.hero-caption { position: absolute; right: 26px; bottom: 55px; font-size: 10px; color: #e5dacb; max-width: 190px; text-align: right; }
.discovery { position: relative; z-index: 3; margin-top: -36px; padding-right: 44px; padding-left: 44px; }
.discovery__search { max-width: none; padding: 22px; background: var(--surface); border-radius: 20px; box-shadow: 0 12px 36px #152a4010; }
.discovery__heading { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 15px; }
.discovery__heading strong { font-size: 19px; }
.discovery__heading > span { color: var(--text-muted); font-size: 12px; }
.discovery .searchbox__row { display: grid; grid-template-columns: minmax(180px, 2fr) minmax(130px, 1fr) minmax(130px, 1fr) auto; gap: 10px; align-items: stretch; }
.discovery .suggest-wrap, .discovery__field { position: relative; min-width: 0; border: 1px solid var(--border-strong); background: var(--surface); border-radius: 12px; padding: 8px 12px; }
.discovery label { display: block; font-size: 10px; color: var(--text-muted); line-height: 1.4; }
.discovery input[type="text"], .discovery select { color: var(--text); background: transparent; width: 100%; font: 500 14px/1.5 var(--font); border: 0; padding: 4px 0 0; border-radius: 0; }
.discovery select option { background: var(--surface); }
.discovery input::placeholder { color: var(--text-muted); }
.discovery .searchbox__hint { font-size: 11px; }
.service-benefits { display: flex; justify-content: center; flex-wrap: wrap; gap: 14px 36px; padding: 22px 0 4px; color: var(--text-dim); font-size: 12px; }
.service-benefits b { color: var(--ok); margin-right: 5px; }
.occasion-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.service-site .occasion-section { padding-left: 20px; padding-right: 20px; }
.occasion { position: relative; overflow: hidden; border-radius: 20px; min-height: 190px; padding: 26px; color: #fff; display: flex; align-items: end; transition: transform .2s; }
.occasion:hover { transform: translateY(-3px); }
.occasion--dinner { background: radial-gradient(ellipse at 100% 0, #b95e41, transparent 70%), #452937; }
.occasion--coffee { background: radial-gradient(ellipse at 100% 0, #e4c398, transparent 70%), #836446; }
.occasion--bar { background: radial-gradient(ellipse at 100% 0, #66958b, transparent 70%), #203d45; }
.occasion__art { position: absolute; right: 20px; top: -24px; font-size: 130px; line-height: 1.5; opacity: .22; transform: rotate(-15deg); }
.occasion > div { position: relative; }
.occasion small { font-size: 9px; letter-spacing: .12em; color: #ffffffbf; }
.occasion h3 { font-size: 25px; margin: 6px 0; }
.occasion div > span { font-size: 12px; color: #fff; }
.city-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.city-tile { display: flex; gap: 12px; align-items: center; padding: 16px; border: 1px solid var(--border); border-radius: 15px; background: var(--surface); }
.city-tile:hover { border-color: var(--accent); }
.city-tile__icon { background: var(--accent-soft); color: var(--accent); font-size: 13px; padding: 12px; border-radius: 10px; }
.city-tile strong { display: block; font-size: 14px; }
.city-tile small { display: block; font-size: 11px; color: var(--text-muted); }
.city-tile__arrow { margin-left: auto; color: var(--text-muted); }
.service-site .grid--places { gap: 20px; }
.service-site .pcard { border-radius: 18px; transform: none; box-shadow: 0 3px 12px #10203006; }
.service-site .pcard:hover { transform: translateY(-4px); box-shadow: 0 12px 28px #10203014; }
.service-site .pcard::after { display: none; }
.service-site .pcard__body { padding: 18px; gap: 7px; }
.service-site .pcard__title { font-size: 18px; font-weight: 700; letter-spacing: -.025em; }
.service-site .pcard__flag { background: #fff5ea; color: #693915; backdrop-filter: none; }
.service-site .pcard__addr { min-height: 40px; font-size: 12px; }
.service-site .pcard .rating { border-radius: 8px; padding: 5px 8px; background: var(--ok-soft); color: var(--ok); }
.service-site .pcard__foot .btn { color: var(--accent); border-color: var(--border); }
.catalog-page .ambient { display: none; }
.catalog-page .page-head h1 { font-size: 32px; letter-spacing: -.04em; }
.catalog-page .searchbox { background: var(--surface); border-color: var(--border); box-shadow: 0 8px 25px #10203008; }
.service-site .booking-assistant { z-index: 80; }
.booking-assistant__panel {
  /* Панель растёт по содержимому. Раньше строка 1fr превращала область
     сообщений в большой пустой прямоугольник до первого ответа. */
  height: auto;
  max-height: none;
  overflow: visible;
  display: block;
}
.booking-assistant__messages {
  align-content: start;
  min-height: 0;
  max-height: min(210px, 27dvh);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}
.booking-assistant__form textarea { min-height: 70px; height: 70px; resize: none; }
.booking-assistant__launcher[aria-expanded="true"] { opacity: 0; pointer-events: none; transform: translateY(8px); }
.booking-assistant__form { padding-top: 2px; }
.booking-assistant__search[hidden] { display: none; }
.assistant-voice { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.assistant-voice button { border: 1px solid var(--border); border-radius: 10px; padding: 9px 12px; background: var(--surface-2); color: var(--text); cursor: pointer; }
.assistant-voice button[aria-pressed="true"] { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-ink); }
.assistant-voice label { display: flex; align-items: center; gap: 6px; }
.assistant-status { color: var(--accent-ink); font-size: 12px; line-height: 1.4; }
.assistant-status:empty { display: none; }
#assistantAudio { width: 100%; height: 34px; }
.assistant-place { display: block; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); color: var(--text); font-size: 13px; }
.assistant-place small { display: block; color: var(--text-muted); margin-top: 4px; }
.assistant-booking { display: block; padding: 12px; border: 1px solid transparent; border-radius: 12px; background: var(--accent-strong); color: #fff; font-size: 13px; font-weight: 800; }
.assistant-booking small { display: block; margin-top: 4px; color: #4b210e; font-weight: 600; }
.booking-assistant__panel { max-height: calc(100dvh - 105px); overflow: hidden; display: flex; flex-direction: column; }
.booking-assistant__panel > * { flex-shrink: 0; }
.booking-assistant__panel > .booking-assistant__messages { flex-shrink: 1; min-height: 40px; }
@media (max-height: 620px) {
  .booking-assistant__panel { bottom: 0; max-height: calc(100dvh - 28px); }
  .booking-assistant__panel > p, .booking-assistant__note { display: none; }
}
.service-site .footer { padding-bottom: 90px; }
@media (max-width: 1000px) {
  .booking-assistant__label { display: none; }
  .booking-assistant__launcher { width: 58px; padding: 8px; justify-content: center; }
  .discovery .searchbox__row { grid-template-columns: 1fr 1fr; }
  .city-grid { grid-template-columns: repeat(2, 1fr); }
  .service-nav > span { display: none; }
  .occasion { padding: 22px; min-height: 170px; }
}
@media (max-width: 640px) {
  .service-site .header__inner { min-height: 65px; gap: 8px; justify-content: space-between; }
  .service-site .logo { gap: 8px; }
  .service-site .logo__mark { width: 94px; height: 34px; }
  .service-site .header__actions { gap: 6px; }
  .service-site .header__actions > a.btn--primary { display: none; }
  .service-nav { gap: 20px; overflow-x: auto; white-space: nowrap; min-height: 56px; font-size: 12px; }
  .service-nav a { padding: 15px 0; }
  .home-page .hero { width: calc(100% - 24px); min-height: 310px; padding: 30px 22px 65px; border-radius: 20px; }
  .home-page .hero__title { font-size: 36px; }
  .home-page .hero__sub { font-size: 13px; }
  .home-page .scene__fade { background: linear-gradient(90deg, #071020e8, #0710209a); }
  .hero-caption { display: none; }
  .discovery { padding: 0 22px; margin-top: -32px; }
  .discovery__search { padding: 16px; }
  .discovery__heading { display: block; }
  .discovery__heading > span { display: block; font-size: 11px; margin-top: 2px; }
  .discovery .suggest-wrap, .discovery .btn { grid-column: 1 / -1; }
  .discovery .btn { padding: 14px; }
  .discovery select { font-size: 12px; }
  .service-site input, .service-site select, .service-site textarea,
  .discovery input[type="text"], .discovery select { font-size: 16px; }
  .service-site .layout > *, .service-site .place-hero > * { min-width: 0; }
  .service-site .grid--places, .service-site .grid--2,
  .service-site .form__row { grid-template-columns: minmax(0, 1fr); }
  .service-site .place-fact { flex-wrap: wrap; overflow-wrap: anywhere; }
  .service-site .btn, .service-site .burger, .service-site .theme-toggle,
  .service-site .booking-assistant__close { min-height: 44px; }
  .service-site .booking-assistant__close { min-width: 44px; }
  .service-site .pcard__addr { overflow-wrap: anywhere; }
  .service-benefits { justify-content: start; gap: 6px; font-size: 11px; }
  .service-benefits span { flex-basis: 100%; }
  .occasion-grid { grid-template-columns: 1fr; gap: 10px; }
  .occasion { min-height: 134px; }
  .occasion__art { right: 32px; font-size: 120px; top: -28px; }
  .city-grid { gap: 8px; }
  .city-tile { padding: 13px 10px; gap: 8px; }
  .city-tile__icon, .city-tile__arrow { display: none; }
  .service-site .section { padding-top: 24px; padding-bottom: 14px; }
  .booking-assistant__panel { height: auto; }
  .booking-assistant__messages { max-height: min(170px, 24dvh); }
  .booking-assistant__panel > p { font-size: 13px; margin: 9px 0 11px; }
  .booking-assistant__note { margin-top: 8px; }
}
@media (prefers-reduced-motion: reduce) { .occasion, .service-site .pcard { transition: none; } }
@media (max-width: 360px) {
  .service-site .header__actions > a.btn--quiet { display: none; }
  .discovery .searchbox__row { grid-template-columns: minmax(0, 1fr); }
  .home-page .hero__title { font-size: 30px; }
}

/* Переписка занимает основную часть окна, форма закреплена под ней. */
.service-site .booking-assistant__panel {
  position: fixed;
  right: 20px;
  bottom: 20px;
  width: min(480px, calc(100vw - 40px));
  height: min(780px, calc(100dvh - 40px));
  max-height: calc(100dvh - 40px);
  padding: 18px;
}
.service-site .booking-assistant__panel > p { margin: 8px 0 12px; font-size: 13px; }
.service-site .booking-assistant__panel > .booking-assistant__messages {
  flex: 1 1 0;
  min-height: 0;
  max-height: none;
  align-content: start;
  margin-bottom: 12px;
}
.service-site .assistant-message { font-size: 15px; line-height: 1.5; overflow-wrap: anywhere; white-space: pre-wrap; }
.service-site .booking-assistant__form { gap: 7px; border-top: 1px solid #ffffff20; padding-top: 12px; }
.service-site .booking-assistant__form textarea { height: 80px; min-height: 80px; font-size: 16px; }
.service-site .booking-assistant__examples { display: none; }
.service-site .booking-assistant__note { font-size: 10px; margin-top: 8px; }
.service-site .booking-assistant__search { padding: 7px; margin-top: 6px; }
@media (max-width: 640px) {
  .service-site .booking-assistant__panel { right: 8px; bottom: 8px; width: calc(100vw - 16px); height: calc(100dvh - 16px); max-height: calc(100dvh - 16px); padding: 14px; }
}
@media (max-height: 620px) {
  .service-site .booking-assistant__panel > p { display: none; }
  .service-site .booking-assistant__form textarea { height: 60px; min-height: 60px; }
  .service-site .booking-assistant__form { gap: 4px; padding-top: 6px; }
}
.language-switch { display:flex; gap:2px; padding:3px; border:1px solid var(--border); border-radius:999px; flex-shrink:0; }
.language-switch button { border:0; background:transparent; color:inherit; min-height:36px; padding:6px 9px; border-radius:999px; cursor:pointer; font:600 12px inherit; }
.language-switch button[aria-pressed=true] { background:#ff7b36; color:#241208; }
/* Выбранный язык и так выделен оранжевым: контур после нажатия мышью лишний.
   С клавиатуры фокус остаётся виден. */
.language-switch button:focus:not(:focus-visible) { outline:none; }
.language-switch button:focus-visible { outline:2px solid #ff7b36; outline-offset:2px; }

/* «Открыть каталог» — в форме кнопки «Спросить Толика», в фирменном оранжевом. */
.catalog-launcher { display:inline-flex; align-items:center; gap:10px; min-height:48px; padding:6px 18px 6px 6px; border:1px solid rgba(255,224,187,.38); border-radius:22px; background:var(--accent); color:#17120f; font:700 14px/1 var(--font); text-decoration:none; box-shadow:0 8px 30px #311f1520; transition:transform .2s ease, box-shadow .2s ease; }
.catalog-launcher:hover { color:#17120f; transform:translateY(-2px); box-shadow:0 14px 34px #311f1533; }
.catalog-launcher:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
.catalog-launcher__icon { display:grid; place-items:center; flex-shrink:0; width:34px; height:34px; border-radius:50%; background:#17120f; color:#fff7ee; }
.catalog-launcher__icon svg { width:18px; height:18px; }
.business-alerts { margin-top:18px; padding:16px; border:1px solid var(--border); border-radius:18px; }
.business-alerts__controls { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.business-alerts label { display:flex; align-items:center; gap:8px; }
.incoming-booking { display:flex; align-items:center; justify-content:space-between; gap:12px; border-left:3px solid #ff7b36; padding:10px; margin-top:8px; background:#ff7b3610; }
.incoming-booking a { overflow-wrap:anywhere; }
.venue-gallery{display:flex;gap:16px;overflow-x:auto;padding:16px 0}.venue-gallery figure{margin:0;flex:0 0 min(80%,360px)}.venue-gallery img{width:100%;height:240px;object-fit:cover;border-radius:20px}.venue-gallery figcaption{font-size:12px;margin-top:8px}.external-reviews__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}.review-text{white-space:pre-line;line-height:1.65;overflow-wrap:anywhere}.external-reviews .panel{padding:24px}
