/**
 * Chef Veronica Core — Public Styles
 *
 * @package ChefVeronicaCore
 */

/* ── Custom Fonts (@font-face) ──
 * Makes Elementor Pro custom fonts available globally in WordPress.
 * Source files: /wp-content/uploads/2025/09/
 */

@font-face {
    font-family: "VVDS Praliner";
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Regular.eot");
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Regular.eot?#iefix") format("embedded-opentype"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Regular.woff2") format("woff2"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Regular.woff") format("woff"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Regular.ttf") format("truetype");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "VVDS Praliner";
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Medium.eot");
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Medium.eot?#iefix") format("embedded-opentype"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Medium.woff2") format("woff2"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Medium.woff") format("woff"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Medium.ttf") format("truetype");
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "VVDS Praliner";
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Bold.eot");
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Bold.eot?#iefix") format("embedded-opentype"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Bold.woff2") format("woff2"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Bold.woff") format("woff"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Bold.ttf") format("truetype");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

/* Alias: Elementor Pro registers each weight as a separate family name. */
@font-face {
    font-family: "VVDS Praliner Regular";
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Regular.eot");
    src: url("../../../../uploads/2025/09/VVDS_Praliner-Regular.eot?#iefix") format("embedded-opentype"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Regular.woff2") format("woff2"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Regular.woff") format("woff"),
        url("../../../../uploads/2025/09/VVDS_Praliner-Regular.ttf") format("truetype");
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

/* ── Variation Title Swap ── */

/* Prevent flash of placeholder text ("Variation Name") before JS sets the real title. */
.product_title_variation {
    opacity: 0;
    transition: opacity 0.2s ease;
}

.product_title_variation.cv-title-ready {
    opacity: 1;
}

/* Hide the WC variation description that now shows in the title heading. */
.woocommerce-variation-description {
    display: none !important;
}

/* ── FDA Nutrition Facts Label ── */
.cv-nutrition-facts {
    width: 320px;
    border: 2px solid #333;
    padding: 8px 12px;
    font-size: 13px;
    line-height: 1.5;
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

/* Inside the popup modal, take full width */
.cv-nutrition-modal .cv-nutrition-facts {
    width: 100%;
    max-width: none;
}

.cv-nutrition-facts h3 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 2px;
    padding: 0;
    letter-spacing: -0.5px;
}

.cv-nf-serving {
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 2px;
}

.cv-nf-divider {
    border: none;
    margin: 2px 0;
}

.cv-nf-divider.cv-nf-thick {
    border-top: 8px solid #333;
    margin: 4px 0;
}

.cv-nf-divider.cv-nf-medium {
    border-top: 4px solid #333;
    margin: 3px 0;
}

.cv-nutrition-facts .cv-nf-row {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px solid #ccc;
    padding: 2px 0;
}

.cv-nutrition-facts .cv-nf-row.cv-nf-calories {
    border-bottom: 4px solid #333;
    padding: 4px 0;
}

.cv-nutrition-facts .cv-nf-row.cv-nf-calories .cv-nf-label {
    font-size: 14px;
    font-weight: 700;
}

.cv-nutrition-facts .cv-nf-row.cv-nf-calories .cv-nf-value {
    font-size: 22px;
    font-weight: 900;
    line-height: 1;
}

/* Indentation for sub-items */
.cv-nutrition-facts .cv-nf-row.cv-nf-indent {
    padding-left: 16px;
}

.cv-nutrition-facts .cv-nf-row.cv-nf-indent2 {
    padding-left: 32px;
}

.cv-nf-daily-header {
    text-align: right;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 0;
    border-bottom: 1px solid #ccc;
}

.cv-nf-footnote {
    font-size: 11px;
    margin: 6px 0 4px;
    line-height: 1.3;
    color: #555;
}

/* Allergen badges */
.cv-allergens {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}

.cv-allergen-badge {
    background: #f0e6d8;
    color: #5a3e2b;
    border-radius: 12px;
    padding: 3px 10px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Cart plan progress indicator — branded card matching the bundle cards in
 * /cart/ (cart-page.css .cv-cart-bundle-card). Renders on /checkout/ as the
 * "your plan is complete" summary at the top of the page; same visual
 * language as the per-bundle cards on /cart/ so the customer reads one
 * coherent identity across the journey. */
.cv-cart-progress-wrap {
    margin-bottom: 22px;
}

.cv-cart-progress {
    position: relative;
    background: #ffffff;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    padding: 16px 22px 18px;
    margin: 0;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
    font-family: 'Open Sans', sans-serif;
    overflow: hidden;
}

/* Left stripe — gold for incomplete, green-gradient for complete (mirrors
 * .cv-cart-bundle-card.is-complete::before in cart-page.css). The progress
 * widget renders all rows as --ok when the bundle is complete; we detect
 * by checking that no --pending row exists, via :has(). Older browsers
 * fall back to the gold default which is still readable. */
.cv-cart-progress::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    background: #F6C531;
    transition: background 200ms ease;
}

.cv-cart-progress:not(:has(.cv-cart-progress-row--pending))::before {
    background: linear-gradient(to bottom, #497D59, #9CC069);
}

.cv-cart-progress-title {
    margin: 0 0 10px;
    font-family: 'VVDS Praliner', 'Open Sans', sans-serif;
    font-size: 17px;
    font-weight: 600;
    color: #497D59;
    letter-spacing: 0.02em;
}

.cv-cart-progress-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    font-size: 14px;
    color: #6b6b6b;
    transition: color 0.2s ease;
    border-top: 1px solid #f0f0f0;
}

.cv-cart-progress-row:first-of-type {
    border-top: 0;
    padding-top: 4px;
}

.cv-cart-progress-row + .cv-cart-progress-row {
    margin-top: 0;
}

.cv-cart-progress-label {
    font-weight: 600;
    color: inherit;
}

.cv-cart-progress-value {
    font-weight: 700;
    color: inherit;
    font-variant-numeric: tabular-nums;
}

.cv-cart-progress-row--ok {
    color: #497D59;
}

.cv-cart-progress-row--pending {
    color: #8a6a08;
}

.cv-cart-progress-msg {
    margin: 12px 0 0;
    padding: 0;
    font-size: 13px;
    font-weight: 400;
    line-height: 1.4;
}

.cv-cart-progress-msg--ok {
    color: #497D59;
}

.cv-cart-progress-msg--warn {
    color: #a05a4a;
}

/* ════════════════════════════════════════
 * /checkout/ polish (owner manual review)
 * ════════════════════════════════════════
 *
 * Three visual issues fixed in this block:
 *
 * 1. Radio overlap. Kava ships
 *    `.woocommerce-checkout label { display: inline }` (specificity 0,2,1)
 *    which beats WC Blocks' `.wc-block-components-radio-control__option
 *    { display: block }` (0,1,0). With display:inline the label's
 *    `padding-left: 48px` no longer pushes content past the
 *    absolute-positioned radio at left:16px, so the radio circle and
 *    the saved-card label / "Credit / Debit Card" text overlap. Force
 *    display:block back via specificity-matched selector + !important.
 *
 * 2. Points & Rewards float label. The plugin renders
 *    `<input>...<label>` with absolute-positioned label and asymmetric
 *    vertical input padding (19.5px top / 3.25px bottom) for a
 *    Material-style "floating" effect. On our brand it reads as a
 *    cramped value squeezed against the bottom edge. Convert to a
 *    standard above-input label + balanced 12×14 input padding.
 *
 * 3. Misc inputs alignment with the brand input style (border 1px
 *    #e3e3e3, border-radius 8px, focus ring green-mid).
 */

body.woocommerce-checkout label.wc-block-components-radio-control__option {
    display: block !important;
}

body.woocommerce-checkout .wc-points-rewards-text-input {
    position: static !important;
    margin: 4px 0 12px !important;
}

/* The Points & Rewards plugin renders a "floating label" inside the
 * input wrapper. The redemption widget already has a heading
 * "Enter the number you'd like to redeem" above the form, so the inner
 * label "Enter amount" is redundant — hide it so it stops squeezing the
 * input's value visually. */
body.woocommerce-checkout .wc-points-rewards-text-input label[for] {
    display: none !important;
}

body.woocommerce-checkout #woocommerce-points-and-rewards-redemption-input {
    width: 100% !important;
    padding: 12px 14px !important;
    border: 1px solid #e3e3e3 !important;
    border-radius: 8px !important;
    background: #ffffff !important;
    color: #2c2c2c !important;
    font-size: 14px !important;
    line-height: 1.4 !important;
    height: auto !important;
    box-sizing: border-box !important;
    transition: border-color 120ms ease, box-shadow 120ms ease !important;
}

body.woocommerce-checkout #woocommerce-points-and-rewards-redemption-input:focus {
    outline: none !important;
    border-color: #9CC069 !important;
    box-shadow: 0 0 0 3px rgba(156, 192, 105, 0.18) !important;
}

/* ──────────────────────────────────────────────────────────────
 * C3 — Prevent WC Blocks empty-cart flash during hydration.
 *
 * WC Blocks SSR emits BOTH `.wp-block-woocommerce-empty-cart-block`
 * and `.wp-block-woocommerce-filled-cart-block` in the initial HTML
 * and only picks one after React hydrates (~1.5s). When the server
 * already knows the cart has items (body.cv-has-cart-items, set via
 * PHP `body_class` filter), we hide the empty block for good and
 * replace the filled block with a pulse skeleton until JS adds
 * `cv-cart-hydrated` (or the 3s safety net kicks in).
 * ────────────────────────────────────────────────────────────── */

/* Server knows cart has items → empty block must never show. */
body.cv-has-cart-items .wp-block-woocommerce-empty-cart-block {
    display: none !important;
}

/* Hide the filled-cart internals until React hydrates; show a pulse skeleton
 * in its place so the cart area feels alive instead of blank. */
body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-filled-cart-block > *,
body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-checkout > * {
    visibility: hidden;
}

body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-filled-cart-block,
body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-checkout {
    position: relative;
    min-height: 280px;
}

body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-filled-cart-block::before,
body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-checkout::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    visibility: visible;
    border-radius: 8px;
    background: linear-gradient(
        90deg,
        #f2f2f2 0%,
        #e6e6e6 50%,
        #f2f2f2 100%
    );
    background-size: 200% 100%;
    animation: cv-cart-skeleton-pulse 1.4s ease-in-out infinite;
}

