.familyCatalog { --family-ink:#18352e; --family-soft:#f7f3eb; --family-sand:#e9e0d0; --family-accent:#a65737; color:var(--family-ink); background:#fffdf9; }
.familyCatalog * { box-sizing:border-box; }
.familyCatalog section[id] { scroll-margin-top:90px; }
.familyCatalog .shell { width:min(100% - 48px, 1160px); margin-inline:auto; }
.familyCatalog h1,.familyCatalog h2,.familyCatalog h3 { font-family:Georgia,'Times New Roman',serif; font-weight:400; letter-spacing:-.035em; }
.familyCatalog p { line-height:1.7; }
.familyCatalog a { text-underline-offset:4px; }
.familyCatalog a:focus-visible,.familyCatalog summary:focus-visible { outline:3px solid #b86846; outline-offset:4px; }
.familyEyebrow { margin:0 0 20px; color:var(--family-accent); font-size:.73rem; font-weight:800; letter-spacing:.19em; line-height:1.5; }
.familyHero { position:relative; isolation:isolate; min-height:min(740px,72vw); display:flex; align-items:center; overflow:hidden; background:#1c3a36; color:#fff; }
.familyHero > img,.familyHeroShade { position:absolute; inset:0; width:100%; height:100%; }
.familyHero > img { object-fit:cover; object-position:center 52%; z-index:-2; }
.familyHeroShade { z-index:-1; background:linear-gradient(90deg,rgba(13,35,32,.84) 0%,rgba(13,35,32,.58) 41%,rgba(13,35,32,.05) 85%),linear-gradient(0deg,rgba(13,35,32,.36),transparent 34%); }
.familyHeroCopy { padding-block:130px 120px; }
.familyHero .familyEyebrow { color:#e6cba5; }
.familyHero h1 { max-width:720px; margin:0; font-size:clamp(4.3rem,9.8vw,9rem); line-height:.96; text-wrap:balance; }
.familyHeroCopy > p:not(.familyEyebrow) { margin:28px 0 0; max-width:510px; font-size:clamp(1.2rem,2.2vw,1.7rem); line-height:1.45; }
.familyHeroActions { display:flex; gap:12px; flex-wrap:wrap; margin-top:38px; }
.familyHeroActions a { display:inline-flex; align-items:center; min-height:51px; padding:12px 22px; text-decoration:none; font-size:.92rem; font-weight:750; }
.familyHeroActions a:first-child { background:#f4ebdc; color:#17352d; }
.familyHeroActions a:last-child { border:1px solid #e9e1d1; color:#fff; }
.familyHeroIndex { position:absolute; bottom:23px; left:max(24px,calc((100% - 1160px)/2)); right:max(24px,calc((100% - 1160px)/2)); display:flex; justify-content:space-between; border-top:1px solid #ffffff80; padding-top:15px; font-size:.69rem; letter-spacing:.18em; }
.familyCatalog .crumb { margin-top:24px; margin-bottom:18px; }
.familyOpening { display:grid; grid-template-columns:.95fr 1.05fr; gap:clamp(45px,8vw,120px); padding-block:105px 100px; }
.familyOpening h2,.familySectionHead h2,.familyRoute h2,.familyEditorial h2,.familyClosingPhoto h2,.familyFinal h2 { margin:0; font-size:clamp(2.7rem,4.8vw,4.9rem); line-height:1.08; text-wrap:balance; }
.familyOpening > div:last-child { padding-top:24px; }
.familyOpening > div:last-child p { margin:0 0 24px; font-size:1.14rem; }
.familyOpening > div:last-child span { color:var(--family-accent); font-size:.75rem; font-weight:800; letter-spacing:.13em; }
.familyEditorial { display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(48px,7vw,110px); align-items:center; padding-bottom:130px; }
.familyEditorial figure,.familyPlace figure { margin:0; }
.familyEditorial figure img { display:block; width:100%; aspect-ratio:4/5; object-fit:cover; }
.familyCatalog figcaption { margin-top:11px; color:#64746b; font-size:.78rem; letter-spacing:.03em; }
.familyEditorial > div > p:not(.familyEyebrow) { font-size:1.07rem; }
.familyEditorial aside { margin-top:38px; border-left:2px solid var(--family-accent); padding:4px 0 4px 22px; }
.familyEditorial aside b { color:var(--family-accent); font-family:Georgia,serif; font-size:1.4rem; font-weight:400; }
.familyEditorial aside p { margin:8px 0 0; }
.familyPlaces { background:var(--family-soft); padding-block:100px 115px; }
.familySectionHead { max-width:800px; margin-bottom:50px; }
.familySectionHead > p:last-child { max-width:720px; margin:20px 0 0; color:#495d53; font-size:1.1rem; }
.familyPlaceList { display:grid; gap:95px; }
.familyPlace { display:grid; grid-template-columns:1.08fr .92fr; gap:clamp(40px,7vw,100px); align-items:center; }
.familyPlace:nth-child(even) figure { order:2; }
.familyPlace figure img { display:block; width:100%; aspect-ratio:1.12/1; object-fit:cover; }
.familyPlace > div { padding:22px 0; }
.familyNumber,.familyHotelNumber,.familyPracticalGrid article > span { color:var(--family-accent); font-size:.73rem; font-weight:800; letter-spacing:.16em; }
.familyPlace h3 { margin:18px 0 15px; font-size:clamp(3.2rem,6vw,5.8rem); line-height:1; }
.familyPlace strong { display:block; max-width:440px; font-family:Georgia,serif; font-size:1.45rem; font-weight:400; line-height:1.4; }
.familyPlace p { margin:20px 0; color:#40574d; }
.familyPlace .familyCaution { padding-top:18px; border-top:1px solid #d3cdbf; font-size:.92rem; }
.familyPlace .familyCaution b { color:var(--family-ink); }
.familyPlace a,.familyRoute a,.familyPracticalLinks a { color:var(--family-accent); font-weight:800; text-decoration:none; border-bottom:1px solid currentColor; padding-bottom:5px; }
.familyHotels { padding-block:110px 125px; }
.familyHotelGrid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.familyHotelGrid article { display:flex; flex-direction:column; min-width:0; border:1px solid #e0d9cc; background:#fff; }
.familyHotelPhoto { margin:0; }
.familyHotelPhoto img { display:block; width:100%; height:auto; aspect-ratio:16/10; object-fit:cover; background:#e8e1d4; }
.familyHotelPhoto figcaption { padding:9px clamp(26px,3.5vw,45px) 0; }
.familyHotelBody { display:flex; flex:1; flex-direction:column; align-items:flex-start; padding:clamp(26px,3.5vw,45px); padding-top:25px; }
.familyHotelGrid h3 { margin:24px 0 14px; font-size:clamp(1.8rem,2.9vw,2.8rem); line-height:1.13; }
.familyHotelGrid strong { font-weight:600; line-height:1.55; }
.familyHotelGrid p { color:#485c52; font-size:.96rem; }
.familyHotelCheck { margin-top:auto; padding-top:18px; border-top:1px solid #e1dbcf; }
.familyHotelCheck b { display:block; color:var(--family-ink); font-size:.76rem; letter-spacing:.09em; text-transform:uppercase; }
.familyHotelGrid a { margin-top:16px; color:var(--family-accent); font-weight:800; text-decoration:none; border-bottom:1px solid currentColor; padding-bottom:4px; }
.familyRoute { background:#18352e; color:#faf6ea; padding-block:105px; }
.familyRouteGrid { display:grid; grid-template-columns:1fr 1fr; gap:clamp(45px,8vw,120px); }
.familyRoute .familyEyebrow { color:#e6bb8d; }
.familyRoute p { color:#e0e9de; }
.familyRoute a { display:inline-block; margin-top:17px; color:#f1c6a2; }
.familyRoute ol { margin:5px 0 0; padding:0; list-style:none; }
.familyRoute li { display:grid; grid-template-columns:75px 1fr; gap:15px; border-top:1px solid #a8c0af66; padding:26px 0; }
.familyRoute li span { color:#e6bb8d; font-family:Georgia,serif; font-size:2rem; }
.familyRoute li b { font-size:1.13rem; }
.familyRoute li p { margin:7px 0 0; }
.familyPractical { padding-block:110px 120px; }
.familyPracticalGrid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px 24px; }
.familyPracticalGrid article { border-top:1px solid #c9c3b7; padding-top:22px; }
.familyPracticalGrid h3 { margin:20px 0 10px; font-size:1.75rem; line-height:1.2; }
.familyPracticalGrid p { color:#485c52; font-size:.96rem; }
.familyPracticalLinks { display:flex; flex-wrap:wrap; gap:20px 35px; margin-top:55px; }
.familyClosingPhoto { position:relative; isolation:isolate; display:flex; align-items:end; min-height:650px; color:#fff; }
.familyClosingPhoto > img { position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; object-position:center 60%; }
.familyClosingPhoto:before { content:''; position:absolute; inset:0; z-index:-1; background:linear-gradient(0deg,rgba(15,36,30,.91),rgba(15,36,30,.36) 55%,transparent); }
.familyClosingPhoto .shell { padding-block:170px 75px; }
.familyClosingPhoto .familyEyebrow { color:#f0cca6; }
.familyClosingPhoto h2 { max-width:800px; }
.familyClosingPhoto p:last-child { max-width:690px; font-size:1.12rem; }
.familyFaq { padding-block:105px 80px; }
.familyFaq .practicalFaq { max-width:880px; }
.familyFaq details { border-bottom:1px solid #d7d1c5; }
.familyFaq summary { cursor:pointer; display:flex; justify-content:space-between; gap:25px; padding:22px 0; font-size:1.15rem; font-weight:700; }
.familyFaq summary span { color:var(--family-accent); }
.familyFaq details p { max-width:700px; margin:0 0 23px; color:#485c52; }
.familySources { border-top:1px solid #dfd8ca; padding-block:32px 65px; }
.familySources p:last-child { max-width:850px; margin:0; color:#53675c; font-size:.88rem; }
.familySources a { color:var(--family-accent); }
.familyFinal { background:#eee5d7; padding-block:85px 100px; }
.familyFinal .shell { display:flex; flex-direction:column; align-items:flex-start; }
.familyFinal h2 { max-width:850px; }
.familyFinal a { display:inline-block; margin-top:32px; padding:17px 24px; background:var(--family-ink); color:#fff; font-weight:800; text-decoration:none; }
@media(max-width:800px){
  .familyOpening,.familyEditorial,.familyPlace,.familyRouteGrid { grid-template-columns:1fr; gap:35px; }
  .familyOpening { padding-block:75px; }
  .familyOpening > div:last-child { padding-top:0; }
  .familyEditorial { padding-bottom:80px; }
  .familyEditorial figure img { aspect-ratio:4/3; }
  .familyPlaces,.familyHotels,.familyPractical,.familyFaq { padding-block:75px; }
  .familyPlaceList { gap:70px; }
  .familyPlace:nth-child(even) figure { order:0; }
  .familyPlace > div { padding:0; }
  .familyPracticalGrid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:600px){
  .familyCatalog .shell { width:min(100% - 32px,1160px); }
  .familyHero { min-height:680px; align-items:end; }
  .familyHero > img { object-position:59% center; }
  .familyHeroShade { background:linear-gradient(0deg,rgba(13,35,32,.94),rgba(13,35,32,.54) 50%,rgba(13,35,32,.12)); }
  .familyHeroCopy { padding-block:210px 100px; }
  .familyHero h1 { font-size:clamp(3.65rem,15vw,5.5rem); }
  .familyHeroActions { flex-direction:column; align-items:stretch; }
  .familyHeroActions a { justify-content:center; }
  .familyHeroIndex { left:16px; right:16px; font-size:.6rem; }
  .familyEditorial figure img,.familyPlace figure img { aspect-ratio:4/3; }
  .familyHotelGrid,.familyPracticalGrid { grid-template-columns:1fr; }
  .familyHotelBody { padding:28px; padding-top:22px; }
  .familyHotelPhoto figcaption { padding-inline:28px; }
  .familyHotelCheck { margin-top:20px; }
  .familyRoute,.familyFinal { padding-block:75px; }
  .familyClosingPhoto { min-height:570px; }
  .familyClosingPhoto .shell { padding-block:140px 50px; }
  .familyOpening h2,.familySectionHead h2,.familyRoute h2,.familyEditorial h2,.familyClosingPhoto h2,.familyFinal h2 { font-size:clamp(2.55rem,10.5vw,3.7rem); }
}

.familyEditorial:not(:has(figure)){grid-template-columns:minmax(0,1fr);max-width:850px;}
