/* ============================================================
 *  1.13.482-484: Shipping list – SWAP + Pickup picker pod metodou
 *  ============================================================
 *  Některé šablony (Flatsome) renderují shipping list items jako
 *  display:flex. Bez flex-wrap by SWAP a Pickup picker skončily VEDLE
 *  labelu metody. Vyšší specificita přes `ul#shipping_method` přebije
 *  themes bez nutnosti !important na samotném flex-wrap.
 *
 *  Pravidla cílí výhradně na shipping_method seznam – ostatní šablony
 *  bez display:flex se chovají normálně.
 */
/* ============================================================
 *  1.13.486: WooCommerce doprava – oprava rozložení (Flatsome+)
 *  ============================================================
 *  Display:block na <li> (místo flex) zabraňuje konfliktům s theme
 *  layoutem. Radio + label vedle sebe jako inline-block, SWAP + Pickup
 *  picker jako block na novém řádku. Pickup picker se zobrazí JEN u
 *  aktivní (checked) shipping metody přes CSS sibling selector ~.
 */

.woocommerce ul#shipping_method {
    padding-left: 0 !important;
    text-align: left !important;
}

.woocommerce ul#shipping_method li.shipping__list_item {
    display: block !important;
    margin: 0 0 10px 0 !important;
    padding: 0 !important;
    text-align: left !important;
}

/* Radio + název dopravy vedle sebe. */
.woocommerce ul#shipping_method li.shipping__list_item input.shipping_method,
.woocommerce ul#shipping_method li.shipping__list_item label.shipping__list_label {
    display: inline-block !important;
    vertical-align: middle;
}

.woocommerce ul#shipping_method li.shipping__list_item input.shipping_method {
    margin: 0 8px 0 0 !important;
}

/* Zásilkovna Pickup picker tlačítko – defaultně skryté, ukáže se jen u zaškrtnuté metody. */
.woocommerce ul#shipping_method li.shipping__list_item .zas-pickup-picker {
    display: none !important;
    width: 100%;
    margin: 2px 0 0 28px !important;
}

.woocommerce ul#shipping_method li.shipping__list_item input.shipping_method:checked ~ .zas-pickup-picker {
    display: block !important;
}

.woocommerce ul#shipping_method li.shipping__list_item .zas-pickup-open {
    display: block !important;
    width: 100%;
    max-width: 300px;
    text-align: center;
}

/* 1.13.488: Pickup picker mimo shipping list (např. v cart page) – zarovnání vlevo. */
.zas-pickup-picker {
    margin-left: 0 !important;
}

/* ============================================================
 *  1.13.490: WoodMart shipping row fix (scoped JEN na WoodMart)
 *  ============================================================
 *  WoodMart aplikuje `display:flex` na <tr class="shipping flex">
 *  → <th>Shipment</th> a shipping methods se vizuálně překrývají.
 *  Scopujeme přes `body.theme-woodmart` – ostatní themes (Flatsome,
 *  Storefront, …) zůstávají nedotčené.
 */
body.theme-woodmart .woocommerce-checkout .woocommerce-shipping-totals.shipping {
    display: block !important;
}

body.theme-woodmart .woocommerce-checkout .woocommerce-shipping-totals.shipping th {
    display: block !important;
    width: 100% !important;
    padding-bottom: 10px !important;
    text-align: left !important;
}

body.theme-woodmart .woocommerce-checkout .woocommerce-shipping-totals.shipping td {
    display: block !important;
    width: 100% !important;
    padding-left: 0 !important;
    text-align: left !important;
}

body.theme-woodmart .woocommerce-checkout ul#shipping_method li {
    margin-bottom: 12px !important;
}

body.theme-woodmart .woocommerce-checkout .zas-pickup-picker {
    margin-top: 8px !important;
    margin-left: 28px !important;
}

/* ============================================================
 *  1.13.491: Avada checkout fix (scoped JEN na Avada)
 *  ============================================================
 *  Avada theme má vlastní layout pro checkout review tabulku –
 *  doprava patří vpravo (vyrovnaná s cenou), shipping list se má
 *  chovat jako inline-block ve sloupci. Scopujeme přes `fusion-body`
 *  (Avada body class) → ostatní themes nedotčené.
 */
.fusion-body.woocommerce-checkout tr.woocommerce-shipping-totals.shipping td[data-title="Doprava"] {
    text-align: right !important;
}

.fusion-body.woocommerce-checkout ul#shipping_method {
    display: inline-block !important;
    width: auto !important;
    max-width: 100% !important;
    text-align: left !important;
    margin-left: auto !important;
    padding-left: 0 !important;
}