@keyframes cv-cart-skeleton-pulse {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Respect prefers-reduced-motion — static grey block, no pulse. */
@media (prefers-reduced-motion: reduce) {
    body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-filled-cart-block::before,
    body.cv-has-cart-items:not(.cv-cart-hydrated) .wp-block-woocommerce-checkout::before {
        animation: none;
        background: #ececec;
    }
}

/* Back-to-shop link inside the cart progress banner (C5). */
.cv-cart-progress-back {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 14px;
    padding: 6px 0;
    color: #497D59;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: color 0.15s ease;
}

.cv-cart-progress-back:hover,
.cv-cart-progress-back:focus {
    color: #9CC069;
    text-decoration: underline;
}

/* Mini-cart progress */
.cv-mini-progress {
    padding: 6px 10px;
    margin-bottom: 8px;
    border-radius: 4px;
    text-align: center;
    font-weight: 600;
}

.cv-mini-progress.cv-complete {
    background: #e8f5e9;
    color: #2e7d32;
}

.cv-mini-progress.cv-incomplete {
    background: #fff3e0;
    color: #e65100;
}

/* ── Checkout: hide redundant shipping options block (left column) ──
   Shipping cost already shows in the order summary on the right. */
.wp-block-woocommerce-checkout-shipping-methods-block,
.wc-block-components-shipping-rates-control {
    display: none !important;
}

/* ── Nutrition Facts (FDA-style) ── */

.cv-nutrition-wrapper {
    margin: 20px 0;
}

.cv-nutrition-facts {
    max-width: 300px;
    border: 2px solid #333;
    padding: 8px 12px;
    font-size: 13px;
    line-height: 1.5;
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

.cv-nutrition-facts h3 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 2px;
    padding: 0;
    line-height: 1.1;
}

.cv-nf-serving {
    font-size: 12px;
    margin-bottom: 4px;
}

.cv-nf-divider {
    border: none;
    margin: 2px 0;
}

.cv-nf-thick {
    border-bottom: 8px solid #333;
}

.cv-nf-medium {
    border-bottom: 4px solid #333;
}

.cv-nf-calories {
    font-size: 15px;
}

.cv-nf-calories .cv-nf-label {
    font-weight: 900;
    font-size: 15px;
}

.cv-nf-calories .cv-nf-value {
    font-weight: 900;
    font-size: 22px;
}

.cv-nf-daily-header {
    text-align: right;
    font-size: 11px;
    font-weight: 700;
    border-bottom: 1px solid #333;
    padding-bottom: 2px;
    margin-bottom: 2px;
}

.cv-nf-row {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px solid #ccc;
    padding: 2px 0;
    font-size: 13px;
}

.cv-nf-row.cv-nf-indent {
    padding-left: 16px;
}

.cv-nf-footnote {
    font-size: 10px;
    color: #555;
    margin: 4px 0 0;
    line-height: 1.3;
}

/* Allergen badges */
.cv-allergens {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 12px;
    align-items: center;
}

.cv-allergens-title {
    font-size: 13px;
    margin-right: 4px;
}

.cv-allergen-badge {
    background: #f0e6d8;
    color: #5a3e2b;
    border-radius: 12px;
    padding: 3px 10px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* ── Nutrition Popup Modal ── */

.cv-nutrition-modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cv-nutrition-modal {
    background: #fff;
    border-radius: 12px;
    padding: 15px;
    max-width: 380px;
    width: 90%;
    max-height: 80vh;
    overflow-y: auto;
    position: relative;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    animation: cvModalIn 0.2s ease-out;
}

@keyframes cvModalIn {
    from {
        opacity: 0;
        transform: scale(0.95);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

.cv-nutrition-modal-close {
    position: absolute !important;
    top: 6px !important;
    right: 6px !important;
    background: none !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    font-size: 18px !important;
    cursor: pointer !important;
    color: #999 !important;
    line-height: 1 !important;
    padding: 4px 6px !important;
    margin: 0 !important;
    min-width: 0 !important;
    min-height: 0 !important;
    width: auto !important;
    height: auto !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    font-weight: 400 !important;
    font-family: Arial, sans-serif !important;
    z-index: 2;
    transition: color 0.15s ease;
}

.cv-nutrition-modal-close:hover,
.cv-nutrition-modal-close:focus {
    color: #333 !important;
    background: none !important;
    box-shadow: none !important;
    outline: none !important;
}

/* Nutrition button on product card (grid) */
.cv-nutrition-btn {
    position: absolute;
    top: 8px;
    right: 8px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid #ddd;
    border-radius: 50%;
    width: 32px;
    height: 32px;
    font-size: 16px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
    transition: all 0.2s;
    padding: 0;
    line-height: 1;
}

.cv-nutrition-btn:hover {
    background: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    transform: scale(1.1);
}

/* ── Upsell Section ── */

.cv-upsell-section {
    margin: 30px 0;
    padding: 3em;
    background: #f2f2f2;
    border-radius: 4em 4em 4em 4em;
    box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.11);
}

.cv-upsell-title {
    font-family: "VVDS Praliner Regular", Sans-serif;
    font-size: 16px;
    font-weight: normal;
    text-transform: uppercase;
    font-style: normal;
    text-decoration: none;
    color: #497d59;

}

.cv-upsell-subtitle {
    color: #666;
    font-size: 14px;
    margin: 0 0 16px;
}

.cv-upsell-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

@media (max-width: 768px) {
    .cv-upsell-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

.cv-upsell-card {
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
    transition: transform 0.2s, box-shadow 0.2s;
}

.cv-upsell-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}

.cv-upsell-img img {
    width: 100%;
    height: auto;
    display: block;
}

.cv-upsell-info {
    padding: 10px 12px;
}

.cv-upsell-name {
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 4px;
    color: #333;
    line-height: 1.3;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.cv-upsell-price {
    font-size: 14px;
    font-weight: 700;
    color: #2e7d32;
    margin-bottom: 8px;
}

.cv-upsell-add-btn {
    width: 100%;
    background: #333;
    color: #fff !important;
    border: none;
    border-radius: 6px;
    padding: 8px 12px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s;
    text-align: center;
}

.cv-upsell-add-btn:hover {
    background: #555;
}

.cv-upsell-add-btn.cv-adding {
    background: #888;
    cursor: wait;
}

.cv-upsell-add-btn.cv-added {
    background: #2e7d32;
    cursor: default;
}

/* ══════════════════════════════════════════
   Shop Flow — [cv_shop] Shortcode
   ══════════════════════════════════════════ */

.cv-shop-flow {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    font-family: inherit;
}

/* ── Step Indicators (Meal Plans) ── */

.cv-shop-steps {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 20px 0;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

.cv-step {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    border: 2px solid #ddd;
    border-radius: 30px;
    cursor: pointer;
    transition: all 0.25s ease;
    font-size: 14px;
    font-weight: 500;
    color: #666;
    background: #fafafa;
    user-select: none;
}

.cv-step:hover {
    border-color: #4caf50;
    color: #333;
}

.cv-step-active {
    border-color: #4caf50;
    background: #e8f5e9;
    color: #2e7d32;
    font-weight: 600;
}

.cv-step-complete {
    border-color: #4caf50;
    background: #4caf50;
    color: #fff;
}

.cv-step-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ddd;
    color: #666;
    font-size: 12px;
    font-weight: 700;
}

.cv-step-active .cv-step-number {
    background: #4caf50;
    color: #fff;
}

.cv-step-complete .cv-step-number {
    background: rgba(255, 255, 255, 0.3);
    color: #fff;
}

.cv-step-check {
    font-size: 16px;
}

.cv-step-arrow {
    color: #ccc;
    font-size: 18px;
    font-weight: 300;
}

/* ── Content Layout (Sidebar + Grid) ── */

.cv-shop-flow-content {
    display: flex;
    gap: 24px;
    align-items: flex-start;
}

.cv-shop-filters {
    width: 220px;
    flex-shrink: 0;
}

.cv-shop-grid {
    flex: 1;
    min-height: 200px;
    position: relative;
}

/* ── Filters Sidebar ── */

.cv-filters-wrapper {
    position: sticky;
    top: 100px;
}

.cv-filters-title {
    font-size: 16px;
    font-weight: 700;
    margin: 0 0 16px;
    color: #333;
}

.cv-filter-group {
    margin-bottom: 20px;
}

.cv-filter-group-title {
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #555;
    margin: 0 0 8px;
}

.cv-filter-option {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0;
    cursor: pointer;
    font-size: 14px;
    color: #444;
}

.cv-filter-option input[type="checkbox"] {
    accent-color: #4caf50;
    width: 16px;
    height: 16px;
}

.cv-filters-clear {
    background: none;
    border: none;
    color: #999;
    cursor: pointer;
    font-size: 13px;
    text-decoration: underline;
    padding: 0;
    margin-top: 8px;
}

.cv-filters-clear:hover {
    color: #333;
}

/* ── Product Grid ── */

.cv-products-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 20px;
}

.cv-products-grid>.cv-product-item {
    width: 100% !important;
    max-width: 100% !important;
    flex: none !important;
}

/* Override JetEngine listing grid inside our container */
.cv-shop-grid .jet-listing-grid,
.cv-shop-grid .jet-listing-grid__items {
    display: flex !important;
    flex-direction: column !important;
    gap: 20px;
}

.cv-shop-grid .jet-listing-grid__item {
    width: 100% !important;
    max-width: 100% !important;
    flex: none !important;
}

.cv-shop-loading {
    opacity: 0.5;
    pointer-events: none;
    transition: opacity 0.2s;
}

.cv-shop-empty {
    text-align: center;
    padding: 40px 20px;
    color: #888;
    font-size: 15px;
}

/* Fallback card (when JetEngine listing not configured) */
.cv-product-fallback-card {
    border: 1px solid #eee;
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
    transition: box-shadow 0.2s;
}

.cv-product-fallback-card:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

.cv-product-img img {
    width: 100%;
    height: 180px;
    object-fit: cover;
}

.cv-product-info {
    padding: 12px 16px 8px;
}

.cv-product-name {
    font-size: 15px;
    font-weight: 600;
    margin: 0 0 4px;
    color: #333;
}

.cv-product-price {
    font-size: 14px;
    color: #4caf50;
    font-weight: 600;
}

.cv-product-add-btn {
    display: block;
    text-align: center;
    padding: 10px 16px;
    margin: 8px 16px 16px;
    background: #4caf50;
    color: #fff;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: background 0.2s;
}

.cv-product-add-btn:hover {
    background: #388e3c;
    color: #fff;
}

/* ── Responsive ── */

@media (max-width: 768px) {
    .cv-shop-flow-content {
        flex-direction: column;
    }

    .cv-shop-filters {
        width: 100%;
        order: -1;
    }

    .cv-filters-wrapper {
        position: static;
    }

    .cv-shop-steps {
        gap: 6px;
    }

    .cv-step {
        padding: 8px 12px;
        font-size: 12px;
    }

    .cv-products-grid {
        grid-template-columns: 1fr;
    }
}


/* ══════════════════════════════════════════
   Cart Popup
   ══════════════════════════════════════════ */

.cv-cart-popup-overlay {
    position: fixed;
    inset: 0;
    z-index: 999999;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.cv-cart-popup {
    background: #fff;
    border-radius: 16px;
    width: 100%;
    max-width: 520px;
    max-height: 80vh;
    overflow-y: auto;
    position: relative;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
    animation: cvPopupSlideIn 0.3s ease;
}

@keyframes cvPopupSlideIn {
    from {
        opacity: 0;
        transform: translateY(20px) scale(0.96);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.cv-cart-popup-close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 32px;
    height: 32px;
    border: none;
    background: #f5f5f5;
    border-radius: 50%;
    font-size: 18px;
    color: #666;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s;
    line-height: 1;
    padding: 0;
    min-width: auto !important;
    z-index: 2;
}

.cv-cart-popup-close:hover {
    background: #e0e0e0;
    color: #333;
}

.cv-cart-popup-body {
    padding: 24px;
}

/* Header */
.cv-cart-popup-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
}

.cv-cart-popup-checkmark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #e8f5e9;
    color: #4caf50;
    font-size: 16px;
    font-weight: 700;
}

.cv-cart-popup-title {
    font-size: 17px;
    font-weight: 700;
    color: #333;
}

/* Product Card */
.cv-cart-popup-product {
    display: flex;
    gap: 14px;
    align-items: center;
    padding: 14px;
    background: #f9f9f9;
    border-radius: 12px;
    margin-bottom: 16px;
}

.cv-cart-popup-product-img {
    width: 64px;
    height: 64px;
    border-radius: 10px;
    overflow: hidden;
    flex-shrink: 0;
}

.cv-cart-popup-product-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.cv-cart-popup-product-name {
    font-size: 14px;
    font-weight: 600;
    color: #333;
    margin-bottom: 2px;
}

.cv-cart-popup-product-price {
    font-size: 14px;
    color: #4caf50;
    font-weight: 600;
}

/* Subtotal */
.cv-cart-popup-subtotal {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-top: 1px solid #eee;
    border-bottom: 1px solid #eee;
    margin-bottom: 16px;
    font-size: 14px;
    color: #555;
}

.cv-cart-popup-subtotal strong {
    color: #333;
    font-size: 16px;
}

/* Progress */
.cv-cart-popup-progress {
    display: flex;
    gap: 12px;
    margin-bottom: 12px;
}

.cv-cart-popup-progress-item {
    flex: 1;
    padding: 8px 12px;
    background: #f5f5f5;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 500;
    color: #777;
    text-align: center;
}

.cv-cart-popup-progress-item.complete {
    background: #e8f5e9;
    color: #2e7d32;
}

/* Contextual Message */
.cv-cart-popup-message {
    font-size: 14px;
    color: #555;
    margin-bottom: 20px;
    line-height: 1.5;
}

/* Action Buttons */
.cv-cart-popup-actions {
    display: flex;
    gap: 10px;
}

.cv-cart-popup-btn {
    flex: 1;
    padding: 12px 16px;
    border: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.cv-cart-popup-btn-primary {
    background: #4caf50;
    color: #fff;
}

.cv-cart-popup-btn-primary:hover {
    background: #388e3c;
}

.cv-cart-popup-btn-secondary {
    background: #f5f5f5;
    color: #333;
}

.cv-cart-popup-btn-secondary:hover {
    background: #e0e0e0;
}

/* Destructive variant — used by cvConfirmModal for actions that wipe state
 * (e.g. emptying the cart). Sits on top of -primary to win the cascade. */
.cv-cart-popup-btn--danger,
.cv-cart-popup-btn-primary.cv-cart-popup-btn--danger {
    background: #c33b3b;
    color: #fff;
}
.cv-cart-popup-btn--danger:hover,
.cv-cart-popup-btn-primary.cv-cart-popup-btn--danger:hover {
    background: #a52e2e;
}

/* ── Empty cart link (shared between /cart/ summary and mini-cart drawer) ──
 * Plain text link, no chrome — the destructive action is intentionally low
 * visual weight so it never competes with the green Checkout CTA. Hover is
 * the only state change: muted grey → danger red.
 *
 * !important is needed on visual-reset properties because Elementor's
 * `.elementor-kit-6 button` rule (specificity 0,1,1) and Kava's global
 * `button` defaults (theme.css) paint every <button> with primary green +
 * uppercase + 12-20px padding + 30px radius. The reset block below wipes
 * those for this affordance only — same pattern used elsewhere in the
 * project to fight Elementor kit defaults. */
.cv-cart-empty-link,
button.cv-cart-empty-link,
a.cv-cart-empty-link {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    margin: 8px 0 0;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    color: #8a8a8a !important;
    font-family: inherit !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.2;
    letter-spacing: normal !important;
    text-transform: none !important;
    text-decoration: none !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: color 0.15s ease;
}
.cv-cart-empty-link:hover,
.cv-cart-empty-link:focus,
button.cv-cart-empty-link:hover,
button.cv-cart-empty-link:focus,
a.cv-cart-empty-link:hover,
a.cv-cart-empty-link:focus {
    background: transparent !important;
    color: #b0463f !important;
    outline: none !important;
}
.cv-cart-empty-link__icon {
    font-size: 13px;
    line-height: 1;
    opacity: 0.85;
}
.cv-cart-empty-link:hover .cv-cart-empty-link__icon,
.cv-cart-empty-link:focus .cv-cart-empty-link__icon {
    opacity: 1;
}
/* Mini-cart variant — even tighter, fits inside the drawer's sticky footer
 * without adding visual weight above the total + Checkout buttons. */
.cv-cart-empty-link--mini,
button.cv-cart-empty-link--mini {
    margin: 0 !important;
    font-size: 11px !important;
}

/* Loading state */
/* ── Shared loading spinner (used by cart-popup, nutrition-popup, and any future popup) ── */
@keyframes cv-spin {
    to { transform: rotate(360deg); }
}
.cv-loading-spinner {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 40px 20px;
    color: #888;
    font-size: 14px;
}
.cv-loading-spinner::before {
    content: '';
    width: 32px;
    height: 32px;
    border: 3px solid #e0e0e0;
    border-top-color: #497D59;
    border-radius: 50%;
    animation: cv-spin 0.7s linear infinite;
}

.cv-cart-popup-loading {
    text-align: center;
    padding: 40px 20px;
    color: #888;
    font-size: 14px;
}

/* Error state */
.cv-cart-popup-header-error .cv-cart-popup-error-icon {
    background: #e74c3c;
    color: #fff;
    border-radius: 50%;
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 700;
}

.cv-cart-popup-error-message {
    background: #fef2f2;
    border-left: 3px solid #e74c3c;
    padding: 14px 16px;
    border-radius: 6px;
    color: #991b1b;
    font-size: 14px;
    line-height: 1.5;
    margin-bottom: 16px;
}

/* Tablet */
@media (max-width: 560px) {
    .cv-cart-popup-overlay {
        padding: 16px;
    }

    .cv-cart-popup {
        max-width: 100%;
        border-radius: 12px;
    }
}

/* Mobile */
@media (max-width: 480px) {
    .cv-cart-popup-body {
        padding: 16px;
    }

    .cv-cart-popup-actions {
        flex-direction: column;
    }

    .cv-cart-popup-product {
        gap: 10px;
    }

    .cv-cart-popup-product-img {
        width: 54px;
        height: 54px;
    }

    .cv-cart-popup-progress {
        flex-direction: column;
        gap: 8px;
    }
}

/* ── Flow Conflict Popup ────────────── */

.cv-flow-conflict-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    z-index: 999999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.cv-flow-conflict-popup {
    background: #fff;
    border-radius: 12px;
    max-width: 520px;
    width: 100%;
    padding: 32px 28px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    text-align: center;
    animation: cvConflictIn 0.3s ease;
}

@keyframes cvConflictIn {
    from {
        opacity: 0;
        transform: scale(0.9) translateY(10px);
    }

    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

.cv-flow-conflict-icon {
    font-size: 40px;
    margin-bottom: 12px;
}

.cv-flow-conflict-title {
    font-size: 18px;
    font-weight: 700;
    color: #1d2327;
    margin: 0 0 12px;
}

.cv-flow-conflict-message {
    font-size: 14px;
    line-height: 1.6;
    color: #555;
    margin: 0 0 24px;
}

.cv-flow-conflict-message strong {
    color: #1d2327;
}

.cv-flow-conflict-actions {
    display: flex;
    gap: 12px;
}

.cv-flow-conflict-btn {
    flex: 1;
    padding: 12px 16px;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s, transform 0.1s;
}

.cv-flow-conflict-btn:hover {
    transform: translateY(-1px);
}

.cv-flow-conflict-btn:active {
    transform: translateY(0);
}

.cv-flow-conflict-btn-back {
    background: #f0f0f0;
    color: #333;
}

.cv-flow-conflict-btn-back:hover {
    background: #e0e0e0;
}

.cv-flow-conflict-btn-clear {
    background: #6b8e23;
    color: #fff;
}

.cv-flow-conflict-btn-clear:hover {
    background: #556b2f;
}

.cv-flow-conflict-btn-clear:disabled {
    background: #999;
    cursor: not-allowed;
    transform: none;
}

@media (max-width: 560px) {
    .cv-flow-conflict-overlay {
        padding: 16px;
    }

    .cv-flow-conflict-popup {
        padding: 24px 20px;
        border-radius: 10px;
    }

    .cv-flow-conflict-icon {
        font-size: 34px;
        margin-bottom: 8px;
    }

    .cv-flow-conflict-title {
        font-size: 16px;
    }

    .cv-flow-conflict-message {
        font-size: 13px;
        margin-bottom: 20px;
    }

    .cv-flow-conflict-actions {
        flex-direction: column;
    }

    .cv-flow-conflict-btn {
        padding: 14px 16px;
        font-size: 14px;
    }
}


/* ═══════════════════════════════════════════════════════════════════
 * WooCommerce Account — Full Redesign
 * Brand: Chef Veronica
 * Colors: #497D59 (primary), #9CC069 (secondary), #DBEAC6 (pale), #F6C531 (accent)
 * Fonts: VVDS Praliner (headings), Open Sans (body)
 * ═══════════════════════════════════════════════════════════════════ */


/* ── Global Account Page Wrapper ── */

.woocommerce-account .entry-content,
.woocommerce-account .woocommerce {
    font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: #444;
}


/* ════════════════════════════════════════
 * 1. PRE-LOGIN VIEWS (Login, Lost Password, Reset Password)
 * ════════════════════════════════════════ */

/* Page title — force center via the page wrapper */
.woocommerce-account:not(.logged-in) .entry-title,
.woocommerce-account:not(.logged-in) .page-title,
.woocommerce-account:not(.logged-in) header.entry-header {
    text-align: center !important;
    width: 100%;
}

.woocommerce-account:not(.logged-in) .entry-title,
.woocommerce-account:not(.logged-in) .page-title {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    color: #497D59;
    font-size: 24px;
    font-weight: normal;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 8px;
}

/* Center the content wrapper */
.woocommerce-account:not(.logged-in) .entry-content,
.woocommerce-account:not(.logged-in) .woocommerce {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px 20px 60px;
}

/* Constrain the form container */
.woocommerce-account:not(.logged-in) .woocommerce>*,
.woocommerce-account:not(.logged-in) .entry-content>* {
    width: 100%;
    max-width: 440px;
}

/* ── WooCommerce Notices (error/success messages) ── */

.woocommerce-account:not(.logged-in) .woocommerce-notices-wrapper,
.woocommerce-account:not(.logged-in) .woocommerce-error,
.woocommerce-account:not(.logged-in) .woocommerce-message,
.woocommerce-account:not(.logged-in) .woocommerce-info {
    max-width: 440px;
    width: 100%;
    box-sizing: border-box;
}

.woocommerce-account .woocommerce-error,
.woocommerce-account .woocommerce-message,
.woocommerce-account .woocommerce-info {
    background: #fafafa;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 16px 20px;
    margin: 0 auto 20px;
    font-size: 14px;
    line-height: 1.6;
    color: #555;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 12px;
}

.woocommerce-account .woocommerce-error {
    border-left: 3px solid #c0392b;
}

.woocommerce-account .woocommerce-message {
    border-left: 3px solid #497D59;
}

.woocommerce-account .woocommerce-info {
    border-left: 3px solid #F6C531;
}

.woocommerce-account .woocommerce-error::before,
.woocommerce-account .woocommerce-message::before,
.woocommerce-account .woocommerce-info::before {
    display: none;
}

.woocommerce-account .woocommerce-error li,
.woocommerce-account .woocommerce-message li {
    list-style: none;
}

.woocommerce-account .woocommerce-error a,
.woocommerce-account .woocommerce-message a,
.woocommerce-account .woocommerce-info a {
    color: #497D59;
    font-weight: 600;
}

/* ── Login Form Card ── */

.woocommerce-account:not(.logged-in) .woocommerce-form-login,
.woocommerce-account:not(.logged-in) form.login,
.woocommerce-account:not(.logged-in) .woocommerce-ResetPassword {
    background: #fafafa;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 36px 32px;
    margin: 0 auto;
    max-width: 440px;
    box-sizing: border-box;
}

/* ── Form headings inside cards ── */

.woocommerce-account:not(.logged-in) .woocommerce-form-login h2,
.woocommerce-account:not(.logged-in) form.login h2,
.woocommerce-account:not(.logged-in) .woocommerce-ResetPassword h2 {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    color: #497D59;
    font-size: 20px;
    font-weight: normal;
    text-transform: uppercase;
    text-align: center;
    letter-spacing: 0.04em;
    margin: 0 0 24px;
}

/* ── Labels ── */

.woocommerce-account:not(.logged-in) .form-row label {
    font-size: 13px;
    font-weight: 600;
    color: #555;
    margin-bottom: 6px;
    display: block;
    letter-spacing: 0.02em;
}

/* ── Input Fields ── */

.woocommerce-account:not(.logged-in) .form-row input[type="text"],
.woocommerce-account:not(.logged-in) .form-row input[type="password"],
.woocommerce-account:not(.logged-in) .form-row input[type="email"] {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 14px;
    font-family: "Open Sans", sans-serif;
    color: #333;
    background: #fff;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    box-sizing: border-box;
}

.woocommerce-account:not(.logged-in) .form-row input:focus {
    border-color: #497D59;
    outline: none;
    box-shadow: 0 0 0 3px rgba(73, 125, 89, 0.1);
}

/* ── Password field toggle (WooCommerce "show password" button) ── */

.woocommerce-account:not(.logged-in) .woocommerce-form-login .password-input,
.woocommerce-account:not(.logged-in) form.login .password-input,
.woocommerce-account:not(.logged-in) .woocommerce-ResetPassword .password-input {
    position: relative;
}

.woocommerce-account:not(.logged-in) .show-password-input,
.woocommerce-account .show-password-input {
    position: absolute !important;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 30px;
    height: 30px;
    background: transparent !important;
    border: none !important;
    cursor: pointer;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    transition: background 0.2s ease;
    z-index: 2;
}

.woocommerce-account:not(.logged-in) .show-password-input:hover,
.woocommerce-account .show-password-input:hover {
    background: rgba(73, 125, 89, 0.08) !important;
}

/* Replace the default dot with an eye icon via CSS */
.woocommerce-account:not(.logged-in) .show-password-input::after,
.woocommerce-account .show-password-input::after {
    content: "";
    display: block;
    width: 20px;
    height: 20px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

.woocommerce-account:not(.logged-in) .show-password-input.display-password::after,
.woocommerce-account .show-password-input.display-password::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23497D59' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
}

/* Hide any default text inside the toggle button */
.woocommerce-account:not(.logged-in) .show-password-input span,
.woocommerce-account .show-password-input span {
    font-size: 0 !important;
    line-height: 0;
    color: transparent;
    width: 0;
    height: 0;
    overflow: hidden;
}

/* Ensure the password input has room for the toggle */
.woocommerce-account:not(.logged-in) .password-input input[type="password"],
.woocommerce-account:not(.logged-in) .password-input input[type="text"],
.woocommerce-account .password-input input[type="password"],
.woocommerce-account .password-input input[type="text"] {
    padding-right: 48px !important;
}

/* ── Submit Buttons (Login, Reset Password) ── */

.woocommerce-account:not(.logged-in) button[type="submit"],
.woocommerce-account:not(.logged-in) .woocommerce-button,
.woocommerce-account:not(.logged-in) input[type="submit"] {
    display: block;
    width: 100%;
    background: #497D59;
    color: #fff;
    border: none;
    border-radius: 30px;
    padding: 14px 20px;
    font-size: 14px;
    font-family: "Open Sans", sans-serif;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.15s ease;
    margin-top: 12px;
}

.woocommerce-account:not(.logged-in) button[type="submit"]:hover,
.woocommerce-account:not(.logged-in) input[type="submit"]:hover {
    background: #3d6a4b;
    transform: translateY(-1px);
}

/* ── Remember Me ── */

.woocommerce-account:not(.logged-in) .woocommerce-form-login__rememberme,
.woocommerce-account:not(.logged-in) .woocommerce-form__label-for-checkbox {
    font-size: 13px;
    color: #666;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 14px 0 4px;
    cursor: pointer;
}

.woocommerce-account:not(.logged-in) .woocommerce-form-login__rememberme input[type="checkbox"],
.woocommerce-account:not(.logged-in) .woocommerce-form__label-for-checkbox input[type="checkbox"] {
    accent-color: #497D59;
    width: 16px;
    height: 16px;
}

/* ── Lost Password Link ── */

.woocommerce-account:not(.logged-in) .woocommerce-LostPassword,
.woocommerce-account:not(.logged-in) .lost_password {
    text-align: center;
    margin-top: 20px;
}

.woocommerce-account:not(.logged-in) .woocommerce-LostPassword a,
.woocommerce-account:not(.logged-in) .lost_password a {
    color: #497D59;
    font-size: 13px;
    text-decoration: none;
    font-weight: 500;
    transition: color 0.2s ease;
}

.woocommerce-account:not(.logged-in) .woocommerce-LostPassword a:hover,
.woocommerce-account:not(.logged-in) .lost_password a:hover {
    color: #3d6a4b;
    text-decoration: underline;
}

/* ── Lost Password / Reset Password Page ── */

.woocommerce-account:not(.logged-in) .woocommerce-ResetPassword p {
    font-size: 14px;
    color: #555;
    line-height: 1.6;
    margin-bottom: 20px;
    text-align: center;
}

.woocommerce-account:not(.logged-in) .woocommerce-ResetPassword .form-row {
    margin-bottom: 16px;
}


/* ════════════════════════════════════════
 * 2. MY ACCOUNT — LAYOUT & NAVIGATION
 * ════════════════════════════════════════ */

/* Sidebar container — transparent, no border */
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-navigation {
    background: transparent !important;
    border: none !important;
    overflow: visible !important;
    box-shadow: none !important;
}

.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul,
.woocommerce-account .woocommerce-MyAccount-navigation ul {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 5px !important;
}

.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li,
.woocommerce-account .woocommerce-MyAccount-navigation ul li {
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    border-bottom: none !important;
}

/* ── Base link — pill left, flat right ── */
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li a,
.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 12px 20px 12px 16px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    color: #555 !important;
    text-decoration: none !important;
    transition: background 0.2s ease, color 0.2s ease !important;
    font-family: "Open Sans", sans-serif !important;
    letter-spacing: 0.05em !important;
    text-transform: uppercase !important;
    border-radius: 50px 0 0 50px !important;
    background: #efefef !important;
    border: none !important;
    box-shadow: none !important;
    line-height: 1.3 !important;
}

/* ── Hover ── */
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li a:hover,
.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover {
    background: #3d6a4b !important;
    color: #fff !important;
}

/* ── Active ── */
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li.is-active a,
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li.is-active a:hover,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a:hover {
    background: #497D59 !important;
    color: #fff !important;
}

/* ── Icon base via ::before — reset theme injections ── */
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li a::before,
.woocommerce-account .woocommerce-MyAccount-navigation ul li a::before {
    content: "" !important;
    display: inline-block !important;
    width: 17px !important;
    height: 17px !important;
    min-width: 17px !important;
    background-size: contain !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    filter: brightness(0) saturate(100%) invert(35%) !important;
    transition: filter 0.2s ease !important;
    font-family: none !important;
    font-size: 0 !important;
    line-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    color: transparent !important;
}

/* Icon white on hover & active */
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li a:hover::before,
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li.is-active a::before,
.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover::before,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a::before {
    filter: brightness(0) invert(1) !important;
}

/* ── Per-item SVG icons ── */

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1'/%3E%3C/svg%3E") !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--orders a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2'/%3E%3Crect x='9' y='3' width='6' height='4' rx='1'/%3E%3Cpath d='M9 12h6M9 16h4'/%3E%3C/svg%3E") !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--subscriptions a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 1l4 4-4 4'/%3E%3Cpath d='M3 11V9a4 4 0 0 1 4-4h14'/%3E%3Cpath d='M7 23l-4-4 4-4'/%3E%3Cpath d='M21 13v2a4 4 0 0 1-4 4H3'/%3E%3C/svg%3E") !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--cv-manage-meals a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 8h1a4 4 0 0 1 0 8h-1'/%3E%3Cpath d='M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z'/%3E%3Cline x1='6' y1='1' x2='6' y2='4'/%3E%3Cline x1='10' y1='1' x2='10' y2='4'/%3E%3Cline x1='14' y1='1' x2='14' y2='4'/%3E%3C/svg%3E") !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--edit-address a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--edit-account a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E") !important;
}

/* Gift Card Balance — real slug: pw-gift-card-balance */
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--pw-gift-card-balance a::before,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--gift-card a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2'/%3E%3Cline x1='1' y1='10' x2='23' y2='10'/%3E%3Cpath d='M12 4v16M12 10l-3-3M12 10l3-3'/%3E%3C/svg%3E") !important;
}

/* Points — real slug: points-and-rewards */
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--points-and-rewards a::before,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--points a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/%3E%3C/svg%3E") !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--referrals a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'/%3E%3Ccircle cx='6' cy='12' r='3'/%3E%3Ccircle cx='18' cy='19' r='3'/%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'/%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'/%3E%3C/svg%3E") !important;
}

