*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --charcoal:#2B2B2D;
  --soft-black:#1A1A1D;
  --slate:#6B6B70;
  --greige:#BDB6AF;
  --sand:#DCCFC6;
  --stone:#E9E2DD;
  --rose-clay:#A67B73;
  --rose-clay-deep:#8C6962;
  --mauve-brown:#7B5B55;
  --rose-gold:#D4B08C;
  --blush:#F3E9E4;
  --ivory:#FAF8F7;
  --white:#FFFFFF;
  --text:#2B2B2D;
  --text-mid:#5B5B60;
  --text-muted:#8C8680;
  --border:rgba(43,43,45,0.10);
  --border-rose:rgba(166,123,115,0.30);
  --serif:'Playfair Display',Georgia,'Book Antiqua',serif;
  --sans:'Lato',-apple-system,'Segoe UI',sans-serif;
  --radius:4px;
  --radius-lg:10px;
  --shadow:0 2px 20px rgba(43,43,45,0.08);
  --shadow-lg:0 8px 48px rgba(43,43,45,0.16);
}
html{font-size:16px;overflow-x:hidden}
/* Note: scroll-behavior is intentionally NOT 'smooth' here. The wheel
   smooth-scroll library (smoothscroll.min.js) animates the page via
   repeated scrollTo() calls; CSS smooth-scroll re-animates each of
   those calls and the two fight to a standstill. Anchor links get
   smooth behavior via a one-shot scrollIntoView in script.js. */
body{font-family:var(--sans);color:var(--text);background:var(--white);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;width:100%;}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}

/* ─── ANIMATIONS ─── */
.reveal{opacity:0;transform:translateY(28px);transition:opacity 0.7s ease,transform 0.7s ease}
.reveal.visible{opacity:1;transform:none}
.reveal-left{opacity:0;transform:translateX(-28px);transition:opacity 0.7s ease,transform 0.7s ease}
.reveal-left.visible{opacity:1;transform:none}
.reveal-right{opacity:0;transform:translateX(28px);transition:opacity 0.7s ease,transform 0.7s ease}
.reveal-right.visible{opacity:1;transform:none}
.delay-1{transition-delay:0.1s}
.delay-2{transition-delay:0.2s}
.delay-3{transition-delay:0.3s}
.delay-4{transition-delay:0.4s}

/* ─── NAV ─── */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 48px;height:72px;
  background:rgba(43,43,45,0.97);
  backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(255,255,255,0.06);
  transition:background 0.3s,border-color 0.3s,box-shadow 0.3s;
}
/* When the homepage is scrolled to the very top, the nav fades into the
   dark hero. As soon as the user scrolls past the hero, the .hero-mode
   class is removed (see script.js) and the nav goes back to its default
   charcoal panel so it stays readable over white sections. */
.home nav.hero-mode{
  background:transparent;
  border-bottom-color:transparent;
  backdrop-filter:none;
}
.home nav.hero-mode .btn-nav{
  background:var(--rose-clay);color:var(--charcoal);
}
.home nav.hero-mode .btn-nav:hover{background:var(--rose-clay-deep)}
.nav-logo{
  display:flex;align-items:center;
}
.nav-logo img{
  display:block;height:42px;width:auto;
}
.nav-links{display:flex;gap:36px;list-style:none;align-items:center}
.nav-links a{
  font-size:0.8rem;letter-spacing:0.10em;text-transform:uppercase;
  color:rgba(255,255,255,0.72);transition:color 0.2s;font-weight:400;
}
.nav-links a:hover{color:var(--white)}

/* Portal link in the nav (injected by script.js). Plain inline link so its
   text baseline matches the other nav items; the lock icon sits inline with
   a slight negative vertical-align so its center lines up with the cap height
   of the uppercase label. */
.nav-portal-link{
  font-size:0.8rem;letter-spacing:0.10em;text-transform:uppercase;
  color:rgba(255,255,255,0.72);transition:color 0.2s;font-weight:400;
}
.nav-portal-link:hover,.nav-portal-link.active{color:var(--rose-clay);}
.nav-portal-link .nav-portal-lock{
  display:inline-block;
  width:13px;height:13px;
  vertical-align:-2px;
  margin-right:6px;
  stroke:currentColor;color:#4a8a5e;
}
.nav-portal-link:hover .nav-portal-lock{color:#4a8a5e;}
.nav-right{display:flex;align-items:center;gap:20px}
.nav-phone{
  font-size:0.78rem;letter-spacing:0.06em;
  color:rgba(255,255,255,0.55);
}
.btn-nav{
  padding:9px 22px;border-radius:var(--radius);
  background:var(--rose-clay);color:var(--charcoal);
  font-size:0.78rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;
  transition:background 0.2s,transform 0.15s;
  border:none;cursor:pointer;font-family:var(--sans);
}
.btn-nav:hover{background:var(--rose-clay-deep);transform:translateY(-1px)}

/* ─── HERO ─── */
.hero{
  min-height:100vh;
  /* Dark hero matched to bulb.jpg's own near-black backdrop so the
     image's bg disappears against the page bg. */
  background:#1F1F22;
  display:grid;grid-template-columns:1fr 1fr;
  padding-top:72px;
  position:relative;overflow:hidden;
  color:#EFE2D7;
}
/* Bulb image anchored to the right column. The radial mask is centered at
   70% horizontal so the bright spot always sits in the right portion of
   the hero, even when the page narrows and the text column grows toward
   center. With hero bg ≈ image bg, any tiny luminance delta on the soft
   mask fade is invisible. */
.hero-bulb{
  /* Bulb is a direct child of .hero so it can position freely. It spans
     the right 60% of the hero (40-100%), so its visual center lands at
     ~70% of the page — right of the headline, near the sparkles. The
     radial mask is sized so the fade reaches full transparency at every
     edge of the bulb's bounding box, no visible rectangle on any side. */
  position:absolute;
  top:0;bottom:0;right:0;
  width:60%;
  object-fit:cover;object-position:center center;
  -webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 0%,#000 30%,transparent 100%);
          mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 0%,#000 30%,transparent 100%);
  pointer-events:none;
  z-index:0;
}
.hero-left,.hero-right{position:relative;z-index:2}
.hero-left{
  display:flex;flex-direction:column;justify-content:center;
  padding:104px 48px 64px 72px;
  position:relative;z-index:2;
}
.hero-pitch{
  font-family:var(--serif);font-size:clamp(2.1rem,3.6vw,3.3rem);
  font-weight:600;line-height:1.10;color:#FFFFFF;
  margin-bottom:24px;letter-spacing:-0.005em;
}
.hero-bullets{
  list-style:none;display:flex;flex-direction:column;gap:18px;
  margin:8px 0 0;padding:0;max-width:560px;
  color:rgba(239,226,215,0.85);font-size:0.98rem;line-height:1.55;font-weight:300;
}
.hero-bullets li{counter-increment:hero-bullets}
.hero-bullets{counter-reset:hero-bullets}
.hero-bullets li::before{
  content:counter(hero-bullets) ". ";
  color:var(--rose-clay);font-weight:600;
}
.hero-bullets strong{color:var(--rose-clay);font-weight:600}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  margin-bottom:28px;
}
.hero-eyebrow-line{width:32px;height:1px;background:rgba(239,226,215,0.45)}
.hero-eyebrow-text{
  font-size:0.72rem;letter-spacing:0.18em;text-transform:uppercase;
  color:rgba(239,226,215,0.65);font-weight:400;
}
.hero h1{
  font-family:var(--serif);font-size:clamp(2.8rem,4.5vw,4.2rem);
  font-weight:600;line-height:1.10;color:#FFFFFF;
  margin-bottom:24px;letter-spacing:-0.005em;
}
.hero h1 em{font-style:italic;color:var(--rose-clay);font-weight:500}
.hero h1 .hero-legacy{color:var(--rose-clay)}
.hero-sub{
  font-size:1.02rem;line-height:1.72;
  color:rgba(239,226,215,0.72);max-width:480px;margin-bottom:44px;font-weight:300;
}
.hero-ctas{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:56px}
.btn-primary{
  position:relative;overflow:hidden;
  padding:15px 32px;border-radius:var(--radius);
  background:var(--rose-clay);color:var(--charcoal);
  font-size:0.82rem;font-weight:500;letter-spacing:0.09em;text-transform:uppercase;
  transition:all 0.2s;border:none;cursor:pointer;font-family:var(--sans);
  display:inline-flex;align-items:center;gap:8px;
}
.btn-primary::after{
  content:"";position:absolute;top:0;left:-60%;
  width:50%;height:100%;
  background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,0.42) 50%,transparent 100%);
  transform:skewX(-22deg);
  animation:btnPrimaryShine 4.2s ease-in-out infinite;
  pointer-events:none;
}
.btn-primary > *{position:relative;z-index:1}
.btn-primary:hover{background:var(--rose-clay-deep);transform:translateY(-2px);box-shadow:0 8px 24px rgba(166,123,115,0.30)}

