:root{
  --mauve:#9E7777;
  --mauve-deep:#8A6464;
  --pink:#E5B299;
  --ivory:#F8F4EF;
  --sand:#EDE4DA;
  --ink:#26221F;
  --muted:#6E5F5B;
  --rule:#DED1C6;
  --rule-soft:rgba(158,119,119,.22);
  --font-head:"Fraunces",Georgia,"Times New Roman",serif;
  --font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --gut:clamp(20px,4vw,32px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--ivory);color:var(--ink);
  font-family:var(--font-body);font-size:17px;line-height:1.72;font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
.wrap{max-width:1100px;margin:0 auto;padding:0 var(--gut)}

/* ---------- type ---------- */
h1,h2,h3{font-family:var(--font-head);font-weight:400;letter-spacing:-.018em;line-height:1.12;margin:0 0 .55em;text-wrap:balance}
h1{font-size:clamp(2.5rem,6.2vw,4.35rem);color:var(--mauve);letter-spacing:-.028em}
h2{font-size:clamp(1.75rem,3.6vw,2.6rem);color:var(--mauve)}
h3{font-size:1.16rem;color:var(--ink);margin-bottom:.35em;letter-spacing:-.01em}
p{margin:0 0 1.15em;max-width:64ch;color:var(--ink)}
h2+p,h1+p{color:var(--muted)}
a{color:var(--mauve);text-underline-offset:3px;text-decoration-thickness:1px}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:2px solid var(--mauve);outline-offset:3px;border-radius:2px
}
.eyebrow{
  font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted);margin:0 0 1.5em;display:flex;align-items:center;gap:.85rem
}
.eyebrow::after{content:"";height:1px;flex:1 1 auto;max-width:86px;background:var(--pink)}

/* ---------- cursor glow ---------- */
.cursor-glow{
  position:fixed;top:0;left:0;width:520px;height:520px;margin:-260px 0 0 -260px;
  border-radius:50%;pointer-events:none;z-index:1;opacity:0;
  background:radial-gradient(circle,rgba(229,178,153,.30) 0%,rgba(158,119,119,.13) 42%,rgba(158,119,119,0) 68%);
  transition:opacity .6s var(--ease);will-change:transform
}
body.has-cursor .cursor-glow{opacity:1}
@media (pointer:coarse){.cursor-glow{display:none}}

/* ---------- header ---------- */
.site-head{
  position:sticky;top:0;z-index:40;
  background:rgba(248,244,239,.82);backdrop-filter:blur(14px) saturate(1.1);
  border-bottom:1px solid transparent;
  transition:border-color .35s var(--ease),background .35s var(--ease),box-shadow .35s var(--ease)
}
.site-head.is-scrolled{border-bottom-color:var(--rule);box-shadow:0 1px 24px rgba(38,34,31,.055)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:78px}
.wordmark{
  font-family:var(--font-head);font-size:1.3rem;letter-spacing:.01em;color:var(--ink);
  text-decoration:none;white-space:nowrap;display:inline-block;transition:opacity .3s var(--ease)
}
.wordmark span{color:var(--mauve);font-style:italic;padding-right:.06em}
.wordmark:hover{opacity:.72}
.nav{display:flex;align-items:center;gap:30px}
.nav a{
  color:var(--ink);text-decoration:none;font-size:.94rem;position:relative;
  padding:.4rem 0;transition:color .3s var(--ease)
}
.nav a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--pink);
  transform:scaleX(0);transform-origin:left;transition:transform .38s var(--ease)
}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}
.nav a[aria-current="page"]{color:var(--mauve)}
.nav .cta{
  background:var(--mauve);color:#fff;padding:.66rem 1.24rem;border-radius:3px;
  box-shadow:0 1px 0 rgba(38,34,31,.06);transition:background .3s var(--ease),transform .3s var(--ease)
}
.nav .cta::after{display:none}
.nav .cta:hover{background:var(--mauve-deep);transform:translateY(-1px)}
.menu-toggle{display:none}

