:root {
  --bg-color: #f4ece4; /* Paper texture base color */
  --c-purple: #7055a4;
  --c-dark-purple: #422c7a;
  --c-light-purple: #e6ddf5;
  --c-blue: #4a90e2;
  --c-light-blue: #e1f0fa;
  --c-green: #2ecc71;
  --c-pink: #f7a8b8;
  --c-light-pink: #fdeef1;
  --c-yellow: #f1c40f;
  --c-pale-yellow: #fcf8e3;
  --c-cream: #fff4e6;
  --c-red: #e74c3c;
  --c-magenta: #e83e8c;
  --c-teal: #1abc9c;
  
  --font-main: 'M PLUS Rounded 1c', sans-serif;
  --font-hand: 'Yusei Magic', cursive; /* Handwritten font for accents */
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }

body {
  font-family: var(--font-main);
  color: #333;
  overflow-x: hidden;
  position: relative;
  background-color: #faefff;
  background-image: url("https://shop-ec.wakasa.jp/img/usr/freepage/2608bb-fair/bk-deco.png");
  background-size: contain;
  background-attachment: fixed;
}

/* Paper Texture */
.bg-paper {
  position: fixed;
  top: 0; left: 0; width: 100vw; height: 100vh; z-index: -1;
  background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100' height='100' filter='url(%23noise)' opacity='0.05'/%3E%3C/svg%3E");
  pointer-events: none;
}

.layout-wrapper {
  display: flex;
  justify-content: center;
  max-width: 1400px;
  margin: 0 auto;
  min-height: 100vh;
  position: relative;
}

/* LEFT COLUMN */
.left-col {
  width: 250px; position: sticky; top: 0; height: 100vh; padding: 20px 20px;
  display: flex; justify-content: center; z-index: 10;
}
.floating-logo { text-align: center; margin-top: 20px; }
@keyframes float {
  0% { transform: translateY(0px) rotate(-5deg); }
  50% { transform: translateY(-15px) rotate(0deg); }
  100% { transform: translateY(0px) rotate(-5deg); }
}
.logo-img { width: 180px; margin-bottom: 0px; position: relative; z-index: 2; }
.logo-main {
  animation: float 3s ease-in-out infinite;
  font-size: 2.8rem; color: var(--c-purple); font-weight: 900;
  text-shadow: 3px 3px 0px #fff, 5px 5px 0px rgba(0,0,0,0.1);
  -webkit-text-stroke: 2px #fff; line-height: 1.1;
}

/* CENTER COLUMN - Wide for Flyer Collage */
.center-col {
  width: 760px;
  background-color: #fff;
  min-height: 100vh;
  box-shadow: 0 0 50px rgba(0,0,0,0.1);
  position: relative;
  display: flex;
  flex-direction: column;
}

.section-flyer {
  width: 100%;
  position: relative;
  overflow: hidden;
  /* padding: 60px 0px; */
}

/* Helper: Multiply Blend Mode for White Background Images */
.cutout-img {
  mix-blend-mode: multiply;
  object-fit: contain;
  filter: drop-shadow(0 10px 15px rgba(0,0,0,0.15));
}

.handwritten {
  font-family: var(--font-hand);
}

/* ----- HERO & PERKS ----- */
.flyer-hero {
  background: white;
  text-align: center;
  padding-top: 0px;
}
/* ----- NEW HERO GRAPHIC ----- */
.hero-graphic {
  position: relative; width: 100%; height: 440px;
  display: flex; justify-content: center; align-items: center;
  margin-bottom: 40px;
  padding-top: 60px;
  background: url('https://shop-ec.wakasa.jp/img/usr/freepage/2608bb-fair/top-title-bk.png') no-repeat center center / cover;
}
.hero-circle {
  background: var(--c-light-purple); width: 350px; height: 350px; border-radius: 50%;
  display: flex; justify-content: center; align-items: center; position: relative; z-index: 2;
}
.flyer-title-new {
  font-family: var(--font-hand); font-size: 4.5rem; color: #008f88; text-align: center;
  line-height: 1.2; font-weight: 900; -webkit-text-stroke: 4px white;
  text-shadow: 0px 4px 10px rgba(0,0,0,0.1); transform: rotate(-5deg);
}
.hero-badge {
    position: absolute;
    top: -6px;
    right: 100px;
    background: #644eb8;
    color: white;
    width: 157px;
    height: 157px;
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    font-weight: bold;
    font-size: 1rem;
    z-index: 3;
    transform: rotate(10deg);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
.hero-date { font-size: 1.4rem; margin: 2px 0; }
.deco-img { position: absolute; mix-blend-mode: multiply; z-index: 1; }
.deco-1 { top: 20px; left: 150px; width: 60px; transform: rotate(-20deg); }
.deco-2 { bottom: 30px; left: 100px; width: 90px; transform: rotate(15deg); }
.deco-3 { bottom: 10px; right: 150px; width: 110px; transform: rotate(-10deg); }
.deco-4 { top: 220px; right: 100px; width: 80px; transform: rotate(45deg); }

/* ----- PERKS SECTION (NEW DESIGN) ----- */
.ticket-wrapper-new {
  background: white;
  border: 2px solid #4d4398;
  border-radius: 12px;
  margin: 50px auto 40px;
  position: relative;
  max-width: 700px;
  overflow: hidden;
  width: 95%;
}

.ticket-starburst {
  background: #4d4398;
  color: white;
  padding: 15px;
  text-align: center;
  font-size: 1.8rem;
  font-weight: 900;
  width: 100%;
  letter-spacing: 2px;
}

.hero-intro-text {
  text-align: center;
  color: #4d4398;
  font-weight: bold;
  font-size: 1.1rem;
  line-height: 1.6;
  margin: 30px auto 0;
  padding: 0 20px;
      text-shadow: #f3f2ff 1px 0 10px;
}

.ticket-date-badge {
  position: absolute; right: -30px; top: -30px;
  background: #4d4398;
  color: white;
  width: 120px; height: 120px;
  border-radius: 50%;
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  font-weight: bold; font-size: 1.1rem;
  z-index: 5;
}
.ticket-date-badge .date-big { font-size: 1.8rem; line-height: 1; }

.ticket-container {
  padding-top: 0;
}


.perk-row-top {
  border-bottom: 2px solid #4d4398;
  padding: 20px;
  position: relative;
  text-align: center;
}
.perk-row-bottom {
  display: flex;
}
.perk-col {
  flex: 1;
  padding: 15px 10px ;
  position: relative;
  text-align: center;
}
.perk-col-left {
  border-right: 2px solid #4d4398;
}

.perk-badge-gold {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #ffd93b 0%, #e8b900 100%);
  border: 3px solid #4d4398;
  color: #4d4398;
  border-radius: 30px;
  padding: 0px 17px;
  display: inline-flex; 
  flex-direction: row; 
  justify-content: center; 
  gap: 5px;
  font-weight: 800;
  box-shadow: 1px 1px 0 #4d4398;
  margin: 0 auto 10px auto;
}
.perk-badge-gold::before {
  content: "";
  position: absolute;
  top: 0; left: -100%;
  width: 50%; height: 100%;
  background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.8) 50%, rgba(255,255,255,0) 100%);
  transform: skewX(-25deg);
  animation: shine 3s infinite;
  z-index: 1;
}
@keyframes shine {
  0% { left: -100%; }
  20% { left: 200%; }
  100% { left: 200%; }
}
.perk-badge-gold .small { font-size: 1rem; position: relative; z-index: 2; }
.perk-badge-gold .big { font-size: 1.5rem; line-height: 1; position: relative; z-index: 2; }