/* Payment Methods — credit-card icon */
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--payment-methods a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='5' width='20' height='14' rx='2'/%3E%3Cline x1='2' y1='10' x2='22' y2='10'/%3E%3Cline x1='6' y1='15' x2='9' y2='15'/%3E%3C/svg%3E") !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/%3E%3Cpolyline points='16 17 21 12 16 7'/%3E%3Cline x1='21' y1='12' x2='9' y2='12'/%3E%3C/svg%3E") !important;
}

/* ── Log Out — subtle ── */
.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a {
    background: transparent !important;
    color: #aaa !important;
    font-weight: 400 !important;
    font-size: 11px !important;
    margin-top: 6px !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a::before {
    filter: brightness(0) saturate(100%) invert(65%) !important;
}

.woocommerce-account .woocommerce .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a:hover,
.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a:hover {
    color: #c0392b !important;
    background: #fef5f5 !important;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a:hover::before {
    filter: brightness(0) saturate(100%) invert(22%) sepia(80%) saturate(700%) hue-rotate(330deg) !important;
}


/* ════════════════════════════════════════
 * 3. MY ACCOUNT — CONTENT AREA
 * ════════════════════════════════════════ */

.woocommerce-account .woocommerce-MyAccount-content {
    font-size: 14px;
    color: #444;
    line-height: 1.7;
    font-family: "Open Sans", sans-serif;
}

.woocommerce-account .woocommerce-MyAccount-content>p:first-child {
    font-size: 15px;
    color: #555;
    margin-bottom: 20px;
}

.woocommerce-account .woocommerce-MyAccount-content a {
    color: #497D59;
    text-decoration: none;
    font-weight: 500;
}

.woocommerce-account .woocommerce-MyAccount-content a:hover {
    text-decoration: underline;
    color: #3d6a4b;
}

/* Content section headings */
.woocommerce-account .woocommerce-MyAccount-content h2,
.woocommerce-account .woocommerce-MyAccount-content h3 {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    color: #497D59;
    font-weight: normal;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 16px;
}

.woocommerce-account .woocommerce-MyAccount-content h2 {
    font-size: 18px;
}

.woocommerce-account .woocommerce-MyAccount-content h3 {
    font-size: 15px;
}


/* ════════════════════════════════════════
 * 4. TABLES (Orders, Subscriptions, etc.)
 * ════════════════════════════════════════ */

.woocommerce-account .woocommerce-orders-table,
.woocommerce-account .shop_table {
    border-collapse: collapse;
    width: 100%;
    font-size: 14px;
    border: 1px solid #eee;
    border-radius: 4px;
    overflow: hidden;
}

/* Specificity note: Kava theme paints these tables via
 *   `.woocommerce-account .woocommerce .woocommerce-MyAccount-content
 *    table.woocommerce-orders-table tr td { padding: 3px 0; }`
 * (specificity 0,4,2). To win without !important spam we mirror that
 * chain with body.woocommerce-account at the front (4 classes + tags). */
body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.woocommerce-orders-table tr th,
body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.shop_table tr th,
body.woocommerce-account .woocommerce-orders-table th,
body.woocommerce-account .shop_table th {
    background: #f5f9f6;
    border: 1px solid #eee;
    padding: 14px 20px;
    font-weight: 600;
    color: #497D59;
    text-align: left;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-family: "Open Sans", sans-serif;
}

body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.woocommerce-orders-table tr td,
body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.shop_table tr td,
body.woocommerce-account .woocommerce-orders-table td,
body.woocommerce-account .shop_table td {
    border: 1px solid #eee;
    padding: 18px 20px;
    color: #444;
    vertical-align: middle;
}

/* Action cells (View / Pay / Cancel) — give the buttons breathing room
 * and a small gap between consecutive buttons (e.g. View + Pay on a
 * pending-payment order) so they read as separate actions instead of a
 * glued button bar. */
body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.woocommerce-orders-table tr td.woocommerce-orders-table__cell-order-actions,
body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.shop_table tr td.woocommerce-orders-table__cell-subscription-actions,
body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.shop_table tr td.subscription-actions,
body.woocommerce-account .woocommerce .woocommerce-MyAccount-content table.shop_table tr td.order-actions {
    padding: 14px 16px;
    white-space: nowrap;
}
body.woocommerce-account .woocommerce-MyAccount-content table td .button + .button,
body.woocommerce-account .woocommerce-MyAccount-content table td .woocommerce-button + .woocommerce-button,
body.woocommerce-account .woocommerce-MyAccount-content table td .button + .woocommerce-button,
body.woocommerce-account .woocommerce-MyAccount-content table td .woocommerce-button + .button {
    margin-left: 8px;
}

.woocommerce-account .woocommerce-orders-table tbody tr:hover,
.woocommerce-account .shop_table tbody tr:hover {
    background: #fcfcfc;
}

/* View/action buttons in tables */
.woocommerce-account .woocommerce-orders-table .woocommerce-button,
.woocommerce-account .shop_table .woocommerce-button,
.woocommerce-account .woocommerce-orders-table .button,
.woocommerce-account .shop_table .button {
    background: #497D59;
    color: #fff !important;
    border: none;
    border-radius: 30px;
    padding: 8px 20px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    cursor: pointer;
    text-decoration: none !important;
    transition: background 0.2s ease;
    display: inline-block;
    font-family: "Open Sans", sans-serif;
    line-height: 1.4;
}

.woocommerce-account .woocommerce-orders-table .woocommerce-button:hover,
.woocommerce-account .shop_table .woocommerce-button:hover,
.woocommerce-account .woocommerce-orders-table .button:hover,
.woocommerce-account .shop_table .button:hover {
    background: #3d6a4b;
}

/* "No orders" / empty state messages */
.woocommerce-account .woocommerce-info,
.woocommerce-account .woocommerce-message {
    max-width: 100%;
}


/* ════════════════════════════════════════
 * 5. ADDRESSES
 * ════════════════════════════════════════ */

.woocommerce-account .woocommerce-Addresses {
    display: flex;
    gap: 24px;
    flex-wrap: wrap;
}

.woocommerce-account .woocommerce-Addresses .woocommerce-Address {
    flex: 1;
    min-width: 250px;
    background: #fafafa;
    border: 1px solid #eee;
    border-radius: 4px;
    padding: 20px;
}

.woocommerce-account .woocommerce-Addresses .woocommerce-Address-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eee;
}