/* ---------- hero ---------- */
.hero{position:relative;overflow:clip;padding:clamp(64px,10vw,132px) 0 clamp(52px,7vw,86px)}
.hero .wrap{position:relative;z-index:2}
.hero p{font-size:clamp(1.05rem,1.55vw,1.2rem);line-height:1.75;max-width:58ch}
.orb{
  position:absolute;border-radius:50%;pointer-events:none;z-index:1;will-change:transform;
  filter:blur(2px)
}
.orb-1{
  width:clamp(320px,42vw,600px);height:clamp(320px,42vw,600px);right:-8vw;top:-14vw;
  background:radial-gradient(circle at 32% 30%,rgba(229,178,153,.55),rgba(229,178,153,.12) 58%,rgba(229,178,153,0) 74%)
}
.orb-2{
  width:clamp(240px,30vw,440px);height:clamp(240px,30vw,440px);left:-10vw;bottom:-16vw;
  background:radial-gradient(circle at 40% 40%,rgba(158,119,119,.34),rgba(158,119,119,.08) 60%,rgba(158,119,119,0) 76%)
}
.hero-rule{width:64px;height:2px;background:var(--pink);border-radius:2px;margin:0 0 clamp(20px,3vw,32px)}
.actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:2.3rem}
.btn{
  display:inline-block;text-decoration:none;font-size:.96rem;font-weight:500;letter-spacing:.01em;
  padding:.9rem 1.7rem;border-radius:3px;border:1px solid var(--mauve);position:relative;
  overflow:hidden;transition:color .32s var(--ease),border-color .32s var(--ease),transform .32s var(--ease)
}
.btn span{position:relative;z-index:2}
.btn::before{
  content:"";position:absolute;inset:0;background:var(--pink);
  transform:translateY(101%);transition:transform .42s var(--ease);z-index:1
}
.btn:hover::before{transform:translateY(0)}
.btn-primary{background:var(--mauve);color:#fff}
.btn-primary:hover{color:var(--ink);border-color:var(--pink);transform:translateY(-1px)}
.btn-secondary{background:transparent;color:var(--mauve)}
.btn-secondary:hover{color:var(--ink);border-color:var(--pink);transform:translateY(-1px)}

/* ---------- trust strip ---------- */
.trust{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);background:rgba(237,228,218,.38)}
.trust .wrap{display:flex;flex-wrap:wrap}
.trust div{
  flex:1 1 200px;padding:1.15rem 0 1.15rem 1.4rem;font-size:.88rem;color:var(--muted);
  border-left:1px solid var(--rule);letter-spacing:.01em
}
.trust div:first-child{border-left:none;padding-left:0}

