/*
 * Luvia Places — productive Spatial Experience
 *
 * The complete experience is deliberately scoped to .lv-places-spatial.
 * It preserves the accepted bright Places stage while consuming the active
 * trip colour from the application shell. Structural and semantic colours
 * remain stable so that a trip accent never changes the meaning of a status.
 */

.lv-places-spatial {
  --places-accent: var(--trip-accent);
  --places-accent-contrast: var(--trip-accent-contrast, #ffffff);
  --places-accent-ink: color-mix(in srgb, var(--places-accent) 76%, #173244);
  --places-accent-soft: color-mix(in srgb, var(--places-accent) 10%, #ffffff);
  --places-accent-wash: color-mix(in srgb, var(--places-accent) 5%, #f8fcfc);
  --places-ink: #102a3c;
  --places-text: #2c4558;
  --places-muted: #667b8c;
  --places-faint: #8798a5;
  --places-line: #dbe5e9;
  --places-line-strong: #c7d5dc;
  --places-surface: #ffffff;
  --places-surface-soft: #f5f9fa;
  --places-surface-map: #e8f2f3;
  --places-success: #238468;
  --places-info: #2378c9;
  --places-warning: #a66c16;
  --places-danger: #b94557;
  --places-shadow-soft: 0 18px 50px rgba(31, 56, 72, 0.08);
  --places-shadow-float: 0 24px 70px rgba(31, 56, 72, 0.14);
  --places-radius-large: 32px;
  --places-radius-medium: 22px;
  --places-ease: cubic-bezier(0.22, 0.78, 0.22, 1);

  isolation: isolate;
  display: grid;
  gap: clamp(18px, 2.2vw, 30px);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  padding: clamp(4px, 0.8vw, 12px) 0 clamp(88px, 9vw, 132px);
  overflow-x: clip;
  color: var(--places-text);
  color-scheme: light;
  font-family: var(--lv-font-body, Manrope, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
}

.lv-places-spatial,
.lv-places-spatial *,
.lv-places-spatial *::before,
.lv-places-spatial *::after {
  box-sizing: border-box;
}

.lv-places-spatial :where(h1, h2, h3, p, figure) {
  margin: 0;
}

.lv-places-spatial :where(button, input, select, textarea) {
  min-width: 0;
  font: inherit;
}

.lv-places-spatial :where(button, [role="button"], input, select, a) {
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.lv-places-spatial :where(button, [role="button"], a):focus-visible,
.lv-places-spatial :where(input, select, textarea):focus-visible {
  outline: 3px solid color-mix(in srgb, var(--places-accent) 42%, transparent);
  outline-offset: 3px;
}

.lv-places-spatial :where(button, .lv-places-spatial__search-icon, .lv-places-spatial__category-icon) > svg {
  display: block;
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.lv-places-spatial :where(button, [role="button"])[aria-disabled="true"],
.lv-places-spatial :where(button, [role="button"]):disabled {
  cursor: not-allowed;
  opacity: 0.48;
  pointer-events: none;
}

.lv-places-spatial [hidden] {
  display: none;
}

/* Living continuum: planning remains visibly connected to the whole trip. */
.lv-places-spatial__continuum {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-items: end;
  width: min(760px, 100%);
  min-width: 0;
  margin-inline: auto;
  padding-inline: clamp(4px, 1vw, 12px);
}

.lv-places-spatial__continuum-step {
  position: relative;
  display: grid;
  place-items: center;
  min-width: 0;
  min-height: 44px;
  padding: 0 6px 18px;
  border: 0;
  background: transparent;
  color: var(--places-muted);
  font-size: 11px;
  font-weight: 760;
  letter-spacing: 0.09em;
  text-align: center;
  text-transform: uppercase;
  cursor: pointer;
}

.lv-places-spatial__continuum-step::before {
  content: "";
  position: absolute;
  right: 50%;
  bottom: 5px;
  width: 100%;
  height: 1px;
  background: var(--places-line-strong);
}

.lv-places-spatial__continuum-step:first-child::before {
  width: 50%;
}

.lv-places-spatial__continuum-step::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 2px;
  width: 7px;
  height: 7px;
  border: 1px solid var(--places-line-strong);
  border-radius: 50%;
  background: #ffffff;
  transform: translateX(-50%);
}

.lv-places-spatial__continuum-step:is(.is-active, [aria-current="step"]) {
  color: var(--places-accent-ink);
}

.lv-places-spatial__continuum-step:is(.is-active, [aria-current="step"])::before {
  height: 2px;
  background: var(--places-accent);
}

.lv-places-spatial__continuum-step:is(.is-active, [aria-current="step"])::after {
  width: 10px;
  height: 10px;
  bottom: 0;
  border-color: #ffffff;
  background: var(--places-accent);
  box-shadow: 0 0 0 4px var(--places-accent-soft);
}

/* Editorial stage heading, kept open rather than placed in a dark hero card. */
.lv-places-spatial__heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: clamp(18px, 4vw, 64px);
  min-width: 0;
  padding: clamp(10px, 1.8vw, 26px) clamp(2px, 0.7vw, 10px) 0;
}

.lv-places-spatial__heading-copy {
  min-width: 0;
}

.lv-places-spatial__kicker {
  display: block;
  margin-bottom: 12px;
  color: var(--places-accent-ink);
  font-size: 11px;
  font-weight: 850;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.lv-places-spatial__heading h1 {
  max-width: 13ch;
  color: var(--places-ink);
  font-family: var(--lv-font-display, Manrope, Inter, system-ui, sans-serif);
  font-size: clamp(54px, 7vw, 112px);
  font-weight: 720;
  letter-spacing: -0.067em;
  line-height: 0.9;
  overflow-wrap: normal;
  text-wrap: balance;
}

.lv-places-spatial__heading p {
  max-width: 760px;
  margin-top: clamp(14px, 1.6vw, 24px);
  color: var(--places-muted);
  font-size: clamp(16px, 1.2vw, 20px);
  font-weight: 520;
  line-height: 1.55;
  text-wrap: pretty;
}

.lv-places-spatial__ai-action,
.lv-places-spatial__primary-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 52px;
  padding: 0 22px;
  border: 1px solid var(--places-accent);
  border-radius: 15px;
  background: var(--places-accent);
  color: var(--places-accent-contrast);
  box-shadow: 0 14px 30px color-mix(in srgb, var(--places-accent) 22%, transparent);
  font-size: 14px;
  font-weight: 820;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: transform 180ms var(--places-ease), box-shadow 220ms ease, filter 220ms ease;
}

/* The accepted Compass context callout between promise and utility controls. */
.lv-places-spatial__context {
  position: relative;
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr) minmax(280px, 0.64fr);
  align-items: center;
  gap: clamp(18px, 2.4vw, 38px);
  min-width: 0;
  padding: clamp(22px, 2.6vw, 38px);
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--places-accent) 18%, var(--places-line));
  border-radius: var(--places-radius-large);
  background:
    radial-gradient(circle at 82% 18%, color-mix(in srgb, var(--places-accent) 8%, transparent) 0 16%, transparent 40%),
    linear-gradient(132deg, #ffffff 0%, var(--places-accent-wash) 56%, #f9fcfc 100%);
  box-shadow: var(--places-shadow-soft);
}

.lv-places-spatial__context::after {
  content: "";
  position: absolute;
  right: 8%;
  top: -72%;
  width: 310px;
  aspect-ratio: 1;
  border: 1px dashed color-mix(in srgb, var(--places-accent) 20%, transparent);
  border-radius: 50%;
  pointer-events: none;
}

.lv-places-spatial__context-compass {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 100%;
  max-width: 112px;
  aspect-ratio: 1;
  border: 1px dashed var(--places-line-strong);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.88);
}

.lv-places-spatial__context-compass :where(img, svg) {
  display: block;
  width: 76%;
  height: 76%;
  object-fit: contain;
  filter: drop-shadow(0 12px 20px rgba(42, 70, 83, 0.13));
}

.lv-places-spatial__context-copy {
  position: relative;
  z-index: 1;
  min-width: 0;
}

.lv-places-spatial__context-copy small {
  display: block;
  margin-bottom: 8px;
  color: var(--places-accent-ink);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.lv-places-spatial__context-copy h2 {
  color: var(--places-ink);
  font-family: var(--lv-font-display, Manrope, Inter, system-ui, sans-serif);
  font-size: clamp(25px, 2.2vw, 37px);
  font-weight: 720;
  letter-spacing: -0.04em;
  line-height: 1.08;
  text-wrap: balance;
}

.lv-places-spatial__context-copy p {
  max-width: 760px;
  margin-top: 9px;
  color: var(--places-muted);
  font-size: 14px;
  line-height: 1.55;
  text-wrap: pretty;
}

.lv-places-spatial__capabilities {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, auto));
  justify-content: end;
  gap: 8px;
  min-width: 0;
}

.lv-places-spatial__capability {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid var(--places-line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.92);
  color: var(--places-text);
  font-size: 10px;
  font-weight: 800;
  white-space: nowrap;
}

.lv-places-spatial__capability--more {
  color: var(--places-accent-ink);
  border-color: color-mix(in srgb, var(--places-accent) 28%, var(--places-line));
  background: var(--places-accent-soft);
}

/* Search and filter controls. */
.lv-places-spatial__search {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.lv-places-spatial__search-field {
  position: relative;
  display: flex;
  align-items: center;
  min-width: 0;
}

.lv-places-spatial__search-icon {
  position: absolute;
  left: 20px;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  color: var(--places-muted);
  pointer-events: none;
}

.lv-places-spatial__search-input {
  width: 100%;
  min-height: 58px;
  padding: 0 20px 0 56px;
  border: 1px solid var(--places-line-strong);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.96);
  color: var(--places-ink);
  font-size: 17px;
  font-weight: 560;
  box-shadow: 0 9px 28px rgba(31, 56, 72, 0.035);
  outline: 0;
  transition: border-color 180ms ease, box-shadow 180ms ease;
}

.lv-places-spatial__search-input::placeholder {
  color: #8798a5;
  opacity: 1;
}

.lv-places-spatial__search-input:focus {
  border-color: color-mix(in srgb, var(--places-accent) 62%, var(--places-line-strong));
  box-shadow: 0 0 0 4px var(--places-accent-soft), 0 12px 30px rgba(31, 56, 72, 0.06);
}

.lv-places-spatial__filter,
.lv-places-spatial__search-submit,
.lv-places-spatial__secondary-action {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-height: 58px;
  padding: 0 19px;
  border-radius: 15px;
  font-size: 14px;
  font-weight: 820;
  white-space: nowrap;
  cursor: pointer;
  transition: transform 180ms var(--places-ease), border-color 180ms ease, background-color 180ms ease;
}

.lv-places-spatial__filter,
.lv-places-spatial__secondary-action {
  border: 1px solid var(--places-line-strong);
  background: #ffffff;
  color: var(--places-text);
}

.lv-places-spatial__filter-count {
  display: grid;
  place-items: center;
  min-width: 23px;
  height: 23px;
  padding-inline: 6px;
  border-radius: 999px;
  background: var(--places-info);
  color: #ffffff;
  font-size: 11px;
  font-weight: 900;
}

.lv-places-spatial__filter-panel {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--places-line);
  border-radius: 16px;
  background: rgba(255,255,255,.95);
  box-shadow: 0 13px 30px rgba(31,56,72,.06);
}

