/**
 * Placess frontend styles.
 * Color system avoids indigo/blue; uses a Himalayan amber + slate palette.
 */

:root {
        --placess-amber: #d97706;
        --placess-amber-dark: #b45309;
        --placess-slate: #1f2937;
        --placess-slate-light: #4b5563;
        --placess-bg-soft: #faf7f2;
        --placess-border: #e5e7eb;
        --placess-radius: 8px;
        --placess-shadow: 0 2px 8px rgba(31, 41, 55, .08);
}

/* ----------------- Single Place Layout ----------------- */
/* NOTE: .placess-single targets the <main> element in the plugin template.
   It does NOT apply to body — the body class is .placess-page (not .placess-single). */

/* Place header (stats + map) — injected into the_content via the_content filter */
.placess-place-header {
        margin: 0 0 24px;
}

.placess-place-header__stats {
        list-style: none;
        padding: 0;
        margin: 0 0 16px;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
        gap: 12px;
}

.placess-place-header__stats li {
        background: var(--placess-bg-soft);
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        padding: 10px 14px;
        display: flex;
        flex-direction: column;
        gap: 2px;
}

.placess-place-header__stats span {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--placess-slate-light);
}

.placess-place-header__stats strong {
        font-size: 16px;
        color: var(--placess-slate);
}

.placess-place-header__map {
        margin: 16px 0;
        border-radius: var(--placess-radius);
        overflow: hidden;
        box-shadow: var(--placess-shadow);
}

.placess-single {
        max-width: 1200px;
        margin: 0 auto;
        padding: 24px 20px 60px;
}

.placess-breadcrumb {
        font-size: 13px;
        color: var(--placess-slate-light);
        margin-bottom: 12px;
}

.placess-breadcrumb a {
        color: var(--placess-amber-dark);
        text-decoration: none;
}

.placess-breadcrumb a:hover {
        text-decoration: underline;
}

.placess-single__header {
        margin-bottom: 24px;
}

.placess-single__title {
        font-size: clamp(28px, 4vw, 42px);
        line-height: 1.15;
        margin: 0 0 6px;
        color: var(--placess-slate);
}

.placess-single__local {
        color: var(--placess-slate-light);
        font-size: 15px;
        margin: 0 0 16px;
}

.placess-single__stats {
        list-style: none;
        padding: 0;
        margin: 0 0 16px;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
        gap: 12px;
}

.placess-single__stats li {
        background: var(--placess-bg-soft);
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        padding: 10px 14px;
        display: flex;
        flex-direction: column;
        gap: 2px;
}

.placess-single__stats span {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--placess-slate-light);
}

.placess-single__stats strong {
        font-size: 16px;
        color: var(--placess-slate);
}

.placess-single__facilities {
        list-style: none;
        padding: 0;
        margin: 0 0 16px;
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
}

.placess-single__facilities li {
        background: #fef3c7;
        color: var(--placess-amber-dark);
        border: 1px solid #fcd34d;
        border-radius: 999px;
        padding: 4px 12px;
        font-size: 12px;
        font-weight: 600;
}

.placess-single__layout {
        display: grid;
        grid-template-columns: 240px 1fr;
        gap: 32px;
        align-items: start;
}

@media (max-width: 900px) {
        .placess-single__layout {
                grid-template-columns: 1fr;
                gap: 20px;
        }
}

.placess-single__toc {
        position: sticky;
        top: 24px;
        align-self: start;
}

.placess-single__content {
        min-width: 0;
}

.placess-single__hero img {
        width: 100%;
        height: auto;
        border-radius: var(--placess-radius);
        display: block;
        margin-bottom: 20px;
}

.placess-single__entry h2 {
        font-size: 26px;
        line-height: 1.2;
        margin: 32px 0 12px;
        padding-bottom: 6px;
        border-bottom: 2px solid #fde68a;
        color: var(--placess-slate);
        scroll-margin-top: 24px;
}

