/* Rynek (ekran /v5/trends-v6) - style wyniesione z templates/v5/trends_v6.html 2026-09-23.
 *
 * Po co: w szablonie siedzialo 1393 linii CSS, wiec przegladarka nie mogla ich zapamietac
 * miedzy wejsciami, a kazda zmiana koloru wymagala szukania w srodku HTML-a.
 * Etap 1 planu z docs/DLUG_TECHNICZNY_2026_09_23.md. Tresc regul przeniesiona znak w znak.
 *
 * NIE wyniesiono jednego bloku: tego z `{% if embed_okolica %}`, ktory chowa cala strone
 * poza profilem okolicy. Tutaj zgasilby Rynek dla wszystkich, wiec zostal w szablonie.
 */

/* Typografia, tokeny EAA (Janusz #3 „inwestuj"): rodziny przez var(); rozmiary = ALIAS na kanon
   --text-* z v6-dark.css (JEDNA skala na calym v6, koniec „rozjazdu czcionek"). Kroki px-identyczne
   z dawnymi rem (baza 16px) -> zero regresji. --fs-* zostaje jako fasada dla setek uzyc w tym pliku. */
:root{
  --font-sans:'Outfit',sans-serif;
  --font-mono:var(--font-mono);
  /* Zieleń kanon (DESIGN.md sek.3), jedna paleta zamiast >=6 odcieni (R4 audyt; tokens.css nie ładowany na v6) */
  --green-primary:#00a551; --green-deep:#006634; --green-darker:#13352c;
  /* Skala typografii = alias na kanon --text-* (v6-dark.css); 8 krokow, JEDNO zrodlo prawdy (R4) */
  --fs-xs:var(--text-xs); --fs-sm:var(--text-sm); --fs-base:var(--text-base); --fs-md:var(--text-md);
  --fs-lg:var(--text-lg); --fs-xl:var(--text-xl); --fs-2xl:var(--text-2xl); --fs-3xl:var(--text-3xl);
}
/* Reorder sekcji Przeglądu (panel agentów 2026-06-30): flex-column + order na blokach.
   comparables(1)→podsumowanie(2)→ceny(3)→płynność(4)→trend(5)→konkurencja(6)→rozbicie(7)→Twoja oferta(8). */
/* RCN = NIEBIESKI wszędzie (Nikodem 2026-09-18: „żeby rozróżniać od ofert”); oferty zostają zielone. Wykresy czytają te
   zmienne z computed-style (Chart.js nie rozumie var()). Trzy stany motywu: jawny dark, jawny light, systemowy. */
