:root{
  --ink:#1a1210;
  --ink-soft:#2a1e1a;
  --maroon:#7c1a35;
  --maroon-deep:#4a0f21;
  --maroon-bright:#a3234a;
  --porcelain:#f8f1ea;
  --porcelain-dim:#efe4d8;
  --gold:#b6862c;
  --gold-soft:#d9b978;
  --teal:#2f5d54;
  --line:rgba(26,18,16,0.12);
  --line-light:rgba(248,241,234,0.18);
  --shadow:0 30px 60px -25px rgba(26,18,16,0.35);
  --ease:cubic-bezier(.16,.84,.24,1);
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:auto; overflow-x:hidden; width:100%;}
body{
  background:var(--porcelain);
  color:var(--ink);
  font-family:'Inter',sans-serif;
  font-size:16px;
  line-height:1.5;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  opacity:0;
  animation:bodyFallbackReveal 0s 1.5s forwards; /* if JS never runs, still reveal the page */
}
body.is-ready{opacity:1; transition:opacity .5s ease; animation:none;}
@keyframes bodyFallbackReveal{to{opacity:1;}}
img,video{max-width:100%;display:block;}
a{color:inherit; text-decoration:none;}
ul{list-style:none;}
button{font-family:inherit; cursor:pointer; border:none; background:none;}
::selection{background:var(--maroon); color:var(--porcelain);}

.eyebrow{
  font-family:'IBM Plex Mono',monospace;
  font-size:0.72rem;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:var(--maroon);
  display:flex;
  align-items:center;
  gap:.6em;
  margin-bottom:1.1em;
}
.eyebrow::before{
  content:'';
  width:26px; height:1px;
  background:var(--maroon);
  display:inline-block;
}
.eyebrow.on-dark{color:var(--gold-soft);}
.eyebrow.on-dark::before{background:var(--gold-soft);}

h1,h2,h3,h4{
  font-family:'Fraunces',serif;
  font-weight:600;
  line-height:1.04;
  letter-spacing:-0.01em;
}

.wrap{
  max-width:1280px;
  margin:0 auto;
  padding:0 clamp(20px,5vw,64px);
}

.split-line{overflow:hidden; display:block;}
.split-line > span{display:inline-block; will-change:transform;}

/* ---------- PRELOADER ---------- */
#preloader{
  position:fixed; inset:0; z-index:9999;
  background:var(--maroon-deep);
  display:flex; align-items:center; justify-content:center;
  flex-direction:column; gap:18px;
}
#preloader svg{width:76px; height:76px;}
#preloader .pl-path{
  fill:none; stroke:var(--porcelain); stroke-width:3;
  stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:400; stroke-dashoffset:400;
}
#preloader .pl-word{
  font-family:'IBM Plex Mono',monospace;
  font-size:.68rem; letter-spacing:.3em;
  color:var(--gold-soft); text-transform:uppercase;
  opacity:0;
}

/* ---------- NAV ---------- */
header{
  position:fixed; top:0; left:0; right:0; z-index:500;
  padding:18px clamp(20px,5vw,48px);
  display:flex; align-items:center; justify-content:space-between;
  transition:background .5s var(--ease), padding .5s var(--ease), box-shadow .5s var(--ease);
}
header.scrolled, header.on-light{
  background:rgba(248,241,234,0.86);
  backdrop-filter:blur(14px) saturate(140%);
  padding:12px clamp(20px,5vw,48px);
  box-shadow:0 1px 0 var(--line);
}
.brand{display:flex; align-items:center; gap:12px;}
.brand img{height:58px; width:auto; transition:height .4s var(--ease);}
header.scrolled .brand img, header.on-light .brand img{height:48px;}
.brand-text{
  font-family:'Fraunces',serif; font-weight:600; font-size:.98rem; line-height:1.05;
}
.brand-text small{
  display:block; font-family:'IBM Plex Mono',monospace; font-weight:400;
  font-size:.6rem; letter-spacing:.14em; color:var(--maroon); margin-top:2px;
}

nav.primary-nav{display:flex; align-items:center; gap:34px;}
nav.primary-nav a{
  font-size:.86rem; font-weight:500; position:relative; padding:4px 0;
}
nav.primary-nav a::after{
  content:''; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--maroon);
  transition:width .35s var(--ease);
}
nav.primary-nav a:hover::after, nav.primary-nav a.active::after{width:100%;}
nav.primary-nav a.active{color:var(--maroon); font-weight:600;}