.woocommerce-account .woocommerce-Addresses .woocommerce-Address-title h3 {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    font-size: 14px;
    font-weight: normal;
    color: #497D59;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin: 0;
}

.woocommerce-account .woocommerce-Addresses .woocommerce-Address-title a {
    font-size: 12px;
    color: #497D59;
    text-decoration: none;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 6px 14px;
    border: 1px solid #497D59;
    border-radius: 30px;
    transition: all 0.2s ease;
}

.woocommerce-account .woocommerce-Addresses .woocommerce-Address-title a:hover {
    background: #497D59;
    color: #fff;
}

.woocommerce-account .woocommerce-Addresses address {
    font-style: normal;
    color: #555;
    line-height: 1.7;
    font-size: 14px;
}


/* ════════════════════════════════════════
 * 6. FORMS (Account Details, Edit Address)
 * ════════════════════════════════════════ */

.woocommerce-account .woocommerce-EditAccountForm .form-row label,
.woocommerce-account .woocommerce-address-fields .form-row label {
    font-size: 13px;
    font-weight: 600;
    color: #555;
    display: block;
    margin-bottom: 6px;
    letter-spacing: 0.02em;
}

.woocommerce-account .woocommerce-EditAccountForm .form-row input[type="text"],
.woocommerce-account .woocommerce-EditAccountForm .form-row input[type="email"],
.woocommerce-account .woocommerce-EditAccountForm .form-row input[type="password"],
.woocommerce-account .woocommerce-address-fields .form-row input[type="text"],
.woocommerce-account .woocommerce-address-fields .form-row input[type="email"],
.woocommerce-account .woocommerce-address-fields .form-row input[type="tel"],
.woocommerce-account .woocommerce-address-fields .form-row select {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #e3e3e3;
    border-radius: 8px;
    font-size: 14px;
    font-family: "Open Sans", sans-serif;
    color: #333;
    background: #fff;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    box-sizing: border-box;
}

.woocommerce-account .woocommerce-EditAccountForm .form-row input:focus,
.woocommerce-account .woocommerce-address-fields .form-row input:focus,
.woocommerce-account .woocommerce-address-fields .form-row select:focus {
    border-color: #9CC069;
    outline: none;
    box-shadow: 0 0 0 3px rgba(156, 192, 105, 0.18);
}

