/* Youpi P7 · map provider ("Google com trânsito" under the MapLibre overlays), the "Mapa" chooser, and the
 * "WhatsApp ativo no app" switch. Loads before the v140/v141/wave1 sheets: selectors that override them carry the same
 * `html body.map-shell` prefix plus a state class, so they win on specificity, not on order. */

/* ---------- 1. Google basemap: one instance, below the transparent MapLibre canvas ---------- */
#map > .uppi-gmap {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none; /* MapLibre keeps every gesture, popup and click. */
  background: #eef0f3;
}
#map > .uppi-gmap[hidden] { display: none !important; }
html.uppi-map-google #map .maplibregl-canvas { z-index: 1; }
:root[data-theme=dark] #map > .uppi-gmap { background: #1f2633; }
/* The dark theme inverts the MapLibre canvas (theme.css); Google's own drawing is never filtered or recolored. */
:root[data-theme=dark] .map-panel .uppi-gmap :is(canvas, img) { filter: none !important; }

/* Google's logo and data credits sit in the bottom strip of the map and must stay visible and unobscured:
 * the Youpi chip leaves the strip while Google is shown, and our compact credits move just above Google's line. */
html.uppi-map-google body.map-shell.map-shell-ready .map-shell-brand.brand { visibility: hidden; }
html.uppi-map-google body.map-shell:not(.travel-active) .maplibregl-ctrl-bottom-right { bottom: calc(env(safe-area-inset-bottom, 0px) + 14px); }
html.uppi-map-google body.map-shell:not(.travel-active) .maplibregl-ctrl-bottom-right > .maplibregl-ctrl-attrib { margin: 0 6px 0 0; }
html.uppi-map-google body.map-shell:not(.travel-active) .maplibregl-ctrl-bottom-right > .maplibregl-ctrl-attrib.maplibregl-compact { min-height: 18px; }
html.uppi-map-google body.map-shell:not(.travel-active) .maplibregl-ctrl-bottom-right .maplibregl-ctrl-attrib-button { width: 18px; height: 18px; }
html.uppi-map-google body.map-shell:not(.travel-active) .maplibregl-ctrl-bottom-right > .maplibregl-ctrl-attrib.maplibregl-compact-show { padding-top: 0; padding-bottom: 0; line-height: 18px; }
html.uppi-map-google body.map-shell:not(.travel-active) .maplibregl-ctrl-bottom-right > .maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner { max-width: none; white-space: nowrap; text-align: right; }

/* ---------- 2. "Mapa" chooser (only when the admin lets people choose) ---------- */
.map-panel .uppi-map-layers { position: absolute; left: 14px; bottom: 14px; z-index: 3; }
.map-panel .uppi-map-layers[hidden] { display: none; }
html body.map-shell .map-panel .uppi-map-layers {
  left: max(var(--shell-gap), env(safe-area-inset-left, 0px));
  bottom: calc(var(--shell-bottom) + 44px + 8px);
}
.uppi-map-layers-button {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--paper);
  color: var(--shell-accent, var(--navy));
  box-shadow: 0 1px 2px #102d3f12, 0 4px 16px #102d3f10;
  cursor: pointer;
}
.uppi-map-layers-button .ui-icon { width: 22px; height: 22px; }
.uppi-map-layers-button:focus-visible,
.uppi-map-layers-option:focus-visible { outline: 3px solid var(--shell-accent, var(--navy)); outline-offset: 2px; }
.uppi-map-layers.open .uppi-map-layers-button,
.uppi-map-layers[data-provider="google"] .uppi-map-layers-button { background: color-mix(in srgb, var(--shell-accent, var(--navy)) 10%, var(--paper)); }
@media (hover: hover) { .uppi-map-layers-button:hover { background: color-mix(in srgb, var(--shell-accent, var(--navy)) 9%, var(--paper)); } }

