/*
Theme Name: Alkojuomat
Theme URI: https://alkojuomat.com
Author: Alkojuomat
Description: Custom theme for Alkojuomat online store
Version: 1.0.0
Text Domain: alkojuomat
*/

/* ===== RESET ===== */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* ===== CSS TOKENS ===== */
:root {
    --color-primary: #6697cd;
    --color-primary-dark: #5182b8;
    --color-primary-light: #89b4e8;
    --color-primary-pale: #eef4fb;

    --color-white: #ffffff;
    --color-bg: #f8fafc;
    --color-bg-hover: #f1f5f9;
    --color-text: #1e293b;
    --color-text-secondary: #64748b;
    --color-text-muted: #94a3b8;
    --color-border: #e2e8f0;
    --color-border-light: #f1f5f9;

    --color-success: #10b981;
    --color-success-bg: #ecfdf5;
    --color-star: #f59e0b;
    --color-danger: #ef4444;
    --color-sale: #dc2626;
    --color-sale-bg: #fef2f2;

    --font-display: 'Playfair Display', Georgia, serif;
    --font-body: 'Montserrat', -apple-system, sans-serif;

    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
    --space-8: 32px;
    --space-10: 40px;
    --space-12: 48px;

    --radius-sm: 4px;
    --radius-md: 6px;
    --radius-lg: 8px;

    --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
    --shadow-md: 0 2px 4px rgba(0,0,0,0.05);

    --transition: 0.15s ease;
}

body {
    font-family: var(--font-body);
    font-size: 16px;
    line-height: 1.6;
    background: var(--color-bg);
    color: var(--color-text);
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }

button, input, select, textarea {
    font-family: inherit;
}

/* ===== CONTAINER ===== */
.header-container,
.footer-container,
.site-container {
    max-width: 1610px;
    margin: 0 auto;
    padding: 0 24px;
}

/* ============================================
   HEADER
   ============================================ */

.site-header {
    font-family: var(--font-body);
    font-size: 16px;
    line-height: 1.6;
    color: var(--color-text);
    /* The whole header (main header + nav) is pinned. The containing block is
       <body>, so it stays pinned for the entire page (sticking on .main-header
       alone detached early because its containing block — .site-header — is
       only as tall as the header). */
    position: sticky;
    top: 0;
    z-index: 100;
}

/* --- Main Header --- */
.site-header .main-header {
    background: white;
    border-bottom: 1px solid var(--color-border);
}

.site-header .header-inner {
    display: flex;
    align-items: center;
    gap: 24px;
    padding: 16px 0;
}

.site-header .logo {
    text-decoration: none;
    flex-shrink: 0;
    display: flex;
    align-items: center;
}

.site-header .logo-img {
    height: 44px;
    width: auto;
    display: block;
}

/* Compact square logo — swapped in for the wide one on mobile (see the
   burger/off-canvas block), where the header row also carries the burger. */
.site-header .logo-letter { display: none; height: 38px; width: auto; }

/* Search */
.site-header .search-container {
    flex: 1;
    max-width: 560px;
}

.site-header .search-box {
    display: flex;
    align-items: center;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    height: 44px;
    transition: border-color var(--transition), background var(--transition);
}

.site-header .search-box:focus-within {
    border-color: var(--color-primary);
    background: white;
}

.site-header .search-input {
    flex: 1;
    border: none;
    background: transparent;
    padding: 0 16px;
    font-size: 14px;
    outline: none;
    color: var(--color-text);
}

.site-header .search-input::placeholder {
    color: var(--color-text-muted);
}

.site-header .search-btn {
    background: var(--color-primary);
    border: none;
    color: white;
    width: 36px;
    height: 36px;
    border-radius: var(--radius-sm);
    margin: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background var(--transition);
}

.site-header .search-btn:hover {
    background: var(--color-primary-dark);
}

.site-header .search-btn svg {
    width: 18px;
    height: 18px;
}

/* Trustpilot */
.site-header .trustpilot {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 12px;
    height: 44px;
    background: white;
    border-radius: var(--radius-sm);
    text-decoration: none;
    border: 1px solid var(--color-border);
    transition: border-color var(--transition);
    flex-shrink: 0;
}

.site-header .trustpilot:hover {
    border-color: #00b67a;
}

.site-header .tp-badge {
    display: flex;
    align-items: center;
    gap: 4px;
    background: #00b67a;
    padding: 4px 8px;
    border-radius: var(--radius-sm);
}

.site-header .tp-badge svg {
    width: 14px;
    height: 14px;
    fill: white;
}

.site-header .tp-badge span {
    font-weight: 700;
    font-size: 14px;
    color: white;
}

.site-header .tp-info {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

.site-header .tp-label {
    font-size: 11px;
    font-weight: 600;
    color: #00b67a;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.site-header .tp-count {
    font-size: 11px;
    color: var(--color-text-muted);
}

/* Header Actions */
.site-header .header-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}

.site-header .header-btn {
    background: transparent;
    border: 1px solid var(--color-border);
    color: var(--color-text-secondary);
    width: 44px;
    height: 44px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background var(--transition), color var(--transition), border-color var(--transition);
}

.site-header .header-btn:hover {
    background: var(--color-primary-pale);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.site-header .header-btn svg {
    width: 20px;
    height: 20px;
    stroke-width: 1.5;
}

.site-header .cart-btn {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: white;
    width: auto;
    height: 44px;
    padding: 0 20px;
    gap: 8px;
    border-radius: var(--radius-sm);
    text-decoration: none;
}

.site-header .cart-btn:hover {
    background: var(--color-primary-dark);
    border-color: var(--color-primary-dark);
    color: white;
}

.site-header .cart-btn svg {
    width: 18px;
    height: 18px;
}

.site-header .cart-label {
    font-weight: 600;
    font-size: 14px;
}

.site-header .cart-count {
    background: white;
    color: var(--color-primary);
    font-size: 11px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    margin-left: 4px;
}

/* --- Nav Bar --- */
.site-header .nav-bar {
    background: white;
    border-bottom: 1px solid var(--color-border-light);
    position: relative;
    z-index: 99;
}

/* =====================================================================
   MAIN NAVIGATION — Variant 1 (2-level, wp_nav_menu "main-navigation").
   This supersedes the .nav-list/.dropdown rules above AND the .sm.sm-aj
   block below (both now unused — header.php renders .nav-menu/.sub-menu).
   ===================================================================== */
.site-header .nav-bar .header-container { display: flex; align-items: center; }

.site-header .nav-menu { list-style: none; margin: 0; padding: 0; display: flex; gap: 10px; }
.site-header .nav-menu > li { position: relative; }
.site-header .nav-menu > li > a {
    display: flex; align-items: center; gap: 8px;
    padding: 18px 6px; text-decoration: none; white-space: nowrap;
    font-size: 13.5px; font-weight: 600; color: var(--color-text-secondary);
    text-transform: uppercase; letter-spacing: .3px;
    transition: color .15s ease;
}
.site-header .nav-menu > li > a:hover,
.site-header .nav-menu > li.menu-item-has-children:hover > a,
.site-header .nav-menu > li.menu-item-has-children.focus > a { color: var(--color-primary-dark); }
.site-header .nav-menu > li.is-highlight > a { color: var(--color-sale); }
.site-header .nav-menu > li.is-highlight > a:hover { color: #b91c1c; }

/* Category icons (sliced from the supplied set → assets/img/menu-icons). */
.site-header .aj-cat-viikon-tarjoukset > a::before,
.site-header .aj-cat-oluet > a::before,
.site-header .aj-cat-siiderit-ja-juomasekoitukset > a::before,
.site-header .aj-cat-viinit > a::before,
.site-header .aj-cat-hanapakkaukset > a::before,
.site-header .aj-cat-vakevat > a::before,
.site-header .aj-cat-muut > a::before {
    content: ""; flex: 0 0 auto; width: 30px; height: 30px; margin-right: -4px;
    background-position: center; background-repeat: no-repeat; background-size: contain;
}
.site-header .aj-cat-viikon-tarjoukset > a::before { background-image: url(assets/img/menu-icons/tag.png); }
.site-header .aj-cat-oluet > a::before { background-image: url(assets/img/menu-icons/beer.png); }
.site-header .aj-cat-siiderit-ja-juomasekoitukset > a::before { background-image: url(assets/img/menu-icons/cider.png); }
.site-header .aj-cat-viinit > a::before { background-image: url(assets/img/menu-icons/wine.png); }
.site-header .aj-cat-hanapakkaukset > a::before { background-image: url(assets/img/menu-icons/box.png); }
.site-header .aj-cat-vakevat > a::before { background-image: url(assets/img/menu-icons/bottle.png); }
.site-header .aj-cat-muut > a::before { background-image: url(assets/img/menu-icons/zero.png); }
/* Tighter icon→text gap everywhere except the offers (tag) and 0% (leaf) icons. */
.site-header .aj-cat-viikon-tarjoukset > a::before,
.site-header .aj-cat-muut > a::before { margin-right: 0; }

/* Carets (CSS chevrons in currentColor). */
.site-header .nav-menu .menu-item-has-children > a::after {
    content: ""; flex: 0 0 auto; width: 7px; height: 7px;
    border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
    transform: rotate(45deg); opacity: .5; transition: transform .2s ease;
}
.site-header .nav-menu > .menu-item-has-children:hover > a::after,
.site-header .nav-menu > .menu-item-has-children.focus > a::after { transform: rotate(225deg); }
.site-header .sub-menu .menu-item-has-children > a::after { margin-left: auto; transform: rotate(-45deg); }

/* Dropdown (level 1) — attached to the bar, full-width hover, no rounding. */
.site-header .sub-menu {
    list-style: none; margin: 0; padding: 7px 0;
    position: absolute; top: 100%; left: 0; z-index: 60; min-width: 252px;
    background: var(--color-white); border: 1px solid var(--color-border); border-top: 0;
    border-radius: 0 0 var(--radius-lg) var(--radius-lg);
    box-shadow: 0 14px 28px -16px rgba(15, 23, 42, .20);
    opacity: 0; visibility: hidden;
    transition: opacity .13s ease, visibility .13s;
}
.site-header .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 12px; }
.site-header .menu-item:hover > .sub-menu,
.site-header .menu-item.focus > .sub-menu { opacity: 1; visibility: visible; }
.site-header .sub-menu li { position: relative; }
.site-header .sub-menu a {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 8px 16px; font-size: 13.5px; font-weight: 500; line-height: 1.3;
    color: var(--color-text); text-decoration: none;
}
.site-header .sub-menu a:hover,
.site-header .sub-menu .menu-item-has-children:hover > a,
.site-header .sub-menu .menu-item-has-children.focus > a {
    background: var(--color-primary-pale); color: var(--color-primary-dark);
}
/* "Näytä kaikki" (injected by menu.js): on desktop the parent link already
   navigates to the category, so it's redundant — hide it. It's shown again in
   the mobile breakpoint, where tapping the parent only opens the submenu. */
.site-header .m-all-li { display: none; margin: 0 0 5px; padding: 0 0 5px; border-bottom: 1px solid var(--color-border-light); }
.site-header .m-all-li > a { color: var(--color-primary-dark); font-weight: 700; font-size: 11.5px; text-transform: uppercase; letter-spacing: .05em; }

/* Flyout (level 2) — attached (no gap), square left, dense for long lists.
   top:-7px sits the flyout flush with the level-1 dropdown's top edge: the
   dropdown has padding-top:7px, so its first row starts 7px down, and -7px
   pulls the flyout back up exactly to that top edge (no upward overhang). */
.site-header .sub-menu .sub-menu {
    top: -7px; left: 100%; margin-left: 0;
    border-top: 1px solid var(--color-border); border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
    max-height: 76vh; overflow-y: auto; overflow-x: hidden;
}
.site-header .sub-menu .sub-menu::before { left: -9px; top: 0; right: auto; width: 9px; height: 100%; }
.site-header .sub-menu .sub-menu.flip { left: auto; right: 100%; border-radius: var(--radius-lg) 0 0 var(--radius-lg); }
.site-header .nav-menu > li > .sub-menu.flip { left: auto; right: 0; }
.site-header .sub-menu.is-dense a { font-size: 12px; padding-top: 4px; padding-bottom: 4px; line-height: 1.25; }
.site-header .sub-menu.is-dense .m-all-li > a { font-size: 10.5px; }

/* Mobile toggle. */
.site-header .menu-toggle { display: none; }

/* Off-canvas mobile menu: on desktop the panel is transparent to layout
   (menu flows inline) and the overlay / close X / carets don't render. */
.site-header .col-full-nav { display: contents; }
.site-header .mobile-overlay,
.site-header .mobile-menu.close-drawer,
.site-header .mobile-m-t,
.site-header .col-full-nav .site-trustpilot,
.site-header .col-full-nav .mobile-extra,
.site-header .nav-menu .caret { display: none; }

@media (max-width: 1280px) {
    /* Panel width shared by the panel and the floating close button. */
    .site-header .main-navigation { --aj-pw: min(86vw, 320px); }
    /* The nav bar keeps only the (fixed) off-canvas panel, so it must not
       leave an empty strip under the header. */
    .site-header .nav-bar { border-bottom: 0; }
    .site-header .nav-bar .header-container { display: block; padding: 0; }

    /* Burger: compact icon button, first item of the header row (left of the logo). */
    .site-header .menu-toggle {
        display: inline-flex; align-items: center; justify-content: center;
        flex: 0 0 auto; order: -1; width: 40px; height: 40px; margin-right: -10px;
        border: 0; padding: 0; cursor: pointer; border-radius: var(--radius-md);
        background: transparent; color: var(--color-text);
    }
    .site-header .mt-bars,
    .site-header .mt-bars::before,
    .site-header .mt-bars::after { content: ""; display: block; width: 22px; height: 2px; background: currentColor; position: relative; border-radius: 2px; }
    .site-header .mt-bars::before { top: -7px; }
    .site-header .mt-bars::after { top: 5px; }

    /* Wide logo -> compact square logo. */
    .site-header .logo-img { display: none; }
    .site-header .logo-letter { display: block; }

    /* Category icons stay visible inside the panel (a later rule hides them
       on the cramped inline nav at <=1240px, which no longer applies here),
       and get room to breathe: the base rule pulls them 4px into the label to
       tighten the desktop bar, which reads as "glued" in the panel. */
    .site-header .col-full-nav .nav-menu > li > a { gap: 14px; }
    .site-header .col-full-nav .nav-menu > li > a::before {
        display: block; width: 28px; height: 28px; margin-right: 0;
    }
    /* -- Slide-out panel (ported from the old Shoptimizer off-canvas menu) -- */
    .site-header .col-full-nav {
        display: block;
        position: fixed; z-index: 1102; top: 0; bottom: 0; height: 100%;
        width: var(--aj-pw); left: calc(-1 * var(--aj-pw));
        max-height: 100vh; overflow-y: auto; overflow-x: hidden;
        overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
        background: var(--color-white); padding: 18px 14px 28px;
        box-shadow: 0 0 24px rgba(0, 0, 0, 0.15);
        transition: left 0.35s ease;
    }
    .admin-bar .site-header .col-full-nav { z-index: 100000; }
    body.mobile-toggled { overflow: hidden; }
    body.mobile-toggled .site-header .col-full-nav { left: 0; }

    /* -- Panel header: logo + Trustpilot (ported from the old child theme) -- */
    .site-header .mobile-m-t {
        display: block; margin: 2px 0 14px; max-width: 184px;
    }
    .site-header .mobile-m-t img { display: block; width: 100%; height: auto; }
    .site-header .col-full-nav .site-trustpilot {
        display: block; margin: 0 0 14px; padding-bottom: 14px;
        border-bottom: 1px solid var(--color-border-light); font-size: 13px;
    }
    .site-header .col-full-nav .site-trustpilot .trustpilot-rewiews { margin: 0; line-height: 1.5; }
    .site-header .col-full-nav .site-trustpilot .tp-logo { max-height: 20px; width: auto; vertical-align: middle; margin-right: 4px; }
    .site-header .col-full-nav .site-trustpilot a { color: var(--color-text); text-decoration: none; display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; }
    .site-header .col-full-nav .site-trustpilot .trustpilot-word-rating { font-weight: 700; }
    .site-header .col-full-nav .site-trustpilot .tp-stars { height: 18px; width: auto; vertical-align: middle; }
    .site-header .col-full-nav .site-trustpilot .tp-count { width: 100%; color: var(--color-text-secondary); font-size: 12px; }
    .site-header .col-full-nav .site-trustpilot .tp-count b { color: var(--color-text); font-weight: 600; }

    /* -- Backdrop -- */
    .site-header .mobile-overlay {
        display: block; position: fixed; inset: 0; z-index: 1101;
        background: rgba(52, 53, 55, 0.4);
        opacity: 0; visibility: hidden; transition: opacity 0.35s ease, visibility 0.35s ease;
    }
    body.mobile-toggled .site-header .mobile-overlay { opacity: 1; visibility: visible; }

    /* -- Close 'X' (floats just outside the panel, over the backdrop) -- */
    .site-header .mobile-menu.close-drawer {
        display: block; position: fixed; z-index: 1103; top: 10px; left: var(--aj-pw);
        width: 40px; height: 40px; padding: 5px; border: 0; background: none;
        color: #fff; cursor: pointer;
        opacity: 0; visibility: hidden; transition: 0.3s all;
    }
    body.mobile-toggled .site-header .mobile-menu.close-drawer { opacity: 1; visibility: visible; }
    .site-header .mobile-menu.close-drawer svg { width: 30px; height: 30px; display: block; }

    /* -- Menu list inside the panel --
       Scoped to .col-full-nav on purpose: the cramped-desktop-bar rules further
       down (max-width 1330/1240) shrink the same links to 12.5/11.5px and would
       otherwise win on cascade order, leaving the panel with tiny labels. */
    .site-header .col-full-nav .nav-menu { display: flex; flex-direction: column; width: 100%; gap: 0; margin: 0; }
    .site-header .nav-menu li.menu-item-has-children { position: relative; }
    .site-header .nav-menu > li { position: relative; }
    .site-header .nav-menu > li + li { border-top: 1px solid var(--color-border-light); }
    .site-header .col-full-nav .nav-menu > li > a {
        padding: 13px 34px 13px 4px; font-size: 14px; letter-spacing: 0;
        color: var(--color-text);
    }
    /* Re-assert the offers highlight: the rule above matches the same
       specificity as .is-highlight but sits later in the file. */
    .site-header .col-full-nav .nav-menu > li.is-highlight > a { color: var(--color-sale); }
    .site-header .nav-menu .sub-menu a { padding-right: 34px; }
    /* Long labels ("Väkevät alkoholijuomat") wrap instead of running under the
       caret on the narrowest phones — the desktop bar sets white-space: nowrap. */
    .site-header .col-full-nav .nav-menu a { white-space: normal; }

    /* -- Submenus: accordion, expanded by .dropdown-open -- */
    .site-header .sub-menu {
        position: static !important; display: none; opacity: 1; visibility: visible; transform: none;
        min-width: 0; width: auto !important; max-height: none !important; overflow: visible !important;
        box-shadow: none !important; border: 0 !important; border-radius: 0 !important; margin: 0 !important;
        padding: 0 0 6px 14px !important;
    }
    .site-header .sub-menu::before { display: none; }
    .site-header .menu-item-has-children.dropdown-open > .sub-menu { display: block; }
    .site-header .nav-menu .menu-item-has-children > a::after { display: none; }
    .site-header .m-all-li { display: block; }

    /* Submenu typography — the desktop dropdown is dense by design (small type,
       tight rows, .is-dense shrinks long brand lists further); in the panel it
       needs full-size, roomy rows like the old site. */
    .site-header .col-full-nav .sub-menu a,
    .site-header .col-full-nav .sub-menu.is-dense a {
        justify-content: flex-start;
        padding: 10px 34px 10px 0;
        font-size: 13.5px; font-weight: 500; line-height: 1.3;
        color: var(--color-text);
    }
    .site-header .col-full-nav .sub-menu .sub-menu { padding-left: 14px !important; }
    /* "Näytä kaikki": understated italic row, not a shouty blue caps link. */
    .site-header .col-full-nav .m-all-li { margin: 0; padding: 0; border-bottom: 0; }
    .site-header .col-full-nav .sub-menu .m-all-li > a {
        font-size: 13.5px; font-weight: 400; font-style: italic;
        text-transform: none; letter-spacing: 0; color: var(--color-text-secondary);
        display: inline-block; width: auto;
        text-decoration: underline; text-decoration-style: dashed;
        text-decoration-thickness: 1px; text-underline-offset: 4px;
    }
    .site-header .col-full-nav .sub-menu .m-all-li .m-all-name { text-transform: uppercase; }

    /* Offers row carries no icon; keep its label aligned with the rest. */
    .site-header .col-full-nav .nav-menu > li.aj-cat-viikon-tarjoukset > a::before { display: none; }
    .site-header .col-full-nav .nav-menu > li.aj-cat-viikon-tarjoukset > a { padding-left: 46px; }

    /* No hover/focus highlight in the panel: the desktop dropdown tints the
       hovered row, but on touch that state sticks after a tap and reads as a
       wrongly "selected" item. Keep every row on its resting colour. */
    .site-header .col-full-nav .nav-menu a:hover,
    .site-header .col-full-nav .nav-menu li:hover > a,
    .site-header .col-full-nav .nav-menu li.focus > a { background: none; }
    .site-header .col-full-nav .nav-menu > li:hover > a,
    .site-header .col-full-nav .nav-menu > li.focus > a { color: var(--color-text); }
    .site-header .col-full-nav .nav-menu > li.is-highlight:hover > a,
    .site-header .col-full-nav .nav-menu > li.is-highlight.focus > a { color: var(--color-sale); }
    .site-header .col-full-nav .sub-menu a:hover,
    .site-header .col-full-nav .sub-menu li:hover > a,
    .site-header .col-full-nav .sub-menu li.focus > a { color: var(--color-text); }
    .site-header .col-full-nav .sub-menu .m-all-li > a:hover { color: var(--color-text-secondary); }

    /* -- Caret (expand/collapse arrow); tap toggles the submenu -- */
    .site-header .nav-menu .caret {
        display: flex; position: absolute; z-index: 3; top: 0; right: 0;
        width: 34px; height: 48px; cursor: pointer; align-items: center; justify-content: center;
    }
    .site-header .nav-menu .caret::after {
        content: ""; width: 9px; height: 9px; margin-top: -3px;
        border-right: 2px solid var(--color-text-secondary);
        border-bottom: 2px solid var(--color-text-secondary);
        transform: rotate(45deg); transition: transform 0.3s ease;
    }
    /* Open state points RIGHT (as on the old site), closed points down. */
    .site-header .menu-item-has-children.dropdown-open > .caret::after { transform: rotate(-45deg); margin-top: 0; margin-left: -3px; }
    .site-header .sub-menu .caret { height: 38px; opacity: 0.55; }

    /* -- Info links at the bottom of the panel (ported from .mobile-extra) -- */
    .site-header .col-full-nav .mobile-extra {
        display: block; margin-top: 10px; padding: 14px 4px 4px;
        border-top: 1px solid var(--color-border-light);
    }
    .site-header .col-full-nav .mobile-extra ul { list-style: none; margin: 0; padding: 0; }
    .site-header .col-full-nav .mobile-extra li { margin: 0; }
    .site-header .col-full-nav .mobile-extra a { display: block; padding: 7px 0; font-size: 14px; color: var(--color-text-secondary); }
    .site-header .col-full-nav .mobile-extra a:hover { color: var(--color-primary-dark); }
}

/* ============================================
   FOOTER
   ============================================ */

.site-footer {
    background: #f5e6e0;
    padding: 48px 0 24px;
}

.site-footer .footer-main {
    display: grid;
    grid-template-columns: 1.5fr 2fr 1.5fr;
    gap: 48px;
    margin-bottom: 48px;
}

.site-footer .footer-title {
    font-size: 12px;
    font-weight: 600;
    color: #8b6f66;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 16px;
}

.site-footer .footer-links {
    list-style: none;
    margin: 0;
    padding: 0;
}

.site-footer .footer-links li {
    margin-bottom: 10px;
}

.site-footer .footer-links a {
    color: var(--color-text);
    text-decoration: none;
    font-size: 14px;
    transition: color var(--transition);
}

.site-footer .footer-links a:hover {
    color: var(--color-primary);
}

.site-footer .payment-section {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.site-footer .payment-icons {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.site-footer .payment-icon {
    height: 54px;
    width: auto;
    border-radius: var(--radius-sm);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.12);
    display: block;
}

.site-footer .bank-icons {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.site-footer .bank-icon {
    width: 96px;
    height: 66px;
    display: block;
    object-fit: contain;
}

.site-footer .company-info p {
    font-size: 14px;
    color: var(--color-text);
    margin-bottom: 8px;
}

.site-footer .company-info span {
    color: #8b6f66;
    display: inline-block;
    width: 70px;
}

.site-footer .social-links {
    display: flex;
    gap: 12px;
    margin-top: 16px;
}

.site-footer .social-links a {
    width: 36px;
    height: 36px;
    background: #8b6f66;
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    transition: background var(--transition);
}

.site-footer .social-links a:hover {
    background: var(--color-primary);
}

.site-footer .social-links svg {
    width: 18px;
    height: 18px;
}

.site-footer .footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 24px;
    border-top: 1px solid rgba(139, 111, 102, 0.2);
}

.site-footer .footer-bottom p {
    font-size: 13px;
    color: #8b6f66;
}

.site-footer .footer-bottom-links {
    display: flex;
    gap: 24px;
}

.site-footer .footer-bottom-links a {
    font-size: 13px;
    color: #8b6f66;
    text-decoration: none;
    transition: color var(--transition);
}

.site-footer .footer-bottom-links a:hover {
    color: var(--color-primary);
}

/* ============================================
   CONTENT
   ============================================ */

.site-content {
    min-height: 60vh;
    padding: 48px 0;
}

/* ============================================
   ARTICLE / SINGLE POST
   ============================================ */

.article-page {
    background: var(--color-bg);
    min-height: 100vh;
    padding-bottom: 64px;
}

.article-layout {
    display: grid;
    grid-template-columns: 1fr 340px;
    column-gap: 32px;
    row-gap: 0;
    max-width: 1610px;
    margin: 0 auto;
    padding: 0 24px 32px;
}

.article-main { min-width: 0; }

.article-card {
    background: white;
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-md);
}

.article-content {
    padding: 40px 48px 56px;
}

/* Sidebar */
.article-sidebar {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.sidebar-card {
    background: white;
    border-radius: var(--radius-lg);
    padding: 24px;
    box-shadow: var(--shadow-sm);
}

.sidebar-title {
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 600;
    margin-bottom: 16px;
    color: var(--color-text);
    padding-bottom: 12px;
    border-bottom: 2px solid var(--color-primary);
}

/* Sidebar: Author */
.author-card { text-align: center; }

.author-card-avatar {
    width: 80px;
    height: 80px;
    background: var(--color-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-weight: 700;
    font-size: 28px;
    margin: 0 auto 16px;
}

.author-card-name {
    font-size: 18px;
    font-weight: 600;
    color: var(--color-text);
    margin-bottom: 4px;
}

.author-card-role {
    font-size: 14px;
    color: var(--color-text-muted);
    margin-bottom: 12px;
}

.author-card-bio {
    font-size: 14px;
    color: var(--color-text-secondary);
    line-height: 1.6;
    margin-bottom: 16px;
}

.author-card-social {
    display: flex;
    justify-content: center;
    gap: 8px;
}

.author-card-social a {
    width: 36px;
    height: 36px;
    background: var(--color-bg);
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-secondary);
    transition: background var(--transition), color var(--transition);
}

.author-card-social a:hover {
    background: var(--color-primary);
    color: white;
}

.author-card-social svg { width: 16px; height: 16px; }

/* Sidebar: Popular Articles */
.popular-list { list-style: none; }

.popular-item {
    display: flex;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--color-border);
}

.popular-item:first-child { padding-top: 0; }
.popular-item:last-child { border-bottom: none; padding-bottom: 0; }

.popular-item-image {
    width: 72px;
    height: 72px;
    border-radius: var(--radius-sm);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
}

.popular-item-content { flex: 1; min-width: 0; }

.popular-item-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text);
    line-height: 1.4;
    margin-bottom: 6px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.popular-item-title a {
    color: inherit;
    text-decoration: none;
    transition: color var(--transition);
}

.popular-item-title a:hover { color: var(--color-primary); }

.popular-item-meta {
    font-size: 12px;
    color: var(--color-text-muted);
}

/* Sidebar: Categories */
.category-list { list-style: none; }

.category-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid var(--color-border);
}

.category-item:first-child { padding-top: 0; }
.category-item:last-child { border-bottom: none; padding-bottom: 0; }

.category-item a {
    color: var(--color-text);
    text-decoration: none;
    font-size: 14px;
    transition: color var(--transition);
}

.category-item a:hover { color: var(--color-primary); }

.category-item .count {
    background: var(--color-bg);
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 12px;
    color: var(--color-text-muted);
}

/* Sidebar: Newsletter */
.newsletter-card {
    background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
    color: white;
}

.newsletter-card .sidebar-title {
    color: white;
    border-bottom-color: rgba(255,255,255,0.3);
}

.newsletter-text {
    font-size: 14px;
    line-height: 1.6;
    opacity: 0.9;
    margin-bottom: 16px;
}

