.elementor-kit-6{--e-global-color-primary:#6EC1E4;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;}.elementor-kit-6 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.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);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@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 */@import url('https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,400..900&family=Lato:wght@400;700&family=JetBrains+Mono:wght@500;700&display=swap');

:root {
  --nf-navy-950: #050d16;
  --nf-navy-900: #091522;
  --nf-navy-800: #0f2236;
  --nf-navy-700: #18324b;
  --nf-blue-600: #0787b7;
  --nf-blue-500: #0a9fd4;
  --nf-cyan-400: #0bb9ee;
  --nf-cyan-200: #9fe3f8;
  --nf-ice-100: #eaf4f8;
  --nf-ice-200: #d8e6ec;
  --nf-ice-300: #bfd2db;
  --nf-mist-50: #f7fafc;
  --nf-slate-500: #5e7180;
  --nf-slate-700: #33475a;
  --nf-orange-500: #ff9f43;
  --nf-orange-600: #f27f12;
  --nf-red-500: #e5484d;
  --nf-white: #ffffff;

  --nf-flow: linear-gradient(90deg, #0787b7 0%, #0bb9ee 55%, #9fe3f8 100%);
  --nf-flow-v: linear-gradient(180deg, #0bb9ee 0%, #0787b7 100%);

  --nf-font-display: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  --nf-font-body: 'Lato', 'Helvetica Neue', Arial, sans-serif;
  --nf-font-mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;

  --nf-fs-xs: 0.75rem;
  --nf-fs-sm: 0.875rem;
  --nf-fs-base: 1.0625rem;
  --nf-fs-lg: 1.25rem;
  --nf-fs-xl: clamp(1.375rem, 1.1rem + 0.9vw, 1.75rem);
  --nf-fs-h3: clamp(1.5rem, 1.15rem + 1.2vw, 2.125rem);
  --nf-fs-h2: clamp(2rem, 1.3rem + 2.6vw, 3.5rem);
  --nf-fs-h1: clamp(2.5rem, 1.4rem + 4.4vw, 5.25rem);
  --nf-fs-mega: clamp(3rem, 1rem + 8vw, 9.5rem);

  --nf-space-1: 0.25rem;
  --nf-space-2: 0.5rem;
  --nf-space-3: 0.75rem;
  --nf-space-4: 1rem;
  --nf-space-5: 1.5rem;
  --nf-space-6: 2rem;
  --nf-space-7: 3rem;
  --nf-space-8: 4rem;
  --nf-space-9: 6rem;
  --nf-space-10: 8rem;
  --nf-section-y: clamp(4rem, 2.5rem + 6vw, 8.5rem);

  --nf-container: 1320px;
  --nf-gutter: clamp(1rem, 0.5rem + 2.5vw, 2.5rem);

  --nf-radius-sm: 8px;
  --nf-radius: 14px;
  --nf-radius-lg: 24px;
  --nf-radius-pill: 999px;

  --nf-shadow-sm: 0 1px 2px rgba(9, 21, 34, 0.06), 0 2px 8px rgba(9, 21, 34, 0.05);
  --nf-shadow: 0 10px 30px -12px rgba(9, 21, 34, 0.25);
  --nf-shadow-lg: 0 30px 70px -25px rgba(9, 21, 34, 0.45);
  --nf-ring: 0 0 0 3px rgba(11, 185, 238, 0.45);

  --nf-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --nf-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --nf-dur: 0.45s;

  --nf-header-h: 84px;
  --nf-rail-h: 38px;
  --nf-adminbar: 0px;
}

body.admin-bar { --nf-adminbar: 32px; }
@media (max-width: 782px) {
  body.admin-bar { --nf-adminbar: 46px; }
}

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  margin: 0;
  font-family: var(--nf-font-body);
  font-size: var(--nf-fs-base);
  line-height: 1.65;
  color: var(--nf-slate-700);
  background: var(--nf-white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

.nf, .nf *, .nf *::before, .nf *::after { box-sizing: border-box; }

.nf img, .nf video, .nf svg { display: block; max-width: 100%; }
.nf img, .nf video { height: auto; }

.nf h1, .nf h2, .nf h3, .nf h4, .nf h5, .nf h6,
.nf .nf-h1, .nf .nf-h2, .nf .nf-h3, .nf .nf-h4 {
  font-family: var(--nf-font-display);
  font-variation-settings: 'wdth' 100;
  color: var(--nf-navy-900);
  margin: 0 0 var(--nf-space-4);
  letter-spacing: -0.02em;
  line-height: 1.05;
  font-weight: 800;
  text-wrap-style: balance;
}
.nf h1, .nf .nf-h1 { font-size: var(--nf-fs-h1); font-variation-settings: 'wdth' 88; letter-spacing: -0.035em; line-height: 0.98; }
.nf h2, .nf .nf-h2 { font-size: var(--nf-fs-h2); font-variation-settings: 'wdth' 92; letter-spacing: -0.03em; }
.nf h3, .nf .nf-h3 { font-size: var(--nf-fs-h3); line-height: 1.12; }
.nf h4, .nf .nf-h4 { font-size: var(--nf-fs-xl); line-height: 1.2; font-weight: 700; letter-spacing: -0.01em; }
.nf p { margin: 0 0 var(--nf-space-4); text-wrap-style: pretty; }
.nf p:last-child { margin-bottom: 0; }

.nf a { color: var(--nf-blue-600); text-decoration: none; transition: color 0.2s var(--nf-ease); }
.nf a:hover { color: var(--nf-navy-900); }

.nf :focus-visible { outline: none; box-shadow: var(--nf-ring); border-radius: 6px; }

.nf-lead { font-size: var(--nf-fs-lg); line-height: 1.6; color: var(--nf-slate-500); max-width: 62ch; }
.nf-muted { color: var(--nf-slate-500); }
.nf-mono { font-family: var(--nf-font-mono); font-size: 0.8125em; letter-spacing: 0.02em; }
.nf-accent { background: var(--nf-flow); -webkit-background-clip: text; background-clip: text; color: transparent; }

.nf-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  font-family: var(--nf-font-mono);
  font-size: var(--nf-fs-xs);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--nf-blue-600);
  margin-bottom: var(--nf-space-4);
}
.nf-eyebrow--light { color: var(--nf-cyan-400); }

.nf-pulse {
  position: relative;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #2fd27a;
  flex: none;
}
.nf-pulse::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 2px solid #2fd27a;
  animation: nf-ping 1.8s var(--nf-ease) infinite;
}
@keyframes nf-ping {
  0% { transform: scale(0.4); opacity: 0.9; }
  100% { transform: scale(1.7); opacity: 0; }
}

.nf-container {
  width: 100%;
  max-width: var(--nf-container);
  margin-inline: auto;
  padding-inline: var(--nf-gutter);
}
.nf-container--wide { max-width: 1560px; }
.nf-section { padding-block: var(--nf-section-y); position: relative; }
.nf-section--navy { background: var(--nf-navy-900); color: var(--nf-ice-300); }
.nf-section--navy h1, .nf-section--navy h2, .nf-section--navy h3, .nf-section--navy h4 { color: var(--nf-white); }
.nf-section--ice { background: var(--nf-ice-100); }
.nf-section--mist { background: var(--nf-mist-50); }

.nf-btn {
  --btn-bg: var(--nf-blue-600);
  --btn-fg: var(--nf-white);
  --btn-bd: transparent;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6em;
  min-height: 52px;
  padding: 0.85em 1.5em;
  border-radius: var(--nf-radius-pill);
  border: 1.5px solid var(--btn-bd);
  background: var(--btn-bg);
  color: var(--btn-fg) !important;
  font-family: var(--nf-font-display);
  font-variation-settings: 'wdth' 105;
  font-weight: 700;
  font-size: 0.975rem;
  letter-spacing: 0.005em;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  text-decoration: none;
  transition: transform 0.35s var(--nf-ease), box-shadow 0.35s var(--nf-ease), background-color 0.25s, border-color 0.25s;
  --nf-b: var(--btn-bg);
  --nf-c: var(--btn-fg);
  --nf-bc: var(--btn-bd);
}
.nf-btn::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--nf-flow);
  transform: translateY(101%);
  transition: transform 0.5s var(--nf-ease);
}
.nf-btn:hover { transform: translateY(-2px); box-shadow: var(--nf-shadow); }
.nf-btn:hover::before { transform: translateY(0); }
.nf-btn:active { transform: translateY(0); }
.nf-btn svg { width: 1.15em; height: 1.15em; flex: none; transition: transform 0.35s var(--nf-ease); }
.nf-btn:hover svg.nf-arrow { transform: translateX(4px); }

