/* Places Map. Only --plm-* tokens; the chain to ACSS lives in the inline .plm-root block. */
.plm-root { color: var(--plm-text); font: inherit; box-sizing: border-box; }
.plm-root *, .plm-root *::before, .plm-root *::after { box-sizing: inherit; }

.plm-map { display: grid; grid-template-columns: minmax(200px, 30%) minmax(0, 1fr); gap: var(--plm-space); align-items: start; }
.plm-map__stage { position: relative; height: var(--plm-height, 600px); min-height: 280px; overflow: hidden; border-radius: var(--plm-radius); border: 1px solid var(--plm-border); }
.plm-map__canvas { position: absolute; inset: 0; background: var(--plm-border); z-index: 0; }
.plm-map .leaflet-container { font: inherit; }

.plm-panel { display: flex; flex-direction: column; gap: var(--plm-space); max-height: var(--plm-height, 600px); overflow: auto; padding: var(--plm-space); background: var(--plm-surface); border: 1px solid var(--plm-border); border-radius: var(--plm-radius); }
.plm-panel__search { width: 100%; padding: .5em .75em; border: 1px solid var(--plm-border); border-radius: var(--plm-radius); background: var(--plm-surface); color: var(--plm-text); font: inherit; }
.plm-panel__count { margin: 0; font-size: .875em; opacity: .8; }
.plm-facet { margin: 0; padding: 0; border: 0; min-width: 0; }
.plm-facet__title { padding: 0; font-weight: 600; margin-bottom: .25em; }
.plm-facet__list { list-style: none; margin: 0; padding: 0; }
.plm-facet__list .plm-facet__list { padding-inline-start: 1.25em; }
.plm-facet__item { display: flex; gap: .5em; align-items: center; cursor: pointer; padding: .125em 0; }
.plm-facet__count { margin-inline-start: auto; font-size: .8em; opacity: .65; }

.plm-btn { display: inline-block; padding: .5em 1em; border: 1px solid var(--plm-accent); border-radius: var(--plm-radius); background: var(--plm-accent); color: var(--plm-surface); font: inherit; text-decoration: none; cursor: pointer; }
.plm-btn:hover, .plm-btn:focus-visible { background: var(--plm-accent-hover); border-color: var(--plm-accent-hover); }
.plm-btn--ghost { background: transparent; color: var(--plm-accent); }
.plm-btn--ghost:hover, .plm-btn--ghost:focus-visible { background: var(--plm-accent); color: var(--plm-surface); }
.plm-btn[disabled] { opacity: .4; cursor: default; }
.plm-root :focus-visible { outline: 2px solid var(--plm-accent); outline-offset: 2px; }

.plm-status { padding: var(--plm-space); text-align: center; }
.plm-map__stage > .plm-status { position: absolute; z-index: 500; left: 50%; top: 50%; transform: translate(-50%, -50%); background: var(--plm-surface); border-radius: var(--plm-radius); box-shadow: var(--plm-shadow); }

/* Pins */
.plm-pin-wrap { background: none; border: 0; }
.plm-pin { display: block; width: 100%; height: 100%; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--plm-pin-color, var(--plm-accent)); border: 2px solid var(--plm-surface); box-shadow: var(--plm-shadow); }
.plm-pin--s { width: 16px; height: 16px; }
.plm-pin--m { width: 22px; height: 22px; }
.plm-pin--l { width: 30px; height: 30px; }
.plm-pin-wrap:focus-visible { outline: 2px solid var(--plm-accent); outline-offset: 3px; border-radius: 50%; }
.plm-circle { pointer-events: none; }