.placess-single__entry h3 {
        font-size: 19px;
        margin: 24px 0 10px;
        color: var(--placess-slate);
}

.placess-single__entry p,
.placess-single__entry li {
        line-height: 1.7;
        color: #374151;
}

.placess-single__entry ul {
        padding-left: 22px;
}

.placess-single__map {
        margin: 24px 0;
        border-radius: var(--placess-radius);
        overflow: hidden;
        box-shadow: var(--placess-shadow);
}

/* ----------------- Sticky TOC ----------------- */

.placess-toc {
        background: var(--placess-bg-soft);
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        overflow: hidden;
}

/*
 * Inline TOC — injected directly into the_content via the the_content filter.
 * This is the theme-independent rendering path. On wide screens it floats
 * left as a sticky sidebar; on narrow screens it collapses into a dropdown
 * button at the top of the content.
 *
 * When the plugin's own single-trekking-places.php template is active, the
 * TOC is rendered in the sidebar via TOC::render() and the inline version
 * is suppressed (TOC::render() returns empty if toc_injected is true, and
 * vice-versa). The .placess-single__entry wrapper below hides the inline
 * TOC when the sidebar layout is present.
 */

/* Default: inline TOC visible (theme template, no sidebar) */
.placess-toc--inline {
        margin: 0 0 24px;
}

/* On wide screens, float the inline TOC left as a sticky sidebar */
@media (min-width: 1100px) {
        .placess-toc--inline {
                float: left;
                width: 260px;
                margin: 0 32px 24px 0;
                position: sticky;
                top: 24px;
                max-height: calc(100vh - 48px);
                overflow: hidden;
        }

        /* When floated, always show the list (no toggle button needed) */
        .placess-toc--inline .placess-toc__toggle {
                display: none !important;
        }

        .placess-toc--inline .placess-toc__list {
                display: block !important;
                max-height: calc(100vh - 120px);
        }

        /* Add clearance so floated TOC doesn't overlap content */
        .placess-single__entry::after {
                content: '';
                display: table;
                clear: both;
        }
}

/* On narrow screens, show the toggle button and collapse the list */
@media (max-width: 1099px) {
        .placess-toc--inline .placess-toc__toggle {
                display: flex;
        }

        .placess-toc--inline .placess-toc__list {
                display: none;
                max-height: 360px;
        }

        .placess-toc--inline .placess-toc__list.is-open {
                display: block;
        }
}

/*
 * When the plugin's own template is active, the sidebar version is used.
 * The inline version (injected into content) should be hidden to avoid
 * duplicates. The plugin template wraps content in .placess-single__entry
 * inside a .placess-single__layout grid, so we target that.
 */
.placess-single__layout .placess-toc--inline {
        display: none !important;
}

/*
 * JS-built TOC (.placess-toc--js) — always visible when present.
 * This is the bulletproof fallback that scans the DOM client-side.
 * It works inside ANY theme's content container.
 */
.placess-toc--js {
        display: block !important;
        margin: 0 0 24px;
        box-sizing: border-box;
}

/* On wide screens, float the JS TOC left as a sticky sidebar */
@media (min-width: 1100px) {
        .placess-toc--js {
                float: left;
                width: 260px;
                margin: 0 32px 24px 0;
                position: sticky;
                top: 24px;
                max-height: calc(100vh - 48px);
                overflow: hidden;
                z-index: 10;
        }

        .placess-toc--js .placess-toc__toggle {
                display: none !important;
        }

        .placess-toc--js .placess-toc__list {
                display: block !important;
                max-height: calc(100vh - 120px);
        }
}

@media (max-width: 1099px) {
        .placess-toc--js .placess-toc__toggle {
                display: flex;
        }

        .placess-toc--js .placess-toc__list {
                display: none;
                max-height: 360px;
        }

        .placess-toc--js .placess-toc__list.is-open {
                display: block;
        }
}