.nav-cta{display:flex; align-items:center; gap:14px;}
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-size:.82rem; font-weight:600; letter-spacing:.02em;
  padding:13px 26px; border-radius:100px;
  position:relative; overflow:hidden; white-space:nowrap;
}
.btn-solid{background:var(--maroon); color:var(--porcelain);}
.btn-solid span{position:relative; z-index:2;}
.btn-solid::before{
  content:''; position:absolute; inset:0; background:var(--maroon-deep);
  transform:translateY(101%); transition:transform .4s var(--ease); z-index:1;
}
.btn-solid:hover::before{transform:translateY(0);}
.btn-ghost{border:1px solid var(--line); color:var(--ink);}
.btn-ghost:hover{background:var(--ink); color:var(--porcelain); border-color:var(--ink);}
.btn-line-dark{border:1px solid var(--line-light); color:var(--porcelain);}
.btn-line-dark:hover{background:var(--porcelain); color:var(--ink);}

.hamburger{display:none; flex-direction:column; gap:5px; width:26px;}
.hamburger span{height:2px; background:var(--ink); width:100%; transition:.3s;}

#mobile-menu{position:fixed; inset:0; background:var(--ink); z-index:600; display:flex; flex-direction:column; justify-content:center; gap:26px; padding:40px; transform:translateY(-100%); transition:transform .5s var(--ease);}
#mobile-menu a{color:var(--porcelain); font-family:'Fraunces',serif; font-size:2rem;}
#mm-close{position:absolute; top:24px; right:24px; color:var(--porcelain); font-size:1.6rem;}

/* progress house mark */
.house-progress{position:fixed; right:24px; bottom:24px; z-index:400; width:46px; height:46px;}
.house-progress svg{width:100%; height:100%;}
.house-progress .track{fill:none; stroke:rgba(26,18,16,0.15); stroke-width:3;}
.house-progress .bar{fill:none; stroke:var(--maroon); stroke-width:3; stroke-linecap:round;
  stroke-dasharray:150; stroke-dashoffset:150;}

/* ---------- HERO (home) ---------- */
.hero{
  position:relative; min-height:100svh; display:flex; align-items:flex-end;
  overflow:hidden; background:var(--maroon-deep);
}
.hero-media{position:absolute; inset:0; z-index:1;}
.hero-media video, .hero-media img{
  width:100%; height:100%; object-fit:cover; object-position:center 20%;
}
.hero-media::after{
  content:''; position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(74,15,33,.55) 0%, rgba(74,15,33,.35) 35%, rgba(26,10,17,.88) 100%),
    linear-gradient(90deg, rgba(26,10,17,.55) 0%, rgba(26,10,17,0) 45%);
}
.hero-inner{
  position:relative; z-index:2; width:100%;
  padding:160px clamp(20px,5vw,64px) 90px;
  color:var(--porcelain);
}
.hero-badge{
  display:inline-flex; align-items:center; gap:10px;
  border:1px solid var(--line-light); padding:8px 16px 8px 8px; border-radius:100px;
  margin-bottom:28px; font-family:'IBM Plex Mono',monospace; font-size:.7rem;
  letter-spacing:.12em; text-transform:uppercase; color:var(--gold-soft);
}
.hero-badge img{width:26px; height:26px; border-radius:50%; background:var(--porcelain); padding:2px;}
.hero-heading{
  font-size:clamp(2.6rem, 6.4vw, 5.4rem);
  max-width:16ch;
  color:var(--porcelain);
}
.hero-heading em{font-style:italic; font-weight:450; color:var(--gold-soft);}
.hero-sub{
  margin-top:26px; max-width:46ch; font-size:1.05rem; color:rgba(248,241,234,0.82);
  font-weight:400;
}
.hero-actions{display:flex; flex-wrap:wrap; gap:16px; margin-top:42px;}
.pulse-dot{
  width:9px; height:9px; border-radius:50%; background:#e6a13a; display:inline-block;
  box-shadow:0 0 0 0 rgba(230,161,58,.6); animation:pulse 1.8s infinite;
}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(230,161,58,.55);}
  70%{box-shadow:0 0 0 10px rgba(230,161,58,0);}
  100%{box-shadow:0 0 0 0 rgba(230,161,58,0);}
}
.scroll-cue{
  position:absolute; right:clamp(20px,5vw,64px); bottom:36px; z-index:3;
  display:flex; flex-direction:column; align-items:center; gap:10px;
  color:rgba(248,241,234,0.7); font-family:'IBM Plex Mono',monospace; font-size:.62rem;
  letter-spacing:.2em; text-transform:uppercase;
}
.scroll-cue .line{width:1px; height:46px; background:rgba(248,241,234,0.35); position:relative; overflow:hidden;}
.scroll-cue .line::after{content:''; position:absolute; top:-40%; left:0; width:100%; height:40%; background:var(--gold-soft); animation:cueDrop 1.8s infinite var(--ease);}
@keyframes cueDrop{0%{top:-40%;} 100%{top:100%;}}