.lv-places-spatial__filter-panel > div {
  display: grid;
  min-width: min(210px, 32%);
  margin-right: auto;
}

.lv-places-spatial__filter-panel > div span {
  color: var(--places-accent-ink);
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.lv-places-spatial__filter-panel > div strong {
  margin-top: 3px;
  color: var(--places-ink);
  font-size: 12px;
}

.lv-places-spatial__filter-panel > button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 44px;
  padding: 0 13px;
  border: 1px solid var(--places-line-strong);
  border-radius: 12px;
  background: #fff;
  color: var(--places-text);
  font-size: 10px;
  font-weight: 820;
  cursor: pointer;
}

.lv-places-spatial__filter-panel > button[aria-pressed="true"] {
  border-color: color-mix(in srgb, var(--places-accent) 42%, var(--places-line));
  background: var(--places-accent-soft);
  color: var(--places-accent-ink);
}

.lv-places-spatial__filter-panel svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
}

.lv-places-spatial__search-submit {
  min-width: 112px;
  border: 1px solid var(--places-accent);
  background: var(--places-accent);
  color: var(--places-accent-contrast);
  box-shadow: 0 12px 26px color-mix(in srgb, var(--places-accent) 18%, transparent);
}

.lv-places-spatial > #places-filter-panel:empty {
  display: none;
}

/* Ten canonical categories form one locally scrollable rail. */
.lv-places-spatial__categories {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(148px, 1fr);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  border-block: 1px solid var(--places-line);
  background: rgba(255, 255, 255, 0.72);
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--places-accent) 28%, var(--places-line-strong)) transparent;
  overscroll-behavior-inline: contain;
  scroll-snap-type: inline proximity;
  -webkit-overflow-scrolling: touch;
}

.lv-places-spatial__categories::-webkit-scrollbar {
  height: 5px;
}

.lv-places-spatial__categories::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background: color-mix(in srgb, var(--places-accent) 28%, var(--places-line-strong));
}

.lv-places-spatial__category {
  position: relative;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: center;
  gap: 11px;
  min-width: 0;
  min-height: 76px;
  padding: 10px 16px;
  border: 0;
  border-right: 1px solid var(--places-line);
  background: transparent;
  color: var(--places-text);
  text-align: left;
  cursor: pointer;
  scroll-snap-align: start;
  transition: background-color 180ms ease, color 180ms ease;
}

.lv-places-spatial__category-icon {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--places-surface-soft);
  color: var(--places-muted);
  font-size: 19px;
  transition: background-color 180ms ease, color 180ms ease, transform 180ms var(--places-ease);
}

.lv-places-spatial__category-copy {
  display: block;
  min-width: 0;
}

.lv-places-spatial__category-copy strong,
.lv-places-spatial__category-copy small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lv-places-spatial__category-copy strong {
  color: var(--places-ink);
  font-size: 11px;
  font-weight: 830;
}

.lv-places-spatial__category-copy small {
  margin-top: 5px;
  color: var(--places-muted);
  font-size: 8px;
  font-weight: 580;
}

.lv-places-spatial__category:is(.is-active, [aria-selected="true"]) {
  background: linear-gradient(90deg, var(--places-accent-soft), color-mix(in srgb, var(--places-accent) 3%, #ffffff));
}

.lv-places-spatial__category:is(.is-active, [aria-selected="true"])::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--places-accent);
}

.lv-places-spatial__category:is(.is-active, [aria-selected="true"]) .lv-places-spatial__category-icon {
  background: var(--places-accent);
  color: var(--places-accent-contrast);
}

/* One map-first spatial canvas. Result details open from a verified pin. */
.lv-places-spatial__canvas {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
  min-height: 740px;
  overflow: hidden;
  border: 1px solid var(--places-line-strong);
  border-radius: var(--places-radius-large);
  background: #ffffff;
  box-shadow: var(--places-shadow-soft);
}

.lv-places-spatial__map {
  position: relative;
  min-width: 0;
  min-height: 740px;
  overflow: hidden;
  border-right: 0;
  background:
    radial-gradient(ellipse at 78% 42%, rgba(181, 219, 235, 0.72) 0 23%, transparent 24%),
    linear-gradient(124deg, transparent 0 34%, rgba(184, 211, 181, 0.62) 34.2% 36.2%, transparent 36.4%),
    repeating-linear-gradient(15deg, transparent 0 62px, rgba(117, 147, 158, 0.08) 63px 64px),
    linear-gradient(135deg, #edf5f4 0%, #eaf3ef 52%, #dcecf2 100%);
}

.lv-places-spatial__map::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.2), transparent 20% 78%, rgba(255, 255, 255, 0.12)),
    linear-gradient(180deg, rgba(255, 255, 255, 0.14), transparent 28% 78%, rgba(22, 52, 67, 0.035));
  pointer-events: none;
}

.lv-places-spatial__map-engine { position:absolute;inset:0;width:100%;height:100%;overflow:hidden;opacity:1;visibility:visible;pointer-events:auto; }
.lv-places-spatial__map-fallback { overflow:hidden;opacity:1;visibility:visible;background:#edf3f3;pointer-events:none; }
.lv-places-spatial__map-fallback::before,.lv-places-spatial__map-fallback::after,.lv-places-spatial__map-fallback > i { display:none; }
.lv-places-spatial__map-fallback > span { position:absolute;left:50%;top:50%;display:flex;align-items:center;gap:9px;min-height:44px;padding:10px 14px;border:1px solid rgba(185,204,211,.9);border-radius:999px;background:rgba(255,255,255,.94);color:var(--places-muted);box-shadow:0 14px 34px rgba(32,58,72,.11);font-size:10px;font-weight:820;transform:translate(-50%,-50%);white-space:nowrap; }
.lv-places-spatial__map-fallback > span svg { width:18px;height:18px;fill:none;stroke:var(--places-accent-ink);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round; }

.lv-places-spatial__map:is(.is-ready, [data-map-state="ready"]) .lv-places-spatial__map-engine {
  opacity: 1;
}

.lv-places-spatial__map:is(.is-ready, [data-map-state="ready"]) .lv-places-spatial__map-fallback {
  opacity: 0;
  visibility: hidden;
}

.lv-places-spatial .maplibregl-map {
  width: 100%;
  height: 100%;
  color: var(--places-text);
  font: inherit;
}

.lv-places-spatial .maplibregl-canvas {
  filter: saturate(0.76) contrast(0.93) brightness(1.045);
}

.lv-places-spatial .maplibregl-ctrl-group {
  overflow: hidden;
  border: 1px solid rgba(187, 205, 213, 0.9);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 12px 28px rgba(32, 58, 72, 0.11);
}

.lv-places-spatial .maplibregl-ctrl-group button {
  width: 44px;
  height: 44px;
}

.lv-places-spatial .maplibregl-ctrl-attrib {
  padding: 4px 7px;
  border-radius: 8px 0 0 0;
  background: rgba(255, 255, 255, 0.88);
  color: #607483;
  font-size: 9px;
}

.lv-places-spatial__map-control {
  position: absolute;
  z-index: 8;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  padding: 0;
  border: 1px solid rgba(190, 205, 213, 0.92);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.95);
  color: var(--places-text);
  box-shadow: 0 12px 28px rgba(32, 58, 72, 0.12);
  cursor: pointer;
  backdrop-filter: blur(12px);
}

.lv-places-spatial__map-control--locate {
  right: 18px;
  bottom: 24px;
}

.lv-places-spatial__map-control--filters {
  right: 18px;
  top: 18px;
}

.lv-places-spatial__marker-anchor {
  position: absolute;
  z-index: 6;
  width: 44px;
  height: 44px;
  pointer-events: none;
}

.lv-places-spatial__marker {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 2px solid #ffffff;
  border-radius: 50%;
  background: var(--places-info, #2c93a9);
  color: #ffffff;
  box-shadow: 0 10px 22px rgba(31, 65, 86, 0.2);
  font-size: 14px;
  font-weight: 900;
  cursor: pointer;
  pointer-events: auto;
  transform-origin: 50% 100%;
  animation: lv-places-spatial-marker-float 3.4s ease-in-out var(--places-marker-float-delay, 0s) infinite;
  transition: scale 180ms var(--places-ease), background-color 180ms ease, box-shadow 180ms ease;
}

/* Exact cardinal colours from the Living Compass outer ring. */
.lv-places-spatial__marker[data-compass-tone="0"] { background: #ef6254; }
.lv-places-spatial__marker[data-compass-tone="1"] { background: #f4b34c; color: #17384d; }
.lv-places-spatial__marker[data-compass-tone="2"] { background: #2c93a9; }
.lv-places-spatial__marker[data-compass-tone="3"] { background: #2f8c73; }

.lv-places-spatial__marker::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -5px;
  z-index: -1;
  width: 11px;
  height: 11px;
  border-right: 2px solid #ffffff;
  border-bottom: 2px solid #ffffff;
  background: inherit;
  transform: translateX(-50%) rotate(45deg);
}

.lv-places-spatial__marker > span {
  position: relative;
  z-index: 1;
}

.lv-places-spatial__marker::before {
  content: "";
  position: absolute;
  inset: -9px;
  z-index: -2;
  border-radius: 50%;
  background: conic-gradient(from 0deg, #ef6254, #f4b34c 20%, #2f8c73 42%, #2c93a9 62%, #756fa9 82%, #a65f8f 92%, #ef6254);
  opacity: 0;
  scale: .78;
  transition: opacity 180ms ease, scale 260ms var(--places-ease);
}

.lv-places-spatial__marker > b {
  position: absolute;
  right: -7px;
  top: -8px;
  z-index: 3;
  display: none;
  place-items: center;
  width: 20px;
  height: 20px;
  border: 2px solid #ffffff;
  border-radius: 50%;
  background: #f4b34c;
  color: #17384d;
  box-shadow: 0 5px 12px rgba(31, 65, 86, 0.2);
  font-size: 11px;
  line-height: 1;
}

.lv-places-spatial__marker.is-preferred > b { display: grid; }

.lv-places-spatial__marker.is-preferred {
  box-shadow: 0 0 0 5px rgba(244, 179, 76, 0.25), 0 10px 22px rgba(31, 65, 86, 0.2);
}

.lv-places-spatial__marker:is(.is-selected, [aria-pressed="true"]) {
  z-index: 7;
  color: var(--places-accent-contrast, #ffffff);
  scale: 1.28;
  box-shadow: 0 0 0 4px #ffffff, 0 0 0 10px rgba(255,255,255,.56), 0 18px 34px rgba(31, 65, 86, 0.32);
}

.lv-places-spatial__marker:is(.is-selected, [aria-pressed="true"])::before {
  opacity: 1;
  scale: 1;
  animation: lv-places-selected-pin-halo 1.8s ease-in-out infinite;
}

@keyframes lv-places-spatial-marker-float {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -3px; }
}

@keyframes lv-places-selected-pin-halo {
  0%, 100% { opacity: .82; scale: .94; }
  50% { opacity: 1; scale: 1.08; }
}

.lv-places-spatial__map-story {
  position: absolute;
  left: clamp(16px, 2vw, 28px);
  bottom: clamp(18px, 2.5vw, 34px);
  z-index: 7;
  width: min(330px, calc(100% - 92px));
  padding: 17px 18px;
  border: 1px solid rgba(193, 209, 216, 0.88);
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.93);
  color: var(--places-text);
  box-shadow: 0 18px 42px rgba(32, 58, 72, 0.12);
  backdrop-filter: blur(14px);
}

.lv-places-spatial__map-story small {
  display: block;
  color: var(--places-accent-ink);
  font-size: 9px;
  font-weight: 850;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.lv-places-spatial__map-story strong {
  display: block;
  margin-top: 7px;
  color: var(--places-ink);
  font-size: 15px;
  line-height: 1.25;
}

.lv-places-spatial__map-story p {
  margin-top: 5px;
  color: var(--places-muted);
  font-size: 11px;
  line-height: 1.45;
}

.lv-places-spatial__map-scale {
  position: absolute;
  left: 18px;
  top: 18px;
  z-index: 7;
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid rgba(193, 209, 216, 0.82);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.88);
  color: var(--places-muted);
  font-size: 9px;
  font-weight: 760;
  backdrop-filter: blur(10px);
}

.lv-places-spatial__results {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  min-width: 0;
  max-height: 740px;
  overflow: hidden;
  background: #ffffff;
}

.lv-places-spatial__results-header {
  position: sticky;
  top: 0;
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  min-height: 86px;
  padding: 18px 20px;
  border-bottom: 1px solid var(--places-line);
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(14px);
}

.lv-places-spatial__results-header strong {
  display: block;
  color: var(--places-ink);
  font-size: 15px;
  font-weight: 820;
}

.lv-places-spatial__results-header small {
  display: block;
  margin-top: 5px;
  color: var(--places-muted);
  font-size: 10px;
  line-height: 1.35;
}

.lv-places-spatial__results-tools {
  display: flex;
  gap: 8px;
}

.lv-places-spatial__results-tool {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--places-line);
  border-radius: 50%;
  background: #ffffff;
  color: var(--places-text);
  cursor: pointer;
}

.lv-places-spatial__result-list {
  display: grid;
  min-width: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--places-accent) 26%, var(--places-line-strong)) transparent;
}

.lv-places-spatial__result-card {
  position: relative;
  min-width: 0;
  overflow: hidden;
  border-bottom: 1px solid var(--places-line);
  background: #ffffff;
  color: var(--places-text);
  scroll-margin-block: 96px;
  transition: background-color 220ms ease, box-shadow 220ms ease;
}

.lv-places-spatial__result-card:is(.is-selected, [aria-current="true"]) {
  z-index: 1;
  background: linear-gradient(135deg, var(--places-accent-soft), #ffffff 48%);
  box-shadow: inset 5px 0 0 var(--places-accent);
}

.lv-places-spatial__result-media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  min-height: 196px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--places-surface-soft), #eaf1f3);
}