@keyframes btnPrimaryShine{
  0%   {left:-60%}
  55%  {left:120%}
  100% {left:120%}
}
.btn-outline{
  padding:15px 32px;border-radius:var(--radius);
  background:transparent;color:#F0E3D9;
  font-size:0.82rem;font-weight:400;letter-spacing:0.09em;text-transform:uppercase;
  border:1px solid rgba(240,227,217,0.32);transition:all 0.2s;cursor:pointer;font-family:var(--sans);
}
.btn-outline:hover{border-color:rgba(240,227,217,0.65);background:rgba(240,227,217,0.06)}
.hero-trust{
  display:flex;gap:28px;flex-wrap:wrap;
  padding-top:36px;border-top:1px solid rgba(240,227,217,0.16);
}
.trust-item{
  display:flex;flex-direction:column;gap:4px;
}
.trust-item-label{
  font-size:0.68rem;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(240,227,217,0.52);font-weight:400;
}
.trust-item-value{
  font-size:0.88rem;font-weight:500;
  color:rgba(240,227,217,0.92);letter-spacing:0.02em;
}
.hero-right{
  position:relative;z-index:2;
  display:flex;align-items:center;justify-content:center;
  padding:96px 72px 48px 24px;
}

/* ─── HERO FORM (sits on the right of the hero, above the fold) ─── */
.hero-form{
  width:100%;max-width:520px;
  background:rgba(43,43,45,0.82);
  border:1px solid rgba(240,227,217,0.10);
  border-radius:var(--radius-lg);
  padding:32px 32px 28px;
  box-shadow:0 24px 60px rgba(0,0,0,0.42);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  display:flex;flex-direction:column;gap:14px;
}
.hero-form-title{
  font-family:var(--serif);font-weight:500;
  font-size:1.55rem;color:#FFFFFF;text-align:center;
  margin-bottom:6px;letter-spacing:0.005em;
}
.hero-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hero-form .form-group{display:flex;flex-direction:column;gap:0}
.hero-form input,
.hero-form select,
.hero-form textarea{
  width:100%;background:#FFFFFF;color:var(--text);
  border:1px solid transparent;
  border-radius:var(--radius);
  padding:13px 16px;
  font-family:var(--sans);font-size:0.95rem;
  outline:none;transition:border-color 0.15s,box-shadow 0.15s;
}
.hero-form input::placeholder,
.hero-form textarea::placeholder{color:var(--text-muted)}
.hero-form input:focus,
.hero-form select:focus,
.hero-form textarea:focus{
  border-color:var(--rose-clay);
  box-shadow:0 0 0 3px rgba(166,123,115,0.20);
}
.hero-form textarea{resize:vertical;min-height:96px}
.hero-form select{
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23A67B73' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;
  padding-right:36px;
}
.hero-form-submit{
  margin-top:10px;position:relative;overflow:hidden;
  width:100%;border:none;cursor:pointer;
  background:linear-gradient(135deg,#C18A82 0%,var(--rose-clay) 50%,var(--rose-clay-deep) 100%);
  color:#FFFFFF;
  font-family:var(--sans);font-weight:700;
  font-size:1.05rem;letter-spacing:0.18em;text-transform:uppercase;
  padding:20px 24px;border-radius:var(--radius);
  box-shadow:
    0 0 0 1px rgba(255,255,255,0.10) inset,
    0 10px 24px rgba(166,123,115,0.40),
    0 0 28px rgba(212,176,140,0.25);
  transition:transform 0.18s ease,box-shadow 0.22s ease,filter 0.18s ease;
  animation:heroCtaPulse 2.6s ease-in-out infinite;
}
.hero-form-submit::after{
  content:"";position:absolute;top:0;left:-60%;
  width:50%;height:100%;
  background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,0.28) 50%,transparent 100%);
  transform:skewX(-22deg);
  animation:heroCtaShine 3.8s ease-in-out infinite;
  pointer-events:none;
}
.hero-form-submit:hover{
  transform:translateY(-2px);
  filter:brightness(1.06);
  box-shadow:
    0 0 0 1px rgba(255,255,255,0.14) inset,
    0 16px 36px rgba(166,123,115,0.55),
    0 0 36px rgba(212,176,140,0.40);
}
.hero-form-submit:active{transform:translateY(0)}
.hero-form-submit:disabled{opacity:0.7;cursor:wait;transform:none;animation:none}
.hero-form-submit:disabled::after{display:none}

