:root{
  --cream:#FFFBF7;
  --blush:#F8E8EE;
  --blush-deep:#FDCEDF;
  --berry:#ED8BAF;
  --gold:#C9A15B;
  --sage:#8A9A7E;
  --line:#e8d7dc;
  --radius:2px;
}

@font-face{
  font-family:'Perandory SemiCondensed';
  src:url('fonts/PerandorySemiCondensed.otf') format('opentype');
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--cream);
  color:var(--berry);
  font-family:'Jost', sans-serif;
  font-weight:400;
  line-height:1.6;
  overflow-x:hidden;
}
h1,h2,h3,.serif{
  font-family:'Cormorant Garamond', serif;
  font-weight:500;
  letter-spacing:.01em;
}
.eyebrow{
  font-family:'Jost',sans-serif;
  text-transform:uppercase;
  letter-spacing:.28em;
  font-size:.68rem;
  color:var(--berry);
  font-weight:500;
}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
.wrap{max-width:1280px; margin:0 auto; padding:0 24px;}
button{font-family:inherit; cursor:pointer; border:none; background:none;}

.butterfly{
  position:absolute;
  width:22px; height:22px;
  opacity:.55;
  animation:flutter 6s ease-in-out infinite;
  pointer-events:none;
}
@keyframes flutter{
  0%,100%{ transform: translateY(0) rotate(-4deg); }
  50%{ transform: translateY(-14px) rotate(6deg); }
}
@media (prefers-reduced-motion: reduce){
  .butterfly{animation:none;}
  *{animation:none !important; transition:none !important;}
}

.topbar{
  background:var(--berry);
  color:#fff8f5;
  text-align:center;
  font-size:.78rem;
  letter-spacing:.04em;
  padding:9px 20px;
}
.topbar b{color:var(--blush);}