/* Sidebar TOC (from TOC::render() in the plugin template) */
.placess-single__toc .placess-toc {
        /* Same as before — styled by the rules below */
}

.placess-toc__toggle {
        display: none;
        width: 100%;
        background: transparent;
        border: none;
        padding: 14px 16px;
        text-align: left;
        font-size: 14px;
        font-weight: 600;
        color: var(--placess-slate);
        cursor: pointer;
        justify-content: space-between;
        align-items: center;
}

.placess-toc__toggle-icon {
        float: right;
}

.placess-toc__list {
        padding: 12px 16px 16px;
        max-height: calc(100vh - 48px);
        overflow-y: auto;
}

.placess-toc__heading {
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: .06em;
        color: var(--placess-slate-light);
        margin: 0 0 8px;
}

.placess-toc__items {
        list-style: none;
        padding: 0;
        margin: 0;
}

.placess-toc__item a {
        display: block;
        padding: 4px 8px;
        font-size: 13px;
        line-height: 1.4;
        color: var(--placess-slate-light);
        text-decoration: none;
        border-left: 2px solid transparent;
        border-radius: 3px;
        transition: background .15s ease, color .15s ease, border-color .15s ease;
}

.placess-toc__item a:hover {
        color: var(--placess-amber-dark);
        background: rgba(217, 119, 6, .07);
}

.placess-toc__item a.is-active {
        color: var(--placess-amber-dark);
        border-left-color: var(--placess-amber);
        background: rgba(217, 119, 6, .1);
        font-weight: 600;
}

.placess-toc__item--h3 a {
        padding-left: 20px;
        font-size: 12px;
}

@media (max-width: 900px) {
        .placess-single__toc {
                position: static;
        }

        .placess-toc__toggle {
                display: flex;
        }

        .placess-toc__list {
                display: none;
                max-height: 360px;
        }

        .placess-toc__list.is-open {
                display: block;
        }
}

/* ----------------- Archive Extras (Search + Map + Regions) ----------------- */

.placess-archive-extras {
        margin: 0 0 24px;
}

.placess-archive-extras__map {
        margin: 16px 0;
        border-radius: var(--placess-radius);
        overflow: hidden;
        box-shadow: var(--placess-shadow);
}

.placess-archive-extras__regions {
        margin: 20px 0;
        padding: 16px;
        background: var(--placess-bg-soft);
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
}

.placess-archive-extras__regions h3 {
        margin: 0 0 10px;
        font-size: 16px;
        color: var(--placess-slate);
}

.placess-archive-extras__region-list {
        list-style: none;
        padding: 0;
        margin: 0;
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
}

.placess-archive-extras__region-list a {
        display: inline-block;
        padding: 4px 10px;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: 999px;
        font-size: 13px;
        color: var(--placess-slate);
        text-decoration: none;
}

.placess-archive-extras__region-list a:hover {
        border-color: var(--placess-amber);
        color: var(--placess-amber-dark);
}

.placess-archive-extras__region-count {
        color: var(--placess-slate-light);
        font-size: 11px;
}

/* ----------------- Internal Links / Pager ----------------- */

.placess-internal-links {
        margin-top: 40px;
        padding: 20px;
        background: var(--placess-bg-soft);
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
}

.placess-internal-links__title {
        margin: 0 0 12px;
        font-size: 18px;
        color: var(--placess-slate);
}

.placess-internal-links__grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 12px;
}

@media (max-width: 600px) {
        .placess-internal-links__grid {
                grid-template-columns: 1fr;
        }
}

.placess-internal-links__card {
        display: flex;
        flex-direction: column;
        gap: 2px;
        padding: 12px 14px;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: 6px;
        text-decoration: none;
        color: var(--placess-slate);
        transition: border-color .15s ease, transform .15s ease;
}

.placess-internal-links__card:hover {
        border-color: var(--placess-amber);
        transform: translateY(-1px);
}

