/* ============================================================
   INFOGRUNT REDESIGN v6.12 (2026-05-28)
   - SEKCJA UNIVERSAL: ukrycia dla wszystkich szerokości
     (mobile + tablet + desktop) — bo user chce SPÓJNY wygląd
   - SEKCJA MOBILE-ONLY @media (max-width: 480px):
     drawer fullscreen, hide topbar przy raporcie, flex row dla buttons
   ============================================================ */

/* ============================================================
   UNIVERSAL (mobile + desktop) — wszędzie ukrywamy te same
   sekcje które user przekreślił krzyżem na mobile.
   ============================================================ */

/* Ukryj zielony header "Raport działki XXX / lokalizacja / raport OK" */
body.has-map-shell .right-panel.parcel-drawer .report-head,
body.has-map-shell .parcel-drawer .report-head,
.right-panel.parcel-drawer .report-head,
.parcel-drawer .report-head {
  display: none !important;
}

/* Ukryj summary pierwszej sekcji "// W skrócie [NAJWAŻNIEJSZE ^]" */
body.has-map-shell .right-panel.parcel-drawer .report-acc-section.is-main > summary,
body.has-map-shell .right-panel.parcel-drawer .report-acc-section.is-main > .report-acc-summary,
body.has-map-shell .parcel-drawer .report-acc-section.is-main > summary,
.parcel-drawer .report-acc-section.is-main > summary,
.report-acc-section.is-main > summary,
.report-acc-section.is-main > .report-acc-summary {
  display: none !important;
}

/* Ukryj badge X/100 na mapie hero */
body.has-map-shell .right-panel.parcel-drawer .ig-hero__score,
body.has-map-shell .parcel-drawer .ig-hero__score,
.parcel-drawer .ig-hero__score,
.ig-hero__score {
  display: none !important;
}

/* Ukryj sekcję "Dlaczego X/100?" + składowe oceny */
body.has-map-shell .right-panel.parcel-drawer .score-explain,
body.has-map-shell .right-panel.parcel-drawer .card.score-explain,
body.has-map-shell .parcel-drawer .score-explain,
.parcel-drawer .score-explain,
.score-explain {
  display: none !important;
}

/* Ukryj pasek linków Mapa MPZP / BIP / Geoportal / e-mapa */
body.has-map-shell .right-panel.parcel-drawer .ig-source-row,
body.has-map-shell .parcel-drawer .ig-source-row,
.parcel-drawer .ig-source-row,
.ig-source-row {
  display: none !important;
}

/* Ukryj "🔧 Techniczne dane działki" */
body.has-map-shell .right-panel.parcel-drawer .ig-tech-details,
body.has-map-shell .parcel-drawer .ig-tech-details,
.parcel-drawer .ig-tech-details,
.ig-tech-details {
  display: none !important;
}

/* FIX (audyt 2026-06-10): NIE ukrywamy już pozostałych sekcji akordeonu. Dawniej ta reguła
   (globalna, bez @media) chowała 5 z 6 sekcji raportu — m.in. POWÓDŹ (ISOK) i OSUWISKA (SOPO),
   których nie ma w kafelkach „W skrócie" → krytyczne ryzyka były dla użytkownika NIEWIDOCZNE
   na mobile, desktopie i w druku. Teraz kafelki = szybki rzut oka, a PV/Ryzyka/Okolica/Źródła/
   Dodatkowe wracają jako ZWIJANE bary akordeonu (domyślnie zwinięte — czysto). Scoring xx/100
   jest osobno wycięty w JS (buildTabWynik), więc sekcja podsumowania nie pokazuje już oceny. */

