/* ============================================================
   VISIT PAGE
   ============================================================ */
/* Sub-page hero */
.subhero{ position:relative; min-height:74svh; display:flex; align-items:flex-end; padding:clamp(140px,20vh,220px) 0 clamp(56px,8vh,90px); overflow:hidden; color:#fff; }
.subhero__media{ position:absolute; inset:0; z-index:-1; }
.subhero__media img{ width:100%; height:100%; object-fit:cover; }
.subhero__veil{ position:absolute; inset:0; background:
  linear-gradient(100deg, rgba(26,22,16,.8) 0%, rgba(26,22,16,.5) 30%, rgba(26,22,16,.1) 60%, rgba(26,22,16,0) 78%),
  linear-gradient(180deg, rgba(26,22,16,.55) 0%, rgba(26,22,16,.1) 20%, rgba(26,22,16,0) 45%, rgba(26,22,16,.45) 85%, rgba(26,22,16,.8) 100%); }
.subhero__content{ text-shadow:0 2px 30px rgba(20,16,10,.4); }
.subhero__eyebrow{ font-size:.82rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--gold-soft); margin-bottom:1.4rem; }
.subhero__title{ font-family:var(--display); font-weight:380; font-size:clamp(2.4rem,5.6vw,5rem); line-height:1.04; letter-spacing:-.02em; margin-bottom:1.4rem; }
.subhero__title .line{ display:block; }
.subhero__title em{ font-style:italic; color:var(--gold-soft); }
.subhero__lead{ font-size:clamp(1.05rem,1.5vw,1.25rem); max-width:52ch; color:rgba(255,255,255,.9); line-height:1.65; margin-bottom:2rem; font-weight:350; }
.subhero__cta{ display:flex; flex-wrap:wrap; gap:14px; }

/* Intro */
.vintro{ padding:var(--section) 0; background:var(--bg); }
.vintro__grid{ display:grid; grid-template-columns:1fr 1.05fr; gap:clamp(40px,6vw,80px); align-items:stretch; }
.vintro__media{ border-radius:var(--radius-lg); overflow:hidden; min-height:420px; }
.vintro__media img{ width:100%; height:100%; object-fit:cover; }
.vintro__body{ display:flex; flex-direction:column; justify-content:center; }
.vintro__body .h2{ margin:.4rem 0 1.5rem; }
.vintro__body p{ color:var(--text-soft); font-size:1.08rem; margin-bottom:1.2rem; max-width:52ch; }
.vintro__facts{ display:flex; flex-wrap:wrap; gap:clamp(24px,4vw,56px); margin-top:2.4rem; }
.vintro__facts > div{ display:flex; flex-direction:column; }
.vintro__facts .stat__num{ font-size:clamp(2.2rem,4vw,3rem); }
.vintro__facts span:last-child{ color:var(--text-soft); font-size:.92rem; margin-top:4px; }

/* Visit stats — as cards */
.vstats{ padding:clamp(56px,7vw,90px) 0; }
.vstats .stats__grid{ gap:22px; }
.vstats .stat{ background:transparent; border:1.5px solid var(--line); border-radius:var(--radius-lg); padding:40px 18px 34px; transition:transform .45s var(--ease), box-shadow .45s var(--ease), background .45s var(--ease), border-color .45s var(--ease); }
.vstats .stat::before{ display:none; }
.vstats .stat__label{ max-width:none; white-space:nowrap; font-size:1.02rem; margin-top:14px; transition:color .4s var(--ease); }
.vstats .stat__num{ transition:color .4s var(--ease); }
.vstats .stat:hover{ background:var(--bark); border-color:transparent; transform:translateY(-6px); box-shadow:0 32px 64px -40px rgba(44,39,31,.5); }
.vstats .stat:hover .stat__num{ color:var(--gold-soft); }
.vstats .stat:hover .stat__label{ color:rgba(255,255,255,.8); }
.stats__grid--3{ grid-template-columns:repeat(3,1fr); max-width:880px; margin-inline:auto; }
@media (max-width:680px){ .stats__grid--3{ grid-template-columns:1fr; gap:34px; } }

