/* ============================================================
   LOCATION + UTILITY PAGE LAYOUTS
   Two silhouettes that are deliberately not the service page.
   ============================================================ */

/* ---------- location: facts rail under the hero -------------------- */
.loc-facts{background:var(--navy);color:#fff;padding:clamp(28px,3.4vw,44px) 0}
.loc-facts .wrap{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(18px,2.4vw,34px);
}
.loc-fact .k{
  display:block;font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--soft-teal);margin-bottom:9px;
}
.loc-fact p{color:rgba(255,255,255,.92);font-size:.95rem;line-height:1.55;margin:0}

/* ---------- location: map panel ------------------------------------ */
.loc-map{padding:clamp(52px,6.5vw,96px) 0;background:var(--sand)}
.loc-map .wrap{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:clamp(26px,4vw,58px);align-items:center;
}
.loc-map h2{font-size:clamp(1.45rem,2.45vw,2.05rem);color:var(--navy);line-height:1.12;letter-spacing:-.022em}
.loc-map p{color:var(--muted);font-size:1.02rem;line-height:1.7;margin-top:14px}
.loc-map-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.loc-map-frame{
  border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md);
  background:#e9e5df;aspect-ratio:4/3;
}
.loc-map-frame iframe{display:block;width:100%;height:100%;border:0}

/* ---------- utility: sticky contents rail + reading column --------- */
.util-body{padding:clamp(48px,6vw,88px) 0;background:var(--paper)}
/* direct child only: a descendant selector also turned every nested .wrap
   (inside a gallery, quote or split) into a two-column grid, which collapsed
   the gallery to the rail width and gave its images a zero box */
.util-body > .wrap{
  display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr);
  gap:clamp(26px,4.5vw,70px);align-items:start;
}
.util-rail{position:sticky;top:156px}
.util-rail nav{border-left:2px solid rgba(5,127,126,.18);padding-left:16px}
.util-rail a{
  display:block;font-size:.88rem;line-height:1.4;color:var(--muted);
  padding:7px 0;transition:color .2s var(--ease);
}
.util-rail a:hover,.util-rail a.on{color:var(--teal);font-weight:600}
.util-rail-cta{margin-top:24px;width:100%;justify-content:center;
  padding-inline:14px;font-size:.9rem;text-align:center;line-height:1.25}
.util-main{max-width:72ch}
.util-main .svc-sec{padding:0 0 clamp(26px,3.2vw,40px);background:none}
.util-main .svc-sec > .wrap{display:block;padding:0;max-width:none}
.util-main .svc-sechead{position:static}
.util-main .svc-sechead::after{margin-top:14px}
.util-main .svc-sechead h2{font-size:clamp(1.25rem,2vw,1.6rem)}
.util-main .svc-prose,.util-main .svc-prose:only-child{max-width:none}
/* Image components sit inside the reading column rather than breaking out of
   it. The 100vw full-bleed trick overflowed by the scrollbar width and dragged
   the mobile drawer wide with it, so the column edge is the limit here. */
.util-main .tc-figband,.util-main .tc-gallery,.util-main .tc-quote,.util-main .svc-band{
  border-radius:var(--radius);overflow:hidden;margin:clamp(24px,3vw,38px) 0;
}
.util-main .tc-figband img{height:clamp(200px,26vw,340px)}
.util-main .tc-gallery,.util-main .tc-quote,.util-main .svc-band{padding:clamp(26px,3.2vw,40px) 0}
.util-main .tc-gallery .wrap,.util-main .tc-quote .wrap,.util-main .svc-band .wrap,
.util-main .tc-figband figcaption span{padding-inline:clamp(18px,2.4vw,28px);max-width:none}
.util-main .tc-split{padding:clamp(32px,4vw,52px) 0;background:none}
.util-main .tc-split .wrap{padding:0}