/* #reportShare: flex row obok siebie, wyśrodkowane (UNIVERSAL) */
body.has-map-shell .parcel-drawer #reportShare:not([hidden]),
body.has-map-shell .right-panel.parcel-drawer #reportShare:not([hidden]),
.parcel-drawer #reportShare:not([hidden]),
#reportShare:not([hidden]) {
  position: static !important;
  display: flex !important;
  flex-direction: row !important;
  align-items: stretch !important;
  justify-content: center !important;
  grid-template-columns: none !important;
  gap: 10px !important;
  margin: 20px 0 24px !important;
  padding: 0 !important;
  max-width: none !important;
  width: 100% !important;
  box-sizing: border-box !important;
  background: transparent !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  border-top: 0 !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
}
body.has-map-shell .parcel-drawer #reportShare .share-btn,
#reportShare .share-btn {
  flex: 1 1 0 !important;
  width: auto !important;
  min-width: 0 !important;
  grid-column: auto !important;
}

/* ============================================================
   MOBILE-ONLY @media (max-width:480) — layout drawer + topbar
   + dark hero + styling kafelek metryk.
   ============================================================ */

@media (max-width: 480px) {

  /* ============== 0. UKRYJ TOPBAR gdy raport otwarty ============== */
  body:has(.parcel-drawer.is-open) .topbar,
  body:has(.parcel-drawer.is-open) .topbar-right,
  body:has(.parcel-drawer.is-open) .ig-topbar,
  body:has(.parcel-drawer.is-open) .app-menu,
  body:has(.parcel-drawer.is-open) .map-toggle-wrap,
  body:has(.parcel-drawer.is-open) .zoom-controls,
  body:has(.parcel-drawer.is-open) .lang-picker,
  body:has(.parcel-drawer.is-open) .top-search,
  body:has(.parcel-drawer.is-open) .topbar.compact-topbar,
  body:has(.parcel-drawer.is-open) .top-search.compact-search {
    display: none !important;
  }

  /* ============== 0b. DRAWER FULLSCREEN ============== */
  /* mobile-report-hardfix.css ma `body.has-map-shell #detailsPanel.parcel-drawer
     { top: 124px+safe; left:10px; right:10px; bottom:10px+safe; border-radius:22px }`
     z !important. Selektor z #detailsPanel (id) ma większą wagę — trzeba użyć
     dokładnie tego selektora żeby przebić. */
  body.has-map-shell #detailsPanel.parcel-drawer.is-open,
  body.has-map-shell #detailsPanel.parcel-drawer[aria-hidden="false"],
  body.has-map-shell .right-panel.parcel-drawer.is-open,
  #detailsPanel.parcel-drawer.is-open {
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    max-width: 100vw !important;
    height: 100dvh !important;
    max-height: 100dvh !important;
    min-height: 100dvh !important;
    margin: 0 !important;
    border-radius: 0 !important;
    transform: none !important;
  }
  /* Krzyżyk zamknięcia żeby był nad treścią drawera */
  body.has-map-shell #btnCloseReport.drawer-close,
  body.has-map-shell .drawer-close {
    top: calc(env(safe-area-inset-top, 0px) + 12px) !important;
    right: 12px !important;
    z-index: 100 !important;
  }

  /* ============== 1. UKRYJ ZIELONY HEADER RAPORTU ============== */
  /* Specificity match z mobile-report-hardfix.css linia 1, który ma
     `body.has-map-shell .right-panel.parcel-drawer .report-head{display:flex !important}` */
  body.has-map-shell .right-panel.parcel-drawer .report-head,
  body.has-map-shell .parcel-drawer .report-head,
  .right-panel.parcel-drawer .report-head,
  .parcel-drawer .report-head {
    display: none !important;
  }

  /* ============== 2. UKRYJ SUMMARY PIERWSZEJ SEKCJI ============== */
  body.has-map-shell .right-panel.parcel-drawer .report-acc-section.is-main > summary,
  body.has-map-shell .right-panel.parcel-drawer .report-acc-section.is-main > .report-acc-summary,
  body.has-map-shell .parcel-drawer .report-acc-section.is-main > summary,
  .parcel-drawer .report-acc-section.is-main > summary,
  .report-acc-section.is-main > summary,
  .report-acc-section.is-main > .report-acc-summary {
    display: none !important;
  }

  /* ============== 2b. UKRYJ BADGE 89/100 NA MAPIE HERO ============== */
  body.has-map-shell .right-panel.parcel-drawer .ig-hero__score,
  body.has-map-shell .parcel-drawer .ig-hero__score,
  .parcel-drawer .ig-hero__score,
  .ig-hero__score {
    display: none !important;
  }

  /* ============== 2c. UKRYJ SEKCJĘ "Dlaczego X/100?" + score components ============== */
  body.has-map-shell .right-panel.parcel-drawer .score-explain,
  body.has-map-shell .right-panel.parcel-drawer .card.score-explain,
  body.has-map-shell .parcel-drawer .score-explain,
  .parcel-drawer .score-explain,
  .score-explain {
    display: none !important;
  }

  /* ============== 2d. UKRYJ PASEK LINKÓW ZEWNĘTRZNYCH MPZP/BIP/Geoportal/e-mapa ============== */
  /* .ig-source-row to pasek przycisków-linków pod kartą "W skrócie"
     (renderowany w buildParcelQuickCard, klasa ig-source-row--top) */
  body.has-map-shell .right-panel.parcel-drawer .ig-source-row,
  body.has-map-shell .parcel-drawer .ig-source-row,
  .parcel-drawer .ig-source-row,
  .ig-source-row {
    display: none !important;
  }

  /* ============== 2f. UKRYJ "Techniczne dane działki" ============== */
  body.has-map-shell .right-panel.parcel-drawer .ig-tech-details,
  body.has-map-shell .parcel-drawer .ig-tech-details,
  .parcel-drawer .ig-tech-details,
  .ig-tech-details {
    display: none !important;
  }

  /* ============== 2e. SEKCJE AKORDEONU — JUŻ NIE UKRYWANE (FIX audyt 2026-06-10) ============== */
  /* Dawniej ukrywaliśmy PV/Ryzyka/Okolica/Źródła/Inne — przez co POWÓDŹ i OSUWISKA (których
     nie ma w kafelkach „W skrócie") były dla użytkownika niewidoczne. Teraz wracają jako
     zwijane bary (domyślnie zwinięte). Patrz analogiczna zmiana w sekcji globalnej wyżej. */

  /* ============== 3. PRZYCISKI NA KONIEC FLOW (order: 99) ============== */
  /* Drawer jako flex column żeby `order` działało.
     #reportShare dostaje order=99 → ląduje na samym końcu, pod
     wszystkimi sekcjami raportu (po Inne info). */
  body.has-map-shell .parcel-drawer {
    display: flex !important;
    flex-direction: column !important;
  }
  body.has-map-shell .parcel-drawer > .drawer-close,
  body.has-map-shell .parcel-drawer > #btnCloseReport { order: 0 !important; }
  body.has-map-shell .parcel-drawer > #reportContent { order: 1 !important; flex: 1 1 auto !important; }
  body.has-map-shell .parcel-drawer > #reportShare { order: 99 !important; flex: 0 0 auto !important; }

  /* Mobile zachowuje uniwersalny flex-row zdefiniowany wyżej. Tutaj zostają
     wyłącznie rzeczywiste różnice położenia i szerokości dla wąskiego ekranu. */
  body.has-map-shell .parcel-drawer #reportShare:not([hidden]),
  body.has-map-shell .right-panel.parcel-drawer #reportShare:not([hidden]),
  .parcel-drawer #reportShare:not([hidden]),
  #reportShare:not([hidden]) {
    left: auto !important; right: auto !important;
    bottom: auto !important; top: auto !important;
    z-index: auto !important;
    max-width: none !important;
  }

  body.has-map-shell .parcel-drawer #reportShare .share-btn {
    margin: 0;
    padding: 12px 6px;
    border-radius: 14px;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.15;
    min-height: 48px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    border: 0;
    cursor: pointer;
  }
  body.has-map-shell .parcel-drawer #reportShare .share-btn--pdf {
    background: linear-gradient(135deg, #17ad52 0%, #14994a 100%);
    color: #ffffff;
    box-shadow: 0 6px 14px rgba(23,173,82,0.32);
  }
  body.has-map-shell .parcel-drawer #reportShare #btnShareParcel {
    background: #103221;
    color: #ffffff;
  }
  body.has-map-shell .parcel-drawer #reportShare .share-btn--ghost {
    background: #f3f8ee;
    color: #103221;
    border: 1px solid rgba(8,28,18,0.10);
  }

  /* Padding-bottom: tylko mały bufor (przyciski w flow, ad-bar gdy aktywny) */
  body.has-map-shell .parcel-drawer .report-content {
    padding-bottom: calc(var(--ig-mobile-nav-height) + 24px) !important;
    background: #e9f0e4;
  }
  body.has-map-shell.bottom-ad-active .parcel-drawer .report-content {
    padding-bottom: max(calc(var(--ig-mobile-nav-height) + 24px), 80px) !important;
  }

  /* ============== 2. HERO SECTION (.ig-hero) ============== */
  body.has-map-shell .parcel-drawer .ig-hero,
  body.has-map-shell .parcel-drawer .ig-main-visual-card {
    border-radius: 24px;
    overflow: hidden;
    box-shadow: 0 16px 36px rgba(8,28,18,0.16);
    background: #0c2719;
    position: relative;
    margin-bottom: 14px;
  }
  /* Score bubble wystaje z lewego górnego — biały okrąg z 89/100 */
  body.has-map-shell .parcel-drawer .ig-hero__score {
    position: absolute;
    top: 14px;
    left: 14px;
    background: #ffffff;
    border-radius: 999px;
    padding: 8px 16px;
    box-shadow: 0 6px 16px rgba(8,28,18,0.30);
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    z-index: 3;
    color: #0c2719;
  }
  body.has-map-shell .parcel-drawer .ig-hero__score b {
    font-size: 24px;
    font-weight: 900;
    line-height: 1;
  }
  body.has-map-shell .parcel-drawer .ig-hero__score span {
    font-size: 12px;
    font-weight: 700;
    color: #5d7064;
  }
  /* Pin DZIAŁKA + ID + powierzchnia — ciemny pasek na dole hero */
  body.has-map-shell .parcel-drawer .ig-hero__id.ig-visual-footer {
    background: linear-gradient(180deg, transparent 0%, rgba(8,28,18,0.88) 60%);
    color: #ffffff;
    padding: 16px 14px 12px;
  }
  body.has-map-shell .parcel-drawer .ig-visual-footer__label {
    color: #a7ff45;
    font-size: 10px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.08em;
  }
  body.has-map-shell .parcel-drawer .ig-visual-footer__main {
    color: #ffffff;
    font-size: 14px;
    font-weight: 800;
  }
  body.has-map-shell .parcel-drawer .ig-visual-footer__id {
    color: rgba(255,255,255,0.55);
    font-size: 11px;
  }

  /* ============== 3. KARTY METRYK (.ig-metric) ============== */
  body.has-map-shell .parcel-drawer .ig-metric-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 4px;
  }
  body.has-map-shell .parcel-drawer .ig-metric {
    background: #ffffff;
    border: 1px solid rgba(8,28,18,0.06);
    border-radius: 16px;
    box-shadow: 0 4px 14px rgba(8,28,18,0.04);
    padding: 14px 16px;
    display: grid;
    grid-template-columns: 44px 1fr;
    gap: 12px;
    align-items: center;
  }
  body.has-map-shell .parcel-drawer .ig-metric__icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: #f3f8ee;
    display: grid;
    place-items: center;
    font-size: 22px;
  }
  body.has-map-shell .parcel-drawer .ig-metric__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
  }
  body.has-map-shell .parcel-drawer .ig-metric__lbl {
    font-size: 11px;
    font-weight: 800;
    color: #5d7064;
    text-transform: uppercase;
    letter-spacing: 0.06em;
  }
  body.has-map-shell .parcel-drawer .ig-metric__val {
    font-size: 14px;
    font-weight: 700;
    color: #0c2719;
    line-height: 1.3;
    overflow-wrap: anywhere;
  }

  /* ============== 4. AKORDEON (PV, Ryzyka, Okolica, Źródła, Inne) ============== */
  body.has-map-shell .parcel-drawer details {
    background: #ffffff;
    border: 1px solid rgba(8,28,18,0.06);
    border-radius: 16px;
    box-shadow: 0 4px 14px rgba(8,28,18,0.04);
    margin-bottom: 10px;
    padding: 0;
  }
  body.has-map-shell .parcel-drawer details > summary {
    padding: 14px 16px;
    border-radius: 16px;
    font-weight: 800;
    color: #0c2719;
    list-style: none;
  }
  body.has-map-shell .parcel-drawer details[open] > summary {
    border-bottom: 1px solid rgba(8,28,18,0.06);
    border-radius: 16px 16px 0 0;
  }

  /* Stary główny kafelek (ig-main-card) zostaje wizualnie przezroczysty
     żeby karty .ig-metric wybijały się jako osobne moduły (makieta) */
  body.has-map-shell .parcel-drawer .ig-main-card {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
  }
}