:root{ --mr-rcn:#2563eb; --mr-rcn-fill:rgba(37,99,235,.10); --mr-rcn-soft:rgba(37,99,235,.38); }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --mr-rcn:#6ea8fe; --mr-rcn-fill:rgba(110,168,254,.14); --mr-rcn-soft:rgba(110,168,254,.45); } }
:root[data-theme="dark"]{ --mr-rcn:#6ea8fe; --mr-rcn-fill:rgba(110,168,254,.14); --mr-rcn-soft:rgba(110,168,254,.45); }
.mr-flow{ display:flex; flex-direction:column; min-width:0; }
.mr-flow > *{ min-width:0; max-width:100%; }  /* flex-column: pozwól dzieciom (tabele/wykresy) kurczyć się, anty-overflow mobile */
/* P0-1 mobile overflow (~598px): przerwij flex min-content. .v6-content (flex-column w base_v6)
   i .mr-wrap mają domyślnie min-width:auto → szerokie tabele/canvas rozpychają CAŁĄ stronę.
   min-width:0 pozwala dziecku się kurczyć; szerokie elementy klipujemy/scrollujemy WEWNĄTRZ. */
.v6-content{ min-width:0; }
.mr-wrap{ max-width:1240px; margin:0 auto; padding:8px 0 140px; min-width:0; }
.mr-wrap canvas{ max-width:100%!important; }
.mono{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
.mr-h1{ font-family:var(--font-sans); font-size:var(--text-xl); line-height:1.2; font-weight:700; letter-spacing:-.02em; color:var(--ink); }
@media (min-width:768px){ .mr-h1{ font-size:var(--text-2xl); } }
.mr-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap; }
.mr-sub{ font-size:var(--fs-base); line-height:1.5; color:var(--ink-3); margin-top:6px; }
.mr-city{ display:inline-flex; flex-wrap:wrap; gap:6px; }
.mr-btn--chip,.mr-city a,.mr-presets a,.mr-heat__tw{ font-size:var(--fs-sm); font-weight:600; text-decoration:none; border:1px solid var(--line); }
.mr-city a{ font-family:var(--font-sans); padding:7px 13px; border-radius:var(--r-full,999px); color:var(--ink-3); }
.mr-city a.on{ background:var(--green-deep); color:#fff; border-color:var(--green-deep); }
/* push briefing */
.mr-brief{ font-size:var(--fs-lg); line-height:1.4; color:var(--ink); margin:22px 0 0; font-weight:500; }
.mr-brief b{ font-weight:700; }
/* ── Radar v2: filtr dzielnicy + feed alertów ── */
.mr-radarbar{ display:flex; align-items:center; gap:10px; margin-top:18px; }
.mr-radarbar__lbl{ font-size:var(--fs-sm); font-weight:600; color:var(--ink-3); }
.mr-radarbar select{ font-family:var(--font-sans); font-size:var(--fs-sm); padding:8px 12px; border-radius:var(--r-md,10px); border:1px solid var(--line); background:var(--paper); color:var(--ink); min-height:40px; }
.mr-feed{ margin-top:18px; display:flex; flex-direction:column; gap:10px; }
.mr-alert{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:16px; padding:14px 16px; border:1px solid var(--line); border-left-width:3px; border-radius:var(--r-lg,14px); background:var(--paper-2); }
[data-theme="dark"] .mr-alert{ background:var(--v6-card); }
.mr-alert--ok{ border-left-color:var(--green-deep); }
.mr-alert--warn{ border-left-color:#e0a33a; }
.mr-alert--risk{ border-left-color:var(--v6-urgent, #b0433a); }
.mr-alert--neutral{ border-left-color:#94a0ad; }
.mr-alert__ic{ width:11px; height:11px; border-radius:50%; flex:none; align-self:start; margin-top:6px; background:#94a0ad; }
.mr-alert--ok .mr-alert__ic{ background:var(--green-primary); }
.mr-alert--warn .mr-alert__ic{ background:#e0a33a; }
.mr-alert--risk .mr-alert__ic{ background:var(--v6-urgent, #b0433a); }
.mr-alert__body{ min-width:0; }
.mr-alert__top{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.mr-alert__seg{ font-family:var(--font-sans); font-weight:700; font-size:var(--fs-base); color:var(--ink); }
.mr-alert__kind{ font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); text-transform:uppercase; letter-spacing:.03em; }
.mr-alert__metric{ font-weight:700; font-size:var(--fs-base); margin-left:auto; }
.mr-alert__txt{ font-size:var(--fs-sm); line-height:1.5; color:var(--ink-2); margin:5px 0 0; }
.mr-alert__foot{ font-size:var(--fs-sm); color:var(--ink-3); margin-top:6px; }
.mr-alert__foot b{ color:var(--ink-2); font-family:var(--font-mono); }
.mr-btn,.mr-alert__cta,.mr-bmbtn,.mr-addr button,.mr-jumpoffer{ font-family:var(--font-sans); font-weight:600; background:var(--green-deep); color:#fff; border:0; cursor:pointer; text-decoration:none; }
.mr-alert__cta{ flex:none; display:inline-flex; align-items:center; min-height:44px; padding:0 16px; border-radius:var(--r-md,10px); font-size:var(--fs-sm); white-space:nowrap; }
.mr-alert__cta:hover{ background:var(--green-deep); }
.mr-alert__cta:focus-visible,.mr-bmbtn:focus-visible,.mr-addr button:focus-visible,.mr-bench__btn:focus-visible,.mr-arg__btn:focus-visible,.mr-range button:focus-visible,.mr-city a:focus-visible,.mr-presets a:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.gap--risk{ color:#b91c1c; } .gap--warn{ color:#b45309; } .gap--ok{ color:var(--green-deep,var(--green-deep)); } .gap--neutral{ color:var(--ink-2); }
.mr-empty{ font-size:var(--fs-sm); color:var(--ink-3); }
@media (max-width:720px){
  .mr-alert{ grid-template-columns:auto 1fr; }
  .mr-alert__cta{ grid-column:1 / -1; justify-content:center; }
}
@media (prefers-reduced-motion:reduce){ *{ transition:none!important; } }
/* tryby + badge */
.mr-modes{ display:inline-flex; gap:0; background:transparent; border-radius:0; padding:0; border-bottom:2px solid var(--line); }
[data-theme="dark"] .mr-modes{ background:transparent; }
.mr-modes a{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:600; padding:8px 16px 9px; border-radius:0; border-bottom:2.5px solid transparent; margin-bottom:-2px; text-decoration:none; color:var(--ink-3); transition:color 120ms,border-color 120ms; }
.mr-modes a:hover{ color:var(--ink); }
.mr-modes a.on{ background:transparent; color:var(--green-deep); border-bottom-color:var(--green-deep); font-weight:700; }
[data-theme="dark"] .mr-modes a.on{ color:#3ddc8a; border-bottom-color:#3ddc8a; }
.mr-modes a:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-live{ display:inline-flex; align-items:center; gap:6px; font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); }
.mr-demo{ font-size:var(--fs-xs); font-weight:600; color:#b45309; background:#fef3c7; padding:4px 10px; border-radius:999px; }
[data-theme="dark"] .mr-demo{ background:#78350f33; }
/* P4: badge niskiej próby (buckety n < 30) */
.mr-lowsample{ display:inline-block; font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); margin-left:6px; vertical-align:middle; font-style:italic; }
/* P3: gdy luka >25%, takeaway ostrzega (amber), nie „zielony triumf" */
.mr-takeaway--warn{ border-left-color:#b45309 !important; }
.mr-takeaway--warn .mr-takeaway__eyebrow{ color:#b45309 !important; }
[data-theme="dark"] .mr-takeaway--warn .mr-takeaway__eyebrow{ color:#e0a33a !important; }
/* Ton „risk" nie mieszka juz w .mr-takeaway: werdykt o segmencie przeniesiony 2026-09-21 do bloku
   „Wnioski z analizy" (.mr-wn--risk / .mr-wn--warn nizej). Tu zostaje sam --warn, uzywany przez blok
   „Twoja oferta vs realne transakcje". */
/* P2: blok dowodowy segmentu (Benchmark przed podaniem ceny) */
.mr-spv{ border:none; border-left:3px solid var(--green-deep); border-radius:0 10px 10px 0; padding:16px 18px 16px 16px; margin:16px 0 8px; background:var(--paper-2); }
[data-theme="dark"] .mr-spv{ background:rgba(0,165,81,.05); }
.mr-spv__h{ font-size:var(--fs-sm); color:var(--ink-2); margin-bottom:12px; }
.mr-spv__h b{ color:var(--ink); }
.mr-spv__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:12px; }
.mr-spv__v{ font-family:var(--font-mono); font-size:var(--fs-lg); font-weight:700; color:var(--ink); }
.mr-spv__v.gap--risk{ color:#b91c1c; } .mr-spv__v.gap--warn{ color:#b45309; } .mr-spv__v.gap--ok{ color:var(--green-deep,var(--green-deep)); }
.mr-spv__l{ font-size:var(--fs-xs); color:var(--ink-3); margin-top:3px; }
.mr-spv__note{ font-size:var(--fs-sm); color:var(--ink-3); margin-top:12px; line-height:1.5; }
/* Comparables, realne transakcje (akty) + podobne oferty (dowód, nie lewitacja) */
.mr-cmp{ margin-top:24px; }
/* Kolumna porównywalnych = zaokrąglona karta jak mr-chartcard (Nikodem 2026-07-27, koniec kwadratów) */
.mr-cmp__col{ border:none; box-shadow:var(--sh-sm, 0 1px 2px rgba(0,102,52,.06)); border-radius:var(--r-lg,14px); background:var(--paper); padding:16px 18px; margin-top:14px; }
[data-theme="dark"] .mr-cmp__col{ background:var(--v6-card); }
.mr-cmp__h{ font-family:var(--font-sans); font-size:var(--fs-base); font-weight:700; color:var(--ink); display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.mr-cmp__sub{ font-size:var(--fs-xs); font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-3); }
.mr-cmp__tbl{ width:100%; border-collapse:collapse; margin-top:10px; font-size:var(--fs-sm); }
.mr-cmp__tbl th{ text-align:left; font-size:var(--fs-xs); font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-3); padding:4px 8px 6px 0; border-bottom:1px solid var(--line); }
.mr-cmp__tbl td{ padding:7px 8px 7px 0; border-bottom:1px solid var(--line); color:var(--ink-2); vertical-align:top; }
.mr-cmp__tbl tr:last-child td{ border-bottom:0; }
.mr-cmp__num{ font-variant-numeric:tabular-nums; white-space:nowrap; color:var(--ink); font-weight:600; }
.mr-cmp__addr{ color:var(--ink); font-weight:600; }
.mr-cmp__link{ color:var(--green-deep); text-decoration:none; font-weight:600; white-space:nowrap; display:inline-flex; align-items:center; min-height:32px; padding:2px 6px; margin:-2px -6px; }
.mr-cmp__link:hover{ text-decoration:underline; }
.mr-cmp details{ margin-top:8px; }
.mr-cmp summary{ cursor:pointer; font-size:var(--fs-sm); font-weight:600; color:var(--green-deep); padding:6px 0; list-style:none; min-height:32px; display:inline-flex; align-items:center; }
.mr-cmp summary::-webkit-details-marker{ display:none; }
.mr-cmp summary::before{ content:'▾ '; }
.mr-cmp details[open] summary::before{ content:'▴ '; }
.mr-cmp__flag{ display:inline-block; margin-left:6px; padding:1px 7px; border-radius:999px; font-size:var(--fs-xs); font-weight:700; letter-spacing:.03em; text-transform:uppercase; color:#b45309; background:#fef3c7; border:1px solid #f0c674; white-space:nowrap; }
[data-theme="dark"] .mr-cmp__flag{ background:#3a2c08; color:#f5c869; border-color:#6b5210; }
.mr-cmp__empty{ font-size:var(--fs-sm); color:var(--ink-3); margin-top:8px; line-height:1.5; }
/* Rozwijanie porównywalnych: JEDNA tabela, wiersze 6+ ukryte klasą (kolumny liczone raz → brak rozjazdu). */
.mr-cmp__more{ display:none; }
.mr-cmp__col.is-open .mr-cmp__more{ display:table-row; }
/* Przycisk „Rozwiń/Zwiń" siedzi WEWNĄTRZ tabeli, zaraz po 5. wierszu, zostaje w miejscu po rozwinięciu. */
.mr-cmp__togglerow td{ padding:6px 0 2px; border-bottom:0; }
.mr-cmp__togglerow td::before{ content:none; }
.mr-cmp__morebtn{ appearance:none; background:none; border:0; cursor:pointer; font-family:inherit; font-size:var(--fs-sm); font-weight:600; color:var(--green-deep); padding:2px 0; min-height:32px; display:inline-flex; align-items:center; gap:5px; }
.mr-cmp__morebtn::before{ content:'▾'; font-size:.85em; }
.mr-cmp__col.is-open .mr-cmp__morebtn::before{ content:'▴'; }
.mr-cmp__morebtn:hover{ text-decoration:underline; }
.mr-cmp__morebtn:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; border-radius:2px; }
[data-theme="dark"] .mr-cmp__morebtn{ color:var(--green-primary,#3ddc8a); }
/* (mobilne rozwijanie obsługuje blok „ZWARTA KARTA" niżej: `display:block` zabiłoby tam flex) */
.mr-cmp__note{ font-size:var(--fs-xs); color:var(--ink-3); margin-top:10px; line-height:1.5; }
/* Sekcja RCN (2026-09-18): transakcje na pierwszym planie, oferty niżej i lżej. Te same tokeny i promienie co reszta. */
.mr-rcn__lead{ display:grid; grid-template-columns:minmax(230px,1.1fr) 2fr; gap:14px; margin-top:6px; }
.mr-rcn__main{ border:1px solid var(--line); border-radius:16px; padding:20px 24px; background:var(--paper); display:flex; flex-direction:column; justify-content:center; gap:4px; }
[data-theme="dark"] .mr-rcn__main{ background:var(--v6-card); }
.mr-rcn__num{ font-family:var(--font-mono); font-size:var(--fs-3xl, 2.25rem); font-weight:700; color:var(--ink); line-height:1.1; letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
.mr-rcn__unit{ font-size:var(--fs-base); color:var(--ink-3); font-weight:600; margin-left:6px; }
.mr-rcn__side{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; }
.mr-rcn__side .mr-metric__v, .mr-sumbar--rcn .mr-metric__v{ font-size:var(--fs-xl); overflow-wrap:anywhere; }
/* liczby (kafle, hero, panel) zostają w kolorze tekstu; niebieski RCN tylko na wykresach i legendach (Nikodem 2026-09-18) */
.mr-sumbar--rcn .mr-metric--gap .mr-metric__v{ color:var(--ink); }
.mr-rcn__legend{ display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:10px; font-size:var(--fs-xs); color:var(--ink-3); }
.mr-rcn__legend i{ display:inline-block; width:14px; border-top:2px dashed currentColor; vertical-align:middle; margin-right:5px; }
.mr-rcn__legend i.solid{ border-top-style:solid; }
.mr-rcn__legend b{ color:var(--ink); font-weight:600; }
.mr-cmp__card__vs{ font-family:var(--font-mono); font-size:var(--fs-xs); font-weight:700; color:var(--green-deep); margin-left:8px; white-space:nowrap; }
.mr-cmp__card__vs.is-up{ color:#b45309; }
.mr-ladder--pos{ margin-top:34px; }
.mr-ladder__mark--rcn{ background:var(--mr-rcn); }
.mr-ladder__pin{ position:absolute; top:-30px; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:2px; font-size:var(--fs-xs); font-weight:700; color:#b45309; white-space:nowrap; }
.mr-ladder__pin i{ display:block; width:14px; height:14px; border-radius:50%; background:#b45309; border:2px solid var(--paper); box-shadow:0 0 0 1px #b45309; }
.mr-ladder__labels--pos span:first-child, .mr-ladder__labels--pos span:last-child{ font-weight:600; color:var(--ink-3); }
.mr-ladder__labels--pos{ position:relative; display:block; height:40px; margin-top:12px; }
.mr-ladder__labels--pos .mr-ladder__at{ position:absolute; top:0; transform:translateX(-50%); text-align:center; white-space:nowrap; }
.mr-ladder__labels--pos .mr-ladder__edge{ position:absolute; top:0; }
/* Etykieta, ktora nachodzi na sasiadke, schodzi do drugiego rzedu (Nikodem 2026-09-23:
   przy ciasnym rozkladzie 'mediana ofert' i 'P75' zlewaly sie w nieczytelna plame).
   Kreska laczy ja z osia, zeby bylo widac, do ktorego punktu nalezy. */
.mr-ladder__labels--pos{ height:auto; min-height:40px; padding-bottom:2px; }
.mr-ladder__labels--pos .mr-ladder__at--nizej{ top:26px; }
.mr-ladder__labels--pos .mr-ladder__at--nizej::before{ content:''; position:absolute; left:50%;
  top:-12px; width:1px; height:10px; background:var(--line); }
@media (max-width:640px){ .mr-ladder__labels--pos .mr-ladder__edge, .mr-ladder__pin span{ display:none; } .mr-ladder--pos{ margin-top:18px; } .mr-ladder__pin{ top:-6px; } }
.mr-rcn__insight{ font-size:var(--fs-base); line-height:1.55; color:var(--ink-2); margin:12px 0 0; }
.mr-rcn__insight b{ color:var(--ink); }
.mr-cmp__sort{ margin-left:auto; }
.mr-cmp__row{ cursor:pointer; }
.mr-cmp__row:hover td{ background:var(--paper-2); }
.mr-cmp__row:focus-visible{ outline:2px solid var(--green-deep); outline-offset:-2px; }
.mr-cmp__chev{ display:inline-block; width:12px; color:var(--ink-3); font-size:.85em; transition:transform .15s; }
.mr-cmp__row.is-open .mr-cmp__chev{ transform:rotate(90deg); }
.mr-cmp__tbl tr[hidden]{ display:none !important; }
.mr-cmp__detail td{ background:var(--paper-2); color:var(--ink-2); font-size:var(--fs-sm); padding:10px 12px; }
.mr-cmp__dl{ display:flex; flex-wrap:wrap; gap:6px 22px; }
.mr-cmp__dl span{ color:var(--ink-3); }
.mr-cmp__dl b{ color:var(--ink); font-weight:600; margin-left:4px; }
.mr-cmp__togglebar{ margin-top:6px; }
/* oferty (ceny wywoławcze), niższa waga wizualna: tło strony zamiast karty, bez cienia */
.mr-cmp__col--soft{ background:var(--paper-2); box-shadow:none; }
[data-theme="dark"] .mr-cmp__col--soft{ background:var(--v6-card-2, var(--v6-card)); }
.mr-cmp__cards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:10px; margin-top:12px; }
.mr-cmp__card{ display:flex; flex-direction:column; gap:4px; border:1px solid var(--line); border-radius:var(--r-md,12px); padding:12px 14px; background:var(--paper); font-size:var(--fs-sm); min-width:0; }
[data-theme="dark"] .mr-cmp__card{ background:var(--v6-card); }
.mr-cmp__card.mr-cmp__more{ display:none; }
.mr-cmp__col.is-open .mr-cmp__card.mr-cmp__more{ display:flex; }
.mr-cmp__card__addr{ font-weight:600; color:var(--ink); overflow-wrap:anywhere; }
.mr-cmp__card__meta{ color:var(--ink-3); font-size:var(--fs-xs); }
.mr-cmp__card__price{ font-family:var(--font-mono); font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }
.mr-cmp__card__foot{ display:flex; justify-content:space-between; align-items:center; gap:8px; margin-top:auto; color:var(--ink-3); font-size:var(--fs-xs); }
.mr-sumbar--soft .mr-metric{ background:transparent; border:1px solid var(--line); }
.mr-sumbar--soft .mr-metric__v{ font-size:var(--fs-xl); }
/* Dolna część Rynku (makieta 2026-09-18): nagłówek z dopiskiem po prawej, KPI pod tytułem trendu, rozbicie cen z zakładkami + panel boczny,
   podsumowanie jako karty, „Jak to liczymy" zwijane. Te same tokeny, promienie i klasy co reszta. */
.mr-anlbl--row{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap; }
/* Przegląd rynku: rząd 1 = liczby na linii (bez kart), rząd 2 = kafle z ramką (widoczne też w ciemnym motywie). */
.mr-pulse--plain{ margin-top:18px; }
.mr-pulse--plain .mr-metric{ background:transparent; border:0; border-top:1px solid var(--line); border-radius:0; padding:14px 6px 8px; }
.mr-pulse--cards{ margin-top:6px; }
.mr-pulse--cards .mr-metric{ border:1px solid var(--line); }
[data-theme="dark"] .mr-pulse--cards .mr-metric{ background:var(--v6-card-2, var(--v6-card)); }
.mr-anlbl__aside{ text-transform:none; letter-spacing:0; font-weight:500; color:var(--ink-3); }
.mr-anlbl__aside b{ font-family:var(--font-mono); color:var(--green-deep); font-weight:700; }
.mr-chartcard__kpi{ flex:1 1 100%; order:3; font-size:var(--fs-xs); font-weight:500; color:var(--ink-3); white-space:normal; }
.mr-chartcard__kpi b{ font-family:var(--font-mono); color:var(--ink); font-weight:700; }
.mr-chartcard__h{ flex-wrap:wrap; }
.mr-breakdown{ display:grid; grid-template-columns:minmax(0,2fr) minmax(220px,1fr); gap:20px; align-items:start; }
.mr-breakdown__chart .mr-chartcard__h{ align-items:center; }
.mr-breakdown__stack{ display:grid; }
.mr-breakdown__pane{ grid-area:1 / 1; min-width:0; }
.mr-breakdown__pane .mr-canvaswrap{ height:320px; }
.mr-breakdown__pane:not(.on){ visibility:hidden; pointer-events:none; }
.mr-breakdown__side{ border:none; box-shadow:var(--sh-sm, 0 1px 2px rgba(0,102,52,.06)); border-radius:var(--r-lg,14px); background:var(--paper); padding:6px 20px; }
.mr-breakdown__fact{ display:flex; flex-direction:column; gap:3px; padding:14px 0; border-bottom:1px solid var(--line); }
.mr-breakdown__fact:last-child{ border-bottom:0; }
.mr-breakdown__fact span{ font-size:var(--fs-xs); font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--green-deep); }
.mr-breakdown__fact b{ font-family:var(--font-mono); font-size:var(--fs-lg); font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }
.mr-breakdown__fact small{ font-size:var(--fs-xs); color:var(--ink-3); }
@media (max-width:920px){ .mr-breakdown{ grid-template-columns:1fr; } }
/* 3 kolumny na sztywno (Nikodem 2026-09-21): `auto-fit` ukladal 5 kafli w brzydkie 4+1,
   bo liczba kolumn zalezala od szerokosci okna, nie od tresci. */
.mr-synth--cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; background:transparent; overflow:visible; }
@media (max-width:1100px){ .mr-synth--cards{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:680px){ .mr-synth--cards{ grid-template-columns:1fr; } }
.mr-synth--cards .mr-synth__row{ display:flex; flex-direction:column; gap:6px; padding:14px 16px; border:1px solid var(--line); border-radius:var(--r-lg,14px); background:var(--paper); }
[data-theme="dark"] .mr-synth--cards .mr-synth__row{ background:var(--v6-card); }
.mr-synth--cards .mr-synth__h{ font-size:var(--fs-xs); letter-spacing:.06em; text-transform:uppercase; }
.mr-howto--fold > summary{ cursor:pointer; list-style:none; padding:18px 22px 10px; margin:0; display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.mr-howto--fold > summary::-webkit-details-marker{ display:none; }
.mr-howto--fold > summary::after{ content:'+'; font-family:var(--font-mono); font-size:var(--fs-base); color:var(--ink-3); }
.mr-howto--fold[open] > summary::after{ content:'−'; }
.mr-howto--fold > summary:focus-visible{ outline:2px solid var(--green-deep); outline-offset:-2px; border-radius:var(--r-lg,14px); }
@media (max-width:900px){ .mr-rcn__lead{ grid-template-columns:1fr; } }
@media (max-width:760px){
  .mr-cmp__h .mr-cmp__sort{ margin-left:0; flex:1 1 100%; }
  .mr-cmp__detail td{ flex:1 1 100%; padding:8px 10px; }
  .mr-cmp__detail td::before{ content:none; }
}
/* MOBILE: wiersz tabeli → ZWARTA KARTA (2026-08-04). Poprzednia wersja dawała `display:block`
   każdej komórce, więc jedna transakcja zajmowała 7-8 linijek, a cała zakładka 15 971 px
   = 18,9 ekranu przewijania (pomiar Playwright, 390×844). Teraz wiersz jest flexem:
   adres to nagłówek karty (pełna szerokość, bez etykiety), fakty płyną w jednej linii,
   cena idzie osobno i jest wyróżniona. Etykiety ZOSTAJĄ: „2" przy pokojach i piętrze bez
   podpisu nic nie znaczy, a czytnik ekranu straciłby nagłówki razem z ukrytym `thead`. */
@media (max-width:760px){
  .mr-cmp__tbl, .mr-cmp__tbl tbody{ display:block; width:100%; }
  .mr-cmp__tbl thead{ display:none; }
  .mr-cmp__tbl tr{ display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 12px; padding:10px 0; border-bottom:1px solid var(--line); }
  .mr-cmp__tbl td{ display:inline-flex; align-items:baseline; gap:5px; width:auto; border:0; padding:0; }
  .mr-cmp__tbl td::before{ content:attr(data-l); font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.04em; color:var(--ink-3); }
  /* adres: nagłówek karty; `order:-1` stawia go na górze niezależnie od kolejności kolumn
     (w tabeli transakcji adres jest drugi, w tabeli ofert pierwszy) */
  .mr-cmp__tbl td.mr-cmp__addr{ order:-1; flex:1 1 100%; font-weight:600; color:var(--ink-1); }
  .mr-cmp__tbl td.mr-cmp__addr::before{ content:none; }
  /* metraż niesie jednostkę w wartości: etykieta byłaby powtórzeniem */
  .mr-cmp__tbl td[data-l="Metraż"]::before{ content:none; }
  /* cena wyróżniona, ale W TEJ SAMEJ linii co reszta: osobny wiersz był marnowaniem miejsca */
  .mr-cmp__tbl td[data-l="Cena"]{ font-weight:600; color:var(--ink-1); }
  /* ZWIJANIE: `display:flex` na `tr` powyżej ma wyższą wagę niż `.mr-cmp__more{display:none}`
     z linii 136 i odsłaniało ukryte wiersze. Powtarzamy oba stany z pełną siłą selektora. */
  .mr-cmp__tbl tr.mr-cmp__more{ display:none; }
  .mr-cmp__col.is-open .mr-cmp__tbl tr.mr-cmp__more{ display:flex; }
}
/* Analityka, market pulse */
.mr-an__seg{ font-size:var(--fs-base); line-height:1.5; color:var(--ink-3); margin:18px 0 4px; }
.mr-an__hdr{ font-family:var(--font-sans); font-size:var(--fs-xl); font-weight:700; letter-spacing:-.02em; color:var(--ink); }
/* E3: jawny pasek aktywnego filtru (zamiast żargonu „segment"), user zawsze widzi CO analizuje */
.mr-filterbar{ display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 10px; padding:10px 14px; border:1px solid var(--line); border-radius:var(--r-md,10px); background:var(--paper-2); }
.mr-filterbar__lbl{ font-size:var(--fs-xs); font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-3); }
.mr-filterbar__val{ font-family:var(--font-sans); font-size:var(--fs-lg); font-weight:700; letter-spacing:-.01em; color:var(--ink); }
.mr-escbadge{ font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); background:var(--paper); border:1px solid var(--line); border-radius:999px; padding:3px 10px; white-space:nowrap; }
.mr-segbtn{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:700; padding:0 16px; min-height:44px; border-radius:10px; border:0; background:var(--green-deep); color:#fff; cursor:pointer; white-space:nowrap; }
.mr-segbtn:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
/* filtry segmentu + „Pokaż" w JEDNEJ linii: pola dzielą wiersz, przycisk naturalnej szerokości na końcu */
/* Podstawa 92 px, nie 118 (Nikodem 2026-09-22): po dołożeniu karty „Z Twoich nieruchomości"
   obok filtra „Analizuj segment" spadał do drugiej linii poniżej 1280 px okna, a w panelu
   dochodzi jeszcze menu boczne. Baza (nie szerokość docelowa) decyduje, kiedy rząd się łamie.

   2026-09-23: szerokość idzie ZA TREŚCIĄ, nie po równo. Wcześniej wszystkie pola rosły tak samo,
   więc „4+ pok." miało 58 px zapasu, a „365d" (bez flex-grow, baza 72 px) miało dokładnie 0 px
   i gubiło literę pod chevronem. Zmierzone w przeglądarce: tekst opcji kontra szerokość pola
   minus paddingi minus ~16 px chevronu. Teraz zapas dostają tylko pola z długą treścią, reszta
   ma bazę pod swoją najdłuższą wartość, z kilkoma pikselami marginesu na inny krój pisma. */
.mr-segflds .mr-fld{ flex:1 1 92px; min-width:0; }    /* Miasto */
/* Dzielnica: najdłuższa treść w pasku (mediana nazwy 10 znaków, co dziesiąta 21+, rekord 40),
   więc bierze podwójną część zapasu. Baza zostaje mała, żeby nie łamać rzędu wcześniej. */
.mr-segflds .mr-fld--dz{ flex:2 1 92px; }
.mr-segflds .mr-fld--waski{ flex:0 1 102px; }  /* Metraż, Pokoje: „35-50 m²" potrzebuje 53 px */
.mr-segflds .mr-fld--mk{ flex:0 1 110px; }     /* Rynek: „pierwotny" potrzebuje 61 px */
.mr-segflds .mr-fld--tw{ flex:0 1 84px; }      /* Okres: „365d" potrzebuje 30 px */
.mr-segflds .mr-fld select{ min-width:0; width:100%; }
.mr-segflds .mr-fld--submit{ flex:0 0 auto; align-self:end; }
.mr-segflds .mr-fld--submit label{ display:none; }
/* pole promienia: ramka TYLKO na wrapperze, input bez ramki/spinnerów → czyste „2900 m" (bez podwójnego kółka) */
.mr-addr__radius{ display:inline-flex; align-items:center; gap:0; flex:0 0 auto; border:1px solid var(--line); border-radius:var(--r-md,10px); background:var(--paper); overflow:hidden; }
[data-theme="dark"] .mr-addr__radius{ background:var(--v6-card); }
.mr-addr .mr-addr__radius input[name="r"]{ flex:0 0 auto; width:32px; min-width:0; max-width:32px; border:0; background:transparent; text-align:center; font-size:var(--fs-xs); font-weight:400; color:var(--ink-2); padding:9px 1px; -webkit-appearance:textfield; -moz-appearance:textfield; appearance:textfield; }
.mr-addr .mr-addr__radius input::-webkit-inner-spin-button, .mr-addr .mr-addr__radius input::-webkit-outer-spin-button{ -webkit-appearance:none; margin:0; }
.mr-addr .mr-addr__radius input:focus-visible{ outline:none; }
.mr-addr__unit{ font-size:var(--fs-xs); color:var(--ink-3); font-weight:400; padding-right:5px; }
.mr-addr__radius .mr-addr__step{ border:0; background:transparent; color:var(--ink-3); font-size:13px; font-weight:400; flex:0 0 auto; width:20px; min-width:0; max-width:20px; align-self:stretch; min-height:38px; cursor:pointer; line-height:1; padding:0; display:inline-flex; align-items:center; justify-content:center; }
.mr-addr__radius .mr-addr__step:hover{ background:var(--paper-2); color:var(--ink); }
[data-theme="dark"] .mr-addr__radius .mr-addr__step:hover{ background:rgba(255,255,255,.06); }
.mr-presets{ display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 24px; }
.mr-presets a{ padding:7px 12px; border-radius:var(--r-md,10px); color:var(--ink-2); }
.mr-presets a.on{ border-color:var(--green-deep); color:var(--green-deep); background:rgba(0,165,81,.08); }
[data-theme="dark"] .mr-presets a.on{ background:var(--green-darker); }
/* 4 kolumny na sztywno (Nikodem 2026-07-27): przy auto-fit 7 kafli składało się w 6+1 i „Mediana
   obniżki" wisiała samotnie w drugiej linii; 4+3 daje dwie równe, czytelne linie i większe kafle. */
.mr-pulse{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
@media (max-width:900px){ .mr-pulse{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:640px){ .mr-pulse{ grid-template-columns:1fr 1fr; gap:10px; } .mr-filterbar{ gap:8px; } .mr-fld select,.mr-fld--addr{ flex:1 1 100%; } .mr-segflds .mr-fld{ flex:1 1 140px; } .mr-addr input{ flex:1 1 100%; } .mr-addr select,.mr-addr button{ flex:1 1 auto; } }
/* DOTYK ≥44 px (2026-08-04): EAA / WCAG 2.1 AA, Rule 13. Zmierzone na telefonie: filtry miały 38 px,
   taby 35 px, krokowanie promienia 20 px szerokości. `.mr-q` (znaki zapytania) celowo POMINIĘTE,
   mają już niewidzialny obszar 44×44 przez `::before` w linii 726, mimo że ikonka ma 1.3em. */
@media (max-width:640px){
  .mr-fld select, .mr-fld input{ min-height:44px; padding-top:11px; padding-bottom:11px; }
  .mr-addr input, .mr-addr select, .mr-addr button{ min-height:44px; }
  .mr-addr__radius .mr-addr__step{ width:36px; max-width:36px; min-height:44px; font-size:16px; }
  .mr-modes a{ min-height:44px; display:inline-flex; align-items:center; padding:0 16px; }
  .mr-recenter{ min-width:44px; min-height:44px; }
  .mr-cmp__morebtn{ min-height:44px; }
  .mr-cmp__link{ display:inline-flex; align-items:center; min-height:44px; }
  /* `summary` ma domyślnie wysokość samego tekstu (16 px): rozwijacze „Dane liczbowe" były
     najmniejszym celem na stronie, mimo że to główny sposób zaglądania w liczby */
  summary{ min-height:44px; display:flex; align-items:center; }
  /* „Jak to liczymy": etykieta NAD wartością. `space-between` w jednym rzędzie zawijał długą wartość
     na kilka linii obok krótkiej etykiety i rząd wyglądał na rozsypany. */
  .mr-method__row{ flex-direction:column; gap:2px; padding:9px 0; }
}
.mr-metric{ background:var(--paper-2); border:none; border-radius:var(--r-lg,14px); padding:16px 18px; }
[data-theme="dark"] .mr-metric{ background:var(--v6-card); }
.mr-metric__l{ font-size:var(--fs-sm); color:var(--ink-3); }
.mr-metric__v{ font-family:var(--font-mono); font-size:var(--fs-2xl); font-weight:700; color:var(--ink); margin:6px 0 4px; }
.mr-metric--gap .mr-metric__v{ color:var(--green-deep); }
.mr-metric__n{ font-size:var(--fs-xs); color:var(--ink-3); }
.mr-an__note{ margin-top:18px; padding:13px 15px; background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r-md,10px); font-size:var(--fs-sm); line-height:1.5; color:var(--ink-2); }
[data-theme="dark"] .mr-an__note{ background:rgba(255,255,255,.03); color:var(--ink-2); }
/* „Wnioski z analizy" po każdej sekcji (Nikodem 2026-09-21): karta w istniejącym systemie (tło panelu,
   ramka --line, promień --r-lg), zielona kreska przy tytule jak w mr-takeaway, w środku mniejsza karta Adama.
   Bez gradientów i poświat: to ma wyglądać jak reszta panelu. */
/* Tlo bloku (Nikodem 2026-09-22: „daj w jakims aiowym tle"): delikatny poblask marki z gornego
   lewego rogu, od strony pastylki Adama. Nie pastylka i nie kolorowa ramka (Rule 13): sam
   gradient, ktory odroznia zdanie napisane przez Adama od tabelek dookola i pokazuje, gdzie
   blok sie zaczyna i konczy. */
.mr-wn{ border:1px solid var(--line); border-radius:var(--r-lg,14px); padding:18px 20px; margin:18px 0 22px;
  background:radial-gradient(120% 150% at 0% 0%, rgba(0,165,81,.09) 0%, rgba(0,165,81,.02) 38%, rgba(0,165,81,0) 68%), var(--paper); }
[data-theme="dark"] .mr-wn{
  background:radial-gradient(120% 150% at 0% 0%, rgba(0,165,81,.16) 0%, rgba(0,165,81,.05) 38%, rgba(0,165,81,0) 68%), var(--v6-card); }
/* summary: wlasny wskaznik zamiast trojkata przegladarki, caly wiersz klikalny, cel >=44 px (EAA).
   Pastylka Adama stoi PIERWSZA od lewej i jest widoczna takze przy zwinietym bloku (Nikodem
   2026-09-21: „chce, zeby z lewej strony byl ten znaczek Adama"), zeby od razu bylo widac, kto
   tlumaczy liczby. Zielona kreska przy tytule znika: jej role nosnika informacji przejela pastylka,
   a staly kolorowy border-left na karcie to wzorzec, ktorego unikamy (Rule 13). Kreska wraca tylko
   przy tonie ostrzegawczym, gdzie NIESIE znaczenie. */
.mr-wn__h{ font-family:var(--font-sans); color:var(--ink); line-height:1.3; cursor:pointer; list-style:none; display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; min-height:44px; }
.mr-wn__tytul{ font-size:var(--fs-lg); font-weight:700; color:var(--ink); }
.mr-wn__tag{ display:inline-flex; align-items:center; gap:7px; flex:none; padding:6px 12px; border:1px solid var(--line); border-radius:999px; background:var(--paper-2); font-size:var(--fs-sm); font-weight:600; color:var(--ink-2); white-space:nowrap; }
.mr-wn__tag .ops-icon{ color:var(--green-primary); flex:none; }
[data-theme="dark"] .mr-wn__tag{ background:rgba(255,255,255,.05); }
.mr-wn__h::-webkit-details-marker{ display:none; }
.mr-wn__h:focus-visible{ outline:2px solid var(--green-primary); outline-offset:3px; border-radius:2px; }
.mr-wn__hint{ margin-left:auto; font-size:var(--fs-sm); font-weight:600; color:var(--ink-3); white-space:nowrap; }
.mr-wn[open] .mr-wn__hint{ visibility:hidden; }
.mr-wn__hint::after{ content:''; display:inline-block; width:7px; height:7px; margin-left:7px; vertical-align:1px;
  border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg); }
.mr-wn__body{ margin-top:12px; }
.mr-wn__adam.jest-w-toku .mr-wn__adamtxt{ opacity:.55; }
.mr-wn__txt{ font-size:var(--fs-base); line-height:1.6; color:var(--ink-2); }
.mr-wn__txt p{ margin:0 0 10px; }
/* „Z Twoich nieruchomosci" = KARTA w drugiej kolumnie, obok paska filtra (Nikodem 2026-09-22).
   Wczesniej (tego samego dnia) byl tu ghost-przycisk w komorce „Analizuj segment"; agent musial
   najpierw otworzyc okno, zeby w ogole zobaczyc, ze ma tu swoje nieruchomosci. Karta pokazuje
   pierwsze trzy od razu, okno zostaje pod CTA dla dluzszej listy.
   Wezsze ekrany: karta schodzi POD filtr (jedna kolumna), nie zwezamy pol filtra. */
/* align-items:stretch (domyslne) zamiast start: karta ma konczyc sie ROWNO z paskiem filtra
   (Nikodem 2026-09-22). Zeby przy tym nie rozjechala sie w srodku, sama jest kolumna, a link
   na dole dostaje `margin-top:auto` i zjezdza do jej stopki. */
/* 288 px zamiast 320 (Nikodem 2026-09-23): karta ma zapas, a filtr obok go potrzebuje,
   żeby „Analizuj segment" trzymało się jednej linii. */
.mr-filterrow{ display:grid; grid-template-columns:minmax(0,1fr) 288px; gap:14px; }
@media (max-width:1160px){ .mr-filterrow{ grid-template-columns:1fr; } }
.mr-mine{ display:flex; flex-direction:column; margin:14px 0 8px; padding:16px; border:1px solid var(--line); border-radius:var(--r-lg,14px); background:var(--paper-2); }
[data-theme="dark"] .mr-mine{ background:rgba(255,255,255,.03); }
.mr-mine__head{ display:flex; align-items:flex-start; gap:12px; }
.mr-mine__ico{ flex:none; width:40px; height:40px; border-radius:var(--r-md,10px); border:1px solid var(--line); display:flex; align-items:center; justify-content:center; color:var(--green-deep); }
.mr-mine__h{ font-family:var(--font-sans); font-size:var(--fs-md); font-weight:700; color:var(--ink); margin:0; }
.mr-mine__sub{ font-size:var(--fs-xs); color:var(--ink-3); margin-top:2px; }
/* CTA otwiera OKNO z lista nieruchomosci. Karta sama listy NIE pokazuje (Nikodem 2026-09-22). */
.mr-mine__cta{ display:flex; flex:none; align-items:center; justify-content:center; gap:8px; width:100%; min-height:44px; margin-top:14px;
  font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:700; color:var(--green-deep);
  background:transparent; border:1px solid var(--green-primary); border-radius:var(--r-md,10px); cursor:pointer; }
.mr-mine__cta:hover{ background:var(--paper); }
[data-theme="dark"] .mr-mine__cta:hover{ background:rgba(255,255,255,.05); }
.mr-mine__cta:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-mine__link{ display:flex; align-items:center; justify-content:center; gap:6px; min-height:44px; margin-top:auto;
  font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); text-decoration:underline; }
.mr-mine__link:hover{ color:var(--green-deep); }
.mr-mine__empty{ font-size:var(--fs-sm); color:var(--ink-3); margin:14px 0 0; }
/* Okno wyboru nieruchomosci do analizy */
.mr-pick{ position:fixed; inset:0; z-index:5000; background:rgba(0,0,0,.6); display:none; align-items:center; justify-content:center; }
.mr-pick[data-otwarte]{ display:flex; }
.mr-pick__box{ background:var(--paper); border:1px solid var(--line); border-radius:var(--r-lg,14px); padding:22px; width:92%; max-width:760px; max-height:82vh; overflow-y:auto; }
.mr-pick__head{ display:flex; justify-content:space-between; align-items:center; gap:12px; }
.mr-pick__h{ font-family:var(--font-sans); font-size:var(--fs-lg); font-weight:700; color:var(--ink); margin:0; }
.mr-pick__sub{ font-size:var(--fs-sm); color:var(--ink-3); margin:4px 0 16px; }
/* CALY wiersz jest przyciskiem (Nikodem 2026-09-22): wczesniej stal tu wybor „Analizuj segment"
   albo „Analizuj lokalizacje", tyle ze lokalizacja wysylala JUZ komplet (segment + punkt), wiec
   wybor byl pozorny. Jedno klikniecie = analiza wszystkiego, co o tej nieruchomosci wiemy. */
.mr-pick__row{ display:flex; justify-content:space-between; align-items:center; gap:12px; width:100%; min-height:44px; padding:12px 14px; margin-bottom:8px; text-align:left;
  font-family:inherit; background:var(--paper-2); border:1px solid var(--line); border-radius:var(--r-md,12px); color:var(--ink); cursor:pointer; }
[data-theme="dark"] .mr-pick__row{ background:rgba(255,255,255,.03); }
.mr-pick__row:hover:not([disabled]){ border-color:var(--green-primary); }
.mr-pick__row:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-pick__row[disabled]{ opacity:.45; cursor:not-allowed; }
.mr-pick__lbl{ font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); margin:4px 0 6px; }
.mr-pick__txt{ min-width:0; flex:1; }
/* display:block jest KONIECZNY: to <span>-y, a na elemencie liniowym overflow nic nie robi
   i dlugi adres wjezdza pod strzalke (zlapane na zrzucie, nie w tescie tekstowym). */
.mr-pick__name{ display:block; font-size:var(--fs-sm); font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mr-pick__meta{ display:block; font-size:var(--fs-xs); color:var(--ink-3); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mr-pick__go{ flex:none; display:flex; color:var(--ink-3); }
.mr-pick__row:hover:not([disabled]) .mr-pick__go{ color:var(--green-deep); }
/* Szukajka = wspólne pole wyszukiwania (components/_v6_search.html); tu tylko odstęp od listy. */
.mr-pick__szukajka{ margin:0 0 14px; }
.mr-pick__empty{ font-size:var(--fs-sm); color:var(--ink-3); }
.mr-wn__txt p:last-child{ margin-bottom:0; }
.mr-wn__txt b{ color:var(--ink); font-weight:700; font-variant-numeric:tabular-nums; }
.mr-wn__adam{ margin-top:14px; border:1px solid var(--line); border-radius:var(--r-md,12px); padding:12px 14px; background:var(--paper-2); }
[data-theme="dark"] .mr-wn__adam{ background:var(--v6-card-2, var(--v6-card)); }
.mr-wn__adamtxt{ font-size:var(--fs-sm); line-height:1.6; color:var(--ink-2); }
.mr-wn__arg{ margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }
.mr-wn__argh{ font-size:var(--fs-sm); font-weight:700; color:var(--ink); margin-bottom:4px; }
.mr-wn__argtxt{ font-size:var(--fs-sm); line-height:1.6; color:var(--ink-2); }
.mr-wn__arg .mr-bmbtn{ margin-top:10px; }
/* Ton oceny segmentu: ostrzeżenie i ryzyko MUSZĄ się różnić wizualnie (audyt cross-tab: Radar mówił
   „risk”, Przegląd „warn”, a wyglądało to tak samo). Kolor tylko na kresce nagłówka, zero wypełnień. */
.mr-wn--warn .mr-wn__tytul{ border-left:3px solid #b45309; padding-left:10px; }
.mr-wn--risk .mr-wn__tytul{ border-left:4px solid #b91c1c; padding-left:10px; }
[data-theme="dark"] .mr-wn--warn .mr-wn__tytul{ border-left-color:#e0a33a; }
[data-theme="dark"] .mr-wn--risk .mr-wn__tytul{ border-left-color:#f87171; }
@media (max-width:640px){ .mr-wn{ padding:14px 15px; } .mr-wn__tytul{ font-size:var(--fs-base); } }
/* Wydruk i PDF: zwiniety blok ma sie rozwinac, inaczej raport gubi wnioski. */
@media print{ .mr-wn__body{ display:block !important; } .mr-wn__hint{ display:none; } }
.mr-takeaway{ display:flex; flex-direction:column; gap:5px; margin:14px 0 20px; padding:14px 18px; border-left:3px solid var(--green-primary); background:var(--paper-2); border-radius:0 12px 12px 0; }
.mr-takeaway__eyebrow{ font-family:var(--font-sans); font-size:var(--fs-xs); letter-spacing:.08em; text-transform:uppercase; color:var(--green-deep,var(--green-deep)); font-weight:700; }
.mr-takeaway__txt{ font-family:var(--font-sans); font-size:var(--fs-base); line-height:1.55; color:var(--ink); }
.mr-takeaway__ctx{ font-family:var(--font-sans); color:var(--ink-3); font-size:var(--fs-sm); }
.mr-takeaway__sa, .mr-takeaway__sa *{ font-family:var(--font-sans); }
[data-theme="dark"] .mr-takeaway{ background:rgba(255,255,255,.03); }
[data-theme="dark"] .mr-takeaway__eyebrow{ color:#3ddc8a; }
.mr-synth{ background:var(--paper-2); border:none; border-radius:14px; overflow:hidden; }
[data-theme="dark"] .mr-synth{ background:rgba(255,255,255,.03); }
.mr-synth__row{ display:grid; grid-template-columns:170px 1fr; gap:14px; padding:13px 18px; border-bottom:1px solid var(--line); font-size:var(--fs-base); line-height:1.55; }
.mr-synth__row:last-child{ border-bottom:0; }
.mr-synth__h{ font-family:var(--font-sans); font-weight:700; color:var(--green-deep,var(--green-deep)); }
.mr-synth__t{ color:var(--ink); }
[data-theme="dark"] .mr-synth__h{ color:#3ddc8a; }
@media (max-width:640px){ .mr-synth__row{ grid-template-columns:1fr; gap:3px; } }
.mr-srcnote{ font-size:var(--fs-sm); color:var(--ink-3); margin-top:10px; line-height:1.5; }
.mr-bench{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin:18px 0 4px; padding:16px 18px; border:1px solid var(--line); border-radius:14px; }
.mr-bench__t{ font-size:var(--fs-base); color:var(--ink); font-weight:600; }
.mr-bench__t span{ display:block; font-size:var(--fs-sm); font-weight:400; color:var(--ink-3); margin-top:3px; }
.mr-bench__btn{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:600; padding:11px 18px; min-height:44px; border-radius:10px; border:1px solid var(--line); background:transparent; color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; gap:6px; text-decoration:none; }
.mr-bench__btn:hover{ border-color:var(--green-deep,var(--green-deep)); color:var(--green-deep,var(--green-deep)); }
/* ── PDF one-pager (druk), DOKUMENT DLA WŁAŚCICIELA: ukryty na ekranie, widoczny tylko w druku.
   Redesign 2026-07-23 (Nikodem): markowy Estify, font Outfit (nasz standard, bez serif „aiowego"),
   zieleń marki przez tokeny kanonu (jedna paleta), ciepły papier. ── */
.mr-onepager{ display:none; --op-deep:var(--green-darker); --op-green:var(--green-deep); --op-mint:var(--green-primary);
  --op-ink:#1c2620; --op-muted:#6b7268; --op-line:#e5e3d9; --op-line2:#d9d7cb; --op-card:#f5f4ef; --op-soft:#e7f0ea;
  --op-red:#a8483e; color:var(--op-ink); font-family:var(--font-sans); }
/* Eksport PDF do PLIKU (html2pdf, Nikodem 2026-07-27): klon one-pagera renderowany poza ekranem.
   Reguły ekranowe, bo html2canvas NIE widzi @media print; łamanie stron robi pagebreak mode 'css'. */
.mr-onepager.mr-op--export{ display:block; background:#fff; padding:0; }
.mr-op--export .mr-op__page, .mr-op--export .mr-op__mapblock, .mr-op--export .mr-op__tables,
.mr-op--export .mr-op__cols, .mr-op--export .mr-op__cenapoi, .mr-op--export .mr-op__tiles{ break-inside:avoid; page-break-inside:avoid; }
.mr-op--export .mr-op__page + .mr-op__page{ margin-top:16px; }
.mr-op--export .mr-op__map{ display:block; width:auto; max-width:100%; max-height:200px; margin:0 auto 6px; }
/* Markowy pasek nagłówka strony */
.mr-op__band{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px;
  background:var(--op-deep); color:#fff; padding:15px 20px; border-radius:12px; margin-bottom:18px; }
.mr-op__brand{ display:flex; align-items:center; gap:9px; }
.mr-op__mark{ width:26px; height:26px; border-radius:6px; background:var(--op-mint); color:#fff;
  display:flex; align-items:center; justify-content:center; font-weight:800; font-size:14px; flex:none; }
.mr-op__brandname{ font-weight:700; font-size:14px; letter-spacing:.02em; }
.mr-op__brandname span{ opacity:.62; font-weight:500; }
.mr-op__bandr{ text-align:right; }
.mr-op__bandr .addr{ font-weight:700; font-size:14px; }
.mr-op__bandr .meta{ font-size:11px; color:#a9c8b7; margin-top:2px; }
.mr-op__h{ font-family:var(--font-sans); font-size:22px; font-weight:800; letter-spacing:-.01em; margin-bottom:2px; }
.mr-op__seg{ font-size:12px; color:var(--op-muted); margin-bottom:16px; }
/* Werdykt-hero: rząd 3 liczb, trzecia (różnica) wyeksponowana ciemną zielenią */
.mr-op__nums{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:0; border:1px solid var(--op-line2);
  border-radius:12px; overflow:hidden; margin-bottom:16px; }
.mr-op__num{ padding:13px 17px; border-right:1px solid var(--op-line2); }
.mr-op__num:last-child{ border-right:0; }
.mr-op__num span{ display:block; font-size:10.5px; color:var(--op-muted); text-transform:uppercase; letter-spacing:.05em; }
.mr-op__num b{ display:block; font-size:26px; font-weight:800; line-height:1.05; margin-top:5px; font-variant-numeric:tabular-nums; }
.mr-op__num--hl{ background:var(--op-deep); color:#fff; }
.mr-op__num--hl span{ color:#a9c8b7; }
.mr-op__pln{ font-size:13px; line-height:1.55; margin-bottom:12px; padding:14px 18px; background:var(--op-soft);
  border:1px solid #d3e5d9; border-radius:12px; }
.mr-op__pln b{ color:var(--op-deep); }
.mr-op__arg{ font-size:14.5px; line-height:1.62; color:var(--op-ink); margin:4px 0 14px; }
.mr-op__cmplbl{ font-family:var(--font-sans); font-size:12px; font-weight:700; color:var(--op-ink); margin:14px 0 6px; }
.mr-op__cmp{ width:100%; border-collapse:collapse; font-size:12px; }
.mr-op__cmp th{ text-align:left; border-bottom:1px solid var(--op-line2); padding:0 8px 6px 0; font-size:10px;
  text-transform:uppercase; letter-spacing:.04em; color:var(--op-muted); font-weight:600; }
.mr-op__cmp td{ padding:6px 8px 6px 0; border-bottom:1px solid var(--op-line); color:var(--op-ink); font-variant-numeric:tabular-nums; }
.mr-op__foot{ margin-top:24px; padding-top:12px; border-top:1px solid var(--op-line2); font-size:10px; color:var(--op-muted); line-height:1.5; }
.mr-op__foot b{ color:var(--op-ink); }
@media print{
  /* Fix „15 pustych stron" (Nikodem 2026-07-22): display:none (nie visibility) na wszystkim poza
     one-pagerem, jego przodkami (:has) i potomkami. visibility zostawiało layout całej strony Rynku
     = puste strony. UWAGA: prawdziwą przyczyną znikającej mapy był osobny bug (niezamknięty skrypt po
     kopiowaniu argumentu), NIE ten selektor, więc :has() wraca. */
  body *:not(:has(.mr-onepager)):not(.mr-onepager):not(.mr-onepager *) { display:none !important; }
  .mr-onepager{ display:block !important; color:#000; background:#fff; }
  [role="tabpanel"]{ display:block !important; }
  /* Sekcje płyną jedna po drugiej bez wymuszonych pustych stron (Nikodem 2026-07-23: po usunięciu
     map sekcje są krótkie, więc „strona na sekcję" dawała same odstępy). break-inside:avoid = sekcja
     nie tnie się na krawędzi strony; nowa strona tylko gdy treść realnie się nie mieści. */
  .mr-op__page{ break-inside:avoid; }
  .mr-op__page + .mr-op__page{ margin-top:6mm; }
  /* Mapy i wykresy mniejsze niż pełna szerokość: sekcja mieści się na jednej stronie, bez cięcia
     na krawędzi i bez pustych stron z przepełnienia. */
  .mr-op__map{ width:auto !important; max-width:100%; max-height:50mm; margin:0 auto 5px; }
  /* Bez pustej OSTATNIEJ strony: WSZYSCY przodkowie one-pagera (dowolne divy trzymane przez :has)
     znikają jako pudełka (display:contents), nie niosą wysokości, marginesu ani flex-gapu, więc żadna
     pusta strona z ich box-modelu jest niemożliwa. Strony generuje TYLKO one-pager. */
  html, body{ margin:0 !important; padding:0 !important; }
  body *:has(.mr-onepager):not(.mr-onepager){ display:contents !important; }
  .mr-onepager{ margin:0 !important; padding:0 !important; }
  .mr-op__page:last-of-type{ page-break-after:avoid; break-after:avoid-page; }
  .mr-op__page:last-of-type > *:last-child, .mr-op__foot{ margin-bottom:0 !important; padding-bottom:0 !important; break-after:avoid-page; }
  .mr-op__foot{ margin-top:16px; }
  @page{ margin:14mm; }
}
.mr-op__prov{ font-size:12px; line-height:1.5; margin-bottom:14px; padding:12px 14px; border:1px solid var(--op-line); border-radius:10px; color:var(--op-muted); }
/* Sekcje lokalizacji: nagłówek + podtytuł */
.mr-op__sec{ font-family:var(--font-sans); font-size:15px; font-weight:700; color:var(--op-ink); margin:0 0 2px; letter-spacing:-.01em; }
.mr-op__secsub{ font-size:11.5px; color:var(--op-muted); margin-bottom:10px; }
/* Wykresy (Chart.js przechwycone do <img>): pełna szerokość, delikatna karta */
.mr-op__map{ display:block; width:100%; height:auto; border:1px solid var(--op-line); border-radius:10px; margin-bottom:8px; background:var(--op-card); }
.mr-op__mapblock{ break-inside:avoid; page-break-inside:avoid; margin-bottom:12px; }
/* Legenda kolorów (gdyby wróciła mapa miasta) */
.mr-op__leg{ display:flex; flex-wrap:wrap; gap:12px; margin:-2px 0 14px; font-size:11px; color:var(--op-muted); }
.mr-op__leg span{ display:inline-flex; align-items:center; gap:5px; }
.mr-op__leg i{ width:10px; height:10px; border-radius:3px; display:inline-block; }
/* Kafle statystyk: ciepłe karty, duża liczba */
.mr-op__tiles{ display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:10px; margin-bottom:14px; }
.mr-op__tiles--4{ grid-template-columns:repeat(4, 1fr); }
.mr-op__tile{ background:var(--op-card); border:1px solid var(--op-line); border-radius:10px; padding:12px 13px; }
.mr-op__tile span{ display:block; font-size:10.5px; letter-spacing:.04em; text-transform:uppercase; color:var(--op-muted); line-height:1.3; }
.mr-op__tile b{ display:block; font-size:19px; font-weight:800; color:var(--op-ink); margin-top:5px; font-variant-numeric:tabular-nums; line-height:1.12; }
.mr-op__tile small{ display:block; font-size:10px; color:var(--op-muted); margin-top:2px; }
/* Dwie kolumny obok siebie na str. 2 (atrakcyjność | hałas) */
.mr-op__two{ display:grid; grid-template-columns:1fr 1fr; gap:22px; break-inside:avoid; }
/* Atrakcyjność i hałas: pionowa lista wierszy (każda w swojej kolumnie) */
.mr-op__scores, .mr-op__noise{ display:flex; flex-direction:column; gap:2px; margin:2px 0 6px; }
.mr-op__scorerow, .mr-op__noiserow{ display:grid; align-items:center; gap:9px; padding:2.5px 10px; background:var(--op-card); border:1px solid var(--op-line); border-radius:8px; }
.mr-op__scorerow{ grid-template-columns:22px minmax(58px,88px) 1fr 108px; }
.mr-op__noiserow{ grid-template-columns:20px minmax(0,1fr) 34px 56px; }
.mr-op__scorerow > span, .mr-op__noiserow > span{ font-weight:500; color:var(--op-ink); font-size:12.5px; }
.mr-op__scoreic{ width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 0 0 1px var(--op-line2); display:flex; align-items:center; justify-content:center; line-height:1; }
/* Ocena ogólna okolicy (0-100) nad wierszami kategorii */
.mr-op__scorehead{ display:flex; align-items:baseline; justify-content:space-between; margin:0 2px 6px; }
.mr-op__scorehead span{ font-size:12px; color:var(--op-muted); font-weight:600; }
.mr-op__scorehead b{ font-size:20px; font-weight:800; color:var(--op-deep); font-variant-numeric:tabular-nums; }
.mr-op__scorehead b small{ font-size:12px; color:var(--op-muted); font-weight:600; }
/* Pasek 0-100 jednokierunkowy (od lewej), kolor = pasmo oceny */
.mr-op__meter{ position:relative; height:8px; border-radius:4px; background:#e7e6dc; overflow:hidden; }
.mr-op__meter i{ position:absolute; left:0; top:0; bottom:0; border-radius:4px; min-width:3px; }
.mr-op__sval{ text-align:right; font-size:10px; color:var(--op-muted); line-height:1.25; }
.mr-op__sval b{ font-size:14px; font-weight:800; font-variant-numeric:tabular-nums; }
.mr-op__sval span{ display:block; }
/* Hałas: pasek na skali 30–80 dB, kolor wg górnej granicy pasma */
.mr-op__nbar{ position:relative; height:8px; border-radius:4px; background:#efeee7; overflow:hidden; }
.mr-op__nbar i{ position:absolute; top:0; bottom:0; border-radius:4px; min-width:3px; }
.mr-op__nband{ text-align:right; font-size:12px; font-weight:600; color:var(--op-ink); white-space:nowrap; font-variant-numeric:tabular-nums; }
/* Ryzyka: wyeksponowane opisy z pastylką statusu; plan jako karta */
.mr-op__risk{ display:flex; gap:11px; align-items:baseline; font-size:13.5px; line-height:1.55; padding:12px 0; border-bottom:1px solid var(--op-line); color:var(--op-ink); }
.mr-op__risk:last-child{ border-bottom:0; }
.mr-op__risk b{ color:var(--op-deep); }
.mr-op__plan{ background:var(--op-card); border:1px solid var(--op-line); border-radius:12px; padding:16px 18px; margin-top:10px; font-size:14px; line-height:1.6; }
.mr-op__plan b{ color:var(--op-deep); }
/* Pastylka statusu ryzyka: zielona „bez ryzyka" / stonowana czerwona „strefa". Kolor = znaczenie. */
.mr-op__chip{ flex:none; align-self:flex-start; display:inline-block; font-size:9.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; padding:3px 9px; border-radius:999px; white-space:nowrap; line-height:1.3; }
.mr-op__chip--ok{ color:var(--op-green); background:var(--op-soft); }
.mr-op__chip--warn{ color:var(--op-red); background:#f5e9e7; }
/* Dwie tabele porównawcze obok siebie; pojedyncza (gdy brak transakcji lub ofert) rozciąga się na całą szerokość */
.mr-op__tables{ display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:16px; align-items:start; margin-bottom:14px; break-inside:avoid; }
.mr-op__tables .mr-op__cmp{ font-size:10.5px; }
/* Wykres trendu na całą szerokość; cena/m² i ocena POI obok siebie (Nikodem 2026-07-23, PDF na 2 strony) */
.mr-op__charts{ display:grid; grid-template-columns:1fr; gap:12px; margin-bottom:12px; }
.mr-op__charts .mr-op__mapblock{ margin-bottom:0; }
.mr-op__cenapoi{ display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start; margin-bottom:10px; break-inside:avoid; }
.mr-op__cenapoi > *{ min-width:0; }
.mr-op__cenapoi .mr-op__mapblock{ margin-bottom:0; }
/* Nagłówek oceny: flex zamiast float, wynik nie wystaje poza kolumnę (ucięte „82/100", Niko 2026-07-27) */
.mr-op__poicol .mr-op__cmplbl{ margin-bottom:3px; display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.mr-op__poicol .mr-op__cmplbl b{ white-space:nowrap; flex:none; }
/* Wiersz oceny w wąskiej kolumnie: ikona + kategoria + liczba (pasek i „najbliższy X" ukryte,
   bo szczegół jest i tak w kolumnach obok). */
.mr-op__cenapoi .mr-op__scorerow{ grid-template-columns:18px minmax(0,1fr) 32px; gap:8px; }
.mr-op__cenapoi .mr-op__meter{ display:none; }
.mr-op__cenapoi .mr-op__sval span{ display:none; }
.mr-op__cenapoi .mr-op__sval{ font-size:14px; }
.mr-op__cenapoi .mr-op__scorerow > span{ font-size:11.5px; }
/* Dwie kolumny „Atuty okolicy / Na co zwrócić uwagę" (a.argument) w PDF */
.mr-op__cols{ display:grid; grid-template-columns:1fr 1fr; gap:18px; margin:8px 0 8px; break-inside:avoid; }
.mr-op__col h4{ font-size:13px; font-weight:800; margin:0 0 7px; padding-bottom:6px; border-bottom:1.5px solid var(--op-line2); letter-spacing:-.01em; }
.mr-op__col--def h4{ color:var(--op-deep); }
.mr-op__col--warn h4{ color:var(--op-red); }
.mr-op__col ul{ list-style:none; margin:0; padding:0; }
.mr-op__col li{ position:relative; padding:5px 0 5px 15px; font-size:11.5px; line-height:1.42; border-bottom:1px solid var(--op-line); color:var(--op-ink); }
.mr-op__col li:last-child{ border-bottom:0; }
.mr-op__col li::before{ content:""; position:absolute; left:0; top:10px; width:6px; height:6px; border-radius:50%; }
.mr-op__col--def li::before{ background:var(--op-green); }
.mr-op__col--warn li::before{ background:var(--op-red); }
.mr-bmbtn{ font-size:var(--fs-sm); padding:10px 18px; border-radius:10px; min-height:44px; white-space:nowrap; }
/* Bez kreski z lewej (Rule 13: kolor znaczy, nie dekoruje) i bez wypelnionego tintu.
   Argument siedzi juz w karcie .mr-ofr__sekcja, wiec wlasna ramka byla ramka w ramce. */
.mr-bmarg{ border:none; border-radius:10px; padding:0; margin-top:4px; background:transparent; }
[data-theme="dark"] .mr-bmarg{ background:transparent; }
.mr-bmarg p{ font-size:var(--fs-base); line-height:1.6; color:var(--ink); margin:0 0 14px; }
.mr-bmarg__actions{ display:flex; gap:10px; flex-wrap:wrap; }
.mr-hero{ display:grid; grid-template-columns:1fr auto 1fr; align-items:stretch; border:1px solid var(--line); border-radius:16px; overflow:hidden; margin-top:6px; }
.mr-hero__side{ padding:20px 24px; display:flex; flex-direction:column; justify-content:center; gap:4px; }
.mr-hero__side--rcn{ text-align:right; align-items:flex-end; }
.mr-hero__lbl{ font-size:var(--fs-sm); color:var(--ink-3); }
.mr-hero__num{ font-family:var(--font-mono); font-size:var(--fs-2xl); font-weight:700; color:var(--ink); letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
.mr-hero__sub{ font-size:var(--fs-xs); color:var(--ink-3); font-family:var(--font-mono); }
.mr-hero__gap{ padding:18px 30px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; color:var(--ink); background:var(--paper-2); border-left:1px solid var(--line); border-right:1px solid var(--line); }
.mr-hero__gap--ok .mr-hero__gapnum{ color:var(--green-deep); }
.mr-hero__gap--warn .mr-hero__gapnum{ color:#b45309; }
.mr-hero__gap--risk .mr-hero__gapnum{ color:#b91c1c; }
/* EAA: warn/risk na dark maja kontrast <4.5:1 (audyt 2026-07-01); jasniejsze warianty jak mr-gaprank__val */
[data-theme="dark"] .gap--warn,[data-theme="dark"] .mr-spv__v.gap--warn,[data-theme="dark"] .mr-hero__gap--warn .mr-hero__gapnum{ color:#e0a33a; }
[data-theme="dark"] .gap--risk,[data-theme="dark"] .mr-spv__v.gap--risk,[data-theme="dark"] .mr-hero__gap--risk .mr-hero__gapnum{ color:#ff7e84; }
.mr-hero__gaplbl{ font-size:var(--fs-xs); color:var(--ink-3); text-transform:uppercase; letter-spacing:.06em; }
.mr-hero__gapnum{ font-family:var(--font-mono); font-size:var(--fs-3xl); font-weight:700; line-height:1.1; font-variant-numeric:tabular-nums; }
.mr-hero__gapsub{ font-size:var(--fs-sm); color:var(--ink-3); font-family:var(--font-mono); }
.mr-hero__note{ font-size:var(--fs-sm); color:var(--ink-3); margin:9px 0 2px; }
/* MOBILE (2026-08-04): dwie mediany OBOK SIEBIE, luka paskiem pod nimi. Wcześniej wszystko szło
   w jedną kolumnę: środkowy blok zostawał wyśrodkowany między sąsiadami do lewej i trzymał kreski
   po bokach, które w pionie nic nie rozdzielają. Ten blok JEST porównaniem dwóch liczb, więc mają
   stać obok siebie; luka to wniosek z nich, więc idzie niżej i szerzej. */
@media (max-width:680px){
  .mr-hero{ grid-template-columns:1fr 1fr; }
  .mr-hero__side{ padding:14px 16px; }
  .mr-hero__num{ font-size:var(--fs-xl); }
  /* prawa kolumna do LEWEJ (wyrównanie do prawej przy dwóch wąskich kolumnach rozjeżdża wzrok),
     kreska pionowa zostaje: tu naprawdę rozdziela */
  .mr-hero__side--rcn{ text-align:left; align-items:flex-start; border-left:1px solid var(--line); }
  /* luka pod spodem, pełna szerokość, w poziomie: etykieta w swojej linii, liczby obok siebie */
  .mr-hero__gap{ order:1; grid-column:1 / -1; flex-direction:row; flex-wrap:wrap; align-items:baseline;
    justify-content:flex-start; gap:2px 10px; padding:12px 16px;
    border-left:0; border-right:0; border-top:1px solid var(--line); }
  .mr-hero__gaplbl{ flex:1 1 100%; }
  .mr-hero__gapnum{ font-size:var(--fs-2xl); }
}
.mr-ladder__bar{ position:relative; height:10px; background:var(--v6-surface,#eef1f3); border-radius:6px; }
.mr-ladder__fill{ position:absolute; top:0; bottom:0; background:rgba(0,165,81,.55); border-radius:6px; }
.mr-ladder__mark{ position:absolute; top:-5px; width:4px; height:20px; background:var(--green-deep,var(--green-deep)); border-radius:2px; transform:translateX(-2px); box-shadow:0 0 0 1px var(--paper,#fff); }
[data-theme="dark"] .mr-ladder__fill{ background:rgba(0,165,81,.5); }
[data-theme="dark"] .mr-ladder__mark{ background:var(--green-primary,var(--green-primary)); box-shadow:0 0 0 1px var(--v6-card,#10231a); }
.mr-ladder__labels{ display:flex; justify-content:space-between; gap:8px; margin-top:11px; font-size:var(--fs-xs); color:var(--ink-3); }
.mr-ladder__labels span:nth-child(2){ text-align:center; } .mr-ladder__labels span:nth-child(3){ text-align:center; } .mr-ladder__labels span:last-child{ text-align:right; }
.mr-ladder__labels b{ display:block; font-family:var(--font-mono); font-size:var(--fs-sm); color:var(--ink); font-weight:700; }
[data-theme="dark"] .mr-ladder__bar{ background:rgba(255,255,255,.08); }
.mr-an__src{ margin-top:14px; display:flex; flex-wrap:wrap; gap:6px; }
.mr-anlbl{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-2); margin:26px 0 10px; }
/* Typografia ZNORMALIZOWANA (Nikodem 2026-07-27): jedna ranga = jeden styl.
   .mr-chapter = rozdział (Analiza dzielnicy / Ceny przegląd / Profil okolicy),
   .mr-anlbl = etykieta sekcji (uppercase, NAD blokiem, nigdy w środku),
   nagłówek karty = fs-base 700 (mr-chartcard__h / mr-cmp__h). */
.mr-chapter{ font-family:var(--font-sans); font-size:var(--fs-2xl); font-weight:700; letter-spacing:-.02em; color:var(--ink); margin:26px 0 8px; }
/* A1: 1-zdaniowy podtytuł sekcji „co tu znajdziesz" (korzyść, krótko) */
.mr-secsub{ font-size:var(--fs-sm); line-height:1.5; color:var(--ink-3); margin:-4px 0 14px; max-width:780px; }
/* A2: pasek-podsumowanie sekcji (3-4 KPI-kafle, „od ogółu do szczegółu"), wzorzec mr-pulse/mr-metric */
.mr-sumbar{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin:4px 0 10px; }
/* MOBILE (2026-08-04): TRZY kafle w jednym rzędzie. Dwie kolumny zostawiały trzeci kafel sam
   pod spodem: wyglądało to na pomyłkę, a nie na układ. Te liczby porównuje się wzrokiem, więc
   muszą stać obok siebie. Przy 390 px kolumna ma ~105 px, dlatego mniejsza typografia i padding;
   `min-width:0` jest konieczne, bo domyślne `auto` w gridzie nie pozwala kolumnie zwęzić się
   poniżej najdłuższego słowa i rozpycha rząd poza ekran. */
@media (max-width:640px){
  .mr-sumbar{ grid-template-columns:repeat(3,1fr); gap:8px; }
  .mr-sumbar .mr-metric{ min-width:0; padding:12px 10px; }
  .mr-sumbar .mr-metric__l{ font-size:var(--fs-xs); line-height:1.25; }
  .mr-sumbar .mr-metric__v{ font-size:var(--fs-lg); margin:4px 0 2px; overflow-wrap:anywhere; }
  .mr-sumbar .mr-metric__n{ font-size:10px; line-height:1.3; }
}
/* A3: blok techniczny sekcji = ZAOKRĄGLONA karta jak mr-chartcard (Nikodem 2026-07-27: koniec
   kwadratowych bloków z tytułem w środku; tytuł stoi NAD kartą jako .mr-anlbl). */
.mr-howto{ margin-top:8px; border:none; box-shadow:var(--sh-sm, 0 1px 2px rgba(0,102,52,.06)); border-radius:var(--r-lg,14px); background:var(--paper); }
[data-theme="dark"] .mr-howto{ background:var(--v6-card); }
.mr-howto__body{ padding:8px 22px 18px; }
.mr-howto__p{ font-size:var(--fs-sm); line-height:1.55; color:var(--ink-2); margin:12px 0 0; }
/* „z mapy": ulica odczytana przez nas ze wspolrzednych, bo ogloszenie jej nie podaje.
   Sam tekst, bez pastylki i bez koloru: to zastrzezenie do danych, nie status. */
.mr-cmp__zmapy{ font-size:var(--fs-xs); font-weight:500; color:var(--ink-3); margin-left:6px; }
.mr-cmp__zmapy::before{ content:'· '; }
/* „Jak to liczymy" na piec kolumn (makieta Nikodema 2026-09-22). Kolumny rozdziela cienka
   kreska w kolorze linii, nie kolorowy akcent: kolor ma nosic znaczenie, nie dekoracje.
   Kreske gasimy dla pierwszej kolumny w KAZDYM rzedzie, wiec po zawinieciu nic nie wisi. */
.mr-jak__t{ font-family:var(--font-sans); font-size:var(--fs-xl); font-weight:700; color:var(--ink); display:block; }
.mr-jak__s{ font-size:var(--fs-sm); color:var(--ink-3); display:block; margin-top:3px; }
.mr-jak__grid{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:0 22px; margin-top:6px; }
.mr-jak__col{ min-width:0; padding:4px 0 4px 22px; border-left:1px solid var(--line); }
.mr-jak__grid > .mr-jak__col:nth-child(5n+1){ border-left:0; padding-left:0; }
.mr-jak__h{ display:flex; align-items:center; gap:10px; }
.mr-jak__ico{ flex:none; width:38px; height:38px; border-radius:var(--r-md,10px); border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center; color:var(--ink-2); }
.mr-jak__n{ min-width:0; }
.mr-jak__n b{ display:block; font-size:var(--fs-base); font-weight:700; color:var(--ink); }
.mr-jak__n small{ display:block; font-size:var(--fs-xs); color:var(--ink-3); margin-top:1px; }
.mr-jak__txt{ font-size:var(--fs-sm); line-height:1.55; color:var(--ink-2); margin:14px 0 0; }
.mr-jak__txt b{ color:var(--ink); font-variant-numeric:tabular-nums; }
.mr-jak__note{ display:flex; align-items:flex-start; gap:12px; margin-top:20px; padding:14px 16px;
  border:1px solid var(--line); border-radius:var(--r-md,12px); font-size:var(--fs-sm); color:var(--ink-2); }
.mr-jak__note .ops-icon{ flex:none; color:var(--ink-3); margin-top:1px; }
@media (max-width:1180px){
  .mr-jak__grid{ grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px 22px; }
  .mr-jak__grid > .mr-jak__col:nth-child(5n+1){ border-left:1px solid var(--line); padding-left:22px; }
  .mr-jak__grid > .mr-jak__col:nth-child(3n+1){ border-left:0; padding-left:0; }
}
@media (max-width:820px){
  .mr-jak__grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .mr-jak__grid > .mr-jak__col:nth-child(3n+1){ border-left:1px solid var(--line); padding-left:22px; }
  .mr-jak__grid > .mr-jak__col:nth-child(2n+1){ border-left:0; padding-left:0; }
}
@media (max-width:560px){
  .mr-jak__grid{ grid-template-columns:1fr; gap:18px; }
  .mr-jak__col{ border-left:0 !important; padding-left:0 !important; }
}
/* B: liczby tabularne (spójne wyrównanie cyfr) na wszystkich kaflach/tabelach liczbowych */
.mr-metric__v,.mr-ostat__v,.mr-spv__v,.mr-tbl td{ font-variant-numeric:tabular-nums; }
.mr-filterbar{ display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 8px; align-items:end; }
.mr-fld{ display:flex; flex-direction:column; gap:4px; }
.mr-fld label{ font-size:var(--fs-xs); color:var(--ink-3); font-weight:600; }
.mr-fld__hint{ font-weight:400; font-style:italic; opacity:.8; } /* P2 #17: zapowiedz auto-submit (WCAG 3.2.2) */
.mr-fld select{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:600; padding:9px 12px; border-radius:var(--r-md,10px); border:1px solid var(--line); background:var(--paper); color:var(--ink); min-width:130px; }
[data-theme="dark"] .mr-fld select{ background:var(--v6-card); }
/* U11 (Panel Feedback): pola input w mr-fld maja pasowac do normalnego pola designu (jak select/mr-addr). */
.mr-fld input{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:600; padding:9px 12px; border-radius:var(--r-md,10px); border:1px solid var(--line); background:var(--paper); color:var(--ink); min-width:130px; }
.mr-fld input::placeholder{ font-weight:400; }
[data-theme="dark"] .mr-fld input{ background:var(--v6-card); }
/* .mr-method__row, wiersze metodologii, teraz w zbiorczym bloku „Jak to liczymy" (A3) */
.mr-method__row{ display:flex; justify-content:space-between; gap:12px; padding:6px 0; border-bottom:1px solid var(--line); font-size:var(--fs-sm); }
.mr-method__row:last-child{ border-bottom:0; }
.mr-method__row b{ color:var(--ink); }
.mr-charts{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:20px; }
.mr-chartcard{ border:none; box-shadow:var(--sh-sm, 0 1px 2px rgba(0,102,52,.06)); border-radius:var(--r-lg,14px); padding:20px 22px; background:var(--paper); }
[data-theme="dark"] .mr-chartcard{ background:var(--v6-card); }
.mr-chartcard__h{ font-family:var(--font-sans); font-size:var(--fs-base); font-weight:700; color:var(--ink); margin-bottom:16px; display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.mr-chartcard__h span{ font-size:var(--fs-xs); font-weight:500; color:var(--ink-3); white-space:nowrap; }
.mr-canvaswrap{ height:260px; position:relative; }
.mr-range{ display:inline-flex; gap:2px; background:var(--v6-surface,#f1f3f5); border-radius:8px; padding:3px; }
.mr-range button{ border:0; background:transparent; font-family:var(--font-sans); font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); padding:5px 11px; border-radius:6px; cursor:pointer; min-height:44px; }
.mr-range button.on{ background:var(--paper); color:var(--green-deep,var(--green-deep)); box-shadow:0 1px 2px rgba(0,0,0,.08); }
[data-theme="dark"] .mr-range{ background:rgba(255,255,255,.06); }
[data-theme="dark"] .mr-range button.on{ background:var(--v6-card); color:#3ddc8a; }
.mr-fld--addr{ flex:1 1 280px; }
/* ── Adres = ścieżka pierwszorzędna (nad filtrami segmentu) ── */
/* Nikodem 2026-09-08: część adresowa NIE jest osobną kartą, od filtrów oddziela ją tylko cienka
   biała linia (na ciemnym motywie: delikatna jasna kreska). Zero ramki, tła i zaokrągleń. */
.mr-pathlead{ flex:1 1 100%; display:flex; flex-direction:column; gap:8px; padding:12px 0 0; margin-top:2px; border:0; border-top:1px solid var(--paper); border-radius:0; background:transparent; }
[data-theme="dark"] .mr-pathlead{ background:transparent; border-top-color:rgba(255,255,255,.14); }
/* Blok, nie flex: „?" ma zostac przy ostatnim slowie, a nie spadac na lewa krawedz nowej linii,
   gdzie na telefonie zaslania go FAB Adama (REGULA ZERO #1, zmierzone 2026-09-23). */
.mr-pathlead__h{ display:block; font-size:var(--fs-sm); font-weight:500; color:var(--ink-2); }
.mr-pathlead__h .mr-qwrap{ margin-left:4px; }
.mr-segrow{ flex:1 1 100%; }
.mr-segrow__h{ font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); text-transform:uppercase; letter-spacing:.04em; margin:4px 0 8px; }
.mr-segflds{ display:flex; flex-wrap:wrap; gap:10px; align-items:end; }
.mr-addr{ display:flex; flex-wrap:wrap; gap:6px; }
.mr-addr input{ flex:1 1 220px; font-family:var(--font-sans); font-size:var(--fs-sm); padding:9px 12px; border-radius:var(--r-md,10px); border:1px solid var(--line); background:var(--paper); color:var(--ink); min-width:160px; }
.mr-addr select{ font-family:var(--font-sans); font-size:var(--fs-sm); padding:9px 8px; border-radius:var(--r-md,10px); border:1px solid var(--line); background:var(--paper); color:var(--ink); }
.mr-addr > button{ flex:0 0 auto; font-size:var(--fs-sm); font-weight:600; padding:9px 22px; border-radius:var(--r-md,10px); white-space:nowrap; min-height:44px; min-width:110px; }
.mr-addr > .mr-addr__go{ font-weight:700; padding:0 20px; min-width:180px; }
@media (max-width:640px){ .mr-addr > .mr-addr__go{ flex:1 1 100%; } }
.mr-addr-sub{ font-size:var(--fs-sm); color:var(--ink-3); margin:-4px 0 12px; }
/* Podpowiedzi adresów (address_matching, Nikodem 2026-09-03), ta sama usługa co w Wycenie.
   Tokeny motywu (--paper/--line/--ink), zero tintów i kolorowych borderów (anty-AI, Rule 13). */
.mr-addr{ position:relative; }
.mr-addr-sug{ position:absolute; left:0; right:0; top:100%; z-index:30; margin-top:4px; background:var(--paper); color:var(--ink); border:1px solid var(--line); border-radius:var(--r-md,10px); box-shadow:0 8px 24px rgba(0,0,0,.18); overflow:hidden; }
.mr-addr-sug-item{ padding:10px 14px; font-size:var(--fs-sm); cursor:pointer; }
.mr-addr-sug-item:hover,.mr-addr-sug-item.on{ background:var(--paper-2); }
.mr-addr-sug-brak{ color:var(--ink-3); cursor:default; font-size:var(--fs-xs); }
.mr-addr-sug-brak:hover{ background:var(--paper); }
.mr-addr-err{ margin-top:8px; font-size:var(--fs-sm); font-weight:600; color:var(--v6-danger,#c0392b); }
/* Dwa równorzędne przyciski akcji pod adresem (Nikodem 2026-09-08): ta sama wysokość i zbliżona
   szerokość, po prawej na desktopie, jeden pod drugim na pełną szerokość na mobile. Oba w tym
   samym zielonym primary (.mr-segbtn); „Analiza lokalizacji" bez adresu = wyraźnie przygaszony. */
.mr-addr-hint{ font-size:var(--fs-xs); color:var(--ink-3); margin-top:-2px; }
.mr-addr-hint[hidden]{ display:none; }
.mr-actions{ display:flex; justify-content:flex-end; align-items:stretch; gap:10px; flex-wrap:wrap; margin-top:6px; }
.mr-actions__btn{ flex:0 1 220px; min-width:180px; min-height:44px; }
.mr-segbtn:hover:not([disabled]){ filter:brightness(1.12); }
.mr-segbtn[disabled]{ background:var(--line); color:var(--ink-3); cursor:not-allowed; opacity:.85; }
.mr-segbtn.is-loading{ opacity:.7; cursor:progress; }
@media(max-width:640px){ .mr-actions{ flex-direction:column; } .mr-actions__btn{ flex:1 1 auto; width:100%; min-width:0; } }
/* zachęta gdy BEZ adresu (per-punkt okolicy nie pokazujemy dla całej dzielnicy) */
/* .mr-addr-prompt* usunięte 2026-07-21 razem z blokiem zachęty (treść poszła do nagłówka pola adresu). */
.mr-okolica{ display:grid; grid-template-columns:1.6fr 1fr; gap:18px; align-items:start; margin-bottom:8px; }
.mr-map-wrap{ border-radius:var(--r-lg,14px); overflow:hidden; border:1px solid var(--line); }
#mrMap{ height:380px; width:100%; }
.mr-okolica__side{ display:flex; flex-direction:column; gap:14px; }
.mr-okolica__stats{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
.mr-okolica__radlbl{ font-size:var(--fs-sm); font-weight:600; color:var(--ink-2); margin-bottom:10px; }
.mr-ostat{ background:var(--paper-2); border:none; border-radius:10px; padding:12px 14px; }
.mr-ostat__v{ font-family:var(--font-mono); font-size:var(--fs-xl); font-weight:700; color:var(--ink); }
.mr-ostat__v--rng{ font-size:var(--fs-md); }
.mr-ostat__l{ font-size:var(--fs-xs); color:var(--ink-3); margin-top:2px; }
[data-theme="dark"] .mr-ostat{ background:rgba(255,255,255,.04); }
/* .mr-poi* (paski ilości POI) usunięte 2026-07-22 razem z blokiem, zastąpione oceną .mr-nb. */

/* Atrakcyjność okolicy: wskaźnik 0-100 per kategoria (jak Walk Score) + ocena ogólna + konkret
   „najbliższy X w metrach". Nikodem 2026-07-23: skala minus5..plus5 była nieczytelna. Kolor =
   znaczenie (Reguła 13): zieleń dobrze, zdesaturowany czerwony słabo, szary przeciętnie. */
.mr-nb{ background:var(--paper-2); border:none; border-radius:10px; padding:6px 14px; }
[data-theme="dark"] .mr-nb{ background:rgba(255,255,255,.04); }
.mr-nb__head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; padding:11px 0 5px; border-bottom:1px solid var(--line); }
.mr-nb__headlbl{ font-size:var(--fs-sm); color:var(--ink-2); font-weight:600; }
.mr-nb__headval{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-weight:800; font-size:var(--fs-lg); color:var(--v6-green-text); }
.mr-nb__headval small{ font-size:var(--fs-sm); color:var(--ink-3); font-weight:600; }
.mr-nb__row{ display:grid; grid-template-columns:minmax(80px,104px) 1fr 32px minmax(90px,136px); align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid var(--line); font-size:var(--fs-sm); }
.mr-nb__row:last-child{ border-bottom:0; }
.mr-nb__lbl{ color:var(--ink-2); font-weight:500; display:inline-flex; align-items:center; gap:7px; }
.mr-nb__lbl svg{ flex:none; opacity:.7; }
.mr-nb__bar{ position:relative; height:9px; border-radius:5px; background:var(--v6-surface,#eef1f3); overflow:hidden; }
[data-theme="dark"] .mr-nb__bar{ background:rgba(255,255,255,.08); }
.mr-nb__fill{ position:absolute; left:0; top:0; bottom:0; border-radius:5px; min-width:3px; }
.mr-nb__fill--g{ background:var(--v6-green); }
.mr-nb__fill--flat{ background:var(--ink-3); }
.mr-nb__fill--b{ background:var(--v6-danger); }
.mr-nb__num{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-weight:700; text-align:right; color:var(--ink-2); }
.mr-nb__num--g{ color:var(--v6-green-text); }
.mr-nb__num--b{ color:var(--v6-danger); }
.mr-nb__near{ font-size:var(--fs-xs); color:var(--ink-3); text-align:right; line-height:1.3; }

/* Parametry zabudowy MPZP jako osobne kafelki (wysokość / intensywność / pow. biologiczna). */
.mr-mpzpfacts{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:12px; }
.mr-mpzpfact{ background:var(--paper-2); border:1px solid var(--line); border-radius:8px; padding:8px 10px; }
[data-theme="dark"] .mr-mpzpfact{ background:rgba(255,255,255,.04); }
.mr-mpzpfact__l{ display:block; font-size:11px; color:var(--ink-3); white-space:normal; }
.mr-mpzpfact__v{ display:block; font-weight:700; color:var(--ink); font-size:var(--fs-sm); font-variant-numeric:tabular-nums; margin-top:2px; white-space:normal; }
@media(max-width:640px){ .mr-mpzpfacts{ grid-template-columns:1fr 1fr; } }
/* Breakpoint liczony od VIEWPORTU, a treść = viewport-304px (sidebar 240 + padding 64). Próg podniesiony
   820->1160, żeby okolica składała się do 1-kol na laptopie (1366, zwł. ze skalowaniem Windows 125-150%),
   inaczej prawy panel statystyk się ucinał (audyt szerokości 2026-07-01). */
@media (max-width:1160px){ .mr-okolica{ grid-template-columns:1fr; } }
.mr-verdicts{ display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:10px; margin:4px 0 8px; }
.mr-vd{ border:1px solid var(--line); border-left-width:3px; border-radius:10px; padding:11px 14px; font-size:var(--fs-sm); font-weight:600; color:var(--ink); }
.mr-vd--clickable{ cursor:pointer; transition:background .12s; }
.mr-vd--clickable:hover{ background:var(--paper-2); }
[data-theme="dark"] .mr-vd--clickable:hover{ background:rgba(255,255,255,.04); }
.mr-vd--clickable:focus-visible{ outline:2px solid var(--green-deep); outline-offset:1px; }
.mr-vd span{ display:block; font-size:var(--fs-xs); font-weight:500; color:var(--ink-3); margin-top:3px; }
.mr-vd span.mr-vd__wip{ display:inline-block; margin:0 0 0 6px; padding:1px 9px; border-radius:999px; border:1px solid var(--v6-urgent,#b6862c); color:var(--v6-urgent,#b6862c); font-size:var(--fs-xs); font-weight:800; text-transform:uppercase; letter-spacing:.05em; vertical-align:middle; }
.mr-vd span.mr-vd__big{ font-size:var(--fs-md); font-weight:700; color:var(--ink); margin-top:6px; }
.mr-vd--ok{ border-left-color:var(--green-deep); }
.mr-vd--warn{ border-left-color:#f59e0b; }
.mr-vd--risk{ border-left-color:var(--v6-urgent, #b0433a); }
.mr-vd--neutral{ border-left-color:#94a0ad; }
.mr-tbl{ margin-top:14px; }
.mr-tbl summary{ font-size:var(--fs-sm); color:var(--ink-3); cursor:pointer; }
.mr-tbl table{ width:100%; font-size:var(--fs-sm); border-collapse:collapse; margin-top:8px; }
.mr-tbl th{ text-align:right; color:var(--ink-3); font-weight:600; padding:5px 6px; border-bottom:1px solid var(--line); }
.mr-tbl th:first-child{ text-align:left; }
.mr-tbl td{ text-align:right; padding:5px 6px; border-bottom:1px solid var(--line); font-family:var(--font-mono); color:var(--ink-2); }
.mr-tbl td:first-child{ text-align:left; font-family:var(--font-sans); }
@media (max-width:920px){ .mr-charts{ grid-template-columns:1fr; } }
/* ── kotwice sekcji: offset pod sticky-header + płynne przewijanie (task 1) ── */
html{ scroll-behavior:smooth; }
#heatmapa, #dowod, #okolica, #porownywalne, #twoja-oferta{ scroll-margin-top:88px; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
.mr-sr{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }
/* ── A4: „Co analizujemy", mapa wymiarów segmentu (ikony, nie emoji) ── */
.mr-coanalyze{ margin:16px 0 4px; padding:14px 16px; border:none; border-radius:14px; background:var(--paper-2); }
/* Taby "Co analizujemy" (feature-flag ?tabs=1). Tab bar: tylko etykiety (desc ukryty), aktywny=zielony underline. */
.mr-coanalyze--tabs{ padding:0; background:none; border:0; margin:16px 0 14px; max-width:100%; min-width:0; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.mr-coanalyze--tabs .mr-coanalyze__grid{ display:flex; gap:2px; border-bottom:1px solid var(--line); }
.mr-tab{ font-family:var(--font-sans); font-weight:600; color:var(--ink-3); background:none; border:0; border-bottom:2.5px solid transparent; border-radius:0; padding:11px 15px; margin-bottom:-1px; min-height:44px; cursor:pointer; white-space:nowrap; display:inline-flex; align-items:center; gap:7px; }
.mr-tab[aria-selected="true"]{ color:var(--green-deep); border-bottom-color:var(--green-deep); }
.mr-tab:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-coanalyze--tabs .mr-coanalyze__it span{ font-size:0; display:inline; }
.mr-coanalyze--tabs .mr-coanalyze__it span b{ font-size:var(--fs-sm); font-weight:600; }
.mr-coanalyze__h{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-3); margin-bottom:10px; }
/* auto-fit, nie sztywne 3 kolumny (Nikodem 2026-09-23): po scaleniu pozycji jest ich cztery
   albo pięć, a przy 3 kolumnach ostatnia zostawała sama w drugim rzędzie. Puste tory auto-fit
   zwija, więc spis układa się w jeden rząd i dzieli szerokość po równo. */
.mr-coanalyze__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:8px; }
@media (max-width:640px){ .mr-coanalyze__grid{ grid-template-columns:repeat(2,1fr); } }
.mr-coanalyze__it{ display:flex; align-items:flex-start; gap:10px; padding:9px 10px; border-radius:10px; text-decoration:none; color:var(--ink-2); min-height:44px; }
.mr-coanalyze__it:hover{ background:var(--v6-surface,#f1f3f5); }
.mr-coanalyze__it:focus-visible{ outline:2px solid var(--ink); outline-offset:1px; }
[data-theme="dark"] .mr-coanalyze__it:hover{ background:rgba(255,255,255,.05); }
.mr-coanalyze__it .ops-icon{ flex:none; color:var(--green-deep,var(--green-deep)); margin-top:1px; }
.mr-coanalyze__it span{ display:flex; flex-direction:column; font-size:var(--fs-sm); line-height:1.4; }
.mr-coanalyze__it b{ font-size:var(--fs-sm); color:var(--ink); font-weight:600; }
.mr-coanalyze__it small{ font-size:var(--fs-xs); color:var(--ink-3); line-height:1.35; }
@media (max-width:400px){ .mr-coanalyze__it small{ display:none; } .mr-coanalyze__it{ padding:8px; gap:8px; } }
/* ── A1: CTA-kotwica do benchmarku „Twoja oferta" (odkrywalność) ── */
.mr-jumpoffer{ display:inline-flex; align-items:center; gap:8px; margin:12px 0 18px; padding:12px 18px; min-height:44px; border-radius:11px; font-size:var(--fs-base); }
.mr-jumpoffer:hover{ filter:brightness(1.08); }
.mr-jumpoffer:focus-visible{ outline:3px solid var(--ink); outline-offset:2px; }
.mr-jumpoffer .ops-icon{ color:#fff; }
/* ── D: HEATMAPA LUKI, macierz dzielnica × metraż, kolor = |luka| (task 3) ── */
.mr-heat{ margin:18px 0 10px; }
.mr-heat__head{ display:flex; align-items:flex-start; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:8px; }
.mr-heat__tws{ display:inline-flex; gap:4px; flex-wrap:wrap; }
.mr-heat__tw{ padding:7px 12px; min-height:44px; border-radius:999px; color:var(--ink-2); display:inline-flex; align-items:center; }
.mr-heat__tw.on{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.mr-heat__tw--off{ opacity:.4; cursor:not-allowed; }
.mr-heat__tw:focus-visible{ outline:2px solid var(--ink); outline-offset:2px; }
.mr-heat__scroll{ max-width:100%; overflow-x:auto; padding-bottom:4px; }
.mr-heat__tbl{ border-collapse:separate; border-spacing:3px; }
.mr-heat__tbl th{ font-family:var(--font-sans); font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); padding:4px 6px; text-align:center; white-space:nowrap; }
.mr-heat__tbl th.mr-heat__rowh{ text-align:right; color:var(--ink-2); font-weight:700; }
.mr-heat__cell{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; min-width:64px; min-height:46px; border-radius:9px; text-decoration:none; padding:5px 4px; }
.mr-heat__v{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-size:var(--fs-base); font-weight:700; line-height:1.05; }
.mr-heat__n{ font-size:var(--fs-xs); opacity:.8; font-family:var(--font-mono); }
.mr-heat__cell--ok{ background:var(--green-deep,var(--green-deep)); color:#fff; }
.mr-heat__cell--warn{ background:#b45309; color:#fff; }
.mr-heat__cell--risk{ background:#b91c1c; color:#fff; }
.mr-heat__cell--neutral{ background:#5b6470; color:#fff; }
.mr-heat__cell--none{ background:var(--v6-surface,#eef1f3); color:var(--ink-3); }
/* „jesteś tutaj", komórka == aktywny filtr (EAA: nie tylko kolor, też outline + aria-current) */
.mr-heat__cell--here{ outline:2px solid var(--ink); outline-offset:1px; box-shadow:0 0 0 1px var(--paper); }
[data-theme="dark"] .mr-heat__cell--none{ background:rgba(255,255,255,.05); }
a.mr-heat__cell:hover{ filter:brightness(1.1); }
a.mr-heat__cell:focus-visible{ outline:3px solid var(--ink); outline-offset:2px; }
.mr-heat__leg{ display:flex; gap:14px; flex-wrap:wrap; margin-top:9px; font-size:var(--fs-sm); color:var(--ink-3); }
.mr-heat__leg--center{ justify-content:center; text-align:center; margin:10px 0 4px; }
.mr-heat__leg span{ display:inline-flex; align-items:center; gap:5px; }
/* display:inline-flex wyżej przebija atrybut hidden, a JS mapy chowa nim kropki różnicy / pasek cen */
.mr-heat__leg [hidden]{ display:none; }
/* Pasek wspólnej skali cen (tryby „Cena ofertowa” i „Cena sprzedaży”); gradient ustawia JS z tych
   samych kolorów co mapa. Obrys, bo jasny koniec paska prawie zlewa się z tłem. */
.mr-gapramp{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; color:var(--ink-2); }
/* „brak danych” w kolorze, jaki ma na mapie: COLORS.neutral (#94a0ad) z JS mapy, półprzezroczysty na jasnym
   podkładzie. Wcześniej był jasnoszary jak tło tabeli i mylił się z jasnym (tanim) końcem paska cen. */
.mr-heat__sw--none{ background:rgb(189,196,204); }
.mr-gapramp__bar{ display:inline-block; width:7.5rem; height:12px; border-radius:3px; border:1px solid var(--line); flex:none; }
/* Ranking luki (zastepuje siatke heatmapy) - czytelna lista-bar diverging od osi 0% (audyt §8) */
.mr-gaprank{ display:flex; flex-direction:column; border-radius:12px; overflow:hidden; background:var(--paper); border:1px solid var(--line); }
[data-theme="dark"] .mr-gaprank{ background:var(--v6-card); }
.mr-gaprank__row{ display:grid; grid-template-columns:150px 1fr 96px; align-items:center; gap:12px; padding:10px 16px; border-bottom:1px solid var(--line); text-decoration:none; color:inherit; min-height:44px; }
.mr-gaprank__row:last-child{ border-bottom:0; }
a.mr-gaprank__row:hover{ background:var(--paper-2); }
[data-theme="dark"] a.mr-gaprank__row:hover{ background:rgba(255,255,255,.04); }
a.mr-gaprank__row:focus-visible{ outline:2px solid var(--green-deep); outline-offset:-2px; }
.mr-gaprank__row--head{ background:var(--paper-2); font-size:var(--fs-xs); font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-3); min-height:36px; }
[data-theme="dark"] .mr-gaprank__row--head{ background:rgba(255,255,255,.04); }
.mr-gaprank__rh-r{ text-align:right; }
.mr-gaprank__row--here{ background:rgba(0,102,52,.05); box-shadow:inset 3px 0 0 var(--green-deep); }
[data-theme="dark"] .mr-gaprank__row--here{ background:rgba(0,165,81,.07); box-shadow:inset 3px 0 0 var(--green-primary); }
.mr-gaprank__lbl{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mr-gaprank__area{ display:block; font-size:var(--fs-xs); font-weight:400; color:var(--ink-3); }
.mr-gaprank__bar{ min-width:0; }
.mr-gaprank__track{ position:relative; height:8px; background:rgba(0,0,0,.06); border-radius:4px; display:block; }
[data-theme="dark"] .mr-gaprank__track{ background:rgba(255,255,255,.08); }
.mr-gaprank__track::after{ content:''; position:absolute; left:50%; top:-2px; bottom:-2px; width:1.5px; background:var(--line); }
.mr-gaprank__fill{ position:absolute; top:0; bottom:0; border-radius:4px; }
.mr-gaprank__fill--right{ left:50%; }
.mr-gaprank__fill--left{ right:50%; }
.mr-gaprank__fill--ok{ background:var(--green-deep); opacity:.8; }
.mr-gaprank__fill--warn{ background:#b45309; }
.mr-gaprank__fill--risk{ background:var(--hot,#b91c1c); }
.mr-gaprank__fill--neutral{ background:#94a0ad; opacity:.6; }
.mr-gaprank__val{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-size:var(--fs-sm); font-weight:700; text-align:right; white-space:nowrap; line-height:1.25; }
.mr-gaprank__n{ display:block; font-size:var(--fs-xs); font-weight:400; color:var(--ink-3); font-family:var(--font-mono); }
.mr-gaprank__val--ok{ color:var(--green-deep); }
.mr-gaprank__val--warn{ color:#b45309; }
.mr-gaprank__val--risk{ color:var(--hot,#b91c1c); }
.mr-gaprank__val--neutral{ color:var(--ink-3); }
.mr-gaprank__row--low{ opacity:.55; } /* P2 #3: mala proba wyszarzona (skrajny % z kilku ofert = slaby sygnal) */
.mr-gaprank__more > summary{ cursor:pointer; list-style:none; padding:11px 16px; font-size:var(--fs-sm); font-weight:600; color:var(--green-deep); min-height:44px; display:flex; align-items:center; gap:6px; border-top:1px solid var(--line); }
.mr-gaprank__more > summary::-webkit-details-marker{ display:none; }
.mr-gaprank__more > summary::after{ content:'▾'; font-size:.75em; }
.mr-gaprank__more[open] > summary::after{ content:'▴'; }
a.mr-gaprank__more > summary:hover, .mr-gaprank__more > summary:hover{ background:var(--paper-2); }
.mr-gaprank__more > summary:focus-visible{ outline:2px solid var(--green-deep); outline-offset:-2px; }
[data-theme="dark"] .mr-gaprank__more > summary{ color:var(--green-primary,#3ddc8a); }
[data-theme="dark"] .mr-gaprank__more > summary:hover{ background:rgba(255,255,255,.04); }
[data-theme="dark"] .mr-gaprank__val--ok{ color:#3ddc8a; }
/* EAA: #b45309 na ciemnym tle ~3.8:1 (FAIL 4.5:1) -> jaśniejszy amber w dark (audyt a11y 2026-07-01) */
[data-theme="dark"] .mr-gaprank__val--warn{ color:#e0a33a; }
[data-theme="dark"] .mr-gaprank__val--risk{ color:#ff7e84; }
.mr-gaprank__empty{ grid-column:1/-1; color:var(--ink-3); font-size:var(--fs-sm); }
@media (max-width:520px){ .mr-gaprank__row{ grid-template-columns:104px 1fr 64px; gap:8px; padding:9px 12px; } }
.mr-heat__sw{ width:12px; height:12px; border-radius:3px; display:inline-block; flex:none; }
/* Mapa luki oferta<->RCN (choropleth dzielnic, Leaflet) */
/* `z-index:0` NIE jest ozdobnikiem: Leaflet nadaje swoim panelom z-index 400-1000, a kontener ma
   `position:relative` z `z-index:auto`, czyli NIE tworzy kontekstu układania. Panele konkurowały
   wtedy wprost z dolną nawigacją mobilną (`.v6-mobile-nav`, z-index 50) i mapa rysowała się NAD
   paskiem. Zero zamyka je w kontenerze. Ten sam zabieg powtórz przy każdej nowej mapie Leaflet. */
.mr-gapmap{ height:440px; border-radius:14px; border:1px solid var(--line); overflow:hidden; margin:6px 0 12px; background:var(--paper-2); position:relative; z-index:0; }
.mr-gapmap .leaflet-interactive:focus{ outline:2px solid var(--green-deep); outline-offset:1px; }
.mr-gapmap__svg{ width:100%; height:100%; display:block; background:linear-gradient(180deg,#f7faf8,#eef4f0); }
.mr-gapmap__svg path{ cursor:pointer; transition:fill-opacity .12s ease, stroke-width .12s ease; }
.mr-gapmap__svg path:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-gapmap__tip{ font-family:var(--font-sans); font-size:var(--fs-xs); line-height:1.45; }
/* Podpisy dzielnic na mapie różnicy (2026-09-21): sam tekst z białą obwódką, bez pudełka i tła:
   pastylka zasłaniałaby kolor dzielnicy, który jest tu nośnikiem informacji. Mapa jest jasna w obu
   motywach (kafle CARTO light), więc kolor podpisu jest stały. */
.mr-gapmap__lbl{ font-family:var(--font-sans); font-size:11px; font-weight:700; line-height:1.1; color:#1a2b22;
  white-space:nowrap; text-align:center; pointer-events:none; background:none; border:0;
  text-shadow:0 0 3px #fff, 0 0 3px #fff, 0 1px 2px rgba(255,255,255,.9); }
.mr-gapmap__lbl.is-here{ font-size:12px; color:#000; text-decoration:underline; text-underline-offset:2px; }
/* divIcon ma domyślnie 12×12 px i pozycjonuje się lewym górnym rogiem, więc centrujemy tekst na punkcie */
.leaflet-marker-icon.mr-gapmap__lbl{ width:auto !important; height:auto !important; margin:0 !important;
  transform-origin:center; translate:-50% -50%; }
.mr-gapmap__tip b{ font-size:var(--fs-sm); }
.mr-gapmap__tipnote{ opacity:.7; }
.mr-gapmap__empty{ display:flex; align-items:center; justify-content:center; height:100%; color:var(--ink-3); font-size:var(--fs-sm); text-align:center; padding:20px; }
.mr-gapmap__ctrls{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:2px 0 8px; }
.mr-gapmap__modes{ display:inline-flex; align-items:center; gap:8px; }
.mr-databanner{ display:flex; align-items:center; gap:8px; margin:0 0 14px; padding:10px 14px; border-radius:10px; border:1px solid var(--amber-line,#e6c589); background:var(--amber-bg,#fbf3e2); color:var(--amber-ink,#7a5713); font-size:var(--fs-sm); }
.mr-databanner .ops-icon{ flex:none; }
[data-theme="dark"] .mr-databanner{ border-color:#5a4a20; background:rgba(224,163,58,.12); color:#e0a33a; }
.mr-gapmap__ctrllbl{ font-size:var(--fs-xs); color:var(--ink-3); font-weight:600; }
.mr-gapmap__mode{ font-size:var(--fs-sm); font-weight:600; padding:6px 12px; min-height:36px; display:inline-flex; align-items:center; border-radius:8px; border:1px solid var(--line); background:transparent; color:var(--ink-2); cursor:pointer; }
.mr-gapmap__mode.on{ background:var(--green-deep); color:#fff; border-color:var(--green-deep); }
.mr-gapmap__mode:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-gapmap__go{ display:inline-flex; align-items:center; min-height:40px; margin-top:8px; font-weight:700; color:var(--green-deep); text-decoration:none; }
.mr-gapmap__go:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-gapmap__price{ display:inline-flex; align-items:center; gap:6px; }
.mr-gapmap__price input{ width:66px; min-height:44px; padding:4px 8px; border:1px solid var(--line); border-radius:8px; font-size:var(--fs-sm); background:var(--paper); color:var(--ink); }
.mr-gapmap__price input:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
.mr-gapmap__leg{ font-size:var(--fs-xs); color:var(--ink-3); margin-left:auto; }
/* Mobile (audyt 2026-07-01): mapy 440/380px zjadaly ekran; tap-targety <44px lamaly EAA (Rule 13). */
@media (max-width:640px){
  .mr-gapmap{ height:300px; }
  #mrMap{ height:280px; }
  .mr-gapmap__mode{ min-height:44px; }
  .mr-gapmap__ctrls{ gap:6px; }
}
.mr-gaprank--under summary{ cursor:pointer; font-size:var(--fs-sm); color:var(--ink-2); font-weight:600; margin:2px 0 8px; }
/* „?" popover: chowa teksty pomocnicze/objasnienia (noty metodologiczne, podpisy sekcji), zero szumu na
   ekranie danych. Wzorzec bliźniaczy do „Score Adama" na Dziś (today.html cc-q/cc-pop). EAA: natywny
   button (Enter/Space), aria-expanded, focus-visible, hit-area >=44px przez ::before (bez zmiany wygladu). */
.mr-qwrap{ position:relative; top:-0.14em; display:inline-block; vertical-align:middle; }
.mr-q{ position:relative; display:inline-flex; align-items:center; justify-content:center; width:1.3em; height:1.3em; border-radius:50%; border:1px solid var(--line); background:transparent; color:var(--ink-3); font-family:var(--font-sans); font-size:0.72em; font-weight:600; line-height:1; cursor:pointer; padding:0; vertical-align:middle; flex:none; }
.mr-q::before{ content:""; position:absolute; top:50%; left:50%; width:44px; height:44px; transform:translate(-50%,-50%); }
.mr-q:hover{ color:var(--ink); border-color:var(--ink-3); }
.mr-q:focus-visible{ outline:2px solid var(--v6-focus); outline-offset:2px; }
.mr-q[aria-expanded="true"]{ color:var(--green-deep); border-color:var(--green-deep); }
.mr-pop{ position:absolute; z-index:1000; top:calc(100% + 8px); left:0; min-width:230px; max-width:340px; background:var(--paper); border:1px solid var(--line); border-radius:var(--r-md); box-shadow:0 8px 24px rgba(10,31,21,.12); padding:13px 15px; font-size:var(--fs-sm); line-height:1.5; color:var(--ink-2); font-weight:400; font-style:normal; text-align:left; white-space:normal; letter-spacing:normal; text-transform:none; }
[data-theme="dark"] .mr-pop{ box-shadow:0 10px 28px rgba(0,0,0,.5); }
/* Dymek pomocy w nagłówku tabeli porównywalnych: „?" obok słowa, treść normalnym tekstem (nie kapitaliki). */
.mr-cmp__tbl th .mr-qwrap{ margin-left:4px; }
.mr-cmp__tbl th.mr-th-popr .mr-pop{ left:auto; right:0; }
.mr-pop[hidden]{ display:none; }
.mr-pop b{ color:var(--ink); font-weight:700; }
.mr-qline{ display:flex; justify-content:flex-end; margin-top:8px; }
.mr-qline .mr-pop{ left:auto; right:0; }
/* #9 (founder): popover „?" przy nagłówku mapy luki był PRZYCIĘTY - renderował się ZA warstwami
   Leaflet (z-index podniesiony wyżej na .mr-pop) i uciekał w prawo; kotwiczymy do prawej krawędzi. */
.mr-heat__head .mr-pop{ left:auto; right:0; }
.mr-heat__stan{ flex:1 1 100%; font-size:var(--fs-xs); color:var(--ink-3); margin-top:-4px; }
/* Mapa różnicy = JEDEN równy blok (Nikodem 2026-09-18): siatka 2×2 w jednej karcie, liniami podziału zamiast osobnych kafli;
   kolumny rozciągnięte do wysokości wiersza (mapa | kafle segmentu + wniosek; ranking | szybkie porównanie). */
.mr-heat__sub{ flex:1 1 100%; font-size:var(--fs-sm); color:var(--ink-3); margin-top:-2px; }
.mr-heat__sub b{ color:var(--ink-2); font-weight:600; }
.mr-gapgrid{ display:grid; grid-template-columns:minmax(0,72fr) minmax(240px,28fr); gap:0; align-items:stretch; border:1px solid var(--line); border-radius:var(--r-lg,14px); background:var(--paper); overflow:hidden; }
[data-theme="dark"] .mr-gapgrid{ background:var(--v6-card); }
.mr-gapgrid__map{ min-width:0; padding:14px 16px 10px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.mr-gapgrid__map .mr-gapmap{ height:400px; }
.mr-gapgrid__side{ display:flex; flex-direction:column; gap:8px; min-width:0; padding:14px 14px 12px; border-bottom:1px solid var(--line); }
.mr-gapgrid__side .mr-metric{ flex:1 1 0; display:flex; flex-direction:column; justify-content:center; border:1px solid var(--line); background:var(--paper-2); padding:10px 14px; }
.mr-gapgrid__side .mr-metric__v{ font-size:var(--fs-xl); margin:3px 0 2px; }
[data-theme="dark"] .mr-gapgrid__side .mr-metric{ background:var(--v6-card-2, var(--v6-card)); }
.mr-gapkpi__h{ font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:700; color:var(--ink); margin:4px 0 3px; line-height:1.35; }
.mr-gapkpi .mr-metric__v{ font-size:var(--fs-2xl); }
.mr-gapkpi--ok .mr-metric__v{ color:var(--green-deep); }
.mr-gapkpi--warn .mr-metric__v{ color:#b45309; }
.mr-gapkpi--risk .mr-metric__v{ color:#b91c1c; }
[data-theme="dark"] .mr-gapkpi--warn .mr-metric__v{ color:#e0a33a; }
[data-theme="dark"] .mr-gapkpi--risk .mr-metric__v{ color:#ff7e84; }
.mr-gapkpi .mr-metric__n b{ color:var(--ink); }
/* Tabela dzielnic zostaje w LEWEJ kolumnie, a „Szybkie porownanie" w prawym dolnym rogu
   (Nikodem 2026-09-22: najpierw przenieslismy je do gornego kwadratu, potem cofnal decyzje). */
.mr-gapgrid__rank{ min-width:0; border-right:1px solid var(--line); }
.mr-gapgrid__rank .mr-gaprank{ border:0; border-radius:0; height:100%; background:transparent; }
.mr-gapgrid__rank + .mr-gapgrid__side{ border-bottom:0; padding:0; }
.mr-gapgrid .mr-breakdown__side{ display:flex; flex-direction:column; flex:1 1 auto; gap:0; padding:6px 20px; border:0; box-shadow:none; border-radius:0; background:transparent; }
.mr-gapgrid .mr-breakdown__side .mr-breakdown__fact{ flex:1 1 0; justify-content:center; padding:6px 0; gap:1px; }
.mr-gapgrid .mr-breakdown__side .mr-breakdown__fact b{ font-size:var(--fs-sm); }
/* panel „Podsumowanie rynku” obok mapy: trzy KPI + wniosek w jednej ramce (Nikodem 2026-09-18) */
/* Tytul panelu WYZEJ i WIEKSZY (Nikodem 2026-09-22). Wczesniej `space-evenly` spychalo go
   do srodka kolumny, przez co zaczynal sie nizej niz mapa obok, a rozmiarem nie rozni sie
   od etykiet pod nim. Teraz tresc idzie od gory, a tytul ma range naglowka sekcji. */
.mr-mkts{ display:flex; flex-direction:column; flex:1 1 auto; gap:10px; justify-content:flex-start; }
.mr-mkts__h{ font-size:var(--fs-lg); font-weight:700; letter-spacing:0; text-transform:none; color:var(--ink); }
.mr-mkts__h span{ font-weight:500; letter-spacing:0; text-transform:none; color:var(--ink-3); margin-left:7px; font-size:var(--fs-sm); }
/* Dwa bloki dokladane 2026-09-22 w wolna przestrzen panelu: zakres transakcyjny i rozklad
   dzielnic. Kreska u gory oddziela je od KPI tak samo, jak KPI sa oddzielone miedzy soba. */
.mr-mkts__zakres, .mr-mkts__relacja{ border-top:1px solid var(--line); padding-top:12px; }
.mr-mkts__do{ font-size:var(--fs-base); font-weight:500; color:var(--ink-3); margin:0 2px; }
.mr-rel__bar{ display:flex; gap:3px; height:10px; margin:8px 0 9px; }
.mr-rel__seg{ display:block; border-radius:3px; min-width:4px; }
/* Kolory NIOSA znaczenie i sa te same co na mapie: pomaranczowy = wyrazna roznica,
   zielony = blisko cen transakcyjnych, szary = ponizej (rzadkie, bez wlasnego koloru na mapie). */
.mr-rel__seg--drozej{ background:#b45309; }
.mr-rel__seg--blisko{ background:var(--green-deep); }
.mr-rel__seg--taniej{ background:var(--ink-3); }
.mr-rel__leg{ display:flex; flex-wrap:wrap; gap:4px 14px; font-size:var(--fs-xs); color:var(--ink-3); }
.mr-rel__leg b{ color:var(--ink); font-variant-numeric:tabular-nums; margin-right:3px; }
.mr-rel__kropka{ display:inline-block; width:8px; height:8px; border-radius:2px; margin-right:6px; vertical-align:0; }
.mr-mkts__pair{ display:flex; flex-direction:column; gap:10px; }
.mr-mkts__pair > div + div{ border-top:1px solid var(--line); padding-top:10px; }
.mr-mkts__l{ font-size:var(--fs-xs); color:var(--ink-3); }
.mr-mkts__v{ font-family:var(--font-mono); font-size:var(--fs-2xl); font-weight:700; color:var(--ink); margin:2px 0 1px; font-variant-numeric:tabular-nums; }
.mr-mkts__m{ font-size:var(--fs-xs); color:var(--ink-3); line-height:1.4; }
.mr-mkts__m b{ color:var(--ink); }
.mr-mkts__gap{ border-top:1px solid var(--line); padding-top:10px; }
.mr-mkts__big{ font-family:var(--font-mono); font-size:var(--fs-3xl, 2.25rem); font-weight:700; line-height:1.1; color:var(--green-deep); display:flex; align-items:baseline; gap:10px; font-variant-numeric:tabular-nums; margin:2px 0; }
.mr-mkts__big small{ font-size:var(--fs-base); font-weight:600; color:var(--ink-2); }
.mr-mkts__sep{ color:var(--line); font-weight:400; }
.mr-gapkpi--warn .mr-mkts__big{ color:#b45309; }
.mr-gapkpi--risk .mr-mkts__big{ color:#b91c1c; }
[data-theme="dark"] .mr-gapkpi--warn .mr-mkts__big{ color:#e0a33a; }
[data-theme="dark"] .mr-gapkpi--risk .mr-mkts__big{ color:#ff7e84; }
.mr-mkts__ih{ font-size:var(--fs-sm); font-weight:700; color:var(--ink); line-height:1.35; margin:2px 0; }
.mr-heat__hint{ flex:1 1 100%; justify-content:center; font-style:italic; }
.mr-gaprank__axis{ display:flex; justify-content:center; gap:8px; text-transform:none; letter-spacing:0; }
.mr-gaprank__axis em{ font-style:normal; color:var(--ink-3); font-weight:500; }
.mr-gapgrid .mr-breakdown__side .mr-breakdown__fact:first-child{ flex:0 0 auto; }
.mr-gapgrid .mr-breakdown__side .mr-breakdown__fact:first-child span{ color:var(--ink); }
@media (max-width:920px){
  .mr-gapgrid{ grid-template-columns:1fr; }
  .mr-gapgrid__map, .mr-gapgrid__rank{ border-right:0; }
  .mr-gapgrid__rank{ border-bottom:1px solid var(--line); }
}
/* Mobile: „?" jest w środku nagłówka (pełna szerokość), więc absolutny popover wychodziłby poza ekran.
   Na wąskim ekranie robimy z niego dolny arkusz (bottom-sheet): zawsze w viewport, kciukiem w zasięgu. */
@media (max-width:640px){
  .mr-pop{ position:fixed; left:12px; right:12px; bottom:12px; top:auto; min-width:0; max-width:none; width:auto; z-index:60; box-shadow:0 -6px 28px rgba(10,31,21,.22); }
  [data-theme="dark"] .mr-pop{ box-shadow:0 -6px 28px rgba(0,0,0,.6); }
  .mr-qline .mr-pop{ left:12px; right:12px; }
}
/* ── Data-confidence card (metadane liczby: źródło / aktualność / próba / definicja / opóźnienie).
   Wpięta w „?" przy kluczowych liczbach RCN/AVM. Reużywa mr-q/mr-pop (toggle + a11y wspólne). ── */
.mr-metric__l .mr-qwrap{ margin-left:5px; }
/* Kafle metryk siedzą w gridzie (dowolna kolumna) → popover z left:0 uciekał za prawą krawędź
   przy prawej kolumnie. Kotwiczymy do prawej krawędzi kafla; treść (~960px) > popover, więc
   rozwija się w lewo bez ucięcia przy każdej kolumnie. Mobile: i tak bottom-sheet niżej. */
.mr-metric__l .mr-pop{ left:auto; right:0; }
.mr-dconf{ min-width:250px; }
.mr-dconf__row{ display:block; margin:0 0 9px; }
.mr-dconf__row:last-child{ margin-bottom:0; }
.mr-dconf__row b{ display:block; font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.05em; color:var(--ink-3); font-weight:700; margin-bottom:1px; }
.mr-dconf__row > span{ display:block; color:var(--ink-2); }
.mr-todo{ color:#b45309; font-style:italic; font-weight:600; }
[data-theme="dark"] .mr-todo{ color:#e0a33a; }

   /* Jedna karta na caly profil okolicy (Nikodem 2026-09-23): te same tokeny ramki co
      `.mr-gapgrid` przy Analizie dzielnicy, zeby oba rozdzialy czytaly sie tak samo. */
   .mr-okolkarta{border:1px solid var(--line);border-radius:var(--r-lg,14px);background:var(--paper);
     padding:16px 18px 18px;margin:6px 0 10px}
   [data-theme="dark"] .mr-okolkarta{background:var(--v6-card)}
   .mr-okolkarta > .mr-aspects:first-child{margin-top:0}
   .mr-okolkarta .mr-okwrap{margin:0}
   @media(max-width:640px){.mr-okolkarta{padding:12px 12px 14px}}
   .mr-aspects{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 14px}
   .mr-aspect{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--paper-2);color:var(--ink-2);font-size:var(--fs-sm);font-weight:700;cursor:pointer;text-align:left;min-height:48px;font-family:inherit}
   .mr-aspect .ops-icon{flex:none;color:var(--ink-3)}
   .mr-aspect:hover{border-color:var(--green-deep)}
   .mr-aspect:focus-visible{outline:2px solid var(--green-deep);outline-offset:2px}
   .mr-aspect--on{border-color:var(--green-deep);background:var(--green-deep);color:#fff}
   .mr-aspect--on .ops-icon{color:#fff}
   .mr-okwrap{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start;margin:6px 0}
   .mr-layermap{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line);height:460px}
   .mr-layermap #mrMapWrap{height:100%}
   .mr-layermap #mrMap{height:100%;width:100%}
   .mr-mapnote{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:500;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:7px 16px;font-size:var(--fs-sm);font-weight:700;color:var(--ink-2);box-shadow:0 2px 12px rgba(0,0,0,.10);white-space:nowrap;max-width:92%;overflow:hidden;text-overflow:ellipsis}
   .mr-recenter{position:absolute;top:12px;right:12px;z-index:500;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink-2);cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.12)}
   .mr-recenter:hover{color:var(--ink);background:var(--paper-2)}
   .mr-recenter:focus-visible{outline:2px solid var(--green-deep);outline-offset:2px}
   /* Wariant w kontrolce Leaflet (mapa dzielnic): pozycję trzyma kontrolka, nie absolute. */
   .mr-recenter--gap{position:static;top:auto;right:auto;font-family:inherit}
   /* #mrInfo = jeden blok u gory kolumny danych: domyslnie opis warstwy, po kliknieciu na mapie dane elementu */
   .mr-info{margin-top:12px}
   .mr-info span{white-space:pre-line}
   .mr-desc{display:none}  /* ukryte zrodlo domyslnego opisu per warstwa (JS kopiuje do #mrInfo) */
   .mr-layerdata{margin:0}
   .mr-poilayout{display:block}
   .mr-poilayout .mr-poi{margin-top:14px}
   .mr-ldstats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
   .mr-ldkv{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--paper-2)}
   .mr-ldkv b{display:block;font-size:var(--fs-md);color:var(--ink);line-height:1.3;margin-bottom:4px}
   .mr-ldkv span{display:block;font-size:var(--fs-sm);color:var(--ink-3);line-height:1.45}
   .mr-subtabs{display:flex;gap:6px;margin-bottom:10px;border:1px solid var(--line);border-radius:10px;padding:3px;background:var(--paper-2)}
   .mr-subtab{flex:1 1 0;border:0;background:transparent;border-radius:8px;padding:7px 8px;font-size:var(--fs-sm);font-weight:700;color:var(--ink-3);cursor:pointer;font-family:inherit;min-height:38px;line-height:1.2;text-align:center;display:inline-flex;align-items:center;justify-content:center}
   .mr-subtab--on{background:var(--green-deep);color:#fff}
   .mr-mpzpleg{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:10px;font-size:var(--fs-xs);color:var(--ink-2)}
   .mr-mpzpleg span{display:inline-flex;align-items:center;gap:5px}
   .mr-mpzpleg i{width:12px;height:12px;border-radius:3px;border:1px solid rgba(0,0,0,.18);flex:none}
   /* legenda-filtr warstwy rynku: przyciski wygladaja jak wpisy legendy, klik filtruje piny */
   .mr-mpzpleg .mr-legtgl{display:inline-flex;align-items:center;gap:5px;font:inherit;color:inherit;background:none;border:0;padding:2px 4px;border-radius:8px;cursor:pointer}
   .mr-mpzpleg .mr-legtgl:hover{text-decoration:underline}
   .mr-mpzpleg .mr-legtgl:focus-visible{outline:2px solid var(--green-deep);outline-offset:2px}
   .mr-mpzpleg .mr-legtgl[aria-pressed="true"]{font-weight:700;color:var(--ink)}
   .mr-mpzpleg .mr-legtgl.off{opacity:.35}
   /* Legenda POD MAPĄ (zmienia się z aktywną warstwą): mapa + legenda w jednej kolumnie gridu. */
   .mr-mapcol{min-width:0}
   .mr-maplegend{margin-top:10px;min-height:20px}
   .mr-maplegend .mr-mpzpleg{margin-top:0;font-size:var(--fs-sm)}
   /* Dymek danych przy najechaniu na pin/strefę (hover): tytuł pogrubiony + jedna szeroka linia szczegółów. */
   .leaflet-tooltip.mr-maptip{white-space:normal;width:max-content;max-width:340px;font-size:var(--fs-sm);line-height:1.45;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink);box-shadow:0 4px 16px rgba(10,31,21,.14);font-weight:400}
   .leaflet-tooltip.mr-maptip .mr-tiptitle{display:block;font-weight:700;color:var(--ink);margin-bottom:2px}
   .leaflet-tooltip.mr-maptip .mr-tipdetail{display:block;color:var(--ink-2)}
   /* Etykieta MPZP NA STAŁE na geometrii (nazwa planu / symbol): bez tła, biały halo, nie łapie klików. */
   .leaflet-tooltip.mr-maplbl{background:transparent;border:0;box-shadow:none;padding:0;margin:0;font-size:var(--fs-xs);font-weight:700;color:var(--ink);text-shadow:0 0 3px var(--paper),0 0 3px var(--paper),0 0 3px var(--paper);white-space:normal;max-width:150px;text-align:center;line-height:1.2;pointer-events:none}
   .leaflet-tooltip.mr-maplbl::before{display:none}
   .mr-hidesym .leaflet-tooltip.mr-maplbl--sym{display:none}  /* symbole ukryte przy oddaleniu (odtłoczenie) */
   [data-theme="dark"] .leaflet-tooltip.mr-maptip{box-shadow:0 6px 20px rgba(0,0,0,.5)}
   .mr-maptip.leaflet-tooltip-top::before{border-top-color:var(--paper)}
   .mr-maptip.leaflet-tooltip-bottom::before{border-bottom-color:var(--paper)}
   .mr-maptip.leaflet-tooltip-left::before{border-left-color:var(--paper)}
   .mr-maptip.leaflet-tooltip-right::before{border-right-color:var(--paper)}
   /* KLUCZOWE: klasa .mr-mpzpleg ma display:flex, który nadpisuje [hidden] z UA. Wymuszamy ukrycie. */
   .mr-mpzpleg[hidden]{display:none}
   @media(max-width:820px){.mr-okwrap{grid-template-columns:1fr}.mr-layermap{height:380px}}
   @media(max-width:640px){.mr-aspects{grid-template-columns:1fr 1fr}.mr-ldstats{grid-template-columns:1fr 1fr}}
  

   /* ── Analizowane mieszkanie: jeden blok zamiast trzech luznych (makieta Nikodema 2026-09-23) ──
      Uklad: naglowek z cena → werdykt obok punktow odniesienia → pasek pozycji → wniosek.
      Formularz chowa sie za „Edytuj dane", bo po wpisaniu ceny agent patrzy na wynik, nie na pola. */
   .mr-ofr{ border:1px solid var(--line); border-radius:16px; padding:20px; background:var(--paper-2); margin:6px 0 10px; }
   .mr-ofr__top{ display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap; }
   .mr-ofr__ico{ flex:none; width:48px; height:48px; border-radius:12px; border:1px solid var(--line);
     display:flex; align-items:center; justify-content:center; color:var(--green-deep); }
   .mr-ofr__hd{ flex:1 1 260px; min-width:0; }
   .mr-ofr__eyebrow{ font-size:var(--fs-xs); font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); }
   .mr-ofr__tytul{ font-family:var(--font-sans); font-size:var(--fs-xl,1.6rem); font-weight:700; color:var(--ink); line-height:1.2; margin-top:2px; }
   .mr-ofr__pod{ font-size:var(--fs-sm); color:var(--ink-3); margin-top:4px; }
   .mr-ofr__edit{ flex:none; display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0 16px;
     font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:600; color:var(--ink);
     background:transparent; border:1px solid var(--line); border-radius:var(--r-md,10px); cursor:pointer; }
   .mr-ofr__edit:hover{ background:var(--paper); }
   .mr-ofr__edit:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }

   /* Werdykt + punkty odniesienia w jednym rzedzie; ponizej 900 px jedno pod drugim. */
   .mr-ofr__grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px; margin-top:18px; }
   @media (max-width:900px){ .mr-ofr__grid{ grid-template-columns:1fr; } }
   .mr-ofr__karta{ border:1px solid var(--line); border-radius:14px; padding:18px; background:var(--paper); }
   [data-theme="dark"] .mr-ofr__karta{ background:rgba(255,255,255,.02); }

   /* Werdykt: pastylka z OBRYSEM, nie wypelniona (Rule 13: kolor znaczy, nie dekoruje). */
   .mr-ofr__badge{ display:inline-flex; align-items:center; gap:8px; padding:6px 14px; border-radius:999px;
     font-size:var(--fs-sm); font-weight:600; border:1px solid currentColor; }
   .mr-ofr__badge--ok{ color:var(--green-deep); }
   .mr-ofr__badge--uwaga{ color:var(--v6-danger,#b45309); }
   .mr-ofr__big{ font-family:var(--font-sans); font-weight:700; font-size:clamp(2.4rem,6vw,3.6rem);
     line-height:1.05; color:var(--green-deep); margin:16px 0 10px; }
   .mr-ofr__big span{ font-size:.42em; font-weight:700; margin-left:.15em; }
   .mr-ofr__opis{ font-size:var(--fs-base); color:var(--ink-2); line-height:1.5; }

   /* Punkty odniesienia: wiersz = ikona, nazwa, liczba, roznica. Roznica to KOLOROWY TEKST. */
   .mr-ofr__refh{ display:flex; align-items:center; gap:8px; font-size:var(--fs-md); font-weight:700; color:var(--ink); margin-bottom:12px; }
   .mr-ofr__ref{ display:flex; align-items:center; gap:12px; padding:11px 12px; border:1px solid var(--line); border-radius:10px; margin-bottom:8px; }
   .mr-ofr__ref:last-child{ margin-bottom:0; }
   .mr-ofr__ref .ops-icon{ flex:none; color:var(--ink-3); }
   .mr-ofr__refn{ flex:1 1 auto; min-width:0; font-size:var(--fs-sm); color:var(--ink-2); }
   .mr-ofr__refv{ flex:none; font-weight:700; color:var(--ink); white-space:nowrap; }
   .mr-ofr__refv small{ font-weight:400; color:var(--ink-3); font-size:.8em; margin-left:2px; }
   .mr-ofr__refd{ flex:none; min-width:3.6em; text-align:right; font-weight:600; font-size:var(--fs-sm); white-space:nowrap; }
   .mr-ofr__refd--taniej{ color:var(--green-deep); }
   .mr-ofr__refd--drozej{ color:var(--v6-danger,#b45309); }
   @media (max-width:560px){
     .mr-ofr__ref{ flex-wrap:wrap; row-gap:2px; }
     .mr-ofr__refn{ flex:1 1 100%; order:-1; }
     .mr-ofr__refv{ flex:1 1 auto; }
   }

   .mr-ofr__sekcja{ border:1px solid var(--line); border-radius:14px; padding:18px; margin-top:14px; background:var(--paper); }
   [data-theme="dark"] .mr-ofr__sekcja{ background:rgba(255,255,255,.02); }
   .mr-ofr__sekh{ display:flex; align-items:center; gap:8px; font-size:var(--fs-md); font-weight:700; color:var(--ink); margin-bottom:14px; }
   .mr-ofr__wn{ font-family:var(--font-sans); font-size:var(--fs-lg,1.15rem); font-weight:700; color:var(--green-deep); margin-bottom:6px; }
   .mr-ofr__wntxt{ font-size:var(--fs-base); color:var(--ink-2); line-height:1.55; }

   /* Prowizja: stopka bloku, wizualnie oddzielona kreska, nie osobna karta. */
   .mr-ofr__prow{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:14px; padding-top:14px;
     border-top:1px solid var(--line); font-size:var(--fs-sm); color:var(--ink-2); }
   .mr-ofr__prow b{ color:var(--ink); }
   .mr-ofr__prow span{ color:var(--ink-3); }

   /* Stan pusty: ten sam układ, tylko bez liczb. Agent widzi, co dostanie, zanim cokolwiek
      wpisze (makieta Nikodema 2026-09-23). Zaślepki są SZARE i nieruchome: nie udają
      ładowania, bo nic się nie ładuje. */
   .mr-ofr--pusty .mr-ofr__big{ color:var(--ink); font-size:clamp(1.6rem,3.6vw,2.2rem); }
   .mr-ofr__szkielet{ height:10px; border-radius:999px; background:var(--line); margin-top:10px; }
   .mr-ofr__szkielet--krotki{ width:46%; }
   /* Zaslepka „brak wartosci" rysowana STYLEM, nie znakiem: mysliniki sa w repo zakazane
      (straznik test_pauzy_w_copy), a obchodzenie go encja HTML byloby oszukiwaniem wlasnego testu. */
   .mr-ofr__brak{ display:inline-block; width:16px; height:2px; border-radius:2px;
     background:var(--ink-3); vertical-align:middle; }
   .mr-ofr__czeka{ display:flex; align-items:center; justify-content:center; gap:8px;
     color:var(--ink-3); font-size:var(--fs-sm); padding:10px 0; }
   .mr-ofr__czeka .ops-icon{ flex:none; }

   /* Dolna część: wniosek, argument, prowizja. Wszystko w tym samym bloku, bez kolorowych
      kresek z lewej i bez wypełnionych tintów (Rule 13: kolor znaczy, nie dekoruje). */
   .mr-ofr__wnh{ font-size:var(--fs-md); font-weight:700; color:var(--ink); }
   .mr-ofr__wntyt{ font-family:var(--font-sans); font-size:var(--fs-lg,1.15rem); font-weight:700;
     color:var(--green-deep); margin:8px 0 6px; }
   .mr-ofr__akcje{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:16px; }
   .mr-ofr__akcja{ display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0 18px;
     font-family:var(--font-sans); font-size:var(--fs-sm); font-weight:600; border-radius:var(--r-md,10px);
     border:1px solid var(--line); background:transparent; color:var(--ink); cursor:pointer; text-decoration:none; }
   .mr-ofr__akcja:hover{ background:var(--paper-2); }
   .mr-ofr__akcja:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
   .mr-ofr__akcja--glowna{ background:var(--green-deep); border-color:var(--green-deep); color:#fff; }
   .mr-ofr__akcja--glowna:hover{ filter:brightness(1.06); background:var(--green-deep); }
   .mr-ofr__akcja[disabled]{ opacity:.45; cursor:not-allowed; }
   /* Wysyłka i eksport w rozwijanym: makieta ma trzy przyciski, a akcji jest sześć. */
   .mr-ofr__wys{ position:relative; }
   .mr-ofr__wys > summary{ list-style:none; }
   .mr-ofr__wys > summary::-webkit-details-marker{ display:none; }
   .mr-ofr__wysbox{ position:absolute; z-index:20; top:calc(100% + 6px); left:0; min-width:250px;
     padding:6px; background:var(--paper); border:1px solid var(--line); border-radius:12px;
     box-shadow:0 10px 30px rgba(0,0,0,.18); display:flex; flex-direction:column; gap:2px; }
   .mr-ofr__wysbox a, .mr-ofr__wysbox button{ justify-content:flex-start; border:0; width:100%; }
   @media (max-width:560px){
     .mr-ofr__wysbox{ left:auto; right:0; min-width:0; width:max-content; max-width:calc(100vw - 48px); }
   }
   /* Podpis pinu „Twoja oferta" stoi NAD paskiem, więc pasek potrzebuje zapasu u góry:
      inaczej podpis wchodzi na nagłówek sekcji (złapane zrzutem 2026-09-23). */
   .mr-ofr__sekcja .mr-ladder{ margin-top:30px; }
  

   .mr-example{position:relative;border:1px dashed var(--green-deep);border-radius:16px;padding:20px 18px 16px;margin-top:6px;background:rgba(0,102,52,.04)}
   .mr-example__tag{position:absolute;top:-11px;left:18px;background:var(--green-deep);color:#fff;font-size:var(--fs-xs);font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:3px 12px;border-radius:999px}
   .mr-example__lead{font-size:var(--fs-base);color:var(--ink-2);line-height:1.55;margin-bottom:16px}
   .mr-example__leadh{display:block;font-size:var(--fs-md);color:var(--ink);margin-bottom:5px}
   .mr-example__hint{display:flex;align-items:center;gap:7px;font-size:var(--fs-sm);color:var(--ink-3);margin-top:10px;cursor:not-allowed}
   .mr-bmarg--ex{opacity:.97}
   .mr-locked{opacity:.5;cursor:not-allowed}
   /* Przykład zwinięty do jednej linijki (Nikodem 2026-09-23): stan pusty pokazuje już cały
      układ ze szkieletami, więc rozwinięty przykład dublował treść i spychał formularz w dół.
      <details> działa bez JS, więc bez skryptu nic nie znika, tylko jest rozwinięte. */
   .mr-example[open] > summary{ margin-bottom:14px; }
   .mr-example > summary{ list-style:none; cursor:pointer; display:flex; align-items:center; gap:10px;
     font-size:var(--fs-sm); color:var(--ink-2); min-height:44px; }
   .mr-example > summary::-webkit-details-marker{ display:none; }
   .mr-example > summary:focus-visible{ outline:2px solid var(--green-deep); outline-offset:2px; }
   .mr-example > summary b{ color:var(--ink); }
   .mr-example__chev{ margin-left:auto; color:var(--ink-3); font-size:var(--fs-sm); }
   .mr-example[open] .mr-example__chev::after{ content:'zwiń'; }
   .mr-example:not([open]) .mr-example__chev::after{ content:'zobacz przykład'; }
  

   /* tokenizowane (P2): bez hardcode, respektuje motyw jasny/ciemny */
   .mr-arg{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0 12px}
   .mr-arg__col{padding:14px 16px 8px;border:1px solid var(--line);border-radius:14px;background:var(--paper-2)}
   .mr-arg__h{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:700;letter-spacing:.02em;margin:0 0 8px;padding-bottom:9px;border-bottom:1px solid var(--line)}
   .mr-arg__col--def .mr-arg__h{color:var(--green-deep)}
   .mr-arg__col--warn .mr-arg__h{color:#b6862c}
   .mr-arg__li{position:relative;font-size:var(--fs-sm);line-height:1.5;padding:7px 0 7px 22px;color:var(--ink)}
   .mr-arg__li+.mr-arg__li{border-top:1px solid var(--line)}
   .mr-arg__li::before{position:absolute;left:2px;top:7px;font-weight:800;font-size:var(--fs-sm)}
   .mr-arg__col--def .mr-arg__li::before{content:'\2713';color:var(--green-deep)}
   .mr-arg__col--warn .mr-arg__li::before{content:'!';color:#b6862c}
   .mr-arg__li--empty{color:var(--ink-3);padding-left:0}
   .mr-arg__li--empty::before{content:''}
   .mr-arg__cta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:12px 0 4px}
   .mr-arg__copy{border:0;border-radius:12px;padding:13px 20px;font-weight:700;font-size:var(--fs-base);cursor:pointer;min-height:48px;background:var(--green-deep);color:#fff;display:inline-flex;align-items:center;gap:9px}
   .mr-arg__copy:hover{filter:brightness(1.07)}
   .mr-arg__copy:focus-visible{outline:2px solid var(--green-deep);outline-offset:2px}
   .mr-arg__copyhint{font-size:var(--fs-sm);color:var(--ink-3);line-height:1.4;flex:1 1 220px}
   /* Karta CTA „Raport PRO": tytuł + opis w środku (czytelne rozmiary jak w UI Adama) */
   .mr-propro{display:flex;align-items:center;gap:14px;margin:12px 0 4px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--paper-2);text-decoration:none;color:var(--ink)}
   .mr-propro:hover{border-color:var(--green-deep);background:var(--v6-surface,#f1f3f5)}
   [data-theme="dark"] .mr-propro:hover{background:rgba(255,255,255,.05)}
   .mr-propro:focus-visible{outline:2px solid var(--green-deep);outline-offset:2px}
   .mr-propro__ic{flex:none;color:var(--green-deep);display:inline-flex;align-items:center}
   .mr-propro__body{display:flex;flex-direction:column;gap:4px}
   .mr-propro__t{font-size:var(--fs-md);font-weight:700;color:var(--ink)}
   .mr-propro__d{font-size:var(--fs-base);line-height:1.5;color:var(--ink-3)}
   .mr-propro__arrow{flex:none;margin-left:auto;font-size:var(--fs-xl);color:var(--green-deep)}
   @media(max-width:640px){.mr-arg{grid-template-columns:1fr}}
  

/* Ostrzeżenie „próba poszerzona" (2026-09-23). Gdy w wybranym wycinku jest za mało aktów,
   liczby pod spodem dotyczą czegoś SZERSZEGO niż filtry agenta i musi to być widać od razu.
   Kolor niesie tekst i ikona, nie wypełnienie: Rule 13 zakazuje pastylek statusu z tłem. */
.mr-szersza{ display:flex; align-items:flex-start; gap:10px; margin:14px 0 10px; padding:12px 14px;
  border:1px solid var(--v6-urgent, #b45309); border-radius:var(--r-md,10px);
  border-left-width:1px; background:transparent; color:var(--v6-urgent, #b45309); }
.mr-szersza .ops-icon{ flex:none; margin-top:1px; }
.mr-szersza__tresc{ min-width:0; }
.mr-szersza__tyt{ font-family:var(--font-sans); font-weight:700; font-size:var(--fs-base); }
.mr-szersza__opis{ margin-top:3px; font-size:var(--fs-sm); color:var(--ink-2); line-height:1.5; }
.mr-szersza__opis b{ color:var(--ink); }
@media (max-width:560px){ .mr-szersza{ padding:10px 12px; } }