@keyframes heroCtaPulse{
  0%,100%{box-shadow:
    0 0 0 1px rgba(255,255,255,0.10) inset,
    0 10px 24px rgba(166,123,115,0.40),
    0 0 28px rgba(212,176,140,0.25);}
  50%{box-shadow:
    0 0 0 1px rgba(255,255,255,0.14) inset,
    0 14px 34px rgba(166,123,115,0.55),
    0 0 44px rgba(212,176,140,0.45);}
}
@keyframes heroCtaShine{
  0%   {left:-60%}
  55%  {left:120%}
  100% {left:120%}
}
.hero-form .contact-form-status{
  margin-top:2px;font-size:0.88rem;color:rgba(239,226,215,0.9);
}
.hero-form .contact-form-status.success{color:#9BD9A8}
.hero-form .contact-form-status.error{color:#F4A89A}

/* ─── Mobile: stack the hero-pitch / hero-form layout used on the
   /book-your-free-consultation/ page ─── */
@media (max-width:900px){
  .hero.hero-pitch-form{grid-template-columns:1fr;min-height:auto;padding-top:88px;padding-bottom:32px}
  .hero.hero-pitch-form .hero-left{padding:32px 24px 8px}
  .hero.hero-pitch-form .hero-right{padding:8px 24px 32px;align-items:stretch;justify-content:center;display:flex}
  .hero-form{max-width:none;width:100%;padding:24px 22px 22px}
  .hero-form-title{font-size:1.3rem}
  .hero-form .form-row{grid-template-columns:1fr}
  .hero-bullets{max-width:none}
}

/* ─── HERO SPARKLES ─── */
.hero-sparkles{
  position:absolute;inset:0;pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18%,#000 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 18%,#000 100%);
}
.sparkle{
  position:absolute;
  left:var(--x);top:var(--y);
  width:var(--s,6px);height:var(--s,6px);
  border-radius:50%;
  background:radial-gradient(circle,#FFF6E6 0%,rgba(255,228,200,0.7) 35%,transparent 70%);
  box-shadow:
    0 0 10px 2px rgba(255,228,200,0.55),
    0 0 22px 4px rgba(212,176,140,0.30);
  opacity:0;
  transform:translate(-50%,-50%) scale(0.4);
  animation:sparkle 5.4s var(--d,0s) infinite ease-in-out;
  will-change:opacity,transform;
}
/* Warm rose-gold variant for variety */
.sparkle.warm{
  background:radial-gradient(circle,#F2D6BE 0%,rgba(212,176,140,0.7) 40%,transparent 75%);
  box-shadow:
    0 0 10px 2px rgba(212,176,140,0.50),
    0 0 24px 5px rgba(166,123,115,0.28);
}
/* Brighter sparkle, used for the filament center */
.sparkle.bright{
  background:radial-gradient(circle,#FFFFFF 0%,rgba(255,235,210,0.85) 35%,transparent 75%);
  box-shadow:
    0 0 14px 3px rgba(255,228,200,0.75),
    0 0 32px 7px rgba(212,176,140,0.40),
    0 0 60px 14px rgba(166,123,115,0.20);
}
@keyframes sparkle{
  0%, 100% { opacity:0; transform:translate(-50%,-50%) scale(0.4); }
  6%       { opacity:0.95; transform:translate(-50%,-50%) scale(1.25); }
  14%      { opacity:0.4; transform:translate(-50%,-50%) scale(0.85); }
  22%      { opacity:1; transform:translate(-50%,-50%) scale(1.45) rotate(8deg); }
  34%      { opacity:0; transform:translate(-50%,-50%) scale(0.4); }
}
@media (prefers-reduced-motion: reduce){
  .sparkle{ animation:none; opacity:0.55; transform:translate(-50%,-50%) scale(1); }
}

/* ─── STATS BAR ─── */
.stats-bar{
  background:var(--blush);
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  padding:36px 80px;
  display:flex;justify-content:space-between;align-items:center;
  gap:32px;
}
.stat-item{text-align:center;flex:1}
.stat-num{
  font-family:var(--serif);font-size:2.4rem;font-weight:600;
  color:var(--charcoal);line-height:1;display:block;margin-bottom:6px;
}
.stat-label{
  font-size:0.72rem;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--text-muted);font-weight:400;
}
.stat-divider{width:1px;height:48px;background:var(--border)}

/* ─── SERVICES ─── */
.services{padding:100px 80px;background:var(--white)}
.section-header{margin-bottom:64px}
.section-eyebrow{
  display:inline-flex;align-items:center;gap:10px;margin-bottom:18px;
}
.section-eyebrow-line{width:28px;height:1px;background:var(--rose-clay)}
.section-eyebrow-text{
  font-size:0.70rem;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--rose-clay);font-weight:400;
}
.section-title{
  font-family:var(--serif);font-size:clamp(2rem,3vw,3rem);
  font-weight:600;color:var(--charcoal);line-height:1.18;margin-bottom:16px;
}
.section-sub{
  font-size:1rem;color:var(--text-muted);max-width:560px;line-height:1.72;font-weight:300;
}
.services-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:24px;
}
.service-card{
  border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:36px 30px;background:var(--white);
  transition:all 0.3s;position:relative;overflow:hidden;
  display:flex;flex-direction:column;
  color:inherit;text-decoration:none;cursor:pointer;
}
.service-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:var(--rose-clay);transform:scaleX(0);transform-origin:left;
  transition:transform 0.3s;
}
.service-card:hover{border-color:rgba(166,123,115,0.25);box-shadow:var(--shadow-lg);transform:translateY(-4px)}
.service-card:hover::before{transform:scaleX(1)}
.service-icon{
  width:48px;height:48px;border-radius:var(--radius);
  background:var(--blush);display:flex;align-items:center;justify-content:center;
  margin-bottom:22px;
}
.service-icon svg{width:22px;height:22px;stroke:var(--rose-clay);stroke-width:1.6;fill:none}
.service-num{
  font-family:var(--serif);font-size:0.8rem;color:var(--text-muted);
  margin-bottom:10px;display:block;
}
.service-name{
  font-family:var(--serif);font-size:1.3rem;font-weight:600;
  color:var(--charcoal);margin-bottom:12px;line-height:1.25;
}
.service-desc{
  font-size:0.88rem;color:var(--text-muted);line-height:1.70;
  margin-bottom:28px;flex-grow:1;
}
.service-link{
  display:inline-flex;align-items:center;gap:6px;
  font-size:0.78rem;letter-spacing:0.10em;text-transform:uppercase;
  color:var(--rose-clay);font-weight:500;
  transition:gap 0.2s;
}
.service-link:hover{gap:10px}
.service-link svg{width:14px;height:14px;stroke:currentColor;stroke-width:2;fill:none}

/* ─── ABOUT ─── */
.about{
  padding:100px 80px;background:var(--blush);
  display:grid;grid-template-columns:5fr 7fr;gap:80px;align-items:center;
}
.about-img-wrap{position:relative}
.about-img-main{
  border-radius:var(--radius-lg);overflow:hidden;
  aspect-ratio:4/5;
}
.about-img-main img{width:100%;height:100%;object-fit:cover;object-position:top center}
.about-img-placeholder{
  width:100%;height:100%;min-height:480px;
  background:linear-gradient(145deg,var(--blush),var(--sand));
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:1.2rem;color:rgba(43,43,45,0.4);
  text-align:center;padding:30px;letter-spacing:0.04em;
}
.about-credential-strip{
  position:absolute;bottom:24px;left:-28px;
  background:var(--charcoal);color:var(--white);
  border-radius:var(--radius-lg);padding:16px 22px;
  box-shadow:var(--shadow-lg);min-width:220px;
}
.about-cred-title{
  font-size:0.62rem;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(255,255,255,0.45);margin-bottom:8px;display:block;
}
.about-cred-name{
  font-family:var(--serif);font-size:1.1rem;font-weight:600;
  color:var(--white);display:block;margin-bottom:4px;
}
.about-cred-role{
  font-size:0.78rem;color:var(--rose-clay);display:block;
}
.about-content{}
.about-bio{
  font-size:1.02rem;line-height:1.80;color:var(--text-mid);margin-bottom:28px;font-weight:300;
}
.about-quote{
  border-left:2px solid var(--rose-clay);padding-left:24px;margin:36px 0;
}
.about-quote p{
  font-family:var(--serif);font-size:1.25rem;font-style:italic;
  line-height:1.60;color:var(--charcoal);
}
.about-badges{display:flex;gap:12px;flex-wrap:wrap;margin-top:36px}
.badge{
  padding:8px 16px;border-radius:2px;
  border:1px solid var(--border-rose);
  font-size:0.72rem;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--rose-clay);font-weight:400;background:rgba(166,123,115,0.04);
}

/* ─── PROCESS ─── */
.process{padding:100px 80px;background:var(--white)}
.process-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:48px;
  margin-top:64px;position:relative;
}
.process-grid::before{
  content:'';position:absolute;top:30px;left:calc(16.66% + 16px);
  right:calc(16.66% + 16px);height:1px;
  background:linear-gradient(90deg,var(--rose-clay),transparent 50%,var(--rose-clay));
  opacity:0.25;
}
.process-step{text-align:center;padding:0 20px}
.process-num{
  font-family:var(--serif);font-size:3rem;font-weight:600;
  color:var(--blush);line-height:1;margin-bottom:20px;display:block;
}
.process-icon{
  width:60px;height:60px;border-radius:50%;
  background:var(--blush);border:1px solid var(--border-rose);
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 20px;
}
.process-icon svg{width:24px;height:24px;stroke:var(--rose-clay);stroke-width:1.6;fill:none}
.process-title{
  font-family:var(--serif);font-size:1.2rem;font-weight:600;
  color:var(--charcoal);margin-bottom:10px;
}
.process-desc{font-size:0.88rem;color:var(--text-muted);line-height:1.72}