/* ---------- PAGE BANNER (inner pages) ---------- */
.page-banner{
  position:relative; padding:170px clamp(20px,5vw,64px) 80px;
  background:
    radial-gradient(ellipse at 80% 0%, rgba(163,35,74,.35), transparent 55%),
    linear-gradient(160deg, var(--maroon-deep), var(--ink) 75%);
  color:var(--porcelain); overflow:hidden;
}
.page-banner .house-outline{
  position:absolute; right:-60px; top:-40px; width:420px; height:420px; opacity:.15;
}
.page-banner .breadcrumb{
  font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--gold-soft); margin-bottom:22px; display:flex; align-items:center; gap:8px;
}
.page-banner h1{font-size:clamp(2.4rem,5vw,4rem); max-width:18ch; position:relative; z-index:2;}
.page-banner p{margin-top:18px; max-width:50ch; color:rgba(248,241,234,0.78); font-size:1.05rem; position:relative; z-index:2;}

/* ---------- TRUST MARQUEE ---------- */
.marquee-strip{
  background:var(--ink); color:var(--porcelain); padding:22px 0; overflow:hidden;
  border-top:1px solid var(--line-light); border-bottom:1px solid var(--line-light);
}
.marquee-track{display:flex; width:max-content; animation:scrollLeft 32s linear infinite;}
.marquee-strip:hover .marquee-track{animation-play-state:paused;}
.marquee-track span{
  font-family:'Fraunces',serif; font-style:italic; font-weight:450; font-size:1.3rem;
  white-space:nowrap; padding:0 2.2rem; display:flex; align-items:center; gap:2.2rem; color:rgba(248,241,234,0.9);
}
.marquee-track span::after{content:'✦'; color:var(--gold); font-style:normal; font-size:.9rem;}
@keyframes scrollLeft{from{transform:translateX(0);} to{transform:translateX(-50%);}}

/* ---------- SECTION generic ---------- */
section{position:relative;}
.section-pad{padding:clamp(80px,10vw,150px) 0;}
.section-pad-sm{padding:clamp(50px,7vw,90px) 0;}
.section-head{max-width:760px; margin-bottom:64px;}
.section-head.center{margin-left:auto; margin-right:auto; text-align:center;}
.section-head.center .eyebrow{justify-content:center;}
.section-head h2{font-size:clamp(2rem,4.2vw,3.4rem);}
.section-head p.lead{margin-top:20px; font-size:1.08rem; color:var(--ink-soft); max-width:52ch;}
.section-head.center p.lead{margin-left:auto; margin-right:auto;}

/* ---------- ABOUT ---------- */
.about{background:var(--porcelain);}
.about-grid{display:grid; grid-template-columns:0.85fr 1.15fr; gap:clamp(30px,6vw,90px); align-items:center;}
.about-media{position:relative; border-radius:6px; overflow:hidden; box-shadow:var(--shadow); clip-path:inset(0 0 0 0);}
.about-media img{width:100%; height:640px; object-fit:cover;}
.about-media.short img{height:420px;}
.about-media .frame-tag{
  position:absolute; left:18px; bottom:18px; background:rgba(26,18,16,0.72); backdrop-filter:blur(6px);
  color:var(--porcelain); padding:10px 16px; border-radius:100px; font-family:'IBM Plex Mono',monospace;
  font-size:.68rem; letter-spacing:.1em; text-transform:uppercase;
}
.about-copy p{font-size:1.08rem; color:var(--ink-soft); margin-bottom:20px; max-width:52ch;}
.about-copy .big-line{font-family:'Fraunces',serif; font-size:1.5rem; font-weight:450; font-style:italic; color:var(--maroon); margin-bottom:26px; max-width:24ch; line-height:1.25;}
.about-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:44px; border-top:1px solid var(--line); padding-top:32px;}
.about-stats .num{font-family:'Fraunces',serif; font-size:2.2rem; color:var(--maroon); display:block;}
.about-stats .lbl{font-size:.78rem; color:var(--ink-soft); margin-top:4px; display:block;}