@media (max-width:980px){
  .loc-facts .wrap{grid-template-columns:repeat(2,minmax(0,1fr))}
  .loc-map .wrap{grid-template-columns:1fr}
  .util-body > .wrap{grid-template-columns:1fr}
  .util-rail{position:static;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
  .util-rail nav{display:flex;flex-wrap:wrap;gap:4px 16px;border-left:0;padding-left:0}
  .util-rail-cta{margin-top:12px;width:auto}
  .util-main .tc-figband,.util-main .tc-gallery,.util-main .tc-quote,.util-main .svc-band{
    margin-left:0;width:auto;max-width:none;
  }
}
@media (max-width:640px){
  .loc-facts .wrap{grid-template-columns:1fr;gap:16px}
}

/* the hero band figure sits flush under the band hero */
.tc-figband--hero img{height:clamp(240px,34vw,460px)}

/* ============================================================
   BLOG: opener, reading column, read-next row, index cards
   ============================================================ */
.post-open{background:var(--sand);padding:clamp(104px,12vw,150px) 0 clamp(40px,5vw,64px)}
.post-open .wrap{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
  gap:clamp(26px,4.5vw,62px);align-items:center;
}
.post-open h1{
  color:var(--navy);font-size:clamp(1.9rem,3.6vw,3rem);line-height:1.07;
  letter-spacing:-.028em;max-width:20ch;
}
.post-open .svc-kick{color:var(--navy)}
.post-byline{
  margin-top:18px;color:var(--muted);font-size:.9rem;display:flex;gap:10px;flex-wrap:wrap;
}
.post-open-media img{
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);aspect-ratio:4/3;object-fit:cover;
}

.post-body{padding:clamp(48px,6vw,84px) 0 clamp(36px,4.5vw,60px);background:var(--paper)}
.post-body .wrap{max-width:78ch}
.post-body .tc-prose h2{margin-top:1.6em}

.post-next{padding:clamp(48px,6vw,88px) 0;background:var(--paper)}
.post-next-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.8vw,22px)}
.post-next-card{
  display:block;background:#fff;border:1px solid rgba(20,63,82,.10);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow-sm);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease);
}
.post-next-card img{aspect-ratio:3/2;object-fit:cover;border-radius:0}
.post-next-meta{
  display:block;padding:16px 18px 0;font-size:.72rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--coral);
}
.post-next-card h3{padding:8px 18px 20px;font-size:1.02rem;color:var(--navy);line-height:1.28}
.post-next-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-md)}

/* index cards gain a photograph */
.tc-post-thumb{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:0;margin:-1px -1px 0}
.tc-post-card{overflow:hidden}

@media (max-width:980px){
  .post-open .wrap{grid-template-columns:1fr;gap:24px}
  .post-open-media img{aspect-ratio:16/10}
  .post-next-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){ .post-next-grid{grid-template-columns:1fr} }

/* ---- quoted Google reviews on the reviews page -------------------- */
.tc-review{
  margin:0 0 clamp(16px,2vw,24px);padding:clamp(20px,2.4vw,28px);
  background:#fff;border:1px solid rgba(5,127,126,.16);border-left:3px solid var(--coral);
  border-radius:var(--radius);box-shadow:var(--shadow-sm);
}
.tc-review p{
  margin:0;color:var(--ink);font-size:1.02rem;line-height:1.7;
  font-family:'Instrument Serif',Georgia,serif;font-style:italic;
}
.tc-review cite{
  display:block;margin-top:14px;font-family:'Instrument Sans',system-ui,sans-serif;
  font-style:normal;font-size:.76rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--teal);
}

/* ---- embedded GHL survey ------------------------------------------ */
.tc-survey-embed{margin-top:clamp(28px,3.4vw,44px)}
.tc-survey-embed h2{font-size:clamp(1.3rem,2.1vw,1.7rem);color:var(--navy);line-height:1.16}
.tc-survey-embed > p{color:var(--muted);font-size:1rem;margin:12px 0 22px;max-width:60ch}
.tc-surveywrap{
  border:1px solid rgba(5,127,126,.16);border-radius:var(--radius-lg);
  overflow:hidden;background:#fff;box-shadow:var(--shadow-sm);
}
.tc-surveywrap iframe{display:block;width:100%}