/* ─── CTA BANNER ─── */
.cta-banner{
  background:linear-gradient(135deg,#B68A82 0%,#A67B73 60%,#8C6962 100%);
  padding:80px;
  display:grid;grid-template-columns:1fr auto;
  align-items:center;gap:48px;position:relative;overflow:hidden;
}
.cta-banner::after{
  content:'';position:absolute;right:0;top:0;bottom:0;width:40%;
  background:linear-gradient(90deg,transparent,rgba(43,43,45,0.06));
  pointer-events:none;
}
.cta-label{
  font-size:0.68rem;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--charcoal);display:block;margin-bottom:16px;font-weight:600;
}
.cta-title{
  font-family:var(--serif);font-size:clamp(1.8rem,3vw,2.8rem);
  font-weight:600;color:var(--charcoal);line-height:1.18;
}
.cta-title em{font-style:italic;color:#fff}
.cta-right{display:flex;flex-direction:column;align-items:flex-end;gap:16px;position:relative;z-index:1}
.cta-phone{
  font-family:var(--serif);font-size:1.4rem;font-weight:600;color:var(--charcoal);
  text-decoration:none;
}
.cta-phone:hover{color:var(--charcoal);text-decoration:underline}
.cta-phone-label{
  font-size:0.68rem;letter-spacing:0.12em;text-transform:uppercase;
  color:rgba(43,43,45,0.55);display:block;text-align:right;margin-bottom:4px;
  font-weight:600;
}
/* Book Online button on the rose-gold banner: inverted to charcoal-on-cream */
.cta-banner .btn-primary{
  background:var(--charcoal);color:#F4E9DE;
}
.cta-banner .btn-primary:hover{
  background:#1A1A1C;color:#fff;box-shadow:0 8px 24px rgba(0,0,0,0.20);
}

/* ─── NEWS ─── */
.news{padding:100px 80px;background:var(--blush)}
.news-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:64px;
}
.news-card{
  display:block;color:inherit;
  background:var(--white);border-radius:var(--radius-lg);
  border:1px solid var(--border);overflow:hidden;
  transition:transform 0.3s,box-shadow 0.3s;
}
.news-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.news-card-img{
  height:200px;overflow:hidden;
  background:linear-gradient(145deg,var(--mauve-brown),var(--charcoal));
}
.news-card-img img{width:100%;height:100%;object-fit:cover;display:block}
.news-card-img-placeholder{
  width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;
  font-size:0.78rem;letter-spacing:0.06em;color:rgba(255,255,255,0.6);
}
.news-footer{
  display:flex;justify-content:center;margin-top:48px;
}
.news-footer .btn-outline{
  color:var(--charcoal);border-color:var(--border);
}
.news-footer .btn-outline:hover{
  border-color:var(--rose-clay);color:var(--rose-clay);background:transparent;
}
.news-empty{
  grid-column:1/-1;text-align:center;padding:40px 20px;
  color:var(--text-muted);
}
.news-card-body{padding:28px}
.news-tag{
  display:inline-block;margin-bottom:12px;padding:4px 10px;
  border-radius:2px;background:var(--blush);
  font-size:0.65rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--rose-clay);
}
.news-title{
  font-family:var(--serif);font-size:1.1rem;font-weight:600;
  color:var(--charcoal);line-height:1.35;margin-bottom:12px;
}
.news-excerpt{font-size:0.83rem;color:var(--text-muted);line-height:1.65}
.news-read{
  display:inline-flex;align-items:center;gap:6px;
  margin-top:18px;font-size:0.75rem;letter-spacing:0.10em;text-transform:uppercase;
  color:var(--rose-clay);font-weight:500;
}