.fusion-body.woocommerce-checkout ul#shipping_method li {
    display: block !important;
    text-align: left !important;
    margin-bottom: 6px !important;
}

/* ============================================================
 *  INLINE PICKER pod radio buttonem shipping metody
 *
 *  Žádný wrapper box / pozadí / border-left – tlačítko stojí samo
 *  jako čistý CTA prvek. Margin-left=36px aby button visuálně
 *  ladil ve stejném sloupci jako .zas-method-badges (popis pod
 *  cenou) a textový label metody (vše začíná za radio + ikonou).
 * ============================================================ */
.zas-pickup-picker {
    margin: 6px 0 10px 36px;
    font-size: 14px;
    line-height: 1.4;
}

.zas-pickup-picker .zas-pickup-selected {
    margin-bottom: 8px;
    font-size: 13px;
    color: #4b5563;
}

.zas-pickup-picker .zas-pickup-name {
    color: #111827;
    font-weight: 600;
    margin-left: 4px;
}

.zas-pickup-picker .zas-pickup-address {
    color: #6b7280;
    font-size: 12px;
}

.zas-pickup-picker .zas-pickup-open {
    cursor: pointer;
}

/* Variant: picker přesunutý na konec seznamu doprav (Settings → Umístění tlačítka).
 *
 * 1.14.313: kompaktní side-by-side layout místo dvou full-width bloků.
 * JS picker přesune jako sibling UL → ztratí <li> constraint a oba vnitřní
 * bloky (.zas-pickup-selected šedý box + button) se roztáhnou přes celou
 * šířku checkoutu, což působí jako bug nebo overlay (viz screenshot 1.14.313).
 * Fix: flex container — selected info teče vlevo (flex-grow), button vpravo
 * (auto width). Na úzkém viewportu (<600px) stack pod sebou.
 *
 * Specificita držena nízká (single-class), takže si admin přebije vlastním
 * CSS v Customizeru bez nutnosti !important.
 */
.zas-pickup-picker--bottom {
    margin-left: 0;
    margin-top: 14px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
}
.zas-pickup-picker--bottom .zas-pickup-selected {
    flex: 1 1 240px;
    min-width: 0;     /* Bez toho flex item nezmenší přes obsah a roztáhne řádek. */
    margin: 0;
}
.zas-pickup-picker--bottom > button.zas-pickup-open,
.zas-pickup-picker--bottom > .button.zas-pickup-open {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%;
    margin: 0;
}
@media (max-width: 599px) {
    .zas-pickup-picker--bottom {
        justify-content: stretch;
    }
    .zas-pickup-picker--bottom .zas-pickup-selected,
    .zas-pickup-picker--bottom > button.zas-pickup-open,
    .zas-pickup-picker--bottom > .button.zas-pickup-open {
        flex: 1 1 100%;
    }
}

/* ============================================================
 *  MODAL (sdílený základ)
 * ============================================================ */
.zas-modal {
    position: fixed;
    inset: 0;
    z-index: 100000;
    display: none;
    align-items: center;
    justify-content: center;
}

body.zas-modal-open {
    overflow: hidden;
}

.zas-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.6);
}

.zas-modal-dialog {
    position: relative;
    background: #fff;
    width: min(640px, 92vw);
    max-height: 86vh;
    border-radius: 8px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.zas-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid #eee;
}

.zas-modal-header h2 {
    margin: 0;
    font-size: 18px;
}

.zas-modal-close {
    background: none;
    border: none;
    font-size: 28px;
    line-height: 1;
    cursor: pointer;
    color: #777;
    padding: 0 6px;
}

.zas-modal-close:hover {
    color: #000;
}

.zas-modal-body {
    padding: 16px 20px;
    overflow-y: auto;
}

/* ============================================================
 *  WIDGET MODAL (iframe Zásilkovna)
 * ============================================================ */
/* 1.14.34 → 1.14.35: zmenšeny okraje 3cm → 1cm + odebrán max-width/max-height.
   Předchozí 1.14.34 mělo modal s 3 cm margin a cap 1600×1000 → na velkých
   monitorech (4K, ultrawide) se nepřizpůsobil. Toret nechává modal téměř
   přes celou obrazovku jen s drobným odsazením, díky čemu mapa + seznam
   mají reálně víc místa.

   `1 cm` (≈ 38 px) margin je dostatečné dýchání, aby:
   - close button Zásilkovna iframu (pravý horní roh widget content) nesplynul s
     browser scrollbarem
   - Zásilkovna logo vlevo nahoře nelepilo na hranu

   Žádný max-width/max-height = modal scale-uje s oknem do nekonečna.
   Min-width/min-height fallback chrání mobilní displeje. */