.newsletter-form {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.newsletter-input {
    padding: 12px 14px;
    border: none;
    border-radius: var(--radius-sm);
    font-size: 14px;
    background: rgba(255,255,255,0.15);
    color: white;
}

.newsletter-input::placeholder { color: rgba(255,255,255,0.6); }

.newsletter-btn {
    padding: 12px 14px;
    background: white;
    color: var(--color-primary);
    border: none;
    border-radius: var(--radius-sm);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: opacity var(--transition);
}

.newsletter-btn:hover { opacity: 0.9; }

/* Sidebar: Tags Cloud */
.tags-cloud {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.tags-cloud .tag {
    background: var(--color-bg);
    padding: 6px 12px;
    border-radius: 16px;
    font-size: 13px;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: background var(--transition), color var(--transition);
}

.tags-cloud .tag:hover {
    background: var(--color-primary);
    color: white;
}

.sidebar-sticky {
    position: sticky;
    top: 100px;
}

/* Breadcrumbs */
.article-breadcrumbs {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--color-text-muted);
    padding: 20px 0;
    grid-column: 1 / -1;
}

.article-breadcrumbs a {
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: color var(--transition);
}

.article-breadcrumbs a:hover { color: var(--color-primary); }

.article-breadcrumbs svg {
    width: 14px;
    height: 14px;
    stroke: var(--color-text-muted);
}

.article-breadcrumbs span:last-child { color: var(--color-text); }

/* Article Header */
.article-title {
    font-family: var(--font-display);
    font-size: 36px;
    font-weight: 700;
    line-height: 1.25;
    margin-bottom: 16px;
    color: var(--color-text);
}

.article-lead {
    font-size: 19px;
    line-height: 1.5;
    color: var(--color-text-secondary);
    font-weight: 600;
    margin-bottom: 24px;
}

/* Article Meta */
.article-meta {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 16px 0;
    border-top: 1px solid var(--color-border);
    border-bottom: 1px solid var(--color-border);
    margin-bottom: 32px;
    font-size: 14px;
    color: var(--color-text-muted);
}

.article-author {
    display: flex;
    align-items: center;
    gap: 12px;
}

.author-avatar {
    width: 40px;
    height: 40px;
    background: var(--color-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-weight: 600;
    font-size: 14px;
}

.author-info {
    display: flex;
    flex-direction: column;
}

.author-name {
    color: var(--color-text);
    font-weight: 600;
}

.author-role {
    font-size: 12px;
    color: var(--color-text-muted);
}

.article-meta-divider {
    width: 1px;
    height: 24px;
    background: var(--color-border);
}

.article-meta-item {
    display: flex;
    align-items: center;
    gap: 6px;
}

.article-meta-item svg {
    width: 16px;
    height: 16px;
    stroke: var(--color-text-muted);
}

/* Article Hero */
.article-hero {
    margin-bottom: 32px;
    border-radius: var(--radius-md);
    overflow: hidden;
}

.article-hero img {
    width: 100%;
    height: 400px;
    object-fit: cover;
    display: block;
}

.article-hero-caption {
    font-size: 13px;
    color: var(--color-text-muted);
    margin-top: 12px;
    font-style: italic;
}

/* Article Body */
.article-body {
    font-size: 17px;
    line-height: 1.8;
    color: var(--color-text);
}

.article-body p { margin-bottom: 24px; }

.article-body h2 {
    font-family: var(--font-display);
    font-size: 26px;
    font-weight: 700;
    margin: 48px 0 20px;
    color: var(--color-text);
}

.article-body h3 {
    font-size: 20px;
    font-weight: 700;
    margin: 40px 0 16px;
    color: var(--color-text);
}

.article-body blockquote {
    border-left: 4px solid var(--color-primary);
    padding: 16px 24px;
    margin: 32px 0;
    background: var(--color-primary-pale);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    font-style: italic;
    font-size: 18px;
    color: var(--color-text-secondary);
}

.article-body ul,
.article-body ol {
    margin: 24px 0;
    padding-left: 24px;
}

.article-body li { margin-bottom: 12px; }

.article-body a {
    color: var(--color-primary);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color var(--transition);
}

.article-body a:hover { border-bottom-color: var(--color-primary); }
.article-body strong { font-weight: 600; color: var(--color-text); }

/* Info & Warning Boxes */
.info-box {
    background: #f0f9ff;
    border: 1px solid #bae6fd;
    border-radius: var(--radius-md);
    padding: 20px 24px;
    margin: 32px 0;
}

.info-box-title {
    font-weight: 600;
    margin-bottom: 8px;
    color: #0369a1;
    display: flex;
    align-items: center;
    gap: 8px;
}

.info-box p { margin: 0; color: #0c4a6e; font-size: 15px; }

.warning-box {
    background: #fef3c7;
    border: 1px solid #fcd34d;
    border-radius: var(--radius-md);
    padding: 20px 24px;
    margin: 32px 0;
}

.warning-box-title {
    font-weight: 600;
    margin-bottom: 8px;
    color: #92400e;
    display: flex;
    align-items: center;
    gap: 8px;
}

.warning-box p { margin: 0; color: #78350f; font-size: 15px; }

/* Article Tags */
.article-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 48px;
    padding-top: 24px;
    border-top: 1px solid var(--color-border);
}

.article-tags-label {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text-secondary);
    margin-right: 8px;
    display: flex;
    align-items: center;
}

.tag {
    background: var(--color-bg);
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 13px;
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: background var(--transition), color var(--transition);
}

.tag:hover {
    background: var(--color-primary);
    color: white;
}

/* Share Buttons */
.article-share {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 32px;
    padding-top: 24px;
    border-top: 1px solid var(--color-border);
}

.article-share-label {
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text-secondary);
}

.share-btn {
    width: 40px;
    height: 40px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    background: white;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-secondary);
    cursor: pointer;
    transition: background var(--transition), color var(--transition), border-color var(--transition);
}

.share-btn:hover {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: white;
}

.share-btn svg { width: 18px; height: 18px; }

/* Related Articles */
.related-articles { margin-top: 48px; }

.related-title {
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 600;
    margin-bottom: 24px;
    color: var(--color-text);
}

.related-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
}

.related-card {
    background: white;
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    text-decoration: none;
    transition: box-shadow var(--transition);
}

.related-card:hover { box-shadow: var(--shadow-md); }

.related-card-image {
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 48px;
}

.related-card-content { padding: 16px; }

.related-card-category {
    font-size: 11px;
    font-weight: 600;
    color: var(--color-primary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.related-card-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--color-text);
    line-height: 1.4;
    margin-bottom: 8px;
}

.related-card-date {
    font-size: 12px;
    color: var(--color-text-muted);
}

/* ============================================
   PAGE TEMPLATE
   ============================================ */

.page-content {
    background: white;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    padding: 48px 56px;
    max-width: 900px;
    margin: 0 auto;
}

.page-title {
    font-family: var(--font-display);
    font-size: 36px;
    font-weight: 700;
    line-height: 1.25;
    margin-bottom: 32px;
    color: var(--color-text);
}

.page-body {
    font-size: 17px;
    line-height: 1.8;
    color: var(--color-text);
}

.page-body p { margin-bottom: 24px; }
.page-body h2 {
    font-family: var(--font-display);
    font-size: 26px;
    font-weight: 700;
    margin: 48px 0 20px;
}
.page-body h3 { font-size: 20px; font-weight: 700; margin: 40px 0 16px; }
.page-body ul, .page-body ol { margin: 24px 0; padding-left: 24px; }
.page-body li { margin-bottom: 12px; }
.page-body a { color: var(--color-primary); text-decoration: none; border-bottom: 1px solid transparent; transition: border-color var(--transition); }
.page-body a:hover { border-bottom-color: var(--color-primary); }
.page-body blockquote {
    border-left: 4px solid var(--color-primary);
    padding: 16px 24px;
    margin: 32px 0;
    background: var(--color-primary-pale);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    font-style: italic;
    color: var(--color-text-secondary);
}
.page-body img { border-radius: var(--radius-md); }
/* Article-body images keep their vertical spacing, but NOT on WooCommerce pages
   (checkout/cart) where it would push product thumbnails / payment icons askew. */
body:not(.woocommerce-page) .page-body img { margin: 24px 0; }

/* ============================================
   PRODUCT PAGE (WooCommerce)
   ============================================ */

.product-page {
    background: white;
}

.product-page .product-container {
    max-width: 1610px;
    margin: 0 auto;
    padding: 0 24px 48px;
}

/* Product Breadcrumbs */
.product-breadcrumbs {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    padding: 16px 0;
}

.product-breadcrumbs a {
    color: var(--color-primary);
    text-decoration: none;
}

.product-breadcrumbs a:hover {
    text-decoration: underline;
}

.product-breadcrumbs svg {
    width: 14px;
    height: 14px;
    color: var(--color-text-muted);
}

.product-breadcrumbs span {
    color: var(--color-text-secondary);
}

/* Product Grid: 3 columns */
.product-grid {
    display: grid;
    grid-template-columns: 550px 1fr 360px;
    gap: 40px;
    padding-top: 24px;
}
/* Колонки могут сжиматься (иначе min-content таблицы спеков распирает грид) */
.product-grid > * { min-width: 0; }

/* Column 1: Gallery */
.product-gallery {
    position: sticky;
    top: 24px;
    align-self: start;
}

.product-gallery .main-image {
    aspect-ratio: 1;
    background: var(--color-white);
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-lg);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 16px;
    position: relative;
    overflow: hidden;
}

.product-gallery .main-image img {
    max-width: 95%;
    max-height: 95%;
    object-fit: contain;
}

.product-gallery .image-badge {
    position: absolute;
    top: 16px;
    left: 16px;
    padding: 6px 12px;
    background: var(--color-sale);
    color: white;
    font-size: 12px;
    font-weight: 700;
    border-radius: var(--radius-sm);
}

.product-gallery .image-zoom {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 40px;
    height: 40px;
    background: white;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: border-color 0.15s;
}

.product-gallery .image-zoom:hover {
    border-color: var(--color-primary);
}

.product-gallery .image-zoom svg {
    width: 18px;
    height: 18px;
    color: var(--color-text-secondary);
}

.product-gallery .gallery-thumbs {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.product-gallery .thumb {
    aspect-ratio: 1;
    background: var(--color-white);
    border-radius: var(--radius-sm);
    border: 2px solid var(--color-border-light);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color 0.15s;
    overflow: hidden;
}

.product-gallery .thumb:hover,
.product-gallery .thumb.active {
    border-color: var(--color-primary);
}

.product-gallery .thumb img {
    max-width: 90%;
    max-height: 90%;
    object-fit: contain;
}

/* Column 2: Product Info */
.product-info {
    padding-top: 8px;
}

.product-info .product-tags {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
}

.product-info .product-tag {
    padding: 4px 10px;
    border-radius: var(--radius-sm);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    text-decoration: none;
}

.product-info .tag-category {
    background: var(--color-primary-pale);
    color: var(--color-primary);
}

.product-info .tag-sale {
    background: var(--color-sale-bg);
    color: var(--color-sale);
}

.product-info .product-brand {
    font-size: 13px;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.product-info .product-title {
    font-family: var(--font-display);
    font-size: 32px;
    font-weight: 600;
    color: var(--color-text);
    line-height: 1.2;
    margin-bottom: 12px;
}

.product-info .product-origin {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: var(--color-text-secondary);
    margin-bottom: 20px;
}

.product-info .product-origin img {
    width: 24px;
    height: 16px;
    border-radius: 2px;
    box-shadow: 0 0 0 1px rgba(0,0,0,0.1);
}

.product-info .product-rating {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--color-border-light);
    margin-bottom: 20px;
}

.product-info .rating-stars {
    display: flex;
    gap: 2px;
}

.product-info .rating-stars svg {
    width: 16px;
    height: 16px;
    fill: var(--color-star);
}

.product-info .rating-stars svg.empty {
    fill: var(--color-border);
}

.product-info .rating-score {
    font-weight: 600;
    color: var(--color-text);
}

.product-info .rating-count {
    color: var(--color-text-muted);
    font-size: 13px;
}

.product-info .product-desc {
    font-size: 14px;
    line-height: 1.7;
    color: var(--color-text-secondary);
    margin-bottom: 24px;
}

/* ============================================
   Product Specs — Two-tone Table (5B)
   ============================================ */
.product-specs {
    margin-bottom: 24px;
}

.product-specs .specs-title {
    font-family: var(--font-display);
    font-size: 20px;
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: 16px;
}

.product-specs .specs-table {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.product-specs .specs-row {
    display: grid;
    grid-template-columns: 180px 1fr;
    font-size: 13px;
}

.product-specs .specs-row + .specs-row {
    border-top: 1px solid var(--color-border-light);
}

.product-specs .specs-cell {
    padding: 12px 14px;
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
}

.product-specs .specs-cell--label {
    background: var(--color-bg);
    color: var(--color-text-secondary);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.product-specs .specs-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-primary);
    flex-shrink: 0;
}

.product-specs .specs-icon svg {
    width: 14px;
    height: 14px;
}

.product-specs .specs-label-text {
    line-height: 1.3;
}

.product-specs .specs-cell--value {
    background: var(--color-white);
    color: var(--color-text);
    font-weight: 700;
    flex-wrap: wrap;
}

.product-specs .spec-flag {
    width: 20px;
    height: 14px;
    border-radius: 2px;
    object-fit: cover;
    box-shadow: 0 0 0 1px rgba(0,0,0,0.08);
    display: inline-block;
    margin-right: 2px;
    vertical-align: -2px;
}

/* Trustpilot Widget */
.product-trustpilot {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    background: var(--color-bg);
    border-radius: var(--radius-md);
}

.product-trustpilot .tp-logo {
    display: flex;
    align-items: center;
    gap: 6px;
}

.product-trustpilot .tp-logo svg {
    width: 20px;
    height: 20px;
    fill: #00b67a;
}

.product-trustpilot .tp-logo span {
    font-weight: 700;
    font-size: 14px;
    color: var(--color-text);
}

.product-trustpilot .tp-stars {
    display: flex;
    gap: 2px;
}

.product-trustpilot .tp-star {
    width: 20px;
    height: 20px;
    background: #00b67a;
    display: flex;
    align-items: center;
    justify-content: center;
}

.product-trustpilot .tp-star svg {
    width: 12px;
    height: 12px;
    fill: white;
}

.product-trustpilot .tp-info {
    font-size: 13px;
    color: var(--color-text-secondary);
}

.product-trustpilot .tp-info strong {
    color: var(--color-text);
}

/* Column 3: Purchase Card */
/* ============================================
   Purchase Card — Sale-focused layout
   ============================================ */
.purchase-card {
    position: sticky;
    top: 24px;
    align-self: start;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 20px;
    box-shadow: var(--shadow-md);
}

/* Sale banner (only on sale) */
.purchase-card .sale-banner {
    position: relative;
    background: linear-gradient(135deg, var(--color-sale) 0%, #b91c1c 100%);
    color: #fff;
    padding: 12px 14px;
    border-radius: var(--radius-md);
    margin-bottom: 16px;
    overflow: hidden;
}

.purchase-card .sale-banner::before {
    content: '';
    position: absolute;
    top: -30px;
    right: -30px;
    width: 100px;
    height: 100px;
    background: rgba(255,255,255,0.08);
    border-radius: 50%;
}

.purchase-card .sale-label {
    position: relative;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    opacity: 0.85;
    margin-bottom: 2px;
}

.purchase-card .sale-percent {
    position: relative;
    font-family: var(--font-display);
    font-size: 28px;
    font-weight: 700;
    line-height: 1;
}

.purchase-card .sale-save {
    position: relative;
    font-size: 13px;
    font-weight: 600;
    margin-top: 4px;
}

/* Price block */
.purchase-card .price-block {
    margin-bottom: 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--color-border-light);
}

.purchase-card .price-current {
    font-family: var(--font-display);
    font-size: 36px;
    font-weight: 700;
    color: var(--color-text);
    line-height: 1;
    display: block;
}

.purchase-card--sale .price-current {
    color: var(--color-sale);
}

.purchase-card .price-current .woocommerce-Price-currencySymbol {
    margin-left: 2px;
}

.purchase-card .price-was {
    font-size: 15px;
    color: var(--color-text-secondary);
    margin-top: 6px;
    font-weight: 500;
}

.purchase-card .price-was s {
    color: var(--color-text-muted);
}

.purchase-card .per-unit {
    font-size: 14px;
    color: var(--color-text-secondary);
    margin-top: 4px;
    font-weight: 500;
}

/* Stock badge */
.purchase-card .stock-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--color-success);
    background: var(--color-success-bg);
    padding: 4px 10px;
    border-radius: 50px;
    margin-bottom: 14px;
}

.purchase-card .stock-badge::before {
    content: '';
    width: 6px;
    height: 6px;
    background: var(--color-success);
    border-radius: 50%;
}

.purchase-card .stock-badge--out {
    color: var(--color-danger);
    background: #fef2f2;
}

.purchase-card .stock-badge--out::before {
    background: var(--color-danger);
}

/* Promo banner */
.purchase-card .promo-banner {
    background: var(--color-success-bg);
    border: 1px solid var(--color-success);
    border-radius: var(--radius-sm);
    padding: 12px;
    margin-bottom: 14px;
}

.purchase-card .promo-title {
    font-size: 12px;
    font-weight: 700;
    color: var(--color-success);
    text-transform: uppercase;
    margin-bottom: 4px;
}

.purchase-card .promo-text {
    font-size: 13px;
    color: #065f46;
    line-height: 1.4;
}

/* Full-width Qty selector */
.purchase-card .qty-selector--full {
    display: flex;
    width: 100%;
    height: 52px;
    margin-bottom: 10px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.purchase-card .qty-selector--full .qty-btn {
    flex: 0 0 52px;
    width: 52px;
    height: 100%;
    border: none;
    background: var(--color-bg);
    color: var(--color-text);
    font-size: 24px;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    transition: background 0.15s;
    font-family: var(--font-body);
}

.purchase-card .qty-selector--full .qty-btn:hover { background: var(--color-border); }
.purchase-card .qty-selector--full .qty-btn:active { background: #d1d5db; }

.purchase-card .qty-selector--full .qty-input {
    flex: 1 1 0;
    min-width: 0;
    width: auto;
    height: 100%;
    border: none;
    text-align: center;
    font-size: 17px;
    font-weight: 700;
    color: var(--color-text);
    font-family: var(--font-body);
    background: var(--color-white);
    outline: none;
    -moz-appearance: textfield;
    appearance: textfield;
}

.purchase-card .qty-input::-webkit-outer-spin-button,
.purchase-card .qty-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.purchase-card .qty-input:focus {
    background: var(--color-primary-pale);
}

/* Full-width cart button */
.purchase-card .btn-cart--full {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 14px 16px;
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: var(--radius-sm);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
    font-family: var(--font-body);
    margin-bottom: 8px;
}

.purchase-card .btn-cart--full:hover { background: var(--color-primary-dark); }

.purchase-card--sale .btn-cart--full { background: var(--color-sale); }
.purchase-card--sale .btn-cart--full:hover { background: #b91c1c; }

.purchase-card .btn-cart--full svg { width: 18px; height: 18px; }

.purchase-card .btn-cart-divider {
    width: 1px;
    height: 18px;
    background: rgba(255,255,255,0.3);
}

.purchase-card .btn-cart-total {
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 700;
}

/* Cart button states */
.purchase-card .btn-cart--full.is-loading {
    cursor: wait;
    opacity: 0.85;
}

.purchase-card .btn-cart--full.is-loading svg {
    animation: btn-cart-spin 0.9s linear infinite;
}

.purchase-card .btn-cart--full.is-added {
    background: var(--color-success) !important;
}

.purchase-card .btn-cart--full.is-added svg {
    animation: btn-cart-pop 0.4s ease;
}

/* Hide divider/total during loading/added states */
.purchase-card .btn-cart--full.is-loading .btn-cart-divider,
.purchase-card .btn-cart--full.is-loading .btn-cart-total,
.purchase-card .btn-cart--full.is-added .btn-cart-divider,
.purchase-card .btn-cart--full.is-added .btn-cart-total {
    display: none;
}

@keyframes btn-cart-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

@keyframes btn-cart-pop {
    0%   { transform: scale(1); }
    50%  { transform: scale(1.25); }
    100% { transform: scale(1); }
}

/* Toast notification */
.cart-toast {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 12px;
    padding: 12px 14px;
    background: var(--color-success-bg);
    color: var(--color-success);
    border: 1px solid #a7f3d0;
    border-radius: var(--radius-sm);
    font-size: 13px;
    font-weight: 600;
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity 0.25s, transform 0.25s;
}

/* When hidden — really hide (override display: flex) */
.cart-toast[hidden] { display: none !important; }

.cart-toast.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.cart-toast.is-error {
    background: #fef2f2;
    color: #dc2626;
    border-color: #fecaca;
}

.cart-toast .toast-icon-success,
.cart-toast .toast-icon-error {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}

/* Show success icon by default; switch when error class present */
.cart-toast .toast-icon-error   { display: none; }
.cart-toast.is-error .toast-icon-success { display: none; }
.cart-toast.is-error .toast-icon-error   { display: block; }

/* Header cart count pulse */
.cart-count.is-pulse {
    animation: cart-count-pulse 0.45s ease;
}

@keyframes cart-count-pulse {
    0%   { transform: scale(1); }
    40%  { transform: scale(1.35); }
    100% { transform: scale(1); }
}

/* Out-of-stock / unavailable message */
.purchase-card .unavailable-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 6px;
    padding: 18px 16px;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    margin-bottom: 12px;
}

.purchase-card .unavailable-block svg {
    width: 32px;
    height: 32px;
    color: var(--color-danger);
    margin-bottom: 4px;
}

.purchase-card .unavailable-block strong {
    font-size: 14px;
    color: var(--color-text);
}

.purchase-card .unavailable-block p {
    font-size: 12px;
    color: var(--color-text-secondary);
    line-height: 1.5;
    margin: 0;
}

/* Wishlist — full width, outlined */
.purchase-card .btn-wishlist--full {
    width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 14px;
    background: var(--color-white);
    color: var(--color-text-secondary);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s;
    font-family: var(--font-body);
}

.purchase-card .btn-wishlist--full:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.purchase-card--sale .btn-wishlist--full:hover {
    border-color: var(--color-sale);
    color: var(--color-sale);
}

.purchase-card .btn-wishlist--full svg { width: 16px; height: 16px; }

/* Payment logos row */
.purchase-card .payment-section {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 26px;
    padding-top: 14px;
    border-top: 1px solid var(--color-border-light);
}

.purchase-card .payment-section img {
    height: 38px;
    width: auto;
    max-width: 100%;
    display: block;
    opacity: 0.9;
}

/* ============================================
   PRODUCT DESCRIPTION — Variant 5 (refined typography & contrast)
   ============================================ */

/* Local color tokens — stronger hierarchy than the global muted palette */
.desc-v5 {
    --d-text:        #0f172a;   /* almost-black for body */
    --d-text-soft:   #334155;   /* secondary, still very readable */
    --d-text-muted:  #64748b;   /* labels only */
    --d-accent:      var(--color-primary);
    --d-accent-dark: var(--color-primary-dark);
    --d-bg-soft:     #f8fafc;
    --d-bg-tint:     #eef4fb;   /* primary-pale */
    --d-line:        #e2e8f0;
    --d-line-soft:   #f1f5f9;

    background: var(--color-white);
    border-top: 1px solid var(--d-line);
    color: var(--d-text);
}

.desc-v5 .desc-container {
    max-width: 1610px;
    margin: 0 auto;
    padding: 64px 24px 72px;
}

.desc-v5 .article-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 64px;
    align-items: start;
}

.desc-v5 .article-main { min-width: 0; }

.desc-v5 .article-sidebar {
    position: sticky;
    top: 24px;
}

/* ----- Headings ----- */
.desc-v5 .article-main h2 {
    font-family: var(--font-display);
    font-size: 32px;
    font-weight: 700;
    color: var(--d-text);
    margin: 0 0 18px;
    line-height: 1.2;
    letter-spacing: -0.01em;
}

.desc-v5 .article-main h3 {
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 700;
    color: var(--d-text);
    margin: 56px 0 18px;
    line-height: 1.25;
    letter-spacing: -0.005em;
    padding-top: 24px;
    border-top: 1px solid var(--d-line-soft);
}

.desc-v5 .article-main h3:first-of-type { border-top: none; padding-top: 0; }

/* ----- Lead paragraph ----- */
.desc-v5 .article-intro {
    font-size: 19px;
    line-height: 1.6;
    color: var(--d-text);
    margin-bottom: 24px;
    font-weight: 500;
    font-family: var(--font-display);
    font-style: italic;
}

/* ----- Article body text ----- */
.desc-v5 .article-text {
    font-size: 16px;
    line-height: 1.7;
    color: var(--d-text-soft);
}

.desc-v5 .article-text p { margin-bottom: 16px; }
.desc-v5 .article-text p:last-child { margin-bottom: 0; }
.desc-v5 .article-text strong { color: var(--d-text); font-weight: 600; }

/* ----- Tasting cards ----- */
.desc-v5 .tasting-visible {
    margin-top: 24px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}

.desc-v5 .tasting-card {
    background: var(--color-white);
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
    padding: 28px 24px;
    text-align: left;
    position: relative;
    overflow: hidden;
}

.desc-v5 .tasting-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--d-accent);
}

.desc-v5 .tasting-card--smell::before { background: #a855f7; }  /* purple for nose */
.desc-v5 .tasting-card--taste::before { background: #f59e0b; }  /* amber for taste */

.desc-v5 .tasting-card .tasting-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--d-bg-tint);
    color: var(--d-accent);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 16px;
}

.desc-v5 .tasting-card--smell .tasting-icon { background: #f5ecfd; color: #a855f7; }
.desc-v5 .tasting-card--taste .tasting-icon { background: #fef3c7; color: #b45309; }

.desc-v5 .tasting-card .tasting-icon svg { width: 22px; height: 22px; }

.desc-v5 .tasting-card h4 {
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 700;
    color: var(--d-text);
    margin-bottom: 10px;
    letter-spacing: -0.005em;
    text-transform: none;
}

.desc-v5 .tasting-card p {
    font-size: 14px;
    line-height: 1.6;
    color: var(--d-text-soft);
    margin: 0;
}

/* ----- Food pairing chips ----- */
.desc-v5 .pairing-grid {
    margin-top: 20px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.desc-v5 .pairing-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border: 1px solid var(--d-line);
    border-radius: 100px;
    font-size: 14px;
    font-weight: 600;
    color: var(--d-text);
    background: var(--color-white);
    transition: border-color 0.15s, color 0.15s;
}

.desc-v5 .pairing-chip:hover {
    border-color: var(--d-accent);
    color: var(--d-accent-dark);
}

.desc-v5 .pairing-chip .emoji { font-size: 18px; line-height: 1; }

/* ----- Accordion ----- */
.desc-v5 .accordion-group {
    margin-top: 56px;
    border-top: 1px solid var(--d-line);
}

.desc-v5 .accordion-item { border-bottom: 1px solid var(--d-line); }

.desc-v5 .accordion-trigger {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 22px 0;
    background: none;
    border: none;
    cursor: pointer;
    font-family: var(--font-body);
    font-size: 16px;
    font-weight: 600;
    color: var(--d-text);
    text-align: left;
    transition: color 0.15s;
}

.desc-v5 .accordion-trigger:hover { color: var(--d-accent); }

.desc-v5 .accordion-trigger .acc-icon {
    width: 22px;
    height: 22px;
    stroke: var(--d-text-soft);
    fill: none;
    transition: transform 0.25s;
    flex-shrink: 0;
}

.desc-v5 .accordion-item.is-open .accordion-trigger .acc-icon {
    transform: rotate(180deg);
    stroke: var(--d-accent);
}

.desc-v5 .accordion-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease;
}

.desc-v5 .accordion-item.is-open .accordion-body {
    max-height: 1500px;
}

.desc-v5 .accordion-content {
    padding: 4px 0 28px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--d-text-soft);
}

.desc-v5 .accordion-content p { margin-bottom: 12px; }
.desc-v5 .accordion-content p:last-child { margin-bottom: 0; }

/* ----- Specs table ----- */
.desc-v5 .specs-table {
    width: 100%;
    border-collapse: collapse;
}

.desc-v5 .specs-table tr { border-bottom: 1px solid var(--d-line-soft); }
.desc-v5 .specs-table tr:last-child { border-bottom: none; }
.desc-v5 .specs-table td { padding: 12px 0; font-size: 15px; }

.desc-v5 .specs-table td:first-child {
    color: var(--d-text-muted);
    width: 200px;
    font-weight: 500;
    text-transform: uppercase;
    font-size: 12px;
    letter-spacing: 0.4px;
}

.desc-v5 .specs-table td:last-child {
    color: var(--d-text);
    font-weight: 600;
}

/* ----- FAQ ----- */
.desc-v5 .faq-item { margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid var(--d-line-soft); }
.desc-v5 .faq-item:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }

.desc-v5 .faq-question {
    font-family: var(--font-display);
    font-weight: 700;
    color: var(--d-text);
    margin-bottom: 8px;
    font-size: 16px;
    line-height: 1.35;
}

.desc-v5 .faq-answer {
    font-size: 15px;
    color: var(--d-text-soft);
    line-height: 1.7;
}

/* ----- Sidebar: TOC ----- */
.desc-v5 .toc-card {
    background: var(--color-white);
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
    padding: 24px;
    margin-bottom: 20px;
}

.desc-v5 .toc-card h4,
.desc-v5 .quick-specs h4 {
    font-family: var(--font-display);
    font-size: 14px;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
    color: var(--d-text);
    margin-bottom: 14px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--d-line);
}

.desc-v5 .toc-list { list-style: none; }
.desc-v5 .toc-list li { margin-bottom: 2px; }

.desc-v5 .toc-list a {
    display: block;
    padding: 8px 12px;
    font-size: 14px;
    font-weight: 500;
    color: var(--d-text-soft);
    text-decoration: none;
    border-radius: var(--radius-sm);
    border-left: 2px solid transparent;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.desc-v5 .toc-list a:hover {
    background: var(--d-bg-soft);
    color: var(--d-text);
}

.desc-v5 .toc-list a.active {
    background: var(--d-bg-tint);
    color: var(--d-accent-dark);
    border-left-color: var(--d-accent);
    font-weight: 600;
}

/* ----- Sidebar: Quick Specs ----- */
.desc-v5 .quick-specs {
    background: var(--color-white);
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
    padding: 24px;
    margin-bottom: 20px;
}

.desc-v5 .quick-specs-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid var(--d-line-soft);
    font-size: 14px;
}

.desc-v5 .quick-specs-row:last-child { border-bottom: none; }