.placess-internal-links__card--next {
        text-align: right;
}

.placess-internal-links__label {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--placess-slate-light);
}

.placess-internal-links__name {
        font-weight: 600;
        color: var(--placess-amber-dark);
}

.placess-internal-links__subtitle {
        margin: 16px 0 6px;
        font-size: 14px;
        color: var(--placess-slate-light);
}

.placess-internal-links__nearby {
        list-style: none;
        padding: 0;
        margin: 0;
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
}

.placess-internal-links__nearby a {
        display: inline-block;
        padding: 4px 10px;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: 999px;
        font-size: 12px;
        color: var(--placess-slate);
        text-decoration: none;
}

.placess-internal-links__nearby a:hover {
        border-color: var(--placess-amber);
        color: var(--placess-amber-dark);
}

.placess-single__pager {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
        margin-top: 40px;
}

@media (max-width: 600px) {
        .placess-single__pager {
                grid-template-columns: 1fr;
        }
}

.placess-single__pager a {
        display: flex;
        flex-direction: column;
        gap: 4px;
        padding: 16px 20px;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        text-decoration: none;
        color: var(--placess-slate);
        transition: border-color .15s ease, transform .15s ease;
}

.placess-single__pager a:hover {
        border-color: var(--placess-amber);
        transform: translateY(-1px);
}

.placess-single__pager-prev { text-align: left; }
.placess-single__pager-next { text-align: right; }

.placess-single__pager span {
        font-size: 12px;
        color: var(--placess-slate-light);
}

.placess-single__pager strong {
        font-size: 16px;
        color: var(--placess-amber-dark);
}

/* ----------------- Teahouse Table ----------------- */

.placess-teahouse {
        margin: 40px 0;
}

.placess-teahouse__title {
        font-size: 24px;
        margin: 0 0 16px;
        color: var(--placess-slate);
}

.placess-teahouse__scroll {
        overflow-x: auto;
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
}

.placess-teahouse__table {
        width: 100%;
        border-collapse: collapse;
        font-size: 13px;
        background: #fff;
        min-width: 720px;
}

.placess-teahouse__table th,
.placess-teahouse__table td {
        padding: 10px 12px;
        text-align: left;
        border-bottom: 1px solid var(--placess-border);
        vertical-align: top;
}

.placess-teahouse__table th {
        background: var(--placess-bg-soft);
        font-weight: 600;
        color: var(--placess-slate);
        text-transform: uppercase;
        font-size: 11px;
        letter-spacing: .04em;
}

.placess-teahouse__table tbody tr:hover {
        background: #fffbeb;
}

@media (max-width: 720px) {
        .placess-teahouse__table thead { display: none; }
        .placess-teahouse__table, .placess-teahouse__table tbody, .placess-teahouse__table tr, .placess-teahouse__table td {
                display: block;
                width: 100%;
                min-width: 0;
        }
        .placess-teahouse__table tr {
                border-bottom: 2px solid var(--placess-border);
                padding: 8px 0;
        }
        .placess-teahouse__table td {
                border: none;
                padding: 4px 12px;
        }
        .placess-teahouse__table td::before {
                content: attr(data-label) ": ";
                font-weight: 600;
                color: var(--placess-slate-light);
        }
}

/* ----------------- Things To Do ----------------- */

.placess-things {
        margin: 40px 0;
}

.placess-things__title {
        font-size: 24px;
        margin: 0 0 16px;
        color: var(--placess-slate);
}

.placess-things__grid {
        list-style: none;
        padding: 0;
        margin: 0;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
        gap: 16px;
}

.placess-things__item {
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        overflow: hidden;
        display: flex;
        flex-direction: column;
        transition: box-shadow .15s ease, transform .15s ease;
}

.placess-things__item:hover {
        box-shadow: var(--placess-shadow);
        transform: translateY(-2px);
}