.zas-widget-modal .zas-widget-dialog {
    width:  calc(100vw  - 2cm);   /* 1cm každá strana */
    height: calc(100dvh - 2cm);
    min-width:  min(320px, 96vw);
    min-height: min(480px, 92vh);
    padding: 0;
    background: #fff;
}

/* 1.13.227: vlastní X close tlačítko Zásilkovna widget modalu odstraněno z markup,
   protože Zásilkovna widget zobrazuje svoje vlastní funkční close button i v iframe
   kontextu. Class `.zas-widget-modal .zas-modal-close` zatím v CSS ponechána
   jako safety net pro cached HTML – pro jistotu ji ale schováme, aby se
   nezobrazilo duplicitní X kdyby cached starší markup. */
.zas-widget-modal .zas-modal-close {
    display: none !important;
}

.zas-widget-iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

/* 1.13.225: custom mobile-header (z 1.13.223) odstraněn – Zásilkovna widget má
   vlastní funkční close/select tlačítka na mobilu, naše tlačítka tomu
   překážela. Class `.zas-widget-mobile-header` je deprecated, ponecháno
   `display:none` jako safety net pro legacy cached HTML. */
.zas-widget-mobile-header {
    display: none !important;
}

/* ============================================================
 *  DEMO MODAL – výsledky
 * ============================================================ */
#zas-modal-search {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 15px;
    margin-bottom: 12px;
    box-sizing: border-box;
}

.zas-results {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-height: 60vh;
    overflow-y: auto;
}

.zas-result-item {
    border: 1px solid #e2e2e2;
    border-radius: 6px;
    padding: 12px;
    transition: border-color 0.15s, background 0.15s;
}

.zas-result-item:hover {
    border-color: #df0024;
    background: #fff7f8;
}

/* 1.14.83 (A11y): focus-visible outline pro keyboard nav. Default browser
   focus outline byl na div s tabindex="0" nekonzistentní; explicit outline +
   shadow zajistí, že keyboard user vidí kde je. */
.zas-result-item:focus-visible {
    outline: 2px solid #df0024;
    outline-offset: 2px;
    box-shadow: 0 0 0 4px rgba(223, 0, 36, 0.15);
}
.zas-result-item:focus {
    /* Fallback pro browsery bez :focus-visible support (Safari < 15.4). */
    outline: 2px solid #df0024;
    outline-offset: 2px;
}

/* 1.14.83 (A11y V-A4): in-modal banner místo window.alert.
   Banner se vykreslí nad iframe widgetu Zásilkovna mapy. Zajišťuje stejné
   blokující chování pro JS flow (přes callback), ale je accessible
   (role="alertdialog") a mobile-friendly (nepřerušuje document flow). */
.zas-widget-banner {
    position: absolute;
    top: 16px;
    left: 16px;
    right: 16px;
    z-index: 10001;
    background: #fffbeb;
    border: 1px solid #f59e0b;
    border-left: 4px solid #f59e0b;
    border-radius: 4px;
    padding: 16px 20px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.15);
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-width: 560px;
    margin: 0 auto;
    color: #78350f;
    font-size: 14px;
    line-height: 1.5;
}
.zas-widget-banner-text {
    white-space: pre-line; /* zachová \n z message stringu (multi-line warning) */
}
.zas-widget-banner-confirm {
    align-self: flex-end;
    min-width: 120px;
    /* Použít existing .button styly (theme-aware), focus z .zas-result-item:focus pattern. */
}
.zas-widget-banner-confirm:focus-visible,
.zas-widget-banner-confirm:focus {
    outline: 2px solid #df0024;
    outline-offset: 2px;
}
@media (max-width: 600px) {
    .zas-widget-banner {
        top: 8px;
        left: 8px;
        right: 8px;
        padding: 12px 14px;
    }
}

.zas-result-item strong {
    display: block;
    margin-bottom: 4px;
}

.zas-result-address {
    color: #666;
    font-size: 13px;
}

.zas-result-opening {
    margin-top: 4px;
    color: #888;
}

.zas-result-item .button {
    margin-top: 8px;
}

.zas-loading,
.zas-error {
    color: #888;
    font-style: italic;
    padding: 8px 0;
}

.zas-error {
    color: #c00;
    font-style: normal;
}