/* value cards (about page) */
.value-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line);}
.value-card{background:var(--porcelain); padding:38px 26px;}
.value-card .ico{width:40px; height:40px; border-radius:50%; background:var(--maroon); color:var(--porcelain); display:flex; align-items:center; justify-content:center; margin-bottom:20px; font-size:1rem;}
.value-card h4{font-size:1.15rem; margin-bottom:10px;}
.value-card p{font-size:.88rem; color:var(--ink-soft);}

/* ---------- SERVICES TEASER (home) ---------- */
.teaser-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line);}
.teaser-card{
  background:var(--porcelain); padding:34px 28px; position:relative; overflow:hidden;
  transition:background .4s var(--ease);
}
.teaser-card:hover{background:var(--maroon); }
.teaser-card:hover, .teaser-card:hover .t-n, .teaser-card:hover h4, .teaser-card:hover p, .teaser-card:hover .t-arrow{color:var(--porcelain);}
.teaser-card .t-n{font-family:'IBM Plex Mono',monospace; font-size:.72rem; color:var(--gold); display:block; margin-bottom:16px;}
.teaser-card h4{font-size:1.2rem; margin-bottom:10px;}
.teaser-card p{font-size:.84rem; color:var(--ink-soft);}
.teaser-card .t-arrow{position:absolute; right:24px; top:30px; font-size:1.2rem; color:var(--maroon); transition:transform .35s var(--ease);}
.teaser-card:hover .t-arrow{transform:translate(4px,-4px);}
.teaser-more{margin-top:36px; text-align:center;}

/* ---------- SERVICES DIRECTORY ---------- */
.services{background:var(--porcelain-dim);}
.dir-grid{display:grid; grid-template-columns:320px 1fr; gap:60px; align-items:flex-start;}
.dir-rail{position:sticky; top:110px;}
.dir-rail-list{border-top:1px solid var(--line);}
.dir-rail-item{
  display:flex; align-items:baseline; gap:14px; padding:13px 4px;
  border-bottom:1px solid var(--line); cursor:pointer;
  transition:padding-left .35s var(--ease), color .3s;
  font-size:.92rem; color:var(--ink-soft);
}
.dir-rail-item .n{font-family:'IBM Plex Mono',monospace; font-size:.72rem; color:var(--maroon); opacity:.7;}
.dir-rail-item.active{color:var(--maroon); padding-left:14px; font-weight:600;}
.dir-rail-item.active .n{opacity:1;}
.dir-rail-note{margin-top:26px; font-size:.82rem; color:var(--ink-soft); max-width:26ch;}

.dir-panel{padding:54px 0; border-bottom:1px solid var(--line);}
.dir-panel:first-child{padding-top:6px;}
.dir-panel:last-child{border-bottom:none;}
.dir-panel-head{display:flex; align-items:baseline; gap:16px; margin-bottom:26px;}
.dir-panel-head .n{font-family:'Fraunces',serif; font-size:1.1rem; color:var(--gold); font-style:italic;}
.dir-panel-head h3{font-size:clamp(1.5rem,2.4vw,2.1rem); color:var(--ink);}
.dir-panel-note{
  margin:-14px 0 22px; padding:10px 16px; display:inline-block;
  background:rgba(139,26,26,0.06); border-left:3px solid var(--maroon);
  font-size:.86rem; color:var(--ink-soft); border-radius:0 6px 6px 0;
}
.dir-tags{display:flex; flex-wrap:wrap; gap:10px;}
.dir-tag{
  background:var(--porcelain); border:1px solid var(--line); color:var(--ink-soft);
  padding:9px 16px; border-radius:100px; font-size:.83rem;
}

