/* =========================================================================
   Seascape 博海旅行社 — 設計系統 (靜態視覺稿)
   由 Sweetday theme.json 轉譯，海洋度假藍色系。
   Token 命名對齊未來 theme.json presets，方便打包成 block theme。
   Prefix: .ml-
   ========================================================================= */

:root {
  /* --- 色盤：深藍 + 金 (奢華) --- */
  --c-primary: #FFFFFF;
  --c-accent: #1180B8;        /* 深藍 主強調 (按鈕/badge) */
  --c-accent-700: #0C5C84;    /* 深靛藍 文字/按鈕 (WCAG AA) */
  --c-accent-100: #E4F3FB;    /* 淺藍 區塊底 */
  --c-secondary: #C9A24B;     /* 金 點綴 (eyebrow/裝飾/hover) */
  --c-secondary-700: #73561A; /* 深金/古銅 (價格/highlight 文字) */
  /* 按鈕配色對齊 seascape 深藍（只吃按鈕，其餘 accent 區塊維持 MLE 天空藍） */
  --c-btn: #163C63;           /* = seascape --c-accent */
  --c-btn-700: #0C2544;       /* = seascape --c-accent-700 */
  --c-btn-100: #EAF0F7;       /* = seascape --c-accent-100 (light 按鈕 hover 底) */
  --c-sand-100: #F8F3E7;      /* 香檳米 交替底 */
  --c-text: #132A38;          /* 深藍墨 內文 */
  --c-gray: #5B6E79;
  --c-gray-300: #DEE8ED;
  --c-gray-100: #EFF6FA;
  --c-bg: #FAFDFF;
  --hero-veil:
    linear-gradient(180deg, rgba(6,40,60,.42) 0%, rgba(6,40,60,.12) 38%, rgba(6,40,60,.72) 100%),
    linear-gradient(100deg, rgba(10,68,98,.60) 0%, rgba(10,68,98,.38) 34%, rgba(10,68,98,0) 58%);

  /* --- 字體 --- */
  --f-body: -apple-system, BlinkMacSystemFont, "PingFang TC", "Microsoft JhengHei", "Noto Sans TC", "Segoe UI", sans-serif;
  --f-display: "Cormorant Garamond", "Noto Serif TC", Georgia, "Times New Roman", serif;

  /* --- 字級 (fluid) --- */
  --fs-xs: 0.8125rem;
  --fs-sm: 0.9375rem;
  --fs-md: clamp(1rem, 0.97rem + 0.15vw, 1.0625rem);
  --fs-lg: clamp(1.125rem, 1.05rem + 0.4vw, 1.25rem);
  --fs-xl: clamp(1.375rem, 1.15rem + 1.1vw, 1.75rem);
  --fs-2xl: clamp(2rem, 1.55rem + 2.2vw, 2.5rem);
  --fs-3xl: clamp(2.5rem, 1.7rem + 3.9vw, 3.5rem);
  --fs-display: clamp(3rem, 1.6rem + 6.9vw, 5rem);

  /* --- 間距 8 階 --- */
  --sp-20: 0.5rem;
  --sp-30: 1rem;
  --sp-40: 1.5rem;
  --sp-50: 2.5rem;
  --sp-60: 4rem;
  --sp-70: 6rem;
  --sp-80: 8rem;

  /* --- 版面 --- */
  --content: 840px;
  --wide: 1280px;

  /* --- 圓角/陰影 --- */
  --r-card: 18px;
  --r-sm: 12px;
  --sh-soft: 0 2px 8px rgba(30,42,48,.06);
  --sh-card: 0 8px 30px rgba(30,42,48,.08);
  --sh-float: 0 18px 50px rgba(30,42,48,.14);

  --header-h: 76px;
}

/* --- reset --- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--f-body);
  font-size: var(--fs-md);
  line-height: 1.75;
  letter-spacing: 0.01em;
  color: var(--c-text);
  background: var(--c-bg);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--c-accent-700); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--c-text); }
/* 內文裡的站內連結：預設連結沒有底線，混在段落中幾乎看不出來，補一組明確樣式 */
a.ml-link { color: var(--c-btn); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; font-weight: 600; }
a.ml-link:hover { color: var(--c-btn-700); text-decoration-thickness: 2px; }
h1, h2, h3, h4 { font-weight: 600; line-height: 1.3; letter-spacing: 0; margin: 0; }
h1 { font-size: var(--fs-3xl); line-height: 1.14; font-weight: 700; }
h2 { font-size: var(--fs-2xl); line-height: 1.2; }
h3 { font-size: var(--fs-xl); }
h4 { font-size: var(--fs-lg); }
p { margin: 0; }
ul { margin: 0; }

/* --- 版面容器 --- */
.ml-wide { max-width: var(--wide); margin-inline: auto; padding-inline: var(--sp-40); }
.ml-content { max-width: var(--content); margin-inline: auto; padding-inline: var(--sp-40); }
.ml-section { padding-block: var(--sp-70); }
.ml-section--sm { padding-block: var(--sp-60); }
.bg-primary { background: var(--c-primary); }
.bg-soft { background: var(--c-accent-100); }
.bg-sand { background: var(--c-sand-100); }
.bg-gray { background: var(--c-gray-100); }

/* --- eyebrow / 區塊標題 --- */
.ml-eyebrow {
  font-size: var(--fs-sm);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--c-secondary-700);
  font-weight: 600;
  margin-bottom: var(--sp-20);
}
.ml-display { font-family: var(--f-display); font-weight: 600; letter-spacing: .01em; }
/* 標題塊本身放到滿版，只有 eyebrow 與 H2 保持 720px 的易讀寬度；
   H2 底下的說明整段拉滿版、不再折成窄窄兩行，並與下方內容留開一點。 */
.ml-section-head { max-width: none; margin-bottom: var(--sp-50); }
.ml-section-head > .ml-eyebrow,
.ml-section-head > .ml-display { max-width: 720px; }
.ml-section-head.center { text-align: center; }
.ml-section-head.center > .ml-eyebrow,
.ml-section-head.center > .ml-display { margin-inline: auto; }
.ml-section-head p.lead { color: var(--c-gray); font-size: var(--fs-lg); line-height: 1.9; margin-top: var(--sp-30); max-width: none; }