/* Fieldset legends (e.g. "Password change" section) */
.woocommerce-account fieldset {
    border: 1px solid #eee;
    border-radius: 8px;
    padding: 20px;
    margin: 24px 0 16px;
}

.woocommerce-account fieldset legend {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    color: #497D59;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0 8px;
    font-weight: normal;
}

/* Save / submit buttons in My Account forms */
.woocommerce-account .woocommerce-EditAccountForm button[type="submit"],
.woocommerce-account .woocommerce-address-fields button[type="submit"],
.woocommerce-account .woocommerce-MyAccount-content button[type="submit"],
.woocommerce-account .woocommerce-MyAccount-content input[type="submit"],
.woocommerce-account .woocommerce-MyAccount-content .button:not(.woocommerce-button) {
    background: #497D59;
    color: #fff;
    border: none;
    border-radius: 30px;
    padding: 13px 30px;
    font-size: 14px;
    font-family: "Open Sans", sans-serif;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.15s ease;
    margin-top: 12px;
    display: inline-block;
    text-decoration: none;
}

.woocommerce-account .woocommerce-EditAccountForm button[type="submit"]:hover,
.woocommerce-account .woocommerce-address-fields button[type="submit"]:hover,
.woocommerce-account .woocommerce-MyAccount-content button[type="submit"]:hover,
.woocommerce-account .woocommerce-MyAccount-content input[type="submit"]:hover,
.woocommerce-account .woocommerce-MyAccount-content .button:not(.woocommerce-button):hover {
    background: #3d6a4b;
    transform: translateY(-1px);
}


/* ════════════════════════════════════════
 * 7. MANAGE MEALS (Custom endpoint)
 * ════════════════════════════════════════ */

.woocommerce-account .woocommerce-MyAccount-content .shop_table.cv-manage-meals-table {
    border: 1px solid #eee;
}


/* ════════════════════════════════════════
 * 8. RESPONSIVE
 * ════════════════════════════════════════ */

@media (max-width: 768px) {

    /* Pre-login forms */
    .woocommerce-account:not(.logged-in) .woocommerce-form-login,
    .woocommerce-account:not(.logged-in) form.login,
    .woocommerce-account:not(.logged-in) .woocommerce-ResetPassword {
        padding: 24px 18px;
        max-width: 100%;
    }

    .woocommerce-account:not(.logged-in) .entry-title,
    .woocommerce-account:not(.logged-in) .page-title {
        font-size: 20px;
    }

    /* My Account navigation */
    .woocommerce-account .woocommerce-MyAccount-navigation {
        margin-bottom: 24px;
    }

    .woocommerce-account .woocommerce-MyAccount-navigation ul li a {
        padding: 12px 16px;
        font-size: 13px;
    }

    /* Addresses stack vertically */
    .woocommerce-account .woocommerce-Addresses {
        flex-direction: column;
    }

    .woocommerce-account .woocommerce-Addresses .woocommerce-Address {
        min-width: 100%;
    }

    /* Mobile card layout for tables (orders / subscriptions / related-orders).
     * Each row becomes a card; each cell shows its column label inline via
     * data-title pseudo-element. Cleaner than horizontal-scroll on phones. */
    body.woocommerce-account .woocommerce-orders-table,
    body.woocommerce-account .shop_table {
        display: block;
        border: 0;
        background: transparent;
    }
    body.woocommerce-account .woocommerce-orders-table thead,
    body.woocommerce-account .shop_table thead {
        display: none;
    }
    body.woocommerce-account .woocommerce-orders-table tbody,
    body.woocommerce-account .shop_table tbody {
        display: block;
    }
    body.woocommerce-account .woocommerce-orders-table tr,
    body.woocommerce-account .shop_table tr {
        display: block;
        background: #ffffff;
        border: 1px solid #e3e3e3;
        border-radius: 12px;
        padding: 14px 16px;
        margin-bottom: 12px;
        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
    }
    body.woocommerce-account .woocommerce-orders-table td,
    body.woocommerce-account .woocommerce-orders-table th[scope="row"],
    body.woocommerce-account .shop_table td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 6px 0 !important;
        border: 0 !important;
        text-align: right;
        gap: 12px;
    }
    body.woocommerce-account .woocommerce-orders-table td::before,
    body.woocommerce-account .woocommerce-orders-table th[scope="row"]::before,
    body.woocommerce-account .shop_table td::before {
        content: attr(data-title);
        font-weight: 700;
        text-transform: uppercase;
        font-size: 11px;
        color: #6b6b6b;
        letter-spacing: 0.4px;
        flex-shrink: 0;
    }
    /* Action cells stretch full width with buttons spanning */
    body.woocommerce-account .woocommerce-orders-table td.order-actions,
    body.woocommerce-account .woocommerce-orders-table td.subscription-actions,
    body.woocommerce-account .shop_table td.order-actions {
        justify-content: flex-start;
        flex-wrap: wrap;
        padding-top: 10px !important;
        border-top: 1px solid #f0f0f0 !important;
        margin-top: 8px;
    }
    body.woocommerce-account .woocommerce-orders-table td.order-actions::before,
    body.woocommerce-account .woocommerce-orders-table td.subscription-actions::before,
    body.woocommerce-account .shop_table td.order-actions::before {
        display: none;
    }
    body.woocommerce-account .woocommerce-orders-table td.order-actions a.button,
    body.woocommerce-account .woocommerce-orders-table td.subscription-actions a.button {
        flex: 1 1 auto;
        text-align: center;
    }
}


/* ════════════════════════════════════════
 * MY ACCOUNT — DASHBOARD + GLOBAL POLISH (A2/A4)
 * ════════════════════════════════════════ */

/* Hide WC's default "From your account..." paragraph (only the legacy direct-
 * child <p> — our new template wraps everything in .cv-dashboard so its
 * paragraphs aren't direct children). */
.woocommerce-account .woocommerce-MyAccount-content > p:first-child:not(.cv-dashboard__sub):not(.cv-dashboard__logout) {
    display: none;
}

/* Show paragraphs inside other account sections (orders, etc.) */
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-message,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-info,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-error,
.woocommerce-account .woocommerce-MyAccount-content form p,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Address p {
    display: block !important;
}