/* ============================================================
 *  Mobilní adaptace
 * ============================================================ */
@media (max-width: 600px) {
    .zas-pickup-picker {
        margin-left: 0;
        /* Picker container nikdy nepřeteče viewport – řešíme případy,
           kdy theme dává parent flex/grid bez min-width: 0. */
        max-width: 100%;
        box-sizing: border-box;
    }

    /* 1.13.222: tlačítko „Vyberte výdejní místo" musí být responsive.
       Některá themata mají v `.button` styl `white-space: nowrap` + fixed
       padding, takže delší český text se ořezává napravo (viz screenshot
       z 1.13.221). Force-overrideme key vlastnosti, aby tlačítko:
         - bralo celou šířku containeru (snadno kliknutelné prstem)
         - wrappovalo text na víc řádků, když je úzký viewport
         - mělo aspoň 44px výšky (Apple HIG touch target minimum) */
    .zas-pickup-picker .zas-pickup-open {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box;
        white-space: normal !important;
        word-wrap: break-word;
        overflow-wrap: break-word;
        line-height: 1.3;
        min-height: 44px;
        padding: 10px 12px !important;
        text-align: center;
    }

    /* Selected pickup point box – stejné, aby dlouhé názvy / adresy
       výdejních míst nezpůsobovaly horizontal scroll na mobilech. */
    .zas-pickup-picker .zas-pickup-selected {
        word-wrap: break-word;
        overflow-wrap: break-word;
    }
    .zas-pickup-picker .zas-pickup-name,
    .zas-pickup-picker .zas-pickup-address {
        word-wrap: break-word;
        overflow-wrap: break-word;
    }

    /* Popis metody (.zas-method-badges) – text wrappujeme, ať se nelámou
       celé řádky doprav přes viewport. */
    .zas-method-badges {
        word-wrap: break-word;
        overflow-wrap: break-word;
        white-space: normal;
    }

    .zas-widget-modal .zas-widget-dialog {
        width: 100vw;
        /* 1.13.226: 100dvh (dynamic viewport height) místo 100vh.
           iOS Safari notoricky vrací 100vh = visible area + URL bar
           (i když URL bar překrývá obsah). 100dvh = jen aktuálně viditelná
           plocha, takže Zásilkovna widget se vejde celý včetně bottom „Vybrat"
           tlačítka, které dřív bylo schované pod URL barem. */
        height: 100dvh;
        height: 100vh; /* fallback pro prohlížeče bez dvh */
        height: 100dvh;
        max-height: 100dvh;
        border-radius: 0;
    }

    /* 1.13.225: ODSTRANĚNY všechny custom mobile Zásilkovna widget tweaky z 1.13.222/223
       (mobile header, safe-area iframe margin, custom close button).
       Důvod: Zásilkovna widget standalone na mobilu funguje perfektně (vlastní close +
       select tlačítka). Naše obalování to jen rozbíjelo, plus způsobovalo cache
       problémy (verze CSS file vs. cached HTML reference).

       Co zbylo: 100vw × 100vh dialog (z 1.13.213 níže), tap-outside-overlay
       close handler v JS, ESC keyboard close. */

    /* Touch target pro demo modal close (admin demo flow – nesouvisí se Zásilkovnou widgetem). */
    .zas-modal:not(.zas-widget-modal) .zas-modal-close {
        min-width: 44px;
        min-height: 44px;
        font-size: 28px;
        touch-action: manipulation;
    }

    /* 1.13.231: Avada checkout CSS odstraněno z pluginu (per user request) –
       site admin si tento fix nasazuje samostatně v Avada Customize →
       Doplňkové CSS. Plugin nemá co diktovat layout WC checkout review
       tabulky. Body classes (`zas-builder-fusion` atd.) zůstávají jako
       diagnostické markery, ale plugin sám už na ně CSS nepřipojuje. */
}

/* ============================================================
 *  KAPITOLA 16: Vzhled checkoutu
 *
 *  Per-rate ikona je inline <style> blok z render_method_icon().
 *  Tady jen popisek pod cenou metody (.zas-method-badges).
 * ============================================================ */

/* Popis v pokladně – subtle sub-line pod method labelem.
   Záměrně NENÍ pill ani box – v moderních minimalistických designech
   (Caldera, Astra, Storefront, ...) by to vypadalo cizorodě.
   Místo toho rendrujeme jako diskrétní šedý sub-popisek bez ikony,
   zarovnaný pod název metody (margin-left:36px = za radio + ikona).
   Pozn.: CSS třídy (.zas-method-badges, .zas-badge-delivery) zůstaly
   z historických důvodů – v 1.13.x byly nálepka doručení a popis v
   pokladně dvě oddělené featury, sloučeny od 1.13.77. */