.desc-v5 .quick-specs-row .label {
    color: var(--d-text-muted);
    font-weight: 500;
}

.desc-v5 .quick-specs-row .value {
    font-weight: 700;
    color: var(--d-text);
}

/* ----- Sidebar: Producer card ----- */
.desc-v5 .producer-card {
    background: var(--color-white);
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.desc-v5 .producer-card .producer-visual {
    height: 120px;
    background: linear-gradient(135deg, var(--d-bg-tint) 0%, #d4e3f4 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--d-accent-dark);
}

.desc-v5 .producer-card .producer-visual svg {
    width: 56px;
    height: 56px;
}

.desc-v5 .producer-card .producer-body { padding: 20px 24px 24px; }

.desc-v5 .producer-card .producer-name {
    font-family: var(--font-display);
    font-size: 20px;
    font-weight: 700;
    color: var(--d-text);
    margin-bottom: 4px;
    letter-spacing: -0.005em;
}

.desc-v5 .producer-card .producer-region {
    font-size: 13px;
    color: var(--d-text-muted);
    margin-bottom: 12px;
    font-weight: 500;
}

.desc-v5 .producer-card .producer-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--d-text-soft);
}

/* ----- Taste Profile Bars ----- */
.desc-v5 .taste-profile {
    margin-top: 24px;
    padding: 28px;
    background: var(--color-white);
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
}

.desc-v5 .taste-profile h4 {
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 700;
    text-transform: none;
    letter-spacing: -0.005em;
    color: var(--d-text);
    margin-bottom: 20px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--d-line-soft);
}

.desc-v5 .taste-bar {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 14px;
}

.desc-v5 .taste-bar:last-child { margin-bottom: 0; }

.desc-v5 .taste-bar .bar-label {
    width: 110px;
    font-size: 14px;
    font-weight: 600;
    color: var(--d-text);
    flex-shrink: 0;
}

.desc-v5 .taste-bar .bar-track {
    flex: 1;
    height: 8px;
    background: var(--d-line-soft);
    border-radius: 4px;
    overflow: hidden;
}

.desc-v5 .taste-bar .bar-fill {
    height: 100%;
    border-radius: 4px;
    background: linear-gradient(90deg, var(--d-accent) 0%, var(--d-accent-dark) 100%);
    transition: width 0.4s ease;
}

.desc-v5 .taste-bar .bar-value {
    width: 70px;
    font-size: 13px;
    font-weight: 700;
    color: var(--d-text);
    text-align: right;
    flex-shrink: 0;
}

/* ----- Expert / Sommelier callout ----- */
.desc-v5 .expert-callout {
    margin-top: 32px;
    padding: 32px;
    border-left: 4px solid var(--d-accent);
    background: var(--d-bg-tint);
    border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
    position: relative;
}

.desc-v5 .expert-callout::before {
    content: '"';
    position: absolute;
    top: -8px;
    right: 24px;
    font-family: var(--font-display);
    font-size: 110px;
    line-height: 1;
    color: var(--d-accent);
    opacity: 0.18;
    pointer-events: none;
}

.desc-v5 .expert-callout .expert-top {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
    position: relative;
}

.desc-v5 .expert-callout .expert-avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--d-accent);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.desc-v5 .expert-callout .expert-avatar svg { width: 26px; height: 26px; }

.desc-v5 .expert-callout .expert-name {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 17px;
    color: var(--d-text);
}

.desc-v5 .expert-callout .expert-title {
    font-size: 13px;
    color: var(--d-text-soft);
    font-weight: 500;
    margin-top: 2px;
}

.desc-v5 .expert-callout .expert-text {
    font-family: var(--font-display);
    font-size: 18px;
    line-height: 1.55;
    color: var(--d-text);
    font-style: italic;
    position: relative;
}

.desc-v5 .expert-callout .expert-rating {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid rgba(102,151,205,0.2);
    font-size: 14px;
    font-weight: 700;
    color: var(--d-text);
    position: relative;
}

.desc-v5 .expert-callout .expert-rating svg {
    width: 16px;
    height: 16px;
    fill: var(--color-star);
}

/* ----- Region highlight ----- */
.desc-v5 .region-highlight {
    margin-top: 20px;
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 0;
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.desc-v5 .region-map {
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: flex-start;
    padding: 16px;
    overflow: hidden;
    background: var(--d-bg-soft);
}

.desc-v5 .region-flag-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.85;
}

.desc-v5 .region-map::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 40%, rgba(15,23,42,0.7) 100%);
}

.desc-v5 .region-map-label {
    position: relative;
    color: #fff;
    font-weight: 700;
    font-size: 14px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.desc-v5 .region-map-label svg { width: 16px; height: 16px; }

.desc-v5 .region-info {
    padding: 28px;
    background: var(--color-white);
}

.desc-v5 .region-info .article-text { font-size: 15px; }

.desc-v5 .region-info .region-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 20px;
}

.desc-v5 .region-stat {
    padding: 12px 16px;
    background: var(--d-bg-soft);
    border-radius: var(--radius-md);
    border: 1px solid var(--d-line-soft);
}

.desc-v5 .region-stat .stat-label {
    font-size: 11px;
    color: var(--d-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-weight: 700;
}

.desc-v5 .region-stat .stat-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--d-text);
    margin-top: 4px;
}

/* ----- Serving cards ----- */
.desc-v5 .serving-grid {
    margin-top: 20px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px;
}

.desc-v5 .serving-card {
    text-align: center;
    padding: 24px 18px;
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
    background: var(--color-white);
}

.desc-v5 .serving-card .serving-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: var(--d-bg-tint);
    color: var(--d-accent-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 14px;
}

.desc-v5 .serving-card .serving-icon svg { width: 24px; height: 24px; }

.desc-v5 .serving-card h4 {
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 700;
    color: var(--d-text);
    margin-bottom: 6px;
    letter-spacing: -0.005em;
}

.desc-v5 .serving-card p {
    font-size: 13px;
    line-height: 1.55;
    color: var(--d-text-soft);
    margin: 0;
}

/* ----- Grape info box ----- */
.desc-v5 .grape-info-box {
    margin-top: 20px;
    padding: 32px;
    background: var(--color-white);
    border: 1px solid var(--d-line);
    border-radius: var(--radius-lg);
    display: grid;
    grid-template-columns: 96px 1fr;
    gap: 28px;
    align-items: center;
}

.desc-v5 .grape-visual {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    background: linear-gradient(135deg, #f3e7fc 0%, #d8b9f0 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #6b21a8;
    flex-shrink: 0;
}

.desc-v5 .grape-visual svg { width: 56px; height: 56px; }

.desc-v5 .grape-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
}

.desc-v5 .grape-fact {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 6px 14px;
    background: var(--d-bg-soft);
    border: 1px solid var(--d-line);
    border-radius: 100px;
    font-size: 13px;
    font-weight: 600;
    color: var(--d-text);
}

/* ----- Sustainability box ----- */
.desc-v5 .sustainability-box {
    margin-top: 24px;
    padding: 24px 28px;
    background: #f0fdf4;
    border: 1px solid #86efac;
    border-radius: var(--radius-lg);
    display: flex;
    align-items: flex-start;
    gap: 18px;
}

.desc-v5 .sustainability-box .eco-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #15803d;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.desc-v5 .sustainability-box .eco-icon svg { width: 26px; height: 26px; }

.desc-v5 .sustainability-box h4 {
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 700;
    color: #14532d;
    margin-bottom: 6px;
    letter-spacing: -0.005em;
}

.desc-v5 .sustainability-box p {
    font-size: 14px;
    line-height: 1.65;
    color: #166534;
    margin: 0;
}

.desc-v5 .sustainability-box .eco-tags {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    flex-wrap: wrap;
}

.desc-v5 .sustainability-box .eco-tag {
    padding: 4px 12px;
    background: #fff;
    border: 1px solid #86efac;
    border-radius: 100px;
    font-size: 12px;
    font-weight: 700;
    color: #14532d;
}

/* V5 Responsive */
@media (max-width: 1024px) {
    .desc-v5 .article-layout {
        grid-template-columns: 1fr;
        gap: 32px;
    }
    .desc-v5 .article-sidebar {
        position: static;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
    }
    .desc-v5 .toc-card { display: none; }
    .desc-v5 .producer-card { margin-bottom: 0; }
}

@media (max-width: 768px) {
    .desc-v5 .tasting-visible { grid-template-columns: 1fr; gap: 12px; }
    .desc-v5 .article-sidebar { grid-template-columns: 1fr; }
    .desc-v5 .serving-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .desc-v5 .region-highlight { grid-template-columns: 1fr; }
    .desc-v5 .region-map { padding: 16px; flex-direction: row; gap: 12px; font-size: 36px; }
    .desc-v5 .grape-info-box { grid-template-columns: 1fr; text-align: center; }
    .desc-v5 .grape-visual { margin: 0 auto; }
    .desc-v5 .grape-facts { justify-content: center; }
}

@media (max-width: 480px) {
    .desc-v5 .serving-grid { grid-template-columns: 1fr 1fr; }
    .desc-v5 .region-info .region-stats { grid-template-columns: 1fr; }
}

/* ============================================
   PRODUCT REVIEWS SECTION (Magazine Grid)
   ============================================ */
.product-reviews {
    background: var(--color-bg);
    padding: 56px 0;
    border-top: 1px solid var(--color-border);
}

.reviews-container {
    max-width: 1610px;
    margin: 0 auto;
    padding: 0 24px;
}

/* ---- V3 reviews block: featured + compact list + form ---- */
.prod-rv3__title {
    font-family: var(--font-display);
    font-size: 28px;
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 24px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--color-border);
}

/* stars (gold fill clipped to a percentage) */
.prod-rv3 .stars { display: inline-flex; position: relative; line-height: 0; vertical-align: middle; }
.prod-rv3 .stars__track, .prod-rv3 .stars__fill { display: inline-flex; }
.prod-rv3 .stars__track { color: var(--color-border); }
.prod-rv3 .stars__fill { position: absolute; inset: 0; overflow: hidden; color: var(--color-star); white-space: nowrap; }
.prod-rv3 .stars .star { width: 17px; height: 17px; fill: currentColor; flex: 0 0 auto; }
.prod-rv3 .stars--sm .star { width: 14px; height: 14px; }
.prod-rv3 .stars--lg .star { width: 22px; height: 22px; }

