/* =============================================================
   Bloom v2 — shared styles for the v2 redesign
   Header/footer chrome live at top-level (.bv-h2 / .bv-f2);
   the rest is scoped under .bv-page or .bv-home.
   ============================================================= */

:root {
    --bv-h2-width: 1920px;
    --bv-h2-inner: 1520px;
    --bv-h2-pad: clamp(16px, 4vw, 80px);
}

/* ---- HEADER ---- */

body.bv-body {
    background: #fff;
    margin: 0;
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    color: #1F1F1F;
}
body.bv-body * { box-sizing: border-box; }
/* a/img resets at EXACTLY (0,1,0): high enough to beat the generic `a` from
   Kirki's inline styles (0,0,1, printed after this sheet), low enough that any
   later single-class component rule wins. The old element-qualified forms
   ((0,1,2)) kept out-specifying components — ink anchor buttons, the About
   collage over the hero, the 404 backdrop at natural height (#851/#852). */
.bv-body :where(a) { text-decoration: none; color: inherit; }
.bv-body :where(img) { max-width: 100%; height: auto; display: block; }
body.bv-body button { font-family: inherit; cursor: pointer; border: 0; background: none; }

/* The reset above strips the theme's button background; WooCommerce buttons
   (login / register / account / checkout forms) then render as white text on
   white and disappear. Restore a visible v2 pink button wherever a more
   specific page restyle (cart, single product) hasn't already styled it. */
body.bv-body .woocommerce button.button,
body.bv-body .woocommerce input[type="submit"].button,
body.bv-body .woocommerce a.button,
body.bv-body .woocommerce-form-login__submit,
body.bv-body .woocommerce-form-register__submit,
body.bv-body .woocommerce-Button.button {
    background: #E83E74;
    color: #FFFBF5;
    border: 0;
    border-radius: 6px;
    padding: 12px 24px;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
body.bv-body .woocommerce button.button:hover,
body.bv-body .woocommerce input[type="submit"].button:hover,
body.bv-body .woocommerce a.button:hover,
body.bv-body .woocommerce-Button.button:hover { background: #D9529B; color: #FFFBF5; }

.bv-h2 {
    background: #fff;
    width: 100%;
    border-bottom: 1px solid #F0F0F0;
    position: relative;
    z-index: 999;
}

.bv-h2-top {
    background: #FBE6EF;
    color: #2D2A26;
    font-size: 12px;
    line-height: 1.2;
}

.bv-h2-top__inner {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 6px var(--bv-h2-pad);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    min-height: 28px;
}

.bv-h2-top__msgs { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.bv-h2-top__msg { display: inline-flex; align-items: center; gap: 8px; font-size: 16px; }
.bv-h2-top__car { display: inline-flex; align-items: center; color: #000; flex-shrink: 0; }
.bv-h2-top__car svg { display: block; }

.bv-h2-top__pay {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 16px;
    color: #6B6B6B;
}
.bv-h2-top__pay img { height: 17px; width: auto; }

.bv-h2-main {
    border-bottom: 1px solid #F0F0F0;
}
.bv-h2-main__inner {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 16px var(--bv-h2-pad);
    display: flex;
    align-items: center;
    gap: 24px;
}

.bv-h2-logo {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}
.bv-h2-logo__icon {
    width: 36px;
    height: 40px;
    display: inline-block;
}
.bv-h2-logo__icon svg { width: 100%; height: 100%; }
.bv-h2-logo__text { display: flex; flex-direction: column; line-height: 1; }
.bv-h2-logo__name {
    font-family: "Inter", sans-serif;
    font-weight: 800;
    font-size: 22px;
    color: #C21E5A;
    letter-spacing: .02em;
}
.bv-h2-logo__tag {
    font-size: 9px;
    font-weight: 600;
    color: #6B6B6B;
    letter-spacing: .15em;
    margin-top: 2px;
}

.bv-h2-pin {
    font-size: 15px;
    color: #1F1F1F;
    flex-shrink: 0;
}
.bv-h2-pin strong { font-weight: 600; }

/* Delivery-location bar (Figma 106-3151) — full-width strip under the nav */
.bv-locbar { background: #FFFBF5; border-bottom: 1px solid #EAEAEA; }
.bv-locbar__inner { max-width: var(--bv-h2-inner); margin: 0 auto; padding: 12px var(--bv-h2-pad); display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.bv-locbar__text { display: inline-flex; align-items: center; gap: 6px; font-family: var(--bv-sans, "Montserrat", sans-serif); font-size: 16px; line-height: 20px; color: #2A2424; }
.bv-locbar__pin { flex: none; }
.bv-locbar__city { color: #6B6973; }
.bv-locbar__city strong { font-weight: 600; }
.bv-locbar__change { background: none; border: 0; padding: 0; cursor: pointer; font-family: inherit; font-weight: 600; font-size: 16px; color: #C21E5A; text-decoration: underline; flex: none; }
.bv-locbar__change:hover { color: #D8579C; }
@media (max-width: 600px) {
    .bv-locbar__inner { padding: 10px var(--bv-h2-pad); }
    .bv-locbar__text { font-size: 14px; }
}

.bv-h2-actions {
    display: flex;
    align-items: center;
    gap: 24px;
    margin-left: auto;
    flex-shrink: 0;
}

.bv-h2-action {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #1F1F1F;
    font-size: 16px;
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
}
.bv-h2-action svg { width: 14px; height: 14px; color: #4A4A4A; }
/* The care glyph is a headset AROUND a speech bubble: at 14px its three dots close up into
   a smudge. Two more pixels is what keeps them apart, and it still sits on the same optical
   line as the search and phone icons, which are simple outlines and read smaller. */
.bv-h2-action--care svg { width: 16px; height: 16px; }
.bv-h2-action:hover { color: #C21E5A; }

.bv-h2-cart {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 44px;
    padding: 11px 16px;
    background: #FFECF6;
    border: 1px solid #E83E74;
    color: #C21E5A;
    border-radius: 6px;
    font-weight: 600;
    font-size: 16px;
}
#bv-h2-cart-trigger {
    color: inherit;
    background: unset;
    border: unset;
}
.bv-h2-cart svg { width: 18px; height: 18px; }
.bv-h2-cart__count {
    background: #E83E74;
    color: #fff;
    border-radius: 50%;
    width: 22px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
}
/* Hide the count bubble entirely when the cart is empty (no "0"). */
.bv-h2-cart__count:empty { display: none; }
/* Beat `body.bv-body a { color: inherit }` so the pill text/icons stay pink */
.bv-h2 .bv-h2-cart { color: #C21E5A; }

.bv-h2-nav {
    background: #fff;
    position: relative;
}
.bv-h2-nav__inner {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 16px var(--bv-h2-pad);
    display: flex;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
}
.bv-h2-nav__item { position: relative; }
.bv-h2-nav__link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: "DM Sans", "Inter", sans-serif;
    font-weight: 600;
    font-size: 14px;
    color: #2A2424;
    padding: 8px 0;
    border-bottom: 2px solid transparent;
    cursor: pointer;
}
.bv-h2-nav__link:hover { color: #C21E5A; }
.bv-h2-nav__item--has-menu > .bv-h2-nav__link:hover { border-bottom-color: #E83E74; }
.bv-h2-chev { width: 14px; height: 14px; color: #4A4A4A; transition: transform .2s ease; }
.bv-h2-nav__item--has-menu:hover .bv-h2-chev,
.bv-h2-nav__item--open .bv-h2-chev { transform: rotate(180deg); color: #C21E5A; }

/* ---- Mega menu panel (full screen width, anchored to nav row) ---- */
.bv-h2-nav__item--has-menu { position: static; }

.bv-h2-mega {
    --mega-accent: #E69500;
    --mega-accent-bg: #FFF1D9;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    border-top: 1px solid #EFEFEF;
    box-shadow: 0 16px 32px rgba(20, 24, 40, .08);
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px);
    transition: opacity .15s ease, transform .15s ease;
    z-index: 999;
    visibility: hidden;
}

.bv-h2-nav__item--open .bv-h2-mega,
.bv-h2-nav__item--has-menu:focus-within .bv-h2-mega {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
    visibility: visible;
}

/* The panel is absolutely positioned under the nav with no height cap, so a long
   column runs straight off the bottom of the screen: Everyday Occasions is 15-16
   links (~720px), which at a 927px-tall window put the panel 130px past the fold.
   Its last entries could not be clicked AND could not be scrolled to — moving the
   pointer off the panel closes it after 180ms. Cap it to the space below the header
   and let it scroll internally instead.
   270px is the header stack sitting above the panel (announcement bar + logo row +
   nav, plus the 32px admin bar when logged in). It is a fixed height, not a share of
   the viewport, so this has to be a subtraction — a percentage/vh fraction still
   overflows on short windows. Desktop only: below 769px the nav is the slide-in
   drawer and the megas are accordions that scroll with it. */
@media (min-width: 769px) {
    .bv-h2-mega {
        max-height: calc(100vh - 270px);
        max-height: calc(100dvh - 270px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}

.bv-h2-mega__inner {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 40px var(--bv-h2-pad);
    display: grid;
    gap: 40px;
    align-items: start;
}
/* Flexible 1–3 link columns, with an optional promo card on the right. */
.bv-h2-mega__inner--cols-1 { grid-template-columns: minmax(0, 1fr); }
.bv-h2-mega__inner--cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.bv-h2-mega__inner--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.bv-h2-mega__inner--cols-1.has-promo { grid-template-columns: minmax(0, 1fr) 1.5fr; }
.bv-h2-mega__inner--cols-2.has-promo { grid-template-columns: repeat(2, minmax(0, 1fr)) 1.6fr; }
.bv-h2-mega__inner--cols-3.has-promo { grid-template-columns: repeat(3, minmax(0, 1fr)) 1.5fr; }

.bv-h2-mega__col { min-width: 0; border-right: 1px solid lightgray; padding-right: 30px; }
.bv-h2-mega__col:last-child { border-right: 0; padding-right: 0; }

.bv-h2-mega__pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #FCE7F0;
    color: #C21E5A;
    padding: 7px 14px;
    border-radius: 999px;
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .04em;
    text-transform: uppercase;
    margin-bottom: 16px;
}
.bv-h2-mega__pill-icon { display: inline-flex; }
.bv-h2-mega__pill-icon svg { width: 16px; height: 16px; }

.bv-h2-mega__heading {
    font-family: var(--bv-serif, "Gabriela", Georgia, serif);
    font-weight: 400;
    font-size: clamp(22px, 1.6vw, 26px);
    line-height: 1.15;
    color: #2A2424;
    margin: 0 0 6px;
}

.bv-h2-mega__list { list-style: none; margin: 0; padding: 0; }
.bv-h2-mega__list li { border-bottom: 1px solid #F0E6EA; }
.bv-h2-mega__list li:last-child { border-bottom: 0; }
.bv-h2-mega__list a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 2px;
    color: #2A2424;
    font-size: 15px;
    transition: color .15s ease;
}
.bv-h2-mega__list a:hover { color: #C21E5A; }
.bv-h2-mega__arrow { width: 16px; height: 16px; color: #C21E5A; flex-shrink: 0; }

/* Promo card */
.bv-h2-mega__promo {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 300px;
    border-radius: 16px;
    overflow: hidden;
    padding: 36px;
    background-color: #FBECF2;
    background-size: cover;
    background-position: right center;
    background-repeat: no-repeat;
    color: #2A2424;
}
.bv-h2-mega__promo::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, #FBECF2 0%, #FBECF2 36%, rgba(251, 236, 242, .55) 58%, rgba(251, 236, 242, 0) 82%);
}
.bv-h2-mega__promo-body { position: relative; z-index: 1; display: flex; flex-direction: column; max-width: 58%; }
.bv-h2-mega__promo-title {
    font-family: var(--bv-serif, "Gabriela", Georgia, serif);
    font-weight: 400;
    font-size: clamp(26px, 2vw, 34px);
    line-height: 1.12;
    color: #2A2424;
}
.bv-h2-mega__promo-sub { font-size: 14px; line-height: 1.5; color: #5A5560; margin: 12px 0 22px; }
.bv-h2-mega__promo-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    align-self: flex-start;
    background: #E83E74;
    color: #fff;
    padding: 12px 22px;
    border-radius: 999px;
    font-weight: 600;
    font-size: 14px;
    transition: background .15s ease;
}
.bv-h2-mega__promo-cta svg { width: 16px; height: 16px; }
.bv-h2-mega__promo:hover .bv-h2-mega__promo-cta { background: #D11668; }

@media (max-width: 1100px) {
    .bv-h2-mega__inner { gap: 28px; padding: 28px var(--bv-h2-pad); }
    .bv-h2-mega__inner--cols-1.has-promo,
    .bv-h2-mega__inner--cols-2.has-promo,
    .bv-h2-mega__inner--cols-3.has-promo,
    .bv-h2-mega__inner--cols-2,
    .bv-h2-mega__inner--cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .bv-h2-mega__promo { grid-column: 1 / -1; min-height: 0; aspect-ratio: 16 / 6; }
}
@media (max-width: 768px) {
    .bv-h2-mega__inner,
    .bv-h2-mega__inner--cols-1,
    .bv-h2-mega__inner--cols-2,
    .bv-h2-mega__inner--cols-3,
    .bv-h2-mega__inner--cols-1.has-promo,
    .bv-h2-mega__inner--cols-2.has-promo,
    .bv-h2-mega__inner--cols-3.has-promo { grid-template-columns: 1fr; }
    .bv-h2-mega__promo { display: none; }
}

/* ===== Mobile header: hamburger + off-canvas nav drawer =====
   Below 900px the primary nav row overflowed the viewport. Collapse it into a
   slide-in drawer toggled by a hamburger; mega menus become tap-accordions
   (the existing touch handler already toggles .bv-h2-nav__item--open). */
.bv-h2-burger { display: none; }
.bv-h2-nav__close { display: none; }
@media (max-width: 900px) {
    .bv-h2-burger {
        display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
        width: 42px; height: 42px; padding: 9px; border: 0; background: none; cursor: pointer;
        flex-shrink: 0; order: -1;
    }
    .bv-h2-burger span { display: block; height: 2px; width: 24px; background: #2A2424; border-radius: 2px; }

    /* Slim down the main row so the burger fits. */
    .bv-h2-main__inner { gap: 12px; flex-wrap: wrap; }

    /* Overlay */
    .bv-h2-navoverlay { position: fixed; inset: 0; background: rgba(20,16,16,.45); z-index: 100000; }
    .bv-h2-navoverlay[hidden] { display: none; }

    /* The nav itself becomes a left drawer. */
    .bv-h2-nav {
        position: fixed; top: 0; left: 0; bottom: 0; width: min(86vw, 360px);
        background: #fff; z-index: 100001; transform: translateX(-100%);
        transition: transform .25s ease; overflow-y: auto; -webkit-overflow-scrolling: touch;
        box-shadow: 0 0 40px rgba(0,0,0,.18);
    }
    .bv-h2.is-nav-open .bv-h2-nav { transform: none; }
    .bv-h2-nav__inner {
        flex-direction: column; align-items: stretch; flex-wrap: nowrap;
        justify-content: flex-start; gap: 0; padding: 64px 20px 28px; max-width: none;
    }
    .bv-h2-nav__close {
        display: block; position: absolute; top: 14px; right: 16px; background: none; border: 0;
        font-size: 28px; line-height: 1; color: #2A2424; cursor: pointer;
    }
    /* Literal #EAEAEA, NOT var(--bv-border): the palette tokens are scoped to
       .bv-page / .bv-home, and <header class="bv-h2"> lives outside both — so
       --bv-border is undefined here and the border fell back to currentColor
       (near-black #1F1F1F). Only --bv-h2-* resolve on header chrome. */
    .bv-h2-nav__item { position: static; border-bottom: 1px solid #EAEAEA; }
    .bv-h2-nav__link { width: 100%; justify-content: space-between; padding: 15px 2px; font-size: 16px; border-bottom: 0; }

    /* Mega menus → static accordion, collapsed until the item is open. */
    .bv-h2-nav__item--has-menu { position: static; }
    .bv-h2-mega {
        position: static; display: none; opacity: 1; visibility: visible; pointer-events: auto;
        transform: none; box-shadow: none; border-top: 0; background: transparent;
    }
    .bv-h2-nav__item--open .bv-h2-mega { display: block; }
    .bv-h2-mega__inner,
    .bv-h2-mega__inner[class*="--cols-"] { grid-template-columns: 1fr; gap: 14px; padding: 4px 0 16px; }
    .bv-h2-mega__promo { display: none; }
}

/* ---- Header search overlay ---- */
.bv-h2-search {
    background: #fff;
    border-bottom: 1px solid #EFEFEF;
    box-shadow: 0 12px 24px rgba(20,24,40,.06);
    position: relative;
    z-index: 998;
}
.bv-h2-search[hidden] { display: none; }

.bv-h2-search__inner {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 24px var(--bv-h2-pad);
}

.bv-h2-search__form {
    display: flex;
    align-items: center;
    gap: 12px;
    border: 1px solid #E6E6E6;
    border-radius: 12px;
    padding: 6px 14px 6px 16px;
    background: #fff;
    transition: border-color .15s ease;
}
.bv-h2-search__form:focus-within { border-color: #E83E74; }

.bv-h2-search__icon { color: #6B6B6B; display: inline-flex; }
.bv-h2-search__icon svg { width: 20px; height: 20px; }

.bv-h2-search__form input[type="search"] {
    flex: 1;
    min-width: 0; /* let the field shrink so the Cancel button stays visible on mobile */
    height: 48px;
    border: 0;
    outline: none;
    background: transparent;
    font-family: inherit;
    font-size: 16px;
    color: #1F1F1F;
    -webkit-appearance: none;
    appearance: none;
}
.bv-h2-search__form input[type="search"]::placeholder { color: #B0B0B0; }
.bv-h2-search__form input[type="search"]::-webkit-search-decoration,
.bv-h2-search__form input[type="search"]::-webkit-search-cancel-button { display: none; }

.bv-h2-search__close {
    color: #6B6B6B;
    font-size: 14px;
    font-weight: 500;
    background: none;
    border: 0;
    cursor: pointer;
    padding: 8px 12px;
    flex-shrink: 0; /* never let the Cancel button get squeezed off-screen */
}
.bv-h2-search__close:hover { color: #C21E5A; }

.bv-h2-search__results { margin-top: 16px; }
.bv-h2-search__block { padding: 12px 0; }
.bv-h2-search__block-label {
    font-size: 13px;
    font-weight: 600;
    color: #3C3C3C;
    margin: 0 0 12px;
    text-transform: none;
    letter-spacing: 0;
}

.bv-h2-search .bv-h2-search__chips {
    display: flex; gap: 8px; flex-wrap: wrap;
}
.bv-h2-search .bv-chip {
    padding: 6px 14px;
    border: 1px solid #E6E6E6;
    border-radius: 999px;
    background: #fff;
    font-size: 13px;
    color: #3C3C3C;
    text-decoration: none;
    transition: border-color .15s ease, color .15s ease;
}
.bv-h2-search .bv-chip:hover { border-color: #E83E74; color: #C21E5A; }

.bv-h2-search__suggestions {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px;
}
.bv-h2-search__sugg {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px;
    border: 1px solid #EFEFEF;
    border-radius: 10px;
    color: #1F1F1F;
    text-decoration: none;
    transition: background .15s ease, border-color .15s ease;
}
.bv-h2-search__sugg:hover { border-color: #E83E74; background: #FFEAF3; }
.bv-h2-search__sugg img { width: 48px; height: 48px; object-fit: cover; border-radius: 8px; flex-shrink: 0; }
.bv-h2-search__sugg-name { font-size: 14px; font-weight: 500; line-height: 1.2; margin-bottom: 2px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bv-h2-search__sugg-price { font-size: 13px; color: #6B6B6B; }

.bv-h2-search__see-all {
    display: inline-block;
    margin-top: 12px;
    padding: 10px 20px;
    background: #FFEAF3;
    color: #C21E5A;
    border-radius: 8px;
    font-weight: 500;
    font-size: 14px;
    text-decoration: none;
}
.bv-h2-search__see-all:hover { background: #E83E74; color: #fff; }

.bv-h2-search__empty {
    color: #6B6B6B;
    font-size: 14px;
    margin: 0;
}
.bv-h2-search__empty a { color: #C21E5A; text-decoration: none; font-weight: 500; }

/* ---- Default state: Recent searches / Popular right now / Browse by category (Figma 579:30546) ---- */
.bv-h2-search__block--default {
    display: flex;
    flex-direction: column;
    gap: 32px;
}
.bv-h2-search__section { display: flex; flex-direction: column; gap: 12px; }
.bv-h2-search__block--default .bv-h2-search__block-label {
    font-family: "Montserrat", "Inter", sans-serif;
    font-size: 20px;
    font-weight: 600;
    color: #2A2424;
    margin: 0;
}

/* Recent searches — removable pills */
.bv-h2-search__recent { display: flex; flex-wrap: wrap; gap: 8px; }
.bv-h2-search__recent-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 4px 12px;
    border: 1px solid #6B6973;
    border-radius: 20px;
    background: #fff;
    color: #6B6973;
    font-size: 18px;
    line-height: 1.4;
    cursor: pointer;
}
.bv-h2-search__recent-chip:hover { border-color: #2A2424; color: #2A2424; }
.bv-h2-search__recent-remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    color: inherit;
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
    flex-shrink: 0;
}
.bv-h2-search__recent-remove svg { width: 13px; height: 13px; }

/* Popular right now — list rows */
.bv-h2-search__popular { display: flex; flex-direction: column; gap: 8px; }
.bv-h2-search__popular-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 5px;
    padding: 8px;
    border-radius: 6px;
    background: #F7F7F9;
    color: #6B6973;
    font-size: 18px;
    line-height: 1.4;
    text-decoration: none;
    transition: background .15s ease;
}
.bv-h2-search__popular-item:hover { background: #FFEAF3; color: #2A2424; }
.bv-h2-search__popular-arrow { color: #C21E5A; flex-shrink: 0; }

/* Browse by category — soft grey filled chips */
.bv-h2-search .bv-chip--cat {
    height: 44px;
    padding: 4px 11px;
    border: 0;
    border-radius: 6px;
    background: #F7F7F9;
    color: #6B6973;
    font-size: 18px;
    display: inline-flex;
    align-items: center;
}
.bv-h2-search .bv-chip--cat:hover { background: #FFEAF3; color: #C21E5A; }

/* The search panel is an in-flow dropdown below the header (position: relative),
   not a fixed overlay — so the page must stay scrollable while it's open, or its
   results below the fold become unreachable. (No body scroll-lock here.) */

/* =========== CART PAGE — Bloom v2 restyle ===========
   Restyles the existing WC cart markup (woocommerce-cart-form table)
   without changing PHP so update / remove / coupon AJAX keep working. */

body.woocommerce-cart .col-full,
body.woocommerce-cart .container,
body.woocommerce-cart main {
    max-width: var(--bv-h2-inner) !important;
    margin: 0 auto;
}

body.woocommerce-cart .entry-header,
body.woocommerce-cart h1.entry-title {
    font-family: "DM Serif Display", "Playfair Display", Georgia, serif;
    font-size: clamp(36px, 4vw, 56px);
    font-weight: 400;
    color: #2A2424;
    margin: 32px 0 24px;
    padding: 0;
    line-height: 1.05;
}

body.woocommerce-cart .woocommerce {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 32px;
    align-items: start;
    padding: 0 var(--bv-h2-pad);
}
body.woocommerce-cart .woocommerce > .woocommerce-cart-form { grid-column: 1; }
body.woocommerce-cart .woocommerce > .cart-collaterals { grid-column: 2; position: sticky; top: 120px; }
body.woocommerce-cart .woocommerce > .woocommerce-notices-wrapper,
body.woocommerce-cart .woocommerce > h2,
body.woocommerce-cart .woocommerce > .cart_totals { grid-column: 1 / -1; }

body.woocommerce-cart .woocommerce-cart-form {
    background: #fff;
    border: 1px solid #E6E6E6;
    border-radius: 16px;
    padding: 12px 20px;
}

body.woocommerce-cart .shop_table.cart {
    border: 0;
    width: 100%;
    background: transparent;
}
body.woocommerce-cart .shop_table.cart thead { display: none; }
body.woocommerce-cart .shop_table.cart tbody { display: block; }

body.woocommerce-cart .shop_table.cart .cart_item {
    display: grid;
    grid-template-columns: 100px 1fr auto 28px;
    column-gap: 16px;
    row-gap: 6px;
    align-items: center;
    padding: 20px 0;
    border-bottom: 1px solid #E6E6E6;
}
body.woocommerce-cart .shop_table.cart .cart_item:last-child { border-bottom: 0; }
body.woocommerce-cart .shop_table.cart .cart_item td {
    padding: 0;
    border: 0;
    background: transparent;
    display: contents;
}

/* Thumbnail in column 1, spans 2 rows */
body.woocommerce-cart .shop_table.cart .product-thumbnail {
    grid-column: 1;
    grid-row: 1 / span 2;
}
body.woocommerce-cart .shop_table.cart .product-thumbnail img {
    width: 100px !important;
    height: 100px !important;
    border-radius: 12px;
    object-fit: cover;
    display: block;
}
body.woocommerce-cart .shop_table.cart .product-thumbnail a { display: block; }

/* Name / meta */
body.woocommerce-cart .shop_table.cart .product-name {
    grid-column: 2;
    grid-row: 1;
}
body.woocommerce-cart .shop_table.cart .product-name a {
    font-family: "DM Serif Display", Georgia, serif;
    font-size: 20px;
    color: #2A2424;
    text-decoration: none;
    line-height: 1.2;
}
body.woocommerce-cart .shop_table.cart .product-name .variation,
body.woocommerce-cart .shop_table.cart .product-name .product-meta {
    font-size: 12px;
    color: #6B6B6B;
    margin-top: 4px;
}

/* Hide Price column header — Bloom shows price only in subtotal column */
body.woocommerce-cart .shop_table.cart .product-price { display: none; }

/* Quantity in row 2 below name */
body.woocommerce-cart .shop_table.cart .product-quantity {
    grid-column: 2;
    grid-row: 2;
    margin-top: 4px;
}
body.woocommerce-cart .shop_table.cart .product-quantity .quantity { display: inline-flex; align-items: center; }
body.woocommerce-cart .shop_table.cart .product-quantity .qib-container,
body.woocommerce-cart .shop_table.cart .product-quantity .quantity {
    border: 1px solid #E6E6E6;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}
body.woocommerce-cart .shop_table.cart .product-quantity .qib-button {
    width: 32px;
    height: 32px;
    background: transparent;
    border: 0;
    color: #2A2424;
    cursor: pointer;
    font-size: 18px;
}
body.woocommerce-cart .shop_table.cart .product-quantity input.qty {
    width: 40px;
    height: 32px;
    border: 0;
    text-align: center;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    -moz-appearance: textfield;
}
body.woocommerce-cart .shop_table.cart .product-quantity input.qty::-webkit-outer-spin-button,
body.woocommerce-cart .shop_table.cart .product-quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Subtotal — price on the right */
body.woocommerce-cart .shop_table.cart .product-subtotal {
    grid-column: 3;
    grid-row: 1;
    text-align: right;
    font-weight: 600;
    font-size: 16px;
    color: #2A2424;
}
body.woocommerce-cart .shop_table.cart .product-subtotal .woocommerce-Price-amount { color: #2A2424; }

/* Remove button — top right corner */
body.woocommerce-cart .shop_table.cart .product-remove {
    grid-column: 4;
    grid-row: 1;
    text-align: right;
}
body.woocommerce-cart .shop_table.cart .product-remove a.remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #F4F4F4;
    color: #6B6B6B !important;
    font-size: 18px;
    text-decoration: none;
    transition: background .15s ease, color .15s ease;
}
body.woocommerce-cart .shop_table.cart .product-remove a.remove:hover {
    background: #E83E74;
    color: #fff !important;
}

/* Coupon + update cart row at the bottom of the table */
body.woocommerce-cart .shop_table.cart .actions {
    display: flex !important;
    gap: 12px;
    padding: 16px 0 0 !important;
    align-items: center;
    flex-wrap: wrap;
    border-top: 1px solid #E6E6E6;
}
body.woocommerce-cart .shop_table.cart .actions td { display: contents; }
body.woocommerce-cart .shop_table.cart .actions .coupon { display: flex; gap: 8px; flex: 1; align-items: center; }
body.woocommerce-cart .shop_table.cart .actions .coupon label { display: none; }
body.woocommerce-cart .shop_table.cart .actions input.input-text {
    flex: 1;
    max-width: 240px;
    height: 44px;
    border: 1px solid #E6E6E6;
    border-radius: 8px;
    padding: 0 14px;
    font-family: inherit;
    font-size: 14px;
}
body.woocommerce-cart .shop_table.cart .actions button.button {
    height: 44px !important;
    padding: 0 18px !important;
    border-radius: 8px !important;
    font-family: "Inter", sans-serif !important;
    font-weight: 600 !important;
    font-size: 14px !important;
    text-transform: none !important;
    line-height: 1 !important;
}
body.woocommerce-cart .shop_table.cart .actions .button[name="apply_coupon"] {
    background: #2A2424 !important;
    color: #fff !important;
    border: 0 !important;
}
body.woocommerce-cart .shop_table.cart .actions .button[name="update_cart"] {
    background: #fff !important;
    color: #2A2424 !important;
    border: 1px solid #E6E6E6 !important;
}
body.woocommerce-cart .shop_table.cart .actions .button[name="update_cart"]:not([disabled]):hover {
    border-color: #2A2424 !important;
}

/* Cart totals summary card */
body.woocommerce-cart .cart-collaterals .cart_totals {
    background: #fff;
    border: 1px solid #E6E6E6;
    border-radius: 16px;
    padding: 24px;
    width: 100%;
    float: none;
}
body.woocommerce-cart .cart-collaterals .cart_totals h2 {
    font-family: "DM Serif Display", Georgia, serif;
    font-size: 24px;
    font-weight: 400;
    color: #2A2424;
    margin: 0 0 16px;
}
body.woocommerce-cart .cart-collaterals .cart_totals table.shop_table {
    width: 100%;
    border: 0;
    background: transparent;
}
body.woocommerce-cart .cart-collaterals .cart_totals table.shop_table th,
body.woocommerce-cart .cart-collaterals .cart_totals table.shop_table td {
    padding: 8px 0 !important;
    border-bottom: 0 !important;
    font-size: 14px;
    background: transparent !important;
}
body.woocommerce-cart .cart-collaterals .cart_totals table.shop_table th {
    color: #3C3C3C;
    font-weight: 500;
    text-align: left;
}
body.woocommerce-cart .cart-collaterals .cart_totals table.shop_table td { text-align: right; }
body.woocommerce-cart .cart-collaterals .cart_totals tr.order-total {
    border-top: 1px solid #E6E6E6;
}
body.woocommerce-cart .cart-collaterals .cart_totals tr.order-total th,
body.woocommerce-cart .cart-collaterals .cart_totals tr.order-total td {
    padding-top: 16px !important;
    font-size: 18px;
    font-weight: 600;
    color: #2A2424;
}

body.woocommerce-cart .wc-proceed-to-checkout {
    padding: 16px 0 0 !important;
    margin: 16px -24px -24px !important;
    background: #FFEAF3;
    padding: 18px 24px !important;
    border-radius: 0 0 16px 16px;
}
body.woocommerce-cart .wc-proceed-to-checkout .checkout-button {
    display: flex !important;
    align-items: center;
    justify-content: center;
    background: #E83E74 !important;
    color: #fff !important;
    border-radius: 8px !important;
    height: 56px !important;
    padding: 0 28px !important;
    font-family: "Inter", sans-serif !important;
    font-weight: 600 !important;
    font-size: 16px !important;
    text-transform: none !important;
    line-height: 1 !important;
    width: 100%;
    border: 0 !important;
    box-shadow: none !important;
}
body.woocommerce-cart .wc-proceed-to-checkout .checkout-button:hover {
    background: #D8579C !important;
    box-shadow: none !important;
}
/* Trust / payment-method strip below the checkout button: the pink button
   block's -24px bottom margin pulls this up so it overlaps the button. Give it
   clear breathing room and balance the space above vs. below within the card. */
body.woocommerce-cart .cart_totals .cart-custom-field {
    margin-top: 24px;
    text-align: center;
}
body.woocommerce-cart .cart_totals .cart-custom-field img {
    display: inline-block;
    margin: 0 auto;
    max-width: 100%;
    height: auto;
}

body.woocommerce-cart .cart-collaterals .shipping-calculator-button {
    color: #C21E5A;
    font-size: 13px;
    font-weight: 500;
}

/* Empty cart layout */
body.woocommerce-cart .bv-cart-empty {
    background: #FFEAF3;
    border-radius: 16px;
    padding: 60px 32px;
    text-align: center;
    margin: 32px var(--bv-h2-pad);
}
body.woocommerce-cart .bv-cart-empty__icon {
    width: 88px;
    height: 88px;
    border-radius: 50%;
    background: #fff;
    color: #C21E5A;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
}
body.woocommerce-cart .bv-cart-empty__icon svg { width: 44px; height: 44px; }
body.woocommerce-cart .bv-cart-empty__title {
    font-family: "DM Serif Display", Georgia, serif;
    font-size: clamp(28px, 3vw, 40px);
    font-weight: 400;
    color: #2A2424;
    margin: 0 0 8px;
}
body.woocommerce-cart .bv-cart-empty__text {
    color: #6B6B6B;
    margin: 0 auto 24px;
    max-width: 420px;
    font-size: 15px;
    line-height: 1.5;
}
body.woocommerce-cart .bv-cart-empty__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #E83E74;
    color: #fff;
    padding: 14px 28px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 15px;
    text-decoration: none;
    transition: background .15s ease;
}
body.woocommerce-cart .bv-cart-empty__cta:hover { background: #D8579C; }

body.woocommerce-cart .bv-cart-recommendations {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 60px var(--bv-h2-pad) 80px;
}
body.woocommerce-cart .bv-cart-recommendations__title {
    font-family: "DM Serif Display", Georgia, serif;
    font-size: clamp(28px, 3vw, 40px);
    font-weight: 400;
    color: #2A2424;
    margin: 0 0 24px;
    text-align: center;
}
body.woocommerce-cart .bv-cart-recommendations__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

@media (max-width: 1100px) {
    body.woocommerce-cart .woocommerce { grid-template-columns: 1fr; }
    body.woocommerce-cart .woocommerce > .cart-collaterals { grid-column: 1; position: static; }
    body.woocommerce-cart .bv-cart-recommendations__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    body.woocommerce-cart .shop_table.cart .cart_item { grid-template-columns: 80px 1fr auto; gap: 12px; }
    body.woocommerce-cart .shop_table.cart .product-thumbnail img { width: 80px !important; height: 80px !important; }
    body.woocommerce-cart .shop_table.cart .product-remove { grid-column: 1 / -1; grid-row: 3; text-align: left; }
    body.woocommerce-cart .bv-cart-recommendations__grid { grid-template-columns: 1fr; }
}

@media (max-width: 1100px) {
    .bv-h2-main__inner { flex-wrap: wrap; }
    .bv-h2-pin { display: none; }
    .bv-h2-actions { gap: 14px; }
    .bv-h2-action span { display: none; }
    .bv-h2-action { font-size: 0; }
    .bv-h2-action svg { width: 14px; height: 14px; }
}
@media (max-width: 768px) {
    /* The payment icons overflow the top bar on mobile (and are also shown in
       the footer), so hide the whole "Pay with" block here. */
    .bv-h2-top__pay { display: none; }
    /* Reclaim fixed vertical space on small screens — hide the top info strip
       (same-day / free-shipping / pay badges). QA-requested; revert if the
       value-prop messaging should stay on mobile. */
    .bv-h2-top { display: none; }
    /* NB: the old horizontal-strip overrides for .bv-h2-nav__inner (padding 12px,
       gap 14px, overflow-x/nowrap) and .bv-h2-nav__link (13px/nowrap) were removed
       here (869e88p33). Below 900px the nav is an off-canvas DRAWER, so these
       same-specificity rules just won on source order and undid the drawer's own
       `padding: 64px 20px 28px` — the top inset that reserves a row for the
       absolutely-positioned close button (top:14px) — leaving the X sitting on the
       same line as the first item. They also clobbered the drawer's gap:0 (bordered
       rows) and 16px link size. */
}

/* ---- FOOTER ---- */

.bv-f2 { background: #fff; color: #2A2424; }
.bv-f2 a { color: inherit; text-decoration: none; }

/* --- trust bar --- */
.bv-f2-trust { background: #FCEFF5; }
.bv-f2-trust__inner {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 26px var(--bv-h2-pad);
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.bv-f2-trust__item { display: flex; align-items: center; gap: 14px; }
.bv-f2-trust__icon { width: 48px; height: 48px; border-radius: 50%; background: #fff; color: #C21E5A; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.bv-f2-trust__title { font-size: 15px; font-weight: 600; margin: 0 0 2px; color: #2A2424; font-family: inherit; }
.bv-f2-trust__desc { font-size: 13px; line-height: 1.4; color: #6B6973; margin: 0; }

/* --- main columns --- */
.bv-f2__inner {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 56px var(--bv-h2-pad) 40px;
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr;
    gap: 40px;
}
/* Literal font stacks, NOT var(--bv-serif/--bv-sans): the footer is chrome and sits outside
   .bv-page/.bv-home, where those tokens are undefined. An undefined var() invalidates the
   WHOLE declaration at computed-value time — it does not just skip that entry in the stack —
   so BOTH of these fell back to the inherited body font (verified in-browser: "Playfair
   Display", var(--undefined) computes to Inter, not Playfair). Only --bv-h2-* resolve here.
   NB this markup is the no-custom-logo FALLBACK (footer-v2.php:107), so it is latent rather
   than currently visible on prod. */
.bv-f2__brand-name { font-family: "Playfair Display", "Gabriela", "DM Serif Display", Georgia, serif; font-size: 30px; font-weight: 600; display: block; line-height: 1; }
.bv-f2__brand-name small { display: block; font-family: "Montserrat", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 15px; font-weight: 600; margin-top: 2px; }
.bv-f2__about { font-size: 14px; line-height: 1.6; margin: 18px 0 18px; color: #5A5560; max-width: 280px; }
.bv-f2__social { display: flex; gap: 12px; margin-bottom: 22px; }
.bv-f2__social-link { width: 38px; height: 38px; border-radius: 50%; border: 1px solid #F3D7E4; color: #C21E5A; display: inline-flex; align-items: center; justify-content: center; transition: background .15s ease, color .15s ease; }
.bv-f2__social-link:hover { background: #E83E74; color: #fff; }
.bv-f2__copy { font-size: 13px; color: #6B6973; margin: 0; }

.bv-f2__col-title { color: #2A2424; font-size: 16px; font-weight: 600; margin: 0 0 6px; font-family: inherit; }
.bv-f2__col-title::after { content: ""; display: block; width: 30px; height: 2px; background: #E83E74; margin: 6px 0 16px; border-radius: 2px; }
.bv-f2__col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.bv-f2__col a { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #5A5560; font-size: 14px; }
.bv-f2__col a svg { color: #C9C0CC; flex-shrink: 0; transition: transform .15s ease, color .15s ease; }
.bv-f2__col a:hover { color: #C21E5A; }
.bv-f2__col a:hover svg { color: #C21E5A; transform: translateX(2px); }

/* --- payment / partners / contact row --- */
.bv-f2-pay {
    max-width: var(--bv-h2-inner);
    margin: 0 auto;
    padding: 32px var(--bv-h2-pad);
    border-top: 1px solid #F0E6EA;
    display: grid;
    grid-template-columns: auto auto 1fr auto auto;
    gap: 24px 40px;
    align-items: center;
}
.bv-f2-pay__label { display: block; font-size: 13px; color: #6B6973; margin-bottom: 10px; }
.bv-f2-pay__cards { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.bv-f2-pay__card { height: 30px; min-width: 46px; padding: 0 8px; background: #fff; border: 1px solid #EDE6EA; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; }
.bv-f2-pay__card svg { height: 16px; width: auto; }
.bv-f2-pay__card--txt { font-size: 11px; font-weight: 700; color: #2A2424; letter-spacing: .02em; }
.bv-f2-pay__partners { display: flex; gap: 16px; align-items: center; }
.bv-f2-pay__partner { font-size: 16px; font-weight: 800; letter-spacing: -.01em; }
.bv-f2-pay__contact { display: flex; align-items: center; gap: 12px; }
.bv-f2-pay__contact-icon { width: 44px; height: 44px; border-radius: 50%; background: #FCEFF5; color: #C21E5A; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.bv-f2-pay__contact-text { display: flex; flex-direction: column; line-height: 1.3; }
.bv-f2-pay__contact-label { font-size: 12px; color: #6B6973; }
.bv-f2-pay__contact-text strong { font-size: 16px; color: #C21E5A; }
.bv-f2-pay__contact-sub { font-size: 12px; color: #6B6973; }

/* --- bottom bar --- */
.bv-f2-bottom { background: #FCEFF5; }
.bv-f2-bottom { display: flex; align-items: center; justify-content: space-between; max-width: 100%; margin: 0 auto; padding: 18px var(--bv-h2-pad); }
.bv-f2-bottom>div{
    display: flex;
    justify-content: space-between;
    margin: 0 auto;
    width: 100%;
    max-width:var(--bv-h2-inner);
}
.bv-f2-bottom__made { margin: 0; font-size: 14px; color: #5A5560; display: inline-flex; align-items: center; gap: 6px; }
.bv-f2-bottom__heart { color: #C21E5A; display: inline-flex; }
.bv-f2-bottom__top { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: #5A5560; }
.bv-f2-bottom__top-icon { width: 30px; height: 30px; border-radius: 50%; border: 1px solid #F3D7E4; color: #C21E5A; display: inline-flex; align-items: center; justify-content: center; }
/* Back to top was the only control in the footer bottom bar with no hover or focus
   state at all — grey label, pink outline circle, and nothing happened on hover, so
   it didn't read as clickable (Volodymyr 869ecfzyt). Follows the outline-button
   language in DESIGN-GUIDELINES.md: fills --bv-pink with a white glyph, the label
   picks up the same #C21E5A the other footer links use on hover, and the arrow lifts
   2px so a "back to top" affordance actually reads as upward movement. */
.bv-f2-bottom__top { transition: color .18s ease; }
.bv-f2-bottom__top-icon { transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease; }
.bv-f2-bottom__top:hover, .bv-f2-bottom__top:focus-visible { color: #C21E5A; }
.bv-f2-bottom__top:hover .bv-f2-bottom__top-icon,
.bv-f2-bottom__top:focus-visible .bv-f2-bottom__top-icon { background: #E83E74; border-color: #E83E74; color: #fff; transform: translateY(-2px); }

@media (max-width: 1100px) {
    .bv-f2-trust__inner { grid-template-columns: 1fr 1fr; }
    .bv-f2__inner { grid-template-columns: 1fr 1fr 1fr; }
    .bv-f2__brand { grid-column: 1 / -1; }
    .bv-f2-pay { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
    .bv-f2-trust__inner { grid-template-columns: 1fr; }
    .bv-f2__inner { grid-template-columns: 1fr 1fr; }
    .bv-f2-pay { grid-template-columns: 1fr; }
    .bv-f2-bottom { flex-direction: column; gap: 10px; }
}

/* ---- BANNER SLIDER (home v2) ---- */

.bv-banners {
    width: 100%;
    overflow: hidden;
    position: relative;
}
.bv-banners .swiper-wrapper { align-items: stretch; }
.bv-banners .swiper-slide { width: 100%; }
.bv-banners .wrapper__slide { width: 100%; }
.bv-banners .main__banner--image {
    width: 100%;
    height: clamp(360px, 36vw, 660px);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
}
.bv-banners .main__banner--full-link {
    position: absolute;
    inset: 0;
    display: block;
}
.bv-banners .main__banner--wrapperInfoMob { display: none; }
.bv-banners .main__banner--summerFlowers      { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/summer_desktop.webp'); }
.bv-banners .main__banner--birthdayFlowers    { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/birthday_flowers_day_desktop.webp'); }
.bv-banners .main__banner--fathersFlowers     { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/Fathers_day_desktop.webp'); }
.bv-banners .main__banner--4thOfJuly          { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/4_july.webp'); }
.bv-banners .main__banner--roseSale           { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/rose_sale_desktop.webp'); }
.bv-banners .main__banner--freshFlowers       { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/fresh_flowers_desktop.webp'); }
.bv-banners .swiper-pagination {
    position: absolute;
    bottom: 18px;
    left: 0;
    right: 0;
    text-align: center;
    z-index: 10;
}
.bv-banners .swiper-pagination-bullet {
    width: 10px; height: 10px;
    background: rgba(255,255,255,.6);
    opacity: 1;
    margin: 0 4px !important;
}
.bv-banners .swiper-pagination-bullet-active { background: #fff; }

@media (max-width: 700px) {
    .bv-banners .main__banner--image { height: clamp(420px, 110vw, 745px); }
    .bv-banners .main__banner--summerFlowers      { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/summer_mobile.webp'); }
    .bv-banners .main__banner--birthdayFlowers    { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/birthday_flowers_day_mobile.webp'); }
    .bv-banners .main__banner--fathersFlowers     { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/Fathers_day_mobile.webp'); }
    .bv-banners .main__banner--4thOfJuly          { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/4_july_mobile.webp'); }
    .bv-banners .main__banner--roseSale           { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/rose_sale_mobile.webp'); }
    .bv-banners .main__banner--freshFlowers       { background-image: url('/wp-content/themes/creta-child/assets/banner/2025/fresh_flowers_mobile.webp'); }
}

.bv-page {
    /* Canonical Figma tokens: pink #E83E74, ink #2A2424, muted #6B6973 (Gray Blossom/Style),
       cream #FFF7EC, serif Gabriela, sans Montserrat. */
    --bv-pink: #E83E74;
    --bv-pink-hover: #D8579C;
    --bv-pink-50: #FFEAF3;
    --bv-pink-100: #FCDCE6;
    --bv-pink-200: #FBE6EF;
    --bv-pink-soft: #FFF7F9;
    --bv-text: #2A2424;
    --bv-text-2: #3C3C3C;
    --bv-text-muted: #6B6973;
    --bv-border: #EAEAEA;
    --bv-border-dark: #C9CCD1;
    --bv-bg: #FFFFFF;
    --bv-bg-cream: #FFF7EC;
    --bv-bg-soft: #F6F6F6;
    --bv-star: #FFD000;

    --bv-serif: "Playfair Display", "Gabriela", "DM Serif Display", Georgia, serif;
    --bv-sans: "Montserrat", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

    --bv-radius-sm: 8px;
    --bv-radius-md: 12px;
    --bv-radius-lg: 20px;
    --bv-radius-pill: 999px;

    --bv-container: 1520px;
    --bv-container-pad: 32px;

    color: var(--bv-text);
    font-family: var(--bv-sans);
    font-size: 16px;
    line-height: 1.55;
    background: var(--bv-bg);
}

.bv-page *,
.bv-page *::before,
.bv-page *::after { box-sizing: border-box; }

/* :where(element) keeps these at (0,1,0) — see the .bv-body reset note. */
.bv-page :where(img) { max-width: 100%; height: auto; display: block; }
.bv-page :where(a) { color: inherit; text-decoration: none; }
.bv-page button { font-family: inherit; cursor: pointer; border: 0; background: none; }

.bv-page__container {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 0 var(--bv-container-pad);
}

/* ---- Typography ---- */

.bv-page h1, .bv-page h2, .bv-page h3 {
    font-family: var(--bv-serif);
    font-weight: 400;
    color: var(--bv-text);
    line-height: 1.1;
    letter-spacing: -0.01em;
    margin: 0;
}

.bv-page__title {
    font-family: var(--bv-serif);
    font-size: clamp(36px, 4vw, 56px);
    line-height: 1.05;
    margin: 0 0 16px;
}

.bv-page__sub {
    font-size: 14px;
    color: var(--bv-text-muted);
    line-height: 1.5;
    margin: 0;
}

.bv-page__sub a {
    color: #C21E5A;
    font-weight: 500;
}

/* =========== POLICY / FAQ TWO-COLUMN LAYOUT =========== */

.bv-policy {
    display: grid;
    grid-template-columns: 453px 1fr;
    gap: 60px;
    /* The policy section shares its element with .bv-page__container; a 0
       horizontal padding here overrode the container's side padding, leaving
       the FAQ/Delivery/Returns titles flush against the screen edge on any
       viewport narrower than the container max-width. */
    padding: 80px var(--bv-container-pad) 100px;
    align-items: start;
}

.bv-policy__left {
    position: sticky;
    top: 100px;
}

.bv-policy__list { width: 100%; }

/* Pink phone CTA (beats the body.bv-body a { color: inherit } reset) */
body.bv-body .bv-policy__left .bv-page__sub a { color: #C21E5A; font-weight: 600; text-decoration: underline; }
body.bv-body .bv-policy__left .bv-page__sub a:hover { color: var(--bv-pink-hover); }

/* Terms & Conditions (page 15284) + Privacy Policy (page 3) use the full-width template,
   so their title + body run edge-to-edge. Cap them to the header MENU's width — the same
   max-width + horizontal padding as .bv-h2-main__inner — so the page lines up with the nav. */
body.page-id-15284 .entry-header,
body.page-id-15284 .content-area,
body.page-id-3 .entry-header,
body.page-id-3 .content-area {
    max-width: var(--bv-h2-inner);
    margin-inline: auto;
    padding-inline: var(--bv-h2-pad);
    box-sizing: border-box;
}

/* Accordion questions are Gabriela serif on policy/FAQ pages (per Figma) */
.bv-policy .bv-acc__summary { font-family: var(--bv-serif); font-weight: 400; font-size: 18px; }

/* ---- Accordion item (matches home-v2 FAQ visuals) ---- */

.bv-acc {
    border-radius: var(--bv-radius-md);
    margin-bottom: 20px;
    background: var(--bv-bg-soft);
    overflow: hidden;
    border: 1px solid transparent;
    transition: background .2s ease, border-color .2s ease;
}

.bv-acc[open] {
    background: var(--bv-pink-50);
    border-color: var(--bv-pink-100);
}

.bv-acc__summary {
    list-style: none;
    cursor: pointer;
    padding: 24px 28px;
    font-weight: 500;
    font-size: 16px;
    color: var(--bv-text);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.bv-acc__summary::-webkit-details-marker { display: none; }

.bv-acc__summary::after {
    content: "";
    width: 12px;
    height: 12px;
    border-right: 2px solid var(--bv-text);
    border-bottom: 2px solid var(--bv-text);
    transform: rotate(45deg) translate(-2px, -2px);
    transition: transform .2s ease;
    flex-shrink: 0;
}

.bv-acc[open] .bv-acc__summary::after {
    transform: rotate(-135deg) translate(-2px, -2px);
}

.bv-acc__body {
    padding: 0 28px 24px;
    color: var(--bv-text-2);
    font-size: 14px;
    line-height: 1.6;
}

.bv-acc__body p { margin: 0 0 12px; }
.bv-acc__body p:last-child { margin-bottom: 0; }

/* =========== 404 =========== */

.bv-404 {
    position: relative;
    min-height: 720px;
    color: #fff;
    overflow: hidden;
    isolation: isolate;
}

.bv-404__bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -2;
}
/* `.bv-page img { height: auto }` (0,1,1) beats `.bv-404__bg` (0,1,0), so the
   backdrop stopped at its natural height and the white hero text ran onto the
   plain page background on phones. Re-assert at matching specificity. */
.bv-page .bv-404__bg { height: 100%; }

.bv-404::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(20, 26, 50, .55) 0%, rgba(20, 26, 50, .1) 60%);
    z-index: -1;
}

.bv-404__inner {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 100px var(--bv-container-pad);
    min-height: 720px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 24px;
    max-width: 720px;
}

.bv-page .bv-404__title {
    font-family: var(--bv-serif);
    font-size: clamp(40px, 5vw, 72px);
    line-height: 1.05;
    color: #fff;
    margin: 0;
}

.bv-404__lead {
    font-size: 18px;
    color: rgba(255, 255, 255, .92);
    max-width: 460px;
    margin: 0;
    line-height: 1.5;
}

.bv-404__cta-row {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

.bv-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 14px 28px;
    border-radius: var(--bv-radius-sm);
    font-weight: 500;
    font-size: 15px;
    text-decoration: none;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
    border: 1px solid transparent;
}

.bv-btn--primary {
    background: var(--bv-pink);
    color: #fff;
}

.bv-btn--primary:hover { background: var(--bv-pink-hover); }

.bv-btn--ghost {
    background: transparent;
    color: #fff;
    border-color: rgba(255, 255, 255, .85);
}

.bv-btn--ghost:hover {
    background: rgba(255, 255, 255, .12);
}

/* `.bv-page a { color: inherit }` (0,1,1) out-specifies `.bv-btn--primary`
   (0,1,0), so ANCHOR buttons inside .bv-page rendered ink-on-pink (empty-cart
   "Shop Flowers", account CTAs — flagged by the BrowserStack a11y scan).
   Re-assert the button text colors at matching specificity. */
.bv-page a.bv-btn--primary { color: #fff; }
.bv-page a.bv-btn--ghost { color: #fff; }

/* <button> variants need to beat the global `body.bv-body button { background:none; border:0 }` reset. */
body.bv-body button.bv-btn { border: 1px solid transparent; }
body.bv-body button.bv-btn--primary { background: var(--bv-pink); color: #fff; }
body.bv-body button.bv-btn--primary:hover { background: var(--bv-pink-hover); }
body.bv-body button.bv-btn--ghost { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .85); }

/* =========== ABOUT =========== */

/* Shared section container + headings */
.bv-au-hero,
.bv-au-pills,
.bv-au-why,
.bv-au-stats,
.bv-au-gallery,
.bv-au-how,
.bv-au-faq { max-width: var(--bv-container); margin-inline: auto; padding-inline: var(--bv-container-pad); }
.bv-au-pills,
.bv-au-why,
.bv-au-stats,
.bv-au-gallery,
.bv-au-how { padding-top: 40px; padding-bottom: 48px; }

.bv-au-h2 { font-family: var(--bv-serif); font-weight: 400; font-size: clamp(30px, 3.4vw, 48px); line-height: 1.12; color: var(--bv-text); margin: 0 0 18px; }
.bv-au-h2--center { text-align: center; }
.bv-au-sub { color: var(--bv-text-muted); font-size: 17px; line-height: 1.5; max-width: 720px; margin: 0 auto 36px; text-align: center; }

/* Hero */
.bv-au-hero { position: relative; text-align: center; padding-top: 60px; padding-bottom: 48px; overflow: hidden; }
.bv-au-hero__inner { position: relative; z-index: 2; max-width: 760px; margin: 0 auto; }
.bv-au-rating { display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; border-radius: 999px; background: #E3F4EC; color: #2A2424; font-size: 15px; font-weight: 500; margin-bottom: 22px; }
.bv-au-rating svg { width: 18px; height: 18px; }
.bv-au-hero__title { font-family: var(--bv-serif); font-weight: 400; font-size: clamp(34px, 5vw, 58px); line-height: 1.08; color: var(--bv-text); margin: 0 0 18px; }
.bv-au-accent { color: #DE9E09; }
.bv-au-hero__lead { color: var(--bv-text-muted); font-size: 18px; line-height: 1.5; max-width: 600px; margin: 0 auto 26px; }
.bv-au-hero__deco { position: absolute; z-index: 1; aspect-ratio: 4/5; object-fit: cover; border-radius: 16px; box-shadow: 0 16px 40px rgba(0,0,0,.10); }
.bv-au-hero__deco--l1 { left: 1%;  top: 6%;    width: 170px; transform: rotate(-6deg); }
.bv-au-hero__deco--l2 { left: 5%;  bottom: 2%; width: 150px; transform: rotate(5deg); }
.bv-au-hero__deco--r1 { right: 1%; top: 10%;   width: 170px; transform: rotate(6deg); }
.bv-au-hero__deco--r2 { right: 4%; bottom: 0;  width: 150px; transform: rotate(-5deg); }
/* .bv-page prefix: `.bv-page img { display:block }` (0,1,1) out-specified this
   (0,1,0) — media queries add no specificity — so the collage photos rendered
   over the About hero text on phones. */
@media (max-width: 1180px) { .bv-page .bv-au-hero__deco { display: none; } }

/* Trust pills */
.bv-au-pills { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; padding-top: 8px; }
.bv-au-pill { display: flex; gap: 14px; align-items: center; justify-content: center; padding: 16px; min-height: 140px; background: #FFECF6; border: 1px solid #E83E74; border-radius: 16px; }
.bv-au-pill__icon { flex-shrink: 0; width: 88px; height: 88px; display: inline-flex; align-items: center; justify-content: center; }
.bv-au-pill__icon img { width: 100%; height: 100%; object-fit: contain; }
.bv-au-pill__text { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.bv-au-pill__text strong { font-family: var(--bv-serif); font-weight: 400; font-size: clamp(20px, 1.5vw, 24px); line-height: 1.2; color: #181B02; }
.bv-au-pill__text span { color: #525252; font-size: clamp(15px, 1.1vw, 18px); line-height: 1.4; }

/* Why we started */
.bv-au-why { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.bv-au-why__text p { color: var(--bv-text-muted); font-size: 17px; line-height: 1.6; margin: 0 0 16px; }
.bv-au-why__cue { color: var(--bv-text) !important; font-weight: 500; margin-bottom: 12px !important; }
.bv-au-chips { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; }
.bv-au-chip { padding: 6px 14px; border-radius: 999px; background: #FFECF6; color: #C21E5A; font-size: 14px; font-weight: 500; }
.bv-au-chip::before { content: "\2022\00a0"; }
.bv-au-why__media img { width: 100%; aspect-ratio: 16/11; object-fit: cover; border-radius: 18px; }

/* Stats band */
.bv-au-stats { display: grid; grid-template-columns: 1.1fr 1fr; gap: 56px; align-items: center; }
.bv-au-stats__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.bv-au-stat { background: #FFF6E6; border: 1px solid #FBE7C2; border-radius: 16px; padding: 24px; text-align: center; }
.bv-au-stat__num { display: block; font-family: var(--bv-serif); font-size: 40px; line-height: 1; color: #DE9E09; }
.bv-au-stat__unit { display: block; font-weight: 600; color: #2A2424; margin: 6px 0 10px; }
.bv-au-stat p { color: #6B6973; font-size: 14px; line-height: 1.5; margin: 0; }
.bv-au-stats__text p { color: var(--bv-text-muted); font-size: 17px; line-height: 1.6; margin: 0 0 16px; }

/* Gallery */
.bv-au-gallery { text-align: center; }
.bv-au-gallery__row { display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px; }
.bv-au-gallery__item { display: block; aspect-ratio: 1; border-radius: 50%; overflow: hidden; }
.bv-au-gallery__item img { width: 100%; height: 100%; object-fit: cover; }

/* Testimonials (contained cream band) */
.bv-au-reviews { max-width: var(--bv-container); margin: 8px auto 48px; padding: 48px clamp(20px, 4vw, 56px); background: #FFF6E6; border-radius: 24px; }
.bv-au-reviews__head { text-align: center; margin-bottom: 28px; }
.bv-au-reviews__rating { display: inline-flex; align-items: center; gap: 8px; color: #6B6973; font-size: 14px; margin-bottom: 10px; }
.bv-au-stars { color: #F2B400; letter-spacing: 1px; }
.bv-au-stars--sm { font-size: 13px; }
.bv-au-reviews__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.bv-au-review { background: #fff; border-radius: 14px; padding: 20px; box-shadow: 0 8px 24px rgba(0,0,0,.04); }
.bv-au-review__head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.bv-au-review__avatar { width: 28px; height: 28px; border-radius: 50%; background: #E83E74; color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; }
.bv-au-review__name { font-weight: 600; font-size: 14px; color: #2A2424; }
.bv-au-review__verified { display: inline-flex; align-items: center; gap: 3px; color: #00754F; font-size: 12px; }
.bv-au-review__verified svg { width: 13px; height: 13px; }
.bv-au-review__date { margin-left: auto; color: #9C9AA3; font-size: 12px; }
.bv-au-review__text { color: #4A4853; font-size: 14px; line-height: 1.55; margin: 8px 0 10px; }
.bv-au-review__more { color: #C21E5A; font-size: 13px; font-weight: 600; }
.bv-au-reviews__nav { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 26px; }
.bv-au-dots { display: inline-flex; gap: 8px; }
.bv-au-dots i { width: 8px; height: 8px; border-radius: 50%; background: #E0C9A8; display: inline-block; }
.bv-au-dots i.is-active { background: #2A2424; }
body.bv-body button.bv-au-arrow { width: 44px; height: 44px; border-radius: 50%; background: #fff; color: #2A2424; border: 0; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.bv-au-arrow svg { width: 22px; height: 22px; }

/* How it works */
.bv-au-how { text-align: center; }
.bv-au-how__steps { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; max-width: 1080px; margin: 40px auto 34px; }
.bv-au-how__line { position: absolute; top: 44px; left: 12.5%; right: 12.5%; border-top: 2px dashed #CFCFD6; z-index: 0; }
.bv-au-how__step { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.bv-au-how__num { width: 88px; height: 88px; border-radius: 50%; background: #FFECF6; color: #2A2424; display: inline-flex; align-items: center; justify-content: center; font-family: var(--bv-serif); font-size: 34px; margin-bottom: 8px; }
.bv-au-how__title { font-family: var(--bv-serif); font-size: 19px; color: #2A2424; }
.bv-au-how__desc { color: #6B6973; font-size: 14px; line-height: 1.5; max-width: 200px; }
.bv-au-how__zip { display: inline-flex; gap: 12px; }
.bv-au-how__zip input { width: 220px; height: 48px; border: 1px solid #E2E0E6; border-radius: 8px; padding: 0 16px; font-size: 15px; }
.bv-au-how__zip input:focus { outline: none; border-color: #E83E74; }

/* FAQ */
.bv-au-faq { display: grid; grid-template-columns: 380px 1fr; gap: 48px; padding-top: 40px; padding-bottom: 40px; align-items: start; }
.bv-au-faq__intro p { color: #6B6973; font-size: 18px; line-height: 1.45; margin: 16px 0 0; }
.bv-au-faq__intro a { color: #C21E5A; font-weight: 600; }
.bv-au-faq__list { display: flex; flex-direction: column; gap: 14px; }
.bv-au-faq__item { margin-bottom: 0; background: #F7F7F9; border: 1px solid transparent; border-radius: 16px; }
.bv-au-faq__item[open] { background: #fff; border-color: #E83E74; box-shadow: 0 0 45px rgba(236,107,173,.08); }
.bv-au-faq__q { font-family: var(--bv-serif); font-size: clamp(18px, 1.4vw, 24px); font-weight: 400; color: #6B6973; }
.bv-au-faq__item[open] .bv-au-faq__q { color: #2A2424; }

/* Closing SEO copy */
.bv-au-seo { max-width: var(--bv-container); margin-inline: auto; padding: 0 var(--bv-container-pad) 72px; }
.bv-au-seo__title { font-family: var(--bv-serif); font-weight: 400; font-size: 24px; line-height: 1.2; color: #181B02; margin: 0 0 24px; }
.bv-au-seo__cols { display: flex; gap: 24px; align-items: flex-start; }
.bv-au-seo__col { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.bv-au-seo__cols p { color: #525252; font-size: 14px; line-height: 1.45; margin: 0; }
.bv-au-seo__aside { flex: 0 0 41%; max-width: 631px; }
@media (max-width: 980px) { .bv-au-seo__cols { flex-direction: column; } .bv-au-seo__aside { flex-basis: auto; max-width: none; } }

/* Pink links (beat the .bv-page a { color: inherit } reset) */
body.bv-body .bv-au-faq__intro a,
body.bv-body .bv-au-review__more { color: #C21E5A; }
body.bv-body .bv-au-faq__intro a:hover,
body.bv-body .bv-au-review__more:hover { color: var(--bv-pink-hover); }

@media (max-width: 980px) {
    .bv-au-why, .bv-au-stats, .bv-au-faq { grid-template-columns: 1fr; gap: 32px; }
    .bv-au-pills { grid-template-columns: 1fr 1fr; }
    .bv-au-gallery__row { grid-template-columns: repeat(3, 1fr); }
    .bv-au-reviews__grid { grid-template-columns: 1fr; }
    .bv-au-how__steps { grid-template-columns: 1fr 1fr; gap: 32px 24px; }
    .bv-au-how__line { display: none; }
}
@media (max-width: 560px) {
    .bv-au-pills { grid-template-columns: 1fr; }
    .bv-au-stats__grid { grid-template-columns: 1fr; }
    .bv-au-gallery__row { gap: 10px; }
    .bv-au-how__steps { grid-template-columns: 1fr; }
    .bv-au-how__zip { flex-direction: column; width: 100%; }
    .bv-au-how__zip input { width: 100%; }
}

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

/* =========== PRODUCT CARD (shared, page-scoped overrides) =========== */

.bv-page .bv-card {
    background: #fff;
    border: 1px solid #F0E6EA;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(20, 24, 40, .05);
    display: flex;
    flex-direction: column;
    gap: 14px;
    text-decoration: none;
    transition: transform .2s ease, box-shadow .2s ease;
}
.bv-page .bv-card:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(20, 24, 40, .10); }
.bv-page .bv-card__body { padding: 0 14px !important; }

/* Card footer: "Choose Bouquet" + heart (Tim's home mockups). */
.bv-card__foot { display: flex; align-items: stretch; gap: 8px; padding: 0 0 16px; margin-top: auto; }
.bv-card__choose {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    border: 1px solid #E83E74;
    border-radius: 10px;
    color: #C21E5A;
    font-weight: 600;
    font-size: 15px;
    transition: background .15s ease, color .15s ease;
}
.bv-card:hover .bv-card__choose { background: #E83E74; color: #fff; }
.bv-card__foot .bv-card__wishlist {
    position: static;
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #EEDDE6;
    border-radius: 10px;
    background: #fff;
    color: #C21E5A;
    cursor: pointer;
    transition: background .15s ease;
}
.bv-card__foot .bv-card__wishlist.is-active { background: #FFECF6; }

/* Product-card "Add to Cart" overlay (Figma 1463-22172). Base is hidden
   everywhere (absolute + opacity 0) so it never shows on cards that don't
   opt in; the landing page reveals it on hover with a pink ring. */
.bv-card__add {
    position: absolute;
    left: 14px;
    right: 14px;
    bottom: 14px;
    z-index: 3;
    border: 0;
    border-radius: 6px;
    padding: 16px;
    background: #E83E74;
    color: #fff;
    font-family: var(--bv-sans, "Montserrat", sans-serif);
    font-weight: 700;
    font-size: 16px;
    line-height: 19px;
    text-align: center;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .25);
    opacity: 0;
    transform: translateY(8px);
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease, background .15s ease;
}
.bv-card__add:hover { background: #D9529B; }
.bv-lp .bv-card:hover .bv-card__add,
.bv-lp .bv-card:focus-within .bv-card__add {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}
.bv-lp .bv-card:hover .bv-card__media { box-shadow: inset 0 0 0 2px #E83E74; }
@media (hover: none) {
    .bv-lp .bv-card__add { opacity: 1; transform: none; pointer-events: auto; }
}

.bv-page .bv-card__media {
    position: relative;
    aspect-ratio: 365 / 399;
    background: #FBDAE5;
    overflow: hidden;
    border-radius: 16px;
}

/* Home product card hover (Figma 1463-22172): pink ring + "Add to Cart"
   button that slides in over the image. */
.bv-home .bv-card__media { position: relative; }
.bv-home .bv-card__add {
    position: absolute;
    left: 14px;
    right: 14px;
    bottom: 14px;
    z-index: 3;
    border: 0;
    border-radius: 6px;
    padding: 16px;
    background: #E83E74;
    color: #fff;
    font-family: var(--bv-sans, "Montserrat", sans-serif);
    font-weight: 700;
    font-size: 16px;
    line-height: 19px;
    text-align: center;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .25);
    opacity: 0;
    transform: translateY(8px);
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease, background .15s ease;
}
.bv-home .bv-card__add:hover { background: #D9529B; }
.bv-home .bv-card:hover .bv-card__add,
.bv-home .bv-card:focus-within .bv-card__add {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}
.bv-home .bv-card:hover .bv-card__media {
    box-shadow: inset 0 0 0 2px #E83E74;
}
@media (hover: none) {
    /* Touch devices: keep the button always tappable. */
    .bv-home .bv-card__add { opacity: 1; transform: none; pointer-events: auto; }
}
.bv-page .bv-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.bv-page .bv-card__badges {
    position: absolute;
    top: 16px;
    left: 15px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.bv-page .bv-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 500;
    text-transform: uppercase;
    line-height: 1;
}
.bv-page .bv-badge--best { background: #FFECF6; color: #C21E5A; text-transform: none; }
.bv-page .bv-badge--best::before { content: "♥"; color: #C21E5A; }
.bv-page .bv-badge--save { background: #E2FFF6; color: #008844; }
.bv-page .bv-badge--save::before { content: "🌿"; }
.bv-page .bv-card__body {
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.bv-page .bv-card__delivery {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: linear-gradient(166deg, #FDE7F2 0%, #FFF6E5 100%);
    border-radius: 10px;
    padding: 2px 7px;
    color: #2A2424;
    font-size: 16px;
    line-height: 20px;
    letter-spacing: .03em;
}
.bv-page .bv-card__delivery b { font-weight: 700; }
.bv-page .bv-card__delivery span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #DE9E09;
    font-weight: 700;
}
.bv-page .bv-card__rating {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 16px;
    line-height: 20px;
    min-height: 20px; /* reserve space when empty so cards stay the same height */
    color: #6B6973;
}
.bv-page .bv-card__stars {
    color: #F5A623;
    letter-spacing: 1px;
}
.bv-page .bv-card__sameday {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    line-height: 18px;
    color: #6B6973;
}
.bv-page .bv-card__sameday svg { flex-shrink: 0; color: #6B6973; }
.bv-page .bv-card__sameday strong { font-weight: 600; color: #5A5560; }
.bv-page .bv-card__sameday span { color: #6B6973; }
.bv-page .bv-card__title-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
}
.bv-page .bv-card__title {
    font-family: var(--bv-sans);
    font-size: 20px;
    font-weight: 600;
    color: #2A2424;
    margin: 0;
    flex: 1;
    line-height: 28px;
}
.bv-page .bv-card__price {
    font-size: 24px;
    font-weight: 600;
    color: #2A2424;
    white-space: nowrap;
}
.bv-page .bv-card__price del {
    color: #6B6973;
    font-weight: 400;
    margin-left: 6px;
    font-size: 20px;
}
.bv-page .bv-card__save {
    display: inline-block; margin-left: 8px; padding: 4px 8px; border-radius: 6px;
    background: var(--pd-green-bg, #E2FFF6); color: var(--pd-green, #00754F); font-size: 12px; font-weight: 500;
    text-transform: uppercase; vertical-align: middle; white-space: nowrap; line-height: 1;
}

/* =========== CATALOG =========== */

.bv-catalog {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 40px var(--bv-container-pad) 80px;
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 40px;
    align-items: start;
}
/* Results column: applied-filters row + grid + count + pagination live here so
   they stack in grid column 2 next to the sidebar (no gapped extra row). */
.bv-catalog__results { grid-column: 2; min-width: 0; }

.bv-catalog__crumbs {
    grid-column: 1 / -1;
    color: var(--bv-text-muted);
    font-size: 13px;
    margin-bottom: 8px;
}
.bv-catalog__crumbs a { color: var(--bv-text-muted); }
.bv-catalog__crumbs a:hover { color: #C21E5A; }
.bv-catalog__crumbs .sep { margin: 0 8px; }

.bv-catalog__header {
    grid-column: 1 / -1;
    display: flex;
    justify-content: space-between;
    align-items: end;
    gap: 16px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

.bv-catalog__title {
    font-family: var(--bv-serif);
    font-size: clamp(36px, 4vw, 56px);
    margin: 0;
}
.bv-catalog__heading { display: flex; flex-direction: column; }
.bv-catalog__subtitle { margin: 8px 0 0; max-width: 640px; color: #5A5560; font-size: 16px; line-height: 1.5; }

.bv-catalog__sort {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #121212;
    font-size: 18px;
}
.bv-catalog__sort label { white-space: nowrap; flex-shrink: 0; margin: 0; }

.bv-catalog__sort-field { position: relative; }
.bv-catalog__sort select {
    appearance: none; -webkit-appearance: none; -moz-appearance: none;
    min-width: 226px;
    padding: 7px 48px 7px 16px;
    border: 1px solid #CBCBCB;
    border-radius: 6px;
    font-family: inherit;
    font-size: 18px;
    background: #fff;
    color: #121212;
    cursor: pointer;
}
.bv-catalog__sort select:focus { outline: none; border-color: var(--bv-pink, #E83E74); }
.bv-catalog__sort-chev {
    position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
    color: #121212; pointer-events: none;
}

/* =========== CATEGORY REDESIGN: hero + features + quick pills (Tim mockup) =========== */
.bv-cat-hero {
    background-color: #FBF1F4;
    /* Tim's per-occasion banner (flowers right, fade left); white overlay keeps the
       left-side text legible; gradient is the fallback layer if the image is missing. */
    background-image:
        linear-gradient(90deg, rgba(255,253,254,.95) 0%, rgba(255,253,254,.6) 34%, rgba(255,253,254,0) 64%),
        var(--cat-hero-img),
        var(--cat-grad, linear-gradient(120deg,#FCEFF5,#FBF4EE));
    background-size: cover, cover, cover;
    background-position: center, center right, center;
    background-repeat: no-repeat;
}
.bv-cat-hero__inner {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 48px var(--bv-container-pad);
    min-height: 280px;
    display: flex;
    align-items: center;
}
.bv-cat-hero__text { flex: 0 1 560px; min-width: 0; }
.bv-cat-hero .bv-catalog__crumbs { margin-bottom: 14px; }
.bv-cat-hero__title {
    font-family: var(--bv-serif);
    font-size: clamp(34px, 4.4vw, 58px);
    line-height: 1.08;
    margin: 0;
    color: #2A2230;
}
.bv-cat-hero__sub {
    margin: 14px 0 0;
    max-width: 460px;
    color: #5A5560;
    font-size: 17px;
    line-height: 1.55;
}

.bv-cat-features {
    border-bottom: 1px solid #EFE7EC;
    background: #fff;
}
.bv-cat-features__inner {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 18px var(--bv-container-pad);
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    align-items: center;
    gap: 28px;
}
.bv-cat-features__inner > * { min-width: 0; box-sizing: border-box; }
.bv-cat-feature { display: flex; align-items: center; gap: 10px; }
.bv-cat-feature__icon {
    width: 40px; height: 40px; border-radius: 50%;
    background: #FCEFF5; color: var(--bv-pink, #E83E74);
    flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
}
.bv-cat-feature__txt { display: flex; flex-direction: column; line-height: 1.25; }
.bv-cat-feature__txt strong { font-size: 14px; color: #2A2230; }
.bv-cat-feature__txt span { font-size: 12px; color: #8A8590; }
.bv-cat-help {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #FCEFF5;
    border: 1px solid #F3D7E5;
    border-radius: 12px;
    padding: 10px 16px;
}
.bv-cat-help__icon { color: var(--bv-pink, #E83E74); flex: 0 0 auto; display: flex; }
.bv-cat-help__txt { display: flex; flex-direction: column; line-height: 1.25; }
.bv-cat-help__txt strong { font-size: 14px; color: #2A2230; }
.bv-cat-help__txt span { font-size: 12px; color: #8A8590; max-width: 230px; }

/* Results header: count + note on the left, sort on the right. */
.bv-catalog__resinfo { display: flex; flex-direction: column; }
.bv-catalog__rescount { margin: 0; font-size: 22px; font-weight: 700; color: #2A2230; }
.bv-catalog__resnote { margin: 4px 0 0; font-size: 14px; color: #8A8590; }

/* Sidebar "Quick filters" block: stacked full-width pill buttons (mockup). */
.bv-page--catalog .bv-filters__heading { font-family: "Inter", sans-serif !important; font-size: 18px; font-weight: 600; color: #2A2230; }
/* Beat the catalog-wide Playfair !important (.bv-catalog *) with higher specificity. */
.bv-page--catalog .bv-filters__sec-title { font-family: "Inter", sans-serif !important; }
/* The catalog-wide `.bv-catalog *` Playfair !important (bottom of file) otherwise
   leaks the serif into every filter control. Force the site-default sans across the
   whole sidebar (specificity 0,2,0 beats `.bv-catalog *`'s 0,1,0 !important). */
.bv-page--catalog .bv-filters, .bv-page--catalog .bv-filters * { font-family: "Inter", sans-serif !important; }
.bv-filters__quick--stack { display: flex; flex-direction: column; gap: 10px; margin-bottom: 22px; }
.bv-filters__quick--stack .bv-chip-filter {
    width: 100%; justify-content: flex-start; gap: 10px;
    padding: 12px 16px; border-radius: 12px; border: 1px solid #ECE3E8; background: #fff;
    font-size: 15px; color: #2A2230; box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.bv-filters__quick--stack .bv-chip-filter svg { color: var(--bv-pink, #E83E74); flex: 0 0 auto; }
.bv-filters__quick--stack .bv-chip-filter:hover { border-color: var(--bv-pink, #E83E74); }
.bv-filters__quick--stack .bv-chip-filter.is-active { border-color: var(--bv-pink, #E83E74); background: #FCEFF5; }

/* Mockup filter: checkbox lists (flower type + size), price presets, clear-all */
.bv-filters__checks { display: flex; flex-direction: column; gap: 12px; }
/* manipulation: no double-tap-zoom delay before the tap reaches the filter. */
.bv-filters__check { display: flex; align-items: center; gap: 10px; width: 100%; border: 0; background: none; padding: 0; cursor: pointer; text-align: left; font-size: 15px; color: #2A2230; touch-action: manipulation; }
.bv-filters__check-box { width: 20px; height: 20px; flex: 0 0 auto; border: 1.5px solid #CBC3C9; border-radius: 5px; background: #fff; position: relative; transition: background .12s, border-color .12s; }
.bv-filters__check.is-active .bv-filters__check-box { background: var(--bv-pink, #E83E74); border-color: var(--bv-pink, #E83E74); }
.bv-filters__check.is-active .bv-filters__check-box::after { content: ""; position: absolute; left: 6px; top: 2px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.bv-filters__check:hover .bv-filters__check-box { border-color: var(--bv-pink, #E83E74); }
.bv-filters__price-values { display: flex; justify-content: space-between; margin-top: 12px; font-size: 14px; font-weight: 600; color: #2A2230; }
.bv-filters__price-presets { display: flex; gap: 8px; margin-top: 14px; }
.bv-filters__price-presets .bv-chip-filter { flex: 1 1 0; justify-content: center; padding: 8px 4px; border: 1px solid #E3D7DE; border-radius: 8px; background: #fff; font-size: 14px; color: #4A434F; cursor: pointer; }
.bv-filters__price-presets .bv-chip-filter:hover, .bv-filters__price-presets .bv-chip-filter.is-active { border-color: var(--bv-pink, #E83E74); color: var(--bv-pink, #E83E74); }
/* The panel scrolls inside itself, and this link sits after every section — on a phone that
   is 1418px of internal scrolling out of 1464 before it comes into view, which is why it read
   as missing entirely (Volodymyr 2026-09-09). Pinned to the panel's bottom edge so it is
   reachable the moment the filters are open, with a white ground so the list does not show
   through it as it passes underneath. */
.bv-filters__clearall { display: block; width: 100%; margin-top: 22px; padding: 13px; text-align: center; border: 1px solid var(--bv-pink, #E83E74); border-radius: 10px; color: var(--bv-pink, #E83E74); font-weight: 600; font-size: 15px; text-decoration: none;
  position: sticky; bottom: 0; background: #fff; box-shadow: 0 -10px 10px 6px #fff; }
.bv-filters__clearall:hover { background: #FCEFF5; }

/* Quick-filter pills above the grid. */
.bv-cat-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 10px 0 24px;
}
.bv-cat-pill {
    display: inline-flex;
    align-items: center;
    padding: 8px 18px;
    border: 1px solid #E3D7DE;
    border-radius: 999px;
    background: #fff;
    color: #4A434F;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s, color .15s, border-color .15s;
}
.bv-cat-pill:hover { border-color: var(--bv-pink, #E83E74); color: var(--bv-pink, #E83E74); }
.bv-cat-pill.is-active {
    background: var(--bv-pink, #E83E74);
    border-color: var(--bv-pink, #E83E74);
    color: #fff;
}
/* Category-navigation pills separated from the composable filters (869e48n4n, dir a):
   a divider + muted "Browse" label, and a warm-tint pill with a → arrow so they read as
   "go to another category", not as a filter you can stack. */
.bv-cat-pills__sep { flex: 0 0 auto; align-self: stretch; width: 1px; margin: 2px 2px; background: #E3D7DE; }
.bv-cat-pills__label { display: inline-flex; align-items: center; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #9A8FA0; white-space: nowrap; }
.bv-cat-pill--nav { background: #FBF4EE; }
.bv-cat-pill--nav .bv-cat-pill__arrow { margin-left: 6px; font-size: 15px; line-height: 1; }
.bv-cat-pill--nav:hover { background: #fff; border-color: var(--bv-pink, #E83E74); color: var(--bv-pink, #E83E74); }

@media (max-width: 900px) {
    .bv-cat-hero__inner { padding: 28px var(--bv-container-pad); min-height: 200px; }
    .bv-cat-hero__text { flex-basis: 100%; }
    .bv-cat-hero { background-image: linear-gradient(90deg, rgba(255,253,254,.96) 0%, rgba(255,253,254,.78) 50%, rgba(255,253,254,.4) 100%), var(--cat-hero-img), var(--cat-grad, linear-gradient(120deg,#FCEFF5,#FBF4EE)); }
    .bv-cat-features__inner { grid-auto-flow: row; grid-auto-columns: auto; }
    .bv-cat-help { margin-left: 0; width: 100%; }
    .bv-cat-pills { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
    .bv-cat-pills::-webkit-scrollbar { display: none; }
}

@media (max-width: 600px) {
    /* Stack the title above the sort control so the dropdown no longer
       overflows the viewport on mobile. */
    .bv-catalog__header { flex-direction: column; align-items: stretch; gap: 12px; }
    .bv-catalog__sort { width: 100%; font-size: 15px; }
    .bv-catalog__sort select { flex: 1 1 auto; min-width: 0; width: 100%; font-size: 15px; }
}

/* Mobile/tablet: collapse the 2-col catalog into one column and hide the
   filter panel behind a "Filters" toggle so the sidebar no longer overlaps
   (or overflows past) the product grid. Toggle is injected by bloom-v2-filters.js;
   without JS the filters simply stack open above the grid. */
.bv-filters__toggle { display: none; }
/* Desktop keeps the sidebar beside the grid, so there is nothing to return from.
   NB not `.bv-filters__apply` — that name belongs to a button from the previous
   filter design which is switched off further down this file, and reusing it would
   leave one class with two "display:none" rules and one that undoes them. */
.bv-filters__done { display: none; }
@media (max-width: 900px) {
    /* Stack the whole catalog as blocks — avoids the desktop grid leaving the
       filter column in place (which overlapped/overflowed the product grid). */
    .bv-catalog { display: block; }
    .bv-catalog > * { min-width: 0; margin-bottom: 20px; }
    .bv-catalog > *:last-child { margin-bottom: 0; }
    .bv-filters { position: static; top: auto; }
    /* Product grid: 2-up with cards allowed to shrink so they never overflow. */
    .bv-catalog__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    .bv-catalog__grid > * { min-width: 0; }
    /* Title/price scaled down + allowed to wrap so the price doesn't overflow
       the narrow 2-up card (price is white-space:nowrap at 24px by default). */
    .bv-catalog__grid .bv-card__title-row { flex-wrap: wrap; gap: 2px 10px; }
    .bv-catalog__grid .bv-card__title { font-size: 16px; line-height: 22px; }
    .bv-catalog__grid .bv-card__price { font-size: 18px; }
    .bv-catalog__grid .bv-card__price del { font-size: 14px; }
    .bv-filters--collapsible { padding: 0; background: transparent; box-shadow: none; }
    .bv-filters__toggle {
        display: flex; align-items: center; justify-content: space-between; gap: 8px;
        width: 100%; padding: 14px 18px; background: #fff;
        border: 1px solid var(--bv-border-dark); border-radius: 12px;
        font-family: var(--bv-sans); font-weight: 600; font-size: 15px;
        color: var(--bv-text); cursor: pointer;
    }
    .bv-filters__toggle > span { display: inline-flex; align-items: center; gap: 8px; }
    .bv-filters__toggle-chev { transition: transform .2s ease; }
    .bv-filters.is-open .bv-filters__toggle-chev { transform: rotate(180deg); }
    .bv-filters--collapsible .bv-filters__form { margin-top: 14px; }
    .bv-filters--collapsible:not(.is-open) .bv-filters__form { display: none; }

    /* "Show N results" — the way out of the filter panel on a phone.
       Sticky, not simply last in the form: the panel is taller than the screen, and a
       button you must scroll to the bottom to find is the problem this solves rather
       than the fix. */
    .bv-filters--collapsible.is-open .bv-filters__done {
        display: block;
        position: sticky;
        bottom: 12px;
        z-index: 2;
        width: 100%;
        margin-top: 18px;
        padding: 15px 18px;
        border: 0;
        border-radius: 12px;
        background: var(--bv-pink);
        color: #fff;
        font-family: var(--bv-sans);
        font-weight: 600;
        font-size: 16px;
        line-height: 1.2;
        cursor: pointer;
        box-shadow: 0 6px 20px rgba(42, 36, 36, .22);
    }
    .bv-filters--collapsible.is-open .bv-filters__done:hover { background: var(--bv-pink-hover); }
    .bv-filters--collapsible.is-open .bv-filters__done:focus-visible {
        outline: 2px solid var(--bv-text);
        outline-offset: 2px;
    }
}

/* ===== Catalog filter sidebar (Figma 626:57806) ===== */
.bv-filters {
    background: #fff;
    border-radius: 16px;
    padding: 20px;
    box-shadow: 0 0 52px rgba(0, 0, 0, .06);
    font-family: var(--bv-sans);
}
/* Sticky, self-scrolling sidebar — DESKTOP ONLY, and this media query is what makes
   that true. The five declarations below used to sit unconditioned in the rule above,
   which is LATER in this file than the `max-width: 900px` block that resets them: same
   specificity, later wins, so `.bv-filters { position: static; top: auto; }` up there
   never applied and a phone was handed the desktop sidebar.
   What that did on a real iPhone 16 (Kostya, 869f69t67): the panel pinned at top:100px
   and capped at 100vh - 120px = 732px, except iOS measures 100vh against the LARGE
   viewport, so the bottom ~180px of that box sat behind Safari's toolbar and our fixed
   bottom nav. The list reached the end of its own scroll inside that hidden strip, and
   `overscroll-behavior: contain` kept the swipe from chaining to the page — so Bouquet
   size stopped at "Regular" and everything below it, the "Show N results" button
   included, could not be reached at all. */
@media (min-width: 901px) {
    .bv-filters {
        position: sticky;
        top: 100px;
        /* Stay in view while the page scrolls; scroll internally when the
           filter list is taller than the viewport (Figma 1731-32831). */
        max-height: calc(100vh - 120px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}
.bv-filters__form { display: flex; flex-direction: column; gap: 24px; }

/* Header */
.bv-filters__head { display: flex; flex-direction: column; gap: 4px; }
.bv-filters__head-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.bv-filters__heading {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: "Gabriela", "DM Serif Display", Georgia, serif;
    font-size: 24px;
    color: #2A2424;
}
.bv-filters__heading svg { color: #2A2424; }
.bv-filters__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 30px;
    height: 22px;
    padding: 0 8px;
    background: #E83E74;
    color: #fff;
    border-radius: 32px;
    font-size: 14px;
    font-weight: 700;
}
.bv-filters__badge--lg { min-width: 41px; height: 26px; font-family: "Gabriela", serif; font-weight: 400; font-size: 20px; }
.bv-filters__clear { color: #6B6973; font-size: 18px; text-decoration: underline; white-space: nowrap; }
.bv-filters__found { margin: 0; color: #6B6973; font-size: 18px; }

/* Chip filters (pills) */
.bv-filters__quick,
.bv-filters__pills { display: flex; flex-wrap: wrap; gap: 8px; }
.bv-filters .bv-chip-filter {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 4px 12px;
    border: 1px solid #DDD;
    border-radius: 20px;
    background: #fff;
    color: #6B6973;
    font-family: var(--bv-sans);
    font-size: 18px;
    line-height: 1.4;
    cursor: pointer;
}
.bv-filters .bv-chip-filter svg { color: currentColor; flex-shrink: 0; }
.bv-filters .bv-chip-filter.is-active {
    background: #FFECF6;
    border-color: #E83E74;
    color: #C21E5A;
}
.bv-chip-filter__dot { width: 16px; height: 16px; border-radius: 50%; flex-shrink: 0; }

/* Applied-filters bar (Figma 626-57714) — removable pills + Clear all */
.bv-filters__applied {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
}
.bv-filters__applied[hidden] { display: none; }
.bv-applied {
    grid-column: 2;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    margin-top: 10px;
}
.bv-applied[hidden] { display: none; }
.bv-applied-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 4px 12px;
    border: 1px solid var(--pd-pink, #E83E74);
    border-radius: 20px;
    background: var(--pd-pink-bg, #FFECF6);
    color: var(--pd-pink, #E83E74);
    font-family: var(--bv-sans);
    font-size: 18px;
    line-height: 1.4;
    cursor: pointer;
}
.bv-applied-pill__x { flex-shrink: 0; }
.bv-applied-clear {
    border: 0;
    background: none;
    padding: 4px;
    color: #6B6973;
    font-family: var(--bv-sans);
    font-size: 18px;
    line-height: 1.4;
    text-decoration: underline;
    cursor: pointer;
}
.bv-applied-clear:hover { color: var(--pd-pink, #E83E74); }

/* Collapsible sections */
.bv-filters__sec { border: 0; }
.bv-filters__sec + .bv-filters__sec { border-top: 1px solid #EEE; padding-top: 24px; }
.bv-filters__sec-head {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.bv-filters__sec-head::-webkit-details-marker { display: none; }
.bv-filters__sec-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: "Inter", sans-serif !important;
    font-weight: 700;
    font-size: 18px;
    color: #2A2424;
}
.bv-filters__sec-title--muted { color: #6B6973; }
.bv-filters__caret { color: #2A2424; transition: transform .2s ease; flex-shrink: 0; }
.bv-filters__sec:not([open]) .bv-filters__caret { transform: rotate(180deg); }
.bv-filters__sec-body { margin-top: 20px; }

/* Delivery radio group (Figma 616-50854) */
.bv-filters__radios { display: flex; flex-direction: column; gap: 12px; }
.bv-filters__radio { display: flex; align-items: center; gap: 8px; padding: 4px; cursor: pointer; position: relative; }
.bv-filters__radio input { position: absolute; opacity: 0; width: 0; height: 0; }
.bv-filters__radio-dot { flex: none; width: 16px; height: 16px; box-sizing: border-box; border: 1px solid #6B6973; border-radius: 100px; position: relative; transition: border-color .15s ease; }
.bv-filters__radio-label { flex: 1 1 auto; font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 18px; line-height: 1.4; color: #6B6973; }
.bv-filters__radio-hint { flex: none; font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 16px; color: #6B6973; }
.bv-filters__radio input:checked + .bv-filters__radio-dot { border-color: #E83E74; }
.bv-filters__radio input:checked + .bv-filters__radio-dot::after { content: ""; position: absolute; inset: 3px; border-radius: 100px; background: #E83E74; }
.bv-filters__radio input:checked ~ .bv-filters__radio-label { color: #2A2424; }
.bv-filters__radio input:focus-visible + .bv-filters__radio-dot { outline: 2px solid #E83E74; outline-offset: 2px; }

/* Price: histogram + inputs + slider */
.bv-filters__histogram { display: flex; align-items: flex-end; gap: 2.6px; height: 47px; margin-bottom: 12px; }
.bv-filters__histogram span { flex: 1 1 0; background: #E83E74; opacity: .7; border-radius: 3px 3px 0 0; }
.bv-filters__price-inputs { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.bv-filters__price-field {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid #DDD;
    border-radius: 6px;
    padding: 4px 8px;
    font-size: 18px;
    color: #121212;
    flex: 1 1 0;
}
.bv-filters__price-cur {
    font-size: 18px;
    color: #121212;
    margin-right: -3px; /* hug the number so it reads "$60", not "$  60" */
}
.bv-filters__price-field input {
    width: 100%;
    border: 0;
    outline: none;
    font-family: var(--bv-sans);
    font-size: 18px;
    color: #121212;
    background: transparent;
    -moz-appearance: textfield;
}
.bv-filters__price-field input::-webkit-outer-spin-button,
.bv-filters__price-field input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.bv-filters__slider { position: relative; height: 20px; }
.bv-filters__slider-track {
    position: absolute;
    top: 6px;
    left: 0;
    right: 0;
    height: 9px;
    background: #FFECF6;
    border-radius: 72px;
}
.bv-filters__slider-fill { position: absolute; top: 0; height: 100%; background: #E83E74; border-radius: 72px; }
.bv-filters__slider input[type="range"] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 20px;
    margin: 0;
    background: none;
    pointer-events: none;
    -webkit-appearance: none;
    appearance: none;
}
.bv-filters__slider input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    pointer-events: auto;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #fff;
    border: 3px solid #E83E74;
    cursor: pointer;
    box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.bv-filters__slider input[type="range"]::-moz-range-thumb {
    pointer-events: auto;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #fff;
    border: 3px solid #E83E74;
    cursor: pointer;
}
.bv-filters__slider input[type="range"]::-moz-range-track { background: none; }

/* Bouquet size cards */
.bv-filters__sizes { display: flex; gap: 6px; flex-wrap: wrap; }
.bv-filters .bv-filters__size {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 8px;
    min-width: 90px;
    border: 1px solid #DDD;
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
    text-align: center;
}
.bv-filters .bv-filters__size.is-active { border-color: #E83E74; background: #FFECF6; }
.bv-filters__size-name { font-size: 16px; color: #2B3A2E; }
.bv-filters__size-stems { font-size: 14px; color: #8A8D83; }

/* Apply button */
.bv-filters .bv-filters__apply {
    height: 48px;
    border-radius: 6px;
    background: #E83E74;
    color: #FFFBF5;
    border: 0;
    font-family: "DM Sans", "Inter", sans-serif;
    font-weight: 600;
    font-size: 16px;
    cursor: pointer;
}
.bv-filters .bv-filters__apply:hover { background: #D9529B; }

.bv-catalog__grid {
    grid-column: 2;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}
.bv-catalog__empty { grid-column: 1 / -1; padding: 60px 40px; text-align: center; color: var(--bv-text-muted); }
.bv-catalog__empty-title { font-family: var(--bv-serif); font-size: 32px; color: #2A2424; margin: 0 0 8px; }
.bv-catalog__empty p { margin: 0; font-size: 16px; }

/* Catalog results count + pagination (Figma 626:58036) */
.bv-catalog__count {
    grid-column: 2;
    margin: 40px 0 0;
    text-align: center;
    font-family: var(--bv-sans);
    font-size: 18px;
    color: #999;
}

.bv-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 24px;
    margin-top: 20px;
    grid-column: 2;
    flex-wrap: wrap;
}

/* Page-number links → circles */
.bv-pagination .bv-pagination__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 6px;
    border: 0;
    background: none;
    border-radius: 50px;
    color: #999;
    font-family: var(--bv-sans);
    font-size: 20px;
    font-weight: 400;
}
.bv-pagination .bv-pagination__link:hover { color: #C21E5A; }
.bv-pagination .bv-pagination__link--active {
    width: 44px;
    background: #FFECF6;
    border: 1px solid #E83E74;
    color: #000;
    font-weight: 600;
}
.bv-pagination .bv-pagination__link.dots { color: #999; }

/* Prev / Next → pills */
.bv-pagination .bv-pagination__link.prev,
.bv-pagination .bv-pagination__link.next {
    width: auto;
    min-width: 104px;
    height: 46px;
    padding: 9px 16px;
    gap: 12px;
    border: 1px solid #2A2424;
    border-radius: 50px;
    color: #2A2424;
    font-weight: 600;
    font-size: 20px;
}
.bv-pagination .bv-pagination__link.prev:hover,
.bv-pagination .bv-pagination__link.next:hover { background: #2A2424; color: #fff; }
.bv-pagination__chev { flex-shrink: 0; }

/* =========== PRODUCT DETAIL (Figma 106:3161) =========== */

.bv-product {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 32px var(--bv-container-pad) 80px;
}

/* Figma-specific palette + type, scoped to the product page only so the
   rest of the v2 site keeps the Inter / DM Serif system. */
.bv-page--product {
    /* Guard against a carousel/wide child leaking horizontal page scroll on mobile. */
    overflow-x: hidden;
    --pd-pink: #E83E74;
    --pd-pink-bg: #FFECF6;
    --pd-pink-img: #FBDAE5;
    --pd-green: #00754F;
    --pd-green-bg: #E2FFF6;
    --pd-cream: #FFF7EC;
    --pd-gold: #DE9E09;
    --pd-ink: #2A2424;
    --pd-muted: #6B6973;
    /* Description-section dot chips (Figma 2905:36479). A lighter pink than --pd-pink
       #E83E74, so it is its own token rather than a hex sprinkled through the rules. */
    --pd-dot: #EC6BAD;
    --pd-line: #EAEAEA;
    --pd-input: #DDDDDD;
    --pd-serif: "Playfair Display","Gabriela", "DM Serif Display", Georgia, serif;
    --pd-sans: "Montserrat", "Inter", sans-serif;
    --pd-cta: "DM Sans", "Inter", sans-serif;
}

.bv-pd {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 60px;
    align-items: start;
}

/* ---- Gallery ---- */
.bv-pd__gallery {
    display: grid;
    grid-template-columns: 132px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    /* Keep the image + thumbs in view while the details column scrolls. */
    position: sticky;
    top: 100px;
    align-self: start;
}

/* "Farm fresh, shipped in a gift box" — shown under the image for vendors the in-house
   florist does not arrange. It is the second grid child, so span both tracks to sit under
   the image rather than squeezing into the 132px thumbnail column. */
.bv-pd__ship-note {
    grid-column: 1 / -1;
    margin: 12px 0 0;
    font-family: var(--pd-sans);
    font-size: 15px;
    line-height: 1.4;
    color: var(--pd-muted, #667085);
    text-align: center;
}

.bv-pd__thumbs {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.bv-page--product .bv-pd__thumb {
    width: 132px;
    height: 132px;
    border-radius: 12px;
    overflow: hidden;
    cursor: pointer;
    border: 2px solid transparent;
    background: var(--pd-pink-img);
    padding: 0;
}
.bv-pd__thumb img { width: 100%; height: 100%; object-fit: cover; }
.bv-pd__thumb.is-active { border-color: var(--pd-pink); }

.bv-pd__stage {
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    background: #fff;
    aspect-ratio: 606 / 708;
}
/* Swipeable image slider (native scroll-snap). Thumbs scroll it; it snaps
   one image per view and syncs the active thumb on scroll. */
.bv-pd__slides {
    display: flex;
    height: 100%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    /* NO scroll-behavior: smooth here. The thumbnail click asks for a smooth scroll itself,
       and with it declared on the element the browser ALSO animates every snap correction —
       two animations aiming at the same track, one of them re-aiming the other. */
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.bv-pd__slides::-webkit-scrollbar { display: none; }
.bv-pd__slide { flex: 0 0 100%; scroll-snap-align: center; scroll-snap-stop: always; }
.bv-pd__slide picture { display: block; width: 100%; height: 100%; }
.bv-pd__stage-img { width: 100%; height: 100%; object-fit: cover; border-radius: 16px; display: block; }

.bv-pd__badges {
    position: absolute;
    top: 16px;
    left: 16px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.bv-pd__badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border-radius: 6px;
    font-family: var(--pd-sans);
    font-weight: 500;
    font-size: 14px;
    line-height: 1;
}
.bv-pd__badge svg { display: block; }
.bv-pd__badge--best { background: var(--pd-pink-bg); color: var(--pd-pink); text-transform: uppercase; }
.bv-pd__badge--save { background: var(--pd-green-bg); color: var(--pd-green); text-transform: uppercase; }

/* ---- Summary ---- */
.bv-pd__info {
    display: flex;
    flex-direction: column;
    gap: 24px;
    font-family: var(--pd-sans);
    color: var(--pd-ink);
}
.bv-pd__head { display: flex; flex-direction: column; gap: 20px; }

.bv-pd__pill {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 13px;
    border: 1px solid var(--pd-green);
    background: var(--pd-green-bg);
    color: var(--pd-green);
    border-radius: 20px;
    font-weight: 500;
    font-size: 14px;
}

.bv-pd__title-wrap { display: flex; flex-direction: column; gap: 8px; }
.bv-pd__title {
    font-family: var(--pd-serif);
    font-weight: 400;
    font-size: clamp(40px, 5vw, 64px);
    line-height: 1.05;
    color: var(--pd-ink);
    margin: 0;
}
.bv-pd__sku { font-size: 16px; color: var(--pd-muted); }

.bv-pd__rating {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    font-size: 16px;
}
.bv-pd__stars { color: var(--bv-star); letter-spacing: 2px; font-size: 16px; }
.bv-pd__rating-num { color: var(--pd-muted); }
.bv-pd__rating-link { color: var(--pd-pink); }
.bv-pd__rating-link:hover { text-decoration: underline; }

.bv-pd__price-block { display: flex; flex-direction: column; gap: 4px; }
.bv-pd__price { display: flex; align-items: center; gap: 12px; }
.bv-pd__price-from { color: var(--pd-muted); font-size: 16px; }
.bv-page--product .summary .price .bv-pd__save,
.bv-page--product .entry-summary .price .bv-pd__save { display: inline-block; margin-left: 10px; padding: 2px 10px; border-radius: 6px; background: var(--pd-green-bg, #E2FFF6); color: var(--pd-green, #00754F); font-size: 14px; font-weight: 500; text-transform: uppercase; vertical-align: middle; }
.bv-pd__price-now { font-weight: 600; font-size: 32px; color: var(--pd-ink); line-height: 1; }
.bv-pd__price-now .woocommerce-Price-amount { font-weight: 600; }
.bv-pd__price-was { color: var(--pd-muted); font-size: 20px; }
.bv-pd__fee {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 0;
    color: var(--pd-muted);
    font-size: 16px;
}
.bv-pd__info-i { color: var(--pd-muted); flex-shrink: 0; }

.bv-pd__social {
    margin-top: 30px;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-family: var(--pd-cta);
    font-size: 22px;
    color: var(--pd-ink);
}
.bv-pd__social svg { color: var(--pd-gold); flex-shrink: 0; }
.bv-pd__social strong { color: var(--pd-gold); font-weight: 600; }

.bv-pd__divider { width: 100%; height: 0; border: 0; border-top: 1px solid var(--pd-line); margin: 0; }

.bv-pd__group { display: flex; flex-direction: column; gap: 16px; }
.bv-pd__group-title {
    font-family: var(--pd-sans);
    font-weight: 600;
    font-size: 20px;
    color: var(--pd-ink);
    margin: 0;
    line-height: 1.4;
}

/* Size cards */
.bv-pd__sizes { display: flex; gap: 12px; flex-wrap: wrap; }
.bv-page--product .bv-pd__size {
    flex: 1 1 0;
    min-width: 160px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    padding: 12px;
    border: 2px solid var(--pd-line);
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
    text-align: center;
    transition: border-color .15s ease, background .15s ease;
}
.bv-pd__size.is-active { border-color: var(--pd-pink); background: var(--pd-pink-bg); }
.bv-pd__size-name { font-size: 20px; color: var(--pd-ink); }
.bv-pd__size-price {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-weight: 600;
    font-size: 20px;
    color: var(--pd-pink);
}
.bv-pd__size-price del { color: var(--pd-muted); font-weight: 400; font-size: 14px; }
.bv-pd__size-stems { font-size: 14px; color: var(--pd-muted); }

/* ZIP block */
.bv-pd__zip {
    display: flex;
    flex-direction: column;
    gap: 16px;
    background: var(--pd-cream);
    border-radius: 6px;
    padding: 14px 16px;
}
.bv-pd__zip-form { width: 100%; }
.bv-pd__zip-form input {
    width: 100%;
    height: 56px;
    padding: 0 16px;
    border: 1px solid var(--pd-gold);
    border-radius: 6px;
    background: #fff;
    font-family: var(--pd-cta);
    font-size: 18px;
    color: var(--pd-ink);
}
.bv-pd__zip-form input::placeholder { color: var(--pd-muted); }
.bv-pd__zip-help {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--pd-pink);
    font-size: 16px;
    text-decoration: underline;
    align-self: flex-start;
}

/* Date chips */
.bv-pd__dates { display: flex; gap: 8px; flex-wrap: wrap; }
.bv-page--product .bv-pd__date {
    flex: 1 1 0;
    min-width: 150px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    height: 56px;
    padding: 0 24px;
    border: 1px solid var(--pd-input);
    border-radius: 6px;
    background: #fff;
    font-family: var(--pd-cta);
    font-size: 18px;
    color: var(--pd-muted);
    cursor: pointer;
    transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.bv-pd__date.is-active { border-color: var(--pd-pink); background: var(--pd-pink-bg); color: var(--pd-ink); }

/* Gift message */
.bv-pd__message {
    width: 100%;
    min-height: 99px;
    padding: 16px;
    border: 1px solid var(--pd-input);
    border-radius: 6px;
    background: #fff;
    font-family: var(--pd-cta);
    font-size: 18px;
    color: var(--pd-ink);
    resize: vertical;
}
.bv-pd__message::placeholder { color: var(--pd-muted); }

/* Actions */
.bv-pd__actions { display: flex; gap: 20px; flex-wrap: wrap; }
.bv-page--product .bv-pd__btn {
    flex: 1 1 0;
    min-width: 220px;
    height: 62px;
    border-radius: 6px;
    font-family: var(--pd-cta);
    font-weight: 600;
    font-size: 18px;
    cursor: pointer;
    transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.bv-page--product .bv-pd__btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; }
.bv-page--product .bv-pd__btn .woocommerce-Price-amount { color: inherit; }
.bv-page--product .bv-pd__btn--primary { background: var(--pd-pink); color: #FFFBF5; border: 0; }
.bv-page--product .bv-pd__btn--primary:hover { background: #D9529B; }
.bv-page--product .bv-pd__btn--ghost { background: #fff; color: var(--pd-muted); border: 1px solid var(--pd-input); }
.bv-page--product .bv-pd__btn--ghost:hover { border-color: var(--pd-pink); color: var(--pd-pink); }

/* Trust line under the CTA (Tim mockup): Secure checkout · No hidden fees · Freshness guaranteed */
.bv-pd__assurances {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 6px 0; margin: 14px 0 0; color: var(--pd-muted); font-size: 14px;
}
.bv-pd__assurances span { display: inline-flex; align-items: center; gap: 6px; }
.bv-pd__assurances span svg { color: var(--pd-pink); flex: 0 0 auto; }
.bv-pd__assurances span:not(:last-child)::after { content: "·"; margin: 0 14px; color: var(--pd-input); }

/* Express checkout (PayPal / Apple Pay / Google Pay) */
.bv-pd__express {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 13px;
    background: var(--pd-cream);
    border: 1px solid var(--pd-gold);
    border-radius: 5px;
    padding: 12px;
}
.bv-pd__express-note {
    margin: 0;
    max-width: 469px;
    text-align: center;
    font-family: var(--pd-sans);
    font-size: 16px;
    line-height: 1.25;
    color: #000;
}
.bv-pd__express-btns { display: flex; gap: 12px; width: 100%; }
.bv-page--product .bv-pd__wallet {
    flex: 1 1 0;
    min-width: 0;
    height: 50px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 16px;
    background: #fff;
    border: 1px solid var(--pd-input);
    border-radius: 6px;
    cursor: pointer;
    font-family: var(--pd-cta);
    font-weight: 600;
    font-size: 18px;
    color: var(--pd-ink);
    transition: border-color .15s ease;
}
.bv-page--product .bv-pd__wallet:hover { border-color: var(--pd-pink); }
.bv-pd__wallet svg { display: block; flex-shrink: 0; }
.bv-pd__paypal { font-style: italic; font-weight: 700; font-size: 18px; letter-spacing: -.3px; }
.bv-pd__paypal span:first-child { color: #003087; }
.bv-pd__paypal span:last-child { color: #009CDE; }

/* Delivery assurance */
.bv-pd__assure {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--pd-green-bg);
    border-radius: 6px;
    padding: 14px 16px;
}
.bv-pd__assure-check { color: var(--pd-green); flex-shrink: 0; margin-top: 2px; }
.bv-pd__assure-text { display: flex; flex-direction: column; gap: 6px; }
.bv-pd__assure-line {
    margin: 0;
    font-family: var(--pd-cta);
    font-size: 18px;
    color: var(--pd-ink);
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: baseline;
}
.bv-pd__assure-line strong { font-weight: 600; }
.bv-pd__countdown { color: var(--pd-green); font-weight: 600; font-variant-numeric: tabular-nums; }
.bv-pd__assure-sub { margin: 0; font-size: 14px; color: var(--pd-muted); }

/* Description accordion */
.bv-pd__details {
    background: #F7F7F9;
    border-radius: 16px;
    padding: 20px;
}
.bv-pd__details-summary {
    list-style: none;
    cursor: pointer;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 16px;
    padding: 0;
    border: 0;
    font-family: var(--pd-sans);
    font-weight: 600;
    font-size: 20px;
    color: var(--pd-ink);
    padding-right:0 !important;
}
.bv-pd__details-summary::-webkit-details-marker { display: none; }
.bv-pd__details-chev { color: var(--pd-ink); transition: transform .2s ease; flex-shrink: 0; }
.bv-pd__details[open] .bv-pd__details-chev { transform: rotate(180deg); }
.bv-pd__details-body {
    margin-top: 16px;
    color: var(--pd-muted);
    font-size: 16px;
    line-height: 1.6;
}
.bv-pd__details-body p { margin: 0 0 12px; }
.bv-pd__details-body p:last-child { margin-bottom: 0; }

/* Description sections (Figma 2905:36479) — each is a 16/20 medium label over either
   body copy or a row of dot chips. 12px between sections matches the card's own gap. */
/* Scoped under .bv-pd__details-body on purpose: the body's own `p { margin: 0 0 12px }`
   is specificity 0,1,1 and would otherwise beat a bare `.bv-pd__sec-text` (0,1,0) and add
   12px under every section paragraph on top of the 8px flex gap. */
.bv-pd__details-body .bv-pd__sec { display: flex; flex-direction: column; gap: 8px; }
.bv-pd__details-body .bv-pd__sec + .bv-pd__sec { margin-top: 12px; }
.bv-pd__details-body .bv-pd__sec-label {
    margin: 0;
    font-family: var(--pd-sans);
    font-weight: 500;
    font-size: 16px;
    line-height: 20px;
    letter-spacing: .5px;
    color: var(--pd-ink);
}
.bv-pd__details-body .bv-pd__sec-text {
    margin: 0;
    font-family: var(--pd-sans);
    font-weight: 400;
    font-size: 16px;
    line-height: 20px;
    color: var(--pd-muted);
}
/* The product description is authored HTML, so it can carry its own <p>/<ul>/<strong>. */
.bv-pd__details-body .bv-pd__sec-text > p { margin: 0 0 8px; }
.bv-pd__details-body .bv-pd__sec-text > p:last-child { margin-bottom: 0; }
.bv-pd__details-body .bv-pd__sec-text ul,
.bv-pd__details-body .bv-pd__sec-text ol { margin: 0 0 8px; padding-left: 20px; }

/* Dot chips — "● Love & Romance". The dot is an 8px circle, not an icon asset.
   `list-style:none` + zero padding must out-specify the theme's list resets, hence the
   .bv-pd__details-body scope here too. */
.bv-pd__details-body .bv-pd__chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}
.bv-pd__details-body .bv-pd__chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin: 0;
    font-family: var(--pd-sans);
    font-weight: 400;
    font-size: 16px;
    line-height: 20px;
    color: var(--pd-muted);
    list-style: none;
}
.bv-pd__chip-dot {
    width: 8px;
    height: 8px;
    flex: 0 0 8px;
    border-radius: 999px;
    background: var(--pd-dot);
}
/* Three accordions now stack (Description + Care + Delivery) and the live PDP zeroes
   their margin. */
.bv-pd__details + .bv-pd__details { margin-top: 16px; }

@media (max-width: 1100px) {
    .bv-pd { grid-template-columns: 1fr; gap: 32px; }
    .bv-pd__gallery { position: static; top: auto; } /* don't pin once stacked */
}
@media (max-width: 700px) {
    .bv-pd__gallery { grid-template-columns: 84px minmax(0, 1fr); gap: 8px; }
    .bv-pd__thumb { width: 84px; height: 84px; }
    .bv-pd__sizes { flex-direction: column; }
    .bv-pd__size { flex-direction: row; justify-content: space-between; align-items: center; text-align: left; }
    .bv-pd__dates { flex-direction: column; }
    .bv-pd__actions { flex-direction: column; }
    .bv-pd__btn { min-width: 0; }
}

/* ============================================================================
   LIVE PDP — real WooCommerce single-product restyled to Bloom v2 (Figma 106:3161).
   Scope: body.bv-page--product (added on is_product()). Visual only — the real
   WC + plugin markup (variations, zip/date, gift, qty, add-to-cart) is reused
   and restyled; no logic/JS is changed.
   ============================================================================ */

/* Summary column rhythm */
body.bv-page--product .summary.entry-summary {
    font-family: var(--pd-sans);
    color: var(--pd-ink);
    display: flex;
    flex-direction: column;
}

/* Hide chrome the Figma design replaces (badges live on the image; description in accordion) */
body.bv-page--product .summary .shoptimizer-product-prevnext,
body.bv-page--product .summary > .onsale,
body.bv-page--product .summary .woocommerce-product-details__short-description { display: none; }

body.bv-page--product .summary .bv-pd__pill { margin: 0; }

/* Title */
body.bv-page--product .product_title.entry-title {
    font-family: var(--pd-serif);
    font-weight: 400;
    font-size: clamp(40px, 5vw, 64px);
    line-height: 1.05;
    color: var(--pd-ink);
    margin: 0;
    padding: 0;
}

/* Rating */
body.bv-page--product .woocommerce-product-rating {
    display: flex; align-items: center; gap: 12px; margin: 0;
}
body.bv-page--product .woocommerce-product-rating .star-rating { color: var(--bv-star); float: none; margin: 0; }
body.bv-page--product .woocommerce-review-link { color: var(--pd-pink); font-size: 16px; }

/* Price */
body.bv-page--product p.price,
body.bv-page--product .cgkit-as-variation-price .price {
    font-family: var(--pd-sans);
    color: var(--pd-ink);
    margin: 0;
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
body.bv-page--product p.price ins,
body.bv-page--product p.price > .amount {
    font-weight: 600; font-size: 32px; color: var(--pd-ink); text-decoration: none; line-height: 1;
}
body.bv-page--product p.price del { color: var(--pd-muted); font-size: 20px; font-weight: 400; opacity: 1; }
body.bv-page--product p.price del .amount { font-weight: 400; }
/* save% is shown on the image badge instead of the inline ribbon */
body.bv-page--product .summary .sale-item.product-label,
body.bv-page--product .summary .product-label.type-bubble { display: none; }

body.bv-page--product .summary .bv-pd__social { margin: 0; }

/* Section labels (Choose your size / Zip / Date / Gift) */
body.bv-page--product table.variations .label label,
body.bv-page--product .thwepo-extra-options label.label-tag,
body.bv-page--product .thwepo-extra-options .label label,
body.bv-page--product .ced_sadc_form_gift label,
body.bv-page--product .date_picker label {
    font-family: var(--pd-sans);
    font-weight: 600;
    font-size: 20px;
    color: var(--pd-ink);
    text-transform: none;
}
body.bv-page--product .thwepo-extra-options .required { color: var(--pd-pink); }

/* Size variations → cards */
body.bv-page--product table.variations { border: 0; margin: 0; width: 100%; }
body.bv-page--product table.variations tbody,
body.bv-page--product table.variations tr,
body.bv-page--product table.variations td,
body.bv-page--product table.variations th { display: block; width: auto; padding: 0; border: 0; background: none; }
body.bv-page--product .cgkit-attribute-swatches {
    display: flex; gap: 12px; flex-wrap: wrap; margin: 12px 0 0; padding: 0; list-style: none;
}
body.bv-page--product .cgkit-attribute-swatch { margin: 0; list-style: none; }
body.bv-page--product .cgkit-attribute-swatches .cgkit-swatch.cgkit-button,
body.bv-page--product .cgkit-attribute-swatches button.cgkit-swatch {
    min-width: 150px;
    padding: 14px 16px;
    border: 2px solid var(--pd-line);
    border-radius: 6px;
    background: #fff;
    color: var(--pd-ink);
    font-family: var(--pd-sans);
    font-size: 18px;
    font-weight: 500;
    height: auto;
    line-height: 1.2;
    cursor: pointer;
    box-shadow: none;
}
body.bv-page--product .cgkit-attribute-swatches .cgkit-swatch-selected,
body.bv-page--product .cgkit-attribute-swatches .cgkit-swatch.cgkit-swatch-selected {
    border-color: var(--pd-pink); background: var(--pd-pink-bg); color: var(--pd-pink);
}
body.bv-page--product .cgkit-as-wrap .cgkit-swatch-title,
body.bv-page--product .cgkit-chosen-attribute,
body.bv-page--product .ckit-chosen-attribute_semicolon { display: none; }
body.bv-page--product table.variations select { display: none; }
body.bv-page--product .reset_variations { font-size: 14px; color: var(--pd-muted); }

/* ZIP card */
/* ZIP block: one cream card wrapping heading + input + help link (Figma 931:20238) */
body.bv-page--product .bv-live-zip {
    background: var(--pd-cream); border-radius: 6px; padding: 16px 16px;margin-bottom:60px;
}
body.bv-page--product .bv-live-zip .bv-live-h-zip { margin-top: 0; }
body.bv-page--product table.thwepo_variable {
    background: transparent; border-radius: 0; padding: 0; border: 0; margin: 0; width: 100%;
}
body.bv-page--product table.thwepo_variable tbody,
body.bv-page--product table.thwepo_variable tr,
body.bv-page--product table.thwepo_variable td,
body.bv-page--product table.thwepo_simple tbody,
body.bv-page--product table.thwepo_simple tr,
body.bv-page--product table.thwepo_simple td,
body.bv-page--product table.ced_sadc_form_gift tbody,
body.bv-page--product table.ced_sadc_form_gift tr,
body.bv-page--product table.ced_sadc_form_gift td { display: block; width: auto; padding: 0; border: 0; background: none; }
/* The ZIP row is moved out of its plugin table into .bv-live-zip; the bare
   tr/td then form an anonymous table that shrinks to content. Flatten any
   table parts inside the card so the input spans the full card width. */
body.bv-page--product .bv-live-zip table,
body.bv-page--product .bv-live-zip tbody,
body.bv-page--product .bv-live-zip tr,
body.bv-page--product .bv-live-zip td { display: block; width: 100%; padding: 0; border: 0; background: none; }
body.bv-page--product #zip_postal_code {
    width: 100%; height: 56px; padding: 0 16px;
    border: 1px solid var(--pd-gold); border-radius: 6px; background: #fff;
    font-family: var(--pd-cta); font-size: 18px; color: var(--pd-ink); box-shadow: none;
}

/* Date + gift */
body.bv-page--product table.thwepo_simple,
body.bv-page--product table.ced_sadc_form_gift { border: 0; margin: 0; width: 100%; }
body.bv-page--product #sddmwgm_datepicker {
    width: 100%; height: 56px; margin-top: 12px; padding: 0 16px;
    border: 1px solid var(--pd-input); border-radius: 6px; background: #fff;
    font-family: var(--pd-cta); font-size: 18px; color: var(--pd-ink); box-shadow: none; cursor: pointer;
}
body.bv-page--product .sddmwgm_gift_msg {
    width: 100%; min-height: 99px; margin-top: 12px; padding: 16px 16px 20px;
    border: 1px solid var(--pd-input); border-radius: 6px; background: #fff;
    font-family: var(--pd-cta); font-size: 18px; color: var(--pd-ink); box-shadow: none; resize: vertical;
}
body.bv-page--product .sddmwgm_gift_msg::placeholder { color: var(--pd-muted); opacity: 1; }

/* Add to Cart = ghost (white/gray/border); Proceed to Checkout (.bv-live-checkout)
   is the pink CTA. Ghost is the default so it stays correct even after WC
   re-renders the variation form and the button leaves .bv-live-actions. */
body.bv-page--product .single_add_to_cart_button,
body.bv-page--product .single_add_to_cart_button.button,
body.bv-page--product .single_add_to_cart_button.button.alt {
    background: #fff !important;
    box-shadow: none !important;
    border: 1px solid var(--pd-input) !important;
    color: var(--pd-muted) !important;
    min-height: 62px;
    border-radius: 6px !important;
    font-family: var(--pd-cta);
    font-weight: 600;
    font-size: 18px;
    text-transform: none;
    letter-spacing: 0;
}
body.bv-page--product .single_add_to_cart_button:hover { background: #fff !important; border-color: var(--pd-pink) !important; color: var(--pd-pink) !important; box-shadow: none !important; }

/* Two-column product layout (gallery left, summary right) — Figma 106:3161.
   Robust: pin gallery + summary to row 1; any other children (sticky ATC,
   reviews, modals, widgets) span full width on following rows. */
body.bv-page--product.single-product .product-details-wrapper {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 60px;
    align-items: start;
    /* match the top menu width/edges */
    max-width: var(--bv-h2-inner);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--bv-h2-pad);
    padding-right: var(--bv-h2-pad);
    box-sizing: border-box;
    /* parent theme sets overflow:hidden here, which kills position:sticky on the gallery */
    overflow: visible;
}
body.bv-page--product.single-product .product-details-wrapper > * { grid-column: 1 / -1; min-width: 0; }
body.bv-page--product.single-product .product-details-wrapper > .bv-pd__gallery {
    grid-column: 1; grid-row: 1;
}
body.bv-page--product.single-product .product-details-wrapper > .summary.entry-summary {
    grid-column: 2; grid-row: 1; width: auto !important; float: none !important; margin: 0 !important;
}
@media (max-width: 1100px) {
    body.bv-page--product.single-product .product-details-wrapper { grid-template-columns: 1fr; row-gap: 32px; }
    body.bv-page--product.single-product .product-details-wrapper > .bv-pd__gallery,
    body.bv-page--product.single-product .product-details-wrapper > .summary.entry-summary { grid-column: 1; grid-row: auto; }
}

/* Gallery: own thumbnail-rail gallery (bv_render_live_gallery) replaces the WC
   flexslider; reuses the .bv-pd__* gallery styles from the v2 preview. */
body.bv-page--product .bv-live-gallery { margin: 0; }
body.bv-page--product .bv-live-gallery--single { display: block; }
body.bv-page--product .bv-live-gallery--single .bv-pd__stage { width: 100%; }
/* hide the plugin disclaimer + field labels replaced by our Figma headings */
body.bv-page--product .product-details-wrapper > .disclaimer,
body.bv-page--product .thwepo_variable label.label-tag,
body.bv-page--product .thwepo_variable td.label abbr.required,
body.bv-page--product .thwepo_simple td.label label,
body.bv-page--product .thwepo_simple td.label abbr,
body.bv-page--product .ced_sadc_form_gift label,
body.bv-page--product .summary > .woocommerce-product-rating,
body.bv-page--product .product-widget,
body.bv-page--product .woocommerce-tabs.wc-tabs-wrapper { display: none !important; }
/* remove the CommerceKit sticky add-to-cart (desktop section + mobile bar) */
/* Flex-delivery notice on the PDP. It sits in the markup between the rating and the
   quantity box, so showing it used to push the Add-to-cart row down the moment a buyer
   picked one of the flex dates. Taking it out of flow keeps the button still; with no
   offsets set it stays exactly where it would have rendered, 10px lower. */
.commercekit-sticky-atc-intersector #textmsg {
    position: absolute;
    margin-top: 10px;
}

body.bv-page--product .commercekit-sticky-add-to-cart,
body.bv-page--product #cgkit-mobile-commercekit-sticky-atc { display: none !important; }
/* Breadcrumb: align above the product image (match the top-menu width/edges) */
body.bv-page--product .bv-live-crumbs {
    max-width: var(--bv-h2-inner);
    margin: 0 auto 24px;
    padding: 0 var(--bv-h2-pad);
    box-sizing: border-box;
}
/* "Delivering to {ZIP} · Same-day available · Change" bar (Figma 1477) */
body.bv-page--product .bv-live-deliverbar {
    background: #FFF7EC; border-top: 1px solid #F2E6CC; border-bottom: 1px solid #F2E6CC;
    font-size: 15px; color: #2A2424; padding: 11px var(--bv-h2-pad); margin: 0 0 20px;
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
body.bv-page--product .bv-live-deliverbar > * { display: inline; }
body.bv-page--product .bv-live-deliverbar__same { color: #00754F; font-weight: 600; }
body.bv-page--product .bv-live-deliverbar__sep { color: #C9C7CF; }
body.bv-page--product .bv-live-deliverbar__change { color: #C21E5A; font-weight: 600; text-decoration: underline; margin-left: auto; }

/* Size cards fill the row */
body.bv-page--product .cgkit-attribute-swatch { flex: 1 1 0; }
body.bv-page--product .cgkit-attribute-swatches .cgkit-swatch.cgkit-button,
body.bv-page--product .cgkit-attribute-swatches button.cgkit-swatch { width: 100%; text-align: center; }

/* ---- Full-Figma enhancements (JS-injected; live-pdp-v2.js) ---- */
body.bv-page--product .bv-live-h {
    font-family: var(--pd-sans); font-weight: 600; font-size: 20px; color: var(--pd-ink);
    line-height: 1.4;
}
/* Numbered step badges before the purchase sections (Tim mockup):
   1 Choose your size · 2 Where are we delivering? · 3 When do you want it? */
body.bv-page--product .bv-live-h-size,
body.bv-page--product .bv-live-h-zip,
body.bv-page--product .bv-live-h-date { display: flex; align-items: center; gap: 12px; }
body.bv-page--product .bv-live-h-size::before,
body.bv-page--product .bv-live-h-zip::before,
body.bv-page--product .bv-live-h-date::before {
    flex: 0 0 auto; display: inline-grid; place-items: center;
    width: 28px; height: 28px; border-radius: 50%;
    border: 1px solid var(--pd-line, #EAEAEA); color: var(--pd-ink);
    font-size: 15px; font-weight: 600; line-height: 1;
}
body.bv-page--product .bv-live-h-size::before { content: "1"; }
body.bv-page--product .bv-live-h-zip::before  { content: "2"; }
body.bv-page--product .bv-live-h-date::before { content: "3"; }
/* Simple products have no size step — the two remaining steps read 1 and 2.
   (body.product-type-simple comes from my_product_meta_body_class.) */
body.bv-page--product.product-type-simple .bv-live-h-zip::before  { content: "1"; }
body.bv-page--product.product-type-simple .bv-live-h-date::before { content: "2"; }

/* Non-size variation selectors (vendor products' collection / rose color…)
   are hidden — the first option is preselected server-side
   (bv_variation_defaults), so the variation still resolves. */
body.bv-page--product table.variations tr:has([name^="attribute_pa_"]:not([name*="size"])) { display: none !important; }
/* Variable product with NO size attribute at all: nothing selectable remains —
   drop the injected "Choose your options" heading + the empty table and number
   the remaining steps 1-2, same as a simple product. */
body.bv-page--product.product-no-size .bv-live-h-size,
body.bv-page--product.product-no-size table.variations { display: none !important; }
body.bv-page--product.product-no-size .bv-live-h-zip::before  { content: "1"; }
body.bv-page--product.product-no-size .bv-live-h-date::before { content: "2"; }
body.bv-page--product .bv-live-from { color: var(--pd-muted); font-size: 16px; font-weight: 400; margin-right: 4px; }

/* Figma 24px rhythm between the add-to-cart form groups (works for simple +
   variable; on variable, .single_variation_wrap wraps ZIP/date/buttons). */
body.bv-page--product .woocommerce-variation.single_variation:empty { margin: 0; min-height: 0; }
body.bv-page--product .bv-live-h-zip,
body.bv-page--product .bv-live-h-date,
body.bv-page--product .bv-live-h-gift,
body.bv-page--product .bv-live-actions { margin-top: 24px; }
body.bv-page--product .single_variation_wrap .bv-live-h-zip { margin-top: 0;margin-bottom:0; }

/* Size cards: our own card layer proxies clicks to the hidden real swatches */
body.bv-page--product.bv-live-hide-swatches .cgkit-as-wrap,
body.bv-page--product.bv-live-hide-swatches .reset_variations,
body.bv-page--product.bv-live-hide-swatches table.variations .label { display: none; }
body.bv-page--product .bv-live-sizes { display: flex; gap: 12px; flex-wrap: wrap; margin: 16px 0 4px; }
body.bv-page--product .bv-live-size {
    position: relative;
    flex: 1 1 0; min-width: 150px; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 5px; padding: 12px; border: 2px solid var(--pd-line); border-radius: 6px; background: #fff;
    cursor: pointer; text-align: center; font-family: var(--pd-sans); box-shadow: none;
}
/* Red "Most popular" ribbon pill on top of the recommended (Deluxe) card. */
body.bv-page--product .bv-live-size-ribbon {
    position: absolute; top: -11px; left: 50%; transform: translateX(-50%);
    background: var(--pd-pink, #E83E74); color: #fff;
    font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px;
    padding: 4px 12px; border-radius: 999px; white-space: nowrap; line-height: 1;
}
body.bv-page--product .bv-live-size.is-active { border-color: var(--pd-pink); background: var(--pd-pink-bg); }
body.bv-page--product .bv-live-size-name { font-size: 20px; color: var(--pd-ink); }
body.bv-page--product .bv-live-price { display: inline-flex; gap: 4px; align-items: center; font-weight: 600; font-size: 20px; color: var(--pd-pink); }
body.bv-page--product .bv-live-price del { color: var(--pd-muted); font-weight: 400; font-size: 14px; }
body.bv-page--product .bv-live-stems { font-size: 14px; color: var(--pd-muted); }
body.bv-page--product .bv-live-stems--popular { color: var(--pd-green, #00754F); font-weight: 700; }

/* ZIP help link */
body.bv-page--product .bv-live-ziphelp { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; color: var(--pd-pink); text-decoration: underline; font-size: 16px; }
body.bv-page--product .bv-live-ziphelp svg { flex-shrink: 0; }
.bv-live-date-error { color: #C0392B; font-size: 14px; font-weight: 500; margin: 8px 0 0; }
.bv-live-date-error[hidden] { display: none; }
body.bv-page--product .bv-live-proceed-msg { color: #C0392B; font-size: 14px; font-weight: 500; margin: 10px 0 0; }
body.bv-page--product .bv-live-proceed-msg[hidden] { display: none; }

/* Date pills */
body.bv-page--product .bv-live-dates { display: flex; gap: 8px; flex-wrap: wrap; }
body.bv-page--product .bv-live-actions #my-custom-cart-button-trigger,
body.bv-page--product .summary #my-custom-cart-button-trigger,
body.bv-page--product .summary form.cart .single_add_to_cart_button { display: none !important; }
body.bv-page--product .bv-live-date {
    flex: 1 1 0; min-width: 150px; height: 56px; display: inline-flex; align-items: center; justify-content: center;
    padding: 0 16px; border: 1px solid var(--pd-input); border-radius: 6px; background: #fff;
    font-family: var(--pd-cta); font-size: 18px; color: var(--pd-muted); cursor: pointer; text-align: center; box-shadow: none;
}
body.bv-page--product .bv-live-date.is-active { border-color: var(--pd-pink); background: var(--pd-pink-bg); color: var(--pd-ink); }
body.bv-page--product .bv-live-date--pick {
    color: var(--pd-muted); width: auto; margin-top: 0;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%237A7882' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4.5' width='18' height='16' rx='2'/%3E%3Cline x1='3' y1='9' x2='21' y2='9'/%3E%3Cline x1='8' y1='2.5' x2='8' y2='6.5'/%3E%3Cline x1='16' y1='2.5' x2='16' y2='6.5'/%3E%3C/svg%3E") no-repeat 16px center !important;
    border: 1px solid var(--pd-input) !important;
    padding-left: 46px !important;
    text-align: left !important;
    justify-content:start;
}
body.bv-page--product .bv-live-date--pick.is-active {
    color: var(--pd-ink) !important;
    background-color: var(--pd-pink-bg) !important;
    border-color: var(--pd-pink) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23E83E74' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4.5' width='18' height='16' rx='2'/%3E%3Cline x1='3' y1='9' x2='21' y2='9'/%3E%3Cline x1='8' y1='2.5' x2='8' y2='6.5'/%3E%3Cline x1='16' y1='2.5' x2='16' y2='6.5'/%3E%3C/svg%3E") !important;
}

/* Actions: Add to Cart (ghost, left) + Proceed to Checkout (pink, right) — matches Figma */
/* Add to Cart + Proceed to Checkout on one row. The parent (.bv-live-actions =
   the add-to-cart button's container) can be form.cart on simple products, so
   we float the two buttons 50/50 instead of flexing the parent. */
/* .summary is a flex column → flex items can't float. Wrap the two buttons in a
   flex-row .bv-live-actions div (JS) so they sit side by side. */
body.bv-page--product .bv-live-actions { display: flex !important; gap: 20px; align-items: stretch; width: 100%; margin-top: 24px; clear: both; }
body.bv-page--product .bv-live-actions > .single_add_to_cart_button,
body.bv-page--product .bv-live-actions > .bv-live-checkout {
    flex: 1 1 0 !important; width: auto !important; min-width: 0 !important; float: none !important; margin: 0 !important;
}
/* Add to Cart = ghost */
body.bv-page--product .single_add_to_cart_button {
    min-height: 62px; border-radius: 6px !important;
    background: #fff !important; color: var(--pd-muted) !important;
    border: 1px solid var(--pd-input) !important; box-shadow: none !important;
}
body.bv-page--product .single_add_to_cart_button:hover { border-color: var(--pd-pink) !important; color: var(--pd-pink) !important; background: #fff !important; }
/* Proceed to Checkout = pink */
body.bv-page--product .bv-live-checkout {
    min-height: 62px; border: 1px solid transparent; border-radius: 10px;
    background: var(--pd-pink); color: #FFFBF5; font-family: var(--pd-cta); font-weight: 600; font-size: 18px; cursor: pointer;
}
/* Transparent base border above reserves the space so the hover border adds no layout shift. */
body.bv-page--product .bv-live-checkout:hover { color: #E83E74; background: #fff; border-color: #E83E74; }
/* Custom product: the ENABLED (red/clickable) button uses the same hover as other PDPs — the
   general rule above (pink -> white). No custom :hover override here on purpose (owner: "when it
   becomes clickable, make the hover like on other product pages"). The DISABLED/grey state below
   keeps no hover via its own rule + pointer-events:none. */
/* Custom product only: while price/description are empty, bvCustomBtnState() adds .bv-live-disabled
   to the visible buy button — grey + non-clickable; it turns solid red (rules above) once both are
   filled. pointer-events:none also blocks the click that would drive bvCoProceed() -> the add. */
body.bv-product--custom .bv-live-checkout.bv-live-disabled,
body.bv-product--custom .bv-live-checkout.bv-live-disabled:hover,
body.bv-product--custom .bv-live-checkout.bv-live-disabled:focus,
body.bv-product--custom .bv-live-checkout.bv-live-disabled:active { background: #E6E6E6 !important; color: #9A9A9A !important; border-color: transparent !important; cursor: not-allowed !important; pointer-events: none !important; }
body.bv-page--product .bv-live-checkout { display: inline-flex; align-items: center; justify-content: center; gap: 10px; }
body.bv-page--product .bv-live-checkout__price { font-weight: 600; }
/* Trust line below the PDP actions: Secure checkout · No hidden fees · Freshness guaranteed */
body.bv-page--product .bv-live-assurances {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 6px 0; margin: 0 0 30px; color: var(--pd-muted); font-size: 14px;
}
body.bv-page--product .bv-live-assurances span { display: inline-flex; align-items: center; gap: 6px; }
body.bv-page--product .bv-live-assurances span svg { color: var(--pd-pink); flex: 0 0 auto; }
body.bv-page--product .bv-live-assurances span:not(:last-child)::after { content: "\00B7"; margin: 0 14px; color: var(--pd-input); }
/* Mobile: stack the two CTAs full-width so "Proceed to Checkout" reads on one line. */
@media (max-width: 600px) {
    body.bv-page--product .bv-live-actions { flex-direction: column; gap: 12px; }
    body.bv-page--product .bv-live-actions > .single_add_to_cart_button,
    body.bv-page--product .bv-live-actions > .bv-live-checkout { flex: 0 0 auto !important; width: 100% !important; }
}
/* qty stepper isn't in the Figma actions row */
body.bv-page--product .summary form.cart .quantity,
body.bv-page--product .summary form.cart .qib-container { display: none !important; }

/* Fixes: --bv-star token isn't in scope on the live PDP (it's on .bv-page), and
   the theme's .summary a / details summary:after override links + add a 2nd chevron. */
body.bv-page--product .bv-pd__rating .bv-pd__stars { color: #F8BD34; font-size: 18px; letter-spacing: 2px; }
body.bv-page--product .bv-pd__rating .bv-pd__rating-num { color: var(--pd-muted); font-size:22px; }
body.bv-page--product .bv-pd__rating .bv-pd__rating-link { color: var(--pd-pink); }
body.bv-page--product input#zip_postal_code { border: 1px solid var(--pd-gold) !important; background: #fff !important; }
body.bv-page--product .bv-pd__details summary:after,
body.bv-page--product .summary details.bv-pd__details > summary:after { content: none !important; display: none !important; }

/* Chrome blocks already carry their own .bv-pd__* styling */
body.bv-page--product .summary .bv-pd__express,
body.bv-page--product .summary .bv-pd__assure,
body.bv-page--product .summary .bv-pd__details { margin: 0; }
/* …except the Care block, which must not butt against Description. */
body.bv-page--product .summary .bv-pd__details + .bv-pd__details { margin-top: 16px; }

/* ---- Reviews: "What customers say" (Figma 106:3297) ---- */
.bv-page--product .bv-rv {
    margin-top: 80px;
    display: flex;
    flex-direction: column;
    gap: 40px;
    font-family: var(--pd-sans);
    color: var(--pd-ink);
}
.bv-rv__head { display: flex; flex-direction: column; gap: 20px; max-width: 600px; }
.bv-rv__title {
    font-family: var(--pd-serif);
    font-weight: 400;
    font-size: clamp(36px, 4vw, 48px);
    line-height: 1.05;
    color: var(--pd-ink);
    margin: 0;
}
.bv-rv__sub { margin: 0; font-size: 20px; color: var(--pd-muted); }

.bv-rv__body { display: flex; flex-direction: column; gap: 33px; }

.bv-rv__summary {
    display: grid;
    grid-template-columns: minmax(140px, max-content) minmax(0, 1fr);
    gap: 80px;
    align-items: center;
}
.bv-rv__score { display: flex; flex-direction: column; gap: 8px; }
.bv-rv__score-num {
    font-family: var(--pd-serif);
    font-weight: 400;
    font-size: 64px;
    line-height: 1;
    color: var(--pd-pink);
}
.bv-rv__stars { color: #F2B400; font-size: 24px; letter-spacing: 2px; }
.bv-rv__score-based { font-size: 18px; color: var(--pd-muted); }

.bv-rv__bars { display: flex; flex-direction: column; gap: 12px; width: 100%; }
.bv-rv__bar-row { display: grid; grid-template-columns: 32px minmax(0, 1fr) 40px; gap: 12px; align-items: center; }
.bv-rv__bar-label { font-size: 14px; font-weight: 700; color: var(--pd-muted); white-space: nowrap; }
.bv-rv__bar-track { height: 8px; border-radius: 4px; background: var(--pd-pink-bg); overflow: hidden; }
.bv-rv__bar-fill { display: block; height: 100%; border-radius: 4px; background: var(--pd-pink); }
.bv-rv__bar-pct { font-size: 14px; font-weight: 700; color: var(--pd-ink); text-align: right; }

.bv-rv__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.bv-rv__card {
    border: 1px solid var(--pd-input);
    border-radius: 14px;
    background: #fff;
    padding: 21px 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.bv-rv__card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.bv-rv__author-wrap { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.bv-rv__author { font-weight: 700; font-size: 16px; letter-spacing: .5px; color: var(--pd-ink); }
.bv-rv__verified {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    color: green;
    padding: 4px 11px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 500;
}
.bv-rv__tag {
    display: inline-flex;
    align-items: center;
    background: var(--pd-cream);
    color: var(--pd-gold);
    padding: 2px 16px;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
}
.bv-rv__card-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.bv-rv__card-stars { color: #F2B400; font-size: 16px; letter-spacing: 1px; }
.bv-rv__card-date { font-size: 14px; color: var(--pd-muted); display:none; }
.bv-rv__card-text {
    margin: 0;
    font-size: 16px;
    line-height: 20px;
    color: var(--pd-ink);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.bv-rv__more { align-self: flex-end; font-size: 16px; font-weight: 600; color: var(--pd-pink); display:none; }
.bv-rv__more:hover { text-decoration: underline; }
.bv-rv__see-all { align-self: center; font-size: 16px; font-weight: 600; color: var(--pd-pink); background: none; border: 0; cursor: pointer; font-family: inherit; padding: 4px; }
.bv-rv__see-all:hover { text-decoration: underline; }
/* Extra review cards stay hidden until "See all" expands the grid. */
.bv-rv__grid:not(.is-expanded) .bv-rv__card--extra { display: none; }

@media (max-width: 900px) {
    .bv-rv__summary { grid-template-columns: 1fr; gap: 24px; }
    .bv-rv__grid { grid-template-columns: 1fr; }
}

/* ---- "Write a review" form (v2) ---- */
.bv-rv__write { margin-top: 33px; border-top: 1px solid var(--pd-input); padding-top: 33px; }
.bv-rv__form-title { font-size: 24px; font-weight: 700; color: var(--pd-ink); margin: 0 0 20px; }
.bv-rv__verify-note { font-size: 16px; color: var(--pd-muted); margin: 0; }
.bv-rv__form { display: flex; flex-direction: column; gap: 16px; max-width: 600px; }
.bv-rv__form p { margin: 0; }
.bv-rv__form-rating { display: flex; flex-direction: column; gap: 8px; }
.bv-rv__form-rating-label,
.bv-rv__form-field label { font-size: 14px; font-weight: 600; color: var(--pd-ink); }
.bv-rv__form-stars { display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; gap: 4px; }
.bv-rv__form-stars input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.bv-rv__form-stars label { font-size: 30px; line-height: 1; color: #d9d9d9; cursor: pointer; transition: color .12s; }
.bv-rv__form-stars input:checked ~ label,
.bv-rv__form-stars label:hover,
.bv-rv__form-stars label:hover ~ label { color: var(--pd-gold); }
.bv-rv__form-field { display: flex; flex-direction: column; gap: 6px; }
.bv-rv__form input[type="text"],
.bv-rv__form input[type="email"],
.bv-rv__form-textarea {
    width: 100%;
    border: 1px solid var(--pd-input);
    border-radius: 10px;
    padding: 12px 14px;
    font: inherit;
    color: var(--pd-ink);
    background: #fff;
    box-sizing: border-box;
}
.bv-rv__form-textarea { resize: vertical; min-height: 120px; }
.bv-rv__form input:focus,
.bv-rv__form-textarea:focus { outline: none; border-color: var(--pd-pink); }
.bv-rv__form .form-submit { margin: 0; }
.bv-rv__form-submit {
    align-self: flex-start;
    background: var(--pd-pink);
    color: #fff;
    border: 0;
    border-radius: 999px;
    padding: 14px 32px;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity .12s;
}
.bv-rv__form-submit:hover { opacity: .9; }

/* ---- Product carousels: Recently Viewed / You May Also Like ---- */
.bv-page--product .bv-pd-carousel {
    margin-top: 80px;
    display: flex;
    flex-direction: column;
    gap: 24px;
    font-family: var(--pd-sans);
}
.bv-pd-carousel__head { display: flex; align-items: center; }
.bv-pd-carousel__head--between { justify-content: space-between; gap: 16px; }
.bv-pd-carousel__title {
    font-family: var(--pd-serif);
    font-weight: 400;
    font-size: clamp(28px, 3vw, 40px);
    line-height: 1.05;
    color: var(--pd-ink);
    margin: 0;
}
.bv-pd-carousel__seeall { font-size: 16px; font-weight: 600; color: var(--pd-pink); white-space: nowrap; }
.bv-pd-carousel__seeall:hover { text-decoration: underline; }

.bv-pd-carousel__track {
    display: flex;
    gap: 20px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -ms-overflow-style: none;
    scrollbar-width: none;
}
.bv-pd-carousel__track::-webkit-scrollbar { display: none; }
.bv-pd-carousel__track>a{ min-height: 650px; }
.bv-page--product .bv-pd-carousel__track > .bv-card {
    flex: 0 0 calc((100% - 60px) / 4);
    scroll-snap-align: start;
}

.bv-pd-carousel__nav { display: flex; align-items: center; justify-content: center; gap: 16px; }
.bv-page--product .bv-pd-carousel__btn {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 1px solid var(--pd-line) !important;
    background: #fff !important;
    color: var(--pd-ink) !important;
    font-size: 22px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: border-color .15s ease, color .15s ease;
}
.bv-page--product .bv-pd-carousel__btn:hover { border-color: var(--pd-pink) !important; color: var(--pd-pink) !important; }
.bv-pd-carousel__dots { display: flex; align-items: center; gap: 8px; }
.bv-page--product .bv-pd-carousel__dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--pd-line) !important;
    border: 0 !important;
    padding: 0;
    cursor: pointer;
    transition: background .15s ease;
}
.bv-page--product .bv-pd-carousel__dot--active { background: var(--pd-pink) !important; }

@media (max-width: 1100px) {
    .bv-page--product .bv-pd-carousel__track > .bv-card { flex-basis: calc((100% - 20px) / 2); }
}
@media (max-width: 640px) {
    .bv-page--product .bv-pd-carousel__track > .bv-card { flex-basis: 82%; }
}

.bv-product__tabs { margin-top: 60px; }

.bv-product__section {
    margin-top: 60px;
    padding-top: 40px;
    border-top: 1px solid var(--bv-border);
}

.bv-product__section-title {
    font-family: var(--bv-serif);
    font-size: clamp(28px, 3vw, 40px);
    margin: 0 0 24px;
}

/* =========== CART =========== */

.bv-cart {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 40px var(--bv-container-pad) 80px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 40px;
    align-items: start;
}
/* Let the main column shrink instead of forcing the 380px summary past the
   viewport edge (grid items default to min-width:auto = min-content). */
.bv-cart > * { min-width: 0; }

.bv-cart__crumbs {
    grid-column: 1 / -1;
    color: var(--bv-text-muted);
    font-size: 13px;
    margin-bottom: 8px;
}

.bv-cart__title {
    grid-column: 1 / -1;
    font-family: var(--bv-serif);
    font-size: clamp(36px, 4vw, 56px);
    margin: 0 0 24px;
}

.bv-cart__list {
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 20px;
    background: #fff;
}

.bv-cart-row {
    display: grid;
    grid-template-columns: 100px 1fr auto;
    gap: 16px;
    padding: 20px 0;
    border-bottom: 1px solid var(--bv-border);
}
.bv-cart-row:last-child { border-bottom: 0; }

.bv-cart-row__img {
    width: 100px;
    height: 100px;
    border-radius: var(--bv-radius-sm);
    overflow: hidden;
    background: #f5f5f5;
}
.bv-cart-row__img img { width: 100%; height: 100%; object-fit: cover; }

.bv-cart-row__name {
    font-family: var(--bv-serif);
    font-size: 20px;
    margin: 0 0 4px;
}

.bv-cart-row__meta { color: var(--bv-text-muted); font-size: 13px; }

.bv-cart-row__price { font-weight: 600; font-size: 16px; text-align: right; }

.bv-cart__qty {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-sm);
    overflow: hidden;
    margin-top: 8px;
}
.bv-cart__qty button {
    width: 32px;
    height: 32px;
    background: #fff;
    color: var(--bv-text);
    font-size: 18px;
    cursor: pointer;
}
.bv-cart__qty input {
    width: 40px;
    height: 32px;
    text-align: center;
    border: 0;
    font-family: inherit;
    font-size: 14px;
}

.bv-cart__empty {
    padding: 60px 32px;
    text-align: center;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    background: var(--bv-pink-50);
}
.bv-cart__empty-icon {
    width: 88px;
    height: 88px;
    border-radius: 50%;
    background: #fff;
    color: #C21E5A;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
}
.bv-cart__empty-icon svg { width: 44px; height: 44px; }
.bv-cart__empty-title {
    font-family: var(--bv-serif);
    font-size: 28px;
    margin: 0 0 8px;
}
.bv-cart__empty-text {
    color: var(--bv-text-muted);
    margin: 0 0 24px;
    max-width: 380px;
    margin-left: auto;
    margin-right: auto;
}

.bv-cart__summary {
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 24px;
    background: #fff;
    position: sticky;
    top: 100px;
}

.bv-cart__summary-title {
    font-family: var(--bv-serif);
    font-size: 24px;
    margin: 0 0 16px;
}

.bv-cart__sum-row {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    padding: 8px 0;
    color: var(--bv-text-2);
}
.bv-cart__sum-row--total {
    border-top: 1px solid var(--bv-border);
    padding-top: 16px;
    margin-top: 8px;
    font-weight: 600;
    font-size: 18px;
    color: var(--bv-text);
}

.bv-cart__checkout {
    display: block;
    width: 100%;
    height: 56px;
    background: var(--bv-pink);
    color: #fff;
    border-radius: var(--bv-radius-sm);
    border: 0;
    font-weight: 600;
    font-size: 16px;
    cursor: pointer;
    margin-top: 20px;
    transition: background .15s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.bv-cart__checkout:hover { background: var(--bv-pink-hover); }

.bv-zipform {
    display: flex;
    gap: 8px;
    position: relative;
}
/* ZIP autocomplete dropdown on the home ZIP fields (items reuse .co-zip__result). */
.bv-zipac {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 30;
    margin-top: 4px;
    background: #fff;
    border: 1px solid #e6e6e6;
    border-radius: 10px;
    box-shadow: 0 12px 30px rgba(0, 0, 0, .12);
    max-height: 280px;
    overflow: auto;
    text-align: left;
}
.bv-zipac[hidden] { display: none; }
.bv-zipac .co-zip__result:first-child { border-top: 0; }

/* =========== PRODUCTS GRID (carousel-friendly) =========== */

.bv-page .bv-products-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

/* =========== SEARCH =========== */

.bv-search {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 40px var(--bv-container-pad) 80px;
}

.bv-search__state {
    background: #fff;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 32px;
    margin-bottom: 32px;
    box-shadow: 0 1px 3px rgba(0,0,0,.02);
}

.bv-search__state-tag {
    display: inline-block;
    background: var(--bv-text);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .08em;
    padding: 4px 12px;
    border-radius: var(--bv-radius-pill);
    margin-bottom: 16px;
}

.bv-search__bar {
    position: relative;
    display: flex;
    align-items: center;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-sm);
    background: #fff;
    padding: 0 14px;
    height: 52px;
    margin-bottom: 20px;
    transition: border-color .15s ease;
}
.bv-search__bar:focus-within { border-color: var(--bv-pink); }

.bv-search__bar svg {
    width: 20px; height: 20px;
    color: var(--bv-text-muted);
    margin-right: 10px;
    flex-shrink: 0;
}

.bv-search__bar input {
    flex: 1;
    border: 0;
    outline: none;
    height: 100%;
    font-family: inherit;
    font-size: 15px;
    color: var(--bv-text);
    background: transparent;
}

.bv-search__cancel {
    color: var(--bv-text-muted);
    font-size: 14px;
    background: none;
    border: 0;
    cursor: pointer;
    padding: 8px;
    margin-right: -8px;
}
.bv-search__cancel:hover { color: #C21E5A; }

.bv-search__block { margin-bottom: 20px; }
.bv-search__block:last-child { margin-bottom: 0; }

.bv-search__block-label {
    font-size: 13px;
    font-weight: 600;
    color: var(--bv-text-2);
    margin: 0 0 12px;
    text-transform: none;
    letter-spacing: 0;
}

.bv-search__chips {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.bv-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-pill);
    background: #fff;
    font-size: 13px;
    color: var(--bv-text-2);
    cursor: pointer;
    transition: border-color .15s ease, background .15s ease;
}
.bv-chip:hover { border-color: var(--bv-pink); color: #C21E5A; }
.bv-chip--close::after {
    content: "×";
    font-size: 16px;
    line-height: 1;
    color: var(--bv-text-muted);
    margin-left: 2px;
}

.bv-search__sugg {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-sm);
    overflow: hidden;
}
.bv-search__sugg-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 18px;
    border-bottom: 1px solid var(--bv-border);
    color: var(--bv-text-2);
    font-size: 14px;
    cursor: pointer;
    background: #fff;
}
.bv-search__sugg-item:last-child { border-bottom: 0; }
.bv-search__sugg-item:hover { background: var(--bv-pink-50); color: #C21E5A; }
.bv-search__sugg-count { color: var(--bv-text-muted); font-size: 13px; }

.bv-search__notice {
    background: #FFF4E5;
    border: 1px solid #FFD9A6;
    color: #8A5300;
    padding: 12px 16px;
    border-radius: var(--bv-radius-sm);
    font-size: 14px;
    margin-bottom: 20px;
}
.bv-search__notice a { color: #C21E5A; text-decoration: underline; }

.bv-search__noresult {
    text-align: center;
    padding: 40px 20px;
}
.bv-search__noresult-icon {
    font-size: 40px;
    color: var(--bv-text-muted);
    margin-bottom: 12px;
}
.bv-search__noresult-title {
    font-family: var(--bv-serif);
    font-size: clamp(24px, 2.5vw, 32px);
    margin: 0 0 8px;
}
.bv-search__noresult-text {
    color: var(--bv-text-muted);
    margin: 0 0 24px;
    max-width: 540px;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.5;
}
.bv-search__noresult-text a { color: #C21E5A; font-weight: 500; }

.bv-search__see-all {
    display: inline-block;
    padding: 12px 28px;
    background: var(--bv-pink-100);
    color: #C21E5A;
    border-radius: var(--bv-radius-sm);
    font-weight: 500;
    font-size: 14px;
    margin-top: 20px;
}
.bv-search__see-all:hover { background: var(--bv-pink); color: #fff; }

.bv-search__products {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 16px;
}

.bv-search__products .bv-card__media { aspect-ratio: 1; }
.bv-search__products .bv-card__title { font-size: 13px; }
.bv-search__products .bv-card__price { font-size: 14px; }

/* =========== CHECKOUT =========== */

.bv-checkout {
    max-width: 1520px;
    margin: 0 auto;
    padding: 32px var(--bv-container-pad) 80px;
    display: grid;
    grid-template-columns: 1fr 400px;
    gap: 32px;
    align-items: start;
}

.bv-checkout__main { display: flex; flex-direction: column; gap: 24px; }
.bv-checkout__aside { position: sticky; top: 100px; }

.bv-stepper {
    grid-column: 1 / -1;
    width: 100%;
    max-width: 1047px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 8px 0 24px;
    background: transparent;
    border: 0;
}

.bv-stepper__item {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--bv-text-muted);
    font-size: 15px;
    flex: none;
}

.bv-stepper__num {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #EDEDED;
    border: 0;
    color: #9A9A9A;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 20px;
    flex: none;
}

.bv-stepper__item--active .bv-stepper__num {
    background: #F7E6C0;
    border: 0;
    color: #C98A1E;
}
.bv-stepper__item--active { color: #C98A1E; font-weight: 700; }

.bv-stepper__item--done .bv-stepper__num {
    background: #C98A1E;
    border: 0;
    color: #fff;
}
.bv-stepper__item--done .bv-stepper__num::before { content: "✓"; }
.bv-stepper__item--done .bv-stepper__num span { display: none; }
.bv-stepper__item--done { color: var(--bv-text); }

.bv-stepper__sub {
    font-size: 11px;
    color: var(--bv-text-muted);
    display: block;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.bv-stepper__sep {
    flex: 1;
    height: 0;
    border-top: 2px dashed #D5D5D5;
    background: transparent;
    border-radius: 0;
}

@media (max-width: 600px) {
    .bv-stepper { gap: 8px; padding-bottom: 16px; }
    .bv-stepper__item { font-size: 13px; gap: 8px; }
    .bv-stepper__num { width: 36px; height: 36px; font-size: 16px; }
}

.bv-co-card {
    background: #fff;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 28px;
}

.bv-co-card__title {
    font-family: var(--bv-serif);
    font-size: clamp(24px, 2.4vw, 32px);
    margin: 0 0 8px;
    color: var(--bv-text);
}

.bv-co-card__sub {
    color: var(--bv-text-muted);
    font-size: 14px;
    margin: 0 0 20px;
}

.bv-co-banner {
    background: var(--bv-pink-100);
    border-radius: var(--bv-radius-md);
    padding: 16px 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    color: var(--bv-text);
    font-size: 14px;
    flex-wrap: wrap;
}

.bv-co-banner__action {
    color: #C21E5A;
    font-weight: 600;
    font-size: 14px;
    text-decoration: underline;
    cursor: pointer;
    background: none;
    border: 0;
}

.bv-toggle-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    background: #fff;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    font-size: 14px;
    color: var(--bv-text);
}

.bv-toggle {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
}
.bv-toggle input { opacity: 0; width: 0; height: 0; }
.bv-toggle__slider {
    position: absolute;
    inset: 0;
    background: var(--bv-border);
    border-radius: 999px;
    cursor: pointer;
    transition: background .15s ease;
}
.bv-toggle__slider::before {
    content: "";
    position: absolute;
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background: #fff;
    border-radius: 50%;
    transition: transform .15s ease;
}
.bv-toggle input:checked + .bv-toggle__slider { background: var(--bv-pink); }
.bv-toggle input:checked + .bv-toggle__slider::before { transform: translateX(20px); }

.bv-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.bv-field__label {
    font-size: 13px;
    color: var(--bv-text-2);
    font-weight: 500;
}
.bv-field__input,
.bv-field__select,
.bv-field__textarea {
    height: 48px;
    padding: 0 14px;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-sm);
    font-family: inherit;
    font-size: 14px;
    background: #fff;
    color: var(--bv-text);
    transition: border-color .15s ease;
    width: 100%;
}
.bv-field__textarea { height: auto; min-height: 80px; padding: 12px 14px; resize: vertical; }
.bv-field__input:focus,
.bv-field__select:focus,
.bv-field__textarea:focus { outline: none; border-color: var(--bv-pink); }
.bv-field__input::placeholder { color: #B0B0B0; }

.bv-fields-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 16px;
}
.bv-fields-row--3 { grid-template-columns: 1fr 1fr 1fr; }
.bv-fields-row--single { grid-template-columns: 1fr; }

.bv-checkbox {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: var(--bv-text-2);
    cursor: pointer;
}
.bv-checkbox input { accent-color: var(--bv-pink); width: 16px; height: 16px; }

.bv-radio-card-list { display: flex; flex-direction: column; gap: 10px; }
.bv-radio-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 18px;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-sm);
    background: #fff;
    cursor: pointer;
    font-size: 14px;
}
.bv-radio-card--active { border-color: var(--bv-pink); background: var(--bv-pink-50); }
.bv-radio-card input { accent-color: var(--bv-pink); }
.bv-radio-card__title { font-weight: 500; color: var(--bv-text); flex: 1; }
.bv-radio-card__price { color: var(--bv-text); font-weight: 600; }

/* Amber highlighted note (surprise / no full address) */
.bv-co-note { display: flex; align-items: flex-start; gap: 10px; margin-top: 16px; padding: 14px 16px; background: #FFF7EC; border: 1px solid #FBE7C2; border-radius: 10px; font-size: 14px; color: var(--bv-text-2); cursor: pointer; line-height: 1.5; }
.bv-co-note input { accent-color: var(--bv-pink); width: 16px; height: 16px; margin-top: 2px; flex-shrink: 0; }

/* Tip selector */
.bv-co-card--tip { background: var(--bv-pink-50); }
.bv-tip__options { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
body.bv-body button.bv-tip__opt { flex: 1 1 0; min-width: 72px; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 12px 8px; border: 1px solid var(--bv-border); border-radius: 10px; background: #fff; cursor: pointer; font-weight: 600; font-size: 15px; color: var(--bv-text); }
.bv-tip__opt small { font-weight: 400; font-size: 12px; color: var(--bv-text-muted); }
body.bv-body button.bv-tip__opt.is-active { border-color: var(--bv-pink); background: #fff; color: #C21E5A; box-shadow: 0 0 0 1px var(--bv-pink) inset; }

.bv-co-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 24px;
    background: #fff;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
}

.bv-co-actions .bv-btn { height: 52px; padding: 0 24px; }
.bv-co-actions .bv-btn--primary { min-width: 240px; }

.bv-btn--outline {
    background: #fff;
    color: var(--bv-text);
    border: 1px solid var(--bv-border);
}
.bv-btn--outline:hover { border-color: var(--bv-text); }

.bv-trust-row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 16px;
}
.bv-trust-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    background: #E6F7EE;
    color: #2E7D32;
    border-radius: var(--bv-radius-sm);
    font-size: 13px;
    font-weight: 500;
}
.bv-trust-pill svg { width: 18px; height: 18px; }

/* ---- Order summary (right column) ---- */

.bv-summary {
    background: #fff;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 24px;
}

.bv-summary__title {
    font-family: var(--bv-serif);
    font-size: 24px;
    margin: 0 0 16px;
}

.bv-summary__item {
    display: grid;
    grid-template-columns: 64px 1fr auto;
    gap: 12px;
    padding-bottom: 16px;
    margin-bottom: 16px;
    border-bottom: 1px solid var(--bv-border);
}

.bv-summary__img {
    width: 64px;
    height: 64px;
    border-radius: var(--bv-radius-sm);
    overflow: hidden;
    background: #f5f5f5;
}
.bv-summary__img img { width: 100%; height: 100%; object-fit: cover; }

.bv-summary__name { font-weight: 500; font-size: 14px; margin: 0 0 4px; color: var(--bv-text); }
.bv-summary__meta { color: var(--bv-text-muted); font-size: 12px; }
.bv-summary__price { font-weight: 600; font-size: 14px; white-space: nowrap; }
.bv-summary__price del { color: var(--bv-text-muted); font-weight: 400; font-size: 12px; display: block; }

.bv-summary__addmsg {
    width: 100%;
    background: var(--bv-pink-50);
    color: #C21E5A;
    border: 1px dashed var(--bv-pink-100);
    border-radius: var(--bv-radius-sm);
    padding: 10px 14px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    margin-bottom: 12px;
}
.bv-summary__addmsg:hover { background: var(--bv-pink-100); }

.bv-summary__discount {
    display: flex;
    gap: 8px;
    margin: 16px 0;
}
.bv-summary__discount input {
    flex: 1;
    height: 44px;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-sm);
    padding: 0 12px;
    font-family: inherit;
    font-size: 14px;
}
.bv-summary__discount button {
    height: 44px;
    padding: 0 18px;
    background: var(--bv-text);
    color: #fff;
    border-radius: var(--bv-radius-sm);
    font-weight: 500;
    font-size: 14px;
    cursor: pointer;
}

.bv-summary__rows { display: flex; flex-direction: column; gap: 8px; }
.bv-summary__row {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    color: var(--bv-text-2);
}
.bv-summary__total {
    background: var(--bv-pink-50);
    margin: 16px -24px -24px;
    padding: 18px 24px;
    border-radius: 0 0 var(--bv-radius-md) var(--bv-radius-md);
    display: flex;
    justify-content: space-between;
    font-weight: 600;
    font-size: 18px;
    color: var(--bv-text);
}

/* ---- Recipient + saved address card (sign-in) ---- */

.bv-saved-addr {
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 16px 20px;
    margin-bottom: 12px;
    background: #fff;
}
.bv-saved-addr--active {
    border-color: var(--bv-pink);
    background: var(--bv-pink-50);
}
.bv-saved-addr__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}
.bv-saved-addr__label { font-weight: 600; color: var(--bv-text); display: inline-flex; align-items: center; gap: 8px; }
.bv-saved-addr__badge {
    background: var(--bv-pink);
    color: #fff;
    font-size: 11px;
    padding: 2px 8px;
    border-radius: var(--bv-radius-pill);
    text-transform: uppercase;
    font-weight: 700;
    letter-spacing: .04em;
}
.bv-saved-addr__lines { font-size: 13px; color: var(--bv-text-2); line-height: 1.5; }
.bv-saved-addr__actions {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    font-size: 13px;
}
.bv-saved-addr__actions button {
    background: none;
    border: 0;
    color: #C21E5A;
    font-weight: 500;
    padding: 4px 10px;
    border-radius: var(--bv-radius-sm);
    cursor: pointer;
}
.bv-saved-addr__actions button:hover { background: var(--bv-pink-100); }

.bv-add-address {
    width: 100%;
    border: 1px dashed var(--bv-border-dark);
    background: #fff;
    color: #C21E5A;
    padding: 16px;
    border-radius: var(--bv-radius-md);
    font-weight: 500;
    cursor: pointer;
    transition: border-color .15s ease;
}
.bv-add-address:hover { border-color: var(--bv-pink); }

/* ---- Multi-delivery item row ---- */

.bv-md-item {
    display: grid;
    grid-template-columns: 80px 1fr auto;
    gap: 16px;
    padding: 16px 0;
    border-bottom: 1px solid var(--bv-border);
}
.bv-md-item:last-child { border-bottom: 0; }
.bv-md-item__img {
    width: 80px;
    height: 80px;
    border-radius: var(--bv-radius-sm);
    overflow: hidden;
    background: #f5f5f5;
}
.bv-md-item__img img { width: 100%; height: 100%; object-fit: cover; }
.bv-md-item__name { font-weight: 500; font-size: 14px; margin: 0 0 4px; }
.bv-md-item__meta { color: var(--bv-text-muted); font-size: 12px; margin-bottom: 8px; }
.bv-md-item__send {
    min-width: 220px;
    align-self: center;
}

@media (max-width: 900px) {
    .bv-checkout { grid-template-columns: 1fr; }
    .bv-checkout__aside { position: static; }
    .bv-fields-row, .bv-fields-row--3 { grid-template-columns: 1fr; }
    .bv-stepper { flex-direction: column; align-items: flex-start; }
    .bv-stepper__sep { display: none; }
    .bv-md-item { grid-template-columns: 64px 1fr; }
    .bv-md-item__send { grid-column: 1 / -1; min-width: 0; }
}

/* =========== ACCOUNT =========== */

.bv-acc-page {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 32px var(--bv-container-pad) 0;
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 32px;
    align-items: start;
}

.bv-acc-side {
    background: #fff;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 12px;
    position: sticky;
    top: 100px;
}

.bv-acc-side__link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: var(--bv-radius-sm);
    color: var(--bv-text-2);
    font-size: 14px;
    font-weight: 500;
    transition: background .15s ease, color .15s ease;
}
.bv-acc-side__link:hover { background: var(--bv-pink-50); color: #C21E5A; }
.bv-acc-side__link--active { background: var(--bv-pink-100); color: #C21E5A; font-weight: 600; }
.bv-acc-side__link svg { width: 18px; height: 18px; }

.bv-acc-main { display: flex; flex-direction: column; gap: 32px; }

.bv-acc-greeting {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 12px;
}
.bv-acc-greeting__hi {
    font-family: var(--bv-serif);
    font-size: clamp(32px, 3.4vw, 44px);
    margin: 0;
    line-height: 1.05;
}
.bv-acc-greeting__sub { color: var(--bv-text-muted); font-size: 14px; margin: 0; }

.bv-acc-cols {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.bv-acc-block {
    background: #fff;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    padding: 24px;
}

.bv-acc-block__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 16px;
}
.bv-acc-block__title {
    font-family: var(--bv-serif);
    font-size: 22px;
    margin: 0;
    color: var(--bv-text);
    display: inline-flex;
    align-items: center;
    gap: 10px;
}
.bv-acc-block__count {
    background: var(--bv-pink-100);
    color: #C21E5A;
    border-radius: var(--bv-radius-pill);
    padding: 2px 10px;
    font-size: 12px;
    font-weight: 700;
    font-family: var(--bv-sans);
}
.bv-acc-block__action {
    color: #C21E5A;
    font-size: 13px;
    font-weight: 500;
}

.bv-acc-tile {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--bv-border);
}
.bv-acc-tile:last-child { border-bottom: 0; }
.bv-acc-tile__img {
    width: 80px;
    height: 80px;
    border-radius: var(--bv-radius-sm);
    overflow: hidden;
    background: #f5f5f5;
}
.bv-acc-tile__img img { width: 100%; height: 100%; object-fit: cover; }
.bv-acc-tile__title { font-weight: 500; font-size: 14px; margin: 0 0 2px; }
.bv-acc-tile__meta { color: var(--bv-text-muted); font-size: 12px; line-height: 1.4; }
.bv-acc-tile__cta {
    color: #C21E5A;
    font-size: 13px;
    font-weight: 500;
    margin-top: 4px;
    display: inline-block;
}

.bv-reminder-row {
    display: grid;
    grid-template-columns: 36px 1fr auto;
    gap: 12px;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px solid var(--bv-border);
}
.bv-reminder-row:last-child { border-bottom: 0; }
.bv-reminder-row__num {
    width: 36px; height: 36px;
    border-radius: 50%;
    background: var(--bv-pink-100);
    color: #C21E5A;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 14px;
    font-family: var(--bv-sans);
}
.bv-reminder-row__title { font-weight: 500; font-size: 14px; }
.bv-reminder-row__meta { color: var(--bv-text-muted); font-size: 12px; }
.bv-reminder-row__action {
    background: var(--bv-pink);
    color: #fff;
    padding: 6px 14px;
    border-radius: var(--bv-radius-sm);
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
}

.bv-tabs {
    display: flex;
    gap: 4px;
    border-bottom: 1px solid var(--bv-border);
    margin-bottom: 20px;
    overflow-x: auto;
}
.bv-tab {
    padding: 10px 16px;
    color: var(--bv-text-muted);
    font-size: 14px;
    font-weight: 500;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    cursor: pointer;
    white-space: nowrap;
    transition: color .15s ease, border-color .15s ease;
    background: none;
    border-left: 0;
    border-right: 0;
    border-top: 0;
}
.bv-tab--active { color: #C21E5A; border-bottom-color: var(--bv-pink); }
.bv-tab:hover { color: #C21E5A; }

.bv-order-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr auto;
    align-items: center;
    gap: 16px;
    padding: 16px 20px;
    border-bottom: 1px solid var(--bv-border);
    font-size: 14px;
}
.bv-order-row:last-child { border-bottom: 0; }
.bv-order-row__name { font-weight: 500; }
.bv-order-row__meta { color: var(--bv-text-muted); font-size: 13px; }
.bv-order-row__price { font-weight: 600; }
.bv-order-row__cta {
    color: #C21E5A;
    font-weight: 500;
    font-size: 13px;
}

.bv-order-detail {
    background: var(--bv-pink-50);
    border: 1px solid var(--bv-pink-100);
    border-radius: var(--bv-radius-md);
    padding: 24px;
    margin: 16px 0;
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 20px;
}
.bv-order-detail__img {
    width: 120px;
    height: 120px;
    border-radius: var(--bv-radius-sm);
    overflow: hidden;
    background: #fff;
}
.bv-order-detail__img img { width: 100%; height: 100%; object-fit: cover; }
.bv-order-detail__name {
    font-family: var(--bv-serif);
    font-size: 20px;
    margin: 0 0 8px;
}
.bv-order-detail__field {
    display: grid;
    grid-template-columns: 140px 1fr;
    gap: 12px;
    font-size: 13px;
    padding: 4px 0;
    color: var(--bv-text-2);
}
.bv-order-detail__field strong { color: var(--bv-text); font-weight: 500; }

.bv-order-detail__actions {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    grid-column: 2;
    flex-wrap: wrap;
}
.bv-order-detail__actions .bv-btn { height: 40px; padding: 0 16px; font-size: 13px; }

.bv-payment-row {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 16px;
    align-items: center;
    padding: 16px 20px;
    border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-md);
    margin-bottom: 12px;
    background: #fff;
}
.bv-payment-row--default {
    border-color: var(--bv-pink);
    background: var(--bv-pink-50);
}
.bv-payment-row__brand {
    background: var(--bv-text);
    color: #fff;
    font-weight: 700;
    font-size: 12px;
    padding: 4px 10px;
    border-radius: var(--bv-radius-sm);
    font-family: var(--bv-sans);
    letter-spacing: .04em;
}
.bv-payment-row__title { font-weight: 600; font-size: 14px; }
.bv-payment-row__title .badge {
    background: var(--bv-pink);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 2px 8px;
    margin-left: 8px;
    border-radius: var(--bv-radius-pill);
    text-transform: uppercase;
    letter-spacing: .04em;
}
.bv-payment-row__meta { color: var(--bv-text-muted); font-size: 13px; }
.bv-payment-row__actions { display: flex; gap: 8px; }
.bv-payment-row__actions button {
    background: none;
    border: 1px solid transparent;
    color: #C21E5A;
    font-weight: 500;
    padding: 6px 12px;
    border-radius: var(--bv-radius-sm);
    cursor: pointer;
    font-size: 13px;
}
.bv-payment-row__actions button:hover { background: var(--bv-pink-50); }

.bv-trust-band {
    background: var(--bv-pink-50);
    margin-top: 40px;
    padding: 40px 0;
}
.bv-trust-band__inner {
    max-width: var(--bv-container);
    margin: 0 auto;
    padding: 0 var(--bv-container-pad);
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.bv-trust-band__item {
    display: flex;
    align-items: flex-start;
    gap: 14px;
}
.bv-trust-band__icon {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--bv-pink-100);
    color: #C21E5A;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.bv-trust-band__icon svg { width: 22px; height: 22px; }
.bv-trust-band__title {
    font-weight: 600;
    font-size: 14px;
    margin: 0 0 4px;
}
.bv-trust-band__desc { color: var(--bv-text-muted); font-size: 12px; line-height: 1.4; margin: 0; }

@media (max-width: 1100px) {
    .bv-acc-page { grid-template-columns: 1fr; }
    /* Let the single-column tracks shrink to the viewport: grid items default
       to min-width:auto, so the non-shrinking nav row + order rows would
       otherwise force the whole page wider than the screen. */
    .bv-acc-side, .bv-acc-main { min-width: 0; }
    .bv-acc-side {
        position: static;
        display: flex;
        gap: 4px;
        overflow-x: auto;
        padding: 8px;
        -webkit-overflow-scrolling: touch;
    }
    .bv-acc-side__link { flex-shrink: 0; }
    /* Make the current section unmistakable in the mobile pill row — the default
       active tint (pink-50, near-white) reads as "not highlighted" here. The
       extra .bv-acc-side qualifier outranks the base rule that sets pink-50. */
    .bv-page--account .bv-acc-side .bv-acc-side__link--active {
        background: var(--bv-pink-100);
        color: #C21E5A;
        font-weight: 700;
        box-shadow: inset 0 0 0 1.5px var(--bv-pink);
    }
    .bv-acc-cols { grid-template-columns: 1fr; }
    .bv-order-row { grid-template-columns: 1fr 1fr; }
    .bv-order-detail { grid-template-columns: 80px 1fr; }
    .bv-order-detail__img { width: 80px; height: 80px; }
    .bv-order-detail__field { grid-template-columns: 1fr; gap: 0; padding: 6px 0; }
    .bv-trust-band__inner { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .bv-trust-band__inner { grid-template-columns: 1fr; }
    .bv-payment-row { grid-template-columns: 1fr; text-align: left; }
}

@media (max-width: 1100px) {
    .bv-policy { grid-template-columns: 1fr; gap: 32px; }
    .bv-policy__left { position: static; }
    .bv-catalog { grid-template-columns: 1fr; }
    .bv-filters { position: static; }
    .bv-catalog__grid { grid-template-columns: repeat(3, 1fr); }
    .bv-product__main { grid-template-columns: 60px 1fr; }
    .bv-product__info { grid-column: 1 / -1; }
    .bv-cart { grid-template-columns: 1fr; }
    .bv-cart__summary { position: static; }
    .bv-page .bv-products-row { grid-template-columns: repeat(2, 1fr); }
    .bv-search__products { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 640px) {
    .bv-page { --bv-container-pad: 16px; }
    .bv-policy { padding: 48px var(--bv-container-pad) 60px; }
    .bv-acc__summary { padding: 20px 16px; font-size: 15px; }
    .bv-acc__body { padding: 0 16px 20px; }
    .bv-404__inner { padding: 60px 16px; min-height: 560px; }
    .bv-404 { min-height: 560px; }
    .bv-catalog__grid { grid-template-columns: 1fr 1fr; gap: 12px; }
    .bv-product__main { grid-template-columns: 1fr; }
    .bv-product__thumbs { flex-direction: row; }
    .bv-product__thumb { width: 60px; height: 60px; }
    .bv-product__actions { flex-direction: column; }
    .bv-cart-row { grid-template-columns: 80px 1fr; }
    .bv-cart-row__price { grid-column: 2; text-align: left; }
    .bv-page .bv-products-row { grid-template-columns: 1fr 1fr; gap: 12px; }
    .bv-search__products { grid-template-columns: 1fr 1fr; gap: 12px; }
    .bv-search__state { padding: 20px 16px; }
}

/* =============================================================
   REAL SINGLE PRODUCT PAGE — Bloom v2 / Figma restyle
   CSS-only over the live WooCommerce + CommerceKit markup so
   variations, custom Zip/Date/Gift fields and AJAX add-to-cart
   keep working (same approach as the cart restyle). Figma 106:3161.
   ============================================================= */
body.single-product {
    --pd-pink: #E83E74;
    --pd-pink-bg: #FFECF6;
    --pd-pink-img: #FBDAE5;
    --pd-green: #00754F;
    --pd-green-bg: #E2FFF6;
    --pd-cream: #FFF7EC;
    --pd-gold: #DE9E09;
    --pd-ink: #2A2424;
    --pd-muted: #6B6973;
    /* Description-section dot chips (Figma 2905:36479). A lighter pink than --pd-pink
       #E83E74, so it is its own token rather than a hex sprinkled through the rules. */
    --pd-dot: #EC6BAD;
    --pd-line: #EAEAEA;
    --pd-input: #DDDDDD;
    --pd-serif: "Playfair Display","Gabriela", "DM Serif Display", Georgia, serif;
    --pd-sans: "Montserrat", "Inter", sans-serif;
    --pd-cta: "DM Sans", "Inter", sans-serif;
}

/* ---- Title / SKU / price ---- */
body.single-product .summary .product_title {
    font-family: var(--pd-serif) !important;
    font-weight: 600 !important;
    font-size: clamp(40px, 5vw, 50px) !important;
    line-height: 1.05 !important;
    letter-spacing: 0 !important;
    color: var(--pd-ink) !important;
}
body.single-product .summary .sku_wrapper,
body.single-product .summary .product_meta .sku_wrapper {
    font-family: var(--pd-sans);
    font-size: 16px;
    color: var(--pd-muted);
}
body.single-product .summary .price,
body.single-product .summary .cgkit-as-variation-price .price {
    font-family: var(--pd-sans) !important;
    font-weight: 600 !important;
    font-size: 32px !important;
    color: var(--pd-ink) !important;
    line-height: 1.1 !important;
}
body.single-product .summary .price del { color: var(--pd-muted) !important; font-weight: 400 !important; font-size: 20px !important; opacity: 1; }
body.single-product .summary .price ins { color: var(--pd-ink) !important; text-decoration: none !important; }

/* ---- Same-day delivery pill (injected via ::before on the form) ---- */

/* ---- Variation label ("LENGTH") as a group heading ---- */
body.single-product .summary table.variations { border: 0; width: 100%; }
body.single-product .summary table.variations tr { display: block; }
body.single-product .summary table.variations td,
body.single-product .summary table.variations th { display: block; padding: 0; border: 0; background: transparent; }
body.single-product .summary table.variations .label,
body.single-product .summary table.variations label {
    font-family: var(--pd-sans);
    font-weight: 600;
    font-size: 20px;
    color: var(--pd-ink);
    text-transform: none;
    margin-bottom: 12px;
}

/* ---- Attribute swatches → Figma size cards ---- */
body.single-product .summary table.variations .value,
body.single-product .cgkit-as-wrap {
    width: 100%;
    max-width: none;
}
body.single-product .cgkit-attribute-swatches-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    border: 0;
    padding: 0;
    margin: 0;
    width: 100%;
}
body.single-product .cgkit-swatch {
    flex: 1 1 150px !important;
    width: auto !important;
    min-width: 150px !important;
    max-width: none !important;
    min-height: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 14px 16px !important;
    min-height: 52px;
    border: 2px solid var(--pd-line) !important;
    border-radius: 6px !important;
    background: #fff !important;
    color: var(--pd-ink) !important;
    font-family: var(--pd-sans) !important;
    font-size: 18px !important;
    font-weight: 500 !important;
    line-height: 1.2 !important;
    cursor: pointer;
    box-shadow: none !important;
    transition: border-color .15s ease, background .15s ease;
}
body.single-product .cgkit-swatch.cgkit-swatch-selected,
body.single-product .cgkit-swatch.cgkit-selected,
body.single-product .cgkit-swatch.selected,
body.single-product .cgkit-swatch[aria-checked="true"],
body.single-product .cgkit-swatch[aria-pressed="true"] {
    border-color: var(--pd-pink) !important;
    background: var(--pd-pink-bg) !important;
    color: var(--pd-ink) !important;
}

/* ---- Custom fields: Zip / Delivery date / Gift message ---- */
body.single-product .thwepo-extra-options,
body.single-product .ced_sadc_form_gift { border: 0; width: 100%; margin: 0 0 16px; }
body.single-product .thwepo-extra-options tr,
body.single-product .ced_sadc_form_gift tr { display: block; }
body.single-product .thwepo-extra-options td,
body.single-product .ced_sadc_form_gift td { display: block; padding: 0; border: 0; }
body.single-product .summary .thwepo-extra-options label,
body.single-product .summary .ced_sadc_form_div label,
body.single-product .summary .ced_sadc_form_gift label {
    font-family: var(--pd-sans);
    font-weight: 600;
    font-size: 20px;
    color: var(--pd-ink);
    display: block;
    margin-bottom: 12px;
}
body.single-product .summary .thwepof-input-field,
body.single-product .summary input.sddmwgm_datepicker,
body.single-product .summary input[name="zip_postal_code"],
body.single-product .summary textarea.sddmwgm_gift_msg {
    width: 100% !important;
    min-height: 56px;
    padding: 0 16px !important;
    border: 1px solid var(--pd-input) !important;
    border-radius: 6px !important;
    background: #fff !important;
    font-family: var(--pd-cta) !important;
    font-size: 18px !important;
    color: var(--pd-ink) !important;
    box-shadow: none !important;
}
body.single-product .summary textarea.sddmwgm_gift_msg { min-height: 99px; padding: 16px !important; line-height: 1.4; }
body.single-product .summary .thwepof-input-field::placeholder,
body.single-product .summary textarea.sddmwgm_gift_msg::placeholder { color: var(--pd-muted); }
body.single-product .ced_sadc_form_div { margin-bottom: 16px; }
/* Force the product add-to-cart fields (EPO inputs, location type, ZIP, date
   picker) to full width regardless of their own inline/plugin widths. */
.thwepof-input-field, #select_location_type, #zip_postal_code, #sddmwgm_datepicker { width: 100% !important; }

/* ---- Quantity ---- */
body.single-product .summary .quantity,
body.single-product .summary .qib-container {
    border: 1px solid var(--pd-input);
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
    display: inline-flex;
    align-items: center;
    height: 56px;
}
body.single-product .summary .qib-button {
    width: 44px; height: 56px;
    background: #fff !important;
    border: 0 !important;
    color: var(--pd-ink) !important;
    font-size: 20px;
    cursor: pointer;
}
body.single-product .summary input.qty {
    width: 52px; height: 56px;
    border: 0 !important;
    text-align: center;
    background: #fff;
    font-family: var(--pd-cta);
    font-size: 18px;
    -moz-appearance: textfield;
}
body.single-product .summary input.qty::-webkit-outer-spin-button,
body.single-product .summary input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* ---- Add to cart button ---- */
body.single-product .summary .single_add_to_cart_button,
body.single-product form.cart .single_add_to_cart_button {
    background: var(--pd-pink) !important;
    color: #FFFBF5 !important;
    border: 0 !important;
    border-radius: 6px !important;
    height: 62px !important;
    min-width: 260px;
    padding: 0 32px !important;
    font-family: var(--pd-cta) !important;
    font-weight: 600 !important;
    font-size: 18px !important;
    text-transform: none !important;
    line-height: 1 !important;
    box-shadow: none !important;
    transition: background .15s ease;
}
body.single-product .summary .single_add_to_cart_button:hover,
body.single-product form.cart .single_add_to_cart_button:not(.disabled):hover {
    background: #D9529B !important;
}
body.single-product .summary .single_add_to_cart_button.disabled,
body.single-product .summary .single_add_to_cart_button:disabled {
    background: var(--pd-pink-bg) !important;
    color: var(--pd-pink) !important;
    opacity: 1 !important;
}

/* ---- Gallery: pink rounded stage + thumbnails ---- */
body.single-product .woocommerce-product-gallery { border-radius: 16px; }
body.single-product .woocommerce-product-gallery .woocommerce-product-gallery__image,
body.single-product .woocommerce-product-gallery figure {
    border-radius: 16px;
    overflow: hidden;
    background: var(--pd-pink-img);
}
body.single-product .woocommerce-product-gallery .flex-control-thumbs li img,
body.single-product .woocommerce-product-gallery .flex-control-thumbs li {
    border-radius: 12px;
    overflow: hidden;
}
body.single-product .woocommerce-product-gallery .flex-control-thumbs li img.flex-active,
body.single-product .woocommerce-product-gallery .flex-control-thumbs li img:hover {
    outline: 2px solid var(--pd-pink);
    outline-offset: -2px;
}

/* ---- Assurance lines (Hand delivered / policies) ---- */
body.single-product .summary .product-widget .textwidget {
    background: var(--pd-green-bg);
    border-radius: 6px;
    padding: 14px 16px;
    font-family: var(--pd-cta);
    color: var(--pd-ink);
    font-size: 16px;
    margin-top: 8px;
}

/* ---- Tabs / reviews headings to v2 type ---- */
body.single-product .woocommerce-tabs .panel h2,
body.single-product #reviews h2,
body.single-product .related.products > h2,
body.single-product .upsells.products > h2 {
    font-family: var(--pd-serif);
    font-weight: 400;
    color: var(--pd-ink);
}

/* Constrain injected v2 product extras to the theme's content width
   (Shoptimizer .col-full = 1200px) so they align with the summary above
   instead of going full-bleed. */
body.single-product .bv-product-extras {
    max-width: var(--bv-h2-inner);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--bv-h2-pad);
    padding-right: var(--bv-h2-pad);
    box-sizing: border-box;
    display: flex;
    flex-wrap: wrap;
}
/* Flex is only here to allow `order` on the children — keep each block full-width
   (min-width:0 lets the carousel track shrink to the container, not overflow). */
body.single-product .bv-product-extras > * { flex-basis: 100%; min-width: 0; }

/* =============================================================
   Slide-out mini-cart drawer (Figma 456:17075)
   ============================================================= */
.bv-cd[hidden] { display: none; }
.bv-cd { position: fixed; inset: 0; z-index: 1100; }
.bv-cd__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(20, 20, 30, .45);
    opacity: 0;
    transition: opacity .25s ease;
}
.bv-cd.is-open .bv-cd__backdrop { opacity: 1; }

.bv-cd__panel {
    position: absolute;
    top: 0;
    right: 0;
    height: 100%;
    width: min(420px, 100%);
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 28px;
    padding: 24px;
    box-shadow: -10px 0 40px rgba(0, 0, 0, .12);
    transform: translateX(100%);
    transition: transform .3s ease;
    overflow-y: auto;
}
.bv-cd.is-open .bv-cd__panel { transform: translateX(0); }

.bv-cd__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.bv-cd__title {
    font-family: "Gabriela", "DM Serif Display", Georgia, serif;
    font-weight: 400;
    font-size: clamp(32px, 5vw, 48px);
    line-height: 1.05;
    color: #2A2424;
    margin: 0;
}
.bv-cd .bv-cd__close {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: 0;
    color: #2A2424;
    cursor: pointer;
    margin-top: 6px;
}

.bv-cd__body { display: flex; flex-direction: column; gap: 24px; }
.bv-cd__sub { margin: 0; font-family: var(--bv-sans); font-size: 22px; color: #6B6973; }
.bv-cd__empty-box {
    background: #FFF7EC;
    border-radius: 16px;
    height: 166px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.bv-cd__empty-box img { width: 137px; height: 137px; }
.bv-cd__empty-text { margin: 0; font-family: var(--bv-sans); font-size: 18px; line-height: 1.4; color: #6B6973; }
.bv-cd .bv-cd__shop {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 62px;
    background: #E83E74;
    color: #FFFBF5;
    border: 0;
    border-radius: 6px;
    font-family: "DM Sans", "Inter", sans-serif;
    font-weight: 600;
    font-size: 18px;
    text-decoration: none;
    transition: background .15s ease;
}
.bv-cd .bv-cd__shop:hover { background: #D9529B; }

.bv-cd__divider { width: 100%; height: 0; border: 0; border-top: 1px solid #EEE; margin: 0; }

.bv-cd__suggest { display: flex; flex-direction: column; gap: 20px; }
.bv-cd__suggest-title {
    font-family: var(--bv-sans);
    font-weight: 600;
    font-size: 24px;
    color: #2A2424;
    margin: 0;
}
.bv-cd__carousel {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -ms-overflow-style: none;
    scrollbar-width: none;
}
.bv-cd__carousel::-webkit-scrollbar { display: none; }
.bv-cd .bv-cd__carousel > .bv-card { flex: 0 0 calc((100% - 16px) / 2); scroll-snap-align: start; }

.bv-cd__nav { display: flex; align-items: center; justify-content: center; gap: 24px; }
.bv-cd .bv-cd__nav-btn {
    width: 62px;
    height: 62px;
    border-radius: 50%;
    background: #F7F7F9;
    border: 0;
    color: #2A2424;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background .15s ease;
}
.bv-cd .bv-cd__nav-btn:hover { background: #ECECEF; }
.bv-cd .bv-cd__nav-btn:disabled { opacity: .4; cursor: default; }
.bv-cd__dots { display: flex; align-items: center; gap: 8px; }
.bv-cd .bv-cd__dot { width: 10px; height: 10px; border-radius: 50%; background: #D9D9DE; border: 0; padding: 0; cursor: pointer; }
.bv-cd .bv-cd__dot--active { background: #2A2424; }

/* Filled state — WooCommerce mini-cart, lightly styled */
.bv-cd__body .woocommerce-mini-cart { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.bv-cd__body .woocommerce-mini-cart__total { display: flex; justify-content: space-between; font-weight: 600; font-size: 18px; color: #2A2424; padding-top: 16px; border-top: 1px solid #EEE; }
/* Mini-cart fee breakdown + grand total */
.bv-mc-fees { display: flex; flex-direction: column; gap: 6px; margin: 8px 0 0; }
.bv-mc-fee { display: flex; justify-content: space-between; gap: 12px; margin: 0; font-size: 14px; color: #6B6973; }
.bv-mc-grandtotal { display: flex; justify-content: space-between; gap: 12px; margin: 10px 0 0; padding-top: 10px; border-top: 1px solid #EEE; font-weight: 700; font-size: 16px; color: #2A2424; }
.bv-cd__body .woocommerce-mini-cart__buttons { display: flex; flex-direction: column; gap: 10px; margin: 16px 0 0; }
.bv-cd__body .woocommerce-mini-cart__buttons .button {
    display: flex; align-items: center; justify-content: center;
    height: 56px; border-radius: 6px; font-weight: 600; font-size: 16px; text-decoration: none;
}
.bv-cd__body .woocommerce-mini-cart__buttons .checkout { background: #E83E74; color: #fff; }
.bv-cd__body .woocommerce-mini-cart__buttons .button:not(.checkout) { background: #fff; color: #2A2424; border: 1px solid #DDD; }

body.bv-cd-open { overflow: hidden; }

/* ---- Mini-cart drawer: filled state (Figma 219:4001) ---- */
.bv-cd__body.is-loading { opacity: .5; pointer-events: none; }
.bv-cd__progress { background: #FFECF6; border-radius: 16px; padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.bv-cd__progress-label { margin: 0; font-family: var(--bv-sans); font-size: 18px; color: #2A2424; line-height: 1.3; }
.bv-cd__progress-label strong { color: #C21E5A; font-weight: 700; }
.bv-cd__progress-track { background: #fff; height: 8px; border-radius: 19px; overflow: hidden; }
.bv-cd__progress-fill { display: block; height: 100%; background: #E83E74; border-radius: 19px; transition: width .3s ease; }

.bv-cd__items { display: flex; flex-direction: column; gap: 20px; }
.bv-cd-item { display: flex; gap: 16px; }
.bv-cd-item__media { width: 96px; height: 96px; border-radius: 16px; overflow: hidden; background: #FBDAE5; flex-shrink: 0; }
.bv-cd-item__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bv-cd-item__main { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.bv-cd-item__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.bv-cd-item__name { font-family: var(--bv-sans); font-size: 18px; color: #2A2424; line-height: 1.3; }
.bv-cd .bv-cd-item__edit { color: #C21E5A; flex-shrink: 0; display: inline-flex; }
.bv-cd-item__meta { margin: 0; font-family: var(--bv-sans); font-size: 15px; color: #6B6973; }
.bv-cd-item__row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.bv-cd-item__qty { display: flex; align-items: center; gap: 8px; }
.bv-cd-qty { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 10px; border: 1px solid #DDD; border-radius: 49px; }
.bv-cd .bv-cd-qty__btn { width: 20px; height: 32px; background: none; border: 0; color: #2A2424; font-size: 18px; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.bv-cd-qty__num { min-width: 16px; text-align: center; font-family: var(--bv-sans); font-size: 16px; color: #2A2424; }
.bv-cd .bv-cd-item__remove { background: none; border: 0; color: #6B6973; cursor: pointer; display: inline-flex; }
.bv-cd .bv-cd-item__remove:hover { color: #C21E5A; }
.bv-cd-item__price { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; white-space: nowrap; }
.bv-cd-item__now { font-family: var(--bv-sans); font-weight: 600; font-size: 20px; color: #2A2424; }
.bv-cd-item__was { font-size: 15px; color: #6B6973; text-decoration: line-through; }
.bv-cd-item__was .woocommerce-Price-amount { color: #6B6973; }

.bv-cd__summary { display: flex; flex-direction: column; gap: 12px; }
.bv-cd__sum-row { display: flex; align-items: center; justify-content: space-between; font-family: var(--bv-sans); font-size: 18px; color: #6B6973; }
.bv-cd__sum-row .bv-cd__sum-val { font-weight: 600; }
.bv-cd__sum-row .woocommerce-Price-amount { color: #6B6973; }
.bv-cd__sum-fee { display: inline-flex; align-items: center; gap: 6px; }
.bv-cd__total { display: flex; align-items: center; justify-content: space-between; padding: 12px; border-radius: 6px; background: linear-gradient(157deg, #FDE7F2 0%, #FFF6E5 100%); font-family: var(--bv-sans); font-size: 20px; color: #2A2424; }
.bv-cd__total-val { font-weight: 600; }
.bv-cd .bv-cd__checkout {
    display: flex; align-items: center; justify-content: center;
    height: 62px; width: 100%;
    background: #E83E74; color: #FFFBF5;
    border: 1px solid transparent; border-radius: 6px; /* transparent base border reserves space so hover adds no layout shift */
    font-family: "DM Sans", "Inter", sans-serif; font-weight: 600; font-size: 18px;
    text-decoration: none; transition: all .15s ease;
}
/* Match the other CTA buttons' hover (pink -> white inversion) instead of just darkening the pink. */
.bv-cd .bv-cd__checkout:hover { background: #fff; color: #E83E74; border-color: #E83E74; }

/* =============================================================
   My Account — Bloom v2 (functional WooCommerce account)
   ============================================================= */
body.woocommerce-account .entry-header,
body.woocommerce-account header.woocommerce-products-header,
body.woocommerce-account h1.entry-title { display: none; }

body.woocommerce-account .woocommerce {
    display: grid;
    grid-template-columns: 264px minmax(0, 1fr);
    gap: 32px;
    align-items: start;
    max-width: var(--bv-h2-inner, 1520px);
    margin: 0 auto;
    padding: 40px var(--bv-h2-pad, 32px) 80px;
    font-family: var(--bv-sans);
}

/* Override the parent theme's floated/percentage account columns so the
   grid controls the layout (nav fills its 264px cell, content fills the rest) */
body.woocommerce-account .woocommerce-MyAccount-navigation,
body.woocommerce-account .woocommerce-MyAccount-content {
    width: 100%;
    float: none;
    margin: 0;
    box-sizing: border-box;
}

/* ---- Sidebar navigation ---- */
body.woocommerce-account .woocommerce-MyAccount-navigation {
    background: #fff;
    border: 1px solid #EEE;
    border-radius: 16px;
    padding: 12px;
    box-shadow: 0 0 30px rgba(0, 0, 0, .04);
    position: sticky;
    top: 100px;
}
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 li { margin: 0; border: 0; }
/* Hide the parent theme's own pseudo-element icons (we render our own SVGs) */
body.woocommerce-account .woocommerce-MyAccount-navigation li a::before,
body.woocommerce-account .woocommerce-MyAccount-navigation li a::after { content: none !important; display: none !important; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-radius: 10px;
    color: #2A2424;
    font-size: 16px;
    font-weight: 500;
    text-decoration: none;
    transition: background .15s ease, color .15s ease;
}
.bv-acc-nav__icon { display: inline-flex; width: 22px; height: 22px; color: #6B6973; flex-shrink: 0; }
.bv-acc-nav__icon svg { width: 22px; height: 22px; }
.bv-acc-nav__label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1 1 auto; }
.bv-acc-nav__count { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; min-width: 42px; height: 22px; padding: 0 12px; border-radius: 16px; font-size: 16px; font-weight: 400; color: #6B6973; }
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active .bv-acc-nav__count { background: #E83E74; color: #fff; font-weight: 700; letter-spacing: .5px; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover { background: #FFEAF3; color: #C21E5A; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover .bv-acc-nav__icon { color: #C21E5A; }
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a { background: #FFECF6; color: #C21E5A; font-weight: 600; }
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active .bv-acc-nav__icon { color: #C21E5A; }
body.woocommerce-account .woocommerce-MyAccount-navigation li--customer-logout a,
body.woocommerce-account .woocommerce-MyAccount-navigation-link--customer-logout a { color: #6B6973; }

/* ---- Content card ---- */
body.woocommerce-account .woocommerce-MyAccount-content {
    background: #fff;
    border: 1px solid #EEE;
    border-radius: 16px;
    padding: 28px;
    box-shadow: 0 0 30px rgba(0, 0, 0, .04);
    min-width: 0;
}
body.woocommerce-account .woocommerce-MyAccount-content h2,
body.woocommerce-account .woocommerce-MyAccount-content h3,
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Address-title h3 {
    font-family: "Gabriela", "DM Serif Display", Georgia, serif;
    font-weight: 400;
    color: #2A2424;
}

/* ===== Dashboard v2 (Figma 323:14824) ===== */
.bv-dash { display: flex; flex-direction: column; gap: 60px; }

/* Greeting */
.bv-dash-hello { display: flex; align-items: center; gap: 16px; }
.bv-dash-hello__avatar { flex-shrink: 0; width: 80px; height: 80px; border-radius: 50%; background: #FFECF6; color: #C21E5A; display: inline-flex; align-items: center; justify-content: center; font-family: "Gabriela", Georgia, serif; font-size: 32px; }
.bv-dash-hello__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: clamp(30px, 4vw, 48px); line-height: 1; color: #2A2424; margin: 0 0 8px; }
.bv-dash-hello__sub { color: #6B6973; font-size: 18px; margin: 0; }

/* Two cards row */
.bv-dash-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
.bv-dash-card { background: #fff; border-radius: 16px; box-shadow: 0 0 52px rgba(0, 0, 0, .06); padding: 16px; display: flex; flex-direction: column; gap: 28px; }
.bv-dash-card__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.bv-dash-card__heading { display: flex; align-items: center; gap: 8px; }
.bv-dash-card__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: 24px; line-height: 28px; color: #2A2424; margin: 0; }
.bv-dash-card__action { display: inline-flex; align-items: center; gap: 6px; color: #C21E5A; font-weight: 700; font-size: 16px; white-space: nowrap; }
.bv-dash-card__action span { font-size: 20px; line-height: 0; }
.bv-dash-card__action:hover { text-decoration: underline; }

.bv-dash-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 42px; height: 22px; padding: 0 12px; border-radius: 16px; color: #fff; font-size: 16px; font-weight: 700; letter-spacing: .5px; }
.bv-dash-badge--green { background: #00754F; }
.bv-dash-badge--amber { background: #DE9E09; }
.bv-dash-badge--pink  { background: #E83E74; }

.bv-dash-divider { height: 1px; background: #EEEDF0; margin: 0; }

/* Upcoming list */
.bv-dash-up { display: flex; flex-direction: column; gap: 20px; }
.bv-dash-up__item { display: flex; gap: 20px; align-items: flex-start; color: inherit; text-decoration: none; }
.bv-dash-up__img { flex-shrink: 0; width: 111px; height: 111px; border-radius: 16px; overflow: hidden; background: #FBDAE5; }
.bv-dash-up__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bv-dash-up__body { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.bv-dash-up__title { font-weight: 500; font-size: 18px; line-height: 1.2; color: #2A2424; }
.bv-dash-up__meta { color: #6B6973; font-size: 16px; line-height: 20px; }
.bv-dash-up__item:hover .bv-dash-up__title { color: #C21E5A; }

/* Delivery / status pill */
.bv-dash-pill { display: inline-flex; align-items: center; gap: 4px; padding: 4px 8px; border-radius: 30px; font-size: 16px; line-height: 20px; align-self: flex-start; }
.bv-dash-pill svg { width: 20px; height: 20px; flex-shrink: 0; }
.bv-dash-pill--go,
.bv-dash-pill--done { background: #E2FFF6; color: #00754F; }
.bv-dash-pill--wait,
.bv-dash-pill--soon { background: #FFF7EC; color: #DE9E09; font-weight: 700; }
.bv-dash-pill--bad  { background: #FDE7EC; color: #C01A1A; }

/* Reminders list */
.bv-dash-rem { display: flex; flex-direction: column; gap: 20px; }
.bv-dash-rem__item { display: flex; align-items: center; gap: 16px; }
.bv-dash-rem__num { flex-shrink: 0; width: 60px; height: 60px; border-radius: 50%; background: #F7F7F9; color: #6B6973; display: inline-flex; align-items: center; justify-content: center; font-family: "Gabriela", Georgia, serif; font-size: 24px; }
.bv-dash-rem__body { display: flex; flex-direction: column; gap: 4px; margin-right: auto; min-width: 0; }
.bv-dash-rem__title { font-weight: 500; font-size: 18px; line-height: 1.2; color: #2A2424; }
.bv-dash-rem__date { color: #6B6973; font-size: 16px; line-height: 20px; }
.bv-dash-precurate { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; height: 48px; padding: 0 32px; border: 1px solid #E83E74; border-radius: 6px; color: #C21E5A; font-family: "DM Sans", sans-serif; font-weight: 600; font-size: 18px; background: #fff; white-space: nowrap; }
.bv-dash-precurate:hover { background: #FFECF6; color: #C21E5A; }

/* Orders table + addresses */
body.woocommerce-account .woocommerce-orders-table { border: 0; }
body.woocommerce-account .woocommerce-orders-table th,
body.woocommerce-account .woocommerce-orders-table td { border-color: #EEE; }
body.woocommerce-account .woocommerce-Addresses { gap: 20px; }
body.woocommerce-account .woocommerce-Address { background: #FAFAFB; border: 1px solid #EEE; border-radius: 12px; padding: 20px; }

/* Transient save-confirmation toast (account settings, etc.) */
.bv-toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(12px); z-index: 9999; max-width: calc(100vw - 32px); padding: 13px 20px; background: #1F7A4D; color: #fff; border-radius: 10px; font-size: 15px; font-weight: 600; line-height: 1.3; box-shadow: 0 8px 24px rgba(0,0,0,.18); opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .2s ease; }
.bv-toast.is-visible { opacity: 1; transform: translateX(-50%) translateY(0); }
.bv-toast--error { background: #C0392B; }

@media (max-width: 900px) {
    body.woocommerce-account .woocommerce { grid-template-columns: 1fr; gap: 20px; }
    body.woocommerce-account .woocommerce-MyAccount-navigation { position: static; }
    /* Clearer active highlight for the WC account nav on mobile. */
    body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
        background: var(--bv-pink-100, #FCDCE6);
        color: #C21E5A;
        font-weight: 700;
        box-shadow: inset 0 0 0 1.5px #E83E74;
    }
}

/* Empty state (shared) */
.bv-acc-empty { text-align: center; padding: 28px; border: 1px dashed #DDD; border-radius: 12px; color: #6B6973; }
.bv-acc-empty p { margin: 0 0 14px; }
.bv-acc-empty__cta { display: inline-flex; align-items: center; justify-content: center; height: 44px; padding: 0 22px; background: #E83E74; color: #FFFBF5; border-radius: 6px; font-weight: 600; text-decoration: none; }
.bv-acc-empty__cta:hover { background: #D9529B; }

/* Send again? carousel */
.bv-dash-again { display: flex; flex-direction: column; gap: 40px; align-items: center; }
.bv-dash-again__head { width: 100%; }
.bv-dash-again__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: clamp(30px, 4vw, 48px); line-height: 1; color: #2A2424; margin: 0; }
.bv-dash-again__viewport { width: 100%; overflow: hidden; }
.bv-dash-again__track { display: flex; gap: 21px; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; padding-bottom: 4px; -ms-overflow-style: none; scrollbar-width: none; }
.bv-dash-again__track::-webkit-scrollbar { display: none; }
.bv-dash-again__track > * { flex: 0 0 calc((100% - 42px) / 3); scroll-snap-align: start; min-width: 0; }
.bv-dash-again__nav { display: flex; gap: 24px; align-items: center; justify-content: center; }
.bv-dash-again__arrow { width: 62px; height: 62px; border-radius: 50%; background: #F7F7F9; color: #2A2424; display: inline-flex; align-items: center; justify-content: center; border: 0; cursor: pointer; transition: background .15s ease; }
.bv-dash-again__arrow:hover { background: #FFECF6; color: #C21E5A; }
.bv-dash-again__arrow svg { width: 30px; height: 30px; }

@media (max-width: 1100px) {
    .bv-dash-again__track > * { flex-basis: calc((100% - 21px) / 2); }
}
@media (max-width: 900px) {
    .bv-dash-cols { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
    .bv-dash { gap: 40px; }
    .bv-dash-hello__avatar { width: 60px; height: 60px; font-size: 24px; }
    .bv-dash-up__item { gap: 14px; }
    .bv-dash-up__img { width: 88px; height: 88px; }
    .bv-dash-rem__item { flex-wrap: wrap; }
    .bv-dash-precurate { width: 100%; }
    .bv-dash-again__track > * { flex-basis: 80%; }
}

/* ===== Orders page v2 (Figma 294:14822) ===== */
.bv-ord { display: flex; flex-direction: column; gap: 24px; margin-bottom: 60px; }
.bv-ord__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: clamp(30px, 4vw, 48px); line-height: 1; color: #2A2424; margin: 0; }

/* Filter bar */
.bv-ord-filter { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.bv-ord-filter__field { position: relative; display: inline-flex; align-items: center; }
.bv-ord-filter__select { appearance: none; -webkit-appearance: none; background: #fff; border: 1px solid #EEE; border-radius: 8px; padding: 10px 38px 10px 14px; font-size: 15px; color: #2A2424; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237A7882' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; }
.bv-ord-filter__select:focus { outline: none; border-color: #E83E74; }
.bv-ord-filter__search { flex: 1 1 220px; min-width: 180px; }
.bv-ord-filter__search svg { position: absolute; left: 14px; width: 18px; height: 18px; color: #6B6973; pointer-events: none; }
.bv-ord-filter__search input { width: 100%; background: #fff; border: 1px solid #EEE; border-radius: 8px; padding: 10px 14px 10px 40px; font-size: 15px; color: #2A2424; }
.bv-ord-filter__search input::placeholder { color: #6B6973; }
.bv-ord-filter__search input:focus { outline: none; border-color: #E83E74; }

/* Order list */
.bv-ord-list { display: flex; flex-direction: column; gap: 16px; }
.bv-ord-card { background: #fff; border: 1px solid #F0EEF1; border-radius: 16px; box-shadow: 0 0 30px rgba(0, 0, 0, .04); overflow: hidden; transition: border-color .15s ease; }
.bv-ord-card.is-open { border-color: #E83E74; }
.bv-ord-card__head { display: flex; align-items: center; gap: 16px; width: 100%; padding: 20px; background: none; border: 0; cursor: pointer; text-align: left; }
.bv-ord-card__main { display: flex; flex-direction: column; gap: 4px; flex: 1 1 auto; min-width: 0; }
.bv-ord-card__name { font-weight: 500; font-size: 18px; color: #2A2424; }
.bv-ord-card__meta { color: #6B6973; font-size: 16px; line-height: 20px; }
.bv-ord-card__total { font-weight: 600; font-size: 18px; color: #2A2424; white-space: nowrap; }
.bv-ord-card__total del { color: #6B6973; font-weight: 400; }
.bv-ord-card__chev { flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; background: #F7F7F9; color: #C21E5A; display: inline-flex; align-items: center; justify-content: center; transition: transform .2s ease, background .15s ease, color .15s ease; }
.bv-ord-card__chev svg { width: 18px; height: 18px; }
.bv-ord-card.is-open .bv-ord-card__chev { background: #E83E74; color: #fff; transform: rotate(180deg); }

/* Status badge */
.bv-ord-badge { flex-shrink: 0; display: inline-flex; align-items: center; padding: 4px 12px; border-radius: 30px; font-size: 14px; font-weight: 600; white-space: nowrap; }
.bv-ord-badge--done { background: #E2FFF6; color: #00754F; }
.bv-ord-badge--go { background: #E2FFF6; color: #00754F; }
.bv-ord-badge--pink { background: #FFECF6; color: #C21E5A; }
.bv-ord-badge--muted { background: #F2F2F4; color: #6B6973; }
.bv-ord-badge--bad { background: #FDE7EC; color: #C01A1A; }

/* Expanding body */
.bv-ord-card__body { display: none; flex-direction: column; gap: 28px; padding: 4px 20px 24px; }
.bv-ord-card.is-open .bv-ord-card__body { display: flex; }

.bv-ord-status { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.bv-ord-status__label { font-weight: 500; font-size: 16px; color: #2A2424; }

/* Timeline */
.bv-ord-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
.bv-ord-step { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding-right: 8px; }
.bv-ord-step__dot { width: 22px; height: 22px; border-radius: 50%; border: 2px solid #DAD9DE; background: #fff; display: inline-flex; align-items: center; justify-content: center; color: #fff; z-index: 1; }
.bv-ord-step__dot svg { width: 12px; height: 12px; }
.bv-ord-step::after { content: ""; position: absolute; top: 10px; left: 22px; right: 0; height: 2px; background: #E6E5E9; }
.bv-ord-step:last-child::after { display: none; }
.bv-ord-step__label { font-size: 15px; color: #6B6973; line-height: 1.3; }
.bv-ord-step__date { display: block; font-size: 13px; color: #A6A4AD; }
.bv-ord-step--done .bv-ord-step__dot { background: #00754F; border-color: #00754F; }
.bv-ord-step--done::after { background: #00754F; }
.bv-ord-step--done .bv-ord-step__label { color: #2A2424; }
.bv-ord-step--active .bv-ord-step__dot { border-color: #E83E74; background: #E83E74; }
.bv-ord-step--active .bv-ord-step__label { color: #C21E5A; font-weight: 600; }

/* Items + gift */
.bv-ord-detail { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start; }
.bv-ord-items { display: flex; flex-direction: column; gap: 16px; }
.bv-ord-item { display: flex; gap: 16px; align-items: flex-start; }
.bv-ord-item__img { flex-shrink: 0; width: 72px; height: 72px; border-radius: 12px; overflow: hidden; background: #FBDAE5; }
.bv-ord-item__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bv-ord-item__info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bv-ord-item__name { font-weight: 500; font-size: 16px; color: #2A2424; }
.bv-ord-item__line { color: #6B6973; font-size: 14px; }
.bv-ord-gift { border: 1px solid #F4C9E1; border-radius: 12px; padding: 14px; background: #FFFBFD; }
.bv-ord-gift__label { font-weight: 500; font-size: 14px; color: #2A2424; margin-bottom: 8px; }
.bv-ord-gift__msg { color: #2A2424; font-size: 15px; line-height: 1.5; font-style: italic; }

/* Facts table */
.bv-ord-facts { margin: 0; display: flex; flex-direction: column; }
.bv-ord-fact { display: grid; grid-template-columns: 160px 1fr; gap: 16px; padding: 14px 0; border-top: 1px solid #EEEDF0; }
.bv-ord-fact:first-child { border-top: 0; }
.bv-ord-fact dt { color: #6B6973; font-size: 16px; margin: 0; }
.bv-ord-fact dd { color: #2A2424; font-size: 16px; margin: 0; }

/* Actions */
.bv-ord-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.bv-ord-btn { display: inline-flex; align-items: center; justify-content: center; height: 44px; padding: 0 24px; border: 1px solid #E83E74; border-radius: 6px; font-family: "DM Sans", sans-serif; font-weight: 600; font-size: 16px; color: #C21E5A; background: #fff; text-decoration: none; transition: background .15s ease, color .15s ease; }
.bv-ord-btn:hover { background: #FFECF6; color: #C21E5A; }
.bv-ord-btn--primary { background: #E83E74; color: #FFFBF5; }
.bv-ord-btn--primary:hover { background: #D9529B; color: #FFFBF5; }
.bv-ord-btn--muted { border-color: #E0DFE3; color: #6B6973; }
.bv-ord-btn--muted:hover { background: #F4F4F6; color: #6B6973; }

@media (max-width: 760px) {
    .bv-ord-detail { grid-template-columns: 1fr; }
    .bv-ord-card__head { flex-wrap: wrap; }
    .bv-ord-card__total { order: 3; }
    .bv-ord-steps { grid-template-columns: 1fr 1fr; gap: 16px 0; }
    .bv-ord-step:nth-child(2)::after { display: none; }
    .bv-ord-fact { grid-template-columns: 1fr; gap: 2px; }
}

/* ===== Saved addresses v2 (Figma 294:14911) ===== */
.bv-addr { display: flex; flex-direction: column; gap: 24px; }
.bv-addr__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: clamp(30px, 4vw, 48px); line-height: 1; color: #2A2424; margin: 0; }
.bv-addr__top { display: flex; flex-direction: column; gap: 12px; }
.bv-addr__back { color: #6B6973; font-size: 15px; font-weight: 500; }
.bv-addr__back:hover { color: #C21E5A; }

.bv-addr-list { display: flex; flex-direction: column; gap: 16px; }

.bv-addr-card { position: relative; background: #fff; border: 1px solid #EDEAEE; border-radius: 16px; padding: 24px; box-shadow: 0 0 30px rgba(0, 0, 0, .04); }
.bv-addr-card.is-default { border-color: #E83E74; }
.bv-addr-card__head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.bv-addr-card__label { font-weight: 600; font-size: 18px; color: #2A2424; }
.bv-addr-card:not(.is-default) .bv-addr-card__body { color: #9C9AA3; }
.bv-addr-card__badge { display: inline-flex; align-items: center; padding: 3px 12px; border-radius: 30px; background: #FFECF6; color: #C21E5A; font-size: 13px; font-weight: 600; }

/* Payment method brand logo */
.bv-pm-brand { flex-shrink: 0; width: 46px; height: 30px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid #EDEAEE; border-radius: 6px; padding: 4px 6px; background: #fff; }
.bv-pm-brand svg { width: 100%; height: 100%; display: block; }
.bv-addr-card__edit { margin-left: auto; width: 24px; height: 24px; color: #6B6973; display: inline-flex; align-items: center; justify-content: center; }
.bv-addr-card.is-default .bv-addr-card__edit { color: #C21E5A; }
.bv-addr-card__edit:hover { color: #C21E5A; }
.bv-addr-card__edit svg { width: 20px; height: 20px; }

.bv-addr-radio { flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; border: 2px solid #C9C7CF; display: inline-block; position: relative; transition: border-color .15s ease; }
a.bv-addr-radio:hover { border-color: #E83E74; }
.bv-addr-radio.is-on { border-color: #E83E74; }
.bv-addr-radio.is-on::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: #E83E74; }

.bv-addr-card__body { display: flex; flex-direction: column; gap: 8px; font-size: 18px; color: #2A2424; }
.bv-addr-card__body p { margin: 0; }
.bv-addr-card__body span { color: inherit; }

.bv-addr-card__actions { display: flex; justify-content: flex-end; gap: 12px; margin-top: 18px; }

.bv-addr-add { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 22px; border: 1px solid #EDEAEE; border-radius: 16px; color: #C21E5A; font-weight: 700; font-size: 18px; background: #fff; transition: background .15s ease, border-color .15s ease; }
.bv-addr-add:hover { background: #FFF7FB; border-color: #E83E74; color: #C21E5A; }
.bv-addr-add__plus { font-size: 22px; line-height: 1; }

/* Add / edit form */
.bv-addr-form { background: #fff; border: 1px solid #EDEAEE; border-radius: 16px; padding: 28px; box-shadow: 0 0 30px rgba(0, 0, 0, .04); }
.bv-addr-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.bv-field { display: flex; flex-direction: column; gap: 6px; }
.bv-field--full { grid-column: 1 / -1; }
.bv-field__label { font-size: 14px; font-weight: 500; color: #2A2424; }
.bv-field__label em { color: #9C9AA3; font-style: normal; font-weight: 400; }
.bv-field input,
.bv-field select { width: 100%; height: 46px; border: 1px solid #E2E0E6; border-radius: 8px; padding: 0 14px; font-size: 15px; color: #2A2424; background: #fff; }
.bv-field input:focus,
.bv-field select:focus { outline: none; border-color: #E83E74; }
.bv-field--check { flex-direction: row; align-items: center; gap: 10px; }
.bv-field--check input { width: 18px; height: 18px; accent-color: #E83E74; }
.bv-field--check span { font-size: 15px; color: #2A2424; }
.bv-addr-form__actions { display: flex; gap: 12px; margin-top: 24px; }

/* Beat the global `body.bv-body button { background:none; border:0 }` reset
   so submit buttons styled as .bv-ord-btn keep their fill/border. */
body.bv-body button.bv-ord-btn { border: 1px solid #E83E74; background: #fff; color: #C21E5A; }
body.bv-body button.bv-ord-btn--primary { background: #E83E74; border-color: #E83E74; color: #FFFBF5; }
body.bv-body button.bv-ord-btn--primary:hover { background: #D9529B; }
body.bv-body button.bv-ord-btn--muted { border-color: #E0DFE3; background: #fff; color: #6B6973; }

/* Anchor variants need explicit colour to beat `body.bv-body a { color: inherit }`. */
body.bv-body a.bv-ord-btn { color: #C21E5A; }
body.bv-body a.bv-ord-btn--primary { color: #FFFBF5; }
body.bv-body a.bv-ord-btn--muted { color: #6B6973; }

/* ===== Checkout saved-address picker ===== */
.bv-co-picker { margin: 0 0 24px; }
.bv-co-picker__top { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.bv-co-picker__label { font-weight: 600; font-size: 16px; color: #2A2424; }
.bv-co-picker__manage { color: #C21E5A; font-weight: 600; font-size: 14px; }
.bv-co-picker__manage:hover { text-decoration: underline; }
.bv-co-picker__cards { display: flex; flex-wrap: wrap; gap: 12px; }
body.bv-body button.bv-co-card { flex: 1 1 220px; min-width: 200px; max-width: 320px; display: flex; flex-direction: column; gap: 3px; text-align: left; padding: 14px 16px; border: 1px solid #E2E0E6; border-radius: 12px; background: #fff; cursor: pointer; transition: border-color .15s ease, background .15s ease, box-shadow .15s ease; }
body.bv-body button.bv-co-card:hover { border-color: #E83E74; background: #FFF7FB; }
body.bv-body button.bv-co-card.is-active { border-color: #E83E74; background: #FFF7FB; box-shadow: 0 0 0 1px #E83E74 inset; }
.bv-co-card__label { font-weight: 600; font-size: 15px; color: #2A2424; }
.bv-co-card__label em { color: #C21E5A; font-style: normal; font-weight: 600; }
.bv-co-card__line { color: #6B6973; font-size: 13px; line-height: 1.4; }

/* ===== "New address" modal (Figma popup) ===== */
.bv-modal { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.bv-modal[hidden] { display: none; }
.bv-modal__overlay { position: absolute; inset: 0; background: rgba(20, 16, 24, .5); }
.bv-modal__dialog { position: relative; background: #fff; border-radius: 20px; padding: 40px; width: min(920px, 100%); max-height: 92vh; overflow-y: auto; box-shadow: 0 30px 80px rgba(0, 0, 0, .25); }
body.bv-body button.bv-modal__close { position: absolute; top: 24px; right: 24px; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: #2A2424; background: none; border: 0; cursor: pointer; }
.bv-modal__close svg { width: 24px; height: 24px; }
.bv-modal__close:hover { color: #C21E5A; }
.bv-modal__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: clamp(28px, 3.5vw, 40px); line-height: 1; color: #2A2424; margin: 0 0 28px; }

.bv-modal-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 16px; }
.bv-input { width: 100%; height: 52px; border: 1px solid #E2E0E6; border-radius: 8px; padding: 0 14px; font-size: 15px; color: #2A2424; background: #fff; }
.bv-input::placeholder { color: #6B6973; }
.bv-input:focus { outline: none; border-color: #E83E74; }
.bv-input--half { grid-column: span 3; }
.bv-input--full { grid-column: 1 / -1; }
.bv-input-wrap { display: flex; flex-direction: column; gap: 6px; }
.bv-input__hint { margin: 0; font-size: 13px; color: #9C9AA3; line-height: 1.45; }
.bv-input--search { position: relative; display: block; }
.bv-input--search .bv-input { padding-right: 44px; }
.bv-input--search svg { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; color: #6B6973; pointer-events: none; }

/* Floating-label fields (City / State / ZIP) with green validated state */
.bv-ff { position: relative; grid-column: span 2; display: block; }
.bv-ff__label { position: absolute; top: -7px; left: 12px; background: #fff; padding: 0 6px; font-size: 12px; color: #6B6973; transition: color .15s ease; }
.bv-ff__input { width: 100%; height: 52px; border: 1px solid #C9C7CF; border-radius: 8px; padding: 0 40px 0 14px; font-size: 15px; color: #2A2424; background: #fff; }
.bv-ff__input:focus { outline: none; border-color: #E83E74; }
.bv-ff__check { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid #00754F; color: #00754F; display: none; align-items: center; justify-content: center; }
.bv-ff__check svg { width: 12px; height: 12px; }
.bv-ff.is-valid .bv-ff__input { border-color: #00754F; }
.bv-ff.is-valid .bv-ff__label { color: #00754F; }
.bv-ff.is-valid .bv-ff__check { display: inline-flex; }

/* "What kind of address is this?" */
.bv-addr-kind { margin-top: 22px; }
body.bv-body button.bv-addr-kind__toggle { display: inline-flex; align-items: center; gap: 10px; background: none; border: 0; padding: 0; color: #2A2424; font-weight: 600; font-size: 16px; cursor: pointer; }
.bv-addr-kind__plus { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: #F2F2F4; color: #2A2424; font-size: 18px; line-height: 1; }
.bv-addr-kind__toggle:hover .bv-addr-kind__plus { background: #FFECF6; color: #C21E5A; }
.bv-addr-kind__options { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; align-items: center; }
.bv-addr-kind__options[hidden] { display: none; }
body.bv-body button.bv-addr-kind__chip { padding: 9px 20px; border: 1px solid #E2E0E6; border-radius: 30px; background: #fff; color: #2A2424; font-size: 14px; cursor: pointer; }
body.bv-body button.bv-addr-kind__chip:hover { border-color: #E83E74; color: #C21E5A; }
body.bv-body button.bv-addr-kind__chip.is-active { background: #FFECF6; border-color: #E83E74; color: #C21E5A; font-weight: 600; }
.bv-addr-kind__custom { flex: 1 1 200px; height: 44px; min-width: 180px; }

.bv-modal__actions { display: flex; gap: 12px; margin-top: 28px; }
.bv-card-default { display: flex; align-items: center; gap: 10px; margin-top: 18px; font-size: 15px; color: #2A2424; }
.bv-card-default input { width: 18px; height: 18px; accent-color: #E83E74; }

/* ===== Settings / edit-account (Figma) ===== */
.bv-set { display: flex; flex-direction: column; }
.bv-set__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: clamp(30px, 4vw, 48px); line-height: 1; color: #2A2424; margin: 0 0 28px; }
.bv-set__section { margin-bottom: 36px; }
.bv-set__section-title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: 24px; line-height: 28px; color: #2A2424; margin: 0 0 18px; }
.bv-set-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px; }
.bv-set-grid .bv-ff { grid-column: span 3; }
.bv-set-grid .bv-input--half { grid-column: span 3; }
.bv-grid-filler { grid-column: span 3; display: block; }
.bv-set__section .bv-ff__input { padding-right: 14px; } /* no validation check here */
.bv-set-forgot { display: flex; justify-content: flex-end; margin-top: 12px; }
.bv-set-forgot a { color: #C21E5A; font-size: 15px; text-decoration: underline; }
.bv-set-forgot a:hover { color: #D9529B; }

/* Notifications */
.bv-notify { display: flex; flex-direction: column; gap: 16px; }
.bv-notify-card { border: 1px solid #EDEAEE; border-radius: 16px; padding: 20px 24px; }
.bv-notify-card__title { font-weight: 700; font-size: 17px; color: #2A2424; margin: 0 0 6px; }
.bv-notify-card__desc { color: #2A2424; font-size: 16px; margin: 0 0 16px; }
.bv-notify-card__toggles { display: flex; gap: 12px; flex-wrap: wrap; }

/* Pill toggle */
.bv-switch { display: inline-flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 30px; background: #F2F2F4; cursor: pointer; user-select: none; }
.bv-switch__text { font-size: 15px; color: #6B6973; transition: color .15s ease; }
.bv-switch input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.bv-switch__track { position: relative; width: 42px; height: 24px; border-radius: 30px; background: #D7D5DD; transition: background .15s ease; flex-shrink: 0; }
.bv-switch__thumb { position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .25); transition: left .15s ease; }
.bv-switch input:checked + .bv-switch__track { background: #E83E74; }
.bv-switch input:checked + .bv-switch__track .bv-switch__thumb { left: 20px; }
.bv-switch:has(input:checked) { background: #FDEBF4; }
.bv-switch:has(input:checked) .bv-switch__text { color: #C21E5A; }
.bv-switch input:focus-visible + .bv-switch__track { outline: 2px solid #E83E74; outline-offset: 2px; }

.bv-set__actions { margin-top: 8px; }

@media (max-width: 640px) {
    .bv-set-grid .bv-ff, .bv-set-grid .bv-input--half { grid-column: 1 / -1; }
    .bv-grid-filler { display: none; }
}

@media (max-width: 640px) {
    .bv-modal__dialog { padding: 24px; }
    .bv-input--half, .bv-ff { grid-column: 1 / -1; }
}

@media (max-width: 640px) {
    .bv-addr-form__grid { grid-template-columns: 1fr; }
    .bv-addr-card__actions { flex-wrap: wrap; }
}

/* ===== Wishlist (custom endpoint, Figma) ===== */
.bv-wl__head { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; }
.bv-wl__title { font-family: "Gabriela", "DM Serif Display", Georgia, serif; font-weight: 400; font-size: clamp(30px, 4vw, 48px); line-height: 1; color: #2A2424; margin: 0; }
.bv-wl__count { display: inline-flex; align-items: center; padding: 5px 14px; border-radius: 30px; background: #FFECF6; color: #C21E5A; font-size: 15px; font-weight: 600; }

.bv-wl-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 22px; flex-wrap: wrap; }

/* Select-all */
.bv-wl-selectall { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; }
.bv-wl-selectall input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.bv-wl-selectall__box { position: relative; width: 22px; height: 22px; border: 2px solid #C9C7CF; border-radius: 6px; background: #fff; transition: background .15s ease, border-color .15s ease; }
.bv-wl-selectall__box::after { content: ""; position: absolute; inset: 0; }
.bv-wl-selectall input:checked + .bv-wl-selectall__box,
.bv-wl-selectall.is-indeterminate .bv-wl-selectall__box { background: #E83E74; border-color: #E83E74; }
.bv-wl-selectall input:checked + .bv-wl-selectall__box::after { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/14px no-repeat; }
.bv-wl-selectall.is-indeterminate .bv-wl-selectall__box::after { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3C/svg%3E") center/14px no-repeat; }
.bv-wl-selectall__label { font-size: 16px; color: #2A2424; }
.bv-wl-selectall__count { font-size: 16px; font-weight: 700; color: #C21E5A; }

.bv-wl-actions { display: inline-flex; gap: 12px; }
.bv-wl-actions[hidden] { display: none; }
.bv-wl-selectall__count[hidden], .bv-wl-selectall__label[hidden] { display: none; }
body.bv-body button.bv-wl-delete { display: inline-flex; align-items: center; gap: 8px; }
.bv-wl-delete svg { width: 18px; height: 18px; }

/* Grid */
.bv-wl-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 21px; }
.bv-wl-card { position: relative; }
.bv-wl-card .bv-card__wishlist { display: none; } /* heart replaced by select checkbox */

/* Per-card circular select checkbox (top-right over the media) */
.bv-wl-check { position: absolute; top: 12px; right: 12px; z-index: 3; cursor: pointer; }
.bv-wl-check input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.bv-wl-check__box { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: rgba(255, 255, 255, .92); border: 1.5px solid #E2E0E6; color: transparent; box-shadow: 0 1px 4px rgba(0, 0, 0, .12); transition: background .15s ease, border-color .15s ease, color .15s ease; }
.bv-wl-check__box svg { width: 16px; height: 16px; }
.bv-wl-check input:checked + .bv-wl-check__box { background: #E83E74; border-color: #E83E74; color: #fff; }
.bv-wl-card:has(.js-bv-wl-item:checked) .bv-card { outline: 2px solid #E83E74; outline-offset: 2px; border-radius: 16px; }

/* Wishlist heart on product cards (site-wide; base lived only in home-v2.css). */
.bv-card__wishlist {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .9);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--bv-text, #2A2424);
    cursor: pointer;
    transition: background .15s ease, color .15s ease;
    z-index: 3;
}
.bv-card__wishlist:hover { background: #fff; }
/* Larger heart on the product-page gallery. */
.bv-pd__wishlist { width: 44px; height: 44px; top: 16px; right: 16px; box-shadow: 0 1px 6px rgba(0,0,0,.12); }

/* Heart active state (site-wide cards) */
body.bv-body .bv-card__wishlist.is-active { color: #C21E5A; }
body.bv-body .bv-card__wishlist.is-active svg { fill: #E83E74; }

@media (max-width: 1100px) { .bv-wl-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) {
    .bv-wl-grid { grid-template-columns: 1fr; }
    .bv-wl-toolbar { align-items: flex-start; }
    .bv-wl-actions { width: 100%; }
}


/* ===== Bloom v2 — multi-step WooCommerce checkout skin ===== */
/* Step 3 real WC form sits inside .bv-checkout__main; display:contents lets its cards flow. */
.bv-checkout-form { display: contents; }

/* WC field groups in steps 1 & 2 */
.bv-checkout .bv-wc-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.bv-checkout .bv-wc-fields .form-row-wide,
.bv-checkout .bv-wc-fields .notes,
.bv-checkout .bv-wc-fields #order_comments_field { grid-column: 1 / -1; }
@media (max-width: 720px) { .bv-checkout .bv-wc-fields { grid-template-columns: 1fr; } }

.bv-checkout .form-row { margin: 0 0 14px; display: flex; flex-direction: column; }
.bv-checkout .form-row label { font-size: 13px; font-weight: 600; color: var(--bv-text); margin-bottom: 6px; }
.bv-checkout .form-row .required { color: #C21E5A; border: 0; text-decoration: none; }
.bv-checkout .input-text,
.bv-checkout input[type="text"],
.bv-checkout input[type="email"],
.bv-checkout input[type="tel"],
.bv-checkout input[type="password"],
.bv-checkout input[type="number"],
.bv-checkout select,
.bv-checkout textarea {
    height: 48px; padding: 0 14px; border: 1px solid var(--bv-border);
    border-radius: var(--bv-radius-sm); font-family: inherit; font-size: 14px;
    background: #fff; color: var(--bv-text); width: 100%; box-sizing: border-box;
}
.bv-checkout textarea { height: auto; min-height: 80px; padding: 12px 14px; resize: vertical; }
.bv-checkout .input-text:focus,
.bv-checkout select:focus,
.bv-checkout textarea:focus { outline: none; border-color: var(--bv-pink); }

/* Order-review table + payment block (works whether in aside or main column) */
.bv-checkout .shop_table { width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 12px; }
.bv-checkout .shop_table th,
.bv-checkout .shop_table td { padding: 10px 0; text-align: right; vertical-align: top; }
.bv-checkout .shop_table th { text-align: left; font-weight: 500; color: var(--bv-text-2); }
.bv-checkout #payment { background: transparent; border-radius: 0; }
.bv-checkout #payment ul.payment_methods { list-style: none; margin: 16px 0; padding: 0; border: 0; }
.bv-checkout #payment ul.payment_methods li { margin-bottom: 8px; line-height: 1.5; }
.bv-checkout #payment .payment_box { background: var(--bv-bg-soft, #f7f7f7); border-radius: var(--bv-radius-sm); padding: 12px 14px; }
.bv-checkout #place_order {
    width: 100%; height: 52px; border: 0; border-radius: var(--bv-radius-sm);
    background: var(--bv-pink); color: #fff; font-weight: 700; font-size: 16px;
    cursor: pointer; margin-top: 8px; float: none;
}
.bv-checkout #place_order:hover { background: var(--bv-pink-hover); }

/* Review recap (step 3) */
.bv-review-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 720px) { .bv-review-grid { grid-template-columns: 1fr; } }
.bv-review__h { font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--bv-text-2); margin: 0 0 6px; }
.bv-review__body { font-size: 14px; line-height: 1.6; color: var(--bv-text); margin: 0 0 8px; }
.bv-review__edit { font-size: 13px; color: #C21E5A; }

/* Order summary (checkout aside) — match the original v2 summary look */
.bv-summary--checkout .woocommerce-checkout-review-order-table { border: 0; margin: 4px 0 0; }
.bv-summary--checkout .woocommerce-checkout-review-order-table thead th {
    font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--bv-text-2);
    font-weight: 600; padding: 0 0 10px; border-bottom: 1px solid var(--bv-border); text-align: left;
}
.bv-summary--checkout .woocommerce-checkout-review-order-table thead th.product-total { text-align: right; }
.bv-summary--checkout .cart_item td {
    padding: 14px 0; border-bottom: 1px solid var(--bv-border);
    vertical-align: top; font-size: 14px;
}
.bv-summary--checkout .cart_item td.product-name { text-align: left; color: var(--bv-text); font-weight: 500; }
.bv-summary--checkout .cart_item td.product-total { text-align: right; white-space: nowrap; }
.bv-summary--checkout .product-quantity { color: var(--bv-text-2); font-weight: 400; }
.bv-summary--checkout tfoot th,
.bv-summary--checkout tfoot td { padding: 10px 0; border: 0; font-size: 14px; }
.bv-summary--checkout tfoot th { text-align: left; font-weight: 400; color: var(--bv-text-2); }
.bv-summary--checkout tfoot td { text-align: right; color: var(--bv-text); }
.bv-summary--checkout tfoot .order-total th,
.bv-summary--checkout tfoot .order-total td {
    padding-top: 14px; border-top: 1px solid var(--bv-border);
    font-weight: 700; color: var(--bv-text);
}
.bv-summary--checkout tfoot .order-total th { font-size: 16px; }
.bv-summary--checkout tfoot .order-total td { font-size: 18px; }

/* Step 3 single-column (no aside) + express-pay row */
.bv-checkout--final { grid-template-columns: 1fr; }
.bv-express-pay { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 6px 0 0; }
.bv-express-pay__btn {
    height: 48px; border: 1px solid var(--bv-border); border-radius: var(--bv-radius-sm);
    background: #fff; font-weight: 600; font-size: 14px; color: var(--bv-text);
    cursor: not-allowed; opacity: .55;
}
.bv-express-pay__divider { text-align: center; position: relative; margin: 18px 0; color: var(--bv-text-2); font-size: 13px; }
.bv-express-pay__divider::before { content: ""; position: absolute; top: 50%; left: 0; right: 0; height: 1px; background: var(--bv-border); }
.bv-express-pay__divider span { position: relative; background: #fff; padding: 0 12px; }

/* =========================================================================
   Bloom Checkout v2 — pixel port of checkout-prototype (scoped to checkout)
   Uses the prototype's .co-* classes; tokens scoped to .bv-page--checkout so
   nothing leaks site-wide. WooCommerce .form-row fields are mapped to the
   .co-field look.
   ========================================================================= */
.bv-page--checkout {
    /* Canonical Figma tokens: pink #E83E74, pink-soft #FFECF6, cream #FFF7EC,
       ink #2A2424, muted #6B6973, serif Gabriela (via --bv-serif). */
    --pink: #E83E74; --pink-hover: #D8579C; --pink-soft: #FFECF6;
    --gold: #C98A1E; --gold-soft: #F7E6C0; --cream: #FFF7EC;
    --co-text: #2A2424; --co-muted: #6B6973; --co-border: #E7E4DF;
    --co-radius: 16px; --co-radius-sm: 6px;
    --co-serif: var(--bv-serif, "Gabriela", "Playfair Display", Georgia, serif);
}

/* Stepper — Tim's rounded 3-pill progress (Bloom pink). */
.co-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; max-width: 1047px; margin: 0 auto; padding: 24px 24px 28px; }
/* Stepper now lives at the top of the left column — fill it, flush, no auto-centering */
.bv-page--checkout .co-main > .co-steps { max-width: none; margin: 0; padding: 0; order: -1; }
.bv-page--checkout .co-step3__main > .co-steps { max-width: none; margin: 0; padding: 0; }
.co-steps__item { display: flex; align-items: center; gap: 10px; color: var(--co-muted); border: 1px solid var(--co-border); border-radius: 999px; padding: 10px 14px; background: #fff; min-width: 0; transition: .2s ease; }
.co-steps__num { width: 26px; height: 26px; border-radius: 50%; background: #EDEDED; color: #9A9A9A; display: inline-flex; align-items: center; justify-content: center; font-weight: 900; font-size: 12px; flex: 0 0 26px; }
.co-steps__sub { display: none; }
.co-steps__name { font-weight: 800; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.co-steps__item.is-active { color: var(--pink); border-color: rgba(232,62,116,.30); background: var(--pink-soft); }
.co-steps__item.is-active .co-steps__num { background: var(--pink); color: #fff; }
.co-steps__item.is-done .co-steps__num { background: var(--pink); color: #fff; }
.co-steps__sep { display: none; }
@media (max-width: 700px) { .co-steps { gap: 7px; } .co-steps__item { justify-content: center; padding: 8px; } .co-steps__name { display: none; } }

/* Layout */
.co-wrap { max-width: 1520px; margin: 0 auto; padding: 0 24px 80px; }
/* Hide the green WooCommerce success notice (e.g. "… added to your cart") on the
   v2 checkout — it's noise here; the v2 flow gives its own feedback. Errors
   (.woocommerce-error) and info (.woocommerce-info) still show. */
.bv-page--checkout .woocommerce-message { display: none; }
.co-grid { display: grid; grid-template-columns: 1fr 622px; gap: 20px; align-items: start; }
/* Step 3 fills the same wrap width as steps 1-2 (was capped at 1120px, which
   made the final step visibly narrower than the others). */
.co-grid--final { grid-template-columns: 1fr; }
.co-main { display: flex; flex-direction: column; gap: 20px; }
.co-aside { position: sticky; top: 24px; }
/* Left column sticks alongside the summary as the taller column scrolls. */
.co-grid > .co-main { position: sticky; top: 24px; align-self: start; }

/* Delivery step: exact A/B/C/D order (address, recipient, upgrades, gift) + badges */
.bv-page--checkout .co-stephead { order: 0; }
.bv-page--checkout .co-sec--a { order: 1; }
.bv-page--checkout .co-sec--b { order: 2; }
.bv-page--checkout .co-sec--c { order: 3; }
.bv-page--checkout .co-sec--d { order: 4; }
.bv-page--checkout .bv-step-form .co-actions { order: 9; }
.bv-page--checkout .co-sec__badge { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 999px; background: var(--pink-soft); color: var(--pink); font-size: 12px; font-weight: 800; margin-right: 8px; vertical-align: 2px; }
.bv-page--checkout .co-usemine { border: 0; background: none; color: var(--pink); font-weight: 600; font-size: 13px; text-decoration: underline; text-underline-offset: 3px; padding: 10px 0 0; cursor: pointer; }
.bv-page--checkout .co-gift__notes-label { margin-top: 16px; }

/* Cards */
.co-card { background: #fff; border: 0; border-radius: var(--co-radius); padding: 40px; box-shadow: 0 0 52px rgba(0,0,0,.06); }
.co-card__title { font-family: var(--co-serif); font-size: 48px; font-weight: 700; margin: 0 0 20px; color: #181B02; line-height: 1.05; }
.co-card__sub { color: var(--co-muted); font-size: 18px; margin: 0 0 18px; }

/* "Send again" reminder banner (Figma 289-3040) */
.co-reminder { display: flex; gap: 16px; align-items: flex-start; background: #FFF7EC; border: 1px solid #F0C97A; border-radius: var(--co-radius-sm, 12px); padding: 20px 24px; margin: 0 0 24px; }
.co-reminder__icon { flex: 0 0 auto; line-height: 0; margin-top: 2px; }
.co-reminder__body { flex: 1 1 auto; }
.co-reminder__title { font-weight: 700; font-size: 18px; color: #181B02; margin: 0 0 4px; }
.co-reminder__sub { color: var(--co-muted); font-size: 15px; margin: 0 0 14px; }
.co-reminder__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.co-reminder[hidden] { display: none; }
@media (max-width: 600px) {
    .co-reminder__actions { flex-direction: column; align-items: stretch; }
    .co-reminder__actions .co-btn { width: 100%; }
}

.bv-page--checkout #shipping_first_name_field,
.bv-page--checkout #shipping_last_name_field,
.bv-page--checkout #billing_first_name_field,
.bv-page--checkout #billing_last_name_field,
.bv-page--checkout #billing_email_field,
.bv-page--checkout #billing_phone_field { width: 100%; }
.co-card__label { font-weight: 600; margin: 18px 0 10px; }

/* Banner / toggle */
.co-banner { display: flex; align-items: center; gap: 16px; justify-content: space-between; background: var(--pink-soft); border: 1px solid #F4D3E4; border-radius: var(--co-radius); padding: 14px 18px; margin-bottom: 20px; }
.co-banner strong { display: block; } .co-banner p { margin: 2px 0 0; color: var(--co-muted); }

/* Guest sign-in banner — gradient + avatar (Figma step-1 spec) */
.co-banner--signin { background: linear-gradient(166deg, #FDE7F2 0%, #FFF6E5 100%); border: 1px solid var(--pink); border-radius: 6px; padding: 20px; gap: 24px; }
.co-banner--signin .co-banner__avatar { width: 54px; height: 54px; border-radius: 50%; background: #fff; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.co-banner--signin .co-banner__text { flex: 1; }
.co-banner--signin .co-banner__text strong { font-weight: 600; font-size: 20px; color: #000; }
.co-banner--signin .co-banner__text p { color: #000; font-size: 18px; }
.co-banner__signin { background: #fff; border: 1px solid var(--pink); color: var(--pink); padding: 0 32px; min-width: auto; font-family: "DM Sans", sans-serif; }
.co-banner__signin:hover { background: var(--pink-soft); }

/* Saved-recipients address book on the Delivery step (Figma 289-2947). */
.co-addrbook { display: flex; flex-direction: column; gap: 16px; }
.co-addr-card { position: relative; display: flex; gap: 12px; align-items: flex-start; padding: 20px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); background: #fff; cursor: pointer; transition: border-color .15s ease, box-shadow .15s ease; }
.co-addr-card:hover { border-color: var(--pink); }
.co-addr-card.is-active { border-color: var(--pink); box-shadow: 0 0 9px rgba(236,107,173,.15); }
.co-addr-card__radio { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--pink); flex: 0 0 auto; }
.co-addr-card__body { display: flex; flex-direction: column; gap: 6px; flex: 1 1 auto; min-width: 0; }
.co-addr-card__top { display: flex; align-items: center; gap: 8px; }
.co-addr-card__name { font-weight: 600; font-size: 20px; color: var(--co-text); }
.co-addr-card__badge { background: var(--pink-soft); color: var(--pink); font-weight: 700; font-size: 14px; line-height: 16px; padding: 4px 11px; border-radius: var(--co-radius-sm); }
.co-addr-card__line { color: var(--co-text); font-size: 18px; line-height: 1.4; }
.co-addr-card__actions { display: flex; flex-direction: column; align-items: flex-end; gap: 14px; flex: 0 0 auto; }
.co-addr-card__edit { color: var(--co-text); line-height: 0; }
.co-addr-card__edit:hover { color: var(--pink); }
.co-addr-card__act { font-family: "DM Sans", sans-serif; font-weight: 600; font-size: 14px; color: var(--co-muted); border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); padding: 6px 16px; white-space: nowrap; }
.co-addr-card__act:hover { border-color: var(--pink); color: var(--pink); }
.co-addr-add { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 18px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); background: #fff; color: var(--pink); font-weight: 600; font-size: 20px; cursor: pointer; }
.co-addr-add:hover { border-color: var(--pink); background: var(--pink-soft); }
.co-addr-add__plus { font-size: 24px; line-height: 1; }
.co-addr-newrecip { align-self: center; background: none; border: 0; color: var(--pink); font-weight: 600; font-size: 16px; text-decoration: underline; cursor: pointer; }
.co-addrbook__empty { color: var(--co-muted); font-size: 15px; margin: 0; }
.co-addrform__err { color: #C0392B; font-size: 14px; margin: 4px 0 0; }
.co-addrform__err[hidden] { display: none; }

/* New-address modal (Figma 1578-26022). Reuses .bv-modal. */
.co-addrmodal .bv-modal__dialog { width: min(1040px, 100%); }
.co-addrmodal .co-fields { margin-bottom: 12px; }
.co-addrmodal__types { margin: 8px 0 16px; }
.co-addrmodal__foot { display: flex; gap: 16px; justify-content: center; margin-top: 8px; }
.co-addrmodal__foot .co-btn { min-width: 220px; }
/* Mobile: the fixed-width Sign-in button overflowed the row — wrap it to a
   full-width line below the avatar + text. */
@media (max-width: 600px) {
    .co-banner--signin { flex-wrap: wrap; gap: 14px; padding: 16px; }
    .co-banner--signin .co-banner__text { flex: 1 1 auto; }
    .co-banner--signin .co-banner__signin { width: 100%; padding: 12px 32px; text-align: center; }
}
.co-toggle-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: #fff; border: 0; border-radius: 16px; padding: 40px; box-shadow: 0 0 52.2px rgba(0, 0, 0, 0.06); margin-bottom: 20px; }

/* WooCommerce fields mapped to the co-field look */
.bv-page--checkout .co-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.bv-page--checkout .co-fields + .co-fields { margin-top: 20px; }
.bv-page--checkout .co-fields .form-row { grid-column: span 1; }
.bv-page--checkout .co-fields .form-row-wide,
.bv-page--checkout .co-fields .form-row-full { grid-column: 1 / -1; }
/* Shipping phone full-width regardless of its WooCommerce form-row-first/last
   class (which otherwise pins it to ~47%). */
.bv-page--checkout .co-fields #shipping_phone_field { grid-column: 1 / -1; width: 100%; float: none; }
.bv-page--checkout .co-fields--addr { grid-template-columns: 1fr 1fr 1fr; }
.bv-page--checkout .form-row { margin: 0 0 14px; display: flex; flex-direction: column; }
.bv-page--checkout .form-row label { font-size: 13px; font-weight: 600; margin-bottom: 6px; color: var(--co-text); }
.bv-page--checkout .form-row .required { color: var(--pink); border: 0; text-decoration: none; }

/* Floating labels for checkout fields (Figma step-1/2 spec) */
.bv-page--checkout .co-fields .form-row { position: relative; margin: 0; }
.bv-page--checkout .co-fields .form-row label {
    position: absolute; left: 12px; top: 0; transform: translateY(-50%);
    margin: 0; padding: 0 5px; font-size: 18px; font-weight: 400; color: #6B6973;
    background: transparent; pointer-events: none; transition: top .12s ease, font-size .12s ease, color .12s ease; z-index: 1;
}
.bv-page--checkout .co-fields .form-row.is-filled label,
.bv-page--checkout .co-fields .form-row.is-focus label {
    top: 0; font-size: 14px; background: #fff;
}
.bv-page--checkout .co-fields .form-row.is-focus label { color: var(--pink); }
.bv-page--checkout .co-fields--valid .form-row.is-valid label { color: var(--co-green); background: linear-gradient(180deg, #fff 0%, #FFECF6 100%); }
.bv-page--checkout .input-text, .bv-page--checkout input[type="text"], .bv-page--checkout input[type="email"],
.bv-page--checkout input[type="tel"], .bv-page--checkout input[type="password"], .bv-page--checkout select,
.bv-page--checkout textarea, .co-input, .co-select, .co-textarea {
    width: 100%; height: 44px; padding: 0 14px; border: 1px solid #DDDDDD;
    border-radius: var(--co-radius-sm); font: inherit; background: #fff; color: var(--co-text); box-sizing: border-box;
}
.bv-page--checkout textarea, .co-textarea { height: auto; min-height: 84px; padding: 12px 14px; resize: vertical; }
.bv-page--checkout .input-text:focus, .bv-page--checkout select:focus, .bv-page--checkout textarea:focus,
.co-input:focus, .co-select:focus, .co-textarea:focus { outline: none; border-color: var(--pink); }
.co-label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; }

/* Dropdown chevron for every v2 <select> that doesn't already carry one
   (catalog sort + order filter supply their own). Native arrow off, custom
   chevron in reserved right padding. */
.bv-page--checkout select, .co-select,
select.bv-field__input, select.bv-orders__filter {
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    padding-right: 40px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237A7882' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
}

/* Note boxes / checkboxes */
.co-note { display: flex; gap: 10px; align-items: flex-start; background: var(--cream); border-radius: var(--co-radius-sm); padding: 12px 14px; margin-top: 14px; }
.co-check { display: flex; gap: 10px; align-items: flex-start; margin-top: 14px; cursor: pointer; }
.co-check input { margin-top: 2px; }

/* Radio cards */
.co-radios { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 10px; }
/* Address-type radio cards — expanded, with a circle radio (Figma 1555-23944) */
.co-radios--addr .co-radio { display: grid; grid-template-columns: auto 1fr; column-gap: 10px; row-gap: 4px; align-items: start; padding: 12px 14px; }
.co-radios--addr .co-radio__radio { grid-row: 1; grid-column: 1; width: 18px; height: 18px; border: 2px solid #C9C6C1; border-radius: 50%; margin-top: 2px; position: relative; flex: none; }
.co-radios--addr .co-radio.is-active .co-radio__radio { border-color: var(--pink); }
.co-radios--addr .co-radio.is-active .co-radio__radio::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--pink); }
.co-radios--addr .co-radio__title { grid-row: 1; grid-column: 2; }
.co-radios--addr .co-radio__hint { grid-row: 2; grid-column: 2; }
/* Step-3 Order summary card (Figma 317-8135) */
.co-ordersum__rows { margin-top: 6px; }
.co-ordersum__row { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-top: 1px solid var(--co-border); color: var(--co-muted); }
.co-ordersum__row:first-child { border-top: 0; }
.co-ordersum__row span:last-child { color: var(--co-text); text-align: right; }
.co-ordersum__row--discount span:last-child { color: var(--pink); }
.co-ordersum__total { display: flex; justify-content: space-between; align-items: center; margin-top: 12px; padding: 14px 18px; border-radius: var(--co-radius-sm); background: linear-gradient(90deg, #FCEAF1, #FBEFD9); font-weight: 700; font-size: 22px; }
.co-agree { display: flex; flex-direction: column; gap: 12px; margin-top: 20px; }
.co-agree a { color: var(--pink); text-decoration: underline; }
.co-ordersum__help { margin-top: 18px; color: var(--co-text); }
.co-ordersum__help a { color: var(--pink); text-decoration: underline; }

/* Step 3 two-column layout (Figma 1673-23924 / 1673-24616): tip + pay on the
   left, Your order / Delivery information / summary in a sticky sidebar. */
.bv-page--checkout .co-step3 { display: grid; grid-template-columns: minmax(0, 1fr) 622px; gap: 20px; align-items: start; }
.bv-page--checkout .co-step3__main { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.bv-page--checkout .co-step3__side { position: sticky; top: 24px; }
.co-ordersum__items { display: flex; flex-direction: column; gap: 14px; margin: 8px 0 4px; }
.co-ordersum__item { display: grid; grid-template-columns: 56px 1fr auto; gap: 12px; align-items: center; }
.co-ordersum__img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; background: #f3f1ee; }
.co-ordersum__iteminfo { display: flex; flex-direction: column; gap: 2px; }
.co-ordersum__itemname { font-weight: 600; color: var(--co-text); }
.co-ordersum__itemmeta { font-size: 13px; color: var(--co-muted); }
.co-ordersum__itemprice { font-weight: 700; color: var(--co-text); white-space: nowrap; }
.co-ordersum__sumtitle { font-family: var(--co-serif); font-size: 22px; font-weight: 700; color: var(--co-text); margin: 22px 0 4px; }
.co-delivinfo { border-top: 1px solid var(--co-border); margin-top: 16px; }
.co-delivinfo .co-disclose__btn { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 14px 0 4px; background: none; border: 0; cursor: pointer; font-weight: 600; font-size: 16px; color: var(--co-text); }
.co-delivinfo .co-disclose__chev { transition: transform .2s ease; flex: none; }
.co-delivinfo .co-disclose__btn[aria-expanded="false"] .co-disclose__chev { transform: rotate(-90deg); }
.co-delivinfo__panel .co-revorder__details { border-top: 0; padding-top: 4px; }
.co-delivinfo__panel .bv-review__edit { color: var(--pink); text-decoration: underline; font-weight: 600; display: inline-block; margin-top: 12px; }
@media (max-width: 960px) {
    .bv-page--checkout .co-step3 { grid-template-columns: 1fr; }
    .bv-page--checkout .co-step3__side { position: static; }
}

/* Address-type-specific note (Hospital delivery rules — Figma 273-2250) */
.co-addr-notes { margin-top: 12px; }
.co-addr-notes { display: flex; flex-direction: column; gap: 16px; }
.co-addr-note { background: var(--cream); border: 1px solid #DE9E09; border-radius: var(--co-radius-sm); padding: 18px 20px; }
.co-addr-note__title { font-weight: 600; font-size: 20px; color: #DE9E09; margin: 0 0 8px; }
.co-addr-note__body { color: #2A2424; font-size: 14px; line-height: 1.15; margin: 0; }
.co-addr-only { display: block; }
.co-addr-only[hidden] { display: none; }
/* Venue matrix — 8 delivery-destination pills (Tim's design, Bloom pink). */
.bv-page--checkout .co-venues { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 20px 0 14px; }
.bv-page--checkout .co-venue { border: 1px solid var(--co-border); border-radius: 16px; background: #fff; padding: 13px 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 76px; color: var(--co-text); font-weight: 800; cursor: pointer; transition: .2s ease; }
.bv-page--checkout .co-venue:hover { transform: translateY(-1px); border-color: rgba(232,62,116,.28); }
.bv-page--checkout .co-venue.is-active { border-color: rgba(232,62,116,.45); background: var(--pink-soft); color: var(--pink); }
.bv-page--checkout .co-venue__emoji { font-size: 22px; line-height: 1; }
.bv-page--checkout .co-venue__name { font-size: 12px; }
@media (max-width: 700px) { .bv-page--checkout .co-venues { grid-template-columns: repeat(2, 1fr); } }

/* "Upgrade delivery confidence" — opt-in service fees (Tim's Section C) */
.bv-page--checkout .co-upgrade-list { display: flex; flex-direction: column; gap: 12px; }
.bv-page--checkout .co-upgrade { display: flex; align-items: flex-start; gap: 14px; padding: 16px 18px; border: 1px solid var(--co-border); border-radius: 16px; background: #fff; cursor: pointer; transition: border-color .2s ease, background .2s ease; }
.bv-page--checkout .co-upgrade:hover { border-color: rgba(232,62,116,.28); }
.bv-page--checkout .co-upgrade.is-active { border-color: rgba(232,62,116,.45); background: var(--pink-soft); }
.bv-page--checkout .co-upgrade input[type="checkbox"] { appearance: none; -webkit-appearance: none; flex: 0 0 auto; width: 22px; height: 22px; margin-top: 1px; border: 2px solid var(--co-border); border-radius: 6px; background: #fff; cursor: pointer; position: relative; transition: .15s ease; }
.bv-page--checkout .co-upgrade input[type="checkbox"]:checked { background: var(--pink); border-color: var(--pink); }
.bv-page--checkout .co-upgrade input[type="checkbox"]:checked::after { content: ""; position: absolute; left: 6px; top: 2px; width: 6px; height: 11px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.bv-page--checkout .co-upgrade__icon { flex: 0 0 auto; color: var(--pink); display: flex; align-items: center; }
.bv-page--checkout .co-upgrade__body { display: flex; flex-direction: column; gap: 3px; }
.bv-page--checkout .co-upgrade__title { font-weight: 700; color: var(--co-text); }
.bv-page--checkout .co-upgrade__price { color: var(--pink); font-weight: 800; margin-left: 4px; }
.bv-page--checkout .co-upgrade__price .woocommerce-Price-amount { color: inherit; }
.bv-page--checkout .co-upgrade__desc { font-size: 13px; color: var(--co-muted); line-height: 1.4; }

/* Step heading (Your Info / Delivery) — big serif intro above the cards */
.bv-page--checkout .co-stephead { margin: 4px 0 4px; }
.bv-page--checkout .co-stephead__title { font-family: Georgia, "Times New Roman", serif; font-size: clamp(28px, 3.4vw, 40px); line-height: 1.1; color: var(--co-text); margin: 0 0 8px; font-weight: 500; }
.bv-page--checkout .co-stephead__sub { color: var(--co-muted); font-size: 15px; line-height: 1.5; margin: 0; max-width: 46ch; }

/* Step 1: express-pay wallet shell + guest divider + field icons */
.bv-page--checkout .co-wallets { display: grid; gap: 10px; }
.bv-page--checkout .co-wallet { height: 54px; border-radius: 12px; border: 1px solid #D5DAE1; background: #fff; display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 17px; font-weight: 800; color: var(--co-text); cursor: pointer; }
.bv-page--checkout .co-wallet--apple { background: #08090d; color: #fff; border-color: #08090d; }
.bv-page--checkout .co-wallet--google .co-wallet__g { color: #4285f4; font-weight: 900; }
.bv-page--checkout .co-guestdiv { display: flex; align-items: center; gap: 12px; color: #b0b6c0; font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.bv-page--checkout .co-guestdiv span { white-space: nowrap; }
.bv-page--checkout .co-guestdiv::before, .bv-page--checkout .co-guestdiv::after { content: ""; height: 1px; background: var(--co-border); flex: 1; }
.bv-page--checkout .co-fields--iconed input { padding-left: 42px !important; background-repeat: no-repeat; background-position: 13px center; background-size: 18px 18px; }
.bv-page--checkout .co-fields--iconed input#billing_first_name, .bv-page--checkout .co-fields--iconed input#billing_last_name { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E83E74' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 20c0-4 4-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); }
.bv-page--checkout .co-fields--iconed input#billing_email { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E83E74' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3 7 9 6 9-6'/%3E%3C/svg%3E"); }
.bv-page--checkout .co-fields--iconed input#billing_phone { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E83E74' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2 4.2 2 2 0 0 1 4 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8 9.9a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.8.7A2 2 0 0 1 22 16.9z'/%3E%3C/svg%3E"); }

/* Step 3: inline card shell (visual → hands off to Solidgate on click) */
.bv-page--checkout .co-payshell { border: 1px solid var(--co-border); border-radius: 16px; padding: 16px; cursor: pointer; transition: border-color .15s ease, box-shadow .15s ease; }
.bv-page--checkout .co-payshell:hover, .bv-page--checkout .co-payshell:focus-visible { border-color: rgba(232,62,116,.5); box-shadow: 0 0 0 4px rgba(232,62,116,.08); outline: none; }
.bv-page--checkout .co-wallets--pay { margin-bottom: 12px; }
.bv-page--checkout .co-guestdiv--pay { margin: 10px 0 14px; }
.bv-page--checkout .co-payshell .co-field { margin-bottom: 12px; }
.bv-page--checkout .co-payshell .co-field label { display: block; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--co-muted); margin: 0 0 5px 2px; }
.bv-page--checkout .co-payshell .co-field input { width: 100%; height: 50px; border: 1px solid var(--co-border); border-radius: 11px; padding: 0 14px; background: #fff; font-size: 15px; color: var(--co-text); pointer-events: none; }
.bv-page--checkout .co-payshell .co-field__ctrl { position: relative; }
.bv-page--checkout .co-cardlogos { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); display: flex; gap: 5px; }
.bv-page--checkout .co-cardlogo { width: 26px; height: 17px; border-radius: 3px; background: #e5e7eb; }
.bv-page--checkout .co-cardlogo--visa { background: #1a1f71; }
.bv-page--checkout .co-cardlogo--mc { background: #eb001b; }
.bv-page--checkout .co-cardlogo--disc { background: #f79e1b; }
.bv-page--checkout .co-field-split { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.bv-page--checkout .co-payshell__secure { display: flex; align-items: center; gap: 7px; margin: 4px 0 0; font-size: 12px; font-weight: 700; color: var(--green, #0d6d48); }

/* "Personalize your gift" — gift studio (Tim's Section D) */
.bv-page--checkout .co-gift__field { margin-bottom: 14px; }
.bv-page--checkout .co-gift__label { display: block; font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--co-muted); margin: 0 0 6px; }
.bv-page--checkout .co-gift__opt { font-weight: 500; text-transform: none; letter-spacing: 0; }
.bv-page--checkout .co-gift__occasion { width: 100%; }
.bv-page--checkout .co-gift__chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 16px; }
.bv-page--checkout .co-gift__chip { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border: 1px solid var(--co-border); border-radius: 999px; background: #fff; font-weight: 700; font-size: 13px; color: var(--co-text); cursor: pointer; transition: .18s ease; }
.bv-page--checkout .co-gift__chip:hover { border-color: rgba(232,62,116,.4); }
.bv-page--checkout .co-gift__chip.is-active { border-color: var(--pink); background: var(--pink-soft); color: var(--pink); }
.bv-page--checkout .co-gift__msgwrap { position: relative; }
.bv-page--checkout .co-gift__msg { width: 100%; resize: vertical; }
.bv-page--checkout .co-gift__count { position: absolute; right: 12px; bottom: 10px; font-size: 12px; color: var(--co-muted); background: #fff; padding: 0 4px; pointer-events: none; }
.bv-page--checkout .co-gift__preview { display: flex; gap: 14px; align-items: stretch; margin: 14px 0 4px; padding: 14px; background: var(--cream); border: 1px solid var(--gold-soft); border-radius: 16px; }
.bv-page--checkout .co-gift__card { flex: 0 0 96px; border-radius: 12px; background: linear-gradient(150deg,#fff 0%, #FBEFE0 100%); border: 1px solid var(--gold-soft); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 10px; }
.bv-page--checkout .co-gift__card-script { font-family: Georgia, "Times New Roman", serif; font-style: italic; color: var(--gold); font-size: 15px; }
.bv-page--checkout .co-gift__card-sprig { font-size: 18px; }
.bv-page--checkout .co-gift__preview-body { flex: 1; display: flex; flex-direction: column; gap: 4px; }
.bv-page--checkout .co-gift__preview-label { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--gold); }
.bv-page--checkout .co-gift__preview-text { margin: 0; font-family: Georgia, "Times New Roman", serif; color: var(--co-text); line-height: 1.5; white-space: pre-wrap; }
.bv-page--checkout .co-gift__preview-text.is-empty { color: var(--co-muted); font-style: italic; }
.bv-page--checkout .co-gift__toggle { display: flex; align-items: flex-start; gap: 12px; margin-top: 16px; cursor: pointer; }
.bv-page--checkout .co-gift__toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.bv-page--checkout .co-gift__switch { flex: 0 0 auto; width: 44px; height: 26px; border-radius: 999px; background: var(--co-border); position: relative; transition: background .2s ease; margin-top: 2px; }
.bv-page--checkout .co-gift__switch-knob { position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .2s ease; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.bv-page--checkout .co-gift__toggle input:checked + .co-gift__switch { background: var(--pink); }
.bv-page--checkout .co-gift__toggle input:checked + .co-gift__switch .co-gift__switch-knob { transform: translateX(18px); }
.bv-page--checkout .co-gift__toggle-text { display: flex; flex-direction: column; }
.bv-page--checkout .co-gift__toggle-text strong { font-weight: 700; color: var(--co-text); }
.bv-page--checkout .co-gift__toggle-text span { font-size: 13px; color: var(--co-muted); }
@media (max-width: 500px) { .bv-page--checkout .co-gift__preview { flex-direction: column; } .bv-page--checkout .co-gift__card { flex-basis: auto; height: 70px; } }
.co-radio { border: 1px solid #DDDDDD; border-radius: var(--co-radius-sm); padding: 12px; cursor: pointer; text-align: left; background: #fff; }
.co-radio.is-active { border-color: var(--pink); background: var(--pink-soft); }
.co-radio__title { font-weight: 600; display: block; }
.co-radio__hint { color: var(--co-muted); font-size: 14px; }
.co-radios--addr .co-radio__title { font-weight: 400; font-size: 20px; line-height: 28px; color: #181B02; }
.co-window { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.co-window .co-radio { display: flex; align-items: center; justify-content: space-between; }
.co-window__price { font-weight: 700; color: var(--pink); }

/* Buttons */
.co-actions { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-top: 6px; }
.co-btn { height: 62px; padding: 0 26px; border-radius: var(--co-radius-sm); font-weight: 600; font-size: 16px; cursor: pointer; border: 1px solid transparent; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.co-btn--primary { background: var(--pink); color: #fff; min-width: 220px; }
.co-btn--primary:hover { background: var(--pink-hover); }
/* Disabled (step gated until required fields are filled) */
.co-btn:disabled, .co-btn.is-disabled, .co-btn[aria-disabled="true"] { opacity: .45; cursor: not-allowed; pointer-events: none; box-shadow: none; }
.co-btn--outline { background: #fff; border-color: var(--co-border); color: var(--co-text); }
.co-btn--block { width: 100%; }

/* Order summary */
/* "Your order" aside — Figma step-1 spec */
.co-summary { background: #fff; border: 1px solid var(--pink); border-radius: 16px; padding: 40px; box-shadow: 0 0 52px rgba(0,0,0,.06); display: flex; flex-direction: column; gap: 24px; }
/* Body wrapper keeps the section spacing now that the summary has a mobile toggle */
.co-summary__body { display: flex; flex-direction: column; gap: 24px; }
.co-summary__mtoggle { display: none; }
/* Mobile: summary collapses into a sticky "View items" bar at the top (Tim's mobile design) */
@media (max-width: 900px) {
    .bv-page--checkout .co-aside { order: -1; position: sticky; top: 0; z-index: 40; margin: 0 0 16px; }
    .bv-page--checkout .co-summary { padding: 0; overflow: hidden; gap: 0; }
    .co-summary__mtoggle { display: grid; grid-template-columns: 46px minmax(0,1fr) auto; gap: 10px; align-items: center; width: 100%; padding: 12px 14px; background: #fff; border: 0; text-align: left; cursor: pointer; }
    .co-summary__mthumb { width: 46px; height: 46px; border-radius: 12px; overflow: hidden; background: var(--pink-soft); display: grid; place-items: center; font-size: 22px; }
    .co-summary__mthumb img { width: 100%; height: 100%; object-fit: cover; }
    .co-summary__mmid { min-width: 0; }
    .co-summary__mtimer { display: block; color: #a24508; font-size: 11px; font-weight: 700; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .co-summary__mtimer strong { color: var(--pink); }
    .co-summary__mview { display: block; color: var(--pink); font-size: 12px; font-weight: 800; margin-top: 3px; }
    .co-summary__mtotal { font-size: 19px; font-weight: 800; color: var(--co-text); white-space: nowrap; }
    .co-summary__body { display: none; padding: 14px; border-top: 1px solid var(--co-border); }
    .co-summary.is-open .co-summary__body { display: flex; }
    .co-summary__body .co-summary__countdown { display: none; }
}
.co-summary__title { font-family: var(--co-serif); font-size: 48px; line-height: 44px; font-weight: 400; color: #181B02; margin: 0; }
.co-summary__items { display: flex; flex-direction: column; gap: 20px; }
.co-summary__group { display: flex; flex-direction: column; gap: 12px; }
.co-summary__item { position: relative; display: grid; grid-template-columns: 140px 1fr; gap: 21px; align-items: start; }
.co-summary__remove { position: absolute; top: 0; right: 0; display: inline-flex; padding: 4px; border: 0; border-radius: 6px; background: none; color: var(--co-muted); cursor: pointer; line-height: 0; transition: color .12s, background .12s; }
.co-summary__remove:hover { color: var(--pink); background: rgba(0,0,0,.04); }
.co-summary.is-loading { opacity: .55; pointer-events: none; }
.co-summary__img { width: 140px; height: 140px; border-radius: 16px; object-fit: cover; background: #FBDAE5; }
/* Compact add-on line (greeting card, chocolates…) — Figma node 315-5767 */
.co-summary__item--addon { display: flex; align-items: center; gap: 8px; padding-right: 26px; }
.co-summary__img--addon { flex: 0 0 auto; width: 70px; height: 64px; border-radius: 6px; object-fit: cover; background: linear-gradient(128deg, #fff 0%, #F5F7FA 100%); }
.co-summary__item--addon .co-summary__name { flex: 1 1 auto; min-width: 0; }
.co-summary__item--addon .co-summary__price { margin-top: 0; flex: 0 0 auto; }
/* Free default greeting card line */
.co-summary__cardthumb { object-fit: contain; padding: 4px; background: linear-gradient(128deg, #FFF0F7 0%, #FFF6E5 100%); }
.co-summary__price--free { color: var(--co-green, #00754F); font-weight: 600; }
.co-summary__info { display: flex; flex-direction: column; padding-right: 26px; }
.co-summary__name { font-size: 20px; line-height: 28px; color: #2A2424; }
.co-summary__meta { color: var(--co-muted); font-size: 16px; line-height: 20px; }
.co-summary__price { margin-top: 8px; display: flex; justify-content: flex-end; align-items: baseline; gap: 7px; font-size: 24px; font-weight: 600; color: #2A2424; }
.co-summary__price del { color: var(--co-muted); font-weight: 400; font-size: 20px; }
.co-summary__giftbox { background: #FFECF6; border: 1px solid var(--pink); border-radius: var(--co-radius-sm); padding: 8px; }
.co-summary__addmsg { width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 10px; background: none; color: var(--pink); border: 0; font-weight: 600; font-size: 20px; cursor: pointer; }
.co-summary__addmsg-plus { width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 24px; line-height: 1; }
.co-summary__giftedit { display: flex; flex-direction: column; gap: 12px; }
.co-summary__giftedit[hidden] { display: none; }
.co-summary__addmsg[hidden] { display: none; }
.bv-page--checkout .co-summary__giftbox .co-select { background: #fff; border-color: var(--pink); }
.co-summary__giftmsg { width: 100%; min-height: 89px; background: #fff; border: 1px solid var(--pink); border-radius: var(--co-radius-sm); padding: 10px; font-family: var(--co-serif); font-size: 20px; line-height: 24px; color: #2A2424; resize: vertical; box-sizing: border-box; }
.co-summary__giftremove { display: block; text-align: center; color: var(--pink); font-weight: 600; font-size: 20px; }
.co-summary__sep { height: 1px; background: #DDDDDD; }
.co-summary__discount { display: flex; flex-wrap: wrap; gap: 8px; }
.co-summary__coupon-msg { flex: 0 0 100%; margin: 0; color: #C0392B; font-size: 14px; line-height: 1.3; }
.co-summary__coupon-msg[hidden] { display: none; }
.co-summary__discount input { flex: 1; height: 44px; }
.bv-page--checkout .co-summary__discount input:not(:placeholder-shown) { border-color: var(--co-green); color: var(--co-green); }
.co-summary__discount.is-applied input { border-color: var(--co-green); color: var(--co-green); }
.co-summary__discount.is-applied button { color: var(--co-green); }
.co-summary__row--discount span { color: var(--pink) !important; }
/* Exact ledger: Instant-savings row (pink) + green "You saved $X" product pill */
.co-summary__row--savings, .co-summary__row--savings span { color: var(--pink); font-weight: 700; }
.co-summary__savepill { display: inline-flex; margin-top: 8px; background: #E9F9EF; color: #0D6D48; border-radius: 999px; padding: 5px 10px; font-size: 11px; font-weight: 800; line-height: 1.2; }
.co-summary__discount button { padding: 0 32px; border: 1px solid #DDDDDD; background: #fff; border-radius: var(--co-radius-sm); font-family: "DM Sans", sans-serif; font-weight: 600; font-size: 18px; color: var(--co-text); cursor: pointer; }
.co-summary__rows { display: flex; flex-direction: column; gap: 12px; }
.co-summary__row { display: flex; justify-content: space-between; color: var(--co-muted); font-size: 20px; line-height: 28px; }
.co-summary__row span:last-child { color: var(--co-muted); font-weight: 600; }
.co-summary__row--service span:first-child { display: inline-flex; align-items: center; gap: 8px; }
.co-summary__feeinfo { display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 0; background: none; color: var(--pink); cursor: help; line-height: 0; }
.co-summary__total { display: flex; justify-content: space-between; align-items: center; padding: 12px; border-radius: var(--co-radius-sm); background: linear-gradient(166deg, #FDE7F2 0%, #FFF6E5 100%); color: #2A2424; font-size: 32px; line-height: 32px; }
.co-summary__total span:first-child { font-weight: 500; } .co-summary__total span:last-child { font-weight: 600; }

/* Summary rail: countdown bar + micro-proof pills + trust block (Tim's mockup) */
.co-summary__countdown { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 12px; background: var(--gold-soft); color: #8a5a10; font-size: 14px; line-height: 1.35; font-weight: 600; }
.co-summary__countdown svg { flex: 0 0 auto; color: var(--gold); }
.co-summary__countdown strong { color: var(--pink); font-variant-numeric: tabular-nums; }
.co-summary__proof { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.co-summary__proof-item { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; line-height: 1.4; color: var(--co-muted); }
.co-summary__proof-icon { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 8px; background: var(--pink-soft); color: var(--pink); display: flex; align-items: center; justify-content: center; }
.co-summary__trust { display: flex; align-items: center; gap: 12px; padding-top: 20px; border-top: 1px solid var(--co-border); }
.co-summary__trust-icon { flex: 0 0 auto; color: var(--pink); }
.co-summary__trust-text { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.co-summary__trust-text strong { font-size: 13px; color: var(--co-text); line-height: 1.3; }
.co-summary__trust-text span { font-size: 12px; color: var(--co-muted); }
.co-summary__trust-rating { text-align: right; display: flex; flex-direction: column; gap: 2px; }
.co-summary__trust-score { font-weight: 800; color: var(--co-text); font-size: 15px; white-space: nowrap; }
.co-summary__trust-score span { color: var(--gold); font-size: 12px; }
.co-summary__trust-count { font-size: 11px; color: var(--co-muted); white-space: nowrap; }

/* Step 3: review / tip / pay */
.co-review { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
.co-review dt { font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--co-muted); }
.co-review dd { margin: 2px 0 10px; }
.co-tips { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin-top: 12px; }
.co-tip { border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); padding: 10px 0; text-align: center; background: #fff; cursor: pointer; font-weight: 600; }
.co-tip small { display: block; color: var(--co-muted); font-weight: 400; }
.co-tip.is-active { border-color: var(--pink); background: var(--pink-soft); color: var(--pink); }
.co-express { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.co-express button { height: 48px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); background: #fff; font-weight: 600; cursor: pointer; }
.co-or { text-align: center; color: var(--co-muted); position: relative; margin: 18px 0; }
.co-or::before { content: ""; position: absolute; top: 50%; left: 0; right: 0; height: 1px; background: var(--co-border); }
.co-or span { position: relative; background: #fff; padding: 0 12px; }
.co-trust { display: flex; flex-wrap: wrap; justify-content: center; gap: 18px; color: var(--co-muted); font-size: 13px; margin-top: 16px; }
.bv-page--checkout #payment { background: transparent; }
.bv-page--checkout #payment ul.payment_methods { list-style: none; margin: 12px 0; padding: 0; border: 0; }
.bv-page--checkout #payment .payment_box { background: var(--cream); border-radius: var(--co-radius-sm); padding: 12px 14px; }
.bv-page--checkout #place_order { width: 100%; height: 52px; border: 0; border-radius: var(--co-radius-sm); background: var(--pink); color: #fff; font-weight: 700; font-size: 16px; cursor: pointer; margin-top: 12px; float: none; }
.bv-page--checkout #place_order:hover { background: var(--pink-hover); }

@media (max-width: 900px) {
    .co-grid { grid-template-columns: 1fr; } .co-aside { position: static; } .co-grid > .co-main { position: static; }
    /* Grid/flex items default to min-width:auto and would otherwise refuse to
       shrink below their content, overflowing the single column on mobile. */
    .co-main, .co-aside, .co-step3__main, .co-step3__side { min-width: 0; }
    .co-radios { grid-template-columns: 1fr 1fr; } .co-tips { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 560px) {
    .bv-page--checkout .co-fields, .bv-page--checkout .co-fields--addr { grid-template-columns: 1fr; }
    /* Compact the 3-step indicator so it fits the viewport instead of forcing a
       page-wide horizontal overflow (which also clipped the cards + summary). */
    .co-steps { gap: 8px; padding: 16px 12px 20px; overflow-x: auto; }
    .co-steps__sub { display: none; }
    .co-steps__num { width: 30px; height: 30px; font-size: 14px; }
    .co-steps__name { font-size: 13px; }
    .co-steps__sep { min-width: 6px; }
    /* Trim the heavy desktop card padding so fields/summary values aren't cramped. */
    .bv-page--checkout .co-card { padding: 24px 18px; }
    .bv-page--checkout .co-summary { padding: 24px 18px; }
    .bv-page--checkout .co-wrap { padding-left: 16px; padding-right: 16px; }
    /* Scale the "Your order" summary down from its large desktop sizing so the
       fixed 140px thumbnail + 48px heading don't push the column past the
       viewport. */
    .co-summary__title { font-size: 30px; line-height: 1.1; }
    .co-summary__item { grid-template-columns: 96px 1fr; gap: 14px; }
    .co-summary__img { width: 96px; height: 96px; }
    .co-summary__info { min-width: 0; }
    .co-summary__name { font-size: 16px; line-height: 22px; }
    .co-summary__price { font-size: 20px; flex-wrap: wrap; }
    .co-summary__price del { font-size: 16px; }
    .co-summary__row { font-size: 16px; line-height: 24px; }
    .co-summary__total { font-size: 18px; }
    .co-summary__discount button { padding: 0 20px; font-size: 16px; }
    .co-summary__discount input { min-width: 0; }
}

/* Signed-in checkout: welcome banner + saved-address card */
.bv-page--checkout .co-banner--welcome { background: var(--pink-soft); border-color: #F4D3E4; }
.co-saved { border: 1px solid var(--pink); background: var(--pink-soft); border-radius: var(--co-radius-sm); padding: 16px; margin-bottom: 14px; }
.co-saved__head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.co-saved__badge { font-size: 11px; font-weight: 700; color: var(--pink); background: #fff; border-radius: 999px; padding: 2px 8px; }
.co-saved__body { color: var(--co-text); line-height: 1.5; }
.co-saved__edit { margin-top: 10px; background: none; border: 0; color: var(--pink); font-weight: 600; cursor: pointer; padding: 0; }

/* ----------------------------------------------------------------------------
   Checkout v2 — Delivery step refinements (Figma 952-22208 … 952-22277)
   ---------------------------------------------------------------------------- */
.bv-page--checkout { --co-green: #00754F; }

/* Helper text under fields / textareas */
.bv-page--checkout .co-help { color: var(--co-muted); font-size: 14px; line-height: 1.4; margin: 8px 0 0; }

/* "Deliver all items to the same address" toggle (node 952-22208) */
.co-toggle-row { font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 24px; line-height: 27px; color: #181B02; }
.co-toggle { position: relative; display: inline-flex; flex: none; cursor: pointer; }
.co-toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.co-toggle__track { width: 55px; height: 30px; border-radius: 38px; background: #D9D7D2; padding: 2px; transition: background .15s ease; display: inline-flex; align-items: center; }
.co-toggle__knob { width: 26px; height: 26px; border-radius: 999px; background: #FCFCFD; display: inline-flex; align-items: center; justify-content: center; color: #2A2424; box-shadow: 0 1px 3px rgba(16,24,40,.1), 0 1px 2px rgba(16,24,40,.06); transition: transform .15s ease; }
.co-toggle__check { width: 10px; height: auto; opacity: 0; transition: opacity .15s ease; }
.co-toggle input:checked + .co-toggle__track { background: #E83E74; }
.co-toggle input:checked + .co-toggle__track .co-toggle__knob { transform: translateX(25px); }
.co-toggle input:checked + .co-toggle__track .co-toggle__check { opacity: 1; }

/* Cream note styled as a checkbox row (surprise / no-full-address) */
.co-note--check { cursor: pointer; }
.co-note--check input { margin-top: 3px; flex: none; accent-color: var(--pink); }

/* "I don't have the full address" — turns pink + reveals helper when checked (Figma 483-11313) */
.co-note--confirm .co-note__body { display: flex; flex-direction: column; gap: 6px; }
.co-note--confirm .co-note__more { color: var(--co-muted); font-size: 13px; line-height: 1.4; display: none; }
.co-note--confirm:has(input:checked) { background: #FFECF6; outline: 1px solid var(--pink); outline-offset: -1px; }
.co-note--confirm:has(input:checked) .co-note__more { display: block; }

/* "Make this a surprise" — turns pink + swaps to "Surprise mode on" when checked */
.co-note--surprise .co-note__body { display: flex; flex-direction: column; gap: 12px; }
.co-note--surprise .co-note__on { display: none; flex-direction: column; gap: 12px; }
.co-note--surprise .co-note__on-title { font-family: var(--co-serif); font-size: 24px; line-height: 28px; color: var(--pink); }
.co-note--surprise .co-note__on-text { color: #000; font-size: 16px; line-height: 20px; }
.co-note--surprise:has(input:checked) { background: #FFECF6; outline: 1px solid var(--pink); outline-offset: -1px; }
.co-note--surprise:has(input:checked) .co-note__label { display: none; }
.co-note--surprise:has(input:checked) .co-note__on { display: flex; }

/* Pink checkbox with an explicit white tick (billing "same as", agree boxes) */
.co-check--pink input[type="checkbox"] {
    -webkit-appearance: none; appearance: none;
    width: 18px; height: 18px; flex: none; margin-top: 2px;
    border: 1.5px solid var(--co-border); border-radius: 4px;
    background: #fff; cursor: pointer; position: relative;
}
.co-check--pink input[type="checkbox"]:checked { background: var(--pink); border-color: var(--pink); }
.co-check--pink input[type="checkbox"]:checked::after {
    content: ""; position: absolute; left: 5px; top: 1px;
    width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

/* Street address field with a search icon (node 952-22230) */
.bv-page--checkout .co-row--search { position: relative; }
/* Address autocomplete dropdown (like the PDP "Find the ZIP code" popup) */
.bv-page--checkout .co-acresults { position: absolute; top: 100%; left: 0; right: 0; z-index: 200; background: #fff; border: 1px solid var(--co-border); border-top: 0; border-radius: 0 0 var(--co-radius-sm) var(--co-radius-sm); box-shadow: 0 12px 30px rgba(0,0,0,.08); max-height: 280px; overflow: auto; }
.bv-page--checkout .co-acresults[hidden] { display: none; }
/* Google Places dropdown (modal address fields) is appended to <body>; keep it
   above modal overlays so it isn't clipped/covered. */
.pac-container { z-index: 100000 !important; }
.bv-page--checkout .co-row--search input {
    padding-right: 42px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%238C8881' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.3-4.3'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 14px center;
}

/* Green "valid" state for City / State / ZIP once filled */
.bv-page--checkout .co-fields--valid .form-row.is-valid input,
.bv-page--checkout .co-fields--valid .form-row.is-valid select {
    border-color: var(--co-green);
    padding-right: 38px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23008B62' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 12l3 3 5-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center;
}
.bv-page--checkout .co-fields--valid .form-row.is-valid label { color: var(--co-green); }

/* "What kind of address is this?" disclosure */
.co-disclose { margin: 18px 0 0; }
.co-disclose__btn { display: inline-flex; align-items: center; gap: 12px; background: none; border: 0; padding: 0; cursor: pointer; font-weight: 600; font-size: 16px; color: var(--co-text); }
.co-disclose__plus { width: 34px; height: 34px; border-radius: 50%; background: #F0EEEA; color: var(--co-text); display: inline-flex; align-items: center; justify-content: center; font-size: 22px; line-height: 1; transition: transform .15s ease; }
.co-disclose__btn[aria-expanded="true"] .co-disclose__plus { transform: rotate(45deg); }
.co-disclose__panel { margin-top: 12px; }

/* Delivery-date row + Change date link (node 952-22253) */
.co-dateedit { display: flex; align-items: center; gap: 18px; margin-top: 8px; }
.co-field--valid { position: relative; border: 1px solid var(--co-green); border-radius: var(--co-radius-sm); padding: 10px 40px 8px 14px; min-width: 220px; }
.co-field--valid::after {
    content: ""; position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23008B62' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 12l3 3 5-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: center;
}
.co-field--valid .co-field__label { position: absolute; top: -9px; left: 10px; background: #fff; padding: 0 5px; font-size: 12px; color: var(--co-green); }
.co-field--valid .co-field__val { font-weight: 600; color: var(--co-text); }
.co-dateedit__change { display: inline-flex; align-items: center; gap: 6px; color: var(--pink); font-weight: 600; text-decoration: underline; }
.co-dateedit__change svg { width: 16px; height: 16px; }

/* Time window cream box */
.co-window-box { background: var(--cream); border-radius: var(--co-radius); padding: 16px; margin-top: 18px; }
.co-window-box__title { font-weight: 700; font-size: 16px; margin: 0 0 12px; color: var(--co-text); }
.co-window-box .co-window { margin-top: 0; }

/* Button chevrons */
.co-btn svg { flex: none; }
.co-btn--outline svg { margin-right: 8px; }
.co-btn--primary svg { margin-left: 8px; }

/* ----------------------------------------------------------------------------
   Checkout v2 — Multi-address delivery step (Figma 315-7193 … 317-7896)
   ---------------------------------------------------------------------------- */
/* "Your items" → send-to assignment rows (node 315-5264) */
.co-md-item { display: grid; grid-template-columns: 64px 1fr 240px; gap: 16px; align-items: start; padding: 18px 0; border-top: 1px solid var(--co-border); }
.co-md-item:first-of-type { border-top: 0; }
.co-md-item__img { width: 64px; height: 64px; border-radius: 10px; object-fit: cover; background: #eee; }
.co-md-item__name { font-weight: 600; color: var(--co-text); }
.co-md-item__meta { color: var(--co-muted); font-size: 13px; margin: 2px 0 6px; }
.co-md-item__price { font-weight: 700; font-size: 14px; }
.co-md-item__price del { color: var(--co-muted); font-weight: 400; margin-left: 6px; }
.co-md-item__send .co-label { margin-bottom: 6px; }
.co-md-item__send .co-select.is-active { border-color: var(--pink); background: var(--pink-soft); }
.co-md-item__split { display: inline-block; margin-top: 8px; color: var(--pink); font-size: 13px; font-weight: 600; text-decoration: underline; }

/* Collapsible per-delivery card (nodes 315-5280, 317-7913) */
.co-delivery { padding: 0; }
.co-delivery__head { display: flex; align-items: center; justify-content: space-between; width: 100%; background: none; border: 0; cursor: pointer; padding: 22px 26px; text-align: left; }
.co-delivery__titlewrap { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.co-delivery__title { font-family: var(--co-serif); font-size: 28px; font-weight: 700; color: var(--co-text); line-height: 1; }
.co-badge { font-size: 13px; font-weight: 700; color: var(--pink); background: var(--pink-soft); border-radius: 999px; padding: 3px 12px; }
.co-delivery__chev { width: 40px; height: 40px; border-radius: 50%; background: #F0EEEA; color: var(--co-text); display: inline-flex; align-items: center; justify-content: center; flex: none; transition: transform .15s ease; }
.co-delivery:not(.is-open) .co-delivery__chev { transform: rotate(180deg); }
.co-delivery__body { padding: 0 26px 26px; }
.co-delivery__subtitle { margin-top: 30px; }
.co-delivery__foot { margin-top: 22px; }
.co-delete { min-width: 120px; }
.co-delete svg { margin-right: 8px; }

/* Add-new-address card (node 317-7896) */
.co-card--addnew { padding: 16px; }
.co-addnew { width: 100%; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); background: #fff; color: var(--pink); font-weight: 700; font-size: 16px; height: 60px; cursor: pointer; }
.co-addnew:hover { background: var(--pink-soft); }

/* ----------------------------------------------------------------------------
   Checkout v2 — Review & Payment step (Figma 318-9253 … 1298-20785)
   ---------------------------------------------------------------------------- */
/* Tip card (node 1298-20771) */
.co-card--tip { background: linear-gradient(100deg, #FCE9F2 0%, #FBF3E7 100%); border-color: transparent; }
.co-card--tip .co-card__title { margin-bottom: 16px; }

/* Tip matrix (Tim's Step 3): 10 / 15 "Most Popular" / 20 / Custom boxes */
.co-tip__eyebrow { font-weight: 800; color: var(--co-text); margin: 0 0 4px; font-size: 16px; }
.co-tip__eyebrow span { color: var(--pink); letter-spacing: .06em; margin-right: 6px; }
.co-tips--matrix { grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 16px; }
.co-tips--matrix .co-tip--box { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 16px 6px; position: relative; border-radius: 14px; }
.co-tips--matrix .co-tip__pct { font-size: 17px; font-weight: 800; color: var(--co-text); }
.co-tips--matrix .co-tip__amt { font-size: 13px; color: var(--co-muted); font-weight: 500; }
.co-tips--matrix .co-tip__amt .woocommerce-Price-amount { color: inherit; }
.co-tips--matrix .co-tip.is-active .co-tip__pct,
.co-tips--matrix .co-tip.is-active .co-tip__amt { color: var(--pink); }
.co-tips--matrix .co-tip--popular { border-color: var(--pink); }
.co-tip__badge { position: absolute; top: -10px; left: 50%; transform: translateX(-50%); background: var(--pink); color: #fff; font-size: 10px; font-weight: 700; letter-spacing: .02em; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.co-tips--matrix .co-tip--none { grid-column: 1 / -1; border: 0; background: none; color: var(--co-muted); font-size: 13px; font-weight: 600; text-decoration: underline; padding: 4px; }
.co-tips--matrix .co-tip--none.is-active { color: var(--pink); }
@media (max-width: 560px) { .co-tips--matrix { grid-template-columns: repeat(2, 1fr); } }
/* Custom tip amount input (shown when the Custom pill is active) */
.co-tip-custom { display: flex; align-items: center; gap: 8px; margin-top: 12px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); padding: 0 14px; background: #fff; }
.co-tip-custom[hidden] { display: none; }
.co-tip-custom__cur { color: var(--co-muted); font-weight: 600; }
.co-tip-custom input { flex: 1; height: 48px; border: 0; background: none; font: inherit; color: var(--co-text); outline: none; }
/* The functional WC order review is visually hidden on the v2 step 3; the
   styled pay controls trigger its #place_order, the tip pills drive its radios. */
.bv-page--checkout .bv-hidden-review { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }

/* "Choose how to pay" (node 1298-20785) */
.bv-page--checkout .co-express button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.co-pay-apple { width: 16px; height: 18px; background: #000; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M16.4 12.8c0-2.2 1.8-3.3 1.9-3.4-1-1.5-2.6-1.7-3.2-1.7-1.4-.1-2.7.8-3.3.8-.7 0-1.7-.8-2.8-.8-1.5 0-2.8.8-3.5 2.1-1.5 2.6-.4 6.5 1.1 8.6.7 1 1.5 2.2 2.6 2.1 1-.04 1.4-.7 2.7-.7 1.2 0 1.6.7 2.7.6 1.1-.02 1.8-1 2.5-2 .8-1.2 1.1-2.3 1.1-2.3s-2.1-.8-2.1-3.2zM14.3 6.3c.6-.7 1-1.7.9-2.7-.8.03-1.9.5-2.5 1.3-.5.6-1 1.6-.9 2.6.9.07 1.8-.5 2.5-1.2z'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M16.4 12.8c0-2.2 1.8-3.3 1.9-3.4-1-1.5-2.6-1.7-3.2-1.7-1.4-.1-2.7.8-3.3.8-.7 0-1.7-.8-2.8-.8-1.5 0-2.8.8-3.5 2.1-1.5 2.6-.4 6.5 1.1 8.6.7 1 1.5 2.2 2.6 2.1 1-.04 1.4-.7 2.7-.7 1.2 0 1.6.7 2.7.6 1.1-.02 1.8-1 2.5-2 .8-1.2 1.1-2.3 1.1-2.3s-2.1-.8-2.1-3.2zM14.3 6.3c.6-.7 1-1.7.9-2.7-.8.03-1.9.5-2.5 1.3-.5.6-1 1.6-.9 2.6.9.07 1.8-.5 2.5-1.2z'/%3E%3C/svg%3E") center/contain no-repeat; }
.co-pay-g { font-family: Arial, sans-serif; font-weight: 700; color: #4285F4; }
.co-paycard { display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; cursor: pointer; background: var(--pink-soft); border: 1px solid var(--pink); border-radius: var(--co-radius-sm); padding: 14px 18px; margin-top: 6px; }
.co-paycard__main { flex: 1; }
.co-paycard__title { display: block; font-weight: 700; color: var(--co-text); }
.co-paycard__sub { display: block; color: var(--co-muted); font-size: 13px; margin-top: 2px; }
.co-paycard__brands { display: flex; gap: 5px; }
.co-brand { font-size: 10px; font-weight: 700; color: #555; background: #fff; border: 1px solid var(--co-border); border-radius: 4px; padding: 3px 5px; line-height: 1; }
.co-paycard__chev { color: var(--co-muted); flex: none; display: inline-flex; }
.bv-page--checkout .co-trust span { display: inline-flex; align-items: center; gap: 6px; }
.bv-page--checkout .co-trust svg { width: 18px; height: 18px; color: var(--co-green); }

/* Per-delivery review block (nodes 318-9253 / 9514 / 9649) */
.co-revorder__head { display: flex; align-items: flex-start; justify-content: space-between; }
.co-revorder__edit { color: var(--pink); flex: none; display: inline-flex; }
.co-revorder__item { display: grid; grid-template-columns: 56px 1fr auto; gap: 14px; align-items: start; padding: 14px 0; }
.co-revorder__img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; background: #f3f1ee; }
.co-revorder__img--card { object-fit: contain; padding: 8px; }
.co-revorder__name { font-weight: 600; color: var(--co-text); }
.co-revorder__meta { color: var(--co-muted); font-size: 13px; }
.co-revorder__price { font-weight: 700; text-align: right; white-space: nowrap; }
.co-revorder__price del { color: var(--co-muted); font-weight: 400; margin-left: 6px; }
.co-giftbox { background: var(--pink-soft); border-radius: var(--co-radius-sm); padding: 14px; margin: 8px 0 18px; display: flex; flex-direction: column; gap: 12px; }
.bv-page--checkout .co-giftbox .co-select { background: #fff; }
.co-giftbox__msg { background: #fff; min-height: 60px; }
.co-revorder__details { display: grid; grid-template-columns: 120px 1fr; row-gap: 12px; column-gap: 16px; margin: 0; border-top: 1px solid var(--co-border); padding-top: 16px; }
.co-revorder__details dt { color: var(--co-muted); font-weight: 600; }
.co-revorder__details dt::first-letter { color: var(--co-text); }
.co-revorder__details dd { margin: 0; color: var(--co-text); }
.co-revorder__hint { color: var(--pink); }

/* ----------------------------------------------------------------------------
   Checkout v2 — Signed-in Delivery step (Figma 289-3031 … 298-6557)
   ---------------------------------------------------------------------------- */
.co-btn--sm { height: 40px; min-width: auto; padding: 0 18px; font-size: 14px; }

/* Welcome banner (node 289-3031) */
.co-welcome { display: flex; align-items: center; gap: 16px; background: linear-gradient(100deg, #FCE9F2 0%, #FBF3E7 100%); border: 1px solid #F6D6E6; border-radius: var(--co-radius); padding: 14px 20px; margin-bottom: 20px; }
.co-welcome__avatar { width: 46px; height: 46px; border-radius: 50%; background: #fff; border: 1px solid #F2C4DC; color: var(--pink); font-family: var(--co-serif); font-weight: 700; font-size: 17px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.co-welcome__text { font-family: var(--co-serif); font-size: 24px; font-weight: 700; color: var(--co-text); flex: 1; }
.co-welcome__signout { color: var(--pink); text-decoration: underline; font-weight: 600; flex: none; }

/* Birthday reminder banner */
.co-reminder { display: flex; align-items: center; gap: 16px; justify-content: space-between; background: #FFF4E5; border: 1px solid #FFD9A6; border-radius: var(--co-radius); padding: 14px 18px; margin: 4px 0 20px; }
.co-reminder__btns { display: flex; gap: 8px; flex: none; }

/* Saved-address radio cards (nodes 298-6441 selected / 298-6531 unselected) */
.co-saddr { position: relative; display: grid; grid-template-columns: 22px 1fr; gap: 14px; border: 1px solid var(--co-border); border-radius: var(--co-radius); padding: 18px 20px; margin-bottom: 12px; cursor: pointer; background: #fff; }
.co-saddr.is-active { border-color: var(--pink); }
.co-saddr input { position: absolute; opacity: 0; width: 0; height: 0; }
.co-saddr__radio { width: 18px; height: 18px; border-radius: 50%; border: 2px solid #C9C6C1; margin-top: 4px; position: relative; flex: none; }
.co-saddr.is-active .co-saddr__radio { border-color: var(--pink); }
.co-saddr.is-active .co-saddr__radio::after { content: ""; position: absolute; inset: 2px; border-radius: 50%; background: var(--pink); }
.co-saddr__label { font-weight: 700; font-size: 18px; display: inline-flex; align-items: center; gap: 10px; color: var(--co-text); }
.co-saddr__lines { display: block; margin-top: 8px; color: var(--co-muted); line-height: 1.85; }
.co-saddr__lines span { display: block; }
.co-saddr__edit { position: absolute; top: 18px; right: 20px; background: none; border: 0; color: var(--co-muted); cursor: pointer; padding: 0; }
.co-saddr.is-active .co-saddr__edit { color: var(--pink); }
.co-saddr__actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 12px; }
.co-saddr.is-active .co-saddr__actions .co-btn--outline { border-color: var(--pink); color: var(--pink); }
.co-saddr-altpick { text-align: center; margin: 16px 0 0; }
.co-saddr-altpick a { color: var(--pink); font-size: 14px; }

/* ----------------------------------------------------------------------------
   Checkout v2 — Confirmation + add-ons modals (Figma 610-45368 / 610-45415 / 1281-23134)
   ---------------------------------------------------------------------------- */
.co-modal-demo { max-width: 820px; margin: 40px auto; padding: 0 20px 80px; display: flex; flex-direction: column; gap: 36px; }
.co-modal { position: relative; background: #fff; border-radius: 20px; box-shadow: 0 24px 60px rgba(0,0,0,.12); padding: 40px; text-align: center; }
.co-modal__close { position: absolute; top: 22px; right: 22px; background: none; border: 0; color: var(--co-muted); cursor: pointer; }

/* Pink scalloped seal (two rotated rounded squares) */
.co-seal { position: relative; width: 64px; height: 64px; margin: 0 auto 16px; }
.co-seal::before, .co-seal::after { content: ""; position: absolute; inset: 0; background: var(--pink-soft); border: 1.5px solid var(--pink); border-radius: 18px; }
.co-seal::after { transform: rotate(45deg); }
.co-seal svg { position: relative; z-index: 1; width: 64px; height: 64px; }

.co-modal__title { font-family: var(--co-serif); font-size: 42px; line-height: 1.05; font-weight: 700; color: var(--co-text); margin: 0 0 12px; }
.co-modal__sub { color: var(--co-muted); font-size: 18px; margin: 0 0 12px; }
/* Delete-address + error popups (Figma 1578-25880/25990, 586-45112, 587-45168) */
/* Beat the `.bv-page button { background:none }` reset so .co-btn <button>s
   keep their fill (the reset is 0,1,1; these are 0,2,0). */
.bv-page .co-btn--primary { background: var(--pink); color: #fff; }
.bv-page .co-btn--primary:hover { background: var(--pink-hover); }
.bv-zipmodal .co-btn--primary { background: #E83E74 !important; }
.bv-zipmodal .co-btn--primary:hover { background: #D12E62 !important; }
.bv-page .co-btn--outline { background: #fff; }
/* Same reset bites the social buttons — the Facebook one is white-on-white
   (invisible) without its fill. Restore both (beats `.bv-page button`). */
.bv-page .co-social__btn, .bv-authmodal .co-social__btn { background: #fff; }
.bv-page .co-social__btn--fb, .bv-authmodal .co-social__btn--fb { background: #1877F2; }
.co-modal--narrow { max-width: 560px; margin-left: auto; margin-right: auto; }
.co-modal--narrow .co-modal__sub { margin-bottom: 22px; }
.co-modal__addrcard { background: #F7F7F9; border-radius: var(--co-radius-sm); padding: 16px 18px; text-align: left; margin: 4px 0 18px; }
.co-modal__addrcard-title { font-weight: 700; color: var(--co-text); margin: 0 0 6px; }
.co-modal__addrcard-meta { color: var(--co-muted); margin: 2px 0; font-size: 15px; }
.co-modal--narrow .co-modal__note { text-align: left; }
.co-modal__note--error { background: #FFF5F5; border: 1px solid #F0C9C9; }
.co-modal__note--error a { color: #D64545; text-decoration: underline; }
.co-modal__erricon { width: 72px; height: 72px; margin: 0 auto 18px; display: flex; align-items: center; justify-content: center; }
.co-modal__erricon svg { width: 56px; height: 56px; }
.co-modal__erricon--card { width: 64px; height: 52px; border: 1.5px solid #E7B0B0; border-radius: 12px; background: #FFF5F5; }
.co-modal__erricon--card svg { width: 38px; height: 38px; }
/* "New address" popup (Figma 1578-26022) */
/* 1-click quick-checkout buttons (saved card tokens) — checkout step 3 */
.co-quickpay { margin: 4px 0 18px; }
.co-quickpay__title { font-weight: 700; color: var(--co-text); margin: 0 0 10px; }
.co-quickpay__btn { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; padding: 14px 18px; margin-bottom: 10px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); background: #fff; cursor: pointer; font-size: 16px; color: var(--co-text); }
.co-quickpay__btn:hover { border-color: var(--pink); }
.co-quickpay__btn[disabled] { opacity: .6; cursor: default; }
.co-quickpay__brand { font-weight: 600; }
.co-quickpay__cta { font-weight: 700; color: #fff; background: var(--pink); border-radius: 999px; padding: 6px 16px; }

/* Solidgate express-wallet payment form modal (solid-pay.js) */
.bv-solidpay { position: fixed; inset: 0; z-index: 100002; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(24,20,18,.55); }
.bv-solidpay[hidden] { display: none; }
.bv-solidpay__dialog { position: relative; width: 100%; max-width: 480px; max-height: 92vh; overflow: auto; background: #fff; border-radius: 16px; padding: 28px; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.bv-solidpay__close { position: absolute; top: 14px; right: 16px; background: none; border: 0; font-size: 28px; line-height: 1; color: #6B6973; cursor: pointer; }
.bv-solidpay__mount { min-height: 120px; }
.bv-solidpay__err { color: #D64545; font-weight: 600; margin: 12px 0 0; }
.co-newaddr { max-width: 860px; text-align: left; }
.co-newaddr__title { text-align: center; margin-bottom: 26px; }
.co-newaddr__subtitle { font-weight: 700; font-size: 16px; color: var(--co-text); margin: 24px 0 0; }
.co-newaddr__actions { display: flex; justify-content: center; gap: 16px; margin-top: 26px; }
.co-newaddr__actions .co-btn { width: auto; min-width: 220px; }
@media (max-width: 560px) {
    .co-newaddr__actions { flex-direction: column; }
    .co-newaddr__actions .co-btn { width: 100%; min-width: 0; }
}
.co-delivery-pill { display: inline-flex; align-items: center; gap: 8px; background: #E3F4EC; color: var(--co-green); font-weight: 600; border-radius: 999px; padding: 7px 16px; }
.co-delivery-pill svg { width: 18px; height: 18px; }
.co-modal__order { font-weight: 700; color: var(--co-text); margin: 18px 0 2px; }
.co-modal__conf { color: var(--co-muted); margin: 0 0 22px; }
.co-modal__item { display: grid; grid-template-columns: 96px 1fr auto; gap: 18px; align-items: start; text-align: left; padding: 6px 0 18px; }
.co-modal__img { width: 96px; height: 96px; border-radius: 12px; object-fit: cover; background: #f3f1ee; }
.co-modal__name { font-weight: 600; font-size: 18px; color: var(--co-text); }
.co-modal__meta { color: var(--co-muted); font-size: 14px; margin-top: 4px; }
.co-modal__price { font-weight: 700; font-size: 20px; white-space: nowrap; align-self: end; }
.co-modal__price del { color: var(--co-muted); font-weight: 400; font-size: 15px; margin-left: 6px; }
.co-modal__note { background: var(--cream); border-radius: var(--co-radius); padding: 18px 22px; text-align: center; margin: 4px 0 22px; }
.co-modal__note-title { font-family: var(--co-serif); font-size: 22px; font-weight: 700; color: var(--co-text); margin: 0 0 8px; }
.co-modal__note p:last-child { color: var(--co-muted); margin: 0; line-height: 1.55; }
.co-modal__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

/* "Customize per bouquet" modal */
.co-cust { text-align: left; padding: 0; }
.co-cust__head { padding: 28px 32px 18px; border-bottom: 1px solid var(--co-border); }
.co-cust__title { font-family: var(--co-serif); font-size: 30px; font-weight: 700; margin: 0; color: var(--co-text); }
.co-cust__sub { color: var(--co-muted); margin: 4px 0 10px; }
.co-cust__alllink { color: var(--pink); font-weight: 600; font-size: 14px; }
.co-cust-order { padding: 22px 32px; border-bottom: 1px solid var(--co-border); }
.co-cust-order__label { font-weight: 700; color: var(--co-text); margin: 0 0 12px; }
.co-cust-order__item { display: flex; gap: 12px; align-items: center; }
.co-cust-order__img { width: 48px; height: 48px; border-radius: 8px; object-fit: cover; background: #f3f1ee; }
.co-cust-order__name { font-weight: 600; }
.co-cust-order__meta { color: var(--co-muted); font-size: 13px; }
.co-cust-order__price { font-weight: 700; font-size: 14px; }
.co-cust-order__price del { color: var(--co-muted); font-weight: 400; margin-left: 6px; }
.co-cust-order__note { background: var(--cream); border-radius: var(--co-radius-sm); padding: 10px 14px; color: var(--co-muted); font-size: 13px; margin: 14px 0; }
.co-addons { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 8px; }
.co-addon { position: relative; flex: 0 0 140px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); padding: 10px; text-align: center; }
.co-addon.is-added { border-color: var(--pink); background: var(--pink-soft); }
.co-addon__badge { position: absolute; top: 8px; left: 50%; transform: translateX(-50%); font-size: 9px; font-weight: 700; letter-spacing: .04em; color: #fff; border-radius: 999px; padding: 3px 8px; white-space: nowrap; }
.co-addon__badge--seller { background: var(--gold); }
.co-addon__badge--value { background: var(--co-green); }
.co-addon__img { height: 80px; border-radius: 8px; overflow: hidden; margin: 14px 0 8px; background: #f3f1ee; }
.co-addon__img img { width: 100%; height: 100%; object-fit: cover; }
.co-addon__name { font-weight: 600; font-size: 13px; }
.co-addon__price { font-size: 13px; font-weight: 700; margin: 2px 0 8px; }
.co-addon__price del { color: var(--co-muted); font-weight: 400; margin-left: 4px; }
.co-addon__add { width: 100%; height: 34px; border: 1px solid var(--pink); border-radius: 8px; background: #fff; color: var(--pink); font-weight: 700; font-size: 13px; cursor: pointer; }
.co-addon__add.is-added { background: var(--pink); color: #fff; }
.bv-page--checkout .co-cust-order .co-select { margin-top: 14px; }
.co-cust-order__msg { margin-top: 12px; min-height: 60px; }
.co-cust-order__remove { display: inline-block; margin-top: 10px; color: var(--pink); font-size: 14px; }
.co-cust__foot { display: flex; align-items: center; justify-content: space-between; gap: 18px; background: var(--pink-soft); padding: 18px 32px; border-radius: 0 0 20px 20px; }
.co-cust__foot-info { display: flex; flex-direction: column; gap: 2px; font-size: 13px; color: var(--co-muted); }
.co-cust__foot-info > strong:first-child { color: var(--co-text); font-size: 15px; }
.co-cust__foot-total { color: var(--pink) !important; font-size: 15px; }
.co-cust__foot-btns { display: flex; gap: 12px; flex: none; }

/* "Make it more thoughtful" modal (nodes 1278-21832 / 1278-22352 / 1515-22273) */
.co-thoughtful { padding: 0; text-align: left; }
.co-thoughtful__head { text-align: center; padding: 28px 32px 18px; }
.co-thoughtful .co-cust__title { font-size: 34px; }
.co-thoughtful > .co-yourorder,
.co-thoughtful > .co-cust-order__note,
.co-thoughtful > .co-addons,
.co-thoughtful > .co-addmsg-btn { margin-left: 32px; margin-right: 32px; }
.co-select--mini { height: 38px; font-size: 13px; }
.co-yourorder { border: 1px solid var(--co-border); border-radius: var(--co-radius); padding: 16px 18px; }
.co-yourorder__label { font-weight: 700; color: var(--co-text); display: block; margin-bottom: 12px; }
.co-yourorder__row { display: grid; grid-template-columns: 56px 1fr auto; gap: 14px; align-items: center; }
.co-yourorder__img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; background: #f3f1ee; }
.co-yourorder__name { font-weight: 600; }
.bv-page--checkout .co-yourorder__info .co-select--mini { margin: 6px 0; max-width: 160px; }
.co-yourorder__price { font-weight: 700; font-size: 14px; }
.co-yourorder__price del { color: var(--co-muted); font-weight: 400; margin-left: 6px; }
.co-addon__badge--popular { background: var(--gold); }
.bv-page--checkout .co-addon__variant { margin: 0 0 8px; height: 34px; }
.co-addmsg-btn { display: block; width: auto; background: var(--pink-soft); color: var(--pink); border: 0; border-radius: var(--co-radius-sm); height: 48px; font-weight: 700; cursor: pointer; margin-top: 14px; }
.co-thoughtful .co-cust__foot { margin-top: 18px; }

/* "Find the ZIP code" modal (nodes 1508-29699 / 1508-29935 / 1511-30339 / 1511-30434) */
.co-zip { text-align: left; }
.co-zip__title { text-align: center; }
.co-zip .co-modal__sub { text-align: center; }
.co-zip__pin { width: 64px; height: 64px; border-radius: 50%; background: #FCEFF5; color: #C21E5A; display: flex; align-items: center; justify-content: center; margin: 4px auto 18px; }
.co-zip__pin svg { width: 30px; height: 30px; }
.co-zip__search { position: relative; margin-top: 6px; }
.co-zip__pinleft { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: #C21E5A; }
.co-zip__search input { padding-left: 44px; }
.co-zip__search input { width: 100%; height: 52px; padding: 0 44px 0 40px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); font: inherit; color: var(--co-text); box-sizing: border-box;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%238C8881' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.3-4.3'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 14px center; }
/* The suggestion list scrolls on its own instead of growing the dialog.
   Smarty can return up to 8 rows and the wanted address is often NOT first — a bare
   "4535 Central Ave" puts Saint Petersburg FL third — so the list has to be reachable without the
   dialog itself getting taller than the viewport and pushing "Find ZIP & continue" out of reach
   (owner 2026-07-29: "can't see the St Petersburg yet"). ~5 rows at a time, capped against short
   viewports too. overflow-x stays hidden so the rows keep clipping to the rounded bottom corners,
   and overscroll-behavior stops the page behind scrolling once the list hits its end. */
.co-zip__results { border: 1px solid var(--co-border); border-top: 0; border-radius: 0 0 var(--co-radius-sm) var(--co-radius-sm); overflow-x: hidden; overflow-y: auto; max-height: min(264px, 42vh); overscroll-behavior: contain; }
.co-zip__result { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; background: #fff; border: 0; border-top: 1px solid var(--co-border); padding: 14px 16px; cursor: pointer; font-size: 16px; color: var(--co-text); }
.co-zip__result:hover, .co-zip__result.is-active { background: var(--pink-soft); }
.co-zip__result--muted { color: var(--co-muted); }
.co-zip__sameday { display: inline-flex; align-items: center; gap: 6px; background: #E3F4EC; color: var(--co-green); font-weight: 600; font-size: 13px; border-radius: 999px; padding: 4px 12px; }
.co-zip__sameday svg { width: 16px; height: 16px; }
.co-zip__fields { margin-top: 16px; }
.co-zip__banner { display: flex; align-items: flex-start; gap: 12px; background: #E3F4EC; border-radius: var(--co-radius); padding: 16px 18px; margin-top: 16px; }
/* The JS toggles this same-day banner via the [hidden] attribute; the display:flex
   above (author rule) beats the UA [hidden]{display:none}, so without this the banner
   leaks through as an empty green strip for addresses with no same-day availability
   (Kostya 869e4retg "not fixed"). Higher-specificity [hidden] rule restores hiding. */
.co-zip__banner[hidden] { display: none; }
.co-zip__banner-check { width: 22px; height: 22px; flex: none; margin-top: 2px; }
.co-zip__banner-title { margin: 0; font-weight: 600; color: #0F7A52; }
.co-zip__banner-title strong { color: #0F7A52; }
.co-zip__banner-sub { margin: 4px 0 0; color: #4E8C73; font-size: 14px; }
.co-zip__actions { display: flex; justify-content: center; gap: 16px; margin-top: 22px; }
.co-zip__actions .co-btn { min-width: 220px; }

/* Auth modals — sign in / create account / OTP / success (Figma 298-5856 … 1198-39072) */
.co-auth { text-align: center; }
.co-auth__alt { color: var(--co-muted); margin: 14px 0 22px; }
.co-auth__alt a { color: #D64545; font-weight: 600; text-decoration: underline; }
/* The "Sign in" / "Create Account" toggle link in the auth modals must be red.
   Modal-scoped + !important so it beats the page/plugin `a { color }` resets
   that were keeping it dark on some pages (QA). */
.co-modal .co-auth__alt a,
.bv-authmodal .co-auth__alt a { color: #D64545 !important; text-decoration: underline; }
/* "Send verification code" submit: hardcode the pink so the button is never
   invisible (transparent bg + white text) if --pink doesn't resolve in the
   body-appended modal. QA: the button couldn't be seen. */
.co-modal .co-auth__submit,
.bv-authmodal .co-auth__submit { background: #E83E74 !important; color: #fff !important; }
.co-social { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.co-social__btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; height: 56px; border: 1px solid var(--co-border); border-radius: var(--co-radius-sm); background: #fff; font-weight: 700; color: var(--co-text); cursor: pointer; }
.co-social__btn svg, .co-social__g { width: 22px; height: 22px; flex: none; }
.co-social__btn--fb { background: #1877F2; border-color: #1877F2; color: #fff; }
.co-auth__tos { justify-content: center; text-align: left; margin: 20px 0 0; }
.co-auth__tos span { font-size: 15px; }
.co-auth__tos a { color: var(--pink); text-decoration: underline; }
.bv-page--checkout .co-auth .co-or { margin: 20px 0; }
.bv-page--checkout .co-auth .co-input { height: 52px; text-align: left; }
.co-auth__names { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.co-auth__submit { display: block; margin: 18px auto 0; min-width: 260px; }
.co-modal__note--info { display: flex; gap: 12px; align-items: flex-start; text-align: left; margin-top: 22px; }
.co-modal__note--info svg { width: 22px; height: 22px; flex: none; margin-top: 2px; }
.co-modal__note--info p { margin: 0; color: var(--co-muted); line-height: 1.5; }

/* OTP code boxes */
.co-otp { display: flex; justify-content: center; gap: 14px; margin: 26px 0; }
.co-otp__box { width: 72px; height: 72px; border-radius: 6px; background: #F7F7F9; border: 1px solid transparent; text-align: center; box-sizing: border-box; font-family: inherit; font-size: 20px; font-weight: 600; line-height: 1.4; color: #2A2424; padding: 0; }
.co-otp__box:focus { outline: none; border-color: var(--pink); background: #fff; box-shadow: 0 0 0 2px var(--pink-soft); }
.co-otp__box.is-filled { background: linear-gradient(104.17deg, #FDE7F2 0%, #FFF6E5 100%); }
.co-otp.is-error .co-otp__box { border-color: #D64545; }
.co-otp__error { color: #D64545; font-weight: 600; margin: 0 0 18px; }
.co-otp__resend { color: var(--co-muted); margin: 0 0 6px; }
.co-otp__resend a { color: var(--pink); font-weight: 600; text-decoration: underline; }
.co-otp__expire { color: var(--co-muted); font-size: 13px; margin: 0 0 22px; }
.co-otp__help { background: var(--pink-soft); border-radius: var(--co-radius-sm); padding: 14px 18px; color: var(--co-text); }
.co-otp__help a { color: var(--pink); font-weight: 700; text-decoration: underline; }

/* Auth success */
.co-auth--success { padding: 44px 40px; }
.co-auth__success-btns { margin-top: 24px; }
.co-auth__success-btns .co-btn { min-width: 280px; }
.co-auth__success-btns.is-two { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.co-auth__success-btns.is-two .co-btn { min-width: 0; }

@media (max-width: 560px) {
    .co-modal { padding: 28px 18px; }
    .co-modal__title { font-size: 32px; }
    .co-modal__actions, .co-cust__foot { grid-template-columns: 1fr; flex-direction: column; align-items: stretch; }
    .co-zip__actions { flex-direction: column; }
    .co-zip__actions .co-btn { min-width: 0; width: 100%; }
}

/* ============================================================================
   LANDING PAGE v2 (Figma 147:4623) — page-landing-v2.php
   ============================================================================ */
.bv-lp {
    --lp-pink: #E83E74; --lp-pink-bg: #FFECF6; --lp-pink-img: #FBDAE5;
    --lp-green: #00754F; --lp-green-bg: #E2FFF6; --lp-cream: #FFF7EC;
    --lp-gold: #DE9E09; --lp-ink: #2A2424; --lp-muted: #6B6973; --lp-line: #EAEAEA;
    --lp-serif: "Playfair Display","Gabriela", "DM Serif Display", Georgia, serif;
    --lp-sans: "Montserrat", "Inter", sans-serif;
    --lp-cta: "DM Sans", "Inter", sans-serif;
    font-family: var(--lp-sans); color: var(--lp-ink);
}
.bv-lp__section { max-width: var(--bv-container); margin: 0 auto; padding: 56px var(--bv-container-pad); }
.bv-lp__h2 { font-family: var(--lp-serif); font-weight: 400; font-size: clamp(28px, 3.2vw, 48px); line-height: 1.15; color: var(--lp-ink); margin: 0; }
.bv-lp__lead { margin: 12px 0 0; font-size: 18px; line-height: 1.5; color: var(--lp-muted); }

/* ZIP form */
.bv-lp__zip { display: flex; gap: 8px; flex-wrap: wrap; max-width: 520px; }
.bv-lp__zip-input { flex: 1 1 200px; height: 56px; padding: 0 16px; border: 1px solid var(--lp-gold); border-radius: 6px; background: #fff; font-family: var(--lp-cta); font-size: 18px; color: var(--lp-ink); }
.bv-lp__zip-btn { height: auto; padding: 0 28px !important; border: 0 !important; border-radius: 6px !important; background: var(--lp-pink) !important; color: #FFFBF5 !important; font-family: var(--lp-cta); font-weight: 600; font-size: 18px; cursor: pointer; transition: background .15s ease; }
.bv-lp__zip-btn:hover { background: #D9529B !important; }

/* Hero */
.bv-lp__hero { max-width: var(--bv-container); margin: 0 auto; padding: 40px var(--bv-container-pad) 8px; }
.bv-lp__hero-inner { display: grid; grid-template-columns: minmax(0, 517px) minmax(0, 1fr); gap: 56px; align-items: center; }
.bv-lp__hero-text { display: flex; flex-direction: column; gap: 50px; }
/* Rating — green Trustpilot star + green text (Figma 157:6577) */
.bv-lp__rating { display: inline-flex; align-items: center; gap: 12px; font-size: 20px; font-weight: 500; color: #00754F; }
.bv-lp__rating-tp { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; flex: 0 0 auto; background: #00B57A; color: #fff; border-radius: 4px; font-size: 19px; line-height: 1; }
.bv-lp__title { font-family: var(--lp-serif); font-weight: 400; font-size: clamp(34px, 4vw, 56px); line-height: 1.08; color: #121212; margin: 0; }
.bv-lp__title span { color: inherit; }
.bv-lp__subtitle { margin: 0; font-size: 18px; color: var(--lp-muted); }
.bv-lp__countdown-chip { align-self: stretch; display: flex; align-items: center; gap: 6px; padding: 10px 13px; background: #FFECF6; border-radius: 50px; color: #2A2424; font-family: 'Montserrat', sans-serif; font-weight: 600; font-size: 16px; line-height: 19px; }
.bv-lp__countdown-ico { flex: none; }
.bv-lp__countdown { font-variant-numeric: tabular-nums; font-weight: 600; }
.bv-lp__hero-media { position: relative; border-radius: 24px; overflow: hidden; background: var(--lp-pink-img); aspect-ratio: 877 / 626; }
.bv-lp__hero-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bv-lp__hero-tag { position: absolute; left: 24px; bottom: 24px; font-family: var(--lp-serif); font-size: clamp(28px, 3vw, 48px); color: #fff; text-shadow: 0 2px 12px rgba(0,0,0,.35); }

/* Trust badges */
.bv-lp__trust { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.bv-lp__trust-item { display: flex; align-items: center; gap: 16px; background: #FFF5E4; border: 1px solid #FFAF23; border-radius: 16px; padding: 16px; }
.bv-lp__trust-icon { width: 72px; height: 72px; flex-shrink: 0; }
.bv-lp__trust-text { display: flex; flex-direction: column; gap: 4px; }
.bv-lp__trust-title { font-family: var(--lp-serif); font-weight: 400; font-size: 24px; line-height: 1.2; color: #181B02; }
.bv-lp__trust-sub { font-size: 14px; color: var(--lp-muted); }

/* ===== City-landing hero redesign (Tim's mockup) ===== */
.bv-lp__hero--city { padding-top: 32px; }
.bv-lp__hero--city .bv-lp__hero-inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 48px; align-items: stretch; }
.bv-lp__hero--city .bv-lp__hero-text { gap: 22px; justify-content: center; }
.bv-lp__pin { align-self: flex-start; display: inline-flex; align-items: center; gap: 7px; padding: 7px 15px; border-radius: 999px; background: #FDE7F1; color: var(--lp-pink); font-weight: 600; font-size: 14px; }
.bv-lp__hero--city .bv-lp__title { font-size: clamp(38px, 4.6vw, 62px); line-height: 1.04; color: #1A1A1A; }
.bv-lp__title-city { display: inline-block; color: var(--lp-pink); font-style: italic; border-bottom: 4px solid var(--lp-pink); border-radius: 0 0 40% 0 / 0 0 100% 0; padding-bottom: 2px; }
.bv-lp__lead { font-size: 17px; line-height: 1.55; color: var(--lp-muted); margin: 0; max-width: 46ch; }
.bv-lp__lead strong { color: #2A2424; font-weight: 700; }
.bv-lp__zipcard { background: #FDEBF3; border: 1px solid #FAD1E4; border-radius: 18px; padding: 20px; display: flex; flex-direction: column; gap: 12px; }
.bv-lp__zipcard-label { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; color: #2A2424; }
.bv-lp__zipcard-label svg { color: var(--lp-pink); }
.bv-lp__zipcard .bv-lp__zip { max-width: none; margin: 0; }
.bv-lp__zipcard .bv-lp__zip-input { flex: 1 1 200px; height: 52px; border-radius: 10px; border-color: #F3C6DC; background: #fff; font-size: 16px; }
.bv-lp__zipcard .bv-lp__zip-btn { height: 52px; border-radius: 10px !important; font-size: 16px; white-space: nowrap; }
.bv-lp__minitrust { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px 12px; }
.bv-lp__minitrust-item { display: flex; align-items: flex-start; gap: 9px; }
.bv-lp__minitrust-ico { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; background: #FDE7F1; color: var(--lp-pink); display: flex; align-items: center; justify-content: center; }
.bv-lp__minitrust-text { display: flex; flex-direction: column; line-height: 1.25; }
.bv-lp__minitrust-text strong { font-size: 13px; font-weight: 700; color: #2A2424; }
.bv-lp__minitrust-text span { font-size: 12px; color: var(--lp-muted); }
.bv-lp__social { display: flex; align-items: center; gap: 14px; background: #FDEBF3; border-radius: 16px; padding: 14px 18px; align-self: flex-start; }
.bv-lp__avatars { display: inline-flex; }
.bv-lp__avatars span { width: 34px; height: 34px; border-radius: 50%; border: 2px solid #fff; margin-left: -10px; background: linear-gradient(135deg, #F7A8C8, #E83E74); }
.bv-lp__avatars span:first-child { margin-left: 0; }
.bv-lp__avatars span:nth-child(2) { background: linear-gradient(135deg, #FFD1A6, #E8913E); }
.bv-lp__avatars span:nth-child(3) { background: linear-gradient(135deg, #B7E0C0, #4FB477); }
.bv-lp__avatars span:nth-child(4) { background: linear-gradient(135deg, #C9C0F0, #7A6BD8); }
.bv-lp__social-text { display: flex; flex-direction: column; line-height: 1.3; }
.bv-lp__social-top { font-size: 14px; color: #2A2424; }
.bv-lp__social-top strong { font-weight: 800; }
.bv-lp__social-stars { color: var(--lp-pink); letter-spacing: 1px; }
.bv-lp__social-sub { font-size: 13px; color: var(--lp-muted); }
/* Hero media card. Keep a concrete min-height so the media (and its <img
   height:100%>) can't collapse on desktop — `min-height:100%` resolves against
   the grid's indefinite height (=0), which hid the city hero image. It still
   stretches taller to match the text column via align-items:stretch. */
.bv-lp__hero--city .bv-lp__hero-media { aspect-ratio: auto; min-height: 460px; }
.bv-lp__hero-card { position: absolute; right: 20px; bottom: 20px; max-width: 320px; background: #fff; border-radius: 16px; padding: 16px 18px; box-shadow: 0 12px 34px rgba(0,0,0,.18); }
.bv-lp__hero-card-title { display: flex; align-items: center; gap: 7px; font-weight: 800; color: #2A2424; margin: 0 0 6px; font-size: 15px; }
.bv-lp__hero-card-title svg { color: var(--lp-pink); }
.bv-lp__hero-card-areas { margin: 0 0 10px; font-size: 13px; color: var(--lp-muted); line-height: 1.5; }
.bv-lp__hero-card-note { display: flex; align-items: flex-start; gap: 7px; margin: 0; padding-top: 10px; border-top: 1px solid #F0ECE7; font-size: 13px; color: #2A2424; font-weight: 600; }
/* Neighborhood strip */
.bv-lp__areas { background: #FDEBF3; margin-top: 8px; }
.bv-lp__areas-inner { max-width: var(--bv-container); margin: 0 auto; padding: 22px var(--bv-container-pad); display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.bv-lp__areas-text { display: flex; align-items: center; gap: 14px; }
.bv-lp__areas-ico { font-size: 30px; line-height: 1; }
.bv-lp__areas-ico img { width: 120px; height: auto; display: block; border-radius: 10px; }
.bv-lp__areas-title { font-family: var(--lp-serif); font-weight: 500; font-size: clamp(20px, 2.2vw, 26px); color: #1A1A1A; margin: 0; }
.bv-lp__areas-sub { margin: 2px 0 0; font-size: 14px; color: var(--lp-muted); }
.bv-lp__areas-pills { display: flex; flex-wrap: wrap; gap: 10px; }
.bv-lp__area-pill { display: inline-flex; align-items: center; padding: 9px 16px; border-radius: 999px; background: #fff; border: 1px solid #F3C6DC; font-size: 14px; font-weight: 600; color: #2A2424; text-decoration: none; }
.bv-lp__area-pill--more { color: var(--lp-pink); border-color: var(--lp-pink); }
@media (max-width: 900px) {
    .bv-lp__hero--city .bv-lp__hero-inner { grid-template-columns: 1fr; gap: 28px; }
    .bv-lp__hero--city .bv-lp__hero-media { min-height: 340px; }
}
@media (max-width: 560px) {
    .bv-lp__minitrust { grid-template-columns: repeat(2, 1fr); }
    .bv-lp__areas-inner { flex-direction: column; align-items: flex-start; }
}

/* Product grid */
.bv-lp__grid-title { margin-bottom: 40px; }
.bv-lp__grid-head { display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; margin-bottom: 44px; }
.bv-lp__results { flex: 1; color: #999999; font-size: 18px; }
.bv-lp__sort { color: var(--lp-muted); font-size: 16px; }
.bv-lp__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
/* Pager target: the Prev/Next/number links carry #lp-grid so the new page opens on the
   products, not at the top of the landing page. The offset keeps the sticky header from
   covering the grid heading it lands on. */
#lp-grid { scroll-margin-top: 96px; }
.bv-lp__pager { display: flex; justify-content: center; margin-top: 36px; }

/* Product-grid pagination (Figma 161:7879) */
.bv-lp__pagination { display: flex; align-items: center; justify-content: center; gap: 24px; margin-top: 36px; flex-wrap: wrap; }
.bv-lp__page-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-width: 104px; height: 46px; padding: 0 14px; border: 1px solid #999; border-radius: 50px; color: #999; font-weight: 600; font-size: 20px; text-decoration: none; transition: background .15s ease, color .15s ease, border-color .15s ease; }
.bv-lp__page-btn--next { border-color: #101828; color: #101828; }
.bv-lp__page-btn:not(.is-disabled):hover { background: #FFECF6; border-color: var(--lp-pink); color: var(--lp-pink); }
.bv-lp__page-btn.is-disabled { opacity: .45; pointer-events: none; }
.bv-lp__page-btn svg { flex: 0 0 auto; }
.bv-lp__page-nums { display: inline-flex; align-items: center; gap: 12px; }
.bv-lp__page-num { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; padding: 0 7px; border-radius: 50px; color: #999; font-size: 20px; text-decoration: none; box-sizing: border-box; }
.bv-lp__page-num:hover { color: var(--lp-pink); }
.bv-lp__page-num.is-active { background: #FFECF6; border: 1px solid var(--lp-pink); color: #101828; font-weight: 600; }
.bv-lp__page-ellipsis { color: #999; font-size: 20px; }
@media (max-width: 560px) { .bv-lp__pagination { gap: 12px; } .bv-lp__page-btn { font-size: 16px; min-width: 88px; height: 42px; } .bv-lp__page-num, .bv-lp__page-ellipsis { font-size: 16px; } }

/* Shop by occasion — big image cards */
.bv-lp__occ-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 28px; }
.bv-lp__occ-card { position: relative; display: block; aspect-ratio: 4 / 5; border-radius: 20px; overflow: hidden; background: #f2e9e0; box-shadow: 0 8px 28px rgba(0,0,0,.10); }
.bv-lp__occ-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.bv-lp__occ-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(20,16,16,.62) 0%, rgba(20,16,16,.12) 42%, transparent 70%); }
.bv-lp__occ-card:hover .bv-lp__occ-img { transform: scale(1.05); }
.bv-lp__occ-name { position: absolute; left: 20px; bottom: 18px; z-index: 1; color: #fff; font-family: var(--lp-serif); font-size: clamp(20px, 2vw, 28px); font-weight: 400; text-shadow: 0 1px 6px rgba(0,0,0,.3); }
@media (max-width: 900px) { .bv-lp__occ-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; } }
@media (max-width: 520px) { .bv-lp__occ-grid { grid-template-columns: 1fr 1fr; gap: 12px; } .bv-lp__occ-name { left: 14px; bottom: 12px; } }
.bv-lp__pager-btn { display: inline-flex; align-items: center; height: 52px; padding: 0 28px; border: 1px solid var(--lp-pink); border-radius: 6px; color: var(--lp-pink); font-family: var(--lp-cta); font-weight: 600; font-size: 16px; }
.bv-lp__pager-btn:hover { background: var(--lp-pink); color: #fff; }

/* Reviews */
.bv-lp__reviews { background: var(--lp-cream); max-width: none; padding-left: 0; padding-right: 0; }
.bv-lp__reviews-head, .bv-lp__reviews-grid, .bv-lp__how-head, .bv-lp__steps, .bv-lp__how-zip, .bv-lp__faq-head, .bv-lp__faq-list, .bv-lp__seo { max-width: var(--bv-container); margin-left: auto; margin-right: auto; padding-left: var(--bv-container-pad); padding-right: var(--bv-container-pad); box-sizing: border-box; }
.bv-lp__reviews-head { text-align: center; }
.bv-lp__rating-pill { display: inline-flex; align-items: center; gap: 6px; color: var(--lp-gold); font-weight: 600; font-size: 15px; margin-bottom: 12px; }
.bv-lp__reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 32px; }
.bv-lp__avatar { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--lp-pink-bg); color: var(--lp-pink); font-weight: 600; font-size: 15px; }
.bv-lp .bv-rv__author-wrap { display: flex; align-items: center; gap: 12px; }
.bv-lp .bv-rv__more { background: none; border: 0; padding: 0; cursor: pointer; font-family: inherit; }

/* Full-review popup (Figma 137-837) */
.bv-rv-modal { position: fixed; inset: 0; z-index: 100001; display: flex; align-items: center; justify-content: center; padding: 16px; }
.bv-rv-modal[hidden] { display: none; }
.bv-rv-modal__overlay { position: absolute; inset: 0; background: rgba(20, 16, 16, .45); }
.bv-rv-modal__card { position: relative; z-index: 1; width: 100%; max-width: 720px; background: #fff; border-radius: 16px; padding: 40px; box-shadow: 0 20px 60px rgba(0, 0, 0, .18); }
.bv-rv-modal__close { position: absolute; top: 28px; right: 28px; background: none; border: 0; padding: 0; line-height: 0; cursor: pointer; color: #181B02; }
.bv-rv-modal__top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding-right: 36px; }
.bv-rv-modal__avatar { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: #E83E74; color: #fff; font-family: 'Gabriela', serif; font-size: 20px; line-height: 1; flex: none; }
.bv-rv-modal__name { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 16px; line-height: 20px; letter-spacing: .5px; color: #181B02; }
.bv-rv-modal__meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; }
.bv-rv-modal__stars { color: #F2B400; font-size: 16px; letter-spacing: 1px; }
.bv-rv-modal__date { font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 16px; color: #525252; }
.bv-rv-modal__text { margin: 8px 0 0; font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 16px; line-height: 20px; color: #181B02; }
@media (max-width: 600px) {
    .bv-rv-modal__card { padding: 24px; }
    .bv-rv-modal__close { top: 16px; right: 16px; }
}

/* How it works */
.bv-lp__how-head { text-align: center; }
.bv-lp__steps { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin: 40px auto; }
.bv-lp__arrow { position: absolute; height: auto; color: var(--lp-ink); z-index: 0; pointer-events: none; }
.bv-lp__arrow--a { width: 200px; left: 50%; top: 42px; transform: translateX(-50%); }
.bv-lp__arrow--b { width: 250px; left: 75%; top: -16px; transform: translateX(-50%); }
.bv-lp__step { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; }
.bv-lp__step-num { display: inline-flex; align-items: center; justify-content: center; width: 120px; height: 120px; border-radius: 50%; background: var(--lp-pink-bg); color: var(--lp-pink); font-family: var(--lp-serif); font-size: 48px; margin-bottom: 12px; }
.bv-lp__step-title { font-family: var(--lp-serif); font-weight: 400; font-size: 24px; color: var(--lp-ink); max-width: 240px; }
.bv-lp__step-sub { font-size: 18px; color: var(--lp-muted); max-width: 260px; }
.bv-lp__how-zip { display: flex; justify-content: center; }
.bv-lp__how-zip .bv-lp__zip { max-width: 520px; width: 100%; justify-content: center; }

/* FAQ */
.bv-lp__faq-head { text-align: center; margin-bottom: 32px; }
.bv-lp a.bv-lp__faq-phone { color: var(--lp-pink); font-weight: 600; text-decoration: none; white-space: nowrap; }
.bv-lp a.bv-lp__faq-phone:hover { text-decoration: underline; }
/* FAQ accordion (Figma 147:4868): rows by default; the open item becomes a
   pink-bordered rounded card with a soft pink shadow. */
/* Fill the section's content width (no extra container padding) so the FAQ
   rows line up with the SEO text below. */
.bv-lp__faq-list { display: flex; flex-direction: column; gap: 4px; max-width: none; margin: 0; padding-left: 0; padding-right: 0; }
.bv-lp__faq-item { background: transparent; border: 1px solid transparent; border-radius: 16px; margin-bottom: 0; overflow: visible; transition: border-color .15s ease, box-shadow .15s ease, background .15s ease; }
.bv-lp__faq-item[open] { background: #fff; border-color: var(--lp-pink); box-shadow: 0 0 45px rgba(236, 107, 173, .08); }
/* Hide the shared accordion's ::after chevron — the landing uses its own SVG. */
.bv-lp .bv-acc__summary::after { content: none; display: none; }
.bv-lp .bv-acc__summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; list-style: none; cursor: pointer; padding: 18px 20px; font-family: var(--lp-serif); font-weight: 400; font-size: 24px; line-height: 1.2; color: #6f6a73; }
.bv-lp__faq-item[open] .bv-acc__summary { color: #2A2424; }
.bv-lp .bv-acc__summary::-webkit-details-marker { display: none; }
.bv-lp__faq-chev { width: 26px; height: 26px; color: #6f6a73; transition: transform .2s ease, color .15s ease; flex-shrink: 0; }
.bv-lp__faq-item[open] .bv-lp__faq-chev { transform: rotate(180deg); color: var(--lp-pink); }
.bv-lp .bv-acc__body { padding: 0 20px 20px; color: var(--lp-muted); font-size: 18px; line-height: 1.45; }
.bv-lp .bv-acc__body p { margin: 0; }

/* SEO text */
.bv-lp__seo .bv-lp__h2 { margin-bottom: 24px; }
.bv-lp__seo-block { margin-bottom: 24px; }
.bv-lp__seo-block h3 { font-family: var(--lp-sans); font-weight: 600; font-size: 20px; color: var(--lp-ink); margin: 0 0 8px; }
.bv-lp__seo-block p { margin: 0; font-size: 16px; line-height: 1.6; color: var(--lp-muted); }
.bv-lp__seo-list { margin: 8px 0 0; padding-left: 20px; color: var(--lp-muted); font-size: 16px; line-height: 1.8; }
.bv-lp__seo-foot { font-size: 16px; color: var(--lp-muted); font-style: italic; }

@media (max-width: 1100px) {
    .bv-lp__hero-inner { grid-template-columns: 1fr; gap: 28px; }
    .bv-lp__grid { grid-template-columns: repeat(2, 1fr); }
    .bv-lp__trust { grid-template-columns: repeat(2, 1fr); }
    .bv-lp__reviews-grid { grid-template-columns: 1fr; }
    .bv-lp__steps { grid-template-columns: repeat(2, 1fr); }
    .bv-lp__arrow { display: none; }
}
@media (max-width: 600px) {
    .bv-lp__grid { grid-template-columns: 1fr; }
    .bv-lp__trust { grid-template-columns: 1fr; }
    .bv-lp__steps { grid-template-columns: 1fr; }
}

/* ============ Added-to-cart modal (Figma 1294:20546) ============ */
.bv-cartmodal { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 20px;
    font-family: "Montserrat", "Inter", sans-serif; color: #2A2424; }
.bv-cartmodal[hidden] { display: none; }
.bv-cartmodal__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.bv-cartmodal__dialog { position: relative; z-index: 1; width: 100%; max-width: 420px; max-height: 90vh; overflow: auto;
    background: #fff; border-radius: 16px; padding: 28px 24px 20px; box-shadow: 0 20px 60px rgba(0,0,0,.25); text-align: center; }
.bv-cartmodal__close { position: absolute; top: 14px; right: 14px; background: none; border: 0; color: #6B6973; cursor: pointer; padding: 4px; line-height: 0; }
.bv-cartmodal__badge { display: inline-block; }
.bv-cartmodal__title { font-family: "Gabriela","DM Serif Display",Georgia,serif; font-weight: 400; font-size: 28px; line-height: 1.15; margin: 8px 0 20px; color: #2A2424; }
.bv-cartmodal__items { display: flex; flex-direction: column; }
.bv-cartmodal__item { display: flex; align-items: center; gap: 14px; padding: 16px 0; border-top: 1px solid #EEE; text-align: left; }
.bv-cartmodal__item:first-child { border-top: 0; }
.bv-cartmodal__thumb img { width: 64px; height: 64px; object-fit: cover; border-radius: 8px; display: block; }
.bv-cartmodal__info { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.bv-cartmodal__name { font-weight: 600; font-size: 16px; color: #2A2424; }
.bv-cartmodal__size, .bv-cartmodal__qty { font-size: 14px; color: #6B6973; }
.bv-cartmodal__addons { font-size: 13px; color: #6B6973; margin-top: 2px; }
.bv-cartmodal__price { font-weight: 600; font-size: 16px; color: #2A2424; white-space: nowrap; }
.bv-cartmodal__price del { display: block; font-weight: 400; font-size: 13px; color: #9a98a2; }
.bv-cartmodal__actions { display: flex; gap: 12px; margin: 20px 0 0; }
.bv-cartmodal__btn { flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; height: 52px; border-radius: 8px;
    font-family: "DM Sans","Inter",sans-serif; font-weight: 600; font-size: 16px; cursor: pointer; }
.bv-cartmodal__btn--ghost { background: #fff; border: 1px solid #DDD; color: #2A2424; }
.bv-cartmodal__btn--ghost:hover { border-color: #E83E74; color: #C21E5A; }
.bv-cartmodal__btn--pink { background: #E83E74; border: 0; color: #FFFBF5; }
.bv-cartmodal__btn--pink:hover { background: #D9529B; color: #FFFBF5; }
.bv-cartmodal__note { margin: 16px 0 0; padding: 12px 14px; background: #F7F7F9; border-radius: 8px; font-size: 13px; line-height: 1.5; color: #6B6973; text-align: left; }

/* ============ Delivery date picker modal (Figma 932:20603) ============ */
body.bv-page--product .ui-datepicker { display: none !important; }
.bv-datepick { position: fixed; inset: 0; z-index: 100001; display: flex; align-items: center; justify-content: center; padding: 20px;
    font-family: "Montserrat","Inter",sans-serif; color: #2A2424; }
.bv-datepick[hidden] { display: none; }
.bv-datepick__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.bv-datepick__dialog { position: relative; z-index: 1; width: 100%; max-width: 520px; max-height: 92vh; overflow: auto;
    background: #fff; border-radius: 16px; padding: 24px; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.bv-datepick__close { position: absolute; top: 16px; right: 16px; background: none; border: 0; font-size: 26px; line-height: 1; color: #6B6973; cursor: pointer; }
.bv-datepick__title { font-family: "Gabriela","DM Serif Display",Georgia,serif; font-weight: 400; font-size: 30px; text-align: center; margin: 4px 0 6px; }
.bv-datepick__sub { text-align: center; font-size: 14px; color: #6B6973; margin: 0 0 16px; }
.bv-datepick__sub a { color: #C21E5A; font-weight: 600; }
.bv-datepick__pills { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 18px; }
.bv-datepick__pill { padding: 7px 14px; border: 1px solid #EAEAEA; border-radius: 20px; background: #fff; font-size: 13px; color: #2A2424; cursor: pointer; }
.bv-datepick__pill:hover { border-color: #E83E74; color: #C21E5A; }
.bv-datepick__nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.bv-datepick__navbtn { width: 36px; height: 36px; border: 0; border-radius: 8px; background: #F4F4F6; color: #2A2424; font-size: 18px; cursor: pointer; }
.bv-datepick__navbtn:hover { background: #ECECEF; }
.bv-datepick__month { font-family: "Gabriela","DM Serif Display",Georgia,serif; font-size: 22px; }
.bv-datepick__wdrow, .bv-datepick__days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.bv-datepick__wd { text-align: center; font-size: 12px; font-weight: 600; color: #9a98a2; letter-spacing: .04em; padding: 4px 0; }
.bv-datepick__day { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 56px;
    border: 1px solid #EAEAEA; border-radius: 8px; background: #fff; cursor: pointer; padding: 6px 2px; }
.bv-datepick__day:hover:not([disabled]) { border-color: #E83E74; }
.bv-datepick__dnum { font-size: 15px; font-weight: 600; color: #2A2424; line-height: 1; }
.bv-datepick__dlbl { font-size: 11px; color: #6B6973; }
.bv-datepick__day.is-out { background: #FAFAFB; border-color: transparent; color: #C9C7CF; cursor: default; }
.bv-datepick__day.is-out .bv-datepick__dnum { color: #C9C7CF; font-weight: 400; }
/* Days belonging to the adjacent month (still selectable) — muted but clickable. */
.bv-datepick__day.is-adjacent:not(.is-out) .bv-datepick__dnum { color: #9A98A2; font-weight: 400; }
.bv-datepick__day.is-today { background: #FFECF6; border-color: #E83E74; }
.bv-datepick__day.is-today .bv-datepick__dnum, .bv-datepick__day.is-today .bv-datepick__dlbl { color: #C21E5A; }
.bv-datepick__day.is-tom { background: #FFF5FA; border-color: #F7C5DF; }
.bv-datepick__day.is-selected { border-color: #E83E74; box-shadow: 0 0 0 1px #E83E74 inset; }
.bv-datepick__day.is-surge { border-color: #DE9E09; background: #FFF7EC; }
.bv-datepick__day.is-closed { background: #FAFAFB; border-color: transparent; color: #C9C7CF; cursor: not-allowed; }
.bv-datepick__day.is-closed .bv-datepick__dnum { color: #C9C7CF; font-weight: 400; }
.bv-datepick__pill.is-disabled { opacity: .45; cursor: not-allowed; }
.bv-datepick__pill.is-disabled:hover { border-color: #EAEAEA; color: #2A2424; }
.bv-datepick__legend { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; margin: 16px 0; font-size: 12px; color: #6B6973; }
.bv-datepick__legend .dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 5px; vertical-align: middle; }
.bv-datepick__legend .dot--sel { background: #E83E74; }
.bv-datepick__legend .dot--tom { background: #F7C5DF; }
.bv-datepick__legend .dot--surge { background: #DE9E09; }
.bv-datepick__legend .dot--closed { background: #C9C7CF; }
.bv-datepick__summary { font-weight: 600; font-size: 16px; margin: 0 0 16px; }
.bv-datepick__actions { display: flex; gap: 12px; }
.bv-datepick__btn { flex: 1 1 0; height: 52px; border-radius: 8px; font-family: "DM Sans","Inter",sans-serif; font-weight: 600; font-size: 16px; cursor: pointer; }
.bv-datepick__btn--ghost { background: #fff; border: 1px solid #DDD; color: #2A2424; }
.bv-datepick__btn--ghost:hover { border-color: #E83E74; color: #C21E5A; }
.bv-datepick__btn--pink { background: #E83E74 !important; border: 0; color: #FFFBF5 !important; }
.bv-datepick__btn--pink:hover { background: #D9529B !important; }
@media (max-width: 480px) { .bv-datepick__day { min-height: 48px; } .bv-datepick__dlbl { display: none; } }

/* Real-device QA (Galaxy S23, 360×649): the dialog overflowed the viewport with
   Continue below the fold, the serif title collided with the × close, and the
   Crisp launcher floated over the calendar. Compact the modal on phones and pin
   the CTA; hide Crisp while the picker is open (any viewport). */
body:has(.bv-datepick:not([hidden])) .crisp-client { display: none !important; }
@media (max-width: 600px) {
    .bv-datepick { padding: 10px; }
    .bv-datepick__dialog { max-height: calc(100vh - 20px); max-height: calc(100dvh - 20px); padding: 18px 14px 0; }
    .bv-datepick__close { top: 12px; right: 12px; }
    .bv-datepick__title { font-size: 22px; padding: 0 28px; }
    .bv-datepick__sub { font-size: 13px; margin-bottom: 10px; }
    .bv-datepick__pills { gap: 6px; margin-bottom: 10px; }
    .bv-datepick__pill { padding: 6px 11px; font-size: 12px; }
    .bv-datepick__nav { margin-bottom: 8px; }
    .bv-datepick__month { font-size: 19px; }
    .bv-datepick__day { min-height: 40px; }
    .bv-datepick__legend { gap: 6px 14px; margin: 8px 0; font-size: 11px; }
    .bv-datepick__summary { font-size: 14px; margin: 0 0 10px; }
    /* CTA always reachable: sticks to the bottom of the scrolling dialog. */
    .bv-datepick__actions { position: sticky; bottom: 0; background: #fff; padding: 10px 0 14px; box-shadow: 0 -8px 16px -8px rgba(0, 0, 0, .12); }
    .bv-datepick__btn { height: 48px; }
}
.opened{
    display:block !important;
}

.bv-pd__details-summary{
    flex-wrap:wrap;
}

.bv-pd__details-body{
    display:none;
}

.rotate{
    transform: rotate(180deg);
}

.shoptimizer-product-prevnext{
    order:1;
}

.onsale{
    order:2;
}

.bv-pd__pill{
    order:3;
}

.product_title{
    order:4;
    margin-top:20px !important;
    margin-bottom:8px !important;
}

.product-sku{
    order:5;
}

.bv-pd__rating{
    order:6;
    margin-top:20px;
}

.cgkit-as-variation-price{
    order:9;
    margin-top:24px !important;
    margin-bottom:24px !important;
}

.bv-pd__social{
    order:7;
}

.sale-item{
    order:10;
}

.variations_form{
    order:11;
}

.bv-pd__express{
    order:12;
    display:none;
}

.bv-pd__assure{
    order:13;
    margin-bottom:60px !important;
}

.bv-pd__details{
    order:14;
}

.shoptimizer-modals-wrapper{
    order:15;
}

.call-back-feature{
    order:16;
}

.shoptimizer-modal{
    order:17;
}

.bv-datepick__navbtn{
    background-color:#ddd !important;
}

.bv-datepick__day:hover{
    background-color:#E83E74;
    color:#fff !important;
}

.bv-datepick__day:hover .bv-datepick__dnum{
    color:#fff !important;
}

.bv-datepick__day:hover .bv-datepick__dlbl{
    color:#fff !important;
}

.bv-datepick__pill{
    border:1px solid #ddd !important;
}

.bv-datepick__pill_active{
    background-color:#FFECF6 !important;
    border:1px solid #E83E74 !important;
}

.holiday{
    background-color:#FFF7EC;
}

.holiday:hover{
    background-color:#DE9E09;
    color:#fff !important;
}

.price{
    display:flex;
}

.price ins{
    order:1;
}

.price del{
    order:2;
}

.product .summary table.variations tr:last-child .value{
    padding-top:0 !important;
    padding-bottom:0 !important;
    margin-top:60px;
}

body.bv-page--product .bv-live-h-date{
    margin-top:0;
    margin-bottom:0;
}

div.product .summary form.cart{
    margin-bottom:60px;
    order:10;
}

.bv-live-actions{
    order: 11;
    margin-bottom: 60px;
}

/* =========================================================================
   "Find the ZIP code" finder modal — live PDP overlay (Figma 1508-29699 /
   29935 / 1511-30339 / 30434). Reuses the .co-zip visuals from the checkout
   prototype; --co-* tokens are checkout-scoped, so re-declare them here.
   ========================================================================= */
.bv-zipmodal {
    --pink: #E83E74; --pink-hover: #D8579C; --pink-soft: #FFECF6;
    --cream: #FFF7EC; --co-text: #2A2424; --co-muted: #6B6973;
    --co-border: #E7E4DF; --co-green: #00754F;
    --co-radius: 16px; --co-radius-sm: 6px;
    --co-serif: var(--bv-serif, "Gabriela", "Playfair Display", Georgia, serif);
    position: fixed; inset: 0; z-index: 100000;
    display: flex; align-items: center; justify-content: center;
    padding: 20px; background: rgba(24,20,18,.55);
}
.bv-zipmodal[hidden] { display: none; }
.bv-zipmodal .co-modal { width: 100%; max-width: 760px; max-height: 92vh; overflow: auto; padding: 40px; }
.bv-zipmodal .co-modal__title { font-size: 42px; }
.bv-zipmodal .co-zip__search { margin-top: 18px; }
.bv-zipmodal .co-zip__icon { position: absolute; top: 50%; right: 16px; transform: translateY(-50%); color: var(--co-muted); pointer-events: none; }
.bv-zipmodal .co-zip__search input:hover,
.bv-zipmodal .co-zip__search input:focus { outline: none; border-color: var(--pink); }
.bv-zipmodal__fields { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-top: 18px; }
.bv-zipmodal__fields .co-field--valid { min-width: 0; }
@media (max-width: 560px) {
    .bv-zipmodal .co-modal { padding: 28px 18px; }
    .bv-zipmodal .co-modal__title { font-size: 32px; }
    .bv-zipmodal__fields { grid-template-columns: 1fr; }
}

.bv-datepick__sub a{
    color: #C21E5A;
}

.notavailable-dnone{
    display:none;
}

.is-out:hover .notavailable-dnone{
    display:block;
    border:1px solid #6B6973;
    background-color:#F7F7F9;
    color:#2A2424;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 2;
    white-space: nowrap;
    font-size:12px;
    border-radius:5px;
    padding: 3px 10px;
}

/* =========================================================================
   Login popup — header "My account" when logged out (Figma 298-5856 / OTP).
   Reuses .co-auth visuals; --co-* tokens are checkout-scoped, re-declare here.
   ========================================================================= */
.bv-authmodal {
    --pink: #E83E74; --pink-hover: #D8579C; --pink-soft: #FFECF6;
    --gold: #C98A1E; --cream: #FFF7EC; --co-text: #2A2424; --co-muted: #6B6973;
    --co-border: #E7E4DF; --co-green: #00754F;
    --co-radius: 16px; --co-radius-sm: 6px;
    --co-serif: var(--bv-serif, "Gabriela", "Playfair Display", Georgia, serif);
    position: fixed; inset: 0; z-index: 100000;
    display: flex; align-items: center; justify-content: center;
    padding: 20px; background: rgba(24,20,18,.55);
}
.bv-authmodal[hidden] { display: none; }
.bv-authmodal__views { width: 100%; max-width: 560px; }
.bv-authmodal .co-modal { width: 100%; max-height: 92vh; overflow: auto; padding: 40px; }
.bv-authmodal .co-modal[hidden] { display: none; }
.bv-authmodal .co-auth .co-or { margin: 20px 0; }
.bv-authmodal .co-auth .co-input { height: 52px; text-align: left; }
@media (max-width: 560px) {
    .bv-authmodal .co-modal { padding: 28px 18px; }
    .bv-authmodal .co-modal__title { font-size: 32px; }
    .bv-authmodal .co-social { grid-template-columns: 1fr; }
    .bv-authmodal .co-otp { gap: 8px; }
    .bv-authmodal .co-otp__box { width: 48px; height: 56px; }
}

.bv-h2-cart:hover{
    color:#fff;
    background-color:#E83E74;
}

.bv-h2-cart:focus{
    color:#fff;
    background-color:#E83E74;
}

.bv-h2-cart:active{
    color:#fff;
    background-color:#E83E74;
}

/* Owner: the cart count bubble should NOT change on hover — keep its resting look
   (pink bg / white text, base rule ~line 200) on hover/focus/active. */
.bv-h2-cart:hover .bv-h2-cart__count,
.bv-h2-cart:focus .bv-h2-cart__count,
.bv-h2-cart:active .bv-h2-cart__count{
    background-color:#E83E74;
    color:#fff;
}

/* Hide the theme's default checkout progress bar (Shopping Cart / Shipping /
   Confirmation) on the v2 checkout — the v2 design uses its own .co-steps. */
body.bv-body.woocommerce-checkout .checkout-wrap,
body.bv-body.woocommerce-checkout .checkout-bar { display: none !important; }

/* The functional tip module (#checkout-radio-tips) renders inside #order_review;
   on the v2 checkout its heading + radio list are hidden because the Figma
   .co-tips pills drive it instead. The "Other amount" input stays usable. */
body.page-template-page-checkout-v2 #checkout-radio-tips > h5,
body.page-template-page-checkout-v2 #checkout-radio-tips > p,
body.page-template-page-checkout-v2 #checkout-radio-tips #radio_select_field { display: none !important; }

/* Hide WC/theme chrome the v2 design doesn't use: the coupon toggle/form
   (discount is entered in step 2) and the Norton/trust seals block. */
body.page-template-page-checkout-v2 .woocommerce-form-coupon-toggle,
body.page-template-page-checkout-v2 .coupon-wrapper,
body.page-template-page-checkout-v2 .checkout_coupon,
body.page-template-page-checkout-v2 .seals { display: none !important; }

.single_add_to_cart_button:hover{
    color:#fff !important;
}

/* =========================================================================
   "Make it more thoughtful" add-ons modal (Figma 1278-21832 / 22352)
   ========================================================================= */
.bv-addons-overlay {
    position: fixed; inset: 0; z-index: 100000;
    display: flex; align-items: flex-start; justify-content: center;
    overflow-y: auto; padding: 32px 16px; background: rgba(24, 27, 2, 0.45);
}
.bv-addons-overlay[hidden] { display: none; }
body.bv-addons-open { overflow: hidden; }

.bv-addons {
    --ad-pink: #E83E74;
    --ad-pink-soft: #fff2f7;
    /* What "added" looks like. Split out of the pink so the sympathy/funeral popup can
       answer that question in its own palette without repainting prices and badges. */
    --ad-sel: var(--ad-pink);
    --ad-sel-soft: var(--ad-pink-soft);
    --ad-sel-edge: #f4a8c6;
    --ad-sel-edge-strong: #ef7aa6;
    --ad-cta-a: #F2618F;
    --ad-cta-b: #E83E74;
    --ad-text: #231f20;
    --ad-muted: #7f7680;
    --ad-line: #e8ddd8;
    position: relative; width: min(1240px, 100%); margin: auto;
    background: #fff; border-radius: 28px; box-shadow: 0 24px 80px rgba(34, 22, 30, 0.18);
    padding: 34px 44px 24px; box-sizing: border-box;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: var(--ad-text);
}
.bv-addons__close {
    position: absolute; right: 24px; top: 18px; display: inline-flex; padding: 6px;
    border: 0; background: none; color: #2f2a2d; cursor: pointer; line-height: 0;
}

/* Instant-open "adding…" state. openModalLoading() adds .bv-addons--loading the moment
   "Add to cart" is clicked; the add-ons reveal (class removed) once the bouquet is confirmed
   in the cart, so the add-to-cart round-trip hides behind a spinner instead of a blank wait.
   Auto-dismissed if the add never lands. */
.bv-addons-overlay.bv-addons--loading .bv-addons > *:not(.bv-addons__close) { opacity: .15; pointer-events: none; }
.bv-addons-overlay.bv-addons--loading::before {
    content: ""; position: fixed; left: 50%; top: 46%; width: 44px; height: 44px;
    margin: -22px 0 0 -22px; border-radius: 50%;
    border: 3px solid rgba(232, 62, 116, 0.25); border-top-color: #E83E74;
    animation: bv-addons-spin 0.7s linear infinite; z-index: 100002; pointer-events: none;
}
.bv-addons-overlay.bv-addons--loading::after {
    content: "Adding your bouquet\2026"; position: fixed; left: 50%; top: 46%;
    transform: translate(-50%, 42px); background: #231f20; color: #fff;
    padding: 8px 16px; border-radius: 999px; font: 600 14px/1 'Inter', -apple-system, sans-serif;
    z-index: 100002; pointer-events: none; box-shadow: 0 8px 24px rgba(24, 27, 2, 0.28);
}
@keyframes bv-addons-spin { to { transform: rotate(360deg); } }

/* header */
.bv-addons__head { text-align: center; max-width: 760px; margin: 0 auto; }
.bv-addons__title {
    margin: 6px 0 8px; font-family: var(--bv-serif, Georgia, serif); font-weight: 600;
    font-size: clamp(40px, 5vw, 64px); line-height: 1.03; letter-spacing: -0.02em; color: var(--ad-text);
}
.bv-addons__sub { margin: 0; font-size: 18px; line-height: 1.4; color: var(--ad-muted); }
.bv-addons__optional { margin: 16px 0 0; display: inline-flex; align-items: center; gap: 8px; color: var(--ad-pink); font-size: 18px; font-weight: 500; }
.bv-addons__optional svg { fill: var(--ad-pink); }

/* "already in your cart" banner */
.bv-addons__order {
    margin: 26px 0 24px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 20px;
    border: 1px solid var(--ad-line); border-radius: 24px; padding: 18px 28px; background: #fff; box-sizing: border-box;
}
.bv-addons__order-media { width: 84px; height: 84px; flex: 0 0 auto; }
.bv-addons__order-media img { width: 100%; height: 100%; object-fit: contain; border-radius: 12px; display: block; }
.bv-addons__order-info { min-width: 0; }
.bv-addons__order-name { display: block; font-size: 22px; font-weight: 600; margin-bottom: 4px; color: var(--ad-text); }
.bv-addons__order-sub { display: block; color: var(--ad-muted); font-size: 17px; }
.bv-addons__order-step { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; color: var(--ad-pink); font-size: 18px; font-weight: 500; border-left: 1px solid var(--ad-line); padding-left: 28px; }

/* card grid */
.bv-addons__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
/* Carousel when >4 add-ons: horizontal scroll-snap row + side arrows (Tim 10:13) */
.bv-addons__carousel { position: relative; }
.bv-addons__carousel.is-carousel .bv-addons__grid { display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; -ms-overflow-style: none; }
.bv-addons__carousel.is-carousel .bv-addons__grid::-webkit-scrollbar { display: none; }
/* Divisor slightly >4 so ~4 cards show with a sliver of the next peeking in,
   signalling the row scrolls (Tim 10:13). */
.bv-addons__carousel.is-carousel .bv-addons__card { flex: 0 0 calc((100% - 54px) / 4.3); scroll-snap-align: start; }
.bv-addons__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border-radius: 50%; background: #fff; border: 1px solid var(--ad-line); box-shadow: 0 6px 18px rgba(34,22,30,.14); color: #40373c; display: grid; place-items: center; cursor: pointer; z-index: 3; }
.bv-addons__nav:hover { color: var(--ad-pink); }
.bv-addons__nav--prev { left: -16px; }
.bv-addons__nav--next { right: -16px; }
.bv-addons__card { position: relative; display: flex; flex-direction: column; border: 1px solid var(--ad-line); border-radius: 24px; background: #fff; padding: 18px 18px 16px; min-height: 470px; box-sizing: border-box; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }

/* Selected state, replacing the button that used to announce it: the card takes a pink
   ground and the empty ring in its corner fills in with a tick. State you glance at
   rather than state you read. */
.bv-addons__card.is-selected { background: var(--ad-sel-soft, #fff1f6); border-color: var(--ad-sel-edge); }
.bv-addons__tick { position: absolute; top: 14px; right: 14px; z-index: 2; width: 30px; height: 30px;
  border-radius: 50%; border: 2px solid #e6d9df; background: #fff; color: transparent;
  display: grid; place-items: center;
  transition: background .16s ease, border-color .16s ease, color .16s ease; }
.bv-addons__card.is-selected .bv-addons__tick { background: var(--ad-sel); border-color: var(--ad-sel); color: #fff; }
/* Sympathy/funeral: "added" is purple on EVERY tile, not just the card — the same purple
   as the funeral exit offer, so the surfaces a grieving buyer sees agree with each other.
   A lilac card beside a hot-pink quantity pill read as two different added states. Only
   the selection tokens move; prices, badges and the CTA keep the house pink. */
.bv-addons--tribute {
    --ad-sel: #6B2F83;
    --ad-sel-soft: #F7F0F8;
    --ad-sel-edge: #d9bfe4;
    --ad-sel-edge-strong: #b58fc6;
}
.bv-addons--tribute .bv-addons__size.is-active { border-color: var(--ad-sel); }
.bv-addons--tribute .bv-addons__step, .bv-addons--tribute .bv-addons__step-count { color: var(--ad-sel); }
/* Reserve two lines for the add-on name so the chooser below it starts at the same height on
   every tribute card. "Premium Vase Upgrade" and "Custom Sympathy Ribbon" wrap to two lines,
   "Memorial Candle" does not — measured on dev, that lifted its size pills to 303 while the
   other two sat at 330, one whole line out of step (owner 2026-09-10). Price and stepper were
   already pinned to the foot, so the pill row was the only thing left drifting.
   `lh` rather than a pixel value: the name is 24px/27.6px here and smaller in the phone block
   below, and a hardcoded height would be wrong in one of the two.
   The sympathy-card TILE is excluded — it carries a description instead of a price and a
   stepper, so it never lined up with the add-on cards and does not need to. */
.bv-addons--tribute .bv-addons__card:not([data-bv-symcard]) .bv-addons__card-name { min-height: 2lh; }
/* And the sympathy-card tile joins that line. It is the one card carrying a description instead
   of a price, so its stack — one-line name, 8px, two lines of description — runs 9px taller than
   the two-line name on the cards beside it, and its tier pills sat at 339 against their 330
   (measured on dev). The gap above the pills absorbs the difference rather than the description
   being squeezed: the copy is owner-managed and must stay readable at two lines. */
.bv-addons--tribute .bv-addons__card[data-bv-symcard] .bv-addons__sizes { margin-top: 5px; }
/* The card tile itself also states its price in the sympathy purple. */
.bv-symcard { --ad-pink: #6B2F83; --ad-pink-soft: #F7F0F8; }
.bv-symcard .bv-addons__card-price { color: #57286D; }

/* Nothing to quote before a style has been picked. */
.bv-addons__card-price[hidden] { display: none; }
/* Pin the stepper to the foot so cards line up whether or not they carry a dropdown. */
.bv-addons .bv-addons__stepper { margin-top: auto; }
/* Add-on card hover lift. Every product page lifts on hover; ONLY the custom-product
   PDP (body.bv-product--custom) lifts when the card has BOTH a description AND a
   non-empty price — price-only / description-only get no lift there (owner rule 2026-07-24). */
body:not(.bv-product--custom) .bv-addons__card:hover,
body.bv-product--custom .bv-addons__card:has(.bv-addons__card-desc):has(.bv-addons__card-price:not(:empty)):hover { transform: translateY(-4px); box-shadow: 0 16px 36px rgba(232, 62, 120, .14); border-color: #f4b8ce; }
/* .is-busy is now only an in-flight-sync marker for the optimistic add-on drain (JS) — it must
   NOT dim or block the card, so the optimistic count shows instantly and rapid +/- clicks still
   register (they coalesce). Kept as a hook in case a subtle syncing affordance is wanted later. */
.bv-addons__card.is-busy { }

/* badge */
.bv-addons__badge { position: absolute; top: 14px; left: 14px; z-index: 2; display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; font-size: 14px; font-weight: 700; padding: 7px 12px; white-space: nowrap; }
.bv-addons__badge--popular { background: var(--ad-pink); color: #fff; }
.bv-addons__badge--best { background: #fff1f6; border: 1px solid #f6afc9; color: var(--ad-pink); }

/* product image */
.bv-addons__media { height: 220px; display: grid; place-items: center; margin-top: 4px; }
.bv-addons__media img { max-width: 95%; max-height: 210px; width: auto; height: auto; object-fit: contain; }

.bv-addons__card-name { font-family: var(--bv-serif, Georgia, serif); font-size: 24px; line-height: 1.15; font-weight: 600; text-align: center; margin: 10px 0 8px; color: var(--ad-text); }
/* 12px, and the reserve under it recomputed to match. The old `min-height: 44px` was "two lines
   at 16px" written as a constant; left alone at the smaller size it became a 44px floor under a
   36px block, holding the sympathy card's pills 12px lower than they needed to be (owner
   2026-09-10). `2lh` keeps the original intent — always room for two lines — and stays correct
   at whatever size the block is rendered, including the phone breakpoint below. */
.bv-addons__card-desc { text-align: center; color: var(--ad-muted); font-size: 12px; min-height: 2lh; }

/* segmented size selector */
/* One segmented pill with internal separators (Tim's .sizes), not separate pills */
.bv-addons__sizes { margin: 14px auto 0; align-self: center; display: inline-flex; flex-wrap: wrap; border: 1px solid #dbcfc9; border-radius: 12px; overflow: hidden; }
/* Constant font-weight on the size pills: bolding only the active one widened
   it, which made the pill row wrap to a second line and jump the card content
   (QA: "when user chooses size of addons user can see jump"). Active state is
   carried by background + color instead. */
.bv-addons .bv-addons__size { border: 0; border-right: 1px solid #e9dfda; border-radius: 0; background: #fff; padding: 10px 12px; font: inherit; font-size: 14px; font-weight: 600; color: #40373c; cursor: pointer; line-height: 1.1; }
.bv-addons .bv-addons__size:last-child { border-right: 0; }
.bv-addons .bv-addons__size.is-active { background: var(--ad-sel-soft); color: var(--ad-sel); }
.bv-addons__variant[hidden] { display: none; }
.bv-addons__variant--select { display: block; margin: 14px auto 0; max-width: 220px; position: relative; }
.bv-addons__variant--select .bv-addons__variant-select {
    -webkit-appearance: none; appearance: none; width: 100%;
    padding: 8px 38px 11px 14px; border: 1px solid #dbcfc9; border-radius: 12px;
    background: #fff; font: inherit; font-size: 15px; color: #40373c; cursor: pointer; text-align: center;
}

.bv-addons__variant--select::after {
    content: ""; position: absolute; right: 16px; top: 50%; width: 9px; height: 9px; margin-top: -6px;
    border-right: 2px solid var(--ad-pink); border-bottom: 2px solid var(--ad-pink); transform: rotate(45deg); pointer-events: none;
}
.bv-addons__variant--select .bv-addons__variant-select:focus { outline: none; border-color: var(--ad-pink); }

.bv-addons__card-price { text-align: center; font-size: 18px; font-weight: 700; color: var(--ad-pink); margin: 14px 0; }
.bv-addons__card-price .amount, .bv-addons__card-price ins .amount { color: var(--ad-pink); text-decoration: none; font-weight: 700; }
.bv-addons__card-price del { display: none; }
/* Sympathy/funeral: a SELECTED tile states its price in the same purple as everything else
   about the selected state — the tick, the size border, the stepper — which is also the
   colour the sympathy card tile itself shows (owner 2026-09-10). Before this the card turned
   lilac while its price stayed house pink, so one tile announced "added" in two colours.
   `.amount` and `ins .amount` are listed explicitly and not left to inherit: the base rule
   `.bv-addons__card-price .amount` two lines up carries the same specificity as the
   `.bv-symcard` colour above it and sits LATER in the file, so the inner span repaints
   itself from --ad-pink unless it is named here too. That is exactly why the sympathy card's
   own `color: #57286D` never actually shows: --ad-pink is locally #6B2F83 on .bv-symcard,
   and the span wins. var(--ad-sel) is that same #6B2F83, so selection and card agree. */
.bv-addons--tribute .bv-addons__card.is-selected .bv-addons__card-price,
.bv-addons--tribute .bv-addons__card.is-selected .bv-addons__card-price .amount,
.bv-addons--tribute .bv-addons__card.is-selected .bv-addons__card-price ins .amount { color: var(--ad-sel); }

/* add button + stepper */
/* CTA wrapper pins to the card bottom; the qty pill stacks ABOVE the button */
.bv-addons__cta { margin-top: auto; display: flex; flex-direction: column; gap: 8px; }
.bv-addons__add, .bv-addons__stepper { width: 100%; border-radius: 14px; box-sizing: border-box; }
.bv-addons .bv-addons__add { display: flex; align-items: center; justify-content: center; gap: 6px; border: 2px solid #ef7aa6; background: #fff; color: var(--ad-pink); padding: 14px 16px; font-family: inherit; font-size: 18px; font-weight: 600; cursor: pointer; }
.bv-addons .bv-addons__add:hover { background: var(--ad-pink-soft); }
/* Added state = green button with the tick */
.bv-addons .bv-addons__add.is-added { background: #0f8b59; color: #fff; border-color: #0f8b59; }
.bv-addons .bv-addons__add.is-added:hover { background: #0c754b; }
.bv-addons .bv-addons__stepper { display: flex; align-items: center; justify-content: space-between; padding: 8px 16px; border: 2px solid var(--ad-sel-edge-strong); background: var(--ad-sel-soft); }
.bv-addons__stepper[hidden] { display: none; }
/* One price line across the whole row. Cards differ above it — a description here, a
   dropdown there, nothing at all on a simple add-on — so the prices sat at four different
   heights (measured 303 / 354 / 405). Anchoring the price to the FOOT instead of letting it
   follow the content puts every one of them on the same line, and the slack collects as air
   under the name where it reads as layout rather than as a hole. The two cookie tiles carry
   no stepper, so they reserve its row to land on the same line. */
@media (min-width: 601px) {
    .bv-addons { --ad-qty-h: 60px; }   /* the stepper's height — also what the tiles reserve */
    .bv-addons .bv-addons__stepper { min-height: var(--ad-qty-h); }
    .bv-addons__card-price { margin: auto 0 14px; }
    .bv-addons__cta { margin-top: 0; }
    /* Nothing chosen yet → no price to sit above; the stepper keeps the foot on its own. */
    .bv-addons__card-price[hidden] + .bv-addons__cta { margin-top: auto; }
    .bv-gcard .bv-addons__card-price { margin-bottom: calc(var(--ad-qty-h) + 14px); }
}
.bv-addons__step { display: inline-flex; padding: 0; border: 0; background: none; color: var(--ad-pink); cursor: pointer; line-height: 0; }
.bv-addons__step-count { font-weight: 800; font-size: 17px; color: var(--ad-pink); font-variant-numeric: tabular-nums;
  /* It is an input now (the quantity is typable), so strip the field down to the bare
     number it used to be and only show an edge once it has focus. */
  width: 4ch; min-width: 0; padding: 2px 0; border-radius: 8px;
  background: transparent; font-family: inherit; line-height: 1.1; text-align: center; }
/* No frame around the number. Needs the extra class to outrank the theme's own
   input border (a 1px #d2d6dc that beats a single-class selector). */
.bv-addons .bv-addons__step-count { border: unset; }
.bv-addons__step-count:focus { outline: none; background: #fff; }
.bv-addons__step-count::-webkit-outer-spin-button,
.bv-addons__step-count::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* bottom bar */
.bv-addons__summary { margin-top: 22px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; border: 1px solid var(--ad-line); border-radius: 24px; padding: 20px 24px; background: linear-gradient(180deg, #fffdfd, #fff8fa); box-sizing: border-box; }
.bv-addons__summary-icon { width: 54px; height: 54px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--ad-pink-soft); color: var(--ad-pink); flex: 0 0 auto; }
.bv-addons__summary-info { display: flex; flex-direction: column; gap: 6px; }
.bv-addons__summary-count { font-size: 16px; color: #4d4449; }
.bv-addons__summary-total { font-size: 18px; font-weight: 700; }
.bv-addons__summary-total .amount { color: var(--ad-pink); }
.bv-addons__skip { margin-left: auto; border: 0; background: none; color: #6e646a; text-decoration: underline; text-underline-offset: 4px; font: inherit; font-size: 18px; white-space: nowrap; cursor: pointer; }
.bv-addons__skip:hover { color: var(--ad-text); }
.bv-addons .bv-addons__done { border: 0; border-radius: 16px; padding: 20px 36px; min-width: 340px; font-family: inherit; font-size: 18px; font-weight: 700; color: #fff; cursor: pointer; background: linear-gradient(180deg, var(--ad-cta-a), var(--ad-cta-b)); box-shadow: 0 12px 26px rgba(232, 62, 116, .24); }
.bv-addons .bv-addons__done:hover { filter: brightness(.97); }

/* foot note */
.bv-addons__foot-note { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 14px 0 0; color: #877d84; font-size: 16px; text-align: center; }
.bv-addons__foot-note svg { color: #877d84; flex: 0 0 auto; }

/* responsive */
@media (max-width: 1100px) {
    .bv-addons { padding: 28px 24px 20px; }
    .bv-addons__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .bv-addons__carousel.is-carousel .bv-addons__card { flex-basis: calc((100% - 18px) / 2.2); }
    .bv-addons__card { min-height: 0; }
    .bv-addons__summary { flex-wrap: wrap; }
    .bv-addons__skip { margin-left: 0; }
    .bv-addons__done { min-width: 0; flex: 1 1 100%; }
}
@media (max-width: 720px) {
    .bv-addons-overlay { padding: 0; }
    .bv-addons { border-radius: 0; min-height: 100%; padding: 24px 16px 24px; }
    .bv-addons__title { font-size: 34px; }
    .bv-addons__order { grid-template-columns: auto 1fr; }
    .bv-addons__order-step { grid-column: 1 / -1; border-left: 0; padding-left: 0; }
    .bv-addons__grid { grid-template-columns: 1fr; }
    .bv-addons__carousel.is-carousel .bv-addons__card { flex-basis: 82%; }
    .bv-addons__summary { gap: 14px; }
    .bv-addons__skip { width: 100%; text-align: center; order: 3; }
    .bv-addons__done { order: 2; }
}

/* ---------------------------------------------------------------------------
   Mobile: the popup is a bottom sheet (Tim's gift_extras_mobile_v3, 2026-09-08).
   The carousel of tall cards becomes a vertical list of rows — thumbnail, text,
   one round control — with each card's own controls underneath and the totals
   pinned to the bottom of the sheet. Everything colours through the --ad-*
   tokens, so the sympathy/funeral popup arrives in its own palette instead of
   the celebration pink; that override is scoped here because it is the mobile
   sheet the owner asked for in those colours, and desktop is unchanged.
   --------------------------------------------------------------------------- */
@media (max-width: 600px) {
    .bv-addons--tribute {
        --ad-pink: #6B2F83;
        --ad-pink-soft: #F7F0F8;
        --ad-cta-a: #7C3D93;
        --ad-cta-b: #57286D;
    }

    /* the sheet itself scrolls, so the grabber and the footer can stick to it */
    .bv-addons-overlay { align-items: flex-end; padding: 0; overflow: hidden; }
    .bv-addons {
        /* 90vh first: dvh is Safari 15.4 / Chrome 108 and up, and an older phone drops the
           declaration it cannot parse. Without a fallback the sheet is left with no height at
           all — the overlay is align-items:flex-end, so it collapses to nothing and the popup
           simply does not appear. Reported as "doesn't work on some phones", 2026-09-23. */
        width: 100%; height: 90vh; height: 90dvh; min-height: 0; padding: 0;
        border-radius: 24px 24px 0 0;
        overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
    .bv-addons::before {
        content: ""; display: block; position: sticky; top: 0; z-index: 6;
        width: 44px; height: 5px; margin: 8px auto 0; border-radius: 999px; background: #d8d3d5;
    }
    .bv-addons__close { top: 10px; right: 12px; width: 40px; height: 40px; background: rgba(255, 255, 255, .92); }

    .bv-addons__head { text-align: left; max-width: none; padding: 12px 14px 8px; }
    .bv-addons__title { font-size: 27px; margin: 0 42px 7px 0; }
    .bv-addons__sub { font-size: 14px; line-height: 1.35; margin: 0; }
    .bv-addons__optional { font-size: 13px; margin-top: 10px; }

    .bv-addons__order { margin: 10px 14px 6px; padding: 9px 10px; border-radius: 16px; gap: 10px; }
    .bv-addons__order img { width: 48px; height: 48px; }
    /* The rule above shrinks the photo to 48px while its box stays 84x84, so the thumb
       sat in the top-left corner of an empty square. Centre it and nudge it off the
       card edge (owner 2026-09-24). */
    .bv-addons__order-media { display: flex; align-items: center; position: relative; left: 5px; }
    .bv-addons__order-step { font-size: 13px; }

    /* vertical list, no carousel */
    .bv-addons__carousel { padding: 8px 12px 16px; }
    .bv-addons__carousel.is-carousel .bv-addons__grid,
    .bv-addons__grid { display: block; overflow: visible; }
    .bv-addons__carousel.is-carousel .bv-addons__card,
    .bv-addons__card { flex-basis: auto; width: auto; margin: 0 0 10px; }
    .bv-addons__nav, .bv-addons__dots { display: none; }

    /* one card = one row: thumb | name/desc/price | round control, controls beneath */
    .bv-addons__card {
        display: grid; padding: 10px; border-radius: 18px; min-height: 0;
        grid-template-columns: 70px minmax(0, 1fr) 46px;
        column-gap: 9px;
        grid-template-areas:
            "badge badge badge"
            "media name  tick"
            "media desc  tick"
            "media price tick"
            "opts  opts  opts"
            "qty   qty   qty";
    }
    .bv-addons__card.is-selected { background: linear-gradient(180deg, #fff, var(--ad-sel-soft)); border-color: var(--ad-sel-edge); }
    .bv-addons__badge { grid-area: badge; position: static; justify-self: start; margin-bottom: 7px; }
    .bv-addons__media { grid-area: media; align-self: center; width: 68px; height: 68px; margin: 0; }
    .bv-addons__media img { width: 68px; height: 68px; object-fit: contain; }
    .bv-addons__card-name { grid-area: name; font-size: 18px; line-height: 1.08; text-align: left; margin: 0; }
    .bv-addons__card-desc { grid-area: desc; font-size: 12px; line-height: 1.25; text-align: left; margin: 3px 0 0; }
    .bv-addons__card-price { grid-area: price; font-size: 17px; font-weight: 900; text-align: left; margin: 5px 0 0; }
    .bv-addons__sizes, .bv-addons__variant { grid-area: opts; margin-top: 10px; }
    .bv-addons__cta { grid-area: qty; margin-top: 10px; }

    /* the status dot becomes the mockup's round control */
    .bv-addons__tick {
        grid-area: tick; position: static; align-self: center; justify-self: end;
        width: 44px; height: 44px; border: 0;
    }
    .bv-addons__card:not([data-bv-gcard]):not([data-bv-symcard]) .bv-addons__tick {
        background: var(--ad-sel); color: #fff; cursor: pointer;
        box-shadow: 0 9px 22px rgba(35, 18, 25, .18);
    }
    .bv-addons__card:not([data-bv-gcard]):not([data-bv-symcard]) .bv-addons__tick svg { display: none; }
    .bv-addons__card:not([data-bv-gcard]):not([data-bv-symcard]) .bv-addons__tick::before {
        content: "+"; font-size: 29px; font-weight: 400; line-height: 1; transform: translateY(-1px);
    }
    .bv-addons__card:not([data-bv-gcard]):not([data-bv-symcard]).is-selected .bv-addons__tick::before {
        content: "\2713"; font-size: 21px; font-weight: 800; transform: none;
    }

    /* No "+" before the style is chosen — see syncChoiceState() in bloom-v2-addons.js.
       On Mylar Balloons and Add More Roses the corner control offers to add something the
       buyer has not picked yet; all it could do is bounce them into the dropdown. The column
       goes with it rather than just the button, or the tile keeps a 46px hole on the right
       and the name has nowhere to grow into. */
    .bv-addons__card:not([data-bv-gcard]):not([data-bv-symcard]).is-unchosen {
        grid-template-columns: 70px minmax(0, 1fr);
        grid-template-areas:
            "badge badge"
            "media name"
            "media desc"
            "media price"
            "opts  opts"
            "qty   qty";
    }
    .bv-addons__card:not([data-bv-gcard]):not([data-bv-symcard]).is-unchosen .bv-addons__tick { display: none; }

    .bv-addons .bv-addons__sizes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; border-radius: 11px; overflow: hidden; }
    .bv-addons .bv-addons__size { height: 42px; font-size: 12px; padding: 0 5px; }
    .bv-addons__variant--select .bv-addons__variant-select { height: 44px; border-radius: 11px; font-size: 13px; }

    /* quantity is a pill on the right, as in the mockup */
    .bv-addons .bv-addons__stepper {
        width: 132px; height: auto; margin: 0 auto; padding: 0;
        border-width: 1px; border-radius: 999px;
        display: grid; grid-template-columns: 42px 48px 42px; align-items: center;
    }
    .bv-addons__step { justify-content: center; }
    .bv-addons__step-count { width: auto; font-size: 14px; }

    /* totals pinned to the bottom of the sheet */
    .bv-addons__summary {
        position: sticky; bottom: 0; z-index: 4; margin: 0; border: 0; border-radius: 0;
        border-top: 1px solid #efdfe6; gap: 8px 10px;
        padding: 10px 12px max(10px, env(safe-area-inset-bottom));
        background: rgba(255, 250, 252, .97); backdrop-filter: blur(10px);
        box-shadow: 0 -10px 24px rgba(65, 28, 42, .08);
    }
    .bv-addons__summary-icon { display: none; }
    .bv-addons__summary-info { flex: 1 1 auto; gap: 2px; }
    .bv-addons__summary-count { font-size: 12px; }
    .bv-addons__summary-total { font-size: 16px; }
    .bv-addons .bv-addons__done { order: 2; flex: 1 1 100%; min-width: 0; height: 50px; padding: 0 16px; border-radius: 14px; font-size: 16px; background: linear-gradient(90deg, var(--ad-cta-a), var(--ad-cta-b)); }
    .bv-addons__skip { order: 3; width: 100%; text-align: center; font-size: 12px; }
    .bv-addons__foot-note { font-size: 10.5px; margin-top: 4px; }
}
@media (max-width: 360px) {
    .bv-addons__card { grid-template-columns: 62px minmax(0, 1fr) 42px; column-gap: 8px; }
    .bv-addons__media, .bv-addons__media img { width: 60px; height: 60px; }
    .bv-addons__tick { width: 40px; height: 40px; }
    .bv-addons__card:not([data-bv-gcard]):not([data-bv-symcard]) .bv-addons__tick::before { font-size: 26px; }
    .bv-addons__card-name { font-size: 17px; }
}

.co-zip__icon circle{
    display:none;
}

/* =====================================================================
 * My Account v2 — full account area + modals (Figma account batch).
 * Scoped under .bv-page--account and the shared .bv-modal kit.
 * ===================================================================== */

.bv-page--account main { background: #fff; }
.bv-link { background: none; border: 0; padding: 0; color: #C21E5A; font: inherit; cursor: pointer; text-decoration: underline; }

/* ---- Sidebar ---- */
.bv-page--account .bv-acc-side__link { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: var(--bv-radius-md); color: var(--bv-text); font-weight: 600; font-size: 15px; text-decoration: none; transition: background .15s ease; }
.bv-page--account .bv-acc-side__link:hover { background: var(--bv-bg-soft); }
.bv-page--account .bv-acc-side__link--active { background: var(--bv-pink-50); color: #C21E5A; }
.bv-acc-side__icon { width: 22px; height: 22px; display: inline-flex; flex: 0 0 auto; }
.bv-acc-side__icon svg { width: 22px; height: 22px; }
.bv-acc-side__label { flex: 1 1 auto; }
.bv-acc-side__count { background: var(--bv-pink-100); color: #C21E5A; font-size: 12px; font-weight: 700; border-radius: 999px; padding: 1px 8px; }

/* ---- Headings ---- */
.bv-acc-greeting__hi { font-family: var(--bv-serif); font-size: clamp(30px, 3.4vw, 44px); color: var(--bv-text); margin: 0 0 24px; font-weight: 400; }
.bv-acc-h1count { color: var(--bv-text-muted); font-size: .6em; }
.bv-acc-greeting__sub { color: var(--bv-text-muted); font-size: 15px; }
.bv-acc-again { margin-top: 48px; }
.bv-acc-again__title { font-family: var(--bv-serif); font-size: clamp(26px, 3vw, 38px); font-weight: 400; margin: 0 0 20px; }

/* ---- Dashboard ---- */
.bv-acc-dash { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.bv-page--account .bv-acc-block { background: #fff; border: 1px solid var(--bv-border); border-radius: var(--bv-radius-lg); padding: 24px; }
.bv-acc-block__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.bv-acc-block__title { font-size: 18px; font-weight: 700; margin: 0; display: flex; align-items: center; gap: 8px; }
.bv-acc-block__count { font-size: 12px; font-weight: 700; border-radius: 999px; padding: 1px 9px; background: var(--bv-bg-soft); color: var(--bv-text-muted); }
.bv-acc-block__count--green { background: #E5F6EC; color: #1F9D55; }
.bv-acc-block__count--amber { background: #FFF3D6; color: #C98A00; }
.bv-acc-block__action { background: none; border: 0; color: #C21E5A; font-weight: 600; font-size: 14px; cursor: pointer; text-decoration: none; }

.bv-acc-up { display: flex; gap: 14px; padding: 16px 0; border-top: 1px solid var(--bv-border); }
.bv-acc-up:first-of-type { border-top: 0; }
.bv-acc-up__img { width: 64px; height: 64px; border-radius: var(--bv-radius-md); overflow: hidden; flex: 0 0 auto; }
.bv-acc-up__img img { width: 100%; height: 100%; object-fit: cover; }
.bv-acc-up__title { font-size: 15px; font-weight: 700; margin: 0 0 2px; }
.bv-acc-up__meta { font-size: 13px; color: var(--bv-text-muted); }
.bv-acc-up__status { display: inline-block; margin: 6px 0; font-size: 12px; font-weight: 600; color: #1F9D55; }
.bv-acc-up__status--cancelled, .bv-acc-up__status--refunded { color: var(--bv-text-muted); }
.bv-acc-up__link { display: block; font-size: 13px; font-weight: 600; color: #C21E5A; text-decoration: none; }

.bv-acc-rem { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-top: 1px solid var(--bv-border); }
.bv-acc-rem:first-of-type { border-top: 0; }
.bv-acc-rem__num { width: 26px; height: 26px; border-radius: 999px; background: var(--bv-pink-50); color: #C21E5A; font-weight: 700; font-size: 13px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.bv-acc-rem__body { flex: 1 1 auto; display: flex; flex-direction: column; }
.bv-acc-rem__name { font-weight: 700; font-size: 14px; }
.bv-acc-rem__occ { font-size: 13px; color: var(--bv-text-muted); }
.bv-acc-rem__when { font-size: 12px; font-weight: 600; color: #C98A00; background: #FFF3D6; border-radius: 999px; padding: 2px 10px; }
.bv-acc-rem__edit { background: none; border: 0; color: #C21E5A; font-weight: 600; font-size: 13px; cursor: pointer; }

/* ---- Orders ---- */
.bv-orders { display: flex; flex-direction: column; gap: 12px; }
.bv-orders__bar { display: flex; gap: 12px; align-items: center; margin-bottom: 4px; }
.bv-orders__filter { height: 44px; border: 1px solid var(--bv-border-dark); border-radius: var(--bv-radius-md); padding: 0 16px; font: inherit; background: #fff; }
.bv-orders__search { flex: 1 1 auto; display: flex; align-items: center; gap: 8px; height: 44px; border: 1px solid var(--bv-border-dark); border-radius: var(--bv-radius-md); padding: 0 14px; }
.bv-orders__search svg { width: 18px; height: 18px; color: var(--bv-text-muted); flex: 0 0 auto; }
.bv-orders__search input { border: 0; outline: 0; flex: 1 1 auto; font: inherit; background: none; }
.bv-order { border: 1px solid var(--bv-border); border-radius: var(--bv-radius-lg); overflow: hidden; }
.bv-order__head { width: 100%; display: grid; grid-template-columns: 1.6fr 1.4fr auto auto 28px; gap: 14px; align-items: center; padding: 18px 22px; background: #fff; border: 0; cursor: pointer; text-align: left; font: inherit; }
.bv-order__name { font-weight: 700; font-size: 15px; }
.bv-order__recip { color: var(--bv-text-muted); font-size: 14px; }
.bv-order__tag { justify-self: start; font-size: 12px; font-weight: 700; border-radius: 999px; padding: 4px 12px; background: var(--bv-bg-soft); color: var(--bv-text-muted); white-space: nowrap; }
.bv-order__tag--processing, .bv-order__tag--on-hold, .bv-order__tag--pending, .bv-order__tag--florist-confirmed { background: #FFF3D6; color: #C98A00; }
.bv-order__tag--completed { background: #E5F6EC; color: #1F9D55; }
.bv-order__tag--cancelled, .bv-order__tag--failed { background: #FCE8E8; color: #C0392B; }
.bv-order__tag--refunded { background: #EDE7FF; color: #6C4BD8; }
.bv-order__price { font-weight: 700; }
.bv-order__chev svg { width: 20px; height: 20px; color: var(--bv-text-muted); transition: transform .2s ease; }
.bv-order.is-open .bv-order__chev svg { transform: rotate(180deg); }
.bv-order__exp { display: none; gap: 22px; padding: 0 22px 22px; }
.bv-order.is-open .bv-order__exp { display: flex; }
.bv-order__img { width: 132px; height: 132px; border-radius: var(--bv-radius-md); overflow: hidden; flex: 0 0 auto; }
.bv-order__img img { width: 100%; height: 100%; object-fit: cover; }
.bv-order__detail { flex: 1 1 auto; }
.bv-order__dname { font-size: 17px; font-weight: 700; margin: 0 0 12px; }
.bv-order__field { display: grid; grid-template-columns: 110px 1fr; gap: 12px; padding: 5px 0; font-size: 14px; }
.bv-order__field span { color: var(--bv-text-muted); }
.bv-order__field strong { font-weight: 600; }
.bv-order__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.bv-orders__empty { color: var(--bv-text-muted); padding: 24px 0; }

/* ---- Buttons (extra variants) ---- */
.bv-page--account .bv-btn, .bv-modal .bv-btn { display: inline-flex; align-items: center; justify-content: center; height: 48px; padding: 0 24px; border-radius: var(--bv-radius-md); font-weight: 600; font-size: 15px; cursor: pointer; text-decoration: none; border: 1px solid transparent; transition: background .15s ease, color .15s ease; }
.bv-page--account .bv-btn--primary, .bv-modal .bv-btn--primary { background: var(--bv-pink); color: #fff; }
.bv-page--account .bv-btn--primary:hover, .bv-modal .bv-btn--primary:hover { background: var(--bv-pink-hover); }
.bv-page--account .bv-btn--outline, .bv-modal .bv-btn--outline { background: #fff; color: var(--bv-text); border-color: var(--bv-border-dark); }
.bv-page--account .bv-btn--outline:hover, .bv-modal .bv-btn--outline:hover { border-color: var(--bv-text); }
.bv-btn--danger { background: #C0392B; color: #fff; }
.bv-btn--danger:hover { background: #A93226; }
.bv-btn--danger:disabled { opacity: .45; cursor: not-allowed; }
.bv-btn--danger-ghost { background: #fff; color: #C0392B; border: 1px solid #E7B7B1; }
.bv-btn--danger-ghost:hover { background: #FCE8E8; }

/* ---- Addresses ---- */
.bv-addr-list { display: flex; flex-direction: column; gap: 16px; }
.bv-addr-card { border: 1px solid var(--bv-border-dark); border-radius: var(--bv-radius-lg); padding: 22px; position: relative; }
.bv-addr-card--default { border-color: var(--bv-pink); background: var(--bv-pink-soft); }
.bv-addr-card__head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.bv-addr-card__label { font-weight: 700; font-size: 16px; }
.bv-addr-card__badge { font-size: 11px; font-weight: 700; color: #C21E5A; background: var(--bv-pink-100); border-radius: 999px; padding: 2px 10px; }
.bv-addr-card__tools { margin-left: auto; }
.bv-addr-edit { background: none; border: 0; color: var(--bv-text-muted); cursor: pointer; padding: 4px; }
.bv-addr-edit svg { width: 18px; height: 18px; }
.bv-addr-card__lines { font-size: 14px; color: var(--bv-text-2); line-height: 1.7; }
.bv-addr-card__name { font-weight: 600; color: var(--bv-text); }
.bv-addr-card__foot { display: flex; gap: 18px; margin-top: 14px; }
.bv-addr-default, .bv-addr-del { background: none; border: 0; font-weight: 600; font-size: 14px; cursor: pointer; padding: 0; }
.bv-addr-default { color: var(--bv-text); }
.bv-addr-del { color: #C21E5A; }
.bv-addr-add { display: inline-block; margin-top: 18px; color: #C21E5A; font-weight: 600; background: none; border: 0; cursor: pointer; padding: 0; }
.bv-acc-empty { text-align: center; padding: 56px 24px; border: 1px dashed var(--bv-border-dark); border-radius: var(--bv-radius-lg); }
.bv-acc-empty__title { font-size: 20px; font-weight: 700; margin: 0 0 8px; }
.bv-acc-empty__sub { color: var(--bv-text-muted); max-width: 420px; margin: 0 auto 20px !important; }

/* ---- Settings ---- */
.bv-set { margin-bottom: 36px; }
.bv-set__title { font-size: 20px; font-weight: 700; margin: 0 0 16px; }
.bv-set-profile__actions { display: flex; gap: 12px; margin-top: 16px; }
.bv-field__link { background: none; border: 0; color: #C21E5A; font-weight: 600; font-size: 13px; cursor: pointer; margin-top: 6px; align-self: flex-start; }
.bv-set-sec { display: flex; flex-direction: column; gap: 14px; }
.bv-set-sec__row { display: flex; align-items: center; gap: 16px; border: 1px solid var(--bv-border); border-radius: var(--bv-radius-lg); padding: 18px 22px; }
.bv-set-sec__row.is-connected { border-color: var(--bv-pink-100); background: var(--bv-pink-soft); }
.bv-set-sec__icon { width: 36px; height: 36px; flex: 0 0 auto; display: inline-flex; }
.bv-set-sec__icon svg { width: 36px; height: 36px; }
.bv-set-sec__body { flex: 1 1 auto; }
.bv-set-sec__name { font-weight: 700; font-size: 15px; display: flex; align-items: center; gap: 8px; }
.bv-set-sec__chip { font-size: 11px; font-weight: 700; color: #1F9D55; background: #E5F6EC; border-radius: 999px; padding: 1px 9px; }
.bv-set-sec__meta { font-size: 14px; color: var(--bv-text-2); margin-top: 2px; }
.bv-set-sec__desc { font-size: 13px; color: var(--bv-text-muted); margin-top: 2px; }
.bv-set-notify { display: flex; flex-direction: column; gap: 0; }
.bv-set-notify__row { display: flex; align-items: center; gap: 20px; padding: 18px 0; border-top: 1px solid var(--bv-border); }
.bv-set-notify__row:first-child { border-top: 0; }
.bv-set-notify__body { flex: 1 1 auto; }
.bv-set-notify__name { font-weight: 700; font-size: 15px; }
.bv-set-notify__desc { font-size: 13px; color: var(--bv-text-muted); margin-top: 2px; }
.bv-set-notify__channels { display: flex; gap: 24px; }
.bv-set-notify__ch { display: flex; align-items: center; gap: 8px; }
.bv-set-notify__chlabel { font-size: 13px; color: var(--bv-text-muted); }
.bv-set-signedin, .bv-set-delete { display: flex; align-items: center; justify-content: space-between; gap: 20px; border: 1px solid var(--bv-border); border-radius: var(--bv-radius-lg); padding: 20px 24px; }
.bv-set-delete { border-color: #F0D6D2; background: #FFF8F7; }
.bv-set-signedin__title, .bv-set-delete__title { font-weight: 700; font-size: 15px; }
.bv-set-signedin__meta, .bv-set-delete__meta { font-size: 13px; color: var(--bv-text-muted); margin-top: 2px; max-width: 560px; }

/* ---- Wishlist ---- */
.bv-wish__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.bv-wish__selectall { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; cursor: pointer; }
.bv-wish__selectall input { accent-color: var(--bv-pink); width: 16px; height: 16px; }
.bv-wish__bulk { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; padding: 14px 18px; background: var(--bv-pink-soft); border: 1px solid var(--bv-pink-100); border-radius: var(--bv-radius-md); }
.bv-wish__count { font-weight: 700; margin-right: auto; }
.bv-wish-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.bv-wish-card { position: relative; border: 1px solid var(--bv-border); border-radius: var(--bv-radius-lg); overflow: hidden; }
.bv-wish-card__check { position: absolute; top: 12px; left: 12px; z-index: 2; background: #fff; border-radius: 6px; padding: 3px; display: inline-flex; box-shadow: 0 1px 4px rgba(0,0,0,.12); }
.bv-wish-card__check input { accent-color: var(--bv-pink); width: 16px; height: 16px; margin: 0; }
.bv-wish-card__heart { position: absolute; top: 12px; right: 12px; z-index: 2; background: #fff; border: 0; border-radius: 999px; width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.12); color: #D9D9DE; }
.bv-wish-card__heart.is-active { color: #C21E5A; }
.bv-wish-card__heart svg { width: 18px; height: 18px; }
.bv-wish-card__media { display: block; aspect-ratio: 1/1; overflow: hidden; }
.bv-wish-card__media img { width: 100%; height: 100%; object-fit: cover; }
.bv-wish-card__body { padding: 14px 16px 18px; }

/* =========================== Modal kit additions =========================== */
.bv-modal[hidden] { display: none !important; }
.bv-modal { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 24px; }
.bv-modal__overlay { position: absolute; inset: 0; background: rgba(20,16,16,.45); }
.bv-modal__dialog { position: relative; z-index: 1; background: #fff; border-radius: var(--bv-radius-lg); padding: 32px; width: 100%; max-width: 720px; max-height: 90vh; overflow-y: auto; box-shadow: 0 24px 60px rgba(0,0,0,.22); }
.bv-modal__dialog--sm { max-width: 480px; }
.bv-modal__dialog--center { text-align: center; }
.bv-modal__close { position: absolute; top: 16px; right: 18px; background: none; border: 0; font-size: 26px; line-height: 1; color: var(--bv-text-muted); cursor: pointer; }
.bv-modal__title { font-family: var(--bv-serif); font-weight: 400; font-size: 26px; margin: 0 0 12px; }
.bv-modal__lead { color: var(--bv-text-2); font-size: 15px; margin: 0 0 16px; line-height: 1.55; }
.bv-modal__note { background: var(--bv-bg-cream); border-radius: var(--bv-radius-md); padding: 12px 14px; font-size: 13px; color: var(--bv-text-2); margin: 14px 0; }
.bv-modal__note--center { background: none; padding: 0; text-align: center; color: var(--bv-text-muted); }
.bv-modal__box { background: var(--bv-bg-soft); border-radius: var(--bv-radius-md); padding: 14px 16px; text-align: left; font-size: 14px; margin: 14px 0; }
.bv-modal__box p { margin: 6px 0 0; color: var(--bv-text-2); }
.bv-modal__actions { display: flex; gap: 12px; margin-top: 22px; }
.bv-modal__dialog--center .bv-modal__actions { justify-content: center; }
.bv-modal__actions .bv-btn { flex: 1 1 0; }
.bv-modal__badge { width: 64px; height: 64px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; margin: 4px auto 16px; }
.bv-modal__badge svg { width: 30px; height: 30px; }
.bv-modal__badge--pink { background: var(--bv-pink-50); color: #C21E5A; }
.bv-modal__badge--warn { background: #FCE8E8; color: #C0392B; }

/* Fields inside modals */
.bv-modal .bv-field { display: flex; flex-direction: column; margin-bottom: 14px; }
.bv-modal .bv-field__label, .bv-set .bv-field__label { font-size: 13px; font-weight: 600; color: var(--bv-text-2); margin-bottom: 6px; }
.bv-modal .bv-field__input, .bv-set .bv-field__input { height: 48px; border: 1px solid var(--bv-border-dark); border-radius: var(--bv-radius-md); padding: 0 14px; font: inherit; background: #fff; }
.bv-modal .bv-field__textarea { height: auto; padding: 12px 14px; resize: vertical; }
.bv-modal .bv-field__input:focus, .bv-set .bv-field__input:focus { outline: 0; border-color: var(--bv-pink); }
.bv-field__counter { font-size: 12px; color: var(--bv-text-muted); text-align: right; margin-top: 6px; }
.bv-field__hint { font-size: 12px; color: var(--bv-text-muted); margin: 6px 0 0; }
.bv-fields-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.bv-fields-row--3 { grid-template-columns: 2fr 1fr 1fr; }

/* Reminders modal */
.bv-rem-list { display: flex; flex-direction: column; gap: 12px; margin: 8px 0 16px; }
.bv-rem-card { display: flex; align-items: center; gap: 12px; border: 1px solid var(--bv-border-dark); border-radius: var(--bv-radius-md); padding: 14px 16px; }
.bv-rem-card__pick { display: flex; align-items: center; gap: 12px; flex: 1 1 auto; cursor: pointer; }
.bv-rem-card__pick input { accent-color: var(--bv-pink); width: 18px; height: 18px; }
.bv-rem-card__body { display: flex; flex-direction: column; }
.bv-rem-card__name { font-weight: 700; }
.bv-rem-card__occ { font-size: 12px; font-weight: 600; color: #C98A00; background: #FFF3D6; border-radius: 999px; padding: 1px 9px; align-self: flex-start; margin: 3px 0; }
.bv-rem-card__date { font-size: 13px; color: var(--bv-text-muted); }
.bv-rem-card__actions { display: flex; gap: 12px; }
.bv-rem-edit, .bv-rem-del { background: none; border: 0; font-weight: 600; font-size: 13px; cursor: pointer; }
.bv-rem-edit { color: var(--bv-text); }
.bv-rem-del { color: #C21E5A; }
.bv-rem-addnew { display: block; width: 100%; text-align: center; background: none; border: 0; color: #C21E5A; font-weight: 700; font-size: 15px; cursor: pointer; padding: 8px; }
.bv-rem-empty { color: var(--bv-text-muted); text-align: center; }

/* OTP */
.bv-otp { display: flex; gap: 10px; justify-content: center; margin: 18px 0; }
.bv-otp__box { width: 56px; height: 64px; border: 1px solid var(--bv-border-dark); border-radius: var(--bv-radius-md); text-align: center; font-size: 26px; font-weight: 700; }
.bv-otp__box:focus { outline: 0; border-color: var(--bv-pink); background: var(--bv-pink-soft); }
.bv-otp__expiry { font-size: 12px; color: var(--bv-text-muted); text-align: center; }
.bv-otp__fallback { font-size: 12px; color: var(--bv-text-2); background: var(--bv-pink-50); border-radius: var(--bv-radius-md); padding: 10px 12px; text-align: center; margin-top: 10px; }

/* Checkboxes (boxed) */
.bv-checkbox--boxed { display: flex; align-items: center; gap: 10px; border: 1px solid var(--bv-pink-100); background: var(--bv-pink-soft); border-radius: var(--bv-radius-md); padding: 14px 16px; }
.bv-checkbox--boxed input { accent-color: var(--bv-pink); width: 18px; height: 18px; }

/* Address type cards */
.bv-addr-types { border: 0; padding: 0; margin: 8px 0 4px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.bv-addr-types legend { margin-bottom: 10px; }
.bv-addr-type { display: flex; flex-direction: column; border: 1px solid var(--bv-border-dark); border-radius: var(--bv-radius-md); padding: 12px 14px; cursor: pointer; position: relative; }
.bv-addr-type.is-active { border-color: var(--bv-pink); background: var(--bv-pink-soft); }
.bv-addr-type input { position: absolute; top: 12px; right: 12px; accent-color: var(--bv-pink); }
.bv-addr-type__name { font-weight: 700; font-size: 14px; }
.bv-addr-type__desc { font-size: 12px; color: var(--bv-text-muted); margin-top: 2px; }

/* Cancel summary card */
.bv-cancel-summary { display: none; gap: 12px; border: 1px solid var(--bv-border); border-radius: var(--bv-radius-md); padding: 12px; margin: 12px 0; text-align: left; }
.bv-cancel-summary.is-filled { display: flex; }
.bv-cancel-summary img { width: 56px; height: 56px; border-radius: 8px; object-fit: cover; flex: 0 0 auto; }
.bv-cancel-summary__name { font-weight: 700; font-size: 14px; }
.bv-cancel-summary__meta { font-size: 13px; color: var(--bv-text-muted); }

/* ---- Responsive ---- */
@media (max-width: 960px) {
    .bv-acc-dash { grid-template-columns: 1fr; }
    .bv-wish-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 680px) {
    /* Order head: name + chevron on row 1, recipient on row 2, status + price
       on row 3 — instead of cramming 5 cells into one row and clipping. */
    .bv-order__head {
        grid-template-columns: 1fr auto;
        column-gap: 12px;
        row-gap: 6px;
        padding: 16px 18px;
    }
    .bv-order__name  { grid-area: 1 / 1; min-width: 0; }
    .bv-order__chev  { grid-area: 1 / 2; }
    .bv-order__recip { grid-area: 2 / 1 / 3 / -1; }
    .bv-order__tag   { grid-area: 3 / 1; justify-self: start; }
    .bv-order__price { grid-area: 3 / 2; justify-self: end; }
    .bv-orders__search, .bv-orders__search input { min-width: 0; }
    .bv-order__exp { flex-direction: column; padding: 0 18px 18px; }
    .bv-order__field { grid-template-columns: 96px 1fr; }
    .bv-fields-row, .bv-fields-row--3, .bv-addr-types { grid-template-columns: 1fr; }
    .bv-wish-grid { grid-template-columns: 1fr 1fr; }
    .bv-set-sec__row { flex-direction: column; align-items: flex-start; }
    .bv-set-sec__row .bv-btn { width: 100%; }
    .bv-set-signedin, .bv-set-delete { flex-direction: column; align-items: flex-start; }
    .bv-modal__actions { flex-direction: column; }
}

.bv-filters__price-field input{
    padding:0 !important;
}

.bv-filters__apply{
    display:none;
}

.bv-filters__price-inputs{
    gap:8px !important;
}

/* Catalog product grid: single column on small phones. */
@media screen and (max-width: 640px) {
    .bv-catalog__grid {
        grid-template-columns: 1fr;
    }
    .bv-catalog__grid > a {
        margin-bottom: 20px;
    }
}

/* Hide the cart-drawer line-item edit control (scoped so it beats
   `.bv-cd .bv-cd-item__edit`). */
.bv-cd .bv-cd-item__edit { display: none; }

/* Mobile spacing: tighten the trust bar / FAQ on small screens. */
@media (max-width: 640px) {
    .bv-trust-bar { padding: 0; }
    .bv-faq { padding-top: 0; }
}

/* Product page layout on very small phones: drop sticky-ATC bottom padding,
   let the content area + carousel cards use the full width. */
@media screen and (max-width: 430px) {
    .single-product:has(.commercekit_sticky-atc) { padding-bottom: 0; }
    .content-area { max-width: 100%; margin-left: 0 !important; }
    .bv-page--product .bv-pd-carousel__track > .bv-card { width: 100%; }
}

/* PDP gallery on mobile/tablet: stack the thumbnails in a row BELOW the main
   image (up to 700px — the same breakpoint where the thumbs shrink and the rest
   of the PDP goes single-column). Overrides the 84px side grid at ≤700px. */
@media screen and (max-width: 700px) {
    .bv-pd__gallery { display: flex; flex-direction: column; }
    /* Thumbs come first in the DOM; push them below the main image with order. */
    .bv-pd__stage { order: 1; }
    .bv-pd__thumbs { order: 2; width: 100%; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; gap: 8px; padding-bottom: 4px; scrollbar-width: none; }
    .bv-pd__thumbs::-webkit-scrollbar { display: none; }
    .bv-page--product .bv-pd__thumbs .bv-pd__thumb { flex: 0 0 84px; width: 84px !important; height: 84px !important; background-color: unset; }
}

/* Keep the custom cart button text white on hover; pink ZIP-form submit. */
.my-custom-cart-button:hover { color: #fff !important; }
.bv-zipform__submit { background-color: #E83E74 !important; padding: 10px 28px !important; height: auto !important; border: 1px solid #E83E74 !important; }
.bv-zipform__submit:hover {
    background-color: #FFECF6 !important;
    height: auto !important;
    color: #D8579C;
}
.bv-zipform { align-items: center !important; }
.cgkit-as-variation-price{
    display:flex;
    align-items:center;
}

.bv-acc-empty__sub{
    margin: 20px auto;
}

.bv-add-address{
    display:none;
}

.bv-acc-greeting__sub{
    display:none;
}

.bv-set-sec__row--google{
    display:none;
}

.bv-set-sec__row--facebook{
    display:none;
}

@media screen and (max-width:430px) {
    .bv-products-row{
        flex-wrap: wrap;
        display: flex;
    }

    .bv-locbar__text{
        display: flex;
        flex-wrap: wrap;
    }

    .bv-wish-grid{
        display: flex;
        flex-wrap: wrap;
    }

    .bv-wish__bulk .bv-btn--primary{
        padding: 0 20px;
    }

    .bv-wish__bulk {
        flex-wrap: wrap;
        text-align: center;
    }

    .bv-wish__bulk>*{
        width:100%;
    }

    /* Header: logo + burger on row 1, action icons on a full-width row 2. */
    .bv-h2-main__inner{
        justify-content: space-between;
    }
    .bv-h2-logo{
        order:1;
    }
    .bv-h2-burger{
        order:2;
    }
    .bv-h2-actions{
        display: flex;
        justify-content: space-between;
        margin-left: 0;
        width: 100%;
        order:3;
    }

    /* Order detail image goes full-width above the details on tiny screens. */
    .bv-order__img{
        width: 100%;
        height: auto;
    }
    .bv-order__img img{
        height: auto;
    }

    .co-modal__close{
        top:10px;
        right:10px;
    }

    .bv-page--product .bv-pd-carousel__track > .bv-card{
        flex-basis:100% !important;
    }

    /* White backing behind the product gallery thumbnails on tiny screens. */
    .bv-page--product .bv-pd__thumb{
        background-color:#fff;
    }

    .bv-h2-search__form input[type="search"]{
        padding-left: 0.7em !important;
    }
}

.bv-cd .bv-cd__carousel > .bv-card{
    flex:0 0 100% !important;
}

.bv-order__actions button{
    border:1px solid #C9CCD1 !important;
}

.arrow{
    position:absolute;
}

.arrow1{
    left: 15%;
    top: -24%;
    width: 20%;
}

.arrow2{
    left: 43%;
    top: 33%;
    width:14%;
}

.arrow3{
    right: 15%;
    top: -13%;
    width: 17%;
}

@media (max-width:1100px){
    .arrow{
        display:none !important;
    }
}

@media (max-width:430px){
    .bv-datepick__legend{
        justify-content:space-between;
    }

    .bv-datepick__legend>span{
        width:40%;
    }
}
/* Hover states (QA) */
.co-auth__submit:hover { background-color: #D8579C !important; }
#my-custom-cart-button:hover { color: #fff !important; }
#my-custom-cart-button-trigger:hover { color: #fff !important; }

.bv-h2-mega__col:last-of-type{
    border:none;
}

#bv-top-rated{
    width:90%;
}

.bv-symp-promo{
    width:100%;
    background-image:url('../img/bloom-v2/secondsection.png') !important;
    background-size: cover !important;
}

.bv-symp-promo__bg{
    width:100% !important;
}

.bv-card__title-row{
    display: flex;
    flex-wrap: wrap;
}

.bv-card__title{
    width:100%;
}

.bv-card__price{
    width:100%;
}

.bv-occasion__img{
    border: 1px solid #F7F7F7;
    padding: 10px;
    box-shadow: 0 0 20px 5px #F7F7F7;
}

.bv-occasion__img img{
    border-radius: 50%;
}

.bv-bestsell__grid{
    align-items: start !important;
}

.bv-card{
    position: relative;
}

.bv-card__foot{
    position: absolute;
    width: 100%;
    padding-left: 16px;
    padding-right: 16px;
    left: 50%;
    transform: translate(-50%, 0);
    bottom: 0;
}

.bv-card{
    min-height: 550px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .08);
}

.bv-card__sameday{
    display: flex;
    align-items: center;
    gap: 10px;
    color: #C21E5A;
}

.flower-type .bv-eyebrow--pink {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    width:30%;
    margin:20px auto !important;
}

.flower-type .bv-eyebrow--pink::before,.flower-type .bv-eyebrow--pink::after {
    content: "";
    flex: 1 0 20px;
    height: 2px;
    background-color: #EC1E79;
    margin: 0 15px;
}

.flower-type .bv-eyebrow--pink svg {
    width: 30px;
    height: 30px;
    flex-shrink: 0;
    color: #EC1E79;
}

.bv-fresh{
    display: flex !important;
    justify-content: space-between;
}

.bv-fresh__icon{
    width: 4%;
}

.bv-fresh__text{
    width:30%;
}

.bv-fresh__form{
    width:70%;
}

.sympathy-button{
    background-color: #fff;
    max-height: 50px;
    display: flex;
    align-items: center;
    padding: 20px;
    border-radius: 10px;
    position: absolute;
    bottom: 40px;
    left: 30px;
    color: #C21E5A;
}

.sympathy-button:hover{
    background-color: #E83E74;
    color:#fff;
}

.bv-section:not(.flower-type) .bv-eyebrow--pink {
    position: relative;
    display: inline-block;
    padding-bottom: 20px;
}

.bv-section:not(.flower-type) .bv-eyebrow--pink::after {
    content: "";
    position: absolute;
    left:20px;
    bottom: 0;
    transform: translateX(-50%);
    width: 40px;
    height: 3px;
    background-color: #EC1E79;
    border-radius: 2px;
}
.bv-bestsell__title em {
    font-family: "Dancing Script", cursive;
    font-style: normal;
    font-weight: 600;
    font-size: 1.15em;
}

.bv-catalog__grid .bv-card{
    min-height: 650px;
}

.bv-card__media{
    border-radius:0 !important;
}

.bv-page .bv-card__sameday svg{
    color: #C21E5A;
}

.bv-page .bv-card__sameday strong{
    color: #C21E5A;
}

.woocommerce-Price-amount{
    color: #C21E5A;
}

del{
    color:#000 !important;
}

.bv-pd__social svg{
    width: 30px;
    height: auto;
    position: relative;
    top: -5px;
}

/* Gift message moved to the add-ons popup; hide the inline PDP gift field + heading. */
body.single-product table.ced_sadc_form_gift,
body.single-product .bv-live-h-gift { display: none !important; }

body.bv-page--product .bv-live-actions{
    margin-bottom:20px !important;
}

.price del .woocommerce-Price-amount{
    color:#000 !important;
}

.price .bv-pd__save{
    order: 3;
    margin-left: 0 !important;
}

.bv-filters .bv-chip-filter{
    padding:4px !important;
    font-size: 14px;
}
.bv-filters__datewrap { margin-top: 12px; }
.bv-filters__datepick {
    width: 100%; box-sizing: border-box; height: 44px; padding: 0 40px 0 14px;
    border: 1px solid #E3D7DE; border-radius: 8px; font: inherit; font-size: 15px; color: #2A2230;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%237A7882' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4.5' width='18' height='16' rx='2'/%3E%3Cline x1='3' y1='9' x2='21' y2='9'/%3E%3Cline x1='8' y1='2.5' x2='8' y2='6.5'/%3E%3Cline x1='16' y1='2.5' x2='16' y2='6.5'/%3E%3C/svg%3E") no-repeat right 14px center;
    cursor: pointer;
}
.bv-filters__datepick::placeholder { color: #8A8590; }
.bv-filters__datepick:focus { outline: none; border-color: var(--bv-pink, #E83E74); }

.bv-filters__radio{
    flex-wrap: wrap;
}

.bv-filters__radio-hint{
    margin-left: 23px;
}

/* Catalog: all text in Playfair Display */
.bv-catalog, .bv-catalog * { font-family: "Playfair Display", serif !important; }

.bv-product-extras{
    margin-bottom: 50px;
}

.price del{
    padding-right: 15px;
    border-right: 1px solid rgba(0, 0, 0, 0.1);
}

.price ins bdi{
    font-size:35px;
}

.bv-product-extras .bv-pd-carousel:nth-child(2){
    order:2;
}

.bv-product-extras .bv-pd-carousel:last-child{
    order:1;
}

#reviews{
    order:3;
}

/* Kill the carousel's 80px top margin on phones (ClickUp 869ek02xn, owner 2026-08-19).
   .bv-page--product .bv-pd-carousel carries margin-top:80px for the desktop rhythm (:3692). On a
   phone that margin lands directly under the accordions, and because the extras above are
   reordered so a CAROUSEL comes first, it reads as a large blank band between "Description" and
   "You May Also Like" — empty, since the reviews section moved below it (#reviews order:3). QA
   reported it twice; the earlier attempt (671d0bb9) only reshuffled the order values and left the
   margin untouched.
   Wrapped in its own query on purpose: the ordering rules above are GLOBAL (the 430px block ends
   at :8425), and zeroing this margin at every width would collapse the desktop rhythm too. */
@media (max-width:430px){
    .bv-page--product .bv-pd-carousel{
        margin-top:0;
    }
}

.bv-lp__lead{
    margin: 0 auto;
    margin-top: 30px;
}

.bv-lp__hero-text .bv-lp__lead{
    margin:0;
}

/* Landing: "Your Local Flower Delivery" block + trust strip (Tim 11:36) */
.bv-lp__local { max-width: var(--bv-container); margin: 0 auto; padding: 8px var(--bv-container-pad) 44px; display: flex; flex-direction: column; gap: 18px; }
.bv-lp__local-card { background: linear-gradient(180deg, #FFF3F7, #FFF8FB); border: 1px solid #F6D8E6; border-radius: 24px; padding: 32px; }
.bv-lp__local-title { font-family: var(--lp-serif); font-weight: 500; font-size: clamp(24px, 2.6vw, 32px); color: #1A1A1A; margin: 0 0 22px; }
.bv-lp__local-grid { display: grid; grid-template-columns: 280px 1fr; gap: 32px; align-items: center; }
.bv-lp__local-illo svg { width: 100%; height: auto; opacity: .9; }
.bv-lp__local-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 32px; }
.bv-lp__local-col h3 { font-size: 16px; font-weight: 800; color: #2A2424; margin: 0 0 6px; }
.bv-lp__local-col p { font-size: 14px; line-height: 1.5; color: var(--lp-muted); margin: 0 0 18px; }
.bv-lp__local-checks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.bv-lp__local-checks li { display: flex; align-items: center; gap: 9px; font-size: 14px; color: #2A2424; font-weight: 600; }
.bv-lp__local-check { color: var(--lp-pink); display: inline-flex; flex: 0 0 auto; }
.bv-lp__localtrust { background: #FDEBF3; border-radius: 20px; padding: 40px 24px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top:20px; }
.bv-lp__localtrust-item { display: flex; align-items: center; gap: 12px; }
.bv-lp__localtrust-ico { flex: 0 0 auto; width: 42px; height: 42px; border-radius: 50%; background: #fff; color: var(--lp-pink); display: grid; place-items: center; }
.bv-lp__localtrust-text { display: flex; flex-direction: column; line-height: 1.3; }
.bv-lp__localtrust-text strong { font-size: 14px; color: #2A2424; }
.bv-lp__localtrust-text span { font-size: 12px; color: var(--lp-muted); }
@media (max-width: 900px) { .bv-lp__local-grid { grid-template-columns: 1fr; } .bv-lp__local-illo { max-width: 240px; margin: 0 auto; } .bv-lp__localtrust { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .bv-lp__local-cols { grid-template-columns: 1fr; } .bv-lp__localtrust { grid-template-columns: 1fr; } }

.bv-page--checkout{
    margin-top:50px;
}

.co-main{
    margin-top:40px;
}

.bv-card__body{
    min-height:250px;
}


/* Checkout field validation (phone + email) */
/* The field itself is intentionally NOT highlighted on error — only the inline
   .co-field-error message below the field signals the problem. (.co-invalid is
   still toggled in JS for state tracking + the clear-on-fix / persist-on-blur
   logic; it just carries no red border / box-shadow now.) */
.bv-page--checkout .co-field-error { display: block; width: 100%; flex-basis: 100%; grid-column: 1 / -1; margin: 5px 0 0 2px; color: #dc2626; font-size: 12px; font-weight: 600; line-height: 1.35; }
/* In the .co-fields grid/flex rows each .form-row is a bordered "card". Render
   the error message BELOW that card (not inside it): absolutely positioned so it
   escapes the card border, and :has() reserves space beneath the errored card so
   the next field isn't overlapped. This keeps the two-up field pairing (first /
   last name) that a full-width in-flow sibling would otherwise break apart. */
.bv-page--checkout .co-fields .form-row > .co-field-error {
    position: absolute;
    inset-block-start: calc(100% + 4px);
    inset-inline-start: 2px;
    inline-size: max-content;
    max-inline-size: 100%;
    margin: 0;
}
.bv-page--checkout .co-fields .form-row:has(> .co-field-error) { margin-block-end: 20px; }
/* A legacy validation pass (custom.js) also inline-styles required fields with a
   red (error) / green (ok) border on the checkout. The v2 checkout doesn't
   highlight the field at all — the inline .co-field-error message is the only cue
   — so pin any such inline border-color back to the normal field border. Scoped to
   .bv-page--checkout, so the classic checkout and custom.js's own gating (its
   return values) are untouched. */
.bv-page--checkout .form-row input[style*="border-color"],
.bv-page--checkout .form-row select[style*="border-color"],
.bv-page--checkout .form-row textarea[style*="border-color"] { border-color: var(--co-border, #E7E4DF) !important; }

body.bv-page--product .single_variation_wrap .bv-live-h-zip{
    margin-bottom: 20px;
}
/* =========== CHECKOUT v2 — pink "wizard" skin (Tim 9:43 mockup) =========== */
/* Centered brand mark (the global header is hidden on checkout). */
.bv-page--checkout .co-brand { text-align: center; padding: 26px 0 18px; }
.bv-page--checkout .co-brand__mark {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    padding: 12px 18px; border: 1px solid rgba(232,62,116,.16); border-radius: 999px;
    background: rgba(255,255,255,.72); box-shadow: 0 12px 35px rgba(15,23,42,.06);
    font-weight: 800; letter-spacing: .15em; font-size: 14px; color: #2A2424; text-decoration: none;
}
.bv-page--checkout .co-brand__mark:hover { color: var(--pink); }
/* Premium wizard card: rounder + softer shadow than the flat default. */
.bv-page--checkout .co-card {
    border-radius: 24px;
    box-shadow: 0 18px 45px rgba(15,23,42,.07);
    border: 1px solid rgba(226,232,240,.9);
}
/* Step pills: match the mockup's rounded active-emerald→pink treatment. */
.bv-page--checkout .co-steps__item { transition: .22s ease; }
.bv-page--checkout .co-steps__item.is-active { box-shadow: inset 0 0 0 1px rgba(232,62,116,.10); }
/* Summary rail: soft card + sticky, matching the mockup's order-summary look. */
.bv-page--checkout .co-summary,
.bv-page--checkout .bv-co-summary {
    border-radius: 24px;
    box-shadow: 0 18px 45px rgba(15,23,42,.08);
}
/* Payment shell focus glow (mockup: emerald→pink ring when a card field is focused). */
.bv-page--checkout .co-payshell:focus-within {
    border-color: rgba(232,62,116,.35);
    box-shadow: 0 0 12px rgba(232,62,116,.15), 0 18px 38px rgba(15,23,42,.07);
}
/* Primary CTA: mockup's lifted pink button. */
.bv-page--checkout .co-btn--primary { box-shadow: 0 18px 30px rgba(232,62,116,.22); }
.bv-page--checkout .co-btn--primary:hover { transform: translateY(-1px); }

/* =========== CHECKOUT v2 — Tim batch tweaks =========== */
/* #5/#6 progress topline (kicker + safe note) */
.bv-page--checkout .co-progress-topline { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.bv-page--checkout .co-progress-kicker { font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--pink); }
.bv-page--checkout .co-progress-safe { font-size: 13px; font-weight: 700; color: #6B7280; white-space: nowrap; }
@media (max-width: 700px) { .bv-page--checkout .co-progress-safe { display: none; } }
/* #3/#9 brand + logo */
.bv-page--checkout .co-brand { border: none; margin-bottom: 40px; }
.bv-page--checkout .co-brand__mark { border: none; background: none; box-shadow: none; padding: 0; letter-spacing: normal; }
.bv-page--checkout .co-brand__logo { height: 42px; width: auto; display: block; }
/* #4 step pill */
.bv-page--checkout .co-steps__item { display: flex; justify-content: center; background-color: #FEF2EF; }
/* #8 co-main */
.bv-page--checkout .co-main { border: 1px solid #EDEDED; margin-top: 0; padding: 40px; border-radius: 25px; background: #FEFEFE;
    box-shadow: 0 18px 45px rgba(15, 23, 42, .08); }
/* #10 co-card */
.bv-page--checkout .co-card { border: 1px solid #EDEDED !important; border-radius: 0; }
/* #2 full-width continue on step 1 */
.bv-page--checkout .co-actions--single { display: block; }
.bv-page--checkout .co-btn--full { width: 100%; justify-content: center; }
/* #12 contact fields flex (scoped to the iconed contact card) */
.bv-page--checkout .co-fields--iconed { display: flex; flex-wrap: wrap; justify-content: space-between; }
/* #13-16 contact field widths */
.bv-page--checkout #billing_first_name_field { width: 48%; }
.bv-page--checkout #billing_last_name_field { width: 48%; }
.bv-page--checkout #billing_email_field { width: 100%; }
.bv-page--checkout #billing_phone_field { width: 100%; }
/* #17 iconed input bg position */
.bv-page--checkout .woocommerce-input-wrapper { background-position: 10px !important; }
/* #2b progress topline must sit ABOVE the pills (.co-steps is order:-1 in the flex column) */
.bv-page--checkout .co-main > .co-progress-topline { order: -2; }
/* #18 hide express wallets */
.bv-page--checkout .co-wallets { display: none; }
/* #19 remove field labels across the checkout (placeholder-style inputs). Scoped
   to .co-fields so the SMS/email opt-in checkboxes (.co-check) keep their text. */
.bv-page--checkout .co-fields label { display: none !important; }
/* #20/#21 last instant-savings row in brand pink */
.bv-page--checkout .co-summary__row--savings:last-child,
.bv-page--checkout .co-summary__row--savings:last-child span { color: #C21E5A !important; }
/* #22 grand-total row */
.bv-page--checkout .co-summary__total { font-size: 20px; background: none; padding: 20px 0 0; line-height: normal; margin-top: 0; border-top: 1px solid #E7E4DF; border-radius: 0; }
/* #23 total label */
.bv-page--checkout .co-summary__total span:first-child { color: #C21E5A; font-size: 16px; font-weight: 700; }
/* #24 total amount */
.bv-page--checkout .co-summary__total span:last-child,
.bv-page--checkout .co-summary__total span:last-child .woocommerce-Price-amount { color: #000; font-weight: 700; font-size: 30px; }
/* #25 proof item */
.bv-page--checkout .co-summary__proof-item { background-color: #FEF8F9; padding: 20px 10px; display: flex; align-items: center; }

.form-row .woocommerce-input-wrapper{
    background-position: 10px !important;
}
/* =========== CHECKOUT v2 — exact-match pass vs Tim's screenshots =========== */
/* Soft rosy page wash behind the cards (screenshots: pink/cream gradient). */
.bv-page--checkout {
    background:
        radial-gradient(circle at 8% 10%, rgba(232,62,116,.07), transparent 30%),
        radial-gradient(circle at 92% 16%, rgba(232,62,116,.05), transparent 26%),
        linear-gradient(180deg, #FDF3EF 0%, #FBEEE9 100%);
}
/* Countdown banner: pink, not amber (screenshots: soft pink bg + pink text). */
.bv-page--checkout .co-summary__countdown {
    background: #FCE9F0;
    border: 1px solid rgba(232,62,116,.22);
    color: var(--pink);
    font-weight: 700;
}
.bv-page--checkout .co-summary__countdown svg { color: var(--pink); }

.co-stephead__title{
    font-size: 40px;
}

.co-card__title{
    font-size: 20px;
    font-family: 'Inter';
    font-weight: 700;
}

.co-card__sub{
    display: none;
}



/* =========== CHECKOUT v2 — step-2/3 exact pass vs steps2/ screenshots =========== */
/* The step form is .co-main nested inside the outer .co-main container; only the
   OUTER one is the white framed card (screenshot shows a single frame). */
.bv-page--checkout .co-main .co-main { border: 0; padding: 0; border-radius: 0; background: transparent; margin-top: 0; }
/* Blocks not present in Tim's screenshots — hidden, logic untouched. */
.bv-page--checkout .co-banner--signin,
.bv-page--checkout .co-banner--welcome,
.bv-page--checkout .co-note--surprise,
.bv-page--checkout .co-note--confirm,
.bv-page--checkout #bv-ship-form .co-help,
.bv-page--checkout .co-sec--a > .co-card__label { display: none; }
/* Step-2/3 section cards (A/B/C/D): the screenshots show rounded, thin-border,
   shadowless boxes with tighter padding — unlike the flat step-1 card. */
.bv-page--checkout .co-card.co-sec {
    border: 1px solid #EDEDED;
    border-radius: 16px;
    box-shadow: none;
    padding: 24px;
}
/* #bv-ship-form (screenshot: a single Delivery-address line). Apartment,
   city/state/ZIP and country stay in the DOM — the address autocomplete fills
   them and WC needs the values — but are hidden until needed. bloom-v2.js
   reveals them (.bv-addr-open) if they're still empty on Continue. */
.bv-page--checkout #bv-ship-form.bv-addr-open > .co-fields ~ .co-fields { display: grid; }

.page-template .co-card__title{
    font-family: 'Inter';
    font-weight: 700;
    margin-bottom: 20px;
}

.home .bv-review__head{
    justify-content:center;
}

.bv-review__verified{
    color:green;
}

.bv-review__verified svg{
    border:1px solid green;
}

.bv-review__verified polyline{
    stroke:green;
}

.bv-f2 .bv-f2__col a:hover{
    color: #C21E5A;
}
/* Step-2 venue panels: school role radios + single-field row */
.bv-page--checkout .co-rolerow { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
.bv-page--checkout .co-roleopt { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--co-border); border-radius: 12px; padding: 10px 16px; font-size: 14px; font-weight: 600; color: var(--co-text); cursor: pointer; }
.bv-page--checkout .co-roleopt input { accent-color: var(--pink); margin: 0; }
.bv-page--checkout .co-roleopt:has(input:checked) { border-color: rgba(232,62,116,.42); background: var(--pink-soft); color: var(--pink); }
.bv-page--checkout .co-fields--one { grid-template-columns: 1fr; }

.bv-pd__rating{
    margin-bottom: 20px;
}

.co-summary__savepill .woocommerce-Price-amount{
    margin-right: 5px;
    margin-left: 5px;
}

.co-actions .co-btn--outline:hover{
    background-color:#E83E74;
    color:#fff;
}

.bv-page--checkout{
    margin-top:0;
}

.co-brand{
    background-color:#fff;
}

.co-tip--box{
    border:1px solid rgba(0,0,0,0.3);
}

.co-tip--box.is-active {
    border-color: var(--pink);
    background: var(--pink-soft);
}

.co-tip--box:hover{
    border-color: var(--pink);
    background: var(--pink-soft);
}

.co-brand{
    background:unset;
}

/* ---- Step 1 international phone (intl-tel-input) on #billing_phone ----
   Let the widget own the input's left padding for the flag, and drop the
   .co-fields--iconed phone icon so it doesn't sit under the flag. */
.bv-page--checkout #billing_phone_field .iti { display: block; width: 100%; }
.bv-page--checkout .co-fields--iconed .iti input#billing_phone {
    background-image: none;
    padding-left: 52px !important; /* room for the flag + arrow (standard iti mode) */
}
/* Drop the default person icon on the phone row (the flag is the visual), and
   vertically center the flag on the field + lift it above the input so it stays
   clickable (the input paints over it otherwise). */
.bv-page--checkout #billing_phone_field { background-image: none; }
.bv-page--checkout #billing_phone_field .iti__flag-container { transform: translateY(-11px); z-index: 3; }
.bv-page--checkout .iti__country-list { text-align: left; z-index: 5; }
.bv-page--checkout .iti__country-list .iti__country { font-size: 14px; }

.bv-lp__local-title{
    margin-bottom:50px;
}

.bv-lp__avatars{
    display:none;
}

.lp-underline{
    position: relative;
    display: block;
}

.lp-underline svg{
    position: absolute;
    top: -15px;
    right: 30%;
    width: 50%;
}

.bv-lp__title-city{
    border:none;
    color: #C21E5A !important;
}

.flower-icon{
    position: relative;
}

.flower-icon svg {
    position: absolute;
    width: 40px;
    height: 40px;
    top: 20px;
    right: 8vw;
    transform: rotate(20deg);
}

.bv-lp__local-title{
    margin-bottom:50px !important;
}

.bv-page.bv-page--checkout{
    background-color: #FEF6F6;
    background-image: none;
}

.bv-page--checkout .co-card{
    border: none;
    box-shadow: none;
    padding: 0;
}

.bv-page--checkout .co-btn--full{
    box-shadow: none;
}

.bv-page--checkout .input-text{
    border: 1px solid #E7E4DF;
}

.bv-page--checkout .co-steps__item{
    background-color: #fff;
}

.bv-page--checkout .co-steps__item.is-active{
    background-color: #FDF9FA;
}

.bv-page--checkout .co-btn--primary:hover{
    transform: none;
}

.bv-page--checkout .co-check--pink{
    background-color: #FEF8F9;
    padding: 20px 10px;
    border-radius: 5px;
}

.bv-page--checkout .co-summary{
    border:none;
}

.bv-page--checkout .co-fields .form-row label{
    display: block !important;
    padding-left: 42px;
    left: 0;
    position: relative;
    background: none !important;
    transform: none;
    text-transform: uppercase;
    color: #6B6973 !important;
}

.bv-page--checkout .co-fields input{
    border: none;
    background: none !important;
    box-shadow: none;
    height: auto;
    font-weight: 700;
}

.bv-page--checkout .form-row{
    border: 1px solid var(--co-border);
    border-radius: 10px;
    padding-top: 10px;
    padding-bottom: 10px;
    padding-right: 10px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E83E74' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 20c0-4 4-6 8-6s8 2 8 6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: 20px;
    background-position: 10px;
    color: #6B6973;
}

.bv-page--checkout .co-summary__title{
    display:none;
}

.bv-page--checkout .co-summary__item--card{
    display:none;
}

.bv-page--checkout .co-summary__giftbox{
    display: none;
}

.bv-page--checkout .co-summary__meta{
    display: none;
}

.bv-page--checkout .co-summary__discount{
    display: none;
}

.bv-page--checkout .co-summary__sep{
    display: none;
}

.bv-page--checkout .co-summary__rows{
    border-top:1px solid #E7E4DF;
    padding-top:30px;
}

.bv-page--checkout .co-summary__price{
    justify-content: start;
}

.bv-page--checkout .co-summary__price del{
    order:1;
    color:#EDEDED;
}

.bv-page--checkout .co-summary__price del>span {
    color:#6B6973;
}

.bv-page--checkout .co-summary__price>span{
    order:2;
    color:#000;
}

.bv-page--checkout .co-stephead{
    background-image: url("../img/cat-hero/hero-7.webp");
    background-size: cover;
    padding-top: 40px;
    padding-bottom: 40px;
}

.bv-page--checkout .co-main .co-main{
    box-shadow:none;
}

.bv-page--checkout .co-summary__name{
    font-weight:700;
}

.bv-page--checkout.step2 .form-row label{
    display:none !important;
}

.bv-page--checkout.step2 .form-row{
    padding-top:0px;
    padding-bottom:0px;
    background: none;
    flex-direction: row;
    align-items: center;
}

.bv-page--checkout.step2 .co-fields input{
    padding: 15px;
}

.co-addr-notes .co-fields input{
    border: 1px solid var(--co-border);
    border-radius:10px;
}

.bv-page--checkout .co-upgrade{
    align-items: center;
}

.co-gift__toggle .co-gift__switch{
    order:2;
}

.co-gift__toggle .co-gift__toggle-text{
    order:1;
}

.co-textarea{
    border: none !important;
    box-shadow: none !important;
    padding:0 !important;
}

.gift-card-wrapper{
    border: 1px solid var(--co-border);
    padding:12px 14px;
    border-radius:5px;
}

.co-addr-note-wrapper{
    background: var(--cream);
    border: 1px solid #DE9E09;
    border-radius: var(--co-radius-sm);
    padding: 18px 20px;
}

.co-addr-note{
    border:none !important;
    padding-right:0 !important;
    padding-left:0 !important;
}

.co-gift__toggle{
    margin-bottom:20px;
    justify-content:space-between;
}

.co-tips--matrix .co-tip--box{
    background-color:#fff;
}

.bv-page--checkout .co-card{
    padding:20px !important;
}

.co-tips--matrix .co-tip--box{
    background-color:#fff;
}

.co-tips--matrix .co-tip--box.is-active{
    background-color:#FCEDF2;
    border:1px solid #E83E74;
}

.co-tips--matrix .co-tip--box:hover{
    background-color:#FCEDF2;
    border:1px solid #E83E74;
}

/* Step-2 field rows are laid out flex-direction:row (inline field-row design).
   That left single-input rows — notably the Delivery address — sitting at the
   input's intrinsic ~250px: the bordered row rendered full-width but only ~250px
   was actually typable, so long addresses got cut off. Let the WooCommerce input
   wrapper grow to fill the row so the whole field is usable. */
.bv-page--checkout.step2 .form-row .woocommerce-input-wrapper { flex: 1 1 auto; min-width: 0; }
.bv-page--checkout.step2 .form-row .woocommerce-input-wrapper .input-text { width: 100%; }

/* Inline Solidgate Payment Form (step 3): the Google Pay button mounts in
   .co-gpay__btn and the real card fields render inline in .co-gpay__host. Revealed
   by solid-pay.js once the form mounts. */
.co-gpay { margin: 0 0 18px; }
.co-gpay__btn { border-radius: 12px; overflow: hidden; }
.co-gpay__btn:empty { display: none; }               /* collapse when Google Pay isn't available */
.co-gpay__host { width: 100%; }                        /* inline card fields (was off-screen for GPay-only) */
.co-gpay__host iframe { width: 100% !important; border: 0; }   /* Solidgate form iframe: fill the field, drop the default inset border */
.co-gpay .co-gpay__or { display: none !important; }    /* Google Pay off — no "or pay by card" split needed */
/* Once the real inline form has mounted, hide the read-only card mockup — the
   form's own button pays. The mockup remains the redirect fallback (tap to pay)
   when the SDK can't mount. (There's no footer "Make payment" button to hide any
   more; it was dropped because it only flashed in and back out on mount.) */
body.bv-solid-inline .co-payshell { display: none !important; }

/* Email field: show an envelope icon instead of the default person icon that
   .bv-page--checkout .form-row applies to every field row (position/size are
   inherited from that base rule). */
.bv-page--checkout #billing_email_field{
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E83E74' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3 7 9 6 9-6'/%3E%3C/svg%3E");
}

/* Catalog on small phones (<=430px): two-up card grid, trimmed cards, and the
   filter rail / feature bar hidden to keep the listing compact. */
@media (max-width:430px){
    .bv-catalog__grid{
        display:flex;
        flex-wrap:wrap;
        gap:0;
        justify-content:space-between;
    }

    /* 48% (2-up) is only for the catalog & landing FLEX-WRAP grids. Leaving it
       unscoped made every .bv-card 48% of its container — e.g. 48% of a 165px
       grid cell in the cart's .bv-products-row, so cards shrank to ~79px. */
    .bv-catalog__grid .bv-card,
    .bv-lp__grid .bv-card{
        width: 48%;
    }

    .bv-card{
        min-height: 400px !important;
    }

    .bv-card__body{
        min-height:auto;
    }

    .bv-card__choose{
        display:none;
    }

    .bv-card__foot{
        display:none;
    }

    /* Keep the rail itself — bloom-v2-filters.js collapses it to a single
       "Filters" button at <=900px, which is already as compact as this block
       wants. Hiding the whole panel removed filtering ENTIRELY on phones
       <=430px (Galaxy S25 Ultra 412, Pixel 412, iPhone 16 Pro 402) while
       phones above the cliff (Pro Max 440) kept the button — measured on prod:
       399/409 hidden, 430/457 shown. That is the "iOS vs Android difference"
       Volodymyr reported (869eeyuv5); the two recorded devices just landed on
       opposite sides of 430, it was never a platform difference. Scoped to
       :not(--collapsible) so a page where the JS never mounted the toggle
       still doesn't dump the full sidebar above the grid — that no-JS case is
       what this rule was really guarding. */
    .bv-filters:not(.bv-filters--collapsible){
        display:none;
    }

    .bv-cat-features{
        display:none;
    }

    .bv-page .bv-card__price del{
        margin-left:0;
    }

    .bv-page .bv-card__save{
        margin-left:0;
    }

    .bv-lp__grid{
        display: flex;
        flex-wrap: wrap;
        gap: 0;
        justify-content: space-between;
    }

    .bv-lp__hero-text{
        display:none;
    }

    .bv-lp__areas{
        display:none;
    }

    .bv-lp__hero-inner{
        max-height: 200px;
        overflow: hidden;
        border-radius: 20px;
    }

    .bv-lp__hero-card{
        top: 20px;
        max-height: 160px;
    }

    .bv-lp__section {
        padding-top: 10px;
    }

    /* Landing page only. Unscoped this hid the ENTIRE header action row —
       Search, phone, Customer Care and the Cart — on every page at <=430px, so
       a phone had no way to open the search overlay at all (QA 869eduzwv).
       Same class of bug as the .bv-card 48% one noted above. .bv-lp is the page
       wrapper and a SIBLING of the header, not an ancestor, so the scope has to
       come off <body>; browsers without :has() just show the row, which is the
       safe direction. */
    body:has(.bv-lp) .bv-h2-actions{
        display:none;
    }

    .bv-lp__grid-head{
        gap:10px;
    }

    .bv-page .bv-card{
        margin-bottom:20px;
    }

    .custom-logo-link{
        width:30%;
    }

    .bv-card__price{
        display: flex;
        flex-direction: column;
        padding-bottom: 20px;
    }

    .bv-addons .bv-addons__done{
        min-width: 300px;
        margin: 0 auto;
    }

    .bv-addons__carousel.is-carousel .bv-addons__card{
        flex-basis: 100%;
    }

    .bv-addons__title{
        margin-top:30px;
    }

    .bv-zipform__input{
        padding-top: 15px;
        padding-bottom: 15px;
    }

    body.bv-body button{
        padding-top: 15px !important;
        padding-bottom: 15px !important;
    }
}

/* Checkout mobile fixes. The earlier ≤560 block trims .co-card padding but not
   .co-main — which is the actual step card, so its 40px desktop padding kept
   squeezing the field column to ~220px. And .co-fields--iconed (step-1 contact
   row) is a flex-wrap row the single-column grid rule can't reach, so first/last
   name shared a line at ~106px and clipped their values. This block is last in
   source so it beats the base .co-main padding rule. */
@media (max-width: 560px) {
    .bv-page--checkout .co-main { padding: 24px 18px; }
    .bv-page--checkout .co-fields--iconed .form-row { flex: 1 1 100%; }
}

/* ----------------------------------------------------------------------------
   Step 2 · "Add a card message" greeting-card module (Section D). Pink v2 theme.
   Numbered steps: 1 Occasion · 2 Choose a message (+ live preview) · 3 Edit.
   ---------------------------------------------------------------------------- */
.bv-page--checkout .co-gift__intro { margin: -6px 0 20px; font-size: 15px; }
.bv-page--checkout .co-gift__step { margin-top: 24px; }
.bv-page--checkout .co-gift__step:first-of-type { margin-top: 6px; }
.bv-page--checkout .co-gift__steptitle { display: flex; align-items: center; gap: 10px; font-family: "DM Sans", sans-serif; font-weight: 700; font-size: 17px; color: var(--co-text); margin: 0 0 12px; }

/* Occasion — select only */
.bv-page--checkout .co-gift__occrow { display: grid; grid-template-columns: minmax(0, 320px); gap: 14px 18px; align-items: start; }
.bv-page--checkout .co-gift__field--occ { margin: 0; }

/* 2 · Choose a message — tabs + suggestion list + live preview */
/* Side-by-side like the mockup, but with a compact preview on the right so the
   message column keeps room for the tabs (stacks on mobile — see media query). */
.bv-page--checkout .co-gift__msggrid { display: grid; grid-template-columns: minmax(0, 1fr) 160px; gap: 18px; align-items: start; }
.bv-page--checkout .co-gift__tabs { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--co-border); border-radius: 12px; overflow: hidden; background: #fff; margin-bottom: 12px; }
.bv-page--checkout .co-gift__tab { border: 0; background: #fff; padding: 11px 14px; font-weight: 600; font-size: 14px; color: var(--co-muted); cursor: pointer; transition: .15s ease; display: inline-flex; align-items: center; justify-content: center; gap: 7px; white-space: nowrap; }
.bv-page--checkout .co-gift__tab.is-active { background: var(--pink); color: #fff; }
.bv-page--checkout .co-gift__suggestions { border: 1px solid var(--co-border); border-radius: 12px; overflow: hidden; background: #fff; }
.bv-page--checkout .co-gift__suggestion { display: grid; grid-template-columns: 20px 1fr; gap: 12px; width: 100%; text-align: left; border: 0; border-bottom: 1px solid var(--co-border); background: #fff; color: var(--co-text); padding: 13px 15px; font-size: 14px; line-height: 1.45; cursor: pointer; transition: background .14s ease, box-shadow .14s ease; }
.bv-page--checkout .co-gift__suggestion:last-child { border-bottom: 0; }
.bv-page--checkout .co-gift__suggestion:hover { background: #FFF7FB; }
.bv-page--checkout .co-gift__suggestion.is-active { background: var(--pink-soft); box-shadow: inset 3px 0 0 var(--pink); }
.bv-page--checkout .co-gift__sradio { width: 18px; height: 18px; margin-top: 1px; border: 2px solid var(--co-border); border-radius: 50%; position: relative; flex: 0 0 auto; }
.bv-page--checkout .co-gift__suggestion.is-active .co-gift__sradio { border-color: var(--pink); }
.bv-page--checkout .co-gift__suggestion.is-active .co-gift__sradio::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--pink); }
.bv-page--checkout .co-gift__quick { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.bv-page--checkout .co-gift__qbtn { border: 1px solid var(--co-border); background: #fff; color: var(--pink); border-radius: 999px; padding: 8px 14px; font-size: 13px; font-weight: 700; cursor: pointer; transition: .15s ease; }
.bv-page--checkout .co-gift__qbtn:hover { background: var(--pink-soft); border-color: rgba(232,62,116,.4); }

/* Live preview card (overrides the old side-by-side preview styles above) */
.bv-page--checkout .co-gift__previewcol { position: sticky; top: 12px; }
.bv-page--checkout .co-gift__preview-label { display: block; font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--co-muted); margin: 0 0 8px; }
.bv-page--checkout .co-gift__preview { display: block; margin: 0; padding: 12px; background: linear-gradient(135deg, #FDE9F3, #FFF6E9); border: 1px solid #F4D3E4; border-radius: 16px; }
.bv-page--checkout .co-gift__card { flex: none; width: auto; min-height: 150px; border-radius: 12px; background: #fffdf9; border: 1px solid #F1E4D6; box-shadow: 0 10px 24px rgba(120,40,74,.10); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 18px 12px; position: relative; overflow: hidden; }
.bv-page--checkout .co-gift__card-sprig { position: absolute; top: 7px; right: 10px; font-size: 28px; line-height: 1; color: rgba(232,62,116,.20); }
.bv-page--checkout .co-gift__preview-text { margin: 0; max-width: 128px; text-align: center; font-family: Georgia, "Times New Roman", serif; font-style: italic; color: #6E2A46; font-size: 13.5px; line-height: 1.5; white-space: pre-wrap; z-index: 1; }
.bv-page--checkout .co-gift__preview-text.is-empty { color: var(--co-muted); }
.bv-page--checkout .co-gift__preview-heart { color: var(--pink); font-size: 18px; line-height: 1; }

/* 3 · Edit */
.bv-page--checkout .co-gift__note { display: flex; align-items: center; gap: 8px; margin: 10px 0 0; font-size: 13px; color: var(--co-muted); }
.bv-page--checkout .co-gift__note svg { color: var(--pink); flex: 0 0 auto; }

@media (max-width: 620px) {
    .bv-page--checkout .co-gift__occrow { grid-template-columns: 1fr; align-items: start; }
    .bv-page--checkout .co-gift__msggrid { grid-template-columns: 1fr; }
    .bv-page--checkout .co-gift__previewcol { position: static; }
    .bv-page--checkout .co-gift__card { min-height: 150px; }
    /* Full-width stacked card on mobile — let the message use more of it. */
    .bv-page--checkout .co-gift__preview-text { max-width: 320px; font-size: 15px; }
}

/* ----------------------------------------------------------------------------
   Mobile product card (productsgrid.jpeg). On phones (<=430px) the card swaps its
   desktop body for a centered layout: title, pink stars + count, FROM price,
   service-fee note, and a green "Get it delivered today". Applies to every
   .bv-card (catalog, landing, carousels, search, wishlist). Desktop is untouched.
   ---------------------------------------------------------------------------- */
/* Scoped to `.bv-card …` (not `.bv-page`) so it also applies on the home page,
   whose product sections live under `.bv-home`, not `.bv-page`. Specificity 0,2,0
   still beats the base `.bv-page .bv-card__body` by source order. */
.bv-card .bv-card__m { display: none; }
@media (max-width: 430px) {
    /* Only swap cards that actually have the mobile block — some templates emit a
       bare .bv-card without .bv-card__m (account "Send again?" closure, search
       previews); :has() keeps those from being blanked. */
    .bv-card:has(.bv-card__m) .bv-card__body { display: none; }
    .bv-card:has(.bv-card__m) { min-height: 0 !important; }
    .bv-card .bv-card__m {
        display: flex; flex-direction: column; align-items: center; text-align: center;
        gap: 5px; padding: 12px 12px 16px;
    }
    .bv-card .bv-card__m-title { font-family: var(--bv-sans); font-size: 15px; font-weight: 700; line-height: 1.3; color: #2A2424; margin: 0; }
    .bv-card .bv-card__m-rating { display: inline-flex; align-items: center; gap: 5px; font-size: 14px; line-height: 1; color: #6B6973; }
    .bv-card .bv-card__m-stars { color: #F5A623; letter-spacing: 1px; }
    .bv-card .bv-card__m-price { display: inline-flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 5px; font-size: 15px; color: #2A2424; }
    .bv-card .bv-card__m-price del { color: #6B6973; font-weight: 400; }
    .bv-card .bv-card__m-price strong { font-weight: 700; color: #2A2424; }
    .bv-card .bv-card__m-fee { font-size: 11px; color: #6B6973; }
    .bv-card .bv-card__m-deliver { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 700; color: #00754F; }
    .bv-card .bv-card__m-deliver svg { flex: 0 0 auto; }
}

/* ----------------------------------------------------------------------------
   Landing "delivery areas" directory — MOBILE ONLY (categories.jpeg). Collapsible
   category cards; each expands to a grid of city pill-links to sibling city
   landing pages. Hidden on desktop.
   ---------------------------------------------------------------------------- */
.bv-lp__citydir { display: none; }
@media (max-width: 768px) {
    .bv-lp__citydir { display: block; max-width: var(--bv-container); margin: 4px auto 0; padding: 8px var(--bv-container-pad) 4px; }
    .bv-lp__citydir-cat { border: 1px solid #F0D9E5; border-radius: 14px; background: #fff; margin-bottom: 12px; overflow: hidden; }
    .bv-lp__citydir-head { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 18px; background: var(--lp-pink-bg); }
    .bv-lp__citydir-head::-webkit-details-marker { display: none; }
    .bv-lp__citydir-name { font-family: var(--lp-serif); font-weight: 600; font-size: 17px; line-height: 1.25; color: var(--lp-ink); }
    .bv-lp__citydir-ico { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--lp-pink); color: var(--lp-pink); display: inline-flex; align-items: center; justify-content: center; font-size: 20px; line-height: 1; }
    .bv-lp__citydir-ico::before { content: '+'; }
    .bv-lp__citydir-cat[open] .bv-lp__citydir-ico::before { content: '\2212'; }
    .bv-lp__citydir-pills { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; padding: 18px 16px 22px; }
    .bv-lp__citydir-pill { display: inline-flex; align-items: center; padding: 10px 18px; border-radius: 999px; background: var(--lp-pink); color: #fff; font-size: 14px; font-weight: 600; line-height: 1.2; text-decoration: none; transition: filter .15s ease; }
    .bv-lp__citydir-pill:hover { filter: brightness(.94); }
}

@media (max-width:430px) {
    .bv-zipform__input {
        padding-top: 15px !important;
        padding-bottom: 15px !important;
    }

    .bv-fresh {
        flex-wrap: wrap;
    }

    .bv-fresh__text {
        width: 75%;
        text-align: left;
    }

    .bv-fresh__form {
        width: 100%;
    }
}

@media (max-width:700px) {
    .single-product .content-area {
        width: 100%;
        margin-left: 0;
    }
}

.co-card--tip {
    background:#FEF7F7 !important;
}

/* =============================================================
   LANDING (city) MOBILE RESKIN (≤600px) — mobile-native storefront
   Matches html/bloom-mobile-storefront.html. An older ≤430 rule HID the
   hero text + areas to push products up; the mobile mockup leads with a
   hero card + ZIP, so this block (appended last, and with higher-specificity
   / !important where it must beat that rule) restores + restyles them for
   phones. Desktop untouched.
   ============================================================= */
@media (max-width: 600px) {
    .bv-lp__hero--city {
        padding: 16px 16px 4px;
        background:
            radial-gradient(circle at 92% 8%, rgba(246, 190, 211, .55), transparent 44%),
            linear-gradient(180deg, #fffafc, #fff4f6);
    }
    /* Restore the collapsed hero and present the value prop + ZIP as a card. */
    .bv-lp__hero--city .bv-lp__hero-inner {
        display: block !important;
        max-height: none !important;
        overflow: visible !important;
        border-radius: 0;
        gap: 0;
    }
    .bv-lp__hero--city .bv-lp__hero-text {
        display: flex !important;
        gap: 14px !important;
        background: linear-gradient(135deg, #fff, #fff2f7);
        border: 1px solid #F5D9E6;
        border-radius: 22px;
        padding: 18px 16px;
        box-shadow: 0 16px 42px rgba(74, 30, 46, .10);
    }
    .bv-lp__hero--city .bv-lp__title { font-size: 27px; line-height: 1.08; }
    .bv-lp__hero-text .bv-lp__lead { font-size: 14px; }
    .bv-lp__zipcard { padding: 14px; border-radius: 16px; }
    .bv-lp__zipcard .bv-lp__zip { flex-direction: column; gap: 10px; }
    /* flex:none so the column-axis flex-basis (200px) doesn't stretch the input's
       height — keep it a 54px field, full width. */
    .bv-lp__zipcard .bv-lp__zip-input,
    .bv-lp__zipcard .bv-lp__zip-btn { flex: none; width: 100%; height: 54px; }
    .bv-lp__minitrust { grid-template-columns: 1fr 1fr; gap: 12px; }
    /* Local "serving today" media sits below the card as a compact banner. */
    .bv-lp__hero--city .bv-lp__hero-media {
        min-height: 200px;
        border-radius: 18px;
        margin-top: 14px;
    }

    /* "Delivering across {city}" strip — restore, stacked + compact. */
    .bv-lp__areas { display: block; }
    .bv-lp__areas-inner { flex-direction: column; align-items: flex-start; gap: 12px; padding: 16px; }
    .bv-lp__areas-ico img { width: 64px; }

    /* Product grid cards — rounded / bordered to match the home reskin. */
    .bv-lp__grid-title { margin-bottom: 16px; font-size: 22px; }
    .bv-lp__grid .bv-card {
        border: 1px solid #EFE2E8;
        border-radius: 18px;
        box-shadow: 0 6px 18px rgba(58, 25, 38, .05);
        overflow: hidden;
    }
}
/* =============================================================
   MOBILE APP CHROME — delivery bar (top) + bottom nav (fixed).
   Desktop hides both; shown only on phones. Markup lives in
   header-v2.php (delivery bar) and footer-v2.php (bottom nav).
   ============================================================= */
.bv-delivery-bar,
.bv-botnav { display: none; }

@media (max-width: 600px) {
    /* ---- top delivery bar (maroon, scrolls away) ---- */
    .bv-delivery-bar {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        min-height: 34px;
        padding: 6px 12px;
        background: #8F1F4D;
        color: #fff;
        font-size: 12px;
        font-weight: 700;
        letter-spacing: .01em;
        text-align: center;
    }
    .bv-delivery-bar svg { width: 15px; height: 15px; flex-shrink: 0; }
    .bv-delivery-bar__cta {
        border: 0;
        background: transparent;
        color: #fff;
        font-weight: 800;
        font-size: 12px;
        text-decoration: underline;
        padding: 2px 4px;
        white-space: nowrap;
        cursor: pointer;
    }

    /* ---- fixed bottom nav (app shell) ---- */
    .bv-botnav {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1000;
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        background: rgba(255, 255, 255, .97);
        -webkit-backdrop-filter: blur(18px);
        backdrop-filter: blur(18px);
        border-top: 1px solid #EADFE2;
        padding: 6px 8px calc(6px + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -6px 24px rgba(58, 25, 38, .08);
    }
    .bv-botnav__item {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 3px;
        min-height: 52px;
        border: 0;
        background: transparent;
        color: #75666D;
        font-size: 10.5px;
        font-weight: 700;
        line-height: 1;
        text-decoration: none;
        border-radius: 12px;
    }
    .bv-botnav__item svg { width: 22px; height: 22px; }
    .bv-botnav__item.is-active { color: #8F1F4D; background: #FCEFF5; }

    /* content clears the fixed nav */
    body.bv-body { padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px)); }
    /* The Crisp chat launcher is lifted above the nav by JS in footer-v2.php
       (its DOM classes are hashed and its nesting shifts, so it's matched by
       size at runtime rather than by a CSS selector). */

    /* Real-device QA fixes:
       - footer bottom strip wrapped mid-word ("Made / with…") — stack it;
       - "SHOP BY FLOWER TYPE" eyebrow is width:30% (desktop rule) which forces
         one word per line on phones. */
    .bv-f2-bottom > div { flex-direction: column; align-items: center; gap: 10px; text-align: center; }
    .flower-type .bv-eyebrow--pink { width: auto; }
}
/* Owner-provided (869e8t4ah): product-page gallery thumbnail tweak on phones (<=430px). */
@media screen and (max-width:430px){
    .bv-pd__thumb img{
        height: auto;
        object-fit: cover;
        position: relative;
        bottom: 50%;
    }
}

/* Call-back bubble + modal close button (owner 2026-08-12).
   The parent theme positions .call-back-feature only inside @media (min-width:993px)
   (modal.css:124) at right:30px/bottom:30px, so these overrides are deliberately at top
   level — the existing .call-back-feature{order:16} block lives inside a max-width:600px
   query and would never reach the desktop rule. */
.call-back-feature{
    right: 70px;
    bottom: 30px;
}

/* `div` prefix is load-bearing. As a bare `.call-back-feature button` (0,1,1) this lost on
   prod and the label computed rgb(255,255,255) — white on a pale background, effectively
   invisible. The declaration IS last in the served bloom-v2.min.css with nothing after it,
   and the child sheet loads after the parent's modal.min.css, so neither source order nor a
   duplicate explains it; the overriding rule was not identified (one candidate, Crisp's
   client_default_*.css, is cross-origin and unreadable). Measured on the live page: adding a
   single element to the selector flips the computed colour to rgb(42,36,36). Keep the `div`. */
div.call-back-feature button{
    color:#2A2424
}

/* Must out-specify the parent's own rule for this button — modal.css:
       dialog.shoptimizer-modal form[method="dialog"] button { position: fixed }
   which is (0,1,3). A bare .shoptimizer-modal--button_close is (0,1,0), so `position`
   stayed `fixed` and top/right resolved against the VIEWPORT instead of the modal.
   The close button is inside that <form method="dialog">, so the parent rule always
   matched it. Adding the same ancestors + the class gives (0,2,3) and wins without
   resorting to !important. */
dialog.shoptimizer-modal form[method="dialog"] button.shoptimizer-modal--button_close{
    top: 15px;
    right: -20px;
    position: absolute;
}

/* ===========================================================================
   Product-text-variants on a landing URL: the three trust pills.

   The plugin ships no CSS of its own — the Blossom install dresses these in its
   child theme, in its pink (#E71F61 on #FDF2F5). Here they are Bloom's.

   Aligned with "You May Also Like" (owner, 2026-09-16), and aligned the way that
   block is rather than by copying the numbers it happens to produce: the same
   --bv-h2-inner / --bv-h2-pad the product-extras wrapper uses, so the row keeps
   tracking that column if the grid is ever retuned. The pills cannot simply live
   inside that wrapper — the plugin prints them straight onto
   woocommerce_after_single_product_summary, outside anything this theme owns.

   Colour tokens carry literal fallbacks for the same reason: --bv-* are scoped to
   .bv-page, which is not an ancestor here (see the note at line ~462). The two
   grid tokens above are on :root, so they resolve anywhere.
   =========================================================================== */
.ptv-trust-block {
    box-sizing: border-box;
    max-width: var(--bv-h2-inner);
    margin: 22px auto 0;
    padding: 0 var(--bv-h2-pad);
}

.ptv-trust-block__list {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Dashed, like Blossom's, because the dash is what keeps a reassurance from reading as a
   button — three solid pink capsules under the buy box would compete with Add to cart.
   Equal thirds: flex-basis 0 so the three share the row evenly whatever the phrases are. */
.ptv-trust-block__pill {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    flex: 1 1 0;
    min-width: 0;
    padding: 16px 20px;
    border: 2px dashed #F4B7CE;
    border-radius: 14px;
    background: var(--bv-pink-50, #FFEAF3);
    color: #C21E5A;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 15px;
    line-height: 1.35;
    font-weight: 500;
    text-align: center;
}

.ptv-trust-block__pill svg {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    color: var(--bv-pink, #E83E74);
}

.ptv-trust-block__label {
    min-width: 0;
}

@media (max-width: 700px) {
    .ptv-trust-block { margin-top: 16px; }
    .ptv-trust-block__list { gap: 8px; }
    .ptv-trust-block__pill {
        flex: 1 1 100%;
        justify-content: flex-start;
        padding: 12px 14px;
        font-size: 14px;
        text-align: left;
    }
}
