.rk{box-sizing:border-box}
.rk *,.rk *::before,.rk *::after{box-sizing:border-box}
.rk button{font-family:inherit;text-transform:none;letter-spacing:normal;text-decoration:none;box-shadow:none}
.rk input{font-family:inherit}
/* (v0.8.1) SELECT MUSI BYĆ ZAHARTOWANY tak samo jak button. OceanWP ma goły
   `select{height:2.25em;padding:0 15px}` ORAZ `form select{padding-top:0!important;
   padding-bottom:0!important}`. Pierwsze narzucało niską, sztywną wysokość, przez co
   nasz pionowy padding wypychał tekst poza pole i listy producenta/rodzaju robiły się
   nieczytelne na froncie (w podglądzie standalone tego nie widać — CSS motywu tam nie ma). */
.rk select{font-family:inherit;text-transform:none;letter-spacing:normal;
  height:auto;min-height:0;box-shadow:none;max-width:none}
.rk ul{list-style:none}
.rk a{text-decoration:none}
.rk {
    --blue:#010080; --blue-press:#010060; --blue-soft:#e6e6f2;
    --navy:#0f1c40; --text:#1e2636; --muted:#5c6675; --faint:#939cab;
    --bg:#ffffff; --card:#eef1f6; --card-2:#f6f8fb; --surface:#ffffff;
    --stroke:#dde3ea; --stroke-soft:#e8ecf2; --ok:var(--blue); --warn:#e08a1e;
    --shadow-card:0 12px 34px rgba(15,28,64,.07);
    --shadow-soft:0 1px 2px rgba(16,24,40,.05), 0 6px 18px rgba(15,28,64,.05);
    --display:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  }
.rk * {box-sizing:border-box}
.rk {margin:0}
.rk {background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.55;-webkit-font-smoothing:antialiased;padding:34px 22px 64px}
.rk {max-width:1320px;margin:0 auto}   /* szerzej: paleta aparatury miesci 3 karty w rzedzie */
.rk button {font-family:inherit;text-transform:none;letter-spacing:normal}
.rk .masthead {margin:0 4px 20px}
.rk .eyebrow {display:inline-flex;align-items:center;gap:9px;font-family:var(--display);font-weight:700;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--blue);margin:0 0 12px}
.rk .eyebrow::before {content:"";width:9px;height:9px;border-radius:50%;background:var(--blue)}
.rk .masthead h1 {font-family:var(--display);font-weight:800;color:var(--navy);font-size:clamp(26px,3.6vw,38px);line-height:1.05;letter-spacing:-.02em;margin:0}
.rk .masthead h1 .accent {color:var(--blue)}
.rk .wiz {border:1px solid var(--stroke);border-radius:22px;background:var(--surface);box-shadow:var(--shadow-card);overflow:hidden}
.rk /* --- pasek kroków --- */
  /* (N) FLEX, a nie `grid-template-columns:repeat(4,1fr)`. Krok „Zasilanie" znika
     w rozdzielnicach stałych (`syncSteps` ustawia `hidden`), a sztywna siatka
     zostawiłaby po nim pustą kolumnę. Flex zwija ukryty element do zera. */
  .steps {list-style:none;display:flex;margin:0;padding:0;border-bottom:1px solid var(--stroke-soft);background:var(--card-2)}