/* Programs */
.vprograms{ padding:var(--section) 0; background:var(--cream-2); }
.vprograms__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; margin-bottom:clamp(36px,4vw,60px); }
.vprograms__intro{ color:var(--text-soft); max-width:38ch; font-size:1.05rem; }
.vgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.vcard{ background:var(--paper); border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; display:flex; flex-direction:column; transition:transform .45s var(--ease), box-shadow .45s var(--ease); }
.vcard:hover{ transform:translateY(-6px); box-shadow:0 36px 70px -44px rgba(44,39,31,.45); }
.vcard__media{ aspect-ratio:16/9; overflow:hidden; }
.vcard__media img{ width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); }
.vcard:hover .vcard__media img{ transform:scale(1.05); }
.vcard__body{ padding:clamp(26px,2.5vw,36px); display:flex; flex-direction:column; flex:1; }
.vcard__top{ display:flex; flex-direction:column-reverse; align-items:flex-start; gap:10px; margin-bottom:12px; }
.vcard__top h3{ font-family:var(--display); font-size:clamp(1.5rem,2.2vw,2rem); font-weight:440; color:var(--bark); }
.vcard__tag{ font-size:.7rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--gold-deep); background:var(--cream); border-radius:100px; padding:6px 12px; white-space:nowrap; }
.vcard__body > p{ color:var(--text-soft); font-size:1rem; }
.vcard__list{ list-style:none; margin:18px 0 24px; display:flex; flex-direction:column; gap:9px; }
.vcard__list li{ position:relative; padding-left:24px; color:var(--text); font-size:.96rem; }
.vcard__list li::before{ content:"\2713"; position:absolute; left:0; color:var(--gold-deep); font-weight:700; }
.vcard .btn{ margin-top:auto; }

/* Good to know */
.vknow{ padding:var(--section) 0; background:var(--bg); text-align:center; }
.vknow__title{ max-width:20ch; margin:0 auto clamp(40px,5vw,64px); }
.vknow__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; text-align:left; }
.vknow__grid--3{ grid-template-columns:repeat(3,1fr); max-width:1040px; margin-inline:auto; }
.vknow__item{ background:var(--cream-2); border:1px solid var(--line); border-radius:var(--radius-lg); padding:30px 26px; transition:transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s var(--ease); }
.vknow__item:hover{ transform:translateY(-6px); box-shadow:0 30px 60px -40px rgba(44,39,31,.4); border-color:transparent; }
.vknow__ico{ transition:background .4s var(--ease), color .4s var(--ease); }
.vknow__item:hover .vknow__ico{ background:var(--gold-deep); color:#fff; }
.vknow__ico{ display:inline-flex; align-items:center; justify-content:center; width:54px; height:54px; border-radius:14px; background:var(--cream); color:var(--gold-deep); margin-bottom:18px; }
.vknow__ico svg{ width:28px; height:28px; }
.vknow__item h3{ font-family:var(--display); font-size:1.3rem; font-weight:440; color:var(--bark); margin-bottom:8px; }
.vknow__item p{ color:var(--text-soft); font-size:.96rem; }

/* Booking */
.booking{ padding:var(--section) 0; background:var(--cream-2); }
.booking__grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(40px,6vw,90px); align-items:start; }
.booking__lead{ color:var(--text-soft); margin-top:1.4rem; font-size:1.08rem; max-width:42ch; }
.booking__contacts{ list-style:none; margin-top:2rem; display:flex; flex-direction:column; gap:16px; }
.booking__contacts li{ display:flex; align-items:center; gap:14px; color:var(--text-soft); font-size:1rem; }
.bc-ico{ flex:none; width:44px; height:44px; border-radius:13px; background:var(--cream); color:var(--gold-deep); display:inline-flex; align-items:center; justify-content:center; transition:background .35s var(--ease), color .35s var(--ease), transform .35s var(--ease); }
.booking__contacts li:hover .bc-ico{ background:var(--gold-deep); color:#fff; transform:translateY(-2px); }
.bc-ico svg{ width:20px; height:20px; }
.booking__contacts li div{ display:flex; flex-direction:column; line-height:1.4; }
.booking__contacts b{ color:var(--bark); font-family:var(--display); font-weight:500; font-size:.82rem; letter-spacing:.04em; text-transform:uppercase; }
.booking__form{ background:var(--paper); border:1px solid var(--line); border-radius:var(--radius-lg); padding:clamp(26px,3vw,42px); display:grid; grid-template-columns:1fr 1fr; gap:16px; box-shadow:0 36px 80px -50px rgba(44,39,31,.4); }
.field{ grid-column:span 2; display:flex; flex-direction:column; gap:7px; }
.field--half{ grid-column:span 1; }
.field label{ font-size:.8rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--text-soft); }
.field input,.field select,.field textarea{ width:100%; padding:.85em 1em; border:1.5px solid var(--line); border-radius:12px; background:var(--cream-3); font-size:1rem; color:var(--text); outline:none; transition:border-color .3s var(--ease); font-family:inherit; }
.field input:focus,.field select:focus,.field textarea:focus{ border-color:var(--gold-deep); }
.field textarea{ resize:vertical; }
.booking__form .btn{ grid-column:span 2; margin-top:4px; }
.booking__note{ grid-column:span 2; text-align:center; font-size:.82rem; color:var(--text-soft); }