.lv-places-spatial__result-media :where(img, picture) {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.lv-places-spatial__result-media img {
  transition: transform 700ms var(--places-ease), filter 300ms ease;
}

.lv-places-spatial__result-rank {
  position: absolute;
  left: 14px;
  top: 14px;
  z-index: 2;
  display: grid;
  place-items: center;
  min-width: 38px;
  height: 38px;
  padding-inline: 10px;
  border: 2px solid #ffffff;
  border-radius: 13px;
  background: var(--places-accent);
  color: var(--places-accent-contrast);
  box-shadow: 0 10px 22px rgba(31, 56, 72, 0.17);
  font-size: 14px;
  font-weight: 900;
}

.lv-places-spatial__result-body {
  display: grid;
  gap: 13px;
  min-width: 0;
  padding: 20px;
}

.lv-places-spatial__result-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--places-muted);
  font-size: 10px;
  font-weight: 680;
}

.lv-places-spatial__result-status {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--places-success);
  font-weight: 850;
  white-space: nowrap;
}

.lv-places-spatial__result-status::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
}

.lv-places-spatial__result-card h3 {
  color: var(--places-ink);
  font-family: var(--lv-font-display, Manrope, Inter, system-ui, sans-serif);
  font-size: clamp(24px, 2vw, 34px);
  font-weight: 730;
  letter-spacing: -0.045em;
  line-height: 1.03;
  overflow-wrap: anywhere;
  text-wrap: balance;
}

.lv-places-spatial__result-card p {
  display: -webkit-box;
  overflow: hidden;
  color: var(--places-muted);
  font-size: 12px;
  line-height: 1.52;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.lv-places-spatial__reason {
  overflow-wrap: anywhere;
}

.lv-places-spatial__result-facts,
.lv-places-spatial__result-evidence,
.lv-places-spatial__result-secondary-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  min-width: 0;
}

.lv-places-spatial__fact,
.lv-places-spatial__evidence {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid var(--places-line);
  border-radius: 999px;
  background: var(--places-surface-soft);
  color: var(--places-text);
  font-size: 9px;
  font-weight: 760;
}

.lv-places-spatial__evidence {
  border-style: dashed;
  background: #ffffff;
  color: var(--places-muted);
}

.lv-places-spatial__result-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 9px;
  min-width: 0;
}

.lv-places-spatial__result-primary,
.lv-places-spatial__result-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  padding: 0 15px;
  border-radius: 13px;
  font-size: 11px;
  font-weight: 850;
  text-decoration: none;
  cursor: pointer;
}

.lv-places-spatial__result-primary {
  border: 1px solid var(--places-accent);
  background: var(--places-accent);
  color: var(--places-accent-contrast);
  box-shadow: 0 10px 22px color-mix(in srgb, var(--places-accent) 16%, transparent);
}

.lv-places-spatial__result-secondary {
  border: 1px solid var(--places-line-strong);
  background: #ffffff;
  color: var(--places-text);
}

.lv-places-spatial__load-more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(100% - 36px);
  min-height: 52px;
  margin: 18px;
  padding: 0 18px;
  border: 1px solid color-mix(in srgb, var(--places-accent) 38%, var(--places-line));
  border-radius: 15px;
  background: var(--places-accent-soft);
  color: var(--places-accent-ink);
  font-size: 12px;
  font-weight: 850;
  cursor: pointer;
}

/* Empty, offline, error and loading states stay on the same light canvas. */
.lv-places-spatial__state {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  min-height: 300px;
  padding: 32px 24px;
  background: linear-gradient(145deg, #ffffff, var(--places-surface-soft));
  color: var(--places-muted);
  text-align: center;
}

.lv-places-spatial__state-icon {
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  border: 1px solid var(--places-line);
  border-radius: 18px;
  background: #ffffff;
  color: var(--places-info);
  font-size: 24px;
}

.lv-places-spatial__state strong {
  color: var(--places-ink);
  font-size: 17px;
}

.lv-places-spatial__state p {
  max-width: 38ch;
  font-size: 12px;
  line-height: 1.55;
}

.lv-places-spatial__state.is-offline .lv-places-spatial__state-icon,
.lv-places-spatial__result-status.is-offline,
.lv-places-spatial__result-status.is-unknown {
  color: var(--places-faint);
}

.lv-places-spatial__state.is-error .lv-places-spatial__state-icon,
.lv-places-spatial__result-status.is-closed,
.lv-places-spatial__result-status.is-error {
  color: var(--places-danger);
}

.lv-places-spatial__result-status.is-warning,
.lv-places-spatial__result-status.is-closing-soon {
  color: var(--places-warning);
}

.lv-places-spatial__result-status.is-info,
.lv-places-spatial__result-status.is-reserved {
  color: var(--places-info);
}

.lv-places-spatial__skeleton {
  position: relative;
  overflow: hidden;
  border-radius: 11px;
  background: #eaf0f2;
}

.lv-places-spatial__skeleton::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.78), transparent);
  transform: translateX(-100%);
  animation: lv-places-spatial-shimmer 1.45s ease-in-out infinite;
}

@keyframes lv-places-spatial-shimmer {
  to {
    transform: translateX(100%);
  }
}

@media (hover: hover) and (pointer: fine) {
  .lv-places-spatial__ai-action:hover,
  .lv-places-spatial__primary-action:hover,
  .lv-places-spatial__search-submit:hover,
  .lv-places-spatial__result-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 36px color-mix(in srgb, var(--places-accent) 25%, transparent);
    filter: saturate(1.06);
  }

  .lv-places-spatial__filter:hover,
  .lv-places-spatial__secondary-action:hover,
  .lv-places-spatial__result-secondary:hover,
  .lv-places-spatial__results-tool:hover,
  .lv-places-spatial__map-control:hover {
    border-color: color-mix(in srgb, var(--places-accent) 38%, var(--places-line-strong));
    background: var(--places-accent-wash);
  }

  .lv-places-spatial__category:hover {
    background: color-mix(in srgb, var(--places-accent) 5%, #ffffff);
  }

  .lv-places-spatial__category:hover .lv-places-spatial__category-icon {
    transform: translateY(-2px);
  }

  .lv-places-spatial__result-card:hover .lv-places-spatial__result-media img {
    transform: scale(1.025);
  }

  .lv-places-spatial__marker:hover,
  .lv-places-spatial__marker:focus-visible {
    animation-play-state: paused;
  }
}

.lv-places-spatial :where(button, [role="button"]):active {
  transform: scale(0.985);
  transition-duration: 70ms;
}