.perk-top-text, .perk-bottom-text { flex: 1; }
.cond-text { font-size: 1.3rem; font-weight: bold; color: #333; margin-bottom: 5px; }
.red-marker {
  color: var(--c-magenta); font-size: 2rem;
  font-weight: 900; letter-spacing: 2px; line-height: 1.1; margin: 5px 0;
}
.note { font-size: 0.75rem; color: #666; margin-top: 5px; }

.present-list-horizontal {
  display: flex; gap: 15px; justify-content: space-around; max-width: 600px; margin: 0px auto;
}
.present-item { text-align: center; width: 100%; }
.present-item img { width: 100%; height: 110px; object-fit: contain; margin-bottom: 5px; }
.p-name { font-size: 0.8rem; line-height: 1.3; font-weight: bold; color: #4d4398; text-align: center; }
.p-num { 
  display: inline-block; background: #4d4398; color: white; 
  width: 18px; height: 18px; border-radius: 50%; text-align: center; 
  line-height: 18px; font-size: 0.75rem; margin-right: 5px;
}


/* ----- SWEETS SECTION (STRUCTURED) ----- */
.flyer-sweets {
  background-color: #e6e0f8;
  text-align: center;
  padding: 60px 0 0 0; /* Changed to only have top padding, sets will handle bottom padding */
}
.sweets-set {
  padding: 100px 0px;
  width: 100%;
}
.sweets-set-alt {
  background-color: #f7f4fc;
  position: relative;
}
.sweets-set-alt::before {
  content: "";
  position: absolute;
  top: -39px;
  left: 0;
  width: 100%;
  height: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='40' viewBox='0 0 240 40'%3E%3Cpath d='M0,20 Q60,-10 120,20 T240,20 L240,40 L0,40 Z' fill='%23f7f4fc'/%3E%3C/svg%3E");
  background-repeat: repeat-x;
  z-index: 1;
}
.sweets-set-alt::after {
  content: "";
  position: absolute;
  bottom: -39px;
  left: 0;
  width: 100%;
  height: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='40' viewBox='0 0 240 40'%3E%3Cpath d='M0,20 Q60,-10 120,20 T240,20 L240,40 L0,40 Z' fill='%23f7f4fc'/%3E%3C/svg%3E");
  background-repeat: repeat-x;
  transform: rotate(180deg);
  z-index: 1;
}
@keyframes blob-wobble {
  0% { border-radius: 60% 40% 50% 50% / 50% 50% 60% 40%; }
  33% { border-radius: 50% 50% 40% 60% / 40% 60% 50% 50%; }
  66% { border-radius: 40% 60% 60% 40% / 60% 40% 40% 60%; }
  100% { border-radius: 60% 40% 50% 50% / 50% 50% 60% 40%; }
}

.sweets-blob-top {
  position: relative;
  background: #5c72a8;
  background-image: radial-gradient(circle at 30% 30%, #687eb6 0%, #4f6393 100%);
  color: white;
  display: inline-block;
  padding: 60px 30px;
  width: 90%;
  max-width: 550px;
  border-radius: 60% 40% 50% 50% / 50% 50% 60% 40%;
  margin: 60px auto 50px;
  box-shadow: 0 15px 35px rgba(0,0,0,0.15);
  text-align: center;
  z-index: 1;
  animation: blob-wobble 10s ease-in-out infinite;
}

.sweets-blob-top h3 { margin-bottom: 25px; line-height: 1.3; }
.sweets-blob-top .normal-text { font-size: 1.2rem; font-weight: bold; letter-spacing: 2px; }
.sweets-blob-top .huge { 
  display: block;
  font-family: 'Zen Kurenaido', sans-serif;
  font-size: 4.5rem; 
  font-weight: 900; 
  letter-spacing: 4px;
}
.sweets-blob-top .sub-huge {
  display: block;
  font-family: 'Zen Kurenaido', sans-serif;
  font-size: 2.5rem;
  font-weight: bold;
  letter-spacing: 4px;
}
.sweets-blob-top p { font-size: 0.95rem; line-height: 1.6; letter-spacing: 1px; }

.sweets-main-visual { margin-bottom: 20px; }
.sweets-main-visual img {
  width: 90%; max-width: 800px;
  aspect-ratio: 16 / 9; object-fit: cover;
  box-shadow: 0 15px 40px rgba(0,0,0,0.2);
}

.sweets-catchphrase {
  margin: 0px auto 60px;
  font-family: 'Zen Kurenaido', sans-serif;
  font-size: 1.6rem;
  text-align: center;
  font-weight: 800;
}



.sweets-product-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 30px;
  max-width: 700px; margin: 0 auto;
}
.sweets-product-grid-3 {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  max-width: 960px; margin: 14px;
}
.s-product-card {
  background: rgba(255, 255, 255, 0.7); 
  border-radius: 10px;
  padding: 15px 10px; 
  text-align: left; 
  transition: transform 0.3s;
  border: 1px solid #9f559042;
}
.s-product-card:hover { transform: translateY(-5px); }
.s-product-card img {
  height: auto;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  border-radius: 8px;
  margin-bottom: 15px;
  background-color: #f0f2f5;
  box-sizing: border-box;
  padding: 5px;
}
.s-product-card h4 { font-size: 1.1rem; color: #4b3d5c; margin-bottom: 10px; line-height: 1.3; }
.s-product-card .desc { font-size: 0.85rem; color: #666; margin-bottom: 15px; line-height: 1.4; }
.s-product-card .price { font-size: 1.3rem; color: #4b3d5c; font-weight: bold; text-align: right; }


.new-tag {
  position: absolute; top: -10px; left: -10px;
  font-family: var(--font-hand); font-size: 1.5rem; color: var(--c-red);
  transform: rotate(-15deg);
}
.pink { background: var(--c-pink); color: var(--c-dark-purple); }


/* ----- FOOD & DRINK SECTION (TABLE) ----- */
.flyer-food {
  position: relative;
  background-color: var(--c-pale-yellow);
  padding-bottom: 0;
  overflow: hidden;
}
.food-hero-bg {
  position: relative;
  width: 100%;
  padding-top: 60px;
  padding-bottom: 80px;
  background-color: var(--c-pale-yellow);
}
.food-hero-bg::before {
  content: "";
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  background-image: url('https://shop-ec.wakasa.jp/img/usr/freepage/2608bb-fair/biyori-back.jpg');
  background-size: cover;
  background-position: center;
  opacity: 0.4;
  z-index: 0;
  pointer-events: none;
}
.food-list-set {
  position: relative;
  z-index: 1;
  width: 100%;
  background-color: #fcf8e3;
  padding: 60px 0 100px 0;
}
.food-header { text-align: center; margin-bottom: 50px; position: relative; z-index: 1; }
.food-header h2 { font-size: 3rem; color: #221816; margin-bottom: 15px; font-family: 'Shippori Mincho', serif; font-weight: 700; letter-spacing: 0.1em; display: inline-block; }
.food-header p { font-size: 1rem; line-height: 1.8; color: #555; }

.food-table {
  position: relative;
  z-index: 1;
  min-height: 1500px;
  width: 100%;
}
.food-item { position: absolute; text-align: center; cursor: pointer; z-index: 1; display: flex; flex-direction: column; align-items: center; }
.food-item img { transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); position: relative; z-index: 2; width: 300px; }
.food-item:hover img { transform: scale(1.08) rotate(3deg); }
.f-caption {
  font-size: 1rem; color: var(--c-dark-purple);
  background: white; padding: 8px 12px; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.15);
  font-family: 'Noto Sans JP', sans-serif; font-weight: bold;
  position: relative; white-space: nowrap; z-index: 10;
  margin-top: -10px; /* Pulls caption slightly over the image */
  transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.food-item:hover .f-caption { transform: scale(1.05) translateY(-5px); }

.f-item-1 { top: 20px; left: 50%; transform: translateX(-50%); z-index: 5; } /* Curry */
.f-item-1 img { max-width: 420px; width: 100%; }

.f-item-2 { top: 74%; left: 36%; z-index: 2; transform: rotate(355deg); } /* Sauce */
.f-item-2 img { width: 100px; }

.f-item-3 { top: 1093px; right: 7%; z-index: 3; transform: rotate(20deg); } /* Honey */
.f-item-3 img { width: 116px; }

.f-item-4 { top: 38%; left: 20%; z-index: 4; transform: rotate(349deg); } /* Frozen Fruit */
.f-item-4 img { max-width: 220px; width: 90%;}

.f-item-5 { top: 591px; right: 16%; z-index: 6; transform: rotate(7deg); max-width:143px; } /* Gin */
.f-item-5 img { width: 143px; transform: rotate(9deg); }

.f-item-6 { top: 62%; left: 4%; z-index: 4; transform: rotate(350deg); } /* Magical Sauce 2-pack */
.f-item-6 img { width: 180px; }


/* ----- GOODS SECTION (BURUBURU-KUN 20TH) ----- */
.flyer-goods {
  background: #f8f2fd;
  padding: 60px 20px;
}
.goods-frame {
  /* border: 4px solid #a45a96; */
  border-radius: 24px;
  padding: 35px;
  /* background: white; */
  /* box-shadow: 0 15px 35px rgba(164,90,150,0.1); */
  max-width: 1040px;
  margin: 0 auto;
}
.goods-header-block {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 35px;
  padding-bottom: 25px;
  border-bottom: 2px dashed #d6b4d0;
  flex-wrap: wrap;
  gap: 20px;
}
.goods-header-left .sub-catch {
  text-align: center;
  font-size: 1.2rem;
  background: #fff;
  border-left: 2px solid #6353a1;
  border-right: 2px solid #6353a1;
  width: 97.8%;
  margin: auto;
  color: #4b3d5c;
  font-weight: bold;
  display: block;
}
.goods-header-left h2 {
  font-size: 2.2rem;
  color: #4d4398;
  line-height: 1.1;
  font-family: 'Shippori Mincho', serif;
}
.goods-header-left .big-text {
  font-size: 3.4rem;
  font-weight: 900;
  color: #a45a96;
  letter-spacing: 2px;
}
.goods-header-right-bubble {
  background: linear-gradient(135deg, #4a90e2, #3182ce);
  color: white;
  padding: 18px 24px;
  border-radius: 50px / 40px;
  text-align: center;
  font-size: 0.9rem;
  font-weight: bold;
  line-height: 1.5;
  box-shadow: 0 6px 15px rgba(49,130,206,0.3);
  position: relative;
}

/* Common Section Card */
.g-section-card {
  background: #fff;
  border: 2px solid #e1d3f0;
  border-radius: 16px;
  padding: 24px;
  margin-bottom: 30px;
  box-shadow: 0 8px 20px rgba(0,0,0,0.04);
}

/* Top Glasses Block */
.top-glasses-header {
  margin-bottom: 20px;
}
.glasses-title-badge {
  display: inline-block;
  background: #4d4398;
  color: white;
  padding: 6px 18px;
  border-radius: 6px;
  font-size: 1.15rem;
  margin-bottom: 10px;
}
.glasses-catch {
  font-size: 0.95rem;
  color: #333;
  line-height: 1.6;
  font-weight: bold;
}
.top-glasses-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 25px;
  flex-wrap: wrap;
}
.top-glasses-left {
  display: flex;
  align-items: center;
  gap: 15px;
  flex: 1;
  min-width: 280px;
}
.sales-circle-badge {
  background: #a45a96;
  color: white;
  width: 110px;
  height: 110px;
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 8px;
  box-shadow: 0 4px 10px rgba(164,90,150,0.3);
  flex-shrink: 0;
}
.sales-circle-badge span {
  font-size: 0.85rem;
  font-weight: 800;
  line-height: 1.2;
}
.sales-circle-badge small {
  font-size: 0.55rem;
  margin-top: 3px;
  opacity: 0.9;
}
.glasses-photo-wrapper {
  position: relative;
  text-align: center;
}
.glasses-photo-wrapper img {
  width: 160px;
  height: auto;
  object-fit: contain;
}
.pill-badge.blue-green {
  display: inline-block;
  background: #e1f0fa;
  color: #2b6cb0;
  font-size: 0.75rem;
  font-weight: bold;
  padding: 3px 10px;
  border-radius: 12px;
  margin-top: 5px;
}

.top-glasses-center {
  flex: 1.5;
  min-width: 300px;
}
.cut-circles {
  display: flex;
  gap: 12px;
  justify-content: center;
  margin-bottom: 15px;
  flex-wrap: wrap;
}
.cut-circle {
  background: #f0f7ff;
  border: 2px solid #4a90e2;
  border-radius: 50%;
  width: 115px;
  height: 115px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 6px;
  box-shadow: 0 4px 8px rgba(74,144,226,0.15);
}
.cut-circle small {
  font-size: 0.65rem;
  color: #555;
  line-height: 1.1;
}
.cut-circle strong {
  font-size: 0.85rem;
  color: #2b6cb0;
  line-height: 1.2;
  margin: 3px 0;
}
.cut-circle .note {
  font-size: 0.5rem;
  color: #777;
  line-height: 1;
}
.glasses-features-tags {
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}
.g-tag {
  background: #f2edf9;
  color: #4d4398;
  font-size: 0.75rem;
  font-weight: bold;
  padding: 4px 10px;
  border-radius: 4px;
}

/* Center Row (Mini Items + Special Set Card) */
.g-middle-row {
  display: flex;
  gap: 25px;
  margin-bottom: 30px;
  align-items: stretch;
  flex-wrap: wrap;
}
.g-middle-items-col {
  flex: 1.5;
  min-width: 320px;
}
.g-mini-items-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  height: 100%;
}
.g-mini-item {
  background: #faf8fd;
  border: 1px solid #e1d3f0;
  border-radius: 12px;
  padding: 12px;
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.mini-tag {
  background: #4d4398;
  color: white;
  font-size: 0.7rem;
  font-weight: bold;
  padding: 3px 6px;
  border-radius: 4px;
  margin-bottom: 8px;
  display: inline-block;
}
.mini-img-box img {
  width: 90px;
  height: 90px;
  object-fit: contain;
  margin: 0 auto 8px;
}
.mini-desc {
  font-size: 0.7rem;
  color: #555;
  line-height: 1.3;
  text-align: left;
}
.gold-badge {
  color: #b7791f;
  font-weight: bold;
  font-size: 0.72rem;
}

/* 19 Special Set Card */
.g-special-set-card {
  flex: 1;
  min-width: 280px;
  background: #fffbe6;
  border: 3px solid #f1c40f;
  border-radius: 16px;
  padding: 20px;
  position: relative;
  box-shadow: 0 8px 20px rgba(241,196,15,0.2);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.num-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}
.yellow-num {
  background: #f1c40f;
  color: #221816;
  font-size: 1.1rem;
  font-weight: 900;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border: 2px solid white;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.num-title h4 {
  font-size: 1.15rem;
  color: #221816;
  line-height: 1.2;
}
.special-set-list {
  list-style: none;
  font-size: 0.82rem;
  color: #333;
  line-height: 1.6;
  margin-bottom: 15px;
  font-weight: bold;
}
.present-bubble {
  position: absolute;
  top: 15px;
  right: 15px;
  background: #e60012;
  color: white;
  font-size: 0.7rem;
  font-weight: bold;
  padding: 8px;
  border-radius: 50%;
  text-align: center;
  line-height: 1.2;
  box-shadow: 0 3px 8px rgba(230,0,18,0.3);
  transform: rotate(10deg);
}
.special-set-price {
  background: white;
  border-radius: 8px;
  padding: 10px;
  text-align: center;
  border: 1px solid #fde68a;
}
.special-set-price .orig {
  font-size: 0.75rem;
  color: #777;
}
.special-set-price .spec-label {
  color: #e60012;
  font-weight: bold;
  font-size: 0.85rem;
}
.special-set-price .spec-num {
  color: #e60012;
  font-weight: 900;
  font-size: 1.6rem;
}
.special-set-price .tax {
  font-size: 0.7rem;
  color: #777;
}
.badge-red {
  background: #e60012;
  color: white;
  font-size: 0.65rem;
  padding: 2px 6px;
  border-radius: 3px;
  margin-left: 4px;
  font-weight: bold;
}
.badge-off {
  display: block;
  color: #e60012;
  font-size: 0.85rem;
  font-weight: 900;
  margin-top: 3px;
}

/* 4 Products Grid (20, 21, 22, 23) */
.g-products-grid-4 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 30px;
}
.g-card-item {
  background: white;
  border: 1px solid #e1d3f0;
  border-radius: 14px;
  padding: 15px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  text-align: left;
  transition: transform 0.2s;
}
.g-card-item:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 20px rgba(0,0,0,0.06);
}
.g-card-num {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.g-card-num h4 {
  font-size: 0.95rem;
  color: #4b3d5c;
  line-height: 1.2;
}
.g-card-img img {
  width: 100%;
  height: 120px;
  object-fit: contain;
  margin-bottom: 10px;
}
.g-card-catch {
  font-size: 0.75rem;
  color: #333;
  font-weight: bold;
  line-height: 1.4;
  margin-bottom: 8px;
}
.g-card-specs {
  font-size: 0.65rem;
  color: #666;
  line-height: 1.4;
  background: #f8f4fc;
  padding: 6px;
  border-radius: 6px;
  margin-bottom: 12px;
}
.g-card-price {
  font-size: 1.1rem;
  color: #221816;
  text-align: right;
  border-top: 1px dashed #eee;
  padding-top: 8px;
}
.g-card-price .lbl {
  font-size: 0.65rem;
  color: #777;
}
.g-card-price .ship-lbl {
  font-size: 0.65rem;
  background: #eee;
  color: #555;
  padding: 2px 5px;
  border-radius: 3px;
  margin-left: 4px;
}
.g-card-price-box {
  border-top: 1px dashed #eee;
  padding-top: 8px;
  text-align: right;
}
.single-price {
  font-size: 0.85rem;
  color: #333;
  margin-bottom: 6px;
}
.pair-price {
  background: #fff8eb;
  padding: 6px;
  border-radius: 6px;
  border: 1px solid #fbd38d;
}
.pair-title {
  font-size: 0.7rem;
  color: #c05621;
  font-weight: bold;
  display: block;
}
.badge-off-mini {
  color: #e60012;
  font-size: 0.75rem;
  font-weight: bold;
  display: block;
}

/* Bottom Glasses Block (24) */
.bottom-glasses-block {
  background: #fff;
  border: 2px solid #d6b4d0;
}
.bottom-glasses-header h3 {
  font-size: 1.2rem;
  color: #4d4398;
  margin-bottom: 15px;
}
.bottom-glasses-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 15px;
}
.bg-left-img img {
  width: 150px;
  height: auto;
  object-fit: contain;
}
.bg-center-content {
  flex: 1.5;
  min-width: 280px;
}
.bg-sub-title {
  font-size: 0.9rem;
  color: #333;
  font-weight: bold;
  margin-bottom: 10px;
}
.bg-features-row {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.bg-color-vars {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 15px;
  flex-wrap: wrap;
}
.color-pill {
  font-size: 0.75rem;
  padding: 3px 10px;
  border-radius: 12px;
  color: white;
  font-weight: bold;
}
.color-pill.purple { background: #7055a4; }
.color-pill.demi { background: #8d5b4c; }
.new-color-tag {
  font-size: 0.75rem;
  color: #e60012;
  font-weight: bold;
  border: 1px solid #e60012;
  padding: 2px 8px;
  border-radius: 12px;
}
.cut-circles.sabae .cut-circle {
  width: 105px;
  height: 105px;
}
.bg-right-card {
  flex: 1;
  min-width: 240px;
  background: #fffbe6;
  border: 2px solid #f1c40f;
  border-radius: 12px;
  padding: 15px;
  text-align: center;
}
.bottom-glasses-price {
  margin-top: 10px;
}
.bottom-glasses-price .orig { font-size: 0.75rem; color: #777; }
.bottom-glasses-price .spec-label { color: #e60012; font-weight: bold; font-size: 0.85rem; }
.bottom-glasses-price .spec-num { color: #e60012; font-weight: 900; font-size: 1.5rem; }
.bg-footer-specs {
  border-top: 1px solid #eee;
  padding-top: 12px;
  font-size: 0.65rem;
  color: #777;
  line-height: 1.5;
}

/* ----- RIGHT NAVIGATION ----- */
.right-col {
  width: 220px; position: sticky; top: 0; height: 100vh; padding: 30px 20px 30px 0;
  z-index: 10;
}
.side-nav { display: flex; flex-direction: column; gap: 10px; }
.nav-btn {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 12px 10px; text-decoration: none; border-radius: 0 15px 15px 0;
  box-shadow: 4px 4px 10px rgba(0,0,0,0.05); transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  border: 2px solid rgba(255,255,255,0.7); border-left: none; position: relative; overflow: hidden;
}

.nav-btn::before {
  content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  background: linear-gradient(320deg, rgb(255 255 255 / 33%) 0%, rgba(255, 255, 255, 0) 100%);
}
.nav-btn:hover { transform: translateX(5px); box-shadow: 8px 8px 15px rgba(0,0,0,0.1); }
.nav-en { font-family: 'Arial Black', sans-serif; font-size: 1.5rem; color: var(--c-dark-purple); margin-bottom: 2px; }
.nav-ja { font-size: 0.8rem; color: var(--c-purple); font-weight: 700; }

.bg-top { background-color: white; } 
.bg-sweets { background-color: var(--c-light-purple); }
.bg-food { background-color: #f9f2da; }
.bg-goods { background-color: #f8f2fd; }

.bg-magenta { background-color: var(--c-magenta); border-radius: 0 25px 25px 0; margin-top: 20px; padding: 18px 10px; border: 4px solid white; border-left: none;}
.bg-magenta .nav-ja, .bg-magenta .icon { color: white; }

/* Smartphone / Tablet Header & Hamburger Menu (default hidden on PC) */
.sp-header, .sp-nav-menu, .sp-nav-overlay {
  display: none;
}
.sp{
  display: none;
}
.pc{
  display: block;
}
/* Responsive basics */
@media (max-width: 1300px) { .left-col { display: none; } }
@media (max-width: 950px) {
  .layout-wrapper {
    flex-direction: column;
    align-items: center;
    padding-top: 60px;
  }
  
  /* Right menu hidden when switched to smartphone/tablet header */
  .right-col {
    display: none !important;
  }

  .center-col { width: 100%; max-width: 850px; }

  /* Anchor navigation scroll offset for fixed header */
  #top, #sweets, #food, #goods, #recipe, #column {
    scroll-margin-top: 72px;
  }

  /* Fixed Smartphone Header */
  .sp-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 60px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: 0 2px 12px rgba(112, 85, 164, 0.15);
    padding: 0 16px;
    z-index: 950;
    transition: all 0.3s ease;
  }

  .sp-header-logo a {
    display: flex;
    align-items: center;
    text-decoration: none;
    gap: 8px;
  }

  .sp-header-logo img {
    height: 36px;
    width: auto;
    object-fit: contain;
  }

  .sp-logo-text {
    font-size: 0.95rem;
    font-weight: 800;
    color: var(--c-dark-purple);
    white-space: nowrap;
  }

  /* Hamburger Button */
  .hamburger-btn {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 44px;
    height: 44px;
    background: var(--c-purple);
    border: none;
    border-radius: 10px;
    cursor: pointer;
    padding: 10px;
    gap: 6px;
    position: relative;
    z-index: 1001;
    transition: background 0.3s ease, transform 0.2s ease;
    box-shadow: 0 3px 8px rgba(112, 85, 164, 0.3);
  }

  .hamburger-btn:hover {
    background: var(--c-dark-purple);
  }

  .hamburger-btn:active {
    transform: scale(0.95);
  }

  .hamburger-line {
    display: block;
    width: 22px;
    height: 2.5px;
    background: #ffffff;
    border-radius: 2px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  }

  /* Hamburger Active Animation (X shape) */
  .hamburger-btn.active .hamburger-line:nth-child(1) {
    transform: translateY(8.5px) rotate(45deg);
  }
  .hamburger-btn.active .hamburger-line:nth-child(2) {
    opacity: 0;
    transform: scaleX(0);
  }
  .hamburger-btn.active .hamburger-line:nth-child(3) {
    transform: translateY(-8.5px) rotate(-45deg);
  }

  /* Smartphone Navigation Menu Drawer */
  .sp-nav-menu {
    display: block;
    position: fixed;
    top: 60px;
    right: -100%;
    width: 280px;
    max-width: 85vw;
    height: calc(100vh - 60px);
    background: #ffffff;
    box-shadow: -5px 0 25px rgba(0, 0, 0, 0.15);
    z-index: 940;
    transition: right 0.35s cubic-bezier(0.16, 1, 0.3, 1);
    overflow-y: auto;
    padding: 20px 16px 40px;
  }

  .sp-nav-menu.active {
    right: 0;
  }

  .sp-nav-header {
    border-bottom: 2px dashed var(--c-light-purple);
    padding-bottom: 12px;
    margin-bottom: 16px;
    text-align: center;
  }

  .sp-nav-title {
    font-family: 'Arial Black', sans-serif;
    font-size: 1.2rem;
    color: var(--c-dark-purple);
    letter-spacing: 2px;
  }

  .sp-nav-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

  .sp-nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 14px 12px;
    text-decoration: none;
    border-radius: 14px;
    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
    border: 2px solid rgba(255, 255, 255, 0.8);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
  }

  .sp-nav-item:active {
    transform: scale(0.98);
  }

  .sp-nav-item .nav-en {
    font-family: 'Arial Black', sans-serif;
    font-size: 1.3rem;
    color: var(--c-dark-purple);
    margin-bottom: 2px;
  }

  .sp-nav-item .nav-ja {
    font-size: 0.85rem;
    color: var(--c-purple);
    font-weight: 700;
  }

  .sp-nav-item.bg-magenta {
    background-color: var(--c-magenta);
    border-radius: 20px;
    margin-top: 10px;
    padding: 16px 12px;
    flex-direction: row;
    gap: 8px;
  }

  .sp-nav-item.bg-magenta .nav-ja,
  .sp-nav-item.bg-magenta .icon {
    color: white;
    font-size: 1rem;
  }

  /* Overlay backdrop when menu opens */
  .sp-nav-overlay {
    display: block;
    position: fixed;
    top: 60px;
    left: 0;
    width: 100vw;
    height: calc(100vh - 60px);
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    z-index: 930;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
  }

  .sp-nav-overlay.active {
    opacity: 1;
    pointer-events: auto;
  }
}



@media (max-width: 768px) {
  .sp{
  display: block;
}
.pc{
  display: none;
}
.cond-text{
    font-size: 1rem;
}
.sweets-blob-top .huge{
  font-size: 3.5rem;
}
.sweets-blob-top .sub-huge{
      font-size: 2rem;
}
.sweets-blob-top{
  margin-top: 0;
  margin-bottom: 0;
}
.sweets-catchphrase{
  font-size: 1.3rem;
  margin: 0px auto 30px;
}
.sweets-set{
      padding: 60px 0px;
}
.food-header h2{
  font-size: 2rem;
  margin-bottom: 35px;
}
.present-list-horizontal{
      gap: 10px;
}
.food-hero-bg{
      padding: 60px 10px 0;
}
.goods-frame{
  padding: 0px;
}

.f-item-4{
        top: 36%;
        max-width: 208px;
        left: 15%;
}
.f-item-2{
  top: 71%;
  left: 36%;
}
.f-item-2 img {
  max-width: 87px;
}
.f-item-3{
  right: 1%;
      transform: rotate(6deg);
}
.flyer-goods{
  padding: 60px 10px;
}
.card-grid{
  width: 95%;
}
  .sweets-product-grid { 
    grid-template-columns: 1fr; 
    gap: 15px;
    margin: 10px;
  }
  .sweets-product-grid-3 {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin: 10px 12px;
  }
  .s-product-card {
    display: grid;
    grid-template-columns: 100px 1fr;
    grid-template-rows: auto auto 1fr;
    gap: 0 15px;
    padding: 15px;
  }
  .s-product-card img {
    grid-column: 1 / 2;
    grid-row: 1 / 4;
    width: 100%;
    height: 100px;
    margin-bottom: 0;
  }
  .s-product-card h4 {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
    margin-bottom: 5px;
    font-size: 0.95rem;
  }
  .s-product-card .desc {
    grid-column: 2 / 3;
    grid-row: 2 / 3;
    margin-bottom: 10px;
    font-size: 0.75rem;
  }
  .s-product-card .price {
    grid-column: 2 / 3;
    grid-row: 3 / 4;
    align-self: end;
    margin-bottom: 0;
    text-align: right;
    font-size: 1.1rem;
  }

  .g-products-grid-4 {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  .g-mini-items-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }
  .goods-header-block, .top-glasses-body, .g-middle-row, .bottom-glasses-body {
    flex-direction: column;
    align-items: stretch;
  }
  .top-glasses-left, .top-glasses-center, .bg-center-content, .bg-right-card, .g-special-set-card {
    min-width: 100%;
  }
  .goods-header-right-bubble {
    width: 100%;
  }
}
@media (max-width: 480px) {
  .flyer-hero{
    background-image: url(https://shop-ec.wakasa.jp/img/usr/freepage/2608bb-fair/bk-deco.png);
    background-size: contain;
    background-color: #faefff;
  }
  .sp-header {
    height: 56px;
    padding: 0 12px;
  }
  .layout-wrapper {
    padding-top: 56px;
  }
  .sp-header-logo img {
    height: 30px;
  }
  .sp-logo-text {
    font-size: 0.82rem;
  }
  .hamburger-btn {
    width: 40px;
    height: 40px;
    padding: 8px;
    gap: 5px;
  }
  .sp-nav-menu {
    top: 56px;
    height: calc(100vh - 56px);
    width: 260px;
  }
  .sp-nav-overlay {
    top: 56px;
    height: calc(100vh - 56px);
  }
  .perk-col{
    padding: 15px 5px;
  }
  .sweets-blob-top{
    border-radius:0;
    animation:none;
  }
  .f-item-4{
  top: 28%;
  max-width: 170px;
  left: 5%;
  transform: rotate(354deg);
  }
  .f-item-3 {
    top: 62%;
    transform: rotate(12deg);
  }
  .f-item-3 img{
    width: 100px;
  }
  .f-item-5{
      right: 5%;
      top: 32%;
  }
  .f-item-5 img{
    width: 117px;
    transform: rotate(3deg);
  }
  .f-item-6{
    top: 52%;
    left: 2%;
    transform: rotate(357deg);
  }
  .f-item-6 img{
    width: 140px;
  }
  .f-item-2 img {
    width: 70px;
  }
  .f-item-2{
    top: 72%;
    left: 4%;
  }
  .food-hero-bg::before{
        background-size: 130%;
    background-position: top;
  }
}

/* ----- MODAL ----- */
.modal-overlay {
  position: fixed; top: 0; left: 0; width: 100vw; height: 100vh;
  background: rgba(0,0,0,0.6); backdrop-filter: blur(5px);
  display: flex; justify-content: center; align-items: center;
  z-index: 1000; opacity: 0; pointer-events: none; transition: opacity 0.3s;
}
.modal-overlay.active { opacity: 1; pointer-events: auto; }

.modal-content {
  background: white; border: 4px solid var(--c-purple); border-radius: 20px;
  width: 90%; max-width: 450px; text-align: center;
  position: relative; transform: translateY(20px); transition: transform 0.3s;
  box-shadow: 0 20px 40px rgba(0,0,0,0.2);
  height: 80vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.modal-overlay.active .modal-content {     
    transform: translateY(-20px);
    max-height: 720px;
    height: 75%; 
  }

.modal-body {
  flex: 1;
  overflow-y: auto;
  padding: 60px 14px 20px;
}

#modal-header-info {
  text-align: left;
  margin-bottom: 20px;
}
#modal-header-info h3 { font-size: 1.3rem; color: var(--c-dark-purple); margin-bottom: 5px; }
#modal-header-info .price { font-size: 1.5rem; color: var(--c-red); font-weight: bold; margin-bottom: 0; }

.modal-footer {
  padding: 15px 20px;
  background: #f4f4f4;
  z-index: 10;
  box-shadow: 0 -4px 15px rgb(0 0 0 / 12%);
  text-align: center;
}

.modal-footer .header-only {
  display: none;
}

.modal-footer .compact-info {
  display: none;
}

.modal-footer.show-compact {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
}

.modal-footer.show-compact .compact-info {
  display: block;
}

.modal-footer h3.compact-info {
  font-size: 1rem;
  margin-bottom: 5px;
  line-height: 1.3;
  color: var(--c-dark-purple);
}

.modal-footer .price.compact-info {
  font-size: 1.3rem;
  margin-bottom: 0;
  text-align: left;
  color: var(--c-red);
  font-weight: bold;
}

.modal-close {
  position: absolute; top: 15px; right: 20px;
  background: rgb(60 60 60 / 65%); border: none; font-size: 2.5rem; color: #ffffff;
  width: 40px; height: 40px; border-radius: 50%;
  display: flex; justify-content: center; align-items: center;
  cursor: pointer; line-height: 1; transition: color 0.2s, background 0.2s;
  z-index: 20;
}
.modal-close:hover { background: rgb(60 60 60 / 85%); color: #ffffff; }

#product-modal .modal-content img { width: 100%; height: auto; max-height: 250px; object-fit: contain; margin-bottom: 20px; mix-blend-mode: multiply;}
#product-modal .modal-content p { color: #555; line-height: 1.6; margin-bottom: 20px; text-align: left; }

.modal-specs {
  margin-top: 20px;
  background: #fdfaf6;
  border-radius: 8px;
  padding: 15px;
  text-align: left;
}
.modal-specs dl {
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 8px 10px;
  font-size: 0.85rem;
  line-height: 1.5;
  color: #555;
  margin: 0;
}
.modal-specs dt {
  font-weight: bold;
  color: var(--c-dark-purple);
}
.modal-specs dd {
  margin: 0;
}

.modal-details {
  text-align: left;
  margin-bottom: 20px;
}
.modal-details .detail-section {
  margin-bottom: 15px;
}
.modal-details .detail-section:last-child {
  margin-bottom: 0;
}
.modal-details h4 {
  font-size: 0.95rem;
  color: var(--c-dark-purple);
  margin-bottom: 5px;
  border-bottom: 2px dashed #e8dcd6;
  padding-bottom: 5px;
  display: inline-block;
}
.modal-details p {
  font-size: 0.85rem;
  color: #666;
  margin-bottom: 0;
  line-height: 1.5;
}

.buy-btn {
  display: block; width: 100%; box-sizing: border-box; text-align: center;
  background: var(--c-magenta); color: white;
  padding: 12px 25px; border-radius: 30px; text-decoration: none;
  font-weight: bold; font-size: 1.1rem; box-shadow: 0 5px 15px rgba(232, 62, 140, 0.4);
  transition: transform 0.2s, box-shadow 0.2s;
  white-space: nowrap;
}

.modal-footer.show-compact .buy-btn {
  margin-top: 15px;
}

/* -------------------------------------
   CUSTOM RECIPE LAYOUT (FLYER DESIGN)
---------------------------------------- */
.flyer-recipe {
  background: linear-gradient(135deg, #e3f2fd, #fff);
  padding: 40px 20px 80px;
  background-image: url(https://shop-ec.wakasa.jp/img/usr/freepage/2608bb-fair/recipe-bk.jpg);
  background-size: cover;
}
.recipe-flyer-container {
  max-width: 900px;
  margin: 0 auto;
  position: relative;
  padding: 10px;
}
.recipe-vertical-title {
  background: white;
  border: 2px solid #283593;
  padding: 20px 10px;
  text-align: center;
  box-shadow: 3px 3px 0 #283593;
}
.recipe-vertical-title .rv-sub {
  color: #1976d2;
  font-size: 0.9rem;
  letter-spacing: 2px;
  margin-left: 10px;
}
.recipe-vertical-title .rv-main {
  color: #283593;
  font-size: 3rem;
  font-family: 'Klee One', serif;
  margin: 0;
  letter-spacing: 5px;
}
.recipe-vertical-title .rv-qr {
  writing-mode: horizontal-tb;
  margin-top: 30px;
}
.recipe-vertical-title .rv-qr p {
  font-size: 0.75rem;
  margin: 0 0 5px;
  font-weight: bold;
}
.recipe-vertical-title .rv-qr img {
  width: 100%;
  height: auto;
}

/* Swipe Container */
.recipe-swipe-container {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  gap: 40px;
  padding-bottom: 30px;
}
.recipe-swipe-container::-webkit-scrollbar {
  height: 8px;
}
.recipe-swipe-container::-webkit-scrollbar-thumb {
  background-color: rgba(40, 53, 147, 0.3);
  border-radius: 4px;
}
.recipe-swipe-container::-webkit-scrollbar-track {
  background-color: rgba(40, 53, 147, 0.05);
  border-radius: 4px;
}

/* Common Recipe Block */
.recipe-block {
  display: flex;
  align-items: flex-start;
  gap: 30px;
  position: relative;
  flex: 0 0 100%;
  scroll-snap-align: center;
}
.recipe-photo-wrapper {
  flex: 1;
  position: relative;
}
.recipe-main-photo {
  width: 100%;
  margin-top: 15px;

}
.recipe-info {
  flex: 1.2;
  margin: auto;
  max-width: 370px;
}

/* Header */
.recipe-header {
  position: relative;
  margin-bottom: 25px;
  font-family: "Kaisei HarunoUmi", serif;
}
.recipe-sub-title {
  color: #1976d2;
  font-size: 1rem;
  font-weight: bold;
  margin: 0 0 5px;
}
.recipe-main-title {
  color: #1565c0;
  font-size: 1.5rem;
  font-weight: 900;
  margin: 0 0 10px;
  letter-spacing: 1px;
}
.recipe-desc {
  font-size: 0.95rem;
  line-height: 1.5;
  color: #333;
  margin: 0;
}
.note {
  font-size: 0.75rem;
  color: #666;
}
.recipe-product {
  text-align: center;
  background: white;
  padding: 5px;
  border-radius: 5px;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
  margin: 20px auto;
  display: flex;
}
.recipe-product img {
  height: 80px;
  width: auto;
  display: block;
}
.recipe-product span {
  font-size: 0.7rem;
  font-weight: bold;
}

/* Ingredients Box */
.recipe-ingredients-box, .recipe-steps-box {
  background: #e1f5fe;
  border-radius: 10px;
  padding: 25px 12px 20px;
  margin-bottom: 20px;
  position: relative;
  margin: 35px auto;
  max-width: 370px;
  text-align: left;
}
.recipe-ingredients-box.blue-box, .recipe-steps-box.blue-box {
  background: #e3f2fd;
}
.box-title {
  background: #1565c0;
  color: white;
  display: inline-block;
  padding: 5px 15px;
  border-radius: 20px;
  font-size: 0.95rem;
  font-weight: bold;
  position: absolute;
  top: -15px;
  left: 20px;
}
.box-title .servings { font-size: 0.8rem; font-weight: normal; }
.ingredients-list {
  display: flex;
  gap: 20px;
  width: 100%;
}
.ingredients-list ul {
  list-style: none;
  padding: 0;
  margin: 0;
  flex: 1;
}
.ingredients-list li {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 0.9rem;
  padding: 4px 0;
}
.ingredients-list li.full-width {
  font-size: 0.85rem;
  margin-top: 5px;
}
.ingredients-list li .dots {
  flex-grow: 1;
  border-bottom: 1px dotted #999;
  margin: 0 5px;
  position: relative;
  top: -4px;
}
.ingredients-sub-title {
  font-weight: bold;
  color: #1565c0;
  font-size: 0.95rem;
  margin: 15px 0 5px;
}
.ingredients-group {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 10px;
}
.group-label {
  background: #333;
  color: white;
  border-radius: 50%;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  font-weight: bold;
  margin-top: 2px;
  flex-shrink: 0;
}

/* Steps */
.recipe-steps-box ol {
  padding-left: 25px;
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.6;
}
.recipe-steps-box li {
  margin-bottom: 8px;
}
.step-label {
  background: #333;
  color: white;
  border-radius: 50%;
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
  font-weight: bold;
  margin: 0 2px;
}

/* Responsive adjustments */
@media (max-width: 900px) {
  .recipe-block { flex-direction: column; }
  .recipe-vertical-title { position: static; writing-mode: horizontal-tb; width: 100%; border: none; box-shadow: none; padding: 20px 0; margin-bottom: 20px; }
  .recipe-vertical-title .rv-qr { display: none; }
  .recipe-vertical-title .rv-main { font-size: 2.2rem; letter-spacing: 2px; }
}
.buy-btn:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(232, 62, 140, 0.5); }

/* Cookie Details Grid inside Modal */
.cookie-detail-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 30px 15px;
  margin-top: 25px;
}
.cookie-detail-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
#product-modal .cookie-img {
  width: 80px !important;
  height: 80px;
  max-height: 80px;
  border-radius: 50%;
  flex-shrink: 0;
  object-fit: contain;
  margin-bottom: 0;
  mix-blend-mode: normal;
}
.cookie-text {
  flex: 1;
  text-align: left;
}
.cookie-text p {
  margin: 0 !important;
  line-height: 1.4 !important;
}
.c-catchphrase {
  color: #6a1b9a !important; 
  font-size: 0.8rem;
  font-weight: bold;
}
.cookie-text .c-name {
  color: #4a148c;
  font-size: 14px;
  font-weight: bold;
  margin: 3px 0 5px;
  line-height: 1.3;
}
.c-allergen {
  color: #333 !important;
  font-size: 0.75rem;
}
.c-note {
  color: #333 !important;
  font-size: 0.7rem;
  margin-top: 5px !important;
}




/* RECIPE & COLUMN SECTIONS */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  max-width: 960px;
  margin: 40px auto 0;
  width: 95%;
}
.card {
  background: white;
  padding: 10px;
  border-radius: 15px;
  overflow: hidden;
  box-shadow: 0 5px 15px rgba(0,0,0,0.05);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.card:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 25px rgba(0,0,0,0.1);
}
.card img {
  width: 100%;
  height: 200px;
  object-fit: cover;
}
.card-content {
  padding: 20px;
  text-align: left;
}
.card-content h4 {
  margin: 0 0 10px 0;
  font-size: 1.1rem;
  color: var(--c-dark-purple);
}
.card-content p {
  margin: 0;
  font-size: 0.9rem;
  color: #555;
  line-height: 1.6;
}
.wavy-top {
  position: absolute;
  top: -39px;
  left: 0;
  width: 100%;
  height: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='40' viewBox='0 0 240 40'%3E%3Cpath d='M0,20 Q60,-10 120,20 T240,20 L240,40 L0,40 Z' fill='%23f7f4fc'/%3E%3C/svg%3E");
  background-repeat: repeat-x;
  z-index: 1;
}

/* Nav Menu Colors */
.bg-recipe { background-color: #b4d7f1; color: white; }
.bg-column { background-color: #a18cd1; color: white; }

/* Fruit Details Grid inside Modal */
#modal-details p {
  font-size: 1rem;
}

.fruit-detail-grid {
  display: grid;
  gap: 30px;
  margin-top: 20px;
}
.fruit-item {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.f-catch {
  color: #4a148c;
  font-weight: bold;
  font-size: 0.9rem;
  text-align: center;
  margin-bottom: 10px;
  line-height: 1.4;
  height: 2.8em; /* To ensure uniform height across columns */
}
#product-modal .fruit-item img {
  width: 100%;
  max-height: none;
  border-radius: 8px;
  margin-bottom: 15px;
  object-fit: cover;
}
.f-desc-box {
  background-color: #9e8ec5;
  color: white;
  border-radius: 8px;
  display: flex;
  width: 100%;
  overflow: hidden;
  height: 100%; /* Fill remaining space */
}
.f-name {
  padding: 10px;
  font-weight: bold;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background-color: rgba(0, 0, 0, 0.15);
  width: 40%;
  font-size: 0.85rem;
  border-right: 1px solid rgba(255, 255, 255, 0.5);
  line-height: 1.3;
}
.f-desc-text {
  padding: 10px;
  font-size: 0.75rem;
  line-height: 1.4;
  width: 60%;
  display: flex;
  align-items: center;
}

@media (max-width: 768px) {
  .fruit-detail-grid {
    grid-template-columns: 1fr;
  }
  .f-catch {
    height: auto;
  }
}

/* Product Tag Styles */
.product-tags {
  display: flex;
  gap: 6px;
  margin-top: 6px;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.tag {
  font-family: 'M PLUS Rounded 1c', sans-serif;
  font-size: 0.65rem;
  color: white;
  padding: 3px 8px;
  border-radius: 3px;
  font-weight: normal;
  display: inline-block;
  line-height: 1.2;
}
.tag-origin {
  background: #4a2c73; /* Purple/Indigo */
}
.tag-cool {
  background: #009fe8; /* Bright Blue */
}

/* Modal Slider Styles */
.modal-image-container {
  position: relative;
  width: 100%;
  max-height: 250px;
  overflow: hidden;
  margin-bottom: 20px;
  border-radius: 8px;
}
.modal-slider {
  display: flex;
  width: 100%;
  transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.modal-slider img {
  width: 100% !important;
  height: auto !important;
  max-height: 250px !important;
  object-fit: contain !important;
  flex-shrink: 0;
  mix-blend-mode: multiply;
  margin-bottom: 0 !important;
}
.slider-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(75, 61, 92, 0.6); /* Match brand dark purple with opacity */
  color: white;
  border: none;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  z-index: 10;
  transition: background 0.2s, transform 0.2s;
  box-shadow: 0 2px 5px rgba(0,0,0,0.15);
  font-family: monospace;
}
.slider-btn:hover {
  background: rgba(75, 61, 92, 0.9);
  transform: translateY(-50%) scale(1.05);
}
.slider-btn.prev {
  left: 10px;
}
.slider-btn.next {
  right: 10px;
}
.slider-dots {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  z-index: 10;
  background: rgba(0,0,0,0.15);
  padding: 4px 8px;
  border-radius: 10px;
}
.slider-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
  cursor: pointer;
  transition: background 0.2s, transform 0.2s;
}
.slider-dot.active {
  background: white;
  transform: scale(1.2);
}
.ingredients-list{
  display: block;
}

/* =========================================
   Floating Cart Button & Cart Drawer Styles
   ========================================= */
.floating-cart-btn {
  position: fixed;
  bottom: 25px;
  right: 25px;
  background: linear-gradient(135deg, #e60012, #ff4d4d);
  color: white;
  padding: 12px 20px;
  border-radius: 50px;
  box-shadow: 0 6px 20px rgba(230, 0, 18, 0.4);
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  z-index: 9999;
  transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.3s;
  user-select: none;
}
.floating-cart-btn:hover {
  transform: translateY(-4px) scale(1.05);
  box-shadow: 0 10px 25px rgba(230, 0, 18, 0.5);
}
.cart-icon-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}
.cart-badge {
  position: absolute;
  top: -8px;
  right: -10px;
  background: #fff;
  color: #e60012;
  font-size: 0.75rem;
  font-weight: 800;
  min-width: 20px;
  height: 20px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 5px;
  box-shadow: 0 2px 5px rgba(0,0,0,0.2);
  transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.cart-badge.bounce {
  transform: scale(1.4);
}
.cart-label {
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.05em;
}

/* Cart Drawer Overlay */
.cart-drawer-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(3px);
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.cart-drawer-overlay.active {
  opacity: 1;
  visibility: visible;
}

/* Cart Drawer */
.cart-drawer {
  position: fixed;
  top: 0;
  right: -450px;
  width: 420px;
  max-width: 92vw;
  height: 100vh;
  background: #fff;
  z-index: 10000;
  display: flex;
  flex-direction: column;
  box-shadow: -10px 0 30px rgba(0, 0, 0, 0.2);
  transition: right 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.cart-drawer.active {
  right: 0;
}

/* Header */
.cart-drawer-header {
  padding: 18px 22px;
  background: #fdfaf6;
  border-bottom: 2px solid #eae2d6;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.cart-drawer-header .header-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 1.15rem;
  font-weight: 800;
  color: #4b3d5c;
}
.cart-drawer-header .item-count {
  font-size: 0.9rem;
  color: #888;
  font-weight: normal;
}
.cart-drawer-close {
  background: none;
  border: none;
  font-size: 1.8rem;
  color: #666;
  cursor: pointer;
  line-height: 1;
  transition: color 0.2s, transform 0.2s;
}
.cart-drawer-close:hover {
  color: #e60012;
  transform: rotate(90deg);
}

/* Items Container */
.cart-drawer-items {
  flex: 1;
  overflow-y: auto;
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.cart-empty-message {
  text-align: center;
  padding: 60px 20px;
  color: #888;
}
.cart-empty-message svg {
  color: #ccc;
  margin-bottom: 15px;
}
.cart-empty-message p {
  font-size: 0.95rem;
  line-height: 1.6;
}

/* Individual Cart Item */
.cart-item-card {
  display: flex;
  gap: 14px;
  background: #fff;
  border: 1px solid #eee;
  border-radius: 12px;
  padding: 12px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.03);
  position: relative;
  transition: border-color 0.2s;
}
.cart-item-card:hover {
  border-color: #ffd1d1;
}
.cart-item-img {
  width: 75px;
  height: 75px;
  object-fit: contain;
  border-radius: 8px;
  background: #f8f6fb;
  padding: 4px;
  flex-shrink: 0;
}
.cart-item-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.cart-item-title {
  font-size: 0.9rem;
  font-weight: 700;
  color: #333;
  line-height: 1.4;
  margin: 0 0 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.cart-item-option {
  display: inline-block;
  background: #f0e6f7;
  color: #6353a1;
  font-size: 0.75rem;
  font-weight: bold;
  padding: 2px 8px;
  border-radius: 4px;
  margin-bottom: 6px;
  align-self: flex-start;
}
.cart-item-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 6px;
}
.cart-item-price {
  font-weight: 800;
  color: #e60012;
  font-size: 0.95rem;
}
.cart-item-quantity {
  display: flex;
  align-items: center;
  border: 1px solid #ddd;
  border-radius: 6px;
  overflow: hidden;
}
.qty-btn {
  background: #f7f7f7;
  border: none;
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-weight: bold;
  color: #555;
  transition: background 0.15s;
}
.qty-btn:hover {
  background: #e6e6e6;
  color: #000;
}
.qty-value {
  padding: 0 8px;
  font-size: 0.85rem;
  font-weight: 700;
  color: #333;
  min-width: 24px;
  text-align: center;
}
.cart-item-remove {
  background: none;
  border: none;
  color: #aaa;
  cursor: pointer;
  padding: 4px;
  font-size: 1.1rem;
  line-height: 1;
  transition: color 0.2s;
  position: absolute;
  top: 8px;
  right: 8px;
}
.cart-item-remove:hover {
  color: #e60012;
}
.single-item-link {
  font-size: 0.75rem;
  color: #1976d2;
  text-decoration: underline;
  margin-top: 4px;
  display: inline-block;
}

/* Footer */
.cart-drawer-footer {
  padding: 18px 22px;
  background: #fdfaf6;
  border-top: 2px solid #eae2d6;
  box-shadow: 0 -4px 12px rgba(0,0,0,0.03);
}
.cart-summary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 800;
  color: #333;
  font-size: 1.05rem;
  margin-bottom: 6px;
}
.cart-total-price {
  font-size: 1.35rem;
  color: #e60012;
}
.cart-batch-note {
  font-size: 0.75rem;
  color: #666;
  margin: 0 0 14px;
  line-height: 1.4;
}
.batch-checkout-btn {
  width: 100%;
  background: linear-gradient(135deg, #e60012, #ff3b3b);
  color: white;
  border: none;
  padding: 14px;
  border-radius: 10px;
  font-weight: 800;
  font-size: 1rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-shadow: 0 4px 14px rgba(230, 0, 18, 0.35);
  transition: transform 0.2s, box-shadow 0.2s;
  margin-bottom: 10px;
}
.batch-checkout-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(230, 0, 18, 0.45);
}
.continue-shopping-btn {
  width: 100%;
  background: #fff;
  color: #4b3d5c;
  border: 1.5px solid #4b3d5c;
  padding: 10px;
  border-radius: 10px;
  font-weight: 700;
  font-size: 0.9rem;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
  margin-bottom: 8px;
}
.continue-shopping-btn:hover {
  background: #4b3d5c;
  color: #fff;
}
.clear-cart-btn {
  background: none;
  border: none;
  color: #999;
  font-size: 0.8rem;
  text-decoration: underline;
  cursor: pointer;
  width: 100%;
  text-align: center;
  padding: 4px 0;
}
.clear-cart-btn:hover {
  color: #e60012;
}

/* Toast Notification */
.cart-toast {
  position: fixed;
  bottom: 85px;
  right: 25px;
  background: #283593;
  color: white;
  padding: 12px 18px;
  border-radius: 12px;
  box-shadow: 0 8px 25px rgba(40, 53, 147, 0.4);
  display: flex;
  align-items: center;
  gap: 15px;
  z-index: 10001;
  opacity: 0;
  visibility: hidden;
  transform: translateY(20px);
  transition: opacity 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), visibility 0.3s;
}
.cart-toast.show {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.toast-content {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.9rem;
  font-weight: 700;
}
.toast-action-btn {
  background: #ffca28;
  color: #333;
  border: none;
  padding: 6px 12px;
  border-radius: 6px;
  font-weight: 800;
  font-size: 0.8rem;
  cursor: pointer;
  white-space: nowrap;
  transition: transform 0.15s, background 0.15s;
}
.toast-action-btn:hover {
  background: #ffd54f;
  transform: scale(1.05);
}

/* More Blueberry Recipe Button */
.more-recipe-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #1976d2, #1565c0);
  color: #fff !important;
  font-size: 1.05rem;
  font-weight: 800;
  padding: 14px 38px;
  border-radius: 50px;
  text-decoration: none !important;
  box-shadow: 0 6px 20px rgba(21, 101, 192, 0.35);
  transition: transform 0.25s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.25s, background 0.25s;
}
.more-recipe-btn:hover {
  transform: translateY(-3px) scale(1.03);
  box-shadow: 0 10px 26px rgba(21, 101, 192, 0.48);
  background: linear-gradient(135deg, #1e88e5, #1565c0);
}
.more-recipe-btn svg {
  transition: transform 0.2s ease;
}
.more-recipe-btn:hover svg {
  transform: translateX(4px);
}

@media (max-width: 600px) {
  .cart-drawer {
    width: 100vw;
    max-width: 100vw;
  }
  .floating-cart-btn {
    bottom: 3%;
    right: 15px;
    padding: 10px 16px;
  }
  .cart-toast {
    bottom: 75px;
    right: 15px;
    left: 15px;
    justify-content: space-between;
  }
  .more-recipe-btn {
    font-size: 0.95rem;
    padding: 12px 28px;
    width: 90%;
    justify-content: center;
  }
}