/* avatars */
.prod-rv3 .avatar { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; font-weight: 600; font-size: 15px; flex: 0 0 auto; background: var(--color-primary-pale); color: var(--color-primary-dark); font-family: var(--font-body); }
.prod-rv3 .avatar--g { background: var(--color-success-bg); color: #0f766e; }
.prod-rv3 .avatar--a { background: #fef3c7; color: #b45309; }
.prod-rv3 .avatar--r { background: #fce7f3; color: #be185d; }
.prod-rv3 .avatar--v { background: #ede9fe; color: #6d28d9; }
.prod-rv3 .avatar--sm { width: 38px; height: 38px; font-size: 13px; }
.prod-rv3 .avatar--on { background: var(--color-primary); color: #fff; }

/* verified badge */
.prod-rv3 .badge-verified { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; color: var(--color-success); background: var(--color-success-bg); padding: 2px 9px 2px 6px; border-radius: 100px; white-space: nowrap; margin-top: 4px; }
.prod-rv3 .badge-verified svg { width: 12px; height: 12px; fill: none; stroke: var(--color-success); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }

/* button */
.prod-rv3 .btn-primary { font-family: var(--font-body); font-weight: 600; font-size: 14px; background: var(--color-primary); color: #fff; border: none; padding: 12px 24px; border-radius: var(--radius-sm); cursor: pointer; transition: background 0.15s; text-decoration: none; display: inline-block; text-align: center; }
.prod-rv3 .btn-primary:hover { background: var(--color-primary-dark); }

/* top: featured hero + score box */
.prod-rv3 .rv3-top { display: grid; grid-template-columns: 1fr 260px; gap: 24px; }
.prod-rv3 .rv3-featured { margin: 0; background: linear-gradient(135deg, #eef4fb 0%, #f7fbff 100%); border: 1px solid #dce8f6; border-radius: var(--radius-lg); padding: 30px 32px; }
.prod-rv3 .rv3-featured .stars { margin-bottom: 14px; }
.prod-rv3 .rv3-featured__quote { font-family: var(--font-display); font-style: italic; font-size: 23px; line-height: 1.45; color: #33465c; margin: 0; position: relative; }
.prod-rv3 .rv3-featured__quote::before { content: "\201C"; position: absolute; left: -14px; top: -6px; font-size: 44px; color: var(--color-primary-light); opacity: 0.5; }
.prod-rv3 .rv3-featured__by { display: flex; align-items: center; gap: 12px; margin-top: 22px; }
.prod-rv3 .rv3-featured__name { font-weight: 600; font-size: 14.5px; display: block; }
.prod-rv3 .rv3-featured__date { font-size: 12.5px; color: var(--color-text-muted); }
.prod-rv3 .rv3-side { background: var(--color-primary-dark); color: #fff; border-radius: var(--radius-lg); padding: 26px 22px; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.prod-rv3 .rv3-side__num { font-family: var(--font-display); font-size: 50px; font-weight: 700; line-height: 1; }
.prod-rv3 .rv3-side .stars { margin: 10px 0 8px; }
.prod-rv3 .rv3-side .stars__track { color: rgba(255,255,255,0.28); }
.prod-rv3 .rv3-side__count { font-size: 12.5px; color: rgba(255,255,255,0.8); margin-bottom: 18px; }
.prod-rv3 .rv3-side__btn { background: #fff; color: var(--color-primary-dark); width: 100%; }
.prod-rv3 .rv3-side__btn:hover { background: var(--color-primary-pale); }

/* compact list */
.prod-rv3 .rv3-list { list-style: none; margin: 22px 0 0; padding: 22px 0 0; border-top: 1px solid var(--color-border-light); display: flex; flex-direction: column; gap: 20px; }
.prod-rv3 .rv3-row { display: flex; gap: 13px; }
.prod-rv3 .rv3-row__body { flex: 1; min-width: 0; }
.prod-rv3 .rv3-row__head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.prod-rv3 .rv3-row__name { font-weight: 600; font-size: 14px; }
.prod-rv3 .rv3-row__verified { color: var(--color-success); line-height: 0; }
.prod-rv3 .rv3-row__verified svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.prod-rv3 .rv3-row__date { margin-left: auto; font-size: 12px; color: var(--color-text-muted); }
.prod-rv3 .rv3-row__text { margin: 6px 0 0; color: var(--color-text-secondary); font-size: 14px; line-height: 1.6; }

/* empty state */
.prod-rv3 .rv3-empty {
    text-align: center;
    max-width: 560px;
    margin: 6px auto 0;
    padding: 30px 26px 26px;
    background: var(--color-bg);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-lg);
}
.prod-rv3 .rv3-empty__icon { display: inline-flex; }
.prod-rv3 .rv3-empty__icon svg { width: 40px; height: 40px; fill: var(--color-border); }
.prod-rv3 .rv3-empty__title { font-family: var(--font-display); font-size: 20px; font-weight: 600; margin: 10px 0 4px; color: var(--color-text); }
.prod-rv3 .rv3-empty__text { color: var(--color-text-secondary); font-size: 14.5px; margin: 0; }
/* Без отзывов: заголовок и форма по центру, той же ширины, что и пустышка */
.prod-rv3.prod-rv3--noreviews .prod-rv3__title { text-align: center; }
.prod-rv3.prod-rv3--noreviews .rv-form { max-width: 560px; margin-left: auto; margin-right: auto; }

/* review form */
.prod-rv3 .rv-form { margin-top: 36px; padding-top: 32px; border-top: 1px solid var(--color-border); max-width: 720px; }
.prod-rv3 .rv-form__title { font-family: var(--font-display); font-size: 22px; font-weight: 600; margin: 0 0 4px; color: var(--color-text); }
.prod-rv3 .rv-form__hint { color: var(--color-text-muted); font-size: 13.5px; margin: 0 0 20px; }
.prod-rv3 .rv-form__rate { border: none; padding: 0; margin: 0 0 18px; min-width: 0; }
.prod-rv3 .rv-form__label { font-size: 14px; font-weight: 600; display: block; margin-bottom: 8px; padding: 0; }
.prod-rv3 .rv-form__req { color: var(--color-danger); }
.prod-rv3 .star-rating-input { display: inline-flex; flex-direction: row-reverse; gap: 4px; }
.prod-rv3 .star-rating-input input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.prod-rv3 .star-rating-input label { cursor: pointer; color: var(--color-border); line-height: 0; transition: color 0.12s, transform 0.12s; }
.prod-rv3 .star-rating-input label svg { width: 32px; height: 32px; fill: currentColor; }
.prod-rv3 .star-rating-input label:hover { transform: scale(1.12); }
.prod-rv3 .star-rating-input input:checked ~ label,
.prod-rv3 .star-rating-input label:hover,
.prod-rv3 .star-rating-input label:hover ~ label { color: var(--color-star); }
.prod-rv3 .star-rating-input input:focus-visible + label { outline: 2px solid var(--color-primary); outline-offset: 2px; border-radius: 3px; }
.prod-rv3 .rv-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 0 0 14px; }
.prod-rv3 .rv-form__grid p { margin: 0; }
.prod-rv3 .rv-form p { margin: 0 0 14px; }
.prod-rv3 .rv-form input[type=text], .prod-rv3 .rv-form input[type=email], .prod-rv3 .rv-form textarea {
    font-family: var(--font-body); font-size: 14px; color: var(--color-text); border: 1px solid var(--color-border); border-radius: var(--radius-sm); padding: 12px 14px; width: 100%; background: #fff; transition: border-color 0.15s; }
.prod-rv3 .rv-form input:focus, .prod-rv3 .rv-form textarea:focus { outline: none; border-color: var(--color-primary-light); }
.prod-rv3 .rv-form textarea { min-height: 120px; resize: vertical; }
.prod-rv3 .rv-form .form-submit { margin: 4px 0 0; }
.prod-rv3 .rv-form .comment-form-cookies-consent { display: flex; align-items: flex-start; gap: 8px; margin: -2px 0 16px; font-size: 12.5px; color: var(--color-text-muted); line-height: 1.45; }
.prod-rv3 .rv-form .comment-form-cookies-consent input { width: auto; margin: 3px 0 0; flex: 0 0 auto; }
.prod-rv3 .rv-form .comment-form-cookies-consent label { margin: 0; }
/* submit button — beat WooCommerce's default #respond input#submit styling */
.prod-rv3 #review_form #respond input#submit,
.prod-rv3 .rv-form input#submit {
    background: var(--color-primary); color: #fff; border: none; box-shadow: none; text-shadow: none;
    padding: 12px 26px; border-radius: var(--radius-sm); font-family: var(--font-body);
    font-weight: 600; font-size: 14px; line-height: 1.4; cursor: pointer; width: auto;
    letter-spacing: 0; transition: background 0.15s;
}
.prod-rv3 #review_form #respond input#submit:hover,
.prod-rv3 .rv-form input#submit:hover { background: var(--color-primary-dark); color: #fff; }

/* review media: photo thumbnails + YouTube lite-embed */
.prod-rv3 .rv-media { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0 0; align-items: flex-start; }
.prod-rv3 .rv-photos { display: flex; flex-wrap: wrap; gap: 8px; }
.prod-rv3 .rv-photo { display: block; width: 64px; height: 64px; border-radius: var(--radius-sm); overflow: hidden; border: 1px solid var(--color-border); cursor: pointer; }
.prod-rv3 .rv-photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .2s; }
.prod-rv3 .rv-photo:hover img { transform: scale(1.06); }
.prod-rv3 .rv-media--lg .rv-photo { width: 84px; height: 84px; }
.prod-rv3 .rv-yt { position: relative; width: 220px; max-width: 100%; aspect-ratio: 16/9; border: 0; padding: 0; border-radius: var(--radius-md); overflow: hidden; cursor: pointer; background: #000; flex: 0 0 auto; }
.prod-rv3 .rv-yt__thumb { width: 100%; height: 100%; object-fit: cover; display: block; opacity: .92; transition: opacity .2s; }
.prod-rv3 .rv-yt:hover .rv-yt__thumb { opacity: 1; }
.prod-rv3 .rv-yt__play { position: absolute; inset: 0; display: grid; place-items: center; }
.prod-rv3 .rv-yt__play svg { width: 56px; height: auto; filter: drop-shadow(0 1px 4px rgba(0,0,0,.45)); }
.prod-rv3 .rv-yt__bg { fill: #ff0000; opacity: .9; transition: opacity .2s; }
.prod-rv3 .rv-yt:hover .rv-yt__bg { opacity: 1; }
.prod-rv3 .rv-yt__frame { width: 320px; max-width: 100%; aspect-ratio: 16/9; border: 0; border-radius: var(--radius-md); flex: 0 0 auto; }
.prod-rv3 .rv-media--lg .rv-yt, .prod-rv3 .rv-media--lg .rv-yt__frame { width: 340px; }
.prod-rv3 .rv3-row .rv-photo { width: 52px; height: 52px; }
.prod-rv3 .rv3-row .rv-yt, .prod-rv3 .rv3-row .rv-yt__frame { width: 150px; }

/* fullscreen photo lightbox (JS appends it to <body>) */
.rv-lightbox { position: fixed; inset: 0; z-index: 99999; background: rgba(15,23,42,.93); display: none; align-items: center; justify-content: center; }
.rv-lightbox.is-open { display: flex; }
.rv-lightbox__img { max-width: 90vw; max-height: 86vh; border-radius: var(--radius-md); box-shadow: 0 12px 48px rgba(0,0,0,.5); }
.rv-lightbox__close { position: absolute; top: 18px; right: 26px; background: none; border: 0; color: #fff; font-size: 40px; line-height: 1; cursor: pointer; opacity: .85; }
.rv-lightbox__close:hover { opacity: 1; }
.rv-lightbox__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 56px; height: 56px; border: 0; border-radius: 50%; background: rgba(255,255,255,.13); color: #fff; font-size: 34px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: background .15s; }
.rv-lightbox__nav:hover { background: rgba(255,255,255,.24); }
.rv-lightbox__prev { left: 24px; }
.rv-lightbox__next { right: 24px; }
.rv-lightbox--solo .rv-lightbox__nav { display: none; }

/* review form: photo upload + YouTube field */
.prod-rv3 .rv-form__media { margin: 0 0 16px; }
.prod-rv3 .rv-upload { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 12px; }
.prod-rv3 .rv-upload__input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.prod-rv3 .rv-upload__btn { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: var(--color-primary-dark); background: var(--color-primary-pale); border: 1px dashed var(--color-primary-light); border-radius: var(--radius-sm); padding: 10px 16px; cursor: pointer; transition: background .15s; }
.prod-rv3 .rv-upload__label:hover .rv-upload__btn { background: #e3edf9; }
.prod-rv3 .rv-upload__input:focus-visible + .rv-upload__btn { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.prod-rv3 .rv-upload__btn svg { width: 18px; height: 18px; }
.prod-rv3 .rv-upload__previews { display: flex; flex-wrap: wrap; gap: 8px; }
.prod-rv3 .rv-upload__preview { position: relative; width: 60px; height: 60px; border-radius: var(--radius-sm); overflow: hidden; border: 1px solid var(--color-border); }
.prod-rv3 .rv-upload__preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
.prod-rv3 .rv-upload__preview.is-uploading img { opacity: .45; }
.prod-rv3 .rv-upload__preview.is-uploading::after { content: ""; position: absolute; top: 50%; left: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px; border: 2px solid rgba(255,255,255,.6); border-top-color: var(--color-primary); border-radius: 50%; animation: aj-spin .7s linear infinite; }
.prod-rv3 .rv-upload__preview.is-error { border-color: var(--color-danger); }
.prod-rv3 .rv-upload__remove { position: absolute; top: 2px; right: 2px; width: 18px; height: 18px; border: 0; border-radius: 50%; background: rgba(15,23,42,.7); color: #fff; font-size: 14px; line-height: 1; cursor: pointer; display: grid; place-items: center; padding: 0; }
.prod-rv3 .rv-upload__remove:hover { background: var(--color-danger); }
.prod-rv3 .rv-video-field { margin: 0; position: relative; }
.prod-rv3 .rv-video-field__icon {
    position: absolute; left: 13px; top: 50%; transform: translateY(-50%);
    display: flex; pointer-events: none;
}
.prod-rv3 .rv-video-field__icon svg { width: 23px; height: 23px; }
.prod-rv3 .rv-form .rv-video-field input[type=url] {
    font-family: var(--font-body); font-size: 14px; color: var(--color-text);
    border: 1px solid var(--color-border); border-radius: var(--radius-sm);
    padding: 12px 14px 12px 46px; width: 100%; background: #fff;
    transition: border-color 0.15s;
}
.prod-rv3 .rv-form .rv-video-field input[type=url]:focus { outline: none; border-color: var(--color-primary-light); }
.prod-rv3 .rv-form .rv-video-field input[type=url]::placeholder { color: var(--color-text-muted); }
@keyframes aj-spin { to { transform: rotate(360deg); } }

@media (max-width: 760px) {
    .prod-rv3 .rv3-top { grid-template-columns: 1fr; }
    .prod-rv3 .rv-form__grid { grid-template-columns: 1fr; }
    .rv-lightbox__nav { width: 44px; height: 44px; font-size: 28px; }
    .rv-lightbox__prev { left: 8px; }
    .rv-lightbox__next { right: 8px; }
}

/* ============================================
   RESPONSIVE
   ============================================ */

/* Страховка: скрытые выпадашки меню/съехавшие панели не должны создавать
   горизонтальный скролл. overflow-x:clip (в отличие от hidden) не делает
   html scroll-контейнером — position:sticky у шапки продолжает работать. */
html, body { overflow-x: clip; }

@media (max-width: 1500px) {
    .product-grid { grid-template-columns: 460px 1fr 330px; gap: 32px; }
}

/* Меню из 7 пунктов (~1320px) — ужимаем, чтобы влезало без обрезки */
@media (max-width: 1420px) {
    .site-header .nav-menu { gap: 4px; }
    .site-header .nav-menu > li > a { font-size: 12.5px; padding: 18px 4px; gap: 6px; }
}
@media (max-width: 1240px) {
    .site-header .nav-menu > li > a { font-size: 11.5px; }
    .site-header .nav-menu > li > a::before { display: none; } /* прячем иконки пунктов */
}

@media (max-width: 1100px) {
    .site-header .trustpilot { display: none; }
    .site-header .cart-label { display: none; }
    .article-layout { grid-template-columns: 1fr 280px; gap: 24px; }
}

@media (max-width: 1250px) {
    .product-grid { grid-template-columns: 380px 1fr 280px; gap: 24px; }
    /* В узкой средней колонке спек-таблица должна уметь сжиматься */
    .product-specs { table-layout: fixed; width: 100%; }
    .product-specs td, .product-specs th { overflow-wrap: break-word; }
}

@media (max-width: 900px) {
    .site-footer .footer-main {
        grid-template-columns: 1fr;
        gap: 32px;
    }
    .article-layout { grid-template-columns: 1fr; }
    .article-sidebar {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 24px;
    }
    .sidebar-card.newsletter-card { grid-column: span 2; }
    .product-grid {
        grid-template-columns: 1fr 1fr;
        gap: 24px;
    }
    .product-info { grid-column: 1 / -1; order: -1; }
    .product-gallery { position: static; }
    .purchase-card { position: static; }
}

@media (max-width: 600px) {
    .header-container,
    .footer-container,
    .site-container { padding: 0 16px; }
    .cat-container { padding: 0 10px; }   /* much tighter gutters around the grid */
    .site-header .header-inner { gap: 12px; }
    .site-header .search-container { max-width: none; }
    .site-footer .footer-bottom {
        flex-direction: column;
        gap: 12px;
        text-align: center;
    }
    .article-content { padding: 32px 24px 40px; }
    .article-title { font-size: 28px; }
    .article-lead { font-size: 17px; }
    .article-meta { flex-wrap: wrap; gap: 12px; }
    .article-meta-divider { display: none; }
    .related-grid { grid-template-columns: 1fr; }
    .article-sidebar { grid-template-columns: 1fr; }
    .sidebar-card.newsletter-card { grid-column: span 1; }
    .page-content { padding: 32px 24px; }
    .page-title { font-size: 28px; }
    .product-grid { grid-template-columns: 1fr; }
    .product-info { order: 0; }
    .product-info .product-title { font-size: 26px; }
    .product-specs .specs-row { grid-template-columns: 140px 1fr; }
    .product-trustpilot { flex-wrap: wrap; }
    .reviews-grid { grid-template-columns: 1fr; }
    .review-featured { grid-row: span 1; }
    .reviews-header { flex-direction: column; align-items: flex-start; }
    .reviews-score { align-self: flex-end; }
    .reviews-title { font-size: 24px; }
}

@media (max-width: 900px) {
    .reviews-grid { grid-template-columns: 1fr 1fr; }
    .review-featured { grid-row: span 1; grid-column: span 2; }
}


/* ============================================
   CATEGORY / ARCHIVE PAGE
   ============================================ */

.cat-page {
    background: var(--color-bg);
    padding-bottom: 64px;
}

.cat-container {
    max-width: 1610px;
    margin: 0 auto;
    padding: 0 24px;
}

/* ----- Header section ----- */
.cat-header {
    background: var(--color-white);
    border-bottom: 1px solid var(--color-border);
    padding: 24px 0 32px;
}

/* Breadcrumbs (WC outputs <nav class="woocommerce-breadcrumb">) */
.cat-breadcrumbs,
.cat-breadcrumbs .woocommerce-breadcrumb {
    font-size: 13px;
    color: var(--color-text-muted);
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.cat-breadcrumbs a {
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: color 0.15s;
}

.cat-breadcrumbs a:hover { color: var(--color-primary); }

.cat-breadcrumbs svg {
    width: 12px;
    height: 12px;
    color: var(--color-text-muted);
    margin: 0 2px;
    vertical-align: middle;
    display: inline;
}

.cat-breadcrumbs__inner {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

/* Header row (icon + title) */
.cat-header__row {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 12px;
}

.cat-header__main {
    display: flex;
    align-items: center;
    gap: 18px;
    flex: 1;
    min-width: 0;
}

.cat-header__icon {
    width: 64px;
    height: 64px;
    border-radius: var(--radius-md);
    background: var(--color-primary-pale);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
}

.cat-header__icon img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.cat-title {
    font-family: var(--font-display);
    font-size: 36px;
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin: 0;
}

.cat-count {
    font-size: 13px;
    color: var(--color-text-muted);
    margin-top: 4px;
    font-weight: 500;
}

/* Description — full-width, two-column SEO copy with a read-more toggle.
   Shared by category pages (ACF copy) and filter pages (migrated copy). The
   clamp is opt-in via .is-collapsible (added by JS) so no-JS users get it all. */
.cat-description { margin-top: 18px; }
.cat-description__inner {
    column-count: 2; column-gap: 48px;
    font-size: 15px; line-height: 1.75; color: var(--color-text-secondary);
    position: relative;
}
.cat-description.is-collapsible:not(.is-expanded) .cat-description__inner {
    max-height: 7em; overflow: hidden;
}
.cat-description.is-collapsible:not(.is-expanded) .cat-description__inner::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2.6em;
    background: linear-gradient(rgba(255, 255, 255, 0), var(--color-white)); pointer-events: none;
}
.cat-description__inner > :first-child { margin-top: 0; }
.cat-description__inner p { margin: 0 0 13px; }
.cat-description__inner strong { color: var(--color-text); font-weight: 600; }
.cat-description__inner a { color: var(--color-primary); font-weight: 600; text-decoration: none; }
.cat-description__inner a:hover { text-decoration: underline; }
.cat-description__inner h2, .cat-description__inner h3 {
    column-span: all; font-family: var(--font-display); color: var(--color-text);
    font-size: 19px; font-weight: 600; line-height: 1.25; margin: 6px 0 10px;
}
.cat-description__inner ul, .cat-description__inner ol { margin: 0 0 13px; padding-left: 20px; }
.cat-description__inner li { margin: 0 0 6px; }
.cat-description__toggle {
    display: inline-flex; align-items: center; gap: 6px; margin-top: 14px; padding: 0;
    background: none; border: 0; cursor: pointer; font-family: var(--font-body);
    font-weight: 700; font-size: 14px; color: var(--color-primary);
}
.cat-description__toggle:hover { color: var(--color-primary-dark); }
.cat-description__toggle svg { width: 16px; height: 16px; transition: transform .2s ease; }
.cat-description.is-expanded .cat-description__toggle svg { transform: rotate(180deg); }
.cat-description__toggle .cat-description__less { display: none; }
.cat-description.is-expanded .cat-description__toggle .cat-description__more { display: none; }
.cat-description.is-expanded .cat-description__toggle .cat-description__less { display: inline; }

/* Filter "after products" SEO copy — same full-width two-column treatment. */
.cat-seo-bottom { background: var(--color-white); border-top: 1px solid var(--color-border); margin-top: 36px; padding: 38px 0; }
.cat-seo-bottom .cat-container { column-count: 2; column-gap: 48px; font-size: 15px; line-height: 1.75; color: var(--color-text-secondary); }
.cat-seo-bottom p { margin: 0 0 13px; }
.cat-seo-bottom strong { color: var(--color-text); font-weight: 600; }
.cat-seo-bottom a { color: var(--color-primary); font-weight: 600; }

@media (max-width: 768px) {
    .cat-description__inner, .cat-seo-bottom .cat-container { column-count: 1; }
}

/* =========================================================
   CATEGORY BRANDS — логотипы брендов под описанием рубрики
   (inc/category-brands.php; ACF term-поле category_brands).
   Flex, а не grid: при 2 брендах grid растянул бы плитки на всю
   ширину — flex оставляет их нормального размера слева.
========================================================= */
.cat-brands { margin-top: 26px; }
.cat-brands__title {
    font-family: var(--font-heading, 'Playfair Display', serif);
    font-size: 20px; font-weight: 600; color: var(--color-text);
    margin: 0 0 14px;
}
.cat-brands__strip {
    display: flex; gap: 14px;
    overflow-x: auto; padding-bottom: 8px;
    scrollbar-width: thin; scrollbar-color: var(--color-border) transparent;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
}
.cat-brands__strip::-webkit-scrollbar { height: 6px; }
.cat-brands__strip::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 99px; }
.cat-brands__strip::-webkit-scrollbar-track { background: transparent; }

.cat-brand {
    flex: 0 0 138px;
    display: flex; flex-direction: column; align-items: center; gap: 9px;
    padding: 14px 10px 12px;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    text-decoration: none;
    scroll-snap-align: start;
    transition: border-color .15s ease, box-shadow .15s ease;
}
a.cat-brand:hover {
    border-color: var(--color-primary-light);
    box-shadow: 0 2px 10px rgba(15, 23, 42, .07);
}
.cat-brand__logo {
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 62px;
}
.cat-brand__logo img {
    max-width: 100%; max-height: 62px;
    width: auto; height: auto;
    object-fit: contain; display: block;
}
.cat-brand__name {
    font-size: 13px; font-weight: 600; line-height: 1.3;
    color: var(--color-text-secondary); text-align: center;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden;
}
a.cat-brand:hover .cat-brand__name { color: var(--color-primary-dark); }

@media (max-width: 768px) {
    .cat-brands { margin-top: 20px; }
    .cat-brands__title { font-size: 18px; margin-bottom: 10px; }
    .cat-brands__strip { gap: 10px; }
    .cat-brand { flex: 0 0 116px; padding: 11px 8px 10px; gap: 7px; }
    .cat-brand__logo { height: 50px; }
    .cat-brand__logo img { max-height: 50px; }
    .cat-brand__name { font-size: 12px; }
}

/* Subcategory pills */
.cat-subcats {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 22px;
}

.cat-subcat-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 14px 6px 6px;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: 100px;
    text-decoration: none;
    color: var(--color-text);
    font-size: 13px;
    font-weight: 600;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}

.cat-subcat-pill:hover {
    border-color: var(--color-primary);
    color: var(--color-primary-dark);
    background: var(--color-primary-pale);
}

.cat-subcat-pill img {
    width: 28px;
    height: 28px;
    object-fit: cover;
    border-radius: 50%;
    flex-shrink: 0;
}

.cat-subcat-pill__count {
    font-size: 11px;
    font-weight: 700;
    color: var(--color-text-muted);
    background: var(--color-bg-hover);
    padding: 1px 8px;
    border-radius: 50px;
}

.cat-subcat-pill:hover .cat-subcat-pill__count {
    background: rgba(255,255,255,0.65);
    color: var(--color-primary-dark);
}


/* ----- Toolbar ----- */
.cat-toolbar {
    background: var(--color-white);
    border-bottom: 1px solid var(--color-border);
    padding: 14px 0;
    position: sticky;
    top: 0;
    z-index: 20;
    backdrop-filter: blur(8px);
    background: rgba(255,255,255,0.96);
}

.cat-toolbar__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.cat-toolbar__left {
    font-size: 13px;
    color: var(--color-text-secondary);
    font-weight: 500;
}

.cat-toolbar .woocommerce-result-count {
    margin: 0;
    color: var(--color-text-secondary);
    font-size: 13px;
}

/* Sort dropdown — restyle native WC select */
.cat-toolbar .woocommerce-ordering {
    margin: 0;
    position: relative;
}

.cat-toolbar .woocommerce-ordering::before {
    content: 'Lajittele:';
    font-size: 13px;
    font-weight: 500;
    color: var(--color-text-muted);
    margin-right: 10px;
}

.cat-toolbar .woocommerce-ordering select.orderby {
    appearance: none;
    -webkit-appearance: none;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 9px 38px 9px 14px;
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text);
    cursor: pointer;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2364748b' stroke-width='2' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' d='M19 9l-7 7-7-7'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    transition: border-color 0.15s;
}

.cat-toolbar .woocommerce-ordering select.orderby:hover,
.cat-toolbar .woocommerce-ordering select.orderby:focus {
    border-color: var(--color-primary);
    outline: none;
}


/* ----- Products grid container ----- */
.cat-products {
    padding-top: 28px;
}

/* Layout when sidebar is shown — 2 columns */
.cat-container--with-sidebar {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 32px;
    align-items: start;
}

.cat-products__main { min-width: 0; }

/* ----- Sidebar ----- */
.cat-sidebar {
    position: sticky;
    top: 84px;            /* below sticky toolbar */
}

.cat-sidebar__inner {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 4px 0;       /* widgets handle their own padding */
    overflow: hidden;
}

.cat-sidebar-widget {
    padding: 22px 24px;
    border-bottom: 1px solid var(--color-border-light);
}

.cat-sidebar-widget:last-child { border-bottom: none; }

.cat-sidebar-widget__title {
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 14px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

/* Small hint under a widget title (e.g. "Prices in euros") */
.cat-sidebar-widget__hint {
    margin: -8px 0 14px;
    font-size: 13px;
    color: var(--color-text-muted);
    font-weight: 400;
    line-height: 1.4;
}

/* Universal styles for common widget elements */
.cat-sidebar-widget ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.cat-sidebar-widget ul li {
    padding: 6px 0;
    border-bottom: 1px solid var(--color-border-light);
    font-size: 14px;
}

.cat-sidebar-widget ul li:last-child { border-bottom: none; }

.cat-sidebar-widget a {
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: color 0.15s;
    display: inline-block;
}

.cat-sidebar-widget a:hover { color: var(--color-primary); }

/* Counts, e.g. "Beer (32)" */
.cat-sidebar-widget .count {
    color: var(--color-text-muted);
    font-size: 12px;
    margin-left: 4px;
}

/* Standard WC price filter */
.cat-sidebar-widget .price_slider { margin: 12px 0 8px; }

.cat-sidebar-widget .price_slider_amount .button {
    background: var(--color-primary);
    color: #fff;
    border: none;
    padding: 8px 18px;
    border-radius: var(--radius-sm);
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}

.cat-sidebar-widget .price_slider_amount .button:hover {
    background: var(--color-primary-dark);
}

.cat-sidebar-widget .price_slider_amount .price_label {
    font-size: 13px;
    color: var(--color-text-secondary);
    margin-bottom: 10px;
}

/* WC chosen filters list */
.cat-sidebar-widget .woocommerce-widget-layered-nav-list a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.cat-sidebar-widget .woocommerce-widget-layered-nav-list .chosen a::before {
    content: '×';
    color: var(--color-danger);
    font-weight: 700;
}

.cat-products ul.products {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}

/* With sidebar still 4 per row by default; drop to 3 on narrow viewports
   (handled in the responsive section further down). */
.cat-products--with-sidebar ul.products {
    grid-template-columns: repeat(4, 1fr);
    gap: 18px;
}
@media (max-width: 1100px) {
    .cat-products--with-sidebar ul.products {
        grid-template-columns: repeat(3, 1fr);
    }
}

.cat-products ul.products::before,
.cat-products ul.products::after { display: none; }

.cat-products ul.products li.product {
    margin: 0;
    padding: 0;
    width: 100%;
    float: none;
    list-style: none;
}


/* ----- Empty state ----- */
.cat-empty {
    background: var(--color-white);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-lg);
    padding: 48px 24px;
    text-align: center;
    color: var(--color-text-muted);
    font-size: 15px;
}


/* ----- "Näytä lisää" load-more button ----- */
.cat-loadmore-wrap { text-align: center; margin: 36px 0 4px; }
.cat-loadmore {
    font-family: var(--font-body); font-weight: 600; font-size: 15px; color: #fff;
    background: var(--color-primary); border: none; padding: 13px 44px;
    border-radius: var(--radius-sm); cursor: pointer; transition: background .15s, opacity .15s;
}
.cat-loadmore:hover { background: var(--color-primary-dark); }
.cat-loadmore.is-loading { opacity: .65; cursor: default; }

/* ----- Pagination ----- */
.cat-pagination {
    margin-top: 40px;
    display: flex;
    justify-content: center;
}

.cat-pagination .woocommerce-pagination {
    width: auto;
    text-align: center;
}

.cat-pagination .woocommerce-pagination ul.page-numbers {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    list-style: none;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
}

.cat-pagination .woocommerce-pagination ul.page-numbers li {
    margin: 0 !important;
    border: none !important;
    display: inline-flex;
}

/* Base — links AND span numbers */
.cat-pagination ul.page-numbers li a.page-numbers,
.cat-pagination ul.page-numbers li span.page-numbers {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 10px;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text-secondary);
    text-decoration: none;
    line-height: 1;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}

/* Hover only on links */
.cat-pagination ul.page-numbers li a.page-numbers:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
    background: var(--color-primary-pale);
}

/* Current page — filled */
.cat-pagination ul.page-numbers li span.page-numbers.current,
.cat-pagination ul.page-numbers li a.page-numbers.current {
    background: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
    color: #fff !important;
}

/* Dots — plain, no box */
.cat-pagination ul.page-numbers li span.page-numbers.dots {
    background: transparent !important;
    border: none !important;
    min-width: 24px;
    color: var(--color-text-muted);
    font-weight: 700;
    letter-spacing: 2px;
    padding: 0 4px;
}

/* Prev / Next arrows — slightly wider */
.cat-pagination ul.page-numbers li a.next,
.cat-pagination ul.page-numbers li a.prev {
    min-width: 44px;
    color: var(--color-text);
    font-size: 18px;
    line-height: 1;
}

.cat-pagination ul.page-numbers li a.next:hover,
.cat-pagination ul.page-numbers li a.prev:hover {
    color: var(--color-primary);
}


/* ----- Responsive ----- */
@media (max-width: 1100px) {
    .cat-products ul.products { grid-template-columns: repeat(3, 1fr); }
    .cat-products--with-sidebar ul.products { grid-template-columns: repeat(2, 1fr); }
    .cat-container--with-sidebar { grid-template-columns: 240px 1fr; gap: 24px; }
}

@media (max-width: 900px) {
    /* Sidebar collapses below toolbar on tablet */
    .cat-container--with-sidebar { grid-template-columns: 1fr; }
    .cat-sidebar { position: static; }
    .cat-products--with-sidebar ul.products { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 800px) {
    .cat-products ul.products,
    .cat-products--with-sidebar ul.products { grid-template-columns: repeat(2, 1fr); gap: 16px; }
    /* WooCommerce's small-screen CSS forces li.product to width:48% + float,
       which only half-fills our grid cells — make the card fill the cell. */
    .cat-products ul.products li.product { width: 100% !important; float: none !important; margin: 0 !important; }
    .cat-title { font-size: 28px; }
    .cat-header__icon { width: 52px; height: 52px; }
}

@media (max-width: 480px) {
    .cat-toolbar__inner { gap: 8px; }
    .cat-toolbar .woocommerce-ordering::before { display: none; }
    .cat-toolbar .woocommerce-ordering select.orderby { padding: 8px 32px 8px 10px; }
    .cat-title { font-size: 24px; }

    /* Keep 2 columns on phones; small column gap, bigger row gap so the rows
       get vertical breathing room. */
    .cat-products ul.products,
    .cat-products--with-sidebar ul.products { gap: 26px 10px; }

    /* Pagination: up to 139 pages won't fit one row — wrap + shrink buttons. */
    .cat-pagination .woocommerce-pagination ul.page-numbers { flex-wrap: wrap; row-gap: 8px; }
    .cat-pagination ul.page-numbers li a.page-numbers,
    .cat-pagination ul.page-numbers li span.page-numbers { min-width: 38px; height: 38px; }
}


/* ============================================
   MOBILE FILTER DRAWER (off-canvas sidebar)
   Desktop: sidebar is always visible, these are hidden.
   ============================================ */
.cat-filter-toggle   { display: none; }
.cat-sidebar__drawerhead { display: none; }
.cat-filter-backdrop { display: none; }

@media (max-width: 900px) {
    /* "Suodata" button in the toolbar */
    .cat-filter-toggle {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 9px 16px;
        background: var(--color-white);
        border: 1px solid var(--color-border);
        border-radius: var(--radius-md);
        font-family: var(--font-body);
        font-size: 14px;
        font-weight: 600;
        color: var(--color-text);
        cursor: pointer;
        transition: border-color 0.15s, color 0.15s;
    }
    .cat-filter-toggle:hover,
    .cat-filter-toggle[aria-expanded="true"] {
        border-color: var(--color-primary);
        color: var(--color-primary);
    }

    /* Products take the full width; the sidebar leaves the flow as a drawer. */
    .cat-container--with-sidebar { display: block; }

    .cat-sidebar {
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        width: 88%;
        max-width: 340px;
        z-index: 1200;
        background: var(--color-white);
        transform: translateX(-100%);
        transition: transform 0.28s ease;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        box-shadow: 4px 0 40px rgba(15, 23, 42, 0.25);
    }
    body.aj-filter-open .cat-sidebar { transform: translateX(0); }

    .cat-sidebar__inner { border: 0; border-radius: 0; }

    .cat-sidebar__drawerhead {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 16px 18px;
        border-bottom: 1px solid var(--color-border);
        position: sticky;
        top: 0;
        background: var(--color-white);
        z-index: 2;
    }
    .cat-sidebar__drawertitle {
        font-family: var(--font-body);
        font-weight: 700;
        font-size: 15px;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        color: var(--color-text);
    }
    .cat-sidebar__close {
        display: inline-flex;
        background: none;
        border: none;
        padding: 4px;
        color: var(--color-text-secondary);
        cursor: pointer;
    }
    .cat-sidebar__close:hover { color: var(--color-text); }

    .cat-filter-backdrop {
        display: block;
        position: fixed;
        inset: 0;
        background: rgba(15, 23, 42, 0.5);
        z-index: 1100;
        opacity: 0;
        visibility: hidden;
        transition: opacity 0.28s ease, visibility 0.28s ease;
    }
    body.aj-filter-open .cat-filter-backdrop { opacity: 1; visibility: visible; }
}


/* ============================================
   PRODUCT CARD (archive / category loop)
   Ported from legacy alkojuomat shoptimizer-child design.
   Coral border, dashed bottom of header, "ticket" notch corners.
   ============================================ */

ul.products li.product .product-overal {
    position: relative;
    border: 1px solid #e88368;
    border-radius: 8px;
    background: #fff;
    height: 100%;
    display: flex;
    flex-direction: column;
}

ul.products li.product .product-overal--oos {
    border-color: #d6c0bb;
    opacity: 0.92;
}

/* ----- TOP HALF (title, info, image) ----- */
.product-overal .product-top {
    position: relative;
    border: 0 solid #e88368;
    border-bottom: 1px dashed #e88368;
    border-radius: 8px 8px 0 0;
    padding: 22px 16px 16px;
    display: flex;
    flex-direction: column;
    flex: 1;                       /* take available height */
}

/* Notch decorations on the dashed line */
.product-overal .product-top::before,
.product-overal .product-top::after {
    content: "";
    display: block;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 1px solid #e88368;
    background: #fff;
    position: absolute;
    bottom: -10px;
    z-index: 2;
    transform: rotate(-45deg);
}
.product-overal .product-top::before {
    left: -10px;
    border-left-color: #fff;
    border-top-color: #fff;
}
.product-overal .product-top::after {
    right: -10px;
    border-right-color: #fff;
    border-bottom-color: #fff;
}

/* ----- TITLE ----- */
.product-overal .product-title {
    text-align: center;
    margin-top: 8px;
    margin-bottom: 12px;
    position: relative;
}

.product-overal .product-title a {
    font-family: var(--font-body);     /* same as header nav (Montserrat) */
    font-weight: 600;
    font-size: 17px;
    line-height: 1.35;
    color: var(--color-text);
    text-decoration: none;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
    /* Reserve 2 lines worth of height to keep cards aligned */
    min-height: calc(17px * 1.35 * 2);
}

.product-overal .product-title a:hover { color: var(--color-primary); }

/* Sale / "1X SPECIALS" badge on title */
.product-overal .product_preview_label_left,
.product-overal .product_preview_label_right {
    color: #fff;
    position: absolute;
    height: 28px;
    background: #e58f79;
    border: 3px solid #fff;
    box-shadow: 0 4px 12px rgba(74,123,177,0.18);
    border-radius: 0 10px;
    top: -44px;   /* keskitä lätkä kortin yläreunan viivalle */
    padding: 0 14px;
    font-size: 13px;
    font-weight: 700;
    line-height: 22px;
    max-width: calc(100% - 20px);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.product-overal .product_preview_label_left  { left: 6px; }
.product-overal .product_preview_label_right { right: 6px; }

.product-overal .new_goods {
    color: #fff;
    position: absolute;
    height: 28px;
    background: #6CADF4;
    border: 3px solid #fff;
    box-shadow: 0 4px 12px rgba(74,123,177,0.18);
    border-radius: 0 10px;
    top: -44px;   /* keskitä lätkä kortin yläreunan viivalle */
    right: 6px;
    padding: 0 14px;
    font-size: 13px;
    font-weight: 700;
    line-height: 22px;
}

/* ----- INFO row (volume / weight) ----- */
.product-overal .product-info {
    display: flex;
    justify-content: space-between;
    font-weight: 500;
    font-size: 14px;
    color: var(--color-text-secondary);
    line-height: 1.5;
}

.product-overal .product-info .product-volume span {
    color: var(--color-text-muted);
    font-weight: 400;
}

/* ----- Per litra ----- */
.product-overal .per-litr {
    display: block;
    width: 100%;
    text-align: center;
    font-size: 13px;
    line-height: 1.4;
    color: var(--color-text-muted);
    margin-top: 8px;
    font-weight: 500;
}

/* ----- Image wrapper ----- */
.product-overal .woocommerce-image__wrapper {
    margin: 16px 0 0;
    position: relative;
    text-align: center;
    flex: 1;                /* push everything else up, image grows */
    display: flex;
    align-items: center;
    justify-content: center;
}

.product-overal .product-image-link {
    display: block;
    position: relative;
    aspect-ratio: 1;
    overflow: hidden;
    width: 100%;
}

.product-overal .product-image-link img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    transition: opacity 0.3s ease;
}

/* Hover-flip: show second image */
.product-overal .product-image-link .gallery-image {
    opacity: 0;
}
.product-overal:hover .product-image-link .gallery-image {
    opacity: 1;
}

/* ----- Out-of-stock ribbon over image ----- */
.product-overal .product-stock.out-of-stock {
    position: absolute;
    top: 60%;
    left: 50%;
    width: calc(100% - 20px);
    transform: translate(-50%, -50%);
    text-align: center;
    background: rgba(228,201,203,0.92);
    font-weight: 700;
    font-size: 14px;
    line-height: 22px;
    text-transform: uppercase;
    color: #5c2a2a;
    padding: 12px 0;
    z-index: 3;
    border-radius: 4px;
    letter-spacing: 0.5px;
}

/* ----- Vivino badge ----- */
.product-overal .vivvino-cat-rat {
    position: absolute;
    top: 8px;
    left: 8px;
    z-index: 2;
    background: #fff;
    padding: 4px 10px;
    border-radius: 4px;
    border: 1px solid #e88368;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 700;
    font-size: 13px;
    line-height: 1;
    color: var(--color-text);
}

.product-overal .vivvino-cat-rat .vivino-icon {
    width: 18px;
    height: 18px;
    background: #6f1e1e;
    color: #fff;
    border-radius: 3px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 12px;
    flex-shrink: 0;
}

/* ----- BOTTOM HALF (rating, price, cart) ----- */
.product-overal .product-bottom {
    border-radius: 0 0 8px 8px;
    padding: 16px 16px 16px;
    text-align: center;
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 10px;
    flex-shrink: 0;
}

.product-overal .product-price {
    font-family: var(--font-body);            /* clean sans-serif for prices */
    font-size: 22px;
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.1;
    letter-spacing: -0.01em;
}

.product-overal .product-price .discount { display: inline-block; }

.product-overal .product-price .full {
    display: inline-block;
    margin-left: 8px;
    font-size: 14px;
    color: var(--color-text-muted);
    text-decoration: line-through;
    font-weight: 500;
}

.product-overal--sale .product-price .discount {
    color: #d94530;
}

/* ----- Cart button — natural flow, full width ----- */
.product-overal .product-add { width: 100%; }

.product-overal .btn-loop-cart {
    width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 11px 14px;
    background: #e88368;
    color: #fff;
    border: 2px solid #e88368;
    border-radius: 6px;
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.1s;
}

.product-overal .btn-loop-cart:hover {
    background: #d96846;
    border-color: #d96846;
}

.product-overal .btn-loop-cart svg { width: 16px; height: 16px; }

.product-overal .btn-loop-cart.is-loading {
    opacity: 0.85;
    cursor: wait;
}

.product-overal .btn-loop-cart.is-added {
    background: #10b981;
    border-color: #10b981;
}

.product-overal .btn-loop-cart--outline {
    background: #fff;
    color: #e88368;
}

.product-overal .btn-loop-cart--outline:hover {
    background: #fef0eb;
    color: #d96846;
}

/* ----- Responsive ----- */
@media (max-width: 600px) {
    .product-overal .product-title a { font-size: 16px; }
    .product-overal .product-info { font-size: 13px; }
    .product-overal .product-price { font-size: 19px; }
    .product-overal .btn-loop-cart { font-size: 13px; padding: 10px; }
}

/* Phones: 2 columns are tight (~155px/card) — compact everything so the
   title, volume, per-litra, price and add-to-cart button fit without
   breaking or overflowing. */
@media (max-width: 480px) {
    .product-overal .product-top { padding: 16px 9px 12px; }
    .product-overal .product-bottom { padding: 12px 8px; gap: 8px; }

    .product-overal .product-title { margin-bottom: 8px; }
    .product-overal .product-title a {
        font-size: 14px;
        min-height: calc(14px * 1.35 * 2);
    }

    .product-overal .product-info { font-size: 11px; flex-wrap: wrap; gap: 2px 6px; }
    .product-overal .per-litr { font-size: 11px; margin-top: 6px; }
    .product-overal .woocommerce-image__wrapper { margin-top: 10px; }

    .product-overal .product-price { font-size: 16px; }
    .product-overal .product-price .discount,
    .product-overal .product-price .full { white-space: nowrap; }
    .product-overal .product-price .full { font-size: 12px; margin-left: 4px; }

    /* Button: drop the icon and allow the label to wrap so it never clips. */
    .product-overal .btn-loop-cart {
        font-size: 12px;
        padding: 9px 6px;
        gap: 4px;
        line-height: 1.2;
        white-space: normal;
    }
    .product-overal .btn-loop-cart svg { display: none; }

    .product-overal .product-stock.out-of-stock { font-size: 12px; padding: 9px 0; }
    .product-overal .product_preview_label_left,
    .product-overal .product_preview_label_right {
        font-size: 11px;
        height: 24px;
        line-height: 18px;
        padding: 0 8px;
        top: -28px;
    }
}

/* =====================================================
   Filter sidebar widget (Phase 3, Stage A)
   ===================================================== */

/* Active filter chip block at top */
.cat-filter-active { background: var(--color-primary-pale); }

.cat-filter-active__chip {
    display: inline-flex !important;
    align-items: center;
    gap: 8px;
    padding: 6px 10px 6px 12px;
    background: var(--color-primary);
    color: #fff !important;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    transition: background 0.15s;
}
.cat-filter-active__chip:hover { background: var(--color-primary-dark); color: #fff !important; }
.cat-filter-active__x {
    display: inline-block;
    margin-left: 2px;
    opacity: 0.85;
}

.cat-filter-list { list-style: none; margin: 0; padding: 0; }

/* Long lists scroll instead of pushing the page down.
   scrollbar-gutter reserves space so the count alignment doesn't shift,
   plus a thin custom scrollbar set apart from the count column. */
.cat-filter-group .cat-filter-list {
    max-height: 320px;
    overflow-y: auto;
    scrollbar-gutter: stable;
    scrollbar-width: thin;
    scrollbar-color: var(--color-border) transparent;
    padding-right: 12px;
}
.cat-filter-group .cat-filter-list::-webkit-scrollbar {
    width: 6px;
}
.cat-filter-group .cat-filter-list::-webkit-scrollbar-track {
    background: transparent;
}
.cat-filter-group .cat-filter-list::-webkit-scrollbar-thumb {
    background: var(--color-border);
    border-radius: 3px;
}
.cat-filter-group .cat-filter-list::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-muted);
}

/* =====================================================
   Page lead — intro paragraph under H1
   ===================================================== */
.page-lead {
    font-size: 17px;
    line-height: 1.65;
    color: var(--color-text-secondary);
    margin: -8px 0 36px;
    max-width: 720px;
}

/* =====================================================
   Generic info-page sections (Meistä, Toimitus, etc.)
   ===================================================== */
.info-section {
    margin: 36px 0;
}
.info-section:first-of-type { margin-top: 24px; }
.info-section:last-of-type { margin-bottom: 0; }

.info-section__title {
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 16px;
    letter-spacing: -0.005em;
}

/* =====================================================
   BLOG ARCHIVE (category/blogi + fallback index)
   ===================================================== */
.blog-header { margin-bottom: 28px; }
.blog-count {
    margin: 8px 0 0;
    font-size: 14px;
    color: var(--color-text-muted);
}

.blog-grid { display: flex; flex-direction: column; gap: 18px; }

.post-card {
    display: flex;
    gap: 20px;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 20px 22px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.post-card:hover { border-color: var(--color-primary-light); box-shadow: 0 4px 16px rgba(15, 23, 42, .06); }

.post-card__media {
    flex: 0 0 190px;
    align-self: flex-start;
    border-radius: var(--radius-md);
    overflow: hidden;
    background: var(--color-bg);
}
.post-card__media img { display: block; width: 100%; height: auto; }

.post-card__body { min-width: 0; }

.post-card__date {
    display: block;
    font-size: 13px;
    color: var(--color-text-muted);
    margin-bottom: 6px;
}

.post-card__title {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 600;
    line-height: 1.3;
    margin: 0 0 10px;
}
.post-card__title a { color: var(--color-text); text-decoration: none; }
.post-card__title a:hover { color: var(--color-primary-dark); }

.post-card__excerpt {
    font-size: 15px;
    line-height: 1.65;
    color: var(--color-text-secondary);
    margin: 0 0 12px;
}

.post-card__more {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 14px;
    font-weight: 600;
    color: var(--color-primary-dark);
    text-decoration: none;
}
.post-card__more svg { width: 15px; height: 15px; }
.post-card__more:hover { color: var(--color-primary); }

.blog-empty { color: var(--color-text-secondary); }

/* Pagination (the_posts_pagination) — square buttons like the shop grid. */
.article-page .pagination { margin-top: 32px; }
.article-page .pagination .nav-links { display: flex; flex-wrap: wrap; gap: 8px; }
.article-page .pagination .page-numbers {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 40px; height: 40px; padding: 0 12px;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    color: var(--color-text); text-decoration: none;
    font-size: 14px; font-weight: 600;
}
.article-page .pagination .page-numbers:hover { border-color: var(--color-primary-light); color: var(--color-primary-dark); }
.article-page .pagination .page-numbers.current {
    background: var(--color-primary); border-color: var(--color-primary); color: #fff;
}
.article-page .pagination .page-numbers.dots { border-color: transparent; background: none; }

@media (max-width: 700px) {
    .post-card { flex-direction: column; gap: 14px; padding: 16px; }
    .post-card__media { flex-basis: auto; width: 100%; }
    .post-card__title { font-size: 19px; }
}

/* "Miten pakkaamme": icon beside the section heading + a row of packing photos. */
.info-pack__title { display: flex; align-items: center; gap: 12px; }
.info-pack__icon { width: 34px; height: 34px; flex: 0 0 auto; object-fit: contain; }
/* Columns are capped near the photos' native width (≈204px) — stretching them
   to a full-width 1fr track upscaled each shot to ~500px tall and blew the page
   up. */
.info-pack__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 190px));
    justify-content: start;
    gap: 14px;
    margin-top: 4px;
}
.info-pack__shot {
    width: 100%; height: auto; display: block;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
}

.info-section p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--color-text-secondary);
    margin: 0 0 16px;
}
.info-section p:last-child { margin-bottom: 0; }
.info-section a {
    color: var(--color-primary);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.15s;
}
.info-section a:hover { border-bottom-color: var(--color-primary); }
.info-section strong { color: var(--color-text); }
.info-section ul { margin: 16px 0; padding-left: 24px; }
.info-section li { color: var(--color-text-secondary); margin-bottom: 8px; line-height: 1.6; }

/* =====================================================
   Payment method cards (Maksutavat)
   ===================================================== */
.info-payments {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin: 24px 0;
}
.info-payments__card {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 24px 22px;
    display: flex;
    flex-direction: column;
}
.info-payments__title {
    font-family: var(--font-display);
    font-size: 19px;
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 12px;
}
.info-payments__card p {
    font-size: 14px;
    line-height: 1.6;
    color: var(--color-text-secondary);
    margin: 0 0 16px;
    flex: 1;
}
.info-payments__brands {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--color-text-muted);
    font-weight: 600;
    padding-top: 12px;
    border-top: 1px solid var(--color-border-light);
}

@media (max-width: 800px) {
    .info-payments { grid-template-columns: 1fr; }
}

/* =====================================================
   Generic info callout (e.g. pickup address rows)
   ===================================================== */
.info-callout {
    background: var(--color-primary-pale);
    border-radius: var(--radius-md);
    padding: 24px 28px;
    margin: 20px 0 24px;
}
.info-callout__row {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 20px;
    padding: 12px 0;
    border-bottom: 1px solid rgba(102, 151, 205, 0.2);
}
.info-callout__row:first-child { padding-top: 0; }
.info-callout__row:last-child { border-bottom: none; padding-bottom: 0; }
.info-callout__label {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 600;
    color: var(--color-text);
}
.info-callout__value {
    font-size: 15px;
    line-height: 1.5;
    color: var(--color-text);
}

@media (max-width: 600px) {
    .info-callout__row { grid-template-columns: 1fr; gap: 4px; }
}

/* =====================================================
   Contact 2-col (Yhteystiedot)
   ===================================================== */
.info-contact__grid {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 32px;
    align-items: start;
}
.info-contact__form-col .info-section__title { margin-top: 0; }

.info-contact__details-col { display: flex; flex-direction: column; gap: 12px; }

.info-contact__card {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 22px 24px;
}
.info-contact__card--muted {
    background: var(--color-primary-pale);
    border-color: transparent;
    font-size: 14px;
    color: var(--color-text-secondary);
}
.info-contact__card--muted p { margin: 0; }
.info-contact__card--muted a { color: var(--color-primary); font-weight: 600; }

.info-contact__card-title {
    font-family: var(--font-display);
    font-size: 17px;
    font-weight: 600;
    margin: 0 0 12px;
    color: var(--color-text);
}
.info-contact__list { list-style: none; padding: 0; margin: 0; }
.info-contact__list li {
    font-size: 14px;
    line-height: 1.55;
    color: var(--color-text-secondary);
    padding: 6px 0;
    border-bottom: 1px solid var(--color-border-light);
}
.info-contact__list li:last-child { border-bottom: none; }

.info-contact__address {
    font-size: 14px;
    line-height: 1.65;
    color: var(--color-text);
    margin: 0 0 12px;
}
.info-contact__address strong { display: block; margin-bottom: 4px; font-size: 15px; }

/* CF7 form basic theming */
.info-contact .wpcf7-form p { margin-bottom: 14px; }
.info-contact .wpcf7-form label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text);
    margin-bottom: 6px;
}
.info-contact .wpcf7-form input[type="text"],
.info-contact .wpcf7-form input[type="email"],
.info-contact .wpcf7-form input[type="tel"],
.info-contact .wpcf7-form textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: var(--font-body);
    font-size: 15px;
    color: var(--color-text);
    background: #fff;
}
.info-contact .wpcf7-form input:focus,
.info-contact .wpcf7-form textarea:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(102, 151, 205, 0.15);
}
.info-contact .wpcf7-form textarea { min-height: 140px; resize: vertical; }
.info-contact .wpcf7-form .wpcf7-submit {
    background: var(--color-primary);
    color: #fff;
    border: none;
    padding: 13px 32px;
    border-radius: var(--radius-md);
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.info-contact .wpcf7-form .wpcf7-submit:hover { background: var(--color-primary-dark); }

@media (max-width: 900px) {
    .info-contact__grid { grid-template-columns: 1fr; }
}

/* =====================================================
   Numbered steps (Tilaaminen, Toimitus timeline)
   ===================================================== */
.info-steps {
    list-style: none;
    counter-reset: aj-step;
    padding: 0;
    margin: 24px 0 0;
}
.info-steps__item {
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: 20px;
    padding: 0 0 32px;
    position: relative;
}
.info-steps__item:not(:last-child)::before {
    content: '';
    position: absolute;
    left: 19px;
    top: 48px;
    bottom: 8px;
    border-left: 1px dashed var(--color-primary-light);
}
.info-steps__num {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--color-primary);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 16px;
    font-family: var(--font-body);
    flex-shrink: 0;
}
.info-steps__body { padding-top: 4px; min-width: 0; }
.info-steps__title {
    font-family: var(--font-display);
    font-size: 19px;
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 8px;
    letter-spacing: -0.005em;
}
.info-steps__text,
.info-steps__text p {
    font-size: 15px;
    line-height: 1.65;
    color: var(--color-text-secondary);
    margin: 0 0 10px;
}
.info-steps__text p:last-child { margin-bottom: 0; }
.info-steps__text strong { color: var(--color-text); }
.info-steps__text ul { margin: 8px 0; padding-left: 22px; }
.info-steps__text li { color: var(--color-text-secondary); line-height: 1.6; margin-bottom: 4px; }
.info-steps__text a {
    color: var(--color-primary);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.15s;
}
.info-steps__text a:hover { border-bottom-color: var(--color-primary); }

/* =====================================================
   Warning / attention callout
   ===================================================== */
.info-warning {
    background: rgba(245, 158, 11, 0.08);
    border-left: 3px solid var(--color-star);
    border-radius: var(--radius-sm);
    padding: 16px 20px;
    margin: 20px 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--color-text);
}
.info-warning strong { color: var(--color-text); font-weight: 700; }
.info-warning a { color: var(--color-primary); border-bottom: 1px solid currentColor; text-decoration: none; }

