:root {
    --place-gap: 16px;
    --place-radius: 8px;

    --place-muted: var(--muted, #6b7280);
    --place-line: var(--line, #e5e7eb);
    --place-ink: var(--ink, #14181d);
    --place-surface: var(--surface, #ffffff);
    --place-accent: var(--accent, #14509a);
    --place-chip: var(--chip, #f3f4f6);
    --place-overlay: rgb(17 24 39 / 62%);
    --place-on-overlay: #ffffff;

    /* Нажатая кнопка фильтра галереи: инверсия текущей темы. */
    --place-pill-on: var(--ink, #111827);
    --place-pill-on-ink: var(--surface, #ffffff);

    /* Пометка «закрыто» и рамка акции. */
    --place-alarm: var(--pending-soft, #fef3c7);
    --place-promo-line: var(--good, #16a34a);

    /* Полоса «о чём пишут в отзывах». Цвета смысловые, не акцентные:
       хорошо — зелёный, нейтрально — серый, плохо — красный. */
    --place-good: var(--good, #16a34a);
    --place-soso: var(--line-strong, #d1d5db);
    --place-bad: var(--warn, #dc2626);
}

.ui-place {
    max-width: 960px;
    margin: 0 auto;
    padding: 0 var(--place-gap) 48px;
    font: 16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

.ui-place h1 {
    font-size: 28px;
    line-height: 1.2;
    margin: 16px 0 8px;
}

.ui-place h2 {
    font-size: 20px;
    margin: 32px 0 12px;
}

.ui-place h3 {
    font-size: 17px;
    margin: 20px 0 8px;
}

.ui-place h4 {
    font-size: 15px;
    margin: 16px 0 8px;
    color: var(--place-muted);
}

.ui-place section {
    border-top: 1px solid var(--place-line);
}

.ui-place ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

/* --------------------------------------------------------------- галерея */
.ui-place-gallery {
    border-top: 0;
    margin-inline: calc(var(--place-gap) * -1);
}
.ui-place-gallery:has(.ui-place-gallery-strip:empty) {
    display: none;
}

/*
 * Сцена держит стрелки: они абсолютные, и родитель у них — ровно лента,
 * без ряда кнопок сверху и подсказки снизу. Разбор — в партиале.
 */
.ui-place-gallery-stage {
    position: relative;
}
.ui-place-gallery-strip {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.ui-place-gallery-strip::-webkit-scrollbar {
    display: none;
}
.ui-place-gallery-item {
    flex: 0 0 calc(100% - 28px);
    scroll-snap-align: start;
}
.ui-place-gallery-frame {
    position: relative;
    margin: 0;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--place-chip);
}

/*
 * `<picture>` держит размер сам: проценты на `<img>` внутри строчного
 * родителя считаются от блока-предка, и полагаться на это не надо.
 */
.ui-place-gallery-frame picture {
    display: block;
    width: 100%;
    height: 100%;
}

.ui-place-gallery-frame img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.ui-place-gallery-filters {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    padding-inline: var(--place-gap);
    margin-top: 8px;
}

.ui-place-gallery-filters::-webkit-scrollbar {
    display: none;
}

.ui-place-gallery-filter {
    flex: 0 0 auto;
    padding: 5px 12px;
    border: 1px solid var(--place-line);
    border-radius: 999px;
    background: var(--place-surface);
    color: var(--place-ink);
    font: inherit;
    font-size: 13px;
    line-height: 1.25;
    cursor: pointer;
}

.ui-place-gallery-filter--on {
    border-color: var(--place-pill-on);
    background: var(--place-pill-on);
    color: var(--place-pill-on-ink);
}
.ui-place-gallery-tag {
    position: absolute;
    left: 8px;
    bottom: 8px;
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--place-overlay);
    color: var(--place-on-overlay);
    font-size: 12px;
    line-height: 1.25;
}
.ui-place-gallery-source {
    position: absolute;
    right: 8px;
    bottom: 8px;
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--place-overlay);
    color: var(--place-on-overlay);
    font-size: 12px;
    line-height: 1.4;
}

.ui-place-gallery-source a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.ui-place-gallery-hint {
    margin: 8px 0 0;
    padding-inline: var(--place-gap);
    font-size: 13px;
    color: var(--place-muted);
}
.ui-place-gallery-arrow {
    display: flex;
    position: absolute;
    top: 50%;
    z-index: 2;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    margin-top: -20px;
    padding: 0 0 4px;
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 999px;
    background: rgba(17, 24, 39, 0.72);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
    color: #fff;
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
}

/*
 * Кнопка «некуда листать» не серая, а отсутствующая: серая кнопка поверх
 * фотографии — это пятно, которое ничего не значит.
 */
.ui-place-gallery-arrow:disabled {
    opacity: 0;
    pointer-events: none;
}

/*
 * Сосед выглядывает на 20 px, и стрелка «вперёд» стоит левее его края:
 * иначе она висит над чужим кадром и показывает не туда.
 */
.ui-place-gallery-arrow--prev {
    left: 8px;
}

.ui-place-gallery-arrow--next {
    right: 36px;
}

@media (min-width: 900px) {
    .ui-place-gallery {
        margin-inline: 0;
    }

    .ui-place-gallery-strip {
        gap: 12px;
    }

    .ui-place-gallery-item {
        flex-basis: calc(100% - 72px);
    }

    .ui-place-gallery-frame {
        aspect-ratio: 16 / 10;
        border-radius: var(--place-radius);
    }

    /* На широком экране про свайп говорит сам край соседнего кадра. */
    .ui-place-gallery-hint {
        display: none;
    }
    .ui-place-gallery-arrow--prev {
        left: 12px;
    }

    .ui-place-gallery-arrow--next {
        right: 84px;
    }
}

/* ----------------------------------------------------------------- шапка */

.ui-place-head-what,
.ui-place-head-address,
.ui-place-head-chain,
.ui-place-head-price,
.ui-place-head-rating {
    margin: 4px 0;
}

.ui-place-head-rating strong {
    font-size: 20px;
}

.ui-place-head-rating span,
.ui-place-head-what {
    color: var(--place-muted);
}

.ui-place-head-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 16px 0 0;
}

.ui-place-action {
    display: inline-block;
    padding: 10px 18px;
    border: 1px solid var(--place-line);
    border-radius: var(--place-radius);
    text-decoration: none;
}

.ui-place-closed {
    margin: 16px 0;
    padding: 12px 16px;
    border-radius: var(--place-radius);
    background: var(--place-alarm);
}

/* ----------------------------------------------------- таблицы и списки */

.ui-place-schedule-table,
.ui-place-prices-table {
    width: 100%;
    border-collapse: collapse;
}

.ui-place-schedule-table th,
.ui-place-prices-table th {
    text-align: left;
    font-weight: 400;
    padding: 6px 8px 6px 0;
}

.ui-place-schedule-table td,
.ui-place-prices-table td {
    text-align: right;
    padding: 6px 0;
}

.ui-place-schedule-table tr + tr th,
.ui-place-schedule-table tr + tr td,
.ui-place-prices-table tr + tr th,
.ui-place-prices-table tr + tr td {
    border-top: 1px solid var(--place-line);
}

.ui-place-schedule-table tr[data-place-today] {
    font-weight: 600;
}
.ui-place-prices-section {
    margin: 22px 0 8px;
    font-size: 17px;
    font-weight: 600;
}

.ui-place-prices-section:first-of-type {
    margin-top: 8px;
}
.ui-place-prices-note {
    display: block;
    margin: 2px 0 0;
    font-size: 13px;
    line-height: 1.4;
    color: var(--place-muted);
}

.ui-place-tab-note {
    margin: 0 0 12px;
    font-size: 14px;
    color: var(--place-muted);
}
.ui-place-contacts-phones li {
    margin: 4px 0;
}

.ui-place-contacts-note {
    margin-left: 8px;
    font-size: 14px;
    color: var(--place-muted);
}

.ui-place-attrs-list,
.ui-place-contacts-socials,
.ui-place-links-list,
.ui-place-tabs ul {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
}

.ui-place-attrs-list--main li {
    padding: 4px 10px;
    border: 1px solid var(--place-line);
    border-radius: 999px;
}

.ui-place-nearby-list {
    display: grid;
    gap: 8px;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}

.ui-place-mini {
    padding: 12px;
    border: 1px solid var(--place-line);
    border-radius: var(--place-radius);
}

.ui-place-mini-name {
    display: block;
    font-weight: 600;
}

.ui-place-mini-address,
.ui-place-mini-distance,
.ui-place-mini-rating {
    font-size: 14px;
    color: var(--place-muted);
    margin-right: 8px;
}

/* ------------------------------------------------------------------ карта */

.ui-place-map {
    margin: 16px 0;
    min-height: 48px;
}

.ui-place-map-button {
    padding: 10px 18px;
    border: 1px solid var(--place-line);
    border-radius: var(--place-radius);
    background: var(--place-surface);
    cursor: pointer;
    font: inherit;
}

.ui-place-map-canvas {
    height: 320px;
    border-radius: var(--place-radius);
}

.ui-place-address-attribution,
.ui-place-schedule-status {
    font-size: 13px;
    color: var(--place-muted);
}

.ui-place-address-routes a {
    margin-right: 16px;
}

/* ------------------------------------------- волна 07.09.2026: новые блоки */
.ui-place-head-award {
    margin: 4px 0;
}
.ui-place-aspects-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ui-place-aspect {
    display: grid;
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 10px 0;
}

.ui-place-aspect + .ui-place-aspect {
    border-top: 1px solid var(--place-line);
}

.ui-place-aspect-bar {
    display: flex;
    height: 8px;
    border-radius: 999px;
    overflow: hidden;
    background: var(--place-line);
}

.ui-place-aspect-part {
    display: block;
    height: 100%;
}

.ui-place-aspect-part--good {
    background: var(--place-good);
}

.ui-place-aspect-part--soso {
    background: var(--place-soso);
}

.ui-place-aspect-part--bad {
    background: var(--place-bad);
}

.ui-place-aspect-summary,
.ui-place-aspects-note {
    font-size: 14px;
    color: var(--place-muted);
}

@media (min-width: 640px) {
    .ui-place-aspect {
        grid-template-columns: 180px 1fr 190px;
        gap: 12px;
        align-items: center;
    }
}

/*
 * АКЦИЯ. Рамка, а не заливка: блок несёт чужое рекламное обещание,
 * и выделять его сильнее собственных услуг сервиса незачем.
 */
.ui-place-promo {
    border: 1px solid var(--place-line);
    border-left: 3px solid var(--place-promo-line);
    border-radius: var(--place-radius);
    padding: 4px 16px 12px;
}

.ui-place-promo-title {
    font-weight: 600;
}

.ui-place-promo-note {
    font-size: 13px;
    color: var(--place-muted);
}

/* ОСТАНОВКИ и уточнение адреса — текст, а не ссылки (блокер № 61). */
.ui-place-address-extra {
    color: var(--place-muted);
    margin: 4px 0;
}

.ui-place-address-stops {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ui-place-address-stops li {
    padding: 2px 0;
}

.ui-place-address-stops span,
.ui-place-address-metro span {
    color: var(--place-muted);
}


/* ==================================================================== */
/* РЕДИЗАЙН КАРТОЧКИ ОБЪЕКТА, 14.09.2026                                */
/* ==================================================================== */

/* --------------------------------------------------- оценка пилюлей */
.ui-place-head-rating {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px 8px;
}

.ui-place-head-rating strong {
    display: inline-flex;
    align-items: baseline;
    gap: 5px;
    padding: 3px 10px 3px 9px;
    background: var(--good-soft, #e7f3ec);
    border-radius: 14px;
    color: var(--place-good);
    font-size: 16px;
    font-variant-numeric: tabular-nums;
}

.ui-place-head-rating strong::before {
    content: "★";
    font-size: 14px;
    line-height: 1;
}

/* ------------------------------------------------- кнопки в шапке */

.ui-place-head-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 16px 0;
}

.ui-place-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 20px;
    border: 1px solid var(--place-line);
    border-radius: var(--place-radius);
    background: var(--place-surface);
    color: var(--place-accent);
    font-weight: 600;
    text-decoration: none;
}
.ui-place-action:first-child {
    background: var(--place-accent);
    border-color: var(--place-accent);
    color: var(--accent-ink, #ffffff);
}

.ui-place-action:hover {
    text-decoration: none;
}

/* ------------------------------------- закреплённая строка действий */
.ui-place-bar {
    display: none;
}

@media (max-width: 899px) {
    .ui-place-bar {
        position: fixed;
        inset: auto 0 0 0;
        z-index: 40;
        display: flex;
        gap: 10px;
        padding: 10px var(--place-gap) calc(10px + env(safe-area-inset-bottom));
        background: var(--place-surface);
        border-top: 1px solid var(--place-line);
        box-shadow: 0 -4px 20px rgb(12 17 23 / 10%);
    }

    .ui-place-bar-go {
        flex: 1 1 0;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 48px;
        padding: 0 14px;
        border: 1px solid var(--place-accent);
        border-radius: 10px;
        color: var(--place-accent);
        font-size: 16px;
        font-weight: 600;
        text-decoration: none;
    }

    .ui-place-bar-go--call {
        background: var(--place-accent);
        color: var(--accent-ink, #ffffff);
    }
    .ui-place {
        padding-bottom: calc(78px + env(safe-area-inset-bottom));
    }

    .ui-place + .ui-foot {
        padding-bottom: calc(110px + env(safe-area-inset-bottom));
    }

    /* ------------------------------------------- плотность на телефоне */
    .ui-place h1 {
        font-size: 23px;
        margin: 14px 0 6px;
    }

    .ui-place h2 {
        font-size: 18px;
        margin: 24px 0 10px;
    }

    .ui-place h3 {
        font-size: 16px;
    }

    /* Кнопки шапки на всю ширину: это две главные цели первого экрана,
       и делить с ними строку нечему. */
    .ui-place-head-actions {
        display: grid;
        gap: 8px;
    }

    .ui-place-action {
        min-height: 48px;
        font-size: 16px;
    }
    .ui-place-prices-table th,
    .ui-place-schedule-table th {
        font-size: 14px;
        line-height: 1.35;
        overflow-wrap: anywhere;
    }

    .ui-place-prices-table td,
    .ui-place-schedule-table td {
        font-size: 14px;
        white-space: nowrap;
    }

    /* Ряды прайса — выше: по строке таблицы на телефоне ведут пальцем,
       а не курсором, и 24 px слипаются в сплошное полотно. */
    .ui-place-prices-table th,
    .ui-place-prices-table td {
        padding-top: 7px;
        padding-bottom: 7px;
    }
}


/* Оформление страницы организации; правила идут после общего site.css. */


:root {

    --place-accent: var(--brand, #ff5a36);

    /* Скругления карточки — те же 14, что у всего остального. */
    --place-radius: 14px;
}

/* Поле страницы — серое, как на главной и листинге. */
body {
    background: var(--bg, #f1f2f4);
}
.ui-place {
    background: transparent;
    border-radius: 0;
    padding: 0;
    margin-block: 14px 28px;
}

.ui-place-head,
.ui-place > section,
.ui-place-info > section,
.ui-place-details > section {
    background: var(--surface, #ffffff);
    border-radius: 18px;
    padding: 18px 22px;
    margin-bottom: 12px;
}

/* Галерее поля почти не нужны: она и есть своё содержимое. */
.ui-place-gallery {
    padding: 12px;
}

/* Первый заголовок раздела не нуждается в отступе сверху — над ним
   уже граница карточки. */
.ui-place > section > h2:first-child,
.ui-place-info > section > h2:first-child,
.ui-place-details > section > h2:first-child {
    margin-top: 0;
}
@media (min-width: 900px) {
    .ui-place-head:has(> .ui-place-head-visit > *) {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 340px;
        gap: 16px;
        align-items: center;
    }
    .ui-place-head h1 {
        margin-top: 0;
    }
    .ui-place-head-summary,
    .ui-place-head-visit {
        min-width: 0;
    }

    /* Колонки растут независимо: высота графика не отодвигает цены. */
    .ui-place-body:has(> .ui-place-info > section):has(> .ui-place-details > section) {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 340px;
        gap: 0 16px;
        align-items: start;
    }
    .ui-place-info,
    .ui-place-details {
        min-width: 0;
    }
    .ui-place-details {
        order: 1;
    }
    .ui-place-info {
        order: 2;
    }
}

/* ------------------------------------------ разделы объекта */
.ui-place-tabs {
    background: var(--surface, #ffffff);
    border-radius: 18px;
    padding: 14px 18px;
    margin-bottom: 12px;
}

.ui-place-tabs ul {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ui-place-tabs a {
    display: inline-flex;
    align-items: center;
    height: 40px;
    padding: 0 18px;
    font-weight: 600;
    color: var(--ink);
    background: var(--bg, #f1f2f4);
    border-radius: 999px;
    text-decoration: none;
}

.ui-place-tabs a:hover,
.ui-place-tabs a:focus-visible {
    color: #fff;
    background: var(--place-accent);
    text-decoration: none;
}

/* Имя объекта — тот же плотный чёрный, что у H1 листинга. */
.ui-place h1 {
    font-size: clamp(24px, 3vw, 34px);
    line-height: 1.14;
    font-weight: 800;
    letter-spacing: -0.025em;
}

.ui-place h2 {
    font-size: 19px;
    font-weight: 700;
    letter-spacing: -0.02em;
}


.ui-place-action {
    min-height: 46px;
    padding: 0 24px;
    border-radius: 999px;
}
.ui-place-contacts a,
.ui-place-address a {
    color: var(--place-accent);
}

/* Галерея: скругление у ленты целиком, а не у каждого кадра. */
.ui-place-photos,
.ui-place-gallery {
    border-radius: var(--place-radius);
    overflow: hidden;
}

/*
 * Цена не переносится. В одной колонке из двух таблица прайса уже,
 * и «1 947 ₽» рвалось на две строки между числом и знаком рубля.
 */
.ui-place-prices-table td {
    font-weight: 600;
    white-space: nowrap;
}

/* ------------------------------------- о чём пишут в отзывах */
.ui-place-aspects-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(215px, 1fr));
    gap: 10px;
}

.ui-place-aspect {
    display: block;
    grid-template-columns: none;

    padding: 12px 14px;
    background: var(--bg, #f1f2f4);
    border-radius: 12px;
}

.ui-place-aspect + .ui-place-aspect {
    border-top: 0;
}

.ui-place-aspect-name {
    display: block;
    margin-bottom: 9px;
    font-size: 15px;
    font-weight: 600;
    color: var(--ink);
}

.ui-place-aspect-bar {
    height: 6px;
    background: var(--aspect-soso, #d3d8de);
}

.ui-place-aspect-part--good {
    background: var(--aspect-good, #23a566);
}

.ui-place-aspect-part--soso {
    background: var(--aspect-soso, #d3d8de);
}

.ui-place-aspect-part--bad {
    background: var(--aspect-bad, #e2574c);
}

.ui-place-aspect-summary {
    display: block;
    margin-top: 9px;
    font-size: 13px;
    line-height: 1.35;
}

/* Верх карточки: заголовок слева, общая карточка адреса и контактов справа. */
.ui-place-page {
    background: var(--place-surface);
    overflow-x: clip;
}
.ui-place-page .ui-place {
    max-width: 1100px;
    padding-inline: 24px;
    margin-top: 42px;
}
.ui-place-overview {
    position: relative;
    isolation: isolate;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 398px;
    grid-template-rows: max-content 1fr;
    gap: 24px 32px;
    align-items: start;
}
.ui-place-overview-info {
    min-width: 0;
}
.ui-place-overview .ui-place-head {
    grid-column: 1;
    grid-row: 1;
    position: relative;
    display: block;
    min-height: 314px;
    margin: 0;
    padding: 26px 28px;
    overflow: hidden;
    border: 0;
    color: #fff;
    background: #26313b;
    border-radius: 18px;
    overflow-wrap: anywhere;
}
.ui-place-overview .ui-place-head::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgb(20 28 36 / 94%), rgb(20 28 36 / 80%) 45%, rgb(20 28 36 / 24%)), url('/service-placeholder.jpg') center / cover;
    z-index: 0;
}
.ui-place-overview .ui-place-head > * {
    position: relative;
    z-index: 1;
}
.ui-place-overview .ui-crumbs {
    padding: 0;
    margin: 0 0 22px;
    font-size: 11px;
    color: #d7dfe6;
}
.ui-place-overview .ui-crumbs a,
.ui-place-overview .ui-crumbs li::before {
    color: #d7dfe6;
}
.ui-place-overview .ui-place-head h1 {
    margin: 0 0 14px;
    font-size: clamp(28px, 3vw, 36px);
    line-height: 1.15;
    color: #fff;
    max-width: 360px;
}
.ui-place-overview .ui-place-head-what,
.ui-place-overview .ui-place-head-rating span {
    color: #e2e6ea;
    font-size: 13px;
}
.ui-place-overview .ui-place-head-rating {
    margin-top: 24px;
}
.ui-place-overview .ui-place-head-rating strong {
    color: #fff;
    font-size: 20px;
    background: transparent;
    padding: 0;
}
.ui-place-overview .ui-place-head-rating strong::before {
    color: #ff9b65;
}
.ui-place-overview .ui-place-head-chain,
.ui-place-overview .ui-place-head-award {
    color: #d7dfe6;
    font-size: 12px;
}
.ui-place-overview .ui-place-head-price {
    margin-top: 14px;
    color: #fff;
    font-size: 14px;
}
.ui-place .ui-place-overview-about {
    border: 0;
    margin-top: 0;
    margin-bottom: 24px;
    padding: 0;
    overflow-wrap: anywhere;
}
.ui-place-overview-about h2 {
    margin: 0 0 20px;
    font-size: 24px;
}
.ui-place-overview-about p {
    color: var(--place-muted);
    font-size: 15px;
    line-height: 1.7;
    white-space: pre-line;
}
.ui-place-overview-info .ui-place-schedule-table td {
    white-space: normal;
}
.ui-place-overview-info .ui-place-schedule-table td span {
    display: inline-block;
    white-space: nowrap;
}
.ui-place-overview-info {
    grid-column: 2;
    grid-row: 1 / span 2;
    background: var(--place-surface);
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 12px 35px rgb(24 35 45 / 7%);
}
.ui-place-overview-info:not(:has(> *)) {
    display: none;
}
.ui-place-overview:not(:has(> .ui-place-overview-info > *)) {
    grid-template-columns: minmax(0, 1fr);
}
.ui-place-overview-info > section {
    margin: 0 24px;
    padding: 16px 0;
}
.ui-place-overview-info > .ui-place-address {
    border-top: 0;
    padding-top: 22px;
}
.ui-place-overview-info > section > h2 {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}
.ui-place-overview-info .ui-place-map {
    margin: 0;
    height: 314px;
    background-color: #eeede6;
    background-image: linear-gradient(160deg, transparent 43%, #fff 43% 45%, #f8d58c 45% 49%, #fff 49% 51%, transparent 51%), linear-gradient(100deg, #d9e8c9 22%, transparent 22% 48%, #fff 48% 51%, #f8d58c 51% 54%, #fff 54% 57%, transparent 57%), repeating-linear-gradient(0deg, transparent 0 55px, #fff 55px 61px, transparent 61px 97px);
}
.ui-place-overview-info .ui-place-map-button {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    height: 100%;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--place-accent);
}
.ui-place-overview-info .ui-place-map-button span {
    color: var(--place-ink);
    background: var(--place-surface);
    padding: 8px 16px;
    border-radius: 99px;
    font-size: 13px;
    font-weight: 600;
}
.ui-place-overview-info .ui-place-map-canvas {
    height: 314px;
    border-radius: 0;
}
.ui-place-overview-info .ui-place-address-line {
    margin: 0 0 8px;
    font-size: 16px;
    font-weight: 400;
}
.ui-place-address-line a,
.ui-place-address-district a,
.ui-place-head-address a {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: var(--place-line);
    text-underline-offset: 3px;
}
.ui-place-address-line a:hover,
.ui-place-address-district a:hover,
.ui-place-head-address a:hover {
    text-decoration-color: currentColor;
}
.ui-place-overview-info .ui-place-address-metro {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}
.ui-place-metro-dot {
    display: inline-block;
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--muted, #767e89);
}
.ui-place-overview-info .ui-place-address-metro a {
    color: var(--place-ink);
}
.ui-place-overview-info .ui-place-address-extra,
.ui-place-overview-info .ui-place-address-district,
.ui-place-overview-info .ui-place-address-metro,
.ui-place-overview-info .ui-place-address-routes,
.ui-place-overview-info .ui-place-address-panorama {
    font-size: 13px;
    margin: 8px 0;
}
.ui-place-address-more summary,
.ui-place-schedule-details summary {
    cursor: pointer;
    font-size: 13px;
}
.ui-place-address-stops-details h3 {
    display: inline;
    font-size: 13px;
    font-weight: 400;
    margin: 0;
}
.ui-place-overview-info .ui-place-address-stops {
    font-size: 13px;
    margin-top: 10px;
}
.ui-place-overview-info .ui-place-contacts-phones {
    font-size: 21px;
    font-weight: 700;
    overflow-wrap: anywhere;
}
.ui-place-overview-info .ui-place-contacts-phones li + li {
    font-size: 14px;
    margin-top: 5px;
}
.ui-place-overview-info .ui-place-contacts-phones a {
    color: var(--place-ink);
}
.ui-place-overview-info .ui-place-contacts-site,
.ui-place-overview-info .ui-place-contacts-socials {
    font-size: 13px;
}
.ui-place-overview-info .ui-place-head-actions {
    display: grid;
    gap: 8px;
    margin: 4px 24px 24px;
}
.ui-place-page .ui-place-details {
    padding-top: 32px;
}
.ui-place-page .ui-place-body {
    grid-column: 1;
    grid-row: 2;
    display: block;
    margin-top: 0;
    min-width: 0;
}
.ui-place-overview > .ui-place-nearby {
    grid-column: 1;
    grid-row: 2;
    min-width: 0;
}
.ui-place-overview:has(> .ui-place-nearby) > .ui-place-body {
    grid-row: 3;
}
.ui-place-overview:has(> .ui-place-nearby) > .ui-place-overview-info {
    grid-row: 1 / span 3;
}
@media (max-width: 899px) {
    .ui-place-page .ui-place {
        padding-inline: 20px;
        margin-top: 24px;
    }
    .ui-place-overview {
        grid-template-columns: minmax(0, 1fr) 340px;
        gap: 22px;
    }
    .ui-place-overview .ui-place-head {
        padding: 24px 22px;
    }
}
@media (max-width: 680px) {
    .ui-place-overview {
        display: flex;
        flex-direction: column;
        gap: 20px;
    }
    .ui-place-overview .ui-place-head {
        width: 100%;
        min-height: 290px;
        padding: 23px;
        order: 0;
    }
    .ui-place-overview-info {
        width: 100%;
        order: 1;
        border: 1px solid var(--place-line);
    }
    .ui-place-overview .ui-place-nearby {
        order: 0;
    }
    .ui-place .ui-place-overview-about {
        order: 2;
        width: 100%;
        margin-top: 4px;
    }
    .ui-place-page .ui-place-body {
        order: 3;
        width: 100%;
        margin-top: 0;
    }
    .ui-place-overview-info .ui-place-map,
    .ui-place-overview-info .ui-place-map-canvas {
        height: 218px;
    }
    .ui-place-overview-info > section {
        margin-inline: 21px;
    }
    .ui-place-overview-info .ui-place-head-actions {
        margin-inline: 21px;
    }
}