.placess-things__image img {
        width: 100%;
        height: 140px;
        object-fit: cover;
        display: block;
}

.placess-things__body {
        padding: 12px 14px;
        display: flex;
        flex-direction: column;
        gap: 4px;
}

.placess-things__name {
        font-weight: 600;
        color: var(--placess-slate);
        font-size: 15px;
}

.placess-things__difficulty,
.placess-things__duration,
.placess-things__season {
        font-size: 12px;
        color: var(--placess-slate-light);
}

.placess-things__difficulty {
        display: inline-block;
        background: #fef3c7;
        color: var(--placess-amber-dark);
        padding: 2px 8px;
        border-radius: 999px;
        font-weight: 600;
        align-self: flex-start;
}

.placess-things__desc {
        font-size: 13px;
        color: #374151;
        line-height: 1.5;
        margin-top: 6px;
}

/* ----------------- Nearby Places ----------------- */

.placess-nearby {
        margin: 40px 0;
}

.placess-nearby__title {
        font-size: 24px;
        margin: 0 0 16px;
        color: var(--placess-slate);
}

.placess-nearby__grid {
        list-style: none;
        padding: 0;
        margin: 0;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
        gap: 14px;
}

.placess-nearby__card a {
        display: flex;
        flex-direction: column;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        overflow: hidden;
        text-decoration: none;
        color: var(--placess-slate);
        transition: border-color .15s ease, transform .15s ease;
}

.placess-nearby__card a:hover {
        border-color: var(--placess-amber);
        transform: translateY(-2px);
}

.placess-nearby__image img {
        width: 100%;
        height: 130px;
        object-fit: cover;
        display: block;
}

.placess-nearby__body {
        padding: 10px 12px;
        display: flex;
        flex-direction: column;
        gap: 4px;
}

.placess-nearby__name {
        font-weight: 600;
        font-size: 14px;
}

.placess-nearby__elev {
        font-size: 12px;
        color: var(--placess-slate-light);
}

/* ----------------- Archive ----------------- */

.placess-archive {
        max-width: 1200px;
        margin: 0 auto;
        padding: 24px 20px 60px;
}

.placess-archive__header {
        margin-bottom: 24px;
}

.placess-archive__title {
        font-size: clamp(26px, 3.5vw, 36px);
        margin: 0 0 8px;
        color: var(--placess-slate);
}

.placess-archive__description {
        color: var(--placess-slate-light);
}

.placess-archive__map {
        margin: 24px 0;
        border-radius: var(--placess-radius);
        overflow: hidden;
        box-shadow: var(--placess-shadow);
}

.placess-archive__subtitle {
        font-size: 22px;
        margin: 32px 0 14px;
        color: var(--placess-slate);
}

.placess-archive__grid {
        list-style: none;
        padding: 0;
        margin: 0;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
        gap: 18px;
}

.placess-archive__card a {
        display: flex;
        flex-direction: column;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        overflow: hidden;
        text-decoration: none;
        color: var(--placess-slate);
        transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
        height: 100%;
}

.placess-archive__card a:hover {
        border-color: var(--placess-amber);
        transform: translateY(-2px);
        box-shadow: var(--placess-shadow);
}

.placess-archive__card-image img {
        width: 100%;
        height: 160px;
        object-fit: cover;
        display: block;
}

.placess-archive__card-body {
        padding: 12px 14px;
        display: flex;
        flex-direction: column;
        gap: 4px;
}

.placess-archive__card-title {
        font-weight: 600;
        font-size: 15px;
        color: var(--placess-slate);
}

.placess-archive__card-region {
        font-size: 12px;
        color: var(--placess-slate-light);
}

.placess-archive__card-elev {
        font-size: 12px;
        font-weight: 600;
        color: var(--placess-amber-dark);
}

.placess-archive__pagination ul {
        list-style: none;
        padding: 0;
        margin: 24px 0 0;
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        justify-content: center;
}