/* =====================================================
   FAQ list (UKK page) — Q&A cards, no JS accordion
   ===================================================== */
.faq-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.faq-item {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 24px 28px;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.faq-item:hover {
    border-color: var(--color-primary-light);
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.04);
}

.faq-item__question {
    font-family: var(--font-display);
    font-size: 19px;
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 14px;
    letter-spacing: -0.005em;
    line-height: 1.35;
}

.faq-item__answer {
    font-size: 15px;
    line-height: 1.7;
    color: var(--color-text-secondary);
}
.faq-item__answer p {
    margin: 0 0 12px;
}
.faq-item__answer p:last-child { margin-bottom: 0; }
.faq-item__answer a {
    color: var(--color-primary);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.15s;
}
.faq-item__answer a:hover { border-bottom-color: var(--color-primary); }
.faq-item__answer strong { color: var(--color-text); font-weight: 600; }

.faq-cta {
    margin-top: 40px;
    padding: 28px;
    background: var(--color-primary-pale);
    border-radius: var(--radius-md);
    text-align: center;
}
.faq-cta p {
    margin: 0 0 8px;
    color: var(--color-text);
    font-size: 16px;
}
.faq-cta__link {
    color: var(--color-primary) !important;
    text-decoration: none;
    font-weight: 600;
    font-size: 15px;
    transition: color 0.15s;
}
.faq-cta__link:hover { color: var(--color-primary-dark) !important; }

@media (max-width: 600px) {
    .faq-item { padding: 20px 22px; }
    .faq-item__question { font-size: 17px; }
}

/* =====================================================
   Page with siblings sidebar (info-hub pages)
   ===================================================== */
.page-siblings { padding-top: 8px; }

.page-siblings--with-aside {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 32px;
    align-items: start;
}
/* If the partial bailed (no parent / no siblings), collapse to single column */
.page-siblings--with-aside:not(:has(.page-siblings__aside)) {
    display: block;
}

.page-siblings__main {
    /* Inherits .page-content base styles */
    margin-left: 0;
    margin-right: 0;
}
.page-siblings--with-aside .page-siblings__main { max-width: none; }

.page-siblings__aside { position: sticky; top: 84px; }

.page-siblings__aside-inner {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 22px 22px;
}

.page-siblings__aside-title {
    font-family: var(--font-body);
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--color-text);
    margin: 0 0 14px;
}

.page-siblings__list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.page-siblings__item {
    margin: 0;
    border-bottom: 1px solid var(--color-border-light);
}
.page-siblings__item:last-child { border-bottom: none; }
.page-siblings__item a {
    display: block;
    padding: 11px 0;
    color: var(--color-text-secondary);
    font-size: 15px;
    text-decoration: none;
    transition: color 0.15s;
}
.page-siblings__item a:hover { color: var(--color-primary); }
.page-siblings__item.is-active a {
    color: var(--color-primary);
    font-weight: 600;
}

@media (max-width: 900px) {
    .page-siblings--with-aside { grid-template-columns: 1fr; gap: 20px; }
    .page-siblings__aside { position: static; }
}

/* =====================================================
   Front page (homepage)
   Lightweight, image-led, no decorative icons.
   ===================================================== */
.home-page { background: var(--color-white); }

.home-container {
    max-width: 1610px;
    margin: 0 auto;
    padding: 0 24px;
}

/* ---- Hero ---- */
.home-hero {
    padding: 88px 0 100px;
    text-align: center;
    background: var(--color-bg);
    border-bottom: 1px solid var(--color-border-light);
}
.home-hero__title {
    font-family: var(--font-display);
    font-size: 52px;
    font-weight: 600;
    line-height: 1.1;
    color: var(--color-text);
    max-width: 780px;
    margin: 0 auto 22px;
    letter-spacing: -0.01em;
}
.home-hero__subtitle {
    font-family: var(--font-body);
    font-size: 17px;
    line-height: 1.6;
    color: var(--color-text-secondary);
    max-width: 620px;
    margin: 0 auto 34px;
}
.home-hero__cta {
    display: inline-block;
    padding: 15px 36px;
    background: var(--color-primary);
    color: #fff !important;
    text-decoration: none !important;
    border-radius: var(--radius-md);
    font-weight: 600;
    font-size: 15px;
    letter-spacing: 0.01em;
    transition: background 0.15s, transform 0.15s;
}
.home-hero__cta:hover {
    background: var(--color-primary-dark);
    color: #fff !important;
    transform: translateY(-1px);
}

/* ---- Section titles ---- */
.home-section__title {
    font-family: var(--font-display);
    font-size: 32px;
    font-weight: 600;
    color: var(--color-text);
    text-align: center;
    margin: 0 0 40px;
    letter-spacing: -0.005em;
}

/* ---- Categories grid ---- */
.home-cats { padding: 80px 0; }

.home-cats__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
}

.home-cat {
    display: flex;
    flex-direction: column;
    text-decoration: none !important;
    color: var(--color-text);
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
}
.home-cat:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
    border-color: var(--color-primary-light);
    color: var(--color-text);
}

.home-cat__image {
    height: 180px;
    background-size: cover;
    background-position: center;
    background-color: var(--color-bg);
}
.home-cat__image--placeholder {
    background: linear-gradient(135deg, var(--color-primary-pale) 0%, var(--color-primary-light) 100%);
}

.home-cat__body {
    padding: 20px 22px 24px;
}
.home-cat__name {
    font-family: var(--font-display);
    font-size: 21px;
    font-weight: 600;
    margin: 0 0 6px;
    color: var(--color-text);
}
.home-cat__count {
    font-size: 13px;
    color: var(--color-text-muted);
}

/* ---- Featured products ---- */
.home-featured {
    padding: 80px 0;
    background: var(--color-bg);
}

.home-featured__grid {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}
.home-featured__grid::before,
.home-featured__grid::after { display: none !important; }
.home-featured__grid li.product {
    margin: 0 !important;
    width: 100% !important;
    float: none !important;
}

.home-featured__cta {
    text-align: center;
    margin-top: 40px;
}
.home-featured__cta a {
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 600;
    font-size: 15px;
    transition: color 0.15s;
}
.home-featured__cta a:hover { color: var(--color-primary-dark); }

/* ---- Brand intro ---- */
.home-about { padding: 80px 0 100px; }

.home-about__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 36px;
    max-width: 1100px;
    margin: 0 auto;
}
.home-about__item h3 {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 12px;
    letter-spacing: -0.005em;
}
.home-about__item p {
    font-size: 15px;
    line-height: 1.65;
    color: var(--color-text-secondary);
    margin: 0;
}

/* ---- Shared product grid (featured + recommended) ---- */
.home-products__grid {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}
.home-products__grid::before,
.home-products__grid::after { display: none !important; }
.home-products__grid li.product { margin: 0 !important; width: 100% !important; float: none !important; }
.home-section__cta { text-align: center; margin-top: 40px; }
.home-section__cta a { color: var(--color-primary); text-decoration: none; font-weight: 600; font-size: 15px; transition: color .15s; }
.home-section__cta a:hover { color: var(--color-primary-dark); }

/* ---- Advantages / USPs ---- */
.home-usps { padding: 64px 0; background: var(--color-bg); }
.home-usps__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.home-usp { text-align: center; padding: 0 8px; }
.home-usp__icon { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 50%; background: var(--color-primary-pale); color: var(--color-primary-dark); margin-bottom: 14px; }
.home-usp__icon svg { width: 26px; height: 26px; }
.home-usp__title { font-family: var(--font-display); font-size: 18px; font-weight: 600; color: var(--color-text); margin: 0 0 6px; }
.home-usp__text { font-size: 14px; line-height: 1.55; color: var(--color-text-secondary); margin: 0; }
.home-usps__stat { text-align: center; margin: 34px auto 0; max-width: 660px; font-size: 15px; color: var(--color-text-secondary); }
.home-usps__stat strong { color: var(--color-text); font-weight: 600; }

/* ---- Browse by type ---- */
.home-browse { padding: 80px 0; background: var(--color-white); }
.home-browse__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.home-browse__card { display: flex; flex-direction: column; background: var(--color-white); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 18px 20px 16px; transition: border-color .15s, box-shadow .15s; }
.home-browse__card:hover { border-color: var(--color-primary-light); box-shadow: 0 4px 16px rgba(15,23,42,.06); }
.home-browse__head { display: flex; align-items: center; gap: 14px; text-decoration: none; margin-bottom: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--color-border-light); }
.home-browse__img { width: 52px; height: 52px; flex: none; border-radius: var(--radius-md); background-size: cover; background-position: center; background-color: var(--color-bg); }
.home-browse__img.is-empty { background: linear-gradient(135deg, var(--color-primary-light), var(--color-primary-pale)); }
.home-browse__name { font-family: var(--font-display); font-size: 21px; font-weight: 600; color: var(--color-text); }
.home-browse__links { list-style: none; margin: 0; padding: 0; flex: 1; }
.home-browse__links li { margin: 0 0 9px; }
.home-browse__links a { color: var(--color-text-secondary); text-decoration: none; font-size: 14.5px; transition: color .15s; }
.home-browse__links a:hover { color: var(--color-primary); }
.home-browse__all { margin-top: 14px; color: var(--color-primary); font-weight: 600; font-size: 14px; text-decoration: none; }
.home-browse__all:hover { color: var(--color-primary-dark); }

/* ---- Recommended ---- */
.home-recommended { padding: 80px 0; background: var(--color-white); }

/* ---- Trustpilot reviews ---- */
.home-reviews { padding: 72px 0; background: var(--color-bg); }
.home-reviews__head { text-align: center; margin-bottom: 40px; }
.home-reviews__label { display: block; font-family: var(--font-display); font-size: 26px; font-weight: 600; color: var(--color-text); margin-bottom: 8px; }
.home-reviews__stars { display: inline-flex; gap: 3px; color: #00b67a; }
.home-reviews__stars svg { width: 22px; height: 22px; }
.home-reviews__meta { display: block; margin-top: 8px; font-size: 14px; color: var(--color-text-secondary); }
.home-reviews__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.home-review { background: var(--color-white); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 22px 24px; display: flex; flex-direction: column; }
.home-review__stars { display: inline-flex; gap: 2px; color: #00b67a; margin-bottom: 12px; }
.home-review__stars svg { width: 18px; height: 18px; }
.home-review__text { font-size: 15px; line-height: 1.6; color: var(--color-text); margin: 0 0 16px; flex: 1; }
.home-review__by { font-size: 13.5px; color: var(--color-text-secondary); }
.home-review__by strong { color: var(--color-text); font-weight: 600; margin-right: 8px; }

/* ---- SEO copy ---- */
.home-seo { padding: 72px 0 88px; background: var(--color-white); }
.home-seo .home-section__title { margin-bottom: 24px; }
.home-seo__text { max-width: 900px; margin: 0 auto; }
.home-seo__text p { font-size: 15px; line-height: 1.75; color: var(--color-text-secondary); margin: 0 0 16px; }
.home-seo__text p:last-child { margin-bottom: 0; }

/* ---- Responsive ---- */
@media (max-width: 1100px) {
    .home-cats__grid, .home-featured__grid, .home-products__grid,
    .home-browse__grid { grid-template-columns: repeat(3, 1fr); }
    .home-usps__grid { grid-template-columns: repeat(2, 1fr); row-gap: 34px; }
}
@media (max-width: 900px) {
    .home-hero { padding: 64px 0 72px; }
    .home-hero__title { font-size: 38px; }
    .home-hero__subtitle { font-size: 16px; }
    .home-section__title { font-size: 28px; margin-bottom: 32px; }
    .home-cats, .home-featured, .home-about,
    .home-usps, .home-browse, .home-recommended, .home-reviews, .home-seo { padding: 56px 0; }
    .home-cats__grid, .home-featured__grid, .home-products__grid,
    .home-browse__grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
    .home-reviews__grid { grid-template-columns: 1fr; }
    .home-cat__image { height: 140px; }
    .home-cat__name { font-size: 19px; }
    .home-about__grid { grid-template-columns: 1fr; gap: 28px; }
}
@media (max-width: 520px) {
    .home-hero__title { font-size: 30px; }
    .home-cats__grid, .home-featured__grid, .home-products__grid,
    .home-browse__grid { grid-template-columns: 1fr; }
    .home-usps__grid { grid-template-columns: 1fr; }
}

/* =====================================================
   Multi-active filter chips + clear button (Phase 3, Stage B)
   ===================================================== */

/* Big "Poista suodattimet" primary button at the top of the widget */
.cat-filter-clear-btn {
    display: block;
    text-align: center;
    background: var(--color-primary);
    color: #fff !important;
    text-decoration: none !important;
    padding: 15px 16px;
    border-radius: var(--radius-md);
    font-weight: 600;
    font-size: 15px;
    letter-spacing: 0.01em;
    transition: background 0.15s;
    margin-bottom: 14px;
}
.cat-filter-clear-btn:hover {
    background: var(--color-primary-dark);
    color: #fff !important;
}

.cat-filter-active__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

/* =====================================================
   Filter list items — checkbox-style indicator
   ===================================================== */
.cat-filter-list__item {
    padding: 0;
    border: none;
    font-size: 15px;
}
.cat-filter-list__item:last-child { border: none; }

.cat-filter-link {
    display: flex !important;
    align-items: center;
    gap: 12px;
    padding: 11px 0;
    color: var(--color-text);
    text-decoration: none;
    transition: color 0.15s;
}
.cat-filter-link:hover { color: var(--color-primary); }

.cat-filter-link::before {
    content: '';
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    border: 1.5px solid var(--color-border);
    border-radius: 3px;
    background: #fff;
    transition: border-color 0.15s, background 0.15s;
}
.cat-filter-link:hover::before { border-color: var(--color-primary); }

.cat-filter-list__item.is-active .cat-filter-link {
    color: var(--color-primary);
    font-weight: 600;
}
.cat-filter-list__item.is-active .cat-filter-link::before {
    background: var(--color-primary) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M3 8l3.5 3.5L13 4'/></svg>") center/14px no-repeat;
    border-color: var(--color-primary);
}

.cat-filter-link__name {
    flex: 1;
    min-width: 0;
    line-height: 1.4;
}

.cat-filter-link__flag {
    flex-shrink: 0;
    width: 22px;
    height: 16px;
    border-radius: 2px;
    box-shadow: 0 0 0 1px rgba(0,0,0,0.05);
    display: block;
}

.cat-filter-list__item .count {
    color: var(--color-text-muted);
    font-size: 14px;
}
.cat-filter-list__item.is-active .count { color: var(--color-primary); }

/* AJAX loading state */
.cat-products.is-loading {
    position: relative;
    pointer-events: none;
}
.cat-products.is-loading > * { opacity: 0.5; transition: opacity 0.15s; }

.cat-loading-overlay {
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 50;
    pointer-events: none;
}
.cat-loading-overlay__spinner {
    width: 28px;
    height: 28px;
    border: 3px solid var(--color-border);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: aj-spin 0.7s linear infinite;
}
@keyframes aj-spin {
    to { transform: rotate(360deg); }
}

/* =====================================================
   Price slider widget (Phase 3, Stage C)
   Dual-thumb HTML5 range, vanilla JS handles drag.
   ===================================================== */
.cat-filter-price .cat-sidebar-widget__title { margin-bottom: 8px; }

.aj-price-slider {
    position: relative;
    padding: 4px 4px 0;
}

.aj-price-slider__values {
    display: flex;
    justify-content: space-between;
    margin-bottom: 14px;
    font-size: 13px;
    font-weight: 600;
    color: var(--color-text);
}

/* Number-input pair next to the slider track */
.aj-price-slider__inputs {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
}
.aj-price-slider__input {
    width: 80px;
    padding: 9px 10px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: var(--font-body);
    font-size: 15px;
    text-align: center;
    color: var(--color-text);
    background: #fff;
    -moz-appearance: textfield; /* hide native spinners on Firefox; we'll show webkit ones */
}
.aj-price-slider__input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(102, 151, 205, 0.15);
}
.aj-price-slider__sep {
    flex: 1;
    height: 1px;
    background: var(--color-border);
    min-width: 8px;
}

.aj-price-slider__rail {
    position: relative;
    height: 28px;
    margin: 0 8px;
}

.aj-price-slider__track {
    position: absolute;
    top: 12px;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--color-border);
    border-radius: 2px;
}

.aj-price-slider__range {
    position: absolute;
    top: 12px;
    height: 4px;
    background: var(--color-primary);
    border-radius: 2px;
    pointer-events: none;
}

.aj-price-slider__thumb {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 28px;
    margin: 0;
    background: transparent;
    pointer-events: none;
    -webkit-appearance: none;
    appearance: none;
}

.aj-price-slider__thumb:focus { outline: none; }

/* Native track styling (we use our own visual track but reset the input's) */
.aj-price-slider__thumb::-webkit-slider-runnable-track {
    background: transparent;
    height: 28px;
    border: none;
}
.aj-price-slider__thumb::-moz-range-track {
    background: transparent;
    height: 28px;
    border: none;
}

.aj-price-slider__thumb::-webkit-slider-thumb {
    -webkit-appearance: none;
    pointer-events: auto;
    width: 18px;
    height: 18px;
    margin-top: 5px;
    border-radius: 50%;
    background: var(--color-primary);
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
    cursor: grab;
    transition: transform 0.1s;
}
.aj-price-slider__thumb::-webkit-slider-thumb:hover  { transform: scale(1.1); }
.aj-price-slider__thumb::-webkit-slider-thumb:active { cursor: grabbing; transform: scale(1.15); }

.aj-price-slider__thumb::-moz-range-thumb {
    pointer-events: auto;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--color-primary);
    border: 2px solid #fff;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
    cursor: grab;
}
.aj-price-slider__thumb::-moz-range-thumb:hover  { transform: scale(1.1); }
.aj-price-slider__thumb::-moz-range-thumb:active { cursor: grabbing; transform: scale(1.15); }

/* Z-index toggle: .is-on-top wins so the close-together pair stays grabbable */
.aj-price-slider__thumb            { z-index: 2; }
.aj-price-slider__thumb.is-on-top  { z-index: 3; }

.aj-price-slider__apply {
    width: 100%;
    margin-top: 16px;
    padding: 11px 14px;
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: var(--radius-sm);
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.aj-price-slider__apply:hover { background: var(--color-primary-dark); }

.aj-price-slider__reset {
    display: block;
    margin-top: 10px;
    text-align: center;
    color: var(--color-text-muted);
    font-size: 12px;
    text-decoration: none;
}
.aj-price-slider__reset:hover { color: var(--color-danger); }

/* =====================================================
   Filter SEO bottom block (long-form copy under loop)
   ===================================================== */
.cat-seo-bottom {
    margin: 48px 0 24px;
    padding: 32px 0;
    border-top: 1px solid var(--color-border);
    background: var(--color-white);
}
.cat-seo-bottom .cat-container {
    color: var(--color-text);
    font-size: 15px;
    line-height: 1.7;
}
.cat-seo-bottom h2,
.cat-seo-bottom h3 {
    font-family: 'Playfair Display', serif;
    color: var(--color-text);
    margin: 24px 0 12px;
}
.cat-seo-bottom h2 { font-size: 26px; font-weight: 600; }
.cat-seo-bottom h3 { font-size: 20px; font-weight: 500; }
.cat-seo-bottom p  { margin: 0 0 14px; }
.cat-seo-bottom ul,
.cat-seo-bottom ol { margin: 0 0 14px 20px; }
.cat-seo-bottom a  { color: var(--color-primary); text-decoration: underline; }
.cat-seo-bottom a:hover { color: var(--color-primary-dark); }


/* =====================================================
   Header search autocomplete (replaces Algolia addon)
   ===================================================== */
.search-container.aj-search { position: relative; }

/* When the dropdown is open, square the search box's bottom corners so the
   panel reads as one continuous block extending the search field. */
.search-container.aj-search.aj-open .search-box {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.aj-search-panel {
    position: absolute;
    top: calc(100% - 1px);          /* flush against the box; the 1px borders merge */
    left: 0;
    right: 0;
    z-index: 200;
    background: var(--color-white);
    border: 1px solid var(--color-primary);  /* match the focused search box */
    border-top: none;
    border-radius: 0 0 var(--radius-sm) var(--radius-sm);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.12);
    overflow: hidden;
}

.aj-search-list { list-style: none; margin: 0; padding: 6px; }

/* Larger rows for readability (older audience). */
.aj-search-item > a {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 16px;
    border-radius: var(--radius-md);
    text-decoration: none;
    color: var(--color-text);
}
.aj-search-item.is-active > a,
.aj-search-item > a:hover { background: var(--color-primary-pale); }

.aj-s-thumb {
    flex: 0 0 56px;
    width: 56px;
    height: 56px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-bg);
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-md);
    overflow: hidden;
}
.aj-s-thumb img { max-width: 100%; max-height: 100%; object-fit: contain; }

