/*
Theme Name: Folia Flowers
Theme URI: https://folia.flowers
Author: Folia Flowers
Author URI: https://folia.flowers
Description: Stylish design with delicate colors and responsive layout for mobile devices.
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 7.0
Version: 1.0
Text Domain: folia.flowers
Tags: one-column, custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, style-variations, accessibility-ready, blog, portfolio, news
*/

:where(.wp-site-blocks *:focus) {
    outline-width: 0 !important;
    outline-style: none !important;
}

/* The compact header's action icons (below 1024px) as one set (owner, 2026-11-05:
 * «these icons have different sizes and spacing»). They come from three sources:
 * the search plugin's magnifier (a heavy filled glyph that fills its whole box),
 * our heart (a 1.6 stroke in a 24-unit box) and WooCommerce's cart (2-unit lines
 * in a 32-unit box, the glyph only 21 units of it). Sized so each glyph is drawn
 * about 21px tall with lines about 2px thick: search 21px, heart 28px, cart 32px.
 * Each sits centred in a 28px-wide slot, like the menu button, and the row's gap
 * (with the favourites heart, below) makes the drawn spaces between search, heart,
 * cart and the menu button equal. The AJAX-search plugin caps its icon via plain
 * class rules, hence !important. The desktop header keeps its own sizing. */