/* ── Dashboard wrapper ── */
.cv-dashboard {
    font-family: "Open Sans", sans-serif;
    color: #2c2c2c;
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.cv-dashboard__greeting {
    margin: 0 0 4px;
}

.cv-dashboard__hello {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", "Open Sans", sans-serif;
    font-size: 24px;
    color: #497D59;
    margin: 0 0 6px;
    font-weight: 400;
}

.cv-dashboard__hello strong {
    color: #2c2c2c;
    font-weight: 600;
}

.cv-dashboard__sub {
    color: #6b6b6b;
    margin: 0;
    font-size: 14px;
}

/* ── Hero: 2 KPI cards ── */
.cv-dashboard__hero {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.cv-dashboard-kpi {
    background: #ffffff;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    padding: 22px 22px 18px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cv-dashboard-kpi--delivery {
    border-left: 4px solid #9CC069;
}

.cv-dashboard-kpi--sub {
    border-left: 4px solid #497D59;
}

.cv-dashboard-kpi--none.cv-dashboard-kpi--sub,
.cv-dashboard-kpi--cancelled.cv-dashboard-kpi--sub,
.cv-dashboard-kpi--expired.cv-dashboard-kpi--sub {
    border-left-color: #d0d0d0;
}

.cv-dashboard-kpi__header {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.cv-dashboard-kpi__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #DBEAC6;
    color: #497D59;
    flex-shrink: 0;
}

.cv-dashboard-kpi__icon svg {
    width: 16px;
    height: 16px;
}

.cv-dashboard-kpi__label {
    font-size: 12px;
    color: #6b6b6b;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    font-weight: 700;
}

.cv-dashboard-kpi__pill {
    margin-left: auto;
    font-size: 11px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    background: #DBEAC6;
    color: #497D59;
}

.cv-dashboard-kpi__pill--active {
    background: #9CC069;
    color: #ffffff;
}

.cv-dashboard-kpi__pill--on-hold,
.cv-dashboard-kpi__pill--pending,
.cv-dashboard-kpi__pill--pending-cancel {
    background: rgba(246, 197, 49, 0.2);
    color: #8a6a08;
}

.cv-dashboard-kpi__pill--cancelled,
.cv-dashboard-kpi__pill--expired,
.cv-dashboard-kpi__pill--none {
    background: #ececec;
    color: #6b6b6b;
}

.cv-dashboard-kpi__value {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", "Open Sans", sans-serif;
    font-size: 22px;
    color: #2c2c2c;
    margin: 0;
    line-height: 1.2;
    font-weight: 600;
}

.cv-dashboard-kpi__value--empty {
    color: #6b6b6b;
}

.cv-dashboard-kpi__value .woocommerce-Price-amount {
    color: #497D59;
    font-weight: 700;
}

.cv-dashboard-kpi__detail {
    color: #6b6b6b;
    font-size: 14px;
    margin: 0;
    line-height: 1.4;
}

.cv-dashboard-kpi__detail strong {
    color: #2c2c2c;
}

.cv-dashboard-kpi__action {
    margin-top: auto;
    color: #497D59;
    font-weight: 700;
    text-decoration: none;
    font-size: 14px;
    border-bottom: 1px solid transparent;
    align-self: flex-start;
    padding-top: 4px;
    transition: border-color 120ms ease;
}

.cv-dashboard-kpi__action:hover {
    border-bottom-color: #497D59;
    color: #497D59;
}

/* ── Action cards (4) ── */
.cv-dashboard__cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.cv-dashboard-card {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 18px 20px;
    background: #ffffff;
    border: 1px solid #e3e3e3;
    border-left: 4px solid #DBEAC6;
    border-radius: 12px;
    text-decoration: none !important;
    color: inherit;
    transition: border-left-color 120ms ease, box-shadow 120ms ease, background 120ms ease;
    cursor: pointer;
}

.cv-dashboard-card:hover {
    border-left-color: #497D59;
    background: #f5f9f5;
    box-shadow: 0 4px 14px rgba(73, 125, 89, 0.08);
    text-decoration: none !important;
}

.cv-dashboard-card__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    min-width: 44px;
    background: #DBEAC6;
    border-radius: 50%;
    transition: background 120ms ease;
}

.cv-dashboard-card:hover .cv-dashboard-card__icon {
    background: #497D59;
}

.cv-dashboard-card__icon svg {
    width: 20px;
    height: 20px;
    stroke: #497D59;
    transition: stroke 120ms ease;
}

.cv-dashboard-card:hover .cv-dashboard-card__icon svg {
    stroke: #ffffff;
}

.cv-dashboard-card__body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.cv-dashboard-card__title {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    font-size: 15px;
    font-weight: 600;
    color: #2c2c2c;
    line-height: 1.2;
    text-transform: none;
    letter-spacing: 0;
}

.cv-dashboard-card__desc {
    font-family: "Open Sans", sans-serif;
    font-size: 12.5px;
    color: #6b6b6b;
    line-height: 1.5;
}

.cv-dashboard-card__arrow {
    display: flex;
    align-items: center;
}

.cv-dashboard-card__arrow svg {
    width: 16px;
    height: 16px;
    stroke: #c8c8c8;
    transition: stroke 120ms ease, transform 120ms ease;
}

.cv-dashboard-card:hover .cv-dashboard-card__arrow svg {
    stroke: #497D59;
    transform: translateX(2px);
}

.cv-dashboard__logout {
    margin: 4px 0 0;
    text-align: right;
}

.cv-dashboard__logout a {
    color: #999;
    font-size: 13px;
    text-decoration: none;
    border-bottom: 1px solid transparent;
}

.cv-dashboard__logout a:hover {
    color: #c0392b;
    border-bottom-color: #c0392b;
}

/* ── Responsive ── */
@media (max-width: 720px) {
    .cv-dashboard__hero,
    .cv-dashboard__cards {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .cv-dashboard-kpi,
    .cv-dashboard-card {
        padding: 16px 16px;
    }

    .cv-dashboard__hello {
        font-size: 20px;
    }

    .cv-dashboard-kpi__value {
        font-size: 18px;
    }
}

/* ════════════════════════════════════════
 * MY ACCOUNT — GLOBAL ENDPOINT POLISH (A4)
 * ════════════════════════════════════════ */

/* Wrapper layout — wider container, brand spacing */
body.woocommerce-account .woocommerce {
    font-family: "Open Sans", sans-serif;
}

body.woocommerce-account .woocommerce-MyAccount-navigation ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

body.woocommerce-account .woocommerce-MyAccount-navigation ul li {
    margin: 0;
}

body.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: #6b6b6b;
    text-decoration: none;
    transition: background 120ms ease, color 120ms ease;
}

body.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover {
    background: #f5f9f5;
    color: #497D59;
}

body.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a {
    background: #497D59;
    color: #ffffff;
}

/* Section titles inside content panels */
body.woocommerce-account .woocommerce-MyAccount-content h2,
body.woocommerce-account .woocommerce-MyAccount-content h3 {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", "Open Sans", sans-serif;
    color: #497D59;
    font-weight: 600;
}

body.woocommerce-account .woocommerce-MyAccount-content h2 {
    font-size: 22px;
    margin: 0 0 14px;
    padding-bottom: 8px;
    border-bottom: 2px solid #DBEAC6;
}

/* Tables (orders, subs) */
body.woocommerce-account .woocommerce-orders-table,
body.woocommerce-account .my_account_subscriptions,
body.woocommerce-account .shop_table {
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    overflow: hidden;
    width: 100%;
    background: #ffffff;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
}

body.woocommerce-account .woocommerce-orders-table th,
body.woocommerce-account .my_account_subscriptions th,
body.woocommerce-account .shop_table th {
    background: #f5f9f5;
    color: #497D59;
    font-weight: 700;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    text-align: left;
    padding: 14px 16px;
    border-bottom: 1px solid #e3e3e3;
}

body.woocommerce-account .woocommerce-orders-table td,
body.woocommerce-account .my_account_subscriptions td,
body.woocommerce-account .shop_table td {
    padding: 14px 16px;
    border-bottom: 1px solid #f0f0f0;
    color: #2c2c2c;
    font-size: 14px;
    vertical-align: middle;
}

body.woocommerce-account .woocommerce-orders-table tr:last-child td,
body.woocommerce-account .my_account_subscriptions tr:last-child td,
body.woocommerce-account .shop_table tr:last-child td {
    border-bottom: 0;
}

/* Status pills — !important to beat Kava (woo-module.css) + Elementor inline
 * .woocommerce-account .woocommerce .woocommerce-MyAccount-content mark rules
 * that ship `background: transparent` and `color: link-blue`. Same pattern
 * the buttons block below uses for the same reason. */
body.woocommerce-account mark.order-status,
body.woocommerce-account mark.subscription-status {
    display: inline-flex !important;
    align-items: center;
    background: #DBEAC6 !important;
    color: #497D59 !important;
    font-weight: 700 !important;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    font-size: 11px !important;
    padding: 4px 10px !important;
    border-radius: 999px !important;
    line-height: 1.4 !important;
}

body.woocommerce-account mark.order-status > span,
body.woocommerce-account mark.subscription-status > span {
    color: inherit !important;
    background: transparent !important;
}

body.woocommerce-account mark.status-completed,
body.woocommerce-account mark.status-active {
    background: #9CC069 !important;
    color: #ffffff !important;
}

body.woocommerce-account mark.status-processing {
    background: #DBEAC6 !important;
    color: #497D59 !important;
}

body.woocommerce-account mark.status-on-hold,
body.woocommerce-account mark.status-pending,
body.woocommerce-account mark.status-pending-cancel,
body.woocommerce-account mark.status-pending-payment {
    background: rgba(246, 197, 49, 0.25) !important;
    color: #8a6a08 !important;
}

body.woocommerce-account mark.status-cancelled,
body.woocommerce-account mark.status-failed,
body.woocommerce-account mark.status-expired,
body.woocommerce-account mark.status-refunded {
    background: #f5d7d7 !important;
    color: #a02828 !important;
}

/* Buttons inside MyAccount — high specificity to beat Kava + Elementor theme rules */
body.woocommerce-account .woocommerce-MyAccount-content a.button,
body.woocommerce-account .woocommerce-MyAccount-content button.button,
body.woocommerce-account .woocommerce-MyAccount-content input.button,
body.woocommerce-account .woocommerce-MyAccount-content button[type="submit"] {
    background: #497D59 !important;
    color: #ffffff !important;
    border: 0 !important;
    padding: 10px 18px !important;
    border-radius: 999px !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.4px !important;
    text-decoration: none !important;
    transition: background 120ms ease, transform 120ms ease;
    cursor: pointer;
    line-height: 1.2 !important;
    display: inline-block;
}

body.woocommerce-account .woocommerce-MyAccount-content a.button:hover,
body.woocommerce-account .woocommerce-MyAccount-content button.button:hover,
body.woocommerce-account .woocommerce-MyAccount-content input.button:hover,
body.woocommerce-account .woocommerce-MyAccount-content button[type="submit"]:hover {
    background: #3b6b48 !important;
    transform: translateY(-1px);
}

body.woocommerce-account .woocommerce-MyAccount-content a.button.view,
body.woocommerce-account .woocommerce-MyAccount-content a.woocommerce-button.button.view {
    background: transparent !important;
    color: #497D59 !important;
    border: 1px solid #497D59 !important;
    padding: 8px 16px !important;
}

body.woocommerce-account .woocommerce-MyAccount-content a.button.view:hover {
    background: #497D59 !important;
    color: #ffffff !important;
}

/* Address grid in /addresses/ */
body.woocommerce-account .woocommerce-Addresses {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 16px;
}

body.woocommerce-account .woocommerce-Address {
    background: #ffffff;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
}

body.woocommerce-account .woocommerce-Address-title {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 10px;
}

body.woocommerce-account .woocommerce-Address-title h2,
body.woocommerce-account .woocommerce-Address-title h3 {
    margin: 0;
    border-bottom: 0;
    padding: 0;
    font-size: 16px;
}

body.woocommerce-account .woocommerce-Address address {
    background: #f7f8f5;
    border-radius: 8px;
    padding: 12px 14px;
    font-style: normal;
    line-height: 1.55;
    border: 1px solid #e3e3e3;
}

/* Forms (Account Details) */
body.woocommerce-account .woocommerce-EditAccountForm input[type="text"],
body.woocommerce-account .woocommerce-EditAccountForm input[type="email"],
body.woocommerce-account .woocommerce-EditAccountForm input[type="password"],
body.woocommerce-account .woocommerce-address-fields input[type="text"],
body.woocommerce-account .woocommerce-address-fields input[type="email"],
body.woocommerce-account .woocommerce-address-fields input[type="tel"],
body.woocommerce-account .woocommerce-address-fields select,
body.woocommerce-account .woocommerce-address-fields textarea {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #e3e3e3;
    border-radius: 8px;
    font-size: 14px;
    background: #ffffff;
    transition: border-color 120ms ease, box-shadow 120ms ease;
}

body.woocommerce-account .woocommerce-EditAccountForm input:focus,
body.woocommerce-account .woocommerce-address-fields input:focus,
body.woocommerce-account .woocommerce-address-fields select:focus,
body.woocommerce-account .woocommerce-address-fields textarea:focus,
body.woocommerce-account .cv-delivery-instructions__field:focus {
    outline: none;
    border-color: #9CC069;
    box-shadow: 0 0 0 3px rgba(156, 192, 105, 0.18);
}

/* ════════════════════════════════════════
 * MANAGE MEALS — view-only bundle cards (A3)
 * ════════════════════════════════════════ */

.cv-manage-meals {
    display: flex;
    flex-direction: column;
    gap: 24px;
    font-family: "Open Sans", sans-serif;
    color: #2c2c2c;
}

.cv-manage-meals__intro h2 {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    color: #497D59;
    font-size: 24px;
    font-weight: 600;
    margin: 0 0 6px;
    border-bottom: 0;
    padding: 0;
}

.cv-manage-meals__intro p {
    color: #6b6b6b;
    margin: 0;
    font-size: 14px;
    line-height: 1.55;
}

.cv-manage-meals__cutoff-banner {
    background: rgba(246, 197, 49, 0.18);
    border-left: 4px solid #F6C531;
    border-radius: 8px;
    padding: 14px 16px;
    color: #2c2c2c;
    font-size: 14px;
    line-height: 1.55;
}

.cv-manage-meals__cutoff-banner strong {
    color: #8a6a08;
}

.cv-manage-meals__empty {
    color: #6b6b6b;
    font-style: italic;
}

.cv-manage-meals-empty {
    background: #ffffff;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    padding: 24px;
    text-align: center;
    color: #6b6b6b;
}

.cv-manage-meals__sub {
    background: #ffffff;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    padding: 22px 24px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.cv-manage-meals__sub-header {
    display: flex;
    flex-direction: column;
    gap: 8px;
    border-bottom: 2px solid #DBEAC6;
    padding-bottom: 12px;
}

.cv-manage-meals__sub-title {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.cv-manage-meals__sub-title h3 {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    color: #2c2c2c;
    font-size: 18px;
    margin: 0;
    font-weight: 600;
    border-bottom: 0;
    padding: 0;
}

.cv-manage-meals__pill {
    font-size: 11px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    background: #DBEAC6;
    color: #497D59;
}

.cv-manage-meals__pill--active {
    background: #9CC069;
    color: #ffffff;
}

.cv-manage-meals__pill--on-hold,
.cv-manage-meals__pill--pending-cancel {
    background: rgba(246, 197, 49, 0.2);
    color: #8a6a08;
}

.cv-manage-meals__meta {
    display: flex;
    gap: 18px;
    flex-wrap: wrap;
    font-size: 13px;
    color: #6b6b6b;
}

.cv-manage-meals__meta strong {
    color: #2c2c2c;
}

.cv-manage-meals__bundles {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.cv-manage-meals-card {
    background: #f7f8f5;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    padding: 18px 20px;
}

.cv-manage-meals-card--plan {
    border-left: 4px solid #497D59;
}

.cv-manage-meals-card--alc {
    border-left: 4px solid #F6C531;
}

.cv-manage-meals-card__header h4 {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    color: #497D59;
    font-size: 16px;
    margin: 0 0 12px;
    font-weight: 600;
    border-bottom: 0;
    padding: 0;
}

.cv-manage-meals-card__day {
    border-top: 1px dashed #e3e3e3;
    padding-top: 12px;
    margin-top: 12px;
}

.cv-manage-meals-card__day:first-of-type {
    border-top: 0;
    padding-top: 0;
    margin-top: 0;
}

.cv-manage-meals-card__day h5 {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 8px;
    font-size: 13px;
    font-weight: 700;
    color: #497D59;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.cv-manage-meals-card__day-count {
    margin-left: auto;
    background: #DBEAC6;
    color: #497D59;
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
}

.cv-manage-meals-card__items {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.cv-manage-meals-card__items li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: #ffffff;
    border-radius: 8px;
    font-size: 14px;
    border: 1px solid #e3e3e3;
}

.cv-manage-meals-card__items li::before {
    content: "•";
    color: #9CC069;
    font-weight: 700;
}

.cv-manage-meals-card__name {
    flex: 1;
    min-width: 0;
}

.cv-manage-meals-card__qty {
    color: #6b6b6b;
    font-size: 13px;
    font-weight: 600;
}

.cv-manage-meals__sub-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    padding-top: 12px;
    border-top: 1px solid #f0f0f0;
}

.cv-manage-meals__hint {
    font-size: 12px;
    color: #6b6b6b;
    font-style: italic;
}

@media (max-width: 720px) {
    .cv-manage-meals__sub {
        padding: 16px 18px;
    }
    .cv-manage-meals__meta {
        flex-direction: column;
        gap: 4px;
    }
    .cv-manage-meals__sub-footer {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* Delivery instructions field on the shipping address form */
body.woocommerce-account .cv-delivery-instructions {
    margin-top: 24px;
    padding: 18px 20px;
    border: 1px solid #DBEAC6;
    border-radius: 12px;
    background: #f7f8f5;
}

body.woocommerce-account .cv-delivery-instructions legend {
    font-family: "VVDS Praliner Regular", "VVDS Praliner", sans-serif;
    font-size: 16px;
    color: #497D59;
    font-weight: 600;
    padding: 0 8px;
}

body.woocommerce-account .cv-delivery-instructions label {
    display: block;
    font-size: 14px;
    color: #6b6b6b;
    margin-bottom: 6px;
}

body.woocommerce-account .cv-delivery-instructions__field {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #e3e3e3;
    border-radius: 8px;
    font-size: 14px;
    line-height: 1.5;
    background: #ffffff;
    font-family: "Open Sans", sans-serif;
    resize: vertical;
    min-height: 84px;
}

body.woocommerce-account .cv-delivery-instructions small {
    display: block;
    font-size: 12px;
    color: #6b6b6b;
    margin-top: 6px;
}

/* ── C7: Minicart disabled on cart & checkout pages ──
 * The JetBlocks cart drawer is blank on these pages (WC_Widget_Cart
 * considers the content redundant). Hide the drawer entirely and
 * visually disable the header minicart widget so it doesn't look
 * interactive. The total still updates live via the C4/C7 bridge
 * that triggers wc_fragment_refresh from wp.data wc/store/cart. */

.woocommerce-cart .jet-blocks-cart__list,
.woocommerce-cart .jet-blocks-cart__overlay,
.woocommerce-checkout .jet-blocks-cart__list,
.woocommerce-checkout .jet-blocks-cart__overlay {
    display: none !important;
}

.woocommerce-cart .jet-blocks-cart__heading-link,
.woocommerce-checkout .jet-blocks-cart__heading-link {
    pointer-events: none;
    cursor: default;
}

.woocommerce-cart .jet-blocks-cart,
.woocommerce-checkout .jet-blocks-cart {
    filter: grayscale(100%);
    opacity: 0.45;
}

/* ──────────────────────────────────────────
 * C11 M3 — Cart page bundle grouping
 *
 * WC Blocks renders cart items as <tr> inside a real <table>. We inject
 * sibling <tr> rows (header / day-title / warning / subtotal) to visually
 * group bundles without breaking table semantics or React reconciliation.
 * ────────────────────────────────────────── */

/* Bundle header row — spans full table width with title + action buttons. */
.cv-bundle-injected-row {
    background: transparent;
}

.cv-bundle-injected-row > td {
    padding: 0;
    border: 0;
    background: transparent;
}

.cv-bundle-header-row[data-flow="meals-a-la-carte"] > td .cv-bundle-header {
    background: #FCFCF7;
    border-color: #9CC069;
}

.cv-bundle-header-cell {
    padding-top: 18px !important;
}

.cv-bundle-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    margin: 6px 0 0 0;
    background: #ffffff;
    border: 2px solid #497D59;
    border-bottom: none;
    border-radius: 10px 10px 0 0;
}

.cv-bundle-title {
    margin: 0;
    padding: 0;
    font-family: 'VVDS Praliner', 'Open Sans', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: #497D59;
    line-height: 1.25;
}

.cv-bundle-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cv-bundle-edit,
.cv-bundle-delete {
    background: transparent;
    border: none;
    padding: 4px 8px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    border-radius: 4px;
    transition: background-color .15s ease, color .15s ease;
    font-family: 'Open Sans', sans-serif;
}

.cv-bundle-edit {
    color: #497D59;
}

.cv-bundle-edit:hover,
.cv-bundle-edit:focus {
    background: #DBEAC6;
    color: #497D59;
}

.cv-bundle-delete {
    color: #a3362a;
}

.cv-bundle-delete:hover,
.cv-bundle-delete:focus {
    background: #fdecea;
    color: #8a2d22;
}

/* Day header row inside a plan bundle — small section label. */
.cv-bundle-day-row > td {
    padding: 10px 16px 4px 16px;
    background: #ffffff;
    border-left: 2px solid #497D59;
    border-right: 2px solid #497D59;
}

.cv-bundle-day-title {
    margin: 0;
    padding: 0;
    font-family: 'Open Sans', sans-serif;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #497D59;
}

/* Incomplete bundle warning row (⚠ + Completar →). */
.cv-bundle-incomplete-row > td {
    padding: 6px 16px 0 16px;
    background: #ffffff;
    border-left: 2px solid #497D59;
    border-right: 2px solid #497D59;
}

.cv-bundle-incomplete {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 6px 0 0 0;
    padding: 8px 12px;
    background: #fff7d6;
    border: 1px solid #F6C531;
    border-radius: 6px;
    font-size: 13px;
    color: #7a5a00;
}

.cv-bundle-incomplete-icon {
    font-size: 14px;
    line-height: 1;
}

.cv-bundle-incomplete-msg {
    flex: 1 1 auto;
    min-width: 0;
}

.cv-bundle-incomplete-link {
    color: #497D59;
    font-weight: 600;
    text-decoration: underline;
    white-space: nowrap;
}

.cv-bundle-incomplete-link:hover,
.cv-bundle-incomplete-link:focus {
    color: #9CC069;
}

/* Per-bundle subtotal row — closes the visual card at the bottom. */
.cv-bundle-subtotal-row > td {
    padding: 0 16px 10px 16px;
    background: #ffffff;
    border-left: 2px solid #497D59;
    border-right: 2px solid #497D59;
    border-bottom: 2px solid #497D59;
    border-radius: 0 0 10px 10px;
}

.cv-bundle-subtotal {
    margin: 10px 0 0 0;
    padding: 8px 0 0 0;
    border-top: 1px solid #DBEAC6;
    text-align: right;
    font-size: 14px;
    font-weight: 600;
    color: #497D59;
}

/* Product rows tagged with a bundle id — extend the left/right border
 * of the enclosing visual card so all rows between header and subtotal
 * appear visually wrapped. */
.woocommerce-cart .wc-block-cart-items__row[data-cv-bundle-id] {
    border-left: 2px solid #497D59;
    border-right: 2px solid #497D59;
    background: #ffffff;
}

/* Day-slot indicator (M3 rework): row-level border accent instead of an
 * injected day-header row. The rework stopped reordering rows inside a
 * bundle (which caused the observer↔React loop), so Sunday / Tuesday are
 * distinguished visually on each product row via a coloured left border
 * strip placed INSIDE the card. */
.woocommerce-cart .wc-block-cart-items__row[data-cv-day-slot="sunday"] > td:first-child {
    box-shadow: inset 4px 0 0 0 #F6C531;
}

.woocommerce-cart .wc-block-cart-items__row[data-cv-day-slot="tuesday"] > td:first-child {
    box-shadow: inset 4px 0 0 0 #9CC069;
}

.woocommerce-cart .wc-block-cart-items__row[data-cv-flow="meals-a-la-carte"] {
    border-left-color: #9CC069;
    border-right-color: #9CC069;
    background: #FCFCF7;
}

/* Per-row cell padding tweak so the border doesn't look tight. */
.woocommerce-cart .wc-block-cart-items__row[data-cv-bundle-id] > td:first-child {
    padding-left: 14px;
}

.woocommerce-cart .wc-block-cart-items__row[data-cv-bundle-id] > td:last-child {
    padding-right: 14px;
}

/* À la carte card variant — softer green. */
.cv-bundle-header-row[data-flow="meals-a-la-carte"] .cv-bundle-header {
    border-color: #9CC069;
    background: #FCFCF7;
}

.cv-bundle-header-row[data-flow="meals-a-la-carte"] + tr[data-cv-flow="meals-a-la-carte"] {
    border-top: none;
}

.cv-bundle-header-row[data-flow="meals-a-la-carte"] ~ .cv-bundle-subtotal-row > td {
    border-left-color: #9CC069;
    border-right-color: #9CC069;
    border-bottom-color: #9CC069;
    background: #FCFCF7;
}

/* Spacing between bundle cards — empty row of visual breathing room. */
.cv-bundle-header-row + .cv-bundle-day-row,
.cv-bundle-header-row + .wc-block-cart-items__row[data-cv-bundle-id] {
    /* first row of a card — no extra top border */
    border-top: none !important;
}

/* Separation between consecutive bundle cards. */
.cv-bundle-subtotal-row + .cv-bundle-header-row > td > .cv-bundle-header {
    margin-top: 22px;
}

/* "+ Add another plan" dropdown — injected below the items block. */
.cv-add-plan-dropdown {
    position: relative;
    margin: 16px 0 24px 0;
    display: inline-block;
}

.cv-add-plan-trigger {
    background: #497D59;
    color: #ffffff;
    border: none;
    padding: 10px 18px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    border-radius: 6px;
    font-family: 'Open Sans', sans-serif;
    transition: background-color .15s ease;
}

.cv-add-plan-trigger:hover,
.cv-add-plan-trigger:focus {
    background: #9CC069;
}

.cv-add-plan-caret {
    display: inline-block;
    margin-left: 6px;
    font-size: 10px;
    transition: transform .15s ease;
}

.cv-add-plan-trigger[aria-expanded="true"] .cv-add-plan-caret {
    transform: rotate(180deg);
}

.cv-add-plan-menu {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    list-style: none;
    margin: 0;
    padding: 6px 0;
    background: #ffffff;
    border: 1px solid #DBEAC6;
    border-radius: 6px;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .08);
    min-width: 200px;
    z-index: 20;
}

.cv-add-plan-menu[hidden] {
    display: none;
}

.cv-add-plan-menu li {
    margin: 0;
    padding: 0;
}

.cv-add-plan-menu a {
    display: block;
    padding: 8px 16px;
    color: #497D59;
    font-size: 14px;
    text-decoration: none;
    transition: background-color .1s ease;
}

.cv-add-plan-menu a:hover,
.cv-add-plan-menu a:focus {
    background: #DBEAC6;
    color: #497D59;
}

/* Mobile adjustments — at 480px the actions stack under the title. */
@media (max-width: 480px) {
    .cv-bundle-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
        padding: 10px 12px;
    }

    .cv-bundle-actions {
        width: 100%;
        justify-content: flex-end;
    }

    .cv-bundle-title {
        font-size: 16px;
    }

    .cv-bundle-day-row > td,
    .cv-bundle-incomplete-row > td,
    .cv-bundle-subtotal-row > td {
        padding-left: 12px;
        padding-right: 12px;
    }

    .woocommerce-cart .wc-block-cart-items__row[data-cv-bundle-id] > td:first-child {
        padding-left: 10px;
    }

    .woocommerce-cart .wc-block-cart-items__row[data-cv-bundle-id] > td:last-child {
        padding-right: 10px;
    }

    .cv-add-plan-dropdown {
        width: 100%;
    }

    .cv-add-plan-trigger {
        width: 100%;
    }

    .cv-add-plan-menu {
        width: 100%;
    }
}

/* C11 M4 — Proceed-to-checkout gating. Visual match for the disabled state of
   WC Blocks' primary button. Pointer-events handled inline by the JS click
   guard so the button still receives focus for accessibility tooltips. */
.cv-checkout-disabled {
    opacity: 0.5;
    cursor: not-allowed !important;
    filter: grayscale(0.4);
}

.cv-checkout-disabled:hover,
.cv-checkout-disabled:focus {
    opacity: 0.5;
    filter: grayscale(0.4);
}
/* ───── F37: hide plan-completion actions while bundle is incomplete ─────
 * Reason: "Go to cart" + "+ Add another Plan" buttons at the foot of the
 * shop flow page used to render whether or not the active bundle was
 * complete. While the user was mid-build they were noise — clicking
 * "+ Add another Plan" before finishing creates an orphan bundle, and
 * "Go to cart" duplicates the header cart icon. We emit the div always
 * (shop-flow.js toggles the data attr after add-to-cart) but only show
 * it once the bundle is actually complete.
 */
.cv-plan-actions[data-bundle-complete="false"] {
    display: none;
}
.cv-plan-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 16px;
    padding: 18px 22px;
    margin: 0 auto 16px;
    max-width: 980px;
    background: #f1f9ed;
    border: 1px solid #c6dfb1;
    border-left: 4px solid #497D59;
    border-radius: 12px;
}
.cv-plan-actions__note {
    margin: 0;
    flex: 1 1 100%;
    font-size: 14px;
    color: #2c4a36;
    font-weight: 600;
}
.cv-plan-actions-cart {
    color: #497D59;
    font-weight: 600;
    text-decoration: none;
    padding: 8px 14px;
}
.cv-plan-actions-cart:hover {
    text-decoration: underline;
}