/* ============================================================
   FIX (v6.12.1): podpowiedzi adresów wychodziły poza prawą krawędź
   ekranu na telefonie. Przyczyna: v68-progressive.css ustawia
   .search-suggest{min-width:calc(100vw-32px)} zakładając, że dropdown
   jest pełnej szerokości viewportu — ale jest zakotwiczony w wąskim
   .search-wrap (~183px, flankowanym zakładkami i lupą), więc 368px
   min-width wypychało go w prawo (155px + 368px = 523px > 400px).

   Rozwiązanie: na mobile/tablecie (≤720px, tam gdzie bije reguła v68)
   zakotwicz dropdown w całym formularzu wyszukiwania (.top-search),
   nie w wąskim .search-wrap → pełna szerokość paska, mieści się w ekranie.
   ============================================================ */
@media (max-width: 720px) {
  body.has-map-shell .top-search.compact-search { position: relative !important; }
  body.has-map-shell .top-search.compact-search .search-wrap { position: static !important; }
  body.has-map-shell #searchSuggest,
  body.has-map-shell .search-suggest {
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    top: calc(100% + 8px) !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 100% !important;
  }
}

/* ============================================================
   INFOGRUNT zoom-controls v6.30 — wyraźne, duże przyciski +/- na MAPIE (mobile).
   User lubi +/-; pinch bywał zbyt czuły, więc to pewna alternatywa. Pokazujemy
   na widoku mapy (gdy raport NIE jest otwarty — wtedy mapa jest i tak zakryta).
   Ten plik ładuje się ostatni → wygrywa z rozproszonymi regułami finalize-2026.
   ============================================================ */