/* FAQ */
.faq{ padding:var(--section) 0; background:var(--bg); }
.faq__inner{ display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(40px,6vw,90px); align-items:start; }
.faq__head .h2{ margin-top:.4rem; }
.faq__sub{ color:var(--text-soft); font-size:1.02rem; margin-top:1.1rem; max-width:34ch; }
.faq__call{ margin-top:1.6rem; }
.faq__call span{ display:inline-flex; align-items:center; gap:.6em; }
.faq__call svg{ width:18px; height:18px; }
.faq__item{ border-top:1px solid var(--line); padding:6px 0; }
.faq__item:last-child{ border-bottom:1px solid var(--line); }
.faq__item summary{ list-style:none; cursor:pointer; padding:22px 40px 22px 0; position:relative; font-family:var(--display); font-size:clamp(1.15rem,1.7vw,1.4rem); color:var(--bark); font-weight:440; }
.faq__item summary::-webkit-details-marker{ display:none; }
.faq__item summary::after{ content:"+"; position:absolute; right:4px; top:50%; transform:translateY(-50%); font-size:1.6rem; color:var(--gold-deep); transition:transform .4s var(--ease); font-family:var(--sans); font-weight:300; }
.faq__item[open] summary::after{ transform:translateY(-50%) rotate(45deg); }
.faq__item p{ color:var(--text-soft); font-size:1.02rem; line-height:1.7; padding:0 40px 22px 0; max-width:60ch; }

/* CTA */
.vcta{ padding:var(--section) 0; background:var(--cream-2); text-align:center; }
.vcta__inner{ max-width:30ch; margin-inline:auto; }
.vcta .h2{ margin-bottom:1.2rem; }
.vcta p{ color:var(--text-soft); font-size:1.1rem; }
.vcta__btns{ display:flex; gap:14px; justify-content:center; margin-top:2rem; flex-wrap:wrap; }
.btn--ghost-dark{ background:transparent; color:var(--bark); border:1.5px solid var(--line); backdrop-filter:none; text-shadow:none; }
.btn--ghost-dark::before{ background:var(--bark); }
.btn--ghost-dark:hover{ color:#fff; border-color:var(--bark); }

@media (max-width:1024px){
  .vintro__grid,.booking__grid,.faq__inner{ grid-template-columns:1fr; }
  .vintro .h2,.faq__head .h2{ position:static; }
  .vknow__grid{ grid-template-columns:1fr 1fr; }
  .vgrid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:680px){
  .vgrid{ grid-template-columns:1fr; }
  .vknow__grid{ grid-template-columns:1fr; }
  .booking__form{ grid-template-columns:1fr; }
  .field--half{ grid-column:span 1; }
  .field,.booking__form .btn,.booking__note{ grid-column:span 1; }
  .subhero__cta .btn{ flex:0 1 auto; }
}