/* ---------- SPECIALISTS ---------- */
.specialists{background:var(--ink); color:var(--porcelain); overflow:hidden;}
.spec-grid{display:grid; grid-template-columns:0.9fr 1.1fr; gap:clamp(30px,6vw,90px); align-items:center;}
.spec-card{position:relative; border-radius:6px; overflow:hidden; box-shadow:var(--shadow);}
.spec-card img{width:100%; height:560px; object-fit:cover;}
.spec-card.wide img{height:400px; object-position:center 30%;}
.spec-card-tag{
  position:absolute; top:18px; left:18px; background:var(--maroon); color:var(--porcelain);
  padding:8px 14px; border-radius:100px; font-family:'IBM Plex Mono',monospace; font-size:.66rem;
  letter-spacing:.1em; text-transform:uppercase;
}
.spec-copy h2{font-size:clamp(2rem,4vw,3.1rem); color:var(--porcelain);}
.spec-copy p{margin-top:22px; color:rgba(248,241,234,0.75); font-size:1.05rem; max-width:48ch;}
.roster-ticker{margin-top:50px; border-top:1px solid var(--line-light); border-bottom:1px solid var(--line-light); padding:20px 0; overflow:hidden;}
.roster-track{display:flex; width:max-content; animation:scrollLeft 40s linear infinite;}
.roster-track span{
  white-space:nowrap; padding:0 1.4rem; font-family:'IBM Plex Mono',monospace; font-size:.78rem;
  color:var(--gold-soft); border-right:1px solid var(--line-light);
}

/* specialty grid (doctors page) */
.specialty-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:12px;}
.specialty-card{
  background:rgba(248,241,234,0.04); border:1px solid var(--line-light); border-radius:8px;
  padding:20px 18px; font-size:.86rem; color:rgba(248,241,234,0.85);
}

/* ---------- PROCESS ---------- */
.process{background:var(--porcelain);}
.process-list{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:10px;}
.process-item{background:var(--porcelain); padding:44px 28px; position:relative;}
.process-item .n{font-family:'Fraunces',serif; font-style:italic; font-size:1rem; color:var(--gold);}
.process-item h4{margin-top:22px; font-size:1.3rem; font-weight:600;}
.process-item p{margin-top:12px; font-size:.9rem; color:var(--ink-soft);}
.process-line{position:absolute; top:0; left:0; height:2px; background:var(--maroon); width:0;}

/* ---------- EMERGENCY BAND ---------- */
.emergency{
  background:linear-gradient(120deg, var(--maroon-deep), var(--maroon) 60%, var(--maroon-bright));
  color:var(--porcelain); padding:clamp(60px,8vw,100px) 0;
}
.emg-grid{display:flex; align-items:center; justify-content:space-between; gap:40px; flex-wrap:wrap;}
.emg-grid h2{font-size:clamp(1.9rem,4vw,3rem); max-width:16ch;}
.emg-phone{font-family:'Fraunces',serif; font-size:clamp(2rem,4vw,3rem); display:flex; align-items:center; gap:14px;}
.emg-sub{margin-top:10px; color:rgba(248,241,234,0.78); font-size:.92rem;}

/* ---------- CONTACT ---------- */
.contact{background:var(--porcelain-dim);}
.contact-single{max-width:600px; margin:0 auto; text-align:center;}
.contact-info-item{display:flex; gap:18px; padding:22px 0; border-bottom:1px solid var(--line); text-align:left;}
.contact-info-item .ico{
  width:44px; height:44px; border-radius:50%; background:var(--maroon); color:var(--porcelain);
  display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:1rem;
}
.contact-info-item .lbl{font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--maroon);}
.contact-info-item .val{font-size:1.15rem; margin-top:4px; font-weight:500;}
.contact-cta-row{display:flex; gap:16px; flex-wrap:wrap; justify-content:center; margin-top:36px;}

/* ---------- FOOTER ---------- */
footer{background:var(--ink); color:rgba(248,241,234,0.65); padding:70px 0 30px;}
.footer-top{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; padding-bottom:50px; border-bottom:1px solid var(--line-light);}
.footer-brand{display:flex; gap:12px; align-items:center; margin-bottom:16px;}
.footer-brand img{height:38px;}
.footer-brand-text{font-family:'Fraunces',serif; color:var(--porcelain); font-size:1rem;}
.footer-col h5{font-family:'IBM Plex Mono',monospace; font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:var(--gold-soft); margin-bottom:16px;}
.footer-col li{margin-bottom:10px; font-size:.9rem;}
.footer-col a:hover{color:var(--porcelain);}
.footer-bottom{display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; padding-top:26px; font-size:.78rem;}