.nf-btn--urgent { --btn-bg: var(--nf-orange-500); --btn-fg: var(--nf-navy-900); }
.nf-btn--urgent::before { background: linear-gradient(90deg, #ffb877, #ff9f43); }
.nf-btn--dark { --btn-bg: var(--nf-navy-900); }
.nf-btn--ghost { --btn-bg: transparent; --btn-fg: var(--nf-navy-900); --btn-bd: var(--nf-ice-300); }
.nf-btn--ghost:hover { --btn-fg: var(--nf-white); --btn-bd: transparent; }
.nf-btn--ghost-light { --btn-bg: rgba(255, 255, 255, 0.04); --btn-fg: var(--nf-white); --btn-bd: rgba(255, 255, 255, 0.25); }
.nf-btn--ghost-light:hover { --btn-bd: transparent; }
.nf-btn--sm { min-height: 42px; padding: 0.7em 1.15em; font-size: 0.875rem; }
.nf-btn--lg { min-height: 60px; padding: 1em 1.9em; font-size: 1.0625rem; }
.nf-btn--block { width: 100%; }

.nf-link {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  font-family: var(--nf-font-display);
  font-weight: 700;
  color: var(--nf-navy-900);
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0% 1.5px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  transition: background-size 0.4s var(--nf-ease), color 0.2s;
}
.nf-link:hover { background-size: 100% 1.5px; color: var(--nf-blue-600); }
.nf-link svg { width: 1em; height: 1em; transition: transform 0.35s var(--nf-ease); }
.nf-link:hover svg { transform: translateX(3px); }

.nf-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  padding: 0.45em 0.9em;
  border-radius: var(--nf-radius-pill);
  border: 1px solid var(--nf-ice-200);
  background: var(--nf-white);
  font-size: var(--nf-fs-sm);
  font-weight: 700;
  color: var(--nf-navy-900);
  line-height: 1.2;
}

.nf-card {
  position: relative;
  background: var(--nf-white);
  border: 1px solid var(--nf-ice-200);
  border-radius: var(--nf-radius-lg);
  padding: clamp(1.25rem, 1rem + 1vw, 2rem);
  transition: transform 0.5s var(--nf-ease), box-shadow 0.5s var(--nf-ease), border-color 0.3s;
}
.nf-card:hover { transform: translateY(-4px); box-shadow: var(--nf-shadow-lg); border-color: transparent; }

.nf-grid { display: grid; gap: var(--nf-space-5); }
.nf-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.nf-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.nf-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1024px) {
  .nf-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nf-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .nf-grid--2, .nf-grid--3, .nf-grid--4 { grid-template-columns: 1fr; }
}

