.cl-page,
.cl-overview {
  --cl-accent: #d94f68;
  --cl-accent-dark: #9f2f48;
  --cl-accent-soft: #fff0f3;
  --cl-ink: #272326;
  --cl-muted: #71696e;
  --cl-paper: #fffdfb;
  --cl-line: #eadfe2;
  color: var(--cl-ink);
  padding-bottom: 72px;
}

.cl-page *,
.cl-overview *,
.cl-modal * {
  box-sizing: border-box;
}

/* 彈窗與 toast 掛在 .cl-page 外面（body 直屬），拿不到活動色票；
   給一份預設值，商品詳情頁單獨載入本檔時也能正常上色。 */
.cl-modal,
.cl-toast {
  --cl-accent: #d94f68;
  --cl-accent-dark: #9f2f48;
  --cl-accent-soft: #fff0f3;
  --cl-ink: #272326;
  --cl-muted: #71696e;
  --cl-line: #eadfe2;
}

.cl-page.cl-theme-purple { --cl-accent: #805394; --cl-accent-dark: #593568; --cl-accent-soft: #f6eef8; --cl-line: #e7d9eb; }
.cl-page.cl-theme-green { --cl-accent: #367e62; --cl-accent-dark: #225740; --cl-accent-soft: #edf7f2; --cl-line: #d5e8de; }
.cl-page.cl-theme-gold { --cl-accent: #b56d19; --cl-accent-dark: #78450d; --cl-accent-soft: #fff6e6; --cl-line: #eeddbf; }
.cl-page.cl-theme-blue { --cl-accent: #326d9d; --cl-accent-dark: #204968; --cl-accent-soft: #edf5fa; --cl-line: #d4e4ef; }
.cl-page.cl-theme-red { --cl-accent: #d94f68; --cl-accent-dark: #9f2f48; --cl-accent-soft: #fff0f3; --cl-line: #ead9de; }

.cl-page .breadcrumb,
.cl-overview .breadcrumb {
  margin: 10px 0 14px;
  padding: 0;
  background: transparent;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 6px;
  font-size: 12.5px;
}
.cl-page .breadcrumb > li,
.cl-overview .breadcrumb > li {
  display: inline-flex;
  align-items: center;
}
.cl-page .breadcrumb > li + li::before,
.cl-overview .breadcrumb > li + li::before {
  content: "/";
  padding: 0 6px;
  color: #b5a9ad;
}
.cl-page .breadcrumb a,
.cl-overview .breadcrumb a {
  color: #71696e;
  text-decoration: none;
}
.cl-page .breadcrumb a:hover,
.cl-overview .breadcrumb a:hover {
  color: var(--cl-accent-dark);
}

.cl-hero-full {
  margin-bottom: 24px;
  background: var(--cl-paper);
  border: 1px solid var(--cl-line);
  border-radius: var(--ym-radius-lg);
  overflow: hidden;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
}

.cl-hero-full__media {
  display: block;
  width: 100%;
  overflow: hidden;
  background: var(--cl-accent-soft);
}

.cl-hero-full__media img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 320px;
  object-fit: cover;
}

.cl-hero-full__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 24px;
  background: linear-gradient(135deg, var(--cl-accent-soft), #fff 70%);
  border-top: 1px solid var(--cl-line);
}

.cl-hero-full__bar .cl-countdown {
  margin-top: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
}

.cl-hero-full__bar .cl-countdown > span {
  flex-basis: auto;
  color: var(--cl-accent-dark);
  font-size: 13px;
  font-weight: 800;
  margin-right: 6px;
}

.cl-hero-full__bar .cl-countdown strong {
  font-size: 18px;
  color: var(--cl-accent-dark);
}

.cl-tiers-compact {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.cl-tiers-compact__title {
  font-size: 13px;
  font-weight: 800;
  color: var(--cl-accent-dark);
}

.cl-tier-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  border-radius: var(--ym-radius-pill);
  background: #fff;
  border: 1px solid var(--cl-line);
  font-size: 12px;
  color: var(--cl-ink);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.02);
}

.cl-tier-chip strong {
  color: var(--cl-accent);
}

.cl-tier-chip b {
  color: var(--cl-accent-dark);
  font-weight: 800;
}

.cl-hero {
  display: grid;
  align-items: stretch;
  grid-template-columns: minmax(0, 1.65fr) minmax(300px, .85fr);
  min-height: 300px;
  overflow: hidden;
  background: var(--cl-accent-soft);
  border: 1px solid var(--cl-line);
  border-radius: var(--ym-radius-lg);
  box-shadow: var(--ym-shadow-overlay);
}

.cl-hero--no-image {
  grid-template-columns: 1fr;
  background:
    radial-gradient(circle at 80% 20%, rgba(255,255,255,.8), transparent 25%),
    linear-gradient(130deg, var(--cl-accent-soft), #fff 65%);
}

.cl-hero__media,
.cl-hero__media picture {
  display: block;
  width: 100%;
  background: #fff8ee;
}

.cl-hero__media {
  min-width: 0;
  overflow: hidden;
  display: grid;
  align-content: center;
}

.cl-hero__media picture { min-width: 0; }

.cl-hero__media img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  max-height: 100%;
  object-fit: contain;
}

.cl-hero__content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 34px 32px;
  position: relative;
}

.cl-hero__content::after {
  content: "";
  width: 86px;
  height: 6px;
  margin-top: 24px;
  background: var(--cl-accent);
  border-radius: var(--ym-radius-pill);
}

.cl-eyebrow,
.cl-section-heading > span,
.cl-section-heading > div > span,
.cl-overview__hero > p,
.cl-empty > span {
  color: var(--cl-accent-dark);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .18em;
  margin: 0 0 8px;
}

.cl-hero h1 {
  font-size: clamp(26px, 2.3vw, 34px);
  font-weight: 900;
  letter-spacing: -.035em;
  line-height: 1.25;
  margin: 0 0 12px;
  text-wrap: balance;
}

.cl-hero__description {
  color: var(--cl-muted);
  line-height: 1.75;
  max-height: 5.25em;
  overflow: hidden;
}

.cl-hero__description p:last-child { margin-bottom: 0; }

.cl-countdown {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 22px;
}

.cl-countdown > span {
  flex-basis: 100%;
  color: var(--cl-muted);
  font-size: 12px;
  font-weight: 700;
}

.cl-countdown strong {
  color: var(--cl-accent-dark);
  font-size: 24px;
  font-variant-numeric: tabular-nums;
}

.cl-countdown small { color: var(--cl-muted); margin-right: 5px; }

.cl-tiers,
.cl-catalog {
  margin-top: 52px;
}

.cl-section-heading {
  margin-bottom: 20px;
}

.cl-section-heading h2 {
  font-size: clamp(24px, 3vw, 34px);
  font-weight: 900;
  letter-spacing: -.03em;
  margin: 0;
}

.cl-section-heading p {
  color: var(--cl-muted);
  line-height: 1.6;
  margin: 8px 0 0;
}

.cl-section-heading--row {
  align-items: end;
  display: flex;
  justify-content: space-between;
  gap: 20px;
}

.cl-section-heading--row > p { white-space: nowrap; }

.cl-tier-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px;
}

.cl-tier {
  align-items: baseline;
  background: var(--cl-accent-soft);
  border: 1px solid var(--cl-line);
  border-radius: var(--ym-radius-md);
  display: flex;
  min-height: 116px;
  padding: 22px;
  position: relative;
  overflow: hidden;
}

.cl-tier::after {
  content: "";
  background: var(--cl-accent);
  border-radius: 50%;
  height: 78px;
  opacity: .09;
  position: absolute;
  right: -20px;
  top: -22px;
  width: 78px;
}

.cl-tier > span { color: var(--cl-muted); font-weight: 700; margin-right: 8px; }
.cl-tier > strong { color: var(--cl-accent-dark); font-size: 38px; line-height: 1; }
.cl-tier > small { color: var(--cl-muted); margin-left: 3px; }
.cl-tier > b { bottom: 18px; color: var(--cl-accent); font-size: 16px; left: 22px; position: absolute; }

/* 滿額提醒＝置頂浮動條。原本是一塊近黑色的長條，跟上方粉底的「活動優惠門檻」
   卡片像兩個不同網站；改成同一套色票（accent-soft 底、accent-dark 字、18px 圓角），
   並且手機也 sticky（原本 position:static 等於沒有提醒效果）。
   top 用 --ym-sticky-offset 讓它停在 sticky header 底下，不互相遮蔽。 */
/* ---------- [專屬主題活動主選單與子分類選單] ---------- */
.ym-campaign-nav-bar {
  margin: 0 0 20px;
  background: #ffffff;
  border: 1px solid #ebdcdf;
  border-radius: var(--ym-radius-md, 14px);
  padding: 8px 14px;
  box-shadow: 0 2px 10px rgba(75, 40, 50, 0.04);
}
.ym-campaign-nav-bar__inner {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.ym-campaign-nav-bar__lead {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--cl-accent-soft, #fff0f3);
  border: 1px solid #f6d8de;
  border-radius: var(--ym-radius-pill, 999px);
  color: var(--cl-accent-dark, #9f2f48);
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
  flex-shrink: 0;
}
.ym-campaign-nav-bar__lead i {
  color: var(--cl-accent, #d94f68);
}
.ym-campaign-nav-bar__rail {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 2px 0;
  white-space: nowrap;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  flex: 1;
}
.ym-campaign-nav-bar__rail::-webkit-scrollbar { display: none; }
.ym-campaign-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 16px;
  background: #fdfafb;
  border: 1px solid #ebdcdf;
  border-radius: var(--ym-radius-pill, 999px);
  color: var(--cl-ink, #272326);
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  transition: all .18s cubic-bezier(.2,.8,.2,1);
  flex-shrink: 0;
}
.ym-campaign-tab:hover {
  background: #fff;
  color: var(--cl-accent-dark, #9f2f48);
  border-color: var(--cl-accent, #d94f68);
  box-shadow: 0 2px 8px rgba(217, 79, 104, 0.14);
  transform: translateY(-1px);
  text-decoration: none;
}
.ym-campaign-tab.is-active {
  background: linear-gradient(135deg, var(--cl-accent, #d94f68), var(--cl-accent-dark, #9f2f48));
  color: #fff;
  border-color: transparent;
  box-shadow: 0 3px 12px rgba(217, 79, 104, 0.32);
  font-weight: 800;
}
.ym-campaign-tab.is-active i {
  color: #fff;
}

.cl-filters-compact {
  margin: 10px 0 20px;
  background: #faf7f8;
  border: 1px solid #eddfe2;
  border-radius: var(--ym-radius-sm, 10px);
  padding: 8px 14px;
}
.cl-filters-compact__rail {
  display: flex;
  align-items: center;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  white-space: nowrap;
}
.cl-filters-compact__rail::-webkit-scrollbar { display: none; }
.cl-filters-compact__label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 800;
  color: var(--cl-muted, #71696e);
  margin-right: 4px;
  flex-shrink: 0;
}
.cl-filter-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 15px;
  background: #fff;
  border: 1px solid var(--cl-line, #eadfe2);
  border-radius: var(--ym-radius-pill, 999px);
  color: var(--cl-ink, #272326);
  font-size: 12.5px;
  font-weight: 700;
  text-decoration: none;
  transition: all .15s ease;
  flex-shrink: 0;
}
.cl-filter-pill:hover {
  background: var(--cl-accent-soft);
  color: var(--cl-accent-dark);
  border-color: var(--cl-accent);
  text-decoration: none;
}
.cl-filter-pill.is-active {
  background: var(--cl-accent-dark, #9f2f48);
  color: #fff;
  border-color: var(--cl-accent-dark, #9f2f48);
  box-shadow: 0 2px 6px rgba(159, 47, 72, 0.25);
}
.cl-filter-pill small {
  font-size: 11px;
  opacity: .85;
}

/* ---------- [極簡緊湊型滿額進度條] ---------- */
.cl-progress {
  align-items: center;
  background: linear-gradient(135deg, var(--cl-accent-soft), #fff 80%);
  border: 1px solid var(--cl-line);
  border-radius: var(--ym-radius-pill, 999px);
  color: var(--cl-ink);
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin: 10px 0 16px;
  padding: 6px 14px 6px 18px;
  position: static;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
}

.cl-progress[hidden] { display: none !important; }
.cl-progress__copy {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 auto;
  min-width: 0;
}
.cl-progress__copy strong {
  color: var(--cl-accent-dark);
  font-size: 12.5px;
  font-weight: 900;
  white-space: nowrap;
}
.cl-progress__copy span {
  color: var(--cl-ink);
  font-size: 12px;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cl-progress__copy span b { color: var(--cl-accent-dark); font-weight: 900; }
.cl-progress__track {
  width: 110px;
  flex: 0 0 110px;
  background: #fff;
  border: 1px solid var(--cl-line);
  border-radius: var(--ym-radius-pill);
  height: 6px;
  overflow: hidden;
}
.cl-progress__track span {
  background: linear-gradient(90deg, var(--cl-accent-dark), var(--cl-accent));
  border-radius: inherit;
  display: block;
  height: 100%;
  transition: width .45s ease;
}
.cl-progress:not([data-progress-state="empty"]):not([data-progress-state="none"]) .cl-progress__track span { min-width: 10px; }
.cl-progress__cart {
  align-items: center;
  background: var(--cl-accent-dark);
  border-radius: var(--ym-radius-pill);
  color: #fff;
  display: inline-flex;
  font-size: 12px;
  font-weight: 800;
  gap: 5px;
  justify-content: center;
  min-height: 28px;
  padding: 0 12px;
  white-space: nowrap;
}
.cl-progress__cart:hover, .cl-progress__cart:focus { background: var(--cl-accent); color: #fff; text-decoration: none; }
.cl-progress__close {
  align-items: center;
  background: transparent;
  border: 0;
  border-radius: 50%;
  color: var(--cl-muted);
  display: flex;
  height: 26px;
  justify-content: center;
  padding: 0;
  width: 26px;
}
.cl-progress__close:hover, .cl-progress__close:focus { background: #fff; color: var(--cl-ink); }
.cl-progress .sr-only { clip: rect(0 0 0 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }

.cl-filters {
  display: flex;
  gap: 8px;
  margin: -4px 0 18px;
  overflow-x: auto;
  padding: 4px 2px 8px;
  scrollbar-width: thin;
}

.cl-filters a {
  align-items: center;
  background: #fff;
  border: 1px solid var(--cl-line);
  border-radius: var(--ym-radius-pill);
  color: var(--cl-ink);
  display: inline-flex;
  flex: 0 0 auto;
  font-size: 13px;
  font-weight: 700;
  min-height: 44px;
  min-width: 44px;
  padding: 9px 15px;
}

.cl-filters a:hover,
.cl-filters a:focus,
.cl-filters a.is-active {
  background: var(--cl-accent-dark);
  border-color: var(--cl-accent-dark);
  color: #fff;
  text-decoration: none;
}

.cl-filters small { opacity: .72; }

.cl-toolbar {
  align-items: center;
  background: #f8f5f4;
  border-radius: var(--ym-radius-md);
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-bottom: 22px;
  padding: 12px 14px;
}

.cl-toolbar > span { color: var(--cl-muted); font-size: 12px; margin-right: auto; }
.cl-toolbar label { color: var(--cl-muted); font-size: 12px; margin: 0; }
.cl-toolbar select { height: 38px; max-width: 210px; }

.cl-products {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}

.cl-product {
  background: #fff;
  border: 1px solid #eee7e9;
  border-radius: var(--ym-radius-md);
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
  transition: box-shadow .25s ease, transform .25s ease;
}

.cl-product:hover {
  box-shadow: var(--ym-shadow-overlay);
  transform: translateY(-3px);
}

.cl-product__image {
  aspect-ratio: 1 / 1;
  background: #f7f5f3;
  display: block;
  overflow: hidden;
  position: relative;
}

.cl-product__image img {
  height: 100%;
  object-fit: cover;
  transition: transform .45s ease;
  width: 100%;
}

.cl-product:hover .cl-product__image img { transform: scale(1.035); }

.cl-product__sale,
.cl-product__stock {
  border-radius: var(--ym-radius-pill);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  left: 12px;
  padding: 6px 9px;
  position: absolute;
  top: 12px;
}

.cl-product__sale { background: var(--cl-accent-dark); }
.cl-product__stock { background: #5c575a; left: auto; right: 12px; }

.cl-product__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: 15px;
}

.cl-product__name {
  color: var(--cl-ink);
  display: -webkit-box;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.55;
  min-height: 43px;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.cl-product__name:hover { color: var(--cl-accent-dark); }
.cl-product__rating { color: #9b5800; font-size: 11px; margin-top: 8px; }

.cl-product__price {
  align-items: baseline;
  align-content: flex-start;
  display: flex;
  flex-wrap: wrap;
  gap: 5px 8px;
  margin: auto 0 13px;
  padding-top: 14px;
  /* 預留「省 N 元」那一行，沒有省字樣的卡片價格基線才不會被推低 22.6px */
  min-height: 69px;
}

.cl-product__price strong { color: var(--cl-accent-dark); font-size: 20px; font-weight: 900; }
.cl-product__price del { color: #71696e; font-size: 12px; }
.cl-product__price small { color: var(--cl-accent-dark); flex-basis: 100%; font-size: 11px; }
.cl-product__actions { display: grid; gap: 6px; grid-template-columns: 1fr 38px 38px; }

.cl-button,
.cl-icon-button {
  align-items: center;
  border-radius: var(--ym-radius-sm);
  cursor: pointer;
  display: inline-flex;
  font-weight: 800;
  justify-content: center;
  min-height: 44px;
  min-width: 44px;
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}

.cl-button { border: 1px solid transparent; gap: 7px; padding: 10px 15px; }
.cl-button--primary { background: var(--cl-accent-dark); color: #fff; }
.cl-button--primary:hover, .cl-button--primary:focus { background: var(--cl-accent); color: #fff; }
.cl-button--secondary { background: #fff; border-color: #cbc2c6; color: var(--cl-ink); }
.cl-icon-button { background: #fff; border: 1px solid #928589; color: #675e63; }
.cl-icon-button:hover, .cl-icon-button:focus { border-color: var(--cl-accent); color: var(--cl-accent-dark); }
.cl-button:disabled, .cl-icon-button:disabled { cursor: not-allowed; opacity: .48; }

.cl-pagination {
  align-items: center;
  display: flex;
  justify-content: space-between;
  margin-top: 32px;
}

.cl-pagination .pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
}

.cl-pagination .pagination > li { display: block; }

.cl-pagination .pagination > li > a,
.cl-pagination .pagination > li > span {
  align-items: center;
  display: inline-flex;
  justify-content: center;
  min-height: 44px;
  min-width: 44px;
}

.cl-pagination p { color: var(--cl-muted); font-size: 12px; }
.cl-empty { background: var(--cl-accent-soft); border-radius: var(--ym-radius-md); padding: 60px 24px; text-align: center; }
.cl-empty h2 { font-size: 22px; margin: 0 0 22px; }

.cl-modal[hidden],
.cl-toast[hidden] { display: none !important; }

.cl-modal {
  inset: 0;
  position: fixed;
  z-index: 10050;
}

.cl-modal__backdrop {
  background: rgba(28, 23, 26, .58);
  inset: 0;
  position: absolute;
}

.cl-modal__dialog {
  background: #fff;
  border-radius: var(--ym-radius-lg);
  box-shadow: var(--ym-shadow-overlay);
  left: 50%;
  max-height: min(760px, calc(100vh - 40px));
  max-width: 720px;
  overflow: auto;
  padding: 26px;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: calc(100% - 32px);
}

.cl-modal__close {
  align-items: center;
  background: #f4f1f2;
  border: 0;
  border-radius: 50%;
  display: flex;
  height: 44px;
  justify-content: center;
  position: absolute;
  right: 16px;
  top: 16px;
  width: 44px;
  z-index: 2;
}

.cl-modal-open { overflow: hidden; }
.cl-loading { align-items: center; color: #71696e; display: flex; gap: 12px; justify-content: center; min-height: 220px; }
.cl-loading span { animation: cl-spin .8s linear infinite; border: 3px solid #eadfe2; border-radius: 50%; border-top-color: #d94f68; height: 28px; width: 28px; }
@keyframes cl-spin { to { transform: rotate(360deg); } }

.cl-options__product { align-items: center; display: grid; gap: 18px; grid-template-columns: 120px 1fr; padding-right: 40px; }
.cl-options__product img { background: #f7f5f3; border-radius: var(--ym-radius-md); height: 120px; object-fit: cover; width: 120px; }
.cl-options__product h3 { font-size: 20px; line-height: 1.4; margin: 0 0 8px; }
.cl-options__price { align-items: baseline; display: flex; gap: 8px; margin: 0; }
.cl-options__price strong { color: #a9324c; font-size: 22px; }
.cl-options__price del { color: #938a8e; }
.cl-options__form { border-top: 1px solid #eee7e9; margin-top: 20px; padding-top: 20px; }

.cl-option { border: 0; margin: 0 0 20px; min-width: 0; padding: 0; }
.cl-option legend { border: 0; color: #302a2e; font-size: 14px; font-weight: 800; margin: 0 0 9px; padding: 0; width: auto; }
.cl-option legend > span:first-of-type { color: #c52947; margin-left: 4px; }
.cl-option .form-control { border-color: #928589; border-radius: var(--ym-radius-xs); min-height: 44px; }
.cl-option.has-error .form-control, .cl-option.has-error .cl-option-choice { border-color: #c52947; }
.cl-option__error { color: #b22440; display: block; font-size: 12px; margin-top: 5px; }
.cl-option-choices { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cl-option-choices--image { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cl-option-choice { align-items: center; border: 1px solid #ded6d9; border-radius: var(--ym-radius-sm); cursor: pointer; display: flex; gap: 8px; margin: 0; min-height: 48px; padding: 8px 10px; }
.cl-option-choice:has(input:checked) { background: #fff1f4; border-color: #b73650; }
.cl-option-choice img { border-radius: var(--ym-radius-xs); height: 52px; object-fit: cover; width: 52px; }
.cl-option-choice small { color: #9f2f48; display: block; font-weight: 700; }
.cl-option-upload { align-items: center; display: flex; gap: 12px; }
.cl-option-upload > span { color: #71696e; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.cl-options__footer { align-items: end; border-top: 1px solid #eee7e9; display: flex; gap: 18px; justify-content: space-between; padding-top: 18px; }
.cl-quantity { color: #50484c; display: flex; flex-direction: column; font-size: 12px; gap: 6px; margin: 0; }
.cl-quantity__control { display: grid; grid-template-columns: 38px 62px 38px; }
.cl-quantity__control button, .cl-quantity__control input { background: #fff; border: 1px solid #928589; min-height: 44px; text-align: center; }
.cl-quantity__control button:first-child { border-radius: var(--ym-radius-xs) 0 0 var(--ym-radius-xs); }
.cl-quantity__control button:last-child { border-radius: 0 var(--ym-radius-xs) var(--ym-radius-xs) 0; }
.cl-quantity__control input { border-left: 0; border-right: 0; width: 62px; }
.cl-options__notice { color: #b22440; font-size: 13px; margin-top: 10px; min-height: 20px; text-align: right; }
.cl-modal-error { padding: 70px 20px; text-align: center; }

.cl-toast {
  background: #272326;
  border-radius: var(--ym-radius-sm);
  bottom: 24px;
  color: #fff;
  left: 50%;
  max-width: calc(100% - 32px);
  padding: 13px 20px;
  position: fixed;
  transform: translateX(-50%);
  z-index: 10100;
  box-shadow: var(--ym-shadow-overlay);
}

.cl-toast.is-error { background: #9c2940; }

.cl-overview__hero {
  background:
    radial-gradient(circle at 82% 18%, rgba(255,255,255,.55), transparent 22%),
    linear-gradient(125deg, #f8dfe5, #fff7f1);
  border-radius: var(--ym-radius-lg);
  margin-bottom: 42px;
  padding: 48px;
}

.cl-overview__hero h1 { font-size: clamp(32px, 5vw, 52px); font-weight: 900; letter-spacing: -.04em; margin: 0 0 10px; }
.cl-overview__hero > span { color: #71696e; }
.cl-overview__list { display: grid; gap: 32px; }
.cl-overview-card { background: #fff; border: 1px solid #eadfe2; border-radius: var(--ym-radius-lg); overflow: hidden; }
.cl-overview-card__banner { background: #f8eeef; display: block; min-height: 120px; overflow: hidden; }
.cl-overview-card__banner img { display: block; max-height: 300px; object-fit: cover; width: 100%; }
.cl-overview-card__banner > span { align-items: center; color: #9f2f48; display: flex; font-size: 28px; font-weight: 900; justify-content: center; min-height: 180px; }
.cl-overview-card__head { align-items: end; display: flex; justify-content: space-between; padding: 22px 24px 18px; }
.cl-overview-card__head p { color: #71696e; font-size: 11px; margin: 0 0 3px; }
.cl-overview-card__head h2 { font-size: 23px; font-weight: 900; margin: 0; }
.cl-overview-card__head > a { align-items: center; color: #9f2f48; display: inline-flex; font-size: 13px; font-weight: 800; min-height: 44px; min-width: 44px; }
.cl-overview-products { display: grid; gap: 12px; grid-template-columns: repeat(6, minmax(0, 1fr)); padding: 0 24px 24px; }
.cl-overview-product { color: #272326; min-width: 0; }
.cl-overview-product img { aspect-ratio: 1; background: #f7f5f3; border-radius: var(--ym-radius-sm); object-fit: cover; width: 100%; }
.cl-overview-product > span { display: -webkit-box; font-size: 12px; line-height: 1.45; margin-top: 8px; min-height: 35px; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.cl-overview-product strong { color: #9f2f48; display: block; font-size: 14px; margin-top: 5px; }
.cl-overview-product del { color: #71696e; font-size: 10px; }

@media (max-width: 991px) {
  .cl-hero { grid-template-columns: 1.4fr 1fr; }
  .cl-hero__content { padding: 26px 22px; }
  .cl-products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cl-progress { grid-template-columns: minmax(0, 1fr) auto 44px; }
  .cl-progress__track { grid-column: 1 / -1; grid-row: 2; }
  .cl-progress__cart { grid-column: 2; grid-row: 1; }
  .cl-progress__close { grid-column: 3; grid-row: 1; }
  .cl-progress__cart, .cl-progress__close { align-self: stretch; }
  .cl-overview-products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
  .cl-hero-full__bar {
    flex-direction: column;
    align-items: flex-start;
    padding: 12px 16px;
    gap: 10px;
  }
  .cl-page, .cl-overview { padding-bottom: 48px; }
  .cl-page { display: flex; flex-direction: column; }
  .cl-page > .breadcrumb { order: 0; }
  .cl-page > .cl-hero { order: 1; }
  .cl-page > .cl-progress { order: 2; }
  .cl-page > .cl-tiers { order: 3; }
  .cl-page > .cl-catalog { order: 4; }
  .cl-page .breadcrumb { margin: 4px 0 6px; }
  .cl-hero { min-height: 0; border-radius: var(--ym-radius-md); grid-template-columns: 1fr; }
  .cl-hero__media, .cl-hero__media picture { min-height: 0; }
  .cl-hero__media img { aspect-ratio: 3 / 1; height: auto; min-height: 0; object-fit: cover; }
  .cl-hero__content { padding: 6px 14px 8px; }
  .cl-hero__content::after { display: none; }
  .cl-hero .cl-eyebrow { margin-bottom: 4px; }
  .cl-hero h1 { margin-bottom: 4px; font-size: 25px; }
  .cl-hero__description { max-height: none; line-height: 1.45; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
  .cl-countdown { margin-top: 4px; }
  .cl-countdown > span { flex-basis: auto; margin-right: 4px; }
  .cl-countdown strong { font-size: 19px; }
  .cl-tiers, .cl-catalog { margin-top: 26px; }
  .cl-tiers { margin-top: 8px; }
  .cl-catalog { margin-top: 6px; }
  .cl-tiers .cl-section-heading { margin-bottom: 4px; }
  .cl-tiers .cl-section-heading > span { margin-bottom: 3px; }
  .cl-tiers .cl-section-heading h2 { font-size: 18px; }
  .cl-tiers .cl-section-heading p { display: none; }
  .cl-tier-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 8px; margin-right: 0; overflow: visible; padding: 0 0 3px; }
  .cl-tier { flex: 0 1 auto; min-width: 0; min-height: 54px; padding: 7px 9px; flex-wrap: wrap; align-content: center; }
  .cl-tier::after { width: 52px; height: 52px; right: -16px; top: -16px; }
  .cl-tier > span { margin-right: 5px; font-size: 11px; }
  .cl-tier > strong { font-size: 24px; }
  .cl-tier > b { position: static; flex-basis: 100%; margin-top: 2px; font-size: 12px; }
  /* 390 寬：一行文字 + 一條進度條 + 兩個 44px 觸控目標，整條約 78px，
     不做成三列以免把商品卡的「加入購物車」推到畫面外。 */
  .cl-progress { gap: 4px 6px; grid-template-columns: minmax(0, 1fr) 44px 44px; margin: 6px 0 0; padding: 7px 8px 8px; border-radius: var(--ym-radius-md); top: calc(var(--ym-sticky-offset, 0px) + 4px); }
  .cl-progress__copy strong { font-size: 12.5px; }
  .cl-progress__copy span { font-size: 11.5px; line-height: 1.4; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
  .cl-progress__track { grid-column: 1 / -1; grid-row: 2; height: 7px; }
  .cl-progress__cart { grid-column: 2; grid-row: 1; min-height: 44px; padding: 0; width: 44px; }
  .cl-progress__cart-label { display: none; }
  .cl-progress__close { grid-column: 3; grid-row: 1; }
  .cl-products { gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cl-product { border-radius: var(--ym-radius-sm); }
  .cl-product__body { padding: 11px; }
  .cl-product__name { font-size: 13px; }
  .cl-product__price { min-height: 64px; }
  .cl-product__price strong { font-size: 17px; }
  .cl-product__actions { grid-template-columns: 1fr 44px; }
  .cl-product__actions [data-compare-product] { display: none; }
  .cl-product__actions .cl-button { font-size: 12px; padding: 8px; }
  .cl-toolbar { align-items: stretch; flex-wrap: wrap; }
  .cl-toolbar > span { flex-basis: 100%; }
  .cl-toolbar label { align-self: center; margin-left: auto; }
  .cl-toolbar select { max-width: 180px; }
  .cl-pagination { align-items: flex-start; flex-direction: column; }
  .cl-modal__dialog { border-radius: var(--ym-radius-md) var(--ym-radius-md) 0 0; bottom: 0; left: 0; max-height: 90vh; padding: 20px 16px; top: auto; transform: none; width: 100%; }
  .cl-options__product { gap: 12px; grid-template-columns: 82px 1fr; padding-right: 34px; }
  .cl-options__product img { height: 82px; width: 82px; }
  .cl-options__product h3 { font-size: 16px; }
  .cl-option-choices, .cl-option-choices--image { grid-template-columns: 1fr 1fr; }
  .cl-options__footer { align-items: stretch; flex-direction: column; }
  .cl-options__footer .cl-button { width: 100%; }
  .cl-overview__hero { margin-bottom: 28px; padding: 34px 22px; }
  .cl-overview-card__head { align-items: flex-start; gap: 14px; padding: 18px; }
  .cl-overview-card__head h2 { font-size: 19px; }
  .cl-overview-products {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    padding: 0 18px 18px;
    scroll-padding-inline: 18px;
    scroll-snap-type: inline proximity;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
  }
  .cl-overview-product { flex: 0 0 min(42vw, 150px); scroll-snap-align: start; }
}

@media (max-width: 420px) {
  .cl-product__actions { grid-template-columns: 1fr; }
  .cl-product__actions .cl-icon-button { display: none; }
  .cl-option-choices, .cl-option-choices--image { grid-template-columns: 1fr; }
  .cl-overview-product { flex-basis: min(44vw, 150px); }
}

@media (prefers-reduced-motion: reduce) {
  .cl-product,
  .cl-product__image img,
  .cl-progress__track span { transition: none; }
  .cl-loading span { animation: none; }
}
