/*
 * 安妮公主花園 - WordPress 預約頁與交通頁樣式
 * Version: 2026-06-14-blog-signup-shortcode
 * 由主題 get_header() 載入；避免覆蓋主題 header/footer。
 */

@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@300;400;500;700&family=Noto+Sans+TC:wght@300;400;500&display=swap');

html { scroll-behavior:smooth; }

:root {
  --rose-dark:   #D8889E;   /* 嫩玫瑰 — header/footer */
  --rose-mid:    #E8A8BC;   /* 中嫩粉 */
  --rose:        #F2C4D2;   /* 主嫩粉 */
  --rose-light:  #F8DAE4;   /* 淡嫩粉 */
  --rose-pale:   #FCF0F5;   /* 極淡粉 */
  --rose-hint:   #FFFBFD;   /* 幾乎白 */
  --cream:       #FFFEFB;   /* 背景純白 */
  --warm-white:  #FFFFFF;
  --gold:        #C4904A;
  --gold-light:  #E0BC80;
  --text-dark:   #4A2838;   /* 深色文字 */
  --text-mid:    #B07890;   /* 中色文字 */
  --text-soft:   #D8AABE;   /* 柔色文字 */
  --leaf:        #4A7840;
  --leaf-light:  #80AA70;
}

/* ===== HERO ===== */
.hero {
  position:relative; height:100vh; min-height:600px;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  overflow:hidden;
}
/* 輪播 slides */
.hero-slide {
  position:absolute; inset:0;
  background-size:cover; background-position:center 30%;
  opacity:0;
  transition: opacity 1.6s ease;
  transform: scale(1.0);
}
.hero-slide.active {
  opacity:1;
  animation: heroZoom 8s ease forwards;
}
@keyframes heroZoom {
  from { transform: scale(1.0); }
  to   { transform: scale(1.07); }
}
/* 底部導覽點 */
.hero-dots {
  position:absolute; bottom:22px; left:50%; transform:translateX(-50%);
  display:flex; gap:8px; z-index:10;
}
.hero-dot {
  width:7px; height:7px; border-radius:50%;
  background:rgba(255,255,255,0.45); border:none; padding:0; cursor:pointer;
  transition: background .3s, transform .3s;
}
.hero-dot.on { background:rgba(255,255,255,0.95); transform:scale(1.3); }
.hero-overlay {
  position:absolute; inset:0;
  background: linear-gradient(to bottom, transparent 60%, rgba(30,5,15,0.18) 100%);
}
.hero-content { position:relative; z-index:2; text-align:center; padding:0 24px; }
.hero-logo-wrap { margin-bottom:22px; display:flex; justify-content:center; }
.hero-logo { height:88px; object-fit:contain; filter:none; opacity:.95; }
.hero-logo-text-fallback {
  font-family:'Noto Serif TC',serif; font-size:clamp(1.8rem,5vw,2.6rem);
  color:white; letter-spacing:0.12em;
  text-shadow:0 2px 12px rgba(0,0,0,.65);
}
.hero-divider {
  display:flex; align-items:center; justify-content:center;
  gap:14px; margin-bottom:18px;
}
.hero-div-line { width:50px; height:1px; background:rgba(255,255,255,0.6); }
.hero-div-icon { color:white; font-size:.9rem; text-shadow:0 1px 6px rgba(0,0,0,.4); }
.hero-tagline {
  font-family:'Noto Serif TC',serif;
  font-size:clamp(1.6rem,4vw,2.4rem); font-weight:400;
  color:white; letter-spacing:0.08em; line-height:1.55;
  margin-bottom:12px;
  text-shadow:0 2px 12px rgba(0,0,0,.65), 0 1px 3px rgba(0,0,0,.8);
}
.hero-sub {
  color:rgba(255,255,255,.9); font-size:.95rem; letter-spacing:.18em; margin-bottom:32px;
  text-shadow:0 1px 8px rgba(0,0,0,.6), 0 2px 16px rgba(0,0,0,.4);
}
/* Hero inline steps */
.hero-steps { display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-bottom:28px; }
.hero-step {
  display:block;
  background:rgba(255,255,255,0.22);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,0.35);
  border-radius:16px;
  padding:16px 18px;
  width:160px;
  text-align:center;
  transition:transform .2s, background .2s;
  text-decoration:none;
  cursor:pointer;
}
.hero-step:hover { transform:translateY(-3px); background:rgba(255,255,255,0.30); }
.hero-step-num {
  width:36px; height:36px; border-radius:50%;
  background:linear-gradient(135deg, rgba(232,168,188,0.9), rgba(184,52,96,0.85));
  color:white; font-size:1rem; font-weight:500;
  display:flex; align-items:center; justify-content:center;
  margin:0 auto 10px;
  box-shadow:0 2px 10px rgba(0,0,0,.18);
}
.hero-step-title {
  display:block;
  font-family:'Noto Serif TC',serif;
  font-size:.9rem; font-weight:500;
  color:white; margin-bottom:5px;
  text-shadow:0 1px 6px rgba(0,0,0,.3);
}
.hero-step-desc {
  display:block;
  font-size:.72rem; color:rgba(255,255,255,.82);
  line-height:1.6;
  text-shadow:0 1px 4px rgba(0,0,0,.25);
}
#service-dining,
#service-seasonal,
#service-group,
#service-online { scroll-margin-top:110px; }
.scroll-anchor {
  display:block;
  height:0;
  overflow:hidden;
  scroll-margin-top:110px;
}
.hero-cta-wrap { display:flex; gap:14px; flex-wrap:wrap; justify-content:center; }
.hero-cta {
  display:inline-flex; align-items:center; gap:8px;
  backdrop-filter:blur(8px);
  color:white;
  padding:14px 36px; border-radius:36px; font-weight:500; font-size:.95rem;
  letter-spacing:.06em; text-decoration:none; transition:all .25s;
  box-shadow:0 4px 20px rgba(0,0,0,.2);
  border:1px solid rgba(255,255,255,.3);
}
.hero-cta.cta-pink {
  background:linear-gradient(135deg, rgba(232,168,188,0.92), rgba(184,52,96,0.9));
}
.hero-cta.cta-green {
  background:linear-gradient(135deg, rgba(100,160,70,0.95), rgba(54,110,38,0.95));
}
.hero-cta:hover { transform:translateY(-2px); box-shadow:0 8px 28px rgba(0,0,0,.3); }
.hero-cta-phone {
  margin-top:12px; font-size:.82rem;
  color:white;
  letter-spacing:.06em;
  text-shadow:0 1px 8px rgba(0,0,0,.7), 0 2px 16px rgba(0,0,0,.5);
}