/* ─── CONTACT ─── */
.contact{
  padding:100px 80px;background:var(--white);
}
.contact-header{
  max-width:1080px;margin:0 auto 64px;text-align:center;
}
.contact-header .section-title,
.contact-header .contact-lede{max-width:760px;margin-left:auto;margin-right:auto;}
.contact-header .section-eyebrow{justify-content:center}
.contact-lede{
  font-size:1.05rem;line-height:1.72;color:var(--text-mid);
  margin:14px auto 40px;max-width:600px;font-weight:300;
}
.contact-info-row{
  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
  text-align:left;
}
.contact-detail{
  display:flex;gap:14px;align-items:flex-start;color:inherit;
  padding:18px 20px;border:1px solid var(--border);border-radius:var(--radius-lg);
  transition:border-color 0.2s,background 0.2s;
}
a.contact-detail:hover{
  border-color:var(--rose-clay);background:var(--ivory);
}
.contact-detail-icon{
  width:40px;height:40px;border-radius:var(--radius);flex-shrink:0;
  background:var(--blush);display:flex;align-items:center;justify-content:center;
  margin-top:2px;
}
.contact-detail-icon svg{width:18px;height:18px;stroke:var(--rose-clay);stroke-width:1.6;fill:none}
.contact-detail-label{
  font-size:0.66rem;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--text-muted);margin-bottom:4px;display:block;font-weight:700;
}
.contact-detail-value{
  font-family:var(--serif);font-size:1.05rem;font-weight:600;color:var(--charcoal);
  display:block;line-height:1.4;
}
/* Keep the phone number on a single line. The address still wraps where appropriate. */
.contact-detail[href^="tel:"] .contact-detail-value{white-space:nowrap;}
.contact-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:48px;
  max-width:1200px;margin:0 auto;
}
.contact-col{
  background:var(--white);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:36px 36px 30px;
  display:flex;flex-direction:column;
  scroll-margin-top:92px;
}
.contact-col-header{margin-bottom:24px}
.contact-col-title{
  font-family:var(--serif);font-size:1.5rem;font-weight:600;
  color:var(--charcoal);margin-bottom:8px;
}
.contact-col-sub{
  font-size:0.92rem;color:var(--text-muted);line-height:1.6;
}
.contact-cal-embed{
  flex:1;min-height:680px;width:100%;
  border:1px solid var(--border);border-radius:var(--radius);overflow:auto;
  background:var(--white);
}
.contact-form-status{
  margin-top:14px;padding:12px 14px;border-radius:var(--radius);
  font-size:0.9rem;line-height:1.5;
}
.contact-form-status.success{
  background:rgba(46,122,79,0.08);color:#2e7a4f;border:1px solid rgba(46,122,79,0.22);
}
.contact-form-status.error{
  background:rgba(184,54,14,0.08);color:#b8360e;border:1px solid rgba(184,54,14,0.22);
}
.contact-form{display:flex;flex-direction:column;gap:18px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group label{
  font-size:0.72rem;letter-spacing:0.10em;text-transform:uppercase;
  color:var(--text-muted);font-weight:400;
}
.form-group input,
.form-group select,
.form-group textarea{
  padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius);
  font-size:0.92rem;font-family:var(--sans);color:var(--text);
  background:var(--white);transition:border-color 0.2s;outline:none;
  appearance:none;
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus{border-color:var(--rose-clay)}
.form-group textarea{resize:vertical;min-height:110px}
.form-group select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23A67B73' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}
.btn-form{
  padding:15px 36px;border-radius:var(--radius);width:100%;
  background:var(--charcoal);color:var(--white);
  font-size:0.82rem;font-weight:500;letter-spacing:0.09em;text-transform:uppercase;
  border:none;cursor:pointer;font-family:var(--sans);
  transition:background 0.2s,transform 0.15s;
}
.btn-form:hover{background:var(--mauve-brown);transform:translateY(-1px)}
.or-divider{
  text-align:center;font-size:0.78rem;color:var(--text-muted);
  display:flex;align-items:center;gap:16px;
}
.or-divider::before,.or-divider::after{
  content:'';flex:1;height:1px;background:var(--border);
}

/* ─── FOOTER ─── */
footer{
  background:var(--charcoal);padding:48px 80px;
  display:grid;grid-template-columns:2fr 1fr 1fr;gap:64px;
  border-top:1px solid rgba(255,255,255,0.06);
}
.footer-brand{}
.footer-logo{
  display:block;margin-bottom:18px;
}
.footer-logo img{
  display:block;height:56px;width:auto;
}
.footer-tagline{
  font-size:0.82rem;line-height:1.65;
  color:rgba(255,255,255,0.42);max-width:280px;margin-bottom:20px;font-weight:300;
}
.footer-address{
  font-size:0.78rem;color:rgba(255,255,255,0.35);line-height:1.65;
}
.footer-col-title{
  font-size:0.68rem;letter-spacing:0.16em;text-transform:uppercase;
  color:rgba(255,255,255,0.38);margin-bottom:18px;
}
.footer-links{list-style:none;display:flex;flex-direction:column;gap:10px}
.footer-links a{
  font-size:0.84rem;color:rgba(255,255,255,0.55);transition:color 0.2s;
}
.footer-links a:hover{color:var(--white)}
.footer-bottom{
  background:var(--charcoal);padding:20px 80px;
  border-top:1px solid rgba(255,255,255,0.05);
  display:flex;justify-content:space-between;align-items:center;
}
.footer-copy{font-size:0.75rem;color:rgba(255,255,255,0.28)}

/* ─── SERVICE DETAIL PAGE ─── */
.service-hero{
  background:var(--charcoal);color:var(--white);
  padding:140px 80px 80px;position:relative;overflow:hidden;
}
.service-hero::before{
  content:'';position:absolute;top:-100px;right:-80px;width:600px;height:600px;
  background:radial-gradient(circle,rgba(166,123,115,0.10) 0%,transparent 65%);
  pointer-events:none;
}
.service-hero-inner{position:relative;z-index:1;max-width:780px}
.service-hero .service-num{
  font-family:var(--serif);font-size:0.86rem;color:var(--rose-clay);
  letter-spacing:0.18em;text-transform:uppercase;margin-bottom:18px;display:inline-block;
}
.service-hero-title{
  font-family:var(--serif);font-size:clamp(2.4rem,4vw,3.6rem);
  font-weight:600;line-height:1.12;color:var(--white);margin-bottom:20px;
}
.service-hero-sub{
  font-size:1.10rem;line-height:1.7;color:rgba(255,255,255,0.70);
  max-width:600px;font-weight:300;margin-bottom:34px;
}
.service-hero-meta{
  display:flex;flex-wrap:wrap;gap:32px;
  padding-top:30px;border-top:1px solid rgba(255,255,255,0.10);
}
.service-meta-item{
  display:flex;flex-direction:column;gap:4px;
}
.service-meta-label{
  font-size:0.66rem;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(255,255,255,0.42);
}
.service-meta-value{
  font-size:0.92rem;color:rgba(255,255,255,0.92);font-weight:500;
}

.service-body{
  background:var(--white);padding:80px 80px 90px;
}
.service-body-grid{
  display:grid;grid-template-columns:7fr 4fr;gap:64px;
  max-width:1200px;margin:0 auto;align-items:start;
}
.service-content > * + *{margin-top:18px}
.service-content h2{
  font-family:var(--serif);font-size:1.6rem;font-weight:600;
  color:var(--charcoal);line-height:1.25;
  margin-top:44px;margin-bottom:14px;
}
.service-content h2:first-child{margin-top:0}
.service-content p{
  font-size:1rem;line-height:1.78;color:var(--text-mid);font-weight:400;
}
.service-content strong{color:var(--charcoal);font-weight:700}
.service-checklist{
  list-style:none;padding:0;margin:0;
}
.service-checklist li{
  position:relative;padding:8px 0 8px 30px;
  font-size:0.98rem;line-height:1.6;color:var(--text-mid);
  border-bottom:1px solid var(--border);
}
.service-checklist li:last-child{border-bottom:none}
.service-checklist li::before{
  content:'';position:absolute;left:0;top:14px;
  width:14px;height:14px;border-radius:50%;
  background:var(--blush);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23A67B73' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 8.5 6.5 12 13 5'/%3E%3C/svg%3E");
  background-size:10px;background-position:center;background-repeat:no-repeat;
}
.service-process{
  list-style:none;padding:0;margin:0;counter-reset:step;
}
.service-process li{
  counter-increment:step;
  position:relative;padding:18px 0 18px 56px;
  font-size:0.98rem;line-height:1.6;color:var(--text-mid);
  border-bottom:1px solid var(--border);
}
.service-process li:last-child{border-bottom:none}
.service-process li::before{
  content:counter(step);
  position:absolute;left:0;top:18px;
  width:36px;height:36px;border-radius:50%;
  background:var(--rose-clay);color:var(--white);
  font-family:var(--serif);font-size:0.95rem;font-weight:600;
  display:flex;align-items:center;justify-content:center;
}
.service-process li strong{display:block;color:var(--charcoal);margin-bottom:4px;font-size:1.02rem}
.service-faq{
  border:1px solid var(--border);border-radius:var(--radius);
  margin-bottom:10px;background:var(--white);
}
.service-faq summary{
  padding:18px 22px;font-family:var(--serif);font-size:1.05rem;
  font-weight:600;color:var(--charcoal);cursor:pointer;
  list-style:none;display:flex;justify-content:space-between;align-items:center;gap:14px;
}
.service-faq summary::-webkit-details-marker{display:none}
.service-faq summary::after{
  content:'+';color:var(--rose-clay);font-size:1.4rem;font-weight:300;
  transition:transform 0.2s;
}
.service-faq[open] summary::after{transform:rotate(45deg)}
.service-faq[open] summary{border-bottom:1px solid var(--border)}
.service-faq p{
  padding:18px 22px;font-size:0.96rem;line-height:1.7;color:var(--text-mid);
}

.service-cta-card{
  background:var(--charcoal);color:var(--white);
  padding:36px 32px;border-radius:var(--radius-lg);
  position:sticky;top:96px;
}
.service-cta-card h3{
  font-family:var(--serif);font-size:1.4rem;font-weight:600;
  color:var(--white);margin-bottom:10px;
}
.service-cta-card p{
  font-size:0.94rem;line-height:1.6;color:rgba(255,255,255,0.65);
  margin-bottom:22px;font-weight:300;
}
.service-cta-card .btn-primary,
.service-cta-card .btn-outline-light{
  display:flex;justify-content:center;width:100%;margin-bottom:12px;
}
.btn-outline-light{
  padding:13px 24px;border-radius:var(--radius);
  background:transparent;color:var(--white);
  font-size:0.78rem;font-weight:400;letter-spacing:0.09em;text-transform:uppercase;
  border:1px solid rgba(255,255,255,0.32);transition:all 0.2s;cursor:pointer;
  font-family:var(--sans);text-align:center;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
}
.btn-outline-light:hover{border-color:rgba(255,255,255,0.72);background:rgba(255,255,255,0.06)}
.service-cta-detail{
  margin-top:18px;padding-top:18px;border-top:1px solid rgba(255,255,255,0.10);
  text-align:center;font-size:0.82rem;
}
.service-cta-detail span{
  display:block;color:rgba(255,255,255,0.45);
  letter-spacing:0.08em;text-transform:uppercase;font-size:0.66rem;margin-bottom:6px;
}
.service-cta-detail a{
  font-family:var(--serif);font-size:1.15rem;color:var(--white);font-weight:600;
}

/* Pricing card block used inside service pages */
.pricing-grid{
  display:grid;gap:18px;grid-template-columns:1fr;
  margin:24px 0 16px;
}
.pricing-grid.two-up{grid-template-columns:1fr 1fr}
.pricing-card{
  background:var(--blush);
  border:1px solid var(--border-rose);
  border-radius:var(--radius-lg);
  padding:32px 30px 28px;
  display:flex;flex-direction:column;
}
.pricing-card.featured{
  background:var(--charcoal);color:var(--white);
  border-color:var(--charcoal);
}
.pricing-amount{
  font-family:var(--serif);font-size:2.6rem;font-weight:600;
  color:var(--charcoal);line-height:1;
}
.pricing-card.featured .pricing-amount{color:var(--white)}
.pricing-amount-suffix{
  display:block;margin-top:6px;margin-bottom:18px;
  font-size:0.72rem;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--text-muted);font-weight:500;
}
.pricing-card.featured .pricing-amount-suffix{color:rgba(255,255,255,0.5)}
.pricing-name{
  font-family:var(--serif);font-size:1.18rem;font-weight:600;
  color:var(--charcoal);margin-bottom:10px;
}
.pricing-card.featured .pricing-name{color:var(--white)}
.pricing-desc{
  font-size:0.92rem;line-height:1.6;color:var(--text-mid);
  margin-bottom:18px;font-weight:300;
}
.pricing-card.featured .pricing-desc{color:rgba(255,255,255,0.72)}
.pricing-list{
  list-style:none;padding:0;margin:0 0 18px;
  border-top:1px solid rgba(43,43,45,0.10);
}
.pricing-card.featured .pricing-list{border-top-color:rgba(255,255,255,0.10)}
.pricing-list li{
  position:relative;padding:8px 0 8px 22px;
  font-size:0.9rem;color:var(--text-mid);line-height:1.55;
  border-bottom:1px solid rgba(43,43,45,0.06);
}
.pricing-card.featured .pricing-list li{
  color:rgba(255,255,255,0.78);
  border-bottom-color:rgba(255,255,255,0.08);
}
.pricing-list li:last-child{border-bottom:none}
.pricing-list li::before{
  content:'';position:absolute;left:0;top:13px;
  width:12px;height:12px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23A67B73' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 8.5 6.5 12 13 5'/%3E%3C/svg%3E");
  background-size:12px;background-position:center;background-repeat:no-repeat;
}
.pricing-card.featured .pricing-list li::before{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23D4B08C' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 8.5 6.5 12 13 5'/%3E%3C/svg%3E");
}
.pricing-extras{
  margin-top:auto;padding-top:14px;
  border-top:1px dashed rgba(43,43,45,0.18);
  font-size:0.84rem;color:var(--text-muted);line-height:1.55;
}
.pricing-card.featured .pricing-extras{
  border-top-color:rgba(255,255,255,0.18);
  color:rgba(255,255,255,0.55);
}
.pricing-extras strong{color:var(--charcoal);font-weight:700}
.pricing-card.featured .pricing-extras strong{color:var(--white)}
.pricing-note{
  font-size:0.86rem;color:var(--text-muted);font-style:italic;
  margin-top:8px;line-height:1.6;
}