.rk .steps li {flex:1 1 0;min-width:0;display:flex;align-items:center;gap:11px;padding:16px 18px;cursor:pointer;border-right:1px solid var(--stroke-soft);transition:background .12s}
/* `[hidden]` musi bic `display:flex` powyzej — inaczej wyciety krok dalej zajmuje miejsce */
.rk .steps li[hidden] {display:none}
.rk .steps li:last-child {border-right:0}
.rk .steps li:hover {background:#eef1f6}
.rk .steps .num {width:26px;height:26px;flex:none;border-radius:50%;display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:13px;background:#fff;color:var(--faint);border:1.5px solid var(--stroke)}
.rk .steps .lab {font-family:var(--display);font-weight:600;font-size:13px;color:var(--faint);line-height:1.15}
.rk .steps .lab small {display:block;font-family:var(--sans);font-weight:400;font-size:11px;color:#aab2bd}
.rk .steps li[data-done="1"] .num {background:var(--blue);color:#fff;border-color:var(--blue)}
.rk .steps li[data-done="1"] .lab {color:var(--navy)}
.rk .steps li[aria-current="step"] .num {background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-soft)}
.rk .steps li[aria-current="step"] .lab {color:var(--navy)}
.rk .panel {padding:26px 26px 8px}
.rk .panel[hidden] {display:none}
.rk .phead {font-family:var(--display);font-weight:700;font-size:19px;color:var(--navy);letter-spacing:-.01em;margin:0 0 3px}
.rk .psub {font-size:13.5px;color:var(--muted);margin:0 0 20px}
.rk /* --- karty wyboru --- */
  .grid {display:grid;gap:12px}
.rk .grid.boxes {grid-template-columns:repeat(2,1fr)}
.rk .grid.sockets {grid-template-columns:repeat(3,1fr)}
@media (max-width:720px) {
.rk .grid.boxes, .rk .grid.sockets {grid-template-columns:1fr 1fr}
}
@media (max-width:460px) {
.rk .grid.sockets {grid-template-columns:1fr}
}
.rk .opt {text-align:left;cursor:pointer;font-family:var(--sans);color:inherit;border:1.5px solid var(--stroke);border-radius:14px;background:var(--surface);padding:14px;transition:border-color .13s,background .13s,box-shadow .13s,transform .13s;display:flex;gap:13px;align-items:center}
.rk .opt:hover {border-color:#c3ccd8;transform:translateY(-1px);box-shadow:var(--shadow-soft)}
.rk .opt:focus-visible {outline:2px solid var(--blue);outline-offset:2px}
.rk .opt[aria-pressed="true"] {border-color:var(--blue);background:var(--blue-soft);box-shadow:inset 0 0 0 1px var(--blue)}
.rk .opt .thumb {flex:none;width:52px;height:44px;display:grid;place-items:center}
.rk .opt .body {display:flex;flex-direction:column;min-width:0}
.rk .opt .nm {font-family:var(--display);font-weight:600;font-size:14px;color:var(--navy);letter-spacing:-.005em}
.rk .opt .mt {font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:2px}
/* (usunięto .opt .fit — nieużywane) */
.rk .opt.sock {flex-direction:column;align-items:stretch;gap:6px}
.rk .opt.sock .nm {font-size:13.5px}
.rk /* --- breadcrumb chipy --- */
  .chips {display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.rk .chip {display:inline-flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--stroke-soft);border-radius:999px;padding:6px 6px 6px 12px;font-size:12.5px;color:var(--navy)}
.rk .chip b {font-family:var(--display);font-weight:600}
.rk .chip .edit {border:0;background:#fff;border-radius:999px;padding:4px 10px;font-family:var(--display);font-weight:600;font-size:11px;color:var(--blue);cursor:pointer;box-shadow:0 1px 2px rgba(15,28,64,.08)}
.rk .chip .edit:hover {background:var(--blue-soft)}
.rk /* --- podgląd --- */
  .preview-card {background:var(--card);border-radius:18px;padding:16px 16px 12px;box-shadow:inset 0 0 0 1px var(--stroke-soft);margin-bottom:16px}
.rk .preview-head {display:flex;align-items:center;justify-content:space-between;margin:2px 4px 10px}
.rk .ph-label {font-family:var(--display);font-weight:700;font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--navy)}
.rk .pill {display:inline-flex;align-items:center;gap:7px;font-family:var(--display);font-weight:600;font-size:11px;letter-spacing:.04em;padding:5px 11px;border-radius:999px;background:#fff;color:var(--navy);box-shadow:0 1px 2px rgba(15,28,64,.08)}
.rk .pill .pdot {width:8px;height:8px;border-radius:50%;background:var(--blue)}
.rk .sheet-wrap svg {display:block;width:100%;height:auto;max-height:46vh}
.rk .preview-foot {display:flex;align-items:center;gap:8px;margin:8px 4px 2px;font-size:11.5px;color:var(--muted)}
.rk .preview-foot .bdot {width:7px;height:7px;border-radius:50%;background:var(--blue);flex:none}
.rk .legend {display:flex;gap:20px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--muted);padding:0 4px;margin-bottom:16px}
.rk .legend .k {display:inline-flex;align-items:center;gap:7px}
/* (usunięto .legend .sw-cut — nieużywane) */
.rk .legend .sw-screw {color:var(--navy);font-size:14px;font-weight:700;line-height:1}
.rk /* --- parametry + spec (krok 3) --- */
  .s3cols {display:grid;grid-template-columns:300px 1fr;gap:16px}
@media (max-width:760px) {
.rk .s3cols {grid-template-columns:1fr}
}
.rk .ctrls {border:1px solid var(--stroke);border-radius:16px;padding:16px 18px;box-shadow:var(--shadow-soft);height:max-content}
.rk .ctrls .k {font-family:var(--display);font-weight:600;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);margin-bottom:12px}
.rk .field .row {display:flex;align-items:center;justify-content:space-between;gap:12px}
.rk .field label {font-size:13px;color:var(--muted)}
.rk .val {font-family:var(--display);font-weight:600;font-size:13px;color:var(--navy);font-variant-numeric:tabular-nums}
/* (usunięto style input[type=range] — suwak prześwitu wycofany) */
.rk .stepper {display:flex;align-items:center;border:1.5px solid var(--stroke);border-radius:11px;overflow:hidden;width:max-content}
.rk .stepper button {width:38px;height:36px;border:0;background:var(--card-2);cursor:pointer;font-size:18px;line-height:1;color:var(--navy)}
.rk .stepper button:hover {background:#e9edf3}
.rk .stepper button:disabled {color:#c3ccd8;cursor:not-allowed}
.rk .stepper .count {min-width:66px;text-align:center;font-family:var(--display);font-weight:600;font-size:13.5px;font-variant-numeric:tabular-nums;padding:0 6px;border-left:1.5px solid var(--stroke);border-right:1.5px solid var(--stroke)}
.rk .btn-ghost {font-family:var(--display);font-weight:600;font-size:11.5px;border:1.5px solid var(--stroke);background:var(--surface);border-radius:10px;padding:8px 12px;cursor:pointer;color:var(--muted);margin-left:10px}
.rk .btn-ghost:hover {border-color:#c3ccd8;color:var(--navy)}
.rk .spec {border:1px solid var(--stroke);border-radius:16px;overflow:hidden;box-shadow:var(--shadow-soft)}
.rk .spec-grid {display:grid;grid-template-columns:1fr 1fr}
.rk .si {padding:13px 16px;border-right:1px solid var(--stroke-soft);border-bottom:1px solid var(--stroke-soft)}
.rk .si:nth-child(2n) {border-right:0}
.rk .si .k {font-family:var(--display);font-weight:600;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);margin-bottom:5px}
.rk .si .v {font-size:13.5px;color:var(--navy);font-weight:500}
.rk .si .v.num {font-variant-numeric:tabular-nums}
.rk .bom-box {padding:14px 16px}
.rk .box-k {font-family:var(--display);font-weight:600;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);margin-bottom:9px}
.rk .bom {list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.rk .bom li {display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--navy)}
.rk .bom .sku {font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}
.rk .pricebar {display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-top:1px solid var(--stroke-soft);background:var(--card-2)}
.rk .pricebar .lab {font-size:12.5px;color:var(--muted)}
.rk .pricebar .sum {font-family:var(--display);font-weight:800;font-size:22px;color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.rk .disc {font-size:10.5px;color:var(--warn);padding:0 16px 12px}
.rk /* --- nawigacja --- */
  .nav {display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 26px 24px}
.rk .btn-back {font-family:var(--display);font-weight:600;font-size:13.5px;border:1.5px solid var(--stroke);background:var(--surface);border-radius:12px;padding:12px 18px;cursor:pointer;color:var(--muted)}
.rk .btn-back:hover {border-color:#c3ccd8;color:var(--navy)}
.rk .btn-back[hidden] {display:none}
.rk .btn-next {font-family:var(--display);font-weight:600;font-size:14px;border:0;border-radius:12px;background:var(--blue);color:#fff;padding:12px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:9px;transition:background .13s}
.rk .btn-next:hover {background:var(--blue-press)}
.rk .btn-next .lab {text-decoration:underline;text-underline-offset:3px}
.rk .btn-next .p {font-weight:500;opacity:.82;font-variant-numeric:tabular-nums}
.rk :focus-visible {outline:2px solid var(--blue);outline-offset:2px}
@media (prefers-reduced-motion:reduce) {
.rk * {transition:none!important}
}
/* ======================================================
   v0.3.0 — builder kroku 2 (paleta + koszyk + zajętość) + zdjęcia
   ====================================================== */
.rk .thumb{position:relative}
.rk .thumb .ph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:8px}

.rk .buildcols{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
@media (max-width:820px){.rk .buildcols{grid-template-columns:1fr}}

/* paleta gniazd — karty z przyciskiem „Dodaj" (kontener, nie <button>) */
.rk .grid.sockets{grid-template-columns:1fr 1fr}
@media (max-width:460px){.rk .grid.sockets{grid-template-columns:1fr}}
.rk .sockcard{border:1.5px solid var(--stroke);border-radius:14px;background:var(--surface);padding:12px;display:flex;flex-direction:column;gap:8px;align-items:stretch}
.rk .sockcard .thumb{width:100%;height:56px;display:grid;place-items:center;background:var(--card-2);border-radius:10px}
.rk .sockcard .thumb .ph{border-radius:10px}
.rk .sockcard .body{display:flex;flex-direction:column;min-width:0}
.rk .sockcard .nm{font-family:var(--display);font-weight:600;font-size:13px;color:var(--navy)}
.rk .sockcard .mt{font-size:11.5px;color:var(--muted);margin-top:2px}
.rk .sock-add{margin-top:2px;font-family:var(--display);font-weight:600;font-size:12.5px;border:1.5px solid var(--blue);background:var(--blue);color:#fff;border-radius:10px;padding:8px;cursor:pointer;transition:background .13s}
.rk .sock-add:hover{background:var(--blue-press)}
/* (usunięto .sock-add:disabled — to teraz <span>, stan disabled przez .sockcard.disabled) */

/* prawa kolumna buildera */
.rk .buildside{display:flex;flex-direction:column;gap:14px}
.rk .buildside .preview-card{margin-bottom:0}
.rk .buildside .sheet-wrap svg{max-height:34vh}

.rk .capwrap{display:flex;flex-direction:column;gap:8px}
.rk .capbar{height:7px;border-radius:99px;background:var(--card);overflow:hidden}
.rk .capbar > i{display:block;height:100%;width:0;background:var(--blue);transition:width .2s}
.rk .capmsg{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.rk .cpill{font-family:var(--display);font-weight:600;font-size:11px;padding:3px 9px;border-radius:999px}
.rk .cpill.ok{background:var(--blue-soft);color:var(--blue)}
.rk .cpill.warn{background:#fbf1df;color:var(--warn)}

/* koszyk */
.rk .basketbox{border:1px solid var(--stroke);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow-soft)}
.rk .basket{display:flex;flex-direction:column;gap:8px}
.rk .basket-empty{font-size:12.5px;color:var(--muted);padding:6px 2px}
.rk .brow{display:flex;align-items:center;gap:10px}
.rk .brow .bnm{flex:1;font-size:13px;color:var(--navy);font-weight:500;min-width:0}
.rk .stepper.sm{border-radius:9px}
.rk .stepper.sm button{width:30px;height:30px;font-size:16px}
.rk .stepper.sm .count{min-width:30px;font-size:13px}
.rk .brm{border:0;background:none;color:var(--faint);font-size:11.5px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.rk .brm:hover{color:#c0392b}

/* (suwak prześwitu usunięty — prześwit stały 10 mm, poza UI) */

/* (usunięto .mixlist — w v0.7.0 została jedna lista podsumowania, ze zdjęciami) */
/* (v0.10.0) APARAT PONIŻEJ PROGU STANU. Odróżniamy go od zwykłego `.disabled`
   („brak miejsca", „niezgodny"): tamte znikną, gdy klient zmieni konfigurację,
   ten zależy od magazynu i klient nic z nim nie zrobi. Stąd wyblakłe zdjęcie
   i ostrzegawczy kolor etykiety zamiast samego wyszarzenia. */
.rk .sockcard.bezstanu .thumb{opacity:.4;filter:grayscale(1)}
.rk .sockcard.bezstanu .nm{color:var(--muted)}
.rk .sockcard.bezstanu .sock-add{color:var(--warn);border-color:var(--warn);background:transparent}
/* (0.15.0) wyprzedana obudowa w kroku 2 — widoczna, ale wyszarzona, z prośbą o kontakt.
   Wygaszamy ZDJĘCIE i NAZWĘ, nie całą kartę: prośba o kontakt z numerem ma być czytelna. */
.rk .opt.bezstanu{cursor:not-allowed}
.rk .opt.bezstanu:hover{transform:none;border-color:var(--stroke);box-shadow:none}
.rk .opt.bezstanu .thumb{opacity:.4;filter:grayscale(1)}
.rk .sockcard.bezstanu.disabled{opacity:1;filter:none}
.rk .opt.bezstanu .nm{color:var(--muted)}
.rk .opt .mt.why{color:var(--warn);font-weight:600;margin-top:5px}
/* link kontaktu w karcie wygaszonej: karta ma `cursor:not-allowed`, link ma być klikalny */
.rk a.kontakt{color:var(--blue);text-decoration:underline;cursor:pointer;white-space:nowrap}
.rk a.kontakt:hover{color:var(--blue-press)}
/* (0.15.0) krok, do którego nie da się jeszcze przejść (poprzedni nie jest skończony) */
.rk .steps li[aria-disabled="true"]{cursor:not-allowed}
.rk .steps li[aria-disabled="true"]:hover{background:transparent}
.rk .phasecard[disabled]{opacity:.55;cursor:not-allowed}
.rk .mixempty{color:var(--faint);font-size:12.5px}
.rk .bom.photo li.mixempty{background:none;border:0;padding:0;grid-column:1/-1}

/* nawigacja: „Dalej" zablokowane */
.rk .btn-next:disabled{background:var(--card);color:var(--faint);cursor:not-allowed}
.rk .btn-next:disabled .lab{text-decoration:none}

/* ======================================================
   v0.3.3 — zdjęcia produktów: pełny kadr (contain) na białym + karty pionowe
   ====================================================== */
.rk .opt{flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden}
.rk .opt .thumb{width:100%;height:auto;aspect-ratio:4/3;display:grid;place-items:center;background:#fff;border-bottom:1px solid var(--stroke-soft);border-radius:0;padding:0}
.rk .opt .body{padding:12px 14px 14px}
.rk .sockcard{padding:0;gap:0;overflow:hidden}
.rk .sockcard .thumb{width:100%;height:auto;aspect-ratio:4/3;display:grid;place-items:center;background:#fff;border-radius:0;border-bottom:1px solid var(--stroke-soft);padding:0}
.rk .sockcard .body{padding:10px 11px 0}
.rk .sockcard .sock-add{margin:10px 11px 11px}
.rk .opt .thumb .ph,.rk .sockcard .thumb .ph{object-fit:contain;background:#fff;padding:8px;border-radius:0}
.rk .opt .thumb svg,.rk .sockcard .thumb svg{width:auto;height:54px}

/* intro/lead pod nagłówkiem */
.rk .masthead .lead{max-width:640px;margin:12px 4px 0;font-size:14.5px;color:var(--muted);line-height:1.6}


/* ==== v0.4.0-preview — typ obudowy + taksonomia gniazd + strefy ==== */

/* (A) karty kategorii */
.rk .catgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media (max-width:720px){.rk .catgrid{grid-template-columns:1fr}}
.rk .catcard{text-align:left;cursor:pointer;font-family:var(--sans);color:inherit;border:1.5px solid var(--stroke);border-radius:14px;background:var(--surface);padding:16px;display:flex;gap:13px;align-items:flex-start;transition:border-color .13s,background .13s,box-shadow .13s,transform .13s}
.rk .catcard:hover{border-color:#c3ccd8;transform:translateY(-1px);box-shadow:var(--shadow-soft)}
.rk .catcard:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.rk .catcard[aria-pressed="true"]{border-color:var(--blue);background:var(--blue-soft);box-shadow:inset 0 0 0 1px var(--blue)}
/* (2026-09-10) `.ci` istnieje TYLKO na kartach podkategorii — poziom 1 renderuje sam tekst. */
.rk .catcard .ci{flex:none;width:40px;height:40px;border-radius:11px;display:grid;place-items:center;background:var(--card-2);color:var(--blue)}
.rk .catcard[aria-pressed="true"] .ci{background:#fff}
.rk .catcard .cb{display:flex;flex-direction:column;min-width:0}
.rk .catcard .cn{font-family:var(--display);font-weight:600;font-size:14.5px;color:var(--navy)}
.rk .catcard .cd{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.4}
.rk .catcard .cc{margin-top:7px;font-family:var(--display);font-weight:600;font-size:11px;color:var(--blue)}
.rk .catcard.empty .ci{color:var(--warn)}
.rk .catcard.empty .cc{color:var(--warn)}

/* (C) taksonomia gniazd — zakładki fazy */
/* (usunięto .taxbar/.taxtab — zastąpione .phasegate/.phasecard w v0.4.1) */

/* (C) podział amperażu */
.rk .ampbar{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 14px}
.rk .ampbar[hidden]{display:none}
.rk .amptab{display:inline-flex;align-items:baseline;font-family:var(--display);font-weight:600;font-size:12px;border:1.5px solid var(--stroke);background:var(--surface);color:var(--muted);border-radius:999px;padding:6px 13px;cursor:pointer;transition:border-color .12s,background .12s,color .12s}
.rk .amptab:hover{border-color:#c3ccd8;color:var(--navy)}
.rk .amptab[aria-selected="true"]{border-color:var(--warn);background:#fbf1df;color:var(--warn)}
.rk .amptab .z{font-weight:500;opacity:.75;font-size:10.5px;margin-left:6px}

/* empty-states */
.rk .sockempty,.rk .boxempty{border:1.5px dashed var(--stroke);border-radius:14px;padding:22px 16px;text-align:center;color:var(--muted);font-size:12.5px;background:var(--card-2)}
.rk .sockempty{grid-column:1/-1}
.rk .sockempty b,.rk .boxempty b{display:block;font-family:var(--display);color:var(--navy);font-weight:600;font-size:13px;margin-bottom:4px}

/* (D) legenda stref */
.rk .legend .sw-1f{width:14px;height:14px;border-radius:4px;border:2px solid var(--blue);background:rgba(31,79,221,.06)}
.rk .legend .sw-wf{width:14px;height:14px;border-radius:4px;border:2px solid var(--warn);background:rgba(224,138,30,.08)}

/* ==== v0.4.1 — gniazdo jako duży „gate" + auto-powiększanie obudowy ==== */

/* notka o powiększeniu obudowy */
.rk .boxnotice{display:flex;align-items:center;gap:11px;margin:0 0 16px;padding:12px 14px;border:1.5px solid var(--blue);background:var(--blue-soft);border-radius:13px;color:var(--navy);font-size:13px;line-height:1.45}
.rk .boxnotice[hidden]{display:none}
.rk .boxnotice .bn-ic{flex:none;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#fff;color:var(--blue);font-size:15px;font-weight:700}
.rk .boxnotice .bn-tx{flex:1}
.rk .boxnotice .bn-tx b{font-family:var(--display);font-weight:600}
.rk .boxnotice .bn-x{flex:none;border:0;background:none;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;padding:0 2px}
.rk .boxnotice .bn-x:hover{color:var(--navy)}

/* karta gniazda = duży klikalny „gate" */
.rk .sockcard[role="button"]{cursor:pointer;transition:border-color .13s,box-shadow .13s,transform .13s}
.rk .sockcard[role="button"]:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:var(--shadow-soft)}
.rk .sockcard[role="button"]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.rk .sockcard.disabled{opacity:.6;filter:grayscale(.3)}
.rk .sockcard.disabled[role="button"]{cursor:not-allowed}

/* duże CTA „Dodaj gniazdo" (span, nie <button>) */
.rk .sockcard .sock-add{display:flex;align-items:center;justify-content:center;gap:7px;margin:10px;min-height:38px;padding:8px 10px;font-size:13px;font-weight:600;border-radius:10px;letter-spacing:.01em}
.rk .sockcard[role="button"]:hover .sock-add{background:var(--blue-press)}
.rk .sockcard .sock-add .plus{font-size:17px;line-height:0;font-weight:700;margin-top:-1px}
.rk .sockcard.disabled .sock-add{background:var(--card);border-color:var(--stroke);color:var(--faint)}

/* GATE — wybór fazy jako duże karty (najpierw), potem przełącznik amperażu + lista */
.rk .phasegate{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 18px}
@media (max-width:520px){.rk .phasegate{grid-template-columns:1fr}}
.rk .phasecard{display:flex;align-items:center;gap:13px;text-align:left;cursor:pointer;font-family:var(--sans);color:inherit;border:1.5px solid var(--stroke);border-radius:14px;background:var(--surface);padding:15px 17px;transition:border-color .13s,background .13s,box-shadow .13s,transform .13s}
.rk .phasecard:hover{border-color:#c3ccd8;transform:translateY(-1px);box-shadow:var(--shadow-soft)}
.rk .phasecard:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.rk .phasecard .pg-ic{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--card-2);color:var(--blue)}
.rk .phasecard .pg-ic svg{width:25px;height:25px}
.rk .phasecard .pg-b{display:flex;flex-direction:column;min-width:0}
.rk .phasecard .pg-n{font-family:var(--display);font-weight:600;font-size:15.5px;color:var(--navy);letter-spacing:-.005em}
.rk .phasecard .pg-d{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.4}
.rk .phasecard[data-ph="1F"][aria-selected="true"]{border-color:var(--blue);background:var(--blue-soft);box-shadow:inset 0 0 0 1px var(--blue)}
.rk .phasecard[data-ph="1F"][aria-selected="true"] .pg-ic{background:#fff}
.rk .phasecard[data-ph="WF"] .pg-ic{color:var(--warn)}
.rk .phasecard[data-ph="WF"][aria-selected="true"]{border-color:var(--warn);background:#fbf1df;box-shadow:inset 0 0 0 1px var(--warn)}
.rk .phasecard[data-ph="WF"][aria-selected="true"] .pg-ic{background:#fff}

/* prompt „najpierw wybierz fazę" (gate) — zachęcający, nie szary empty-state */
.rk .sockempty.gate{border-color:var(--blue);background:var(--blue-soft);color:var(--navy)}
.rk .sockempty.gate b{color:var(--navy)}

/* nawigacja: przycisk „Zacznij od nowa" (reset całości) */
.rk .nav-l{display:flex;align-items:center;gap:8px}
.rk .btn-reset{font-family:var(--display);font-weight:600;font-size:13px;border:1.5px solid transparent;background:none;color:var(--muted);cursor:pointer;padding:11px 12px;border-radius:12px}
.rk .btn-reset:hover{color:#c0392b;border-color:var(--stroke);background:var(--surface)}
.rk .btn-reset:focus-visible{outline:2px solid var(--blue);outline-offset:2px}

/* ==== v0.4.2 — dopasowanie obudowy (A2), ceny (B4), fokus kroku (C8) ==== */
.rk .opt.toosmall{opacity:.55;cursor:not-allowed}
.rk .opt.toosmall:hover{transform:none;border-color:var(--stroke);box-shadow:none}
.rk .fitbadge{align-self:flex-start;margin-top:7px;font-family:var(--display);font-weight:600;font-size:10.5px;padding:2px 9px;border-radius:999px}
.rk .fitbadge.ok{background:var(--blue-soft);color:var(--blue)}
.rk .fitbadge.no{background:#fbe6e2;color:#c0392b}
.rk .boxnotice.down{border-color:var(--ok);background:var(--card-2)}
.rk .phead:focus{outline:none}

/* pasek kroków na telefonie: 4 równe kolumny, kompaktowo (numer nad etykietą, bez podtytułu) */
@media (max-width:760px){
  .rk .steps li{flex-direction:column;align-items:center;text-align:center;gap:5px;padding:11px 4px;min-width:0}
  .rk .steps .num{width:24px;height:24px;font-size:12px}
  .rk .steps .lab{font-size:11.5px;line-height:1.12}
  .rk .steps .lab small{display:none}
}

/* ===== v0.4.3 — DWUPOZIOMOWA TAKSONOMIA OBUDÓW (grupa → kategoria) =====
   .groupgate/.groupcard = poziom 1 (Przenośne / Stałe), nad istniejącym .catgrid.
   Wzorzec skopiowany z .phasegate/.phasecard (krok 3), ale zaznaczenie zawsze w --blue. */
.rk .groupgate{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 18px}
@media (max-width:520px){.rk .groupgate{grid-template-columns:1fr}}
.rk .groupcard{display:flex;align-items:center;gap:13px;text-align:left;cursor:pointer;font-family:var(--sans);color:inherit;border:1.5px solid var(--stroke);border-radius:14px;background:var(--surface);padding:15px 17px;transition:border-color .13s,background .13s,box-shadow .13s,transform .13s}
.rk .groupcard:hover{border-color:#c3ccd8;transform:translateY(-1px);box-shadow:var(--shadow-soft)}
.rk .groupcard:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.rk .groupcard .pg-ic{flex:none;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--card-2);color:var(--blue)}
.rk .groupcard .pg-ic svg{width:25px;height:25px}
.rk .groupcard .pg-b{display:flex;flex-direction:column;min-width:0}
.rk .groupcard .pg-n{font-family:var(--display);font-weight:600;font-size:15.5px;color:var(--navy);letter-spacing:-.005em}
.rk .groupcard .pg-d{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.4}
.rk .groupcard[aria-selected="true"]{border-color:var(--blue);background:var(--blue-soft);box-shadow:inset 0 0 0 1px var(--blue)}
.rk .groupcard[aria-selected="true"] .pg-ic{background:#fff}
.rk .groupcard.empty .pg-ic{color:var(--warn)}

/* zagnieżdżone poziomy kategorii — każdy poziom to osobny rząd .catgrid wewnątrz #catGrid */
.rk .catlevels{display:grid;gap:14px}
.rk .catcard.branch .cc{color:var(--muted)}

/* ===== v0.4.5 — krok 1: duże karty grupy + symetryczne rzędy =====
   Liczbę kolumn podaje JS zmienną --cols (NIE inline-property, żeby media queries wygrywały). */
.rk .groupgate{grid-template-columns:repeat(var(--cols,2),1fr);gap:14px;margin:0 0 22px}
.rk .catgrid{grid-template-columns:repeat(var(--cols,3),1fr)}

/* karty grupy — wyraźnie większe od kart kategorii, to jest pierwsza decyzja klienta */
.rk .groupcard{padding:26px 24px;gap:18px;border-radius:16px;border-width:2px}
.rk .groupcard .pg-ic{width:58px;height:58px;border-radius:16px}
.rk .groupcard .pg-ic svg{width:32px;height:32px}
.rk .groupcard .pg-n{font-size:20px;letter-spacing:-.015em}
.rk .groupcard .pg-d{font-size:13.5px;margin-top:4px}
.rk .groupcard[aria-selected="true"]{box-shadow:inset 0 0 0 2px var(--blue)}

@media (max-width:720px){.rk .catgrid{grid-template-columns:1fr}}
@media (max-width:520px){
  .rk .groupgate{grid-template-columns:1fr}
  .rk .groupcard{padding:20px 18px}
  .rk .groupcard .pg-n{font-size:17.5px}
}
/* tytuly kart grupy zawsze na tej samej wysokosci, nawet gdy opis zlamie sie na 2 linie */
.rk .groupcard{align-items:flex-start}
/* komunikaty pustego stanu maja zajmowac caly rzad siatki, a nie jedna kolumne */
.rk .grid.boxes>.boxempty,.rk .grid.sockets>.sockempty{grid-column:1/-1}

/* ---------- (E) GAŁĄŹ MODUŁOWA (obudowy na szynę DIN) ----------
   Podgląd szyny: klocki mają szerokość PROPORCJONALNĄ do liczby modułów (flex-grow = szerokość),
   więc 2M jest dokładnie dwa razy szerszy niż 1M — to samo, co pokazuje pakowacz. */
.rk .dinrail{display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--card-2);
  border:1px solid var(--stroke-soft);border-radius:12px}
.rk .dinrow{display:flex;gap:3px;align-items:stretch;height:52px}
.rk .dinrail.big .dinrow{height:64px}
.rk .dincell{display:flex;align-items:center;justify-content:center;text-align:center;
  min-width:0;overflow:hidden;padding:0 6px;border-radius:6px;
  font-family:var(--sans);font-size:11px;font-weight:600;line-height:1.15;
  color:var(--blue);background:var(--blue-soft);border:1px solid var(--blue)}
.rk .dincell.dc{color:var(--warn);background:rgba(224,138,30,.10);border-color:var(--warn)}
.rk .dinfree{display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;
  border-radius:6px;border:1px dashed var(--stroke);color:var(--muted);
  font-family:var(--sans);font-size:11px;background:transparent}
.rk .modw{color:var(--blue);font-weight:700}
@media (max-width:520px){.rk .dincell,.rk .dinfree{font-size:10px;padding:0 3px}}
/* legenda stref i notka o układzie mają display:flex, więc atrybut [hidden] sam ich nie schowa
   — gałąź modułowa ich nie używa (nie ma stref ani frezowania). */
.rk .legend[hidden],.rk .preview-foot[hidden]{display:none}
/* powód odmowy WIDOCZNY na karcie — wcześniej siedział tylko w atrybucie title,
   czyli na telefonie nie było go w ogóle */
.rk .sockcard .mt.why{color:var(--warn);font-weight:600}

/* skrót do gotowych rozdzielnic — dla klienta, który nie chce konfigurować od zera */
/* Motyw (OceanWP/WooCommerce) podkresla linki w tresci regula o tej samej specyficznosci
   co `.rk a`, ale ladowana pozniej — dlatego skrot wyszedl podkreslony na produkcji,
   choc lokalnie byl czysty. Podbijamy specyficznosc zamiast liczyc na kolejnosc arkuszy. */
.rk a.readymade,.rk a.readymade:hover,.rk a.readymade:focus,
.rk a.readymade b,.rk a.readymade span{text-decoration:none!important;border-bottom:0!important;box-shadow:none!important}
.rk .readymade{display:inline-flex;align-items:center;gap:12px;margin:16px 4px 0;padding:11px 14px;
  border:1px solid var(--stroke);border-radius:12px;background:var(--card-2);
  text-decoration:none;color:var(--text);transition:border-color .15s,background .15s,transform .15s}
.rk .readymade:hover{border-color:var(--blue);background:var(--blue-soft);transform:translateY(-1px)}
.rk .readymade .rm-ic{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:9px;
  background:#fff;border:1px solid var(--stroke-soft);color:var(--blue)}
.rk .readymade .rm-ic svg{width:19px;height:19px}
.rk .readymade .rm-b{display:flex;flex-direction:column;gap:1px;min-width:0}
.rk .readymade .rm-b b{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--navy);line-height:1.25}
.rk .readymade .rm-b span{font-size:12.5px;color:var(--muted);line-height:1.35}
.rk .readymade .rm-go{flex:none;color:var(--blue);font-weight:700;font-size:16px}
@media (max-width:520px){.rk .readymade{display:flex;margin-right:4px}
  .rk .readymade .rm-b span{font-size:12px}}
/* pojedynczy wpis legendy jest inline-flex, wiec [hidden] sam go nie schowa */
.rk .legend .k[hidden]{display:none}
/* pozycje aparatury, ktore nie zmiescily sie po zmianie obudowy */
.rk .brow.niezmieszczony{background:rgba(224,138,30,.07);border-radius:8px}
.rk .brow .bwarn{display:block;margin-top:2px;font-size:11px;font-weight:600;color:var(--warn)}
.rk .capmsg .capwarn{color:var(--warn);font-weight:700}

/* ---------- ZAGNIEŻDŻENIE KATEGORII ----------
   Poziom 2+ dostaje własny kontener z nagłówkiem rodzica, wcięciem i szyną po lewej.
   Wcześniej rodzic i dzieci renderowały się identycznymi kartami w jednej siatce,
   przez co całość czytało się jako płaska lista, a nie drzewo. */
.rk .catlevel{margin-top:14px;padding:12px 14px 14px;border-radius:14px;
  background:var(--card-2);border:1px solid var(--stroke-soft);border-left:3px solid var(--blue)}
.rk .catlevel .cl-head{display:flex;align-items:baseline;gap:8px;margin:0 2px 10px;flex-wrap:wrap}
.rk .catlevel .cl-arrow{color:var(--blue);font-size:15px;line-height:1}
.rk .catlevel .cl-parent{font-family:var(--display);font-weight:700;font-size:13px;color:var(--navy)}
.rk .catlevel .cl-tip{font-size:11.5px;color:var(--muted)}
/* karty podrzędne lżejsze niż rodzic — hierarchia widoczna także bez czytania */
.rk .catlevel .catcard{padding:12px 13px;border-radius:12px;background:var(--surface)}
.rk .catlevel .catcard .ci{width:32px;height:32px;border-radius:9px}
.rk .catlevel .catcard .ci svg{width:16px;height:16px}
.rk .catlevel .catcard .cn{font-size:13.5px}
.rk .catlevel .catcard .cd{font-size:11.5px}
@media (max-width:520px){.rk .catlevel{padding:10px 10px 12px}}
/* stan "wybrane" musi przebić lżejsze tło kart podrzędnych (ta sama specyficzność, moja reguła jest później) */
.rk .catlevel .catcard[aria-pressed="true"]{background:var(--blue-soft)}
.rk .catlevel .catcard[aria-pressed="true"] .ci{background:#fff}

/* ---------- PALETA APARATURY: producent → rodzaj → pozycje ----------
   Oba paski (#taxBar, #ampBar) sa wspoldzielone z galezia gniazdowa, wiec klasa .apbar
   musi przebic ich domyslne uklady (.phasegate to grid, .ampbar ma inne odstepy). */
.rk .phasegate.apbar,.rk .ampbar.apbar{display:flex;flex-wrap:wrap;gap:7px}
/* Producenci lamia sie na dwa rzedy, wiec bez wyraznej przerwy drugi rzad zlewal sie
   z paskiem rodzajow. Rozdziela je odstep i cienka linia. */
.rk .phasegate.apbar{margin:0 0 18px}
.rk .ampbar.apbar{margin:0 0 16px;padding-top:18px;border-top:1px solid var(--stroke-soft)}
.rk .aptab{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;
  border:1px solid var(--stroke);background:var(--surface);cursor:pointer;
  font-family:var(--sans);font-size:12.5px;color:var(--text);line-height:1.2}
.rk .aptab:hover{border-color:#c3ccd8}
.rk .aptab[aria-selected="true"]{border-color:var(--blue);background:var(--blue-soft);color:var(--navy);font-weight:600}
.rk .aptab .z{font-size:11px;color:var(--muted);font-weight:600}
.rk .aptab[aria-selected="true"] .z{color:var(--blue)}
@media (max-width:520px){.rk .aptab{font-size:12px;padding:6px 9px}}

/* ---------- CZYTELNOSC WYBORU APARATURY ----------
   Przy 14 producentach w dwoch rzedach delikatny obrys nie wystarczal, zeby zobaczyc,
   ktory jest wybrany. Stan wybrany jest teraz PELNYM wypelnieniem, a kazdy pasek
   ma etykiete mowiaca, co sie wlasnie wybiera. */
.rk .apbar-lab{display:inline-flex;align-items:center;align-self:center;margin-right:4px;
  font-family:var(--display);font-weight:700;font-size:12px;letter-spacing:.3px;
  text-transform:uppercase;color:var(--muted)}
.rk .apbar-lab b{margin-left:6px;text-transform:none;letter-spacing:0;color:var(--navy);font-size:13.5px}
.rk .aptab{font-size:14px;padding:9px 14px;gap:8px}
.rk .aptab .z{font-size:12px}
.rk .aptab[aria-selected="true"]{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:700}
.rk .aptab[aria-selected="true"] .z{color:#fff;opacity:.85}
.rk .aptab[aria-selected="true"]:hover{border-color:var(--blue)}
/* karty aparatow czytelniejsze niz gniazdowe — nazwy sa dluzsze i gestsze */
.rk .apgrid .sockcard .nm{font-size:14.5px;line-height:1.35}
.rk .apgrid .sockcard .mt{font-size:12.5px;margin-top:4px}
.rk .apgrid .sockcard .mt.why{font-size:12px}
@media (max-width:520px){.rk .aptab{font-size:13px;padding:8px 11px}.rk .apbar-lab{font-size:11px}}

/* ---------- SZEROKI EKRAN: wiecej kart w rzedzie ----------
   Kontener ma 1320 px, wiec lewa kolumna buildera miesci trzy karty zamiast dwoch.
   Ponizej 1100 px wracamy do ukladu 2-kolumnowego z regul wyzej. */
@media (min-width:1100px){
  .rk .buildcols{grid-template-columns:1.5fr 1fr;gap:20px}
  .rk .grid.sockets{grid-template-columns:repeat(3,1fr)}
  .rk .grid.boxes{grid-template-columns:repeat(3,1fr)}
}

/* ---------- STRONICOWANIE LISTY APARATOW (20 na strone) ---------- */
.rk .appager{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:14px}
.rk .appg{min-width:34px;height:34px;padding:0 10px;border-radius:9px;cursor:pointer;
  border:1px solid var(--stroke);background:var(--surface);color:var(--text);
  font-family:var(--sans);font-size:13.5px;font-weight:600;line-height:1}
.rk .appg:hover:not(:disabled):not(.akt){border-color:#c3ccd8}
.rk .appg.akt{background:var(--blue);border-color:var(--blue);color:#fff;cursor:default}
.rk .appg:disabled{opacity:.35;cursor:default}
.rk .apdots{padding:0 2px;color:var(--muted);font-size:13.5px}
.rk .apinfo{margin-left:auto;font-size:12.5px;color:var(--muted)}
@media (max-width:520px){.rk .apinfo{margin-left:0;width:100%}}


/* ============================================================
   v0.7.0 — ZMIANY Z LISTY JANA
   ============================================================ */

/* (1) ZDJĘCIA ZAMIAST IKON W KROKU 1.
   Slot ikony zostaje ten sam element (.pg-ic / .ci), tylko rośnie i dostaje białe tło
   — zdjęcia produktów ze sklepu są na białym, więc `contain` na bieli nie ma szwu. */
.rk .groupcard .pg-ic.photo,.rk .catcard .ci.photo{background:#fff;border:1px solid var(--stroke-soft);overflow:hidden;padding:3px}
/* 92 -> 132 px (2026-09-09): zdjęcie grupy niesie licznik, wyłączniki i gniazda;
   przy 92 px sama obudowa miała 51×58 px i była nieczytelna.
   (2026-09-10) Zdjęcie na karcie kategorii zostaje TYLKO na poziomie podkategorii
   (.catlevel) — poziom 1 to sam tekst, więc reguła 68 px nie ma już czego ubierać. */
.rk .groupcard .pg-ic.photo{width:132px;height:132px;border-radius:18px}
.rk .catlevel .catcard .ci.photo{width:52px;height:52px;border-radius:11px}
.rk .catcard.empty .ci.photo{opacity:.5;filter:grayscale(1)}
.rk .pg-ic .ph,.rk .ci .ph{width:100%;height:100%;object-fit:contain;display:block}
@media (max-width:520px){
  .rk .groupcard .pg-ic.photo{width:92px;height:92px;border-radius:14px}
}

/* (7) NAZWA ROZDZIELNICY NA ŚRODEK (krok 4).
   Siatka 1fr|auto|1fr — tytuł stoi centralnie niezależnie od szerokości pigułki po prawej. */
.rk .preview-head.centered{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px}
.rk .preview-head.centered .ph-label{grid-column:2;justify-self:center;text-align:center;
  text-transform:none;letter-spacing:-.01em;font-size:15.5px;font-weight:700;line-height:1.25}
.rk .preview-head.centered .pill{grid-column:3;justify-self:end}
@media (max-width:520px){
  .rk .preview-head.centered{grid-template-columns:1fr;justify-items:center;gap:7px}
  .rk .preview-head.centered .ph-label,.rk .preview-head.centered .pill{grid-column:1;justify-self:center}
}

/* (8) OZNACZENIE „WIZUALIZACJA" — plakietka na samym rysunku, żeby nie dało się przeoczyć */
.rk .sheet-viz{position:relative;padding-top:26px}
.rk .vizbadge{position:absolute;top:0;left:2px;z-index:2;pointer-events:none;
  font-family:var(--display);font-weight:700;font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--warn);background:#fff;border:1px solid var(--warn);border-radius:999px;padding:4px 9px}

/* (6+9) ZESTAWIENIE WYBRANYCH PRODUKTÓW — ze zdjęciami zamiast samego tekstu */
.rk .s3cols{grid-template-columns:1fr 320px}
@media (max-width:900px){.rk .s3cols{grid-template-columns:1fr}}
.rk .ctrls.picks{padding:16px}
.rk .spec .spec-grid{grid-template-columns:1fr}
.rk .spec .si{border-right:0}
/* (v0.8.5) 320 zamiast 290 — doszła kolumna ceny, przy 290 nazwa łamała się na trzy linie. */
.rk .bom.photo{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}
.rk .bom.photo li{align-items:center;justify-content:flex-start;gap:12px;
  background:var(--surface);border:1px solid var(--stroke-soft);border-radius:12px;padding:8px 12px 8px 8px}
.rk .bom.photo .bth{flex:none;width:58px;height:58px;border-radius:9px;background:#fff;
  border:1px solid var(--stroke-soft);display:grid;place-items:center;overflow:hidden;color:var(--blue)}
.rk .bom.photo .bth .ph{width:100%;height:100%;object-fit:contain;display:block}
.rk .bom.photo .bth svg{width:26px;height:26px}
.rk .bom.photo .bnm{display:flex;flex-direction:column;min-width:0;flex:1 1 auto;
  font-size:13px;line-height:1.35;color:var(--navy)}
.rk .bom.photo .bsub{font-size:11px;color:var(--faint);margin-top:2px}
.rk .bom.photo .bq{flex:none;font-family:var(--mono);font-size:13.5px;color:var(--muted)}
/* (v0.8.5) CENA POZYCJI. Kolumna skrajnie prawa, liczby tabularne, żeby grosze stały w pionie.
   `.none` to pozycja bez ustalonej ceny — kolor ostrzegawczy, bo to blokuje zamówienie. */
.rk .bom.photo .bpr{flex:none;display:flex;flex-direction:column;align-items:flex-end;
  justify-content:center;gap:1px;min-width:86px;text-align:right}
.rk .bom.photo .bunit{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.rk .bom.photo .bline{font-size:13.5px;font-weight:700;color:var(--navy);
  font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.01em}
.rk .bom.photo .bpr.none{font-size:10.5px;color:var(--warn);font-weight:600;
  line-height:1.25;max-width:92px;white-space:normal}
@media (max-width:520px){
  .rk .bom.photo .bth{width:48px;height:48px}
  .rk .bom.photo li{padding:7px 10px 7px 7px;gap:10px}
  /* na telefonie „3×" i cena obok siebie zjadają nazwę — ilość wraca do kolumny ceny */
  .rk .bom.photo .bq{font-size:12px}
  .rk .bom.photo .bpr{min-width:74px}
  .rk .bom.photo .bline{font-size:12.5px}
}

/* (10) WYKONANIE NA INDYWIDUALNE ZAMÓWIENIE — brak zwrotu. Świadomie krzykliwe:
   to informacja, którą klient musi zobaczyć PRZED dodaniem do koszyka. */
.rk .orderinfo{display:flex;gap:11px;align-items:flex-start;padding:13px 16px;
  border-top:1px solid var(--stroke-soft);background:#fdf6ea}
.rk .orderinfo .oi-ic{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;
  background:var(--warn);color:#fff;font-family:var(--display);font-weight:800;font-size:12.5px;line-height:1}
.rk .orderinfo .oi-tx{font-size:12px;line-height:1.45;color:var(--navy)}
.rk .orderinfo .oi-tx b{display:block;font-family:var(--display);font-weight:700;font-size:12.5px;margin-bottom:3px}
.rk .orderinfo .oi-tx b+b,.rk .orderinfo .oi-tx b:not(:first-child){display:inline;font-size:inherit;margin:0;color:var(--warn)}

/* (3) TELEFON — dolny pasek nawigacji. Trzy elementy w jednym rzędzie nie mieszczą się
   poniżej ~560 px: „Zacznij od nowa" łamało się na trzy linie, a CTA z ceną nachodziło
   samo na siebie. Na wąskim ekranie CTA idzie na całą szerokość, wstecz/reset pod spód. */
@media (max-width:560px){
  .rk .nav{flex-wrap:wrap;gap:10px;padding:16px 16px 20px}
  .rk .btn-next{order:1;width:100%;justify-content:center}
  .rk .nav-l{order:2;width:100%;justify-content:space-between;gap:6px}
  .rk .btn-back,.rk .btn-reset,.rk .btn-next{white-space:nowrap}
  .rk .btn-back,.rk .btn-reset{font-size:12.5px;padding:10px 12px}
}


/* ============================================================
   v0.7.2 — WYSZUKIWARKA APARATURY
   ============================================================ */
.rk .apsearch{display:flex;align-items:center;gap:9px;margin:0 0 16px;padding:0 14px;
  border:1.5px solid var(--stroke);border-radius:13px;background:var(--surface);
  transition:border-color .13s,box-shadow .13s}
.rk .apsearch:focus-within{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
.rk .apsearch[hidden]{display:none}
.rk .apsearch .as-ic{flex:none;font-size:19px;line-height:1;color:var(--faint)}
.rk .apsearch input{flex:1 1 auto;min-width:0;border:0;outline:none;background:none;
  font-family:var(--sans);font-size:14.5px;color:var(--navy);padding:13px 0}
.rk .apsearch input::placeholder{color:var(--faint)}
/* natywny „x" WebKita dublowałby nasz przycisk */
.rk .apsearch input::-webkit-search-cancel-button{display:none}
.rk .apsearch .as-x{flex:none;width:26px;height:26px;border-radius:50%;border:0;cursor:pointer;
  background:var(--card-2);color:var(--muted);font-size:17px;line-height:1;padding:0}
.rk .apsearch .as-x:hover{background:#e9edf3;color:var(--navy)}
.rk .apsearch .as-x[hidden]{display:none}

/* pasek wyników zamiast paska producentów */
.rk .apfound{display:inline-flex;align-items:center;align-self:center;font-size:13.5px;color:var(--muted)}
.rk .apfound b{color:var(--navy);margin:0 3px}
.rk .aptab.apclear{cursor:pointer;color:var(--blue);border-style:dashed}
/* przy miksie marek karta musi mówić, czyj to aparat */
.rk .sockcard .aptagline{color:var(--blue);font-weight:600}

@media (max-width:520px){
  .rk .apsearch{padding:0 11px;gap:7px}
  .rk .apsearch input{font-size:14px;padding:11px 0}
}


/* ============================================================
   v0.7.2 — ZAPIS / UDOSTĘPNIENIE KONFIGURACJI
   ============================================================ */
.rk .sharebar{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:16px;
  padding:14px 16px;border:1px solid var(--stroke);border-radius:16px;background:var(--card-2)}
.rk .sharebar .sh-k{font-family:var(--display);font-weight:600;font-size:10px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--faint);margin-right:4px}
.rk .sharebar .sh-b{display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  font-family:var(--display);font-weight:600;font-size:13px;text-decoration:none;
  border:1.5px solid var(--stroke);border-radius:11px;background:var(--surface);
  color:var(--navy);padding:9px 13px;transition:border-color .13s,background .13s}
.rk .sharebar .sh-b:hover{border-color:var(--blue);background:var(--blue-soft)}
.rk .sharebar .sh-b:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.rk .sharebar .sh-msg{font-size:12.5px;color:var(--ok,var(--blue));font-weight:600}
.rk .sharebar .sh-msg.zle{color:var(--warn)}
.rk .sharebar .sh-msg[hidden]{display:none}
@media (max-width:560px){
  .rk .sharebar{padding:12px}
  .rk .sharebar .sh-k{width:100%;margin-bottom:2px}
  .rk .sharebar .sh-b{flex:1 1 auto;justify-content:center}
}

/* ============================================================
   v0.7.2 — WYDRUK / ZAPIS DO PDF
   Drukujemy WYŁĄCZNIE podsumowanie: rysunek, zestawienie, parametry, cenę i notkę
   o braku zwrotu. Wszystko, co służy do klikania, znika.
   ============================================================ */
@media print{
  .rk .steps,.rk .nav,.rk .sharebar,.rk .readymade,.rk .chips .edit,
  .rk .boxnotice,.rk .apsearch{display:none!important}
  .rk .panel[data-step="1"],.rk .panel[data-step="2"],.rk .panel[data-step="3"]{display:none!important}
  .rk{max-width:none;padding:0}
  .rk .wiz{border:0;box-shadow:none;background:none}
  .rk .masthead{padding:0 0 8px}
  .rk .masthead h1{font-size:20px}
  .rk .masthead .lead{display:none}
  .rk .panel[data-step="4"]{padding:0}
  .rk .preview-card,.rk .ctrls,.rk .spec{break-inside:avoid;box-shadow:none;border:1px solid #ccc}
  /* w druku obie kolumny obok siebie marnują papier — jedna, ciągiem */
  .rk .s3cols{grid-template-columns:1fr;gap:10px}
  .rk .bom.photo{grid-template-columns:1fr 1fr}
  .rk .bom.photo li{break-inside:avoid}
  .rk .sheet-wrap svg{max-height:none}
  .rk .orderinfo{border:1px solid var(--warn)}
  .rk .vizbadge{border-color:#999;color:#555}
  /* (O) pasek kontaktu ZOSTAJE na wydruku — to jedyny kontakt na wydrukowanej
     ofercie. Zdejmujemy z niego tlo i przycisk, zeby nie zjadal tonera. */
  .rk .helpbar{padding:6px 0;border:0;background:none;break-inside:avoid}
  .rk .helpbar .hb-ic{display:none}
  .rk .helpbar .hb-tel,.rk .helpbar .hb-mail{background:none;border:0;color:#000;
    padding:0 12px 0 0;min-height:0;font-size:13px}
}


/* ============================================================
   v0.7.3 — NAGŁÓWEK: tekst obok karuzeli gotowych rozdzielnic
   ============================================================ */
.rk .masthead{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:26px;align-items:center}
.rk .mh-txt{min-width:0}
@media (max-width:860px){
  .rk .masthead{grid-template-columns:1fr;gap:18px}
  .rk .mh-hero{order:-1}          /* na wąskim ekranie zdjęcie prowadzi, tekst pod nim */
}

.rk a.mh-hero,.rk a.mh-hero:hover,.rk a.mh-hero:focus{text-decoration:none!important;border-bottom:0!important;box-shadow:none!important}
.rk .mh-hero{position:relative;display:block;overflow:hidden;border-radius:18px;
  background:#fff;border:1px solid var(--stroke);box-shadow:var(--shadow-soft);
  aspect-ratio:1/1;max-width:340px;justify-self:end;width:100%}
.rk .mh-hero[hidden]{display:none}
@media (max-width:860px){.rk .mh-hero{justify-self:start;max-width:280px}}
.rk .hero-klatki{position:absolute;inset:0;display:block}
.rk .hero-klatki .hk{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  padding:14px 14px 40px;opacity:0;transition:opacity .55s ease}
.rk .hero-klatki .hk.akt{opacity:1}
/* zdjęcie, które się nie wczytało, nie może zostać jako biała plama */
.rk .hero-klatki .hk[data-zle]{display:none}
.rk .hero-podpis{position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:22px 13px 11px;font-size:11.5px;line-height:1.35;color:var(--navy);
  background:linear-gradient(to top,rgba(255,255,255,.97) 55%,rgba(255,255,255,0));
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rk .hero-kropki{position:absolute;top:11px;right:11px;z-index:3;display:flex;gap:5px}
.rk .hero-kropki .hkr{display:block;width:7px;height:7px;border-radius:50%;cursor:pointer;
  background:#c9d0da;transition:background .2s,transform .2s}
.rk .hero-kropki .hkr.akt{background:var(--blue);transform:scale(1.25)}
.rk .mh-hero:hover{border-color:var(--blue)}

/* lead był akapitem na 640 px — teraz stoi w kolumnie obok zdjęcia */
.rk .masthead .lead{max-width:none;font-size:15.5px;color:var(--muted)}

@media print{.rk .mh-hero{display:none!important}.rk .masthead{display:block}}


/* ============================================================
   v0.8.0 — PALETA APARATURY: rozwijane listy zamiast kafelków
   ============================================================ */
.rk .phasegate.apbar{align-items:flex-end}
.rk .apsel{display:flex;flex-direction:column;gap:5px;min-width:220px;flex:0 1 300px}
.rk .apsel.szeroki{flex:1 1 380px}
.rk .apsel-k{font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted)}
.rk .apsel select{width:100%;font-family:var(--sans);font-size:14.5px;color:var(--navy);
  background-color:var(--surface);border:1.5px solid var(--stroke);border-radius:11px;
  /* !important bije `form select{padding-*:0!important}` z motywu — inaczej tekst
     kleiłby się do krawędzi. `height:auto` + `line-height` zamiast sztywnych 2.25em. */
  padding:12px 36px 12px 14px!important;height:auto;line-height:1.35;
  cursor:pointer;appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%235b6678' stroke-width='1.8' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
  text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.rk .apsel select:hover{border-color:#c3ccd8}
/* lista rozwijana rysowana przez system — wymuszamy czytelne kolory także tam */
.rk .apsel select option{background:#fff;color:var(--navy);padding:6px 8px}
.rk .apsel select:focus{outline:none;border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
@media (max-width:560px){.rk .apsel,.rk .apsel.szeroki{flex:1 1 100%;min-width:0}}

/* klocek podglądu niesie teraz nazwę produktu, nie samą szerokość */
.rk .dincell{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:1px;overflow:hidden;text-align:center;padding:0 3px}
.rk .dincell .dc-n{font-size:10px;font-weight:700;line-height:1.15;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.rk .dincell .dc-m{font-style:normal;font-size:9px;opacity:.65;font-family:var(--mono)}
.rk .dinrail.big .dincell .dc-n{font-size:11.5px;white-space:normal;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}

/* notka o rezerwie technicznej modułu */
.rk .modnota{display:flex;gap:9px;align-items:flex-start;margin:0 0 14px;padding:10px 13px;
  border:1px solid var(--stroke-soft);border-left:3px solid var(--blue);border-radius:10px;
  background:var(--card-2);font-size:12px;line-height:1.45;color:var(--muted)}
.rk .modnota b{color:var(--navy)}
.rk .modnota[hidden]{display:none}


/* ============================================================
   (N) KARTA „ZASILANIE" — przewód z wtyczką w kroku 3.
   Stoi POD kolumnami budowania, na pełnej szerokości: dotyczy całej rozdzielnicy,
   a nie panelu ani szyny, i jest ostatnią rzeczą, którą klient widzi przed „Dalej".
   Wygaszony przekrój ma `border-style:dashed` — sam kolor nie wystarcza komuś,
   kto rozróżnia barwy słabiej, a powód i tak stoi wypisany pod wierszem.
   ============================================================ */
.rk .powerwrap{margin:16px 0 0}
.rk .powerwrap[hidden]{display:none}
.rk .pwr{border:1px solid var(--stroke);border-radius:14px;background:var(--card-2);
  box-shadow:var(--shadow-soft);overflow:hidden}
.rk .pwr-top{display:flex;align-items:center;gap:13px;padding:13px 15px}
.rk .pwr-ic{flex:none;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;
  background:var(--surface);border:1px solid var(--stroke-soft);color:var(--blue)}
.rk .pwr-ic svg{width:20px;height:20px}
.rk .pwr-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rk .pwr-tx b{font-family:var(--display);font-weight:700;font-size:14px;color:var(--navy)}
.rk .pwr-tx span{font-size:12.5px;line-height:1.45;color:var(--muted)}
.rk .pwr-sw{flex:none;display:inline-flex;gap:6px}
.rk .pwrb,.rk .pwro{font-family:var(--display);font-weight:600;font-size:12px;
  border:1.5px solid var(--stroke);background:var(--surface);color:var(--muted);
  border-radius:999px;padding:7px 14px;cursor:pointer;
  transition:border-color .12s,background .12s,color .12s}
.rk .pwrb:hover,.rk .pwro:hover:not([disabled]){border-color:#c3ccd8;color:var(--navy)}
.rk .pwrb[aria-selected="true"],.rk .pwro[aria-selected="true"]{
  border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}
.rk .pwro[disabled]{opacity:.5;cursor:not-allowed;border-style:dashed;background:transparent}
.rk .pwr-body{border-top:1px solid var(--stroke-soft);background:var(--surface);
  padding:13px 15px;display:flex;flex-direction:column;gap:10px}
.rk .pwr-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.rk .pwr-k{flex:none;min-width:78px;font-family:var(--display);font-weight:700;font-size:11px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.rk .pwr-opts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.rk .pwr-sel{font-family:var(--sans);font-size:14px;color:var(--navy);
  background-color:var(--surface);border:1.5px solid var(--stroke);border-radius:11px;
  /* !important bije `form select{padding-*:0!important}` z motywu — tak samo jak w .apsel */
  padding:9px 34px 9px 13px!important;height:auto;line-height:1.35;
  cursor:pointer;appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%235b6678' stroke-width='1.8' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center}
.rk .pwr-sel:hover{border-color:#c3ccd8}
.rk .pwr-sel option{background:#fff;color:var(--navy)}
.rk .pwr-why{display:flex;flex-direction:column;gap:4px;padding:9px 12px;border-radius:10px;
  border:1px solid #f0e2c8;border-left:3px solid var(--warn);background:#fdf8ef;
  font-size:12px;line-height:1.45;color:#8a5a0b}
.rk .pwr-nota{padding:9px 12px;border-radius:10px;border:1px solid var(--stroke-soft);
  border-left:3px solid var(--blue);background:var(--card-2);
  font-size:12px;line-height:1.45;color:var(--muted)}
.rk .pwr-dl{font-size:12px;line-height:1.5;color:var(--muted)}
.rk .pwr-sum{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  border-top:1px dashed var(--stroke);padding-top:10px}
.rk .pwr-nm{font-size:13px;color:var(--navy)}
.rk .pwr-pr{flex:none;font-family:var(--display);font-weight:800;font-size:16px;color:var(--navy)}
@media (max-width:620px){
  .rk .pwr-top{flex-wrap:wrap}
  .rk .pwr-sw{width:100%}
  .rk .pwr-sw .pwrb{flex:1}
  .rk .pwr-k{min-width:100%}
  .rk .pwr-sel{width:100%}
}

/* (N) krok „Zasilanie" — bramka pytania i notka pod nia */
.rk .pwrgate{margin:0 0 16px}
.rk .pwr-info{padding:12px 15px;border-radius:12px;border:1px solid var(--stroke-soft);
  background:var(--card-2);font-size:13px;line-height:1.5;color:var(--muted)}
/* dopoki pytanie jest bez odpowiedzi, „Dalej" jest wylaczone — notka ma to TLUMACZYC,
   bo martwy przycisk bez powodu wyglada jak awaria */
.rk .pwr-info.czeka{border-color:#f0e2c8;border-left:3px solid var(--warn);
  background:#fdf8ef;color:#8a5a0b}
.rk .powerwrap .pwr{margin:0}

/* ============================================================
   (O) PASEK KONTAKTU — widoczny na kazdym kroku kreatora.
   Utylitarny, nie alarmowy: biale tlo i wlosowa linia, a uwage przyciaga sam numer
   (pelny przycisk). Gdyby caly pasek byl kolorowy, po trzecim kroku czytaloby sie go
   jak ostrzezenie i klient przestalby go widziec.
   ============================================================ */
.rk .helpbar{display:flex;align-items:center;gap:13px;flex-wrap:wrap;
  padding:11px 18px;background:var(--surface);border-bottom:1px solid var(--stroke-soft)}
.rk .helpbar .hb-ic{flex:none;width:32px;height:32px;border-radius:9px;display:grid;
  place-items:center;background:var(--blue-soft);color:var(--blue)}
.rk .helpbar .hb-ic svg{width:17px;height:17px}
.rk .helpbar .hb-tx{flex:1;min-width:220px;font-size:12.5px;line-height:1.45;color:var(--muted)}
.rk .helpbar .hb-tx b{display:block;font-family:var(--display);font-weight:700;
  font-size:13.5px;color:var(--navy)}
.rk .helpbar .hb-akcje{flex:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* OceanWP podkresla linki w tresci mocniejsza regula niz `.rk a{text-decoration:none}`
   z gory pliku — na wypelnionym przycisku wyglada to jak blad. Gasimy tu, gdzie
   specyficznosc (0,3,0) bije motyw. Widoczne dopiero NA PRODUKCJI: w podgladzie
   standalone CSS motywu nie ma. */
.rk .helpbar .hb-tel,.rk .helpbar .hb-mail{text-decoration:none!important;
  display:inline-flex;align-items:center;gap:8px;
  /* min-height 44 px: kontakt ma byc wygodny do dotkniecia na telefonie, a nie celowany */
  min-height:44px;padding:0 18px;border-radius:12px;
  font-family:var(--display);font-weight:700;letter-spacing:.01em;
  white-space:nowrap;transition:background .13s,border-color .13s,color .13s}
/* telefon PELNY, mail OBRYSOWANY — dwie rownorzedne drogi, ale jedna ma byc pierwsza,
   ktora wpada w oko; dwa identyczne przyciski obok siebie zmuszaja do czytania */
.rk .helpbar .hb-tel{background:var(--blue);color:#fff;font-size:15px;
  font-variant-numeric:tabular-nums}
.rk .helpbar .hb-tel:hover{background:var(--blue-press)}
.rk .helpbar .hb-mail{border:1.5px solid var(--stroke);background:var(--surface);
  color:var(--navy);font-size:13.5px;font-weight:600}
.rk .helpbar .hb-mail:hover{border-color:var(--blue);color:var(--blue)}
.rk .helpbar .hb-tel:focus-visible,.rk .helpbar .hb-mail:focus-visible{
  outline:2px solid var(--navy);outline-offset:2px}
.rk .helpbar .hb-tic svg{width:16px;height:16px;display:block}
@media (max-width:620px){
  .rk .helpbar{padding:11px 14px;gap:10px}
  .rk .helpbar .hb-akcje{width:100%}
  .rk .helpbar .hb-tel,.rk .helpbar .hb-mail{flex:1 1 100%;justify-content:center}
}