@media (max-width: 720px) {
  
  body.has-map-shell .zoom-controls button {
    width: 56px !important; height: 56px !important;
    font-size: 30px !important; font-weight: 900 !important;
    border-radius: 16px !important;
    background: rgba(255,255,255,0.97) !important; color: #103221 !important;
    border: 2px solid #fff !important;
    box-shadow: 0 6px 20px rgba(0,0,0,0.24) !important;
    line-height: 1 !important;
    display: flex !important; align-items: center !important; justify-content: center !important;
  }
  body.has-map-shell .zoom-controls button:active { transform: scale(0.93); background: #a7ff45 !important; }
}

/* v6.31.8: POPRZEDNIE reguły (6.31.6/.7) PRZEGRYWAŁY specyficznością z finalize-2026/hardfix
   (tagline: ich selektor 0,5,2 vs mój 0,3,0; guziki 0,3,1 = remis, ale i tak się nie wyrównywały).
   Tu UŻYWAM wyższej specyficzności (+.map-frame dla guzików → 0,4,1; +[data-i18n] dla tagline → 0,6,2)
   w OSTATNIM ładowanym pliku → wygrywają na pewno. NIE ruszam pozycji wrapa (tylko rozmiar+wyrównanie). */
@media (max-width: 480px) {
  /* oba guziki = IDENTYCZNE kwadraty, wyśrodkowane, na jednej linii */
  body.has-map-shell .map-frame .map-toggle-wrap {
    display: flex !important; flex-direction: row !important;
    align-items: center !important; gap: 10px !important;
  }
  body.has-map-shell .map-frame .map-toggle-wrap > .layer-toggle-btn,
  body.has-map-shell .map-frame .map-toggle-wrap > .cadastre-tog {
    align-self: center !important;
    width: 52px !important; height: 52px !important;
    min-width: 52px !important; min-height: 52px !important; max-width: 52px !important;
    padding: 0 !important; margin: 0 !important;
    display: inline-flex !important; align-items: center !important; justify-content: center !important;
    border-radius: 16px !important; box-sizing: border-box !important; flex: 0 0 auto !important;
  }
  body.has-map-shell .map-frame .map-toggle-wrap .layer-label { display: none !important; }
  body.has-map-shell .map-frame .map-toggle-wrap .layer-icon { font-size: 22px !important; line-height: 1 !important; }

  /* tagline w logo — selektor 0,6,2 (z [data-i18n]) bije 0,5,2 z finalize-2026/hardfix */
  body.has-map-shell .topbar.compact-topbar .brand .brand-text > span[data-i18n="tagline"] {
    display: block !important;
    font-size: 10.5px !important; line-height: 1.12 !important;
    opacity: .85 !important; white-space: nowrap !important; color: #f4ffe9 !important;
  }
  body.has-map-shell .topbar.compact-topbar .brand .brand-text {
    display: flex !important; flex-direction: column !important; justify-content: center !important;
  }

  /* v6.31.8: MAPA NA CAŁY EKRAN — chowamy dolny biały pasek `.bottom-ad-bar` (fixed, bottom:0,
     białe tło). Pusty, bo AdSense jeszcze nieaktywny → był tylko białą belką zasłaniającą mapę.
     Gdy reklamy ruszą, usuń tę regułę (albo zostaw mapę pełnoekranową i daj reklamę gdzie indziej). */
  body.has-map-shell .bottom-ad-bar { display: none !important; }
}

/* ============================================================
   v6.32 — OSTATECZNE pozycjonowanie kontrolek mapy (MOBILE).
   User (06.06): "+/- ma byc lewy dol, satelita i obrys prawy dol".
   PROBLEM: pozycje byly rozsiane po audit-2026 + finalize-2026 (4 reguly,
   breakpointy 767/768/860px) -> zoom raz lewo raz prawo, toggle raz gora raz dol.
   ROZWIAZANIE: jeden blok, selektor `.map-frame` + podwojona klasa = (0,4,1),
   bije najmocniejsza regule finalize (0,4,1) bo ten plik laduje sie OSTATNI.
   Pozycja NIE zalezy od :has() (kompatybilnosc). Ad-active = (0,5,1).
   ============================================================ */
@media (max-width: 768px) {
  
  
  
}

/* ============================================================
   v6.32.1 — EKRAN ŁADOWANIA BEZ SCROLLA (desktop ≥761px).
   User (06.06): "to ladowanie chce zeby bylo bez scrollowania".
   PROBLEM: blok loader-fill (flex, wypełnia panel) jest TYLKO @max-width:760px
   (mobile). Na szerokim oknie loader brał style bazowe → 6 kroków przepełniało
   panel raportu → pionowy pasek scrolla. Bez sensu na ekranie ładowania.
   FIX: gdy w panelu jest `.loading-card.v34`, panel + .report-content NIE scrollują,
   a 6 kroków wypełnia wysokość przez flex (flex:1 1 0). Scope `:has(.loading-card)`
   → dotyczy WYŁĄCZNIE ładowania; gotowy raport scrolluje normalnie jak dotąd.
   Ten plik laduje sie ostatni → wygrywa.
   ============================================================ */
@media (min-width: 761px) {
  /* v6.32.10 FIX: poprzednia wersja (flex:1 1 0 + min-height:0 + overflow:hidden) ŚCISKAŁA
     kroki poniżej ich treści → wiersze NAKŁADAŁY się na siebie (user: „zepsute ładowanie").
     Teraz kroki mają NATURALNĄ wysokość (flex:0 0 auto → nigdy nie kurczą się poniżej treści),
     a panel dostaje łagodny scroll, gdyby 6 kroków nie zmieściło się w wysokości (zamiast squisha). */
  body.has-map-shell .report-content:has(.loading-card.v34) {
    overflow-y: auto !important;
  }
  body.has-map-shell .report-content .loading-card.v34 .v34-steps {
    display: flex !important; flex-direction: column !important; gap: 7px !important;
  }
  body.has-map-shell .report-content .loading-card.v34 .v34-steps li {
    flex: 0 0 auto !important; min-height: 0 !important;
  }
}

/* ============================================================
   v6.32.13 — DESKTOP (>=861px): panel raportu/ladowania ZSUNIETY pod
   pasek wyszukiwania. finalize-v610 dawalo inset:88px, a .topbar konczy
   sie ~96px -> panel + przycisk X wchodzily pod szukajke (user: "daj w dol").
   #detailsPanel (id) bije .right-panel.parcel-drawer z finalize-v610.
   Zmieniamy TYLKO pion (top/bottom/max-height) — szerokosc i wysrodkowanie
   poziome (margin:auto + left/right) zostaja nietkniete.
   ============================================================ */
@media (min-width: 861px) {
  body.has-map-shell #detailsPanel.parcel-drawer {
    top: 116px !important;
    bottom: auto !important;
    max-height: calc(100dvh - 140px) !important;
  }
  /* X w czystym, symetrycznym rogu panelu (juz nie przy krawedzi szukajki) */
  body.has-map-shell #detailsPanel .drawer-close {
    top: 16px !important;
    right: 16px !important;
  }
}