/* Small price tag shown on the homepage service cards */
.service-card .service-price{
  display:inline-block;margin-top:10px;
  font-family:var(--serif);font-size:0.95rem;font-weight:600;
  color:var(--charcoal);
}
.service-card .service-price-suffix{
  font-family:var(--sans);font-size:0.7rem;font-weight:500;
  letter-spacing:0.08em;text-transform:uppercase;
  color:var(--text-muted);margin-left:4px;
}

@media (max-width:760px){
  .pricing-grid.two-up{grid-template-columns:1fr}
}

.service-others{
  background:var(--blush);padding:80px 80px 100px;
}
.service-others-title{
  font-family:var(--serif);font-size:1.7rem;font-weight:600;
  text-align:center;color:var(--charcoal);margin-bottom:40px;
}
.service-others .services-grid{max-width:1200px;margin:0 auto}

/* ─── BLOG LIST PAGE ─── */
.blog-hero{
  background:var(--charcoal);color:var(--white);
  padding:140px 80px 80px;position:relative;overflow:hidden;
}
.blog-hero::before{
  content:'';position:absolute;top:-80px;right:-60px;width:520px;height:520px;
  background:radial-gradient(circle,rgba(166,123,115,0.10) 0%,transparent 65%);
  pointer-events:none;
}
.blog-hero-inner{position:relative;z-index:1;max-width:760px}
.blog-hero .section-eyebrow-line{background:var(--rose-clay)}
.blog-hero .section-eyebrow-text{color:var(--rose-clay)}
.blog-hero-title{
  font-family:var(--serif);font-size:clamp(2.4rem,4vw,3.6rem);
  font-weight:600;line-height:1.15;color:var(--white);margin-bottom:20px;
}
.blog-hero-title em{font-style:italic;color:var(--rose-clay)}
.blog-hero-sub{
  font-size:1.05rem;line-height:1.72;color:rgba(255,255,255,0.62);
  max-width:560px;font-weight:300;
}
.blog-filter{
  background:var(--white);padding:32px 80px 0;
  display:flex;gap:12px;justify-content:center;flex-wrap:wrap;
  border-bottom:1px solid var(--border);
}
.blog-filter-tab{
  padding:14px 24px;font-family:var(--sans);font-size:0.78rem;
  letter-spacing:0.10em;text-transform:uppercase;font-weight:500;
  color:var(--text-mid);border-bottom:2px solid transparent;
  transition:color 0.2s,border-color 0.2s;margin-bottom:-1px;
}
.blog-filter-tab:hover{color:var(--rose-clay)}
.blog-filter-tab.active{color:var(--rose-clay);border-bottom-color:var(--rose-clay)}
.blog-list{padding:90px 80px;background:var(--white)}
.blog-list-loading,.blog-list-empty{
  text-align:center;color:var(--text-muted);padding:60px 0;
  font-size:0.95rem;letter-spacing:0.04em;
}
.blog-featured{
  display:grid;grid-template-columns:6fr 5fr;gap:48px;
  align-items:stretch;margin-bottom:80px;
  border-radius:var(--radius-lg);overflow:hidden;
  background:var(--blush);transition:transform 0.3s,box-shadow 0.3s;
  color:inherit;
}
.blog-featured:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.blog-featured-img{
  position:relative;overflow:hidden;min-height:340px;
  background:linear-gradient(145deg,var(--mauve-brown),var(--charcoal));
}
.blog-featured-img img{width:100%;height:100%;object-fit:cover;display:block}
.post-img-fallback{
  width:100%;height:100%;
  background:linear-gradient(145deg,var(--mauve-brown),var(--charcoal));
}
.post-img-fallback.lg{min-height:340px}
.blog-featured-body{
  padding:48px 44px;display:flex;flex-direction:column;justify-content:center;
}
.blog-featured-title{
  font-family:var(--serif);font-size:clamp(1.6rem,2.4vw,2.2rem);
  font-weight:600;color:var(--charcoal);line-height:1.22;
  margin:14px 0 16px;
}
.blog-featured-excerpt{
  font-size:1rem;line-height:1.72;color:var(--text-mid);
  margin-bottom:28px;font-weight:300;
}
.blog-featured-meta{
  display:flex;justify-content:space-between;align-items:center;
  font-size:0.78rem;letter-spacing:0.10em;text-transform:uppercase;
  color:var(--text-muted);
}
.blog-featured-cta{color:var(--rose-clay);font-weight:500}
.blog-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;
}
.blog-card{
  background:var(--white);border-radius:var(--radius-lg);
  border:1px solid var(--border);overflow:hidden;
  transition:transform 0.3s,box-shadow 0.3s;
  display:flex;flex-direction:column;color:inherit;
}
.blog-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.blog-card-img{height:200px;overflow:hidden;background:var(--blush)}
.blog-card-img img{width:100%;height:100%;object-fit:cover;display:block}
.blog-card-body{padding:26px 26px 24px;display:flex;flex-direction:column;flex-grow:1}
.blog-card-title{
  font-family:var(--serif);font-size:1.18rem;font-weight:600;
  color:var(--charcoal);line-height:1.32;margin:12px 0 12px;
}
.blog-card-excerpt{
  font-size:0.88rem;color:var(--text-muted);line-height:1.65;
  margin-bottom:18px;flex-grow:1;
}
.blog-card-meta{
  display:flex;justify-content:space-between;align-items:center;
  font-size:0.72rem;letter-spacing:0.10em;text-transform:uppercase;
  color:var(--text-muted);padding-top:14px;border-top:1px solid var(--border);
}
.blog-card-cta{color:var(--rose-clay);font-weight:500}