.zas-method-badges {
    margin: -2px 0 8px 36px;
    font-size: 12px;
    line-height: 1.4;
    color: #6b7280;
}

.zas-badge {
    display: inline;
    padding: 0;
    background: none;
    border: 0;
    border-radius: 0;
    font-weight: 400;
    color: inherit;
    white-space: normal;
}

.zas-badge-delivery {
    background: none;
    color: inherit;
    border: 0;
}

/* =========================================================
   1.13.530: Elementor Pro „Checkout" widget – layout Zásilkovna doprav.
   Scopováno na .elementor-widget-woocommerce-checkout-page → klasická,
   Avada i Blocks pokladna NEJSOU dotčené.

   Princip: v úzkém sloupci Elementor pokladny je nativní 2sloupcová
   tabulka nepoužitelná (metody dopravy se mačkají do pár pixelů).
   Celou review-order tabulku proto převedeme na bloky a každý řádek
   na flex (popisek vlevo, cena vpravo). Tím:
     - metody dopravy jsou POD popiskem „Shipment", přes celou šířku,
     - VŠECHNY ceny (Subtotal, doprava, příplatky, Total) leží na jedné
       svislici u pravého okraje.
   Ověřeno renderem v úzkém sloupci.
========================================================= */

/* Celou tabulku → bloky (žádný nativní table layout). */
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table,
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table thead,
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table tbody,
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table tfoot,
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table tr {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
}

/* Řádek = flex: popisek vlevo, cena vpravo. */
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table tr {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    column-gap: 10px !important;
    row-gap: 2px !important;
    padding: 11px 0 !important;
    border-bottom: 1px solid rgba(0, 0, 0, 0.09) !important;
}
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table tr.order-total {
    border-bottom: 0 !important;
    font-size: 1.05em !important;
    font-weight: 700 !important;
}

/* Buňky – bez vlastního rámečku/paddingu (řeší řádek výše). */
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table th,
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table td {
    display: block !important;
    width: auto !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
}
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table th {
    text-align: left !important;
    font-weight: 600 !important;
}
.elementor-widget-woocommerce-checkout-page .woocommerce-checkout-review-order-table td {
    text-align: right !important;
}

/* ŘÁDEK DOPRAVY – popisek „Shipment" a metody POD ním (ne vedle). */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table tr.woocommerce-shipping-totals.shipping {
    display: block !important;
}
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table tr.woocommerce-shipping-totals.shipping > th {
    margin-bottom: 8px !important;
}
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table tr.woocommerce-shipping-totals.shipping > td {
    text-align: left !important;
}

/* Seznam metod dopravy. */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* Jedna metoda = flex řádek přes celou šířku; picker se zalomí pod něj. */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-start !important;
    column-gap: 6px !important;
    row-gap: 4px !important;
    width: 100% !important;
    margin: 0 0 16px 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: none !important;
}
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li:last-child {
    margin-bottom: 0 !important;
}

/* Radio button. */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li > input[type="radio"] {
    flex: 0 0 auto !important;
    margin: 3px 0 0 0 !important;
}

/* Label = pružný střed; uvnitř ikona + název + cena. */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li > label {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: baseline !important;
    column-gap: 6px !important;
    line-height: 1.4 !important;
    font-weight: 600 !important;
    text-align: left !important;
}

/* Ikona dopravce – pevná velikost, zarovnaná nahoru. */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li > label img {
    flex: 0 0 auto !important;
    align-self: flex-start !important;
    margin: 1px 2px 0 0 !important;
}

/* Cena dopravy – odsazená k pravému okraji řádku → svisle zarovnaná
   se Subtotal / příplatky / Total. */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li > label .woocommerce-Price-amount {
    margin-left: auto !important;
    padding-left: 10px !important;
    white-space: nowrap !important;
    font-weight: 600 !important;
}
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li > label .woocommerce-Price-amount bdi {
    white-space: nowrap !important;
}

/* Zásilkovna picker + vybrané místo – přes celou šířku, pod radio+labelem. */
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li .zas-pickup-picker {
    flex: 1 1 100% !important;
    width: 100% !important;
    margin: 8px 0 0 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    text-align: left !important;
}
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li .zas-pickup-selected {
    margin: 0 0 8px 0 !important;
    text-align: left !important;
    white-space: normal !important;
}
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li .zas-pickup-picker button,
.elementor-widget-woocommerce-checkout-page
.woocommerce-checkout-review-order-table ul#shipping_method li .zas-pickup-picker .button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    max-width: 100% !important;
    white-space: normal !important;
}