.aj-s-body {
    min-width: 0;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.aj-s-title {
    font-size: 16px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--color-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.aj-s-title mark { background: #fff3cd; color: inherit; padding: 0 1px; border-radius: 2px; }

/* Second line: volume + packaging */
.aj-s-sub {
    font-size: 14px;
    color: var(--color-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Price column — pinned to the right (uses the empty space) */
.aj-s-price-col {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 1px;
    text-align: right;
    white-space: nowrap;
    padding-left: 10px;
}
.aj-s-price { font-size: 17px; font-weight: 700; color: var(--color-text); }
.aj-s-price.is-sale { color: var(--color-sale); }
.aj-s-price-old { font-size: 13px; color: var(--color-text-muted); text-decoration: line-through; }
.aj-s-oos { font-size: 12px; color: var(--color-danger); font-weight: 600; }

.aj-search-all {
    display: block;
    padding: 14px 16px;
    text-align: center;
    font-size: 15px;
    font-weight: 600;
    color: var(--color-primary-dark);
    text-decoration: none;
    border-top: 1px solid var(--color-border-light);
    background: var(--color-bg);
}
.aj-search-all:hover { background: var(--color-primary-pale); }

.aj-search-empty {
    padding: 22px 16px;
    text-align: center;
    color: var(--color-text-secondary);
    font-size: 16px;
}

/* Mobile: give the search its own full-width row so the box AND the dropdown
   are usable (otherwise the box is squeezed next to the logo + icons and the
   panel inherits that narrow width — titles and prices get truncated). */
@media (max-width: 600px) {
    .site-header .header-inner { flex-wrap: wrap; row-gap: 10px; }
    .site-header .logo-img { max-height: 34px; width: auto; }
    .site-header .search-container {
        order: 10;
        flex: 1 0 100%;
        max-width: none;
    }

    /* Slightly more compact rows so long names/prices fit a narrow screen,
       while staying large enough to read comfortably. */
    .aj-search-panel { box-shadow: 0 12px 30px rgba(15, 23, 42, 0.18); }
    .aj-search-item > a { gap: 12px; padding: 11px 12px; }
    .aj-s-thumb { flex-basis: 50px; width: 50px; height: 50px; }
    .aj-s-title { font-size: 15px; }
    .aj-s-sub { font-size: 13px; }
    .aj-s-price { font-size: 16px; }
    .aj-s-price-col { padding-left: 8px; }
}


/* =====================================================
   CART PAGE — classic WooCommerce cart, themed full-width
   ===================================================== */

/* Break out of the narrow article card → full site width. */
body.woocommerce-cart .page-content {
    max-width: none;
    padding: 40px 40px 48px;
}
body.woocommerce-cart .page-title { margin-bottom: 28px; }

/* Two columns: items (left) + order summary (right). */
body.woocommerce-cart .woocommerce {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 36px;
    align-items: start;
}
/* notices (cashback etc.) span the full width above the grid */
body.woocommerce-cart .woocommerce > *:not(.woocommerce-cart-form):not(.cart-collaterals) {
    grid-column: 1 / -1;
}
body.woocommerce-cart .woocommerce-cart-form { grid-column: 1; min-width: 0; }
body.woocommerce-cart .cart-collaterals {
    grid-column: 2;
    width: auto !important;
    float: none !important;
    margin: 0;
}

/* Klarna on-site message sits above the totals — give it a clear gap so it
   doesn't crowd the summary card. */
body.woocommerce-cart .cart-collaterals klarna-placement,
body.woocommerce-cart .cart-collaterals .klarna-onsite-messaging {
    display: block;
    margin-bottom: 22px;
}

/* ---- Items table ---- */
body.woocommerce-cart table.cart {
    width: 100%;
    border: 0;
    border-collapse: collapse;
    margin: 0;
}
body.woocommerce-cart table.cart thead th {
    text-align: left;
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-text-secondary);
    padding: 0 10px 14px;     /* match the data cells' 10px so headers line up */
    border-bottom: 2px solid var(--color-border);
    background: transparent;
}
body.woocommerce-cart table.cart td {
    padding: 22px 16px;
    border: 0;
    border-bottom: 1px solid var(--color-border-light);
    vertical-align: middle;
    background: transparent;
    font-size: 16px;
    color: var(--color-text);
}
body.woocommerce-cart table.cart .product-thumbnail img {
    width: 90px;
    height: 90px;
    object-fit: contain;
    max-width: none;       /* WC's max-width:100% collapses it in the cell */
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-md);
    background: var(--color-bg);
    padding: 4px;
}

/* Fixed columns so the name keeps room for two lines beside the larger image. */
body.woocommerce-cart table.cart { table-layout: fixed; }
body.woocommerce-cart table.cart td,
body.woocommerce-cart table.cart th { padding-left: 10px; padding-right: 10px; }
body.woocommerce-cart table.cart .product-remove    { width: 56px; }
body.woocommerce-cart table.cart .product-thumbnail { width: 114px; }
body.woocommerce-cart table.cart .product-price     { width: 120px; }
body.woocommerce-cart table.cart .product-quantity  { width: 180px; }
body.woocommerce-cart table.cart .product-subtotal  { width: 146px; }
body.woocommerce-cart table.cart .product-name a {
    font-size: 17px;
    font-weight: 600;
    color: var(--color-text);
    text-decoration: none;
    line-height: 1.4;
}
/* Wrap the name fully (1 line if it fits, otherwise as many as needed) */
body.woocommerce-cart table.cart .product-name { white-space: normal; }
body.woocommerce-cart table.cart .product-name a:hover { color: var(--color-primary); }
body.woocommerce-cart table.cart td.product-price,
body.woocommerce-cart table.cart td.product-subtotal {
    font-size: 16px;
    font-weight: 600;
    color: var(--color-text);
    white-space: nowrap;
}
body.woocommerce-cart table.cart td.product-subtotal { font-weight: 700; }

/* WooCommerce Discount Rules clutters the price cell with a second strikeout
   line and a stray "× qty" — show only the clean struck/discounted price. */
body.woocommerce-cart td.product-price .awdr_cart_strikeout_line ~ .awdr_cart_strikeout_line { display: none; }
body.woocommerce-cart td.product-price .awdr_cart_strikeout_line { font-size: 0; }
body.woocommerce-cart td.product-price .awdr_cart_strikeout_line ins { font-size: 16px; }
body.woocommerce-cart td.product-price .awdr_cart_strikeout_line del { margin-right: 7px; }
body.woocommerce-cart table.cart del { color: var(--color-text-muted); font-weight: 400; font-size: 14px; }
body.woocommerce-cart table.cart ins { text-decoration: none; }
/* save-amount line (e.g. "Säästä jopa 2,40 €") */
body.woocommerce-cart table.cart .product-subtotal small,
body.woocommerce-cart table.cart .product-price small { display: block; font-size: 13px; color: var(--color-success); font-weight: 600; }

/* Remove × */
body.woocommerce-cart table.cart .product-remove a.remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 0;            /* square, no rounding — stricter look */
    font-size: 30px;
    font-weight: 400;
    line-height: 1;
    color: var(--color-text-muted) !important;
    background: transparent;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}
body.woocommerce-cart table.cart .product-remove a.remove:hover {
    background: var(--color-sale-bg);
    color: var(--color-sale) !important;
}

/* ---- Quantity stepper (big −/+) ---- */
body.woocommerce-cart .product-quantity .quantity {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    background: var(--color-white);
}
body.woocommerce-cart .product-quantity .aj-qty-btn {
    width: 50px;
    height: 50px;
    border: 0;
    background: var(--color-bg);
    color: var(--color-text);
    font-size: 26px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s, color 0.15s;
    flex: 0 0 auto;
}
body.woocommerce-cart .product-quantity .aj-qty-btn:hover { background: var(--color-primary); color: #fff; }
body.woocommerce-cart .product-quantity .aj-qty-btn:active { background: var(--color-primary-dark); color: #fff; }
body.woocommerce-cart .product-quantity input.qty {
    width: 58px;
    height: 50px;
    border: 0;
    border-left: 1px solid var(--color-border);
    border-right: 1px solid var(--color-border);
    text-align: center;
    font-size: 18px;
    font-weight: 700;
    color: var(--color-text);
    background: var(--color-white);
    -moz-appearance: textfield;
    appearance: textfield;
    border-radius: 0;
}
body.woocommerce-cart .product-quantity input.qty::-webkit-outer-spin-button,
body.woocommerce-cart .product-quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* ---- Coupon + update row ---- */
body.woocommerce-cart td.actions {
    padding: 26px 16px 6px;
    border-bottom: 0;
}
body.woocommerce-cart td.actions::after { content: ""; display: table; clear: both; }
body.woocommerce-cart td.actions .coupon { float: left; display: flex; gap: 10px; align-items: center; }
body.woocommerce-cart td.actions input#coupon_code {
    height: 54px;
    padding: 0 18px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-size: 17px;
    min-width: 340px;
    color: var(--color-text);
}
body.woocommerce-cart td.actions .button {
    height: 50px;
    padding: 0 24px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-white);
    color: var(--color-text);
    font-family: var(--font-body);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}
body.woocommerce-cart td.actions button[name="update_cart"] { float: right; }
body.woocommerce-cart td.actions .button:hover { border-color: var(--color-primary); color: var(--color-primary); }
body.woocommerce-cart td.actions button[name="apply_coupon"] {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}
body.woocommerce-cart td.actions button[name="apply_coupon"]:hover { background: var(--color-primary-dark); color: #fff; border-color: var(--color-primary-dark); }

/* ---- Order summary card ---- */
body.woocommerce-cart .cart-collaterals .cart_totals {
    float: none !important;       /* WC defaults to float:right; width:48% */
    width: auto !important;
    box-sizing: border-box;
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 26px 24px;
    position: sticky;
    top: 24px;
}
body.woocommerce-cart .cart_totals h2 {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 700;
    margin: 0 0 18px;
    color: var(--color-text);
}
body.woocommerce-cart .cart_totals table { width: 100%; border: 0; border-collapse: collapse; margin: 0; }
body.woocommerce-cart .cart_totals table th,
body.woocommerce-cart .cart_totals table td {
    padding: 14px 0;
    border: 0;
    border-bottom: 1px solid var(--color-border-light);
    font-size: 16px;
}
body.woocommerce-cart .cart_totals table th { font-weight: 500; color: var(--color-text-secondary); text-align: left; }
body.woocommerce-cart .cart_totals table td { font-weight: 600; color: var(--color-text); text-align: right; }
body.woocommerce-cart .cart_totals .order-total th { font-size: 18px; font-weight: 700; color: var(--color-text); }
body.woocommerce-cart .cart_totals .order-total td { border-bottom: 0; }
body.woocommerce-cart .cart_totals .order-total .woocommerce-Price-amount {
    font-size: 24px;
    font-weight: 800;
    color: var(--color-text);
}

/* Proceed to checkout */
body.woocommerce-cart .wc-proceed-to-checkout { margin-top: 22px; padding: 0; }
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
    display: block;
    width: 100%;
    text-align: center;
    padding: 17px 16px;
    background: var(--color-primary);
    color: #fff;
    border: 0;
    border-radius: var(--radius-md);
    font-family: var(--font-body);
    font-size: 17px;
    font-weight: 700;
    text-decoration: none;
    transition: background 0.15s;
}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover { background: var(--color-primary-dark); }
/* Force full width over WC/PayPal/plugin overrides */
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
    width: 100% !important;
    white-space: nowrap;
    box-sizing: border-box;
}

/* Shipping row in the summary — stack label + methods, left-aligned & clean */
body.woocommerce-cart .cart_totals tr.shipping th,
body.woocommerce-cart .cart_totals tr.shipping td {
    display: block;
    width: 100%;
    text-align: left;
    border-bottom: 0;
    padding: 8px 0 0;
}
body.woocommerce-cart .cart_totals tr.shipping { display: block; border-bottom: 1px solid var(--color-border-light); padding-bottom: 12px; }
body.woocommerce-cart .cart_totals tr.shipping th { color: var(--color-text-secondary); font-weight: 500; padding-top: 12px; }
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods { list-style: none; margin: 6px 0 0; padding: 0; }
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods li {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 0 8px;
    font-size: 14px;
    line-height: 1.4;
}
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods li:last-child { margin-bottom: 0; }
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods input[type="radio"] { margin-top: 3px; flex: 0 0 auto; }
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods label { font-size: 14px; color: var(--color-text-secondary); margin: 0; }
body.woocommerce-cart .cart_totals .woocommerce-shipping-destination,
body.woocommerce-cart .cart_totals p { font-size: 13px; color: var(--color-text-muted); margin: 8px 0 0; }

/* Notices (cashback, coupons, empty-cart) — clean block, no icon, no side bar */
body.woocommerce-cart .woocommerce-info,
body.woocommerce-cart .woocommerce-message,
body.woocommerce-cart .cart-empty {
    background: var(--color-primary-pale);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 15px 20px;
    font-size: 15px;
    line-height: 1.55;
    color: var(--color-text);
    margin: 0 0 14px;
    list-style: none;
}
/* Kill WooCommerce's ::before icon (renders as a box and overlaps the text) */
body.woocommerce-cart .woocommerce-info::before,
body.woocommerce-cart .woocommerce-message::before,
body.woocommerce-cart .cart-empty::before {
    content: none !important;
    display: none !important;
}
body.woocommerce-cart .woocommerce-info a,
body.woocommerce-cart .woocommerce-message a {
    color: var(--color-primary-dark);
    font-weight: 600;
    text-decoration: underline;
}
body.woocommerce-cart .woocommerce-info a:hover,
body.woocommerce-cart .woocommerce-message a:hover { color: var(--color-primary); }
body.woocommerce-cart .return-to-shop { margin-top: 8px; }

/* Visual feedback while the cart re-totals */
body.woocommerce-cart .woocommerce-cart-form.aj-cart-updating { opacity: 0.55; pointer-events: none; }

/* Names + column headers hard-left-aligned */
body.woocommerce-cart table.cart th.product-name,
body.woocommerce-cart table.cart td.product-name,
body.woocommerce-cart table.cart thead th { text-align: left !important; }

/* More breathing room between the notice blocks and the items table */
body.woocommerce-cart .woocommerce-cart-form table.cart { margin-top: 32px; }

/* Shipping estimate isn't needed in the cart (chosen at checkout) */
body.woocommerce-cart .cart_totals tr.shipping { display: none !important; }


/* ---- Tablet / mobile ---- */
@media (max-width: 900px) {
    body.woocommerce-cart .woocommerce { grid-template-columns: 1fr; gap: 24px; }
    body.woocommerce-cart .cart-collaterals { grid-column: 1; }
    body.woocommerce-cart .cart_totals { position: static; }
}

@media (max-width: 600px) {
    body.woocommerce-cart .page-content { padding: 24px 14px 32px; }
    body.woocommerce-cart .page-title { font-size: 26px; margin-bottom: 18px; }

    /* Stack each item as a card (WC hides the thead on responsive tables). */
    body.woocommerce-cart table.cart thead { display: none; }
    body.woocommerce-cart table.cart tr.cart_item {
        display: grid;
        grid-template-columns: 80px 1fr auto;
        grid-template-areas:
            "thumb name remove"
            "thumb price price"
            "qty   qty   subtotal";
        gap: 6px 12px;
        align-items: center;
        padding: 16px 0;
        border-bottom: 1px solid var(--color-border-light);
    }
    body.woocommerce-cart table.cart tr.cart_item td {
        padding: 0;
        border: 0;
        font-size: 15px;
    }
    body.woocommerce-cart table.cart .product-remove   { grid-area: remove; text-align: right; }
    body.woocommerce-cart table.cart .product-thumbnail{ grid-area: thumb; }
    body.woocommerce-cart table.cart .product-name     { grid-area: name; }
    body.woocommerce-cart table.cart .product-price    { grid-area: price; }
    body.woocommerce-cart table.cart .product-quantity { grid-area: qty; }
    body.woocommerce-cart table.cart .product-subtotal { grid-area: subtotal; text-align: right; font-size: 17px; }
    /* WC prints the column label via ::before on responsive tables — hide for
       the cells where it's redundant in our card layout. */
    body.woocommerce-cart table.cart .product-name::before,
    body.woocommerce-cart table.cart .product-thumbnail::before,
    body.woocommerce-cart table.cart .product-remove::before { display: none; }
    body.woocommerce-cart table.cart .product-price::before,
    body.woocommerce-cart table.cart .product-subtotal::before {
        content: attr(data-title) ": ";
        color: var(--color-text-muted);
        font-size: 12px;
        font-weight: 500;
    }
    body.woocommerce-cart table.cart .product-thumbnail img { width: 72px; height: 72px; max-width: none; }

    body.woocommerce-cart td.actions .coupon { float: none; flex-wrap: wrap; }
    body.woocommerce-cart td.actions input#coupon_code { flex: 1 1 auto; min-width: 0; }
    body.woocommerce-cart td.actions button[name="update_cart"] { float: none; width: 100%; margin-top: 12px; }
}


/* =====================================================
   CHECKOUT PAGE — classic WooCommerce checkout, themed.
   Layout: form (left) + order summary / payment / place-order (right sidebar).
   Variant "Klassinen kaksipalstainen". Overrides WC core checkout CSS.
   ===================================================== */

/* Break out of the narrow article card → full site width. */
body.woocommerce-checkout .page-content {
    max-width: none;
    padding: 40px 40px 48px;
}
body.woocommerce-checkout .page-title { margin-bottom: 24px; }

/* ---- Coupon / login toggles (sit above the grid, full width) ---- */
body.woocommerce-checkout .woocommerce-form-login-toggle,
body.woocommerce-checkout .woocommerce-form-coupon-toggle { margin: 0 0 16px; }
body.woocommerce-checkout .checkout_coupon,
body.woocommerce-checkout form.login {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 22px 24px;
    margin: 0 0 20px;
    background: var(--color-white);
}
body.woocommerce-checkout .checkout_coupon .form-row { margin-bottom: 0; }
body.woocommerce-checkout .checkout_coupon .button,
body.woocommerce-checkout form.login .button {
    height: 48px; padding: 0 22px; border: 0; border-radius: var(--radius-md);
    background: var(--color-primary); color: #fff; font-family: var(--font-body);
    font-size: 15px; font-weight: 600; cursor: pointer; transition: background 0.15s;
}
body.woocommerce-checkout .checkout_coupon .button:hover,
body.woocommerce-checkout form.login .button:hover { background: var(--color-primary-dark); }

/* ---- Notices (cashback, errors, info) — clean block, no icon ---- */
body.woocommerce-checkout .woocommerce-info,
body.woocommerce-checkout .woocommerce-message,
body.woocommerce-checkout .woocommerce-error {
    background: var(--color-primary-pale);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 14px 20px; margin: 0 0 16px;
    font-size: 15px; line-height: 1.55; color: var(--color-text); list-style: none;
}
/* Stock-reservation timer notice ("Aika loppui…") is a stray yellow div.non-product.checkout
   (not a .woocommerce-* class) — match it to the themed info notices, same bottom gap. */
body.woocommerce-checkout .non-product.checkout {
    background: var(--color-primary-pale) !important;
    border: 1px solid var(--color-border) !important;
    border-radius: var(--radius-md);
    padding: 14px 20px; margin: 0 0 16px !important;
    font-size: 15px; line-height: 1.55; color: var(--color-text); text-align: left;
}
body.woocommerce-checkout .woocommerce-error {
    background: var(--color-sale-bg); border-color: #f6cccc;
}
body.woocommerce-checkout .woocommerce-info::before,
body.woocommerce-checkout .woocommerce-message::before,
body.woocommerce-checkout .woocommerce-error::before { content: none !important; display: none !important; }
body.woocommerce-checkout .woocommerce-info a,
body.woocommerce-checkout .woocommerce-message a { color: var(--color-primary-dark); font-weight: 600; }

/* ---- The two-column grid ---- */
body.woocommerce-checkout form.aj-checkout {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
    gap: 36px;
    align-items: start;
    margin-top: 32px;
}
body.woocommerce-checkout form.aj-checkout > #customer_details { grid-column: 1; min-width: 0; }
body.woocommerce-checkout form.aj-checkout > .aj-checkout__aside { grid-column: 2; min-width: 0; }
/* On validation failure WooCommerce prepends the error block to the form. Keep it
   full-width at the TOP — without this it gets auto-placed into a column below the
   grid (errors appeared at the bottom). Auto-flow then pushes the two columns down. */
body.woocommerce-checkout form.aj-checkout > .woocommerce-NoticeGroup,
body.woocommerce-checkout form.aj-checkout > .woocommerce-error,
body.woocommerce-checkout form.aj-checkout > .woocommerce-message,
body.woocommerce-checkout form.aj-checkout > .woocommerce-info { grid-column: 1 / -1; }

/* ---- Customer details card (left) ---- */
body.woocommerce-checkout #customer_details {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 30px;
}
/* WC splits billing into .col-1 and shipping into .col-2 side-by-side — stack them. */
body.woocommerce-checkout #customer_details .col-1,
body.woocommerce-checkout #customer_details .col-2 {
    width: 100% !important;
    float: none !important;
    max-width: none !important;
    padding: 0 !important;
}
body.woocommerce-checkout #customer_details .col-2 { margin-top: 26px; }

/* Section headings (Laskutustiedot / Toimitus / Lisätiedot) */
body.woocommerce-checkout #customer_details h3,
body.woocommerce-checkout .woocommerce-additional-fields > h3 {
    font-family: var(--font-body);
    font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em;
    color: var(--color-text); margin: 0 0 16px;
    display: flex; align-items: center; gap: 9px;
}
/* Mail icon before the billing / contact heading, matching the mockup. */
body.woocommerce-checkout .woocommerce-billing-fields > h3::before {
    content: ""; flex: 0 0 auto; width: 18px; height: 18px; background-color: var(--color-primary);
    -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='M3%208l9%206%209-6M4%206h16a1%201%200%20011%201v10a1%201%200%2001-1%201H4a1%201%200%2001-1-1V7a1%201%200%20011-1z'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='M3%208l9%206%209-6M4%206h16a1%201%200%20011%201v10a1%201%200%2001-1%201H4a1%201%200%2001-1-1V7a1%201%200%20011-1z'/%3E%3C/svg%3E") center / contain no-repeat;
}
body.woocommerce-checkout #ship-to-different-address { text-transform: none; font-size: 15px; letter-spacing: 0; }
body.woocommerce-checkout #ship-to-different-address label { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; cursor: pointer; }

/* Field rows: first/last name side-by-side, rest full width */
body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
body.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper,
body.woocommerce-checkout .woocommerce-additional-fields__field-wrapper {
    display: flex; flex-wrap: wrap; gap: 0 14px;
}
body.woocommerce-checkout .form-row {
    margin: 0 0 14px; padding: 0;
    display: flex; flex-direction: column; gap: 6px;
    float: none !important; width: auto !important;
    flex: 1 1 100%;
}
body.woocommerce-checkout .form-row.form-row-first,
body.woocommerce-checkout .form-row.form-row-last { flex: 1 1 calc(50% - 7px); }
body.woocommerce-checkout .form-row label {
    font-size: 13px; font-weight: 600; color: var(--color-text-secondary); margin: 0;
}
body.woocommerce-checkout .form-row label .required,
body.woocommerce-checkout .form-row label abbr.required {
    color: var(--color-danger); border: 0; text-decoration: none;
}
body.woocommerce-checkout .form-row label .optional { color: var(--color-text-muted); font-weight: 400; }

/* Inputs / selects / textareas */
body.woocommerce-checkout .input-text,
body.woocommerce-checkout .form-row input.input-text,
body.woocommerce-checkout .form-row textarea,
body.woocommerce-checkout .form-row select,
body.woocommerce-checkout .select2-container .select2-selection--single {
    height: 64px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 19px 16px;
    font-family: var(--font-body);
    font-size: 16px;
    color: var(--color-text);
    background: var(--color-white);
    width: 100%;
    box-sizing: border-box;
    box-shadow: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}
body.woocommerce-checkout .form-row textarea {
    height: auto; min-height: 92px; padding: 12px 14px; resize: vertical; line-height: 1.5;
}
body.woocommerce-checkout .input-text::placeholder,
body.woocommerce-checkout .form-row textarea::placeholder { color: var(--color-text-muted); }
body.woocommerce-checkout .input-text:focus,
body.woocommerce-checkout .form-row textarea:focus,
body.woocommerce-checkout .form-row select:focus {
    outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-primary-pale);
}
/* select2 (country / state) height + arrow alignment */
body.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 46px; padding-left: 0; color: var(--color-text);
}
body.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__arrow { height: 46px; right: 8px; }
body.woocommerce-checkout .select2-container--open .select2-selection--single { border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-primary-pale); }
body.woocommerce-checkout .woocommerce-input-wrapper { display: block; width: 100%; }

/* ---- Order summary / payment sidebar (right) ---- */
body.woocommerce-checkout .aj-checkout__aside {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 24px;
    min-width: 0;
}
body.woocommerce-checkout #order_review_heading {
    font-family: var(--font-display);
    font-size: 22px; font-weight: 700; margin: 0 0 18px; color: var(--color-text);
}
body.woocommerce-checkout #order_review { width: auto; }

/* Klarna on-site messaging breathing room */
body.woocommerce-checkout .aj-checkout__aside klarna-placement,
body.woocommerce-checkout .aj-checkout__aside .klarna-onsite-messaging { display: block; margin-bottom: 18px; }

/* Summary items → block rows; each item is a self-contained flex line inside one
   cell (a plain <div>, immune to WooCommerce's table CSS that broke the layout). */
