/* Kambit Cennik — front strony produktu. Układ 3-kolumnowy (atrybuty | termin+matryca | projekt) + sticky belka.
   Tokeny scoped do .kambit-cennik (bez wycieku na resztę sklepu). Sklep jest jasny — jeden motyw. */
.kambit-cennik {
  --kc-surface: #ffffff;
  --kc-surface-2: #f4f6fb;
  --kc-ink: #16233f;
  --kc-muted: #59637e;
  --kc-line: #e2e6ef;
  --kc-line-strong: #c5cad6;
  --kc-brand: #1D3C70;
  --kc-brand-ink: #16305a;
  --kc-brand-soft: #eef3ff;
  --kc-warn: #b25000;
  --kc-ok: #2e7d32;
  --kc-shadow: 0 1px 2px rgba(20,40,80,.06), 0 8px 24px rgba(20,40,80,.06);
  --kc-focus: 0 0 0 3px rgba(29,60,112,.35);
  --kc-radius: 14px;
  margin: 1.5em 0;
  font-size: 15px;
  color: var(--kc-ink);
}
@media (prefers-reduced-motion: reduce) {
  .kc-termin, .kc-opcja-karta, .kc-matryca tbody tr, .kc-dodaj, .kc-select { transition: none !important; }
}

/* Układ 3-kolumnowy. Render przez shortcode [kambit_cennik] w pełnoszerokościowej sekcji Elementora —
   treść ograniczamy do max 1180 i centrujemy standardowo (bez JS). */
.kc-layout { display: grid; grid-template-columns: 280px minmax(0, 1fr) 320px; gap: 18px; align-items: start; max-width: 1180px; margin: 0 auto; padding: 0 20px; box-sizing: border-box; }
.kc-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.kc-card { background: var(--kc-surface); border: 1px solid var(--kc-line); border-radius: var(--kc-radius); padding: 16px; box-shadow: var(--kc-shadow); }
.kc-card-tytul { margin: 0 0 12px; font-size: 12px; letter-spacing: .09em; text-transform: uppercase; color: var(--kc-muted); font-weight: 800; }

/* Specyfikacja (opisowe pola produktu z importu) */
.kc-spec-lista { margin: 0; display: flex; flex-direction: column; gap: 8px; }
.kc-spec-wiersz { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; padding-bottom: 8px; border-bottom: 1px dashed var(--kc-line); }
.kc-spec-wiersz:last-child { border-bottom: 0; padding-bottom: 0; }
.kc-spec-wiersz dt { margin: 0; color: var(--kc-muted); }
.kc-spec-wiersz dd { margin: 0; font-weight: 700; text-align: right; }

/* Atrybuty (listy rozwijalne) */
.kc-atrybuty { display: flex; flex-direction: column; gap: 13px; }
.kc-atrybut { display: flex; flex-direction: column; gap: 6px; }
.kc-label { font-weight: 700; font-size: 13.5px; color: var(--kc-ink); }
.kc-select {
  appearance: none; -webkit-appearance: none; width: 100%;
  padding: 11px 38px 11px 12px; border: 1.5px solid var(--kc-line-strong); border-radius: 10px;
  background: var(--kc-surface); color: var(--kc-ink); font: inherit; font-size: 15px; cursor: pointer;
  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='%2359637e' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center;
}
.kc-select:focus-visible { outline: none; border-color: var(--kc-brand); box-shadow: var(--kc-focus); }

/* Terminy — kafelki w jednym wierszu */
.kc-terminy { display: flex; gap: 10px; }
.kc-termin {
  flex: 1; display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  padding: 11px 14px; border: 2px solid var(--kc-line-strong); border-radius: 12px; background: var(--kc-surface);
  cursor: pointer; color: var(--kc-ink); text-align: left; transition: border-color .12s, box-shadow .12s, background .12s;
}
.kc-termin:hover { border-color: var(--kc-brand); }
.kc-termin.is-active { border-color: var(--kc-brand); box-shadow: var(--kc-focus); background: var(--kc-brand-soft); }
.kc-termin-nazwa { font-weight: 800; text-transform: uppercase; letter-spacing: .03em; }
.kc-termin-linia2 { font-size: 12.5px; color: var(--kc-muted); }
.kc-termin-wysylka { display: block; margin-top: 3px; font-size: 11.5px; font-weight: 700; color: var(--kc-brand); }
.kc-termin-sep { color: var(--kc-line-strong); margin: 0 3px; }
.kc-termin-doplata { color: var(--kc-warn); font-weight: 800; }
.kc-termin-zero { color: var(--kc-ok); font-weight: 700; }