.placess-archive__pagination a,
.placess-archive__pagination span {
        display: inline-block;
        padding: 6px 12px;
        border: 1px solid var(--placess-border);
        border-radius: 6px;
        font-size: 13px;
        color: var(--placess-slate);
        text-decoration: none;
}

.placess-archive__pagination .current {
        background: var(--placess-amber);
        color: #fff;
        border-color: var(--placess-amber);
}

.placess-archive__pagination a:hover {
        border-color: var(--placess-amber);
}

.placess-archive__empty {
        color: var(--placess-slate-light);
        font-style: italic;
}

.placess-archive__regions {
        margin-top: 40px;
        padding: 20px;
        background: var(--placess-bg-soft);
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
}

.placess-archive__regions h2 {
        margin: 0 0 12px;
        font-size: 18px;
}

.placess-archive__region-list {
        list-style: none;
        padding: 0;
        margin: 0;
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
}

.placess-archive__region-list a {
        display: inline-block;
        padding: 4px 10px;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: 999px;
        font-size: 13px;
        color: var(--placess-slate);
        text-decoration: none;
}

.placess-archive__region-list a:hover {
        border-color: var(--placess-amber);
        color: var(--placess-amber-dark);
}

.placess-archive__region-count {
        color: var(--placess-slate-light);
        font-size: 11px;
}

/* ----------------- Search / Filter UI ----------------- */

.placess-search {
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        padding: 20px;
        margin-bottom: 24px;
}

.placess-search__form {
        display: flex;
        flex-direction: column;
        gap: 16px;
}

.placess-search__row {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
}

.placess-search__row--grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
        gap: 12px;
}

.placess-search__row--facets {
        display: flex;
        flex-wrap: wrap;
        gap: 12px 18px;
}

.placess-search__field {
        display: flex;
        flex-direction: column;
        gap: 4px;
        flex: 1;
        min-width: 180px;
}

.placess-search__label {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--placess-slate-light);
        font-weight: 600;
}

.placess-search__field input,
.placess-search__field select {
        padding: 8px 10px;
        border: 1px solid #d1d5db;
        border-radius: 6px;
        font-size: 14px;
        background: #fff;
}

.placess-search__facet {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        font-size: 13px;
        color: var(--placess-slate);
        cursor: pointer;
}

.placess-search__facet input {
        margin: 0;
}

.placess-search__actions {
        display: flex;
        gap: 10px;
}

.placess-search__submit {
        background: var(--placess-amber);
        color: #fff;
        border: none;
        padding: 8px 20px;
        border-radius: 6px;
        font-weight: 600;
        cursor: pointer;
        transition: background .15s ease;
}

.placess-search__submit:hover {
        background: var(--placess-amber-dark);
}

.placess-search__reset {
        background: transparent;
        color: var(--placess-slate-light);
        border: 1px solid var(--placess-border);
        padding: 8px 16px;
        border-radius: 6px;
        cursor: pointer;
}

.placess-search__reset:hover {
        border-color: var(--placess-slate-light);
}

.placess-search__results {
        margin-top: 20px;
}

.placess-search__count {
        font-size: 13px;
        color: var(--placess-slate-light);
        margin: 0 0 12px;
}

.placess-search__list {
        list-style: none;
        padding: 0;
        margin: 0;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
        gap: 14px;
}

.placess-search__item a {
        display: flex;
        gap: 12px;
        padding: 12px;
        background: var(--placess-bg-soft);
        border: 1px solid var(--placess-border);
        border-radius: var(--placess-radius);
        text-decoration: none;
        color: var(--placess-slate);
        transition: border-color .15s ease, transform .15s ease;
        height: 100%;
}

.placess-search__item a:hover {
        border-color: var(--placess-amber);
        transform: translateY(-2px);
}

.placess-search__item-image {
        flex-shrink: 0;
        width: 64px;
        height: 64px;
        overflow: hidden;
        border-radius: 6px;
}