body.woocommerce-checkout .woocommerce-checkout-review-order-table { width: 100%; border: 0; border-collapse: collapse; margin: 0; display: block; }
body.woocommerce-checkout .woocommerce-checkout-review-order-table tbody { display: block; }
body.woocommerce-checkout .woocommerce-checkout-review-order-table tbody tr.cart_item { display: block; }
body.woocommerce-checkout .woocommerce-checkout-review-order-table tbody tr.cart_item td.product-name {
    display: block; padding: 16px 0; border: 0; border-bottom: 1px solid var(--color-border-light);
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tbody tr.cart_item:last-child td.product-name { border-bottom: 0; padding-bottom: 18px; }
body.woocommerce-checkout .aj-co-line { display: flex; align-items: center; gap: 14px; }
body.woocommerce-checkout .aj-co-thumb { flex: 0 0 auto; display: block; width: 54px; height: 64px; }
body.woocommerce-checkout .aj-co-thumb__img {
    width: 54px; height: 64px; object-fit: contain; max-width: none; display: block;
    border: 0; background: transparent; padding: 0;
}
body.woocommerce-checkout .aj-co-info { flex: 1 1 auto; min-width: 0; }
body.woocommerce-checkout .aj-co-pname { display: block; font-size: 13.5px; font-weight: 600; line-height: 1.35; color: var(--color-text); }
/* Quantity lives in the title, typographically highlighted (no floating badge). */
body.woocommerce-checkout .aj-co-qty { display: block; font-size: 18px; font-weight: 800; color: var(--color-primary); line-height: 1.15; margin: 0 0 2px; }
body.woocommerce-checkout .aj-co-qty-hidden { display: none; }
body.woocommerce-checkout .aj-co-info .variation,
body.woocommerce-checkout .aj-co-info dl { font-size: 12px; color: var(--color-text-muted); margin: 3px 0 0; }
body.woocommerce-checkout .aj-co-info .variation p,
body.woocommerce-checkout .aj-co-info dl dd,
body.woocommerce-checkout .aj-co-info dl dt { margin: 0; font-weight: 400; }
body.woocommerce-checkout .aj-co-price { flex: 0 0 auto; text-align: right; font-size: 14px; font-weight: 700; color: var(--color-text); line-height: 1.4; }
body.woocommerce-checkout .aj-co-price .woocommerce-Price-amount { white-space: nowrap; }

/* Totals (tfoot) */
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot { display: block; }
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr {
    display: flex; justify-content: space-between; align-items: baseline; padding: 9px 0;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot th,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot td {
    padding: 0; border: 0; font-size: 14.5px;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot th { font-weight: 500; color: var(--color-text-secondary); text-align: left; }
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot td { font-weight: 600; color: var(--color-text); text-align: right; }
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.cart-subtotal {
    border-top: 1px solid var(--color-border); margin-top: 2px; padding-top: 15px;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.order-total {
    border-top: 2px solid var(--color-border); margin-top: 16px; padding-top: 20px; padding-bottom: 6px;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.order-total th { font-size: 16px; font-weight: 700; color: var(--color-text); }
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.order-total td .woocommerce-Price-amount {
    font-size: 24px; font-weight: 800; color: var(--color-text);
}
body.woocommerce-checkout .order-total td .aj-co-vat,
body.woocommerce-checkout .order-total td .includes_tax {
    display: block; font-size: 12px; font-weight: 400; color: var(--color-text-muted); margin-top: 3px;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.cart-discount td { color: var(--color-success); }

/* A totals row that carries a checkbox (e.g. the Cashback "Käytä saldo" toggle) is
   stacked — label on its own line, then checkbox + text below — instead of being
   crammed into the label|amount flex (was unreadable). Class-agnostic via :has(). */
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr:has(input[type="checkbox"]) {
    display: block; padding: 15px 0; text-align: left;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr:has(input[type="checkbox"]) th {
    display: block; text-align: left; margin: 0 0 8px; font-weight: 600; font-size: 14px; color: var(--color-text);
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr:has(input[type="checkbox"]) td {
    display: flex; align-items: flex-start; gap: 9px; text-align: left; font-weight: 400; font-size: 14px; color: var(--color-text-secondary);
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr:has(input[type="checkbox"]) td input[type="checkbox"] {
    margin: 2px 0 0; flex: 0 0 auto; width: 18px; height: 18px; accent-color: var(--color-primary);
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr:has(input[type="checkbox"]) td label {
    margin: 0; line-height: 1.45; cursor: pointer;
}

/* Shipping methods in the summary (stacked, left-aligned) */
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.woocommerce-shipping-totals {
    display: none;
}
body.woocommerce-checkout .woocommerce-shipping-totals th { display: block; color: var(--color-text-secondary); font-weight: 500; margin-bottom: 6px; }
body.woocommerce-checkout #shipping_method { list-style: none; margin: 0; padding: 0; }
body.woocommerce-checkout #shipping_method li { display: flex; align-items: flex-start; gap: 8px; margin: 0 0 6px; font-size: 14px; }
body.woocommerce-checkout #shipping_method li:last-child { margin-bottom: 0; }
body.woocommerce-checkout #shipping_method input[type="radio"] { margin-top: 3px; accent-color: var(--color-primary); }
body.woocommerce-checkout #shipping_method label { margin: 0; color: var(--color-text); font-weight: 500; }

/* ---- Payment methods + place order ---- */
body.woocommerce-checkout #payment {
    background: transparent; border-radius: 0; padding: 0; margin-top: 44px;
}
/* "Maksutapa" heading above the payment methods (matches the form section headings). */
body.woocommerce-checkout #payment::before {
    content: "Maksutapa";
    display: block; padding-left: 27px; margin: 0 0 20px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='%236697cd' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 24 24'%3E%3Crect x='2' y='5' width='20' height='14' rx='2'/%3E%3Cpath d='M2 10h20'/%3E%3C/svg%3E") left center / 18px 18px no-repeat;
    font-family: var(--font-body); font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em;
    color: var(--color-text); line-height: 18px;
}
body.woocommerce-checkout #payment .payment_methods { list-style: none; margin: 0; padding: 0; border: 0; }
body.woocommerce-checkout #payment li.wc_payment_method {
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    margin: 0 0 9px; padding: 0; background: var(--color-white); position: relative; list-style: none;
}
body.woocommerce-checkout #payment li.wc_payment_method > input.input-radio {
    position: absolute; left: 15px; top: 17px; width: 18px; height: 18px; margin: 0; accent-color: var(--color-primary);
}
body.woocommerce-checkout #payment li.wc_payment_method > label {
    display: flex; align-items: center; gap: 10px;
    padding: 14px 16px 14px 44px; margin: 0; line-height: 24px; min-height: 24px;
    font-size: 14px; font-weight: 600; color: var(--color-text); cursor: pointer;
}
body.woocommerce-checkout #payment li.wc_payment_method > label img { margin: 0 0 0 auto; max-height: 24px; width: auto; float: none; }
/* Forced card-brand badges (injected for the Stripe gateway) — sit on the right. */
body.woocommerce-checkout #payment li.wc_payment_method > label .aj-pm-icons { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; height: 24px; }
body.woocommerce-checkout #payment li.wc_payment_method > label .aj-pm-img { margin: 0; height: 23px; width: auto; max-height: none; display: block; }
/* PayPal logo noticeably larger than the card brands (overflows the 24px icon row
   without growing it, so the radio/text stay aligned). */
body.woocommerce-checkout #payment li.wc_payment_method > label .aj-pm-img[src*="paypal"] { height: 38px; }

/* ---- B2B: individual / entity toggle + VAT fields ---- */
body.woocommerce-checkout .aj-hide,
body.woocommerce-checkout .aj-vat-result { display: none !important; }

body.woocommerce-checkout .aj-client-type { display: flex; gap: 10px; margin: 0 0 24px; }
body.woocommerce-checkout .aj-ct-opt {
    flex: 1; display: flex; align-items: center; gap: 10px;
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    padding: 13px 16px; cursor: pointer; font-weight: 600; font-size: 14px; color: var(--color-text);
    transition: border-color 0.15s, background 0.15s;
}
body.woocommerce-checkout .aj-ct-opt:hover { border-color: var(--color-primary-light); }
body.woocommerce-checkout .aj-ct-opt.is-on { border-color: var(--color-primary); background: var(--color-primary-pale); box-shadow: inset 0 0 0 1px var(--color-primary); }
body.woocommerce-checkout .aj-ct-opt input { accent-color: var(--color-primary); width: 18px; height: 18px; margin: 0; flex: 0 0 auto; }

body.woocommerce-checkout .aj-vat-check-btn {
    margin-top: 10px; height: 44px; padding: 0 20px; border: 0; border-radius: var(--radius-md);
    background: var(--color-primary); color: #fff; font-family: var(--font-body); font-weight: 600; font-size: 14px;
    cursor: pointer; transition: background 0.15s, color 0.15s;
}
body.woocommerce-checkout .aj-vat-check-btn:hover:not(.is-locked):not(:disabled) { background: var(--color-primary-dark); }
/* Locked until the confirmation tickbox is checked: looks inactive but stays
   clickable, so the click can explain why (see vat-checkout.js). */
body.woocommerce-checkout .aj-vat-check-btn.is-locked { background: var(--color-border); color: var(--color-text-muted); cursor: not-allowed; }
body.woocommerce-checkout .aj-vat-check-btn:disabled { opacity: 0.6; cursor: wait; }
body.woocommerce-checkout .aj-vat-status { display: block; margin-top: 9px; font-size: 13.5px; font-weight: 600; line-height: 1.4; }
body.woocommerce-checkout .aj-vat-status--ok { color: var(--color-success); }
body.woocommerce-checkout .aj-vat-status--err { color: var(--color-danger); }
body.woocommerce-checkout .aj-vat-status--loading { color: var(--color-text-secondary); }

/* Confirm-before-verify: group the "Vakuutan…" tickbox + check button + status
   into one panel so the gating reads as a single, deliberate step. */
body.woocommerce-checkout #billing_valid_vat_agree_field {
    background: var(--color-bg); border: 1px solid var(--color-border);
    border-radius: var(--radius-md); padding: 14px 16px; margin-top: 4px;
}
body.woocommerce-checkout #billing_valid_vat_agree_field label.checkbox {
    display: flex; align-items: flex-start; gap: 9px; margin: 0; cursor: pointer;
    font-size: 14px; line-height: 1.45; font-weight: 600; color: var(--color-text);
}
body.woocommerce-checkout #billing_valid_vat_agree_field input[type="checkbox"] {
    accent-color: var(--color-primary); width: 17px; height: 17px; margin: 1px 0 0; flex: 0 0 auto; cursor: pointer;
}
body.woocommerce-checkout .aj-vat-verify { margin-top: 4px; }

/* Clicking the locked button nudges the customer (mini-error) and the confirm
   row flashes once to point at the tickbox they missed. */
body.woocommerce-checkout .aj-vat-status--nudge { color: var(--color-danger); }
@keyframes aj-vat-flash {
    0%, 100% { border-color: var(--color-border); background: var(--color-bg); }
    20%, 65% { border-color: var(--color-danger); background: var(--color-sale-bg); }
}
body.woocommerce-checkout #billing_valid_vat_agree_field.aj-vat-flash { animation: aj-vat-flash 0.7s ease; }

/* ============================================
   THANK-YOU / ORDER RECEIVED
   ============================================ */
/* Order-received page: white full-width surface, no double wrapper.
   The page normally sits in .page-content (white card + shadow + 900px) inside
   .page-body; on this endpoint we flatten all that so our card owns the look. */
body.woocommerce-order-received { background: var(--color-white); }
body.woocommerce-order-received .article-breadcrumbs,
body.woocommerce-order-received .page-content > .page-title { display: none; }
body.woocommerce-order-received .page-content {
    background: none; box-shadow: none; border: 0; border-radius: 0;
    max-width: none; margin: 0; padding: 0;
}
body.woocommerce-order-received .page-body { font-size: inherit; line-height: inherit; color: inherit; }
/* The content-page list rule (.page-body ul/ol { padding-left: 24px; margin: 24px 0 })
   outranks our .aj-ty-overview { padding: 0 } and indents the overview grid 24px —
   that is why the grid sat 24px right of the actions button. Override on this page
   only (kept global elsewhere so article/FAQ bullet lists stay indented). */
body.woocommerce-order-received .aj-ty-overview { margin: 24px 0 0; padding: 0; }
body.woocommerce-order-received .aj-ty-info__list { margin: 0; padding: 0; }

.aj-ty { background: var(--color-white); padding: 30px 0 56px; }
.aj-ty__inner { max-width: none; }

.aj-ty-card { background: var(--color-white); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 22px 24px; margin-bottom: 18px; }
.aj-ty-main { padding: 32px 38px 34px; margin-bottom: 16px; }

.aj-ty-hero { text-align: center; margin: 0; }
.aj-ty-hero__icon { display: inline-block; width: 60px; height: 60px; margin-bottom: 14px; }
.aj-ty-hero__icon svg { width: 100%; height: 100%; display: block; }
.aj-ty-hero__title { font-family: var(--font-display); font-size: 32px; font-weight: 700; color: var(--color-text); margin: 0 0 8px; line-height: 1.1; }
.aj-ty-hero__sub { font-size: 15.5px; color: var(--color-text-secondary); margin: 0; }

.aj-ty-pillrow { text-align: center; margin: 16px 0 4px; }
.aj-ty-pill { display: inline-flex; align-items: center; gap: 9px; background: var(--color-bg); border: 1px solid var(--color-border); color: var(--color-text-secondary); font-weight: 500; font-size: 13.5px; border-radius: var(--radius-sm); padding: 7px 15px; }
.aj-ty-pill__ico { width: 15px; height: 15px; color: var(--color-text-muted); flex: 0 0 auto; }
.aj-ty-pill strong { color: var(--color-text); font-weight: 700; }
.aj-ty-pill__sep { color: var(--color-border); }
.aj-ty-pill__date { color: var(--color-text-secondary); }

/* Order overview — two-column key/value grid */
.aj-ty-overview { list-style: none; margin: 24px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 0 30px; }
.aj-ty-ov { display: flex; flex-direction: column; gap: 3px; padding: 11px 0; border-bottom: 1px solid var(--color-border-light); }
.aj-ty-ov__k { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--color-text-muted); }
.aj-ty-ov__v { font-size: 15px; color: var(--color-text); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-height: 24px; }
.aj-ty-ov__total { font-weight: 700; color: var(--color-primary-dark); }

.aj-ty-copy { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--color-border); background: var(--color-bg); color: var(--color-text-secondary); border-radius: var(--radius-sm); padding: 3px 9px; font-size: 12px; font-weight: 600; cursor: pointer; transition: border-color .15s, color .15s, background .15s; font-family: var(--font-body); }
.aj-ty-copy svg { width: 13px; height: 13px; }
.aj-ty-copy:hover { border-color: var(--color-primary); color: var(--color-primary); }
.aj-ty-copy.is-copied { border-color: var(--color-success); color: var(--color-success); background: var(--color-success-bg); }

.aj-ty-note { border-radius: var(--radius-md); padding: 14px 18px; margin: 18px 0 0; font-size: 14px; line-height: 1.55; }
.aj-ty-note--info { background: var(--color-primary-pale); border: 1px solid var(--color-primary-light); color: var(--color-text); }
.aj-ty-note p { margin: 0; }

.aj-ty-block { margin-top: 26px; padding-top: 26px; border-top: 1px solid var(--color-border-light); }
.aj-ty-sec { font-family: var(--font-display); font-size: 19px; font-weight: 600; color: var(--color-text); margin: 0 0 13px; }
.aj-ty-sec::after { content: ""; display: block; width: 34px; height: 3px; background: var(--color-primary); border-radius: 2px; margin-top: 7px; }
.aj-ty-info__list { margin: 0; padding: 0; list-style: none; }
.aj-ty-info__list li { position: relative; padding: 0 0 12px 26px; font-size: 14.5px; line-height: 1.6; color: var(--color-text-secondary); }
.aj-ty-info__list li:last-child { padding-bottom: 0; }
.aj-ty-info__list li::before { content: ""; position: absolute; left: 4px; top: 9px; width: 6px; height: 6px; border-radius: 50%; background: var(--color-primary); }
.aj-ty-info__list strong { color: var(--color-text); }
.aj-ty-info__list a { color: var(--color-primary); font-weight: 600; }

.aj-ty-pickup__grid { display: grid; grid-template-columns: 1fr 1fr; background: var(--color-primary-pale); border-radius: var(--radius-md); overflow: hidden; }
.aj-ty-pickup__grid > p { margin: 0; padding: 15px 18px; font-size: 14px; line-height: 1.6; color: var(--color-text); }
.aj-ty-pickup__grid > p + p { border-left: 1px solid #d9e6f5; }
.aj-ty-pickup__lbl { display: block; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--color-primary-dark); margin-bottom: 5px; }

.aj-ty-actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-start; margin: 22px 0 0; }
/* the PDF-invoice shortcode wraps its link in a <p> with default margins, which
   knocks the button out of the card's left edge / vertical rhythm — flatten it
   so the <a> becomes a direct flex child aligned with the grid above. */
.aj-ty-actions p { display: contents; margin: 0; }
.aj-ty-btn, .aj-ty-actions a { display: inline-flex; align-items: center; justify-content: center; height: 46px; padding: 0 26px; border-radius: var(--radius-md); background: var(--color-primary); color: #fff !important; font-weight: 600; font-size: 14.5px; text-decoration: none; border: 1px solid var(--color-primary); cursor: pointer; transition: background .15s, border-color .15s; }
.aj-ty-btn:hover, .aj-ty-actions a:hover { background: var(--color-primary-dark); border-color: var(--color-primary-dark); color: #fff !important; }
.aj-ty-btn--ghost { background: var(--color-white); color: var(--color-primary) !important; border-color: var(--color-border); }
.aj-ty-btn--ghost:hover { background: var(--color-primary-pale); color: var(--color-primary-dark) !important; border-color: var(--color-primary); }

/* WooCommerce order items table + customer details */
.aj-ty-details { margin-top: 4px; }
.aj-ty-details .woocommerce-order-details__title, .aj-ty-details .woocommerce-column__title { font-family: var(--font-display); font-size: 20px; font-weight: 600; color: var(--color-text); margin: 26px 0 14px; }
.aj-ty-details table.order_details, .aj-ty-details table.woocommerce-table--order-details { width: 100%; border-collapse: collapse; background: var(--color-white); border: 1px solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; }
.aj-ty-details table.order_details th, .aj-ty-details table.order_details td { padding: 12px 16px; border-bottom: 1px solid var(--color-border-light); font-size: 14px; text-align: left; }
.aj-ty-details table.order_details tfoot th, .aj-ty-details table.order_details tfoot td { font-weight: 600; }
.aj-ty-details table.order_details a { color: var(--color-primary); text-decoration: none; }
.aj-ty-details .woocommerce-customer-details { margin-top: 26px; }
.aj-ty-details .woocommerce-customer-details address { border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 16px 18px; font-style: normal; font-size: 14px; line-height: 1.65; color: var(--color-text); background: var(--color-white); }

.aj-ty-sign { background: var(--color-white); border: 1px solid var(--color-border); border-radius: var(--radius-lg); text-align: center; padding: 22px 28px; }
.aj-ty-sign__bar { display: block; width: 34px; height: 3px; background: var(--color-primary); border-radius: 2px; margin: 0 auto 12px; }
.aj-ty-sign p { margin: 0; font-size: 14px; line-height: 1.6; color: #334155; }
.aj-ty-sign a { color: var(--color-primary-dark); font-weight: 600; text-decoration: none; }
.aj-ty-sign__team { font-family: var(--font-display); font-size: 16.5px; font-weight: 600; color: var(--color-primary-dark); margin-top: 6px !important; }

@media (max-width: 600px) {
    .aj-ty-overview { grid-template-columns: 1fr; }
    .aj-ty-pickup__grid { grid-template-columns: 1fr; }
    .aj-ty-pickup__grid > p + p { border-left: 0; border-top: 1px solid #d9e6f5; }
    .aj-ty-hero__title { font-size: 26px; }
    .aj-ty-card { padding: 18px 18px; }
    .aj-ty-main { padding: 24px 20px 26px; }
}

/* ============================================
   PRODUCT DESCRIPTION — real per-product SEO copy
   (ACF product-facts-1..5) as a formatted article: headings + text
   ============================================ */
.prod-desc { background: var(--color-white); border-top: 1px solid var(--color-border); padding: 42px 0; }
.prod-desc__inner { max-width: 880px; margin: 0 auto; padding: 0 24px; }
.prod-desc__title { font-family: var(--font-display); font-size: 28px; font-weight: 700; color: var(--color-text); line-height: 1.15; margin: 0 0 6px; }
.prod-desc h3 { font-family: var(--font-display); font-size: 21px; font-weight: 600; color: var(--color-text); line-height: 1.3; margin: 26px 0 10px; }
.prod-desc p { font-size: 15.5px; line-height: 1.75; color: var(--color-text-secondary); margin: 0 0 14px; }
.prod-desc ul { margin: 0 0 14px; padding-left: 22px; }
.prod-desc li { font-size: 15.5px; line-height: 1.7; color: var(--color-text-secondary); margin: 0 0 6px; }
.prod-desc strong { color: var(--color-text); font-weight: 600; }
.prod-desc a { color: var(--color-primary); font-weight: 600; text-decoration: none; }
.prod-desc a:hover { text-decoration: underline; }
body.woocommerce-checkout #payment li.wc_payment_method:has(input.input-radio:checked) {
    border-color: var(--color-primary); background: var(--color-primary-pale); box-shadow: inset 0 0 0 1px var(--color-primary);
}
body.woocommerce-checkout #payment .payment_box {
    background: var(--color-bg); border-radius: var(--radius-sm); margin: 0 16px 14px 44px; padding: 12px 14px;
    font-size: 13px; line-height: 1.5; color: var(--color-text-secondary);
}
body.woocommerce-checkout #payment .payment_box::before { display: none; }
body.woocommerce-checkout #payment .payment_box p:last-child { margin-bottom: 0; }
/* Form-based gateways (Stripe card element, PayPal card fields) need a clean,
   full-width box — the pale background + deep indent meant for short text
   descriptions squashes and offsets the card form ("crooked"). */
body.woocommerce-checkout #payment .payment_box.payment_method_stripe,
body.woocommerce-checkout #payment .payment_box.payment_method_ppcp-gateway,
body.woocommerce-checkout #payment .payment_box.payment_method_ppcp-trustly {
    background: transparent; margin: 6px 0 14px; padding: 4px 16px 12px;
}
body.woocommerce-checkout #payment .payment_box.payment_method_stripe fieldset,
body.woocommerce-checkout #payment .payment_box.payment_method_stripe .wc-stripe-upe-element { width: 100%; margin: 0; padding: 0; border: 0; }
body.woocommerce-checkout #payment .payment_box .wc-stripe-statement-descriptor,
body.woocommerce-checkout #payment .payment_box.payment_method_stripe p { margin: 0 0 10px; }

/* Terms + place-order */
body.woocommerce-checkout #payment .woocommerce-terms-and-conditions-wrapper { margin: 4px 0 14px; font-size: 13px; color: var(--color-text-secondary); }
body.woocommerce-checkout .woocommerce-privacy-policy-text,
body.woocommerce-checkout .woocommerce-privacy-policy-text p { font-size: 15px; line-height: 1.55; margin: 0; }
body.woocommerce-checkout #payment .payment_methods li.wc_payment_method:last-child { margin-bottom: 0; }
body.woocommerce-checkout #payment .place-order { padding: 0; margin: 16px 0 0; }
body.woocommerce-checkout #place_order {
    width: 100% !important;
    height: 56px; float: none; border: 0; border-radius: var(--radius-md);
    background: var(--color-primary); color: #fff;
    font-family: var(--font-body); font-size: 17px; font-weight: 700;
    cursor: pointer; transition: background 0.15s; box-shadow: none;
}
body.woocommerce-checkout #place_order:hover { background: var(--color-primary-dark); }

/* Loading overlay WC adds to #order_review while updating */
body.woocommerce-checkout .processing #order_review,
body.woocommerce-checkout #order_review.processing { opacity: 0.6; }

/* ---- Tablet / mobile ---- */
@media (max-width: 900px) {
    body.woocommerce-checkout form.aj-checkout { grid-template-columns: 1fr; gap: 24px; }
    body.woocommerce-checkout form.aj-checkout > #customer_details,
    body.woocommerce-checkout form.aj-checkout > .aj-checkout__aside { grid-column: 1; grid-row: auto; }
}
@media (max-width: 600px) {
    body.woocommerce-checkout .page-content { padding: 24px 14px 32px; }
    body.woocommerce-checkout .page-title { font-size: 26px; margin-bottom: 18px; }
    body.woocommerce-checkout #customer_details,
    body.woocommerce-checkout .aj-checkout__aside { padding: 20px 16px; }
    body.woocommerce-checkout .form-row.form-row-first,
    body.woocommerce-checkout .form-row.form-row-last { flex: 1 1 100%; }
}

/* =========================================================
   CART DRAWER — слайд-корзина (замена CartPops)
   Дизайн повторяет прежний дровер: белый минимал, ✕ у товаров,
   степперы снизу, «Lähetyksen tiedot» с коралловым прогрессом.
========================================================= */
html.aj-drawer-lock { overflow: hidden; }

/* overflow:hidden — съехавшая вправо (translateX) закрытая панель иначе
   расширяет scrollable-область и даёт горизонтальный скролл страницы */
.aj-drawer { position: fixed; inset: 0; z-index: 9000; pointer-events: none; overflow: hidden; }
.aj-drawer__overlay {
    position: absolute; inset: 0;
    background: rgba(30, 41, 59, 0.45);
    opacity: 0; transition: opacity .25s ease;
}
.aj-drawer__panel {
    position: absolute; top: 0; right: 0; bottom: 0;
    width: 500px; max-width: 100vw;
    background: var(--color-white);
    display: flex; flex-direction: column;
    box-shadow: -10px 0 30px rgba(15, 23, 42, 0.18);
    transform: translateX(105%);
    transition: transform .3s cubic-bezier(.22,.7,.3,1);
}
.aj-drawer.is-open { pointer-events: auto; }
.aj-drawer.is-open .aj-drawer__overlay { opacity: 1; }
.aj-drawer.is-open .aj-drawer__panel { transform: translateX(0); }
.aj-drawer.is-busy .aj-drawer__inner { opacity: .55; pointer-events: none; }

.aj-drawer__head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 6px 12px 6px 22px;     /* compact bar on desktop (~40px tall) */
    background: var(--color-primary);
    flex: none;
}
.aj-drawer__head h2 {
    font-family: var(--font-heading, 'Playfair Display', serif);
    font-size: 18px; font-weight: 600; color: #fff; margin: 0;
}
.aj-drawer__close {
    width: 28px; height: 28px; border: 0; background: none; cursor: pointer;
    color: #fff; display: flex; align-items: center; justify-content: center;
    padding: 0;
}
.aj-drawer__close svg { width: 20px; height: 20px; }
.aj-drawer__close:hover { color: rgba(255, 255, 255, .7); }

.aj-drawer__inner {
    flex: 1; min-height: 0; overflow: hidden;
    display: flex; flex-direction: column;
    padding: 0 24px 22px; transition: opacity .15s ease;
}

/* --- товары: скроллится только список, низ дровера закреплён --- */
.ajd-items {
    flex: 1 1 auto; min-height: 0; overflow-y: auto;
    margin-right: -10px; padding-right: 10px; /* желоб под скроллбар */
    scrollbar-width: thin; scrollbar-color: var(--color-border) transparent;
}
.ajd-items::-webkit-scrollbar { width: 6px; }
.ajd-items::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 99px; }
.ajd-items::-webkit-scrollbar-track { background: transparent; }
.ajd-item { padding: 16px 0 14px; border-bottom: 1px solid var(--color-border-light); }
.ajd-item.is-removing { opacity: .4; }
.ajd-item__top { display: flex; gap: 14px; }
.ajd-item__thumb { width: 58px; flex: none; display: block; }
.ajd-item__thumb img { width: 100%; height: auto; display: block; }
.ajd-item__main { flex: 1; min-width: 0; position: relative; padding-right: 34px; }
.ajd-item__title {
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    font-size: 14.5px; font-weight: 700; line-height: 1.35;
    color: var(--color-text); text-decoration: none; padding-top: 2px;
}
.ajd-item__title:hover { color: var(--color-primary); }
.ajd-item__remove {
    position: absolute; top: 0; right: 0;
    width: 28px; height: 28px; border: 0; background: none; cursor: pointer;
    color: var(--color-text); display: flex; align-items: center; justify-content: center; padding: 0;
}
.ajd-item__remove svg { width: 15px; height: 15px; }
.ajd-item__remove:hover { color: var(--color-danger); }
/* нижняя строка товара: степпер слева, цена справа (заголовок сверху свободно
   переносится — цена от него не зависит и не сливается) */
.ajd-item__bottom {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    margin-top: 12px;
}
.ajd-item__price {
    text-align: right; font-size: 16.5px; font-weight: 700; color: var(--color-primary-dark);
    white-space: nowrap; flex: none;
}
.ajd-item__price .woocommerce-Price-amount { font-weight: 700; color: inherit; }
.ajd-item__qty {
    display: inline-flex; align-items: stretch; flex: none;
    border: 1px solid var(--color-border); border-radius: var(--radius-sm); overflow: hidden;
}
.ajd-qty__btn {
    width: 46px; height: 42px; border: 0; background: var(--color-border-light);
    color: var(--color-text); font-size: 19px; font-weight: 500; cursor: pointer;
    font-family: inherit; line-height: 1;
}
.ajd-qty__btn:hover { background: var(--color-primary-pale); color: var(--color-primary-dark); }
.ajd-qty__val {
    width: 56px; height: 42px; text-align: center;
    font-family: inherit; font-size: 15px; font-weight: 600; color: var(--color-text);
    background: var(--color-white); border: 0; padding: 0;
    border-left: 1px solid var(--color-border); border-right: 1px solid var(--color-border);
    -moz-appearance: textfield; appearance: textfield; border-radius: 0;
}
.ajd-qty__val::-webkit-outer-spin-button,
.ajd-qty__val::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ajd-qty__val:focus { outline: none; box-shadow: inset 0 0 0 2px var(--color-primary-light); }