.nf-field { display: grid; gap: 0.4rem; }
.nf-field label { font-family: var(--nf-font-display); font-weight: 700; font-size: var(--nf-fs-sm); color: var(--nf-navy-900); }
.nf-input, .nf-select, .nf-textarea {
  width: 100%;
  min-height: 52px;
  padding: 0.85rem 1rem;
  border-radius: var(--nf-radius-sm);
  border: 1.5px solid var(--nf-ice-300);
  background: var(--nf-white);
  font: inherit;
  font-size: 1rem;
  color: var(--nf-navy-900);
  transition: border-color 0.2s, box-shadow 0.2s;
}
.nf-textarea { min-height: 130px; resize: vertical; }
.nf-input:focus, .nf-select:focus, .nf-textarea:focus { outline: none; border-color: var(--nf-cyan-400); box-shadow: var(--nf-ring); }

/* neutralizes theme and Elementor kit button styles (default magenta) inside every .nf block; components set --nf-b, --nf-c and --nf-bc instead of background, color and border-color */
.nf :is(button, [type="button"], [type="submit"], [type="reset"]),
.nf :is(button, [type="button"], [type="submit"], [type="reset"]):is(:hover, :focus, :focus-visible, :active, :disabled) {
  background-color: var(--nf-b, transparent);
  color: var(--nf-c, inherit);
  border-color: var(--nf-bc, transparent);
  text-decoration: none;
  text-transform: none;
  letter-spacing: inherit;
  -webkit-tap-highlight-color: transparent;
}
.nf :is(button, [type="button"], [type="submit"], [type="reset"]):focus:not(:focus-visible) { outline: none; box-shadow: none; }
.nf :is(button, [type="button"], [type="submit"], [type="reset"]):focus-visible { outline: none; box-shadow: var(--nf-ring); }
.nf :is(input, select, textarea):is(:focus, :hover) { outline: none; }
.nf a:is(:hover, :focus, :active) { text-decoration: none; }