.uppi-map-layers-menu {
  position: absolute;
  left: 0;
  bottom: calc(100% + 8px);
  width: min(288px, calc(100vw - 2 * var(--shell-gap, 14px)));
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 12px 36px #102d3f24, 0 1px 3px #102d3f14;
}
.uppi-map-layers-menu[hidden] { display: none; }
.uppi-map-layers-title { margin: 2px 4px 8px; color: var(--muted); font: 700 12px/1.2 'DM Sans', sans-serif; letter-spacing: .06em; text-transform: uppercase; }
.uppi-map-layers-option {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  width: 100%;
  min-height: 56px;
  margin: 0 0 6px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: transparent;
  color: var(--ink);
  text-align: left;
  cursor: pointer;
}
.uppi-map-layers-option[aria-pressed="true"] { border-color: var(--shell-accent, var(--navy)); background: color-mix(in srgb, var(--shell-accent, var(--navy)) 8%, var(--paper)); box-shadow: inset 0 0 0 1px var(--shell-accent, var(--navy)); }
.uppi-map-layers-text { display: grid; gap: 2px; min-width: 0; }
.uppi-map-layers-text strong { font: 700 14px/1.25 'DM Sans', sans-serif; }
.uppi-map-layers-text small { color: var(--muted); font: 500 12px/1.3 'DM Sans', sans-serif; }
.uppi-map-layers-swatch { width: 40px; height: 40px; border-radius: 11px; border: 1px solid var(--line); }
.uppi-map-layers-swatch[data-swatch="openfreemap"] {
  background: linear-gradient(90deg, transparent 46%, #fff 46% 54%, transparent 54%), linear-gradient(0deg, transparent 46%, #fff 46% 54%, transparent 54%), #e2ebe7;
}
.uppi-map-layers-swatch[data-swatch="google"] {
  background: linear-gradient(90deg, transparent 44%, #34a853 44% 56%, transparent 56%) 0 0 / 100% 50% no-repeat,
    linear-gradient(90deg, transparent 44%, #fbbc04 44% 56%, transparent 56%) 0 100% / 100% 50% no-repeat,
    linear-gradient(0deg, transparent 44%, #ea4335 44% 56%, transparent 56%), #eef0f3;
}
.uppi-map-layers-note { margin: 4px 4px 0; color: var(--muted); font: 500 12px/1.45 'DM Sans', sans-serif; }

/* Steps aside with the other side controls (v138-map.css section 9): phones with the planner open, sheets, dialogs, trips. */
@media (max-width: 600px) {
  html body.map-shell.map-shell-planner-open .map-panel .uppi-map-layers { visibility: hidden; pointer-events: none; }
}
html body.map-shell:is(.map-shell-arrivals-open, .map-shell-menu-open, .origin-picking, .travel-active, .journey-navigation-active, .gps-precision-guide) .map-panel .uppi-map-layers,
html body.map-shell:has(dialog[open], #journey-guide:not([hidden]), #travel-sheet:not([hidden]), #travel-mini:not([hidden]), #origin-map-picker:not([hidden]), #arrival-drawer:not([hidden]), .maplibregl-popup) .map-panel .uppi-map-layers {
  visibility: hidden;
  pointer-events: none;
}
:root[data-theme=dark] .uppi-map-layers-button { background: var(--paper); color: var(--night-link); border-color: var(--line); box-shadow: 0 1px 2px #0005, 0 4px 16px #0003; }
:root[data-theme=dark] :is(.uppi-map-layers.open, .uppi-map-layers[data-provider="google"]) .uppi-map-layers-button { background: var(--night-selected); }
:root[data-theme=dark] .uppi-map-layers-option[aria-pressed="true"] { border-color: var(--night-link); background: var(--night-selected); box-shadow: inset 0 0 0 1px var(--night-link); }
:root[data-theme=dark] .uppi-map-layers-swatch[data-swatch="openfreemap"] { background-color: #2a3a44; }
@media (prefers-reduced-motion: no-preference) { .uppi-map-layers-menu { animation: uppi-layers-in .14s ease-out; } }
@keyframes uppi-layers-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* ---------- 3. "WhatsApp ativo no app" off (Admin → Configurações) ---------- */
/* Hides the alert and account-linking entry points everywhere; wa.me share links ([data-share-app-whatsapp],
 * share buttons) and the admin controls ([data-open-whatsapp-admin]) stay. whatsapp.js also refuses to open the dialog. */
html.uppi-whatsapp-off :is([data-open-whatsapp], [data-whatsapp-route], .wa-route-shortcut, .wa-profile-launcher) { display: none !important; }