.photo-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:44px;}
.photo-grid figure{position:relative; margin:0; border-radius:6px; overflow:hidden; box-shadow:var(--shadow);}
.photo-grid img{width:100%; height:340px; object-fit:cover; display:block; transition:transform .6s var(--ease);}
.photo-grid figure:hover img{transform:scale(1.05);}
.photo-grid figcaption{position:absolute; left:16px; bottom:14px; color:#fff; font-family:'IBM Plex Mono',monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; text-shadow:0 2px 10px rgba(0,0,0,.6);}

.photo-banner{position:relative; border-radius:6px; overflow:hidden; box-shadow:var(--shadow); margin-top:50px;}
.photo-banner img{width:100%; height:460px; object-fit:cover; object-position:center 25%; display:block;}
.photo-banner .frame-tag{position:absolute; left:24px; bottom:20px;}

/* Any CSS Grid item defaults to min-width:auto, which lets a long
   heading/paragraph force its track wider than the viewport instead of
   wrapping — this is what caused content to be cut off on the right on
   mobile. Applying min-width:0 to all direct grid children fixes it
   site-wide, not just in the one section that was reported. */
.about-grid > *, .about-stats > *, .value-grid > *, .teaser-grid > *,
.dir-grid > *, .spec-grid > *, .specialty-grid > *, .process-list > *,
.footer-top > *, .photo-grid > *{min-width:0;}

/* ---------- RESPONSIVE ---------- */
@media (max-width:980px){
  nav.primary-nav, .nav-cta .btn-ghost{display:none;}
  .hamburger{display:flex;}
  .about-grid, .spec-grid{grid-template-columns:1fr;}
  .about-media img{height:420px;}
  .dir-grid{grid-template-columns:1fr;}
  .dir-rail{position:static; display:flex; flex-wrap:wrap; gap:8px; margin-bottom:20px;}
  .dir-rail-list{display:flex; flex-wrap:wrap; border-top:none; gap:8px;}
  .dir-rail-item{border:1px solid var(--line); border-radius:100px; padding:8px 14px;}
  .dir-rail-note{display:none;}
  .process-list, .value-grid, .teaser-grid{grid-template-columns:1fr 1fr;}
  .specialty-grid{grid-template-columns:1fr 1fr;}
  .footer-top{grid-template-columns:1fr 1fr;}
  .spec-card img{height:420px;}
  .spec-card.wide img{height:280px;}
  .photo-grid{grid-template-columns:1fr 1fr;}
  .photo-banner img{height:360px;}
}
@media (max-width:600px){
  .process-list, .value-grid, .teaser-grid, .specialty-grid{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr;}
  .about-stats{grid-template-columns:1fr 1fr;}
  .house-progress{display:none;}
  .page-banner{padding-top:140px;}
  .photo-grid{grid-template-columns:1fr;}
  .photo-grid img{height:280px;}
  .photo-banner img{height:280px;}
  .spec-card.wide img{height:220px;}
}

.footer-social{display:flex; gap:10px; margin-top:16px;}
.footer-social a{
  width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:rgba(248,241,234,0.06); border:1px solid var(--line-light); color:var(--porcelain);
  transition:background .3s var(--ease), transform .3s var(--ease);
}
.footer-social a:hover{background:var(--maroon); transform:translateY(-3px);}
.footer-social svg{width:16px; height:16px; fill:currentColor;}

/* ---------- FAQ ---------- */
.faq{background:var(--porcelain);}
.faq-list{max-width:760px; margin:48px auto 0; display:flex; flex-direction:column; gap:12px;}
.faq-item{
  background:var(--porcelain-dim); border:1px solid var(--line); border-radius:10px;
  padding:4px 24px;
}
.faq-item summary{
  cursor:pointer; list-style:none; padding:18px 0; font-weight:600; color:var(--ink);
  font-size:1rem; display:flex; align-items:center; justify-content:space-between; gap:16px;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{
  content:'+'; font-family:'Fraunces',serif; font-size:1.4rem; color:var(--maroon);
  flex-shrink:0; transition:transform .3s var(--ease);
}
.faq-item[open] summary::after{transform:rotate(45deg);}
.faq-item p{padding:0 0 20px; color:var(--ink-soft); font-size:.92rem; line-height:1.65;}
@media (max-width:600px){
  .faq-item{padding:2px 18px;}
}

/* ---------- WHATSAPP FLOAT ---------- */
.whatsapp-float{
  position:fixed; left:24px; bottom:24px; z-index:400;
  width:58px; height:58px; border-radius:50%;
  background:#25D366; display:flex; align-items:center; justify-content:center;
  box-shadow:0 12px 30px -8px rgba(37,211,102,0.6), 0 2px 8px rgba(26,18,16,0.2);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.whatsapp-float:hover{transform:translateY(-4px) scale(1.05); box-shadow:0 16px 36px -8px rgba(37,211,102,0.75), 0 2px 8px rgba(26,18,16,0.25);}
.whatsapp-float svg{width:30px; height:30px;}
.whatsapp-float .wa-ring{
  position:absolute; inset:0; border-radius:50%; border:2px solid #25D366;
  animation:waPulse 2.2s infinite;
}
@keyframes waPulse{
  0%{transform:scale(1); opacity:.65;}
  100%{transform:scale(1.55); opacity:0;}
}
@media (max-width:600px){
  .whatsapp-float{left:16px; bottom:16px; width:52px; height:52px;}
  .whatsapp-float svg{width:26px; height:26px;}
}

/* ---------- CALL FLOAT ---------- */
.call-float{
  position:fixed; left:24px; bottom:96px; z-index:400;
  width:58px; height:58px; border-radius:50%;
  background:var(--maroon); display:flex; align-items:center; justify-content:center;
  box-shadow:0 12px 30px -8px rgba(122,26,26,0.6), 0 2px 8px rgba(26,18,16,0.2);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.call-float:hover{transform:translateY(-4px) scale(1.05); box-shadow:0 16px 36px -8px rgba(122,26,26,0.75), 0 2px 8px rgba(26,18,16,0.25);}
.call-float svg{width:26px; height:26px;}
@media (max-width:600px){
  .call-float{left:16px; bottom:78px; width:52px; height:52px;}
  .call-float svg{width:23px; height:23px;}
}

/* ---------- TESTIMONIALS ---------- */
.testimonials{background:var(--porcelain-dim); overflow:hidden;}
.testimonials .section-head{margin-left:auto; margin-right:auto; text-align:center;}
.testimonials .section-head .eyebrow{justify-content:center;}
.testimonials .google-badge{
  display:inline-flex; align-items:center; gap:8px; margin-top:22px;
  font-family:'IBM Plex Mono',monospace; font-size:.76rem; color:var(--ink-soft);
}
.testimonials .google-badge .stars{color:var(--gold); letter-spacing:2px;}
.testimonial-ticker{
  margin-top:56px; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
  mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.testimonial-track{display:flex; width:max-content; gap:22px; animation:scrollLeft 62s linear infinite;}
.testimonial-ticker:hover .testimonial-track{animation-play-state:paused;}
.testimonial-card{
  width:360px; flex-shrink:0; background:var(--porcelain); border:1px solid var(--line);
  border-radius:12px; padding:30px 28px; box-shadow:var(--shadow);
  display:flex; flex-direction:column; gap:16px;
}
.testimonial-card .t-stars{color:var(--gold); font-size:.9rem; letter-spacing:2px;}
.testimonial-card .t-quote{font-size:.94rem; line-height:1.6; color:var(--ink-soft); flex-grow:1;}
.testimonial-card .t-foot{display:flex; align-items:center; gap:12px; padding-top:14px; border-top:1px solid var(--line);}
.testimonial-card .t-avatar{
  width:38px; height:38px; border-radius:50%; background:var(--maroon); color:var(--porcelain);
  display:flex; align-items:center; justify-content:center; font-family:'Fraunces',serif; font-weight:600;
  font-size:.95rem; flex-shrink:0;
}
.testimonial-card .t-name{font-size:.88rem; font-weight:600; color:var(--ink);}
.testimonial-card .t-meta{font-family:'IBM Plex Mono',monospace; font-size:.68rem; color:var(--maroon); letter-spacing:.04em; margin-top:2px;}
@media (max-width:600px){
  .testimonial-card{width:280px; padding:24px 22px;}
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important;}
}