/* ─── SINGLE POST PAGE ─── */
.post-hero{
  background:var(--charcoal);color:var(--white);
  padding:140px 80px 70px;position:relative;overflow:hidden;
}
.post-hero::before{
  content:'';position:absolute;top:-80px;right:-60px;width:520px;height:520px;
  background:radial-gradient(circle,rgba(166,123,115,0.10) 0%,transparent 65%);
  pointer-events:none;
}
.post-hero-inner{position:relative;z-index:1;max-width:780px;margin:0 auto}
.post-back{
  display:inline-flex;align-items:center;gap:6px;
  font-size:0.74rem;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(255,255,255,0.55);margin-bottom:28px;
  transition:color 0.2s;
}
.post-back:hover{color:var(--white)}
.post-tag{
  display:inline-block;margin-bottom:18px;padding:5px 12px;
  border-radius:2px;background:rgba(166,123,115,0.18);
  font-size:0.66rem;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--rose-clay);
}
.post-title{
  font-family:var(--serif);font-size:clamp(2rem,3.6vw,3.2rem);
  font-weight:600;line-height:1.18;color:var(--white);margin-bottom:18px;
}
.post-meta{
  font-size:0.78rem;letter-spacing:0.08em;
  color:rgba(255,255,255,0.50);
}
.post-feature-img{
  max-width:1080px;margin:0 auto;padding:0 80px;
  margin-top:-40px;position:relative;z-index:5;
}
.post-feature-img img{
  width:100%;height:auto;display:block;
  border-radius:var(--radius-lg);
  box-shadow:0 20px 60px rgba(43,43,45,0.20);
}
.post-article{
  max-width:760px;margin:0 auto;padding:80px 32px 100px;
}
.post-body{
  font-size:1.06rem;line-height:1.78;color:var(--text-mid);font-weight:400;
}
.post-body > *:first-child{margin-top:0}
.post-body p{margin:0 0 22px}
.post-body h2{
  font-family:var(--serif);font-size:1.7rem;font-weight:600;
  color:var(--charcoal);line-height:1.25;
  margin:46px 0 18px;
}
.post-body h3{
  font-family:var(--serif);font-size:1.32rem;font-weight:600;
  color:var(--charcoal);line-height:1.3;
  margin:38px 0 14px;
}
.post-body h4{
  font-family:var(--serif);font-size:1.12rem;font-weight:600;
  color:var(--charcoal);margin:30px 0 12px;
}
.post-body a{
  color:var(--rose-clay);border-bottom:1px solid rgba(166,123,115,0.30);
  transition:color 0.2s,border-color 0.2s;
}
.post-body a:hover{color:var(--rose-clay-deep);border-bottom-color:var(--rose-clay)}
.post-body strong{color:var(--charcoal);font-weight:700}
.post-body em{font-style:italic}
.post-body ul,.post-body ol{margin:0 0 22px 24px;padding:0}
.post-body li{margin-bottom:8px}
.post-body blockquote{
  border-left:3px solid var(--rose-clay);
  padding:6px 0 6px 22px;margin:28px 0;
  font-family:var(--serif);font-size:1.18rem;font-style:italic;
  color:var(--charcoal);line-height:1.6;
}
.post-body img,
.post-body figure{
  display:block;max-width:100%;height:auto;
  margin:32px auto;border-radius:var(--radius);
}
.post-body figure img{margin:0}
.post-body figcaption{
  font-size:0.82rem;color:var(--text-muted);
  text-align:center;margin-top:8px;font-style:italic;
}
.post-body hr{
  border:none;height:1px;background:var(--border);margin:40px 0;
}
.post-body table{
  width:100%;border-collapse:collapse;margin:28px 0;
  font-size:0.95rem;
}
.post-body th,.post-body td{
  padding:12px 14px;border:1px solid var(--border);text-align:left;
}
.post-body th{background:var(--blush);color:var(--charcoal);font-weight:600}
.post-body code{
  background:var(--stone);padding:2px 6px;border-radius:3px;
  font-size:0.92em;font-family:Menlo,Consolas,monospace;
}
.post-body pre{
  background:var(--charcoal);color:var(--ivory);
  padding:18px 22px;border-radius:var(--radius);overflow-x:auto;
  margin:24px 0;font-size:0.9rem;
}
.post-body pre code{background:transparent;color:inherit;padding:0}
.post-body iframe{
  display:block;max-width:100%;margin:28px auto;
  border:1px solid var(--border);border-radius:var(--radius);
}
.post-footer{
  border-top:1px solid var(--border);
  margin-top:56px;padding-top:36px;
  display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:16px;
}
.post-footer-back{
  display:inline-flex;align-items:center;gap:6px;
  font-size:0.78rem;letter-spacing:0.10em;text-transform:uppercase;
  color:var(--rose-clay);font-weight:500;
}
.post-related{
  background:var(--blush);padding:80px 80px 100px;
}
.post-related-title{
  font-family:var(--serif);font-size:1.6rem;font-weight:600;
  color:var(--charcoal);text-align:center;margin-bottom:40px;
}
.post-related-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
  max-width:1200px;margin:0 auto;
}
.post-loading,.post-not-found{
  text-align:center;padding:200px 32px;color:var(--text-muted);
}
.post-not-found h1{
  font-family:var(--serif);font-size:2rem;color:var(--charcoal);
  margin-bottom:16px;
}