/* Homepage: Maldives primer */
.ml-maldives-intro { background: linear-gradient(180deg, #fff 0%, #f7fbfd 100%); overflow: hidden; }
.ml-maldives-intro .ml-section-head { margin-bottom: clamp(2.5rem, 5vw, 4.5rem); }
.ml-maldives-intro__overview { display: grid; grid-template-columns: minmax(280px, .72fr) minmax(0, 1.45fr); gap: clamp(3rem, 7vw, 7rem); align-items: center; }
.ml-maldives-intro__map { margin: 0; position: relative; text-align: center; }
.ml-maldives-intro__map::before { background: #e7f5fb; border-radius: 50%; content: ""; inset: 9% 5% 15%; position: absolute; }
.ml-maldives-intro__map img { display: block; height: clamp(380px, 47vw, 650px); margin: auto; max-width: 100%; object-fit: contain; position: relative; width: auto; }
.ml-maldives-intro__map figcaption { color: var(--c-gray); font-size: var(--fs-sm); margin-top: var(--sp-20); position: relative; }
.ml-maldives-intro__lead { color: var(--c-text); font-size: clamp(1.12rem, 1.5vw, 1.35rem); line-height: 1.9; margin: 0 0 clamp(2rem, 4vw, 3.5rem); max-width: 780px; }
.ml-maldives-intro__lead strong { color: var(--c-accent-700); font-weight: 600; }
.ml-maldives-intro__facts { border-bottom: 1px solid var(--c-gray-300); border-top: 1px solid var(--c-gray-300); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ml-maldives-intro__facts article { min-height: 190px; padding: clamp(1.5rem, 3vw, 2.4rem); position: relative; }
.ml-maldives-intro__facts article:nth-child(odd) { border-right: 1px solid var(--c-gray-300); }
.ml-maldives-intro__facts article:nth-child(-n+2) { border-bottom: 1px solid var(--c-gray-300); }
.ml-maldives-intro__facts span { color: var(--c-secondary); font-family: var(--f-display); font-size: var(--fs-sm); position: absolute; right: 1.5rem; top: 1.5rem; }
.ml-maldives-intro__facts small { color: var(--c-accent-700); display: block; font-size: .72rem; letter-spacing: .16em; margin-bottom: .55rem; text-transform: uppercase; }
.ml-maldives-intro__facts h3 { font-size: clamp(1.25rem, 2vw, 1.65rem); margin: 0 0 .7rem; }
.ml-maldives-intro__facts p { color: var(--c-gray); line-height: 1.75; margin: 0; }
.ml-maldives-essentials-section { background: #f7fbfd; }
.ml-maldives-practical { margin-top: 0; }
.ml-maldives-practical__head { margin: 0 auto clamp(2rem, 4vw, 3.5rem); max-width: 760px; text-align: center; }
.ml-maldives-practical__head .ml-eyebrow { margin-bottom: .6rem; }
.ml-maldives-practical__head h2 { font-size: clamp(1.9rem, 3.4vw, 2.8rem); margin: 0 0 .8rem; }
.ml-maldives-practical__head > p:last-child { color: var(--c-gray); margin: 0; }
.ml-maldives-practical__grid { display: grid; gap: 1px; grid-template-columns: repeat(3, minmax(0, 1fr)); background: var(--c-gray-300); border: 1px solid var(--c-gray-300); }
.ml-maldives-practical__card { background: #fff; min-width: 0; padding: clamp(1.8rem, 3.5vw, 3rem); }
.ml-maldives-practical__card--currency { align-items: center; display: grid; gap: clamp(1.5rem, 3vw, 3rem); grid-column: span 2; grid-template-columns: minmax(220px, .8fr) minmax(0, 1.2fr); }
.ml-maldives-practical__card--currency figure { margin: 0; }
.ml-maldives-practical__card--currency img { display: block; height: auto; mix-blend-mode: multiply; width: 100%; }
.ml-maldives-practical__icon { align-items: center; background: var(--c-accent-100); border-radius: 50%; color: var(--c-accent-700); display: flex; height: 46px; justify-content: center; margin-bottom: 1.4rem; width: 46px; }
.ml-maldives-practical__icon svg { height: 23px; width: 23px; }
.ml-maldives-practical__card .ml-eyebrow { font-size: .7rem; margin: 0 0 .45rem; }
.ml-maldives-practical__card h3 { color: var(--c-text); font-size: clamp(1.2rem, 1.8vw, 1.5rem); line-height: 1.45; margin: 0 0 .8rem; }
.ml-maldives-practical__card > p:last-child,
.ml-maldives-practical__card > div > p:last-child { color: var(--c-gray); line-height: 1.8; margin: 0; }
.ml-maldives-practical__card strong { color: var(--c-text); }
.ml-destinations-intro { color: var(--c-gray); line-height: 1.85; margin: 1rem 0 0; max-width: 880px; }
.ml-resort-transfer-guide { border-bottom: 1px solid rgba(115,86,26,.22); border-top: 1px solid rgba(115,86,26,.22); margin: clamp(2.5rem, 5vw, 4.5rem) 0; padding: clamp(2.5rem, 5vw, 4.5rem) 0; }
/* 自己獨立成一區時（[mle_transfer_guide]）標題由 section head 出，
   上下的分隔線與留白交還給 .ml-section，否則會多一圈框線與雙倍間距。 */
.ml-resort-transfer-guide--bare { border: 0; margin: 0; padding: 0; }
.ml-resort-transfer-guide__head { margin-bottom: clamp(2rem, 4vw, 3rem); max-width: 820px; }
.ml-resort-transfer-guide__head .ml-eyebrow { margin-bottom: .45rem; }
.ml-resort-transfer-guide__head h3 { font-size: clamp(1.6rem, 2.7vw, 2.25rem); margin: 0 0 .7rem; }
.ml-resort-transfer-guide__head > p:last-child { color: var(--c-gray); margin: 0; }
.ml-resort-transfer-guide__grid { display: grid; gap: 1px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ml-resort-transfer-guide__grid article { background: rgba(255,255,255,.82); display: flex; flex-direction: column; min-width: 0; overflow: hidden; }
.ml-resort-transfer-guide__image { aspect-ratio: 3 / 2; display: block; height: auto; object-fit: cover; width: 100%; }
.ml-resort-transfer-guide__body { display: flex; flex: 1; flex-direction: column; padding: clamp(1.35rem, 2.5vw, 2rem); }
.ml-resort-transfer-guide__num { color: var(--c-secondary-700); display: block; font-family: var(--f-display); font-size: var(--fs-sm); margin-bottom: .8rem; }
.ml-resort-transfer-guide__grid h4 { font-size: clamp(1.25rem, 2vw, 1.55rem); margin: 0 0 .6rem; }
.ml-resort-transfer-guide__grid p { color: var(--c-gray); line-height: 1.8; margin: 0; }
.ml-resort-transfer-guide__links { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: auto; padding-top: 1.4rem; }
.ml-resort-transfer-guide__links a { align-items: center; border: 1px solid rgba(0,92,126,.24); color: var(--c-accent-700); display: inline-flex; font-size: .875rem; gap: .45rem; min-height: 40px; padding: .55rem .75rem; text-decoration: none; transition: background-color .2s ease, border-color .2s ease, color .2s ease; }
.ml-resort-transfer-guide__links a span { color: var(--c-gray); font-size: .75rem; }
.ml-resort-transfer-guide__links a:hover { background: var(--c-accent-700); border-color: var(--c-accent-700); color: #fff; }
.ml-resort-transfer-guide__links a:hover span { color: rgba(255,255,255,.8); }
.ml-resort-transfer-guide__note { align-items: center; background: rgba(255,255,255,.72); display: grid; gap: 2rem; grid-template-columns: minmax(0, 1fr) auto; margin-top: clamp(2rem, 4vw, 3rem); padding: clamp(1.5rem, 3vw, 2.25rem); }
.ml-resort-transfer-guide__note h4 { font-size: 1.05rem; margin: 0 0 .35rem; }
.ml-resort-transfer-guide__note p { color: var(--c-gray); line-height: 1.75; margin: 0; }
.ml-resort-transfer-guide__baggage { display: flex; flex-wrap: wrap; gap: .65rem; justify-content: flex-end; }
.ml-resort-transfer-guide__baggage span { background: var(--c-accent-100); color: var(--c-text); padding: .7rem 1rem; white-space: nowrap; }
@media (max-width: 800px) {
  .ml-resort-transfer-guide__grid { grid-template-columns: 1fr; }
  .ml-resort-transfer-guide__grid article { border-top: 1px solid rgba(115,86,26,.22); }
  .ml-resort-transfer-guide__grid article:first-child { border-top: 0; }
  .ml-resort-transfer-guide__note { grid-template-columns: 1fr; }
  .ml-resort-transfer-guide__baggage { justify-content: flex-start; }
}
.ml-stay-guide { background: #fff; }
.ml-stay-guide .ml-section-head { margin-inline: auto; max-width: 900px; }
.ml-arrival-guide { display: grid; gap: clamp(1rem, 2vw, 1.5rem); grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr); margin: clamp(2.5rem, 5vw, 4.5rem) 0; }
.ml-arrival-guide__card { border: 1px solid var(--c-gray-300); min-width: 0; }
.ml-arrival-guide__card--primary { align-items: stretch; display: grid; grid-template-columns: minmax(260px, .85fr) minmax(0, 1.15fr); }
.ml-arrival-guide__media { margin: 0; min-height: 100%; }
.ml-arrival-guide__media img { display: block; height: 100%; object-fit: cover; width: 100%; }
.ml-arrival-guide__body { padding: clamp(1.75rem, 3vw, 2.75rem); }
.ml-arrival-guide__body .ml-eyebrow { margin: 0 0 .5rem; }
.ml-arrival-guide__body h3 { font-size: clamp(1.35rem, 2.1vw, 1.75rem); margin: 0 0 .75rem; }
.ml-arrival-guide__body > p { color: var(--c-gray); line-height: 1.8; margin: 0; }
.ml-arrival-guide__steps { counter-reset: arrival-step; list-style: none; margin: 1.5rem 0 0; padding: 0; }
.ml-arrival-guide__steps li { align-items: baseline; border-top: 1px solid var(--c-gray-300); color: var(--c-gray); counter-increment: arrival-step; display: grid; gap: .8rem; grid-template-columns: 1.75rem minmax(0, 1fr); padding: .75rem 0; }
.ml-arrival-guide__steps li::before { color: var(--c-secondary-700); content: "0" counter(arrival-step); font-family: var(--f-display); }
.ml-arrival-guide__card--note { background: var(--c-accent-100); display: flex; flex-direction: column; justify-content: center; padding: clamp(2rem, 4vw, 3.5rem); }
.ml-arrival-guide__card--note .ml-maldives-practical__icon { background: #fff; }
.ml-arrival-guide__card--note ul { color: var(--c-gray); line-height: 1.8; margin: .9rem 0 0; padding-left: 1.15rem; }
.ml-stay-guide__subhead { margin: 0 0 clamp(1.5rem, 3vw, 2.5rem); max-width: 720px; }
.ml-stay-guide__subhead .ml-eyebrow { margin-bottom: .45rem; }
.ml-stay-guide__subhead h3 { font-size: clamp(1.55rem, 2.6vw, 2.15rem); margin: 0 0 .6rem; }
.ml-stay-guide__subhead > p:last-child { color: var(--c-gray); line-height: 1.8; margin: 0; }
.ml-stay-guide__grid { background: var(--c-gray-300); border: 1px solid var(--c-gray-300); display: grid; gap: 1px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ml-stay-guide__card { background: #fff; min-width: 0; padding: clamp(1.8rem, 3.5vw, 3rem); }
.ml-stay-guide__card--arrival { align-items: center; display: grid; gap: clamp(2rem, 4vw, 4rem); grid-column: span 2; grid-template-columns: minmax(180px, .6fr) minmax(0, 1.4fr); }
.ml-stay-guide__time { border-right: 1px solid var(--c-gray-300); display: flex; flex-direction: column; padding-right: 2rem; }
.ml-stay-guide__time span { color: var(--c-gray); font-size: var(--fs-sm); }
.ml-stay-guide__time strong { color: var(--c-accent-700); font-family: var(--f-display); font-size: clamp(3rem, 6vw, 5rem); font-weight: 500; line-height: 1.1; }
.ml-stay-guide__time small { color: var(--c-gray); margin-top: .5rem; }
.ml-stay-guide__card h3 { font-size: clamp(1.2rem, 1.8vw, 1.5rem); margin: 0 0 .8rem; }
.ml-stay-guide__card p { color: var(--c-gray); line-height: 1.8; margin: 0; }
.ml-stay-guide__card ul { color: var(--c-gray); columns: 2; line-height: 1.8; margin: 0; padding-left: 1.2rem; }
.ml-stay-guide__num { color: var(--c-secondary-700); display: block; font-family: var(--f-display); font-size: var(--fs-sm); margin-bottom: .8rem; }
.ml-stay-guide__check { border-top: 1px solid var(--c-gray-300); margin-top: 1.2rem !important; padding-top: 1.2rem; }
.ml-stay-guide__card--tax { align-items: center; background: var(--c-text); color: #fff; display: grid; gap: 2rem; grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr) auto; }
.ml-stay-guide__card--tax h3 { color: #fff; }
/* 深底卡片上的編號要換成亮金；沿用 --c-secondary-700 的話是深古銅配深藍底，
   對比只有 1.x:1，Lighthouse 無障礙檢測會擋。亮金對 --c-text 底約 6:1，過 AA。 */
.ml-stay-guide__card--tax .ml-stay-guide__num { color: var(--c-secondary); }
.ml-stay-guide__card--tax p { color: rgba(255,255,255,.78); }
.ml-stay-guide__card--tax > strong { color: #fff; font-family: var(--f-display); font-size: clamp(2.6rem, 5vw, 4.5rem); font-weight: 500; white-space: nowrap; }
@media (max-width: 900px) {
  .ml-arrival-guide { grid-template-columns: 1fr; }
  .ml-stay-guide__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ml-stay-guide__card--arrival { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
  .ml-arrival-guide__card--primary { grid-template-columns: 1fr; }
  .ml-arrival-guide__media { aspect-ratio: 3 / 2; min-height: 0; }
  .ml-stay-guide__grid { grid-template-columns: 1fr; }
  .ml-stay-guide__card--arrival { grid-column: auto; grid-template-columns: 1fr; }
  .ml-stay-guide__time { border-bottom: 1px solid var(--c-gray-300); border-right: 0; padding-bottom: 1.5rem; padding-right: 0; }
  .ml-stay-guide__card ul { columns: 1; }
  .ml-stay-guide__card--tax { grid-column: auto; grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .ml-maldives-intro__overview { grid-template-columns: 1fr; }
  .ml-maldives-intro__map img { height: clamp(360px, 85vw, 580px); }
  .ml-maldives-practical__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ml-maldives-practical__card--currency { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .ml-maldives-intro__overview { gap: 2.5rem; }
  .ml-maldives-intro__facts { grid-template-columns: 1fr; }
  .ml-maldives-intro__facts article { border-bottom: 1px solid var(--c-gray-300); border-right: 0 !important; min-height: 0; padding-inline: .25rem; }
  .ml-maldives-intro__facts article:last-child { border-bottom: 0; }
  .ml-maldives-intro__facts span { right: .25rem; }
  .ml-maldives-practical__grid { grid-template-columns: 1fr; }
  .ml-maldives-practical__card--currency { grid-column: auto; grid-template-columns: 1fr; }
}

/* --- 按鈕 --- */
.ml-btn {
  display: inline-flex; align-items: center; gap: .5em;
  border-radius: 999px;
  padding: 0.9rem 2rem;
  font-size: var(--fs-sm);
  font-weight: 600;
  letter-spacing: 0.04em;
  cursor: pointer; border: 1.5px solid transparent;
  transition: background-color .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease, border-color .25s ease;
  white-space: nowrap;
}
.ml-btn:hover { transform: translateY(-1px); }
.ml-btn--accent { background: var(--c-btn); color: #fff; }
.ml-btn--accent:hover { background: var(--c-btn-700); color: #fff; }
.ml-btn--solid { background: var(--c-text); color: #fff; }
.ml-btn--solid:hover { background: var(--c-btn-700); color: #fff; }
.ml-btn--coral { background: var(--c-secondary-700); color: #fff; }
.ml-btn--coral:hover { background: #6f551d; color: #fff; }
.ml-btn--gold { background: var(--c-secondary); color: var(--c-btn-700); }
.ml-btn--gold:hover { background: #b88f39; color: var(--c-btn-700); }
.ml-btn--light { background: #fff; color: var(--c-btn-700); }
.ml-btn--light:hover { background: var(--c-btn-100); color: var(--c-btn-700); }
.ml-btn--outline { border-color: var(--c-gray-300); color: var(--c-text); background: transparent; }
.ml-btn--outline:hover { border-color: var(--c-btn); color: var(--c-btn-700); }
.ml-btn--ghost { border-color: rgba(255,255,255,.7); color: #fff; background: transparent; }
.ml-btn--ghost:hover { background: rgba(255,255,255,.14); color: #fff; }
.wp-block-button.ml-btn { padding: 0; border: 0; background: transparent; }
.wp-block-button.ml-btn .wp-block-button__link { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: .5em; border-radius: 999px; padding: 0.9rem 2rem; font-size: var(--fs-sm); font-weight: 600; letter-spacing: 0.04em; cursor: pointer; border: 1.5px solid transparent; transition: background-color .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease, border-color .25s ease; white-space: nowrap; }
.wp-block-button.ml-btn .wp-block-button__link:hover { transform: translateY(-1px); }
.wp-block-button.ml-btn--accent .wp-block-button__link { background: var(--c-btn); color: #fff; }
.wp-block-button.ml-btn--accent .wp-block-button__link:hover { background: var(--c-btn-700); color: #fff; }
.wp-block-button.ml-btn--coral .wp-block-button__link { background: var(--c-secondary-700); color: #fff; }
.wp-block-button.ml-btn--coral .wp-block-button__link:hover { background: #6f551d; color: #fff; }
.wp-block-button.ml-btn--ghost .wp-block-button__link { border-color: rgba(255,255,255,.7); color: #fff; background: transparent; }
.wp-block-button.ml-btn--ghost .wp-block-button__link:hover { background: rgba(255,255,255,.14); color: #fff; }

/* =========================================================================
   Header
   ========================================================================= */
/* 讓 block template-part 外框不阻斷 sticky：header 貼齊視窗而非只在 76px 高的外框內 */
header.wp-block-template-part { display: contents; }
.ml-header {
  position: sticky; top: 0; z-index: 50;
  height: var(--header-h);
  display: flex; align-items: center;
  background: rgba(255,255,255,.0);
  transition: background-color .3s ease, box-shadow .3s ease;
}
.ml-header__inner { display: flex; align-items: center; gap: var(--sp-40); width: 100%; }
.ml-logo { font-family: var(--f-display); font-size: 1.6rem; font-weight: 700; color: #fff; letter-spacing: .02em; display: flex; align-items: center; gap: .4em; }
.ml-logo small { font-family: var(--f-body); font-size: .72rem; letter-spacing: .3em; font-weight: 500; opacity: .85; }
.ml-logo img { height: 42px; width: auto; display: block; }
.ml-nav { display: flex; gap: var(--sp-40); margin-left: auto; }
.ml-nav a { color: #fff; font-size: var(--fs-sm); font-weight: 500; position: relative; padding-block: .4rem; }
.ml-nav a::after { content: ""; position: absolute; left: 0; bottom: 0; width: 0; height: 2px; background: var(--c-secondary); transition: width .25s ease; }
.ml-nav a:hover { color: #fff; }
.ml-nav a:hover::after { width: 100%; }
/* 會開 lightbox 的兩個入口：前面加金色 ◎ 當提示，桌機與手機一致 */
.ml-nav a.js-destmenu, .ml-nav a.js-offermenu { display: inline-flex; align-items: center; gap: .3em; }
.ml-nav a.js-destmenu::before, .ml-nav a.js-offermenu::before { content: "◎"; color: var(--c-secondary); font-size: .9em; line-height: 1; }
/* 手機 header 只擺得下短標籤（樣板兩版都輸出，這裡切換） */
.ml-nav__short { display: none; }
/* 「旅遊攻略」下拉：hover 與鍵盤 focus 都能開，手機則整組收進漢堡選單 */
.ml-nav__item { position: relative; display: inline-flex; align-items: center; }
.ml-subnav {
  position: absolute; top: 100%; left: 50%; z-index: 60;
  display: grid; min-width: 232px; padding: .5rem;
  border-radius: 14px; background: rgba(12,30,56,.98);
  box-shadow: 0 18px 40px rgba(8,22,40,.35); backdrop-filter: saturate(1.2) blur(6px);
  opacity: 0; visibility: hidden; pointer-events: none;
  transform: translateX(-50%) translateY(6px);
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
}
/* 連結與面板之間的空隙補一塊透明區，滑鼠移過去時選單不會中途收起來 */
.ml-subnav::before { content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 12px; }
.ml-nav__item--sub:hover .ml-subnav,
.ml-nav__item--sub:focus-within .ml-subnav { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.ml-nav .ml-subnav__link { display: block; padding: .55rem .8rem; border-radius: 9px; font-size: var(--fs-sm); font-weight: 500; white-space: nowrap; color: #fff; }
.ml-nav .ml-subnav__link::after { display: none; }
.ml-nav .ml-subnav__link:hover { background: rgba(255,255,255,.12); }
/* 交通方式下拉右邊的度假村數量 */
.ml-nav .ml-subnav__link { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-20); }
.ml-subnav__count { flex: none; min-width: 1.9em; padding: .05rem .4rem; border-radius: 999px;
  background: rgba(255,255,255,.14); color: rgba(255,255,255,.85);
  font-size: var(--fs-xs); font-weight: 600; text-align: center; }
.ml-nav a.ml-nav__ext,
.ml-nav a.ml-nav__ext:visited,
.ml-nav a.ml-nav__ext:hover,
.ml-nav a.ml-nav__ext:focus-visible { color: #fff; }
.ml-nav__sep { align-self:center; flex:0 0 1px; width:1px; height:18px; background:#fff; opacity:1; }
.ml-header__cta { display: flex; gap: .6rem; align-items: center; }
@media (max-width: 1180px) and (min-width: 769px) {
  .ml-nav { gap:var(--sp-20); }
  .ml-header__cta { display:none; }
}
/* scrolled state (深藍) */
.ml-header.is-scrolled { background: rgba(12,30,56,.96); box-shadow: 0 2px 20px rgba(8,22,40,.30); backdrop-filter: saturate(1.2) blur(6px); }
.ml-header.is-scrolled .ml-nav a { color: #fff; }
.ml-header.is-scrolled .ml-btn--ghost { border-color: rgba(255,255,255,.6); color: #fff; }
.ml-header.is-scrolled .ml-btn--ghost:hover { background: rgba(255,255,255,.14); }
/* header on non-hero pages starts deep blue */
.ml-header--solid { background: rgba(12,30,56,.96); box-shadow: 0 2px 20px rgba(8,22,40,.18); backdrop-filter: saturate(1.2) blur(6px); }
.ml-header--solid .ml-logo { color: #fff; }
.ml-header--solid .ml-nav a { color: #fff; }
.ml-header--solid .ml-btn--ghost { border-color: rgba(255,255,255,.6); color: #fff; }
.ml-burger { display: none; }

/* =========================================================================
   Hero
   ========================================================================= */
.ml-hero { position: relative; min-height: 100vh; display: flex; align-items: center; margin-top: calc(var(--header-h) * -1); color: #fff; overflow: hidden; background: var(--c-accent-700); }
.ml-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: right bottom; transform-origin: right bottom; animation: ml-hero-zoom 24s ease-in-out infinite alternate; will-change: transform; }
.ml-hero.wp-block-cover { padding: 0; }
.wp-block-post-content > .ml-hero:first-child,
.ml-main > .ml-hero:first-child { margin-top: calc(var(--header-h) * -1) !important; }
.ml-main > .wp-block-post-content,
.ml-main > .ml-section,
.ml-main > .ml-anchornav,
.wp-block-post-content > .ml-anchornav,
.ml-main > .wp-block-shortcode,
.wp-block-post-content > .ml-section,
.wp-block-post-content > .wp-block-shortcode {
  margin-block-start: 0 !important;
  margin-block-end: 0 !important;
}
.ml-main > .wp-block-shortcode > .ml-section,
.wp-block-post-content > .wp-block-shortcode > .ml-section {
  margin-block: 0 !important;
}
.ml-section > p:empty,
.ml-wide > p:empty,
.ml-row-head > p:empty,
.ml-card > p:empty {
  display: none !important;
}
.ml-hero.wp-block-cover .wp-block-cover__image-background { object-position: right bottom; transform-origin: right bottom; animation: ml-hero-zoom 24s ease-in-out infinite alternate; will-change: transform; }
.ml-hero.wp-block-cover .wp-block-cover__background { opacity: 0; }
.ml-hero.wp-block-cover .wp-block-cover__inner-container { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; width: 100%; color: inherit; }
.ml-hero.wp-block-cover .ml-hero__inner { position: relative; z-index: 3; width: 100%; padding-block: var(--header-h); }
.ml-hero::after { content: ""; position: absolute; inset: 0; background: var(--hero-veil); pointer-events: none; }
.ml-hero__inner { position: relative; z-index: 2; width: 100%; padding-block: var(--header-h); }
.ml-hero__inner > * { width: min(60%, 760px); max-width: 100%; }
.ml-hero__eyebrow { letter-spacing: 0.22em; text-transform: uppercase; font-size: var(--fs-sm); font-weight: 600; color: var(--c-secondary); opacity: .98; text-shadow: 0 2px 14px rgba(6,40,60,.35); }
.ml-hero__eyebrow-link { color: inherit; text-decoration: none; text-underline-offset: .32em; }
.ml-hero__eyebrow-link:hover,
.ml-hero__eyebrow-link:focus-visible { color: #f0d071; text-decoration: underline; }
.ml-hero__eyebrow-sep { display: inline-block; margin-inline: .85em; opacity: .78; }
.ml-hero h1 { color: #fff; margin-top: var(--sp-30); text-shadow: 0 4px 28px rgba(6,40,60,.55), 0 1px 4px rgba(6,40,60,.42); }
.ml-hero__sub { color: #fff; font-size: var(--fs-lg); line-height: 1.7; margin-top: var(--sp-30); opacity: .96; }
.ml-hero__cta { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: var(--sp-50); }
.ml-hero__trust { display: flex; flex-wrap: wrap; gap: 1.4rem; margin-top: var(--sp-50); }
.ml-hero__trust span { display: inline-flex; align-items: center; gap: .5em; font-size: var(--fs-sm); opacity: .95; }
.ml-hero__trust span::before { content: "✦"; color: var(--c-secondary); }
.ml-hero__eyebrow, .ml-hero h1, .ml-hero__sub, .ml-hero__names .en, .ml-hero__meta, .ml-hero__cta, .ml-hero__trust { animation: ml-hero-rise .9s cubic-bezier(.22,1,.36,1) both; }
.ml-hero__eyebrow { animation-delay: .10s; }
.ml-hero h1 { animation-delay: .25s; }
.ml-hero__sub, .ml-hero__names .en { animation-delay: .42s; }
.ml-hero__names .en { animation-delay: .22s; }
.ml-hero__names h1 { animation-delay: .36s; }
.ml-hero__meta { animation-delay: .46s; }
.ml-hero__cta { animation-delay: .62s; }
.ml-hero__trust { animation-delay: .78s; }
@keyframes ml-hero-zoom {
  from { transform: scale(1); }
  to { transform: scale(1.08); }
}
@keyframes ml-hero-rise {
  from { opacity: 0; transform: translateY(26px); filter: blur(3px); }
  to { opacity: 1; transform: translateY(0); filter: blur(0); }
}
@media (prefers-reduced-motion: reduce) {
  .ml-hero__img, .ml-hero__eyebrow, .ml-hero h1, .ml-hero__sub, .ml-hero__names .en, .ml-hero__meta, .ml-hero__cta, .ml-hero__trust { animation: none; }
}
/* compact hero (detail pages) */
.ml-hero--detail { min-height: 100vh; }
.ml-hero__meta { display: flex; flex-wrap: wrap; gap: 1.2rem; margin-top: var(--sp-40); }
.ml-hero__meta .chip { background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.35); border-radius: 999px; padding: .35rem 1rem; font-size: var(--fs-sm); backdrop-filter: blur(4px); }
.ml-hero__names h1 { margin-top: var(--sp-20); }
.ml-hero__names .en { font-family: var(--f-display); font-size: var(--fs-xl); letter-spacing: .04em; opacity: .95; font-style: italic; }

/* hero 底部資訊卡（渡假村的地點／交通／入住條件／餐飲等關鍵資料） */
.ml-hero--withbar { flex-direction: column; justify-content: flex-end; }
/* 標題群組偏下配置：上方留白多一點，與底部資訊卡保持一個呼吸距離 */
.ml-hero--withbar .ml-hero__inner { margin-block: auto 0; padding-bottom: 12vh; }
.ml-infobar { position: relative; z-index: 2; width: 100%; color: #fff; padding-bottom: var(--sp-50); }
/* 不用 backdrop-filter：hero 底圖有 zoom 動畫，模糊層在部分瀏覽器會取樣到錯誤區域，
   在卡片外側渲染出一塊淺色矩形。改用純半透明底色，視覺接近但不會有殘影。 */
.ml-infobar__grid { display: grid; grid-template-columns: repeat(4, 1fr); background: rgba(6,40,60,.46); border: 1px solid rgba(255,255,255,.18); border-radius: var(--r-card); box-shadow: 0 18px 44px rgba(6,40,60,.28); overflow: hidden; }
.ml-infobar__item { position: relative; padding: var(--sp-40) var(--sp-30); text-align: center; }
.ml-infobar__item::before { content: ""; position: absolute; left: 0; top: 18%; bottom: 18%; width: 1px; background: rgba(255,255,255,.18); }
.ml-infobar__item:first-child::before { display: none; }
.ml-infobar__icon { display: grid; place-items: center; width: 46px; height: 46px; margin: 0 auto var(--sp-20); color: #fff; }
.ml-infobar__icon svg { width: 38px; height: 38px; }
.ml-infobar p { margin-top: .45rem; font-size: var(--fs-sm); line-height: 1.75; color: rgba(255,255,255,.92); text-shadow: 0 1px 12px rgba(6,40,60,.6); }
.ml-infobar p.ml-infobar__title { margin-top: 0; font-size: var(--fs-md); font-weight: 700; color: #fff; letter-spacing: .02em; }

/* =========================================================================
   Feature cards (四大服務)
   ========================================================================= */
.ml-grid { display: grid; gap: var(--sp-40); }
.ml-grid > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }
.ml-grid--4 { grid-template-columns: repeat(4, 1fr); }
.ml-grid--3 { grid-template-columns: repeat(3, 1fr); }
.ml-grid--2 { grid-template-columns: repeat(2, 1fr); }

.ml-feature {
  background: #fff; border: 1px solid var(--c-gray-300);
  border-radius: var(--r-card); padding: var(--sp-50);
  box-shadow: var(--sh-soft); transition: transform .25s ease, box-shadow .25s ease;
}
.ml-feature:hover { transform: translateY(-4px); box-shadow: var(--sh-card); }
.ml-feature > * { margin-block-start: 0 !important; margin-block-end: 0; }
.ml-feature__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--sp-30) !important; }
.ml-feature__icon { width: 46px; height: 46px; border-radius: 12px; background: var(--c-accent-100); color: var(--c-accent-700); display: grid; place-items: center; }
.ml-feature__icon svg { width: 24px; height: 24px; }
.ml-feature__num { font-family: var(--f-display); font-size: 1.7rem; color: var(--c-gray); font-weight: 600; }
.ml-feature h3 { font-size: var(--fs-lg); }
.ml-feature p { color: var(--c-gray); font-size: var(--fs-sm); line-height: 1.8; margin-top: var(--sp-20) !important; }
.ml-more { display: inline-flex; align-items: center; gap: .4em; margin-top: var(--sp-40); font-weight: 600; font-size: var(--fs-sm); }
.ml-more .arrow { transition: transform .2s ease; }
.ml-more:hover .arrow { transform: translateX(4px); }

/* =========================================================================
   Destination / cards
   ========================================================================= */
.ml-dest { position: relative; border-radius: var(--r-card); overflow: hidden; display: block; color: #fff; box-shadow: var(--sh-soft); }
.ml-dest img { aspect-ratio: 3/4; object-fit: cover; width: 100%; transition: transform .5s ease; }
.ml-dest:hover img { transform: scale(1.06); }
.ml-dest::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6,40,60,0) 40%, rgba(6,40,60,.78) 100%); }
.ml-dest__body { position: absolute; left: 0; bottom: 0; z-index: 2; padding: var(--sp-40); color: #fff; }
.ml-dest__body .en { font-size: var(--fs-xs); letter-spacing: .18em; text-transform: uppercase; opacity: .9; }
.ml-dest__body h3 { color: #fff; font-size: var(--fs-lg); margin-top: .2rem; }
.ml-dest__body p { color: #fff; opacity: .9; font-size: var(--fs-sm); margin-top: .25rem; }

/* card (itinerary / resort / article) */
.ml-card { background: #fff; border: 1px solid var(--c-gray-300); border-radius: var(--r-card); overflow: hidden; box-shadow: var(--sh-soft); transition: transform .25s ease, box-shadow .25s ease; display: flex; flex-direction: column; }
.ml-card:hover { transform: translateY(-4px); box-shadow: var(--sh-card); }
.ml-card__media { position: relative; display: block; overflow: hidden; }
.ml-card__media img { aspect-ratio: 3/2; object-fit: cover; width: 100%; transition: transform .5s ease; }
.ml-card:hover .ml-card__media img { transform: scale(1.05); }
.ml-tag { position: absolute; z-index: 2; top: var(--sp-30); left: var(--sp-30); background: rgba(255,255,255,.94); color: var(--c-accent-700); font-size: var(--fs-xs); font-weight: 600; padding: .3rem .8rem; border-radius: 999px; }
.ml-tag--coral { background: var(--c-secondary-700); color: #fff; }
.ml-card__body { padding: var(--sp-40); display: flex; flex-direction: column; flex: 1; }
.ml-card__meta { display: flex; gap: .8rem; font-size: var(--fs-xs); color: var(--c-gray); text-transform: uppercase; letter-spacing: .08em; }
.ml-card h3 { font-size: var(--fs-lg); margin-top: .4rem; }
.ml-card__en { font-family: var(--f-display); font-style: italic; color: var(--c-gray); font-size: var(--fs-md); }
.ml-card p { color: var(--c-gray); font-size: var(--fs-sm); line-height: 1.75; margin-top: var(--sp-20); }
.ml-card__foot { display: flex; align-items: center; justify-content: space-between; margin-top: auto; padding-top: var(--sp-30); }
.ml-price { color: var(--c-secondary-700); font-weight: 700; }
.ml-price small { color: var(--c-gray); font-weight: 400; font-size: var(--fs-xs); }

/* 客戶迴響卡片（[mle_guest_reviews]）。迴響多半是客人直接留的文字、沒有精選圖，
   所以一律不放封面圖：以客人說的話當主體，標題退為副標，靠引號與色帶做視覺。 */
.ml-review-card { position: relative; border-top: 3px solid var(--c-secondary); }
.ml-review-card .ml-card__body { padding: var(--sp-50) var(--sp-40) var(--sp-40); gap: 0; }
.ml-review-card::before {
  content: "\201C"; position: absolute; top: -.1em; right: var(--sp-40);
  font-family: var(--f-display); font-size: 5.5rem; line-height: 1;
  color: var(--c-accent-100); pointer-events: none;
}
.ml-review-card__quote {
  position: relative; z-index: 1; flex: 1; margin: 0 0 var(--sp-30);
  color: var(--c-text); font-size: var(--fs-md); line-height: 1.9;
}
.ml-review-card__quote::before { content: "「"; margin-left: -.6em; }
.ml-review-card__quote::after { content: "」"; }
.ml-review-card h3 {
  margin: 0; font-size: var(--fs-sm); font-weight: 600; line-height: 1.6;
  color: var(--c-gray); padding-top: var(--sp-30); border-top: 1px solid var(--c-gray-300);
}
.ml-review-card__foot {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: .8rem; margin-top: var(--sp-30);
}
.ml-review-card__date { font-size: var(--fs-xs); letter-spacing: .08em; color: var(--c-gray); }
.ml-review-card__more { font-size: var(--fs-sm); font-weight: 600; color: var(--c-accent-700); white-space: nowrap; }
.ml-review-card__more::after { content: "→"; margin-left: .4em; transition: transform .25s ease; display: inline-block; }
.ml-review-card:hover .ml-review-card__more::after { transform: translateX(.25em); }

/* horizontal scroll row */
.ml-scroll { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(300px, 360px); gap: var(--sp-40); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: var(--sp-30); scrollbar-width: thin; }
.ml-scroll > * { margin-block-start: 0 !important; margin-block-end: 0 !important; scroll-snap-align: start; }
.ml-scroll::-webkit-scrollbar { height: 6px; }
.ml-scroll::-webkit-scrollbar-thumb { background: var(--c-gray-300); border-radius: 999px; }
.ml-row-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--sp-40); margin-bottom: var(--sp-50); }
.ml-local-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .65rem;
  padding: .85rem;
  margin: calc(var(--sp-50) * -0.3) 0 var(--sp-45);
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.ml-local-filter::before {
  content: "依主題篩選";
  flex: 0 0 auto;
  margin-right: .35rem;
  padding-inline: .25rem .75rem;
  color: var(--c-gray);
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.ml-local-filter__chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 2.55rem;
  padding: .55rem .9rem .55rem 1.05rem;
  border: 1px solid var(--c-gray-300);
  border-radius: 999px;
  background: var(--c-primary);
  color: var(--c-text);
  font-size: var(--fs-sm);
  font-weight: 700;
  cursor: pointer;
  transition: border-color .2s ease, color .2s ease, background .2s ease;
}
.ml-local-filter__chip:hover {
  border-color: var(--c-accent);
  color: var(--c-accent-700);
  background: #fff;
}
.ml-local-filter__chip.is-active {
  border-color: var(--c-accent);
  background: var(--c-accent);
  color: #fff;
  box-shadow: 0 8px 20px rgba(12, 64, 106, .16);
}
.ml-local-filter__chip span {
  display: inline-grid;
  place-items: center;
  min-width: 1.35rem;
  height: 1.35rem;
  padding: 0 .35rem;
  border-radius: 999px;
  background: #fff;
  color: var(--c-accent-700);
  font-size: .78em;
  line-height: 1;
}
.ml-local-filter__chip.is-active span {
  background: rgba(255,255,255,.22);
  color: #fff;
}
.ml-card[hidden] { display: none !important; }

/* =========================================================================
   Stat bar (深耕30年)
   ========================================================================= */
.ml-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-40); }
.ml-stat { text-align: center; }
.ml-stat .num { font-family: var(--f-display); font-size: var(--fs-3xl); font-weight: 700; color: var(--c-accent-700); line-height: 1; }
.ml-stat .label { color: var(--c-gray); font-size: var(--fs-sm); margin-top: var(--sp-20); }

/* 公司介紹三語頁：沿用主題頁 Hero infobar，但把四項年份／數字提高為視覺主角。 */
.ml-company-infobar p.ml-infobar__title.num {
  font-family: var(--f-display);
  font-size: clamp(2.5rem, 2rem + 2vw, 4.25rem);
  font-weight: 700;
  line-height: .95;
  color: #fff;
  text-shadow: 0 2px 18px rgba(6,40,60,.55);
}
.ml-company-infobar p.ml-infobar__title.num + p { margin-top: var(--sp-20); }

/* =========================================================================
   Anchor nav
   ========================================================================= */
.ml-anchornav { position: sticky; top: var(--header-h); z-index: 30; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--c-gray-300); backdrop-filter: blur(6px); }
.ml-anchornav ul, .ml-anchornav ol { display: flex; gap: var(--sp-40); list-style: none; padding: 0; margin: 0; overflow-x: auto; }
.ml-anchornav__in > li { flex: 0 0 auto; margin: 0; padding: 0; }
.ml-anchornav a { display: block; padding: 1rem 0; font-size: var(--fs-sm); font-weight: 600; color: var(--c-gray); border-bottom: 2px solid transparent; white-space: nowrap; }
.ml-anchornav a:hover, .ml-anchornav a.is-active { color: var(--c-accent-700); border-color: var(--c-accent); }
.ml-anchor-target { display: block; position: relative; top: -150px; visibility: hidden; }

/* =========================================================================
   2-col intro, check list
   ========================================================================= */
.ml-split { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-70); align-items: center; }
.ml-split--46 { grid-template-columns: 46% 1fr; }
.ml-split--44 { grid-template-columns: 44% 1fr; }
.ml-split--64 { grid-template-columns: 1fr 44%; }
.ml-check { list-style: none; padding: 0; line-height: 2; }
.ml-check li { position: relative; padding-left: 2rem; margin-bottom: .3rem; }
.ml-check li::before { content: "✓"; position: absolute; left: 0; top: 0; width: 1.4rem; height: 1.4rem; background: var(--c-accent-100); color: var(--c-accent-700); border-radius: 50%; display: grid; place-items: center; font-size: .8rem; font-weight: 700; margin-top: .35rem; }
.ml-rounded { border-radius: var(--r-card); overflow: hidden; box-shadow: var(--sh-card); }
.ml-rounded iframe { display: block; width: 100%; border: 0; }
.ml-rounded img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }

/* itinerary feature points */
.ml-feature-points { display: grid; gap: var(--sp-70); margin-top: var(--sp-70); padding-top: var(--sp-60); border-top: 1px solid var(--c-gray-300); }
.ml-feature-point { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(320px, .9fr); gap: var(--sp-70); align-items: center; }
.ml-feature-point--reverse { grid-template-columns: minmax(320px, .9fr) minmax(0, 1.05fr); }
.ml-feature-point--reverse .ml-feature-point__media { order: 2; }
.ml-feature-point--reverse .ml-feature-point__body { order: 1; }
.ml-feature-point__media { position: relative; margin: 0; }
.ml-feature-point__media::after { content: ""; position: absolute; inset: 1.1rem -1rem -1rem 1rem; z-index: 0; border-radius: var(--r-sm); background: var(--c-accent-100); clip-path: polygon(5% 0, 100% 0, 95% 100%, 0 100%); }
.ml-feature-point--reverse .ml-feature-point__media::after { inset: 1.1rem 1rem -1rem -1rem; clip-path: polygon(0 0, 95% 0, 100% 100%, 5% 100%); }
.ml-feature-point__media img { position: relative; z-index: 1; display: block; width: 100%; aspect-ratio: 4 / 2.75; object-fit: cover; border-radius: var(--r-sm); clip-path: polygon(4% 0, 100% 0, 96% 100%, 0 100%); box-shadow: 0 24px 48px rgba(6,40,60,.12); }
.ml-feature-point--reverse .ml-feature-point__media img { clip-path: polygon(0 0, 96% 0, 100% 100%, 4% 100%); }
.ml-feature-point__media span { position: absolute; z-index: 2; top: .85rem; left: .85rem; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; background: var(--c-accent); color: #fff; font-family: var(--f-body); font-weight: 700; font-size: var(--fs-md); box-shadow: var(--sh-card); }
.ml-feature-point__body { max-width: 560px; }
.ml-feature-point__body h3 { font-size: var(--fs-2xl); line-height: 1.35; }
.ml-feature-point__body p:not(.ml-eyebrow) { color: var(--c-gray); font-size: var(--fs-md); line-height: 1.95; margin-top: var(--sp-30); }
.ml-feature-point__body .ml-more { display: inline-flex; margin-top: var(--sp-30); color: var(--c-accent-700); font-weight: 700; }
.ml-instagram-embed { margin-top: var(--sp-40); width: 100%; max-width: 100%; }
.ml-instagram-embed .instagram-media { width: 100% !important; max-width: 100% !important; min-width: 0 !important; margin: 0 auto !important; }

/* =========================================================================
   Timeline (每日行程)
   ========================================================================= */
.ml-itinerary-days { max-width: 1040px; }
.ml-timeline { --day-badge: 88px; --day-line: 44px; position: relative; padding-left: 8rem; }
.ml-timeline::before { content: ""; position: absolute; left: var(--day-line); top: 1rem; bottom: 1rem; width: 1px; background: linear-gradient(180deg, rgba(12,92,132,.14), rgba(12,92,132,.45), rgba(12,92,132,.14)); }
.ml-day { position: relative; padding-bottom: var(--sp-40); }
.ml-day:not(:last-child) { margin-bottom: var(--sp-30); }
.ml-day__badge { position: absolute; left: calc(var(--day-badge) * -1 - var(--sp-40)); top: .1rem; width: var(--day-badge); height: var(--day-badge); border-radius: 50%; background: var(--c-accent); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .28rem; text-align: center; box-shadow: var(--sh-card); }
.ml-day__badge .d { font-size: var(--fs-xs); letter-spacing: .08em; line-height: 1; opacity: .9; }
.ml-day__badge .n { font-family: var(--f-body); font-size: 1.78rem; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.ml-day__body { background: rgba(255,255,255,.72); border: 1px solid rgba(192,200,207,.72); border-radius: var(--r-sm); padding: var(--sp-40); box-shadow: 0 18px 40px rgba(6,40,60,.05); }
.ml-day__body h3 { font-size: var(--fs-lg); line-height: 1.45; }
.ml-day__body p { color: var(--c-gray); line-height: 1.85; margin-top: var(--sp-20); }
.ml-day__extra { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: var(--sp-30); }
.ml-day__extra .meal, .ml-day__extra .stay { font-size: var(--fs-xs); background: var(--c-gray-100); border-radius: 8px; padding: .35rem .75rem; color: var(--c-gray); }
.ml-day__extra .meal b, .ml-day__extra .stay b { color: var(--c-text); font-weight: 600; }
.ml-day-spots { margin-top: var(--sp-40); padding-top: var(--sp-30); border-top: 1px solid rgba(192,200,207,.72); }
.ml-day-spots h4 { font-size: var(--fs-md); margin-bottom: var(--sp-20); color: var(--c-accent-700); }
.ml-day-spots__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-30); }
.ml-day-spot { overflow: hidden; background: rgba(255,255,255,.68); border: 1px solid rgba(192,200,207,.58); border-radius: var(--r-sm); }
.ml-day-spot img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.ml-day-spot h5 { font-size: var(--fs-sm); line-height: 1.45; color: var(--c-text); }
.ml-day-spot h5, .ml-day-spot p { padding-inline: var(--sp-30); }
.ml-day-spot h5 { margin-top: var(--sp-30); }
.ml-day-spot p { font-size: var(--fs-sm); line-height: 1.8; margin-top: var(--sp-20); padding-bottom: var(--sp-30); }

/* step timeline (橫向 5 步) */
.ml-steps { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--sp-30); }
.ml-step { background: #fff; border-radius: 16px; padding: var(--sp-40); box-shadow: var(--sh-soft); }
.ml-step .n { font-family: var(--f-display); font-size: 1.6rem; font-weight: 700; color: var(--c-accent); }
.ml-step h3 { font-size: var(--fs-md); margin-top: .3rem; }
.ml-step p { color: var(--c-gray); font-size: var(--fs-sm); margin-top: var(--sp-20); }

/* include / exclude */
.ml-incl { background: #fff; border: 1px solid var(--c-gray-300); border-radius: var(--r-card); padding: var(--sp-50); }
.ml-incl h3 { font-size: var(--fs-lg); margin-bottom: var(--sp-30); display: flex; align-items: center; gap: .5em; }
.ml-incl.ok h3 { color: var(--c-accent-700); }
.ml-incl.no h3 { color: var(--c-secondary-700); }

/* 待補圖片的空圖框：文字先寫齊，照片之後補；一眼看得出哪幾張還沒放 */
.ml-card__media.is-placeholder { display: grid; place-items: center; aspect-ratio: 3 / 2; background: repeating-linear-gradient(135deg, var(--c-gray-100), var(--c-gray-100) 10px, #fff 10px, #fff 20px); border: 1px dashed var(--c-gray-300); }
.ml-card__media.is-placeholder::after { content: attr(aria-label); font-size: var(--fs-xs); letter-spacing: .1em; color: var(--c-gray); background: rgba(255,255,255,.85); padding: .35rem .8rem; border-radius: 999px; max-width: 84%; text-align: center; line-height: 1.5; }

/* room / dining cards */
.ml-room { display: grid; grid-template-columns: 42% 1fr; gap: var(--sp-40); background: #fff; border: 1px solid var(--c-gray-300); border-radius: var(--r-card); overflow: hidden; box-shadow: var(--sh-soft); }
.ml-room img { width: 100%; height: 100%; object-fit: cover; min-height: 220px; }
.ml-room__body { padding: var(--sp-50); }
.ml-room__body h3 { font-size: var(--fs-lg); }
.ml-room__specs { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: var(--sp-30); }
.ml-room__specs span { display: inline-flex; align-items: center; gap: .35em; line-height: 1.5; font-size: var(--fs-xs); color: var(--c-gray); background: var(--c-gray-100); border-radius: 8px; padding: .3rem .7rem; }
.ml-resort-lead { color: var(--c-gray); font-size: var(--fs-lg); line-height: 1.9; margin-top: var(--sp-30); }
/* 度假村規格清單（標籤 ＋ 說明，取代打勾清單） */
.ml-speclist { margin-top: var(--sp-40); }
.ml-speclist > div { display: grid; grid-template-columns: 96px 1fr; gap: var(--sp-30); align-items: baseline; padding: .95rem 0; border-top: 1px solid var(--c-gray-300); }
.ml-speclist > div:last-child { border-bottom: 1px solid var(--c-gray-300); }
.ml-speclist dt { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .08em; color: var(--c-accent-700); }
.ml-speclist dd { margin: 0; color: var(--c-gray); font-size: var(--fs-sm); line-height: 1.85; }
.ml-resort-facts { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: var(--sp-60); border-block: 1px solid var(--c-gray-300); }
.ml-resort-facts > div { padding: var(--sp-40); text-align: center; border-right: 1px solid var(--c-gray-300); }
.ml-resort-facts > div:last-child { border-right: 0; }
.ml-resort-facts span { display: block; color: var(--c-secondary-700); font-family: var(--f-display); font-size: var(--fs-sm); letter-spacing: .08em; text-transform: uppercase; }
.ml-resort-facts strong { display: block; margin-top: .4rem; color: var(--c-text); font-size: var(--fs-md); }
/* 房型備註跟 H2 底下的說明一樣：獨立一行、滿版靠左，不擠在標題右側折成兩段。 */
.ml-room-note { flex: 1 0 100%; max-width: none; color: var(--c-gray); font-size: var(--fs-sm); text-align: left; margin-top: var(--sp-20); }
/* .ml-row-head 自己有下方間距，裡面的標題塊就不要再疊一層。 */
.ml-row-head > .ml-section-head { margin-bottom: 0; }

/* Curated family / all-inclusive topic landing pages. The taxonomy archives remain
   the complete filterable lists and are linked from the curated recommendation area. */
.ml-theme-lead { margin-top: var(--sp-30); color: var(--c-gray); font-size: var(--fs-lg); line-height: 1.9; }
.ml-theme-resorts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-40); }
.ml-theme-resort { display: grid; isolation: isolate; grid-template-columns: 42% 1fr; min-height: 320px; overflow: hidden; border: 1px solid var(--c-gray-300); border-radius: var(--r-card); background: #fff; box-shadow: var(--sh-soft); color: var(--c-text); }
.ml-theme-resort--feature { grid-column: 1 / -1; grid-template-columns: 55% 1fr; min-height: 440px; }
.ml-theme-resort > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ml-theme-resort__body { position: relative; z-index: 1; align-self: center; padding: var(--sp-40); background: #fff; }
.ml-theme-resort__body .en { color: var(--c-secondary-700); font-family: var(--f-display); font-size: var(--fs-md); }
.ml-theme-resort__body h3 { margin-top: .25rem; font-size: var(--fs-lg); }
.ml-theme-resort__body > p:not(.en) { margin-top: var(--sp-20); color: var(--c-gray); }
.ml-theme-resort__body > strong { display: inline-block; margin-top: var(--sp-30); color: var(--c-accent-700); }
.ml-theme-resort__meta { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: var(--sp-20); }
.ml-theme-resort__meta span { padding: .25rem .65rem; border-radius: 999px; background: var(--c-accent-100); color: var(--c-accent-700); font-size: var(--fs-xs); }
.ml-seasonal-styles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-30); margin-top: var(--sp-50); }
.ml-seasonal-style { overflow: hidden; border: 1px solid var(--c-gray-300); border-radius: var(--r-card); background: #fff; box-shadow: var(--sh-soft); color: var(--c-text); text-decoration: none; transition: transform .25s ease, box-shadow .25s ease; }
.ml-seasonal-style:hover { transform: translateY(-5px); box-shadow: var(--sh-card); }
.ml-seasonal-style__media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; }
.ml-seasonal-style__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.ml-seasonal-style:hover .ml-seasonal-style__media img { transform: scale(1.04); }
.ml-seasonal-style__media span { position: absolute; right: var(--sp-20); bottom: var(--sp-20); display: grid; place-items: center; width: 2.8rem; aspect-ratio: 1; border-radius: 50%; background: var(--c-secondary); color: #fff; font-family: var(--f-display); font-size: var(--fs-md); }
.ml-seasonal-style__body { padding: var(--sp-40); }
.ml-seasonal-style__body h3 { margin-top: .3rem; font-size: var(--fs-lg); }
.ml-seasonal-style__body > p:not(.ml-eyebrow) { margin-top: var(--sp-20); color: var(--c-gray); }
.ml-seasonal-style__body strong { display: block; margin-top: var(--sp-30); color: var(--c-accent-700); font-size: var(--fs-sm); }
.ml-selection-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-30); margin-top: var(--sp-50); }
.ml-selection-card { position: relative; min-height: 300px; padding: var(--sp-40); border-top: 3px solid var(--c-secondary); background: #fff; box-shadow: var(--sh-soft); }
.ml-selection-card__icon { display: grid; place-items: center; width: 4.5rem; height: 4.5rem; margin-bottom: var(--sp-30); border-radius: 50%; background: var(--c-accent-100); color: var(--c-accent-700); }
.ml-selection-card__icon svg { width: 2.6rem; height: 2.6rem; }
.ml-selection-card h3 { margin-top: .35rem; font-size: var(--fs-lg); }
.ml-selection-card > p:last-child { margin-top: var(--sp-20); color: var(--c-gray); }
.ml-seasonal-benefits { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--sp-20); margin-top: var(--sp-30); }
.ml-seasonal-benefit { padding: var(--sp-30); border: 1px solid #cfe4ef; border-radius: 12px; background: var(--c-accent-100); }
.ml-seasonal-benefit--honeymoon { border-color: #eadcb8; background: #fbf7ec; }
.ml-seasonal-benefit__head { display: flex; align-items: center; gap: .8rem; padding-bottom: var(--sp-20); border-bottom: 1px solid rgba(19,42,56,.12); }
.ml-seasonal-benefit__head > span { display: grid; flex: 0 0 auto; place-items: center; width: 2.6rem; height: 2.6rem; border-radius: 50%; background: #fff; color: var(--c-accent-700); }
.ml-seasonal-benefit--honeymoon .ml-seasonal-benefit__head > span { color: var(--c-secondary-700); }
.ml-seasonal-benefit__head svg { width: 1.45rem; height: 1.45rem; }
.ml-seasonal-benefit__head small { display: block; color: var(--c-gray); font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.ml-seasonal-benefit__head h4 { margin: .1rem 0 0; color: var(--c-text); font-size: var(--fs-md); }
.ml-seasonal-benefit ul { display: grid; gap: .55rem; margin: var(--sp-20) 0 0; padding: 0; list-style: none; }
.ml-seasonal-benefit li { position: relative; padding-left: 1.35rem; color: var(--c-text); font-size: var(--fs-sm); line-height: 1.65; }
.ml-seasonal-benefit li::before { content: "✓"; position: absolute; left: 0; color: var(--c-accent); font-weight: 700; }
.ml-seasonal-benefit--honeymoon li::before { color: var(--c-secondary-700); }
.ml-flash-price { display:flex; align-items:flex-end; justify-content:space-between; gap:var(--sp-30); margin-top:var(--sp-30); padding:var(--sp-30) 0; border-block:1px solid var(--c-gray-300); }
.ml-flash-price small { display:block; color:var(--c-gray); font-size:var(--fs-xs); letter-spacing:.12em; }
.ml-flash-price strong { display:flex; align-items:baseline; gap:.12em; color:var(--c-secondary-700); font-family:var(--f-display); font-size:clamp(2.4rem,2rem + 1vw,3.4rem); line-height:1; white-space:nowrap; }
.ml-flash-price strong span,.ml-flash-price strong em { font-size:.46em; font-style:normal; }
.ml-flash-price > p { display:grid; gap:.25rem; margin:0!important; color:var(--c-text)!important; text-align:right; white-space:nowrap; }
.ml-flash-price > p span { color:var(--c-gray); font-size:var(--fs-xs); letter-spacing:.08em; }
.ml-flash-details { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-20); margin-top:var(--sp-30); }
.ml-flash-details > div { padding:var(--sp-30); border:1px solid var(--c-gray-300); background:var(--c-gray-100); }
.ml-flash-details > .is-gift { border-color:#eadcb8; background:#fbf7ec; }
.ml-flash-details h4 { color:var(--c-accent-700); font-size:var(--fs-md); }
.ml-flash-details .is-gift h4 { color:var(--c-secondary-700); }
.ml-flash-details ul { display:grid; gap:.5rem; margin:var(--sp-20) 0 0; padding:0; list-style:none; }
.ml-flash-details li { position:relative; padding-left:1.25rem; font-size:var(--fs-sm); line-height:1.65; }
.ml-flash-details li::before { content:"✓"; position:absolute; left:0; color:var(--c-accent); font-weight:700; }
.ml-flash-details .is-gift li::before { color:var(--c-secondary-700); }
.ml-flash-extension { display:grid; grid-template-columns:minmax(0,1fr) minmax(22rem,44%); align-items:center; overflow:hidden; border:1px solid var(--c-gray-300); background:#fff; box-shadow:var(--sh-soft); }
.ml-flash-extension > div { padding:var(--sp-60); }
.ml-flash-extension > div > p:not(.ml-eyebrow) { margin-top:var(--sp-20); color:var(--c-gray); }
.ml-flash-extension .ml-btn { margin-top:var(--sp-40); }
.ml-flash-extension img { width:100%; height:100%; min-height:420px; object-fit:cover; }
.ml-ctbc-hero .ml-hero__img { object-position:center; }
.ml-ctbc-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--sp-30); margin-top:var(--sp-50); padding:var(--sp-50); background:#f4efe6; }
.ml-ctbc-facts article { padding:0 var(--sp-30); text-align:center; }
.ml-ctbc-facts article + article { border-left:1px solid var(--c-gray-300); }
.ml-ctbc-facts svg { width:4rem; height:4rem; color:var(--c-accent-700); }
.ml-ctbc-facts h3 { margin-top:var(--sp-20); font-size:var(--fs-md); }
.ml-ctbc-facts p { margin-top:.6rem; color:var(--c-gray); }
.ml-ctbc-facts strong { color:var(--c-text); }
.ml-ctbc-reward { display:grid; grid-template-columns:minmax(20rem,34%) minmax(0,1fr); align-items:stretch; overflow:hidden; margin-top:var(--sp-40); border:1px solid var(--c-gray-300); background:#fff; box-shadow:var(--sh-soft); color:var(--c-text); }
.ml-ctbc-reward > img { width:100%; height:100%; min-height:460px; object-fit:cover; }
.ml-ctbc-reward > div { align-self:center; padding:var(--sp-50); }
.ml-ctbc-reward > div > .ml-eyebrow { color:var(--c-accent-700); }
.ml-ctbc-reward h3 { margin-top:.25rem; color:var(--c-text); font-size:var(--fs-xl); }
.ml-ctbc-reward__tiers { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-20); margin:var(--sp-30) 0; }
.ml-ctbc-reward__tiers article { padding:var(--sp-30); border-top:3px solid var(--c-accent); background:var(--c-accent-100); color:var(--c-text); }
.ml-ctbc-reward__tiers small { display:block; color:var(--c-accent-700); font-weight:700; }
.ml-ctbc-reward__tiers strong { display:block; margin-top:.35rem; color:var(--c-text); font-size:var(--fs-md); }
.ml-ctbc-reward__tiers p { margin-top:var(--sp-20); color:var(--c-gray); font-size:var(--fs-sm); }
.ml-ctbc-bank-link { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:var(--sp-20); padding:var(--sp-20) var(--sp-30); border:1px solid var(--c-accent); background:#fff; color:var(--c-text); transition:background-color .2s ease,border-color .2s ease; }
.ml-ctbc-bank-link:hover { border-color:var(--c-accent-700); background:var(--c-accent-100); color:var(--c-text); }
.ml-ctbc-bank-link__icon { display:grid; place-items:center; width:3rem; height:3rem; border-radius:50%; background:var(--c-accent-700); color:#fff; }
.ml-ctbc-bank-link__icon svg { width:1.45rem; height:1.45rem; }
.ml-ctbc-bank-link small { display:block; color:var(--c-gray); font-size:var(--fs-xs); letter-spacing:.08em; }
.ml-ctbc-bank-link strong { display:block; margin-top:.15rem; color:var(--c-accent-700); font-size:var(--fs-sm); }
.ml-ctbc-bank-link > b { color:var(--c-accent-700); font-size:var(--fs-lg); font-weight:400; }
.ml-ctbc-note { margin-top:var(--sp-20); color:var(--c-gray); font-size:var(--fs-xs); }
.ml-ctbc-page #resorts .ml-theme-resort { min-height:380px; }
.ml-ctbc-resort-points { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.65rem var(--sp-30); margin-top:var(--sp-30); padding:var(--sp-30); background:var(--c-gray-100); }
.ml-ctbc-resort-points span { position:relative; padding-left:1.25rem; color:var(--c-text); font-size:var(--fs-sm); }
.ml-ctbc-resort-points span::before { content:""; position:absolute; left:0; top:.65em; width:.45rem; height:.45rem; border-radius:50%; background:var(--c-secondary); }
.ml-ctbc-crosslink { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-30); margin-top:var(--sp-40); padding:var(--sp-30) var(--sp-40); border-left:3px solid var(--c-secondary); background:#fff; }
.ml-ctbc-crosslink a { flex:0 0 auto; color:var(--c-accent-700); font-weight:700; }
.ml-ctbc-terms { display:grid; gap:.9rem; margin:0; padding:0 0 0 1.4rem; color:var(--c-gray); font-size:var(--fs-sm); line-height:1.8; }
.ml-ctbc-terms ol { display:grid; gap:.65rem; margin-top:.75rem; padding-left:1.4rem; list-style-type:none; counter-reset:ctbc-sub; }
.ml-ctbc-terms ol li { counter-increment:ctbc-sub; }
.ml-ctbc-terms ol li::before { content:"(" counter(ctbc-sub) ") "; color:var(--c-text); font-weight:700; }
.ml-spring-hero .ml-hero__img { object-position:center; }
.ml-spring-reward__terms { display:grid; gap:.65rem; margin:var(--sp-20) 0 0; padding-left:1.25rem; color:var(--c-gray); font-size:var(--fs-xs); line-height:1.7; }
.ml-spring-page #resorts .ml-theme-resort { min-height:400px; }
.ml-promo__dates { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; margin-top:var(--sp-60); }
.ml-promo__dates article { display:block; padding:32px 22px 28px; border:1px solid rgba(201,162,75,.5); border-radius:8px; background:#fff; text-align:center; }
.ml-promo__dates article:nth-child(even) { border-color:rgba(18,48,68,.18); }
.ml-promo__dates article > b { display:grid; place-items:center; width:48px; height:48px; margin:0 auto 16px; border-radius:50%; background:var(--c-secondary); color:#fff; font-family:var(--f-display); font-size:21px; }
.ml-promo__dates article:nth-child(even) > b { background:#9aa7ad; }
.ml-promo__dates article p { margin:0 0 6px; color:var(--c-secondary-700); font-size:13px; font-weight:800; letter-spacing:.06em; }
.ml-promo__dates article h3 { margin:0 0 16px; padding-bottom:16px; border-bottom:1px solid rgba(18,48,68,.16); color:var(--c-text); font-size:21px; }
.ml-promo__dates ul { margin:0; padding:0; color:#405c6e; font-size:14px; line-height:1.7; list-style:none; }
.ml-promo__dates li { margin-top:7px; }
.ml-promo__dates li::before { content:"✔"; margin-right:6px; color:var(--c-secondary); }
.ml-promo__air { display:grid; grid-template-columns:48% 1fr; gap:var(--sp-60); align-items:center; }
.ml-promo__air > div:first-child { padding:28px; border-radius:var(--r-card); background:#fff; }
.ml-promo__air img { width:100%; object-fit:contain; }
.ml-promo__air ul { margin-top:var(--sp-30); padding-left:1rem; }
.ml-promo__flights { display:grid; gap:.65rem; margin-top:var(--sp-50); padding:var(--sp-30); border:1px solid var(--c-gray-300); border-radius:var(--r-card); background:#fff; box-shadow:var(--sh-soft); }
.ml-promo__flights > div { display:grid; grid-template-columns:10rem 6rem 1fr; gap:1rem; align-items:center; padding:.85rem 1rem; border-radius:var(--r-sm); background:var(--c-accent-100); }
.ml-promo__flights > div:nth-child(even) { background:var(--c-sand-100); }
.ml-promo__flights b { padding:.3rem .7rem; border-radius:999px; background:var(--c-accent-700); color:#fff; text-align:center; font-size:var(--fs-xs); }
.ml-theme-checklist { display: grid; gap: var(--sp-20); margin: 0; padding: 0; list-style: none; counter-reset: theme-check; }
.ml-theme-checklist li { counter-increment: theme-check; display: grid; grid-template-columns: auto 8rem 1fr; align-items: baseline; gap: 1rem; padding-bottom: var(--sp-20); border-bottom: 1px solid var(--c-gray-300); }
.ml-theme-checklist li::before { content: counter(theme-check, decimal-leading-zero); color: var(--c-secondary-700); font-family: var(--f-display); }
.ml-theme-checklist span { color: var(--c-gray); }
.ml-wedding-package { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--sp-30); margin-top:var(--sp-50); }
.ml-wedding-package article { position:relative; min-width:0; padding:var(--sp-40); border:1px solid var(--c-gray-300); border-radius:var(--r-card); background:#fff; box-shadow:var(--sh-soft); }
.ml-wedding-package__icon { display:grid; place-items:center; width:3.25rem; height:3.25rem; margin-bottom:var(--sp-30); border-radius:50%; background:var(--c-accent-100); color:var(--c-accent-700); }
.ml-wedding-package__icon svg { width:1.65rem; height:1.65rem; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.ml-wedding-package h3 { margin-top:.35rem; font-size:var(--fs-xl); }
.ml-wedding-package ul { display:grid; gap:.75rem; margin:var(--sp-30) 0 0; padding:0; color:var(--c-gray); list-style:none; }
.ml-wedding-package li { position:relative; padding-left:1.45rem; }
.ml-wedding-package li::before { content:"✓"; position:absolute; left:0; color:var(--c-accent); font-weight:800; }
.ml-wedding-page .ml-section[id] { scroll-margin-top:calc(var(--header-h) + 4rem); }
.ml-wedding-page .ml-hero::after { background:linear-gradient(270deg,rgba(5,36,55,.9) 0%,rgba(5,36,55,.7) 42%,rgba(5,36,55,.08) 72%); }
.ml-wedding-page .ml-hero__img { object-position:25% center; }
.ml-wedding-page .ml-hero__inner > * { margin-left:auto; }
.ml-wedding-process-layout { display:grid; grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr); gap:var(--sp-60); align-items:start; margin-top:var(--sp-50); }
.ml-wedding-process-media { position:sticky; top:calc(var(--header-h) + 5rem); display:grid; grid-template-columns:1fr .48fr; gap:var(--sp-20); margin:0; }
.ml-wedding-process-media img { width:100%; height:100%; min-height:13rem; object-fit:cover; border-radius:var(--r-sm); }
.ml-wedding-process-media img:first-child { grid-row:span 2; min-height:32rem; object-position:25% center; }
.ml-wedding-process-media img:nth-child(2) { object-position:center; }
.ml-wedding-process-media figcaption { align-self:end; padding:var(--sp-20); color:var(--c-gray); font-size:var(--fs-xs); line-height:1.7; }
.ml-wedding-process { display:grid; gap:0; margin:0; padding:0; list-style:none; counter-reset:none; }
.ml-wedding-process li { display:grid; grid-template-columns:3.4rem 1fr; gap:var(--sp-20); min-width:0; min-height:0; padding:var(--sp-30) 0; border-top:1px solid var(--c-gray-300); background:transparent; }
.ml-wedding-process li:first-child { padding-top:0; border-top:0; }
.ml-wedding-process li:last-child { grid-column:auto; }
.ml-wedding-process > li > span { display:grid; place-items:center; align-self:start; width:3.15rem; height:3.15rem; border:1px solid var(--c-secondary); border-radius:50%; color:var(--c-secondary-700); font-family:var(--f-display); font-size:var(--fs-md); }
.ml-wedding-process strong { display:block; color:var(--c-text); font-size:var(--fs-lg); }
.ml-wedding-process p { margin-top:.35rem; color:var(--c-gray); font-size:var(--fs-sm); line-height:1.75; }
.ml-dubai-page .ml-section[id] { scroll-margin-top:calc(var(--header-h) + 4rem); }
/* 婚攝專案頁（舊站 /maldivesweddingphoto/ 改版）：hero 用預設的左對齊構圖，
   只需要錨點捲動時讓開 sticky 頁首與錨點列。 */
.ml-weddingproject-page .ml-section[id] { scroll-margin-top:calc(var(--header-h) + 4rem); }
.ml-dual-route { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1px; margin-top:var(--sp-50); overflow:hidden; border:1px solid var(--c-gray-300); border-radius:var(--r-card); background:var(--c-gray-300); }
.ml-dual-route article { min-width:0; padding:var(--sp-30); background:#fff; }
.ml-dual-route span { display:grid; place-items:center; width:2.75rem; height:2.75rem; border-radius:50%; background:var(--c-accent-100); color:var(--c-accent-700); font-family:var(--f-display); }
.ml-dual-route .en { margin-top:var(--sp-30); color:var(--c-secondary-700); font-size:var(--fs-xs); letter-spacing:.08em; text-transform:uppercase; }
.ml-dual-route h3 { margin-top:.25rem; font-size:var(--fs-lg); }
.ml-dual-route article > p:last-child { margin-top:.6rem; color:var(--c-gray); font-size:var(--fs-sm); line-height:1.75; }
.ml-dubai-highlights { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--sp-30); margin-top:var(--sp-50); }
.ml-dubai-highlights article { display:grid; grid-template-rows:auto 1fr; min-width:0; overflow:hidden; border:1px solid var(--c-gray-300); border-radius:var(--r-card); background:#fff; box-shadow:var(--sh-soft); }
.ml-dubai-highlights img { width:100%; aspect-ratio:16 / 10; object-fit:cover; }
.ml-dubai-highlights article > div { padding:var(--sp-30); }
.ml-dubai-highlights .en { color:var(--c-secondary-700); font-family:var(--f-display); }
.ml-dubai-highlights h3 { margin-top:.2rem; font-size:var(--fs-lg); }
.ml-dubai-highlights article p:last-child { margin-top:.6rem; color:var(--c-gray); font-size:var(--fs-sm); line-height:1.75; }
.ml-dubai-highlight--wide { grid-column:span 3; grid-template-columns:1.15fr 1fr; grid-template-rows:1fr!important; align-items:stretch; }
.ml-dubai-highlight--wide img { height:100%; aspect-ratio:auto; }
.ml-theme-archive-link { margin: var(--sp-50) auto 0; text-align: center; }
.ml-tiger-package-options { margin-top: var(--sp-50); }
.ml-tiger-gallery-section { padding-top: var(--sp-30); }
.ml-destmenu-more { display: flex; flex-wrap: wrap; justify-content: center; gap: .45rem .8rem; margin: var(--sp-40) 0 0; text-align: center; }
.ml-destmenu-more a { color: var(--c-accent-700); font-weight: 700; text-decoration: none; }
.ml-destmenu-more a:hover { color: var(--c-accent); text-decoration: underline; text-underline-offset: .3em; }

.ml-family-reel { min-height: 540px; display: grid; place-items: center; }
.ml-family-reel .instagram-media { width: 100% !important; min-width: 0 !important; margin: 0 auto !important; overflow: hidden; border-radius: var(--r-card) !important; }
#family-reel .ml-btn--gold { display: none; }
#family-reel { background: color-mix(in srgb, var(--c-accent-100) 34%, #fff); }
.ml-family-page #recommended > .ml-wide > .ml-row-head { display: none; }
.ml-family-recommend-head { margin-bottom: var(--sp-60); padding-bottom: var(--sp-60); border-bottom: 1px solid var(--c-gray-300); text-align: center; }
.ml-family-recommend-head h2 { margin-top: var(--sp-20); }
.ml-family-recommend-copy { max-width: 680px; margin: var(--sp-30) auto 0; color: var(--c-gray); font-size: var(--fs-lg); }
.ml-family-subnav { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--sp-40); margin-top: var(--sp-40); }
.ml-family-subnav a { padding-bottom: .35rem; border-bottom: 2px solid transparent; color: var(--c-accent-700); font-weight: 700; }
.ml-family-subnav a:hover, .ml-family-subnav a:focus-visible { border-bottom-color: var(--c-secondary); color: var(--c-secondary-700); }
.ml-family-group + .ml-family-group { margin-top: var(--sp-70); padding-top: var(--sp-70); border-top: 1px solid var(--c-gray-300); }
.ml-family-group__head { max-width: 760px; margin-bottom: var(--sp-40); padding-left: var(--sp-30); border-left: 3px solid var(--c-secondary); }
.ml-family-group__head > p:last-child { margin-top: var(--sp-20); color: var(--c-gray); font-size: var(--fs-lg); }
.ml-family-group .ml-theme-resorts { grid-template-columns: 1fr; }
.ml-family-group .ml-theme-resort { min-height: 390px; align-items: stretch; }
.ml-family-group .ml-theme-resort > img { grid-column: 1; grid-row: 1; min-height: 100%; }
.ml-family-group .ml-theme-resort__body { position: relative; grid-column: 2; grid-row: 1; align-self: stretch; padding-top: var(--sp-50); }
.ml-family-group .ml-theme-resort__meta { display: none; }
.ml-family-group .ml-theme-resort__body .en { max-width: 55%; }
.ml-family-group .ml-theme-resort__body h3 { max-width: calc(100% - 10rem); margin-top: .4rem; font-size: clamp(1.75rem, 1.4rem + .8vw, 2.35rem); white-space: nowrap; }
.ml-family-intro { margin-top: var(--sp-20); color: var(--c-gray); font-size: var(--fs-sm); line-height: 1.75; }
.ml-family-price { display: grid; gap: .15rem; color: var(--c-secondary-700) !important; font-family: var(--f-display); font-size: clamp(2.15rem, 1.65rem + 1.25vw, 3rem); font-weight: 700; line-height: 1.08; }
.ml-family-price__line { display: flex; align-items: baseline; justify-content: flex-end; gap: .16em; white-space: nowrap; }
.ml-family-price__prefix, .ml-family-price__suffix { font-size: .52em; }
.ml-family-group .ml-family-price { align-self: end; min-width: 13rem; margin: 0; text-align: right; }
.ml-family-price small { order: 2; margin-top: .3rem; color: var(--c-gray); font-family: var(--f-body); font-size: var(--fs-xs); font-weight: 600; letter-spacing: .04em; }
.ml-family-package { display: grid; gap: .35rem; margin-top: var(--sp-20); padding-left: 1.15rem; color: var(--c-gray); font-size: var(--fs-sm); }
.ml-family-package li::marker { color: var(--c-accent); }
.ml-family-offer { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(13rem, .55fr); align-items: end; gap: var(--sp-40); margin-top: var(--sp-30); padding-top: var(--sp-30); border-top: 1px solid var(--c-gray-300); }
.ml-family-offer .ml-family-package { margin-top: 0; }
.ml-honeymoon-page .ml-family-group .ml-theme-resort { grid-template-columns: minmax(22rem, 42%) minmax(0, 1fr); }
.ml-sales-theme-page .ml-theme-resorts { grid-template-columns: 1fr; }
.ml-sales-theme-page .ml-theme-resort { grid-template-columns: minmax(22rem, 42%) minmax(0, 1fr); }
.ml-sales-theme-page .ml-theme-resort__body { position: relative; min-width: 0; }
.ml-sales-theme-page .ml-theme-resort__body > .ml-hero__cta { justify-content: center; }
.ml-local-island-page #package > .ml-wide > .ml-section-head { margin-top: var(--sp-60); margin-bottom: var(--sp-40); }
.ml-sales-theme-page .ml-family-link { position: absolute; top: var(--sp-40); right: var(--sp-40); margin: 0; }
.ml-sales-theme-page #experiences .ml-section-head { margin-bottom: var(--sp-50); }
.ml-sales-theme-page .ml-video-action { margin-top: var(--sp-40); text-align: center; }
.ml-sales-theme-page .ml-theme-archive-link { margin-top: var(--sp-50); text-align: center; }
.ml-video-poster { position: relative; display: block; overflow: hidden; border-radius: var(--r-card); box-shadow: var(--sh-card); }
.ml-video-poster img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.ml-video-poster span { position: absolute; top: 50%; left: 50%; display: grid; place-items: center; width: 4.5rem; height: 4.5rem; padding-left: .3rem; border-radius: 50%; background: rgba(0, 87, 133, .9); color: #fff; font-size: 1.65rem; transform: translate(-50%, -50%); transition: transform .2s ease, background .2s ease; }
.ml-video-poster:hover span { background: var(--c-secondary-700); transform: translate(-50%, -50%) scale(1.08); }
.ml-honeymoon-page .ml-family-group .ml-theme-resort__body { display: flex; flex-direction: column; min-width: 0; }
.ml-honeymoon-page .ml-family-link { position: absolute; top: var(--sp-50); right: var(--sp-40); margin: 0; }
.ml-honeymoon-page .ml-family-intro { max-width: none; padding-right: 0; }
.ml-honeymoon-offers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-20); margin-top: var(--sp-30); padding-top: var(--sp-30); border-top: 1px solid var(--c-gray-300); }
.ml-honeymoon-offers > div { min-width: 0; padding: var(--sp-30); border-radius: var(--r-sm); background: color-mix(in srgb, var(--c-accent-100) 42%, #fff); }
.ml-honeymoon-offers .ml-package-title { margin: 0; color: var(--c-accent-700); font-size: var(--fs-md); }
.ml-honeymoon-offers .ml-family-package { margin: var(--sp-20) 0 0; padding-left: 1.2rem; }
.ml-family-profile { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin: 0; overflow: hidden; border-top: 1px solid var(--c-gray-300); background: var(--c-gray-300); }
.ml-family-profile > div { min-height: 11rem; padding: var(--sp-30); background: color-mix(in srgb, var(--c-accent-100) 42%, #fff); }
.ml-family-profile dt { display: flex; align-items: center; gap: .65rem; color: var(--c-accent-700); font-size: var(--fs-sm); font-weight: 700; letter-spacing: .04em; }
.ml-family-profile dt::before { display: inline-grid; place-items: center; flex: 0 0 1.35rem; width: 1.35rem; height: 1.35rem; color: var(--c-accent-700); font-size: 1.15rem; line-height: 1; }
.ml-family-profile > div:nth-child(1) dt::before { content: "♙"; }
.ml-family-profile > div:nth-child(2) dt::before { content: "✓"; }
.ml-family-profile > div:nth-child(3) dt::before { content: "✦"; }
.ml-family-profile > div:nth-child(4) dt::before { content: "✈"; }
.ml-family-profile dd { margin: var(--sp-20) 0 0; color: var(--c-text); font-size: var(--fs-sm); line-height: 1.75; }
.ml-family-profile ul { display: grid; gap: .3rem; margin: 0; padding-left: 1.15rem; }
.ml-family-profile li::marker { color: var(--c-accent); content: "✓  "; }
.ml-family-link { display: inline-block; margin-top: var(--sp-30); color: var(--c-accent-700); font-size: 0; font-weight: 700; }
.ml-family-group .ml-family-link { position: absolute; top: var(--sp-50); right: var(--sp-40); margin: 0; }
.ml-family-link::after { content: "飯店介紹  →"; font-size: var(--fs-md); }
.ml-family-link:hover { color: var(--c-secondary-700); }
.ml-family-disclaimer { max-width: 900px; margin: var(--sp-50) auto 0; color: var(--c-gray); font-size: var(--fs-sm); text-align: center; }

.ml-allinclusive-page #recommended .ml-theme-resorts { grid-template-columns: 1fr; }
.ml-allinclusive-page #recommended .ml-theme-resort { min-height: 430px; align-items: stretch; }
.ml-allinclusive-page #recommended .ml-theme-resort--feature { grid-column: auto; grid-template-columns: 42% 1fr; }
.ml-allinclusive-page #recommended .ml-package-title { margin-top: var(--sp-30); padding-top: var(--sp-20); border-top: 1px solid var(--c-gray-300); color: var(--c-accent-700); font-size: var(--fs-sm); letter-spacing: .05em; }
.ml-allinclusive-page #recommended .ml-family-package { line-height: 1.7; }
/* 區塊下方的單行備註（.ml-room-note 之外的收尾說明） */
.ml-section-note { color: var(--c-gray); font-size: var(--fs-sm); text-align: left; }
/* 建議行程收尾的免責註記，要和時間軸拉開一點 */
.ml-itinerary-days .ml-section-note { margin-top: var(--sp-30); }
.ml-room__specs span img.emoji, .ml-room__specs span img { height: 1.1em; width: auto; margin: 0; display: inline-block; vertical-align: -0.15em; }

/* gallery */
.ml-gallery,
.wp-block-gallery.has-nested-images { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-30); }
.ml-gallery img,
.wp-block-gallery.has-nested-images img { aspect-ratio: 1; object-fit: cover; width: 100%; border-radius: var(--r-sm); }
.ml-gallery a:first-child,
.wp-block-gallery.has-nested-images > figure:first-child { grid-row: span 2; grid-column: span 2; }
.ml-gallery a:first-child img,
.wp-block-gallery.has-nested-images > figure:first-child img { aspect-ratio: 1; height: 100%; }
.wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image),
.wp-block-gallery.has-nested-images > figure { display: block; flex-grow: 0; margin: 0; width: 100% !important; }
.wp-block-gallery.has-nested-images > figure.wp-block-image img,
.wp-block-gallery.has-nested-images > figure img { display: block; height: 100%; max-width: none !important; width: 100% !important; }

/* =========================================================================
   FAQ
   ========================================================================= */
.ml-faq { max-width: var(--content); margin-inline: auto; }
.ml-faq__item { border-bottom: 1px solid var(--c-gray-300); }
.ml-faq__q { width: 100%; text-align: left; background: none; border: 0; cursor: pointer; padding: var(--sp-40) 3rem var(--sp-40) 0; font-size: var(--fs-lg); font-weight: 600; color: var(--c-text); position: relative; font-family: inherit; }
.ml-faq__q::after { content: "+"; position: absolute; right: 0; top: 50%; transform: translateY(-50%); font-size: 1.6rem; color: var(--c-accent); font-weight: 400; transition: transform .25s ease; }
.ml-faq__item.is-open .ml-faq__q::after { content: "−"; }
.ml-faq__a { max-height: 0; overflow: hidden; transition: max-height .3s ease; color: var(--c-gray); line-height: 1.9; }
.ml-faq__item.is-open .ml-faq__a { max-height: 400px; }
.ml-faq__a p { padding-bottom: var(--sp-40); }

/* ---------- 原生 Yoast FAQ 區塊（文章內嵌 wp:yoast/faq-block）---------- */
/* 卡片式外觀，並支援 JS 漸進增強折疊（.ml-faq-collapsible）。無 JS 時答案全展開，保 SEO / 無障礙。 */
.wp-block-yoast-faq-block {
  display: grid;
  gap: var(--sp-30);
  max-width: var(--content);
  margin-inline: auto;
}
.wp-block-yoast-faq-block .schema-faq-section {
  background: var(--c-primary);
  border: 1px solid var(--c-gray-300);
  border-radius: var(--r-sm);
  padding: var(--sp-40);
  box-shadow: var(--sh-soft);
  transition: border-color .2s ease, box-shadow .2s ease;
}
.wp-block-yoast-faq-block .schema-faq-question {
  display: block;
  color: var(--c-text);
  font-size: var(--fs-lg);
  font-weight: 600;
  line-height: 1.6;
}
.wp-block-yoast-faq-block .schema-faq-answer {
  color: var(--c-gray);
  margin-top: var(--sp-30);
  margin-bottom: 0;
  line-height: 1.9;
}

/* 折疊（僅在 theme.js 加上 .ml-faq-collapsible 後生效） */
.ml-faq-collapsible .schema-faq-question {
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  outline: none;
}
.ml-faq-collapsible .schema-faq-question::after {
  content: "+";
  flex: 0 0 auto;
  color: var(--c-accent);
  font-size: 1.6rem;
  font-weight: 400;
  line-height: 1;
  transition: transform .25s ease;
}
.ml-faq-collapsible .schema-faq-section.is-open .schema-faq-question::after {
  transform: rotate(45deg);
}
.ml-faq-collapsible .schema-faq-section:hover { border-color: var(--c-accent); }
.ml-faq-collapsible .schema-faq-question:focus-visible { color: var(--c-accent); }
.ml-faq-collapsible .schema-faq-answer {
  overflow: hidden;
  max-height: 0;
  margin-top: 0;
  opacity: 0;
  transition: max-height .3s ease, opacity .25s ease, margin-top .3s ease;
}
.ml-faq-collapsible .schema-faq-section.is-open .schema-faq-answer {
  max-height: 60rem;
  margin-top: var(--sp-30);
  opacity: 1;
}

/* =========================================================================
   內文表格（文章 post-content 內的 table / wp-block-table）
   ========================================================================= */
/* 手機橫向捲動容器（由 theme.js 包上，無 JS 時表格自行 overflow） */
.ml-table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin-block: var(--sp-40);
  border-radius: var(--r-sm);
}
.wp-block-post-content table {
  width: 100%;
  min-width: 520px;
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;                 /* 讓圓角能裁切 */
  border: 1px solid var(--c-gray-300);
  border-radius: var(--r-sm);
  background: var(--c-primary);
  box-shadow: var(--sh-soft);
  font-size: var(--fs-sm);
  color: var(--c-text);
}
.wp-block-post-content .wp-block-table.is-style-stripes {
  border-bottom: 0;
}
.wp-block-post-content .wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
  background: transparent;
}
/* 表格不在捲動容器內時（無 JS）也能自行捲動 */
.wp-block-post-content > table { display: block; overflow-x: auto; }
.wp-block-post-content table th,
.wp-block-post-content table td {
  padding: 0.85rem 1.1rem;
  text-align: left;
  vertical-align: top;
  line-height: 1.7;
  border-bottom: 1px solid var(--c-gray-300);
  border-right: 1px solid var(--c-gray-300);
}
.wp-block-post-content table th:last-child,
.wp-block-post-content table td:last-child { border-right: 0; }
.wp-block-post-content table tr:last-child td { border-bottom: 0; }
.wp-block-post-content table p { margin: 0; }

/* 表頭：正式 thead/th；舊站無 thead 的表格才以 tbody 第一列代替。
   不可寫 table tr:first-child td——tbody 第一列也是 first-child，會跟表頭同色。 */
.wp-block-post-content table thead th,
.wp-block-post-content table:not(:has(thead)) > tbody > tr:first-child > th,
.wp-block-post-content table:not(:has(thead)) > tbody > tr:first-child > td {
  background: var(--c-accent);
  color: #fff;
  font-weight: 600;
  border-bottom-color: var(--c-accent-700);
  white-space: nowrap;
}
.wp-block-post-content table thead strong,
.wp-block-post-content table:not(:has(thead)) > tbody > tr:first-child strong { color: #fff; }

/* 斑馬紋：避免 thead/tbody 表格同一列被兩組規則重複命中 */
.wp-block-post-content table tbody tr:nth-child(even) td,
.wp-block-post-content table:not(:has(tbody)) tr:nth-child(even) td { background: var(--c-accent-100); }
.wp-block-post-content table tbody tr:hover td,
.wp-block-post-content table:not(:has(tbody)) tr:not(:first-child):hover td { background: var(--c-sand-100); }

@media (max-width: 600px) {
  .wp-block-post-content table th,
  .wp-block-post-content table td { padding: 0.7rem 0.85rem; }
}

/* =========================================================================
   舊站 Astra 全域色盤相容
   搬遷內容中仍帶 has-ast-global-color-* class（如 cover 白字、金色底色帶）。
   以舊站實際色值重建，讓設計忠實呈現，僅作用於文章內文，不影響主題其它部分。
   ========================================================================= */
/* 色值取自舊站 www.mle.com.tw 前台當前輸出的 --ast-global-color-*，全站一致。 */
.wp-block-post-content {
  --ast-global-color-0:#1260af; --ast-global-color-1:#1a385c; --ast-global-color-2:#3a3a3a;
  --ast-global-color-3:#3b4550; --ast-global-color-4:#efeeea; --ast-global-color-5:#FFFFFF;
  --ast-global-color-6:#e5e3da; --ast-global-color-7:#424242; --ast-global-color-8:#111c2a;
}
.wp-block-post-content .has-ast-global-color-0-color{color:var(--ast-global-color-0)}
.wp-block-post-content .has-ast-global-color-1-color{color:var(--ast-global-color-1)}
.wp-block-post-content .has-ast-global-color-2-color{color:var(--ast-global-color-2)}
.wp-block-post-content .has-ast-global-color-3-color{color:var(--ast-global-color-3)}
.wp-block-post-content .has-ast-global-color-4-color{color:var(--ast-global-color-4)}
.wp-block-post-content .has-ast-global-color-5-color{color:var(--ast-global-color-5)}
.wp-block-post-content .has-ast-global-color-6-color{color:var(--ast-global-color-6)}
.wp-block-post-content .has-ast-global-color-7-color{color:var(--ast-global-color-7)}
.wp-block-post-content .has-ast-global-color-8-color{color:var(--ast-global-color-8)}
.wp-block-post-content .has-ast-global-color-0-background,
.wp-block-post-content .has-ast-global-color-0-background-color{background-color:var(--ast-global-color-0)}
.wp-block-post-content .has-ast-global-color-1-background,
.wp-block-post-content .has-ast-global-color-1-background-color{background-color:var(--ast-global-color-1)}
.wp-block-post-content .has-ast-global-color-2-background,
.wp-block-post-content .has-ast-global-color-2-background-color{background-color:var(--ast-global-color-2)}
.wp-block-post-content .has-ast-global-color-3-background,
.wp-block-post-content .has-ast-global-color-3-background-color{background-color:var(--ast-global-color-3)}
.wp-block-post-content .has-ast-global-color-4-background,
.wp-block-post-content .has-ast-global-color-4-background-color{background-color:var(--ast-global-color-4)}
.wp-block-post-content .has-ast-global-color-5-background,
.wp-block-post-content .has-ast-global-color-5-background-color{background-color:var(--ast-global-color-5)}
.wp-block-post-content .has-ast-global-color-6-background,
.wp-block-post-content .has-ast-global-color-6-background-color{background-color:var(--ast-global-color-6)}
.wp-block-post-content .has-ast-global-color-7-background,
.wp-block-post-content .has-ast-global-color-7-background-color{background-color:var(--ast-global-color-7)}
.wp-block-post-content .has-ast-global-color-8-background,
.wp-block-post-content .has-ast-global-color-8-background-color{background-color:var(--ast-global-color-8)}

/* =========================================================================
   內文 2 欄圖庫 + 滿版影片
   ========================================================================= */
.wp-block-post-content .wp-block-gallery.columns-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-30);
  margin-block: var(--sp-40);
}
.wp-block-post-content .wp-block-gallery.columns-2 figure { margin: 0; }
.wp-block-post-content .wp-block-gallery.columns-2 img {
  width: 100%;
  height: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--r-sm);
  display: block;
}
@media (max-width: 600px) {
  .wp-block-post-content .wp-block-gallery.columns-2 { grid-template-columns: 1fr; }
}

/* 滿版影片（YouTube embed）：跳出內文欄寬、貼齊視窗左右，維持 16:9 */
.wp-block-post-content .ml-video-full {
  width: 100vw;
  max-width: 100vw;
  margin-inline: calc(50% - 50vw);
  margin-block: var(--sp-50);
  background: var(--c-accent-700);
}
.wp-block-post-content .ml-video-full .wp-block-embed__wrapper {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
}
.wp-block-post-content .ml-video-full iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* =========================================================================
   Promo slider (最新優惠)
   ========================================================================= */
.ml-slider { position: relative; }
.ml-slider__track { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - var(--sp-30)) / 2); gap: var(--sp-30); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.ml-slider__track::-webkit-scrollbar { display: none; }
.ml-slide { scroll-snap-align: start; position: relative; min-height: 340px; display: flex; align-items: center; color: #fff; overflow: hidden; border-radius: var(--r-card); }
.ml-slide img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ml-slide figure { margin: 0; }
.ml-slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(6,40,60,.78) 0%, rgba(6,40,60,.28) 70%); }
.ml-slide__body { position: relative; z-index: 2; padding: var(--sp-60); max-width: 560px; }
.ml-slide__body .k { color: var(--c-secondary); letter-spacing: .16em; text-transform: uppercase; font-size: var(--fs-xs); font-weight: 600; }
.ml-slide__body h3 { color: #fff; font-size: var(--fs-xl); margin-top: .4rem; }
.ml-slide__body p { color: #fff; opacity: .92; margin-top: var(--sp-20); }
.ml-slider__dots { display: flex; gap: .5rem; justify-content: center; margin-top: var(--sp-40); }
.ml-slider__dots button { width: 10px; height: 10px; border-radius: 50%; border: 0; background: var(--c-gray-300); cursor: pointer; padding: 0; transition: background .2s; }
.ml-slider__dots button.is-active { background: var(--c-accent); width: 26px; border-radius: 999px; }

/* =========================================================================
   CTA
   ========================================================================= */
.ml-cta { position: relative; color: #fff; text-align: center; overflow: hidden; }
.ml-cta img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ml-cta::after { content: ""; position: absolute; inset: 0; background: linear-gradient(120deg, rgba(7,44,68,.94), rgba(16,102,146,.84)); }
.ml-cta__inner { position: relative; z-index: 2; max-width: 720px; margin-inline: auto; padding-inline: var(--sp-40); }
.ml-cta h2 { color: #fff; }
.ml-cta p { color: #fff; opacity: .95; font-size: var(--fs-lg); margin-top: var(--sp-30); }
.ml-cta .ml-hero__cta { justify-content: center; }

/* =========================================================================
   Footer
   ========================================================================= */
.ml-footer { background: #0A2C40; color: rgba(255,255,255,.8); padding-block: var(--sp-60) var(--sp-40); }
.ml-footer__grid { display: grid; grid-template-columns: 1.15fr 1.45fr .8fr; gap: var(--sp-60); align-items: start; }
.ml-footer h4, .ml-footer__title { color: #fff; font-size: var(--fs-md); margin-bottom: var(--sp-20); }
.ml-footer__hours { color: #fff; font-size: var(--fs-lg); font-weight: 600; line-height: 1.4; margin: 0; }
.ml-footer a { color: rgba(255,255,255,.8); display: block; padding: .18rem 0; font-size: var(--fs-sm); }
.ml-footer a:hover { color: #fff; }
.ml-footer .ml-logo { color: #fff; margin-bottom: var(--sp-30); }
.ml-footer__brand p { font-size: var(--fs-sm); line-height: 1.9; opacity: .8; }
.ml-footer__meta { margin-top: var(--sp-30); display: grid; gap: .45rem; }
.ml-footer__meta p, .ml-footer__contact p { font-size: var(--fs-sm); line-height: 1.72; opacity: .82; margin: 0; }
.ml-footer__contact .ml-footer__hours { font-size: var(--fs-lg); line-height: 1.4; opacity: 1; }
.ml-footer__meta .license { color: #fff; font-weight: 600; opacity: .95; }
.ml-footer__meta a { display: inline; padding: 0; color: rgba(255,255,255,.92); text-decoration: underline; text-underline-offset: .18em; }
.ml-footer__branches { display: grid; gap: .45rem; }
.ml-footer__branches strong { color: #fff; font-weight: 600; }
.ml-footer__contact { display: grid; gap: var(--sp-30); }
.ml-footer__social { display: grid; gap: .75rem; align-content: start; }
.ml-footer .ml-social-link { display: inline-flex; align-items: center; gap: .65rem; padding: 0; line-height: 1.2; text-decoration: none; white-space: nowrap; }
.ml-footer .ml-social-link svg { width: 20px; height: 20px; flex: 0 0 20px; color: #fff; display: block; }
.ml-footer__bottom { border-top: 1px solid rgba(255,255,255,.15); margin-top: var(--sp-40); padding-top: var(--sp-40); display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem; font-size: var(--fs-xs); opacity: .7; }

/* =========================================================================
   目的地 Lightbox (卡牌選單)
   ========================================================================= */
/* 相簿 lightbox（.ml-gallery 的原圖檢視） */
.ml-imgbox { position: fixed; inset: 0; z-index: 300; display: flex; align-items: center; justify-content: center; gap: var(--sp-30); padding: var(--sp-40); background: rgba(6, 40, 60, .88); opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s ease; }
.ml-imgbox.is-open { opacity: 1; visibility: visible; }
.ml-imgbox__stage { margin: 0; max-width: min(1400px, 92vw); max-height: 88vh; display: flex; flex-direction: column; align-items: center; gap: .8rem; }
.ml-imgbox__stage img { max-width: 100%; max-height: 80vh; width: auto; height: auto; border-radius: 12px; box-shadow: 0 24px 60px rgba(0,0,0,.4); background: #fff; }
.ml-imgbox__stage figcaption { color: rgba(255,255,255,.9); font-size: var(--fs-sm); text-align: center; }
.ml-imgbox__close, .ml-imgbox__nav { flex: 0 0 auto; width: 46px; height: 46px; border: 0; border-radius: 999px; background: rgba(255,255,255,.16); color: #fff; font-size: 1.6rem; line-height: 1; cursor: pointer; transition: background .2s ease; }
.ml-imgbox__close:hover, .ml-imgbox__nav:hover { background: rgba(255,255,255,.3); }
.ml-imgbox__close { position: absolute; top: var(--sp-30); right: var(--sp-30); }
.ml-gallery a { cursor: zoom-in; }
@media (max-width: 700px) {
  .ml-imgbox { padding: var(--sp-30); gap: .4rem; }
  .ml-imgbox__nav { width: 38px; height: 38px; font-size: 1.3rem; }
}

.ml-lightbox { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center; padding: var(--sp-40); background: rgba(6,40,60,.72); backdrop-filter: blur(6px); opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility .3s ease; }
.ml-lightbox.is-open { opacity: 1; visibility: visible; }
.ml-lightbox__panel { position: relative; background: var(--c-bg); border-radius: 20px; box-shadow: var(--sh-float); width: min(1120px, 100%); max-height: 88vh; overflow: auto; padding: var(--sp-60); transform: translateY(16px) scale(.985); transition: transform .3s ease; }
.ml-lightbox.is-open .ml-lightbox__panel { transform: none; }
.ml-lightbox__head { margin-bottom: var(--sp-40); }
.ml-lightbox__head p.sub { color: var(--c-gray); margin-top: var(--sp-20); }
.ml-lightbox__close { position: absolute; top: var(--sp-40); right: var(--sp-40); width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--c-gray-300); background: #fff; color: var(--c-text); font-size: 1.5rem; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: background .2s, color .2s, border-color .2s; z-index: 3; }
.ml-lightbox__close:hover { background: var(--c-accent-700); color: #fff; border-color: var(--c-accent-700); }
.ml-destmenu-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-30); }
.ml-destmenu-actions { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .65rem; margin-top: var(--sp-40); color: var(--c-gray); font-size: var(--fs-sm); }
.ml-destmenu-actions__label { font-weight: 600; }
.ml-destmenu-actions__link { display: inline-flex; align-items: center; justify-content: center; min-height: 2.25rem; padding: .42rem .85rem; border: 1px solid var(--c-gray-300); border-radius: 999px; background: #fff; color: var(--c-accent-700); font-size: var(--fs-sm); font-weight: 600; text-decoration: none; transition: border-color .2s ease, color .2s ease, background .2s ease; }
.ml-destmenu-actions__link:hover { border-color: var(--c-accent); background: color-mix(in srgb, var(--c-accent) 8%, #fff); color: var(--c-accent-700); }
.ml-destcard { position: relative; border-radius: 14px; overflow: hidden; display: block; color: #fff; aspect-ratio: 4/3; box-shadow: var(--sh-soft); }
.ml-destcard img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.ml-destcard:hover img { transform: scale(1.06); }
.ml-destcard::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6,40,60,0) 34%, rgba(6,40,60,.84) 100%); }
.ml-destcard__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: var(--sp-30); }
.ml-destcard__body .en { font-size: var(--fs-xs); letter-spacing: .16em; text-transform: uppercase; color: var(--c-secondary); font-weight: 600; }
/* 卡片標題：首頁「馬爾地夫渡假村怎麼選？」與 nav lightbox 共用同一級字，改一處兩邊一致 */
.ml-destcard__body h3 { color: #fff; font-size: clamp(1.25rem, 1.05rem + .7vw, 1.6rem); line-height: 1.35; margin-top: .1rem; }
.ml-destcard__body p { color: #fff; opacity: .85; font-size: var(--fs-xs); margin-top: .2rem; }
/* 無圖的「特色精選」卡：品牌深海漸層底 */
.ml-destcard--noimg { background: linear-gradient(150deg, var(--c-accent-700), #0C5C84); }
/* 群組卡（標題不連結，內含各景點子連結） */
.ml-destcard--group::after { background: linear-gradient(180deg, rgba(6,40,60,.42) 0%, rgba(6,40,60,.86) 100%); }
.ml-destcard--group .ml-destcard__body { display: flex; flex-direction: column; }
.ml-destcard__links { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .55rem; }
.ml-destcard__links a { font-size: var(--fs-sm); color: #fff; background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.30); padding: .36rem .8rem; border-radius: 999px; line-height: 1.2; font-weight: 500; transition: background .2s ease, border-color .2s ease; }
.ml-destcard__links a:hover { background: rgba(255,255,255,.30); border-color: #fff; }
.ml-destcard__cover { position: absolute; inset: 0; z-index: 1; }
.ml-destcard--linked .ml-destcard__body { pointer-events: none; }
.ml-destcard--linked .ml-destcard__links { pointer-events: auto; }
.ml-destcard--linked .ml-destcard__links a { pointer-events: auto; }
.ml-nav a.js-destmenu { cursor: pointer; }
/* 舊版曾在這裡把 ◎ 蓋掉（content:""）；現在兩個 lightbox 入口都要顯示 ◎，
   marker 統一由上面的 .ml-nav a.js-destmenu/.js-offermenu::before 決定，這裡不再覆寫。 */
.ml-lightbox .ml-lightbox__panel { width: min(1240px, 96vw); max-height: min(760px, 92vh); padding: var(--sp-40); }
.ml-lightbox .ml-lightbox__head { margin-bottom: var(--sp-30); padding-right: 3.5rem; }
.ml-lightbox .ml-lightbox__head .ml-display { font-size: clamp(1.65rem, 1.2rem + 1.6vw, 2.4rem); }
.ml-lightbox .ml-lightbox__head p.sub { margin-top: .55rem; font-size: var(--fs-sm); }
.ml-lightbox .ml-lightbox__close { top: var(--sp-30); right: var(--sp-30); width: 38px; height: 38px; font-size: 1.25rem; }
.ml-lightbox .ml-destmenu-grid { gap: var(--sp-20); }
.ml-lightbox .ml-destcard { aspect-ratio: 4 / 2.55; border-radius: 12px; }
.ml-lightbox .ml-destcard__body { padding: var(--sp-20); }
/* 字級由上面的 .ml-destcard__body h3 統一決定，這裡不再另外指定，避免兩處漂移 */
.ml-lightbox .ml-destcard__body .en { letter-spacing: .13em; }

.ml-lightbox .ml-destmenu-actions { margin-top: var(--sp-30); gap: .75rem; }
.ml-lightbox .ml-destmenu-actions__label,
.ml-lightbox .ml-destmenu-actions__link { font-size: var(--fs-xs); }
.ml-lightbox .ml-destmenu-actions__link { min-height: 2rem; padding: .34rem .75rem; }
@media (max-width: 900px) { .ml-destmenu-grid { grid-template-columns: repeat(2, 1fr); } .ml-lightbox__panel { padding: var(--sp-50); } .ml-lightbox__close { top: var(--sp-30); right: var(--sp-30); } }
@media (max-width: 520px) { .ml-destmenu-grid { grid-template-columns: 1fr; gap: var(--sp-20); } }

/* 聯絡我們 lightbox */
.ml-lightbox--contact .ml-lightbox__panel { width: min(920px, 96vw); max-height: min(680px, 92vh); }
.ml-contact-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--sp-30); }
.ml-contact-card { display: flex; gap: var(--sp-30); align-items: flex-start; padding: var(--sp-30); border: 1px solid var(--c-gray-300); border-radius: 16px; background: #fff; box-shadow: var(--sh-soft); }
.ml-contact-card__qr { flex: 0 0 auto; }
.ml-contact-card__qr > span { display:grid; place-items:center; width:128px; height:128px; border-radius:10px; background:var(--c-accent-700); color:#fff; font-weight:700; }
.ml-contact-card__qr img { display: block; width: 128px; height: 128px; border: 1px solid var(--c-gray-300); border-radius: 10px; }
.ml-contact-card__body .en { font-size: var(--fs-xs); letter-spacing: .13em; text-transform: uppercase; color: var(--c-secondary); font-weight: 600; }
.ml-contact-card__body h3 { font-size: var(--fs-lg); margin-top: .1rem; }
.ml-contact-card__body p { color: var(--c-gray); font-size: var(--fs-sm); margin-top: .35rem; }
.ml-contact-card__body p.addr { margin-top: .55rem; }
.ml-contact-card__body p a { color: inherit; }
.ml-contact-card__body p a:hover { color: var(--c-accent-700); }
.ml-contact-license { margin-top: var(--sp-30); text-align: center; color: var(--c-gray); font-size: var(--fs-sm); }
@media (max-width: 820px) { .ml-contact-grid { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .ml-contact-card { flex-direction: column; align-items: center; text-align: center; } }

/* Nav「最新度假村優惠」lightbox：內容同步自首頁「精選優惠專案」，版面刻意精簡成一列一筆 */
.ml-lightbox--offers .ml-lightbox__panel { width: min(860px, 96vw); max-height: min(760px, 92vh); }
.ml-offermenu-list { display: grid; gap: .75rem; }
.ml-offerrow { display: grid; grid-template-columns: 132px 1fr auto; align-items: center; gap: var(--sp-30); padding: .75rem; border: 1px solid var(--c-gray-300); border-radius: 14px; background: #fff; color: inherit; transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.ml-offerrow:hover { border-color: var(--c-btn); box-shadow: var(--sh-soft); transform: translateY(-1px); }
.ml-offerrow__media { display: block; border-radius: 10px; overflow: hidden; background: var(--c-gray-100); aspect-ratio: 16/9; }
.ml-offerrow__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ml-offerrow__body { display: block; min-width: 0; }
.ml-offerrow__top { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.ml-offerrow__top .ml-tag { position: static; top: auto; left: auto; background: var(--c-accent-100); color: var(--c-btn-700); }
.ml-offerrow__top .ml-tag--coral { background: var(--c-secondary-700); color: #fff; }
.ml-offerrow__meta { font-size: var(--fs-xs); color: var(--c-gray); }
.ml-offerrow h3 { font-size: var(--fs-md); font-weight: 700; margin: .35rem 0 0; }
.ml-offerrow p { margin: .2rem 0 0; font-size: var(--fs-sm); color: var(--c-gray); line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ml-offerrow__arrow { flex: 0 0 auto; color: var(--c-btn); font-weight: 700; padding-right: .35rem; transition: transform .2s ease; }
.ml-offerrow:hover .ml-offerrow__arrow { transform: translateX(3px); }
/* 手機：改成圖上文下的直式卡片（橫式縮圖太小，看不出是哪個專案） */
@media (max-width: 560px) {
  .ml-offerrow { grid-template-columns: 1fr; gap: .7rem; padding: .7rem; }
  .ml-offerrow__media { width: 100%; }
  .ml-offerrow__arrow { display: none; }
  .ml-offerrow h3 { font-size: var(--fs-lg); }
  .ml-offerrow p { -webkit-line-clamp: 3; }
}

/* 首頁「最新優惠」橫向滑動輪播（後台 offer CPT） */
.ml-offers-slider .ml-slider__track { grid-auto-columns: calc((100% - (var(--sp-40) * 2)) / 3); gap: var(--sp-40); }
.ml-offercard { position: relative; display: block; border-radius: var(--r-card); overflow: hidden; box-shadow: var(--sh-soft); color: #fff; scroll-snap-align: start; }
.ml-offercard__media { position: relative; aspect-ratio: 16/9; }
.ml-offercard__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #071c2b; }
.ml-offercard__overlay { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: var(--sp-40); display: flex; flex-direction: column; align-items: flex-start; gap: var(--sp-20); background: linear-gradient(180deg, rgba(6,40,60,0) 30%, rgba(6,40,60,.82) 100%); }
.ml-offercard__caption { color: #fff; font-size: var(--fs-xl); font-weight: 600; line-height: 1.35; margin: 0; text-shadow: 0 1px 12px rgba(6,40,60,.35); }
.ml-offercard__btn { pointer-events: none; }
@media (max-width: 1024px) { .ml-offers-slider .ml-slider__track { grid-auto-columns: calc((100% - var(--sp-40)) / 2); } }
@media (max-width: 720px) { .ml-offers-slider .ml-slider__track { grid-auto-columns: 88%; gap: var(--sp-30); } }

/* =========================================================================
   Mobile menu
   ========================================================================= */
.ml-mobile-menu { position: fixed; inset: 0; z-index: 180; display: flex; justify-content: flex-end; background: rgba(8,22,40,.62); opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s ease; }
.ml-mobile-menu.is-open { opacity: 1; visibility: visible; }
.ml-mobile-menu__panel { position: relative; display: flex; flex-direction: column; width: min(360px, 86vw); height: 100%; background: #fff; padding: calc(var(--header-h) + var(--sp-40)) var(--sp-40) var(--sp-40); box-shadow: var(--sh-float); transform: translateX(100%); transition: transform .25s ease; }
.ml-mobile-menu.is-open .ml-mobile-menu__panel { transform: none; }
.ml-mobile-menu__close { position: absolute; top: var(--sp-40); right: var(--sp-40); width: 44px; height: 44px; border: 1px solid var(--c-gray-300); border-radius: 50%; background: #fff; color: var(--c-text); font-size: 1.45rem; line-height: 1; cursor: pointer; display: grid; place-items: center; }
.ml-mobile-menu__close:hover { background: var(--c-accent-700); border-color: var(--c-accent-700); color: #fff; }
/* 項目多到超過一個畫面高時，抽屜本身要能捲動，否則下面的選項點不到。
   捲動區只給 nav：關閉鈕是 panel 的 absolute 子元素，才不會跟著捲走。 */
.ml-mobile-menu__panel nav { display: grid; gap: var(--sp-20); min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }
.ml-mobile-menu__panel a { display: flex; align-items: center; min-height: 48px; border-bottom: 1px solid var(--c-gray-300); color: var(--c-text); font-weight: 600; }
.ml-mobile-menu__panel a:hover { color: var(--c-accent-700); }
/* 抽屜裡的「旅遊攻略」子項目：縮排一階，看得出是同一組 */
.ml-mobile-menu__panel a.ml-subnav__link { padding-left: 1rem; min-height: 44px; font-size: var(--fs-sm); font-weight: 500; color: var(--c-gray); }
.ml-mobile-menu__panel a.ml-subnav__link:hover { color: var(--c-btn-700); }
/* 抽屜是淺色底，數量標籤要換成深字，不然白字看不見 */
.ml-mobile-menu__panel .ml-subnav__count { margin-left: auto; background: var(--c-gray-300); color: var(--c-text); }

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width: 1024px) {
  .ml-promo__dates { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ml-promo__air { grid-template-columns:1fr; }
  .ml-ctbc-reward { grid-template-columns:1fr; }
  .ml-ctbc-reward > img { height:auto; min-height:0; aspect-ratio:16 / 9; }
  .ml-flash-extension { grid-template-columns:1fr; }
  .ml-flash-extension img { height:auto; min-height:0; aspect-ratio:16 / 9; }
  .ml-seasonal-styles,
  .ml-selection-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ml-seasonal-style:last-child,
  .ml-selection-card:last-child { grid-column: 1 / -1; }
  .ml-dual-route { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ml-dual-route article:last-child { grid-column:1 / -1; }
  .ml-dubai-highlights { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ml-dubai-highlight--wide { grid-column:span 2; }
  .ml-wedding-package { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ml-wedding-package article:last-child { grid-column:1 / -1; }
  .ml-wedding-process-layout { grid-template-columns:1fr; }
  .ml-wedding-process-media { position:static; grid-template-columns:1.35fr 1fr; }
  .ml-wedding-process-media img:first-child { min-height:24rem; }
  .ml-infobar__grid { grid-template-columns: repeat(2, 1fr); }
  .ml-infobar__item:nth-child(3)::before { display: none; }
  .ml-resort-facts { grid-template-columns: repeat(2, 1fr); }
  .ml-resort-facts > div:nth-child(2) { border-right: 0; }
  .ml-resort-facts > div:nth-child(-n+2) { border-bottom: 1px solid var(--c-gray-300); }
  .ml-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .ml-stats { grid-template-columns: repeat(2, 1fr); gap: var(--sp-50); }
  .ml-steps { grid-template-columns: repeat(2, 1fr); }
  .ml-feature-point, .ml-feature-point--reverse { grid-template-columns: 1fr; gap: var(--sp-40); }
  .ml-feature-point--reverse .ml-feature-point__media, .ml-feature-point--reverse .ml-feature-point__body { order: initial; }
  .ml-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
  .ml-promo__dates { grid-template-columns:1fr; }
  .ml-promo__flights > div { grid-template-columns:1fr 1fr; }
  .ml-promo__flights > div span { grid-column:1 / -1; }
  .ml-ctbc-facts,.ml-ctbc-reward__tiers,.ml-ctbc-resort-points { grid-template-columns:1fr; }
  .ml-ctbc-facts { padding:var(--sp-30); }
  .ml-ctbc-facts article { padding:var(--sp-30) 0; }
  .ml-ctbc-facts article + article { border-top:1px solid var(--c-gray-300); border-left:0; }
  .ml-ctbc-reward { padding:0; }
  .ml-ctbc-reward > div { padding:var(--sp-30); }
  .ml-ctbc-crosslink { align-items:flex-start; flex-direction:column; }
  .ml-ctbc-terms { padding:var(--sp-30); }
  .ml-flash-details { grid-template-columns:1fr; }
  .ml-flash-price { align-items:flex-start; flex-direction:column; }
  .ml-flash-price > p { text-align:left; }
  .ml-flash-extension > div { padding:var(--sp-40); }
  .ml-seasonal-styles,
  .ml-selection-grid { grid-template-columns: 1fr; }
  .ml-seasonal-style:last-child,
  .ml-selection-card:last-child { grid-column: auto; }
  .ml-selection-card { min-height: 0; }
  .ml-seasonal-benefits { grid-template-columns: 1fr; }
  :root { --sp-70: 4rem; --sp-60: 3rem; }
  .ml-header__inner { gap: var(--sp-20); }
  .ml-logo img { height: 32px; }
  .ml-header__cta { display: none; }
  /* 手機 header 保留兩個 lightbox 入口：探索度假村 / 最新優惠，其餘進漢堡選單 */
  .ml-nav { display: flex; margin-left: auto; gap: .5rem; }
  .ml-nav a { display: none; padding-block: 0; }
  .ml-nav__sep { display: none; }
  .ml-nav__item { display: none; }
  .ml-nav a.js-destmenu, .ml-nav a.js-offermenu { display: inline-flex; align-items: center; gap: .25em; color: #fff; font-size: var(--fs-xs); font-weight: 600; white-space: nowrap; }
  .ml-nav a.js-destmenu::after, .ml-nav a.js-offermenu::after { display: none; }
  .ml-nav__long { display: none; }
  .ml-nav__short { display: inline; }
  .ml-burger { display: grid; place-items: center; flex: 0 0 44px; width: 44px; height: 44px; background: none; border: 0; color: #fff; cursor: pointer; }
  .ml-burger span { width: 22px; height: 2px; background: currentColor; position: relative; display: block; }
  .ml-burger span::before, .ml-burger span::after { content: ""; position: absolute; left: 0; width: 22px; height: 2px; background: currentColor; }
  .ml-burger span::before { top: -7px; } .ml-burger span::after { top: 7px; }
  .ml-header.is-scrolled .ml-burger, .ml-header--solid .ml-burger { color: #fff; }
  .ml-hero__inner > * { width: 100%; }
  .ml-slider__track { grid-auto-columns: 100%; gap: 0; border-radius: var(--r-card); }
  .ml-split, .ml-split--46, .ml-split--44, .ml-split--64, .ml-room { grid-template-columns: 1fr; }
  .ml-room { gap: 0; }
  .ml-room > img,
  .ml-room > figure.wp-block-image,
  .ml-room > figure.wp-block-image img {
    width: 100%;
    height: auto;
    min-height: 0;
    aspect-ratio: 4 / 3;
    object-fit: cover;
  }
  .ml-room__body {
    position: relative;
    z-index: 1;
    padding: var(--sp-40);
    background: #fff;
  }
  .ml-speclist > div { grid-template-columns: 1fr; gap: .25rem; }
  .ml-infobar__item { padding: var(--sp-30) var(--sp-20); }
  .ml-infobar__icon { width: 40px; height: 40px; margin-bottom: .5rem; }
  .ml-infobar__icon svg { width: 32px; height: 32px; }
  .ml-infobar p { font-size: var(--fs-xs); }
  .ml-grid--3, .ml-grid--2 { grid-template-columns: 1fr; }
  .ml-feature-points { gap: var(--sp-60); padding-top: var(--sp-50); }
  .ml-feature-point__media::after { inset: .7rem -.55rem -.55rem .55rem; }
  .ml-feature-point__media span { width: 42px; height: 42px; font-size: var(--fs-sm); }
  .ml-feature-point__body h3 { font-size: var(--fs-xl); }
  .ml-gallery,
  .wp-block-gallery.has-nested-images { grid-template-columns: repeat(2, 1fr); }
  .ml-hero { min-height: 100vh; }
  .ml-hero__img { animation: none; }
  .ml-timeline { --day-badge: 72px; --day-line: 36px; padding-left: 6.25rem; }
  .ml-day__badge { left: calc(var(--day-badge) * -1 - var(--sp-30)); }
  .ml-day__body { padding: var(--sp-30); }
}
@media (max-width: 560px) {
  .ml-dual-route,.ml-dubai-highlights { grid-template-columns:1fr; }
  .ml-dual-route article:last-child,.ml-dubai-highlight--wide { grid-column:auto; }
  .ml-dubai-highlight--wide { grid-template-columns:1fr; grid-template-rows:auto 1fr!important; }
  /* 橫幅卡（沙漠日落）在桌機是左圖右文，圖片用 height:100% 撐滿欄高。
     疊成一欄後圖片自己一列，height:100% 會蓋掉下面的 aspect-ratio 把圖拉長，
     所以要一起把高度放掉。 */
  .ml-dubai-highlight--wide img { height:auto; aspect-ratio:16 / 10; }
  .ml-wedding-package { grid-template-columns:1fr; }
  .ml-wedding-package article:last-child { grid-column:auto; }
  .ml-wedding-process-media { display:block; }
  .ml-wedding-process-media img { min-height:0; aspect-ratio:4 / 3; }
  .ml-wedding-process-media img:nth-child(2) { display:none; }
  .ml-wedding-process-media figcaption { padding-inline:0; }
  .ml-wedding-page .ml-hero::after { background:linear-gradient(180deg,rgba(5,36,55,.12),rgba(5,36,55,.88) 62%); }
  .ml-wedding-page .ml-hero__img { object-position:28% center; }
  .ml-resort-facts { grid-template-columns: 1fr; }
  .ml-resort-facts > div { border-right: 0; border-bottom: 1px solid var(--c-gray-300); }
  .ml-resort-facts > div:nth-child(3) { border-bottom: 1px solid var(--c-gray-300); }
  .ml-resort-facts > div:last-child { border-bottom: 0; }
  .ml-grid--4 { grid-template-columns: 1fr; }
  .ml-stats, .ml-steps { grid-template-columns: 1fr 1fr; }
  .ml-footer__grid { grid-template-columns: 1fr; }
  .ml-timeline { padding-left: 0; }
  .ml-timeline::before { display: none; }
  .ml-day { padding-bottom: var(--sp-30); }
  .ml-day__badge { position: relative; left: auto; top: auto; width: max-content; height: auto; min-height: 36px; flex-direction: row; align-items: center; gap: .65rem; border-radius: 999px; padding: .4rem .9rem; margin-bottom: .75rem; box-shadow: none; }
  .ml-day__badge .d { font-size: .7rem; letter-spacing: .08em; }
  .ml-day__badge .n { min-width: .8em; font-size: .9rem; text-align: center; }
  .ml-day__body { padding: var(--sp-30); }
  .ml-day__extra { display: grid; gap: .5rem; }
  .ml-day-spots__grid { grid-template-columns: 1fr; }
}

/* 小尺寸手機（iPhone SE / 13 mini 等）：logo 再縮一階，header 兩個入口才不會被擠掉。
   必須排在 768px 那段之後，否則同權重會被後面的 .ml-logo img 蓋回去。 */
@media (max-width: 390px) {
  .ml-logo img { height: 28px; }
  .ml-nav { gap: .35rem; }
  .ml-header__inner { gap: .5rem; }
}

/* =========================================================================
   WordPress 整合調整
   ========================================================================= */
/* 管理列 sticky header 位移 */
.admin-bar .ml-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .ml-header { top: 46px; } }
.admin-bar .ml-hero { margin-top: calc((var(--header-h) + 32px) * -1); }
@media (max-width: 782px) { .admin-bar .ml-hero { margin-top: calc((var(--header-h) + 46px) * -1); } }

/* 主容器不加預設 padding，交給 .ml-wide */
.wp-site-blocks > main { margin-block: 0; }

/* 單頁本文（post-content）維持窄欄可讀寬度並置中 */
.ml-post-body { padding-block: var(--sp-60); }
.ml-post-body .ml-content > * + * { margin-top: var(--sp-40); }
.ml-post-body img { border-radius: var(--r-sm); }
.ml-post-toc {
  padding: 1.2rem 1.5rem;
  border: 1px solid var(--c-gray-300);
  border-radius: 12px;
  background: var(--c-gray-100);
}
.ml-post-toc__label { display: block; margin-bottom: .6rem; color: var(--c-accent-700); font-size: var(--fs-sm); font-weight: 700; letter-spacing: .08em; }
.ml-post-toc ol { display: flex; flex-direction: column; gap: .45rem; margin: 0; padding-left: 1.3rem; }
.ml-post-toc li { margin: 0; line-height: 1.6; }
.ml-post-toc a { color: var(--c-accent); text-decoration: none; }
.ml-post-toc a:hover,
.ml-post-toc a:focus-visible { color: var(--c-secondary-700); text-decoration: underline; }
.ml-post-toc__details { margin-top: .45rem; }
.ml-post-toc__details summary { display: inline-flex; align-items: center; gap: .35rem; color: var(--c-gray); font-size: var(--fs-sm); cursor: pointer; list-style: none; user-select: none; }
.ml-post-toc__details summary::-webkit-details-marker { display: none; }
.ml-post-toc__details summary::after { content: "▾"; font-size: .85em; transition: transform .2s ease; }
.ml-post-toc__details[open] summary::after { transform: rotate(180deg); }
.ml-post-toc__details summary:hover,
.ml-post-toc__details summary:focus-visible { color: var(--c-accent-700); }
.ml-post-toc__details > ol { margin-top: .45rem; }
.ml-post-body h2 { scroll-margin-top: calc(var(--header-h) + var(--sp-30)); }

/* 費用不含清單改用 ✗ 樣式 */
.ml-incl.no .ml-check li::before { content: "✗"; background: #F3E4CC; color: var(--c-secondary-700); }

/* 一般內容頁（solid header）主體留白 */
.ml-page { padding-block: var(--sp-60) var(--sp-70); }
.ml-page__head { text-align: center; margin-bottom: var(--sp-50); }

/* 彙整 / 列表頁 grid */
.ml-archive-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-40); }
@media (max-width: 1024px) { .ml-archive-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 768px) { .ml-archive-grid { grid-template-columns: 1fr; } }

/* 相簿在 WP 內以 figure/連結包覆時維持比例 */
.ml-gallery figure { margin: 0; }

/* 房型 / 餐廳卡片改用核心 image 區塊（figure 包裹）後的版面修正 */
.ml-room > figure.wp-block-image { margin: 0; height: 100%; }
.ml-room > figure.wp-block-image img { width: 100%; height: 100%; object-fit: cover; min-height: 220px; border-radius: 0; }
.ml-card__media > figure.wp-block-image { margin: 0; }
.ml-card__media > figure.wp-block-image img { border-radius: 0; }
.ml-room__body .ml-specs { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 1rem; margin-top: var(--sp-30); }
.ml-room__body .ml-specs li { line-height: 1.5; font-size: var(--fs-xs); color: var(--c-gray); background: var(--c-gray-100); border-radius: 8px; padding: .3rem .7rem; margin: 0; }

/* WP 核心區塊在本文內的基本樣式對齊 */
.ml-post-body .wp-block-image img { border-radius: var(--r-sm); }
.ml-post-body .wp-block-table {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.ml-post-body .wp-block-table table { min-width: 640px; }
@media (max-width: 680px) {
  .ml-post-body .wp-block-table table { min-width: 560px; }
}
.ml-post-body .wp-block-button__link { border-radius: 999px; }

/* Block style：Display / Eyebrow */
.is-style-display { font-family: var(--f-display); font-weight: 600; letter-spacing: .01em; }
.is-style-eyebrow { font-size: var(--fs-sm); letter-spacing: .18em; text-transform: uppercase; color: var(--c-secondary-700); font-weight: 600; }

/* query-title / 內容頁標題留白 */
.wp-block-query-title { margin-bottom: var(--sp-30); }
.ml-content > .wp-block-post-title:first-child,
.ml-content > .wp-block-heading:first-child { margin-top: 0; }

/* =========================================================================
 * 可篩選列表頁（/itinerary/、/resort/）：hero + 左側篩選側欄 + 卡片 grid。
 * ========================================================================= */
.ml-filter-head { text-align: center; max-width: 760px; margin: 0 auto var(--sp-50); }
.ml-filter-head .ml-eyebrow { margin-bottom: var(--sp-20); }
.ml-filter-title { font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.8rem); line-height: 1.15; margin: 0; text-wrap: balance; }
.ml-filter-intro { color: var(--c-gray); font-size: var(--fs-md); line-height: 1.8; margin-top: var(--sp-30); }
.ml-filter-total { margin-top: var(--sp-30); font-size: var(--fs-sm); color: var(--c-gray); }
.ml-filter-total strong { color: var(--c-accent-700); font-size: 1.1em; }

.ml-filter-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: var(--sp-50); align-items: start; }
.ml-filter-sidebar { position: sticky; top: 100px; }

.ml-filter-form { display: flex; flex-direction: column; gap: 1.1rem; padding: var(--sp-40); background: var(--c-primary); border: 1px solid var(--c-gray-300); border-radius: 16px; box-shadow: var(--sh-soft); }

.ml-filter-search { display: flex; gap: .5rem; }
.ml-filter-search input[type="search"] { flex: 1 1 auto; min-width: 0; padding: .7rem 1rem; border: 1px solid var(--c-gray-300); border-radius: 999px; font-size: var(--fs-sm); background: #fff; color: var(--c-text); transition: border-color .2s ease, box-shadow .2s ease; }
.ml-filter-search input[type="search"]:focus { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 22%, transparent); }
.ml-filter-search button { flex: 0 0 auto; padding: .7rem 1.2rem; border: none; border-radius: 999px; background: var(--c-btn); color: #fff; font-weight: 600; font-size: var(--fs-sm); cursor: pointer; transition: background .2s ease; }
.ml-filter-search button:hover { background: var(--c-btn-700); }

.ml-filter-row { display: flex; flex-direction: column; align-items: stretch; gap: .5rem; }
.ml-filter-label { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .08em; color: var(--c-gray); }
.ml-filter-select { position: relative; }
.ml-filter-select::after { content: "▾"; position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--c-accent-700); font-size: .85rem; }
.ml-filter-select select { width: 100%; min-height: 2.75rem; appearance: none; padding: .7rem 2.4rem .7rem 1rem; border: 1px solid var(--c-gray-300); border-radius: 999px; background: #fff; color: var(--c-text); font-size: var(--fs-sm); line-height: 1.3; cursor: pointer; transition: border-color .2s ease, box-shadow .2s ease; }
.ml-filter-select select:focus { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 22%, transparent); }
.ml-filter-themebar { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin: 0 0 2rem; }
.ml-filter-themebar .ml-filter-chip { padding: .5rem 1.1rem; }
@media (max-width: 700px) { .ml-filter-themebar { flex-wrap: nowrap; justify-content: flex-start; overflow-x: auto; scrollbar-width: none; margin-inline: calc(var(--pad, 1rem) * -1); padding-inline: var(--pad, 1rem); } .ml-filter-themebar::-webkit-scrollbar { display: none; } .ml-filter-themebar .ml-filter-chip { flex: 0 0 auto; } }
.ml-filter-apply { width: 100%; margin-top: .25rem; padding: .6rem 1rem; border: none; border-radius: 999px; background: var(--c-btn); color: #fff; font-weight: 600; font-size: var(--fs-sm); cursor: pointer; }
/* 側欄 chips 的字比較長（國內線轉快艇 60 分鐘以上），縮一級並禁止換行，維持一顆一行。 */
.ml-filter-sidebar .ml-filter-chip { font-size: var(--fs-xs); padding: .5rem .85rem; white-space: nowrap; }
.ml-filter-sidebar .ml-filter-chip .ml-filter-count { margin-left: .5em; }
.ml-filter-chips { display: flex; flex-direction: column; gap: .35rem; }
.ml-filter-chip { display: inline-flex; align-items: center; justify-content: space-between; gap: .4em; padding: .45rem .9rem; border: 1px solid var(--c-gray-300); border-radius: 999px; font-size: var(--fs-sm); color: var(--c-text); background: #fff; text-decoration: none; transition: border-color .2s ease, color .2s ease, background .2s ease; }
.ml-filter-chip:hover { border-color: var(--c-accent); color: var(--c-accent-700); }
.ml-filter-chip.is-active { background: var(--c-accent); border-color: var(--c-accent); color: #fff; }
.ml-filter-count { font-size: .8em; opacity: .7; }
.ml-filter-chip .ml-filter-count { margin: 0; color: inherit; }
.ml-filter-chip.is-active .ml-filter-count { opacity: .85; }

.ml-filter-more { width: 100%; }
.ml-filter-more > summary { display: inline-flex; align-items: center; gap: .3em; cursor: pointer; font-size: var(--fs-sm); color: var(--c-accent-700); font-weight: 600; margin-bottom: .35rem; list-style: none; }
.ml-filter-more > summary::-webkit-details-marker { display: none; }
.ml-filter-more > summary::after { content: "▾"; }
.ml-filter-more[open] > summary::after { content: "▴"; }

.ml-filter-clear { display: inline-block; margin-top: .25rem; font-size: var(--fs-sm); color: var(--c-gray); text-decoration: none; }
.ml-filter-clear:hover { color: var(--c-accent-700); }

/* 桌機恆展開，summary 隱藏；手機才顯示為切換鈕 */
.ml-filter-panel > summary { display: none; }

.ml-filter-results .ml-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.ml-filter-empty { text-align: center; padding: var(--sp-60) 0; color: var(--c-gray); }
.ml-filter-empty p { margin: 0 0 var(--sp-40); }
.ml-filter-empty__hint { color: var(--c-text); font-weight: 600; }
.ml-filter-empty__chips { display: flex; flex-wrap: wrap; gap: var(--sp-20); justify-content: center; margin-bottom: var(--sp-40); }

/* /resort/ 最下方的地圖入口（見 inc/archive-filter.php）。 */
.ml-filter-mapcta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-30);
  align-items: center;
  justify-content: center;
  margin-top: var(--sp-60);
  padding: var(--sp-40);
  border-top: 1px solid var(--c-gray-300);
  text-align: center;
}
.ml-filter-mapcta__text { margin: 0; max-width: 52ch; color: var(--c-gray); font-size: var(--fs-sm); line-height: 1.85; }
.ml-filter-mapcta .ml-btn { flex: 0 0 auto; }

.ml-filter-pagination { margin-top: var(--sp-60); }
.ml-filter-pagination ul { display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.ml-filter-pagination a,
.ml-filter-pagination span { display: inline-flex; align-items: center; justify-content: center; min-width: 2.4rem; height: 2.4rem; padding: 0 .6rem; border: 1px solid var(--c-gray-300); border-radius: 999px; font-size: var(--fs-sm); color: var(--c-text); text-decoration: none; transition: border-color .2s ease, color .2s ease; }
.ml-filter-pagination a:hover { border-color: var(--c-accent); color: var(--c-accent-700); }
.ml-filter-pagination .current { background: var(--c-accent); border-color: var(--c-accent); color: #fff; }
.ml-filter-pagination .dots { border: none; }

@media (max-width: 1024px) {
  .ml-filter-layout { grid-template-columns: 260px minmax(0, 1fr); gap: var(--sp-40); }
}
@media (max-width: 900px) {
  .ml-filter-layout { grid-template-columns: 1fr; gap: var(--sp-40); }
  .ml-filter-sidebar { position: static; }
  .ml-filter-panel > summary { display: inline-flex; align-items: center; gap: .4em; cursor: pointer; list-style: none; padding: .7rem 1.2rem; border: 1px solid var(--c-accent); border-radius: 999px; font-weight: 600; font-size: var(--fs-sm); color: var(--c-accent-700); background: var(--c-primary); }
  .ml-filter-panel > summary::-webkit-details-marker { display: none; }
  .ml-filter-panel > summary::after { content: "▾"; }
  .ml-filter-panel[open] > summary { margin-bottom: .8rem; }
  .ml-filter-panel[open] > summary::after { content: "▴"; }
}
@media (max-width: 600px) {
  .ml-filter-results .ml-grid--3 { grid-template-columns: 1fr; }
}

.ml-home-itin-search {
  display: grid;
  grid-template-columns: minmax(220px, 1.4fr) minmax(180px, 1fr) minmax(180px, 1fr) auto;
  gap: .75rem;
  align-items: end;
  padding: var(--sp-30);
  margin: 0 0 var(--sp-50);
  background: #fff;
  border: 1px solid var(--c-gray-300);
  border-radius: var(--r-card);
  box-shadow: var(--sh-soft);
}
.ml-home-itin-search__field { min-width: 0; }
.ml-home-itin-search label {
  display: block;
  margin-bottom: .45rem;
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: .08em;
  color: var(--c-gray);
}
.ml-home-itin-search input,
.ml-home-itin-search select {
  width: 100%;
  min-height: 3rem;
  border: 1px solid var(--c-gray-300);
  border-radius: 999px;
  background: var(--c-primary);
  color: var(--c-text);
  font-size: var(--fs-sm);
  line-height: 1.3;
}
.ml-home-itin-search input { padding: .75rem 1rem; }
.ml-home-itin-search select {
  appearance: none;
  padding: .75rem 2.35rem .75rem 1rem;
  background-image: linear-gradient(45deg, transparent 50%, var(--c-accent-700) 50%), linear-gradient(135deg, var(--c-accent-700) 50%, transparent 50%);
  background-position: calc(100% - 1.15rem) 1.3rem, calc(100% - .82rem) 1.3rem;
  background-size: .38rem .38rem, .38rem .38rem;
  background-repeat: no-repeat;
}
.ml-home-itin-search input:focus,
.ml-home-itin-search select:focus {
  outline: none;
  border-color: var(--c-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 20%, transparent);
}
.ml-home-itin-search__submit {
  min-height: 3rem;
  padding: 0 1.45rem;
  border: 0;
  border-radius: 999px;
  background: var(--c-accent);
  color: #fff;
  font-size: var(--fs-sm);
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
  transition: background .2s ease, transform .2s ease;
}
.ml-home-itin-search__submit:hover {
  background: var(--c-accent-700);
  transform: translateY(-1px);
}

@media (max-width: 960px) {
  .ml-home-itin-search { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ml-home-itin-search__field--kw,
  .ml-home-itin-search__submit { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .ml-sec-itineraries .ml-row-head {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--sp-20);
    align-items: start;
    margin-bottom: var(--sp-35);
  }
  .ml-sec-itineraries .ml-section-head {
    min-width: 0;
  }
  .ml-sec-itineraries .ml-section-head .ml-eyebrow {
    font-size: .72rem;
    letter-spacing: .16em;
    margin-bottom: .55rem;
  }
  .ml-sec-itineraries .ml-section-head .ml-display {
    font-size: clamp(2.15rem, 11vw, 3.05rem);
    line-height: 1.08;
  }
  .ml-sec-itineraries .ml-row-head .ml-btn {
    justify-self: start;
    min-height: 3.2rem;
    padding: .75rem 1.35rem;
    white-space: nowrap;
  }
  .ml-home-itin-search {
    grid-template-columns: 1fr;
    gap: .85rem;
    padding: var(--sp-20);
    margin-bottom: var(--sp-40);
    border-radius: 14px;
  }
  .ml-home-itin-search__field--kw,
  .ml-home-itin-search__submit { grid-column: auto; }
  .ml-home-itin-search label {
    margin-bottom: .35rem;
    letter-spacing: .04em;
  }
  .ml-home-itin-search input,
  .ml-home-itin-search select,
  .ml-home-itin-search__submit {
    min-height: 2.85rem;
    font-size: .95rem;
  }
  .ml-local-filter {
    flex-wrap: nowrap;
    overflow-x: auto;
    align-items: center;
    margin-top: calc(var(--sp-20) * -1);
    margin-bottom: var(--sp-50);
    padding: .75rem;
    scrollbar-width: thin;
  }
  .ml-local-filter::before {
    position: sticky;
    left: 0;
    z-index: 1;
    align-self: stretch;
    display: inline-flex;
    align-items: center;
    margin-right: .15rem;
    padding: 0 .7rem 0 .15rem;
    background: #fff;
    white-space: nowrap;
  }
  .ml-local-filter__chip {
    flex: 0 0 auto;
    min-height: 2.4rem;
  }
}

/* Topic-page responsive rules must come after the desktop component rules. */
@media (max-width: 1024px) {
  .ml-family-group .ml-theme-resort > img,
  .ml-family-group .ml-theme-resort__body { grid-column: 1; grid-row: auto; }
  .ml-family-group .ml-theme-resort__body .en,
  .ml-family-group .ml-theme-resort__body h3 { max-width: none; }
  .ml-family-group .ml-theme-resort__body h3 { white-space: normal; }
  .ml-family-price__line { justify-content: flex-start; }
  .ml-family-offer { grid-template-columns: 1fr; }
  .ml-honeymoon-page .ml-family-group .ml-theme-resort { grid-template-columns: 1fr; }
  .ml-sales-theme-page .ml-theme-resort { grid-template-columns: 1fr; }
  .ml-sales-theme-page .ml-family-link { position: static; margin-top: var(--sp-30); }
  .ml-honeymoon-page .ml-family-link { position: static; order: 5; align-self: flex-start; margin-top: var(--sp-30); }
  .ml-honeymoon-page .ml-family-intro { padding-right: 0; }
  .ml-honeymoon-offers { grid-template-columns: 1fr; }
  .ml-family-group .ml-family-price { min-width: 0; margin-top: var(--sp-20); text-align: left; }
  .ml-family-group .ml-family-link { position: static; margin-top: var(--sp-30); }
  .ml-family-profile { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ml-theme-resort,
  .ml-theme-resort--feature,
  .ml-allinclusive-page #recommended .ml-theme-resort--feature { grid-template-columns: 1fr; }
  /* 疊成一欄後圖片自己佔一列。桌機版為了左右分欄給的 height:100% 與卡片 min-height
     這時會一起把圖撐到整張卡的高度，文字被擠出畫面。高度交還給 aspect-ratio，
     卡片也不必再為了對齊左右兩欄而撐高。 */
  .ml-theme-resort > img,
  .ml-family-group .ml-theme-resort > img { height: auto; min-height: 0; align-self: start; aspect-ratio: 16 / 9; }
  .ml-theme-resort,
  .ml-theme-resort--feature,
  .ml-family-group .ml-theme-resort,
  .ml-ctbc-page #resorts .ml-theme-resort,
  .ml-spring-page #resorts .ml-theme-resort,
  .ml-allinclusive-page #recommended .ml-theme-resort { min-height: 0; }
}

@media (max-width: 640px) {
  .ml-family-reel { min-height: 460px; }
  .ml-theme-resorts { grid-template-columns: 1fr; }
  .ml-family-profile { grid-template-columns: 1fr; }
  .ml-family-profile > div { min-height: 0; }
  .ml-theme-checklist li { grid-template-columns: auto 1fr; }
  .ml-theme-checklist li span { grid-column: 2; }
}

/* 首頁航班規劃底下的雙國旅遊帶：杜拜照片＋一段說明＋兩個入口。
   圖切齊卡片左邊（padding 掛在文字與按鈕上，不在外框），照片才不會浮在白框中間。 */
.ml-multi-country { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.5fr) minmax(210px, .7fr);
  align-items: center; gap: 0 var(--sp-50); margin-top: var(--sp-50);
  border: 1px solid var(--c-gray-300); border-radius: var(--r-card);
  background: #fff; overflow: hidden; text-align: left; }
.ml-multi-country__img { display: block; width: 100%; height: 100%; min-height: 220px; object-fit: cover; }
.ml-multi-country__body { padding: clamp(1.6rem, 3vw, 2.4rem) 0; }
.ml-multi-country h3 { margin: 0 0 .7rem; font-size: var(--fs-lg); }
.ml-multi-country p { margin: 0; color: var(--c-gray); line-height: 1.9; }
.ml-multi-country__actions { display: flex; flex-wrap: wrap; gap: .75rem;
  padding: 0 clamp(1.6rem, 3vw, 2.4rem) 0 0; }
@media (max-width: 900px) {
  .ml-multi-country { grid-template-columns: 1fr; gap: 0; }
  .ml-multi-country__img { min-height: 0; aspect-ratio: 16 / 9; }
  .ml-multi-country__body { padding: clamp(1.4rem, 5vw, 2rem) clamp(1.4rem, 5vw, 2rem) 0; }
  .ml-multi-country__actions { padding: clamp(1.2rem, 4vw, 1.6rem) clamp(1.4rem, 5vw, 2rem) clamp(1.4rem, 5vw, 2rem); }
}

/* ---------- embed 模式（?mapview=1，被地圖的 lightbox 以 iframe 嵌入）----------
   收掉 header、footer 與浮動聯絡鈕：在一個彈出視窗裡再放一整套網站外框，使用者
   會分不清自己在哪一層。錨點導覽也收掉，那是給整頁瀏覽用的（sticky 在 iframe 裡
   還會跑位）。底部的 CTA 同理——這個彈窗是用來「一家一家比」的，每關掉一家就看
   一次「讓旅遊規劃師幫你比較」只會擋路；要洽詢的人從度假村頁本身或站上其他入口
   進來。 */
body.ml-embed header.wp-block-template-part,
body.ml-embed footer.wp-block-template-part,
body.ml-embed #fcp-root,
body.ml-embed .ml-anchornav,
body.ml-embed .ml-cta { display: none !important; }

body.ml-embed { padding-top: 0 !important; }
body.ml-embed .ml-main { padding-top: var(--sp-30, 1rem); }