/* Mobil – tlačítko výdejny na celou šířku. */
@media (max-width: 767px) {
    .elementor-widget-woocommerce-checkout-page
    .woocommerce-checkout-review-order-table ul#shipping_method li .zas-pickup-picker button,
    .elementor-widget-woocommerce-checkout-page
    .woocommerce-checkout-review-order-table ul#shipping_method li .zas-pickup-picker .button {
        width: 100% !important;
    }
}

/* =========================================================
   1.13.535: Stránka KOŠÍKU – řádek dopravy v „Cart totals".

   OPRAVA proti 1.13.531 (a proti chybnému prvnímu pokusu):
   Layout Zásilkovna method labelů je už VYŘEŠENÝ inline blokem na pokladně
   (class-zas-checkout.php → inline_method_label_wrap_css), ale ten je
   scopovaný na `body.woocommerce-checkout`, takže na KOŠÍKU
   (`body.woocommerce-cart`) neběží. Košík tak postrádal:
     - LABEL jako flex kontejner → IKONA seděla přes první písmeno názvu,
     - cenu s `margin-left:auto` → CENA se překrývala s názvem
       (symptom „Shop2Sho49,00 Kč", viz report uživatele),
     - tvrdé připnutí RADIA do vlastního flex slotu.

   ŘEŠENÍ: doslovný port osvědčených checkout pravidel, jen přescopováno
   na `body.woocommerce-cart`. Žádná nová/vymyšlená pravidla.

   IZOLACE: vše scopováno na `body.woocommerce-cart` + `:has(.zas-method-icon)`
   (jen Zásilkovna řádky). Klasická pokladna, Blocks pokladna i ostatní stránky
   jsou NEDOTČENÉ. checkout.css se beztak načítá jen na košíku/pokladně.
========================================================= */

/* --- Řádek dopravy v Cart totals → stack: „Shipment" nahoře, metody pod. --- */
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping > th,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping > td,
body.woocommerce-cart .cart_totals tr.shipping,
body.woocommerce-cart .cart_totals tr.shipping > th,
body.woocommerce-cart .cart_totals tr.shipping > td {
    display: block !important;
    width: 100% !important;
    float: none !important;
    text-align: left !important;
}
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping > th,
body.woocommerce-cart .cart_totals tr.shipping > th {
    padding-bottom: 6px !important;
}
/* Skrýt duplicitní „Shipment" popisek, který responsivní shop_table přidává
   přes td::before (jinak by byl 2×). */
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals.shipping > td::before,
body.woocommerce-cart .cart_totals tr.shipping > td::before {
    display: none !important;
}

/* --- 1.13.538: VYNUCENÝ JEDEN ŘÁDEK „ikona název: cena" na KOŠÍKU. ---
   Cílíme OBECNÝM selektorem `tr.shipping td ul li` (NE přes třídu
   `li.zas-shipping-li` – ta na živém webu po AJAX přenačtení nemusí být,
   obecný selektor prokazatelně chytá). Téma (Astra ap.) drží buňku v úzkém
   sloupci → necháme řádek NElámat (`white-space:nowrap`) a přetéct do
   prázdného místa vpravo (řádek dopravy ho má prázdné). `overflow:visible`
   zabrání oříznutí buňkou.
   DŮLEŽITÉ: na RADIO saháme MINIMÁLNĚ (jen position/float/margin). Reset
   width/height/appearance srážel custom kolečko témat (Astra) na 0 → mizelo. */
body.woocommerce-cart .cart_totals tr.shipping > td,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals > td,
body.woocommerce-cart .cart_totals tr.shipping td ul,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul {
    overflow: visible !important;
}
/* LI = blok; radio + label na jednom řádku (nowrap), picker/SWAP pod to. */
body.woocommerce-cart .cart_totals tr.shipping td ul li,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li {
    display: block !important;
    white-space: nowrap !important;
    overflow: visible !important;
    line-height: 1.4 !important;
    position: relative !important;
}
/* RADIO: necháváme v PŘIROZENÉM TOKU jako první prvek (žádné absolutní
   připínání – to se rozbíjelo). position:static vrátí do toku i radia, která
   téma dává absolutně; margin-right udělá mezeru před ikonou. Na velikost/
   vzhled NESAHÁME (jinak custom kolečko Astry mizí). */