/* ─── SECURE PORTAL PROMO (homepage) ─── */
.portal-promo{
  background:var(--charcoal);
  padding:100px 80px;
  position:relative;overflow:hidden;
  color:#F4E9DE;
}
.portal-promo::before{
  content:'';position:absolute;top:-120px;right:-80px;width:560px;height:560px;
  background:radial-gradient(circle,rgba(166,123,115,0.12) 0%,transparent 65%);
  pointer-events:none;
}
.portal-promo-inner{
  max-width:1200px;margin:0 auto;position:relative;z-index:1;
}
.portal-promo-lede{
  font-size:1.05rem;line-height:1.72;
  color:rgba(244,233,222,0.72);
  margin:18px auto 0;max-width:600px;font-weight:300;
}
.portal-promo .section-eyebrow-line{background:rgba(166,123,115,0.45)}
.portal-promo .section-eyebrow-text{color:var(--rose-clay)}
.portal-promo-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;
  margin-bottom:56px;
}
.portal-feature{
  background:rgba(255,255,255,0.03);
  border:1px solid rgba(244,233,222,0.10);
  border-radius:var(--radius-lg);
  padding:36px 30px;
  transition:border-color 0.3s,background 0.3s;
}
.portal-feature:hover{
  border-color:rgba(166,123,115,0.35);
  background:rgba(255,255,255,0.05);
}
.portal-feature-icon{
  width:48px;height:48px;border-radius:var(--radius);
  background:rgba(166,123,115,0.12);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:20px;
}
.portal-feature-icon svg{
  width:22px;height:22px;
  stroke:var(--rose-clay);
  fill:none;
  stroke-linecap:round;stroke-linejoin:round;
}
/* Lock icon on the first feature card gets the security-green treatment. */
.portal-feature:first-child .portal-feature-icon{background:rgba(74,138,94,0.14);}
.portal-feature:first-child .portal-feature-icon svg{stroke:#5fa874;}
.portal-feature-title{
  font-family:var(--serif);font-size:1.25rem;font-weight:600;
  color:#F4E9DE;margin-bottom:12px;line-height:1.25;
}
.portal-feature-desc{
  font-size:0.95rem;line-height:1.72;
  color:rgba(244,233,222,0.68);font-weight:300;
}
.portal-promo-cta{
  text-align:center;
}
.portal-promo-cta .btn-primary{
  margin:0 auto;
}
.portal-promo-note{
  margin:18px auto 0;
  font-size:0.85rem;
  color:rgba(244,233,222,0.55);
  font-style:italic;
}

@media (max-width:900px){
  .portal-promo{padding:64px 28px;}
  .portal-promo-grid{grid-template-columns:1fr;gap:18px;margin-bottom:40px;}
}

/* ─── RESPONSIVE: hamburger nav + hero stacking ─── */

/* On desktop, the JS-injected .nav-drawer is invisible to layout
   (display:contents) so its children — .nav-links and .nav-right — behave
   as direct flex children of <nav>. The desktop nav looks unchanged. */
.nav-drawer{display:contents;}

/* Hamburger button. Hidden on desktop, visible at tablet width. */
.nav-toggle{
  display:none;
  background:transparent;border:0;padding:0;
  width:42px;height:42px;cursor:pointer;
  position:relative;z-index:101;
}
.nav-toggle span{
  display:block;position:absolute;left:9px;right:9px;height:1.5px;
  background:#F0E3D9;transition:transform 0.25s,top 0.25s,opacity 0.2s;
  border-radius:2px;
}
.nav-toggle span:nth-child(1){top:14px;}
.nav-toggle span:nth-child(2){top:20px;}
.nav-toggle span:nth-child(3){top:26px;}
nav.menu-open .nav-toggle span:nth-child(1){top:20px;transform:rotate(45deg);}
nav.menu-open .nav-toggle span:nth-child(2){opacity:0;}
nav.menu-open .nav-toggle span:nth-child(3){top:20px;transform:rotate(-45deg);}

/* Prevent the page from scrolling while the menu drawer is open. */
body.nav-locked{overflow:hidden;}

/* Tablet and below: the .nav-drawer becomes a real positioned panel that
   slides down from beneath the top bar. Its two children stack vertically. */
@media (max-width:1024px){
  nav{padding:0 28px;}
  .nav-toggle{display:block;}

  .nav-drawer{
    display:flex;flex-direction:column;
    position:fixed;left:0;right:0;top:72px;
    max-height:calc(100vh - 72px);overflow-y:auto;
    background:rgba(43,43,45,0.98);
    backdrop-filter:blur(14px);
    border-bottom:1px solid rgba(255,255,255,0.06);
    transform:translateY(-12px);opacity:0;pointer-events:none;
    transition:transform 0.25s ease,opacity 0.2s ease;
  }
  nav.menu-open .nav-drawer{
    transform:translateY(0);opacity:1;pointer-events:auto;
  }
  /* In hero-mode the nav itself is transparent; the drawer always shows the
     opaque panel so the menu stays readable over the bulb. (Already set
     above, but explicit here for clarity.) */
  .home nav.hero-mode .nav-drawer{
    background:rgba(43,43,45,0.98);backdrop-filter:blur(14px);
  }

  .nav-links{
    flex-direction:column;gap:0;
    padding:8px 0;width:100%;
  }
  .nav-links a{
    display:block;padding:18px 28px;
    font-size:0.92rem;letter-spacing:0.12em;
    border-bottom:1px solid rgba(255,255,255,0.05);
  }
  .nav-links li{width:100%;}
  .nav-links li:last-child a{border-bottom:0;}
  .nav-right{
    display:flex;flex-direction:column;align-items:stretch;gap:10px;
    padding:14px 28px 24px;border-top:1px solid rgba(255,255,255,0.05);
  }
  .nav-phone{padding:6px 0;text-align:center;font-size:0.95rem;}
  .btn-nav{width:100%;text-align:center;padding:14px 22px;}
}

/* Hero: stack to one column, hide the bulb so it doesn't compete with text. */
@media (max-width:980px){
  .hero{
    grid-template-columns:1fr;
    min-height:auto;
    padding:120px 0 80px;
  }
  .hero-bulb{display:none;}
  .hero-left{padding:0 32px;}
  /* Default homepage hero-right only holds decorative sparkles — hide it. */
  .hero-right{display:none;}
  /* On the consultation page (hero-pitch-form variant), the right column
     holds the form, so keep it visible and stacked below the pitch. */
  .hero.hero-pitch-form .hero-right{
    display:flex;padding:32px 32px 0;align-items:stretch;justify-content:center;
  }
  .hero-form{max-width:none;width:100%;padding:24px 22px 22px;}
  .hero-form-title{font-size:1.3rem;}
  .hero-form .form-row{grid-template-columns:1fr;}
  .hero-ctas{margin-bottom:36px;}
  .hero-meta{padding:0 32px;}
}

/* Generic content padding cleanup for narrower screens so the dense
   80px-side-padding sections breathe. */
@media (max-width:760px){
  nav{padding:0 20px;}
  .contact{padding:80px 24px;}
  .blog-hero{padding:120px 24px 64px;}
  .blog-filter{padding:28px 24px 0;}
  .blog-list{padding:64px 24px;}
  .service-others{padding:64px 24px 80px;}
}

/* ─── RESPONSIVE GRIDS ───
   The site uses several fixed multi-column grids (services, news, blog,
   process, footer, etc.) that get unreadable below ~900px. Step them down
   progressively so cards stay legible at every viewport width. */

/* Tablet: drop the 4-col services row to 2, large container padding shrinks. */
@media (max-width:1100px){
  .services-grid{grid-template-columns:repeat(2,1fr);}
  .services,.process,.news{padding:80px 40px;}
  footer{padding:64px 40px 28px;gap:48px;}
}

/* Smaller tablet / large phone: collapse the 3-col grids to 2,
   stack hero-driven 2-col sections (about, blog featured), tighten gaps. */
@media (max-width:900px){
  .services-grid,
  .process-grid,
  .news-grid,
  .blog-grid,
  .post-related-grid,
  .contact-info-row{grid-template-columns:repeat(2,1fr);}

  .about{grid-template-columns:1fr;gap:48px;}
  .contact-grid{grid-template-columns:1fr;gap:24px;}
  .contact-cal-embed{min-height:560px;}
  .contact-col{padding:28px 22px;min-width:0;max-width:100%;}
  .form-row{grid-template-columns:1fr;gap:14px;}
  .contact-header{padding:0;}
  .contact-header h2{padding:0;}

  /* On narrower screens the dark credential card overlaps Lauren's face.
     Pull it out of absolute positioning and stack it cleanly below the photo. */
  .about-credential-strip{
    position:static;
    bottom:auto;left:auto;
    margin:20px 0 0;
    box-shadow:none;
    border-radius:var(--radius);
    display:inline-block;
    width:auto;
  }
  .blog-featured{grid-template-columns:1fr;}
  .blog-featured-body{padding:32px 28px;}
  .blog-featured-img{min-height:240px;}

  footer{grid-template-columns:1fr 1fr;gap:40px;}

  .services,.process,.news,.about,.contact{padding:64px 28px;}
  .cta-banner{padding:48px 28px;grid-template-columns:1fr;gap:32px;text-align:left;}
  .stats-bar{padding:28px;}
  .portal-promo{padding:64px 28px;}
  /* Service pages: stack the content + CTA sidebar vertically, tighten padding */
  .service-hero{padding:120px 28px 60px;}
  .service-hero-meta{flex-wrap:wrap;gap:20px;}
  .service-body{padding:60px 28px 70px;}
  .service-body-grid{grid-template-columns:1fr;gap:40px;}
  .service-content img,.service-content figure{max-width:100%;height:auto;}
  .services .section-header,
  .process .section-header,
  .news .section-header,
  .about .section-header,
  .contact .section-header{margin-bottom:40px;}

  .stats-bar{padding:28px 28px;flex-wrap:wrap;gap:24px;}
  .stats-bar .stat-item{flex:1 1 40%;}
  .stats-bar .stat-divider{display:none;}
}

/* Phone: single column everywhere. */
@media (max-width:640px){
  .services-grid,
  .process-grid,
  .news-grid,
  .blog-grid,
  .post-related-grid,
  .contact-info-row,
  .pricing-grid.two-up{grid-template-columns:1fr;}

  footer{grid-template-columns:1fr;gap:32px;padding:48px 24px 24px;}
  .footer-bottom{padding:18px 24px;flex-direction:column;gap:10px;text-align:center;}

  .stats-bar{flex-direction:column;align-items:flex-start;}
  .stats-bar > *{flex:1 1 100%;width:100%;}
  .stat-divider{display:none;}

  .services,.process,.news,.about,.contact{padding:56px 20px;}
  .cta-banner{padding:40px 20px;}
  .portal-promo{padding:56px 20px;}
  .service-hero{padding:110px 20px 50px;}
  .service-body{padding:48px 20px 60px;}
  .section-title{font-size:1.75rem;}
}

/* Anti-spam honeypot — must be visually hidden but technically rendered
   so bots see and fill it. Don't use display:none (some bots skip those).
   Position offscreen and shrink to a single pixel; aria-hidden in markup. */
.lp-trap{
  position:absolute !important;
  left:-9999px !important; top:-9999px !important;
  width:1px !important; height:1px !important;
  opacity:0 !important; pointer-events:none !important;
  tab-index:-1 !important;
}

