.elementor-kit-7{--e-global-color-primary:#002147;--e-global-color-secondary:#a14009;--e-global-color-text:#1a1c1a;--e-global-color-accent:#f4f3f1;--e-global-color-terracotta:#a14009;--e-global-color-terracotta_light:#fd844c;--e-global-color-cream:#faf9f6;--e-global-color-surface_low:#f4f3f1;--e-global-color-surface_container:#efeeeb;--e-global-color-on_surface:#1a1c1a;--e-global-color-on_surface_var:#44474e;--e-global-color-outline:#74777f;--e-global-color-outline_variant:#c4c6cf;--e-global-color-destructive:#ba1a1a;--e-global-color-white:#ffffff;--e-global-color-black:#000000;--e-global-typography-primary-font-family:"Space Grotesk";--e-global-typography-primary-font-weight:700;--e-global-typography-secondary-font-family:"Space Grotesk";--e-global-typography-secondary-font-weight:600;--e-global-typography-text-font-family:"Space Grotesk";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Space Grotesk";--e-global-typography-accent-font-weight:500;font-family:"Space Grotesk", Sans-serif;font-size:1rem;font-weight:400;line-height:1.5em;}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}.elementor-kit-7 h1{font-family:"Space Grotesk", Sans-serif;font-size:64px;font-weight:700;line-height:1em;letter-spacing:-0.025em;}.elementor-kit-7 h2{font-family:"Space Grotesk", Sans-serif;font-size:48px;font-weight:700;line-height:1em;letter-spacing:-0.025em;}.elementor-kit-7 h3{font-family:"Space Grotesk", Sans-serif;font-size:30px;font-weight:700;line-height:1.25em;}.elementor-kit-7 h4{font-family:"Space Grotesk", Sans-serif;font-size:1.5rem;font-weight:700;line-height:1.375em;}.elementor-kit-7 h5{font-family:"Space Grotesk", Sans-serif;font-size:1.25rem;font-weight:600;line-height:1.375em;}.elementor-kit-7 h6{font-family:"Space Grotesk", Sans-serif;font-size:1.125rem;font-weight:600;line-height:1.5em;letter-spacing:0.05em;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1280px;}.e-con{--container-max-width:1280px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* ===== Nashville Plumbing Co. — Global Elementor CSS ===== */
/* Reference: nashvilleplumbingtemplate.lovable.app */

/* ── Base Typography ── */
body, .elementor-widget-heading, .elementor-widget-text-editor,
.elementor-widget-icon-list, .elementor-widget-button {
  font-family: "Space Grotesk", sans-serif;
}

/* ── Section Heading Sizes (match reference exactly) ── */
/* H1 hero: 64px, H2 section: 48px, H3 card: 20px */

/* ── Hero Section ── */
.elementor-element-b625ec2 { min-height: 600px; }

/* Hero form card: rounded, shadow, overflow hidden */
.np-hero-tabs { border-radius:6px !important; overflow:hidden !important; box-shadow:0 25px 50px -12px rgba(0,0,0,0.25) !important; }

/* Hero tabs: white active, navy 80% inactive */
.np-hero-tabs .elementor-tabs-wrapper { border:none !important; margin:0 !important; display:flex !important; }
.np-hero-tabs .elementor-tab-title { font-family:"Space Grotesk",sans-serif; font-weight:600 !important; font-size:14px !important; border:none !important; background:rgba(0,33,71,0.8) !important; color:rgba(255,255,255,0.8) !important; padding:16px 0 !important; flex:1; text-align:center; justify-content:center; cursor:pointer; }
.np-hero-tabs .elementor-tab-title.elementor-active { background:#ffffff !important; color:#002147 !important; }
.np-hero-tabs .elementor-tab-content { padding:0 !important; border:none !important; background:transparent !important; }
.np-hero-tabs .elementor-tabs-content-wrapper { border:none !important; background:#002147 !important; }

/* Hero form body */
.np-hero-tabs .wpforms-container { margin:0 !important; }
.np-hero-tabs .wpforms-form { padding:32px !important; }
.np-hero-tabs .wpforms-field { padding:4px 0 !important; }
.np-hero-tabs .wpforms-field-label,
.np-hero-tabs .wpforms-field-sublabel,
.np-hero-tabs .wpforms-form label { color:#ffffff !important; font-weight:700 !important; font-size:12px !important; margin-bottom:4px !important; }
.np-hero-tabs .wpforms-required-label { color:#fd844c !important; }
.np-hero-tabs input.wpforms-field-medium,
.np-hero-tabs input.wpforms-field-large,
.np-hero-tabs .wpforms-form input,
.np-hero-tabs .wpforms-form select,
.np-hero-tabs .wpforms-form textarea {
  background:rgba(255,255,255,0.08) !important; border:1px solid rgba(255,255,255,0.15) !important; color:#ffffff !important; border-radius:6px !important; max-width:100% !important; width:100% !important; padding:12px 16px !important; font-size:16px !important; box-sizing:border-box !important; min-height:50px !important;
}
.np-hero-tabs .wpforms-form input::placeholder, .np-hero-tabs .wpforms-form textarea::placeholder { color:rgba(255,255,255,0.4) !important; }
.np-hero-tabs .wpforms-form select { appearance:none !important; cursor:pointer !important; }
.np-hero-tabs .wpforms-submit {
  background:#a14009 !important; border:none !important; color:#fff !important; width:100% !important; padding:14px !important; border-radius:6px !important; font-weight:700 !important; font-size:16px !important; margin-top:8px !important; cursor:pointer;
}
.np-hero-tabs .wpforms-submit:hover { background:#fd844c !important; }

/* ── Trust Badges Section ── */
.elementor-element-ee738ea { padding: 40px 0 !important; }

/* ── Services Section ── */
.np-svc-card { transition: transform .4s ease; }
.np-svc-card:hover { transform: scale(1.04); z-index:5; }

/* ── Coupons Section ── */
/* Coupon cards: dark translucent bg, inset dashed orange border */
.np-coupon-card {
  position: relative !important;
  background: rgba(255,255,255,0.05) !important;
  border-radius: 8px !important;
  overflow: hidden !important;
  border: none !important;
}
.np-coupon-card::before {
  content: '';
  position: absolute;
  inset: 12px;
  border: 2px dashed rgba(161,64,9,0.6);
  border-radius: 6px;
  pointer-events: none;
  z-index: 1;
}
.np-coupon-card .elementor-widget-divider .elementor-divider-separator {
  border-color: rgba(255,255,255,0.1) !important;
}
.np-coupon-card .elementor-button {
  background: transparent !important;
  border: none !important;
  color: #fd844c !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: 2.7px !important;
  text-transform: uppercase !important;
  padding: 0 !important;
}

/* ── Promises Section — Image with shadow + guarantee badge ── */
.np-promises-img {
  position: relative !important;
  overflow: visible !important;
  padding-bottom: 30px !important;
  padding-left: 30px !important;
}
.np-promises-img .elementor-widget-image img {
  border: 4px solid #ffffff;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
/* Guarantee badge — .box-info positioned over bottom-left of image */
.box-info {
  position: absolute !important;
  bottom: -24px !important;
  left: -24px !important;
  z-index: 10 !important;
  background: #ffffff !important;
  border: 1px solid #e0e0e0 !important;
  border-radius: 6px !important;
  padding: 16px 20px !important;
  box-shadow: 0 10px 25px rgba(0,0,0,0.1) !important;
  width: auto !important;
  min-width: 175px !important;
  max-width: 200px !important;
  --flex-direction: column !important;
  --flex-gap: 0px !important;
}
.box-info .elementor-widget:first-child .elementor-heading-title {
  font-size: 10px !important;
  font-weight: 400 !important;
  color: #44474e !important;
  line-height: 1.4 !important;
  margin: 0 !important;
}
.box-info .elementor-widget:last-child .elementor-heading-title {
  font-size: 16px !important;
  font-weight: 700 !important;
  color: #002147 !important;
  line-height: 1.4 !important;
  margin: 0 !important;
}
.box-info .elementor-widget { margin: 0 !important; padding: 0 !important; }

/* ── Promises Section — Green check SVG icons ── */
.np-check-icon {
  display: inline-flex; width: 18px; height: 18px; flex-shrink: 0;
  background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14' stroke='%2322c55e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='m9 11 3 3L22 4' stroke='%2322c55e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-size: contain;
}

/* ── Star Rating Icon (inline SVG as bg) ── */
.np-star-icon {
  display: inline-block; width: 16px; height: 16px;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%23fd844c' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 2l2.95 6.7L22 9.6l-5.3 4.9L18.2 22 12 18.3 5.8 22l1.5-7.5L2 9.6l7.05-.9L12 2z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-size: contain;
}

/* ── Map Pin Icon (service areas) ── */
.np-map-pin {
  display: inline-flex; width: 16px; height: 16px; flex-shrink: 0;
  background-image: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z' fill='%23E8771A' stroke='%23E8771A' stroke-width='1'/%3E%3Ccircle cx='12' cy='10' r='3' fill='white'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-size: contain;
}

/* ── Reviews Section Header ── */
.elementor-element-rv_hdr01 {
  --flex-direction: row !important;
  --flex-wrap: nowrap !important;
  --align-items: flex-end !important;
  --justify-content: space-between !important;
}
.elementor-element-rv_left1 {
  --flex-grow: 1 !important;
  --flex-shrink: 1 !important;
  --width: auto !important;
}
.elementor-element-rv_rt01 {
  --flex-grow: 0 !important;
  --flex-shrink: 0 !important;
  --width: auto !important;
  --align-items: flex-end !important;
}
.elementor-element-rv_rt01 > .elementor-widget {
  --container-widget-width: auto !important;
}
.np-google-link .elementor-button {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  color: #002147 !important;
  font-weight: 600 !important;
  font-size: 16px !important;
  white-space: nowrap !important;
}
.np-google-link .elementor-button:hover { color: #a14009 !important; }
.np-google-link .elementor-button-icon { font-size: 14px !important; }

/* ── Review Cards ── */
.np-review-card {
  box-shadow: 0 4px 20px -2px rgba(0,0,0,0.05) !important;
  display: flex !important;
  flex-direction: column !important;
}
.np-review-card .elementor-star-rating { font-size: 14px !important; }
.np-review-card .elementor-star-rating i { color: #fd844c !important; }
.np-review-card .elementor-widget-text-editor {
  flex: 1 !important;
}
.np-review-card .elementor-widget-text-editor p {
  font-size: 14px !important;
  color: #44474e !important;
  line-height: 1.6 !important;
}
.np-review-card .elementor-widget-image img {
  width: 56px !important;
  height: 56px !important;
  border-radius: 50% !important;
  object-fit: cover !important;
}

/* ── Arrow Icons (carousel nav) ── */
.np-arrow-left, .np-arrow-right {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  background-color: #ffffff; border: 1px solid #e5e5e5; cursor: pointer;
}

/* ── Service Areas Section ── */
.np-service-areas {
  position: relative !important;
  overflow: hidden !important;
}
.np-service-areas > .elementor-background-overlay {
  background: linear-gradient(to right, #faf9f6 40%, rgba(250,249,246,0.92) 55%, rgba(250,249,246,0) 75%) !important;
  opacity: 1 !important;
}
.np-service-areas > .e-con-inner {
  position: relative !important;
  z-index: 2 !important;
}
/* Left content column — holds text + city list together */
.elementor-element-cb74b2c {
  --width: 50% !important;
  max-width: 600px !important;
}
/* Two-tone heading accent color */
.np-accent { color: #a14009 !important; font-style: normal !important; }

/* Phone + address row below city list */
.elementor-element-d5767ca {
  --flex-direction: row !important;
  --align-items: center !important;
  --flex-gap: 16px !important;
  margin-top: 24px !important;
}
/* Navy pill button wrapping icon + phone number */
.elementor-element-d5767ca .elementor-widget-icon {
  display: none !important;
}
.elementor-element-d5767ca .elementor-widget-text-editor p:first-child {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  background: #002147 !important;
  color: #ffffff !important;
  border-radius: 6px !important;
  padding: 12px 24px !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  margin-bottom: 8px !important;
}
.elementor-element-d5767ca .elementor-widget-text-editor p:first-child strong {
  color: #ffffff !important;
}
.elementor-element-d5767ca .elementor-widget-text-editor p:first-child::before {
  content: '\e942';
  font-family: 'eicons';
  font-size: 16px;
}
.elementor-element-d5767ca .elementor-widget-text-editor p:last-child {
  font-size: 14px !important;
  color: #44474e !important;
}
/* City list grid — 2 columns with bordered rows */
.elementor-element-63802e0 {
  --flex-direction: row !important;
  --flex-wrap: wrap !important;
  --flex-gap: 0px 0px !important;
  --width: 100% !important;
  gap: 0 !important;
  border-top: 1px solid #c4c6cf !important;
}
.elementor-element-63802e0 > .elementor-widget-icon-list {
  width: 50% !important;
  flex: 0 0 50% !important;
  max-width: 50% !important;
  margin: 0 !important;
  padding: 0 !important;
}
.elementor-element-63802e0 .elementor-icon-list-item {
  border-bottom: 1px solid #c4c6cf !important;
}
.elementor-element-63802e0 .elementor-icon-list-item a {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 12px 16px 12px 0 !important;
  width: 100% !important;
}
.elementor-element-63802e0 .elementor-icon-list-text {
  font-weight: 600 !important;
  font-size: 16px !important;
  color: #1a1c1a !important;
}
.elementor-element-63802e0 .elementor-icon-list-icon svg {
  fill: #a14009 !important;
  color: #a14009 !important;
  width: 20px !important;
  height: 20px !important;
}
/* Chevron arrow after each city name */
.elementor-element-63802e0 .elementor-icon-list-item a::after {
  content: '\203A';
  font-size: 20px;
  color: #8fa5bf;
  font-weight: 300;
  flex-shrink: 0;
  margin-left: auto;
  padding-left: 8px;
}

/* ── How it Works Section ── */

/* Main section: 2-column row layout */
.elementor-element-a8307a7 {
  --flex-direction: row !important;
  --flex-wrap: nowrap !important;
  --align-items: flex-start !important;
  --flex-gap: 56px !important;
  overflow: visible !important;
}

/* Left column */
.elementor-element-d0de8ec {
  --width: auto !important;
  flex: 1 1 0% !important;
  --flex-gap: 0px !important;
  gap: 0 !important;
}

/* Dispatch badge */
.np-dispatch-badge p {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-bottom: 16px !important;
}
@keyframes pulse-dot {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

/* H2 styling — "easy" in terracotta */
.elementor-element-4fa7f7a .elementor-heading-title em {
  color: #a14009 !important;
  font-style: italic !important;
}
.elementor-element-4fa7f7a {
  margin-bottom: 4px !important;
}

/* Description text below H2 */
.elementor-element-8c7a40a {
  margin-bottom: 32px !important;
}

/* Step rows — vertical connector line */
.elementor-element-f081b9e,
.elementor-element-3c49cc4,
.elementor-element-1b7f0b2,
.elementor-element-19113b1,
.elementor-element-a1cf763 {
  position: relative !important;
  padding-left: 0 !important;
  margin-bottom: 0 !important;
  padding-bottom: 28px !important;
}
/* Vertical line between steps */
.elementor-element-f081b9e::before,
.elementor-element-3c49cc4::before,
.elementor-element-1b7f0b2::before,
.elementor-element-19113b1::before {
  content: '' !important;
  position: absolute !important;
  left: 21px !important;
  top: 44px !important;
  bottom: 0 !important;
  width: 2px !important;
  background: #d8d6d2 !important;
  z-index: 0 !important;
  display: block !important;
}
/* Last step: no bottom padding, no line */
.elementor-element-a1cf763 {
  padding-bottom: 0 !important;
}

/* Step number circles — shadow */
.elementor-element-9aa3265,
.elementor-element-aeafda2,
.elementor-element-bc7eb86,
.elementor-element-20228c1,
.elementor-element-4b246d0 {
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1) !important;
  z-index: 2 !important;
  position: relative !important;
}

/* CTA link at bottom of steps */
.np-hiw-cta {
  margin-top: 12px !important;
}
.np-hiw-cta a {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  color: #002147 !important;
  font-weight: 600 !important;
  font-size: 15px !important;
  text-decoration: none !important;
  border-bottom: 2px solid #a14009 !important;
  padding-bottom: 4px !important;
  transition: color 0.2s !important;
}
.np-hiw-cta a:hover { color: #a14009 !important; }

/* Right column — polaroid card */
.np-hiw-card {
  --width: 420px !important;
  max-width: 420px !important;
  flex: 0 0 420px !important;
  background: #ffffff !important;
  padding: 16px !important;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.15) !important;
  border: 1px solid #e6e4e0 !important;
  border-radius: 6px !important;
  transform: rotate(2deg) !important;
  margin-top: 48px !important;
  --flex-gap: 4px !important;
  gap: 4px !important;
  position: relative !important;
  overflow: visible !important;
}
.np-hiw-card .elementor-widget-image img {
  border-radius: 6px !important;
  aspect-ratio: 1 / 1 !important;
  object-fit: cover !important;
  width: 100% !important;
  max-height: 380px !important;
  filter: brightness(1.05) contrast(1.05) saturate(1.15) sepia(0.08) !important;
}
.np-hiw-card .elementor-widget-image {
  margin-bottom: 12px !important;
}
/* "Real dispatch team. Not AI." badge — real editable container */
.np-hiw-badge {
  position: absolute !important;
  top: -16px !important;
  left: -16px !important;
  z-index: 10 !important;
  transform: rotate(-6deg) !important;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important;
  white-space: nowrap !important;
  width: auto !important;
  --width: auto !important;
}
.np-hiw-badge .elementor-heading-title {
  white-space: nowrap !important;
}
/* Card text center */
.np-hiw-card .elementor-widget-heading { text-align: center !important; }
.np-hiw-card .elementor-heading-title { text-align: center !important; }

/* Step number — legacy class */
.np-step-num {
  width:44px !important; min-width:44px !important; height:44px !important; min-height:44px !important;
  flex:0 0 44px !important; border-radius:50% !important;
  display:flex !important; align-items:center !important; justify-content:center !important; padding:0 !important;
}

/* ── When to Call Section ── */

/* Top row: text left + photo right */
.elementor-element-wtc_top1 {
  --flex-direction: row !important;
  --align-items: flex-start !important;
  --flex-gap: 48px !important;
}

/* Left text column */
.elementor-element-a1c8524 {
  flex: 1 1 0% !important;
  --width: auto !important;
  --flex-gap: 16px !important;
}
.elementor-element-a1c8524 .elementor-element-f4fdb30 {
  margin-bottom: 16px !important;
}

/* Right photo column — circular with dashed ring */
.np-wtc-photo {
  --width: 380px !important;
  max-width: 380px !important;
  flex: 0 0 380px !important;
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  aspect-ratio: 1 / 1 !important;
}
.np-wtc-photo .elementor-widget-image {
  position: relative !important;
  z-index: 2 !important;
  width: 92% !important;
  padding: 0 !important;
}
.np-wtc-photo .elementor-widget-image img {
  border-radius: 50% !important;
  aspect-ratio: 1 / 1 !important;
  object-fit: cover !important;
  border: 8px solid #ffffff !important;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.15) !important;
}
/* Dashed orange ring around photo */
.np-wtc-photo::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: 50% !important;
  border: 2px dashed rgba(161,64,9,0.4) !important;
  pointer-events: none !important;
  z-index: 1 !important;
}

/* "Same-day / Honest diagnosis" badge */
.np-wtc-badge {
  position: absolute !important;
  bottom: -8px !important;
  left: 8px !important;
  z-index: 10 !important;
  width: auto !important;
  --width: auto !important;
}

/* Checklist card */
.np-wtc-card {
  --flex-direction: column !important;
}
/* 2-column grid for icon-list inside card */
.np-wtc-card .elementor-icon-list-items {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 16px 48px !important;
}
.np-wtc-card .elementor-icon-list-item {
  margin-bottom: 0 !important;
}
.np-wtc-card .elementor-icon-list-icon i {
  color: #1e5f3e !important;
  font-size: 18px !important;
}
.np-wtc-card .elementor-icon-list-text {
  color: #002147 !important;
  font-size: 15px !important;
  font-weight: 400 !important;
}
.np-wtc-card .elementor-icon-list-item a {
  display: flex !important;
  align-items: flex-start !important;
  gap: 10px !important;
}

/* ── About / Nashville Legacy Section ── */

/* Photo column — circular with dashed ring */
.np-about-photo {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  aspect-ratio: 1 / 1 !important;
}
.np-about-photo .elementor-widget-image {
  position: relative !important;
  z-index: 2 !important;
  width: 92% !important;
}
.np-about-photo .elementor-widget-image img {
  border-radius: 50% !important;
  aspect-ratio: 1 / 1 !important;
  object-fit: cover !important;
  border: 8px solid #ffffff !important;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.15) !important;
}
.np-about-photo::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: 50% !important;
  border: 2px dashed rgba(161,64,9,0.4) !important;
  pointer-events: none !important;
  z-index: 1 !important;
}

/* License badge — bottom-left */
.np-about-license {
  position: absolute !important;
  bottom: 16px !important;
  left: 0 !important;
  z-index: 10 !important;
  width: auto !important;
  --width: auto !important;
  box-shadow: 0 10px 25px rgba(0,0,0,0.1) !important;
}

/* 25+ years badge — top-right */
.np-about-years {
  position: absolute !important;
  top: 16px !important;
  right: 0 !important;
  left: auto !important;
  z-index: 10 !important;
  width: auto !important;
  --width: auto !important;
  max-width: 180px !important;
  box-shadow: 0 10px 25px rgba(0,0,0,0.15) !important;
}

/* "Or call" link */
.np-about-call {
  color: #002147 !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  border-bottom: 2px solid #a14009 !important;
  padding-bottom: 4px !important;
  white-space: nowrap !important;
}
.np-about-call:hover { color: #a14009 !important; }

/* ── About Page (about.html conversion) ── */

/* Light-colored accent emphasis, for use on navy backgrounds */
.np-accent-light { color: #fd844c !important; font-style: normal !important; }

/* Icon square used inside feature/why/culture cards. Its parent row has no
   align-items set (defaults to stretch), which was stretching the box to
   the full height of its taller text sibling instead of staying square.
   align-self overrides that per-item regardless of which row it's in. */
.np-icon-box {
  align-self: flex-start !important;
  flex-shrink: 0 !important;
  flex-grow: 0 !important;
}
.np-icon-box .elementor-icon { font-size: inherit !important; }
.np-icon-box .elementor-icon i { font-size: inherit !important; }

/* "How we treat your home" + "Why families call us" feature cards */
.np-feature-card,
.elementor-element .np-feature-card {
  transition: box-shadow .3s ease !important;
}
.np-feature-card:hover {
  box-shadow: 0 10px 30px -8px rgba(0,0,0,0.15) !important;
}

/* Team grid: 4 cols desktop, 3 tablet, 2 mobile */
.np-team-card > .elementor-widget-image img {
  aspect-ratio: 1 / 1 !important;
  object-fit: cover !important;
  width: 100% !important;
  display: block !important;
}
.np-team-card {
  transition: transform .3s ease, box-shadow .3s ease !important;
}
.np-team-card:hover {
  transform: translateY(-4px) !important;
  box-shadow: 0 15px 35px -10px rgba(0,0,0,0.2) !important;
}
.np-team-grid > .e-con {
  width: calc(25% - 18px) !important;
  --width: calc(25% - 18px) !important;
}
@media (max-width: 1024px) {
  .np-team-grid > .e-con {
    width: calc(33.333% - 16px) !important;
    --width: calc(33.333% - 16px) !important;
  }
}
@media (max-width: 640px) {
  .np-team-grid > .e-con {
    width: calc(50% - 12px) !important;
    --width: calc(50% - 12px) !important;
  }
}

/* Culture section scattered photos: absolutely positioned with rotation,
   matching the reference's overlapping polaroid effect. Reference hides
   this decoration below its lg breakpoint (hidden lg:block), so we do
   the same rather than trying to reflow absolute positioning on mobile. */
.np-culture-photos {
  position: relative !important;
  height: 500px !important;
  display: block !important;
}
.np-culture-photo-1 {
  position: absolute !important;
  top: 0 !important;
  left: 16px !important;
  right: auto !important;
  bottom: auto !important;
  width: 224px !important;
  --width: 224px !important;
  transform: rotate(-6deg) !important;
}
.np-culture-photo-2 {
  position: absolute !important;
  top: 80px !important;
  right: 0 !important;
  left: auto !important;
  bottom: auto !important;
  width: 240px !important;
  --width: 240px !important;
  transform: rotate(5deg) !important;
}
.np-culture-photo-3 {
  position: absolute !important;
  bottom: 0 !important;
  left: 48px !important;
  right: auto !important;
  top: auto !important;
  width: 256px !important;
  --width: 256px !important;
  transform: rotate(-3deg) !important;
}
@media (max-width: 1024px) {
  .np-culture-photos {
    display: none !important;
  }
}

/* Floating caption card overlapping the family-shop photo */
.np-about-family-photo-wrap {
  position: relative !important;
}
.np-about-floating-card {
  position: absolute !important;
  bottom: -24px !important;
  left: -24px !important;
  width: auto !important;
  --width: auto !important;
  max-width: calc(100% - 24px) !important;
}
@media (max-width: 767px) {
  .np-about-floating-card {
    left: 8px !important;
    bottom: -16px !important;
  }
}

/* Text-editor paragraphs across the About page carry a leftover theme
   margin Elementor doesn't reset, inflating spacing beyond the widget's
   own margin control. Reset globally for this page; use the widget's
   _margin control (or a wrapping container gap) for intentional spacing. */
.elementor-66 .elementor-widget-text-editor p {
  margin: 0 !important;
}
.elementor-66 .elementor-widget-text-editor p + p {
  margin-top: 20px !important;
}

/* Hero circular owner photo + badge overlap */
.np-about-hero-photo-wrap {
  position: relative !important;
  max-width: 480px !important;
  margin-left: auto !important;
}
.np-about-hero-photo {
  max-width: 480px !important;
}
.np-about-hero-photo .elementor-widget-image img {
  border-radius: 50% !important;
  aspect-ratio: 1 / 1 !important;
  object-fit: cover !important;
  border: 8px solid rgba(255,255,255,0.15) !important;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.35) !important;
}
.np-about-hero-badge {
  position: absolute !important;
  bottom: -16px !important;
  left: -16px !important;
  width: auto !important;
  --width: auto !important;
}

/* "How we treat your home" tilted photo card: force-crop the landscape
   source photo into the reference's 3:4 portrait frame, capped to the
   reference's column width so the aspect ratio doesn't inflate height */
.np-about-tilt-photo {
  max-width: 480px !important;
}
.np-about-tilt-photo .elementor-widget-image img {
  aspect-ratio: 3 / 4 !important;
  object-fit: cover !important;
  width: 100% !important;
  height: auto !important;
  display: block !important;
}
@media (max-width: 1024px) {
  .np-about-hero-photo-wrap { display: none !important; }
}

/* Brand pills */
.np-brand-pills {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  margin-top: 16px !important;
}
.np-brand-pills span {
  display: inline-block !important;
  padding: 6px 12px !important;
  border: 1px solid #e6e4e0 !important;
  border-radius: 6px !important;
  background: #ffffff !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 1px !important;
  color: #44474e !important;
}

/* ── FAQ Section ── */

/* FAQ heading — "FAQ" in terracotta via em */
.elementor-element-301c726 .elementor-heading-title em {
  color: #a14009 !important;
  font-style: italic !important;
}

/* Accordion toggle icon color */
.elementor-element-4597d3f .elementor-accordion-icon {
  color: #a14009 !important;
}
.elementor-element-4597d3f .elementor-accordion-icon svg {
  fill: #a14009 !important;
}
/* Active accordion title color */
.elementor-element-4597d3f .elementor-tab-title.elementor-active {
  color: #a14009 !important;
}
.elementor-element-4597d3f .elementor-tab-title.elementor-active a {
  color: #a14009 !important;
}

/* ── CTA Section Form (reuses hero form's tabs+WPForms styling via np-hero-tabs) ── */
.np-cta-form-wrap { max-width:450px !important; width:100% !important; }

/* ── Footer ── */
.elementor-element-72fb6ea { padding: 80px 40px 40px !important; }

/* Footer column headings */
.elementor-element-72fb6ea .elementor-heading-title {
  font-family: "Space Grotesk", sans-serif !important;
  text-transform: uppercase; font-size: 12px; font-weight: 700; letter-spacing: 1px;
  color: rgba(255,255,255,0.5);
}

/* Footer links */
.elementor-element-72fb6ea .elementor-icon-list-text { font-size: 14px; color: #fff; }
.elementor-element-72fb6ea .elementor-icon-list-item a:hover .elementor-icon-list-text { color: #fd844c; }

/* Footer social icons */
.elementor-element-a1b2c3d .elementor-social-icon {
  border-color: rgba(255,255,255,0.2) !important;
  color: #8fa5bf !important;
}
.elementor-element-a1b2c3d .elementor-social-icon:hover { color: #fff !important; }

/* Footer bottom bar */
.elementor-element-2e12a67 { border-top: 1px solid rgba(255,255,255,0.1) !important; }

/* ── Contact page form ── */
.np-contact-form .wpforms-submit { background:#a14009 !important; border:none !important; color:#fff !important; padding:14px 32px !important; border-radius:6px !important; font-weight:700 !important; }
.np-contact-form .wpforms-submit:hover { background:#002147 !important; }

/* ── Blog / Workbench Section ── */

/* Grid container - CSS Grid 4 columns */
.np-blog-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 20px !important;
  width: 100% !important;
  --flex-direction: row !important;
}
.np-blog-grid > .e-con {
  width: 100% !important;
  --width: 100% !important;
}

/* Featured card - spans 2 cols, 2 rows */
.np-blog-featured {
  grid-column: span 2 !important;
  grid-row: span 2 !important;
  border-radius: 12px !important;
}

/* Secondary card - spans 2 cols, 2 rows */
.np-blog-secondary {
  grid-column: span 2 !important;
  grid-row: span 2 !important;
  border-radius: 12px !important;
}

/* Small horizontal cards - span 2 cols */
.np-blog-small-card {
  grid-column: span 2 !important;
  --flex-direction: row !important;
  flex-direction: row !important;
  border-radius: 12px !important;
  min-height: 0 !important;
  max-height: 220px !important;
  align-items: stretch !important;
}

/* Small card image - fixed width, full height */
.np-blog-small-card > .elementor-widget-image {
  flex: 0 0 160px !important;
  width: 160px !important;
  --width: 160px !important;
  overflow: hidden !important;
  align-self: stretch !important;
}
.np-blog-small-card > .elementor-widget-image img {
  width: 160px !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
.np-blog-small-card > .elementor-widget-image .elementor-widget-container {
  height: 100% !important;
}

/* Small card text area */
.np-blog-small-text {
  flex: 1 1 0% !important;
  --width: auto !important;
  min-width: 0 !important;
  overflow: hidden !important;
}

/* Card footer with border-top */
.np-blog-card-footer {
  margin-top: auto !important;
  --flex-direction: row !important;
  --flex-wrap: nowrap !important;
  flex-wrap: nowrap !important;
  --width: 100% !important;
  width: 100% !important;
}

/* Section heading alignment */
.np-blog-section > .elementor-widget-heading {
  width: 100% !important;
  --width: 100% !important;
  text-align: left !important;
}

/* Section inner padding */
.np-blog-section {
  padding-left: 32px !important;
  padding-right: 32px !important;
}

/* H2 accent - italic style */
.np-blog-section em.np-accent {
  font-style: italic !important;
}

/* Small card H4 titles - limit lines */
.np-blog-small-card .elementor-heading-title {
  overflow: hidden !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
}

/* Small card description text - limit lines */
.np-blog-small-text .elementor-widget-text-editor p {
  overflow: hidden !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
}

/* ── CTA Section ("Get it fixed") ── */
.np-cta-section {
  background: #faf9f6 !important;
  padding-top: 96px !important;
  padding-bottom: 96px !important;
  padding-left: 64px !important;
  padding-right: 64px !important;
  --flex-direction: column !important;
  flex-direction: column !important;
  align-items: center !important;
}
.np-cta-box {
  max-width: 1280px !important;
  width: 100% !important;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25) !important;
}
.np-cta-left {
  --flex-direction: column !important;
  flex-direction: column !important;
  justify-content: flex-start !important;
  align-items: flex-start !important;
  --flex-align-items: flex-start !important;
}
.np-cta-left > .elementor-widget {
  width: 100% !important;
  --width: 100% !important;
  text-align: left !important;
}
.np-cta-icon-circle {
  width: 48px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  height: 48px !important;
  min-height: 48px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,0.1) !important;
  --width: 48px !important;
  flex-shrink: 0 !important;
  overflow: hidden !important;
}
.np-cta-icon-circle .elementor-icon {
  font-size: 20px !important;
  width: 20px !important;
  height: 20px !important;
}
.np-cta-icon-circle .elementor-icon i {
  font-size: 20px !important;
}
.np-cta-icon-circle .elementor-icon svg {
  width: 20px !important;
  height: 20px !important;
}
.np-cta-contact-row {
  --flex-direction: row !important;
  flex-direction: row !important;
  align-items: center !important;
  --flex-align-items: center !important;
}
.np-cta-contact-row > .e-con:last-child {
  flex: 1 !important;
}
.np-cta-contact-row .elementor-widget-text-editor p,
.np-cta-contact-row .elementor-widget-heading p {
  margin: 0 !important;
}
.np-cta-contact-row .e-con {
  padding: 0 !important;
}
.np-cta-contact-row .e-con:last-child {
  gap: 2px !important;
}
.np-cta-right {
  background: rgba(255,255,255,0.05) !important;
}

/* ── Responsive: stack two-column sections below desktop ── */
/* These sections use flex_direction_mobile/tablet:"column" (set via Elementor
   settings), but their children still carry desktop % or px widths, which
   would otherwise stay narrow/overflow once the parent switches to a column
   flex axis. Force them to full width whenever the parent is stacked. */
@media (max-width: 1024px) {
  /* Hero: heading column + form column */
  .elementor-element-5a82d21,
  .elementor-element-3097444,
  /* Fine print: claims list + promises image */
  .elementor-element-6ec7bce,
  .elementor-element-962ee91,
  /* How it works: steps list + image card */
  .elementor-element-d0de8ec,
  .elementor-element-203d2b5,
  /* License/FAQ section 1 */
  .elementor-element-afe18f9,
  .elementor-element-6261339,
  /* Clear answers/FAQ section 2 */
  .elementor-element-3212aa4,
  .elementor-element-8417ab3,
  /* When to call a plumber */
  .elementor-element-a1c8524,
  .elementor-element-4a4703d,
  /* CTA left/right */
  .np-cta-left,
  .np-cta-right {
    width: 100% !important;
    max-width: 100% !important;
    flex-basis: 100% !important;
    flex-shrink: 1 !important;
    --width: 100% !important;
  }
}

/* CTA section padding compounds (outer section + inner column both at 64px),
   leaving almost no width for text on mobile. Tighten both on small screens. */
@media (max-width: 767px) {
  .np-cta-section {
    padding-left: 20px !important;
    padding-right: 20px !important;
    padding-top: 56px !important;
    padding-bottom: 56px !important;
  }
  .np-cta-left,
  .np-cta-right {
    padding: 32px 24px !important;
  }
}

/* Decorative floating badges: pull negative offsets inward on mobile so they
   don't poke past the viewport edge once their parent image goes full-bleed. */
@media (max-width: 767px) {
  .elementor-element-507f676 {
    left: 8px !important;
  }
  .elementor-element-hiw_bdg1 {
    left: 8px !important;
    right: 8px !important;
    width: auto !important;
    max-width: calc(100% - 16px) !important;
  }
  .elementor-element-hiw_bdtx .elementor-heading-title {
    white-space: normal !important;
  }
}

/* ── Responsive: blog grid collapses below desktop ── */
@media (max-width: 1024px) {
  .np-blog-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
@media (max-width: 640px) {
  .np-blog-grid {
    grid-template-columns: 1fr !important;
  }
  .np-blog-featured,
  .np-blog-secondary,
  .np-blog-small-card {
    grid-column: span 1 !important;
    grid-row: span 1 !important;
  }
  .np-blog-small-card {
    flex-direction: column !important;
    max-height: none !important;
  }
  .np-blog-small-card > .elementor-widget-image {
    flex: 0 0 auto !important;
    width: 100% !important;
    --width: 100% !important;
  }
  .np-blog-small-card > .elementor-widget-image img {
    width: 100% !important;
    height: 200px !important;
  }
}

/* ── About Page: Reviews Carousel ("From Your Middle Tennessee Neighbors") ── */
/* Built on the nested-carousel widget; each slide is a plain container
   (star-rating + "Validates" tag + quote + footer row + service tag) with
   its own background/border/padding set directly in Elementor settings,
   so no card-level CSS is needed here — just carousel chrome. */

/* Swiper slides: consistent gap since the widget has no direct "gap"
   control (space_between defaults to a tight 10px) */
.np-review-carousel .swiper-slide {
  padding-right: 12px !important;
  box-sizing: border-box !important;
}

/* Pagination: pill/bar shape (wide + terracotta when active, narrow + gray
   when inactive) instead of Elementor's default round dots */
.np-review-carousel .swiper-pagination {
  position: static !important;
  margin-top: 24px !important;
  display: flex !important;
  justify-content: flex-start !important;
  gap: 8px !important;
}
.np-review-carousel .swiper-pagination-bullet {
  width: 16px !important;
  height: 6px !important;
  border-radius: 3px !important;
  background: #c4c6cf !important;
  opacity: 1 !important;
  margin: 0 !important;
  transition: width .2s ease, background .2s ease !important;
}
.np-review-carousel .swiper-pagination-bullet-active {
  width: 32px !important;
  background: #a14009 !important;
}

/* Nav-buttons wrapper: Elementor's flex-grow/shrink settings on this
   container proved unreliable inside the header's space-between row
   (collapsed to width:0, then overflowed once forced wider). Pull it out
   of the flex flow entirely and pin it to the header's top-right corner —
   this sidesteps the flex-basis computation altogether. */
.elementor-element-9d94f5a {
  position: relative !important;
}
.elementor-element-237ea16 {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  width: auto !important;
}

/* Header prev/next buttons (custom, wired to the swiper instance via JS
   since the widget's own arrows can't be relocated into the header) */
.np-review-nav-btn {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: #ffffff;
  border: 1px solid #c4c6cf;
  color: #002147;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0,0,0,0.08);
  transition: background .2s ease, color .2s ease;
}
.np-review-nav-btn:hover {
  background: #002147;
  color: #ffffff;
}
.np-review-nav-btn svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
}

/* ── Color Reference ── */
/* Navy Primary:    #002147 */
/* Orange CTA:      #a14009 */
/* Orange Hover:    #fd844c */
/* Light BG:        #faf9f6 */
/* Alt Light BG:    #f4f3f1 */
/* White:           #ffffff */
/* Text Muted:      #8fa5bf */
/* Green Check:     #22c55e */
/* Star Orange:     #fd844c *//* End custom CSS */