/* ===== HERO INTRO LOGO ANIMATION ===== */
.annie-booking-page #heroIntro {
  display: none !important;
}
.annie-booking-page #heroIntro::before {
  content:''; position:absolute; inset:0;
  background: radial-gradient(ellipse at 50% 45%, rgba(255,220,235,0.6) 0%, transparent 65%);
  pointer-events:none;
}
.annie-booking-page #heroIntro.fading { opacity: 0; pointer-events: none; }
.annie-booking-page #heroIntro.gone { display: none; }
.annie-booking-page #introLogo {
  width: min(520px, 72vw);
  aspect-ratio: 2300 / 558;
  display: block;
  background-color: transparent;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  transform-origin: center center;
  will-change: transform, opacity;
  opacity: 0;
  position: relative; z-index: 1;
  backface-visibility: hidden;
  filter: none;
  animation: introAppear 0.9s cubic-bezier(0.22,1,0.36,1) 0.2s forwards;
}
@keyframes introAppear {
  from { opacity:0; transform:scale(0.88) translateY(14px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}
/* Hero content + logo hidden until intro finishes */
.annie-booking-page .hero-content { opacity: 1; transform: translateY(0);
  transition: opacity 1s ease 0.2s, transform 1s ease 0.2s; }
.annie-booking-page .hero-content.intro-done { opacity: 1; transform: translateY(0); }
/* Hero top logo (in hero content, shows after intro) */
.hero-logo-wrap-top {
  display: flex; justify-content: center; margin-bottom: 16px;
}
.hero-logo-top {
  height: 80px; object-fit: contain;
  filter:
    drop-shadow(0 0 6px rgba(255,255,255,1))
    drop-shadow(0 0 14px rgba(255,255,255,0.9))
    drop-shadow(0 0 28px rgba(255,255,255,0.7))
    drop-shadow(0 0 48px rgba(255,255,255,0.4));
}
/* hero-scroll removed — replaced by hero-dots */

/* ===== PHOTO STRIP ===== */
.photo-strip { display:grid; grid-template-columns:repeat(4,1fr); height:250px; overflow:hidden; }
.strip-item { position:relative; overflow:hidden; }
.strip-item img { width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.strip-item:hover img { transform:scale(1.07); }
.strip-item::after {
  content:''; position:absolute; inset:0;
  background:linear-gradient(to top, rgba(100,20,40,.55) 0%, transparent 55%);
}
.strip-label {
  position:absolute; bottom:13px; left:15px; z-index:1;
  color:white; font-size:.8rem; letter-spacing:.1em;
  text-shadow:0 1px 8px rgba(0,0,0,.55);
}

/* ===== SEASONAL ACTS ===== */
.sact-section {
  display: none !important;
  background: var(--rose-hint);
  padding: 72px 20px 64px;
  border-top: 1px solid rgba(212,84,124,.08);
}
.sact-outer { max-width: 420px; margin: 0 auto; }
.sact-video-col { width: 100%; }
.sact-video-col .sact-video-frame { position: relative; padding-bottom: 177.78%; height: 0; border-radius: 16px; overflow: hidden; box-shadow: 0 8px 32px rgba(140,32,64,.18); }
.sact-video-col .sact-video-frame iframe { position: absolute; top: -8%; left: 0; width: 100%; height: 116%; border: 0; }
.sact-wrap { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 32px; }
@media(max-width:900px){ .sact-video-col .sact-video-frame { padding-bottom: 177.78%; max-width: 280px; margin: 0 auto; } }
.sact-card {
  background: white; border-radius: 24px;
  box-shadow: 0 4px 28px rgba(140,32,64,.09);
  border: 1px solid rgba(212,84,124,.09);
  display: grid; grid-template-columns: 380px 1fr;
  overflow: hidden; transition: transform .25s, box-shadow .25s;
}
.sact-card:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(140,32,64,.14); }
.sact-card.reverse { grid-template-columns: 1fr 380px; }
.sact-card.reverse .sact-img { order: 2; }
.sact-card.reverse .sact-body { order: 1; }
.sact-img {
  position: relative; overflow: hidden;
  background: var(--rose-pale);
  min-height: 320px;
}
.sact-img img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .6s ease;
}
.sact-card:hover .sact-img img { transform: scale(1.05); }
.sact-num {
  position: absolute; top: 18px; left: 18px;
  width: 44px; height: 44px; border-radius: 50%;
  background: rgba(255,255,255,.88); backdrop-filter: blur(8px);
  color: var(--rose-dark); font-family: Georgia, serif;
  font-size: 1.1rem; font-style: italic; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 12px rgba(0,0,0,.12);
}
.sact-card.reverse .sact-num { left: auto; right: 18px; }
.sact-body {
  padding: 36px 36px 32px;
  display: flex; flex-direction: column; justify-content: center;
}
.sact-icon { font-size: 1.5rem; margin-bottom: 10px; }
.sact-title {
  font-family: 'Noto Serif TC', serif;
  font-size: clamp(1.3rem, 2.5vw, 1.7rem); font-weight: 400;
  color: var(--text-dark); letter-spacing: .04em; margin-bottom: 4px;
  line-height: 1.4;
}
.sact-title em { font-style: italic; color: var(--rose-dark); font-weight: 500; }
.sact-en {
  font-size: .72rem; letter-spacing: .3em; color: var(--rose-mid);
  text-transform: uppercase; margin-bottom: 16px;
}
.sact-desc {
  font-size: .87rem; color: #777; line-height: 1.9;
  margin-bottom: 18px;
}
.sact-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.sact-tag {
  font-size: .75rem; padding: 4px 13px; border-radius: 14px;
  display: inline-flex; align-items: center; gap: 5px;
}
.tag-date     { background: rgba(212,84,124,.08);  color: var(--rose-dark); }
.tag-type     { background: rgba(120,60,160,.07);  color: #7030a0; }
.tag-price    { background: rgba(60,120,80,.07);   color: #2a6040; }
.sact-actions { display: flex; align-items: center; gap: 16px; }
.btn-sact {
  display: inline-flex; align-items: center; gap: 7px;
  background: linear-gradient(135deg, var(--rose-mid), var(--rose-dark));
  color: white; padding: 11px 24px; border-radius: 28px;
  font-size: .88rem; font-weight: 500; letter-spacing: .03em;
  text-decoration: none; border: none; cursor: pointer;
  transition: all .22s; box-shadow: 0 3px 14px rgba(184,52,96,.3);
}
.btn-sact:hover { transform: translateY(-2px); box-shadow: 0 7px 22px rgba(184,52,96,.42); }
.link-detail {
  font-size: .85rem; color: var(--rose-mid); text-decoration: none;
  letter-spacing: .04em; border-bottom: 1px solid rgba(212,84,124,.3);
  transition: color .2s, border-color .2s;
}
.link-detail:hover { color: var(--rose-dark); border-color: var(--rose-dark); }
@media(max-width: 780px) {
  .sact-card, .sact-card.reverse { grid-template-columns: 1fr; }
  .sact-card.reverse .sact-img { order: 0; }
  .sact-card.reverse .sact-body { order: 1; }
  .sact-img { min-height: 220px; }
  .sact-card.reverse .sact-num { left: 18px; right: auto; }
  .sact-body { padding: 26px 24px; }
}

/* ===== SECTION COMMON ===== */
.section-wrap { max-width:920px; margin:0 auto; padding:60px 20px; }
.eyebrow {
  text-align:center; font-size:.72rem; letter-spacing:.35em;
  color:var(--rose); text-transform:uppercase; margin-bottom:9px;
}
.section-heading {
  text-align:center; font-family:'Noto Serif TC',serif;
  font-size:clamp(1.4rem,3.5vw,2rem); font-weight:400;
  color:var(--rose-dark); margin-bottom:6px; letter-spacing:.05em;
}
.section-sub { text-align:center; font-size:.72rem; letter-spacing:.3em; color:var(--text-soft); text-transform:uppercase; margin-bottom:36px; }
.ornament { display:flex; align-items:center; justify-content:center; gap:12px; margin-bottom:38px; }
.orn-line  { width:40px; height:1px; background:var(--rose-pale); }
.orn-diam  { width:6px; height:6px; background:var(--rose-mid); transform:rotate(45deg); }

/* ===== STEPS SECTION ===== */
.steps-section {
  background: linear-gradient(180deg, var(--rose-pale) 0%, #fff5f8 100%);
  padding: 72px 20px 64px;
  border-top: 1px solid rgba(212,84,124,.08);
  border-bottom: 1px solid rgba(212,84,124,.08);
}
.steps-heading {
  text-align:center;
  font-family:'Noto Serif TC',serif;
  font-size:clamp(2rem,5vw,2.8rem);
  font-weight:300;
  color:var(--text-dark);
  margin-bottom:6px;
  letter-spacing:.04em;
}
.steps-heading em {
  font-style:italic;
  color:var(--rose-dark);
  font-weight:500;
}
.steps-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:18px;
  max-width:920px;
  margin:42px auto 0;
  position:relative;
}
.steps-grid::before {
  content:'';
  position:absolute;
  top:36px; left:calc(12.5% + 18px); right:calc(12.5% + 18px);
  height:1.5px;
  background:linear-gradient(to right, var(--rose-light), var(--rose-mid), var(--rose-light));
  border-top:1.5px dashed var(--rose-light);
  background:none;
  z-index:0;
}
.step-card {
  background:white;
  border-radius:20px;
  padding:32px 20px 26px;
  text-align:center;
  box-shadow:0 4px 22px rgba(140,32,64,.08);
  border:1px solid rgba(212,84,124,.1);
  position:relative;
  z-index:1;
  transition:transform .25s, box-shadow .25s;
}
.step-card:hover { transform:translateY(-5px); box-shadow:0 10px 32px rgba(140,32,64,.14); }
.step-num {
  width:52px; height:52px; border-radius:50%;
  background:linear-gradient(135deg, var(--rose-mid) 0%, var(--rose-dark) 100%);
  color:white; font-size:1.3rem; font-weight:500;
  display:flex; align-items:center; justify-content:center;
  margin:0 auto 18px;
  box-shadow:0 4px 14px rgba(184,52,96,.35);
}
.step-title {
  font-family:'Noto Serif TC',serif;
  font-size:1.1rem; font-weight:500;
  color:var(--text-dark); margin-bottom:10px;
  letter-spacing:.04em;
}
.step-desc {
  font-size:.83rem; color:#888;
  line-height:1.85; letter-spacing:.02em;
}
.steps-cta-wrap {
  text-align:center; margin-top:44px;
}
.steps-cta {
  display:inline-flex; align-items:center; gap:8px;
  background:linear-gradient(135deg, var(--rose-mid) 0%, var(--rose-dark) 100%);
  color:white; padding:15px 40px; border-radius:36px;
  font-size:1rem; font-weight:500; letter-spacing:.06em;
  text-decoration:none; transition:all .25s;
  box-shadow:0 4px 20px rgba(184,52,96,.38);
}
.steps-cta:hover { transform:translateY(-2px); box-shadow:0 8px 28px rgba(184,52,96,.5); }
.steps-phone {
  margin-top:16px; font-size:.85rem;
  color:var(--text-mid); letter-spacing:.06em;
}
@media(max-width:700px){
  .steps-grid { grid-template-columns:repeat(2,1fr); }
  .steps-grid::before { display:none; }
}
@media(max-width:400px){
  .steps-grid { grid-template-columns:1fr; }
}

/* ===== ACTIVITIES GRID ===== */
.act-bg { background:var(--warm-white); border-top:1px solid rgba(212,84,124,.1); border-bottom:1px solid rgba(212,84,124,.1); }
.act-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:22px; }
.act-card {
  background:white; border-radius:18px; overflow:hidden;
  box-shadow:0 3px 18px rgba(140,32,64,.08); border:1px solid rgba(0,0,0,.05);
  transition:transform .25s, box-shadow .25s;
}
.act-card:hover { transform:translateY(-4px); box-shadow:0 10px 30px rgba(140,32,64,.14); }
.act-card-img { position:relative; height:180px; overflow:hidden; background:var(--rose-dark); }
.act-card-img img { width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.act-card:hover .act-card-img img { transform:scale(1.06); }
.act-card-tag {
  position:absolute; top:11px; right:11px;
  background:rgba(30,5,15,.7); backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.2); color:white;
  font-size:.72rem; padding:4px 11px; border-radius:14px;
}
.act-card-bar { position:absolute; bottom:0; left:0; right:0; height:4px; }
.bar-firefly   { background:linear-gradient(to right,#c8dc1e,#90aa00); }
.bar-tree      { background:linear-gradient(to right,#6ab454,#3a8030); }
.bar-princess  { background:linear-gradient(to right,var(--rose),var(--rose-dark)); }
.bar-forest    { background:linear-gradient(to right,#5ab4bc,#2a8090); }
.act-card-body { padding:20px; }
.act-icon-row  { display:flex; align-items:center; gap:9px; margin-bottom:8px; }
.act-icon      { font-size:1.4rem; }
.act-title     { font-family:'Noto Serif TC',serif; font-size:1.04rem; font-weight:500; color:var(--rose-dark); }
.act-date-tag  {
  display:inline-flex; align-items:center; gap:5px;
  font-size:.78rem; color:var(--rose-mid);
  background:rgba(212,84,124,.08); padding:4px 12px; border-radius:14px; margin-bottom:10px;
}
.act-desc { font-size:.84rem; color:#777; line-height:1.75; }

/* ===== LEGEND BAR ===== */
.legend-bar { background:var(--rose-dark); padding:16px 20px; }
.legend-inner { max-width:920px; margin:0 auto; display:flex; flex-wrap:wrap; justify-content:center; gap:20px; }
.leg-item { display:flex; align-items:center; gap:8px; color:rgba(255,255,255,.75); font-size:.82rem; }
.leg-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
.ld-firefly  { background:#c8dc1e; box-shadow:0 0 5px rgba(200,220,30,.7); }
.ld-tree     { background:#6ab454; }
.ld-princess { background:var(--rose-light); }
.ld-forest   { background:#5ab4bc; }

/* ===== CALENDAR ===== */
.cal-section { padding:60px 20px 0; }
.cal-wrap { max-width:920px; margin:0 auto; }
.month-nav { display:flex; align-items:center; justify-content:center; gap:18px; margin-bottom:22px; }
.month-btn {
  background:none; border:1.5px solid rgba(212,84,124,.3); color:var(--rose-mid);
  width:36px; height:36px; border-radius:50%; cursor:pointer; font-size:1.1rem;
  display:flex; align-items:center; justify-content:center; transition:all .2s;
}
.month-btn:hover { background:var(--rose); color:white; border-color:var(--rose); }
.month-label {
  font-family:'Noto Serif TC',serif; font-size:1.35rem; font-weight:400;
  color:var(--rose-dark); min-width:155px; text-align:center; letter-spacing:.05em;
}
.cal-card { background:white; border-radius:20px; box-shadow:0 4px 28px rgba(140,32,64,.1); overflow:hidden; border:1px solid rgba(212,84,124,.1); }
.cal-head { display:grid; grid-template-columns:repeat(7,1fr); background:var(--rose-dark); }
.cal-head div { text-align:center; padding:12px 4px; font-size:.74rem; letter-spacing:.08em; color:rgba(255,255,255,.65); }
.cal-head div:first-child { color:#ffbbbb; }
.cal-head div:last-child  { color:#c0d4ff; }
.cal-body { display:grid; grid-template-columns:repeat(7,1fr); }
.cal-cell {
  border:1px solid rgba(0,0,0,.04); aspect-ratio:1;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  cursor:pointer; gap:3px; padding:4px; transition:all .18s; position:relative;
}
.cal-cell:hover:not(.blank) { background:rgba(212,84,124,.07); border-radius:8px; z-index:1; }
.cal-cell.blank { cursor:default; }
.cal-cell.today .dnum { background:var(--rose-dark); color:white; width:27px; height:27px; border-radius:50%; display:flex; align-items:center; justify-content:center; }
.cal-cell.sel { background:rgba(184,52,96,.1) !important; border-radius:10px !important; border:1.5px solid var(--rose-mid) !important; }
.cal-cell.is-sun .dnum { color:#cc4444; }
.cal-cell.is-sat .dnum { color:#4466cc; }
.dnum { font-size:.87rem; font-weight:400; line-height:1; }
.ddots { display:flex; gap:2px; flex-wrap:wrap; justify-content:center; max-width:30px; }
.ddot  { width:5px; height:5px; border-radius:50%; }

/* ===== BOOKING PANEL ===== */
.bk-section { padding:36px 20px 80px; }
.bk-wrap { max-width:920px; margin:0 auto; }
.no-sel-box { background:rgba(212,84,124,.05); border:2px dashed rgba(212,84,124,.2); border-radius:20px; padding:46px 24px; text-align:center; }
.no-sel-icon { font-size:3rem; margin-bottom:14px; }
.no-sel-txt  { color:var(--text-soft); font-size:.94rem; line-height:1.85; }
.bk-header { display:flex; align-items:center; gap:13px; margin-bottom:22px; }
.bk-date-text { font-family:'Noto Serif TC',serif; font-size:1.18rem; color:var(--rose-dark); white-space:nowrap; }
.bk-count { font-size:.8rem; background:rgba(212,84,124,.1); color:var(--rose-mid); padding:4px 12px; border-radius:14px; }
.bk-div { flex:1; height:1px; background:linear-gradient(to right,rgba(212,84,124,.25),transparent); }
.bk-cards { display:flex; flex-direction:column; gap:18px; }
.bk-card {
  background:white; border-radius:18px; display:flex; overflow:hidden;
  box-shadow:0 3px 18px rgba(140,32,64,.1); border:1px solid rgba(0,0,0,.05);
  transition:transform .2s, box-shadow .2s;
}
.bk-card:hover { transform:translateY(-3px); box-shadow:0 8px 26px rgba(140,32,64,.14); }
.bk-stripe { width:5px; flex-shrink:0; }
.bk-img { width:175px; flex-shrink:0; overflow:hidden; position:relative; }
.bk-img img { width:100%; height:100%; object-fit:cover; }
.bk-img-icon { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:2.5rem; }
.bk-body { flex:1; padding:22px 22px; }
.bk-title-row { display:flex; align-items:center; gap:9px; margin-bottom:10px; }
.bk-ico  { font-size:1.45rem; }
.bk-title { font-family:'Noto Serif TC',serif; font-size:1.08rem; font-weight:500; color:var(--rose-dark); }
.bk-tags { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:13px; }
.bk-tag { font-size:.75rem; padding:3px 11px; border-radius:12px; }
.tg-period { background:#fdf0f4; color:#a03058; }
.tg-type   { background:#f8f0fd; color:#703090; }
.tg-note   { background:#f0f5fe; color:#3058a0; }
.bk-desc { font-size:.84rem; color:#777; line-height:1.8; margin-bottom:17px; }
.btn-book {
  display:inline-flex; align-items:center; gap:7px;
  padding:11px 26px; border-radius:28px; font-size:.88rem; font-weight:500;
  letter-spacing:.03em; transition:all .22s; border:none; cursor:pointer; text-decoration:none;
}
.btn-firefly   { background:#c8dc1e; color:#2a3200; box-shadow:0 3px 12px rgba(200,220,30,.3); }
.btn-firefly:hover { background:#b0c418; transform:scale(1.03); }
.btn-tree      { background:#4a8c3f; color:white; box-shadow:0 3px 12px rgba(74,140,63,.3); }
.btn-tree:hover { background:#387030; transform:scale(1.03); }
.btn-princess  { background:var(--rose); color:white; box-shadow:0 3px 12px rgba(212,84,124,.35); }
.btn-princess:hover { background:var(--rose-mid); transform:scale(1.03); }
.btn-forest    { background:#4ab0b8; color:#003040; box-shadow:0 3px 12px rgba(74,176,184,.3); }
.btn-forest:hover { background:#3a9098; transform:scale(1.03); }
.no-act-box { background:white; border-radius:20px; padding:38px 24px; text-align:center; border:1px solid rgba(0,0,0,.06); }
.no-act-ico  { font-size:2.2rem; margin-bottom:11px; }
.no-act-txt  { color:#aaa; font-size:.9rem; line-height:1.85; }

/* ===== SERVICE BOOKING ENTRANCES ===== */
.service-section {
  background: linear-gradient(180deg, var(--rose-pale) 0%, var(--warm-white) 100%);
  padding: 76px 20px 84px;
  border-top: 1px solid rgba(212,84,124,.08);
  border-bottom: 1px solid rgba(212,84,124,.08);
}
.service-layout {
  max-width: 1240px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(260px, 330px) minmax(0, 1fr);
  gap: 34px;
  align-items: start;
}
.service-video-col {
  position: sticky;
  top: 96px;
  transform: translateY(28px);
  z-index: 1;
  display: block;
  opacity: 1;
  visibility: visible;
}
.service-video-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 9 / 16;
  overflow: hidden;
  border-radius: 22px;
  background: var(--rose-dark);
  box-shadow: 0 20px 52px rgba(140,32,64,.22);
  border: 1px solid rgba(255,255,255,.72);
}
.service-video-frame iframe {
  position: absolute;
  top: -5%;
  left: 50%;
  width: 348%;
  height: 110%;
  transform: translateX(-50%);
  border: 0;
  display: block;
}
.service-wrap { max-width: 860px; margin: 0; }
.service-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.service-card {
  background: white;
  border: 1px solid rgba(212,84,124,.1);
  border-radius: 20px;
  overflow: hidden;
  min-height: 470px;
  display: flex;
  flex-direction: column;
  box-shadow: 0 4px 24px rgba(140,32,64,.08);
  transition: transform .25s, box-shadow .25s;
}
.service-card:hover { transform: translateY(-5px); box-shadow: 0 12px 34px rgba(140,32,64,.14); }
.service-img {
  position: relative;
  height: 158px;
  overflow: hidden;
  background: var(--rose-pale);
}
.service-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .5s ease;
}
.service-card:hover .service-img img { transform: scale(1.05); }
.service-content {
  padding: 22px 22px 24px;
  display: flex;
  flex: 1;
  flex-direction: column;
}
.service-icon {
  width: 54px; height: 54px; border-radius: 50%;
  background: var(--rose-pale);
  border: 1.5px solid var(--rose-light);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.6rem; margin: -49px 0 18px;
  position: relative; z-index: 1;
  box-shadow: 0 4px 18px rgba(140,32,64,.14);
}
.service-title {
  font-family: 'Noto Serif TC', serif;
  font-size: 1.16rem; font-weight: 500;
  color: var(--text-dark); letter-spacing: .04em;
  line-height: 1.45; margin-bottom: 8px;
}
.service-note {
  font-size: .82rem; color: var(--text-mid);
  line-height: 1.75; margin-bottom: 16px;
}
.service-desc {
  font-size: .84rem; color:#777;
  line-height: 1.85; margin-bottom: 16px;
}
.service-list {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-bottom: 22px;
}
.service-pill {
  font-size: .76rem; line-height: 1.35;
  padding: 5px 11px; border-radius: 16px;
  background: rgba(212,84,124,.08);
  color: var(--rose-dark);
}
.service-card:nth-child(3) .service-pill {
  background: rgba(74,120,64,.08);
  color: var(--leaf);
}
.service-actions { margin-top: auto; display: flex; flex-direction: column; gap: 10px; }
.service-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  background: linear-gradient(135deg, var(--rose-mid), var(--rose-dark));
  color: white; padding: 11px 18px; border-radius: 28px;
  font-size: .88rem; font-weight: 500; letter-spacing: .04em;
  text-decoration: none; border: none; cursor: pointer;
  font-family: 'Noto Sans TC', sans-serif;
  transition: all .22s; box-shadow: 0 3px 14px rgba(184,52,96,.28);
}
.service-btn:hover { transform: translateY(-2px); box-shadow: 0 7px 22px rgba(184,52,96,.4); }
.service-link {
  text-align: center;
  font-size: .8rem; color: var(--rose-mid);
  text-decoration: none; letter-spacing: .04em;
}
.service-consult {
  margin: 34px auto 0;
  max-width: 720px;
  background: linear-gradient(135deg, rgba(255,255,255,.96), rgba(252,240,245,.96));
  border: 1.5px solid rgba(212,84,124,.14);
  border-radius: 22px;
  padding: 24px 28px;
  display: flex; align-items: center; justify-content: space-between; gap: 22px;
  box-shadow: 0 8px 30px rgba(140,32,64,.1);
}
.service-consult-title {
  font-family: 'Noto Serif TC', serif;
  font-size: 1.16rem;
  color: var(--text-dark);
  margin-bottom: 6px;
  letter-spacing: .04em;
}
.service-consult-desc {
  font-size: .86rem;
  color: #777;
  line-height: 1.75;
}
.service-consult-btn {
  flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: linear-gradient(135deg, var(--gold), var(--gold-light));
  color: #4A2838;
  border: none; border-radius: 32px;
  padding: 13px 28px;
  font-size: .92rem; font-weight: 500; letter-spacing: .06em;
  font-family: 'Noto Sans TC', sans-serif;
  cursor: pointer; text-decoration: none;
  box-shadow: 0 4px 18px rgba(196,144,74,.28);
  transition: transform .22s, box-shadow .22s;
}
.service-consult-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 26px rgba(196,144,74,.38); }
@media(max-width: 980px) {
  .service-layout {
    grid-template-columns: 1fr;
    max-width: 860px;
    gap: 34px;
  }
  .service-video-col {
    position: relative;
    top: auto;
    transform: none;
    max-width: 360px;
    width: 100%;
    margin: 0 auto;
  }
  .service-wrap { max-width: none; }
  .service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media(max-width: 560px) {
  .service-section { padding: 56px 16px 68px; }
  .service-layout { gap: 28px; }
  .service-video-col { max-width: min(320px, 86vw); }
  .service-video-frame {
    border-radius: 18px;
    box-shadow: 0 14px 36px rgba(140,32,64,.18);
  }
  .service-video-frame iframe {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transform: none;
  }
  .service-grid { grid-template-columns: 1fr; }
  .service-card { min-height: 0; }
  .service-consult { flex-direction: column; align-items: stretch; text-align: center; }
  .service-consult-btn { width: 100%; }
}

/* ===== MODAL ===== */
.modal-bg {
  display:none; position:fixed; inset:0; z-index:500;
  background:rgba(30,5,15,.65); backdrop-filter:blur(6px);
  align-items:flex-start; justify-content:center; padding:16px;
  overflow-y:auto; -webkit-overflow-scrolling:touch;
}
.modal-bg.open { display:flex; }
.modal {
  background:white; border-radius:24px; width:100%; max-width:480px;
  box-shadow:0 20px 60px rgba(0,0,0,.25); overflow:visible;
  animation: modalIn .3s cubic-bezier(.34,1.56,.64,1); margin:auto;
}
@keyframes modalIn { from{transform:scale(.9) translateY(20px);opacity:0} to{transform:scale(1) translateY(0);opacity:1} }
.modal-header {
  padding:22px 26px 18px;
  background:linear-gradient(135deg, var(--rose-dark) 0%, var(--rose-mid) 100%);
  display:flex; justify-content:space-between; align-items:flex-start;
  border-radius:24px 24px 0 0;
}
.modal-act-name { font-family:'Noto Serif TC',serif; font-size:1.1rem; color:white; font-weight:400; }
.modal-act-date { font-size:.8rem; color:rgba(255,255,255,.7); margin-top:4px; }
.modal-close {
  background:rgba(255,255,255,.2); border:none; color:white;
  width:30px; height:30px; border-radius:50%; cursor:pointer; font-size:1.1rem;
  display:flex; align-items:center; justify-content:center; transition:background .2s; flex-shrink:0;
}
.modal-close:hover { background:rgba(255,255,255,.35); }
.modal-body { padding:24px 26px; }
.form-row { margin-bottom:16px; }
.form-label { display:block; font-size:.82rem; color:var(--text-mid); margin-bottom:6px; font-weight:400; letter-spacing:.05em; }
.form-label span { color:var(--rose); }
.form-input, .form-select, .form-textarea {
  width:100%; padding:11px 14px; border:1.5px solid rgba(212,84,124,.25);
  border-radius:12px; font-size:.9rem; color:var(--text-dark); background:var(--rose-hint);
  font-family:'Noto Sans TC',sans-serif; transition:border-color .2s, background .2s; outline:none;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  border-color:var(--rose); background:white;
  box-shadow:0 0 0 3px rgba(212,84,124,.12);
}
.form-textarea { resize:vertical; min-height:80px; }
.form-row-2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.form-helper {
  margin-top:8px;
  font-size:.78rem;
  color:var(--text-mid);
  line-height:1.6;
}
.choice-grid,
.date-choice-grid {
  display:grid;
  grid-template-columns:1fr;
  gap:9px;
  margin-top:8px;
}
.choice-btn {
  width:100%;
  border:1.5px solid rgba(212,84,124,.24);
  background:var(--rose-hint);
  color:var(--text-dark);
  border-radius:14px;
  padding:11px 13px;
  font-family:'Noto Sans TC',sans-serif;
  text-align:left;
  cursor:pointer;
  transition:background .18s, border-color .18s, box-shadow .18s, color .18s;
}
.choice-btn:hover {
  border-color:var(--rose);
  background:white;
}
.choice-btn.selected {
  border-color:var(--rose-dark);
  background:linear-gradient(135deg, rgba(216,136,158,.14), rgba(248,218,228,.72));
  box-shadow:0 0 0 3px rgba(212,84,124,.12);
}
.choice-main {
  display:block;
  font-size:.9rem;
  font-weight:500;
  line-height:1.45;
}
.choice-sub {
  display:block;
  margin-top:3px;
  font-size:.76rem;
  color:var(--text-mid);
  line-height:1.45;
}
.date-choice-grid {
  grid-template-columns:repeat(2, minmax(0, 1fr));
}
.date-choice-btn {
  text-align:center;
  padding:10px 8px;
}
.form-submit {
  width:100%; padding:13px; border-radius:28px; border:none; cursor:pointer;
  background:linear-gradient(135deg, var(--rose-mid) 0%, var(--rose-dark) 100%);
  color:white; font-size:.95rem; font-weight:500; letter-spacing:.05em;
  font-family:'Noto Sans TC',sans-serif; transition:all .22s; margin-top:4px;
  box-shadow:0 4px 16px rgba(184,52,96,.35);
}
.form-submit:hover:not(:disabled) { transform:translateY(-1px); box-shadow:0 7px 22px rgba(184,52,96,.45); }
.form-submit:disabled { opacity:.6; cursor:default; }

/* Success/Error State */
.form-result { display:none; text-align:center; padding:32px 20px; }
.form-result.show { display:block; }
.result-icon { font-size:3rem; margin-bottom:14px; }
.result-title { font-family:'Noto Serif TC',serif; font-size:1.2rem; color:var(--rose-dark); margin-bottom:8px; }
.result-msg   { font-size:.88rem; color:#888; line-height:1.75; margin-bottom:24px; }
/* Contact buttons */
.result-contacts { display:flex; flex-direction:column; gap:10px; margin:0 auto 22px; max-width:260px; }
.result-contact-btn {
  display:flex; align-items:center; gap:12px;
  padding:12px 20px; border-radius:14px; text-decoration:none;
  font-size:.88rem; font-weight:500; letter-spacing:.03em;
  transition: transform .18s, box-shadow .18s;
  box-shadow: 0 2px 10px rgba(0,0,0,.10);
}
.result-contact-btn:hover { transform:translateY(-2px); box-shadow:0 6px 18px rgba(0,0,0,.15); }
.result-contact-btn svg { width:22px; height:22px; flex-shrink:0; }
.result-contact-btn span { flex:1; text-align:left; }
.rcb-line    { background:#06C755; color:white; }
.rcb-msg     { background:#0084FF; color:white; }
.rcb-phone   { background:var(--rose-dark); color:white; }
.result-close { display:inline-flex; align-items:center; gap:6px; padding:10px 24px; border-radius:24px; background:var(--rose-pale); color:var(--rose-dark); border:none; cursor:pointer; font-size:.88rem; font-family:'Noto Sans TC',sans-serif; transition:background .2s; }
.result-close:hover { background:var(--rose-light); color:white; }

/* radio group */
.radio-group { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 6px; }
.radio-item {
  display: flex; align-items: center; gap: 7px;
  padding: 9px 18px; border-radius: 50px;
  border: 1.5px solid var(--rose); cursor: pointer;
  font-size: 0.9rem; color: var(--text-dark); transition: all .2s;
  user-select: none;
}
.radio-item.selected {
  background: var(--rose-dark); border-color: var(--rose-dark); color: white;
}
.radio-item input[type="radio"] { display: none; }
#groupModalBg .modal-header { background: linear-gradient(135deg, #243320, #4a6e38); }
#groupModalBg .form-submit { background: linear-gradient(135deg, #5c3d2e, #8a6050); }
#groupModalBg .form-submit:hover { filter: brightness(1.12); }

/* ===== VISIT SECTION ===== */
.visit-section {
  background: var(--rose-dark);
  padding: 60px 24px 56px;
}
.visit-card {
  max-width: 980px; margin: 0 auto;
  background: white; border-radius: 28px;
  box-shadow: 0 16px 56px rgba(0,0,0,.15);
  padding: 44px 48px;
  display: grid; grid-template-columns: 1fr 1fr; gap: 44px; align-items: center;
}
.visit-eyebrow {
  font-size:.68rem; letter-spacing:.26em; color:var(--text-mid);
  text-transform:uppercase; margin-bottom:12px;
}
.visit-title {
  font-family:'Noto Serif TC',serif; font-size:clamp(1.5rem,3vw,2.1rem);
  color:var(--text-dark); font-weight:400; letter-spacing:.04em;
  margin-bottom:30px;
}
.visit-info-list { display:flex; flex-direction:column; gap:22px; }
.visit-info-item { display:flex; gap:14px; align-items:flex-start; }
.visit-info-icon {
  width:36px; height:36px; border-radius:50%;
  background:var(--rose-pale); border:1.5px solid var(--rose-light);
  display:flex; align-items:center; justify-content:center;
  font-size:.95rem; flex-shrink:0; margin-top:2px;
}
.visit-info-label {
  font-size:.66rem; letter-spacing:.16em; color:var(--text-mid);
  margin-bottom:4px; text-transform:uppercase;
}
.visit-info-value {
  color:var(--text-dark); font-size:.9rem; line-height:1.85;
}
.visit-info-value a { color:var(--rose-dark); text-decoration:none; font-weight:500; }
.visit-cta {
  display:inline-flex; align-items:center; gap:8px; margin-top:28px;
  background:linear-gradient(135deg, var(--gold), var(--gold-light));
  color:#4A2838; font-weight:500; font-size:.88rem; letter-spacing:.08em;
  padding:12px 28px; border-radius:32px; text-decoration:none;
  transition:all .25s; box-shadow:0 4px 18px rgba(0,0,0,.14);
}
.visit-cta:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(0,0,0,.2); }
/* 地圖懸浮圓角 */
.visit-map-col {
  position: relative; border-radius: 20px; overflow: hidden;
  aspect-ratio: 4/3;
  box-shadow: 0 12px 40px rgba(0,0,0,.18), 0 2px 8px rgba(0,0,0,.08);
}
.visit-map-col iframe { position:absolute; inset:0; width:100%; height:100%; border:none; display:block; }
@media(max-width:700px){
  .visit-card { grid-template-columns:1fr; padding:28px 24px; gap:28px; }
  .visit-map-col { aspect-ratio:16/9; }
}

/* ===== TRAFFIC PAGE ===== */
.annie-traffic-body {
  background: var(--rose-pale);
  color: var(--text-dark);
  font-family: 'Noto Sans TC', sans-serif;
  font-weight: 300;
}
.traffic-page-wrap {
  max-width: 860px;
  margin: 0 auto;
  padding: 48px 20px 72px;
}
.page-title-wrap { text-align: center; margin-bottom: 28px; }
.page-eyebrow {
  font-size:.68rem; letter-spacing:.26em; color:var(--text-mid);
  text-transform:uppercase; margin-bottom:10px;
}
.page-title {
  font-family:'Noto Serif TC',serif; font-size:clamp(1.6rem,3vw,2.2rem);
  color:var(--text-dark); font-weight:400; letter-spacing:.06em;
}
.traffic-map-wrap {
  border-radius:18px; overflow:hidden;
  box-shadow:0 8px 36px rgba(0,0,0,.13);
  border:1px solid var(--rose-light);
  aspect-ratio:16/7;
  margin-bottom:20px;
  background:#eee;
}
.traffic-map-wrap iframe { width:100%; height:100%; border:none; display:block; }
.traffic-info-row {
  display:grid; grid-template-columns:1fr 1fr; gap:16px;
  margin-bottom:44px;
}
.info-card {
  background:white; border-radius:16px; padding:24px 24px 20px;
  box-shadow:0 4px 20px rgba(216,136,158,.09);
  border:1px solid var(--rose-light);
}
.info-card-icon { font-size:1.5rem; margin-bottom:12px; display:block; }
.info-card-label {
  font-size:.72rem; letter-spacing:.18em; color:var(--text-mid);
  text-transform:uppercase; margin-bottom:8px;
}
.info-card-title {
  font-family:'Noto Serif TC',serif; font-size:1rem; font-weight:500;
  color:var(--text-dark); margin-bottom:12px; letter-spacing:.04em;
}
.info-card-body { font-size:.88rem; line-height:2; color:var(--text-dark); }
.info-card-body strong { font-weight:500; }
.info-card-link {
  display:inline-block; margin-top:10px;
  font-size:.78rem; color:var(--rose-dark); text-decoration:none;
  letter-spacing:.06em; border-bottom:1px solid var(--rose-light);
  padding-bottom:1px; transition:color .2s;
}
.info-card-link:hover { color:var(--text-dark); }
.section-divider {
  text-align:center; margin-bottom:24px;
  font-size:.8rem; letter-spacing:.22em; color:var(--text-mid);
  display:flex; align-items:center; justify-content:center; gap:12px;
}
.section-divider::before, .section-divider::after {
  content:''; flex:1; height:1px; background:var(--rose-light);
}
.route-list { display:flex; flex-direction:column; gap:16px; margin-bottom:44px; }
.route-card {
  background:white; border-radius:16px; padding:26px 28px;
  box-shadow:0 4px 20px rgba(216,136,158,.09);
  border:1px solid var(--rose-light);
  display:flex; gap:20px; align-items:flex-start;
}
.route-icon-wrap {
  width:52px; height:52px; border-radius:14px; flex-shrink:0;
  background:var(--rose-pale); border:1px solid var(--rose-light);
  display:flex; align-items:center; justify-content:center;
  font-size:1.6rem;
}
.route-title {
  font-family:'Noto Serif TC',serif; font-size:1rem; font-weight:500;
  color:var(--text-dark); margin-bottom:12px; letter-spacing:.04em;
}
.route-steps { display:flex; flex-direction:column; gap:6px; }
.route-step {
  font-size:.88rem; line-height:1.7; color:var(--text-dark);
  display:flex; gap:6px; align-items:baseline;
}
.route-step::before {
  content:'·'; color:var(--rose-dark); font-size:1.1rem; flex-shrink:0;
}
.route-step .arr { color:var(--rose-dark); font-size:.8rem; margin:0 2px; }
.back-wrap { text-align:center; margin-top:16px; }
.back-btn {
  display:inline-flex; align-items:center; gap:8px;
  border:1.5px solid var(--rose-dark); color:var(--rose-dark);
  padding:11px 28px; border-radius:32px; text-decoration:none;
  font-size:.88rem; letter-spacing:.08em; transition:all .25s;
}
.back-btn:hover { background:var(--rose-dark); color:white; }
@media(max-width:700px){
  .traffic-info-row { grid-template-columns:1fr; }
  .traffic-map-wrap { aspect-ratio:4/3; }
  .route-card { flex-direction:column; gap:14px; }
}

/* ===== BLOG SIGNUP BUTTON SHORTCODE ===== */
.annie-signup-inline {
  margin: 28px 0;
  text-align: center;
}
.annie-signup-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 220px;
  padding: 14px 34px;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--rose-mid), var(--rose-dark));
  color: white !important;
  text-decoration: none !important;
  font-family: 'Noto Sans TC', sans-serif;
  font-size: .98rem;
  font-weight: 500;
  letter-spacing: .05em;
  box-shadow: 0 8px 24px rgba(184,52,96,.28);
  transition: transform .22s, box-shadow .22s;
}
.annie-signup-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 30px rgba(184,52,96,.36);
}

/* ===== FADE IN ===== */
.fi { opacity:0; transform:translateY(22px); transition:opacity .6s ease, transform .6s ease; }
.fi.vis { opacity:1; transform:translateY(0); }

/* ===== RESPONSIVE ===== */
@media(max-width:640px){
  .annie-booking-page #introLogo {
    width: min(300px, 78vw);
    aspect-ratio: 2300 / 558;
    height: auto;
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;
  }
  .annie-booking-page .hero-logo-wrap-top {
    margin-bottom: 10px;
    max-width: 100%;
    overflow: visible;
  }
  .annie-booking-page .hero-logo-top {
    width: min(230px, 68vw);
    height: auto;
    max-height: 54px;
    object-fit: contain;
  }
  .photo-strip { grid-template-columns:repeat(2,1fr); height:230px; }
  .bk-img { width:110px; }
}
@media(max-width:480px){
  .bk-img { display:none; }
  .photo-strip { height:200px; }
  .form-row-2 { grid-template-columns:1fr; }
  .date-choice-grid { grid-template-columns:1fr; }
}