/* Card (popup, sheet and list): square, facets > title > address > excerpt > foot */
.plm-card { display: flex; flex-direction: column; gap: .4em; width: 100%; aspect-ratio: 1; overflow: hidden; padding: 1.1em 1.25em 1em; border-top: 3px solid var(--plm-accent); border-radius: var(--plm-radius) var(--plm-radius) 0 0; background: var(--plm-surface); color: var(--plm-text); }
.plm-card__facets { font-size: .65em; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--plm-accent); }
.plm-card__title { margin: 0; font-size: 1.25em; line-height: 1.15; letter-spacing: -.01em; }
.plm-card__title:focus { outline: none; }
.plm-card .plm-card__address { margin: 0; font-size: .75em; opacity: .7; }
.plm-card .plm-card__excerpt { margin: 0; min-height: 0; font-size: .95em; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.plm-card__foot { margin-top: auto; padding-top: .75em; border-top: 1px solid var(--plm-border); }
.plm-card__link { font-size: .8em; font-weight: 600; color: inherit; text-decoration: none; box-shadow: 0 2px 0 var(--plm-accent); padding-bottom: 1px; }
.plm-card__link:hover, .plm-card__link:focus-visible { color: var(--plm-accent); }
.plm-map .leaflet-popup-content-wrapper { padding: 0; border-radius: var(--plm-radius); background: var(--plm-surface); box-shadow: var(--plm-shadow); }
.plm-map .leaflet-popup-content { margin: 0; width: min(300px, 70vw) !important; }
.plm-map .leaflet-popup-tip { background: var(--plm-surface); }

/* Bottom sheet (narrow maps) */
.plm-sheet .plm-card { max-width: 340px; margin-inline: auto; }
.plm-sheet { position: absolute; z-index: 1000; left: 0; right: 0; bottom: 0; max-height: 70%; overflow: auto; padding: var(--plm-space); background: var(--plm-surface); border-radius: var(--plm-radius) var(--plm-radius) 0 0; box-shadow: var(--plm-shadow); }
.plm-sheet__close { position: absolute; top: .25em; right: .5em; border: 0; background: none; color: var(--plm-text); font-size: 1.75em; line-height: 1; cursor: pointer; }

/* List */
.plm-list { display: grid; gap: var(--plm-space); }
.plm-items { display: grid; gap: var(--plm-space); grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.plm-item { display: flex; flex-direction: column; aspect-ratio: 1; overflow: hidden; background: var(--plm-surface); border: 1px solid var(--plm-border); border-radius: var(--plm-radius); }
.plm-item .plm-card { flex: 1; min-height: 0; aspect-ratio: auto; width: auto; }
.plm-item__map { font-size: .75em; padding: .5em 1.65em .75em; }
.plm-pager { display: flex; gap: var(--plm-space); align-items: center; justify-content: center; }

/* No filter panel: the stage takes the full width */
.plm-map.plm-root--no-panel { grid-template-columns: 1fr; }

/* Layouts. The width that counts is the root's own, marked by JS with .plm-root--narrow. */
.plm-layout-stacked { grid-template-columns: minmax(0, 1fr); }
.plm-layout-stacked .plm-panel { order: 2; max-height: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); align-items: start; }
.plm-layout-stacked .plm-panel > .plm-panel__search, .plm-layout-stacked .plm-panel > .plm-panel__count, .plm-layout-stacked .plm-panel > .plm-panel__list { grid-column: 1 / -1; }
.plm-root--narrow.plm-layout-split { grid-template-columns: minmax(0, 1fr); }
.plm-root--narrow.plm-layout-split .plm-panel { max-height: 40vh; }

/* Overlay: the panel floats inside the map */
.plm-layout-overlay { position: relative; grid-template-columns: minmax(0, 1fr); }
.plm-layout-overlay .plm-panel { position: absolute; z-index: 1100; top: var(--plm-space); left: var(--plm-space); bottom: var(--plm-space); width: min(292px, 45%); max-height: none; box-shadow: var(--plm-shadow); }
.plm-layout-overlay.plm-root--panel-closed .plm-panel { display: none; }
.plm-panel-toggle { display: none; }
.plm-layout-overlay.plm-root--narrow .plm-panel { right: var(--plm-space); width: auto; bottom: auto; max-height: 65%; top: calc(var(--plm-space) * 4); }
.plm-layout-overlay.plm-root--narrow .plm-panel-toggle { display: inline-block; position: absolute; z-index: 1200; top: var(--plm-space); left: var(--plm-space); box-shadow: var(--plm-shadow); }

/* List inside the panel: compact, scrolls on its own, one card per row (a grid when stacked) */
.plm-panel__list { flex: 1 0 260px; min-height: 0; overflow-y: auto; overscroll-behavior: contain; margin-inline: calc(var(--plm-space) * -.5); padding-inline: calc(var(--plm-space) * .5); }
.plm-panel__list { font-size: .85em; }
.plm-panel__list .plm-items { grid-template-columns: minmax(0, 1fr); gap: calc(var(--plm-space) * .5); }
.plm-panel__list .plm-item { aspect-ratio: auto; }
.plm-panel__list .plm-card { gap: .2em; padding: .6em .75em .5em; border-top-width: 2px; }
.plm-panel__list .plm-card__facets { font-size: .6em; letter-spacing: .1em; }
.plm-panel__list .plm-card__title { font-size: 1em; line-height: 1.2; }
.plm-panel__list .plm-card .plm-card__address { font-size: .75em; }
.plm-panel__list .plm-card .plm-card__excerpt { font-size: .85em; line-height: 1.4; -webkit-line-clamp: 2; line-clamp: 2; }
.plm-panel__list .plm-card__foot { padding-top: .35em; margin-top: .2em; }
.plm-panel__list .plm-card__link { font-size: .75em; }
.plm-panel__list .plm-item__map { align-self: flex-start; padding: 0 .75em .6em; border: 0; background: none; color: var(--plm-text); font: inherit; font-size: .75em; opacity: .6; text-decoration: none; cursor: pointer; }
.plm-panel__list .plm-item__map:hover, .plm-panel__list .plm-item__map:focus-visible { background: none; color: var(--plm-accent); opacity: 1; text-decoration: underline; }
.plm-panel__list .plm-status { padding: var(--plm-space) 0; }
.plm-items__more { min-height: 1px; text-align: center; }
.plm-has-list.plm-layout-split .plm-panel { height: var(--plm-height, 600px); max-height: none; }
.plm-has-list.plm-layout-split.plm-root--narrow .plm-panel { height: auto; max-height: none; }
.plm-has-list.plm-layout-overlay.plm-root--narrow .plm-panel { max-height: 65%; }
.plm-layout-stacked .plm-panel__list { max-height: 420px; flex-basis: auto; }
.plm-layout-stacked .plm-panel__list .plm-items { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
/* Full screen: the root is moved to <body> while open, so a transformed theme wrapper cannot trap position: fixed. */
html.plm-lock { overflow: hidden; }
.plm-root.plm-root--expanded { position: fixed; inset: 0; z-index: 100000; width: auto; height: 100dvh; margin: 0; padding: var(--plm-space); overflow: auto; background: var(--plm-surface); --plm-height: calc(100dvh - var(--plm-space) * 2) !important; }
.plm-ctl .plm-btn { box-shadow: var(--plm-shadow); }
.plm-ctl .plm-expand { position: relative; width: 34px; height: 34px; padding: 0; background: var(--plm-surface); }
.plm-expand::before { content: ""; position: absolute; inset: 7px; background: currentColor; -webkit-mask: var(--plm-icon) center / contain no-repeat; mask: var(--plm-icon) center / contain no-repeat; --plm-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5'/%3E%3C/svg%3E"); }
.plm-expand[aria-expanded="true"]::before { --plm-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 4v5H4M15 4v5h5M9 20v-5H4M15 20v-5h5'/%3E%3C/svg%3E"); }
@media (prefers-reduced-motion: reduce) {
	.plm-root * { transition: none !important; animation: none !important; }
}

.plm-map .leaflet-control-attribution { font-size: 11px; line-height: 1.4; }

.plm-map .leaflet-control-layers { border-radius: var(--plm-radius); box-shadow: var(--plm-shadow); }
.plm-map .leaflet-control-layers-expanded { padding: .5em .75em; background: var(--plm-surface); color: var(--plm-text); }

/* Find Near */
.plm-near { display: flex; flex-direction: column; gap: calc(var(--plm-space) * .5); }
.plm-near__toggle { align-self: flex-start; }
.plm-near__form { display: flex; flex-direction: column; gap: calc(var(--plm-space) * .5); }
.plm-near__form[hidden] { display: none; }
.plm-near__row { display: flex; gap: calc(var(--plm-space) * .5); align-items: stretch; }
.plm-near__input { flex: 1 1 auto; min-width: 0; padding: .5em .75em; border: 1px solid var(--plm-border); border-radius: var(--plm-radius); background: var(--plm-surface); color: var(--plm-text); font: inherit; }
.plm-near__radius { flex: 0 0 auto; padding: .5em; border: 1px solid var(--plm-border); border-radius: var(--plm-radius); background: var(--plm-surface); color: var(--plm-text); font: inherit; }
.plm-near__list { margin: 0; padding: 0; list-style: none; max-height: 14em; overflow-y: auto; border: 1px solid var(--plm-border); border-radius: var(--plm-radius); background: var(--plm-surface); }
.plm-near__list[hidden] { display: none; }
.plm-near__option { padding: .5em .75em; font-size: .875em; cursor: pointer; }
.plm-near__option + .plm-near__option { border-top: 1px solid var(--plm-border); }
.plm-near__option:hover, .plm-near__option[aria-selected="true"] { background: var(--plm-accent); color: var(--plm-surface); }
.plm-near__hint { margin: 0; font-size: .8em; opacity: .85; }
.plm-near__hint:empty { display: none; }
.plm-near-circle { fill-opacity: .08; }
.plm-item__distance { font-size: .75em; opacity: .8; }