/* Matryca cen */
.kc-matryca { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.kc-matryca th, .kc-matryca td { padding: 11px 12px; text-align: right; }
.kc-matryca th:first-child, .kc-matryca td:first-child { text-align: left; }
.kc-matryca thead th { font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--kc-muted); font-weight: 800; border-bottom: 2px solid var(--kc-brand); }
.kc-matryca tbody tr { cursor: pointer; border-bottom: 1px solid var(--kc-line); transition: background .1s; }
.kc-matryca tbody tr:nth-child(odd) { background: #e6ebf5; }
.kc-matryca tbody tr:nth-child(even) { background: #ffffff; }
.kc-matryca tbody tr:hover { background: var(--kc-brand-soft); }
.kc-wiersz.is-selected { background: var(--kc-brand-soft); box-shadow: inset 4px 0 0 var(--kc-brand); }
.kc-naklad { font-weight: 700; }
.kc-netto { color: var(--kc-muted); }
.kc-brutto { font-weight: 800; color: var(--kc-brand); }
.kc-ladowanie, .kc-brak { text-align: center !important; color: var(--kc-muted); font-style: italic; }
.kc-hint { text-align: center; color: var(--kc-muted); font-size: 13px; margin-top: 12px; }

/* Sekcja Projekt — kafelki 2 w rzędzie + pola warunkowe */
.kc-notka-krok { display: flex; gap: 8px; align-items: flex-start; background: var(--kc-brand-soft); border: 1px dashed var(--kc-brand); border-radius: 12px; padding: 12px 14px; margin: 0 0 14px; font-size: 13.5px; line-height: 1.45; }
.kc-notka-krok .kc-notka-iko { font-size: 18px; line-height: 1; }
.kc-notka-krok strong { color: var(--kc-brand); }
.kc-projektuj-baner { background: #eef3ff; border: 1px solid #1D3C70; border-radius: 12px; padding: 12px 16px; margin: 0 auto 16px; max-width: 1180px; font-size: 14px; }
.kc-projektuj-baner a { color: #1D3C70; font-weight: 700; margin-left: 8px; white-space: nowrap; }

/* Krok „Projektuj" w koszyku (poza .kambit-cennik — własne tokeny + reguły siatki opcji) */
.kc-projektuj { --kc-brand:#1D3C70; --kc-line:#e2e6ef; --kc-muted:#59637e; --kc-brand-soft:#eef3ff; --kc-focus:0 0 0 3px rgba(29,60,112,.35);
  margin: 10px 0 4px; padding: 12px 0 2px; border-top: 1px solid var(--kc-line); color:#16233f; }
.kc-projektuj-tytul { font-weight: 700; color: var(--kc-brand); font-size: 13.5px; margin-bottom: 8px; }
.kc-projektuj .kc-projekt-opcje { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.kc-projektuj .kc-opcja-karta { position: relative; display: block; border: 1px solid var(--kc-line); border-radius: 11px; padding: 9px 10px; cursor: pointer; background:#fff; }
.kc-projektuj .kc-opcja-karta:hover { border-color: var(--kc-brand); }
.kc-projektuj .kc-opcja-karta.is-active { border-color: var(--kc-brand); box-shadow: var(--kc-focus); background: var(--kc-brand-soft); }
.kc-projektuj .kc-opcja-karta input[type="radio"] { position: absolute; opacity: 0; pointer-events: none; }
.kc-projektuj .kc-opcja-tytul { display:block; font-weight:700; font-size:13px; }
.kc-projektuj .kc-opcja-opis { display:block; font-size:11.5px; color: var(--kc-muted); margin-top:2px; }
.kc-proj-pole { margin-top: 10px; }
.kc-proj-pole[hidden] { display: none !important; }
.kc-proj-kreator, .kc-proj-opis-zapisz { background: #fff; color: var(--kc-brand); border: 2px solid var(--kc-brand); border-radius: 10px; padding: 9px 16px; font-weight: 800; cursor: pointer; font-size: 13.5px; }
.kc-proj-gotowy { display: inline-flex; align-items: center; gap: 6px; color: #1f9d55; font-weight: 700; font-size: 13px; margin-left: 8px; }
.kc-proj-nic-info { background: #fff8ea; border: 1px solid #f2dca2; border-radius: 10px; padding: 10px 12px; font-size: 13px; color: #7a5b12; }
.kc-proj-opis { width: 100%; border: 1px solid var(--kc-line); border-radius: 10px; padding: 9px 10px; font: inherit; margin-bottom: 8px; }
.kc-proj-plik { display: block; margin: 4px 0; }
.kc-proj-info { font-size: 12.5px; color: var(--kc-muted); margin-top: 6px; }
.kc-proj-odepnij { margin-top: 10px; background: #fff; color: #c0392b; border: 1px solid #e2b6b0; border-radius: 9px; padding: 6px 12px; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.kc-proj-odepnij[hidden] { display: none !important; }
.kc-projektuj .kc-pole-info { display:block; margin-top:6px; font-size:12px; color: var(--kc-muted); }
.kc-proj-weryf { margin-top: 8px; }
.kc-proj-weryf .kc-w-row { display: flex; gap: 8px; align-items: flex-start; padding: 6px 10px; border: 1px solid var(--kc-line); border-top: 0; font-size: 12.5px; }
.kc-proj-weryf .kc-w-row:first-child { border-top: 1px solid var(--kc-line); border-radius: 8px 8px 0 0; }
.kc-proj-weryf .kc-w-row:last-child { border-radius: 0 0 8px 8px; }
.kc-w-znak { width: 17px; height: 17px; border-radius: 50%; color: #fff; font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.kc-w-ok { background: #1f9d55; } .kc-w-uwaga { background: #f0a020; } .kc-w-blad { background: #c0392b; }
.kc-proj-podglady { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0 8px; }
.kc-proj-podglad { display: block; max-width: 110px; max-height: 150px; border: 1px solid #e2e6ef; border-radius: 8px; background: #fff; }
.kc-cart-wrap { position: relative; display: inline-block; }
.kc-cart-podglad { max-width: 100%; height: auto; border-radius: 6px; }
.kc-cart-str { position: absolute; bottom: 3px; right: 3px; background: rgba(29,60,112,.88); color: #fff; font-size: 10px; font-weight: 700; padding: 1px 5px; border-radius: 6px; }
.kc-cart-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 48px; height: 48px; padding: 0 8px; background: #eef3ff; color: #1D3C70; border: 1px solid #cddafc; border-radius: 8px; font-weight: 800; font-size: 12px; }
@media (max-width: 600px) { .kc-projektuj .kc-projekt-opcje { grid-template-columns: 1fr 1fr; } }
.kc-projekt-opcje { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.kc-opcja-karta {
  position: relative; display: flex; flex-direction: column; gap: 4px; min-width: 0;
  padding: 11px 12px; border: 2px solid var(--kc-line-strong); border-radius: 12px; background: var(--kc-surface);
  cursor: pointer; transition: border-color .12s, box-shadow .12s, background .12s;
}
.kc-opcja-karta:hover { border-color: var(--kc-brand); }
.kc-opcja-karta.is-active { border-color: var(--kc-brand); box-shadow: var(--kc-focus); background: var(--kc-brand-soft); }
.kc-opcja-karta input[type="radio"] { position: absolute; opacity: 0; pointer-events: none; }
.kc-opcja-tytul { font-weight: 800; font-size: 13.5px; color: var(--kc-brand); }
.kc-opcja-opis { font-size: 12px; color: var(--kc-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.kc-projekt-pole { margin-top: 12px; }
.kc-komplety-label { display: inline-flex; align-items: center; gap: 10px; font-weight: 700; color: var(--kc-ink); }
.kc-komplety { width: 86px; padding: 10px; border: 1.5px solid var(--kc-line-strong); border-radius: 10px; font-size: 16px; text-align: center; background: var(--kc-surface); color: var(--kc-ink); }
.kc-komplety:focus-visible, .kc-opis-grafik:focus-visible { outline: none; border-color: var(--kc-brand); box-shadow: var(--kc-focus); }
.kc-komplety-opis, .kc-pole-info { display: block; margin-top: 6px; font-size: 12.5px; color: var(--kc-muted); }
.kc-kreator-start { padding: 10px 16px; border: 2px solid var(--kc-brand); background: transparent; color: var(--kc-brand); font: inherit; font-weight: 800; border-radius: 10px; cursor: pointer; }
.kc-kreator-status { margin-left: 10px; font-size: 13px; color: var(--kc-ok); }
.kc-plik { display: block; max-width: 100%; }
.kc-opis-grafik { width: 100%; border: 1.5px solid var(--kc-line-strong); border-radius: 10px; padding: 10px; font-size: 15px; background: var(--kc-surface); color: var(--kc-ink); resize: vertical; }

.kc-termin:focus-visible, .kc-opcja-karta:focus-visible, .kc-dodaj:focus-visible, .kc-kreator-start:focus-visible { outline: none; box-shadow: var(--kc-focus); }

/* Wytyczne projektowe — własna karta (opis + „Kliknij i pobierz" + kafelki formatów). */
.kc-wyt-opis { margin: 0 0 10px; font-size: 13px; color: var(--kc-muted); line-height: 1.4; }
.kc-wyt-naglowek { text-align: center; font-weight: 700; color: var(--kc-brand); font-size: 13px; margin-bottom: 8px; }
.kc-wyt-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.kc-wyt-tile { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 12px; border: 1px solid var(--kc-line); border-radius: 12px; background: var(--kc-surface-2); text-decoration: none; transition: border-color .12s, background .12s; }
.kc-wyt-tile:hover { border-color: var(--kc-brand); background: var(--kc-brand-soft); }
.kc-wyt-fmt { font-weight: 800; font-size: 12.5px; color: var(--kc-brand); }
.kc-wyt-ico { font-size: 16px; color: var(--kc-brand); line-height: 1; }
.kc-wyt-tile:focus-visible { outline: none; box-shadow: var(--kc-focus); }

/* Sticky belka zakupu — JEDYNY przycisk „Dodaj do koszyka" + podsumowanie + cena (napisy powiększone). */
.kc-sticky { position: fixed; left: 0; right: 0; bottom: 0; z-index: 9999; background: var(--kc-surface); border-top: 1px solid var(--kc-line-strong); box-shadow: 0 -6px 24px rgba(20,40,80,.14); }
.kc-sticky-inner { max-width: 1200px; margin: 0 auto; padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.kc-sticky-info { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; min-width: 0; }
.kc-sticky-konfig { font-size: 20px; color: var(--kc-muted); }
.kc-sticky-konfig b { color: var(--kc-ink); font-weight: 700; }
.kc-sticky-cena { font-size: 38px; font-weight: 900; color: var(--kc-brand); letter-spacing: -.02em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.kc-sticky-akcja { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.kc-dodaj { padding: 14px 30px; border: 0; border-radius: 11px; background: var(--kc-brand); color: #fff; font-weight: 800; font-size: 16px; cursor: pointer; white-space: nowrap; transition: background .12s; }
.kc-dodaj:disabled { background: #9aa4bd; cursor: not-allowed; }
.kc-dodaj:not(:disabled):hover { background: var(--kc-brand-ink); }
.kc-info { font-size: 14px; color: var(--kc-ok); font-weight: 600; }
.kc-info a { color: var(--kc-brand); font-weight: 800; }
/* „Przejdź do koszyka — wybierz projekt →" ma wyglądać jak przycisk „Dodaj do koszyka", tylko w innym
   kolorze (zieleń „gotowe/następny krok", ta sama co komunikat) — życzenie usera 2026-09-04.
   Selektor `.kc-info a.kc-do-koszyka` (0,2,1) musi przebić `.kc-info a` (0,1,1), inaczej kolor tekstu
   zostałby granatowy na zielonym tle. Geometria 1:1 z `.kc-dodaj`. */
.kc-info a.kc-do-koszyka {
  display: inline-block;
  padding: 14px 30px;
  border: 0;
  border-radius: 11px;
  background: var(--kc-ok);
  color: #fff;
  font-weight: 800;
  font-size: 16px;
  line-height: 1.2;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background .12s;
}
.kc-info a.kc-do-koszyka:hover { background: #1f5c23; color: #fff; }
.kc-info a.kc-do-koszyka:focus-visible { outline: none; box-shadow: var(--kc-focus); }

/* Miejsce na belkę, żeby nie zasłaniała stopki (CSS ładowany TYLKO na produktach z cennikiem). */
body.single-product { padding-bottom: 100px; }

/* Responsywność */
@media (max-width: 1024px) {
  .kc-layout { grid-template-columns: 1fr 1fr; }
  .kc-col-right { grid-column: 1 / -1; }
}
@media (max-width: 680px) {
  .kc-layout { grid-template-columns: 1fr; }
  .kc-projekt-opcje { grid-template-columns: 1fr; }
  .kc-sticky-inner { padding: 10px 16px; }
  .kc-sticky-konfig { flex-basis: 100%; font-size: 16px; }
  .kc-sticky-cena { font-size: 30px; }
  .kc-dodaj { padding: 12px 20px; }
  body.single-product { padding-bottom: 156px; }
}

/* Ukrywamy domyślny przycisk kreatora NBDesignera — wywołujemy go naszym guzikiem */
.kambit-cennik ~ .nbdesigner_frontend_container,
.single-product .nbdesigner_frontend_container { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Jeden przycisk zakupu: chowamy natywne pole ilości + natywny „Dodaj do koszyka" (WooCommerce/Royal Elementor)
   oraz sticky pasek Storefront (dodawałby po cenie bazowej, bez naszych metadanych). */
.single-product form.cart .quantity,
.single-product form.cart .wpr-simple-qty-wrap,
.single-product form.cart > .single_add_to_cart_button,
.single-product form.cart button.single_add_to_cart_button,
.single-product .storefront-sticky-add-to-cart { display: none !important; }

/* RANGE (produkt typu range: klient wpisuje dowolna ilosc) */
.kc-range-pole { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.kc-range-ilosc { width: 150px; padding: 10px 12px; font-size: 16px; border: 1px solid var(--kc-line, #e2e6ef); border-radius: 8px; }
.kc-range-wynik { display: flex; flex-direction: column; gap: 2px; }
.kc-range-brutto { font-size: 26px; font-weight: 800; color: var(--kc-brand, #1D3C70); line-height: 1.15; }
.kc-range-netto, .kc-range-jedn { font-size: 13px; color: var(--kc-muted, #59637e); }
.kc-range-sugestia { margin-top: 12px; padding: 10px 12px; background: #fff6e6; border: 1px solid #ffe0a3; border-radius: 8px; font-size: 13px; color: #8a5a00; }
.kc-range-tabela { width: 100%; border-collapse: collapse; margin-top: 14px; font-size: 13px; }
.kc-range-tabela th, .kc-range-tabela td { padding: 7px 10px; text-align: left; border-bottom: 1px solid var(--kc-line, #e2e6ef); }
.kc-range-tabela th { color: var(--kc-muted, #59637e); font-weight: 700; }

/* AREA (produkt liczony z powierzchni) */
.kc-area-pola { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.kc-area-pole { display: flex; flex-direction: column; gap: 6px; }
.kc-area-pola input { width: 120px; padding: 10px 12px; font-size: 16px; border: 1px solid var(--kc-line, #e2e6ef); border-radius: 8px; }
.kc-area-wynik { display: flex; flex-direction: column; gap: 2px; }
.kc-area-pow { font-size: 13px; color: var(--kc-muted, #59637e); }
.kc-area-brutto { font-size: 26px; font-weight: 800; color: var(--kc-brand, #1D3C70); line-height: 1.15; }
.kc-area-netto { font-size: 13px; color: var(--kc-muted, #59637e); }

/* Produkt BEZ atrybutów (np. banery AREA: baza/m2, brak opcji): brak lewej kolumny → układ 2-kolumnowy,
   szeroki środek. Wyższa specyficzność niż media-query .kc-layout, więc działa też ≤1024px; na telefonie 1 kolumna. */
.kambit-cennik.kc-bez-atrybutow .kc-layout { grid-template-columns: minmax(0, 1fr) 340px; }
@media (max-width: 680px) { .kambit-cennik.kc-bez-atrybutow .kc-layout { grid-template-columns: 1fr; } }

/* Hint „wyszarzona opcja = niedostępna" — pokazywany przez JS tylko gdy coś jest wyszarzone (zależne opcje) */
.kc-atrybuty-hint { margin-top: 12px; font-size: 12px; line-height: 1.4; color: #8a5a00; background: #fff6e6; border: 1px solid #ffe0a3; border-radius: 8px; padding: 8px 10px; }

/* Ikonka „?” przy nazwie atrybutu + legenda oznaczeń (nadruki 1/0…, rodzaje papieru). Pure CSS: hover + focus (klawiatura). */
.kc-label-row { display: inline-flex; align-items: center; gap: 6px; }
.kc-info-atr { position: relative; display: inline-flex; cursor: help; }
.kc-info-atr:focus-visible { outline: none; }
.kc-info-znak { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%; background: var(--kc-brand-soft); color: var(--kc-brand); border: 1px solid var(--kc-line-strong); font-size: 11px; font-weight: 800; line-height: 1; }
.kc-info-atr:hover .kc-info-znak, .kc-info-atr:focus .kc-info-znak, .kc-info-atr:focus-within .kc-info-znak { background: var(--kc-brand); color: #fff; border-color: var(--kc-brand); }
.kc-info-atr:focus-visible .kc-info-znak { box-shadow: var(--kc-focus); }
.kc-info-pop { position: absolute; left: 0; top: calc(100% + 6px); z-index: 30; min-width: 240px; max-width: 320px; display: none; flex-direction: column; gap: 6px; padding: 10px 12px; background: #fff; border: 1px solid var(--kc-line-strong); border-radius: 10px; box-shadow: var(--kc-shadow); font-size: 12.5px; line-height: 1.4; color: var(--kc-ink); font-weight: 400; text-transform: none; letter-spacing: normal; text-align: left; }
.kc-info-atr:hover .kc-info-pop, .kc-info-atr:focus .kc-info-pop, .kc-info-atr:focus-within .kc-info-pop { display: flex; }
.kc-info-poz strong { color: var(--kc-brand); }

/* Szacunek kosztu dostawy „od–do" na belce (Etap A2 wysyłki). */
.kc-sticky-dostawa { display: block; font-size: 12.5px; color: var(--kc-muted); margin-top: 3px; line-height: 1.35; }
.kc-sticky-dostawa strong { color: var(--kc-ink); }
.kc-dostawa-info { display: inline-flex; align-items: center; justify-content: center; width: 15px; height: 15px; border-radius: 50%; background: var(--kc-brand-soft); color: var(--kc-brand); border: 1px solid var(--kc-line-strong); font-size: 10px; font-weight: 800; cursor: help; vertical-align: middle; }

/* Nota o darmowej dostawie pod specyfikacją (prawa kolumna). */
.kc-darmowa-nota { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: #1f7a3d; background: #eafaef; border: 1px solid #bfe6c9; border-radius: 12px; padding: 11px 14px; }
.kc-darmowa-iko { font-size: 17px; line-height: 1; }

/* ── Jedna kontrolka usuwania projektu (zgłoszenie usera 2026-09-05) ──────────────────────────────
   NBDesigner rysuje w koszyku WŁASNY, bardzo mały krzyżyk nad wizualizacją projektu
   (`class.nbdesigner.php:3779`, tylko `is_cart()`). Powstawały przez to DWIE kontrolki robiące to samo,
   w różnych miejscach i o różnej wielkości — user sam nie zauważył krzyżyka przez pół roku pracy.
   Zostawiamy nasz przycisk `.kc-proj-odepnij` (nazywa wprost, co usuwa, i czyści OBIE warstwy:
   naszą i sesję NBD), a krzyżyk chowamy. Panel administracyjny nietknięty — krzyżyk i tak
   renderuje się wyłącznie w koszyku. */
.woocommerce-cart .nbd-cart-item-remove-design,
.woocommerce-cart .nbd-cart-item-remove-file {
    display: none !important;
}

.kc-proj-odepnij {
    margin-top: 10px;
}

/* Ostrzeżenie „nowy projekt zastąpi stary" — pokazywane, gdy pozycja ma już projekt DRUGIEGO rodzaju.
   Zmiana trybu sama w sobie niczego nie kasuje (błąd #14), więc klient musi wiedzieć, co się stanie,
   ZANIM dostarczy nowy projekt. */
.kc-proj-zastapi {
    margin: 6px 0;
    padding: 8px 10px;
    border-left: 3px solid #b8860b;
    background: #fdf6e3;
    color: #6b5200;
    font-size: 13px;
    line-height: 1.4;
}

/* ── Produkt BEZ naszego cennika (pieczątki: SIMPLE z ceną WooCommerce) ───────────────────────────
   Szablon produktu 7650 nie ma widgetu ceny — przy produktach cennikowych kwotę pokazuje matryca,
   więc przy pieczątkach cena nie pojawiała się nigdzie (zgłoszenie usera 2026-09-07). */
.kc-cena-prosta {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 14px;
}
.kc-cena-prosta .kc-cp-brutto {
    font-size: 30px;
    font-weight: 700;
    line-height: 1.1;
}
.kc-cena-prosta .kc-cp-netto {
    font-size: 14px;
    opacity: .7;
}
.kc-prosty .kc-spec {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 14px;
    row-gap: 6px;
    margin: 0;
}
.kc-prosty .kc-spec dt { font-weight: 600; }
.kc-prosty .kc-spec dd { margin: 0; }
.kc-prosty .kc-nota-dostawa {
    margin: 12px 0 0;
    font-size: 13px;
    opacity: .8;
}

/* ── Opcje INFORMACYJNE jako kafelki (np. kolor tuszu pieczątki) ──────────────────────────────────
   Ta sama forma co wybór sposobu dostarczenia projektu w koszyku — klient rozpoznaje wzorzec.
   Wybór nie zmienia ceny, dlatego nie ma go w matrycy. */
.kc-opcja-info { margin-top: 16px; }
.kc-opcja-info-tytul { font-weight: 700; margin-bottom: 8px; }
.kc-opcja-info-karty { display: flex; flex-direction: column; gap: 8px; }
/* Kafle jeden pod drugim (user 2026-09-07): układ poziomy rozpychał kolumnę w bok. */
.kc-opcja-info-karta { justify-content: flex-start; }
.kc-opcja-info-karta {
    display: inline-flex;
    align-items: center;
    padding: 9px 14px;
    border: 1px solid var(--kc-line, #e2e6ef);
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    line-height: 1.2;
    transition: border-color .12s, box-shadow .12s;
}
.kc-opcja-info-karta input[type="radio"] { position: absolute; opacity: 0; width: 1px; height: 1px; }
.kc-opcja-info-karta:hover { border-color: var(--kc-brand, #1D3C70); }
.kc-opcja-info-karta.is-active {
    border-color: var(--kc-brand, #1D3C70);
    box-shadow: inset 0 0 0 1px var(--kc-brand, #1D3C70);
    font-weight: 600;
}
.kc-opcja-info-karta:focus-within { outline: 2px solid var(--kc-brand, #1D3C70); outline-offset: 2px; }

/* JEDNA droga zakupu na produkcie z naszym cennikiem. Reguła wyżej („Jeden przycisk zakupu") nie łapie
   markupu Royal Addons, więc na stronie były DWA przyciski: nasz i Royala. Royal dodawał pozycję bez
   naszych danych i bez wybranych opcji — user 2026-09-07 dostał przez to dwie pozycje w koszyku.
   Klasa `kc-ma-cennik` jest tylko na produktach z matrycą, więc reszta sklepu zostaje nietknięta. */
.kc-ma-cennik .wpr-product-add-to-cart .single_add_to_cart_button,
.kc-ma-cennik .wpr-product-add-to-cart .quantity,
.kc-ma-cennik .wpr-simple-qty-wrap { display: none !important; }

/* Uwaga o wspólnej treści dla całej pozycji — tylko pieczątki. */
.kc-uwaga-ilosc {
    margin: -6px 0 14px;
    padding: 9px 11px;
    background: #fff6e6;
    border: 1px solid #ffe0a3;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.45;
    color: #8a5a00;
}

/* ── Układ dla produktu z opcjami informacyjnymi, ale BEZ atrybutów cenotwórczych (pieczątki) ─────
   `kc-bez-atrybutow` przełącza siatkę na DWIE kolumny, bo zakładała, że lewej kolumny nie ma.
   Od 0.43.0 lewa kolumna renderuje się także dla samych opcji informacyjnych — trzy kolumny wpadały
   wtedy do dwukolumnowej siatki, specyfikacja spadała do drugiego rzędu i zostawiała dużą pustą
   przestrzeń (zgłoszenie pracownika 2026-09-08).
   Rozwiązanie zgodne z jego propozycją: specyfikacja ląduje POD wyborem opcji, w tej samej kolumnie. */
.kambit-cennik.kc-opcje-bez-atrybutow .kc-layout { grid-template-columns: 320px minmax(0, 1fr); }
.kambit-cennik.kc-opcje-bez-atrybutow .kc-col-right { grid-column: 1; grid-row: 2; }
@media (max-width: 860px) {
    .kambit-cennik.kc-opcje-bez-atrybutow .kc-layout { grid-template-columns: 1fr; }
    .kambit-cennik.kc-opcje-bez-atrybutow .kc-col-right { grid-column: 1; grid-row: auto; }
}

/* Po dodaniu do koszyka: przejscie do koszyka jest AKCJA GLOWNA, dodanie kolejnego — drugorzedna. */
.kc-do-koszyka-btn {
    display: inline-block;
    padding: 12px 20px;
    background: var(--kc-brand, #1D3C70);
    color: #fff !important;
    border-radius: 8px;
    font-weight: 700;
    text-decoration: none !important;
}
.kc-do-koszyka-btn:hover { filter: brightness(1.1); }
.kc-dodaj-ponownie {
    margin-left: 10px;
    background: none;
    border: 0;
    padding: 6px 2px;
    color: var(--kc-muted, #59637e);
    text-decoration: underline;
    cursor: pointer;
    font-size: 13px;
}
.kc-do-koszyka-btn[hidden], .kc-dodaj-ponownie[hidden], .kc-dodaj[hidden] { display: none !important; }

/* ── Koszyk: kolumny „Cena / Ilość / Kwota" zlewały się w jedno ───────────────────────────────────
   Zgłoszenie pracownika 2026-09-08: nagłówek pokazywał „Cena IlośćKwota", a w wierszu „133,21zł1".
   Motyw nie rezerwuje tym kolumnom szerokości, a nasza sekcja „Projektuj" rozpycha kolumnę produktu,
   więc trzy ostatnie kolumny ściskały się do zera. Dajemy im minimalną szerokość i odstęp. */
.woocommerce-cart table.cart th.product-price,
.woocommerce-cart table.cart td.product-price { min-width: 110px; padding-left: 14px; white-space: nowrap; }
.woocommerce-cart table.cart th.product-quantity,
.woocommerce-cart table.cart td.product-quantity { min-width: 90px; padding-left: 14px; text-align: center; white-space: nowrap; }
.woocommerce-cart table.cart th.product-subtotal,
.woocommerce-cart table.cart td.product-subtotal { min-width: 130px; padding-left: 14px; text-align: right; white-space: nowrap; }
@media (max-width: 720px) {
    /* Na telefonie motyw układa wiersz pionowo — wtedy minimalne szerokości tylko przeszkadzają. */
    .woocommerce-cart table.cart th.product-price,
    .woocommerce-cart table.cart td.product-price,
    .woocommerce-cart table.cart th.product-quantity,
    .woocommerce-cart table.cart td.product-quantity,
    .woocommerce-cart table.cart th.product-subtotal,
    .woocommerce-cart table.cart td.product-subtotal { min-width: 0; padding-left: 0; white-space: normal; }
}

/* Ostrzeżenie dla pieczątek OKRĄGŁYCH: kreator ma obszar kwadratowy, więc narożniki się nie odbiją.
   Mocniejsze wizualnie niż uwaga o wspólnej treści — pomyłka kosztuje tu wyrób nie do użycia. */
.kc-uwaga-ksztalt {
    margin: 6px 0 14px;
    padding: 9px 11px;
    background: #fdecea;
    border: 1px solid #f5b7b1;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.45;
    color: #922b21;
}
