/* Wycena (ekran /v5/wycena-v6) - style wyniesione z templates/v5/wycena_v6.html 2026-09-23.
 *
 * Po co: 1423 linie CSS siedzialy w szablonie, wiec przegladarka nie mogla ich zapamietac
 * miedzy wejsciami, a kazda zmiana wygladu wymagala szukania w srodku HTML-a.
 * Etap 1 planu z docs/DLUG_TECHNICZNY_2026_09_23.md. Tresc regul przeniesiona znak w znak.
 */

    /* ============ mapowanie palety makiety -> tokeny panelu (jasny + ciemny) ============ */
    .wy2 {
      --accent: var(--v6-green);
      --accent-deep: var(--v6-green-h);
      --accent-text: var(--v6-green-text);
      --mint: #7FE3B4;
      --ink: var(--v6-text);
      --ink-soft: var(--v6-muted);
      --ink-faint: color-mix(in srgb, var(--v6-muted) 78%, transparent);
      --line: var(--v6-border);
      --surface: var(--v6-card);
      --field: var(--v6-card-2);
      --field-h: var(--v6-fill-2);
      --pick-bg: var(--v6-green-15);
      --pick-line: var(--v6-green-30);
      --req: var(--v6-danger);

      max-width: 1000px;
      width: 100%;
      margin: 0 auto;
      color: var(--ink);
      font-variant-numeric: tabular-nums;
    }

    .wy2 * {
      box-sizing: border-box
    }

    /* nagłówek strony */
    .wy2 .wy-head {
      margin-bottom: 16px
    }

    .wy2 .wy-head h1 {
      font-size: var(--text-xl);
      font-weight: 700;
      color: var(--ink);
      letter-spacing: -.02em;
      margin: 0 0 4px
    }

    @media (min-width: 768px) {
      .wy2 .wy-head h1 {
        font-size: var(--text-2xl)
      }
    }

    .wy2 .wy-head p {
      color: var(--ink-soft);
      font-size: var(--text-sm);
      margin: 0
    }

    /* ---------- wybór: tryb + ścieżka ---------- */
    .wy2 .setup {
      display: grid;
      grid-template-columns: 1fr;
      gap: 14px;
      align-items: start
    }

    /* po usunięciu panelu trybów ścieżki idą w poziom (desktop) */
    @media (min-width: 701px) {
      .wy2 #pathRow {
        grid-template-columns: repeat(3, minmax(0, 1fr))
      }
    }

    .wy2 .pane {
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 18px;
      padding: 20px 22px 22px;
      min-width: 0
    }

    .wy2 .ask {
      font-size: 11px;
      font-weight: 600;
      letter-spacing: .16em;
      text-transform: uppercase;
      color: var(--ink-faint);
      margin: 0 0 12px
    }

    .wy2 .stack {
      display: grid;
      gap: 10px
    }

    .wy2 .mode,
    .wy2 .path {
      font-family: inherit;
      color: inherit;
      text-align: left;
      background: var(--surface);
      border: 1.5px solid var(--line);
      border-radius: 14px;
      cursor: pointer;
      transition: border-color .16s, background .16s, opacity .16s
    }

    .wy2 .mode {
      padding: 14px 15px;
      display: flex;
      gap: 14px;
      align-items: center;
      width: 100%
    }

    .wy2 .path {
      padding: 12px 15px
    }

    .wy2 .mode:hover,
    .wy2 .path:hover {
      border-color: var(--v6-border-strong)
    }

    .wy2 .mode:focus-visible,
    .wy2 .path:focus-visible {
      outline: 2px solid var(--accent);
      outline-offset: 2px
    }

    .wy2 .mode.on,
    .wy2 .path.on {
      border-color: var(--pick-line);
      background: var(--pick-bg)
    }

    .wy2 .mode.mode--off {
      opacity: .5;
      cursor: not-allowed
    }

    .wy2 .mode.mode--off:hover {
      border-color: var(--line)
    }

    .wy2 .mode b,
    .wy2 .path b {
      display: block;
      font-size: 15px;
      font-weight: 600;
      letter-spacing: -.015em
    }

    .wy2 .path b {
      font-size: 14.5px
    }

    .wy2 .mode em,
    .wy2 .path em {
      font-style: normal;
      font-size: 12.5px;
      font-weight: 400;
      color: var(--ink-soft);
      line-height: 1.4;
      display: block;
      margin-top: 3px
    }

    .wy2 .mode-lock {
      display: none;
      font-size: 11px;
      font-weight: 600;
      color: var(--accent-text);
      margin-top: 5px
    }

    .wy2 .mode--off .mode-lock {
      display: block
    }

    .wy2 .mode-sample {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      margin-top: 8px;
      font-size: 12.5px;
      font-weight: 700;
      color: var(--accent-text);
      text-decoration: none
    }

    .wy2 .mode-sample:hover {
      text-decoration: underline
    }

    .wy2 .sample {
      flex: none;
      text-align: center;
      padding: 0 6px
    }

    .wy2 .sample b {
      font-size: 19px;
      font-weight: 600;
      letter-spacing: -.035em;
      display: block;
      line-height: 1.1
    }

    .wy2 .sample span {
      font-size: 10.5px;
      font-weight: 400;
      color: var(--ink-faint)
    }

    .wy2 .mode.on .sample b {
      color: var(--accent-text)
    }

    .wy2 .cover {
      width: 38px;
      height: 46px;
      border-radius: 6px;
      object-fit: cover;
      flex: none;
      box-shadow: 0 2px 10px rgba(10, 60, 42, .2)
    }

    /* ---------- karty formularza ---------- */
    .wy2 .cards {
      display: grid;
      gap: 14px;
      min-width: 0
    }

    .wy2 .duo {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 14px;
      align-items: start
    }

    .wy2 .duo[hidden] {
      display: none
    }

    .wy2 .duo.duo--solo {
      grid-template-columns: 1fr
    }

    .wy2 .card {
      min-width: 0;
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 18px;
      padding: 24px 26px 26px;
      --c: var(--accent)
    }

    .wy2 .card[hidden] {
      display: none
    }

    .wy2 .g[hidden],
    .wy2 .adv-lokal[hidden] {
      display: none
    }

    .wy2 .chead {
      display: flex;
      align-items: flex-start;
      gap: 11px
    }

    .wy2 .chead .ico {
      color: var(--c);
      flex: none;
      margin-top: 1px
    }

    .wy2 .chead h2 {
      font-size: 18px;
      font-weight: 600;
      letter-spacing: -.025em;
      margin: 0
    }

    .wy2 .row {
      display: grid;
      grid-template-columns: 190px minmax(0, 1fr);
      gap: 26px;
      padding: 18px 0 0
    }

    .wy2 .row+.row {
      padding-top: 20px
    }

    .wy2 .row[hidden] {
      display: none
    }

    .wy2 .lab {
      font-size: 14px;
      font-weight: 500;
      letter-spacing: -.01em;
      padding-top: 10px
    }

    .wy2 .lab em {
      display: block;
      font-style: normal;
      font-size: 12.5px;
      font-weight: 400;
      color: var(--ink-faint);
      margin-top: 3px;
      line-height: 1.35
    }

    .wy2 .pair {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px
    }

    .wy2 .trio {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 10px
    }

    /* 4 pola adresowe w JEDNEJ linii (Nikodem 2026-09-03, po wycięciu kodu i nr lokalu);
       na mobile dziedziczy zwężenie do 1 kolumny z media query .trio */
    .wy2 .trio--4 {
      grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    /* Stan mieszkania (~30%) + Udogodnienia (reszta) w jednym rzędzie (2026-09-04);
       chipsy zawijają się, mobile = jedna kolumna */
    .wy2 .stan-udog-row {
      display: grid;
      /* wąski Stan (Nikodem 2026-09-04: „Wydzielona kuchnia" ma się mieścić w linijce) */
      grid-template-columns: minmax(160px, 0.22fr) minmax(0, 0.78fr);
      gap: 16px;
      align-items: end;
    }

    @media (max-width: 640px) {
      .wy2 .stan-udog-row {
        grid-template-columns: 1fr;
      }
    }

    /* brakujące pole wymagane (Nikodem 2026-09-03: „nr budynku na czerwono") —
       klasa zdejmowana przy pierwszym wpisie; zdesaturowany token danger (Rule 13) */
    .wy2 .pole-blad {
      border-color: var(--v6-danger, #c0392b) !important;
      box-shadow: 0 0 0 3px rgba(192, 57, 43, .15);
    }

    .wy2 .g {
      margin-top: 20px;
      min-width: 0
    }

    .wy2 .g>label,
    .wy2 .glab {
      display: block;
      font-size: 13.5px;
      font-weight: 500;
      margin-bottom: 8px;
      letter-spacing: -.01em
    }

    .wy2 .glab small {
      display: block;
      font-size: 12px;
      font-weight: 400;
      color: var(--ink-faint);
      margin-top: 2px
    }

    .wy2 input[type=text],
    .wy2 input[type=url],
    .wy2 input[type=number],
    .wy2 select {
      width: 100%;
      min-width: 0;
      font-family: inherit;
      font-size: 14.5px;
      color: var(--ink);
      background: var(--field);
      border: 1.5px solid transparent;
      border-radius: 10px;
      padding: 11px 13px;
      transition: .15s
    }

    /* Natywna LISTA opcji selecta nie dziedziczy stylów strony — w ciemnym motywie
       przeglądarka malowała biały popup z niewidocznym tekstem (zgłoszenie Nikodema
       2026-08-05). `color-scheme` mówi przeglądarce, jak malować popup (wzorzec
       z v6-dark.css:2387), a reguła na `option` domyka Firefoksa. */
    [data-theme="dark"] .wy2 select {
      color-scheme: dark
    }

    [data-theme="light"] .wy2 select {
      color-scheme: light
    }

    .wy2 select option {
      background: var(--surface);
      color: var(--ink)
    }

    .wy2 select {
      appearance: none;
      -webkit-appearance: none;
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237d8a80' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
      background-repeat: no-repeat;
      background-position: right 12px center;
      padding-right: 36px
    }

    .wy2 input::placeholder {
      color: var(--ink-faint);
      font-weight: 400
    }

    .wy2 input:hover,
    .wy2 select:hover {
      background-color: var(--field-h)
    }

    .wy2 input:focus,
    .wy2 select:focus {
      outline: none;
      border-color: var(--c, var(--accent));
      box-shadow: 0 0 0 3px rgba(0, 165, 81, .18)
    }

    .wy2 .adres-main {
      font-size: 15.5px;
      padding: 13px 15px
    }

    /* Podpowiedzi adresów (address_matching, 2026-09-03) — lista pod polem „Adres".
       Tokeny motywu (--surface/--line/--field mapowane wyżej z --v6-*), więc dark mode
       dostaje ciemną listę — twardy #fff robił „biały ekran" (zgłoszenie Nikodema).
       Zero tintów/kolorowych borderów (anty-AI wzorce, Rule 13). */
    .wy2 .adres-sug {
      position: absolute;
      left: 0;
      right: 0;
      top: 100%;
      z-index: 30;
      margin-top: 4px;
      background: var(--surface);
      color: var(--ink);
      border: 1px solid var(--line);
      border-radius: 10px;
      box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
      overflow: hidden;
    }

    .wy2 .adres-sug-item {
      padding: 10px 14px;
      font-size: 14px;
      cursor: pointer;
    }

    .wy2 .adres-sug-item:hover,
    .wy2 .adres-sug-item.on {
      background: var(--field);
    }

    .wy2 .adres-sug-brak {
      color: var(--ink-faint);
      cursor: default;
      font-size: 13px;
    }

    .wy2 .adres-sug-brak:hover {
      background: var(--surface);
    }

    .wy2 .help {
      margin: 8px 0 0;
      font-size: 12.5px;
      font-weight: 400;
      color: var(--ink-faint)
    }

    .wy2 .help b {
      font-weight: 500;
      color: var(--accent-text)
    }


    /* liczniki parkingowe */
    .wy2 .counts {
      display: grid;
      gap: 9px
    }

    .wy2 .cnt {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 74px;
      gap: 10px;
      align-items: center
    }

    .wy2 .cnt span {
      font-size: 13px;
      font-weight: 400;
      color: var(--ink-soft);
      line-height: 1.3
    }

    .wy2 .cnt input {
      text-align: center;
      padding: 9px 6px
    }

    .wy2 .kw {
      display: grid;
      grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.5fr) minmax(0, .6fr);
      gap: 8px;
      max-width: 300px
    }

    .wy2 .kw input {
      text-align: center;
      letter-spacing: .04em
    }

    .wy2 .kw.off input {
      opacity: .4;
      pointer-events: none
    }

    .wy2 .check {
      display: flex;
      align-items: flex-start;
      gap: 11px;
      cursor: pointer;
      padding: 6px 0
    }

    .wy2 .check input {
      position: absolute;
      opacity: 0;
      pointer-events: none
    }

    .wy2 .box {
      width: 17px;
      height: 17px;
      border-radius: 5px;
      border: 1.5px solid var(--v6-border-strong);
      flex: none;
      margin-top: 2px;
      position: relative;
      transition: .15s
    }

    .wy2 .box::after {
      content: '';
      position: absolute;
      left: 5px;
      top: 1px;
      width: 5px;
      height: 9px;
      border: solid #fff;
      border-width: 0 2px 2px 0;
      transform: rotate(45deg) scale(.5);
      opacity: 0;
      transition: .15s
    }

    .wy2 .check input:checked+.box {
      background: var(--accent);
      border-color: var(--accent)
    }

    .wy2 .check input:checked+.box::after {
      opacity: 1;
      transform: rotate(45deg) scale(1)
    }

    .wy2 .check .txt {
      font-size: 14px
    }

    .wy2 .foot {
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 18px;
      padding: 20px 26px
    }

    .wy2 .go {
      width: 100%;
      font-family: inherit;
      font-size: 16px;
      font-weight: 600;
      letter-spacing: -.01em;
      color: #fff;
      background: var(--accent);
      border: 0;
      border-radius: 12px;
      padding: 16px;
      cursor: pointer;
      transition: .15s;
      min-height: var(--v6-cta-min, 52px)
    }

    .wy2 .go:hover {
      background: var(--accent-deep)
    }

    /* link + „Wyceń z linku" w jednym rzędzie */
    .wy2 .link-row {
      display: flex;
      gap: 10px;
      align-items: stretch
    }

    .wy2 .link-row input {
      flex: 1;
      min-width: 0
    }

    .wy2 .go--inline {
      width: auto;
      min-height: 44px;
      padding: 10px 24px;
      font-size: 14.5px;
      flex: none;
      white-space: nowrap
    }

    @media (max-width: 560px) {
      .wy2 .link-row {
        flex-wrap: wrap
      }

      .wy2 .go--inline {
        width: 100%
      }
    }

    /* etykieta z dopiskiem (np. Dzielnica) nie rozjeżdża pól w rzędzie — input do dołu */
    .wy2 .trio > div {
      display: flex;
      flex-direction: column
    }

    .wy2 .trio > div > input,
    .wy2 .trio > div > select,
    .wy2 .trio > div > .stepper {
      margin-top: auto
    }

    /* strzałki ±1 z prawej strony pola (Nikodem 2026-09-04: czynsz, liczba pięter).
       WŁASNE przyciski, NIE natywny spinner — type=number jest w wycenie zakazany
       (regresja PR#158: psuł przecinek dziesiętny; strażnik test_wycena_range_validation_wired) */
    .wy2 .stepper {
      position: relative;
    }

    .wy2 .stepper > input {
      width: 100%;
      padding-right: 34px;
      box-sizing: border-box;
    }

    .wy2 .stepper__btns {
      position: absolute;
      right: 6px;
      top: 50%;
      transform: translateY(-50%);
      display: flex;
      flex-direction: column;
      gap: 2px;
    }

    .wy2 .stepper__btns button {
      border: 1px solid var(--line);
      background: var(--field);
      color: var(--ink-faint);
      border-radius: 4px;
      width: 22px;
      height: 14px;
      font-size: 9px;
      line-height: 1;
      padding: 0;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .wy2 .stepper__btns button:hover {
      color: var(--ink);
    }

    /* ── REDESIGN UX 2026-09-04 (instrukcja Nikodema: układ/hierarchia/interakcje,
       ZERO zmian kolorystyki — wszystko na istniejących tokenach) ─────────────── */

    /* segmented control: świadomy wybór „link vs ręcznie" zamiast LUB */
    .wy2 .tryb-tabs {
      display: flex;
      gap: 6px;
      padding: 4px;
      background: var(--field);
      border: 1px solid var(--line);
      border-radius: 12px;
      margin-bottom: 14px;
    }

    .wy2 .tryb-tab {
      flex: 1;
      padding: 10px 14px;
      border: 0;
      border-radius: 9px;
      background: transparent;
      color: var(--ink-faint);
      font-size: 14px;
      font-weight: 600;
      cursor: pointer;
      min-height: 44px;
    }

    .wy2 .tryb-tab[aria-selected="true"] {
      background: var(--surface);
      color: var(--ink);
      box-shadow: 0 1px 4px rgba(0, 0, 0, .12);
    }

    .wy2 .wy-or { display: none !important; }  /* taby zastępują dawne „LUB" (bije display:flex niżej) */
    .wy2 [hidden] { display: none !important; }

    /* podgląd parsera linku */
    .wy2 .lp-naglowek { font-weight: 600; margin: 14px 0 4px; }
    .wy2 .lp-naglowek b { color: var(--ink-faint); font-weight: 400; margin-left: 6px; }
    .wy2 .lp-blad { font-weight: 600; margin: 14px 0 8px; }
    .wy2 .lp-lista {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px 18px;
      margin: 10px 0 14px;
    }
    .wy2 .lp-lista > div { border-bottom: 1px solid var(--line); padding-bottom: 6px; }
    .wy2 .lp-lista dt { font-size: 12.5px; color: var(--ink-faint); }
    .wy2 .lp-lista dd { margin: 2px 0 0; font-size: 14px; font-weight: 600; }
    .wy2 .lp-lista dd.brak { color: var(--ink-faint); font-weight: 400; }
    /* WYMAGANA dana nieznaleziona = czerwono + instrukcja (Nikodem 2026-09-04) */
    .wy2 .lp-lista dd.brak--wymagany { color: var(--v6-danger, #c0392b); font-weight: 600; }
    /* Adres na pełną szerokość — nieparzysta liczba pól nie dziurawi siatki */
    .wy2 .lp-lista .lp-adres { grid-column: 1 / -1; }
    .wy2 .lp-akcje { display: flex; gap: 10px; flex-wrap: wrap; }
    .wy2 .lp-drugi {
      padding: 9px 14px;
      border: 1px solid var(--line);
      border-radius: 10px;
      background: var(--surface);
      color: var(--ink);
      cursor: pointer;
      min-height: 44px;
    }
    .wy2 .link-express {
      margin-top: 8px;
      border: 0;
      background: none;
      color: var(--ink-faint);
      font-size: 12.5px;
      cursor: pointer;
      text-decoration: underline;
      padding: 4px 0;
    }

    /* podsumowanie adresu + zwijane szczegóły */
    .wy2 .adres-podsumowanie {
      display: flex;
      align-items: center;
      gap: 12px;
      flex-wrap: wrap;
      font-weight: 600;
    }


    /* jednostka w polu (m², zł/mies.) */
    .wy2 .stepper .jedn {
      position: absolute;
      right: 34px;
      top: 50%;
      transform: translateY(-50%);
      font-size: 12px;
      color: var(--ink-faint);
      pointer-events: none;
    }
    .wy2 .stepper:has(.jedn) > input { padding-right: 88px; }

    /* panel kompletności NA DOLE formularza zamiast bocznego sidebara (Nikodem
       2026-09-04: „przerzuć to na dół zamiast na bok") — zastępuje gołe CTA w stopce */
    .wy2 .foot--panel {
      display: flex;
      align-items: center;
      gap: 24px;
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 14px;
      padding: 16px 20px;
    }
    .wy2 .pw-info { flex: 1; min-width: 0; }
    .wy2 .pw-naglowek { display: flex; align-items: baseline; gap: 10px; }
    .wy2 .pw-tytul { font-size: 13px; color: var(--ink-faint); }
    .wy2 .pw-procent { font-size: 24px; font-weight: 700; }
    .wy2 .pw-pasek { height: 6px; border-radius: 3px; background: var(--field); overflow: hidden; margin: 8px 0 6px; }
    .wy2 .pw-pasek__wyp { height: 100%; width: 0; border-radius: 3px; background: var(--brand-primary, #1f5a28); transition: width .25s; }
    .wy2 .pw-status { font-size: 13px; color: var(--ink-faint); margin: 0 0 4px; }
    .wy2 .pw-status--blad { color: var(--v6-danger, #c0392b); font-weight: 600; }
    .wy2 .pw-mini { list-style: none; margin: 0; padding: 0; font-size: 13.5px; }
    .wy2 .pw-mini li { display: inline; }
    .wy2 .pw-mini li + li::before { content: " · "; color: var(--ink-faint); }
    /* .wy2 .go daje width:100% — w stopce-panelu przycisk MUSI wrócić do auto,
       inaczej zgniata lewą kolumnę do pionowej wstążki (screenshot Nikodema 2026-09-04) */
    .wy2 .foot--panel .pw-cta { width: auto; flex: 0 0 auto; min-width: 240px; padding-left: 32px; padding-right: 32px; }
    .wy2 .pw-tytul { white-space: nowrap; }
    @media (max-width: 767px) {
      .wy2 .foot--panel { flex-direction: column; align-items: stretch; gap: 12px; }
      .wy2 .foot--panel .pw-cta { width: 100%; min-width: 0; }
    }

    /* mobile: sticky CTA na dole + oddech pod formularzem */
    .wy2 .pasek-cta { display: none; }
    @media (max-width: 1099px) {
      .wy2 { padding-bottom: 88px; }        /* sticky pasek nie zasłania ostatnich pól */
      .wy2 .pasek-cta {
        display: flex;
        align-items: center;
        gap: 12px;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 40;
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
        background: var(--surface);
        border-top: 1px solid var(--line);
      }
      .wy2 .pasek-cta .go { flex: 1; min-height: 46px; }
      .wy2 .pasek-cta__proc { font-weight: 700; font-size: 15px; min-width: 44px; }
      .wy2 .lp-lista { grid-template-columns: 1fr; }
    }
    /* telefon: dolna nawigacja panelu (v6-mobile-nav, fixed bottom, z-index 50) —
       pasek CTA siada NAD nią, nie pod nią */
    @media (max-width: 767px) {
      .wy2 { padding-bottom: 156px; }
      /* padding-left 84px: FAB Adama (REGUŁA ZERO #1, lewy dolny róg) nie zasłania procentu */
      .wy2 .pasek-cta { bottom: 66px; padding-bottom: 10px; padding-left: 84px; }
    }

    /* walidacja pod polem (redesign pkt 18) — ABSOLUTE, żeby komunikat nie podnosił
       sąsiednich pól w rzędzie (Nikodem 2026-09-07: „blok się podnosił") */
    .wy2 .pole-blad-msg {
      position: absolute;
      top: 100%;
      left: 0;
      right: 0;
      margin: 4px 0 0;
      color: var(--v6-danger, #c0392b);
      font-size: 12.5px;
      line-height: 1.25;
      pointer-events: none;
    }

    /* separator wyboru źródła: link LUB dane z formularza (Nikodem 2026-08-05) */
    .wy2 .wy-or {
      display: flex;
      align-items: center;
      gap: 14px;
      color: var(--ink-faint);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: .14em
    }

    .wy2 .wy-or::before,
    .wy2 .wy-or::after {
      content: "";
      flex: 1;
      height: 1px;
      background: var(--line)
    }

    .wy2 .go:active {
      transform: translateY(1px)
    }

    .wy2 .go:focus-visible {
      outline: 3px solid var(--mint);
      outline-offset: 2px
    }

    /* ---------- zapis wyceny jako lead (pasek pod wynikiem) ----------
       Wczesniej: inline-style + klasy `btn btn--primary`, ktore NIE ISTNIEJA nigdzie
       w CSS -> przycisk renderowal sie jako goly guzik przegladarki (zgloszenie
       Nikodema 2026-08-05). Teraz jezyk tej strony: przycisk = mniejszy wariant .go. */
    /* ---------- kafelek „Raport Pro dla tej wyceny" (Nikodem 2026-08-05) ----------
       Zastępuje usunięty tryb „Raport PDF": propozycja pojawia się DOPIERO przy wyniku,
       a klik prowadzi do ISTNIEJĄCEGO formularza /v5/raport-pro z prefill-em przez query
       (adres/miasto/dzielnica/metraz/pokoje — tyle tamta strona czyta). */
    .wy2 .wy-result {
      position: relative
    }

    .wy2 .wy-raport-tile {
      border: 1.5px solid var(--pick-line);
      background: var(--pick-bg);
      border-radius: 14px;
      padding: 16px 18px
    }

    .wy2 .wy-raport-tile b {
      display: block;
      font-size: 15px;
      font-weight: 600;
      letter-spacing: -.015em
    }

    .wy2 .wy-raport-tile em {
      font-style: normal;
      display: block;
      font-size: 12.5px;
      color: var(--ink-soft);
      line-height: 1.45;
      margin: 4px 0 12px
    }

    .wy2 .wy-raport-tile .go {
      width: 100%;
      min-height: 44px;
      padding: 10px 14px;
      font-size: 14px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      text-decoration: none
    }

    /* wynik w dwóch kolumnach: treść + boczna szpalta (rekomendowana cena, kafelek
       Raportu Pro). Wcześniej kafelek był pozycjonowany absolutnie z rezerwą
       padding-right — układ kolumnowy skaluje się lepiej (Nikodem 2026-08-05). */
    .wy2 .wy-cols {
      display: grid;
      gap: 20px
    }

    .wy2 .wy-side {
      display: flex;
      flex-direction: column;
      gap: 14px;
      min-width: 0
    }

    @media (min-width: 901px) {
      .wy2 .wy-cols {
        grid-template-columns: minmax(0, 1fr) 340px
      }
    }

    .wy2 .grid4 {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 14px
    }

    .wy2 .grid2 {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 14px
    }

    /* pola w wierszu siatki wyrównane do DOŁU — dłuższa etykieta (np. dopisek przy
       cenie ofertowej) nie rozjeżdża inputów względem siebie */
    .wy2 .grid2 .g,
    .wy2 .grid4 .g {
      display: flex;
      flex-direction: column
    }

    .wy2 .grid2 .g select,
    .wy2 .grid2 .g input,
    .wy2 .grid4 .g select,
    .wy2 .grid4 .g input {
      margin-top: auto
    }

    @media (max-width: 980px) {
      .wy2 .grid4 {
        grid-template-columns: repeat(2, minmax(0, 1fr))
      }
    }

    @media (max-width: 560px) {

      .wy2 .grid4,
      .wy2 .grid2 {
        grid-template-columns: 1fr
      }
    }

    .wy2 .stepno {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 24px;
      height: 24px;
      border-radius: 50%;
      background: var(--pick-bg);
      border: 1px solid var(--pick-line);
      color: var(--accent-text);
      font-size: 13px;
      font-weight: 700;
      margin-right: 9px;
      vertical-align: -3px
    }

    .wy2 .ingest-ok {
      margin: 10px 0 0;
      font-size: 13px;
      color: var(--accent-text);
      font-weight: 600
    }

    .wy2 .lead-save {
      margin-top: 16px;
      padding-top: 16px;
      border-top: 1px solid var(--line);
      display: flex;
      gap: 10px;
      align-items: stretch;
      flex-wrap: wrap
    }

    .wy2 .lead-save__field {
      flex: 1 1 240px;
      display: flex;
      flex-direction: column;
      gap: 6px
    }

    .wy2 .lead-save__field label {
      font-size: var(--text-xs);
      color: var(--v6-muted)
    }

    .wy2 .lead-save__field input {
      min-height: 46px;
      padding: 10px 14px;
      border: 1px solid var(--line);
      border-radius: 12px;
      background: var(--v6-recess);
      color: var(--v6-text);
      font-family: inherit;
      font-size: var(--text-sm)
    }

    .wy2 .lead-save__field input:focus-visible {
      outline: 3px solid var(--mint);
      outline-offset: 1px
    }

    /* nadpisania po .go: nie caly wiersz i nizszy niz glowne CTA; rownany do dolu pola */
    .wy2 .lead-save__btn {
      width: auto;
      flex: 0 0 auto;
      align-self: flex-end;
      min-height: 46px;
      padding: 10px 22px;
      font-size: 15px;
      white-space: nowrap
    }

    @media (max-width: 640px) {
      .wy2 .lead-save__btn {
        width: 100%;
        align-self: auto
      }
    }

    /* ---------- wynik wyceny (tokeny = theme-aware) ---------- */
    .wy2 .wy-result {
      background: var(--v6-hero-grad);
      border: 1px solid var(--v6-border);
      border-radius: var(--v6-radius-lg);
      padding: 24px;
      margin-bottom: 16px
    }

    .wy2 .wy-headrow {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      flex-wrap: wrap
    }

    .wy2 .wy-headlab {
      font-size: var(--text-md, 15px);
      font-weight: 600;
      color: var(--v6-text);
      letter-spacing: -.01em
    }

    /* pewność = kolorowy TEKST z kropką, nie wypełniona pastylka (anty-AI, Rule 13) */
    .wy2 .wy-conf {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      font-size: var(--text-xs);
      font-weight: 600
    }

    .wy2 .wy-conf::before {
      content: "";
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: currentColor;
      flex: none
    }

    .wy2 .wy-conf--high {
      color: var(--v6-green-text, var(--v6-green))
    }

    .wy2 .wy-conf--medium {
      color: var(--amber-text, #b27606)
    }

    .wy2 .wy-conf--low {
      color: var(--v6-danger, #b0433a)
    }

    .wy2 .wy-basis {
      color: var(--v6-muted);
      font-weight: 400
    }

    /* czerwona adnotacja przy kwocie (ścieżka z linku): cena ogłoszenia vs model z cech.
       Kolorowy TEKST, nie wypełniona pastylka (anty-AI, Rule 13). */
    .wy2 .wy-model-alert {
      margin-top: 10px;
      max-width: 56ch;
      font-size: var(--text-sm);
      line-height: 1.5;
      font-weight: 600;
      color: var(--v6-danger, #b0433a)
    }

    /* wariant „cena zgodna z wyceną" (dobrze trafiłeś) — pozytyw, więc NIE czerwony alarm.
       Kolorowy TEKST, zdesaturowany zielony (anty-AI, Rule 13). */
    .wy2 .wy-model-alert--ok {
      color: var(--v6-success, #2f7d4f)
    }

    /* ---------- pasek przedziału wartości (znacznik = wycena między p10 a p90) ---------- */
    .wy2 .wy-band {
      margin-top: 18px;
      padding-top: 14px;
      border-top: 1px solid var(--v6-border)
    }

    .wy2 .wy-band__title {
      font-size: var(--text-sm);
      font-weight: 600;
      color: var(--v6-muted);
      margin-bottom: 12px
    }

    .wy2 .wy-band__row {
      display: flex;
      align-items: flex-start;
      gap: 14px
    }

    .wy2 .wy-band__end {
      font-size: var(--text-sm);
      font-weight: 700;
      font-variant-numeric: tabular-nums;
      white-space: nowrap;
      line-height: 1;
      padding-top: 1px
    }

    .wy2 .wy-band__mid {
      flex: 1;
      min-width: 0;
      position: relative
    }

    .wy2 .wy-band__track {
      position: relative;
      height: 8px;
      border-radius: 999px;
      background: var(--v6-recess)
    }

    .wy2 .wy-band__fill {
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      width: var(--pos, 50%);
      border-radius: 999px;
      background: var(--v6-green)
    }

    .wy2 .wy-band__dot {
      position: absolute;
      top: 50%;
      left: var(--pos, 50%);
      width: 18px;
      height: 18px;
      transform: translate(-50%, -50%);
      border-radius: 50%;
      background: var(--surface);
      border: 3px solid var(--v6-green)
    }

    .wy2 .wy-band__now {
      position: relative;
      height: 20px;
      margin-top: 8px
    }

    .wy2 .wy-band__now b {
      position: absolute;
      left: var(--pos, 50%);
      transform: translateX(-50%);
      font-size: var(--text-sm);
      font-weight: 700;
      color: var(--v6-green-text, var(--v6-green));
      font-variant-numeric: tabular-nums;
      white-space: nowrap
    }

    /* ---------- „Na czym oparta jest wycena" (pełna szerokość pod kolumnami) ---------- */
    .wy2 .wy-basis-box {
      margin-top: 18px;
      padding-top: 14px;
      border-top: 1px solid var(--v6-border)
    }

    .wy2 .wy-basis-box__title {
      font-size: var(--text-sm);
      font-weight: 600;
      margin-bottom: 8px
    }

    .wy2 .wy-basis-box__list {
      list-style: none;
      margin: 0;
      padding: 0;
      display: flex;
      flex-direction: column;
      gap: 6px;
      font-size: var(--text-sm);
      color: var(--v6-text);
      line-height: 1.5
    }

    /* ---------- boczna karta „Rekomendowana cena wystawienia" ---------- */
    .wy2 .wy-reco {
      border: 1px solid var(--v6-border);
      background: var(--surface);
      border-radius: 14px;
      padding: 20px 18px;
      text-align: center
    }

    .wy2 .wy-reco b {
      display: block;
      font-size: var(--text-sm);
      font-weight: 600
    }

    .wy2 .wy-reco__val {
      font-size: var(--text-2xl, 28px);
      font-weight: 800;
      letter-spacing: -.02em;
      margin: 10px 0 12px;
      font-variant-numeric: tabular-nums
    }

    .wy2 .wy-reco hr {
      width: 44px;
      border: 0;
      border-top: 2px solid var(--v6-green);
      margin: 0 auto 10px
    }

    .wy2 .wy-reco em {
      font-style: normal;
      font-size: 12.5px;
      color: var(--ink-soft)
    }

    .wy2 .wy-value {
      font-size: var(--text-3xl);
      font-weight: 800;
      color: var(--v6-text);
      letter-spacing: -.02em;
      margin: 14px 0 2px;
      font-variant-numeric: tabular-nums
    }

    .wy2 .wy-ppm2 {
      font-size: var(--text-sm);
      color: var(--v6-muted);
      font-weight: 500
    }

    .wy2 .wy-coverage {
      max-width: 62ch;
      margin-top: 12px;
      padding-left: 12px;
      border-left: 2px solid var(--v6-urgent, #a8681f);
      font-size: var(--text-sm);
      line-height: 1.5;
      color: var(--v6-urgent, #a8681f)
    }

    .wy2 .wy-coverage--ok {
      border-left-color: var(--v6-border);
      color: var(--v6-muted)
    }

    .wy2 .wy-notes {
      list-style: none;
      padding: 0;
      margin: 16px 0 0;
      display: flex;
      flex-direction: column;
      gap: 6px
    }

    .wy2 .wy-notes li {
      font-size: var(--text-xs);
      color: var(--v6-muted);
      line-height: 1.45;
      padding-left: 16px;
      position: relative
    }

    .wy2 .wy-notes li::before {
      content: "•";
      position: absolute;
      left: 4px;
      color: var(--v6-green)
    }

    .wy2 .wy-disclaimer {
      font-size: var(--text-xs);
      color: var(--v6-muted);
      line-height: 1.45;
      margin-top: 16px;
      padding-top: 14px;
      border-top: 1px solid var(--v6-border)
    }

    .wy2 .wy-msg {
      border-radius: var(--v6-radius-md);
      padding: 14px 16px;
      font-size: var(--text-sm);
      line-height: 1.45;
      margin-bottom: 16px
    }

    .wy2 .wy-msg--err {
      background: rgba(176, 67, 58, .12);
      color: var(--v6-danger, #b0433a);
      border: 1px solid rgba(176, 67, 58, .3)
    }

    .wy2 .wy-msg--offline {
      background: var(--amber-bg, rgba(245, 158, 11, .12));
      color: var(--amber-text, #8a5a06);
      border: 1px solid rgba(245, 158, 11, .3)
    }

    @media (max-width:960px) {
      .wy2 .duo {
        grid-template-columns: 1fr
      }
    }

    @media (max-width:820px) {
      .wy2 .setup {
        grid-template-columns: 1fr
      }

      .wy2 .card,
      .wy2 .foot,
      .wy2 .pane {
        padding: 20px 18px 22px
      }

      .wy2 .row {
        grid-template-columns: 1fr;
        gap: 10px
      }

      .wy2 .lab {
        padding-top: 0
      }

      .wy2 .trio,
      .wy2 .pair {
        grid-template-columns: 1fr
      }

      .wy2 .kw {
        grid-template-columns: 1fr
      }
    }
  

    /* ============ „Nieruchomosc do wyceny" (zakladka 3, Nikodem 2026-10-01) ============
     * Lista podpowiedzi to WSPOLNY komponent (address-matching.js) i jego wlasny arkusz
     * (static/css/components/address-matching.css) — tu zostaje tylko kotwica, bo lista
     * pozycjonuje sie absolutnie wzgledem najblizszego przodka ustawionego na relative.
     *
     * Do 2026-10-01 stala tu wlasna lista wierszy (.moje-lista / .moje-wiersz, ~70 linii).
     * Zastapiona komponentem na prosbe Nikodema („zeby to wygladalo i bylo jak ten blok
     * tutaj z raportu pro"), wiec te reguly skasowane — nie zostawiamy martwego CSS.
     */
    .wy2 .moje-szukaj {
      position: relative
    }

    .wy2 .moje-szukaj__pole {
      width: 100%
    }