body.woocommerce-cart .cart_totals tr.shipping td ul li input[type="radio"],
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li input[type="radio"] {
    position: static !important;
    float: none !important;
    display: inline-block !important;
    vertical-align: middle !important;
    margin: 0 6px 0 0 !important;
}
/* IKONA inline, malá. Radio je v toku PŘED labelem, takže ikona nepotřebuje
   levý margin – jen drobnou mezeru vpravo k názvu.
   1.14.22: ODEBRÁNO max-width/max-height (předtím 20×20 px). Velikost teď
   řídí unified `.zas-method-icon` pravidlo (specificita 0,1,0) – user CSS
   z pole „Vlastní CSS" tak může cap změnit/přebít. Tady necháváme jen layout
   (display, vertical-align, margin, position) – ten by user měnit neměl. */
body.woocommerce-cart .cart_totals tr.shipping td ul li .zas-method-icon,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li .zas-method-icon {
    display: inline-block !important;
    vertical-align: middle !important;
    margin: 0 5px 0 0 !important; /* 1.14.198: 4 → 5 px (default mezera ikony) */
    position: static !important;
    top: 0 !important;
}
/* LABEL inline-block na jeden řádek (nowrap); cena jde hned za název. */
body.woocommerce-cart .cart_totals tr.shipping td ul li label,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li label {
    display: inline-block !important;
    vertical-align: middle !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    line-height: 1.4 !important;
    white-space: nowrap !important;
    overflow: visible !important;
    padding-left: 0 !important;
}
/* CENA: nelámat uvnitř čísla; jde hned za název. */
body.woocommerce-cart .cart_totals tr.shipping td ul li label .amount,
body.woocommerce-cart .cart_totals tr.shipping td ul li label bdi,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li label .amount,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li label bdi {
    white-space: nowrap !important;
}

/* --- Fee řádek (Příplatek za dobírku apod.): místo na 2 řádky. --- */
body.woocommerce-cart .cart_totals tr.fee > th {
    min-width: 150px !important;
}

/* --- Výběr výdejny: picker na vlastní řádek pod metodou. --- */
html body.woocommerce-cart ul#shipping_method li:has(.zas-pickup-picker),
html body.woocommerce-cart ul.woocommerce-shipping-methods li:has(.zas-pickup-picker),
html html body.woocommerce-cart .cart_totals li.zas-shipping-li:has(.zas-pickup-picker),
html body.woocommerce-cart ul.shipping_methods li:has(.zas-pickup-picker),
html body.woocommerce-cart li.shipping__list_item:has(.zas-pickup-picker) {
    display: block !important;
}
html body.woocommerce-cart .zas-pickup-picker:not([style*="display:none"]):not([style*="display: none"]) {
    display: block !important;
    width: auto !important;
    margin-top: 10px !important;
    box-sizing: border-box !important;
    flex: initial !important;
    white-space: normal !important;
}

/* --- Tlačítko „Vybrat / Změnit výdejní místo": přirozená velikost, Zásilkovna červená,
   nikdy nepřeteče na „Proceed to checkout". Scopováno na košík. --- */
body.woocommerce-cart .zas-pickup-picker .zas-pickup-open,
body.woocommerce-cart .zas-pickup-picker .button.zas-pickup-open {
    display: inline-block !important;
    width: auto !important;
    max-width: 100% !important;
    min-width: 0 !important;
    background: #df0024 !important;
    color: #ffffff !important;
    border: none !important;
    padding: 10px 20px !important;
    font-size: 14px !important;
    line-height: 1.4 !important;
    border-radius: 4px !important;
    cursor: pointer !important;
    text-align: center !important;
    text-decoration: none !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    float: none !important;
    min-height: 0 !important;
    height: auto !important;
}
body.woocommerce-cart .zas-pickup-picker .zas-pickup-open:hover,
body.woocommerce-cart .zas-pickup-picker .button.zas-pickup-open:hover {
    background: #b8001d !important;
    color: #ffffff !important;
}

/* --- Info box „Vybrané výdejní místo": kompaktní. --- */
html body.woocommerce-cart .zas-pickup-picker .zas-pickup-selected {
    padding: 8px 12px !important;
    background: rgba(0,0,0,0.04) !important;
    border-left: 3px solid #df0024 !important;
    margin: 0 0 8px 0 !important;
    border-radius: 0 4px 4px 0 !important;
}