/* ---------- sections ---------- */
section{padding:clamp(56px,8vw,100px) 0;position:relative}
.section-sand{background:var(--sand)}
.section-head{max-width:64ch}
/* steps */
.steps{display:grid;gap:30px;grid-template-columns:repeat(3,1fr);margin-top:2.6rem}
.step{border-top:1px solid var(--rule);padding-top:1.2rem;position:relative}
.step::before{
  content:"";position:absolute;left:0;top:-1px;width:0;height:1px;background:var(--pink);
  transition:width .6s var(--ease)
}
.step:hover::before{width:100%}
.step .num{
  font-family:var(--font-head);font-size:2rem;color:var(--pink);display:block;
  margin-bottom:.35em;line-height:1;letter-spacing:-.02em
}
/* cards */
.grid{display:grid;gap:22px;grid-template-columns:repeat(3,1fr);margin-top:2.6rem}
.card{
  background:var(--ivory);border:1px solid var(--rule);border-radius:3px;padding:1.7rem 1.6rem;
  position:relative;overflow:hidden;
  transition:transform .42s var(--ease),border-color .42s var(--ease),box-shadow .42s var(--ease)
}
.card::after{
  content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--pink);
  transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)
}
.card:hover{transform:translateY(-4px);border-color:var(--rule-soft);box-shadow:0 14px 34px rgba(38,34,31,.07)}
.card:hover::after{transform:scaleX(1)}
.card p{font-size:.95rem;color:var(--muted);margin:0;line-height:1.65}
.card h3{transition:color .3s var(--ease)}
.card:hover h3{color:var(--mauve)}
/* point list */
.points{list-style:none;padding:0;margin:2.4rem 0 0;display:grid;gap:20px;grid-template-columns:repeat(2,1fr)}
.points li{padding-left:1.6rem;position:relative;font-size:.98rem;line-height:1.65}
.points li::before{
  content:"";position:absolute;left:0;top:.6em;width:7px;height:7px;background:var(--pink);
  border-radius:50%;transition:transform .35s var(--ease)
}
.points li:hover::before{transform:scale(1.6)}
/* closing band */
.band{background:var(--mauve);color:#fff;padding:clamp(56px,8vw,92px) 0;position:relative;overflow:clip}
.band::before{
  content:"";position:absolute;width:600px;height:600px;right:-160px;top:-240px;border-radius:50%;
  background:radial-gradient(circle,rgba(229,178,153,.34),rgba(229,178,153,0) 68%)
}
.band .wrap{position:relative;z-index:2}
.band h2{color:#fff}
.band p{color:#F6EDE8}
.band .btn-primary{background:#fff;color:var(--mauve);border-color:#fff}
.band .btn-primary::before{background:var(--pink)}
.band .btn-primary:hover{color:var(--ink);border-color:var(--pink)}
/* footer */
.site-foot{background:var(--ivory);border-top:1px solid var(--rule);padding:50px 0 44px;font-size:.9rem;color:var(--muted)}
.site-foot .cols{display:flex;flex-wrap:wrap;gap:28px;justify-content:space-between;margin-bottom:1.7rem}
.site-foot a{color:var(--muted);text-decoration:none;border-bottom:1px solid transparent;transition:color .3s var(--ease),border-color .3s var(--ease)}
.site-foot a:hover{color:var(--mauve);border-bottom-color:var(--pink)}
.legal{font-size:.78rem;line-height:1.65;color:var(--muted);max-width:70ch;border-top:1px solid var(--rule);padding-top:1.3rem;margin:0}
.placeholder{background:rgba(229,178,153,.24);border-bottom:1px dashed var(--pink);padding:0 3px;border-radius:2px}

/* ---------- page furniture ---------- */
.page-head{padding:clamp(56px,8vw,92px) 0 clamp(24px,3vw,34px);position:relative;overflow:clip}
.page-head .wrap{position:relative;z-index:2}
.service-block{border-top:1px solid var(--rule);padding-top:1.7rem;margin-top:2.8rem;max-width:70ch}
.service-block:first-of-type{border-top:none;margin-top:1.6rem}
.service-block h3{color:var(--mauve)}
.portrait{
  border:1px solid var(--rule);background:linear-gradient(160deg,var(--sand),#F2E9E1);
  aspect-ratio:4/5;display:flex;align-items:center;justify-content:center;color:var(--muted);
  font-size:.82rem;text-align:center;padding:1rem;max-width:340px;border-radius:3px
}
.about-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:clamp(32px,5vw,60px);align-items:start}

/* ---------- forms ---------- */
form{display:grid;gap:18px;max-width:620px;margin-top:2.2rem}
.field label{display:block;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.45rem;color:var(--muted)}
input,textarea{
  width:100%;padding:.85rem .95rem;border:1px solid var(--rule);border-radius:3px;background:#fff;
  font-family:inherit;font-size:1rem;color:var(--ink);transition:border-color .3s var(--ease),box-shadow .3s var(--ease)
}
input:focus,textarea:focus{outline:none;border-color:var(--mauve);box-shadow:0 0 0 3px rgba(158,119,119,.14)}
textarea{min-height:150px;resize:vertical}
.form-note{font-size:.84rem;color:var(--muted)}
.success{display:none;background:var(--sand);border-left:3px solid var(--mauve);padding:1rem 1.2rem;margin-top:1.2rem;font-size:.95rem}
.success.show{display:block}
.contact-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(32px,5vw,64px);align-items:start}
.contact-list{list-style:none;padding:0;margin:2.2rem 0 0}
.contact-list li{margin-bottom:1.15rem;font-size:.98rem}
.contact-list strong{display:block;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:.15rem}

/* ---------- reveal ---------- */
html.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .85s var(--ease),transform .85s var(--ease)}
html.js .reveal.in{opacity:1;transform:none}


/* service lead lines */
.service-block p strong{
  display:block;font-family:var(--font-head);font-weight:400;font-size:1.1rem;line-height:1.4;
  letter-spacing:-.01em;color:var(--ink);margin-bottom:.55em
}
.service-block p+p{color:var(--muted)}
/* inner page hero treatment */
.page-head{padding:clamp(60px,8vw,104px) 0 clamp(20px,3vw,30px)}
.page-head h1{margin-bottom:.35em}
.page-head .orb-inline{
  position:absolute;width:clamp(280px,34vw,520px);height:clamp(280px,34vw,520px);border-radius:50%;
  right:-10vw;top:-18vw;pointer-events:none;z-index:1;will-change:transform;
  background:radial-gradient(circle at 35% 32%,rgba(229,178,153,.42),rgba(229,178,153,0) 70%)
}


/* footer colophon */
.colophon{margin:.9rem 0 0;font-size:.85rem;letter-spacing:.01em;color:var(--muted)}
.colophon a{color:var(--mauve);text-decoration:none;border-bottom:1px solid rgba(158,119,119,.35);padding-bottom:1px}
.colophon a:hover{border-bottom-color:var(--pink)}
.colophon .dot{margin:0 .6rem;color:var(--rule)}
.legal+.legal{margin-top:-.6em}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .steps,.grid,.points,.about-grid,.contact-grid{grid-template-columns:1fr}
  .hero p{max-width:none}
}
@media (max-width:720px){
  .menu-toggle{
    display:inline-flex;align-items:center;gap:.5rem;background:none;border:1px solid var(--rule);
    border-radius:3px;padding:.55rem .8rem;font-size:.88rem;cursor:pointer;color:var(--ink);
    font-family:inherit
  }
  .nav{
    display:none;position:absolute;left:0;right:0;top:78px;background:var(--ivory);
    border-bottom:1px solid var(--rule);flex-direction:column;align-items:stretch;gap:0;
    padding:10px var(--gut) 22px;box-shadow:0 18px 30px rgba(38,34,31,.08)
  }
  .nav.open{display:flex;animation:navIn .32s var(--ease)}
  @keyframes navIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
  .nav a{padding:.9rem 0;border-bottom:1px solid var(--rule)}
  .nav a::after{display:none}
  .nav .cta{text-align:center;margin-top:14px;border-bottom:none}
  .trust div{border-left:none;padding-left:0;border-top:1px solid var(--rule)}
  .trust div:first-child{border-top:none}
  h1{font-size:clamp(2.1rem,9vw,2.9rem)}
}

/* ---------- motion preferences ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  html.js .reveal{opacity:1;transform:none;transition:none}
  .orb,.cursor-glow{display:none}
  *{animation-duration:.001ms !important;transition-duration:.001ms !important}
}