.nf-sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0);
  white-space: nowrap; border: 0;
}

[data-nf-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.9s var(--nf-ease), transform 0.9s var(--nf-ease);
  transition-delay: calc(var(--nf-i, 0) * 90ms);
}
[data-nf-reveal].is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .nf *, .nf *::before, .nf *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  [data-nf-reveal] { opacity: 1; transform: none; }
}

.elementor-widget-html .nf { width: 100%; }
.elementor-location-header .elementor-widget-container,
.elementor-location-footer .elementor-widget-container { padding: 0 !important; margin: 0 !important; }

/* ==========================================================
   STABILITY + PERFORMANCE LAYER (Nov 2026)
   Global fixes for every page, header and footer.
   ========================================================== */

/* 1. Gradient titles: descenders (g, y, p, j) were cut off because the
   gradient only painted inside a line box tighter than the glyphs. Extra
   bottom padding gives the gradient room; the negative margin keeps the
   layout exactly the same. */
.nf .nf-accent,
.nf .hero-flow,
.nf .dig-title span,
.nf .ph-title span,
.nf .nb-title span,
.nf .tb-title span,
.nf .st-title span,
.nf .cg-title span,
.nf .nff-cta-title span,
.nf [style*="background-clip"] {
  padding-bottom: 0.14em;
  margin-bottom: -0.14em;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.nf .hero-line { padding-bottom: 0.2em !important; margin-bottom: -0.13em; }

/* 2. Smooth scrolling: stop paint-heavy animations that ran on every frame
   (background-position sheens, SVG filters, blur behind moving video). */
.nf .hero-flow,
.nfh .nfh-flow span,
.nf .nff-phone-num::after { animation: none !important; }
.nfh .nfh-flow span { box-shadow: none !important; }
.nf .nff-pipe-water { filter: none !important; }
.nf .hero-kicker,
.nf .hero-credits,
.nfh-dock { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
.nf .hero-card {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  background: linear-gradient(160deg, rgba(24, 50, 75, 0.9), rgba(9, 21, 34, 0.86)) !important;
}
.nf .hero-credits { background: rgba(5, 13, 22, 0.82) !important; }
.nf .hero-kicker { background: rgba(9, 40, 58, 0.72) !important; }

/* 3. Hero video: no parallax, no zoom, one stable layer. The Vimeo reel
   loads after the page is fully loaded and idle (see the hero widget
   script); the poster image shows until then. */
.nf .hero-media { transform: none !important; will-change: auto !important; }
.nf .hero-poster { animation: none !important; transform: none !important; width: 100% !important; height: 100% !important; object-fit: cover; }
.nf .hero-clip iframe,
.nf .hero-clip.is-live iframe { transform: translate(-50%, -50%) scale(1.02) !important; transition: none !important; }

/* 4. Elementor editor: scroll and intro animations kept sections invisible
   while editing. In the editor everything is shown in its final state. */
.elementor-editor-active [data-nf-reveal],
.elementor-editor-active .hero-reveal,
.elementor-editor-active .hero-fade,
.elementor-editor-active .ph-fade {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}
.elementor-editor-active .hero-bars { display: none !important; }
.elementor-editor-active .ph-media img { transform: none !important; }

/* Safety net: if scripts are blocked, content still appears. */
@media (scripting: none) {
  [data-nf-reveal], .hero-reveal, .hero-fade, .ph-fade { opacity: 1 !important; transform: none !important; }
}


/* 5. Google reviews (Widgets for Google Reviews plugin). Pages place the
   [trustindex no-registration=google] shortcode widget (class nf-ti-src)
   right after the reviews section; a small script moves it into the
   section's [data-ti-slot]. */
.rq-ti { min-height: 260px; }
.rq-ti .ti-widget { margin: 0 !important; }
.elementor-editor-active .rq-ti { display: none; }


/* 6. No entrance animations anywhere: every section, page header and the
   homepage hero are shown in their final state as soon as they load.
   (Covers the site-wide scroll reveal [data-nf-reveal], the hero opening
   bars and text reveal, the inner-page header fade and image zoom, and
   the tab panels on the service-area and emergency pages.) */
[data-nf-reveal],
[data-nf-reveal].is-in,
.nf .hero-reveal,
.nf .hero-fade,
.nf .ph-fade {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}
.nf .hero-bars { display: none !important; }
.nf .ph-media img { transform: none !important; transition: none !important; }
.nf .area-panel,
.nf .eg-panel { animation: none !important; }/* End custom CSS */