/* ───── Active bundle banner ("Building Plan 5 #2 — Sun 0/2 / Tue 0/3") ─────
 * Renders above the wizard step indicator. Subtle but visible: light-green
 * pill-style banner with a left accent stripe in brand-dark green, and small
 * day-progress chips that turn solid when their day is complete.
 */
.cv-active-bundle-banner,
.cv-editing-bundle-header {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    margin: 0 auto 16px;
    padding: 10px 18px 10px 16px;
    background: #f1f9ed;
    border: 1px solid #c6dfb1;
    border-left: 4px solid #497D59;
    border-radius: 10px;
    color: #2c4a36;
    font-family: 'Open Sans', sans-serif;
    font-size: 14px;
    line-height: 1.3;
    max-width: fit-content;
    /* center inside its parent — the parent for shop flow is centered already */
    justify-content: center;
}
.cv-active-bundle-banner::before,
.cv-editing-bundle-header::before {
    content: '⏵';
    color: #497D59;
    font-weight: 700;
    margin-right: 2px;
}
.cv-editing-bundle-header::before {
    content: '✎';
}
.cv-active-bundle-label,
.cv-editing-bundle-label {
    font-weight: 700;
    color: #2c4a36;
    letter-spacing: 0.2px;
}
.cv-active-bundle-progress {
    display: inline-flex;
    gap: 6px;
}
.cv-day-chip {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    background: #ffffff;
    color: #6b6b6b;
    border: 1px solid #d8e5d0;
}
.cv-day-chip[data-full="true"] {
    background: #9CC069;
    color: #ffffff;
    border-color: #9CC069;
}

/* Center the banner relative to its parent column when it's the only child */
.cv-shop-flow > .cv-active-bundle-banner,
.cv-shop-flow > .cv-editing-bundle-header {
    display: flex;
    margin-left: auto;
    margin-right: auto;
}

@media (max-width: 600px) {
    .cv-active-bundle-banner,
    .cv-editing-bundle-header {
        font-size: 13px;
        padding: 8px 14px;
    }
}

/* ───── F39: Edit-bundle "substitute" mode ─────
 * The wizard renders in edit mode when the user clicks "Edit" on a bundle in
 * /cart/. State surface:
 *  • Header banner with day chips + "Save changes" CTA + helper instruction
 *  • Each meal already in the bundle: green border + "In your plan" badge +
 *    ✕ remove button overlay
 *  • Cards whose day slot is full: dimmed Add button + tooltip
 * Markup is injected by shop-flow.js::refreshEditModeCardStates().
 */

/* Editing header is a full-width action bar in edit mode (overrides the
 * pill-style fit-content layout used for the active-bundle banner). */
