
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --plum:#3a2430;--plum-2:#54364a;--rose:#96455b;--rose-lift:#c07288;
  --gold:#c9a26a;--ivory:#faf5f1;--blush:#f4e8e4;--panel:#ffffff;
  --ink:#33222c;--ink2:#6d5762;--ink3:#95808a;--rule:#e8dad5;
  --fd:'Fraunces',Georgia,serif;--fb:'Outfit',system-ui,sans-serif;
  --sect:clamp(3.5rem,2.4rem+4vw,6.5rem);--gut:clamp(1.15rem,.7rem+1.8vw,2.25rem);--maxw:1140px;
}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--ivory);color:var(--ink);font-family:var(--fb);font-size:clamp(1rem,.97rem+.15vw,1.06rem);line-height:1.65;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
::selection{background:var(--rose);color:#fff}
:focus-visible{outline:2px solid var(--rose);outline-offset:3px;border-radius:3px}
.container{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut)}
.skip{position:absolute;left:-9999px}.skip:focus{left:12px;top:12px;z-index:200;background:var(--plum);color:#fff;padding:10px 18px;border-radius:6px}

/* nav */
.nav{position:sticky;top:0;z-index:100;background:rgba(250,245,241,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--rule)}
.nav-in{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);height:68px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.logo{font-family:var(--fd);font-weight:600;font-size:1.22rem;letter-spacing:.01em;color:var(--plum);line-height:1.05}
.logo em{display:block;font-style:normal;font-family:var(--fb);font-weight:600;font-size:.6rem;letter-spacing:.32em;text-transform:uppercase;color:var(--rose);margin-top:2px}
.nav ul{display:none;list-style:none;align-items:center;gap:26px}
.nav ul a{font-size:.82rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);transition:color .15s}
.nav ul a:hover,.nav ul a[aria-current="page"]{color:var(--rose)}
.nav-cta{background:var(--plum);color:#fff!important;padding:11px 20px;border-radius:100px;transition:background .15s,transform .15s}
.nav-cta:hover{background:var(--rose);transform:translateY(-1px)}
.nav-tel{font-weight:700;color:var(--plum);white-space:nowrap;font-size:.95rem}
@media(min-width:920px){.nav ul{display:flex}.nav-tel-m{display:none}}
@media(max-width:919px){.nav-tel-m{display:block}}

/* type */
h1{font-family:var(--fd);font-weight:500;font-size:clamp(2.3rem,1.5rem+3.6vw,4.2rem);line-height:1.04;letter-spacing:-.015em;color:var(--plum);text-wrap:balance}
h1 .a,h2 .a{color:var(--rose);font-style:italic}
h2{font-family:var(--fd);font-weight:500;font-size:clamp(1.7rem,1.25rem+1.9vw,2.6rem);line-height:1.12;letter-spacing:-.01em;color:var(--plum);margin-bottom:18px;text-wrap:balance}
h3{font-family:var(--fd);font-weight:600;font-size:1.22rem;color:var(--plum);margin-bottom:8px}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:.72rem;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--rose);margin-bottom:16px}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--gold)}
.lede{color:var(--ink2);font-size:clamp(1.02rem,.98rem+.3vw,1.18rem);max-width:60ch;margin-top:18px;font-weight:300}
section{padding:var(--sect) 0}
section.tight{padding:clamp(2.2rem,1.8rem+1.6vw,3.5rem) 0}
.surface{background:var(--blush)}
.dark{background:var(--plum);color:#f4e9ee}
.dark h2,.dark h3{color:#fff}.dark p{color:#d8c3cd}

/* buttons */
.btns{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}
.btn{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:.95rem;letter-spacing:.04em;padding:15px 30px;border-radius:100px;cursor:pointer;border:1.5px solid transparent;transition:transform .15s,background .15s,color .15s,border-color .15s}
.btn-p{background:var(--rose);color:#fff}
.btn-p:hover{background:var(--plum);transform:translateY(-2px)}
.btn-o{border-color:var(--plum);color:var(--plum);background:transparent}
.btn-o:hover{background:var(--plum);color:#fff;transform:translateY(-2px)}
.dark .btn-o{border-color:rgba(255,255,255,.5);color:#fff}
.dark .btn-o:hover{background:#fff;color:var(--plum)}

/* hero */
.hero{position:relative;padding:clamp(3rem,2rem+3.4vw,5.5rem) 0}
.hero-grid{display:grid;gap:38px;align-items:center}
@media(min-width:900px){.hero-grid{grid-template-columns:1.05fr .95fr}}
.hero-img{position:relative;border-radius:18px 120px 18px 18px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(58,36,48,.45)}
.hero-img img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3}
.hero-badge{position:absolute;left:18px;bottom:18px;background:rgba(250,245,241,.94);backdrop-filter:blur(8px);border-radius:12px;padding:12px 18px;font-size:.8rem;font-weight:600;color:var(--plum);box-shadow:0 8px 24px -10px rgba(58,36,48,.4)}
.hero-badge b{display:block;font-family:var(--fd);font-size:1.25rem;color:var(--rose)}
.pills{display:flex;flex-wrap:wrap;gap:9px;margin-top:24px}
.pill{background:var(--panel);border:1px solid var(--rule);padding:8px 16px;border-radius:100px;font-size:.78rem;font-weight:600;letter-spacing:.04em;color:var(--ink2)}
.pill b{color:var(--rose)}

/* cards */
.grid{display:grid;gap:22px}
@media(min-width:680px){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.g3{grid-template-columns:repeat(3,1fr)}}
.pcard{background:var(--panel);border:1px solid var(--rule);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s}
.pcard:hover{transform:translateY(-6px);box-shadow:0 24px 50px -24px rgba(58,36,48,.35)}
.pcard img{aspect-ratio:4/3;object-fit:cover;width:100%}
.pcard .pc-body{padding:24px 24px 26px;display:flex;flex-direction:column;flex:1}
.pcard .meta{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.pcard p{color:var(--ink2);font-size:.94rem;flex:1}
.pcard .go{margin-top:16px;font-weight:700;font-size:.85rem;letter-spacing:.06em;color:var(--rose)}
.pcard:hover .go span{transform:translateX(5px)}
.pcard .go span{display:inline-block;transition:transform .25s}

/* feature list */
.checks{display:grid;gap:12px;margin-top:22px}
@media(min-width:680px){.checks.two{grid-template-columns:1fr 1fr}}
.check{display:flex;gap:12px;align-items:flex-start;font-size:.97rem;color:var(--ink2)}
.check::before{content:"";flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:var(--blush);border:1.5px solid var(--rose);margin-top:2px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a4586d' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");background-size:11px;background-position:center;background-repeat:no-repeat}
.dark .check{color:#d8c3cd}

/* split */
.split{display:grid;gap:38px;align-items:center}
@media(min-width:900px){.split{grid-template-columns:1fr 1fr}.split.rev>.simg{order:2}}
.simg{border-radius:16px;overflow:hidden;box-shadow:0 24px 48px -26px rgba(58,36,48,.4)}
.simg img{width:100%;object-fit:cover;aspect-ratio:1/1}
.simg.tall img{aspect-ratio:4/5}

/* stats */
.stats{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:14px;overflow:hidden;grid-template-columns:1fr 1fr}
@media(min-width:760px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--panel);padding:22px 18px}
.stat b{display:block;font-family:var(--fd);font-weight:600;font-size:1.7rem;color:var(--rose);line-height:1.1}
.stat span{font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3)}

/* gallery */
.gal{display:grid;gap:12px;grid-template-columns:repeat(2,1fr)}
@media(min-width:760px){.gal{grid-template-columns:repeat(4,1fr)}}
.gal img{border-radius:12px;aspect-ratio:1/1;object-fit:cover;width:100%}
.gal img:nth-child(1){grid-row:span 2;aspect-ratio:auto;height:100%}

/* form */
.form-wrap{background:var(--panel);border:1px solid var(--rule);border-radius:20px;padding:clamp(1.6rem,1.2rem+1.6vw,2.6rem);box-shadow:0 30px 60px -35px rgba(58,36,48,.4)}
.form-row{display:grid;gap:14px}
@media(min-width:620px){.form-row.two{grid-template-columns:1fr 1fr}}
.form-wrap input[type=text],.form-wrap input[type=tel],.form-wrap input[type=email],.form-wrap select,.form-wrap textarea{
  width:100%;background:var(--ivory);border:1.5px solid var(--rule);border-radius:10px;padding:14px 16px;font-family:var(--fb);font-size:1rem;color:var(--ink);margin-bottom:14px;transition:border-color .15s}
.form-wrap input:focus,.form-wrap select:focus,.form-wrap textarea:focus{outline:none;border-color:var(--rose)}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:.78rem;color:var(--ink3);margin:4px 0 16px;line-height:1.5}
.consent input{margin-top:3px;accent-color:var(--rose)}
.consent a{color:var(--rose);text-decoration:underline}
.form-btn{width:100%;background:var(--rose);color:#fff;border:0;border-radius:100px;padding:16px;font-family:var(--fb);font-weight:700;font-size:1rem;letter-spacing:.05em;cursor:pointer;transition:background .15s,transform .15s}
.form-btn:hover{background:var(--plum);transform:translateY(-2px)}
.form-btn:disabled{opacity:.6;cursor:wait}
.form-ok{display:none;text-align:center;padding:30px 10px}
.form-ok h3{font-size:1.5rem}
.form-err{display:none;color:#a33;font-size:.88rem;margin-top:10px;text-align:center}

/* faq */
.faq{border-top:1px solid var(--rule);max-width:820px}
.fi{border-bottom:1px solid var(--rule)}
.fq{width:100%;background:none;border:0;cursor:pointer;display:flex;justify-content:space-between;gap:18px;align-items:flex-start;text-align:left;padding:20px 0;font-family:var(--fd);font-weight:600;font-size:1.08rem;color:var(--plum);transition:color .15s}
.fq:hover{color:var(--rose)}
.fq .ic{color:var(--rose);font-size:1.4rem;line-height:1;flex:0 0 auto;transition:transform .3s}
.fi.open .ic{transform:rotate(45deg)}
.fa{max-height:0;overflow:hidden;transition:max-height .35s cubic-bezier(.16,1,.3,1)}
.fi.open .fa{max-height:600px}
.fa div{padding:0 0 20px;color:var(--ink2);max-width:68ch;font-size:.97rem}

/* map + footer */
.map{width:100%;height:360px;border:0;display:block;filter:saturate(.85)}
footer{background:var(--plum);color:#e6d3db;padding:clamp(3rem,2.4rem+2vw,4.5rem) 0 0}
.f-grid{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);display:grid;gap:34px}
@media(min-width:800px){.f-grid{grid-template-columns:1.4fr 1fr 1fr}}
.f-head{font-size:.78rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
footer ul{list-style:none;display:grid;gap:9px}
footer .logo em{color:var(--gold)}
footer a{color:#cbb2bd;font-size:.92rem;transition:color .15s}
footer a:hover{color:#fff}
.f-nap{font-style:normal;font-size:.92rem;line-height:1.8;color:#cbb2bd}
.f-nap strong{color:#fff}
.f-bottom{max-width:var(--maxw);margin:38px auto 0;padding:18px var(--gut);border-top:1px solid rgba(255,255,255,.12);display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;font-size:.78rem;color:#c4a9b4}
.crumbs{max-width:var(--maxw);margin:0 auto;padding:18px var(--gut) 0;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--ink3)}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.crumbs li+li::before{content:"/";margin-right:8px;color:var(--rule)}
.crumbs a:hover{color:var(--rose)}

/* mobile cta bar */
.mcta{position:fixed;left:0;right:0;bottom:0;z-index:90;display:grid;grid-template-columns:1fr 1fr;background:rgba(58,36,48,.97);backdrop-filter:blur(10px);padding-bottom:env(safe-area-inset-bottom)}
.mcta a{padding:15px;text-align:center;font-weight:700;font-size:.92rem;letter-spacing:.05em;color:#fff;min-height:50px;display:flex;align-items:center;justify-content:center}
.mcta .b{background:var(--rose)}
@media(min-width:920px){.mcta{display:none}}
/* The bar is 54px of buttons PLUS the home-indicator inset on notched phones,
   so a flat 54px of body padding left the last footer line under the bar.
   Reserve the same value the bar actually occupies, plus breathing room. */
@media(max-width:919px){body{padding-bottom:calc(54px + env(safe-area-inset-bottom, 0px) + 20px)}}

.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition-duration:.01ms!important;animation-duration:.01ms!important}.reveal{opacity:1;transform:none}}