header.site{
  position:sticky; top:0; z-index:50;
  background:rgba(255,251,247,.92);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 24px;
  max-width:1280px; margin:0 auto;
}
.logo{display:flex; align-items:center; gap:10px;}
.logo-mark{
  width:42px;height:42px;border-radius:50%;
  background:var(--blush-deep);
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.logo-mark img{width:100%; height:100%; object-fit:cover; display:block;}
.logo-name{font-family:'Beau Rivage', cursive; font-weight:400; font-style:normal; font-size:2rem; line-height:.85;}
.logo-name small{
  display:block; font-family:'Jost',sans-serif; font-size:.6rem;
  letter-spacing:.22em; text-transform:uppercase; color:var(--berry); margin-top:3px;
}
.nav-links{display:flex; gap:30px; font-size:.85rem; letter-spacing:.02em;}
.nav-links a{position:relative; padding-bottom:3px;}
.nav-links a.current{color:var(--berry);}
.nav-links a::after{
  content:''; position:absolute; left:0; bottom:0; height:1px; width:0;
  background:var(--berry); transition:width .25s ease;
}
.nav-links a:hover::after, .nav-links a.current::after{width:100%;}
.nav-icons{display:flex; align-items:center; gap:18px;}
.cart-btn{
  position:relative;
  width:38px;height:38px;border:1px solid var(--line);border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:#fff;
}
.cart-count{
  position:absolute; top:-6px; right:-6px;
  background:var(--berry); color:#fff;
  font-size:.62rem; width:17px;height:17px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}
/* FR/EN language switch — sits in nav-icons, visible at every screen size */
.lang-switch{
  display:flex; align-items:center;
  border:1px solid var(--line); border-radius:30px;
  overflow:hidden; background:#fff; flex-shrink:0;
}
.lang-btn{
  padding:6px 11px; font-size:.66rem; font-weight:500;
  letter-spacing:.06em; text-transform:uppercase;
  color:var(--berry); background:transparent; transition:all .2s ease;
}
.lang-btn.active{background:var(--berry); color:#fff;}
header.site.transparent .lang-switch{background:rgba(255,255,255,.85); border-color:rgba(237,139,175,.35);}

.menu-toggle{display:none;}
.mobile-nav{
  display:none; flex-direction:column;
  background:var(--cream); border-top:1px solid var(--line);
  padding:8px 24px 18px;
}
.mobile-nav.open{display:flex;}
.mobile-nav a{padding:12px 0; font-size:.95rem; border-bottom:1px solid var(--line);}
.mobile-nav a:last-child{border-bottom:none;}

.page-head{
  padding:60px 24px 40px; text-align:center;
  background:radial-gradient(ellipse at 30% 0%, var(--blush) 0%, transparent 60%), var(--cream);
}
.page-head .eyebrow{display:block; margin-bottom:14px;}
.page-head h1{font-size:clamp(2rem,4.6vw,3.2rem); color:var(--berry);}
.page-head p{max-width:480px; margin:16px auto 0; color:var(--berry); font-size:.95rem;}

.hero{
  position:relative;
  padding:90px 24px 70px;
  text-align:center;
  background:
    radial-gradient(ellipse at 20% 0%, var(--blush) 0%, transparent 55%),
    radial-gradient(ellipse at 85% 15%, var(--blush-deep) 0%, transparent 45%),
    var(--cream);
  overflow:hidden;
}
.hero .eyebrow{display:block; margin-bottom:18px;}
.hero h1{font-size:clamp(2.4rem, 6vw, 4.4rem); max-width:820px; margin:0 auto; color:var(--berry);}
.hero h1 em{color:var(--berry); font-size:1.25em; line-height:.85; display:inline-block;}
.script{font-family:'Beau Rivage', cursive; font-weight:400; font-style:normal;}

/* Full-bleed home hero, House of CB style */
.hero-full{
  position:relative;
  min-height:100vh;
  min-height:100svh; /* stable viewport height — avoids the address-bar resize jump on mobile */
  display:flex;
  align-items:flex-start;
  justify-content:center;
  text-align:center;
  overflow:hidden;
}

/* Auto-cycling hero background slideshow — slides in from the right, exits to the left */
.hero-bg{
  position:absolute; inset:0;
  background-size:cover;
  background-repeat:no-repeat;
  transform:translateX(100%);
  transition:transform 1s ease;
  will-change:transform;
  z-index:0;
}
.hero-bg.queued{transform:translateX(100%);}
.hero-bg.active{transform:translateX(0);}
.hero-bg.exiting{transform:translateX(-100%);}
.hero-bg.no-transition{transition:none;}
.hero-bg-1{background-image:url('hero-flowers-border.jpg'); background-position:center bottom;}
.hero-bg-2{background-image:url('hero-campaign-pajama-v3.jpg'); background-position:22% center; background-color:#e9e4dd;}
.hero-bg-4{background-image:url('hero-campaign-kneeling.jpg'); background-position:15% center;}
.hero-bg-5{background-image:url('hero-campaign-bite.jpg'); background-position:left center;}
.hero-full-content{
  position:relative;
  z-index:1;
  padding:130px 24px 50px;
  max-width:600px;
}
.hero-full-content::before{
  content:'';
  position:absolute;
  z-index:-1;
  inset:-40px -60px;
  background:radial-gradient(ellipse 65% 62% at 50% 42%, rgba(255,255,255,.9) 0%, rgba(255,255,255,.6) 38%, rgba(255,255,255,.22) 62%, rgba(255,255,255,0) 80%);
  pointer-events:none;
}
.hero-brand{
  position:relative;
  font-family:'Perandory SemiCondensed', 'Bodoni Moda', serif;
  font-weight:400;
  letter-spacing:.03em;
  text-transform:uppercase;
  font-size:clamp(3.5rem, 11vw, 7rem); line-height:.85; color:var(--berry);
  text-shadow:0 0 26px rgba(255,255,255,.95), 0 0 10px rgba(255,255,255,.95), 0 2px 4px rgba(255,255,255,.8);
}
.hero-by{
  position:relative;
  margin-top:2px;
  font-family:'Alex Brush', cursive;
  font-weight:400;
  font-size:clamp(1.8rem, 5.5vw, 3.2rem);
  color:var(--berry);
  text-shadow:0 0 3px #fff, 0 0 8px #fff, 0 0 16px #fff, 0 0 26px rgba(255,255,255,.9);
}
.hero-full-desc{
  position:relative;
  max-width:400px; margin:18px auto 24px;
  font-family:'Cormorant Garamond',serif; font-style:italic;
  font-size:1rem; line-height:1.55; color:var(--berry);
  text-shadow:0 0 3px #fff, 0 0 8px #fff, 0 0 16px #fff, 0 0 26px rgba(255,255,255,.9);
}
.btn-ghost{
  position:relative;
  display:inline-block; padding:14px 40px; font-size:.75rem;
  letter-spacing:.2em; text-transform:uppercase;
  border:1px solid var(--berry); color:var(--berry); background:rgba(255,255,255,.97);
  box-shadow:0 4px 22px rgba(46,20,32,.16);
  transition:all .25s ease;
}
.btn-ghost:hover{background:var(--berry); color:#fff;}

/* Rotating brand seal — floating badge made from the real logo artwork */
.brand-seal{
  position:absolute;
  right:5%; bottom:7%;
  width:130px; height:130px;
  z-index:4;
  animation:seal-spin 22s linear infinite;
  filter:drop-shadow(0 8px 20px rgba(46,20,32,.28));
}
.brand-seal img{width:100%; height:100%; border-radius:50%; display:block;}
.brand-seal:hover{animation-play-state:paused;}
@keyframes seal-spin{
  from{transform:rotate(0deg);}
  to{transform:rotate(360deg);}
}
@media (max-width:768px){
  .brand-seal{width:88px; height:88px; right:6%; bottom:4%;}
}
@media (prefers-reduced-motion:reduce){
  .brand-seal{animation:none;}
}

header.site.transparent{
  position:absolute; top:0; left:0; right:0; z-index:50;
  background:transparent; backdrop-filter:none; border-bottom:1px solid transparent;
  transition:background .3s ease, border-color .3s ease;
}
header.site.transparent .logo-name,
header.site.transparent .logo-name small,
header.site.transparent .nav-links a,
header.site.transparent .menu-toggle{color:var(--berry);}
header.site.transparent.scrolled{
  position:fixed;
  background:rgba(255,251,247,.92); backdrop-filter:blur(8px); border-bottom:1px solid var(--line);
}
.hero p{max-width:480px; margin:22px auto 34px; color:var(--berry); font-size:1.02rem;}
.hero-ctas{display:flex; gap:16px; justify-content:center; flex-wrap:wrap;}
.btn{
  display:inline-block; padding:14px 32px; font-size:.78rem;
  letter-spacing:.16em; text-transform:uppercase; border-radius:var(--radius);
  transition:all .25s ease;
}
.btn-primary{background:var(--berry); color:#fff;}
.btn-primary:hover{background:var(--blush-deep); color:var(--berry);}
.btn-outline{border:1px solid var(--berry); color:var(--berry); background:transparent;}
.btn-outline:hover{background:var(--berry); color:#fff;}
.btn-outline.disabled{opacity:.45; cursor:not-allowed; pointer-events:none;}

.hero-strip{
  margin-top:56px; display:flex; justify-content:center; gap:48px; flex-wrap:wrap;
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--berry);
}
.hero-strip span{display:flex; align-items:center; gap:8px;}
.hero-strip .dot{width:5px;height:5px;background:var(--gold);border-radius:50%;}

section{padding:86px 0;}
.section-head{text-align:center; max-width:600px; margin:0 auto 48px;}
.section-head h2{font-size:clamp(1.9rem,3.4vw,2.7rem); margin-top:10px; color:var(--berry);}
.section-head p{color:var(--berry); margin-top:14px; font-size:.95rem;}

.cat-grid{display:grid; grid-template-columns:repeat(5,1fr); gap:20px; max-width:1180px; margin:0 auto; padding:0 24px;}
.cat-card{
  background:var(--cream); border:1px solid var(--line);
  padding:40px 18px 30px; text-align:center; position:relative;
  transition:transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}
.cat-card:hover{transform:translateY(-6px); box-shadow:0 18px 34px rgba(46,20,32,.1); border-color:var(--blush-deep);}
.cat-icon{
  width:74px; height:74px; margin:0 auto 20px; border-radius:50%;
  background:var(--blush); display:flex; align-items:center; justify-content:center;
  transition:background .35s ease;
}
.cat-card:hover .cat-icon{background:var(--blush-deep);}
.cat-icon svg{width:30px; height:30px; fill:none; stroke:var(--berry); stroke-width:1.3; stroke-linecap:round; stroke-linejoin:round;}
.cat-icon svg .dot{fill:var(--berry); stroke:none;}
.cat-card h3{font-size:1.08rem; color:var(--berry);}
.cat-card span{display:block; margin-top:8px; font-size:.7rem; color:var(--berry); letter-spacing:.04em; opacity:.7;}
.cat-tag{
  position:absolute; top:14px; right:14px; font-size:.56rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--gold); border:1px solid var(--gold); padding:3px 9px; border-radius:20px;
}

/* Filter bar (collection page) */
.filter-bar{
  display:flex; gap:10px; flex-wrap:wrap; justify-content:center;
  padding:0 24px 48px;
}
.filter-pill{
  padding:10px 20px; border:1px solid var(--line); border-radius:30px;
  font-size:.8rem; letter-spacing:.03em; background:#fff; transition:all .2s;
}
.filter-pill.active, .filter-pill:hover{border-color:var(--berry); background:var(--berry); color:#fff;}
.filter-pill.filter-pill-week{
  border-color:var(--gold); background:var(--gold); color:#fff; font-weight:500;
  animation:pulseWeek 2.2s ease-in-out infinite;
}
.filter-pill.filter-pill-week::before{content:"✨ ";}
.filter-pill.filter-pill-week:hover{background:var(--berry); border-color:var(--berry);}
@keyframes pulseWeek{
  0%, 100%{box-shadow:0 0 0 0 rgba(201,161,91,.5);}
  50%{box-shadow:0 0 0 7px rgba(201,161,91,0);}
}
.result-count{text-align:center; font-size:.78rem; color:var(--berry); margin-bottom:28px; letter-spacing:.05em;}

.feature-bouquet{
  display:grid; grid-template-columns:1fr 1.1fr; gap:50px; align-items:start;
  background:#fff; border:1px solid var(--line); padding:34px; margin-bottom:40px;
}
.feature-bouquet-info{padding-top:8px;}
.feature-bouquet-img{aspect-ratio:3/4; overflow:hidden;}
.feature-bouquet-img img{width:100%; height:100%; object-fit:cover; object-position:center 18%; display:block;}
.feature-bouquet-badge{
  display:inline-block; font-family:'Jost',sans-serif; text-transform:uppercase; letter-spacing:.14em;
  font-size:.66rem; color:var(--gold); border:1px solid var(--gold); padding:4px 13px; border-radius:20px; margin-bottom:18px;
}
.feature-bouquet-info h3{font-family:'Cormorant Garamond',serif; font-size:1.8rem; color:var(--berry); margin-bottom:14px; line-height:1.15;}
.feature-bouquet-info p{color:var(--berry); opacity:.85; line-height:1.65; margin-bottom:26px; font-size:.98rem;}
@media (max-width:760px){
  .feature-bouquet{grid-template-columns:1fr; padding:22px; gap:24px;}
}

.bouquet-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:28px;}
.bouquet-grid-2{grid-template-columns:repeat(2,1fr); max-width:760px; margin:0 auto; gap:32px;}
.bouquet-card{background:#fff; border:1px solid var(--line); transition:opacity .25s ease, transform .25s ease, box-shadow .25s ease; cursor:pointer;}
.bouquet-card.hide{display:none;}
.bouquet-card:hover{transform:translateY(-3px); box-shadow:0 10px 24px rgba(46,20,32,.12);}
.bouquet-img{
  aspect-ratio:1/1; background:linear-gradient(135deg, var(--blush-deep), var(--blush));
  display:flex; align-items:center; justify-content:center; font-size:2.4rem; position:relative; overflow:hidden;
}
.bouquet-img img{width:100%; height:100%; object-fit:cover; display:block;}
.sold-out-tag{
  position:absolute; top:10px; left:10px; background:var(--berry); color:#fff;
  font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; padding:4px 9px;
}
.cat-badge{
  position:absolute; top:10px; right:10px; background:rgba(255,255,255,.85); color:var(--berry);
  font-size:.6rem; letter-spacing:.08em; text-transform:uppercase; padding:4px 9px; border-radius:20px;
}
.bouquet-info{padding:18px 20px 22px;}
.bouquet-info h4{font-family:'Cormorant Garamond',serif; font-size:1.25rem; color:var(--berry);}
.bouquet-price{color:var(--berry); font-weight:500; margin-top:6px; font-size:.95rem;}
.custom-field{margin:12px 0 4px;}
.custom-field label{display:block; font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--berry); margin-bottom:6px;}
.custom-field input[type=text]{font-size:.85rem; padding:10px 12px;}
.custom-preview{font-family:'Cormorant Garamond',serif; font-style:italic; font-size:.85rem; color:var(--berry); opacity:.8; margin-top:4px; min-height:1.3em;}
.lead-time-note{color:var(--gold); font-size:.7rem; letter-spacing:.02em; margin-top:7px;}
.bouquet-description{color:var(--berry); font-size:.85rem; line-height:1.5; margin-top:8px; opacity:.85;}
.bouquet-info .btn{margin-top:14px; width:100%; text-align:center; padding:11px;}
.no-results{text-align:center; padding:60px 20px; color:var(--berry); font-size:.95rem; display:none;}

/* Horizontal swipeable carousel variant — homepage teasers & devis previews, all screen sizes */
.bouquet-grid.is-carousel{
  position:relative;
  display:flex;
  flex-wrap:nowrap;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  gap:16px;
  padding:4px 24px 14px;
  margin:0 -24px;
  scrollbar-width:none;
}
.bouquet-grid.is-carousel::-webkit-scrollbar{display:none;}
.bouquet-grid.is-carousel .bouquet-card{
  flex:0 0 72%;
  scroll-snap-align:start;
}
.carousel-arrow{
  display:flex; align-items:center; justify-content:center;
  position:absolute; top:38%; z-index:2;
  width:36px; height:36px; border-radius:50%;
  border:1px solid var(--line); background:rgba(255,255,255,.92);
  color:var(--berry); font-size:1.15rem; line-height:1; padding:0;
  cursor:pointer;
  box-shadow:0 4px 12px rgba(46,20,32,.12);
}
.carousel-arrow:hover, .carousel-arrow:active{background:var(--blush);}
.carousel-arrow-prev{left:2px;}
.carousel-arrow-next{right:2px;}

/* Tablet: ~2 cards visible with a peek of the next one */
@media (min-width:561px){
  .bouquet-grid.is-carousel{gap:20px; padding:4px 24px 16px;}
  .bouquet-grid.is-carousel .bouquet-card{flex-basis:44%;}
}
/* Desktop: ~3 cards visible with a peek of the next one, arrows sit just outside the wrap padding */
@media (min-width:921px){
  .bouquet-grid.is-carousel{gap:24px; padding:4px 24px 18px;}
  .bouquet-grid.is-carousel .bouquet-card{flex-basis:calc(31% - 4px);}
  .carousel-arrow{width:44px; height:44px; font-size:1.3rem;}
  .carousel-arrow-prev{left:10px;}
  .carousel-arrow-next{right:10px;}
}

.customizer{background:var(--blush); padding:80px 0;}
.cz-shell{background:#fff; display:grid; grid-template-columns:1fr 1fr; border:1px solid var(--line);}
.cz-visual{
  background:linear-gradient(160deg,var(--blush-deep),var(--berry) 140%);
  display:flex; align-items:center; justify-content:center; color:#fff8f5; text-align:center;
  padding:50px; position:relative; min-height:420px;
}
.cz-visual .serif{font-size:2rem; max-width:280px;}
.cz-form{padding:48px;}
.cz-form h3{font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--berry); margin-bottom:6px;}
.cz-form .price-live{font-family:'Cormorant Garamond',serif; font-size:2.1rem; color:var(--berry); margin-bottom:24px;}
.field{margin-bottom:26px;}
.field-label{font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--berry); margin-bottom:10px; display:block;}
.pill-row{display:flex; gap:10px; flex-wrap:wrap;}
.pill{padding:9px 18px; border:1px solid var(--line); border-radius:30px; font-size:.85rem; background:#fff; transition:all .2s;}
.pill.active, .pill:hover{border-color:var(--berry); background:var(--berry); color:#fff;}
.swatch-row{display:flex; gap:10px; flex-wrap:wrap;}
.swatch{width:30px;height:30px;border-radius:50%; border:2px solid transparent; cursor:pointer; box-shadow:0 0 0 1px var(--line);}
.swatch.active{border-color:var(--gold); box-shadow:0 0 0 2px var(--gold);}
.addon-list{display:flex; flex-direction:column; gap:2px;}
.addon-row{display:flex; align-items:center; justify-content:space-between; padding:11px 0; border-bottom:1px dashed var(--line); font-size:.88rem;}
.addon-row label{display:flex; align-items:center; gap:10px; cursor:pointer;}
.addon-price{color:var(--berry); font-size:.8rem;}
.addon-text-row{padding:0 0 11px;}
.addon-text-row .upsell-text-input{font-size:.82rem; padding:9px 12px;}
input[type=checkbox]{accent-color:var(--berry); width:16px; height:16px;}
textarea, input[type=text]{
  width:100%; border:1px solid var(--line); padding:12px 14px;
  font-family:'Jost',sans-serif; font-size:.88rem; border-radius:var(--radius); background:#fffdfb;
}
.cz-add-btn{width:100%; text-align:center; padding:16px; margin-top:10px; font-size:.82rem;}

.delivery{display:grid; grid-template-columns:1fr 1fr; gap:0; border:1px solid var(--line);}
.delivery-panel{padding:48px;}
.delivery-panel.dark{background:var(--berry); color:#fdf3f0;}
.delivery-panel.dark .eyebrow{color:var(--gold);}
.sched-row{display:flex; justify-content:space-between; align-items:center; padding:14px 0; border-bottom:1px solid rgba(255,255,255,.18); font-size:.9rem;}
.sched-row:last-child{border-bottom:none;}
.sched-row .day{font-family:'Cormorant Garamond',serif; font-size:1.1rem;}
.note-box{margin-top:26px; padding:16px 18px; background:rgba(255,255,255,.08); border-left:2px solid var(--gold); font-size:.82rem; line-height:1.6;}
.picker-field{margin-bottom:20px;}
.picker-field label{display:block; font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:var(--berry); margin-bottom:8px;}
.picker-row{display:flex; gap:12px;}
.picker-row input{flex:1; padding:12px 14px; border:1px solid var(--line); font-family:inherit; font-size:.88rem;}
.delay-flag{display:inline-flex; align-items:center; gap:8px; background:var(--blush); color:var(--berry); font-size:.78rem; padding:9px 14px; margin-top:6px; border-radius:30px;}
.delivery-moved-note{border:1px solid var(--line); padding:40px; text-align:center;}
.delivery-moved-note p{font-size:.95rem; color:var(--berry); max-width:520px; margin:0 auto;}

/* Delivery/pickup scheduling modal — shown from the cart before checkout,
   for every purchase (see cart.js). Reuses the upsell modal chrome and the
   delivery / delivery-panel / picker-field / sched-row / note-box building
   blocks from the panel above, just re-scoped to fit inside a modal. */
.delivery-overlay{
  position:fixed; inset:0; background:rgba(40,20,28,.5); z-index:210;
  display:none; align-items:center; justify-content:center; padding:20px;
}
.delivery-overlay.open{display:flex;}
.delivery-modal{
  background:var(--cream); max-width:760px; width:100%; max-height:90vh; overflow-y:auto;
  border:1px solid var(--line);
}
.delivery-modal .delivery{border:none;}
.delivery-modal .delivery-panel{padding:28px;}
.delivery-modal .upsell-head .eyebrow{display:block; margin-bottom:8px;}
.delivery-field-error{color:#a23b3b; font-size:.8rem; margin-top:12px; display:none;}

.testi-marquee{overflow:hidden; padding:6px 0 20px; -webkit-mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);}
.testi-track{display:flex; gap:24px; width:max-content; padding:0 24px; animation:testi-scroll 32s linear infinite;}
.testi-marquee:hover .testi-track{animation-play-state:paused;}
.testi-card{min-width:300px; flex-shrink:0; background:#fff; border:1px solid var(--line); padding:32px 28px;}

@keyframes testi-scroll{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}

@media (prefers-reduced-motion: reduce){
  .testi-track{animation:none;}
}
.stars{color:var(--gold); letter-spacing:2px; margin-bottom:14px;}
.testi-card p{font-family:'Cormorant Garamond',serif; font-size:1.2rem; font-style:italic; color:var(--berry);}
.testi-card .who{margin-top:16px; font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; color:var(--berry);}

.cart-overlay{position:fixed; inset:0; background:rgba(40,20,28,.45); opacity:0; pointer-events:none; transition:opacity .3s ease; z-index:100;}
.cart-overlay.open{opacity:1; pointer-events:auto;}
.cart-drawer{
  position:fixed; top:0; right:0; height:100%; width:min(420px,92vw); background:var(--cream); z-index:101;
  transform:translateX(100%); transition:transform .35s ease; display:flex; flex-direction:column;
}
.cart-drawer.open{transform:translateX(0);}
.cart-head{padding:26px 26px 18px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:center;}
.cart-head h3{font-size:1.4rem;}
.close-x{font-size:1.3rem; cursor:pointer; color:var(--berry);}
.cart-body{flex:1; overflow-y:auto; padding:20px 26px;}
.cart-line{display:flex; gap:14px; padding:16px 0; border-bottom:1px solid var(--line);}
.cart-thumb{width:64px;height:64px; background:var(--blush-deep); flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:1.3rem;}
.cart-line-info{flex:1; font-size:.85rem;}
.cart-line-info .name{font-family:'Cormorant Garamond',serif; font-size:1.05rem; margin-bottom:3px;}
.cart-line-info .meta{color:var(--berry); font-size:.75rem; line-height:1.5;}
.cart-empty{text-align:center; color:var(--berry); padding:60px 20px; font-size:.9rem;}
.tip-box{margin:18px 0; padding:18px; background:var(--blush); border-radius:var(--radius);}
.tip-box p{font-family:'Cormorant Garamond',serif; font-size:1.05rem; color:var(--berry); margin-bottom:12px;}
.tip-pills{display:flex; gap:8px; flex-wrap:wrap;}
.tip-pills .pill{background:#fff; font-size:.78rem; padding:7px 14px;}
.tip-custom-row{margin-top:10px;}
.tip-custom-row input[type=number]{
  width:auto; max-width:140px; border:1px solid var(--line); padding:9px 12px;
  font-family:'Jost',sans-serif; font-size:.85rem; border-radius:var(--radius); background:#fffdfb;
}
.cart-foot{padding:20px 26px 28px; border-top:1px solid var(--line);}
.cart-total-row{display:flex; justify-content:space-between; font-size:.95rem; margin-bottom:16px;}
.cart-total-row b{font-family:'Cormorant Garamond',serif; font-size:1.3rem; color:var(--berry);}

footer{background:var(--berry); color:#e9dcd7; padding:64px 0 28px;}

/* Upsell modal */
.upsell-overlay{
  position:fixed; inset:0; background:rgba(40,20,28,.5); z-index:200;
  display:none; align-items:center; justify-content:center; padding:20px;
}
.upsell-overlay.open{display:flex;}
.upsell-modal{
  background:var(--cream); max-width:480px; width:100%; max-height:88vh; overflow-y:auto;
  border:1px solid var(--line);
}
.upsell-head{padding:28px 28px 10px; text-align:center;}
.upsell-head h3{font-size:1.6rem; color:var(--berry);}
.upsell-head p{font-size:.82rem; color:var(--berry); margin-top:8px;}
.upsell-body{padding:10px 28px 6px;}
.upsell-foot{padding:18px 28px 28px; display:flex; flex-direction:column; gap:10px;}
.upsell-counter{text-align:center; font-size:.75rem; color:var(--berry); margin-bottom:6px;}
.foot-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; margin-bottom:50px;}
footer h4{font-family:'Cormorant Garamond',serif; font-size:1.3rem; margin-bottom:16px; color:#fbeee7;}
footer .foot-links a{display:block; font-size:.85rem; color:#fff8f5; padding:5px 0;}
footer .foot-line{font-size:.85rem; color:#fff8f5; padding:5px 0; line-height:1.5;}
footer .foot-line b{font-weight:500; color:#fbeee7;}
footer .foot-muted{color:rgba(255,248,245,.75); font-style:italic;}
footer p.desc{font-size:.85rem; color:#fff8f5; max-width:280px; margin-top:12px;}
.foot-bottom{border-top:1px solid rgba(255,255,255,.25); padding-top:22px; display:flex; justify-content:space-between; font-size:.75rem; color:rgba(255,255,255,.8); flex-wrap:wrap; gap:10px;}

/* Bouquet detail modal — click a card to see it larger */
.bq-modal-overlay{
  position:fixed; inset:0; background:rgba(40,20,28,.55); z-index:300;
  display:none; align-items:center; justify-content:center; padding:20px;
}
.bq-modal-overlay.open{display:flex;}
.bq-modal{
  position:relative; background:var(--cream); max-width:920px; width:100%; max-height:90vh; overflow-y:auto;
  border:1px solid var(--line); display:grid; grid-template-columns:1fr 1fr;
}
.bq-modal-img{
  aspect-ratio:1/1; background:linear-gradient(135deg, var(--blush-deep), var(--blush));
  display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden;
}
.bq-modal-img img{width:100%; height:100%; object-fit:cover; display:block;}
.bq-modal-info{padding:44px; display:flex; flex-direction:column; justify-content:center;}
.bq-modal-info h3{font-size:1.9rem; color:var(--berry); line-height:1.15; margin-bottom:12px;}
.bq-modal-info .lead-time-note{margin-bottom:8px;}
.bq-modal-info .bouquet-description{margin-bottom:12px;}
.bq-modal-info .bouquet-price{font-size:1.25rem; margin:4px 0 26px;}
.bq-modal-info .btn{width:100%; text-align:center; padding:15px;}
.bq-modal-close, .bq-modal-nav{
  position:absolute; border-radius:50%; background:rgba(255,255,255,.92); color:var(--berry);
  display:flex; align-items:center; justify-content:center; box-shadow:0 4px 12px rgba(46,20,32,.15);
  transition:background .2s ease, color .2s ease;
}
.bq-modal-close:hover, .bq-modal-nav:hover{background:var(--berry); color:#fff;}
.bq-modal-close{top:16px; right:16px; z-index:3; width:36px; height:36px; font-size:1.05rem;}
.bq-modal-nav{top:50%; transform:translateY(-50%); z-index:2; width:44px; height:44px; font-size:1.4rem;}
.bq-modal-nav:disabled{opacity:.35; cursor:not-allowed; pointer-events:none;}
.bq-modal-prev{left:16px;}
.bq-modal-next{right:16px;}

@media (max-width:760px){
  .bq-modal{grid-template-columns:1fr; max-height:94vh;}
  .bq-modal-img{aspect-ratio:4/3;}
  .bq-modal-info{padding:26px 24px 32px;}
  .bq-modal-info h3{font-size:1.5rem;}
  .bq-modal-nav{width:36px; height:36px; font-size:1.2rem;}
  .bq-modal-prev{left:10px;}
  .bq-modal-next{right:10px;}
}

@media (max-width:920px){
  .nav-links{display:none;}
  .menu-toggle{display:block; font-size:1.4rem;}
  .cat-grid{grid-template-columns:repeat(2,1fr);}
  .bouquet-grid{grid-template-columns:repeat(2,1fr);}
  .cz-shell, .delivery{grid-template-columns:1fr;}
  .cz-visual{min-height:220px;}
  .foot-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:560px){
  .nav-icons{gap:10px;}
  .lang-btn{padding:5px 8px; font-size:.6rem;}
  .bouquet-grid{grid-template-columns:repeat(2,1fr); gap:12px;}
  .bouquet-grid .bouquet-info{padding:12px 14px 16px;}
  .bouquet-grid .bouquet-info h4{font-size:1rem; line-height:1.25;}
  .bouquet-grid .bouquet-price{font-size:.85rem;}
  .bouquet-grid .bouquet-description{font-size:.8rem;}
  .bouquet-grid .lead-time-note{font-size:.62rem;}
  .bouquet-grid .bouquet-info .btn{padding:9px 6px; font-size:.64rem; letter-spacing:.08em; margin-top:10px;}
  .cat-grid{grid-template-columns:1fr;}
  .hero{padding:70px 20px 50px;}
  .hero-full-content{padding:100px 20px 50px;}
  .cz-form, .delivery-panel{padding:30px 22px;}
  .foot-grid{grid-template-columns:1fr;}
}

/* Large desktop screens — the header/content used to stay capped at 1280px
   (then 1440px past 1600px) with huge empty margins on wide monitors. That
   single jump still read as too narrow both on common laptop widths
   (~1440-1470px, e.g. a MacBook Air's default resolution — under the old
   1600px trigger, so the fix never even applied there) and on real external
   monitors (1920px and up, where 1440 is a small fraction of the screen).
   Scale progressively instead, and grow the category grid too — it was
   stuck at 1180px regardless of screen size. */
@media (min-width:1400px){
  .wrap, nav{max-width:1360px;}
  .cat-grid{max-width:1260px;}
}
@media (min-width:1600px){
  .wrap, nav{max-width:1520px;}
  .cat-grid{max-width:1400px;}
  .logo-mark{width:48px; height:48px;}
  .logo-name{font-size:2.2rem;}
  .logo-name small{font-size:.64rem;}
  .nav-links{gap:36px; font-size:.92rem;}
  .nav-icons{gap:22px;}
  .cart-btn{width:42px; height:42px;}
  .cart-count{width:19px; height:19px; font-size:.66rem;}
  .lang-btn{padding:7px 13px; font-size:.7rem;}
}
@media (min-width:1920px){
  .wrap, nav{max-width:1740px;}
  .cat-grid{max-width:1600px;}
}
@media (min-width:2400px){
  .wrap, nav{max-width:1960px;}
  .cat-grid{max-width:1800px;}
}