@media (max-width: 1023px) {
    .folia-phone-call svg { width: 28px !important; height: 28px !important; }
    .folia-header-right .dgwt-wcas-search-wrapp { width: 28px !important; min-width: 28px !important; max-width: 28px !important; }
    /* Only in the header: when the search opens, the plugin moves this wrapper into its
       panel and hides the icon there (a forced display showed it above the field). */
    .folia-header-right .dgwt-wcas-search-icon { display: flex !important; align-items: center; justify-content: center; width: 28px !important; height: 28px !important; max-width: none !important; }
    /* margin 0: the plugin's -0.2em bottom margin dropped the glyph 2px below the others */
    .folia-header-right .dgwt-wcas-search-icon svg { width: 21px !important; height: 21px !important; max-width: none !important; margin: 0 !important; }
    .folia-header-right .dgwt-wcas-search-icon svg path { fill: #1e1e1e !important; } /* the ink of the heart and cart, not #000 */
    /* The 32px box keeps a 28x30 footprint, so the slot is 28px and the button stays 48px tall. */
    .wc-block-mini-cart__button svg { width: 32px !important; height: 32px !important; margin: -1px -2px !important; }
    .wp-block-navigation__responsive-container-open svg { width: 28px !important; height: 28px !important; }
}

/* The phone search panel (the search plugin's mobile overlay; owner, 2026-11-05:
 * «Search panel looks ugly», then «It is not in the style of the whole site»), in
 * the site's modern look ("Buttons and fields everywhere" below): a 72px bar with
 * the site's hairline; a round back button; the field like every other field (50px,
 * radius 10, a grey edge, a dark edge and a ring while typing) with a light
 * magnifier in it and a light «×»; section labels in normal case; categories as
 * rounded chips; products as rows like the favourites drawer (rounded photo, name,
 * price in 600); «Zobacz wszystkie produkty» as the site's dark rounded button.
 * The plugin marks some of its own rules !important, so these do too. The
 * computer dropdown is not touched. */
.dgwt-wcas-overlay-mobile { font-family: inherit; color: var(--folia-ink); }
.dgwt-wcas-overlay-mobile .dgwt-wcas-om-bar {
    height: 72px !important;
    align-items: center;
    gap: 6px;
    padding: 0 16px 0 6px;
    border-bottom: 1px solid var(--folia-line);
    background: #fff;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-om-bar button.dgwt-wcas-om-return {
    flex: 0 0 44px;
    width: 44px !important;
    height: 44px !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    border-radius: 999px !important;
    background: transparent !important;
    transition: background-color .15s ease;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-om-bar button.dgwt-wcas-om-return:active { background: var(--folia-soft) !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-om-bar button.dgwt-wcas-om-return svg {
    position: static !important;
    width: 20px !important;
    height: 20px !important;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-om-bar button.dgwt-wcas-om-return path { fill: var(--folia-ink) !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-om-bar .dgwt-wcas-search-wrapp-mobile {
    flex: 1 1 auto;
    width: auto !important;
    min-width: 0;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-sf-wrapp {
    position: relative;
    padding: 0 !important;
    background: transparent !important;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-search-wrapp-mobile input[type=search].dgwt-wcas-search-input {
    height: 50px !important;
    padding: 0 44px 0 42px !important;
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field) !important;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 14px center / 18px 18px !important;
    box-shadow: none !important;
    font-family: inherit !important;
    font-size: 16px !important;
    color: var(--folia-text);
    transition: border-color .15s ease, box-shadow .15s ease;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-search-wrapp-mobile input[type=search].dgwt-wcas-search-input:focus,
.dgwt-wcas-overlay-mobile .dgwt-wcas-search-wrapp-mobile.dgwt-wcas-search-focused input[type=search].dgwt-wcas-search-input {
    border-color: var(--folia-ink) !important;
    box-shadow: var(--folia-ring) !important;
    outline: none;
}
.dgwt-wcas-overlay-mobile input[type=search].dgwt-wcas-search-input::placeholder { color: var(--folia-muted); opacity: 1; }
/* The clear «×» (and the loading spinner in its place) inside the field, at its right, light. */
.dgwt-wcas-overlay-mobile .dgwt-wcas-sf-wrapp .dgwt-wcas-preloader {
    right: 4px !important;
    top: 0 !important;
    height: 50px !important;
    width: 40px !important;
    margin: 0 !important;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-sf-wrapp .dgwt-wcas-close svg { width: 14px !important; height: 14px !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-sf-wrapp .dgwt-wcas-close:not(.dgwt-wcas-inner-preloader) path { fill: var(--folia-muted) !important; }
html.dgwt-wcas-overlay-mobile-on .dgwt-wcas-overlay-mobile .dgwt-wcas-suggestions-wrapp {
    top: 72px !important;
    height: calc(100% - 72px) !important;
    max-height: none !important;
    padding: 8px 16px 32px !important;
    border: 0 !important;
    box-shadow: none !important;
    background: #fff;
}
html.dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios .dgwt-wcas-overlay-mobile .dgwt-wcas-suggestions-wrapp { height: auto !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion,
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion * { text-decoration: none !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion {
    padding: 12px 0 !important;
    border: 0 !important;
    background: transparent;
    color: var(--folia-ink);
    font-size: 16px;
    line-height: 1.3;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-selected { background: var(--folia-soft) !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-headline { padding: 18px 0 10px !important; pointer-events: none; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-headline .dgwt-wcas-st {
    padding: 0 !important;
    border: 0 !important;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none !important;
    color: var(--folia-muted);
}
/* Categories: rounded chips side by side, the parent category light after the name.
   A long name wraps inside its chip rather than being cut: two cut names could read
   the same («…«Pink O'Hara»» and «…«White O'Hara»»). */
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-tax {
    display: inline-flex !important;
    align-items: center;
    width: auto !important;
    max-width: 100%;
    min-height: 38px;
    margin: 0 8px 8px 0;
    padding: 8px 14px !important;
    border: 1px solid var(--folia-field) !important;
    border-radius: 19px;
    background: #fff;
    font-size: 15px;
    line-height: 20px;
    vertical-align: top;
    transition: background-color .15s ease, border-color .15s ease;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-tax .dgwt-wcas-st { padding: 0 !important; white-space: normal; overflow-wrap: anywhere; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-tax.dgwt-wcas-suggestion-selected { border-color: var(--folia-hover) !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-st-breadcrumbs { display: inline; margin-left: 6px; font-size: 13px; color: var(--folia-muted); }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-product {
    display: flex !important;
    align-items: center;
    gap: 14px;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-product + .dgwt-wcas-suggestion-product { border-top: 1px solid var(--folia-line) !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-si {
    flex: 0 0 64px;
    width: 64px !important;
    height: 64px;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: var(--folia-r-field);
    overflow: hidden;
    background: var(--folia-soft);
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-si img {
    display: block;
    width: 64px !important;
    height: 64px !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: var(--folia-r-field);
    object-fit: cover;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-content-wrapp {
    flex: 1 1 auto;
    min-width: 0;
    display: flex !important;
    flex-direction: column;
    align-items: stretch !important;
    justify-content: center;
    gap: 4px;
    height: auto !important;
    padding: 0 !important;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-st-title {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    font-size: 16px;
    line-height: 1.3;
    color: var(--folia-ink);
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-st-title strong { font-weight: 600; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-meta {
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: left !important;
}
/* The plugin right-aligns the price and, with photos, puts each part of a range
   («155,00 zł», «–», «1535,00 zł») on its own line. */
.dgwt-wcas-overlay-mobile .dgwt-wcas-sp {
    display: block;
    padding-left: 0 !important;
    text-align: left !important;
    font-size: 15px;
    font-weight: 600;
    line-height: 20px;
    color: var(--folia-ink);
    white-space: nowrap;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-sp > * { display: inline !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-sp del { margin-right: 6px; font-weight: 400; color: var(--folia-muted); }
.dgwt-wcas-overlay-mobile .dgwt-wcas-sp ins { text-decoration: none; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-more {
    display: flex !important;
    align-items: center;
    justify-content: center;
    height: 50px;
    margin: 16px 0 0;
    padding: 0 16px !important;
    border: 0 !important;
    border-radius: 12px;
    background: var(--folia-ink) !important;
    color: #fff !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .12);
    text-align: center;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-more.dgwt-wcas-suggestion-selected { background: #3f3f46 !important; }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-more .dgwt-wcas-st-more {
    font-size: 16px;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none !important;
    color: #fff;
}
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-more .dgwt-wcas-st-more-total { margin-left: 4px; font-weight: 400; color: rgba(255, 255, 255, .7); }
.dgwt-wcas-overlay-mobile .dgwt-wcas-suggestion-nores { padding: 20px 0 !important; color: var(--folia-muted); font-size: 15px; white-space: normal; }

.delivery_date_wrapper, .delivery_time_wrapper {
    position: relative;
    display: inline-grid;
    height: 50px;
}

/* Date and time on the checkout field rhythm (2026-09-26). Both controls computed
 * to 52px inside 50px wrappers, and the select added a 4px top margin, so the time
 * select hung 6px out of its step: the gap to "Dane kontaktowe odbiorcy" below read
 * as 12px against 18/26px between every other pair of steps. They also sat 20px
 * apart where every other row is 12px, and were 2px taller than the fields around
 * them. Measured on staging at 390px and 1280px. The 20px gap and 52px height come
 * from src/input.css (compiled into tailwind.css), whose selector carries the
 * #delivery_datetime_fields id, so the id is repeated here to outrank it. */
body .folia-checkout #delivery_datetime_fields .delivery_datetime_grid { gap: 12px; }
body .folia-checkout #delivery_date,
body .folia-checkout #delivery_time { height: 50px; margin-top: 0; box-sizing: border-box; }

.delivery_date_wrapper label, .delivery_time_wrapper label {
    font-size: 14px;
    color: hsla(0,0%,7%,.7);
    margin: 0;
}

.delivery_time_wrapper select {
    margin-top: 4px;
    font-size: 17px;
}

.category-list a {
    font-weight: 300;
    text-decoration: none;
}

/* Legal pages (Shop rules / Privacy policy). Their dedicated templates drop the
 * content directly under the header, and the header logo — a 180px circle that
 * overflows the short (~114px) header box — was overlapping the page title. Give
 * the header a min-height that contains the logo so content always flows below it
 * (viewport-independent, unlike a fixed margin). Also trim the shop-rules
 * template's oversized 218px pre-footer spacer to 64px. Scoped by the per-page
 * body classes, which are consistent across all languages. Computers only: below
 * 1024px the logo is a small one inside the slim sticky bar, which keeps its height. */
@media (min-width: 1024px) {
    body.page-template-shop-rules .folia-site-header,
    body.privacy-policy .folia-site-header { min-height: 210px !important; }
}
body.page-template-shop-rules .wp-block-spacer { height: 64px !important; }

/* Cart page summary card (folia/cart block): groups the estimated total + the
 * "Proceed to checkout" button into a grey card, matching the item cards and the
 * checkout summary. Defined here (not Tailwind) because the theme's Tailwind build
 * is JIT-purged and the arbitrary padding/width utilities aren't compiled. */
.folia-cart-summary {
    width: 100%;
    background: #f3f3f3;
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}
@media (min-width: 1024px) {
    .folia-cart-summary {
        width: 360px;
        flex-shrink: 0;
        margin-left: auto; /* keep it right-aligned, incl. when coupons are off */
        padding: 32px;
    }
}

/* (768px - 1199px) */
@media (max-width: 1199px) {
    .wc-block-product-template__responsive.columns-3 {
        grid-template-columns: repeat(auto-fill, minmax(max(150px, calc(50% - .83333em)), 1fr));
    }
}

/* (576px - 767px) */
@media (max-width: 767px) {
    .wc-block-product-template__responsive.columns-3 {
        grid-template-columns: repeat(auto-fill, minmax(max(150px, calc(50% - .83333em)), 1fr));
    }
}

@media (max-width: 525px) {
    .wc-block-product-template__responsive.columns-3 {
        grid-template-columns: repeat(auto-fill, minmax(max(150px, calc(100% - .83333em)), 1fr));
    }
}

/*
 * Page titles that sit directly under the header: the site-header logo overflows
 * its container and was sitting flush against (overlapping) these headings, which
 * made them look garbled. Add top clearance so the title clears the logo.
 * Affected pages: checkout (.folia-checkout__title) and cart (.folia-block-cart h1).
 * Other pages (shop, about, contacts, faq) already have ample clearance.
 */
.folia-checkout__title,
.folia-block-cart h1 {
    margin-top: clamp(2.5rem, 9vw, 4rem) !important;
}

/*
 * Checkout delivery-method toggle (WooCommerce "Shipping method" block): two
 * cards (icon + title, then a price/description line). WooCommerce sizes the
 * price line with `flex: 0 1 100%`, which on narrow (mobile) widths lets the
 * longer translated labels — "вычисляется по адресу" / "БЕСПЛАТНО" (ru),
 * "розраховується за адресою" (uk), even EN "calculated with an address" —
 * overflow the card and spill into/past the neighbouring card. Constrain the
 * card contents and let the price wrap and centre inside its own card.
 */
.wc-block-checkout__shipping-method-container { flex-wrap: wrap; }
.wc-block-checkout__shipping-method-option { overflow: hidden; min-width: 0; }
.wc-block-checkout__shipping-method-option-title-wrapper,
.wc-block-checkout__shipping-method-option-title,
.wc-block-checkout__shipping-method-option-price {
    min-width: 0;
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    text-align: center;
}
.wc-block-checkout__shipping-method-option-price { flex: 0 1 auto !important; }

/*
 * Checkout polish (2026-06-26). Targeted refinements to the WooCommerce block
 * checkout — see also the heavy base styling compiled into assets/css/tailwind.css.
 */

/* 1. Desktop: order summary as a sticky card on the RIGHT (the base theme places
 *    it in a cramped narrow column on the left). Mobile keeps the stacked,
 *    summary-on-top order, so the Place Order button still follows the summary. */
/* NB: extra `body` qualifier — main-style (style.css) is enqueued BEFORE the
 * compiled tailwind.css, which sets `order:1 !important` on the sidebar at equal
 * specificity, so we need a more specific selector to win the swap. */
@media (min-width: 1024px) {
    body .folia-checkout .wc-block-checkout__sidebar {
        order: 2 !important;
        position: sticky;
        top: 24px;
        align-self: flex-start;
    }
    body .folia-checkout .wc-block-checkout__main { order: 1 !important; }
}

/* 2. Tone down the oversized checkout headings so they stop crowding the form. */
.folia-checkout .folia-checkout__title { font-size: clamp(28px, 4vw, 42px) !important; }
.folia-checkout .wc-block-components-checkout-step__title { font-size: clamp(20px, 1.7vw, 25px) !important; }
.folia-checkout .wc-block-components-checkout-step__description { margin-bottom: 12px !important; }

/* The checkout's single address form is the INVOICE (pickup) or the DELIVERY address, and
   customers always type their real town — any town for the invoice; Warsaw or a covered
   suburb (Piaseczno, Pruszków, …) for delivery, where the postcode zones gate the area. So
   always show the City field that input.css would otherwise hide; the leading `body` raises
   specificity above that hide rule so this wins regardless of prod CSS source-order. */
body .folia-checkout .wc-block-components-address-form__city { display: block !important; }

/* Delivery town dropdown (folia-delivery-towns.js): a restricted <select> that replaces the
   free-text delivery City input. Match the Folia field tokens (square, hairline, 52px, SVG chevron). */
.folia-checkout .folia-town-select {
    /* The 24px/8px padding is WooCommerce's own active-state text-input metric, so the
       select's text clears the floated label. The height matches what the
       #shipping-postcode field beside it computes to (WooCommerce's native input is
       50px) — hardcoding anything else leaves the pair visibly unaligned. This was
       briefly 60px to match the 3-step wizard, which raised inputs inside `.folia-cw`;
       the wizard was removed 2026-09-25, so 50px is simply the right value again. */
    display: block; width: 100%; height: 50px; padding: 24px 40px 8px 10px;
    border: 1px solid #e5e5e5; border-radius: 0; background-color: #fff; color: #2b2d2f;
    font: inherit; font-size: 16px; line-height: normal; box-sizing: border-box; cursor: pointer;
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='none' stroke='%231e1e1e' stroke-width='1.5' d='M1 1.5 6 6.5 11 1.5'/></svg>");
    background-repeat: no-repeat; background-position: right 14px center;
}
.folia-checkout .folia-town-select:focus { border-color: #1e1e1e; outline: none; box-shadow: none; }

/* Float the "Miejscowość" label permanently while the town <select> is in place.
   WooCommerce parks the resting label dead-centre of the field (top:25px, translateY(-50%))
   and only lifts it to top:6px when the wrapper gets `.is-active` — a class React derives from
   the INPUT's value. folia-delivery-towns.js hides that input and leaves it empty, so the label
   would never lift, yet the select beneath it always shows text (the placeholder, or the chosen
   town). The two then overlap on top of each other.

   Keyed off `:has(.folia-town-select)` rather than adding `.is-active` from JS on purpose: that
   class is React-owned, so a re-render would strip it straight back off and we would be fighting
   the re-render loop for a purely visual state. The select's 24px top padding above keeps its
   text clear of the lifted label; both sit at left:10px so the field aligns with its neighbours. */
body .folia-checkout .wc-block-components-text-input:has(.folia-town-select) label {
    top: 6px;
    transform: scale(0.82);
}
/* Match the "Order summary" heading to the section-step titles above (was 16.8px),
 * so it reads as a peer section heading — most visible on mobile where the summary
 * now sits inline between Additional and Payment. `body` prefix beats tailwind. */
body .folia-checkout .wc-block-components-checkout-order-summary__title-text { font-size: clamp(20px, 1.7vw, 25px) !important; }

/* Order-summary "Total" row: it is the emphasized grand total, NOT a section
 * header, so keep it below the section-title size (20px / 24.48px desktop) yet
 * above the 16px Subtotal/shipping rows. 18px reads as the emphasized total
 * without competing with the headings. */
body .folia-checkout .wc-block-components-totals-footer-item,
body .folia-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
body .folia-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value,
body .folia-checkout .wc-block-components-totals-footer-item .wc-block-components-formatted-money-amount { font-size: 18px !important; }

/* 3. Drop the per-unit price printed under each order-summary line — it duplicates
 *    the line total whenever quantity is 1 (the usual case), which read as a glitch. */
.folia-checkout .wc-block-components-order-summary-item__individual-prices { display: none !important; }

/* 4. Hide PayU's mini-installments widget on the ru/uk storefronts: it is a Polish
 *    financing product rendered by PayU's own script in Polish ("Rata 0% już od …"),
 *    which can't be translated from WordPress and is irrelevant to non-PL customers. */
html[lang^="ru"] #installment-mini-block,
html[lang^="uk"] #installment-mini-block { display: none !important; }

/*
 * Payment options redesign (2026-06-26). The WooCommerce block highlight-checked
 * radio control only boxes the selected method and leaves the rest barely
 * delineated, scatters the gateway logos, and draws stray ::after dividers.
 * Restyle every method as a consistent card with aligned logos and a clean
 * selected/hover state. `body` prefix raises specificity over the compiled
 * tailwind.css rules (which load after this file). See gotcha: style.css before tailwind.
 */
body .folia-checkout .wc-block-components-radio-control { display: flex; flex-direction: column; gap: 10px; }
/* drop WooCommerce's default divider pseudo-elements that clash with the cards */
body .folia-checkout .wc-block-components-radio-control::after,
body .folia-checkout .wc-block-components-radio-control-accordion-option::after { display: none !important; }
/* each method = a card (wrapper holds the row + its expanded description) */
body .folia-checkout .wc-block-components-radio-control-accordion-option {
    border: 1px solid #dcdcdc !important;
    margin: 0 !important;
    background: #fff;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
/* Mouse/trackpad only: on a touch screen a tap leaves the row "hovered", so an
   option the shopper merely touched (or one under a tapped spot) looked chosen. */
@media (hover: hover) {
    body .folia-checkout .wc-block-components-radio-control-accordion-option:hover { border-color: #1e1e1e !important; }
}
body .folia-checkout .wc-block-components-radio-control-accordion-option--checked-option-highlighted {
    border-color: #1e1e1e !important;
    background: #fafafa;
    box-shadow: inset 0 0 0 1px #1e1e1e;
}
/* inner clickable row: no own border, keep room for the radio at left */
body .folia-checkout .wc-block-components-radio-control__option {
    border: 0 !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 20px 22px 20px 54px !important;
    background: transparent !important;
}
/* label row: text left, logo hard-right and aligned across all methods */
body .folia-checkout .wc-block-components-radio-control__label {
    display: flex !important;
    align-items: center;
    gap: 16px;
    width: 100% !important;
}
body .folia-checkout .wc-block-components-payment-method-label { flex: 1 1 auto; font-size: 16px; }
body .folia-checkout .wc-block-components-radio-control__label > :last-child {
    flex: 0 0 auto !important;
    margin-left: auto !important;
    width: auto !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: flex-end;
}
/* the Stripe (Credit/Debit) method wraps text+icon in one span — make THAT the
 * full-width space-between row instead of letting it get shoved right */
body .folia-checkout .wc-block-components-radio-control__label > span:only-child {
    margin-left: 0 !important;
    flex: 1 1 auto !important;
    width: 100% !important;
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
body .folia-checkout .wc-block-components-radio-control__label img { max-height: 24px; width: auto; display: block; }
/* the selected method's hint text, tucked under the row */
body .folia-checkout .wc-block-components-radio-control-accordion-content {
    padding: 0 22px 18px 54px !important;
    color: #6b6b6b;
    font-size: 14px;
}

/*
 * Payment block, calm and unified (2026-09-26). Reviewed from a phone
 * screenshot: the block had become the loudest part of an otherwise quiet form.
 *
 * - Selected cards: 1px ink border on white, for payment, delivery and pickup
 *   alike. The 2px border plus #fafafa fill put the Stripe list (white, with its
 *   own borders) inside a grey box inside a black box.
 * - On phones the selected method's content drops WooCommerce's 54px indent,
 *   which squeezed Stripe's Karta / Przelewy24 list to 265px of a 343px card.
 * - "Ekspresowa kasa" loses the frame with its title cut into the border and
 *   becomes a caption above the buttons, like "Kontakt do odbiorcy".
 * Stripe renders the wallet buttons and the method list in its own iframes;
 * only their surroundings are styled here.
 */
body .folia-checkout .wc-block-components-radio-control-accordion-option--checked-option-highlighted,
body .folia-checkout .wc-block-checkout__shipping-method-option--selected,
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__option--checked-option-highlighted {
    background: #fff !important;
    box-shadow: none !important;
}
@media (max-width: 480px) {
    body .folia-checkout .wc-block-components-radio-control-accordion-content {
        padding: 0 16px 16px !important;
    }
}
body .folia-checkout .wc-block-components-express-payment__title-container {
    position: static !important;
    display: block !important;
    margin: 0 0 8px !important;
}
body .folia-checkout .wc-block-components-express-payment__title-container::before,
body .folia-checkout .wc-block-components-express-payment__title-container::after { display: none !important; }
body .folia-checkout .wc-block-components-express-payment__title {
    /* WooCommerce lifts the title by translateY(-50%) to sit on the frame's top
       edge; with no frame that left it 22px under the heading (32 elsewhere)
       and 18px above the buttons instead of 8. */
    transform: none !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    color: #1e1e1e !important;
    text-align: left !important;
    padding: 0 !important;
    background: none !important;
}
body .folia-checkout .wc-block-components-express-payment__content {
    border: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}
/* The express block and the method list below it are two ways to pay under one
 * heading; 24px apart reads as a pair, not as two sections. */
body .folia-checkout .wc-block-checkout__payment-method .wc-block-components-express-payment { margin: 0 0 24px !important; }

/*
 * Delivery (Ship / Pickup) toggle restyle (2026-06-26). Match the payment-card
 * aesthetic: the base theme boxed only the selected card heavily and left the
 * other faint, with a lot of empty vertical space. Give both a consistent light
 * border, a refined selected state (subtle fill + dark border), tighter padding,
 * a clearer title, and muted secondary text. See also the earlier overflow fix
 * for long ru/uk labels. `body` prefix raises specificity over tailwind.css.
 */
body .folia-checkout .wc-block-checkout__shipping-method-container { gap: 10px !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option {
    border: 1px solid #dcdcdc !important;
    min-height: 0 !important;
    padding: 18px 16px !important;
    gap: 8px !important;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
body .folia-checkout .wc-block-checkout__shipping-method-option:hover { border-color: #1e1e1e !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option--selected {
    border-color: #1e1e1e !important;
    background: #fafafa;
    box-shadow: inset 0 0 0 1px #1e1e1e;
}
body .folia-checkout .wc-block-checkout__shipping-method-option-title-wrapper { gap: 8px !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option-title { font-size: 17px; font-weight: 600; }
body .folia-checkout .wc-block-checkout__shipping-method-option-price {
    font-size: 13px !important;
    color: #777 !important;
    line-height: 1.3;
}
body .folia-checkout .wc-block-checkout__shipping-method-option--selected .wc-block-checkout__shipping-method-option-price { color: #1e1e1e !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option-price em { font-style: normal; font-weight: 600; }

/*
 * Pickup locations block (2026-06-26). It reuses the same radio-control classes
 * as the payment options, so the payment restyle above stripped its border and
 * left it as a bare row — the one section not in a card. Re-card the pickup
 * option (scoped to .wc-block-checkout__pickup-options so it doesn't disturb the
 * payment list): name left, price right, address muted below, same selected /
 * hover treatment as the delivery and payment cards.
 */
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__option {
    border: 1px solid #dcdcdc !important;
    background: #fff !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 18px 22px 18px 54px !important;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__option:hover { border-color: #1e1e1e !important; }
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__option--checked-option-highlighted {
    border-color: #1e1e1e !important;
    background: #fafafa !important;
    box-shadow: inset 0 0 0 1px #1e1e1e !important;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__label-group {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__label {
    display: inline !important;
    width: auto !important;
    flex: 1 1 auto;
    font-size: 16px;
    font-weight: 600;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__secondary-label {
    margin-left: auto !important;
    flex: 0 0 auto;
    color: #1e1e1e;
    white-space: nowrap;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__secondary-label em { font-style: normal; font-weight: 600; }
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__description { color: #777 !important; font-size: 13px !important; }

/*
 * "Additional" section heading above the order-note block (2026-06-26). The
 * WooCommerce order-note ("Add a note to your order") sat loose at the bottom of
 * the form with no heading. Give it a section title matching the other checkout
 * step titles, via a ::before (the block is React-rendered, so a CSS heading is
 * the reliable route). Per-language content; \uXXXX escapes keep it ASCII-safe.
 * display:block needs !important — the checkout-step hides its ::before otherwise.
 */
body .folia-checkout .wc-block-checkout__order-notes { margin-top: 0; }
body .folia-checkout .wc-block-checkout__order-notes::before {
    content: "Additional";
    display: block !important;
    font-family: inherit;
    font-size: clamp(20px, 1.7vw, 25px);
    font-weight: 300; /* match the other section titles (was 400, read as darker/bolder) */
    color: #1e1e1e;
    line-height: 1.2;
    margin-bottom: 16px;
}
html[lang^="ru"] body .folia-checkout .wc-block-checkout__order-notes::before { content: "\0414\043E\043F\043E\043B\043D\0438\0442\0435\043B\044C\043D\043E"; } /* Дополнительно */
html[lang^="uk"] body .folia-checkout .wc-block-checkout__order-notes::before { content: "\0414\043E\0434\0430\0442\043A\043E\0432\043E"; }                 /* Додатково */
html[lang^="pl"] body .folia-checkout .wc-block-checkout__order-notes::before { content: "Dodatkowo"; }
/* One section, not two, with the invoice box LAST (2026-09-26). WooCommerce
 * renders the VAT checkbox in its own "Dodatkowe informacje o zamówieniu" step,
 * which comes BEFORE this one, so the page read as two headings in a row with a
 * single checkbox between them. The VAT step is now ordered after this one (see
 * the numbering below) and its own heading is hidden; this block carries the
 * section title instead, so the list reads: gift message, anonymous, photo,
 * order note, invoice. The screen-reader legend of the VAT step is untouched.
 * The title is WooCommerce's own wording, per language, because it now heads the
 * invoice box as well as the gift options. In the Cyrillic titles the spaces
 * are escaped too (\000020): CSS swallows one whitespace after any escape as
 * its terminator, which ran the words together. Without :has() the original two
 * headings and order stay: worse, not broken. */
body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-fields) > .wc-block-checkout__order-notes::before { content: "Additional order information"; }
html[lang^="ru"] body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-fields) > .wc-block-checkout__order-notes::before { content: "\000414\00043E\00043F\00043E\00043B\00043D\000438\000442\000435\00043B\00044C\00043D\000430\00044F\000020\000438\00043D\000444\00043E\000440\00043C\000430\000446\000438\00044F\000020\00043E\000020\000437\000430\00043A\000430\000437\000435"; } /* Дополнительная информация о заказе */
html[lang^="uk"] body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-fields) > .wc-block-checkout__order-notes::before { content: "\000414\00043E\000434\000430\000442\00043A\00043E\000432\000430\000020\000456\00043D\000444\00043E\000440\00043C\000430\000446\000456\00044F\000020\00043F\000440\00043E\000020\000437\000430\00043C\00043E\000432\00043B\000435\00043D\00043D\00044F"; } /* Додаткова інформація про замовлення */
html[lang^="pl"] body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-fields) > .wc-block-checkout__order-notes::before { content: "Dodatkowe informacje o zam\00F3wieniu"; }
html[lang^="es"] body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-fields) > .wc-block-checkout__order-notes::before { content: "Informaci\00F3n adicional del pedido"; }
body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-fields) > .wc-block-checkout__order-notes { margin-bottom: 0 !important; }
/* The note row above already carries 16px below it; WooCommerce also gives the
 * invoice checkbox 16px above on desktop (0 on mobile), which doubled the gap
 * there. Top margin off, so it is 16px at both widths, like the rows above. */
body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-notes) > .wc-block-checkout__order-fields .wc-block-components-address-form > :first-child { margin-top: 0 !important; }
body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-notes) > .wc-block-checkout__order-fields .wc-block-components-checkout-step__heading-container,
body .folia-checkout .wc-block-checkout__form:has(> .wc-block-checkout__order-notes) > .wc-block-checkout__order-fields .wc-block-components-checkout-step__heading { display: none !important; }

/*
 * Move the "Additional" (order note) section to render BEFORE Payment options.
 * The checkout form is normal block flow, so switch it to a flex column and give
 * only the trailing blocks an explicit order: everything up to billing stays at
 * the default order:0 (source order), then note -> invoice (order fields) ->
 * mobile summary -> payment -> terms -> actions.
 * Result: …billing, Additional, VAT invoice, [summary on mobile], Payment
 * options, terms, Place order. Renumbered 2026-09-26 to make room for the
 * invoice step between the note and the summary: order takes integers only, and
 * a tie falls back to DOM order, where the order fields come first.
 */
body .folia-checkout .wc-block-checkout__form { display: flex !important; flex-direction: column !important; }
/* As flex items the steps took their widest content as their minimum width
 * (min-width: auto): Stripe's card form, the payment logos and the test-mode
 * badge made the payment step wider than a phone, and its right side was cut off
 * (staging, 2026-10-25, 360-390px screens). They fit the form instead. */
body .folia-checkout .wc-block-checkout__form > * { min-width: 0 !important; }
body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__order-notes { order: 1 !important; }
body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__order-fields { order: 2 !important; }
body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__payment-method { order: 4 !important; }
body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__terms { order: 5 !important; }
body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__actions { order: 6 !important; }
/* Express checkout (Ekspresowa kasa — Apple Pay / Google Pay / Link) belongs with
   the payment options, not stranded above the contact fields where WooCommerce
   puts it. Its wrapper is the form's FIRST child and carries no class at all, so
   there is nothing to select but its contents — hence `:has()`. Left alone it
   keeps the default `order: 0` and therefore sorts ahead of every numbered
   sibling, which is exactly the bug.
   `order: 4` deliberately TIES with the payment section: a tie falls back to DOM
   order, and the express wrapper is child 0 while payment is child 6, so it lands
   immediately above the payment methods — "pay instantly, or continue below". */
body .folia-checkout .wc-block-checkout__form > div:has(> .wc-block-components-express-payment) {
    order: 4 !important;
}

/*
 * Breathing room under each section heading (2026-06-26). The checkout-step
 * heading sat only 8px above its description/fields, which read as cramped under
 * the large thin titles. Bump to 16px (matches the "Additional" heading gap).
 */
body .folia-checkout .wc-block-components-checkout-step__heading { margin-bottom: 16px !important; }

/*
 * Hide the "Shipping options" rate-selector block (2026-06-26). The shop uses a
 * single flat shipping rate, already shown in the Delivery (Ship/Pickup) toggle
 * and the order summary, so the separate rate list is redundant. Hidden, not
 * removed — the block stays in the DOM so the single rate remains auto-selected
 * and the order still carries the shipping cost. (If multiple shipping rates are
 * ever added, revisit this so customers can choose between them.)
 */
body .folia-checkout .wc-block-checkout__shipping-option { display: none !important; }

/*
 * Tighten the gap between checkout sections (2026-06-26). The base theme spaces
 * steps clamp(32px,4vw,56px) apart (56px on desktop), which felt too loose now
 * that the headings and internal spacing are dialled in. Halve it to
 * clamp(18px,2vw,28px). `body` prefix beats the compiled tailwind rule.
 */
body .folia-checkout .wc-block-components-checkout-step { margin-bottom: clamp(18px, 2vw, 28px) !important; }

/*
 * Tighten the gap under the "Checkout" page heading (2026-06-26). Below the H1
 * underline there was ~43px of dead space — the post-content default top margin
 * (~19px) stacked with the WooCommerce checkout block's 24px top padding. Most
 * visible on mobile, where the order summary sits right under the heading.
 * Collapse to ~14px.
 */
body .folia-checkout > .wp-block-post-content { margin-top: 0 !important; }
body .folia-checkout .wp-block-woocommerce-checkout { padding-top: 14px !important; }

/*
 * Make the mobile order-summary toggle work (2026-06-26). The theme forces
 * .wc-block-components-checkout-order-summary__content { display:block !important }
 * (so the summary stays open in the desktop sidebar), which also defeated the
 * collapse on mobile: tapping the "Order summary" header flipped aria-expanded
 * but the items never hid. The title and content are siblings, so on mobile hide
 * the content while the title is collapsed. Desktop (>=1024px) stays always-open.
 */
@media (max-width: 1023px) {
    body .folia-checkout .wc-block-checkout__sidebar .wc-block-components-checkout-order-summary__title[aria-expanded="false"] ~ .wc-block-components-checkout-order-summary__content { display: none !important; }
}

/*
 * Restore the "Add coupons" panel in the order summary (2026-06-26). The base
 * theme set the sidebar panel button to pointer-events:none and hid its toggle
 * icon, so the coupon panel couldn't be opened (most broken on mobile) — you
 * couldn't enter a code. Re-enable the button and show its chevron. (The order-
 * summary collapse toggle is a separate __title element, so this only affects
 * the coupon panel.)
 */
body .folia-checkout .wc-block-checkout__sidebar .wc-block-components-panel__button { pointer-events: auto !important; cursor: pointer !important; }
body .folia-checkout .wc-block-checkout__sidebar .wc-block-components-panel__button-icon { display: inline-flex !important; }

/*
 * Match the coupon field height to the APPLY button (2026-06-26). Form inputs
 * are 52px and buttons are 56px project-wide; in the coupon row they sit side by
 * side, so the 4px difference left their bottoms misaligned. Bump the coupon
 * field to 56px so it lines up flush with the button.
 */
body .folia-checkout .wc-block-components-totals-coupon .wc-block-components-text-input,
body .folia-checkout .wc-block-components-totals-coupon .wc-block-components-text-input input,
body .folia-checkout .wc-block-components-totals-coupon input[type="text"] { height: 56px !important; }

/*
 * Move the order summary (prices block) below the "Additional" section on mobile
 * (2026-06-26). On mobile the order summary normally renders in its own column at
 * the top of the page, above the form. A wp_footer script
 * (folia_move_order_summary_after_additional) relocates the
 * .wc-block-checkout__sidebar node into the form, right after the Additional
 * (order-note) section, so the flow reads: …Additional, Order summary, Payment
 * options. These rules style it for that new context: full width (it was a narrow
 * sidebar column) and order:3 so flexbox keeps it after Additional (1) and the
 * VAT invoice step (2), and before Payment (4). Moving the node out of the
 * sidebar layout makes WooCommerce hide the summary block (display:none) — force
 * it back. Mobile only; the desktop sticky-right sidebar (>=1024px) is untouched.
 */
@media (max-width: 1023px) {
    body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__sidebar {
        order: 3 !important;
        flex: 0 0 auto !important;
        width: 100% !important;
        max-width: none !important;
        /* 18px below: the gap WooCommerce leaves under each checkout step at
         * these widths (measured 18px at 390-768px, 20px near 1000px). At 0 the
         * "Opcje płatności" heading sat directly on the summary's hairline. */
        margin: 0 0 18px !important;
        padding: 0 !important;
    }
    body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block { display: block !important; }
}
/* In the form the summary is part of the flow. WooCommerce keeps it sticky (class
   is-sticky, top 24px) whenever the checkout is 700px wide or more, so between 700 and
   1023px it floated over the payment options while scrolling (owner, 2026-10-24). */
body .folia-checkout .wc-block-checkout__form > .wc-block-checkout__sidebar { position: static !important; top: auto !important; }

/*
 * Pickup location card layout (2026-06-26). WooCommerce stacks the pin icon and
 * the address on separate lines (the SVG renders display:block), so the address
 * sat below the icon. Lay the description out as a flex row instead — pin icon to
 * the left, address to its right — and nudge it 10px so the pin centres directly
 * under the radio dot above it (and the address lines up under the "Folia
 * Flowers" label). The address is turned into a Google-Maps link by
 * folia_link_pickup_address_to_maps() (functions.php); style it as an underlined
 * link inheriting the muted description colour.
 */
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__description {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 8px !important;
    padding-left: 10px !important;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__description > svg {
    display: block !important;
    flex: 0 0 auto !important;
    margin: 0 !important;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__description a.folia-pickup-maplink {
    color: inherit !important;
    text-decoration: underline !important;
    text-underline-offset: 2px !important;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__description a.folia-pickup-maplink:hover {
    color: #1e1e1e !important;
}

/* Footer breathing room (mobile) — the footer logo overlaps upward into the
   space above the black band, so the last carousel's arrows can get crowded.
   A small shared gap above the footer, plus extra padding under the
   related-products carousel (product pages), whose section has none of its own. */
@media (max-width: 1023px) {
    body .folia-site-footer {
        margin-top: 24px;
    }
    body .folia-block-related-products {
        padding-bottom: 48px;
    }
}

/* Subcategory tiles — description shown as a hover overlay (desktop) or via the
   info dot on tap (touch devices). The image dims and the centred description
   fades in; the open-pill stays clickable on top. */
.folia-subcat-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px 22px;
    background: rgba(20, 20, 20, 0.62);
    color: #fff;
    text-align: center;
    font-size: 15px;
    line-height: 1.5;
    opacity: 0;
    transition: opacity 0.28s ease;
    pointer-events: none;
}
@media (min-width: 1280px) {
    .folia-subcat-overlay { font-size: 16px; }
}
.folia-subcat-overlay.is-open { opacity: 1; }
.folia-subcat-info {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 0;
    border-radius: 9999px;
    background: rgba(255, 255, 255, 0.92);
    color: #1e1e1e;
    font: italic 700 16px/1 Georgia, "Times New Roman", serif;
    cursor: pointer;
}
/* Hover-capable (desktop): reveal the overlay on hover; the info dot is only
   for touch, so hide it here. Must come AFTER the base rules to win. */
@media (hover: hover) {
    .folia-products-card:hover .folia-subcat-overlay { opacity: 1; }
    .folia-subcat-info { display: none; }
}

/* Product-tile image. Renders identically to the old `bg-cover bg-center`, but as
   a real <img> so the preload scanner can discover the LCP image in the raw HTML.
   Not Tailwind: `object-center` is absent from the precompiled build.
   !important on the box: woocommerce-layout.css ships `.woocommerce img{height:auto}`
   (0,1,1) which outranks a lone class and would let the tile grow to its natural
   aspect, overflowing the frame. */
.folia-card-img {
    display: block;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    object-position: center;
}

/* Mobile: keep the header (logo, search, cart, menu) pinned while scrolling so
   the actions stay reachable. The header block sits inside the FSE template-part
   wrapper (<header class="wp-block-template-part">); sticky must be applied to
   that wrapper because its parent (.wp-site-blocks) spans the whole page, giving
   sticky room to travel. Desktop header is left as-is. */
@media (max-width: 1023px) {
    body header.wp-block-template-part {
        position: sticky;
        top: 0;
        z-index: 50;
    }
}

/* Phones and tablets (below 1024px; owner, 2026-11-05, variant A): a small round
   logo at the left of the slim bar; search, favourites, cart and the menu stay on
   the right. NOTHING MOVES WHILE SCROLLING: the bar, the logo and the icons are the
   same at the top of the page and scrolled, and nothing depends on a scroll class.
   (The big 180px logo that hung below the bar and collapsed on scroll jerked and,
   when it animated its size, looped on phones.) The bar keeps its height (72px,
   80px from 768px: the 48px cart button plus the inner padding) and the page
   starts right under it: no room is kept for a hanging logo. Computers keep the
   big centred logo. */
@media (max-width: 1023px) {
    body .folia-site-header {
        margin-bottom: 0;
    }
    /* The shop's pages (catalog, search, product, cart, checkout) opened with more
       room under the hanging logo: a 25px spacer, the main column's 32px top
       padding (40px from 768px) and the catalog's own. Without it their first line
       (the breadcrumbs, the cart's heading row) starts one block gap under the bar,
       like the rest of the page body. */
    body .wp-block-spacer:first-child:has(+ .folia-main-column) {
        display: none;
    }
    body .folia-main-column.pt-8 {
        padding-top: 0;
    }
    body section.folia-block-catalog {
        padding-top: 0;
    }
    /* Pages with their own top padding, which also cleared the hanging logo (owner,
       2026-11-05: «Fix that»): their title starts 32px into the page body (40px from
       768px), about as far under the bar as the cart's heading. FAQ and «Dla firm»
       (templates page-faq.html / page-b2b.html, inline clamp(7rem,13vw,12rem)), the
       shop landing pages (inline clamp(3rem,7vw,7rem)), «Dostawa», «Ulubione», and the
       order-received and search pages (their clamp(5rem,9vw,6.5rem) rules below).
       «O nas» (the about-new___{lang} parts: the column's inline clamp(4.5rem,8vw,
       6.5rem) plus the first section's spacing-50 top margin) gets the same 32px as
       that section's margin; «Dla firm» uses the same intro block without that column
       padding, so the rule keys on it. !important beats the inline styles. */
    body main.wp-block-group[style*="padding-top:clamp(7rem"],
    body main.folia-landing,
    body .folia-delivery,
    body .folia-favorites-page,
    body.woocommerce-order-received main.wp-block-group,
    body.search main.wp-block-group {
        padding-top: 32px !important;
    }
    body .folia-main-column[style*="4.5rem"] {
        padding-top: 0 !important;
    }
    body .folia-main-column[style*="4.5rem"] > .folia-block-about-intro:first-child {
        margin-top: 32px !important;
    }
    /* A 44px circle in the flow of the bar, centred in it (14px from the top of the
       72px bar, 18px in the 80px one) and at the left in the header's own side
       padding (16px, 24px from 768px), the gutter the menu button keeps on the
       right. Its box beats input.css's var(--folia-header-logo) (180px); the image
       fills it instead of the 120px the site-logo block's width attribute gives. */
    body .folia-site-header .folia-header-center {
        width: 44px !important;
        height: 44px !important;
        margin: 0 !important;
        align-self: center;
    }
    body .folia-site-header .folia-header-center .wp-block-site-logo,
    body .folia-site-header .folia-header-center .custom-logo-link,
    body .folia-site-header .folia-header-center img {
        display: block;
        width: 100% !important;
        height: 100% !important;
        max-width: none;
    }
    body .folia-site-header .folia-header-center img {
        object-fit: contain;
    }
    /* The bar spreads its three groups apart (justify-between): with the small logo
       the icons would drift to the middle, so they keep to the right, next to the
       menu button. */
    body .folia-site-header .folia-header-right {
        margin-left: auto;
    }
    /* Put the menu close (X, 24px) on the hamburger's exact spot, so the button
       stays in place when toggling the menu: centred on the hamburger's centre, half
       the bar down and the side padding plus 2px in (the hamburger is 28px). */
    .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
        position: fixed;
        top: 24px;
        right: 18px;
        left: auto;
    }
}
@media (min-width: 768px) and (max-width: 1023px) {
    .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
        top: 28px;
        right: 26px;
    }
    body main.wp-block-group[style*="padding-top:clamp(7rem"],
    body main.folia-landing,
    body .folia-delivery,
    body .folia-favorites-page,
    body.woocommerce-order-received main.wp-block-group,
    body.search main.wp-block-group {
        padding-top: 40px !important;
    }
    body .folia-main-column[style*="4.5rem"] > .folia-block-about-intro:first-child {
        margin-top: 40px !important;
    }
}

/* Hero: two side-by-side images get cramped on small screens — below 768px show
   only ONE image, full width. Left by default; an inline script flips to the
   right at random per load by adding .folia-hero-show-right. */
@media (max-width: 767px) {
    body .folia-hero-images {
        grid-template-columns: 1fr;
    }
    body .folia-hero-images > div:nth-child(2) {
        display: none;
    }
    body .folia-hero-images.folia-hero-show-right > div:nth-child(1) {
        display: none;
    }
    body .folia-hero-images.folia-hero-show-right > div:nth-child(2) {
        display: block;
    }
}

/* Add-to-cart "fly to cart": a circular product thumbnail arcs up to the header
   cart icon (folia-add-to-cart-anim.js), then the cart icon bumps. */
.folia-fly2cart {
    position: fixed;
    z-index: 99999;
    border-radius: 9999px;
    background-size: cover;
    background-position: center;
    pointer-events: none;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.28);
    will-change: transform, opacity;
}
@keyframes folia-cart-bump {
    0%, 100% { transform: scale(1); }
    30% { transform: scale(1.22); }
    55% { transform: scale(0.9); }
    75% { transform: scale(1.06); }
}
.folia-cart-bump {
    animation: folia-cart-bump 0.55s ease;
    transform-origin: center;
}

/* Likes / favourites (folia-likes.js) — guest wishlist stored in localStorage.
   Heart on each product card (top-right, clear of the "New" badge + bag), on the
   product page next to the title, and a header heart that opens a drawer. */
.folia-like-btn {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    padding: 0;
    border: 0;
    border-radius: 9999px;
    background: rgba(255, 255, 255, 0.9);
    color: #1e1e1e;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    -webkit-tap-highlight-color: transparent;
}
.folia-like-btn svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.folia-like-btn:hover { background: #fff; }
.folia-like-btn.is-liked { color: #e23744; }
.folia-like-btn.is-liked svg { fill: #e23744; stroke: #e23744; }
@keyframes folia-like-pop {
    0%, 100% { transform: scale(1); }
    40% { transform: scale(1.32); }
    70% { transform: scale(0.9); }
}
.folia-like-pop { animation: folia-like-pop 0.4s ease; }

.folia-like-title { display: inline-flex; vertical-align: middle; margin-left: 12px; }
.folia-like-btn--inline { position: static; width: 44px; height: 44px; background: #f3f3f3; }
.folia-like-btn--inline svg { width: 24px; height: 24px; }

.folia-likes-trigger {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    background: transparent;
    color: #1e1e1e;
    cursor: pointer;
    line-height: 0;
}
.folia-likes-trigger svg { width: 28px; height: 28px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.folia-likes-count {
    position: absolute;
    top: -6px;
    right: -8px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 9999px;
    background: #e23744;
    color: #fff;
    font-size: 11px;
    line-height: 16px;
    font-weight: 600;
    text-align: center;
}

.folia-likes-overlay {
    position: fixed;
    inset: 0;
    z-index: 100000;
    background: rgba(0, 0, 0, 0.4);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}
.folia-likes-overlay.is-open { opacity: 1; visibility: visible; }
.folia-likes-drawer {
    position: fixed;
    top: 0;
    bottom: 0;
    right: 0;
    z-index: 100001;
    width: min(380px, 88vw);
    height: 100vh;
    height: 100dvh; /* track the dynamic viewport so the mobile toolbar can't leave a gap */
    background: #fff;
    box-shadow: -8px 0 30px rgba(0, 0, 0, 0.18);
    transform: translateX(100%);
    transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.folia-likes-drawer.is-open { transform: translateX(0); }
.folia-likes-drawer__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 14px 18px 22px;
    border-bottom: 1px solid var(--folia-line);
    font-size: 20px;
}
.folia-likes-drawer__title { display: inline-flex; align-items: center; gap: 10px; }
.folia-likes-drawer__count:not(:empty) {
    min-width: 24px;
    height: 24px;
    padding: 0 7px;
    border-radius: 999px;
    background: var(--folia-soft);
    color: var(--folia-text);
    font-size: 13px;
    line-height: 24px;
    text-align: center;
}
.folia-likes-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    font-size: 28px;
    line-height: 1;
    cursor: pointer;
    color: var(--folia-ink);
}
.folia-likes-list { flex: 1; overflow-y: auto; padding: 6px 22px; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }
.folia-likes-empty { color: var(--folia-muted); padding: 24px 4px; text-align: center; }
.folia-likes-item { display: flex; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--folia-line); }
.folia-likes-item:last-child { border-bottom: 0; }
.folia-likes-item__img {
    flex: 0 0 84px;
    width: 84px;
    height: 84px;
    border-radius: var(--folia-r-field);
    background-size: cover;
    background-position: center;
    background-color: var(--folia-soft);
}
.folia-likes-item__body { display: flex; flex: 1; flex-direction: column; gap: 4px; min-width: 0; }
.folia-likes-item__title { color: var(--folia-ink); text-decoration: none; font-size: 16px; line-height: 1.3; }
.folia-likes-item__price { font-size: 15px; font-weight: 600; color: var(--folia-ink); }
.folia-likes-item__price del { margin-right: 6px; font-weight: 400; color: var(--folia-muted); }
.folia-likes-item__price ins { text-decoration: none; }
.folia-likes-item__actions { display: flex; align-items: center; gap: 16px; margin-top: 6px; flex-wrap: wrap; }
.folia-likes-item__cart {
    height: 38px;
    padding: 0 16px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: var(--folia-ink);
    color: #fff;
    font-size: 14px;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}
.folia-likes-item__cart.is-options { background: #fff; color: var(--folia-ink); }
.folia-likes-item__remove {
    min-height: 38px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--folia-muted);
    font-size: 14px;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}
@media (hover: hover) {
    .folia-likes-close:hover { background: var(--folia-soft); }
    .folia-likes-item__title:hover { text-decoration: underline; }
    .folia-likes-item__cart:hover { background: #000; }
    .folia-likes-item__cart.is-options:hover { background: var(--folia-soft); }
    .folia-likes-item__remove:hover { color: var(--folia-error); }
}
.folia-likes-drawer__foot { padding: 14px 22px calc(14px + env(safe-area-inset-bottom)); border-top: 1px solid var(--folia-line); }
.folia-likes-drawer__foot[hidden] { display: none; }
.folia-likes-all {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 48px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-card);
    color: var(--folia-ink);
    font-size: 15px;
    text-decoration: none;
}
@media (hover: hover) {
    .folia-likes-all:hover { background: var(--folia-soft); }
}

/* favourites count on the nav menu link */
.folia-fav-menu-count {
    display: inline-block;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    margin-left: 4px;
    border-radius: 9999px;
    background: #e23744;
    color: #fff;
    font-size: 11px;
    line-height: 18px;
    text-align: center;
    vertical-align: middle;
}

/* dedicated favourites page (.folia-favorites-page rendered by folia-likes.js) */
/* Generous top padding so the title clears the header logo (which overflows the
   header box), and bottom padding so the grid doesn't run into the footer. */
.folia-favorites-page { width: 100%; max-width: 1920px; margin: 0 auto; padding: 72px 16px 84px; }
@media (min-width: 768px) { .folia-favorites-page { padding: 96px 50px 100px; } }

/* Empty mini-cart: space between the "cart is empty" message and Start shopping. */
.wc-block-mini-cart__empty-cart-wrapper .wp-block-button { margin-top: 20px; }

/* Empty mini-cart → suggested bouquets (folia-empty-cart.js). */
.folia-empty-suggest { width: 100%; margin-top: 28px; padding-top: 22px; border-top: 1px solid #ececec; text-align: left; }
.folia-empty-suggest__head { font-size: 13px; text-transform: uppercase; letter-spacing: 0.06em; color: #6b6b6b; text-align: center; margin-bottom: 16px; }
.folia-empty-suggest__item { display: flex; gap: 14px; align-items: center; padding: 10px 0; border-bottom: 1px solid #f4f4f4; }
.folia-empty-suggest__item:last-child { border-bottom: 0; }
.folia-empty-suggest__img { flex: 0 0 60px; width: 60px; height: 60px; background-size: cover; background-position: center; background-color: #f3f3f3; }
.folia-empty-suggest__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.folia-empty-suggest__title { color: #1e1e1e; text-decoration: none; font-size: 14px; line-height: 1.3; }
.folia-empty-suggest__title:hover { text-decoration: underline; }
.folia-empty-suggest__price { font-size: 13px; color: #1e1e1e; }
.folia-empty-suggest__price del { color: #71717a; margin-right: 4px; }
.folia-empty-suggest__price ins { text-decoration: none; }
.folia-empty-suggest__btn { align-self: flex-start; margin-top: 6px; border: 1px solid #1e1e1e; background: #fff; color: #1e1e1e; font-size: 12px; padding: 5px 12px; cursor: pointer; transition: background 0.2s ease, color 0.2s ease; }
.folia-empty-suggest__btn:hover { background: #1e1e1e; color: #fff; }
.folia-empty-suggest__btn:disabled { opacity: 0.5; cursor: default; }
/* On the (wide) favourites page, keep the empty-state suggestions in a tidy
   centred column, with extra space below so the footer logo (which overflows
   upward) doesn't crowd the last suggestion. */
.folia-favorites-page .folia-empty-suggest { max-width: 460px; margin: 0 auto 36px; }

/* Product page: linked categories below the add-to-cart. */
.folia-product-cats { font-size: 14px; color: #6b6b6b; }
.folia-product-cats__label { color: #1e1e1e; margin-right: 4px; }
.folia-product-cats a { color: #1e1e1e; text-decoration: underline; }
.folia-product-cats a:hover { opacity: 0.7; }

/* Delivery page (folia-delivery.js) — rules + postcode → price checker. */
body.folia-delivery-body .folia-canvas { visibility: hidden; }
body.folia-delivery-body .folia-canvas .folia-delivery { visibility: visible; }
.folia-delivery { width: 100%; max-width: 760px; margin: 0 auto; padding: 72px 16px 84px; }
@media (min-width: 768px) { .folia-delivery { padding: 96px 24px 100px; } }
.folia-delivery__title { font-size: clamp(28px, 4vw, 48px); font-weight: 400; color: #1e1e1e; margin: 0 0 16px; }
.folia-delivery__intro { color: #4a4a4a; font-size: clamp(15px, 1.6vw, 18px); line-height: 1.6; margin: 0 0 36px; }
.folia-delivery__h2 { font-size: clamp(18px, 2vw, 22px); font-weight: 600; color: #1e1e1e; margin: 0 0 16px; }
.folia-delivery__zones { margin-bottom: 44px; }
.folia-delivery__zone { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid #ececec; }
.folia-delivery__zone span { color: #1e1e1e; font-size: clamp(15px, 1.6vw, 17px); }
.folia-delivery__zone b { color: #1e1e1e; font-weight: 700; white-space: nowrap; }
.folia-delivery__zone i { color: #9a6a3a; font-style: normal; font-size: 14px; text-align: right; }
.folia-delivery__form { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.folia-delivery__input { flex: 1; min-width: 160px; height: 52px; border: 1px solid #cfcfcf; padding: 0 16px; font-size: 16px; color: #1e1e1e; background: #fff; }
.folia-delivery__input:focus { outline: none; border-color: #1e1e1e; }
.folia-delivery__btn { height: 52px; padding: 0 28px; border: 0; background: #1e1e1e; color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; transition: background 0.2s ease; }
.folia-delivery__btn:hover { background: #000; }
.folia-delivery__result { font-size: 16px; line-height: 1.5; padding: 14px 16px; }
.folia-delivery__result.is-ok { background: #eef6ee; color: #1f6b2e; }
.folia-delivery__result.is-none { background: #fdf0ed; color: #a23b22; }
.folia-delivery__result.is-invalid { background: #f3f3f3; color: #6b6b6b; }
.folia-delivery__tel { color: inherit; text-decoration: underline; white-space: nowrap; font-weight: 600; }
.folia-delivery__tel:hover { opacity: 0.75; }
.folia-delivery__block { margin-bottom: 40px; }
.folia-delivery__text { color: #4a4a4a; font-size: clamp(15px, 1.6vw, 17px); line-height: 1.7; margin: 0; }
.folia-delivery__text .folia-delivery__tel { color: #1e1e1e; }

/* Address → Google Maps links (footer, regulamin, FAQ, delivery, etc.). Inherit
   the surrounding colour so it reads correctly on the dark footer and on pages. */
.folia-addr-link { color: inherit; text-decoration: underline; }
.folia-addr-link:hover { opacity: 0.75; }

/* Order-received ("thank you") page: it's a WooCommerce block page, so it doesn't
   get the top padding the FSE pages have — the centered round logo overhangs into
   the page top and covers the heading. Give the content room to clear the logo. */
body.woocommerce-order-received main.wp-block-group {
    padding-top: clamp(5rem, 9vw, 6.5rem);
}

/* Search results page: same problem — the search template's <main> has no top
   padding, so the centered header logo (a 180px circle that overflows the short
   header box) overhangs and covers the "Search results" heading (core query-title
   block). Give the content room to clear the logo. Scoped to body.search so the
   shop/catalog archive — which shares the woocommerce-shop / post-type-archive-product
   classes but already has its own clearance — is left untouched. */
body.search main.wp-block-group {
    padding-top: clamp(5rem, 9vw, 6.5rem);
}

/* Cookie Notice (GDPR plugin) — folia black/white, as a compact floating card in
   the bottom-left corner (not a full-width bar pinned to the edge). */
body #cookie-notice {
    left: 50% !important;
    right: auto !important;
    bottom: 20px !important;
    top: auto !important;
    transform: translateX(-50%) !important;
    width: calc(100% - 40px) !important;
    max-width: 420px !important;
    min-width: 0 !important;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 3px;
    box-shadow: 0 14px 44px rgba(0, 0, 0, 0.4);
}
/* `!important` is required here, and specificity alone will not do it: the
   plugin prints an INLINE <style> containing
     @media (min-width: 600px) { #cookie-notice .cookie-notice-container { display: flex } }
   Inline styles are the last stylesheet in the document, so at equal
   specificity it won this card's `display: block` on every desktop viewport.
   The result was a row-flex layout inside a 380px box: the message column
   collapsed to 73px (one word per line) and the button row overflowed its own
   parent, pushing "Polityka prywatności" outside the black card. Mobile was
   unaffected, which is why this only ever looked broken on desktop. */
#cookie-notice .cookie-notice-container {
    padding: 15px 17px;
    display: block !important;
    text-align: center; /* centers the buttons */
}
/* Same story for the button row — the plugin flexes it at >=600px too. */
#cookie-notice #cn-notice-buttons {
    display: block !important;
    margin-top: 4px;
}
#cookie-notice #cn-notice-text {
    display: block;
    font-size: 12.5px;
    line-height: 1.5;
    color: #e7e7e7;
    margin-bottom: 12px;
    text-align: left; /* keep the longer message readable */
}
#cookie-notice .cn-close-icon { display: none; } /* explicit Accept/Reject instead of a dismiss X */
#cookie-notice .cn-button {
    display: inline-block; font-size: 11.5px; font-weight: 600; letter-spacing: 0.05em;
    text-transform: uppercase; line-height: 1; padding: 9px 18px; margin: 4px 5px 0;
    border-radius: 0; transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
/* The privacy-policy link is a .cn-button too, but it is a text link, not a
   third button — keep it on its own line under the two real actions. */
#cookie-notice .cn-more-info {
    display: block;
    margin-top: 10px;
    font-size: 11.5px;
}
#cookie-notice #cn-accept-cookie { background: #ffffff !important; color: #1e1e1e !important; border: 1px solid #ffffff !important; }
#cookie-notice #cn-accept-cookie:hover { background: #e7e7e7 !important; border-color: #e7e7e7 !important; }
#cookie-notice #cn-refuse-cookie { background: transparent !important; color: #ffffff !important; border: 1px solid rgba(255, 255, 255, 0.45) !important; }
#cookie-notice #cn-refuse-cookie:hover { background: rgba(255, 255, 255, 0.08) !important; border-color: #ffffff !important; }
/* The bottom-centred language switcher in the open mobile menu lives in the header
   (its own stacking context), so the cookie card would cover it. Hide the card
   while the menu is open — it returns as soon as the menu closes. */
html.has-modal-open #cookie-notice { display: none !important; }
/* After Accept/Reject the plugin keeps #cookie-notice in the DOM (collapsed to ~2px
   for an optional revoke bar we don't use), and our border/bg showed it as a thin
   line. Hide it fully once consent is given. */
body #cookie-notice.cookie-notice-hidden { display: none !important; }

/* Gift-card message field on the checkout (folia-gift-card.js). */
.folia-gift-field { margin-top: 18px; }
.folia-gift-field__label { display: block; font-size: 14px; color: #1e1e1e; margin-bottom: 6px; }
.folia-gift-field__input { width: 100%; min-height: 110px; padding: 14px; border: 1px solid #e5e5e5; border-radius: 0; font: inherit; font-size: 16px; line-height: 1.55; resize: vertical; background: #fff; color: #2b2d2f; box-sizing: border-box; }
.folia-gift-field__input::placeholder { color: #9a9a9a; }
.folia-gift-field__input:focus { outline: none; border-color: #1e1e1e; box-shadow: none; }
/* Gift + photo checkboxes reuse WooCommerce's checkbox markup so they match the
   order-note checkbox exactly; just space them within our wrapper. */
.folia-extras > .wc-block-components-checkbox { margin-top: 16px; }
.folia-gift-field .folia-gift-field__input { margin-top: 12px; }
/* Sender contact methods — "+" adds a row of [type ▾] [value] [×].
   The WC contact step is ~404px wide on a 390 viewport (it overflows, clipped by
   .folia-canvas); cap our row to the visible width so the × never gets cut off. */
.folia-contact { margin-top: 22px; max-width: calc( 100vw - 32px ); box-sizing: border-box; }
.folia-contact__heading { font-size: 15px; color: #1e1e1e; margin-bottom: 10px; }
.folia-contact__row { display: flex; gap: 8px; margin-top: 8px; }
.folia-contact__type { flex: 0 0 138px; height: 52px; padding: 0 30px 0 12px; border: 1px solid #e5e5e5; border-radius: 0; font: inherit; font-size: 15px; color: #1e1e1e; cursor: pointer; -webkit-appearance: none; appearance: none; background-color: #fff; background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='8'%20viewBox='0%200%2012%208'%20fill='none'%20stroke='%231e1e1e'%20stroke-width='1.5'%3E%3Cpath%20d='M1%201.5L6%206.5L11%201.5'/%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 12px center !important; background-size: 12px 8px !important; }
.folia-contact__input { flex: 1 1 auto; min-width: 0; height: 52px; padding: 0 12px; border: 1px solid #e5e5e5; border-radius: 0; font: inherit; font-size: 16px; background: #fff; color: #2b2d2f; box-sizing: border-box; }
.folia-contact__input::placeholder { color: #9a9a9a; }
.folia-contact__input:focus, .folia-contact__type:focus { outline: none; border-color: #1e1e1e; box-shadow: none; }
.folia-contact__remove { flex: 0 0 52px; height: 52px; border: 1px solid #e5e5e5; border-radius: 0; background: #fff; color: #777; font-size: 22px; line-height: 1; cursor: pointer; transition: border-color .15s ease, color .15s ease; }
.folia-contact__remove:hover { border-color: #1e1e1e; color: #1e1e1e; }
.folia-contact__add { display: inline-flex; align-items: center; margin-top: 12px; height: 48px; padding: 0 22px; background: #fff; border: 1px solid #1e1e1e; border-radius: 0; font: inherit; font-size: 13px; font-weight: 300; letter-spacing: 0.06em; text-transform: uppercase; color: #1e1e1e; cursor: pointer; transition: background .15s ease, color .15s ease; }
.folia-contact__add:hover { background: #1e1e1e; color: #fff; }
/* Place our extras above the order note, so the note ends up last in the section. */
.wc-block-checkout__order-notes .wc-block-components-checkout-step__content { display: flex; flex-direction: column; }
.wc-block-checkout__order-notes .wc-block-components-checkout-step__content > .folia-extras { order: -1; }
.wc-block-checkout__order-notes .wc-block-components-checkout-step__content > .wc-block-checkout__add-note { margin-top: 22px; }

/* Language switcher moved into the open mobile menu (folia-menu-lang.js) — flows
   after the items instead of floating fixed + overlapping them in landscape. */
.folia-menu-lang { display: flex; justify-content: center; padding: 30px 16px 34px; }
.folia-menu-lang .pll-switcher-select {
    position: static !important;
    transform: none !important;
    bottom: auto !important;
    left: auto !important;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    width: auto;
    font-family: inherit;
    font-size: 17px;
    color: #1e1e1e;
    background-color: transparent;
    border: 0;
    border-radius: 0;
    padding: 4px 22px 4px 2px;
    text-align: center;
    text-align-last: center;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%231e1e1e' stroke-width='1.5' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1px center;
    background-size: 11px;
}
.folia-menu-lang .pll-switcher-select:focus { outline: none; }
.folia-fav-page__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; margin-bottom: 28px; }
.folia-fav-page__title { margin: 0; font-size: clamp(32px, 4vw, 48px); font-weight: 300; color: var(--folia-ink); }
.folia-fav-page__count { margin: 0; font-size: 16px; color: var(--folia-muted); }
.folia-fav-grid { display: grid; gap: 28px 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 768px) { .folia-fav-grid { gap: 36px 24px; grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .folia-fav-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.folia-fav-card { display: flex; flex-direction: column; min-width: 0; }
.folia-fav-card__media { position: relative; width: 100%; aspect-ratio: 440 / 413; border-radius: var(--folia-r-card); overflow: hidden; background: var(--folia-soft); }
.folia-fav-card__img { position: absolute; inset: 0; background-size: cover; background-position: center; background-color: var(--folia-soft); transition: transform .4s ease; }
.folia-fav-card__title { margin-top: 14px; color: var(--folia-ink); text-decoration: none; font-size: clamp(16px, 1.6vw, 20px); line-height: 1.3; }
.folia-fav-card__price { margin-top: 6px; font-size: clamp(15px, 1.4vw, 18px); font-weight: 600; color: var(--folia-ink); }
.folia-fav-card__price del { margin-right: 6px; font-weight: 400; color: var(--folia-muted); }
.folia-fav-card__price ins { text-decoration: none; }
.folia-fav-card__cart {
    width: 100%;
    height: 44px;
    margin-top: auto;
    padding: 0 12px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: var(--folia-ink);
    color: #fff;
    font-size: 15px;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}
/* The buttons share one line across a row, however long the names: the button is pushed
   to the card's foot, and whatever comes before it keeps 14px clear of it. */
.folia-fav-card > :nth-last-child(2) { margin-bottom: 14px; }
.folia-fav-card__cart.is-options { background: #fff; color: var(--folia-ink); }
/* The buttons' words at 500, as the catalog's (inside .folia-canvas Tailwind's base layer wins,
   so the page's button is also set in the reopened @layer base below). */
.folia-fav-card__cart,
.folia-likes-item__cart,
.folia-likes-all { font-weight: 500 !important; }
@media (hover: hover) {
    .folia-fav-card:hover .folia-fav-card__img { transform: scale(1.03); }
    .folia-fav-card__title:hover { text-decoration: underline; }
    .folia-fav-card__cart:hover { background: #000; }
    .folia-fav-card__cart.is-options:hover { background: var(--folia-soft); }
}
/* On the favourites pages, hide the server-rendered placeholder content until
   folia-likes.js takes over .folia-canvas and renders the grid (no flash). */
body.folia-fav-body .folia-canvas { visibility: hidden; }
body.folia-fav-body .folia-canvas .folia-favorites-page { visibility: visible; }

/* Favourites heart in the header. The phone moved to the floating button, which
   freed room — but the row (heart + search + cart + menu button) is still tight on
   a phone, so tighten the action-row gap to fit. On the narrowest phones (<380px)
   there genuinely isn't room, so the heart falls back to the menu there (the
   "Ulubione" nav link, which carries the same count). */
@media (max-width: 1023px) {
    /* 18px between the 28px slots: the drawn gaps (search→heart→cart) then equal the
       cart→menu one, which the bar's 16px group gap and the glyphs' insets make 24px. */
    body .folia-header-right { gap: 18px !important; }
    /* The mini-cart button ships with 9px side padding, which made the heart→cart
       gap read ~9px wider than the others. Trim it to a 28px slot, the 32px glyph
       box centred in it (the glyph itself is 21px). */
    body .folia-header-right .wc-block-mini-cart__button { padding-left: 0 !important; padding-right: 0 !important; width: 28px; min-width: 28px; justify-content: center; overflow: visible; }
}
/* Desktop split navigation (folia-header-nav.js moves the 2nd half of the links to the
   right of the logo). The header becomes a 3-column grid: nav | reserved-logo | nav+icons.
   The middle column reserves space for the absolutely-centered logo, and because the two
   1fr columns are equal the logo stays page-centred at any width.
   Only >=1280px: below that the core Navigation block collapses to a hamburger itself. */
@keyframes folia-nav-reveal { to { opacity: 1; } }
@media (min-width: 1280px) {
    .folia-site-header .folia-site-header__inner {
        display: grid;
        grid-template-columns: 1fr 190px 1fr;
        align-items: center;
    }
    .folia-site-header .folia-header-left { grid-column: 1; justify-content: flex-start; min-width: 0; }
    .folia-site-header .folia-header-right { grid-column: 3; min-width: 0; }
    /* keep each link on one line (otherwise tight columns wrap e.g. "O nas" → "O / nas") */
    .folia-site-header .folia-header-left .wp-block-navigation-item { white-space: nowrap; }

    /* Cloak the desktop nav until folia-header-nav.js has assembled it (grouped the links +
       absorbed the injected favourites/delivery), so the page doesn't show a visible rebuild.
       The animation is a fallback that reveals it even if the JS never runs. */
    .folia-site-header .folia-header-left .wp-block-navigation__container {
        opacity: 0;
        animation: folia-nav-reveal 1ms linear 2.5s forwards;
    }
    .folia-nav-ready .folia-site-header .folia-header-left .wp-block-navigation__container {
        opacity: 1; animation: none; transition: opacity .22s ease;
    }

    /* "About" dropdown — groups About us / Contacts / FAQ / Delivery on the LEFT (folia-header-nav.js) */
    .folia-nav-hidden { display: none !important; }
    /* No caret — like lacybird.ru, the parent just opens the panel on hover/focus. */
    .folia-about-parent { position: relative; }
    .folia-about-trigger { cursor: pointer; text-decoration: none; color: inherit; }
    .folia-about-dropdown {
        position: absolute; top: 100%; left: 0;
        margin: 0; padding: 16px 0; list-style: none; min-width: 250px;
        background: #f4f4f4; border: 0; box-shadow: 0 18px 34px rgba(0, 0, 0, 0.06);
        display: flex; flex-direction: column;
        opacity: 0; visibility: hidden; transform: translateY(6px);
        transition: opacity .18s ease, transform .18s ease, visibility .18s; z-index: 1000;
    }
    .folia-about-parent:hover .folia-about-dropdown,
    .folia-about-parent:focus-within .folia-about-dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
    /* WP nav <li>/<a> shrink-wrap to the text — force full-width rows so the hover state
       and the click target span the whole row. */
    .folia-about-dropdown > li { display: block !important; margin: 0; white-space: nowrap; }
    .folia-about-dropdown a {
        display: block !important; width: 100%; box-sizing: border-box;
        padding: 12px 28px; font-size: 1rem; font-weight: 400; text-decoration: none;
        color: #3a3a3a; transition: color .15s ease, background .15s ease;
    }
    .folia-about-dropdown a:hover { background: #fff; color: #000; }
    /* responsive link spacing */
    .folia-site-header .folia-header-left ul { column-gap: clamp(18px, 2vw, 40px); }
}

@media (max-width: 379px) {
    .folia-likes-trigger { display: none; }
}

/* Phone moved out of the header to the floating contact button below (phones and
   tablets). This uncrowds the header row and keeps calling reachable while scrolling. */
.folia-phone-call { display: none !important; }
/* The contact button (inc/folia-contact-fab.php): one round button where the call button was,
   bottom left on phones and tablets, bottom right on computers; a tap opens a card above it with
   the ways to reach the shop, each in its own colour so it is known at a glance. Not printed on
   the checkout at all. */
.folia-contact-fab {
    position: fixed;
    left: 16px;
    bottom: calc(20px + env(safe-area-inset-bottom, 0px));
    z-index: 45;
}
.folia-contact-fab__toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    padding: 0;
    border: 0;
    border-radius: 9999px;
    background: #1e1e1e;
    color: #fff;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.28);
    cursor: pointer;
    transition: transform 0.15s ease, background 0.2s ease;
}
.folia-contact-fab__toggle:hover { background: #000; }
.folia-contact-fab__toggle:active { transform: scale(0.92); }
.folia-contact-fab__toggle:focus-visible { outline: 2px solid #1e1e1e; outline-offset: 3px; }
.folia-contact-fab__toggle svg { display: block; width: 26px; height: 26px; }
.folia-contact-fab__close,
.folia-contact-fab.is-open .folia-contact-fab__open { display: none; }
.folia-contact-fab.is-open .folia-contact-fab__close { display: block; }
.folia-contact-fab__list {
    position: absolute;
    left: 0;
    bottom: 66px;
    width: min(300px, calc(100vw - 32px));
    margin: 0;
    padding: 6px;
    list-style: none;
    background: #fff;
    border: 1px solid var(--folia-line);
    border-radius: var(--folia-r-panel);
    box-shadow: 0 14px 44px rgba(0, 0, 0, 0.18);
}
.folia-contact-fab__list[hidden] { display: none; }
.folia-contact-fab__title { padding: 8px 10px 4px; font-size: 13px; color: var(--folia-muted); }
.folia-contact-fab__link {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 52px;
    padding: 6px 10px;
    border-radius: var(--folia-r-field);
    color: #1e1e1e;
    text-decoration: none;
}
.folia-contact-fab__link:hover,
.folia-contact-fab__link:focus-visible { background: var(--folia-soft); color: #1e1e1e; outline: none; }
.folia-contact-fab__icon {
    flex: none;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 9999px;
    color: #fff;
}
.folia-contact-fab__icon svg { width: 21px; height: 21px; }
.folia-contact-fab__icon--call { background: #1e1e1e; }
.folia-contact-fab__icon--whatsapp { background: #25d366; }
.folia-contact-fab__icon--telegram { background: #229ed9; }
.folia-contact-fab__icon--instagram { background: linear-gradient(45deg, #f58529, #dd2a7b 55%, #8134af); }
.folia-contact-fab__icon--email { background: #52525b; }
.folia-contact-fab__text { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; }
.folia-contact-fab__label { font-size: 16px; }
.folia-contact-fab__value { font-size: 13px; color: var(--folia-muted); overflow-wrap: anywhere; }
/* "Poproś o telefon" (a button among the links): looks like the links. */
.folia-contact-fab__callback { width: 100%; border: 0; background: transparent; font: inherit; text-align: left; cursor: pointer; }
.folia-contact-fab__icon--callback { background: #0f766e; }
/* Its form takes the card's place (assets/js/folia-contact-fab.js); a tall form scrolls
   inside the card, which never runs past the top of the screen. */
.folia-contact-fab__list { max-height: calc(100dvh - 110px - env(safe-area-inset-bottom, 0px)); overflow-y: auto; overscroll-behavior: contain; }
/* Open, the card sits above the sticky header (z-index 50 on phones and tablets), whose
   logo hid the card's top and the form's first fields (owner's phone, 2026-10-25); still
   under the menu, the mini-cart, the favourites drawer and the consent banner. */
.folia-contact-fab.is-open { z-index: 55; }
.folia-contact-fab.is-form .folia-contact-fab__list > li:not(.folia-contact-fab__form) { display: none; }
/* The form takes the screen's width (up to 420px) and sits tighter than in the page: on
   most phones it fits whole, and from 360x640 up "Poproś o kontakt" shows without
   scrolling the card. */
.folia-contact-fab.is-form .folia-contact-fab__list { width: min(420px, calc(100vw - 32px)); }
.folia-contact-fab__form[hidden] { display: none; }
.folia-contact-fab__form { padding: 6px 6px 4px; }
body .folia-contact-fab__form .folia-callback,
body .folia-contact-fab__form .folia-callback__form { margin-top: 0; }
body .folia-contact-fab__form .folia-callback__form { gap: 8px; padding: 4px; border: 0; }
body .folia-contact-fab__form .folia-callback__group legend { margin-bottom: 6px; }
body .folia-contact-fab__form .folia-callback__chips { gap: 6px; }
body .folia-contact-fab__form .folia-callback__chip span { min-height: 36px; padding: 0 12px; }
body .folia-contact-fab__form .folia-callback__field { gap: 4px; }
body .folia-contact-fab__form .folia-callback__field input,
body .folia-contact-fab__form .folia-callback__send { min-height: 44px; }
body .folia-contact-fab__form .folia-callback__field textarea { min-height: 44px; height: 44px; }
/* Outside .folia-canvas the weights are set here, not in src/input.css. */
.folia-contact-fab .folia-callback__send,
.folia-contact-fab .folia-callback__group legend,
.folia-contact-fab .folia-callback__chip input:checked + span { font-weight: 600; }
.folia-contact-fab .folia-callback__label,
.folia-contact-fab .folia-callback__chip span { font-weight: 500; }
/* Computers (owner, 2026-10-27): the same button in the bottom-right corner, its card opening up from it. */
@media (min-width: 1024px) {
    .folia-contact-fab { left: auto; right: 24px; bottom: calc(24px + env(safe-area-inset-bottom, 0px)); }
    .folia-contact-fab__list { left: auto; right: 0; }
}
/* =========================================================================
 * My Account — login / register / lost-password / reset / dashboard (cabinet).
 * Match the site form language used at checkout: square fields, #e5e5e5 border
 * → #1e1e1e on focus, Gilroy (inherited), flat #1e1e1e buttons. Scoped under the account
 * page's .entry-content — NOT body.woocommerce-account — because the site header is also a
 * .woocommerce form (cart/search), which an unscoped input/button rule would break.
 * ========================================================================= */
.woocommerce-account .entry-content .woocommerce-MyAccount-content,
.woocommerce-account .entry-content .u-columns,
.woocommerce-account .entry-content .woocommerce-ResetPassword { padding-bottom: 56px; }

/* Section + content headings */
.woocommerce-account .entry-content h1,
.woocommerce-account .entry-content .u-column1 > h2,
.woocommerce-account .entry-content .u-column2 > h2,
.woocommerce-account .entry-content .woocommerce-MyAccount-content h1,
.woocommerce-account .entry-content .woocommerce-MyAccount-content h2,
.woocommerce-account .entry-content .woocommerce-MyAccount-content h3 {
    font-weight: 300;
    font-size: clamp(22px, 1.8vw, 28px);
    line-height: 1.2;
    color: #1e1e1e;
    margin: 0 0 22px;
}

/* Two-column login/register (the SSO "Continue with Google" button sits atop the login
   column). WooCommerce floats the columns and adds a clearfix ::before/::after — under
   display:grid those pseudo-elements become stray grid items and scramble the layout, so
   neutralise them and clear the floats. */
.woocommerce-account .entry-content .u-columns.col2-set {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items: start;
    max-width: 920px;
}
.woocommerce-account .entry-content .u-columns.col2-set::before,
.woocommerce-account .entry-content .u-columns.col2-set::after { content: none; display: none; }
.woocommerce-account .entry-content .col2-set .u-column1,
.woocommerce-account .entry-content .col2-set .u-column2 { width: auto; max-width: none; float: none; margin: 0; }
@media (max-width: 760px) {
    .woocommerce-account .entry-content .u-columns.col2-set { grid-template-columns: 1fr; gap: 36px; }
}

/* Forms: drop WooCommerce's default bordered card for a clean column */
.woocommerce-account .entry-content form.woocommerce-form-login,
.woocommerce-account .entry-content form.woocommerce-form-register,
.woocommerce-account .entry-content form.woocommerce-ResetPassword,
.woocommerce-account .entry-content form.lost_reset_password,
.woocommerce-account .entry-content form.edit-account,
.woocommerce-account .entry-content .woocommerce-EditAccountForm {
    border: 0;
    border-radius: 0;
    padding: 0;
    margin: 0;
}

/* Rows + labels */
.woocommerce-account .entry-content form .woocommerce-form-row,
.woocommerce-account .entry-content form .form-row { margin: 0 0 18px; padding: 0; }
.woocommerce-account .entry-content form label,
.woocommerce-account .entry-content form .woocommerce-form-row label {
    display: block;
    font-size: 14px;
    line-height: 1.4;
    color: #1e1e1e;
    margin: 0 0 8px;
}
.woocommerce-account .entry-content form label.woocommerce-form__label-for-checkbox,
.woocommerce-account .entry-content form label.checkbox {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: #555;
    margin: 4px 0 0;
    cursor: pointer;
}
.woocommerce-account .entry-content form .required { color: #1e1e1e; border: 0; }

/* Inputs / selects — the site field style */
.woocommerce-account .entry-content form input[type="text"],
.woocommerce-account .entry-content form input[type="email"],
.woocommerce-account .entry-content form input[type="password"],
.woocommerce-account .entry-content form input[type="tel"],
.woocommerce-account .entry-content form input[type="number"],
.woocommerce-account .entry-content form select {
    width: 100%;
    height: 52px;
    padding: 0 14px;
    /* !important so a prod CSS-combine plugin that reorders stylesheets can't let WC's
       default input style (rounded, tinted border) win over this */
    border: 1px solid #e5e5e5 !important;
    border-radius: 0 !important;
    font: inherit;
    font-size: 16px;
    line-height: normal;
    background: #fff;
    color: #2b2d2f;
    box-sizing: border-box;
    box-shadow: none;
    transition: border-color 0.15s ease;
}
.woocommerce-account .entry-content form input:focus,
.woocommerce-account .entry-content form select:focus {
    outline: none;
    border-color: #1e1e1e !important;
    box-shadow: none;
}
.woocommerce-account .entry-content form input::placeholder { color: #9a9a9a; }

/* Password field + show/hide eye sit on one line */
.woocommerce-account .entry-content .woocommerce-form .password-input,
.woocommerce-account .entry-content .woocommerce-password-strength + .password-input,
.woocommerce-account .entry-content form .password-input { position: relative; display: block; }
.woocommerce-account .entry-content form .password-input input { padding-right: 46px; }
.woocommerce-account .entry-content form .show-password-input {
    position: absolute;
    top: 50%;
    right: 14px;
    transform: translateY(-50%);
    cursor: pointer;
}

/* Buttons — flat #1e1e1e, square, inverts on hover */
.woocommerce-account .entry-content .woocommerce-button,
.woocommerce-account .entry-content button.woocommerce-form-login__submit,
.woocommerce-account .entry-content button.woocommerce-form-register__submit,
.woocommerce-account .entry-content form .button,
.woocommerce-account .entry-content form button[type="submit"],
.woocommerce-account .entry-content .woocommerce-MyAccount-content .button {
    display: inline-block;
    width: auto;
    background: #1e1e1e;
    color: #fff;
    border: 1px solid #1e1e1e;
    border-radius: 0;
    padding: 15px 36px;
    font: inherit;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.03em;
    line-height: 1;
    text-transform: none;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
}
.woocommerce-account .entry-content .woocommerce-button:hover,
.woocommerce-account .entry-content button.woocommerce-form-login__submit:hover,
.woocommerce-account .entry-content button.woocommerce-form-register__submit:hover,
.woocommerce-account .entry-content form .button:hover,
.woocommerce-account .entry-content form button[type="submit"]:hover,
.woocommerce-account .entry-content .woocommerce-MyAccount-content .button:hover {
    background: #fff;
    color: #1e1e1e;
}

/* "Remember me" + lost-password link spacing */
.woocommerce-account .entry-content .woocommerce-form-login__rememberme { display: block; margin: 6px 0 16px; }
.woocommerce-account .entry-content .woocommerce-LostPassword { margin: 14px 0 0; }
.woocommerce-account .entry-content .woocommerce-LostPassword a {
    color: #1e1e1e;
    font-size: 14px;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Helper / privacy text */
.woocommerce-account .entry-content form .woocommerce-privacy-policy-text p,
.woocommerce-account .entry-content form em,
.woocommerce-account .entry-content .woocommerce-ResetPassword > p:first-of-type {
    color: #6a6a6a;
    font-size: 14px;
    line-height: 1.6;
    font-style: normal;
}

/* Dashboard (cabinet): sidebar nav + content */
.woocommerce-account .entry-content .woocommerce-MyAccount-navigation ul {
    list-style: none;
    margin: 0;
    padding: 0;
    border: 1px solid #e5e5e5;
}
.woocommerce-account .entry-content .woocommerce-MyAccount-navigation li { margin: 0; border-bottom: 1px solid #e5e5e5; }
.woocommerce-account .entry-content .woocommerce-MyAccount-navigation li:last-child { border-bottom: 0; }
.woocommerce-account .entry-content .woocommerce-MyAccount-navigation li a {
    display: block;
    padding: 14px 18px;
    color: #1e1e1e;
    text-decoration: none;
    font-size: 15px;
    transition: background 0.15s ease;
}
.woocommerce-account .entry-content .woocommerce-MyAccount-navigation li a:hover,
.woocommerce-account .entry-content .woocommerce-MyAccount-navigation li.is-active a {
    background: #f5f5f5;
    font-weight: 600;
}
.woocommerce-account .entry-content .woocommerce-MyAccount-content { color: #2b2d2f; font-size: 15px; line-height: 1.6; }
.woocommerce-account .entry-content .woocommerce-MyAccount-content a { color: #1e1e1e; }

/* Notices in the site palette */
.woocommerce-account .entry-content .woocommerce-message,
.woocommerce-account .entry-content .woocommerce-info,
.woocommerce-account .entry-content .woocommerce-error {
    border-top: 3px solid #1e1e1e;
    border-radius: 0;
    background: #f7f7f7;
    color: #1e1e1e;
}
.woocommerce-account .entry-content .woocommerce-message::before,
.woocommerce-account .entry-content .woocommerce-info::before { color: #1e1e1e; }

/* Seasonal-variation notes (product page + checkout): bouquets are made from
   fresh seasonal flowers, so the exact look can vary. Muted, unobtrusive. */
.folia-product-season-note {
    margin-top: 4px;
    padding-top: 20px;
    border-top: 1px solid #e5e5e5;
    color: #6a6a6a;
    font-size: 14px;
    line-height: 1.55;
}
.folia-checkout-season-note {
    max-width: 900px;
    margin: 0 auto 24px;
    padding: 12px 16px;
    background: #f8f8fa;
    border: 1px solid #e5e5e5;
    color: #6a6a6a;
    font-size: 14px;
    line-height: 1.55;
    text-align: center;
}

/* Popular-collections tile label. The category name sits over a photo that can
   be dark, so a plain fading gradient left long names (e.g. "Pluszowe misie")
   unreadable where the fade had already gone transparent. The label now carries
   its own solid-white backing that hugs the text (any length / language, wraps
   if needed) and only fades out inside the trailing padding, keeping the airy
   look while guaranteeing contrast. */
.folia-collection-label {
    position: absolute;
    top: 30px;
    left: 0;
    max-width: 100%;
    padding: 8px 44px 8px 20px;
    font-weight: 400;
    font-size: 24px;
    line-height: 1.2;
    color: #1e1e1e;
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.68) 0%, rgba(255, 255, 255, 0.68) calc(100% - 44px), rgba(255, 255, 255, 0) 100%);
    text-shadow: 0 0 4px rgba(255, 255, 255, 0.85);
}
@media (min-width: 1280px) {
    .folia-collection-label {
        font-size: 30px;
    }
}

/* Shop landing pages (templates/page-kwiaciarnia-wola.html and
   page-kwiaciarnia-powisle.html). Laid out like the homepage: full width with
   its side gutters (16 / 24 / 50px at 768 / 1280px, lined up with the header
   menu) and a 1820px cap. The content is plain core blocks, so headings would
   fall through to the theme.json heading font (Cardo, whose files were never
   shipped -> Times); they follow the house type instead (light Gilroy).
   Running text keeps a readable measure. */
.folia-landing {
    box-sizing: border-box;
    width: 100%;
    max-width: 1920px;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
}
@media (min-width: 768px) {
    .folia-landing {
        padding-left: 24px !important;
        padding-right: 24px !important;
    }
}
@media (min-width: 1280px) {
    .folia-landing {
        padding-left: 50px !important;
        padding-right: 50px !important;
    }
}
.folia-landing > *,
.folia-landing .wp-block-post-content > * {
    max-width: none;
    margin-left: 0 !important;
    margin-right: 0 !important;
}
.folia-landing h1,
.folia-landing h2 {
    font-family: inherit !important;
    font-weight: 300 !important;
}
.folia-landing h1 {
    font-size: clamp(32px, 3.6vw, 56px) !important;
    line-height: 1.15 !important;
}
.folia-landing h2 {
    font-size: clamp(20px, 1.7vw, 25px) !important;
    line-height: 1.3 !important;
    margin-bottom: .6em !important;
}
.folia-landing .wp-block-post-content > p {
    max-width: 760px;
}
.folia-landing .wp-block-columns {
    max-width: 1100px;
}
.folia-landing .wp-block-gallery {
    margin-top: 2.5rem !important;
    margin-bottom: 2.5rem !important;
}

/* "Apple Pay / Google Pay" in the payment list (inc/folia-wallet-pay.php). The
   label is the wallet's name; the hint under it says what the button will do. */
body .folia-checkout .folia-wallet-label { font-weight: 500; }
body .folia-checkout .folia-wallet-hint {
    margin: 0 !important;
    color: #6a6a6a;
    font-size: 14px;
    line-height: 1.5;
}

/* "Nie znam terminu — zapytajcie odbiorcę" under the delivery date and time
   (inc/folia-ask-recipient-when.php). Sized like the checkout's other
   checkboxes; while it is ticked the date and time read as switched off. */
body .folia-checkout #delivery_datetime_fields .folia-ask-when { margin-top: 14px; }
body .folia-checkout #delivery_datetime_fields .folia-ask-when[hidden] { display: none !important; }
/* tailwind.css (src/input.css) hides every label inside #delivery_datetime_fields
   (the date/time labels are screen-reader only); this one must stay visible,
   so its box is restored here with the id repeated to outrank that rule. */
body .folia-checkout #delivery_datetime_fields .folia-ask-when__label {
    position: static !important; /* the hiding rule sets position with !important */
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    overflow: visible !important;
    clip: auto !important;
    white-space: normal !important;
}
body .folia-checkout .folia-ask-when__label {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin: 0;
    font-size: 16px;
    line-height: 1.4;
    color: #2b2d2f;
    cursor: pointer;
}
body .folia-checkout .folia-ask-when__label input {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    margin: 1px 0 0;
    accent-color: #1e1e1e;
    cursor: pointer;
}
body .folia-checkout .folia-ask-when__hint {
    margin: 6px 0 0 32px !important;
    color: #6a6a6a;
    font-size: 14px;
    line-height: 1.5;
}
body .folia-checkout #delivery_datetime_fields.is-ask-when #delivery_date,
body .folia-checkout #delivery_datetime_fields.is-ask-when #delivery_time {
    background: #f5f5f5;
    color: #9a9a9a;
    cursor: not-allowed;
}

/* A past or out-of-range delivery day (inc/folia-delivery-date.php). */
/* The date wrapper is a fixed 50px (top of this file); let it grow to show the message
 * instead of hiding it under the time field. Still 50px while the message is hidden. */
body .folia-checkout #delivery_datetime_fields .delivery_date_wrapper { height: auto; }
body .folia-checkout .folia-delivery-date-error,
body .folia-checkout .folia-delivery-time-note {
    margin: 6px 0 0 !important;
    color: #c41e1e;
    font-size: 14px;
    line-height: 1.4;
}
body .folia-checkout .folia-delivery-date-error[hidden],
body .folia-checkout .folia-delivery-time-note[hidden] {
    display: none !important;
}
/* An address outside the delivery area (assets/js/folia-no-delivery.js): why, the phone, and pickup. */
body .folia-checkout .folia-no-delivery {
    /* The last thing in the address step: its fields' wrapper leaves 16px above; 16px
       below plus the step's own margin give the next step its usual 41.6px. */
    margin: 0 0 16px;
    padding: 16px 18px;
    border: 1px solid #f3c4c4;
    border-radius: var(--folia-r-card);
    background: #fef6f6;
    color: var(--folia-text);
}
body .folia-checkout .folia-no-delivery[hidden] { display: none; }
body .folia-checkout .folia-no-delivery__title { margin: 0 0 6px !important; font-size: 16px; line-height: 1.4; color: var(--folia-ink); }
body .folia-checkout .folia-no-delivery__text { margin: 0 0 14px !important; font-size: 14px; line-height: 1.5; }
body .folia-checkout .folia-no-delivery__text a { color: var(--folia-ink); text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }
body .folia-checkout .folia-no-delivery__pickup {
    height: 44px;
    padding: 0 18px;
    border: 1px solid var(--folia-field);
    border-radius: 12px;
    background: #fff;
    color: var(--folia-ink);
    font: inherit;
    font-size: 15px;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}
body .folia-checkout .folia-no-delivery__pickup:focus-visible { outline: none; box-shadow: var(--folia-ring); }
@media (hover: hover) {
    body .folia-checkout .folia-no-delivery__pickup:hover { background: var(--folia-soft); border-color: var(--folia-hover); }
}
@media (max-width: 480px) {
    body .folia-checkout .folia-no-delivery__pickup { width: 100%; }
}

/* The callback request (assets/js/folia-callback.js): "Zostaw kontakt — oddzwonimy" under the
   box's pickup button at checkout, and under the delivery page's out-of-area answer; the form
   opens in place. Weights are in src/input.css (both places are inside .folia-canvas). */
body .folia-callback { margin-top: 10px; color: var(--folia-text); }
body .folia-callback__open,
body .folia-callback__send {
    min-height: 44px;
    padding: 0 18px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: var(--folia-ink);
    color: #fff;
    font: inherit;
    font-size: 15px;
    cursor: pointer;
}
body .folia-callback__open:focus-visible,
body .folia-callback__send:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28); }
@media (hover: hover) {
    body .folia-callback__open:hover,
    body .folia-callback__send:not(:disabled):hover { background: #3f3f46; }
}
body .folia-callback__send:disabled { opacity: .6; cursor: default; }
body .folia-callback__form {
    display: grid;
    gap: 12px;
    margin-top: 12px;
    padding: 16px;
    border: 1px solid var(--folia-line);
    border-radius: var(--folia-r-card);
    background: #fff;
}
body .folia-callback__form[hidden],
body .folia-callback__open[hidden],
body .folia-callback [hidden] { display: none !important; }
body .folia-callback__group { min-width: 0; margin: 0; padding: 0; border: 0; }
body .folia-callback__group legend { margin: 0 0 8px; padding: 0; font-size: 14px; color: var(--folia-ink); }
body .folia-callback__chips { display: flex; flex-wrap: wrap; gap: 8px; }
body .folia-callback__chip { position: relative; display: inline-flex; }
body .folia-callback__chip input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
body .folia-callback__chip span {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 0 14px;
    border: 1px solid var(--folia-field);
    border-radius: 9999px;
    background: #fff;
    color: var(--folia-ink);
    font-size: 14px;
}
body .folia-callback__chip input:checked + span { border-color: var(--folia-ink); background: var(--folia-ink); color: #fff; }
body .folia-callback__chip input:focus-visible + span { box-shadow: var(--folia-ring); }
body .folia-callback__field { display: grid; gap: 6px; }
body .folia-callback__label { font-size: 14px; color: var(--folia-ink); }
body .folia-callback__field input,
body .folia-callback__field textarea {
    box-sizing: border-box;
    width: 100%;
    min-height: 48px;
    padding: 10px 14px;
    border: 1px solid var(--folia-field);
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-ink);
    font: inherit;
    font-size: 16px; /* no zoom on iPhone */
}
body .folia-callback__field textarea { min-height: 72px; resize: vertical; }
body .folia-callback__field input:focus,
body .folia-callback__field textarea:focus { outline: none; border-color: var(--folia-ink); box-shadow: var(--folia-ring); }
body .folia-callback__field input[aria-invalid="true"] { border-color: var(--folia-error); box-shadow: var(--folia-error-ring); }
body .folia-callback__error,
body .folia-callback__fail { margin: -4px 0 0; font-size: 13px; color: var(--folia-error); }
body .folia-callback__hp { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; opacity: 0 !important; }
body .folia-callback__send { justify-self: start; min-height: 48px; }
body .folia-callback__privacy { margin: 0; font-size: 12px; line-height: 1.45; color: var(--folia-muted); }
body .folia-callback__done { margin: 10px 0 0; padding: 12px 14px; border-radius: var(--folia-r-field); background: #ecfdf3; color: #14532d; font-size: 14px; }
@media (max-width: 480px) {
    body .folia-callback__open,
    body .folia-callback__send { width: 100%; }
}
/* The chosen day has no time left (functions.php, updateTimeSlotAvailability): same
 * look as the date message, under the time field, which grows to show it. */
body .folia-checkout #delivery_datetime_fields .delivery_time_wrapper { height: auto; }

/* Flat payment list, Stripe method rows (inc/folia-payment-list.php).
   BLIK: the plugin's confirmation line carries an inline top margin of the
   theme's largest spacing step (~100px), which left a hole under the code
   field; and its code label is hard-coded English, so its text is swapped for
   the translated --folia-blik-label. */
body .folia-checkout .wc-block-components-radio-control-accordion-content p[style*="spacing--50"] {
    margin-top: 12px !important;
    color: #6a6a6a;
    font-size: 14px;
    line-height: 1.5;
}
body .folia-checkout label[for="wc-stripe-blik-code"] { font-size: 0 !important; }
body .folia-checkout label[for="wc-stripe-blik-code"]::after {
    content: var(--folia-blik-label, "Kod BLIK");
    font-size: 16px;
}
body .folia-checkout .wc-block-components-text-input.is-active label[for="wc-stripe-blik-code"]::after,
body .folia-checkout #wc-stripe-blik-code:focus + label::after { font-size: 12px; }

/* Which processor each payment method goes through: a small tag after its name.
   Keyed on the method id so it survives the checkout's re-renders, and set as
   a variable so methods from neither (cash on delivery) get no tag. Apple /
   Google Pay is charged through Stripe (inc/folia-wallet-pay.php). */
body .folia-checkout .wc-block-components-radio-control__option:has(input[value^="stripe"]),
body .folia-checkout .wc-block-components-radio-control__option:has(input[value="folia_wallet"]) { --folia-pay-provider: "Stripe"; }
body .folia-checkout .wc-block-components-radio-control__option:has(input[value^="payu"]) { --folia-pay-provider: "PayU"; }
body .folia-checkout .wc-block-components-radio-control__label > span:first-child::after {
    content: var(--folia-pay-provider, none);
    display: inline-block;
    margin-left: 10px;
    padding: 1px 7px;
    border: 1px solid #dcdcdc;
    border-radius: 3px;
    color: #6a6a6a;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: .04em;
    text-transform: uppercase;
    vertical-align: 2px;
}
/* In Stripe's rows the name is bare text in a flex box spread with
   space-between, followed by the test-mode badge and the icon; the tag would
   become one more spread item and push the icon into the middle. Order them:
   name, tag, badge, then the icon at the right edge, as in the PayU rows. */
body .folia-checkout .wc-block-components-radio-control__option:has(input[value^="stripe"]) .wc-block-components-radio-control__label > span:first-child,
body .folia-checkout .wc-block-components-radio-control__option:has(input[value="folia_wallet"]) .wc-block-components-radio-control__label > span:first-child {
    justify-content: flex-start !important;
    align-items: center;
    flex-wrap: wrap; /* on a phone the tag and badge go to a second line, not past the edge */
    row-gap: 4px;
}
body .folia-checkout .wc-block-components-radio-control__option:has(input[value^="stripe"]) .wc-block-components-radio-control__label > span:first-child::after { order: 1; }
body .folia-checkout .wc-block-components-radio-control__option:has(input[value^="stripe"]) .wc-block-components-radio-control__label > span:first-child > * { order: 2; margin-left: 10px; }
body .folia-checkout .wc-block-components-radio-control__option:has(input[value^="stripe"]) .wc-block-components-radio-control__label > span:first-child > :last-child:not(.wc-stripe-test-mode-badge) { order: 3; margin-left: auto; }

/* PayU's bank list: bank logos as buttons (owner, 2026-10-25). Only banks: Apple and
   Google Pay have a row of their own here, pay-later and instalments are not offered
   (research 2026-10-25), and a traditional transfer is too slow for same-day flowers.
   PayU decides which banks appear (its account's methods). */
body .folia-checkout .payu-block-list-banks {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(76px, 1fr));
    gap: 8px;
    margin: 4px 0 12px;
}
body .folia-checkout .payu-block-list-banks .payu-bank:is(.payu-bank-ap, .payu-bank-jp, [class*="payu-bank-dp"], .payu-bank-ai, .payu-bank-ppf, .payu-bank-b, .payu-bank-bt, .payu-bank-pt) {
    display: none !important;
}
body .folia-checkout .payu-block-list-banks .payu-bank {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: auto !important;
    height: 56px !important;
    margin: 0 !important;
    padding: 8px !important;
    border: 1px solid #e5e5e5 !important;
    border-radius: 10px !important;
    background: #fff !important;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
body .folia-checkout .payu-block-list-banks .payu-bank img { max-width: 100%; max-height: 36px; width: auto; height: auto; object-fit: contain; }
body .folia-checkout .payu-block-list-banks .payu-bank:hover { border-color: #9a9a9a !important; }
body .folia-checkout .payu-block-list-banks .payu-bank.active,
body .folia-checkout .payu-block-list-banks .payu-bank[aria-checked="true"] { border-color: #1e1e1e !important; box-shadow: 0 0 0 1px #1e1e1e; }
body .folia-checkout .payu-block-list-banks .payu-bank:focus-visible { outline: 2px solid #1e1e1e; outline-offset: 2px; }

/* A Stripe method's form while it loads (inc/folia-stripe-loading.php): a spinner in
   about the space the form takes, instead of Stripe's grey stand-in of other fields.
   Heights: the forms on a 360-412px phone (card 206, Przelewy24 206-231, Klarna
   175-200); BLIK's own code field replaces its hidden Stripe box. */
.wcstripe-payment-element.folia-stripe-loading,
.wc-stripe-upe-element.folia-stripe-loading { position: relative; min-height: 206px; }
/* Whatever Stripe draws under the spinner stays out of sight until the form is ready. */
.wcstripe-payment-element.folia-stripe-loading > *,
.wc-stripe-upe-element.folia-stripe-loading > * { visibility: hidden; }
.wc-block-components-radio-control-accordion-option:has(#radio-control-wc-payment-method-options-stripe_klarna) .wcstripe-payment-element.folia-stripe-loading { min-height: 175px; }
/* BLIK's box keeps the spinner's height: Stripe sizes a BLIK form of its own (189px) under
   the spinner a frame or two before the plugin swaps in its code field, and hidden, it still
   took the room (194 -> 283 -> 206px). */
.wc-block-components-radio-control-accordion-option:has(#radio-control-wc-payment-method-options-stripe_blik) .wcstripe-payment-element.folia-stripe-loading { min-height: 96px; height: 96px; overflow: hidden; }
/* BLIK's code field takes the spinner's place in the same frame it appears; a script
   removing the spinner a frame later left both on screen for a moment. Stripe's box,
   if the plugin keeps it a little longer, takes no height either: Stripe can draw a
   BLIK form of its own in it (189px) just as the plugin's field arrives. It stays
   mounted (not display:none) in case the plugin still needs it to confirm. */
.wc-block-components-radio-control-accordion-option:has(#wc-stripe-blik-code) .wcstripe-payment-element { min-height: 0; height: 0; overflow: hidden; }
.wc-block-components-radio-control-accordion-option:has(#wc-stripe-blik-code) .wcstripe-payment-element.folia-stripe-loading::after { display: none; }
.wcstripe-payment-element.folia-stripe-loading::after,
.wc-stripe-upe-element.folia-stripe-loading::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 22px;
    height: 22px;
    margin: -11px 0 0 -11px;
    border: 2px solid #dcdcdc;
    border-top-color: #1e1e1e;
    border-radius: 50%;
    animation: folia-stripe-spin .8s linear infinite;
}
@keyframes folia-stripe-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .wcstripe-payment-element.folia-stripe-loading::after,
    .wc-stripe-upe-element.folia-stripe-loading::after { animation-duration: 2.4s; }
}

/* =========================================================================
 * Checkout and cart, modern look (owner, 2026-10-23). The pages keep their
 * order and fields; the elements take the look shoppers know from today's
 * large checkouts: rounded fields and cards, a segmented Delivery/Pickup
 * switch, soft grey surfaces, a sentence-case pay button with a lock, focus
 * rings and one error style. Black stays the brand colour, Gilroy the font.
 * Previewed and approved on the real staging checkout before it was built.
 *
 * Font weights are not set here: tailwind.css forces Light (300) with a
 * layered !important that no rule in this file can outrank, so the weights
 * these pages use are exceptions in src/input.css (@layer base).
 *
 * `body .folia-checkout` and !important: the compiled tailwind.css loads
 * after this file with high-specificity checkout rules; the buttons repeat
 * its `.wp-block-woocommerce-checkout .wc-block-components-button.contained`
 * chain to outrank it.
 * ========================================================================= */
:root {
    --folia-ink: #1e1e1e;
    --folia-text: #27272a;
    --folia-muted: #71717a;     /* 4.8:1 on white */
    --folia-line: #e4e4e7;      /* cards, dividers */
    --folia-field: #d4d4d8;     /* field edges */
    --folia-hover: #a1a1aa;
    --folia-soft: #f4f4f5;      /* segmented track, light-button hover */
    --folia-panel: #fafafa;     /* summary cards, chosen-card tint */
    --folia-ring: 0 0 0 3px rgba(30, 30, 30, .12);
    --folia-error: #dc2626;
    --folia-error-ring: 0 0 0 3px rgba(220, 38, 38, .14);
    --folia-r-field: 10px;
    --folia-r-card: 12px;
    --folia-r-panel: 16px;
}

/* --- Headings and small text ---------------------------------------------- */
body .folia-checkout .folia-checkout__title {
    font-size: clamp(26px, 3vw, 34px) !important;
    letter-spacing: -0.015em;
}
body .folia-checkout .wc-block-components-checkout-step__title,
body .folia-checkout .wc-block-components-checkout-order-summary__title-text,
body .folia-checkout .wc-block-checkout__order-notes::before {
    font-size: clamp(18px, 1.4vw, 20px) !important;
    letter-spacing: -0.01em;
    color: var(--folia-ink) !important;
}
body .folia-checkout .wc-block-components-checkout-step__description {
    font-size: 14px !important;
    line-height: 1.5 !important;
    color: var(--folia-muted) !important;
}
body .folia-checkout .folia-contact__heading,
body .folia-checkout .folia-rcontact__heading {
    font-size: 14px !important;
    color: var(--folia-text) !important;
    margin: 0 0 8px !important;
}
body .folia-checkout .folia-contact { margin-top: 20px !important; }
body .folia-checkout .wc-block-checkout__guest-checkout-notice {
    margin-top: 12px !important;
    font-size: 13.5px !important;
    color: var(--folia-muted) !important;
}
body .folia-checkout .wc-block-checkout__terms,
body .folia-checkout .wc-block-checkout__terms .wc-block-components-checkbox__label {
    font-size: 13.5px !important;
    line-height: 1.5 !important;
    color: var(--folia-muted) !important;
}
body .folia-checkout .wc-block-checkout__terms a {
    color: var(--folia-ink) !important;
    text-decoration: underline !important;
    text-underline-offset: 3px;
}

/* --- Fields ----------------------------------------------------------------- */
body .folia-checkout .wc-block-components-text-input input,
body .folia-checkout .folia-contact__input,
body .folia-checkout .folia-contact__type,
body .folia-checkout .folia-rcontact__type,
body .folia-checkout #delivery_date,
body .folia-checkout #delivery_time,
body .folia-checkout .folia-town-select,
body .folia-checkout .wc-block-components-totals-coupon .wc-block-components-text-input input,
body .folia-checkout .wc-block-components-totals-coupon input[type="text"] {
    height: 50px !important;
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field) !important;
    font-size: 16px !important;
    color: var(--folia-text);
    background-color: #fff;
    box-sizing: border-box !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
body .folia-checkout .wc-block-components-totals-coupon .wc-block-components-text-input { height: 50px !important; }
body .folia-checkout .wc-block-components-text-input label { color: var(--folia-muted) !important; }
body .folia-checkout .folia-contact__type,
body .folia-checkout .folia-rcontact__type,
body .folia-checkout #delivery_time {
    -webkit-appearance: none !important;
    appearance: none !important;
    padding: 0 40px 0 14px !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%2371717a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 14px center !important;
    background-size: 12px 8px !important;
    cursor: pointer;
}
body .folia-checkout .folia-town-select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%2371717a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E") !important;
}
body .folia-checkout .folia-contact__input::placeholder,
body .folia-checkout .folia-rcontact__field.is-active .folia-rcontact__input::placeholder,
body .folia-checkout .folia-gift-field__input::placeholder,
body .folia-checkout .wc-block-components-textarea::placeholder { color: var(--folia-muted) !important; }
@media (hover: hover) {
    body .folia-checkout .wc-block-components-text-input input:hover,
    body .folia-checkout .folia-contact__input:hover,
    body .folia-checkout .folia-contact__type:hover,
    body .folia-checkout .folia-rcontact__type:hover,
    body .folia-checkout #delivery_date:hover,
    body .folia-checkout #delivery_time:hover,
    body .folia-checkout .folia-town-select:hover,
    body .folia-checkout .wc-block-components-textarea:hover,
    body .folia-checkout .folia-gift-field__input:hover { border-color: var(--folia-hover) !important; }
}
body .folia-checkout .wc-block-components-text-input input:focus,
body .folia-checkout .folia-contact__input:focus,
body .folia-checkout .folia-contact__type:focus,
body .folia-checkout .folia-rcontact__type:focus,
body .folia-checkout #delivery_date:focus,
body .folia-checkout #delivery_time:focus,
body .folia-checkout .folia-town-select:focus,
body .folia-checkout .wc-block-components-textarea:focus,
body .folia-checkout .folia-gift-field__input:focus {
    border-color: var(--folia-ink) !important;
    box-shadow: var(--folia-ring) !important;
    outline: none !important;
}
body .folia-checkout .wc-block-components-textarea,
body .folia-checkout .folia-gift-field__input {
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field) !important;
    padding: 12px 14px !important;
    font-size: 16px !important;
    line-height: 1.5 !important;
    color: var(--folia-text) !important;
    background: #fff !important;
    box-shadow: none !important;
}
body .folia-checkout .wc-block-components-textarea { min-height: 88px !important; }

/* --- Errors --------------------------------------------------------------------- */
body .folia-checkout .wc-block-components-text-input.has-error input,
body .folia-checkout .has-error .folia-town-select,
body .folia-checkout #delivery_date.folia-field-error,
body .folia-checkout #delivery_time.folia-field-error,
body .folia-checkout .wc-block-components-textarea.has-error {
    border-color: var(--folia-error) !important;
    box-shadow: var(--folia-error-ring) !important;
}
body .folia-checkout .wc-block-components-validation-error,
body .folia-checkout .wc-block-components-validation-error p,
body .folia-checkout .folia-rcontact__error {
    color: var(--folia-error) !important;
    font-size: 13.5px !important;
    line-height: 1.4 !important;
}
body .folia-checkout .wc-block-components-text-input.has-error label { color: var(--folia-error) !important; }

/* --- Contact rows: sender and recipient the same -------------------------------- */
body .folia-checkout .folia-contact__row,
body .folia-checkout .folia-rcontact__row {
    display: flex !important;
    gap: 10px !important;
    align-items: center !important;
    margin: 0 0 10px !important;
}
body .folia-checkout .folia-contact__type,
body .folia-checkout .folia-rcontact__type { flex: 0 0 calc(50% - 5px) !important; min-width: 0; }
/* The recipient's value field carries WooCommerce's text-input class, and with it
   a half-width basis: with a × beside it the row ran past the column edge. */
body .folia-checkout .folia-rcontact__field,
body .folia-checkout .folia-contact__input {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0 !important;
}
@media (max-width: 480px) {
    body .folia-checkout .folia-contact__type,
    body .folia-checkout .folia-rcontact__type {
        flex: 0 0 8em !important;
        padding: 0 28px 0 12px !important;
        background-position: right 10px center !important;
    }
}
/* × to remove an extra row: an icon button, quiet until pointed at. */
body .folia-checkout .folia-contact__remove,
body .folia-checkout .folia-rcontact__remove {
    flex: 0 0 40px !important;
    width: 40px !important;
    height: 40px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 10px !important;
    background: transparent !important;
    color: var(--folia-muted) !important;
    font-size: 22px !important;
    line-height: 1 !important;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}
@media (hover: hover) {
    body .folia-checkout .folia-contact__remove:hover,
    body .folia-checkout .folia-rcontact__remove:hover { background: var(--folia-soft) !important; color: var(--folia-ink) !important; }
}
/* "Add" in three places (a sender contact, a recipient contact, the flat number):
   one ghost button with a +, its text on the column line. */
body .folia-checkout .folia-contact__add,
body .folia-checkout .folia-rcontact__add,
body .folia-checkout .wc-block-components-address-form__address_2-toggle {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    height: auto !important;
    margin: 0 0 0 -10px !important;
    padding: 8px 10px !important;
    border: 0 !important;
    border-radius: 8px !important;
    background: transparent !important;
    color: var(--folia-ink) !important;
    font-size: 14px !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    text-decoration: none !important;
    cursor: pointer;
    transition: background-color .15s ease;
}
body .folia-checkout .folia-rcontact__add::before { content: "+"; font-size: 17px; line-height: 1; }
@media (hover: hover) {
    body .folia-checkout .folia-contact__add:hover,
    body .folia-checkout .folia-rcontact__add:hover,
    body .folia-checkout .wc-block-components-address-form__address_2-toggle:hover { background: var(--folia-soft) !important; color: var(--folia-ink) !important; }
}

/* --- Checkboxes and radios -------------------------------------------------------- */
body .folia-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"],
body .folia-checkout .folia-ask-when__label input[type="checkbox"] {
    -webkit-appearance: none !important;
    appearance: none !important;
    flex: 0 0 20px !important;
    width: 20px !important;
    height: 20px !important;
    min-width: 20px !important;
    margin: 0 !important;
    border: 1.5px solid var(--folia-hover) !important;
    border-radius: 6px !important;
    background: #fff !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}
body .folia-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]:checked,
body .folia-checkout .folia-ask-when__label input[type="checkbox"]:checked {
    background-color: var(--folia-ink) !important;
    border-color: var(--folia-ink) !important;
}
body .folia-checkout .wc-block-components-checkbox .wc-block-components-checkbox__mark { fill: #fff !important; }
body .folia-checkout .folia-ask-when__label input[type="checkbox"]:checked {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    background-size: 16px 16px !important;
}
body .folia-checkout .wc-block-components-checkbox__label,
body .folia-checkout .folia-ask-when__label {
    font-size: 15px !important;
    line-height: 1.4 !important;
    color: var(--folia-text) !important;
}
/* Radio: a thick ink ring when chosen. */
body .folia-checkout .wc-block-components-radio-control__input {
    width: 20px !important;
    height: 20px !important;
    min-width: 20px !important;
    border: 1.5px solid var(--folia-hover) !important;
    border-radius: 50% !important;
    background: #fff !important;
    box-shadow: none !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
body .folia-checkout .wc-block-components-radio-control__input:checked {
    border-color: var(--folia-ink) !important;
    background: #fff !important;
    box-shadow: inset 0 0 0 4.5px var(--folia-ink) !important;
}
body .folia-checkout .wc-block-components-radio-control__input:checked::before { display: none !important; }
body .folia-checkout .wc-block-components-checkbox__input:focus-visible,
body .folia-checkout .folia-ask-when__label input:focus-visible,
body .folia-checkout .wc-block-components-radio-control__input:focus-visible {
    outline: none !important;
    box-shadow: var(--folia-ring) !important;
}
body .folia-checkout .wc-block-components-radio-control__input:checked:focus-visible { box-shadow: inset 0 0 0 4.5px var(--folia-ink), var(--folia-ring) !important; }

/* --- Delivery / Pickup: a segmented switch ------------------------------------------ */
body .folia-checkout .wc-block-checkout__shipping-method-container {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 4px !important;
    padding: 4px !important;
    border: 0 !important;
    border-radius: 14px !important;
    background: var(--folia-soft) !important;
}
body .folia-checkout .wc-block-checkout__shipping-method-option {
    flex: 1 1 0 !important;
    margin: 0 !important;
    padding: 12px 12px !important;
    border: 0 !important;
    border-radius: 10px !important;
    background: transparent !important;
    box-shadow: none !important;
    gap: 2px !important;
    transition: background-color .15s ease, box-shadow .15s ease;
}
body .folia-checkout .wc-block-checkout__shipping-method-option--selected {
    background: #fff !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 2px 8px rgba(0, 0, 0, .06) !important;
}
@media (hover: hover) {
    body .folia-checkout .wc-block-checkout__shipping-method-option:not(.wc-block-checkout__shipping-method-option--selected):hover { background: rgba(255, 255, 255, .55) !important; }
}
body .folia-checkout .wc-block-checkout__shipping-method-option:focus-visible { outline: none !important; box-shadow: var(--folia-ring) !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option-title-wrapper { gap: 8px !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option-title { font-size: 15px !important; color: var(--folia-ink) !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option-price,
body .folia-checkout .wc-block-checkout__shipping-method-option--selected .wc-block-checkout__shipping-method-option-price { font-size: 13px !important; color: var(--folia-muted) !important; }
/* WooCommerce writes "bezpłatnie" in lower case and capitalises all of it: a capital first letter only. */
body .folia-checkout .wc-block-checkout__shipping-method-option-price em,
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__secondary-label em { display: inline-block; text-transform: none !important; }
body .folia-checkout .wc-block-checkout__shipping-method-option-price em::first-letter,
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__secondary-label em::first-letter { text-transform: uppercase; }
/* The same word in the totals ("Odbiór osobisty  Bezpłatnie") is written capitalised already. */
body .folia-checkout .wc-block-components-totals-item__value strong { text-transform: none !important; }
/* On the grey of the unselected option the muted grey falls short of 4.5:1; a darker grey reads. */
body .folia-checkout .wc-block-checkout__shipping-method-option:not(.wc-block-checkout__shipping-method-option--selected) .wc-block-checkout__shipping-method-option-price { color: #52525b !important; }
@media (max-width: 480px) {
    /* Icon over the title, both centred (the icon kept to the column's left edge). */
    body .folia-checkout .wc-block-checkout__shipping-method-option-title-wrapper { flex-direction: column !important; align-items: center !important; gap: 4px !important; }
}

/* --- Cards: pickup points and payment methods ---------------------------------------- */
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__option,
body .folia-checkout .wc-block-components-radio-control-accordion-option {
    border: 1px solid var(--folia-line) !important;
    border-radius: var(--folia-r-card) !important;
    background: #fff !important;
    box-shadow: none !important;
    overflow: hidden;
}
@media (hover: hover) {
    body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__option:not(.wc-block-components-radio-control__option--checked-option-highlighted):hover,
    body .folia-checkout .wc-block-components-radio-control-accordion-option:not(.wc-block-components-radio-control-accordion-option--checked-option-highlighted):hover { border-color: var(--folia-hover) !important; }
}
/* Chosen: an ink edge 2px thick (border plus a ring outside it) on a light tint. */
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__option--checked-option-highlighted,
body .folia-checkout .wc-block-components-radio-control-accordion-option--checked-option-highlighted {
    border-color: var(--folia-ink) !important;
    box-shadow: 0 0 0 1px var(--folia-ink) !important;
    background: var(--folia-panel) !important;
}
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__label,
body .folia-checkout .wc-block-components-payment-method-label,
body .folia-checkout .wc-block-components-radio-control-accordion-option .wc-block-components-radio-control__label { font-size: 15px !important; color: var(--folia-ink) !important; }
body .folia-checkout .wc-block-checkout__pickup-options .wc-block-components-radio-control__description { font-size: 13.5px !important; color: var(--folia-muted) !important; }
/* Which processor: a small grey pill after the name. */
body .folia-checkout .wc-block-components-radio-control__label > span:first-child::after {
    padding: 2px 8px !important;
    border: 0 !important;
    border-radius: 999px !important;
    background: var(--folia-soft) !important;
    color: var(--folia-muted) !important;
    font-size: 11px !important;
    letter-spacing: .03em !important;
    text-transform: none !important;
}

/* --- Buttons ------------------------------------------------------------------------------ */
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-button.contained {
    border: 0 !important;
    border-radius: 12px !important;
    background: var(--folia-ink) !important;
    color: #fff !important;
    font-size: 16px !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .12) !important;
    transition: background-color .15s ease, transform .1s ease;
}
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-checkout-place-order-button.contained { min-height: 56px !important; }
/* The pay button: a lock before "Kupuję i płacę" (the words stay; they are the
   legally required wording for a button that commits to paying). */
body .folia-checkout .wc-block-components-checkout-place-order-button__text {
    display: inline-flex !important;
    align-items: center;
    gap: 10px;
}
body .folia-checkout .wc-block-components-checkout-place-order-button__text::before {
    content: "";
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 9V7A5 5 0 0 0 7 7v2a3 3 0 0 0-3 3v7a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3v-7a3 3 0 0 0-3-3ZM9 7a3 3 0 0 1 6 0v2H9Zm4 9.73V18a1 1 0 0 1-2 0v-1.27a2 2 0 1 1 2 0Z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 9V7A5 5 0 0 0 7 7v2a3 3 0 0 0-3 3v7a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3v-7a3 3 0 0 0-3-3ZM9 7a3 3 0 0 1 6 0v2H9Zm4 9.73V18a1 1 0 0 1-2 0v-1.27a2 2 0 1 1 2 0Z'/%3E%3C/svg%3E") center / contain no-repeat;
}
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-totals-coupon__button.contained {
    height: 50px !important;
    min-height: 50px !important;
    border-radius: var(--folia-r-field) !important;
    font-size: 15px !important;
}
@media (hover: hover) {
    body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-button.contained:not(:disabled):hover { background: #3f3f46 !important; }
}
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-button.contained:not(:disabled):active { transform: translateY(1px); }
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-button.contained:focus-visible { outline: none !important; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28) !important; }
/* An empty code: clearly off, still readable (it was grey text on black). */
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-button.contained:disabled {
    background: var(--folia-line) !important;
    box-shadow: none !important;
}
/* The compiled `.contained *` rule paints everything inside white. */
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-button.contained:disabled .wc-block-components-button__text {
    color: var(--folia-muted) !important;
    opacity: 1 !important;
}

/* --- Order summary: a soft grey card --------------------------------------------------------- */
body .folia-checkout .wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block {
    padding: 22px 24px !important;
    border: 1px solid var(--folia-line) !important;
    border-radius: 16px !important;
    background: var(--folia-panel) !important;
}
body .folia-checkout .wc-block-components-order-summary-item__image img {
    border-radius: 10px !important;
    border: 1px solid var(--folia-line) !important;
}
body .folia-checkout .wc-block-components-order-summary-item__quantity {
    background: var(--folia-muted) !important;
    border: 2px solid var(--folia-panel) !important;
    color: #fff !important;
    font-size: 11px !important;
}
body .folia-checkout .wc-block-components-order-summary-item .wc-block-components-product-name { font-size: 15px !important; }
body .folia-checkout .wc-block-components-order-summary-item .wc-block-components-product-metadata__description { display: none !important; }
body .folia-checkout .wc-block-checkout__sidebar .wc-block-components-totals-wrapper { border-color: var(--folia-line) !important; }
body .folia-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
body .folia-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value,
body .folia-checkout .wc-block-components-totals-footer-item .wc-block-components-formatted-money-amount { }
body .folia-checkout .wc-block-components-totals-coupon .wc-block-components-panel__button { font-size: 15px !important; }
/* Code and "Zastosuj" stay on one row inside the card. */
body .folia-checkout .wc-block-components-totals-coupon__form {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 8px !important;
}
body .folia-checkout .wc-block-components-totals-coupon__form .wc-block-components-totals-coupon__input { flex: 1 1 auto !important; min-width: 0 !important; margin: 0 !important; }
body .folia-checkout .wp-block-woocommerce-checkout .wc-block-components-totals-coupon__button.contained { flex: 0 0 auto !important; width: auto !important; padding: 0 18px !important; margin: 0 !important; }

/* --- Item details: the size, then the free aquabox and bag, one per line ------------------------ */
/* Checkout summary: the name and the price share the first row and the details run under both,
   so they no longer break word by word in the narrow column. The description box is unwrapped
   (display: contents) to put its children on the item's grid. */
body .folia-checkout .wc-block-components-order-summary-item {
    display: grid !important;
    grid-template-columns: 48px minmax(0, 1fr) auto;
    align-items: start;
}
body .folia-checkout .wc-block-components-order-summary-item__image { grid-column: 1; grid-row: 1 / span 3; }
body .folia-checkout .wc-block-components-order-summary-item__description { display: contents !important; }
body .folia-checkout .wc-block-components-order-summary-item__description > * { grid-column: 2 / 4; padding-left: 24px !important; }
body .folia-checkout .wc-block-components-order-summary-item__description > .wc-block-components-product-name {
    grid-column: 2;
    grid-row: 1;
    padding: 4px 12px 0 24px !important;
}
body .folia-checkout .wc-block-components-order-summary-item__description > .wc-block-cart-item__prices { display: none !important; }
body .folia-checkout .wc-block-components-order-summary-item__description > .wc-block-components-product-metadata { margin-top: 4px !important; }
body .folia-checkout .wc-block-components-order-summary-item__total-price { grid-column: 3; grid-row: 1; }
/* Checkout summary and mini cart: one detail per line, the size (variation) before the extras
   (item data, inc/folia-bouquet-extras.php). The mini cart hides lines with the hidden attribute. */
body .folia-checkout .wc-block-components-product-metadata,
body .wc-block-mini-cart__drawer .wc-block-components-product-metadata {
    display: flex !important;
    flex-direction: column;
    gap: 2px;
}
body .folia-checkout .wc-block-components-product-details > span,
body .wc-block-mini-cart__drawer .wc-block-components-product-details > span:not([hidden]) { display: block; }
body .folia-checkout .wc-block-components-product-details > span > [aria-hidden="true"],
body .wc-block-mini-cart__drawer .wc-block-components-product-details > span > [aria-hidden="true"] { display: none !important; }
body .folia-checkout .wc-block-components-product-details:has(> .folia-extra),
body .wc-block-mini-cart__drawer .wc-block-components-product-details[data-wp-context*="item_data"] { order: 1; }
/* Cart page: WooCommerce puts a line break between the details. */
body .folia-block-cart .folia-cart-item__meta { white-space: pre-line; color: var(--folia-muted) !important; }

/* --- Notices above the form ---------------------------------------------------------------------- */
body .folia-checkout .wc-block-components-notice-banner {
    border-radius: var(--folia-r-card) !important;
    padding: 12px 16px !important;
    font-size: 14px !important;
}
body .folia-checkout .wc-block-components-notice-banner.is-success {
    background: #f0fdf4 !important;
    border: 1px solid #bbf7d0 !important;
    color: #166534 !important;
}
body .folia-checkout .wc-block-components-notice-banner a {
    color: inherit !important;
    text-decoration: underline !important;
    text-underline-offset: 3px;
}
body .folia-checkout .folia-checkout-season-note {
    max-width: none !important;
    margin: 0 0 24px !important;
    padding: 12px 16px !important;
    border: 0 !important;
    border-radius: var(--folia-r-card) !important;
    background: var(--folia-soft) !important;
    color: #52525b !important;
    text-align: left !important;
}

/* --- Date and time side by side on desktop ------------------------------------------------------------ */
@media (min-width: 600px) {
    body .folia-checkout #delivery_datetime_fields .delivery_datetime_grid {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 10px !important;
        align-items: start;
    }
}

/* --- The day picker (assets/js/folia-calendar.js) ----------------------------------------- */
/* The date input stays in the form, as the value's source, out of sight. */
body .folia-checkout #delivery_date.folia-cal-native {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    clip-path: inset(50%) !important;
}
/* The button that shows the day, styled as the fields around it. */
body .folia-checkout .folia-cal-trigger {
    display: flex !important;
    align-items: center;
    gap: 8px;
    width: 100%;
    height: 50px !important;
    margin: 0 !important;
    padding: 0 14px !important;
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field) !important;
    background: #fff !important;
    color: var(--folia-text) !important;
    font-family: inherit;
    font-size: 16px !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    text-align: left;
    box-shadow: none;
    box-sizing: border-box;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
body .folia-checkout .folia-cal-trigger__text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body .folia-checkout .folia-cal-trigger.is-empty .folia-cal-trigger__text { color: var(--folia-muted); }
body .folia-checkout .folia-cal-trigger__rel { color: var(--folia-muted); font-size: 14px; white-space: nowrap; }
body .folia-checkout .folia-cal-trigger__rel:empty { display: none; }
body .folia-checkout .folia-cal-trigger__icon { flex: none; width: 18px; height: 18px; margin-left: auto; color: var(--folia-muted); }
@media (hover: hover) {
    body .folia-checkout .folia-cal-trigger:not(:disabled):hover { border-color: var(--folia-hover) !important; }
}
body .folia-checkout .folia-cal-trigger:focus-visible,
body .folia-checkout .folia-cal-trigger[aria-expanded="true"] {
    border-color: var(--folia-ink) !important;
    box-shadow: var(--folia-ring);
    outline: none;
}
body .folia-checkout .folia-cal-trigger.is-error { border-color: var(--folia-error) !important; box-shadow: var(--folia-error-ring); }
body .folia-checkout .folia-cal-trigger:disabled { background: #f5f5f5 !important; color: #9a9a9a !important; cursor: not-allowed; }
/* The calendar, under the button. */
body .folia-checkout .folia-cal {
    position: absolute;
    left: 0;
    z-index: 60;
    width: min(100%, 352px);
    box-sizing: border-box;
    padding: 16px;
    border: 1px solid var(--folia-line);
    border-radius: var(--folia-r-panel);
    background: #fff;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .12), 0 2px 6px rgba(0, 0, 0, .06);
    scroll-margin: 16px 0 112px; /* clear of the order bar fixed at the bottom of a phone */
}
body .folia-checkout .folia-cal[hidden] { display: none !important; }
body .folia-checkout .folia-cal__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 10px; }
body .folia-checkout .folia-cal__title { margin: 0 !important; padding-left: 4px; font-size: 16px !important; line-height: 1.3; color: var(--folia-ink); }
body .folia-checkout .folia-cal__navs { display: flex; gap: 6px; }
body .folia-checkout .folia-cal__nav {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 36px !important;
    height: 36px !important;
    min-height: 0 !important;
    padding: 0 !important;
    border: 1px solid var(--folia-line) !important;
    border-radius: 50% !important;
    background: #fff !important;
    color: var(--folia-ink) !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: background-color .15s ease;
}
body .folia-checkout .folia-cal__nav svg { width: 16px; height: 16px; }
@media (hover: hover) {
    body .folia-checkout .folia-cal__nav:not(:disabled):hover { background: var(--folia-soft) !important; }
}
body .folia-checkout .folia-cal__nav:disabled { opacity: .35; cursor: default; }
body .folia-checkout .folia-cal__nav:focus-visible { outline: none; box-shadow: var(--folia-ring) !important; }
body .folia-checkout .folia-cal__grid { width: 100%; margin: 0 !important; border: 0 !important; border-collapse: collapse; table-layout: fixed; }
body .folia-checkout .folia-cal__grid th {
    padding: 0 0 6px !important;
    border: 0 !important;
    background: none !important;
    font-size: 12px !important;
    color: var(--folia-muted);
    text-align: center;
}
body .folia-checkout .folia-cal__grid td { padding: 2px !important; border: 0 !important; background: none !important; text-align: center; }
body .folia-checkout .folia-cal__day {
    position: relative;
    display: block !important;
    width: 100% !important;
    height: 40px !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 10px !important;
    background: transparent !important;
    color: var(--folia-ink) !important;
    font-family: inherit;
    font-size: 15px !important;
    letter-spacing: 0 !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease;
}
@media (hover: hover) {
    body .folia-checkout .folia-cal__day:not(:disabled):not([aria-pressed="true"]):hover { background: var(--folia-soft) !important; }
}
body .folia-checkout .folia-cal__day:disabled { color: #c4c4c8 !important; cursor: default; }
/* Today: a dot under the number. */
body .folia-checkout .folia-cal__day[aria-current="date"]::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 5px;
    width: 4px;
    height: 4px;
    margin-left: -2px;
    border-radius: 50%;
    background: currentColor;
}
body .folia-checkout .folia-cal__day[aria-pressed="true"] { background: var(--folia-ink) !important; color: #fff !important; }
body .folia-checkout .folia-cal__day:focus-visible { outline: none; box-shadow: var(--folia-ring) !important; }
@media (max-width: 480px) {
    body .folia-checkout .folia-cal__day { height: 44px !important; }
}

/* --- The times as buttons (assets/js/folia-time-chips.js) ------------------------------------ */
/* The select stays in the form, as the value's source, out of sight. */
body .folia-checkout #delivery_time.folia-chips-native {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    clip-path: inset(50%) !important;
}
/* Day above, times below, both full width: a dozen windows do not fit beside the day. */
body .folia-checkout #delivery_datetime_fields .delivery_datetime_grid.has-chips {
    display: flex !important;
    flex-direction: column;
    gap: 12px !important;
}
body .folia-checkout .delivery_datetime_grid.has-chips .delivery_date_wrapper,
body .folia-checkout .delivery_datetime_grid.has-chips .delivery_time_wrapper { display: block; width: 100%; height: auto; }
body .folia-checkout .folia-chips {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
    gap: 8px;
}
body .folia-checkout .folia-chips[hidden] { display: none !important; }
/* The buttons are labels, and tailwind.css hides every label inside #delivery_datetime_fields
   (the date/time labels are screen-reader only): their box is restored, the id repeated to
   outrank that rule, as for .folia-ask-when__label. */
body .folia-checkout #delivery_datetime_fields .folia-chip {
    position: relative !important;
    display: block;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    overflow: visible !important;
    clip: auto !important;
    white-space: normal !important;
    cursor: pointer;
}
body .folia-checkout .folia-chip input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    margin: 0;
    pointer-events: none;
}
body .folia-checkout .folia-chip span {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 46px;
    padding: 0 8px;
    border: 1px solid var(--folia-field);
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-text);
    font-size: 15px;
    white-space: nowrap;
    transition: border-color .15s ease, background-color .15s ease, color .15s ease, box-shadow .15s ease;
}
@media (hover: hover) {
    body .folia-checkout .folia-chip input:not(:disabled):not(:checked) + span:hover { border-color: var(--folia-hover); }
}
body .folia-checkout .folia-chip input:checked + span { background: var(--folia-ink); border-color: var(--folia-ink); color: #fff; }
body .folia-checkout .folia-chip input:focus-visible + span { box-shadow: var(--folia-ring); }
body .folia-checkout .folia-chips.is-error .folia-chip span { border-color: var(--folia-error); }
body .folia-checkout .folia-chips.is-disabled .folia-chip { cursor: not-allowed; }
body .folia-checkout .folia-chips.is-disabled .folia-chip span { background: #f5f5f5; color: #9a9a9a; }
@media (max-width: 480px) {
    body .folia-checkout .folia-chips { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); }
    body .folia-checkout .folia-chip span { font-size: 14px; }
}

/* --- Product page: when it can arrive (single-product block) --------------------------------- */
body .folia-delivery-promise { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 15px; line-height: 1.4; color: var(--folia-text); }
body .folia-delivery-promise[hidden] { display: none; }
body .folia-delivery-promise svg { flex: none; width: 20px; height: 20px; color: var(--folia-ink); }
/* What delivery costs, under it (inc/folia-delivery-default.php), lined up with its text and
   tucked up to it (the column's gap is 16px). */
body .folia-delivery-cost { margin: -10px 0 0; padding-left: 28px; font-size: 14px; line-height: 1.45; color: var(--folia-muted); }
body .folia-delivery-cost a { color: var(--folia-ink); text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }

/* --- Cart page (folia/cart block): the same buttons, fields and cards --------- */
body .folia-block-cart h1 {
    font-size: clamp(26px, 3vw, 34px) !important;
    letter-spacing: -0.015em;
}
body .folia-block-cart h1 + span { font-size: 16px !important; color: var(--folia-muted) !important; }
body .folia-block-cart .folia-cart-notices .wc-block-components-notice-banner {
    border-radius: var(--folia-r-card) !important;
    padding: 12px 16px !important;
    font-size: 14px !important;
}
body .folia-block-cart .folia-cart-notices .wc-block-components-notice-banner.is-success {
    background: #f0fdf4 !important;
    border: 1px solid #bbf7d0 !important;
    color: #166534 !important;
}
body .folia-block-cart .folia-cart-item {
    background: var(--folia-panel) !important;
    border: 1px solid var(--folia-line);
    border-radius: var(--folia-r-panel);
}
body .folia-block-cart .folia-cart-item img { border-radius: var(--folia-r-field); }
body .folia-block-cart .folia-cart-item a.font-normal { font-size: 17px !important; }
/* Quantity: see "Buttons and fields everywhere" below (product page and cart alike). */
/* Remove: an icon button (its display stays with the lg:hidden / lg:flex classes). */
body .folia-block-cart .folia-cart-remove {
    padding: 7px;
    border-radius: 8px;
    color: var(--folia-muted) !important;
    transition: background-color .15s ease, color .15s ease;
}
@media (hover: hover) {
    body .folia-block-cart .folia-cart-remove:hover { background: var(--folia-soft); color: var(--folia-ink) !important; }
}
/* Coupon: as in the checkout's order summary (owner, 2026-10-26), at the top of the summary card.
   "Dodaj kupony" opens and closes it (<details>), the code and "Zastosuj" sit side by side, and
   "Zastosuj" is off while the field is empty (view.js). The summary's own box stays a block:
   Safari would not lay out a flex <summary>. Weights come from the theme's font-medium and
   font-semibold classes (src/input.css sets every element on the canvas to 300). */
body .folia-block-cart .folia-cart-coupon { padding-bottom: 20px; border-bottom: 1px solid var(--folia-line); }
body .folia-block-cart .folia-cart-coupon > summary {
    display: block;
    list-style: none;
    cursor: pointer;
    color: var(--folia-ink);
    font-size: 15px;
    line-height: 1.4;
}
body .folia-block-cart .folia-cart-coupon > summary::-webkit-details-marker { display: none; }
body .folia-block-cart .folia-cart-coupon > summary:focus-visible { outline: none; box-shadow: var(--folia-ring); border-radius: 6px; }
body .folia-block-cart .folia-cart-coupon__toggle { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
body .folia-block-cart .folia-cart-coupon__chevron { flex: 0 0 24px; transition: transform .15s ease; }
body .folia-block-cart .folia-cart-coupon[open] .folia-cart-coupon__chevron { transform: rotate(180deg); }
body .folia-block-cart .folia-cart-coupon__form { display: flex; gap: 8px; margin-top: 16px; }
body .folia-block-cart #coupon_code {
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
    height: 50px !important;
    padding: 0 14px !important;
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-text);
    font-size: 16px !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
body .folia-block-cart #coupon_code::placeholder { color: var(--folia-muted); opacity: 1; }
@media (hover: hover) {
    body .folia-block-cart #coupon_code:hover { border-color: var(--folia-hover) !important; }
}
body .folia-block-cart #coupon_code:focus { border-color: var(--folia-ink) !important; box-shadow: var(--folia-ring); }
body .folia-block-cart button[name="apply_coupon"],
body .folia-block-cart .folia-cart-checkout {
    border-radius: 12px;
    background: var(--folia-ink) !important;
    color: #fff !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    text-decoration: none !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .12);
    transition: background-color .15s ease, transform .1s ease;
}
body .folia-block-cart button[name="apply_coupon"] { flex: 0 0 auto; height: 50px !important; border-radius: var(--folia-r-field); font-size: 15px !important; padding: 0 18px !important; cursor: pointer; }
body .folia-block-cart .folia-cart-checkout { font-size: 16px !important; }
@media (hover: hover) {
    body .folia-block-cart button[name="apply_coupon"]:not(:disabled):hover,
    body .folia-block-cart .folia-cart-checkout:hover { background: #3f3f46 !important; }
}
body .folia-block-cart button[name="apply_coupon"]:not(:disabled):active,
body .folia-block-cart .folia-cart-checkout:active { transform: translateY(1px); }
/* An empty code: clearly off and still readable, as in the checkout. */
body .folia-block-cart button[name="apply_coupon"]:disabled {
    background: var(--folia-line) !important;
    color: var(--folia-muted) !important;
    box-shadow: none;
    cursor: default;
}
/* The exit offer's personal code, suggested on the cart and the checkout (inc/folia-exit-suggest.php): a
   soft green box, the code and its end on the left, "Użyj kodu" on the right (under them when narrow). */
body .folia-mycode {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px 12px;
    padding: 12px 14px;
    border-radius: var(--folia-r-field);
    background: #ecfdf3;
    color: #14532d;
}
body .folia-mycode[hidden] { display: none; }
body .wp-block-woocommerce-checkout-order-summary-coupon-form-block .folia-mycode { margin-top: 12px; }
body .folia-mycode__text { display: flex; flex-direction: column; gap: 2px; flex: 1 1 170px; min-width: 0; }
body .folia-mycode__have { font-size: 15px; line-height: 1.35; }
body .folia-mycode__code { font-size: 13px; line-height: 1.4; color: #166534; overflow-wrap: anywhere; }
body .folia-mycode__use {
    flex: 0 0 auto;
    height: 40px !important;
    padding: 0 16px !important;
    border: 0 !important;
    border-radius: var(--folia-r-field) !important;
    background: var(--folia-ink) !important;
    color: #fff !important;
    font-size: 14px !important;
    line-height: 40px;
    cursor: pointer;
    transition: background-color .15s ease;
}
@media (hover: hover) {
    body .folia-mycode__use:not(:disabled):hover { background: #3f3f46 !important; }
}
body .folia-mycode__use:disabled { opacity: .6; cursor: default; }
body .folia-mycode__use:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28); }
body .folia-mycode__error { flex: 1 1 100%; margin: 0; font-size: 13px; color: var(--folia-error); }
body .folia-block-cart button[name="apply_coupon"]:focus-visible,
body .folia-block-cart .folia-cart-checkout:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28); }
/* Computers: the items on the left and the summary card beside them from the top, as on the checkout
   (owner, 2026-10-27: under a full-width item the card left half the row empty). */
@media (min-width: 1024px) {
    body .folia-block-cart .folia-cart-form { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 32px; align-items: start; }
    body .folia-block-cart .folia-cart-side { position: sticky; top: 24px; }
    /* The item rows in the narrower column: no empty unit-price column (the unit price of a quantity over
       one goes under the name), a smaller photo and stepper, the total only as wide as it needs. */
    body .folia-block-cart .folia-cart-item__col { display: none; }
    body .folia-block-cart .folia-cart-item__unit { display: block; }
    body .folia-block-cart .folia-cart-item__img { width: 120px; height: 120px; }
    body .folia-block-cart .folia-cart-item .folia-qty { width: 150px; }
    body .folia-block-cart .folia-cart-item__total { width: auto; min-width: 96px; text-align: right; }
}
/* 1024-1199 px (an iPad on its side): too narrow for a row beside the card, so each item stacks as on a
   tablet: the photo, name and remove on top, the stepper and the total under them. */
@media (min-width: 1024px) and (max-width: 1199px) {
    body .folia-block-cart .folia-cart-item { flex-direction: column; align-items: stretch; gap: 16px; padding: 16px; }
    body .folia-block-cart .folia-cart-item__main { flex: none; align-items: flex-start; gap: 16px; }
    body .folia-block-cart .folia-cart-item__img { width: 110px; height: 110px; }
    body .folia-block-cart .folia-cart-item__head { align-items: flex-start; }
    body .folia-block-cart .folia-cart-remove--top { display: flex; }
    body .folia-block-cart .folia-cart-remove--row { display: none; }
    body .folia-block-cart .folia-cart-item__buy { justify-content: space-between; gap: 16px; }
    body .folia-block-cart .folia-cart-item .folia-qty { width: 160px; }
}
/* Summary: the same soft grey card as the checkout's. */
body .folia-block-cart .folia-cart-summary {
    background: var(--folia-panel);
    border: 1px solid var(--folia-line);
    border-radius: var(--folia-r-panel);
}
body .folia-block-cart .folia-cart-summary > div > span:first-child { font-size: 16px !important; }
/* A line per code on the cart (blocks/.../cart/render.php): its name, a remove link
   and the amount off, above the total. */
body .folia-block-cart .folia-cart-discount {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--folia-line);
    color: var(--folia-text);
}
body .folia-block-cart .folia-cart-summary > .folia-cart-discount > span:first-child { font-size: 15px !important; }
body .folia-block-cart .folia-cart-discount__label { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; min-width: 0; }
body .folia-block-cart .folia-cart-discount__remove { color: var(--folia-muted); font-size: 13px; text-decoration: underline; }
body .folia-block-cart .folia-cart-discount__remove:hover { color: var(--folia-ink); }
body .folia-block-cart .folia-cart-discount__amount { white-space: nowrap; color: var(--folia-ink); font-size: 16px; }

/* Text drawn by ::before / ::after is outside the `.folia-canvas *` Light rule
   (it matches elements only), so its weight can be set here. */
body .folia-checkout .wc-block-checkout__order-notes::before { font-weight: 600 !important; }
body .folia-checkout .wc-block-components-radio-control__label > span:first-child::after { font-weight: 600 !important; }

/* =========================================================================
 * Buttons and fields everywhere (owner, 2026-10-23): the checkout's look on
 * every other page, previewed page by page on staging and approved. One dark
 * rounded button, one light outlined button, rounded fields with a grey edge
 * and a ring while typing, a rounded quantity field, round carousel arrows.
 * Weights and the hero/story buttons are in src/input.css (@layer base), for
 * the reason given at the top of the checkout section above.
 * ========================================================================= */

/* --- Dark buttons ------------------------------------------------------------- */
body .folia-add-to-cart,
body .folia-cart-empty-btn,
body #folia-catalog-filters button[type="submit"],
body .folia-b2b-submit,
body .folia-delivery__btn,
body .wp-block-button:not(.is-style-outline) > .wp-block-button__link,
body.woocommerce-account .entry-content .woocommerce-button,
body.woocommerce-account .entry-content button.button,
body .wc-block-mini-cart__footer-checkout,
body .wc-block-mini-cart__shopping-button {
    border: 0 !important;
    border-radius: 12px !important;
    background: var(--folia-ink) !important;
    color: #fff !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    text-decoration: none !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .12) !important;
    transition: background-color .15s ease, transform .1s ease;
}
/* Text size: 16px on the theme's own buttons, 17px on the two large ones;
   WordPress button blocks keep the size each page gives them (16px made the 404
   page's pair wrap on a phone). */
body .folia-cart-empty-btn,
body #folia-catalog-filters button[type="submit"],
body .folia-delivery__btn,
body.woocommerce-account .entry-content .woocommerce-button,
body.woocommerce-account .entry-content button.button,
body .wc-block-mini-cart__footer-checkout,
body .wc-block-mini-cart__shopping-button { font-size: 16px !important; }
body .folia-add-to-cart,
body .folia-b2b-submit {
    height: 56px !important;
    min-height: 56px !important;
    font-size: 17px !important;
}
body #folia-catalog-filters button[type="submit"],
body .folia-delivery__btn,
body.woocommerce-account .entry-content .woocommerce-button,
body.woocommerce-account .entry-content button.button { height: 50px !important; min-height: 50px !important; }
/* The mini cart is outside the page canvas, so its weights are set here. */
body .wc-block-mini-cart__footer-checkout,
body .wc-block-mini-cart__shopping-button,
body .wc-block-mini-cart__footer-cart { font-weight: 600 !important; }
/* The line under the mini-cart's subtotal carries the delivery price now
   (inc/folia-delivery-default.php); WooCommerce's mini-cart.css hides it under 480px. */
body .wc-block-mini-cart__footer .wc-block-components-totals-item.wc-block-mini-cart__footer-subtotal .wc-block-components-totals-item__description { display: block !important; }
@media (hover: hover) {
    body .folia-add-to-cart:hover,
    body .folia-cart-empty-btn:hover,
    body #folia-catalog-filters button[type="submit"]:hover,
    body .folia-b2b-submit:hover,
    body .folia-delivery__btn:hover,
    body .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover,
    body.woocommerce-account .entry-content .woocommerce-button:hover,
    body.woocommerce-account .entry-content button.button:hover,
    body .wc-block-mini-cart__footer-checkout:hover,
    body .wc-block-mini-cart__shopping-button:hover { background: #3f3f46 !important; color: #fff !important; }
}

/* --- Light buttons -------------------------------------------------------------- */
body .wp-block-button.is-style-outline > .wp-block-button__link,
body .wc-block-mini-cart__footer-cart,
body .folia-empty-suggest__btn {
    border: 1px solid var(--folia-field) !important;
    border-radius: 12px !important;
    background: #fff !important;
    color: var(--folia-ink) !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    text-decoration: none !important;
    transition: background-color .15s ease, border-color .15s ease;
}
body .folia-empty-suggest__btn {
    height: 34px !important;
    padding: 0 12px !important;
    border-radius: var(--folia-r-field) !important;
    font-size: 13px !important;
}
/* "Wyczyść" beside "Pokaż wyniki": a light button without an edge. */
body #folia-catalog-filters button[type="submit"] + a {
    padding: 0 16px !important;
    border-radius: 12px;
    letter-spacing: 0 !important;
    text-decoration: none !important;
    transition: background-color .15s ease;
}
@media (hover: hover) {
    body .wp-block-button.is-style-outline > .wp-block-button__link:hover,
    body .wc-block-mini-cart__footer-cart:hover,
    body .folia-empty-suggest__btn:hover { background: var(--folia-soft) !important; border-color: var(--folia-hover) !important; }
    body #folia-catalog-filters button[type="submit"] + a:hover { background: var(--folia-soft); }
}

/* --- Round carousel arrows -------------------------------------------------------- */
body .folia-products-arrow,
body .folia-gallery-arrow {
    border: 1px solid var(--folia-line) !important;
    border-radius: 999px !important;
    background: #fff !important;
    transition: background-color .15s ease;
}
@media (hover: hover) {
    body .folia-products-arrow:hover,
    body .folia-gallery-arrow:hover { background: var(--folia-soft) !important; }
}

/* --- Quantity: a rounded field with light − and + (product page, cart, mini cart) --- */
body .folia-qty {
    height: 48px !important;
    padding: 0 4px !important;
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field);
    background: #fff;
}
body .folia-qty__minus,
body .folia-qty__plus {
    width: 38px !important;
    height: 38px !important;
    border-radius: 8px;
    background: transparent !important;
    color: var(--folia-ink) !important;
    transition: background-color .15s ease;
}
@media (hover: hover) {
    body .folia-qty__minus:hover,
    body .folia-qty__plus:hover { background: var(--folia-soft) !important; }
}
body .folia-qty__input { font-size: 16px !important; }
body .wc-block-mini-cart__drawer .wc-block-components-quantity-selector {
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field) !important;
    overflow: hidden;
}
body .wc-block-mini-cart__drawer .wc-block-components-quantity-selector::after { display: none !important; }

/* --- Size chips -------------------------------------------------------------------- */
body .folia-swatch {
    border-radius: var(--folia-r-field) !important;
    border-color: var(--folia-field) !important;
}

/* --- Fields ------------------------------------------------------------------------- */
body .folia-b2b-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
body .folia-b2b-form select,
body .folia-b2b-form textarea,
body .folia-delivery__input,
body .folia-price-input,
body.woocommerce-account .entry-content input.input-text,
body.woocommerce-account .entry-content select,
body.woocommerce-account .entry-content textarea {
    border: 1px solid var(--folia-field) !important;
    border-radius: var(--folia-r-field) !important;
    background-color: #fff;
    font-size: 16px !important;
    box-shadow: none !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
body .folia-b2b-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
body .folia-b2b-form select,
body .folia-delivery__input,
body.woocommerce-account .entry-content input.input-text { height: 50px !important; }
body .folia-b2b-form select {
    -webkit-appearance: none !important;
    appearance: none !important;
    padding-right: 40px !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%2371717a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 14px center !important;
    background-size: 12px 8px !important;
}
@media (hover: hover) {
    body .folia-b2b-form input:hover,
    body .folia-b2b-form select:hover,
    body .folia-b2b-form textarea:hover,
    body .folia-delivery__input:hover,
    body .folia-price-input:hover,
    body.woocommerce-account .entry-content input.input-text:hover { border-color: var(--folia-hover) !important; }
}
body .folia-b2b-form input:focus,
body .folia-b2b-form select:focus,
body .folia-b2b-form textarea:focus,
body .folia-delivery__input:focus,
body .folia-price-input:focus,
body.woocommerce-account .entry-content input.input-text:focus {
    border-color: var(--folia-ink) !important;
    box-shadow: var(--folia-ring) !important;
    outline: none !important;
}

/* The closed mini cart only fades out (opacity 0, no pointer events), so the keyboard
   still reached its buttons and links behind the page (14 Tab stops, found 2026-10-24).
   Hidden once WooCommerce's 0.3s slide-out is over; its reduced-motion rule hides it at once. */
body .wc-block-components-drawer__screen-overlay--is-hidden { visibility: hidden; transition: opacity .3s, visibility 0s linear .3s; }

/* Headings outside the page canvas fell back to a serif font (the mini cart, the
   account forms): Gilroy, like every other heading. */
body .wc-block-mini-cart__drawer h2,
body .wc-block-mini-cart__drawer .wc-block-mini-cart__title,
body.woocommerce-account .entry-content h2 { font-family: "Gilroy", system-ui, sans-serif !important; }

/* =========================================================================
 * The exit offer (assets/js/folia-exit-offer.js, owner 2026-10-25): a sheet
 * from the bottom on phones, at most two thirds of the screen high, and a
 * centred dialog on computers. It hangs off <body>, outside .folia-canvas,
 * so the weights here apply and the headings need Gilroy named.
 * ========================================================================= */
.folia-exit {
    border: 0;
    padding: 0;
    margin: 0;
    max-width: none;
    max-height: none;
    background: transparent;
    color: var(--folia-text);
    overflow: visible;
}
.folia-exit::backdrop { background: rgba(24, 24, 27, .45); }
.folia-exit,
.folia-exit h2,
.folia-exit h3,
.folia-exit button { font-family: "Gilroy", system-ui, sans-serif !important; }
.folia-exit__sheet {
    position: relative;
    box-sizing: border-box;
    background: #fff;
    overflow-y: auto;
    overscroll-behavior: contain;
}
@media (max-width: 767px) {
    .folia-exit { position: fixed; inset: auto 0 0 0; width: 100%; }
    .folia-exit__sheet {
        max-height: 66vh;
        max-height: 66dvh;
        border-radius: var(--folia-r-panel) var(--folia-r-panel) 0 0;
        padding: 10px 16px calc(20px + env(safe-area-inset-bottom, 0px));
        transition: transform .12s ease-out;
    }
    .folia-exit[open] .folia-exit__sheet { animation: folia-exit-up .24s ease-out; }
}
@media (min-width: 768px) {
    .folia-exit { width: min(560px, calc(100vw - 48px)); margin: auto; }
    .folia-exit__sheet {
        max-height: min(720px, calc(100vh - 48px));
        border-radius: var(--folia-r-panel);
        padding: 28px 28px 24px;
        box-shadow: 0 24px 60px rgba(24, 24, 27, .22);
    }
    .folia-exit__grab { display: none; }
}
@keyframes folia-exit-up { from { transform: translateY(100%); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) {
    .folia-exit[open] .folia-exit__sheet { animation: none; }
}
.folia-exit__grab { width: 40px; height: 4px; border-radius: 2px; background: var(--folia-field); margin: 0 auto 8px; }
.folia-exit__close {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 9999px;
    background: transparent;
    color: var(--folia-ink);
    cursor: pointer;
}
.folia-exit__close:hover { background: var(--folia-soft); }
.folia-exit__head { padding-right: 40px; }
.folia-exit__title { margin: 4px 0; font-size: 22px; line-height: 1.25; font-weight: 600; color: var(--folia-ink); text-wrap: balance; }
.folia-exit__lead { margin: 0 0 14px; font-size: 16px; line-height: 1.4; font-weight: 400; }
.folia-exit__claim {
    width: 100%;
    height: 50px;
    padding: 0 24px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: var(--folia-ink);
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
}
@media (min-width: 768px) { .folia-exit__claim { width: auto; } }
@media (hover: hover) { .folia-exit__claim:not(:disabled):hover { background: #3f3f46; } }
.folia-exit__claim:disabled { opacity: .55; cursor: default; }
.folia-exit__close:focus-visible,
.folia-exit__claim:focus-visible,
.folia-exit__copy:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28); }
.folia-exit__code {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 12px;
    padding: 12px 14px;
    border: 1px dashed var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: var(--folia-panel);
}
.folia-exit__codelabel { font-size: 13px; font-weight: 400; color: var(--folia-muted); }
.folia-exit__codevalue { font-size: 20px; font-weight: 700; letter-spacing: .06em; color: var(--folia-ink); user-select: all; }
.folia-exit__copy {
    margin-left: auto;
    height: 38px;
    padding: 0 14px;
    border: 1px solid var(--folia-field);
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-ink);
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
}
.folia-exit__auto { margin: 8px 0 0; font-size: 14px; font-weight: 400; }
.folia-exit__msg { margin: 8px 0 0; font-size: 14px; font-weight: 400; color: var(--folia-error); }
.folia-exit__msg:empty { display: none; }
.folia-exit__section { margin-top: 20px; }
.folia-exit__stitle { margin: 0 0 10px; font-size: 16px; font-weight: 600; color: var(--folia-ink); }
.folia-exit__row {
    display: flex;
    gap: 12px;
    margin: 0 -16px;
    padding: 0 16px 4px;
    list-style: none;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding: 0 16px;
    scrollbar-width: none;
}
.folia-exit__row::-webkit-scrollbar { display: none; }
/* A computer's mouse can't scroll a row sideways: there the six cards wrap, three to a line. */
@media (min-width: 768px) {
    .folia-exit__row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 12px; margin: 0; padding: 0; overflow: visible; }
}
.folia-exit__card { flex: 0 0 140px; min-width: 0; display: flex; flex-direction: column; gap: 6px; scroll-snap-align: start; }
@media (min-width: 768px) { .folia-exit__card { flex-basis: auto; } }
.folia-exit__mediabox { position: relative; aspect-ratio: 440 / 413; max-width: 100%; border-radius: var(--folia-r-card); overflow: hidden; background: var(--folia-soft); }
.folia-exit__media,
.folia-exit__media img { display: block; width: 100%; height: 100%; }
.folia-exit__media img { object-fit: cover; }
.folia-exit .folia-like-btn { top: 6px; right: 6px; width: 34px; height: 34px; }
.folia-exit .folia-like-btn svg { width: 18px; height: 18px; }
.folia-exit__name {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 14px;
    line-height: 1.3;
    font-weight: 400;
    color: var(--folia-ink);
    text-decoration: none;
}
.folia-exit__name:hover { text-decoration: underline; }
.folia-exit__price { font-size: 14px; font-weight: 600; color: var(--folia-ink); }
.folia-exit__price del { margin-right: 4px; font-weight: 400; color: var(--folia-muted); }
.folia-exit__price ins { text-decoration: none; }

/* =========================================================================
 * The catalog with filters (variant A, owner 2026-10-31): inc/folia-catalog-render.php
 * draws it, assets/js/folia-catalog-filters.js runs it. On computers a 300 px column of
 * filters beside the grid; on phones a «Filtry» row and a full-screen panel (the column
 * moves into it while it is open). Without the script every control still works: the
 * groups and «Pokaż więcej» are <details>, the options links, «od»/«do» a GET form, the
 * sort menu a <details> of links, and the phone's «Filtry» jumps to the column (:target).
 * Tailwind classes in the markup show and hide the column, the row and the chips' words
 * per width; this section never sets `display` on those elements outside such a width.
 * Two class names are also the switch-off catalog's (.folia-catalog-sort, .folia-catalog-
 * products): their rules sit under [data-folia-catalog], variant A's root, so that page
 * stays as it is. Colours and radii come from the tokens in :root where one is the value.
 * ========================================================================= */

/* Weights and link colours. tailwind.css forces Light (300) on every element and the literal
   #1e1e1e on every link inside .folia-canvas from its @layer base with !important, which no
   unlayered rule outranks. These exceptions join that layer, where specificity decides;
   the statement repeats tailwind.css's own layer order, so the order stays the same
   whichever of the two stylesheets comes first. */
@layer properties, theme, base, components, utilities;
@layer base {
    .folia-canvas .folia-catalog__title,
    .folia-canvas .folia-catalog__group-title,
    .folia-canvas .folia-catalog__open > span:not(.folia-catalog__badge),
    .folia-canvas .folia-catalog__sheet-title,
    .folia-canvas .folia-catalog__range-go,
    .folia-canvas .folia-catalog-sort__opt[aria-current="true"] { font-weight: 500 !important; }
    .folia-canvas .folia-catalog__scope-link.is-current .folia-catalog__label,
    .folia-canvas .folia-catalog__badge,
    .folia-canvas .folia-catalog__clear,
    .folia-canvas .folia-catalog__apply { font-weight: 600 !important; }
    .folia-canvas .folia-catalog__loadmore-btn,
    .folia-canvas .folia-catalog__loadprev-btn { font-weight: 500 !important; }
    @media (max-width: 639.98px) {
        .folia-canvas [data-folia-catalog] .folia-products-card > a.mt-4 { font-size: 15px !important; line-height: 1.3; } /* the two-up phone card's name */
    }
    .folia-canvas .folia-fav-card__cart { font-weight: 500 !important; } /* the favourites page's button */
    .folia-canvas .folia-catalog__sheet .folia-catalog__scope-link.is-current { color: #fff !important; }
}

/* --- The sort menu: beside the H1 on computers, in the «Filtry» row on phones ------------ */
[data-folia-catalog] .folia-catalog-sort { position: relative; }
.folia-catalog-sort__current {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    border-radius: var(--folia-r-field);
    font-size: 16px;
    color: var(--folia-ink);
    white-space: nowrap;
    list-style: none;
    cursor: pointer;
    user-select: none;
}
.folia-catalog-sort__current::-webkit-details-marker,
.folia-catalog__group-head::-webkit-details-marker,
.folia-catalog__more-head::-webkit-details-marker { display: none; }
.folia-catalog-sort__current > span { overflow: hidden; text-overflow: ellipsis; }
.folia-catalog__chevron { flex: none; transition: transform .2s ease; }
.folia-catalog-sort[open] .folia-catalog__chevron,
.folia-catalog__group[open] > .folia-catalog__group-head .folia-catalog__chevron { transform: rotate(180deg); }
.folia-catalog-sort__list {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 30;
    width: max-content;
    min-width: max(100%, 200px);
    max-width: calc(100vw - 32px);
    margin: 0;
    padding: 6px;
    list-style: none;
    background: #fff;
    border: 1px solid #e5e5e5;
    border-radius: var(--folia-r-card);
    box-shadow: 0 12px 32px rgba(24, 24, 27, .12);
}
.folia-catalog-sort__opt {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    min-height: 44px;
    padding: 0 12px;
    border-radius: 8px;
    font-size: 16px;
    white-space: nowrap;
    text-decoration: none;
}
.folia-catalog-sort__opt[aria-current="true"]::after {
    content: "";
    flex: none;
    width: 14px;
    height: 10px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='10' viewBox='0 0 14 10'%3E%3Cpath fill='none' stroke='%231e1e1e' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round' d='M1 5l4 4 8-8'/%3E%3C/svg%3E") no-repeat center / contain;
}
@media (hover: hover) {
    .folia-catalog-sort__opt:hover { background: #f5f5f5; }
}

/* --- The filters' column ------------------------------------------------------------------- */
.folia-catalog__scopes { margin-bottom: 20px; }
.folia-catalog__title { margin: 0 0 10px; font-size: 18px; color: var(--folia-ink); }
.folia-catalog__scope-list { margin: 0; padding: 0; list-style: none; }
.folia-catalog__scope.is-apart { margin-top: 8px; padding-top: 8px; border-top: 1px solid #e5e5e5; }
.folia-catalog__scope-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 36px;
    border-radius: 6px;
    font-size: 16px;
    text-decoration: none;
}
.folia-catalog__num { flex: none; margin-left: auto; font-size: 14px; color: #6a6a6a; font-variant-numeric: tabular-nums; }
.folia-catalog__group { padding: 14px 0 16px; border-top: 1px solid #e5e5e5; }
.folia-catalog__group[hidden] { display: none; } /* a group the phone panel's draft doesn't show */
.folia-catalog__group-head {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 36px;
    border-radius: 6px;
    list-style: none;
    cursor: pointer;
}
.folia-catalog__group-title { margin-right: auto; font-size: 18px; color: var(--folia-ink); }
.folia-catalog__picks { display: none; }
.folia-catalog__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    box-sizing: border-box;
    border-radius: 11px;
    background: var(--folia-ink);
    color: #fff;
    font-size: 13px;
    line-height: 1;
}
.folia-catalog__opts { display: flex; flex-direction: column; padding-top: 8px; }
/* An option: a checkbox drawn in CSS, the short name (the tier's name under a price band), the count. */
.folia-catalog__opt {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 36px;
    border-radius: 6px;
    font-size: 16px;
    text-decoration: none;
    cursor: pointer;
}
.folia-catalog__box {
    position: relative;
    flex: none;
    width: 18px;
    height: 18px;
    box-sizing: border-box;
    border: 1.5px solid #6a6a6a;
    border-radius: 4px;
    background: #fff;
    transition: background-color .15s ease, border-color .15s ease;
}
.folia-catalog__opt[aria-checked="true"] .folia-catalog__box { background: var(--folia-ink); border-color: var(--folia-ink); }
.folia-catalog__opt[aria-checked="true"] .folia-catalog__box::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 45%;
    width: 5px;
    height: 9px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: translate(-50%, -50%) rotate(45deg);
}
.folia-catalog__dot { flex: none; width: 14px; height: 14px; box-sizing: border-box; border: 1px solid #cfcfcf; border-radius: 50%; }
.folia-catalog__text { display: flex; flex: 1 1 auto; flex-direction: column; gap: 2px; min-width: 0; padding: 5px 0; line-height: 1.2; }
.folia-catalog__sub { font-size: 13px; color: #6a6a6a; }
/* An option that would leave no products: grey, and it can't be ticked. */
.folia-catalog__opt.is-off { cursor: default; }
.folia-catalog__opt.is-off .folia-catalog__label,
.folia-catalog__opt.is-off .folia-catalog__sub,
.folia-catalog__opt.is-off .folia-catalog__num { color: #9a9a9a; }
.folia-catalog__opt.is-off .folia-catalog__box { border-color: var(--folia-field); background: #f5f5f5; }
.folia-catalog__opt.is-off .folia-catalog__dot { opacity: .45; }
@media (hover: hover) {
    .folia-catalog__opt:not(.is-off):hover .folia-catalog__box { border-color: var(--folia-ink); }
    .folia-catalog__scope-link:hover .folia-catalog__label { text-decoration: underline; text-underline-offset: 3px; }
}
/* «Pokaż więcej (N)» / «Pokaż mniej»: one summary with both words, the one that fits shown. A
   summary renders first in its <details>, so open it sits under the options it revealed by
   position. */
.folia-catalog__more { position: relative; }
.folia-catalog__more[open] { padding-bottom: 40px; }
.folia-catalog__more-head {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    margin-top: 4px;
    border-radius: 6px;
    font-size: 15px;
    text-decoration: underline;
    text-underline-offset: 3px;
    list-style: none;
    cursor: pointer;
}
.folia-catalog__more[open] > .folia-catalog__more-head { position: absolute; left: 0; bottom: 0; margin-top: 0; }
.folia-catalog__more:not([open]) .folia-catalog__less-label,
.folia-catalog__more[open] .folia-catalog__more-label { display: none; }
/* «od» / «do» under either side's prices. */
.folia-catalog__range { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 12px; }
.folia-catalog__range > span[aria-hidden="true"] { color: #9a9a9a; }
.folia-catalog__price {
    flex: 1 1 0;
    width: 100%;
    min-width: 0;
    height: 44px;
    padding: 0 12px;
    box-sizing: border-box;
    border: 1px solid var(--folia-field);
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-ink);
    font: inherit;
    font-size: 16px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.folia-catalog__price::placeholder { color: #9a9a9a; opacity: 1; }
.folia-catalog__price:focus { border-color: var(--folia-ink); box-shadow: var(--folia-ring); outline: none; }
.folia-catalog__unit { font-size: 15px; }
.folia-catalog__range-go {
    flex: 1 0 100%;
    height: 44px;
    border: 1px solid var(--folia-field);
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-ink);
    font-size: 15px;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}
@media (hover: hover) {
    .folia-catalog__range-go:hover { background: #f5f5f5; border-color: var(--folia-hover); }
}
.folia-catalog__clear-row { margin: 0; padding-top: 18px; border-top: 1px solid #e5e5e5; }
.folia-catalog__clear { font-size: 16px; text-decoration: underline; text-underline-offset: 3px; }

/* --- Above the grid: «N produktów», the chips, «Wyczyść wszystko» ------------------------- */
.folia-catalog__top { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; min-height: 40px; margin-bottom: 26px; }
.folia-catalog__count { margin: 0 6px 0 0; font-size: 16px; color: #6a6a6a; }
.folia-catalog__chips { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; min-width: 0; }
.folia-catalog__chips:empty { display: none; }
.folia-catalog__chip {
    display: inline-flex;
    flex: none;
    align-items: center;
    gap: 8px;
    height: 36px;
    padding: 0 12px 0 14px;
    border: 1px solid var(--folia-ink);
    border-radius: 999px;
    background: #fff;
    font-size: 15px;
    white-space: nowrap;
    text-decoration: none;
}
.folia-catalog__chip svg { flex: none; }
.folia-catalog__clear-all {
    display: inline-flex;
    flex: none;
    align-items: center;
    min-height: 36px;
    padding: 0 4px;
    border-radius: 6px;
    font-size: 15px;
    white-space: nowrap;
    text-decoration: underline;
    text-underline-offset: 3px;
}
@media (hover: hover) {
    .folia-catalog__chip:hover { background: #f5f5f5; }
}
/* Waiting for the server's answer: the grid fades a little (after a beat, so a quick answer doesn't flicker).
   A new grid's photos show on the canvas's sand until they are in, not on white. */
.folia-block-catalog[aria-busy="true"] .folia-catalog__grid { opacity: .45; transition: opacity .2s ease .15s; }
.folia-catalog__grid .folia-card-img { background-color: #f4f1ec; }
/* Phones and tablets: the round logo hangs below the header, and the catalog starts about 20 px under it (owner,
   2026-11-03: the gap was too big; it was 62 px on phones, 50 px on tablets). */
@media (max-width: 639.98px) { section[data-folia-catalog] { padding-top: 20px; } }
@media (min-width: 640px) and (max-width: 1279.98px) { section[data-folia-catalog] { padding-top: 14px; } }
/* Phones: two cards a row (owner, 2026-11-02), each card's parts scaled to the half-width tile. */
@media (max-width: 639.98px) {
    [data-folia-catalog] .folia-catalog__grid > .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 12px; row-gap: 28px; }
    [data-folia-catalog] .folia-products-card > a.mt-4 { margin-top: 10px; overflow-wrap: anywhere; }
    [data-folia-catalog] .folia-products-card > a.mt-4 + div { margin-top: 4px; font-size: 14px; }
    [data-folia-catalog] .folia-products-card span.absolute.top-3 { top: 8px; width: 52px; height: 24px; font-size: 12px; }
    [data-folia-catalog] .folia-product-card__cart { width: 38px; height: 38px; }
    [data-folia-catalog] .folia-product-card__cart svg { width: 20px; height: 22px; }
    [data-folia-catalog] .folia-products-card .folia-like-btn { top: 8px; right: 8px; width: 32px; height: 32px; }
    [data-folia-catalog] .folia-products-card .folia-like-btn svg { width: 17px; height: 17px; }
}
.folia-catalog__shown { margin: 28px 0 0; text-align: center; font-size: 15px; color: #6a6a6a; }

/* --- A search's answers (owner, 2026-11-02): quiet lines in the count's grey above the cards, or under an empty
   grid's first line; «Zadzwoń lub napisz» opens the contact card, a light button in the catalog's own style. ----- */
.folia-catalog-answer { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; max-width: 640px; margin: 0 0 26px; }
.folia-catalog-empty .folia-catalog-answer { margin: 0; }
.folia-catalog-answer__line { margin: 0; font-size: 16px; line-height: 1.45; color: #6a6a6a; }
.folia-catalog-answer__contact {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 40px;
    margin-top: 2px;
    padding: 0 16px 0 14px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-ink);
    font: inherit;
    font-size: 15px;
    white-space: nowrap;
    cursor: pointer;
    transition: background-color .15s ease;
}
.folia-catalog-answer__contact svg { flex: none; }
@media (hover: hover) {
    .folia-catalog-answer__contact:hover { background: var(--folia-soft); }
}
.folia-catalog-answer__contact:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28); }
@media (max-width: 1279.98px) {
    .folia-catalog-answer { margin-bottom: 18px; }
    .folia-catalog-answer__line { font-size: 15px; }
    .folia-catalog-answer__contact { height: 44px; }
}

/* --- «Pokaż więcej» under the grid, «Pokaż poprzednie» above it (owner, 2026-11-02) ----------- */
/* The catalog's script draws them and hides the page links (folia-catalog__off), which stay in the
   HTML for no-JS and crawlers. A quiet secondary button in the catalog's own style, as «Filtry»
   (owner, 2026-11-03): «Pokazano X z Y» above it, centred, under the grid on a computer. */
.folia-catalog__off { display: none !important; }
.folia-catalog__loadmore { display: flex; flex-direction: column; align-items: center; padding-top: 32px; overflow-anchor: none; }
.folia-catalog__loadmore-btn,
.folia-catalog__loadprev-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 220px;
    height: 44px;
    padding: 0 28px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: #fff;
    color: var(--folia-ink);
    font-size: 15px;
    white-space: nowrap;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}
.folia-catalog__loadmore-btn { margin-top: 12px; }
.folia-catalog__loadmore-btn[hidden] { display: none; }
/* Loading: the text dimmed, the button keeps its size. */
.folia-catalog__loadmore-btn.is-loading,
.folia-catalog__loadprev-btn.is-loading { color: #9a9a9a; cursor: progress; }
@media (hover: hover) {
    .folia-catalog__loadmore-btn:hover,
    .folia-catalog__loadprev-btn:hover { background: var(--folia-soft); }
}
.folia-catalog__loadmore-shown { margin: 0; text-align: center; font-size: 14px; color: #6a6a6a; }
.folia-catalog__loadmore-live { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.folia-catalog__loadprev { display: flex; justify-content: center; margin: 0 0 24px; }
@media (min-width: 1280px) {
    .folia-catalog__loadmore { padding-left: 340px; } /* under the grid: the 300 px column and its 40 px gap */
}
/* Back to, or a reload of, a page whose «Pokaż więcej» held later pages: placeholders in the grid's own flow, as tall
   as a card (the script sets their height), keep the page's place while those pages load; nothing covers the page. */
.folia-catalog__ghost { background: linear-gradient(#f4f4f5, #f4f4f5) top / 100% calc(100% - 64px) no-repeat; }

/* --- Phones and tablets: the «Filtry» row, the chips before «N produktów» ------------------ */
@media (max-width: 1279.98px) {
    /* Without the script «Filtry» jumps to the column, which then shows above the grid, clear of
       the header that stays on screen (114 px without the script, its round logo hanging lower). */
    #folia-catalog-aside { scroll-margin-top: 160px; }
    #folia-catalog-aside:target { display: block; }
    .folia-catalog__bar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 16px; }
    .folia-catalog__bar .folia-catalog-sort__current {
        justify-content: space-between;
        height: 48px;
        padding: 0 14px;
        border: 1px solid var(--folia-field);
        background: #fff;
    }
    [data-folia-catalog] .folia-catalog-products { padding-top: 16px; }
    .folia-catalog__top { flex-direction: column; align-items: stretch; gap: 12px; min-height: 0; margin-bottom: 16px; }
    /* The chips wrap onto more rows, so every pick shows in full (owner, 2026-11-01: a sideways row cut them off). */
    .folia-catalog__chips { order: -1; gap: 8px; }
    .folia-catalog__count { margin: 0; font-size: 15px; }
}
.folia-catalog__open {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 0;
    height: 48px;
    padding: 0 12px;
    border: 1px solid var(--folia-ink);
    border-radius: var(--folia-r-field);
    background: #fff;
    font-size: 16px;
    text-decoration: none;
}
.folia-catalog__open > span:not(.folia-catalog__badge) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.folia-catalog__open > svg { flex: none; }
/* Touch: every control at least 44 px high. */
@media (pointer: coarse) {
    .folia-catalog__opt,
    .folia-catalog__scope-link,
    .folia-catalog__group-head,
    .folia-catalog__more-head,
    .folia-catalog__chip,
    .folia-catalog__clear-all { min-height: 44px; }
    .folia-catalog__chip { height: 44px; }
}

/* --- The phone's filter panel: full screen, its button always in view ------------------------ */
.folia-catalog__sheet:not([hidden]) {
    position: fixed;
    inset: 0;
    z-index: 100002;
    display: flex;
    flex-direction: column;
    background: #fff;
}
.folia-catalog__sheet:focus { outline: none; }
html.folia-catalog-sheet-open,
html.folia-catalog-sheet-open body { overflow: hidden; }
.folia-catalog__sheet-head {
    display: flex;
    flex: none;
    align-items: center;
    gap: 2px;
    min-height: 60px;
    padding: 0 4px 0 16px;
    border-bottom: 1px solid #e5e5e5;
}
.folia-catalog__sheet-title { margin-right: auto; font-size: 22px; color: var(--folia-ink); }
.folia-catalog__sheet-clear {
    display: inline-flex;
    align-items: center;
    height: 44px;
    padding: 0 10px;
    border-radius: 6px;
    font-size: 15px;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.folia-catalog__sheet-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--folia-ink);
    cursor: pointer;
}
.folia-catalog__sheet-body { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; padding: 16px 16px 20px; }
.folia-catalog__sheet-foot { flex: none; padding: 12px 16px calc(16px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid #e5e5e5; background: #fff; }
.folia-catalog__apply {
    width: 100%;
    height: 52px;
    border: 0;
    border-radius: var(--folia-r-card);
    background: var(--folia-ink);
    color: #fff;
    font-size: 16px;
    cursor: pointer;
    transition: background-color .15s ease;
}
.folia-catalog__apply:disabled { background: #9a9a9a; cursor: default; }
@media (hover: hover) {
    .folia-catalog__apply:not(:disabled):hover { background: #3f3f46; }
    .folia-catalog__sheet-close:hover { background: #f5f5f5; }
}
/* In the panel «Pokaż» is a row of buttons, a group's heading shows its picks (not the badge),
   and the panel's own button applies «od»/«do» with the rest. */
.folia-catalog__sheet .folia-catalog__scopes { margin-bottom: 18px; }
.folia-catalog__sheet .folia-catalog__title { font-size: 14px; color: #6a6a6a; }
.folia-catalog__sheet .folia-catalog__scope-list { display: flex; flex-wrap: wrap; gap: 8px; }
.folia-catalog__sheet .folia-catalog__scope.is-apart { margin: 0; padding: 0; border: 0; }
.folia-catalog__sheet .folia-catalog__scope-link { gap: 6px; min-height: 44px; padding: 0 14px; border: 1px solid var(--folia-field); border-radius: 999px; font-size: 15px; }
.folia-catalog__sheet .folia-catalog__scope-link .folia-catalog__num { margin-left: 0; font-size: 13px; }
.folia-catalog__sheet .folia-catalog__scope-link.is-current { background: var(--folia-ink); border-color: var(--folia-ink); }
.folia-catalog__sheet .folia-catalog__scope-link.is-current .folia-catalog__num { color: rgba(255, 255, 255, .75); }
.folia-catalog__sheet .folia-catalog__group { padding: 0; }
.folia-catalog__sheet .folia-catalog__group-head { gap: 12px; min-height: 56px; }
.folia-catalog__sheet .folia-catalog__group-title { flex: none; margin-right: 0; font-size: 17px; }
.folia-catalog__sheet .folia-catalog__picks {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: right;
    font-size: 14px;
    color: #6a6a6a;
}
.folia-catalog__sheet .folia-catalog__group-head .folia-catalog__badge { display: none; }
.folia-catalog__sheet .folia-catalog__group-head .folia-catalog__chevron { margin-left: auto; }
.folia-catalog__sheet .folia-catalog__opts { padding: 0 0 12px; }
.folia-catalog__sheet .folia-catalog__opt { gap: 14px; min-height: 46px; }
.folia-catalog__sheet .folia-catalog__box { width: 20px; height: 20px; }
.folia-catalog__sheet .folia-catalog__more-head { min-height: 44px; }
.folia-catalog__sheet .folia-catalog__more[open] { padding-bottom: 48px; }
.folia-catalog__sheet .folia-catalog__range { margin: 0 0 16px; }
.folia-catalog__sheet .folia-catalog__price { height: 48px; }
.folia-catalog__sheet .folia-catalog__range-go,
.folia-catalog__sheet .folia-catalog__clear-row { display: none; }
/* On a tablet the panel still fills the screen, its content a readable column in the middle. */
@media (min-width: 768px) {
    .folia-catalog__sheet-head,
    .folia-catalog__sheet-body,
    .folia-catalog__sheet-foot { padding-right: max(16px, calc((100% - 600px) / 2)); padding-left: max(16px, calc((100% - 600px) / 2)); }
}

/* --- Focus rings (the theme turns outlines off everywhere) --------------------------------- */
.folia-catalog__opt:focus-visible,
.folia-catalog__scope-link:focus-visible,
.folia-catalog__group-head:focus-visible,
.folia-catalog__more-head:focus-visible,
.folia-catalog__chip:focus-visible,
.folia-catalog__clear:focus-visible,
.folia-catalog__clear-all:focus-visible,
.folia-catalog__open:focus-visible,
.folia-catalog-sort__current:focus-visible,
.folia-catalog-sort__opt:focus-visible,
.folia-catalog__range-go:focus-visible,
.folia-catalog__sheet-clear:focus-visible,
.folia-catalog__sheet-close:focus-visible,
.folia-catalog__loadmore-btn:focus-visible,
.folia-catalog__loadprev-btn:focus-visible,
.folia-catalog__apply:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28); }

/* =========================================================================
 * Product page on phones (owner, 2026-11-03; HANDOFF-2026-11-03-product-page-phone.md):
 * under the photo come the price, the sizes, the quantity and «Dodaj do koszyka», then the
 * delivery lines, then the description cut to three lines (single-product/view.js opens it).
 * Reordered here on the same markup, below Tailwind's lg where the page is one column, so
 * computers are unchanged. A bar fixed to the bottom carries the price and the button while
 * the real one is off screen; the contact button moves up above it.
 * ========================================================================= */
.folia-desc-toggle,
.folia-pdp-bar { display: none; }
/* Weights: tailwind.css forces Light (300) on everything inside .folia-canvas from its @layer
   base with !important, which no unlayered rule outranks; these join that layer (the
   statement repeats tailwind.css's own layer order, so it stays the same whichever sheet
   comes first). The bar's price is a .woocommerce-Price-amount, already 800 there. */
@layer properties, theme, base, components, utilities;
@layer base {
    .folia-canvas .folia-desc-toggle,
    .folia-canvas .folia-pdp-bar__btn { font-weight: 600 !important; }
}
@media (max-width: 1023.98px) {
    .folia-block-single-product .folia-product-summary > .folia-cart { order: -1; }
    .folia-block-single-product .folia-cart > .folia-product-price { order: -1; }
    /* Tighter, so the button sits within about a screen of the top even with three rows of sizes:
       16px between the price, the sizes and the button, 8px between sizes, and the quantity beside
       the button (the delivery lines take the full width below them). */
    .folia-block-single-product .folia-cart { gap: 16px; }
    .folia-block-single-product .folia-variation > .flex-wrap { gap: 8px; }
    .folia-block-single-product .folia-cart > .items-start { flex-flow: row wrap; align-items: center; gap: 16px 10px; }
    .folia-block-single-product .folia-cart > .items-start > .folia-qty { flex: 0 0 128px; width: 128px; height: 56px !important; }
    .folia-block-single-product .folia-cart > .items-start > .folia-add-to-cart { flex: 1 1 0; width: auto; min-width: 0; max-width: 384px; }
    .folia-block-single-product .folia-cart > .items-start > p { flex: 1 0 100%; }
    .folia-block-single-product .folia-product-description.is-clamped {
        max-height: 84px; /* three lines of 28px (leading-7) */
        overflow: hidden;
        -webkit-mask-image: linear-gradient(#000 56px, rgba(0, 0, 0, .25));
        mask-image: linear-gradient(#000 56px, rgba(0, 0, 0, .25));
    }
    .folia-block-single-product .folia-desc-toggle:not([hidden]) {
        display: inline-flex;
        align-self: flex-start;
        align-items: center;
        min-height: 44px;
        margin: -20px 0 0; /* close under the text, against the column's 24px gap */
        padding: 0;
        border: 0;
        background: none;
        color: var(--folia-ink);
        font: inherit;
        font-size: 15px;
        font-weight: 600;
        text-decoration: underline;
        text-underline-offset: 3px;
        cursor: pointer;
    }
    .folia-block-single-product .folia-desc-toggle:focus-visible { outline: 2px solid var(--folia-ink); outline-offset: 2px; }

    /* The sizes the bar sent the visitor to: a short ring around them. */
    .folia-block-single-product .folia-variation.is-hint .folia-swatch { animation: folia-swatch-hint 1.4s ease 1; }
    @keyframes folia-swatch-hint {
        0%, 100% { box-shadow: none; }
        30%, 70% { box-shadow: 0 0 0 3px rgba(30, 30, 30, .22); border-color: var(--folia-ink); }
    }

    .folia-pdp-bar {
        display: flex;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 44; /* under the contact button's open card (55) and the header (50) */
        align-items: center;
        gap: 14px;
        padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
        background: #fff;
        border-top: 1px solid var(--folia-line);
        box-shadow: 0 -6px 18px rgba(0, 0, 0, .06);
        transform: translateY(110%);
        visibility: hidden;
        transition: transform .22s ease, visibility 0s linear .22s;
    }
    .folia-pdp-bar[data-shown="true"] {
        transform: none;
        visibility: visible;
        transition: transform .22s ease;
    }
    .folia-pdp-bar__price {
        flex: none;
        max-width: 42%;
        color: var(--folia-ink);
        font-size: 20px;
        font-weight: 800;
        line-height: 1.15;
        letter-spacing: .01em;
        white-space: nowrap;
        text-transform: uppercase; /* «ZŁ», as the page's own price (.folia-product-price is Tailwind's uppercase) */
    }
    .folia-pdp-bar__price del { display: block; font-size: 13px; font-weight: 400; color: var(--folia-muted); }
    .folia-pdp-bar__price ins { text-decoration: none; }
    .folia-pdp-bar__price .screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
    body .folia-pdp-bar__btn {
        flex: 1 1 auto;
        min-width: 0;
        height: 48px;
        padding: 0 12px;
        border: 0;
        border-radius: 12px;
        background: var(--folia-ink);
        color: #fff;
        font: inherit;
        font-size: 16px;
        font-weight: 600;
        line-height: 1.1;
        cursor: pointer;
        box-shadow: 0 1px 2px rgba(0, 0, 0, .12);
        transition: background-color .15s ease, transform .1s ease;
    }
    body .folia-pdp-bar__btn:active { transform: scale(.98); }
    body .folia-pdp-bar__btn.loading { opacity: .6; }
    body .folia-pdp-bar__btn:focus-visible { outline: 2px solid var(--folia-ink); outline-offset: 2px; }
    @media (hover: hover) { body .folia-pdp-bar__btn:hover { background: #3f3f46; } }
    @media (prefers-reduced-motion: reduce) {
        .folia-pdp-bar, .folia-pdp-bar[data-shown="true"] { transition: none; }
        .folia-block-single-product .folia-variation.is-hint .folia-swatch { animation: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .22); }
    }
    /* The contact button steps up above the bar while it shows. */
    .folia-contact-fab { transition: bottom .22s ease; }
    body.folia-pdp-bar-on .folia-contact-fab { bottom: calc(88px + env(safe-area-inset-bottom, 0px)); }
}

/* =========================================================================
 * Product carousels on phones and small tablets (owner, 2026-11-03: «Why the connected products
 * is so big?»): «Powiązane produkty» on the product page and the homepage's «Nowości» and
 * «Popularne» (the same markup) show about 2.3 cards below 768 px and 3.3 from 768 px, so the
 * next card peeks in and the row reads as swipeable (the viewport scrolls by touch below 1280 px;
 * the arrows stay). Each card's parts are scaled to the smaller tile, as the catalog's two-up
 * phone cards are (the name is an <a> on the product page, an <h3> on the homepage). The photos are lazy backgrounds (inc/folia-lazy-bg.php), which already pick
 * the smallest copy that covers the tile, so the smaller tile fetches smaller files.
 * Computers (1024 px and up) are unchanged.
 * ========================================================================= */
/* «Powiązane produkty»: light Gilroy like the site's other section headings (it fell through to
   theme.json's heading font, Cardo, whose files are empty; theme.json now names Gilroy). */
.folia-block-related-products h2 { font-weight: 300; }
@media (max-width: 1023.98px) {
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card {
        width: calc((100% - 24px) / 2.3);
    }
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card > .mt-4 { margin-top: 10px; line-height: 1.3; overflow-wrap: anywhere; }
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card > .mt-4 + div { margin-top: 4px; font-size: 14px; }
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card span.absolute.top-3 { top: 8px; width: 52px; height: 24px; font-size: 12px; }
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-product-card__cart { width: 38px; height: 38px; }
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-product-card__cart svg { width: 20px; height: 22px; }
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card .folia-like-btn { top: 8px; right: 8px; width: 32px; height: 32px; }
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card .folia-like-btn svg { width: 17px; height: 17px; }
}
@media (min-width: 768px) and (max-width: 1023.98px) {
    :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card {
        width: calc((100% - 48px) / 3.3);
    }
}
/* The name's size: tailwind's `!text-base` is a layered !important, which only an earlier layer's
   !important outranks (the statement repeats tailwind.css's own layer order). */
@layer properties, theme, base, components, utilities;
@layer base {
    @media (max-width: 1023.98px) {
        :is(.folia-block-related-products, .folia-block-new-products, .folia-block-popular-products) .folia-products-card > .mt-4 { font-size: 15px !important; }
    }
}

/* =========================================================================
 * Promotions («Bukiety dnia»), inc/folia-promo-front.php: a black badge in the «New» badge's place
 * (same spot and height, as wide as its text), the old price crossed out in grey next to the new
 * one, an «until …» line, and the chip over the «?promo=1» catalog. The weights join tailwind.css's
 * @layer base for the reason given above (it forces Light on everything in .folia-canvas).
 * ========================================================================= */
.folia-promo-badge {
	position: absolute; top: 12px; left: 0; z-index: 2;
	display: flex; align-items: center; justify-content: center;
	height: 28px; padding: 0 8px; box-sizing: border-box;
	background: #1e1e1e; color: #fff; font-size: 14px; line-height: 1; white-space: nowrap;
}
@media (min-width: 1280px) {
	.folia-promo-badge { top: 20px; height: 35px; font-size: 18px; }
}
.folia-products-card del,
.folia-product-price del { color: #9a9a9a; text-decoration: line-through; margin-right: 6px; }
.folia-pdp-bar__price del { color: #9a9a9a; }
/* Normal weight where no .folia-canvas rule reaches (the product page: its price box is font-black, 900, which the
   crossed-out price would inherit); inside .folia-canvas the @layer base rules below do it. */
.folia-products-card del, .folia-products-card del *,
.folia-product-price del, .folia-product-price del * { font-weight: 400; }
.folia-products-card ins,
.folia-product-price ins { text-decoration: none; }
.folia-promo-until { margin-top: 4px; font-size: 12px; line-height: 1.3; color: #6a6a6a; }
.folia-block-single-product .folia-product-price + .folia-promo-until { margin-top: -8px; }
@media (max-width: 1023.98px) {
	.folia-block-single-product .folia-cart > .folia-promo-until { order: -1; }
}
.folia-promo-chip { display: flex; align-items: center; gap: 16px; margin-bottom: 24px; }
.folia-promo-chip__label { display: inline-flex; align-items: center; height: 32px; padding: 0 12px; background: #1e1e1e; color: #fff; font-size: 14px; }
.folia-promo-chip__all { color: #1e1e1e; font-size: 16px; text-decoration: underline; }
/* The homepage row «Bukiety dnia» (inc/folia-promo-front.php, assets/js/folia-promo-home.js): a snap-scrolling row,
   cards 62% wide on phones so the next one peeks, four across on computers. */
.folia-promo-home { position: relative; width: 100%; }
.folia-promo-home__eyebrow { display: flex; justify-content: space-between; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: #6a6a6a; }
.folia-promo-home__eyebrow b { color: #1e1e1e; letter-spacing: .06em; font-weight: 600; }
.folia-promo-home__title { margin: 6px 0 16px; font-size: clamp(28px, 4vw, 55px); line-height: 1.1; font-weight: 300; color: #1e1e1e; }
.folia-promo-home__viewport { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.folia-promo-home__viewport::-webkit-scrollbar { display: none; }
.folia-promo-home__track { display: flex; gap: 12px; }
.folia-promo-home__card { flex: 0 0 62%; min-width: 0; scroll-snap-align: start; }
.folia-promo-home__photo { aspect-ratio: 440 / 413; overflow: hidden; background: #f3f0eb; }
.folia-promo-home__photo a:not(.folia-product-card__cart) { display: block; width: 100%; height: 100%; } /* the photo's link, not the bag */
.folia-promo-home__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.folia-promo-home__photo .folia-promo-badge { top: 8px; height: 24px; font-size: 12px; }
.folia-promo-home__name { margin: 10px 0 0; font-size: 15px; line-height: 1.3; font-weight: 300; color: #1e1e1e; overflow-wrap: anywhere; }
.folia-promo-home__name a { color: inherit; text-decoration: none; }
.folia-promo-home__name a:hover { text-decoration: underline; text-underline-offset: 3px; }
.folia-promo-home__price { margin-top: 4px; font-size: 14px; color: #1e1e1e; }
.folia-promo-home__arrows { display: flex; justify-content: center; gap: 12px; margin-top: 16px; }
.folia-promo-home__arrows[hidden] { display: none; } /* every card fits: nothing to scroll (folia-promo-home.js) */
.folia-promo-home__arrow { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 1px dashed #9c969680; border-radius: 4px; background: transparent; color: #1e1e1e; cursor: pointer; }
.folia-promo-home__arrow--prev { transform: rotate(180deg); }
.folia-promo-home__arrow:disabled { opacity: .3; cursor: default; }
.folia-promo-home__all { display: block; margin-top: 12px; padding: 12px; border: 1px solid #1e1e1e; text-align: center; font-size: 14px; color: #1e1e1e; text-decoration: none; }
@media (min-width: 640px) {
	.folia-promo-home__card { flex-basis: calc((100% - 24px) / 3.3); }
}
@media (min-width: 1024px) {
	.folia-promo-home__track { gap: 16px; }
	.folia-promo-home__card { flex-basis: calc((100% - 48px) / 4); }
	.folia-promo-home__name { font-size: 22px; margin-top: 16px; }
	.folia-promo-home__price { font-size: 18px; margin-top: 8px; }
	.folia-promo-home__photo .folia-promo-badge { top: 20px; height: 35px; font-size: 18px; }
	.folia-promo-home__eyebrow { justify-content: flex-start; gap: 16px; font-size: 13px; }
	.folia-promo-home__title { margin-bottom: 32px; }
	.folia-promo-home__arrows { position: absolute; top: 0; right: 0; margin: 0; }
	.folia-promo-home__arrow { width: 43px; height: 43px; }
	.folia-promo-home__all { display: inline-block; margin-top: 24px; padding: 12px 32px; }
}
.folia-promo-home__all:hover { background: #1e1e1e; color: #fff; }
.folia-promo-home__arrow:not(:disabled):hover { background: #1e1e1e; color: #fff; }
@layer base {
	.folia-canvas .folia-promo-home__eyebrow b { font-weight: 600 !important; }
	.folia-canvas .folia-promo-home__price,
	.folia-canvas .folia-promo-home__price ins,
	.folia-canvas .folia-promo-home__price .woocommerce-Price-amount { font-weight: 700 !important; }
	.folia-canvas .folia-promo-home__price del,
	.folia-canvas .folia-promo-home__price del .woocommerce-Price-amount { font-weight: 400 !important; }
	.folia-canvas .folia-promo-badge,
	.folia-canvas .folia-promo-chip__label { font-weight: 500 !important; }
	.folia-canvas .folia-products-card del,
	.folia-canvas .folia-products-card del .woocommerce-Price-amount,
	.folia-canvas .folia-product-price del,
	.folia-canvas .folia-product-price del .woocommerce-Price-amount { font-weight: 400 !important; }
	/* The crossed-out price's own text: tailwind.css sets 800 on «.woocommerce-Price-amount *» (the <bdi> and the
	   currency), which the amount's 400 above does not reach; «del *» outranks it (one element more). */
	.folia-canvas .folia-products-card del *,
	.folia-canvas .folia-product-price del *,
	.folia-canvas .folia-promo-home__price del *,
	.folia-canvas .folia-pdp-bar__price del,
	.folia-canvas .folia-pdp-bar__price del * { font-weight: 400 !important; }
}

/* =========================================================================
 * The catalog block (blocks/folia-home-blocks/src/catalog/render.php) on phones: two cards a row
 * (owner, 2026-11-05, as on the new catalog), each card's name, price, «New» or promotion badge,
 * bag button and heart scaled to the half-width tile; the photo's sizes say half the screen. The
 * new catalog ([data-folia-catalog]) has rules of its own. The name's size joins tailwind.css's
 * @layer base: its !text-base is an !important in a layer, which an unlayered rule never beats.
 * ========================================================================= */
@media (max-width: 639.98px) {
	.folia-block-catalog:not([data-folia-catalog]) .folia-catalog-products > .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 12px; row-gap: 28px; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-products-card > a.mt-4 { margin-top: 10px; overflow-wrap: anywhere; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-products-card > a.mt-4 + div { margin-top: 4px; font-size: 14px; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-products-card span.absolute.top-3 { top: 8px; width: 52px; height: 24px; font-size: 12px; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-products-card .folia-promo-badge { top: 8px; height: 24px; padding: 0 6px; font-size: 12px; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-product-card__cart { width: 38px; height: 38px; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-product-card__cart svg { width: 20px; height: 22px; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-products-card .folia-like-btn { top: 8px; right: 8px; width: 32px; height: 32px; }
	.folia-block-catalog:not([data-folia-catalog]) .folia-products-card .folia-like-btn svg { width: 17px; height: 17px; }
}
@layer base {
	@media (max-width: 639.98px) {
		.folia-canvas .folia-block-catalog:not([data-folia-catalog]) .folia-products-card > a.mt-4 { font-size: 15px !important; line-height: 1.3; }
	}
}

/* =========================================================================
 * «Pokaż więcej» under the catalog block's grid, «Pokaż poprzednie» above it (owner, 2026-11-05;
 * assets/js/folia-catalog-more.js, as the new catalog's on staging). The script draws them and hides
 * the page links (folia-more-off), which stay in the HTML for no-JS and crawlers. A quiet secondary
 * button, «Pokazano X z Y» above it, centred under the grid. The weight joins tailwind.css's
 * @layer base (it forces Light on everything in .folia-canvas).
 * ========================================================================= */
.folia-more-off { display: none !important; }
.folia-more { display: flex; flex-direction: column; align-items: center; padding-top: 32px; overflow-anchor: none; }
.folia-more__btn {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 220px; height: 44px; padding: 0 28px;
	border: 1px solid var(--folia-ink); border-radius: var(--folia-r-field);
	background: #fff; color: var(--folia-ink); font-size: 15px; white-space: nowrap; cursor: pointer;
	transition: background-color .15s ease, color .15s ease;
}
.folia-more .folia-more__btn { margin-top: 12px; }
.folia-more__btn[hidden] { display: none; }
.folia-more__btn.is-loading { color: #9a9a9a; cursor: progress; }
@media (hover: hover) {
	.folia-more__btn:hover { background: var(--folia-soft); }
}
.folia-more__btn:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(30, 30, 30, .28); }
.folia-more__shown { margin: 0; text-align: center; font-size: 14px; color: #6a6a6a; }
.folia-more__live { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.folia-more__prev { display: flex; justify-content: center; margin: 0 0 24px; }
.folia-more__ghost { background: #f4f1ec; }
@media (min-width: 1280px) {
	.folia-more { padding-left: 40px; } /* under the grid: the products column's own 40 px, as the page links */
}
@layer base {
	.folia-canvas .folia-more__btn { font-weight: 500 !important; }
}

/* =========================================================================
 * «W bukiecie» on the product page (inc/folia-recipes-front.php): a row of round flower photos
 * with their counts, for the chosen size. It sits in the slot under the size buttons
 * (single-product/view.js swaps it when a size is picked); the form's own gap is the space above.
 * The visual count and name are hidden from screen readers, which hear «5 × Róża» once per item.
 * ========================================================================= */
.folia-recipe-slot:empty { display: none; }
.folia-recipe__title { display: inline; margin: 0; font-size: 18px; font-weight: 700; line-height: 1.3; color: #000; }
@media (min-width: 1280px) {
	.folia-recipe__title { font-size: 20px; }
}
.folia-recipe__meta { margin-left: 8px; font-size: 14px; line-height: 1.3; color: var(--folia-muted); }
.folia-recipe__row {
	display: flex; gap: 12px; margin: 12px 0 0; padding: 0 0 4px; list-style: none;
	overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin;
}
.folia-recipe__row:focus-visible { outline: 2px solid var(--folia-ink); outline-offset: 2px; }
/* Item width follows the row: about 4.4 items fit on a phone (content 328-398 px), so a part of the next one always
   shows and tells the shopper the row scrolls; 76 px at most (computers), 64 px at least (the photo). */
.folia-recipe__item { position: relative; flex: 0 0 clamp(64px, calc((100% - 36px) / 4.4), 76px); min-width: 0; margin: 0; padding: 0; scroll-snap-align: start; text-align: center; }
.folia-recipe__photo {
	position: relative; display: flex; align-items: center; justify-content: center;
	width: 64px; height: 64px; margin: 0 auto; border-radius: 50%; background: var(--folia-soft); color: var(--folia-muted);
}
.folia-recipe__photo img { display: block; width: 64px; height: 64px; border-radius: 50%; object-fit: cover; }
.folia-recipe__count {
	position: absolute; right: -4px; bottom: -2px; min-width: 24px; height: 24px; padding: 0 6px; box-sizing: border-box;
	display: inline-flex; align-items: center; justify-content: center; border-radius: 12px;
	background: var(--folia-ink); color: #fff; font-size: 13px; font-weight: 600; line-height: 1;
}
.folia-recipe__name {
	display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
	margin-top: 8px; font-size: 13px; line-height: 1.3; color: var(--folia-text); overflow-wrap: anywhere;
}
.folia-recipe__sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.folia-recipe__pack { margin: 12px 0 0; font-size: 14px; line-height: 1.4; color: var(--folia-muted); }
@layer base {
	.folia-canvas .folia-recipe__title { font-weight: 700 !important; }
	.folia-canvas .folia-recipe__count { font-weight: 600 !important; }
}