/* --- Lähetyksen tiedot (закреплён под списком) --- */
.ajd-ship { flex: none; padding: 20px 0 6px; text-align: center; border-top: 1px solid var(--color-border-light); }
/* Метрики 1:1 из старого виджета (inline CSS в footer.php Shoptimizer-child) */
.ajd-ship__title {
    font-family: var(--font-body, 'Montserrat', sans-serif);
    font-size: 21px; font-weight: 500; line-height: 24px;
    color: var(--color-text); margin: 0 0 20px;
}
.ajd-ship__stats { display: flex; justify-content: space-between; align-items: center; }
.ajd-ship__stat {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 18px; line-height: 21px; font-weight: 500; color: var(--color-text);
}
.ajd-ship__stat b { font-weight: 500; }
.ajd-ship__stat svg { width: 18px; height: 18px; flex: none; }
.ajd-ship__bar {
    position: relative; margin: 11px 0 9px;
    height: 29px; border-radius: 5px; box-sizing: border-box;
    background: #dae4ef; border: 1px solid #dae4ef;
    display: flex; align-items: center; justify-content: center;
    font-size: 18px; line-height: 21px; font-weight: 500; color: #4f4f4f;
}
.ajd-ship__bar-text { position: relative; z-index: 2; }
.ajd-ship__bar-fill {
    position: absolute; top: 1px; left: 1px;
    height: 25px; max-width: calc(100% - 2px);
    background: #e88368; border-radius: 5px;
    transition: width .35s ease;
}
.ajd-ship__left { font-size: 18px; line-height: 21px; font-weight: 500; color: var(--color-text); margin-top: 0; padding-bottom: 4px; }
.ajd-ship__left b { font-weight: 500; }
.ajd-ship__terms {
    display: inline-block; margin-top: 10px;
    height: 30px; line-height: 28px; padding: 0 40px;
    background: #efe0c0; border: 1px solid #efe0c0; border-radius: 3px;
    color: var(--color-text); font-size: 15px; font-weight: 500; text-decoration: none;
}
.ajd-ship__terms:hover { background: #e9d5a8; }

/* --- итог + CTA (закреплены внизу) --- */
.ajd-total {
    flex: none;
    display: flex; align-items: baseline; justify-content: space-between;
    border-top: 1px solid var(--color-border);
    margin-top: 16px; padding: 14px 0 4px;
    font-size: 14px; color: var(--color-text);
}
.ajd-total b { font-size: 16px; font-weight: 700; }
.ajd-checkout {
    display: flex; align-items: center; justify-content: center;
    height: 54px; margin-top: 12px;
    background: var(--color-primary); color: #fff;
    font-size: 16px; font-weight: 600; text-decoration: none;
    border-radius: var(--radius-md);
    transition: background .15s ease;
    flex: none;
}
.ajd-checkout:hover { background: var(--color-primary-dark); color: #fff; }

/* --- пустая корзина --- */
.ajd-empty {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    text-align: center; padding: 40px 10px; color: var(--color-text-secondary);
}
.ajd-empty svg { width: 44px; height: 44px; color: var(--color-text-muted); margin-bottom: 14px; }
.ajd-empty p { font-size: 15px; margin: 0 0 14px; }
.ajd-empty a {
    color: var(--color-primary); font-weight: 600; text-decoration: none;
    border-bottom: 1px solid var(--color-primary-light);
}

/* CartPops выключен под этой темой — прячем его остатки на всякий случай */
#cartpops-drawer, #cpops-floating-cart, #cartpops-bar, .cpops-drawer-overlay { display: none !important; }

@media (max-width: 560px) {
    /* Панель не шире 80% — слева остаётся полоса оверлея для тапа-закрытия */
    .aj-drawer__panel { width: 80%; max-width: 80%; }

    /* Верхняя панель — минимальная высота */
    .aj-drawer__head { padding: 8px 6px 8px 12px; }
    .aj-drawer__head h2 { font-size: 17px; }
    .aj-drawer__close { width: 34px; height: 34px; }
    .aj-drawer__close svg { width: 22px; height: 22px; }

    /* Боковые паддинги — по минимуму */
    .aj-drawer__inner { padding: 0 10px 12px; }

    /* Товар: картинка минимальная, без фона и паддинга; отступы плотнее */
    .ajd-item { padding: 11px 0 10px; }
    .ajd-item__top { gap: 9px; }
    .ajd-item__thumb { width: 44px; background: none !important; padding: 0 !important; border: 0; }
    .ajd-item__thumb img { background: none !important; padding: 0 !important; }
    .ajd-item__main { padding-right: 26px; }
    .ajd-item__title { font-size: 13.5px; }
    .ajd-item__remove { width: 24px; height: 24px; }
    .ajd-item__bottom { margin-top: 8px; gap: 8px; }
    .ajd-item__price { font-size: 15px; }

    /* Калькулятор доставки — минимальные вертикальные отступы */
    .ajd-ship { padding: 12px 0 4px; }
    .ajd-ship__title { font-size: 17px; line-height: 20px; margin: 0 0 10px; }
    .ajd-ship__stat { font-size: 14px; line-height: 18px; }
    .ajd-ship__bar { height: 24px; margin: 7px 0 6px; font-size: 14px; }
    .ajd-ship__bar-fill { height: 20px; }
    .ajd-ship__left { font-size: 14px; line-height: 18px; padding-bottom: 2px; }
    .ajd-ship__terms { margin-top: 7px; height: 28px; line-height: 26px; font-size: 14px; padding: 0 26px; }

    /* Итог + CTA — плотнее (кнопка остаётся крупной для тапа) */
    .ajd-total { margin-top: 10px; padding: 9px 0 2px; }
    .ajd-checkout { margin-top: 8px; }
}

/* =========================================================
   WAITLIST — «Ilmoita kun tuote on saatavilla» (OOS PDP)
========================================================= */
.aj-waitlist {
    margin-top: 14px;
    margin-bottom: 16px;
    background: var(--color-primary-pale);
    border: 1px solid #d9e6f5;
    border-radius: var(--radius-lg);
    padding: 16px 16px 14px;
    position: relative;
}
.aj-waitlist__intro {
    display: block;
    font-size: 14px; font-weight: 600; color: var(--color-text);
    line-height: 1.45; margin-bottom: 12px;
}
.aj-waitlist__intro svg {
    display: block;
    width: 22px; height: 22px;
    color: var(--color-primary-dark);
    margin-bottom: 8px;
}
/* Узкая purchase-card → поле и кнопка друг под другом на всю ширину */
.aj-waitlist__row { display: flex; flex-direction: column; gap: 8px; }
.aj-waitlist__email {
    width: 100%; box-sizing: border-box;
    font-family: var(--font-body); font-size: 14px; color: var(--color-text);
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    padding: 12px 14px; background: #fff;
}
.aj-waitlist__email:focus { outline: none; border-color: var(--color-primary-light); }
.aj-waitlist__btn {
    width: 100%; border: 0; cursor: pointer;
    background: var(--color-primary); color: #fff;
    font-family: var(--font-body); font-size: 14px; font-weight: 700;
    padding: 13px 16px; border-radius: var(--radius-md);
    transition: background .15s ease;
}
.aj-waitlist__btn:hover { background: var(--color-primary-dark); }
.aj-waitlist__btn.is-loading { opacity: .7; pointer-events: none; }
.aj-waitlist__consent {
    display: flex; align-items: flex-start; gap: 8px;
    font-size: 12px; color: var(--color-text-secondary);
    line-height: 1.5; margin-top: 10px; cursor: pointer;
}
.aj-waitlist__consent input { margin: 2px 0 0; flex: none; }
.aj-waitlist__msg {
    margin-top: 10px; font-size: 13px; font-weight: 600;
    border-radius: var(--radius-sm); padding: 9px 12px;
}
.aj-waitlist__msg.is-ok  { background: var(--color-success-bg); color: #067a5b; }
.aj-waitlist__msg.is-err { background: var(--color-sale-bg); color: var(--color-sale); }
.aj-waitlist.is-done .aj-waitlist__row,
.aj-waitlist.is-done .aj-waitlist__consent { display: none; }

/* =========================================================
   MY ACCOUNT (Oma tili) — логин/регистрация + личный кабинет
========================================================= */
/* Логин/регистрация (гость) — умеренная ширина; кабинет — на всю ширину */
body.woocommerce-account:not(.logged-in) .page-content { max-width: 1080px; }
body.woocommerce-account.logged-in .page-content { max-width: none; width: 100%; }

/* --- Логин / регистрация (гость) --- */
.woocommerce-account:not(.logged-in) .u-columns.col2-set::before,
.woocommerce-account:not(.logged-in) .u-columns.col2-set::after { content: none; }
.woocommerce-account:not(.logged-in) .u-columns.col2-set {
    display: grid; grid-template-columns: 1fr 1fr; gap: 28px;
}
.woocommerce-account:not(.logged-in) .u-columns .col-1,
.woocommerce-account:not(.logged-in) .u-columns .col-2 { width: auto; max-width: none; float: none; }
.woocommerce-account:not(.logged-in) .u-column1 h2,
.woocommerce-account:not(.logged-in) .u-column2 h2 {
    font-family: var(--font-heading); font-size: 24px; font-weight: 600; margin: 0 0 14px;
}
.woocommerce-account .page-body form.login,
.woocommerce-account .page-body form.register,
.woocommerce-ResetPassword {
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 26px 26px 24px;
    margin: 0;
}
.woocommerce-account .page-body form .form-row { margin: 0 0 16px; padding: 0; }
.woocommerce-account .page-body form label { display: block; font-size: 13px; font-weight: 600; color: var(--color-text); margin-bottom: 6px; }
.woocommerce-account .page-body form label .required { color: var(--color-sale); }
.woocommerce-account .page-body form .woocommerce-Input,
.woocommerce-account .page-body form input[type=text],
.woocommerce-account .page-body form input[type=email],
.woocommerce-account .page-body form input[type=password],
.woocommerce-account .page-body form input[type=tel] {
    width: 100%; box-sizing: border-box;
    font-family: var(--font-body); font-size: 14px; color: var(--color-text);
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    padding: 12px 14px; background: #fff; transition: border-color .15s;
}
.woocommerce-account .page-body form input:focus { outline: none; border-color: var(--color-primary-light); }
.woocommerce-account .page-body form .show-password-input { top: 10px; }
.woocommerce-account .page-body form button.woocommerce-button,
.woocommerce-account .page-body form button[type=submit],
.woocommerce-ResetPassword button[type=submit] {
    display: block; width: 100%;
    background: var(--color-primary); color: #fff;
    border: 0; border-radius: var(--radius-md); cursor: pointer;
    font-family: var(--font-body); font-size: 15px; font-weight: 700;
    padding: 14px 20px; transition: background .15s ease;
}
.woocommerce-account .page-body form button.woocommerce-button:hover,
.woocommerce-account .page-body form button[type=submit]:hover { background: var(--color-primary-dark); }
.woocommerce-account .page-body form .woocommerce-form-login__rememberme {
    display: flex; align-items: center; gap: 8px;
    font-size: 13px; font-weight: 500; color: var(--color-text-secondary); margin-bottom: 14px;
}
.woocommerce-account .page-body form .woocommerce-form-login__rememberme input { width: auto; }
.woocommerce-account .woocommerce-LostPassword { margin: 14px 0 0; font-size: 13.5px; }
.woocommerce-account .woocommerce-LostPassword a { color: var(--color-primary-dark); font-weight: 600; text-decoration: none; }
.woocommerce-account .woocommerce-LostPassword a:hover { text-decoration: underline; }
.woocommerce-account .page-body form.register p:not(.form-row) { font-size: 13px; color: var(--color-text-secondary); line-height: 1.6; }
.woocommerce-account .page-body form.register p a { color: var(--color-primary-dark); }
.woocommerce-privacy-policy-text p { font-size: 12.5px; color: var(--color-text-muted); line-height: 1.6; }

/* --- Кабинет (залогинен): сетка навигация + контент --- */
.woocommerce-account.logged-in .page-body > .woocommerce {
    display: grid; grid-template-columns: 250px 1fr; gap: 30px; align-items: start;
}
.woocommerce-MyAccount-navigation {
    background: var(--color-white); border: 1px solid var(--color-border);
    border-radius: var(--radius-lg); overflow: hidden;
}
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 8px; }
.woocommerce-MyAccount-navigation li { margin: 0; }
.woocommerce-MyAccount-navigation li a {
    display: flex; align-items: center; gap: 11px;
    padding: 11px 13px; border-radius: var(--radius-md);
    font-size: 14px; font-weight: 600; color: var(--color-text-secondary);
    text-decoration: none; transition: color .15s;
}
/* hover — только цвет текста, без фона (иначе рядом с активным сливается) */
.woocommerce-MyAccount-navigation li a:hover { color: var(--color-primary-dark); }
/* мышиный клик не рисует focus-рамку (клавиатурный таб — рисует) */
.woocommerce-MyAccount-navigation li a:focus:not(:focus-visible) { outline: none; }
.woocommerce-MyAccount-navigation li.is-active a {
    background: var(--color-primary-pale); color: var(--color-primary-dark);
    box-shadow: inset 3px 0 0 var(--color-primary);
}
.woocommerce-MyAccount-navigation li.is-active a:hover { color: var(--color-primary-dark); }
.woocommerce-MyAccount-navigation li a::before {
    content: ""; width: 18px; height: 18px; flex: none;
    background: currentColor;
    -webkit-mask: var(--acc-ico) no-repeat center / contain; mask: var(--acc-ico) no-repeat center / contain;
}
.woocommerce-MyAccount-navigation-link--dashboard a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M3 12l9-8 9 8M5 10v10h5v-6h4v6h5V10'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--orders a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M21 8l-9-5-9 5v8l9 5 9-5zM3 8l9 5m0 0l9-5m-9 5v9'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--downloads a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M12 3v12m0 0l-4-4m4 4l4-4M4 21h16'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--edit-address a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M17.657 16.657L13.414 20.9a2 2 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z'/%3E%3Ccircle cx='12' cy='11' r='3'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--payment-methods a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='2' y='5' width='20' height='14' rx='2'/%3E%3Cpath d='M2 10h20'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--cgkit-wishlist a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--edit-account a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4 4-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--customer-logout a { --acc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M17 16l4-4m0 0l-4-4m4 4H7m3 8H5a2 2 0 01-2-2V6a2 2 0 012-2h5'/%3E%3C/svg%3E"); }
.woocommerce-MyAccount-navigation-link--customer-logout { border-top: 1px solid var(--color-border-light); margin-top: 6px; padding-top: 6px; }
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--color-danger); }
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout a:hover { background: var(--color-sale-bg); color: var(--color-sale); }

.woocommerce-MyAccount-content {
    background: var(--color-white); border: 1px solid var(--color-border);
    border-radius: var(--radius-lg); padding: 26px 28px;
    font-size: 14px; line-height: 1.65; color: var(--color-text);
    min-width: 0;
}
.woocommerce-MyAccount-content > h2,
.woocommerce-MyAccount-content h3 {
    font-family: var(--font-heading); font-size: 22px; font-weight: 600; margin: 0 0 16px;
}
.woocommerce-MyAccount-content p { margin: 0 0 14px; }
.woocommerce-MyAccount-content a { color: var(--color-primary-dark); }

/* Таблица заказов */
.woocommerce-MyAccount-content table.shop_table {
    width: 100%; border-collapse: collapse; border: 1px solid var(--color-border);
    border-radius: var(--radius-md); overflow: hidden; font-size: 13.5px;
}
.woocommerce-MyAccount-content table.shop_table th {
    background: var(--color-primary-pale); color: var(--color-primary-dark);
    font-size: 12px; text-transform: uppercase; letter-spacing: .4px;
    padding: 11px 12px; text-align: left;
}
.woocommerce-MyAccount-content table.shop_table td {
    padding: 12px; border-top: 1px solid var(--color-border-light); vertical-align: middle;
}
.woocommerce-MyAccount-content table.shop_table .woocommerce-button {
    display: inline-block; background: var(--color-primary); color: #fff;
    font-size: 12.5px; font-weight: 700; text-decoration: none;
    padding: 8px 14px; border-radius: var(--radius-sm); margin: 2px 4px 2px 0; border: 0; cursor: pointer;
}
.woocommerce-MyAccount-content table.shop_table .woocommerce-button:hover { background: var(--color-primary-dark); }

/* Адреса */
.woocommerce-MyAccount-content .woocommerce-Addresses { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.woocommerce-MyAccount-content .woocommerce-Address { width: auto; max-width: none; float: none; }
.woocommerce-MyAccount-content .woocommerce-Address-title { display: flex; align-items: baseline; justify-content: space-between; }
.woocommerce-MyAccount-content .woocommerce-Address address {
    background: var(--color-bg); border: 1px solid var(--color-border);
    border-radius: var(--radius-md); padding: 16px; font-style: normal; line-height: 1.7;
}
.woocommerce-MyAccount-content .edit { font-size: 13px; font-weight: 600; }

/* Формы кабинета (адрес, данные аккаунта) */
.woocommerce-MyAccount-content form .form-row { margin: 0 0 16px; }
.woocommerce-MyAccount-content form .form-row-first,
.woocommerce-MyAccount-content form .form-row-last { width: 48%; float: none; display: inline-block; vertical-align: top; }
.woocommerce-MyAccount-content form .form-row-first { margin-right: 3%; }
.woocommerce-MyAccount-content fieldset {
    border: 1px solid var(--color-border-light); border-radius: var(--radius-md);
    padding: 16px 18px; margin: 20px 0;
}
.woocommerce-MyAccount-content fieldset legend { font-weight: 700; font-size: 14px; padding: 0 8px; }
.woocommerce-MyAccount-content form button[type=submit] { width: auto; padding: 13px 30px; }

/* Сообщения WC в кабинете */
.woocommerce-account .woocommerce-message,
.woocommerce-account .woocommerce-info,
.woocommerce-account .woocommerce-error {
    background: var(--color-primary-pale); border: 0; border-left: 3px solid var(--color-primary);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    padding: 13px 16px; margin: 0 0 18px; font-size: 13.5px; color: var(--color-text);
    list-style: none;
}
.woocommerce-account .woocommerce-error { background: var(--color-sale-bg); border-left-color: var(--color-sale); }
.woocommerce-account .woocommerce-message a.button,
.woocommerce-account .woocommerce-info a.button {
    float: right; background: var(--color-primary); color: #fff; text-decoration: none;
    font-size: 12.5px; font-weight: 700; padding: 7px 14px; border-radius: var(--radius-sm); margin-left: 12px;
}

@media (max-width: 860px) {
    .woocommerce-account:not(.logged-in) .u-columns.col2-set::before,
.woocommerce-account:not(.logged-in) .u-columns.col2-set::after { content: none; }
.woocommerce-account:not(.logged-in) .u-columns.col2-set { grid-template-columns: 1fr; }
    .woocommerce-account.logged-in .page-body > .woocommerce { grid-template-columns: 1fr; }
    .woocommerce-MyAccount-content .woocommerce-Addresses { grid-template-columns: 1fr; }
    .woocommerce-MyAccount-content form .form-row-first,
    .woocommerce-MyAccount-content form .form-row-last { width: 100%; margin-right: 0; display: block; }
}

/* Order status/number/date highlights — заменяем дефолтный жёлтый <mark> */
.woocommerce-account mark,
.woocommerce-MyAccount-content mark {
    background: var(--color-primary-pale);
    color: var(--color-primary-dark);
    font-weight: 700;
    padding: 1px 8px;
    border-radius: var(--radius-sm);
}
.woocommerce-MyAccount-content mark.order-status {
    background: var(--color-success-bg);
    color: #067a5b;
}
/* Кнопки сохранения в кабинете — компактные, не на всю ширину */
.woocommerce-account .page-body .woocommerce-MyAccount-content form button[type=submit],
.woocommerce-account .page-body .woocommerce-MyAccount-content form button.woocommerce-Button {
    display: inline-block; width: auto; padding: 13px 34px;
}

/* --- My Account: нейтрализуем дефолтные WooCommerce float'ы, чтобы grid
   (навигация | контент) не разваливался на страницах плагинов (Cashback) --- */
.woocommerce-account.logged-in .page-body > .woocommerce > .woocommerce-MyAccount-navigation,
.woocommerce-account.logged-in .page-body > .woocommerce > .woocommerce-MyAccount-content {
    float: none !important;
    width: auto !important;
    margin: 0 !important;
}

/* --- Cashback endpoint (/my-account/cbk-cashback/) --- */
/* Первая таблица (сводка баланса) без класса shop_table — оформляем как её */
.woocommerce-MyAccount-content > table {
    width: 100%; border-collapse: collapse;
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    overflow: hidden; font-size: 13.5px; margin: 0 0 22px;
}
.woocommerce-MyAccount-content > table th,
.woocommerce-MyAccount-content > table td {
    padding: 12px 14px; text-align: left; border-top: 1px solid var(--color-border-light);
}
.woocommerce-MyAccount-content > table tr:first-child th,
.woocommerce-MyAccount-content > table tr:first-child td { border-top: 0; }
.woocommerce-MyAccount-content > table th {
    font-weight: 700; color: var(--color-text); background: var(--color-bg); width: 45%;
}

/* Показ «N per page» селектор */
.cbk_pagination_size { margin: 0 0 16px; }
.cbk_pagination_size form { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cbk_pagination_size label { font-size: 13px; font-weight: 600; color: var(--color-text-secondary); margin: 0; }
.cbk_pagination_size input[type=number] {
    width: 80px;
    font-family: var(--font-body); font-size: 13.5px; color: var(--color-text);
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    padding: 9px 12px; background: #fff;
}
.cbk_pagination_size input[type=number]:focus { outline: none; border-color: var(--color-primary-light); }
.cbk_pagination_size input[type=submit] {
    border: 0; cursor: pointer; background: var(--color-primary); color: #fff;
    font-family: var(--font-body); font-size: 13px; font-weight: 700;
    padding: 9px 18px; border-radius: var(--radius-md); transition: background .15s;
}
.cbk_pagination_size input[type=submit]:hover { background: var(--color-primary-dark); }

/* Статус-метки (credit/debit) как бейджи вместо голого <mark> */
.cbk_cashback_table .cbk_status_label {
    display: inline-block; background: none; padding: 3px 10px;
    border-radius: 99px; font-size: 11.5px; font-weight: 700; line-height: 1.5;
    white-space: nowrap;
}
.cbk_cashback_table .cbk_credit_status { background: var(--color-success-bg); color: #067a5b; }
.cbk_cashback_table .cbk_debit_status  { background: var(--color-sale-bg);    color: var(--color-sale); }

/* Пагинация таблицы кэшбэка */
.cbk_cashback_table + .cbk_pagination,
.woocommerce-MyAccount-content .cbk_pagination { margin-top: 16px; }
.woocommerce-MyAccount-content .cbk_pagination a,
.woocommerce-MyAccount-content .cbk_pagination span {
    display: inline-block; min-width: 34px; text-align: center;
    padding: 7px 10px; margin: 0 3px 3px 0;
    border: 1px solid var(--color-border); border-radius: var(--radius-sm);
    font-size: 13px; font-weight: 600; color: var(--color-text-secondary); text-decoration: none;
}
.woocommerce-MyAccount-content .cbk_pagination a:hover { border-color: var(--color-primary-light); color: var(--color-primary-dark); }
.woocommerce-MyAccount-content .cbk_pagination .current,
.woocommerce-MyAccount-content .cbk_pagination span.current {
    background: var(--color-primary); border-color: var(--color-primary); color: #fff;
}

/* Скрытый lightbox-попап плагина не должен занимать место в потоке */
.cbk-popup-cashback-lightcase { display: none; }

/* Clearfix ::before/::after у .woocommerce становятся лишними grid-ячейками
   и ломают раскладку кабинета (nav уезжает в широкую колонку, контент — вниз).
   Тот же баг, что на форме логина (.col2-set). */
.woocommerce-account.logged-in .page-body > .woocommerce::before,
.woocommerce-account.logged-in .page-body > .woocommerce::after { content: none; }

/* Бейджи статусов кэшбэка — перебиваем дефолтный <mark> плагина */
.cbk_cashback_table .cbk_credit_status { background: var(--color-success-bg) !important; color: #067a5b !important; }
.cbk_cashback_table .cbk_debit_status  { background: var(--color-sale-bg) !important;    color: var(--color-sale) !important; }

/* =========================================================
   MY ACCOUNT — вид пунктов навигации (колонка слева остаётся).
   Без подчёркиваний у пунктов, без фона/полосы у активного и hover.
========================================================= */
/* убрать дефолтные WooCommerce подчёркивания у пунктов */
.woocommerce-MyAccount-navigation li,
.woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout {
    border: 0 !important; margin: 0; padding: 0;
}
.woocommerce-MyAccount-navigation li a { border-radius: var(--radius-md); }

/* активный — только цвет текста, без фона, без полосы, без подчёркивания */
.woocommerce-MyAccount-navigation li.is-active a {
    background: none; box-shadow: none; border: 0; text-decoration: none;
    color: var(--color-primary-dark); font-weight: 700;
}
/* hover — только цвет текста */
.woocommerce-MyAccount-navigation li a:hover { background: none; text-decoration: none; color: var(--color-primary-dark); }

/* logout остаётся красным, но без отделителя-бордера */
.woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--color-danger); }
.woocommerce-MyAccount-navigation-link--customer-logout a:hover { background: none; color: var(--color-sale); }

/* =========================================================
   COOKIE CONSENT — evästesuostumus (порт cookie-law-info)
========================================================= */
html.aj-cc-lock { overflow: hidden; }
.aj-cc { position: relative; z-index: 9500; }

/* --- Баннер (снизу справа) --- */
.aj-cc__banner {
    position: fixed; right: 20px; bottom: 20px; z-index: 9500;
    width: 420px; max-width: calc(100vw - 32px);
    background: var(--color-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: 0 14px 40px rgba(15, 23, 42, 0.18);
    padding: 20px 20px 16px;
}
.aj-cc__banner-body { display: flex; gap: 12px; }
.aj-cc__cookie { width: 30px; height: 30px; flex: none; color: var(--color-primary); margin-top: 2px; }
.aj-cc__msg {
    margin: 0; font-size: 13px; line-height: 1.6; color: var(--color-text-secondary);
}
.aj-cc__link { color: var(--color-primary-dark); font-weight: 600; text-decoration: none; white-space: nowrap; }
.aj-cc__link:hover { text-decoration: underline; }
.aj-cc__actions { display: flex; gap: 8px; margin-top: 16px; flex-wrap: wrap; }
.aj-cc__btn {
    flex: 1 1 auto; min-width: 92px;
    font-family: var(--font-body); font-size: 13px; font-weight: 700; cursor: pointer;
    padding: 11px 14px; border-radius: var(--radius-md); border: 1px solid transparent;
    transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.aj-cc__btn--accept { background: var(--color-primary); color: #fff; }
.aj-cc__btn--accept:hover { background: var(--color-primary-dark); }
.aj-cc__btn--reject { background: var(--color-white); color: var(--color-text); border-color: var(--color-border); }
.aj-cc__btn--reject:hover { border-color: var(--color-primary-light); color: var(--color-primary-dark); }
.aj-cc__btn--ghost { background: none; color: var(--color-text-secondary); border-color: var(--color-border); flex: 1 1 100%; }
.aj-cc__btn--ghost:hover { color: var(--color-primary-dark); border-color: var(--color-primary-light); }

/* Stripe's express-checkout "— OR —" divider: we don't render the express
   buttons above it, so the separator hangs alone in the middle of the page. */
.wc-stripe-express-checkout-button-separator,
#wc-stripe-express-checkout-button-separator { display: none !important; }

/* --- Настройки: компактная панель сбоку, а не большая модалка по центру --- */
/* [hidden] must win: a class rule with `display` beats the UA stylesheet's
   [hidden]{display:none}, so the panel used to stay on screen while marked
   hidden — and with the JS init broken there was no way to close it. */
.aj-cc[hidden],
.aj-cc__modal[hidden],
.aj-cc__reopen[hidden] { display: none !important; }

.aj-cc__modal { position: fixed; inset: 0; z-index: 9600; display: flex; align-items: flex-end; justify-content: flex-end; }
.aj-cc__overlay { position: absolute; inset: 0; background: rgba(15, 23, 42, 0.35); }
.aj-cc__dialog {
    position: relative; width: 380px; max-width: calc(100vw - 24px); max-height: min(560px, calc(100vh - 24px));
    margin: 12px; display: flex; flex-direction: column;
    background: var(--color-white); border-radius: var(--radius-lg); overflow: hidden;
    box-shadow: 0 18px 44px rgba(15, 23, 42, 0.28);
}
@media (max-width: 560px) {
    .aj-cc__modal { align-items: flex-end; justify-content: center; }
    .aj-cc__dialog { width: auto; margin: 8px; max-height: calc(100vh - 16px); }
}
.aj-cc__dialog-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 20px 24px; border-bottom: 1px solid var(--color-border);
}
.aj-cc__dialog-head h2 {
    margin: 0; font-family: var(--font-heading, 'Playfair Display', serif);
    font-size: 21px; font-weight: 600; color: var(--color-text);
}
.aj-cc__close {
    width: 34px; height: 34px; border: 0; background: none; cursor: pointer;
    color: var(--color-text-secondary); display: flex; align-items: center; justify-content: center;
}
.aj-cc__close svg { width: 22px; height: 22px; }
.aj-cc__close:hover { color: var(--color-danger); }
.aj-cc__dialog-body { padding: 20px 24px; overflow-y: auto; }
.aj-cc__intro { margin: 0 0 18px; font-size: 13.5px; line-height: 1.65; color: var(--color-text-secondary); }

.aj-cc__cat { padding: 14px 0; border-top: 1px solid var(--color-border-light); }
.aj-cc__cat:first-of-type { border-top: 0; }
.aj-cc__cat-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.aj-cc__cat-title { font-size: 15px; font-weight: 700; color: var(--color-text); }
.aj-cc__always { font-size: 12.5px; font-weight: 700; color: var(--color-success); }
.aj-cc__cat-desc { margin: 8px 0 0; font-size: 13px; line-height: 1.6; color: var(--color-text-secondary); }

/* Тумблер */
.aj-cc__toggle { position: relative; flex: none; cursor: pointer; display: inline-flex; }
.aj-cc__toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.aj-cc__toggle-track {
    width: 44px; height: 24px; border-radius: 99px; background: var(--color-border);
    display: block; transition: background .18s ease;
}
.aj-cc__toggle-knob {
    position: absolute; top: 3px; left: 3px; width: 18px; height: 18px;
    background: #fff; border-radius: 50%; box-shadow: 0 1px 3px rgba(0,0,0,.2);
    transition: transform .18s ease;
}
.aj-cc__toggle input:checked + .aj-cc__toggle-track { background: var(--color-primary); }
.aj-cc__toggle input:checked + .aj-cc__toggle-track .aj-cc__toggle-knob { transform: translateX(20px); }
.aj-cc__toggle input:focus-visible + .aj-cc__toggle-track { box-shadow: 0 0 0 3px var(--color-primary-light); }

.aj-cc__dialog-foot {
    display: flex; gap: 8px; padding: 16px 24px; border-top: 1px solid var(--color-border);
    background: var(--color-bg);
}
.aj-cc__dialog-foot .aj-cc__btn { flex: 1 1 0; }

/* --- Плавающая «Evästeasetukset» --- */
/* The floating "cookie settings" pill is gone — it sat over every page for
   everyone who had already decided. Consent is still withdrawable from the
   "Evästeasetukset" link in the footer bottom bar. */
.aj-cc__reopen { display: none !important; }

.footer-cc-link {
    background: none; border: 0; padding: 0; cursor: pointer;
    font-family: inherit; font-size: inherit; color: inherit;
    text-decoration: none;
}
.footer-cc-link:hover { color: var(--color-primary); text-decoration: underline; }

.aj-cc__reopen--legacy {
    position: fixed; left: 18px; bottom: 18px; z-index: 9400;
    display: inline-flex; align-items: center; gap: 8px;
    background: var(--color-white); color: var(--color-text-secondary);
    border: 1px solid var(--color-border); border-radius: 99px; cursor: pointer;
    padding: 9px 15px 9px 12px; font-family: var(--font-body); font-size: 12.5px; font-weight: 600;
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.12);
}
.aj-cc__reopen svg { width: 18px; height: 18px; color: var(--color-primary); }
.aj-cc__reopen:hover { color: var(--color-primary-dark); border-color: var(--color-primary-light); }

@media (max-width: 560px) {
    .aj-cc__banner { right: 12px; left: 12px; bottom: 12px; width: auto; }
    .aj-cc__reopen span { display: none; }
    .aj-cc__reopen { padding: 10px; }
}


/* ============================================================
   HOMEPAGE (1:1 port of the old page-home) — unify block widths
   and product grids with the current design.
   The ported sections use .section-wrapper (max-width 1460px, no
   gutter); the current design container (header/footer) is
   1610px / padding 0 24px. The offer carousels are WooCommerce
   [products] shortcodes (ul.products.columns-5) that fall back to
   WC's float layout with a 3.8% (~55px) column margin — replaced
   here with the site's CSS grid (see .cat-products ul.products).
   Overrides only layout/positioning; the ported card design is
   untouched.
   ============================================================ */
body.home .section-wrapper {
    max-width: 1610px;
    padding: 0 24px;
    box-sizing: border-box;
}

/* Promo-banner block uses the old Shoptimizer .container (no max-width →
   full-bleed). Constrain it to the same container as everything else; its
   inner .wraper-block keeps its -12px gutter row so banners align to edges. */
body.home .select-product .container {
    max-width: 1610px;
    margin: 0 auto;
    padding: 0 24px;
    box-sizing: border-box;
}

body.home .products-wrapper .woocommerce { width: 100%; margin: 0; }
body.home .products-wrapper ul.products {
    display: grid !important;
    grid-template-columns: repeat(5, 1fr) !important;
    gap: 24px;
    margin: 0;
    padding: 0;
    list-style: none;
}
body.home .products-wrapper ul.products::before,
body.home .products-wrapper ul.products::after { content: none !important; display: none !important; }
body.home .products-wrapper ul.products li.product {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    float: none !important;
}

/* Unified vertical rhythm. The ported homepage had per-section random
   spacing (advantages 50/50, cta 40/40, instagram 30, filters 5,
   products 25, subscribe 10) and headings jumping 45px → 82px. Normalize:
   24px below the nav for the banners, a uniform 56px gap between sections,
   40px under every section heading. (.home-instagram is display:none, so
   its margin never renders.) */
body.home .select-product { margin: 24px 0 0 !important; padding: 0 !important; }
body.home .advantages,
body.home .trustpilot-home,
body.home .cta,
body.home .home-instagram,
body.home .products.home-list,
body.home .filters.home-list,
body.home .products,
body.home .subscribe { margin: 56px 0 0 !important; padding: 0 !important; }
body.home .subscribe { margin-bottom: 56px !important; }
body.home .section-title { margin: 0 0 40px !important; }

@media (max-width: 1200px) {
    body.home .products-wrapper ul.products { grid-template-columns: repeat(3, 1fr) !important; }
}
@media (max-width: 700px) {
    body.home .products-wrapper ul.products { grid-template-columns: repeat(2, 1fr) !important; gap: 12px; }
    body.home .section-wrapper,
    body.home .select-product .container { padding: 0 16px; }
}
