/**
 * embed.css -- Styles für den Embed-/iframe-Modus und generelles UI-Ausblenden.
 *
 * Zwei Mechanismen (gesetzt von embed.js, applyEmbedToState()):
 *   .embed-hidden            -- global, blendet ein einzelnes statisches Element aus.
 *   body.embed-hide-*        -- Marker-Klassen für Controls/Elemente, die erst nach
 *                               initMap() / initOpacitySlider() im DOM erscheinen
 *                               (timing-unabhängig).
 *   body.embed-mode          -- aktiv bei ?embed=1: iframe-Overrides.
 *   body.embed-has-product   -- gesetzt wenn ?product= in der URL: Side-Panel
 *                               überflüssig, Produkt steht via URL fest.
 */

/* Universelles Ausblenden -- greift im Normal- wie im Embed-Modus.
   !important, damit es Leaflet-/Komponenten-eigene display-Regeln sicher schlägt. */
.embed-hidden {
  display: none !important;
}

/* Leaflet-Controls über body-Marker-Klassen ausblenden (siehe embed.js).
   Greift sobald Leaflet das jeweilige Control rendert -- kein Timing-Problem. */
body.embed-hide-zoom-control .leaflet-control-zoom {
  display: none !important;
}
body.embed-hide-attribution .leaflet-control-attribution {
  display: none !important;
}

/* Legende und Side-Panel komplett ausblenden (?legend=0 / ?side_panel=0).
   Collapsed-State reicht nicht -- bei =0 soll auch das Icon/Toggle weg sein. */
body.embed-hide-legend #dbz-legend {
  display: none !important;
}
body.embed-hide-side-panel #side-panel,
body.embed-has-product #side-panel {
  display: none !important;
}

/* Opacity-Slider: wird erst von initOpacitySlider() vollständig initialisiert --
   body-Marker-Klasse analog zoom-control, kein querySelector in applyEmbedToState() (Phase 2).
   Greift auch bei automatischem Auto-Hide wenn ?opacity= gesetzt ist. */
body.embed-hide-opacity #opacity-control {
  display: none !important;
}

/* Theme-Toggle: ausblenden wenn ?theme= gesetzt (Toggle wäre wirkungslos)
   oder wenn ?theme_toggle=0 / ui.theme_toggle=false. */
body.embed-hide-theme-toggle #theme-toggle {
  display: none !important;
}

/* FOUC-Schutz: embed-steuerbare Elemente bis applyEmbedToState() fertig ist verstecken.
   visibility:hidden statt display:none – Layout bleibt stabil, kein Reflow beim Einblenden. */
.is-embed-loading #radar-status,
.is-embed-loading #side-panel,
.is-embed-loading #right-controls,
.is-embed-loading #opacity-control,
.is-embed-loading #controls,
.is-embed-loading #controls-overflow,
.is-embed-loading #theme-toggle { visibility: hidden; }

/* ---------------------------------------------------------------------------
 * Embed-Modus (?embed=1): Karte füllt den iframe randlos.
 * ------------------------------------------------------------------------- */

body.embed-mode {
  margin: 0;
  padding: 0;
  overflow: hidden;
}

/* #map-shell und #map füllen den kompletten Viewport (iframe-Fläche). */
body.embed-mode #map-shell,
body.embed-mode #map {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* Attribution im Embed kompakter -- spart Platz auf kleinen iframes. */
body.embed-mode .leaflet-control-attribution {
  font-size: 9px;
}

body.embed-hide-attribution #attr-bar {
  display: none !important;
}