.placess-search__item-image img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
}

.placess-search__item-body {
        display: flex;
        flex-direction: column;
        gap: 2px;
        min-width: 0;
}

.placess-search__item-title {
        font-weight: 600;
        font-size: 14px;
}

.placess-search__item-region,
.placess-search__item-elev {
        font-size: 11px;
        color: var(--placess-slate-light);
}

.placess-search__item-elev {
        color: var(--placess-amber-dark);
        font-weight: 600;
}

.placess-search__item-excerpt {
        font-size: 12px;
        color: #4b5563;
        line-height: 1.4;
        margin-top: 4px;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
}

/* ----------------- Leaflet Map ----------------- */

.placess-map {
        width: 100%;
        border-radius: var(--placess-radius);
        overflow: hidden;
        background: #e5e7eb;
}

.placess-map__error {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;
        margin: 0;
        padding: 20px;
        text-align: center;
        color: var(--placess-slate-light);
        font-size: 13px;
}

.placess-map__marker-pin {
        display: block;
        width: 16px;
        height: 16px;
        background: var(--placess-amber);
        border: 2px solid #fff;
        border-radius: 50% 50% 50% 0;
        transform: rotate(-45deg);
        box-shadow: 0 2px 4px rgba(0, 0, 0, .3);
        margin-top: -4px;
        margin-left: 2px;
}

.placess-map__popup {
        max-width: 240px;
        font-family: inherit;
}

.placess-map__popup-image {
        width: 100%;
        height: 120px;
        object-fit: cover;
        border-radius: 4px;
        display: block;
        margin-bottom: 8px;
}

.placess-map__popup-title {
        margin: 0 0 4px;
        font-size: 14px;
        color: var(--placess-slate);
}

.placess-map__popup-elev {
        font-size: 12px;
        color: var(--placess-amber-dark);
        font-weight: 600;
        margin: 0 0 4px;
}

.placess-map__popup-excerpt {
        font-size: 12px;
        color: #4b5563;
        line-height: 1.4;
        margin: 0 0 8px;
}

.placess-map__popup-link {
        display: inline-block;
        font-size: 12px;
        color: var(--placess-amber-dark);
        text-decoration: none;
        font-weight: 600;
}

.placess-map__popup-link:hover {
        text-decoration: underline;
}

/* Marker cluster overrides */
.marker-cluster-small {
        background-color: rgba(217, 119, 6, .25);
}
.marker-cluster-small div {
        background-color: rgba(217, 119, 6, .65);
        color: #fff;
}
.marker-cluster-medium {
        background-color: rgba(180, 83, 9, .3);
}
.marker-cluster-medium div {
        background-color: rgba(180, 83, 9, .7);
        color: #fff;
}
.marker-cluster-large {
        background-color: rgba(120, 53, 15, .35);
}
.marker-cluster-large div {
        background-color: rgba(120, 53, 15, .75);
        color: #fff;
}

/* ----------------- Places list shortcode ----------------- */

.placess-places-list__grid {
        list-style: none;
        padding: 0;
        margin: 0;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
        gap: 10px;
}

.placess-place-card a {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 10px 14px;
        background: #fff;
        border: 1px solid var(--placess-border);
        border-radius: 6px;
        text-decoration: none;
        color: var(--placess-slate);
        transition: border-color .15s ease;
}

.placess-place-card a:hover {
        border-color: var(--placess-amber);
}

.placess-place-card__elev {
        font-size: 12px;
        color: var(--placess-amber-dark);
        font-weight: 600;
}

/* ----------------- Gutenberg placeholder ----------------- */

.placess-block-placeholder {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 12px;
        background: #faf7f2;
        border: 2px dashed #d97706;
        border-radius: 8px;
        color: #b45309;
        font-size: 14px;
}

.placess-block-placeholder .dashicons {
        font-size: 32px;
        width: 32px;
        height: 32px;
}