/* ============================================================
   2026-06-22 — DESKTOP (>=861px): KONIEC „uciekania kafelkow w dol".
   Panel byl height:max-content kotwiczony u gory (top:116, bottom:auto) -> rosl
   W DOL skokowo: karta ladowania miala wysokosc TRESCI (~620px), a gotowy raport
   bil w max-height (~800px). Przy zakonczeniu (wszystkie zielone ptaszki) panel
   skakal ~180px w dol + tresc przeskakiwala (zglosznie usera). Dodatkowo na
   nizszych laptopach karta ladowania nie miescila sie -> 6. krok + kafelek kawy
   byly OBCINANE.
   FIX: w fazie LADOWANIA panel wypelnia te sama ramke co gotowy raport
   (top:116 .. bottom:24  ==  dawne max-height) -> wysokosc sie NIE zmienia przy
   swapie ladowanie->raport. Karta wypelnia ramke (kafelki rozkladaja sie rowno),
   wiec brak pustej luki na duzych ekranach i brak obciecia na laptopach.
   Krotkie powiadomienia (podglad dzialki / blad) NIE maja .loading-card -> ich
   nie dotyczy (panel zostaje dopasowany do tresci). Mobile ma wlasna regule.
   ============================================================ */
@media (min-width: 861px) {
  body.has-map-shell #detailsPanel.parcel-drawer:has(.loading-card.v34) {
    bottom: 24px !important;
    height: auto !important;
    max-height: none !important;
  }
  body.has-map-shell #detailsPanel.parcel-drawer:has(.loading-card.v34) > #reportContent {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: hidden !important;
  }
  body.has-map-shell #detailsPanel .report-content .loading-card.v34 {
    flex: 1 1 auto !important;
    display: flex !important;
    flex-direction: column !important;
  }
  body.has-map-shell #detailsPanel .report-content .loading-card.v34 .v34-steps {
    flex: 1 1 auto !important;
  }
  body.has-map-shell #detailsPanel .report-content .loading-card.v34 .step-tile {
    flex: 1 1 0 !important;
    min-height: 0 !important;
  }
}
