/**
 * 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;
}

/* C34 — over capacity. Previously a slot holding more meals than the plan
   allows rendered with the green "complete" styling, which read as success.
   It is a fault and must look like one. */
.cv-cart-popup-progress-item.over {
    background: #fdecea;
    color: #a02828;
    font-weight: 600;
}

/* 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;
}

/* C36 — long meal names ("Arroz con Pollo, Garlic Green Beans") ran past the
   card edge. The card is a <button> built in JS, so it inherits the theme /
   Elementor button reset (white-space: nowrap) and nothing here put it back.
   Declare wrapping explicitly instead of relying on inheritance, and let the
   flex child shrink below its intrinsic content width inside the 160px grid
   track (min-width defaults to auto on flex items, which blocks wrapping). */
.cv-swap-card__name {
    color: #2c2c2c;
    font-weight: 600;
    font-size: 13px;
    line-height: 1.3;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    min-width: 0;
}

.cv-swap-card {
    min-width: 0;
}

.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;
}

/* ── Soul Pantry grouped sections. The flow mixes soups, snacks and breakfasts
   into one column; the client asked to read them as separate blocks. The
   heading carries the count so a short section is never mistaken for a bug. ── */
.cv-product-groups {
    display: flex;
    flex-direction: column;
    gap: 36px;
}

.cv-product-group__title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 16px;
    padding-bottom: 10px;
    border-bottom: 2px solid #DBEAC6;
    color: #497D59;
    font-size: 20px;
    line-height: 1.2;
}

.cv-product-group__count {
    display: inline-block;
    min-width: 22px;
    padding: 2px 8px;
    border-radius: 999px;
    background: #DBEAC6;
    color: #497D59;
    font-size: 12px;
    font-weight: 600;
    text-align: center;
}

/* Inside a section the count already says "nothing here", so the centred
   shop-wide empty state would read as an error. */
.cv-product-group .cv-shop-empty {
    padding: 16px 0;
    text-align: left;
}

@media (max-width: 767px) {
    .cv-product-groups {
        gap: 28px;
    }

    .cv-product-group__title {
        font-size: 17px;
    }
}