/* --- Pojistka: tlačítko pokladny vždy pod blokem dopravy. --- */
body.woocommerce-cart .wc-proceed-to-checkout {
    clear: both !important;
}

/* --- Mobil ≤600px: tlačítko výdejny na plnou šířku (touch target). --- */
@media (max-width: 600px) {
    body.woocommerce-cart .zas-pickup-picker .zas-pickup-open,
    body.woocommerce-cart .zas-pickup-picker .button.zas-pickup-open {
        display: block !important;
        width: 100% !important;
    }
}

/* =========================================================================
   1.14.15: NORMALIZACE VÝŠKY Zásilkovna METHOD ŘÁDKŮ + CAP IKONY.

   Symptomy před fixem (uživatel hlásil v 1.14.14):
     - košík: po vypnutí ikon zůstaly mezi řádky velké mezery
       (předchozí pravidla `:has(.zas-method-icon)` zarovnávala JEN řádky
       s ikonou, takže když admin ikony vypnul, výchozí WC/theme styling
       LI dělal nepravidelný rytmus).
     - klasická pokladna: vypnutí ikon u 2-3 metod a ponechání ikony u jedné
       → řádek s ikonou (height ~44 px od inline `width:44`) trčel mezi
       text-only řádky (~20 px). Vizuálně „obří ikona".

   Řešení:
     1) Cap rozměrů `.zas-method-icon` na výšku jednoho řádku textu (24 px) –
        přebije inline `style="width:44px"` z PHP injektoru přes !important.
        Velikost stále lze přepsat přes Vlastní CSS v Nastavení Zásilkovny.
     2) Sjednocení marginu/paddingu/min-výšky VŠECH Zásilkovna shipping LI
        (matched přes `:has(input[id*="_zas_"])`) – řádek je vždy stejně
        vysoký bez ohledu na to, jestli má ikonu, nebo ne.

   Selektor `:has(input[id*="_zas_"])` je bezpečný – cílí jen na LI, jejichž
   radio má v ID „_zas_" (WC formát: `shipping_method_X_zas_private:5`).
   Non-Zásilkovna metody (Zásilkovna apod.) nedotčené.
   ========================================================================= */

/* Cap ikon na výšku 1 řádku textu (24 px).
   1.14.22: SPECIFICITA SNÍŽENA NA (0,1,0) – stejně jako user CSS `.zas-method-icon`.
   Předtím (1.14.15-1.14.21) byl selektor `body.woocommerce-cart .zas-method-icon,
   body.woocommerce-checkout .zas-method-icon` se specificitou (0,2,1) → user CSS
   z pole „Vlastní CSS" nemohl přebít max-width/max-height. Teď: stejná specificita,
   ale user CSS se vypisuje ve footer (priority 99999, viz output_custom_user_css),
   takže díky CSS „later wins" pravidlu user vždy vyhraje. */
.zas-method-icon {
    /* 1.14.198: default 20×20 px + mezera 5 px (přání provozovatele). Dřív 24×36.
       User CSS „Vlastní CSS" stále může přepsat (footer priority 99999). */
    max-height: 20px !important;
    max-width: 20px !important;
    width: auto !important;
    height: auto !important;
    margin-right: 5px !important;
}

/* 1.14.16 → 1.14.17 → 1.14.18: TIGHT spacing JEN pro KOŠÍK (kde uživatel
   reportoval roztažené Zásilkovna řádky vs. tight Zásilkovna). Pokladna NEDOTČENÁ.
   1.14.18: nestačil margin/padding 0 – zbývající mezera pocházela z
   line-height 1.4 + nativního margin radio buttonu. Tightujeme line-height
   na 1.2 a nullujeme radio + label margin. */
body.woocommerce-cart .cart_totals tr.shipping td ul li:has(input[id*="_zas_"]),
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li:has(input[id*="_zas_"]) {
    /* 1.14.20: 0 → 4 px margin-bottom – uživatel chtěl drobný breath mezi řádky. */
    margin: 0 0 4px 0 !important;
    padding: 0 !important;
    min-height: 0 !important;
    line-height: 1.2 !important;
}
body.woocommerce-cart .cart_totals tr.shipping td ul li:has(input[id*="_zas_"]) > input[type="radio"],
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li:has(input[id*="_zas_"]) > input[type="radio"] {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
body.woocommerce-cart .cart_totals tr.shipping td ul li:has(input[id*="_zas_"]) > label,
body.woocommerce-cart .cart_totals tr.woocommerce-shipping-totals td ul li:has(input[id*="_zas_"]) > label {
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.2 !important;
}