/* Narrow desktop/tablet: preserve the connected stage before the shell becomes mobile. */
@media (min-width: 801px) and (max-width: 1080px) {
  .lv-places-spatial__heading h1 {
    font-size: clamp(54px, 7.2vw, 76px);
  }

  .lv-places-spatial__context {
    grid-template-columns: 88px minmax(0, 1fr);
    gap: 18px 24px;
    padding: 24px;
  }

  .lv-places-spatial__context-compass {
    max-width: 88px;
  }

  .lv-places-spatial__capabilities {
    grid-column: 1 / -1;
    width: 100%;
    justify-content: start;
  }

  .lv-places-spatial__canvas {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }

  .lv-places-spatial__map {
    grid-row: 1;
    height: clamp(520px, 62svh, 680px);
    min-height: 520px;
    border-right: 0;
    border-bottom: 1px solid var(--places-line);
  }

  .lv-places-spatial__results {
    grid-row: 2;
    width: 100%;
    max-height: none;
    overflow: hidden;
  }

  .lv-places-spatial__results-header {
    position: relative;
  }

  .lv-places-spatial__result-list {
    display: flex;
    gap: 14px;
    width: 100%;
    padding: 16px 16px 22px;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-padding-inline: 16px;
    scroll-snap-type: inline mandatory;
    scrollbar-width: none;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  .lv-places-spatial__result-list::-webkit-scrollbar {
    display: none;
  }

  .lv-places-spatial__result-card {
    flex: 0 0 min(390px, calc(100% - 52px));
    border: 1px solid var(--places-line);
    border-radius: 24px;
    box-shadow: 0 16px 38px rgba(31, 56, 72, 0.08);
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }

  .lv-places-spatial__result-card:is(.is-selected, [aria-current="true"]) {
    border-color: color-mix(in srgb, var(--places-accent) 42%, var(--places-line));
    box-shadow: inset 0 4px 0 var(--places-accent), 0 18px 42px rgba(31, 56, 72, 0.1);
  }

  .lv-places-spatial__load-more {
    flex: 0 0 auto;
    align-self: center;
    width: calc(100% - 32px);
    min-height: 52px;
    margin: 0 16px 20px;
  }
}

/* Tablet and phone: same composition, reflowed; map always precedes cards. */
@media (max-width: 800px) {
  .lv-places-spatial {
    gap: 18px;
    padding-bottom: calc(104px + env(safe-area-inset-bottom));
  }

  .lv-places-spatial__continuum {
    width: 100%;
  }

  .lv-places-spatial__continuum-step {
    font-size: 9px;
    letter-spacing: 0.06em;
  }

  .lv-places-spatial__heading {
    grid-template-columns: 1fr;
    justify-items: center;
    padding-inline: 6px;
    text-align: center;
  }

  .lv-places-spatial__heading h1 {
    max-width: 11ch;
    font-size: clamp(46px, 10vw, 76px);
  }

  .lv-places-spatial__heading p {
    margin-inline: auto;
  }

  .lv-places-spatial__heading > .lv-places-spatial__ai-action {
    display: none;
  }

  .lv-places-spatial__context {
    grid-template-columns: 76px minmax(0, 1fr);
    gap: 16px;
    padding: 20px;
    border-radius: 26px;
  }

  .lv-places-spatial__context-compass {
    max-width: 76px;
  }

  .lv-places-spatial__capabilities {
    grid-column: 1 / -1;
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: max-content;
    justify-content: start;
    width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: none;
  }

  .lv-places-spatial__capabilities::-webkit-scrollbar {
    display: none;
  }

  .lv-places-spatial__capability {
    min-height: 44px;
  }

  .lv-places-spatial__search {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .lv-places-spatial__search-submit {
    grid-column: 1 / -1;
    width: 100%;
  }

  .lv-places-spatial__categories {
    border: 0;
    gap: 9px;
    padding: 2px 2px 8px;
    background: transparent;
    scrollbar-width: none;
  }

  .lv-places-spatial__categories::-webkit-scrollbar {
    display: none;
  }

  .lv-places-spatial__category {
    min-height: 82px;
    border: 1px solid var(--places-line);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 10px 25px rgba(31, 56, 72, 0.05);
  }

  .lv-places-spatial__category:is(.is-active, [aria-selected="true"]) {
    border-color: color-mix(in srgb, var(--places-accent) 34%, var(--places-line));
  }

  .lv-places-spatial__category:is(.is-active, [aria-selected="true"])::before {
    display: none;
  }

  .lv-places-spatial__canvas {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
    overflow: hidden;
    border-radius: 28px;
  }

  .lv-places-spatial__map {
    grid-row: 1;
    height: clamp(480px, 64svh, 620px);
    min-height: 480px;
    border-right: 0;
    border-bottom: 1px solid var(--places-line);
  }

  .lv-places-spatial__results {
    grid-row: 2;
    width: 100%;
    max-height: none;
    overflow: hidden;
  }

  .lv-places-spatial__results-header {
    position: relative;
    min-height: 82px;
  }

  .lv-places-spatial__result-list {
    display: flex;
    gap: 12px;
    width: 100%;
    padding: 14px 14px 20px;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-padding-inline: 14px;
    scroll-snap-type: inline mandatory;
    scrollbar-width: none;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }

  .lv-places-spatial__result-list::-webkit-scrollbar {
    display: none;
  }

  .lv-places-spatial__result-card {
    flex: 0 0 min(86vw, 390px);
    border: 1px solid var(--places-line);
    border-radius: 24px;
    box-shadow: 0 16px 38px rgba(31, 56, 72, 0.08);
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }

  .lv-places-spatial__result-card:is(.is-selected, [aria-current="true"]) {
    border-color: color-mix(in srgb, var(--places-accent) 42%, var(--places-line));
    box-shadow: inset 0 4px 0 var(--places-accent), 0 18px 42px rgba(31, 56, 72, 0.1);
  }

  .lv-places-spatial__result-media {
    min-height: 210px;
  }

  .lv-places-spatial__load-more {
    flex: 0 0 auto;
    align-self: center;
    width: calc(100% - 28px);
    min-height: 52px;
    margin: 0 14px 18px;
  }
}

@media (max-width: 560px) {
  .lv-places-spatial {
    gap: 15px;
  }

  .lv-places-spatial__continuum-step {
    min-height: 44px;
    padding-inline: 2px;
    font-size: 8px;
  }

  .lv-places-spatial__heading {
    padding-top: 4px;
  }

  .lv-places-spatial__kicker {
    margin-bottom: 9px;
    font-size: 9px;
  }

  .lv-places-spatial__heading h1 {
    max-width: 10ch;
    font-size: clamp(43px, 13.2vw, 62px);
    line-height: 0.92;
  }

  .lv-places-spatial__heading p {
    margin-top: 12px;
    font-size: 14px;
    line-height: 1.5;
  }

  .lv-places-spatial__context {
    grid-template-columns: 58px minmax(0, 1fr);
    gap: 13px;
    padding: 17px;
    border-radius: 23px;
  }

  .lv-places-spatial__context-compass {
    max-width: 58px;
  }

  .lv-places-spatial__context-copy small {
    margin-bottom: 5px;
    font-size: 8px;
  }

  .lv-places-spatial__context-copy h2 {
    font-size: 20px;
  }

  .lv-places-spatial__context-copy p {
    margin-top: 6px;
    font-size: 11px;
    line-height: 1.42;
  }

  .lv-places-spatial__capability {
    padding-inline: 11px;
    font-size: 9px;
  }

  .lv-places-spatial__search {
    gap: 8px;
  }

  .lv-places-spatial__search-input,
  .lv-places-spatial__filter,
  .lv-places-spatial__search-submit {
    min-height: 52px;
  }

  .lv-places-spatial__search-input {
    padding-right: 12px;
    padding-left: 48px;
    font-size: 14px;
  }

  .lv-places-spatial__search-icon {
    left: 16px;
  }

  .lv-places-spatial__filter {
    width: 52px;
    padding: 0;
    font-size: 0;
  }

  .lv-places-spatial__filter-count {
    position: absolute;
    margin: -28px -31px 0 0;
  }

  .lv-places-spatial__categories {
    grid-auto-columns: 138px;
  }

  .lv-places-spatial__category {
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 9px;
    min-height: 76px;
    padding: 9px 12px;
  }

  .lv-places-spatial__category-icon {
    width: 38px;
    height: 38px;
  }

  .lv-places-spatial__canvas {
    border-radius: 24px;
  }

  .lv-places-spatial__map {
    height: clamp(460px, 64svh, 590px);
    min-height: 460px;
  }

  .lv-places-spatial__map-story {
    left: 12px;
    bottom: 14px;
    width: min(256px, calc(100% - 78px));
    padding: 13px 14px;
    border-radius: 17px;
  }

  .lv-places-spatial__map-story p {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  .lv-places-spatial__map-control {
    width: 44px;
    height: 44px;
  }

  .lv-places-spatial__map-control--filters {
    right: 12px;
    top: 12px;
  }

  .lv-places-spatial__map-control--locate {
    right: 12px;
    bottom: 14px;
  }

  .lv-places-spatial__map-scale {
    left: 12px;
    top: 12px;
  }

  .lv-places-spatial__results-header {
    padding: 15px 14px;
  }

  .lv-places-spatial__results-header small {
    max-width: 27ch;
  }

  .lv-places-spatial__result-list {
    gap: 10px;
    padding: 12px 12px 18px;
    scroll-padding-inline: 12px;
  }

  .lv-places-spatial__result-card {
    flex-basis: min(88vw, 370px);
    border-radius: 21px;
  }

  .lv-places-spatial__result-media {
    min-height: 190px;
  }

  .lv-places-spatial__result-body {
    gap: 11px;
    padding: 17px;
  }

  .lv-places-spatial__result-card h3 {
    font-size: 25px;
  }

  .lv-places-spatial__result-actions {
    grid-template-columns: 1fr;
  }

  .lv-places-spatial__result-primary,
  .lv-places-spatial__result-secondary {
    min-height: 48px;
  }
}

@supports not (overflow: clip) {
  .lv-places-spatial {
    overflow-x: hidden;
  }
}

@media (prefers-reduced-motion: reduce) {
  .lv-places-spatial,
  .lv-places-spatial *,
  .lv-places-spatial *::before,
  .lv-places-spatial *::after {
    scroll-behavior: auto;
    animation-delay: 0s;
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
    transition-delay: 0s;
    transition-duration: 0.01ms;
  }
}

/* Runtime bindings for the productive places.v1 composition. */
.lv-places-spatial__compass {
  position: relative;
  display: block;
  width: 82%;
  aspect-ratio: 1;
}

.lv-places-spatial__context-compass .lv-places-spatial__compass > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.lv-places-spatial__context-compass .lv-places-spatial__compass > img.is-needle {
  z-index: 2;
}

.lv-places-spatial__capabilities .lv-places-spatial__primary-action {
  grid-column: 1 / -1;
  width: 100%;
  min-height: 46px;
}

.lv-places-spatial__status {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  min-height: 30px;
  padding-inline: 3px;
  color: var(--places-muted);
  font-size: 11px;
  font-weight: 680;
}

.lv-places-spatial__status > i {
  width: 9px;
  height: 9px;
  flex: 0 0 auto;
  border: 2px solid color-mix(in srgb, var(--places-accent) 24%, transparent);
  border-top-color: var(--places-accent);
  border-radius: 50%;
  animation: lv-places-spatial-spin .75s linear infinite;
}

.lv-places-spatial__status > button {
  min-height: 44px;
  margin-left: auto;
  padding: 0 14px;
  border: 1px solid var(--places-line-strong);
  border-radius: 12px;
  background: #fff;
  color: var(--places-accent-ink);
  font-weight: 820;
  cursor: pointer;
}

.lv-places-spatial__status.is-error { color: var(--places-danger); }
.lv-places-spatial__status.is-offline { color: var(--places-faint); }

@keyframes lv-places-spatial-spin { to { transform: rotate(360deg); } }

.lv-places-spatial__filter-count {
  background: var(--places-accent);
  color: var(--places-accent-contrast);
}

.lv-places-spatial__map {
  background: linear-gradient(145deg, #f5f8f8 0%, #e8f1f2 62%, #edf5f4 100%);
}

.lv-places-spatial__map-message {
  position: absolute;
  z-index: 7;
  top: auto;
  bottom: 14px;
  left: 14px;
  right: auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: auto;
  max-width: min(280px, calc(100% - 28px));
  height: auto;
  min-height: 0;
  max-height: none;
  padding: 8px 12px;
  border: 1px solid rgba(193, 209, 216, .88);
  border-radius: 999px;
  background: rgba(255,255,255,.94);
  color: var(--places-muted);
  box-shadow: 0 10px 24px rgba(32,58,72,.09);
  font-size: 9px;
  font-weight: 760;
  line-height: 1.25;
  transform: none;
  backdrop-filter: blur(12px);
  pointer-events: none;
}

.lv-places-spatial__map-message > i {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--places-accent);
}

.lv-places-spatial__map-message[data-state="unavailable"] > i,
.lv-places-spatial__map-message[data-state="empty"] > i { background: var(--places-faint); }

.lv-places-spatial__map-preview-open:not(:has(>img,>.lv-category-image)){grid-template-columns:minmax(0,1fr);padding-inline:12px}

.lv-places-spatial__map.is-ready .lv-places-spatial__map-message {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .3s ease 1.2s;
}

.lv-places-spatial__map[data-map-state="empty"] .lv-places-spatial__map-message,
.lv-places-spatial__map[data-map-state="unavailable"] .lv-places-spatial__map-message,
.lv-places-spatial__map-message[data-state="unavailable"] {
  opacity: 1;
  visibility: visible;
  pointer-events: none;
  transition: opacity .16s ease;
}

.lv-places-spatial__map-provider-state {
  position: absolute;
  z-index: 8;
  left: 14px;
  right: 14px;
  bottom: calc(14px + env(safe-area-inset-bottom, 0px));
  display: grid;
  gap: 8px;
  justify-items: center;
  padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--places-danger) 24%, var(--places-line));
  border-radius: 16px;
  background: rgba(255,255,255,.96);
  box-shadow: 0 12px 28px rgba(32,58,72,.12);
  text-align: center;
}

.lv-places-spatial__map-provider-state strong {
  color: var(--places-ink);
  font-size: 11px;
}

.lv-places-spatial__map-provider-state p {
  margin: 0;
  max-width: 34ch;
  color: var(--places-muted);
  font-size: 9px;
  line-height: 1.45;
}

.lv-places-spatial__map-provider-retry {
  min-height: 32px;
  padding: 0 14px;
  border: 0;
  border-radius: 999px;
  background: var(--places-accent);
  color: var(--places-accent-contrast);
  font: inherit;
  font-size: 9px;
  font-weight: 850;
  cursor: pointer;
}

.lv-places-spatial__map[data-map-state="unavailable"] .lv-places-spatial__map-message {
  bottom: calc(118px + env(safe-area-inset-bottom, 0px));
}

.lv-places-spatial__map[data-map-refreshing="true"] .lv-places-spatial__map-engine {
  opacity: 1;
}

.lv-places-spatial__map.is-ready[data-map-refreshing="true"] .lv-places-spatial__map-message {
  top: auto;
  bottom: 12px;
  left: 12px;
  right: auto;
  width: auto;
  height: auto;
  max-height: none;
  opacity: 1;
  visibility: visible;
  transition: opacity .16s ease;
}

.lv-places-spatial__map-message[data-refreshing="true"] > i {
  animation: lv-places-spatial-refresh-pulse .9s ease-in-out infinite alternate;
}

@keyframes lv-places-spatial-refresh-pulse {
  from { opacity: .42; transform: scale(.78); }
  to { opacity: 1; transform: scale(1.18); }
}

.lv-places-spatial__image-fallback {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  width: 100%;
  height: 100%;
  background: linear-gradient(145deg, #f8fbfb, var(--places-accent-soft));
  color: var(--places-accent-ink);
}

.lv-places-spatial__image-fallback svg {
  width: 54px;
  height: 54px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.15;
}

.lv-places-spatial__result-media {
  display: block;
  padding: 0;
  border: 0;
  color: inherit;
  cursor: pointer;
}

.lv-places-spatial__result-topline > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lv-places-spatial__result-status.is-closed { color: var(--places-danger); }
.lv-places-spatial__result-status.is-unknown { color: var(--places-faint); }

.lv-places-spatial__result-evidence {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  min-width: 0;
}

.lv-places-spatial__evidence svg {
  width: 12px;
  height: 12px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
}

.lv-places-spatial__evidence.is-coordinate { color: var(--places-success); }
.lv-places-spatial__evidence.is-unknown { color: var(--places-faint); }
.lv-places-spatial__evidence.is-booking { color: var(--places-info); }

.lv-places-spatial__result-secondary-actions > button {
  min-height: 44px;
  padding: 0 2px;
  border: 0;
  background: transparent;
  color: var(--places-accent-ink);
  font-size: 10px;
  font-weight: 840;
  cursor: pointer;
}

.lv-places-spatial__detail {
  display: grid;
  gap: 7px;
  padding: 13px 14px;
  border: 1px solid var(--places-line);
  border-radius: 14px;
  background: var(--places-surface-soft);
  color: var(--places-muted);
  font-size: 10px;
  line-height: 1.5;
}

.lv-places-spatial__detail strong { color: var(--places-ink); }
.lv-places-spatial__detail > div { display: flex; flex-wrap: wrap; gap: 10px; }
.lv-places-spatial__detail a { color: var(--places-accent-ink); font-weight: 800; }

.lv-places-spatial__result-actions {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.lv-places-spatial__result-primary { grid-column: 1 / -1; }

.lv-places-spatial__state {
  grid-column: 1 / -1;
  width: 100%;
}

.lv-places-spatial__state .lv-places-spatial__skeleton {
  display: block;
  width: min(88%, 310px);
  height: 88px;
}

.lv-places-spatial__planning-overlay {
  position: fixed;
  inset: 0;
  z-index: 2147482000;
  display: grid;
  place-items: center;
  padding: 18px;
  background: rgba(29,53,67,.18);
  backdrop-filter: blur(12px);
}

.lv-places-spatial__planning {
  position: relative;
  display: grid;
  gap: 15px;
  width: min(520px, 100%);
  max-height: min(760px, calc(100dvh - 36px));
  padding: clamp(24px, 4vw, 38px);
  overflow-y: auto;
  border: 1px solid var(--places-line);
  border-radius: 28px;
  background: #fff;
  color: var(--places-text);
  box-shadow: var(--places-shadow-float);
}

.lv-places-spatial__planning > [data-planning-close] {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 44px;
  height: 44px;
  border: 1px solid var(--places-line);
  border-radius: 50%;
  background: #fff;
  color: var(--places-text);
  cursor: pointer;
}

.lv-places-spatial__planning > span {
  color: var(--places-accent-ink);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.lv-places-spatial__planning h2 {
  padding-right: 46px;
  color: var(--places-ink);
  font: 720 clamp(28px, 5vw, 42px)/1.04 var(--lv-font-display, Manrope, sans-serif);
  letter-spacing: -.04em;
}

.lv-places-spatial__planning label { display: grid; gap: 7px; color: var(--places-muted); font-size: 11px; font-weight: 760; }
.lv-places-spatial__planning :is(input,textarea) { width: 100%; min-height: 48px; padding: 11px 13px; border: 1px solid var(--places-line-strong); border-radius: 12px; background: #fff; color: var(--places-text); }
.lv-places-spatial__planning textarea { min-height: 90px; resize: vertical; }
.lv-places-spatial__planning > button.is-primary { min-height: 50px; border: 0; border-radius: 13px; background: var(--places-accent); color: var(--places-accent-contrast); font-weight: 850; cursor: pointer; }

@media (max-width: 800px) {
  .lv-places-spatial__filter-panel {
    display: grid;
    grid-template-columns: repeat(2, minmax(0,1fr));
  }
  .lv-places-spatial__filter-panel > div { grid-column: 1 / -1; min-width: 0; }
  .lv-places-spatial__filter-panel > button:last-child { grid-column: 1 / -1; }
  .lv-places-spatial__map-message { top: auto; bottom: 12px; left: 12px; right: auto; width: auto; max-width: min(240px, calc(100% - 88px)); height: auto; }
  .lv-places-spatial__result-actions { grid-template-columns: 1fr; }
  .lv-places-spatial__result-primary { grid-column: auto; }
  .lv-places-spatial__capabilities .lv-places-spatial__primary-action { width: auto; min-width: 190px; }
}

@media (prefers-reduced-motion: reduce) {
  .lv-places-spatial__status > i { animation: none; }
  .lv-places-spatial__map.is-ready .lv-places-spatial__map-message { transition: none; }
  .lv-places-spatial__map-message[data-refreshing="true"] > i { animation: none; }
  .lv-places-spatial__marker { animation: none; translate: none; }
}

.lv-places-spatial__image-fallback small {
  color: var(--places-ink-soft);
  font-size: .67rem;
  font-weight: 750;
  letter-spacing: .025em;
}

/* Scrolling remains available by wheel, touch and keyboard, but Luvia never
   exposes browser-native scroll tracks inside the product surface. */
.lv-places-spatial,
.lv-places-spatial * {
  scrollbar-width: none !important;
  -ms-overflow-style: none !important;
}

.lv-places-spatial::-webkit-scrollbar,
.lv-places-spatial *::-webkit-scrollbar {
  width: 0 !important;
  height: 0 !important;
  display: none !important;
}

.lv-places-spatial__preference{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(0,1.8fr);gap:20px;align-items:center;margin:8px 0 22px;padding:18px 20px;border:1px solid color-mix(in srgb,var(--luvia-color-action-primary) 18%,var(--luvia-color-border-subtle));border-radius:22px;background:linear-gradient(110deg,color-mix(in srgb,var(--luvia-color-action-primary-soft) 52%,#fff),rgba(255,255,255,.94));box-shadow:0 16px 44px rgba(24,58,75,.08)}
.lv-places-spatial__preference>div{display:grid;gap:4px}.lv-places-spatial__preference>div small{color:var(--luvia-color-action-primary);font-size:9px;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.lv-places-spatial__preference>div strong{font-family:var(--luvia-font-family-display);font-size:clamp(1.1rem,2vw,1.45rem)}
.lv-places-spatial__preference ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.lv-places-spatial__preference li{display:flex;align-items:center;gap:8px;min-height:50px;padding:7px 12px;border:1px solid rgba(70,105,122,.14);border-radius:16px;background:rgba(255,255,255,.82)}.lv-places-spatial__preference li svg{width:20px;height:20px;padding:4px;border-radius:8px;background:#eaf5f4;color:#278f83}.lv-places-spatial__preference li.is-trip svg{background:#fff0ed;color:#ed6659}.lv-places-spatial__preference li.is-constraint svg{background:#eef4fb;color:#4f82b2}.lv-places-spatial__preference li span{display:grid}.lv-places-spatial__preference li b{font-size:10px}.lv-places-spatial__preference li small{color:var(--luvia-color-text-muted);font-size:8px}
.lv-places-spatial__admission{display:flex;align-items:center;gap:7px;width:max-content;max-width:100%;padding:6px 9px;border-radius:999px;background:#f2f7f7;color:#31586a}.lv-places-spatial__admission span{font-size:9px;font-weight:850;white-space:nowrap}.lv-places-spatial__admission small{overflow:hidden;color:#67808e;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.lv-places-spatial__admission.is-required{background:#fff0ed;color:#a53e38}.lv-places-spatial__admission.is-attention{background:#fff7e8;color:#8a5b16}
@media(max-width:720px){.lv-places-spatial__preference{grid-template-columns:1fr;padding:15px}.lv-places-spatial__preference ul{display:grid;grid-template-columns:1fr 1fr}.lv-places-spatial__preference li{min-width:0}.lv-places-spatial__preference li b,.lv-places-spatial__preference li small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

/* B1 contextual discovery controls: the category owns its filter vocabulary,
   while the map stays mounted when the drawer is merely opened or closed. */
.lv-places-spatial__filter-reveal{display:grid;grid-template-rows:0fr;min-width:0;opacity:0;transform:translateY(-8px);transition:grid-template-rows .32s var(--places-ease),opacity .24s ease,transform .32s var(--places-ease)}
.lv-places-spatial__filter-reveal.is-open{grid-template-rows:1fr;opacity:1;transform:none}
.lv-places-spatial__filter-reveal>.lv-places-spatial__filter-panel{min-height:0;overflow:hidden}
.lv-places-spatial__filter-panel{display:grid;grid-template-columns:minmax(190px,.72fr) minmax(0,2fr);align-items:start;gap:14px;padding:16px 18px}
.lv-places-spatial__filter-intro{display:grid;gap:4px}
.lv-places-spatial__filter-intro span,.lv-places-spatial__filter-group>span{color:var(--places-accent-ink);font-size:9px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}
.lv-places-spatial__filter-intro strong{color:var(--places-ink);font-size:12px;line-height:1.4}
.lv-places-spatial__filter-group,.lv-places-spatial__filter-facts,.lv-places-spatial__filter-sort{display:grid;gap:7px;min-width:0}
.lv-places-spatial__filter-group.is-wide{grid-column:2}
.lv-places-spatial__filter-group>div,.lv-places-spatial__filter-facts,.lv-places-spatial__filter-sort{display:flex;flex-wrap:wrap;gap:7px}
.lv-places-spatial__filter-panel :is(button){display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:6px;padding:0 12px;border:1px solid var(--places-line-strong);border-radius:12px;background:#fff;color:var(--places-text);font-size:10px;font-weight:820;line-height:1.2;cursor:pointer}
.lv-places-spatial__filter-panel :is(button)[aria-pressed="true"]{border-color:color-mix(in srgb,var(--places-accent) 46%,var(--places-line));background:var(--places-accent-soft);color:var(--places-accent-ink)}
.lv-places-spatial__filter-panel button svg{width:14px;height:14px}
.lv-places-spatial__filter-facts,.lv-places-spatial__filter-sort,.lv-places-spatial__filter-group:not(.is-wide){grid-column:1/-1}
.lv-places-spatial__filter-reset{grid-column:1/-1;justify-self:start}

.lv-places-spatial__map-story>span{display:flex;align-items:center;gap:6px;margin-top:8px;color:var(--places-muted);font-size:9px;line-height:1.35}
.lv-places-spatial__map-story>span i{display:inline-grid;min-width:34px;min-height:20px;place-items:center;padding:0 6px;border:1px solid #fff;border-radius:999px;background:#f4b34c;color:#17384d;box-shadow:0 4px 10px rgba(31,65,86,.14);font-size:7px;font-style:normal;font-weight:900;text-transform:uppercase}
.lv-places-spatial__marker> b{right:-18px;top:-12px;width:auto;min-width:39px;height:22px;padding:0 6px;border-radius:999px;font-size:7px;letter-spacing:.03em;text-transform:uppercase}
.lv-places-spatial__marker.is-preferred{z-index:5;box-shadow:0 0 0 4px #fff,0 0 0 8px rgba(244,179,76,.72),0 12px 26px rgba(31,65,86,.25)}

.lv-places-spatial__history{display:grid;gap:12px;min-width:0;padding:18px;border:1px solid var(--places-line);border-radius:22px;background:rgba(255,255,255,.94);box-shadow:var(--places-shadow-soft)}
.lv-places-spatial__history>header{display:flex;align-items:end;justify-content:space-between;gap:14px}
.lv-places-spatial__history>header>div{display:grid;gap:3px}.lv-places-spatial__history>header small{color:var(--places-accent-ink);font-size:9px;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.lv-places-spatial__history>header strong{color:var(--places-ink);font-size:17px}
.lv-places-spatial__history>header button{min-height:40px;padding:0 12px;border:1px solid var(--places-line);border-radius:999px;background:#fff;color:var(--places-muted);font-size:10px;font-weight:800}
.lv-places-spatial__history-list{display:flex;gap:9px;min-width:0;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:inline proximity}
.lv-places-spatial__history-list>button{display:grid;grid-template-columns:30px minmax(0,1fr);grid-template-rows:auto auto;gap:2px 9px;flex:0 0 min(250px,76vw);min-height:64px;align-items:center;padding:9px 11px;border:1px solid var(--places-line);border-radius:15px;background:var(--places-surface-soft);color:var(--places-ink);text-align:left;scroll-snap-align:start}
.lv-places-spatial__history-list>button>span{grid-row:1/3;display:grid;width:30px;height:30px;place-items:center;border-radius:50%;background:var(--places-accent);color:var(--places-accent-contrast);font-size:10px;font-weight:900}
.lv-places-spatial__history-list>button>b,.lv-places-spatial__history-list>button>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lv-places-spatial__history-list>button>b{font-size:11px}.lv-places-spatial__history-list>button>small{color:var(--places-muted);font-size:8px}.lv-places-spatial__history-list>p{margin:0;color:var(--places-muted);font-size:11px;line-height:1.45}

@media(max-width:800px){
  .lv-places-spatial__filter-panel{grid-template-columns:1fr;padding:14px}
  .lv-places-spatial__filter-group.is-wide,.lv-places-spatial__filter-facts,.lv-places-spatial__filter-sort,.lv-places-spatial__filter-group:not(.is-wide){grid-column:1}
  .lv-places-spatial__filter-group>div,.lv-places-spatial__filter-facts,.lv-places-spatial__filter-sort{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain}
  .lv-places-spatial__filter-panel :is(button){flex:0 0 auto;min-height:46px}
}
@media(max-width:560px){
  .lv-places-spatial__heading h1{max-width:12ch;font-size:clamp(34px,10.4vw,46px);line-height:.98;letter-spacing:-.055em}
  .lv-places-spatial__heading p{max-width:28ch;font-size:13px}
  .lv-places-spatial__context{padding:15px}
  .lv-places-spatial__context-copy p{font-size:12px}
  .lv-places-spatial__capabilities{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
  .lv-places-spatial__capability{min-height:40px;white-space:normal}
  .lv-places-spatial__capabilities .lv-places-spatial__primary-action{grid-column:1/-1;width:100%;min-width:0;white-space:normal}
  .lv-places-spatial__search{grid-template-columns:minmax(0,1fr) 56px}
  .lv-places-spatial__filter{width:56px;overflow:visible}
  .lv-places-spatial__category-copy strong,.lv-places-spatial__category-copy small{overflow:visible;text-overflow:clip;white-space:normal;line-height:1.2}
  .lv-places-spatial__preference{gap:10px;margin:2px 0 8px;padding:12px;border-radius:18px}
  .lv-places-spatial__preference ul{display:flex;flex-wrap:nowrap;overflow-x:auto}
  .lv-places-spatial__preference li{flex:0 0 min(210px,72vw);min-height:44px}
  .lv-places-spatial__preference li b,.lv-places-spatial__preference li small{white-space:normal}
  .lv-places-spatial__map{height:clamp(430px,62svh,560px);min-height:430px}
  .lv-places-spatial__history{padding:14px;border-radius:18px}
}
@media(prefers-reduced-motion:reduce){.lv-places-spatial__filter-reveal{transition:none}}

/* B1 compact map controls: discovery remains map-first and takes its accent from
   the active trip instead of assigning unrelated fixed colours to controls. */
.lv-places-spatial__map-toolbar{position:absolute;z-index:8;top:14px;right:14px;display:flex;align-items:center;gap:7px}
.lv-places-spatial__fit-toggle,.lv-places-spatial__map-browser{display:flex;align-items:center;min-height:36px;padding:3px;border:1px solid color-mix(in srgb,var(--places-accent) 22%,#dbe5e9);border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0 9px 24px rgba(31,56,72,.1);backdrop-filter:blur(12px)}
.lv-places-spatial__fit-toggle button,.lv-places-spatial__map-browser button{display:grid;min-width:31px;height:30px;place-items:center;padding:0 9px;border:0;border-radius:999px;background:transparent;color:var(--places-muted);font-size:9px;font-weight:850;cursor:pointer}
.lv-places-spatial__fit-toggle button[aria-pressed="true"]{background:var(--places-accent);color:var(--places-accent-contrast)}
.lv-places-spatial__map-browser span{min-width:52px;color:var(--places-muted);font-size:9px;font-weight:760;text-align:center}.lv-places-spatial__map-browser b{color:var(--places-accent-ink)}
.lv-places-spatial__marker[data-compass-tone="0"]{background:#ef6254!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="1"]{background:#f07850!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="2"]{background:#f19a4c!important;color:#17384d!important}
.lv-places-spatial__marker[data-compass-tone="3"]{background:#f4b34c!important;color:#17384d!important}
.lv-places-spatial__marker[data-compass-tone="4"]{background:#b5b85e!important;color:#17384d!important}
.lv-places-spatial__marker[data-compass-tone="5"]{background:#6aaa70!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="6"]{background:#2f8c73!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="7"]{background:#2e9091!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="8"]{background:#2c93a9!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="9"]{background:#4f82b3!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="10"]{background:#756fa9!important;color:#fff!important}
.lv-places-spatial__marker[data-compass-tone="11"]{background:#a65f8f!important;color:#fff!important}
.lv-places-spatial__marker.is-preferred{box-shadow:0 0 0 3px #fff,0 0 0 7px color-mix(in srgb,var(--places-accent) 48%,transparent),0 12px 26px rgba(31,65,86,.22)}
.lv-places-spatial__marker>b{background:color-mix(in srgb,var(--places-accent) 14%,#fff);color:var(--places-accent-ink)}
.lv-places-spatial__map-preview{position:absolute;z-index:24;right:12px;bottom:12px;left:12px;display:block;min-height:64px;max-width:min(420px,calc(100% - 24px));margin-inline:auto;padding:5px;border:2px solid transparent;border-radius:18px;background:linear-gradient(rgba(255,255,255,.96),rgba(255,255,255,.96)) padding-box,conic-gradient(from 0deg,#ef6254 0deg,#f4b34c 72deg,#2f8c73 154deg,#2c93a9 222deg,#756fa9 292deg,#a65f8f 328deg,#ef6254 360deg) border-box;box-shadow:0 12px 30px rgba(31,56,72,.14);backdrop-filter:blur(14px);overflow:visible;pointer-events:auto;touch-action:none;animation:lv-places-preview-float 3.2s ease-in-out infinite}
.lv-places-spatial__map-preview[hidden]{display:none}.lv-places-spatial__map-preview-open{display:grid;width:100%;min-height:52px;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:12px;padding:2px;border:0;border-radius:13px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;overflow:hidden}.lv-places-spatial__map-preview-open>img,.lv-places-spatial__map-preview-loading{display:block;width:64px;height:50px;border-radius:11px;object-fit:cover;background:linear-gradient(110deg,var(--places-surface-soft) 30%,#fff 48%,var(--places-surface-soft) 66%);background-size:220% 100%;animation:lv-places-preview-loading 1.1s linear infinite}
.lv-places-spatial__map-preview-open>span:not(.lv-places-spatial__map-preview-loading){display:grid;min-width:0;gap:3px}.lv-places-spatial__map-preview small{color:var(--places-accent-ink);font-size:8px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.lv-places-spatial__map-preview strong{overflow:hidden;color:var(--places-ink);font-size:13px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.lv-places-spatial__map-preview-cue{position:absolute;z-index:3;left:50%;bottom:calc(100% + 5px);display:block;width:30px;height:24px;translate:-50% 0;pointer-events:none;filter:drop-shadow(0 1px 0 rgba(255,255,255,.96)) drop-shadow(0 2px 4px rgba(31,56,72,.4))}.lv-places-spatial__map-preview-cue i{position:absolute;left:8px;width:14px;height:14px;border-top:2px solid color-mix(in srgb,var(--places-accent-ink) 84%,#17384a);border-left:2px solid color-mix(in srgb,var(--places-accent-ink) 84%,#17384a);rotate:45deg;opacity:.62;animation:lv-places-preview-cue-wave 1.65s ease-in-out infinite}.lv-places-spatial__map-preview-cue i:nth-child(1){top:9px;animation-delay:.24s}.lv-places-spatial__map-preview-cue i:nth-child(2){top:5px;animation-delay:.12s}.lv-places-spatial__map-preview-cue i:nth-child(3){top:1px;animation-delay:0s}.lv-places-spatial__map-preview.is-dragging{animation:none;cursor:grabbing}.lv-places-spatial__map-preview.is-dragging .lv-places-spatial__map-preview-cue i{animation-play-state:paused}
@keyframes lv-places-preview-float{0%,100%{translate:0 0}50%{translate:0 -4px}}
@keyframes lv-places-preview-cue-wave{0%,100%{opacity:.52;translate:0 1px}28%{opacity:1;translate:0 -4px}55%{opacity:.72;translate:0 0}}
@keyframes lv-places-preview-loading{to{background-position:-220% 0}}
@media(max-width:720px){
  .lv-places-spatial__map-toolbar{top:10px;right:10px;left:72px;justify-content:flex-end}.lv-places-spatial__fit-toggle button{padding-inline:8px}
}

/* Map-native Places controls: the page explains only the destination. Search,
   category choice, factual filters and the ranking legend live on the map and
   inherit the active Trip palette. Opening them never remounts the map. */
.lv-places-spatial__heading{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:0 0 12px;padding:0 2px;text-align:left}
.lv-places-spatial__heading-copy{display:grid;gap:5px;max-width:none}
.lv-places-spatial__heading h1{max-width:none;margin:0;font-size:clamp(30px,4.4vw,54px);line-height:.98;letter-spacing:-.052em}
.lv-places-spatial__heading p{max-width:none;margin:0;color:var(--places-muted);font-size:10px;line-height:1.35}
.lv-places-spatial__heading p button{padding:0;border:0;border-bottom:1px solid color-mix(in srgb,var(--places-accent) 42%,transparent);background:transparent;color:var(--places-accent-ink);font:inherit;font-weight:800;cursor:pointer}
.lv-places-spatial__canvas{margin-top:0}
.lv-places-spatial__map{height:clamp(610px,76svh,860px);min-height:610px;border-color:color-mix(in srgb,var(--places-accent) 18%,var(--places-line))}
.lv-places-spatial__map-tools{position:absolute;z-index:12;top:12px;right:12px;left:72px;display:flex;align-items:center;justify-content:flex-end;gap:2px;width:auto;max-width:calc(100% - 84px);padding:3px;border:1px solid color-mix(in srgb,var(--places-accent) 14%,transparent);border-radius:999px;background:rgba(248,251,250,.62);box-shadow:0 5px 16px rgba(32,58,72,.07);backdrop-filter:blur(6px)}
.lv-places-spatial__map-tools>button,.lv-places-spatial__legend-trigger{position:relative;display:grid;width:34px;height:34px;place-items:center;padding:0;border:0;border-radius:50%;background:transparent;color:var(--places-accent-ink);cursor:pointer}
.lv-places-spatial__map-tools button>svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.lv-places-spatial__map-tools>button[aria-pressed="true"]{background:color-mix(in srgb,var(--places-accent) 15%,transparent);color:var(--places-accent-ink);box-shadow:none}
.lv-places-spatial__map-tools .lv-places-spatial__fit-toggle,.lv-places-spatial__map-tools .lv-places-spatial__map-browser{min-height:30px;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none}.lv-places-spatial__map-tools .lv-places-spatial__fit-toggle button,.lv-places-spatial__map-tools .lv-places-spatial__map-browser button{min-width:26px;height:28px;padding:0 6px;font-size:8px}.lv-places-spatial__map-tools .lv-places-spatial__fit-toggle button[aria-pressed="true"]{background:color-mix(in srgb,var(--places-accent) 16%,transparent);color:var(--places-accent-ink)}.lv-places-spatial__map-tools .lv-places-spatial__map-browser span{min-width:34px;font-size:8px}
.lv-places-spatial__map-tool-count{position:absolute;top:-3px;right:-3px;display:grid;min-width:16px;height:16px;place-items:center;padding:0 4px;border:2px solid #fff;border-radius:999px;background:var(--places-accent);color:var(--places-accent-contrast);font-size:7px;font-weight:900}
.lv-places-spatial__legend-anchor{position:relative;display:grid}
.lv-places-spatial__legend{position:absolute;right:0;top:calc(100% + 10px);display:grid;width:290px;gap:5px;padding:11px 12px;border:1px solid color-mix(in srgb,var(--places-accent) 24%,var(--places-line));border-radius:14px;background:rgba(255,255,255,.98);box-shadow:0 16px 38px rgba(31,56,72,.16);color:var(--places-muted);font-size:9px;line-height:1.42;opacity:0;pointer-events:none;transform:translateY(-5px);transition:opacity .16s ease,transform .16s ease}
.lv-places-spatial__legend b{color:var(--places-accent-ink);font-size:10px}.lv-places-spatial__legend-anchor:hover .lv-places-spatial__legend,.lv-places-spatial__legend-anchor:focus-within .lv-places-spatial__legend{opacity:1;transform:none}
.lv-places-spatial__map-panels{position:absolute;z-index:11;top:57px;right:12px;left:auto;width:min(218px,calc(100% - 92px));pointer-events:none}
.lv-places-spatial__map-panel{display:grid;gap:4px;max-height:min(420px,calc(100svh - 220px));padding:7px 8px;border:1px solid color-mix(in srgb,var(--places-accent) 10%,transparent);border-radius:10px;background:rgba(247,250,249,.92);box-shadow:0 7px 18px rgba(31,56,72,.07);backdrop-filter:blur(5px);overflow:auto;pointer-events:auto;animation:lv-places-map-panel-in .2s var(--places-ease) both;scrollbar-width:thin}
.lv-places-spatial__map-panel[hidden]{display:none}.lv-places-spatial__map-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:17px}.lv-places-spatial__map-panel-head small{min-width:0;overflow:hidden;color:var(--places-accent-ink);font-size:7px;font-weight:760;letter-spacing:.08em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.lv-places-spatial__map-panel-head button{display:grid;width:18px;height:18px;flex:0 0 18px;place-items:center;padding:0;border:0;border-radius:50%;background:transparent;color:var(--places-accent-ink);font:600 14px/1 inherit;cursor:pointer}
@keyframes lv-places-map-panel-in{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
.lv-places-spatial__map-panel.is-search{width:100%;max-height:none;padding:5px 7px}.lv-places-spatial__map-query{display:block;min-width:0}.lv-places-spatial__map-query label{display:flex;min-width:0;align-items:center;gap:5px;height:27px;padding:0 2px;border:0;border-bottom:1px solid color-mix(in srgb,var(--places-accent) 34%,var(--places-line));border-radius:0;background:transparent;white-space:nowrap}.lv-places-spatial__map-query label>svg{width:11px;height:11px;flex:0 0 11px;fill:none;stroke:var(--places-accent-ink);stroke-width:1.6}.lv-places-spatial__map-query input{display:block;min-width:0;width:100%;height:25px;padding:0;border:0;outline:0;background:transparent;color:var(--places-ink);font-family:inherit;font-size:9px;line-height:25px;text-overflow:ellipsis;white-space:nowrap}.lv-places-spatial__map-query input::-webkit-search-cancel-button{opacity:.55}
.lv-places-spatial__map-categories{display:flex;flex-direction:column;align-items:stretch;gap:0}.lv-places-spatial__map-categories>button{min-height:36px;padding:8px 4px;border:0;background:transparent;color:var(--places-text);font:inherit;font-size:12px;line-height:1.25;text-align:left;cursor:pointer}.lv-places-spatial__map-categories>button[aria-pressed="true"]{color:var(--places-accent-ink);font-weight:850;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.lv-places-spatial__map-panel .lv-places-spatial__filter-reveal{display:block;min-height:0;opacity:1;transform:none}.lv-places-spatial__map-panel .lv-places-spatial__filter-panel{display:grid;gap:2px;padding:0;border:0;background:transparent;box-shadow:none}.lv-places-spatial__filter-sections,.lv-places-spatial__filter-options{display:flex;flex-direction:column;gap:0}.lv-places-spatial__filter-sections>button{grid-template-columns:minmax(0,1fr) auto 8px;align-items:center;gap:5px}.lv-places-spatial__filter-sections>button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lv-places-spatial__filter-sections>button small{color:var(--places-muted);font-size:7px;font-weight:500;white-space:nowrap}.lv-places-spatial__filter-sections>button i{font-style:normal;font-size:12px}.lv-places-spatial__filter-detail-head{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:3px;margin-bottom:2px}.lv-places-spatial__filter-detail-head button{grid-row:1/3;width:20px}.lv-places-spatial__filter-detail-head strong{overflow:hidden;color:var(--places-accent-ink);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.lv-places-spatial__filter-detail-head small{color:var(--places-muted);font-size:6px;letter-spacing:.04em}.lv-places-spatial__map-panel .lv-places-spatial__filter-panel button{display:block;width:100%;min-height:20px;padding:2px 1px;border:0;border-radius:0;background:transparent;color:var(--places-text);font:inherit;font-size:9px;line-height:1.2;text-align:left;box-shadow:none;cursor:pointer}.lv-places-spatial__map-panel .lv-places-spatial__filter-panel .lv-places-spatial__filter-sections>button{display:grid}.lv-places-spatial__map-panel .lv-places-spatial__filter-panel button[aria-pressed="true"]{border:0;background:linear-gradient(90deg,color-mix(in srgb,var(--places-accent) 10%,transparent),transparent);color:var(--places-accent-ink);font-weight:850;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.lv-places-spatial__map-panel .lv-places-spatial__filter-reset{margin:4px 0 0;color:var(--places-muted);font-size:8px}
@media(max-width:720px){
  .lv-places-spatial__heading{align-items:start}.lv-places-spatial__heading h1{max-width:11ch;font-size:clamp(30px,9vw,42px)}.lv-places-spatial__heading p{max-width:31ch;font-size:9px}
  .lv-places-spatial__map{height:clamp(320px,calc(100svh - 330px),760px);min-height:320px}
  .lv-places-spatial__map-tools{top:9px;right:9px;left:62px;max-width:calc(100% - 71px)}.lv-places-spatial__map-tools>button,.lv-places-spatial__legend-trigger{width:28px;height:28px}.lv-places-spatial__legend{width:250px}
  .lv-places-spatial__map-panels{top:50px;right:9px;width:min(240px,calc(100% - 72px))}.lv-places-spatial__map-panel{max-height:min(380px,calc(100svh - 210px));padding:8px 9px;border-radius:9px}
  .lv-places-spatial__map-categories{display:flex}.lv-places-spatial__map-query{display:block}
  .lv-places-spatial__map-panel .lv-places-spatial__filter-panel{display:grid;overflow:visible}
}
@media(max-width:420px){.lv-places-spatial__map-tools{gap:0;padding:2px}.lv-places-spatial__map-tools .lv-places-spatial__fit-toggle button{min-width:24px;padding:0 4px;font-size:7px}.lv-places-spatial__map-tools .lv-places-spatial__map-browser button{min-width:21px;padding:0 3px}.lv-places-spatial__map-tools .lv-places-spatial__map-browser span{min-width:28px}.lv-places-spatial__map-tools>button,.lv-places-spatial__legend-trigger{width:26px;height:27px}}
/* Preview belongs to the map on every surface, including mobile scrolling. */
@media(max-width:800px){.lv-places-spatial__map-preview{position:absolute;bottom:12px;left:10px;right:10px;max-width:none;margin-inline:0;z-index:24}}
@media(max-width:390px){.lv-places-spatial__map-preview{bottom:12px}}
@media(prefers-reduced-motion:reduce){.lv-places-spatial__map-panel{animation:none}.lv-places-spatial__legend{transition:none}.lv-places-spatial__map-preview,.lv-places-spatial__map-preview-cue i,.lv-places-spatial__marker:is(.is-selected,[aria-pressed="true"])::before{animation:none}.lv-places-spatial__map-preview{translate:none}}

/* One pin silhouette: the tip and body cannot paint different layers/colours. */
@property --lv-pin-angle { syntax:'<angle>';initial-value:0deg;inherits:false; }
.lv-places-spatial__marker-anchor.is-preferred{z-index:7}
.lv-places-spatial__marker-anchor.is-selected{z-index:10}
.lv-places-spatial__marker[data-compass-tone="0"]{--lv-pin-color:#ef6254}
.lv-places-spatial__marker[data-compass-tone="1"]{--lv-pin-color:#f07850}
.lv-places-spatial__marker[data-compass-tone="2"]{--lv-pin-color:#f19a4c}
.lv-places-spatial__marker[data-compass-tone="3"]{--lv-pin-color:#f4b34c}
.lv-places-spatial__marker[data-compass-tone="4"]{--lv-pin-color:#b5b85e}
.lv-places-spatial__marker[data-compass-tone="5"]{--lv-pin-color:#6aaa70}
.lv-places-spatial__marker[data-compass-tone="6"]{--lv-pin-color:#2f8c73}
.lv-places-spatial__marker[data-compass-tone="7"]{--lv-pin-color:#2e9091}
.lv-places-spatial__marker[data-compass-tone="8"]{--lv-pin-color:#2c93a9}
.lv-places-spatial__marker[data-compass-tone="9"]{--lv-pin-color:#4f82b3}
.lv-places-spatial__marker[data-compass-tone="10"]{--lv-pin-color:#756fa9}
.lv-places-spatial__marker[data-compass-tone="11"]{--lv-pin-color:#a65f8f}
.lv-places-spatial__marker[data-compass-tone]{border:0;background:transparent!important;box-shadow:none;filter:drop-shadow(0 4px 4px rgba(31,65,86,.24));animation:none;translate:none}
.lv-places-spatial__marker::after{inset:0 0 -8px;width:auto;height:auto;border:0;border-radius:0;transform:none;background:var(--lv-pin-color,#2c93a9);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 52'%3E%3Cpath fill='white' d='M22 1C10.4 1 1 10.4 1 22C1 33 8 39 15 42L22 51L29 42C36 39 43 33 43 22C43 10.4 33.6 1 22 1Z'/%3E%3C/svg%3E") center/100% 100% no-repeat}
.lv-places-spatial__marker::before,.lv-places-spatial__marker:is(.is-selected,[aria-pressed="true"])::before{inset:0 0 -8px;z-index:0;border-radius:0;opacity:1;scale:1;background:#fff;animation:none;transition:none;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 52'%3E%3Cpath fill='none' stroke='white' stroke-width='2.6' d='M22 1C10.4 1 1 10.4 1 22C1 33 8 39 15 42L22 51L29 42C36 39 43 33 43 22C43 10.4 33.6 1 22 1Z'/%3E%3C/svg%3E") center/100% 100% no-repeat}
.lv-places-spatial__marker.is-preferred::before{background:conic-gradient(from var(--lv-pin-angle),#ef6254,#f07850,#f19a4c,#f4b34c,#b5b85e,#6aaa70,#2f8c73,#2e9091,#2c93a9,#4f82b3,#756fa9,#a65f8f,#ef6254);animation:lv-pin-spectrum 5s linear infinite}
.lv-places-spatial__marker.is-preferred,.lv-places-spatial__marker:is(.is-selected,[aria-pressed="true"]){box-shadow:none}
.lv-places-spatial__marker:is(.is-selected,[aria-pressed="true"]){scale:1.18;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 6px 5px rgba(31,65,86,.36))}
.lv-places-spatial__marker>b{top:-18px;left:50%;right:auto;translate:-50% 0;min-width:32px;height:16px;padding:0 5px;border-width:1px;border-radius:8px;font-size:7px;font-weight:700;text-transform:none;background:rgba(255,255,255,.94);color:#375c60;box-shadow:0 2px 4px rgba(31,65,86,.1);pointer-events:none}
@keyframes lv-pin-spectrum{to{--lv-pin-angle:360deg}}
@media(prefers-reduced-motion:reduce){.lv-places-spatial__marker.is-preferred::before{animation:none}}

.lv-category-image { display:grid;place-content:center;justify-items:center;gap:8px;width:100%;min-height:110px;background:#f0f4f4;color:#637b83; }
.lv-category-image > svg { width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.4; }
.lv-category-image > small { font:12px/1.4 sans-serif; }
.lv-category-image.is-compact { width:58px;height:50px;min-height:0;border-radius:11px; }
.lv-category-image.is-compact > small { display:none; }
.lvjs-choice-main > .lv-category-image { grid-area:1/1;min-height:0;height:100%; }
.lv-places-spatial__filter-options button:disabled { opacity:.55;cursor:default;text-decoration:none; }
.lv-places-spatial__filter-options button > small { display:block;font-size:10px;line-height:1.4; }

/* Empty discovery remains actionable without blocking map gestures. */
.lv-places-spatial__map-message:has([data-places-empty-actions]){flex-wrap:wrap;border-radius:16px;max-width:min(350px,calc(100% - 28px));font-size:11px;line-height:1.45}
.lv-places-spatial__map-message:has([data-places-empty-actions])>span{flex:1;min-width:180px}
[data-places-empty-actions]{display:flex;flex-wrap:wrap;gap:6px;width:100%}
[data-places-empty-actions] button{pointer-events:auto;min-height:44px;padding:8px 12px;border:1px solid var(--places-line);border-radius:12px;background:var(--places-surface);color:var(--places-ink);font:inherit;cursor:pointer}

/* Shared Places / Stays trip experiences. */
.lv-places-spatial__view-controls{position:absolute;left:12px;top:142px;display:grid;gap:8px;z-index:9;pointer-events:none}
.lv-places-spatial__view-controls button{pointer-events:auto;min-height:44px;min-width:44px;border:1px solid var(--places-line);border-radius:14px;background:var(--places-surface);color:var(--places-ink);display:flex;align-items:center;justify-content:center;gap:7px;font:600 12px/1.3 inherit;padding:8px;box-shadow:0 3px 14px rgb(31 65 86 / 8%)}
.lv-places-spatial__view-controls svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5}
.lv-places-spatial .maplibregl-ctrl-group button{width:44px;height:44px}
.lv-trip-map-experiences{min-width:0;max-width:100%;margin:16px 0 20px;color:var(--places-ink)}
.lv-trip-map-tabs{display:flex;gap:7px;overflow-x:auto;scrollbar-width:thin;padding:5px 2px 10px}
.lv-trip-map-tabs button{flex:1 0 auto;min-height:46px;padding:10px 18px;border:1px solid var(--places-line);border-radius:24px;background:var(--places-surface);color:var(--places-ink);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}
.lv-trip-map-tabs button[aria-pressed=true]{background:var(--places-accent);color:var(--places-accent-contrast);border-color:var(--places-accent);box-shadow:0 5px 16px color-mix(in srgb,var(--places-accent) 24%,transparent)}
.lv-trip-map-panel{border:1px solid color-mix(in srgb,var(--places-accent) 24%,var(--places-line));border-top:3px solid var(--places-accent);border-radius:24px;padding:22px;background:radial-gradient(ellipse at top right,color-mix(in srgb,var(--places-accent) 18%,transparent),transparent 68%),linear-gradient(150deg,var(--places-accent-wash),var(--places-surface));box-shadow:0 12px 32px color-mix(in srgb,var(--places-accent) 10%,transparent)}
.lv-trip-map-title{display:flex;gap:16px;justify-content:space-between;align-items:flex-start}
.lv-trip-map-title h2{font-size:clamp(20px,2vw,27px);line-height:1.2;margin:2px 0 12px;letter-spacing:-.025em}
.lv-trip-map-panel p{font-size:14px;line-height:1.65;margin:8px 0 16px;max-width:78ch}
.lv-trip-map-panel button{min-height:44px;padding:10px 15px;border:1px solid var(--places-line);border-radius:13px;background:var(--places-surface);color:var(--places-ink);font:inherit;font-size:13px;cursor:pointer}
.lv-trip-map-panel button:disabled{opacity:.45;cursor:default}
.lv-trip-map-panel button:focus-visible,.lv-trip-map-tabs button:focus-visible{outline:3px solid var(--places-ink);outline-offset:3px}
.lv-trip-map-fields{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:16px 0}
.lv-trip-map-fields label{display:grid;gap:6px;font-size:12px;flex:1 1 140px}
.lv-trip-map-fields select,.lv-trip-map-fields input{min-height:44px;max-width:100%;border:1px solid var(--places-line);border-radius:12px;padding:10px;background:var(--places-surface);color:var(--places-ink);font:inherit}
.lv-trip-map-panel small{font-size:11px;line-height:1.5;opacity:.8}
.lv-trip-map-note:empty{display:none}
.lv-trip-map-note{padding-top:10px}
.lv-trip-map-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px;margin-top:16px}
.lv-trip-map-card{border:1px solid var(--places-line);border-radius:18px;overflow:hidden;background:linear-gradient(140deg,var(--places-accent-soft),var(--places-surface))}
.lv-trip-map-card>div{padding:16px}
.lv-trip-map-card h3{font-size:18px;line-height:1.3;margin:7px 0 8px}
.lv-trip-map-card>img{width:100%;height:145px;object-fit:cover}
.lv-trip-map-people{padding-left:17px;font-size:12px;line-height:1.6}
.lv-trip-map-people li{margin-bottom:6px}
.lv-trip-map-comparison{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;padding:12px 0}
.lv-trip-map-comparison p{padding:12px;border:1px solid var(--places-line);border-radius:14px;margin:0}
.lv-trip-map-day{padding-left:24px;margin:18px 0;max-height:350px;overflow:auto}
.lv-trip-map-day li{padding:6px 4px;border-left:2px solid var(--places-line)}
.lv-trip-map-day li.is-current{border-color:var(--places-accent);background:var(--places-accent-soft);border-radius:0 12px 12px 0}
.lv-trip-map-day small{display:block;padding:4px 15px}
.lv-trip-map-stop{width:36px;height:36px;border:3px solid white;border-radius:50%;background:#2c93a9;color:white;font-weight:700;box-shadow:0 3px 9px rgb(31 65 86 / 25%);z-index:11;cursor:pointer}
@media(max-width:600px){.lv-trip-map-panel{padding:17px;border-radius:20px}.lv-trip-map-title{flex-wrap:wrap;gap:4px}.lv-trip-map-tabs button{padding-inline:14px}.lv-places-spatial__view-controls span{display:none}}

.lv-places-spatial__marker-anchor.is-selected{z-index:12}

.lv-trip-map-panel>button:not(:disabled){background:var(--places-accent);color:var(--places-accent-contrast);border-color:var(--places-accent)}
.lv-trip-map-card h3,.lv-trip-map-comparison strong{color:var(--places-accent-ink)}
.lv-trip-map-comparison p{background:color-mix(in srgb,var(--places-accent) 9%,var(--places-surface));border-color:color-mix(in srgb,var(--places-accent) 24%,var(--places-line))}