.cv-shop-flow > .cv-editing-bundle-header {
    display: block;
    max-width: 980px;
    margin: 0 auto 16px;
    padding: 14px 22px;
}
.cv-editing-bundle-header__top {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
    justify-content: space-between;
}
.cv-editing-bundle-header__top .cv-active-bundle-progress {
    margin-left: auto;
}
.cv-editing-bundle-header .cv-edit-done {
    background: #497D59;
    color: #ffffff;
    border: none;
    padding: 8px 18px;
    border-radius: 999px;
    font-weight: 600;
    cursor: pointer;
    font-size: 13px;
    transition: background 0.15s ease;
}
.cv-editing-bundle-header .cv-edit-done:hover {
    background: #2c4a36;
}
.cv-editing-bundle-header .cv-edit-done[disabled] {
    opacity: 0.6;
    cursor: wait;
}
.cv-editing-bundle-help {
    margin: 10px 0 0;
    font-size: 13px;
    color: #4a4a4a;
    font-style: italic;
}

/* Edit-mode card decorations.
 * .cv-meal-selected → already in the bundle.
 * .cv-day-full → its day slot is at limit; add button disabled.
 * Both sit on top of `.jet-listing-grid__item`. */
.cv-edit-mode .jet-listing-grid__item.cv-meal-selected {
    position: relative;
    outline: 2px solid #497D59;
    outline-offset: -2px;
    border-radius: 12px;
    background: linear-gradient(180deg, rgba(156, 192, 105, 0.06), rgba(156, 192, 105, 0));
}
.cv-edit-mode .jet-listing-grid__item.cv-meal-selected button.single_add_to_cart_button {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

.cv-edit-mode .jet-listing-grid__item.cv-day-full {
    opacity: 0.7;
}
.cv-edit-mode .jet-listing-grid__item.cv-day-full button.single_add_to_cart_button {
    background: #cccccc !important;
    cursor: not-allowed;
    pointer-events: none;
}

.cv-meal-remove-x {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 4;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: none;
    background: #d9534f;
    color: #ffffff;
    font-size: 20px;
    line-height: 1;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s ease, transform 0.1s ease;
}
.cv-meal-remove-x:hover {
    background: #b53a36;
    transform: scale(1.05);
}
.cv-meal-remove-x[disabled] {
    opacity: 0.6;
    cursor: wait;
}

.cv-meal-selected-badge {
    position: absolute;
    top: 8px;
    left: 8px;
    z-index: 4;
    background: #497D59;
    color: #ffffff;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.3px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

@media (max-width: 600px) {
    .cv-editing-bundle-header__top {
        flex-direction: column;
        align-items: stretch;
    }
    .cv-editing-bundle-header__top .cv-active-bundle-progress {
        margin-left: 0;
    }
    .cv-meal-remove-x {
        width: 28px;
        height: 28px;
        font-size: 17px;
    }
    .cv-meal-selected-badge {
        font-size: 10px;
        padding: 3px 8px;
    }
}


/* ════════════════════════════════════════
 * F38 — Cart notice (server reject feedback)
 * ════════════════════════════════════════ */

/* Inline notice rendered by cart-page.js when the cv_cart_update_qty AJAX
 * returns a rejection (bundle slot cap exceeded, etc.). Sits above the cart
 * grid so it's read alongside the cart contents that just got rolled back. */
.cv-cart-notice {
    margin: 0 0 16px;
    padding: 12px 16px;
    border-radius: 10px;
    font-size: 14px;
    line-height: 1.45;
    border-left: 4px solid #c5826b;
    background: #fdf3ef;
    color: #a02828;
    opacity: 0;
    max-height: 0;
    overflow: hidden;
    transition: opacity 220ms ease, max-height 220ms ease, margin 220ms ease, padding 220ms ease;
    padding-top: 0;
    padding-bottom: 0;
}

.cv-cart-notice--visible {
    opacity: 1;
    max-height: 200px;
    padding-top: 12px;
    padding-bottom: 12px;
}

.cv-cart-notice--success {
    border-left-color: #9CC069;
    background: #f0f7e6;
    color: #497D59;
}

.cv-cart-notice--warning {
    border-left-color: #F6C531;
    background: #fdf8e6;
    color: #8a6a08;
}


/* ════════════════════════════════════════
 * B2 — Substitute mode (Manage Meals)
 * ════════════════════════════════════════ */

/* Swap button rendered next to each meal in the bundle card */
.cv-manage-meals-card__item {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* `body.woocommerce-account .woocommerce-MyAccount-content button` ships
 * with !important from earlier button rules; we match the chain length
 * and add !important to win for these specific buttons. */
body.woocommerce-account .woocommerce-MyAccount-content button.cv-manage-meals-card__swap {
    margin-left: auto !important;
    background: transparent !important;
    border: 1px solid #9CC069 !important;
    color: #497D59 !important;
    border-radius: 999px !important;
    padding: 4px 12px !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.4px !important;
    line-height: 1.3 !important;
    cursor: pointer;
    transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
}

body.woocommerce-account .woocommerce-MyAccount-content button.cv-manage-meals-card__swap:hover {
    background: #9CC069 !important;
    color: #ffffff !important;
    border-color: #9CC069 !important;
    transform: none !important;
}

body.woocommerce-account .woocommerce-MyAccount-content button.cv-swap-modal__close {
    background: transparent !important;
    border: 0 !important;
    font-size: 28px !important;
    line-height: 1 !important;
    color: #6b6b6b !important;
    cursor: pointer;
    padding: 0 8px !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    border-radius: 0 !important;
    font-weight: 400 !important;
}

body.woocommerce-account .woocommerce-MyAccount-content button.cv-swap-modal__close:hover {
    color: #2c2c2c !important;
    background: transparent !important;
    transform: none !important;
}

body.woocommerce-account .woocommerce-MyAccount-content button.cv-swap-card {
    background: #ffffff !important;
    border: 1px solid #e3e3e3 !important;
    color: #2c2c2c !important;
    border-radius: 12px !important;
    padding: 10px !important;
    text-align: left !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-weight: 600 !important;
    font-size: 13px !important;
    line-height: 1.3 !important;
}

body.woocommerce-account .woocommerce-MyAccount-content button.cv-swap-card:hover {
    background: #ffffff !important;
    border-color: #9CC069 !important;
    color: #2c2c2c !important;
    box-shadow: 0 4px 14px rgba(73, 125, 89, 0.12) !important;
    transform: translateY(-1px) !important;
}

/* ───── Swap modal ───── */

body.cv-swap-modal-open {
    overflow: hidden;
}

.cv-swap-modal {
    position: fixed;
    inset: 0;
    z-index: 99998;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.cv-swap-modal[hidden] {
    display: none !important;
}

.cv-swap-modal__overlay {
    position: absolute;
    inset: 0;
    background: rgba(20, 30, 22, 0.55);
    backdrop-filter: blur(2px);
    cursor: pointer;
}

.cv-swap-modal__panel {
    position: relative;
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    width: 100%;
    max-width: 720px;
    max-height: calc(100vh - 48px);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.cv-swap-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 24px;
    border-bottom: 1px solid #e3e3e3;
}

.cv-swap-modal__header h2 {
    margin: 0;
    font-family: 'VVDS Praliner', 'Open Sans', sans-serif;
    font-size: 20px;
    color: #497D59;
}

.cv-swap-modal__close {
    background: transparent;
    border: 0;
    font-size: 28px;
    line-height: 1;
    color: #6b6b6b;
    cursor: pointer;
    padding: 0 4px;
}

.cv-swap-modal__close:hover { color: #2c2c2c; }

.cv-swap-modal__sub {
    margin: 0;
    padding: 14px 24px;
    background: #f7f8f5;
    color: #6b6b6b;
    font-size: 14px;
    border-bottom: 1px solid #e3e3e3;
}

.cv-swap-modal__sub strong { color: #2c2c2c; }

.cv-swap-modal__body {
    padding: 18px 24px 24px;
    overflow-y: auto;
}

.cv-swap-modal__loading,
.cv-swap-modal__error,
.cv-swap-modal__empty {
    margin: 0;
    text-align: center;
    color: #6b6b6b;
    padding: 24px 12px;
}

.cv-swap-modal__error { color: #a02828; }

.cv-swap-modal__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
}

.cv-swap-card {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    background: #ffffff;
    border: 1px solid #e3e3e3;
    border-radius: 12px;
    padding: 10px;
    text-align: left;
    cursor: pointer;
    transition: border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
    font-family: inherit;
}

.cv-swap-card:hover {
    border-color: #9CC069;
    box-shadow: 0 4px 14px rgba(73, 125, 89, 0.12);
    transform: translateY(-1px);
}

.cv-swap-card img {
    width: 100%;
    height: 110px;
    object-fit: cover;
    border-radius: 8px;
    background: #f0f0f0;
}

.cv-swap-card__thumb-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 110px;
    background: #f0f0f0;
    border-radius: 8px;
    font-size: 32px;
}

.cv-swap-card__name {
    color: #2c2c2c;
    font-weight: 600;
    font-size: 13px;
    line-height: 1.3;
}

.cv-swap-card--busy {
    opacity: 0.5;
    pointer-events: none;
}

@media (max-width: 540px) {
    .cv-swap-modal {
        padding: 0;
    }
    .cv-swap-modal__panel {
        max-height: 100vh;
        max-width: 100%;
        border-radius: 0;
    }
    .cv-swap-modal__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ───── Manage-meals toast ───── */

.cv-mm-toast {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 99999;
    padding: 14px 18px;
    background: #ffffff;
    border-left: 4px solid #9CC069;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.16);
    font-size: 14px;
    color: #2c2c2c;
    max-width: 360px;
    opacity: 0;
    transform: translateY(-12px);
    transition: opacity 220ms ease, transform 220ms ease;
    pointer-events: none;
}

.cv-mm-toast--visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.cv-mm-toast--error {
    border-left-color: #c5826b;
    color: #a02828;
    background: #fdf3ef;
}

@media (max-width: 540px) {
    .cv-mm-toast {
        top: 12px;
        left: 12px;
        right: 12px;
        max-width: none;
    }
}

/* ──────────────────────────────────────────────
 * Premium badge (module: premium-badge)
 * Injected by premium-badge.js into premium product cards.
 * Brand: dark-green pill (#497D59) + gold star & text (#F6C531).
 * ────────────────────────────────────────────── */
.elementor-widget-image.cv-has-premium-badge {
    position: relative;
}

.cv-premium-badge {
    position: absolute;
    left: 12px;
    bottom: 12px;
    z-index: 5;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 11px;
    background: #497D59;
    border-radius: 999px;
    box-shadow: 0 2px 7px rgba(0, 0, 0, 0.28);
    font-family: 'Open Sans', sans-serif;
    font-weight: 700;
    font-size: 12px;
    line-height: 1;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #F6C531;
    pointer-events: none;
    white-space: nowrap;
}

.cv-premium-badge__star {
    flex: 0 0 auto;
    fill: #F6C531;
    display: block;
}

.cv-premium-badge__text {
    color: #F6C531;
}

@media (max-width: 767px) {
    .cv-premium-badge {
        left: 8px;
        bottom: 8px;
        padding: 4px 9px;
        font-size: 11px;
        gap: 4px;
    }
    .cv-premium-badge__star {
        width: 12px;
        height: 12px;
    }
}

/* ── C17 — non-blocking add-to-cart toast (mid-stage plan adds) ── */
.cv-add-toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%) translateY(12px);
    background: #497D59;
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    padding: 12px 22px;
    border-radius: 999px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.22);
    z-index: 100000;
    opacity: 0;
    transition: opacity 0.25s ease, transform 0.25s ease;
    pointer-events: none;
    max-width: calc(100% - 32px);
    text-align: center;
}

.cv-add-toast--visible {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* ── C18 — bottom copy of the editing header (floating save bar) ──
   position:fixed, not sticky: Elementor wrappers and .site clip sticky
   with overflow:hidden. Fixed keeps the save action reachable on long
   Tuesday lists; the flow container gets bottom padding so the bar
   never covers the last product row. */
.cv-shop-flow > .cv-editing-bundle-header--bottom {
    position: fixed;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
    width: min(1100px, calc(100% - 24px));
    z-index: 9990;
    margin: 0;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.25);
}

.cv-shop-flow[data-cv-edit-mode] {
    padding-bottom: 96px;
}

@media (max-width: 600px) {
    .cv-shop-flow > .cv-editing-bundle-header--bottom {
        bottom: 8px;
        padding: 10px 14px;
    }

    .cv-shop-flow > .cv-editing-bundle-header--bottom .cv-edit-done {
        width: 100%;
    }

    .cv-shop-flow[data-cv-edit-mode] {
        padding-bottom: 170px;
    }
}

/* ── P7 — Subscribe form gained a Name field. The newsletter widget pins its
   submit button with a bottom inset from the email-only single-row design,
   which now lands the button on the Name row. Re-pin to the email row. ── */
.form-newsletter .jet-form-builder__submit {
    top: 67px !important;
    bottom: auto !important;
}
