/* =====================================================================
   Location Page template styles
   Scoped under .location-page. Explicit backgrounds + text colors so
   nothing inherits the theme's dark page background (avoids white-on-white
   and low-contrast headings). Reuses theme Bootstrap + .btn classes.
   ===================================================================== */

.location-page { color: #1f2d31; }

/* Every section: light by default, dark readable text, generous padding.
   Specific sections are themed below — we do NOT rely on nth-of-type. */
.location-page > .location-page,
.location-page section {
  padding: 56px 0;
  background: #ffffff;
  color: #1f2d31;
}
.location-page h2 { color: #141e21; font-weight: 700; margin: 0 0 1.25rem; }
.location-page h3 { color: #141e21; }
.location-page p { line-height: 1.6; }
/* Only color CONTENT links red — never button text (theme handles .btn). */
.location-page a:not(.btn) { color: #c8102e; }
.location-page .btn-red { color: #fff; }

/* Alternating light bands on specific sections */
.location-page .location-services,
.location-page .location-projects,
.location-page .location-whyus { background: #f5f7f9; }

/* Branded navy WYSIWYG blocks (intro / climate / permits) inherit the theme's
   dark .wysiwyg-block background — ensure ALL their text (incl. headings) is white. */
.location-page .wysiwyg-block,
.location-page .wysiwyg-block h2,
.location-page .wysiwyg-block h3,
.location-page .wysiwyg-block p,
.location-page .wysiwyg-block li { color: #ffffff; }

/* Why-us list sits on a light band — force readable dark text. */
.location-page .location-whyus h2 { color: #141e21; }
.location-page .whyus-list li { color: #1f2d31 !important; }

/* ---------- Hero ---------- */
.location-page .location-hero {
  position: relative;
  background: linear-gradient(135deg, #1b2a2e 0%, #33474d 100%);
  background-size: cover;
  background-position: center;
  color: #fff;
  padding: 96px 0;
  text-align: center;
}
.location-page .location-hero.has-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 26, 0.55);
}
.location-page .location-hero .simple-hero-content {
  position: relative;
  z-index: 1;
  max-width: 800px;
  margin: 0 auto;
}
.location-page .location-hero h1 { color: #fff; font-weight: 700; }
.location-page .location-hero .lead { color: #eaf0f2; font-size: 1.15rem; margin-bottom: 1.25rem; }

/* ---------- Buttons ---------- */
.location-page .btn-holder .btn { margin: 6px 8px 6px 0; }
/* Outline button: white on dark sections, brand-dark elsewhere */
.location-page .location-hero .btn-clear,
.location-page .location-cta .btn-clear {
  border: 2px solid #fff; color: #fff; background: transparent;
}
.location-page .location-hero .btn-clear:hover,
.location-page .location-cta .btn-clear:hover { background: #fff; color: #141e21; }

/* ---------- Quote form ---------- */
.location-page .location-quote { background: #fff; padding-top: 28px; }

/* ---------- WYSIWYG content (intro / climate / permits) ---------- */
.location-page .wysiwyg-inner { max-width: 920px; }
.location-page .wysiwyg-inner p { margin-bottom: 1rem; }

/* ---------- Services ---------- */
.location-page .service-card {
  background: #fff;
  border: 1px solid #e3e8ec;
  border-radius: 12px;
  padding: 26px;
  height: 100%;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.location-page .service-card h3 { margin-top: 0; }

/* ---------- Nearby towns (pills) ---------- */
.location-page .nearby-towns-list {
  list-style: none;
  padding: 0;
  margin: 1rem 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.location-page .nearby-towns-list li {
  background: #fff;
  border: 1px solid #cfd8de;
  color: #1f2d31;            /* fixes white-on-white pills */
  border-radius: 999px;
  padding: 8px 18px;
  font-weight: 500;
}
.location-page .nearby-towns-list a { color: #1f2d31; text-decoration: none; }
.location-page .area-map { border-radius: 12px; width: 100%; height: auto; }
.location-page .area-map-embed { border-radius: 12px; overflow: hidden; line-height: 0; }
.location-page .area-map-embed iframe { width: 100%; height: 320px; border: 0; display: block; }
@media (max-width: 767px) { .location-page .area-map-embed { margin-top: 1.25rem; } }

/* ---------- Why us ---------- */
.location-page .whyus-list { margin: 1rem 0 0; padding-left: 1.25rem; }
.location-page .whyus-list li { margin-bottom: 0.5rem; line-height: 1.5; }

/* ---------- Projects ---------- */
.location-page .project-card { display: block; text-decoration: none; color: inherit; }
.location-page .project-card img { border-radius: 10px; width: 100%; height: auto; }
.location-page .project-card h5 { color: #141e21; }

/* ---------- Reviews ---------- */
/* Equal-height cards (flex column) with the author pinned to the bottom, so
   reviews of different lengths still line up cleanly side by side. */
.location-page .location-reviews .row { align-items: stretch; }
.location-page .review-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid #e3e8ec;
  border-radius: 12px;
  padding: 26px;
  height: 100%;
  color: #1f2d31;            /* fixes white-on-white text */
}
.location-page .review-stars { color: #f5a623; font-size: 1.1rem; letter-spacing: 2px; margin-bottom: 0.75rem; }
.location-page .review-text {
  color: #1f2d31;
  line-height: 1.6;
  position: relative;
  max-height: 15em;          /* collapsed preview (~9-10 lines) */
  overflow: hidden;
}
.location-page .review-text.is-expanded,
.location-page .review-text.is-short { max-height: none; }
/* soft fade at the bottom of a collapsed (overflowing) review */
.location-page .review-text:not(.is-expanded):not(.is-short)::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 3em;
  background: linear-gradient(rgba(255, 255, 255, 0), #ffffff);
  pointer-events: none;
}
.location-page .review-toggle {
  align-self: flex-start;
  background: none;
  border: 0;
  color: #c8102e;
  font-weight: 600;
  padding: 8px 0;
  cursor: pointer;
}
.location-page .review-author { color: #1f2d31; font-weight: 600; margin: 0; margin-top: auto; padding-top: 1rem; }

/* ---------- FAQ (reuses theme .faq_new) ---------- */
.location-page .location-faq { background: #fff; }

/* ---------- Closing CTA ---------- */
.location-page .location-cta { background: #141e21; color: #fff; text-align: center; }
.location-page .location-cta h2 { color: #fff; }
.location-page .location-cta p { color: #eaf0f2; }

@media (max-width: 767px) {
  .location-page .location-hero { padding: 64px 0; }
  .location-page section { padding: 40px 0; }
}

/* ---------- Service Areas hub ---------- */
.location-hub .location-hub-intro { background: #ffffff; text-align: center; padding-top: 44px; padding-bottom: 40px; }
.location-hub .location-hub-intro .content-wrapper { max-width: 880px; margin: 0 auto; }
.location-hub .location-hub-intro .content-wrapper h2 { color: #141e21; margin-bottom: 0.75rem; }
.location-hub .location-hub-intro .content-wrapper,
.location-hub .location-hub-intro .content-wrapper p { color: #1f2d31; font-size: 1.15rem; line-height: 1.7; margin-bottom: 0; }
.location-hub .location-hub-list { background: #f5f7f9; }
.location-hub .hub-state-block { margin-bottom: 2.25rem; }
.location-hub .hub-state-block:last-child { margin-bottom: 0; }
.location-hub .hub-state-block h2 { color: #141e21; margin-bottom: 0.85rem; }
.location-hub .hub-area-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.location-hub .hub-area-list li a {
  display: inline-block;
  background: #ffffff;
  border: 1px solid #cfd8de;
  color: #1f2d31;
  border-radius: 999px;
  padding: 10px 22px;
  text-decoration: none;
  font-weight: 500;
}
.location-hub .hub-area-list li a:hover { border-color: #c8102e; color: #c8102e; }
