/* ==========================================================================
   Nordic Builders — design system
   Part A (GLOBAL): from nordic-builders-full-site.html — header, footer, shared
     CTA, and all inner pages.
   Part B (HOMEPAGE): from nordic-builders-modern.html — scoped under .nbh so the
     homepage matches its own mockup without touching the global chrome.
   Both copied verbatim from the approved mockups (only Part B selectors prefixed).
   ========================================================================== */

/* =========================== FONTS (self-hosted) ========================== */
/* Urbanist variable font, latin + latin-ext subsets. One WOFF2 per subset covers
   every weight we use (300, 400, 500, 600, 700, 800). */
@font-face{
  font-family:'Urbanist';font-style:normal;font-weight:300 800;font-display:swap;
  src:url('../fonts/urbanist-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Urbanist';font-style:normal;font-weight:300 800;font-display:swap;
  src:url('../fonts/urbanist-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* =========================== PART A — GLOBAL ============================= */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --navy:#1A3A6B;--navy-dark:#122750;--navy-mid:#254E99;
  --orange:#E07B2A;--orange-dark:#C46820;
  --white:#FFFFFF;--off-white:#F4F6F9;--light-gray:#E8ECF2;
  --border:#D0D7E3;--text:#2A2A2A;--text-mid:#4A5568;--text-light:#6B7280;
}
html{scroll-behavior:smooth;overflow-x:clip;}
body{font-family:"Urbanist",sans-serif;color:var(--text);background:var(--white);font-size:15px;line-height:1.7;}
button,input,textarea,select{font-family:inherit;}
a{text-decoration:none;color:inherit;}
img{max-width:100%;display:block;}
ul{list-style:none;}

/* TOP BAR */
.top-bar{background:var(--navy-dark);color:rgba(255,255,255,0.7);text-align:center;padding:9px 20px;font-size:12px;font-weight:500;letter-spacing:0.03em;}
.top-bar a{color:#FFB060;font-weight:600;}
.top-bar a:hover{color:white;}

/* NAV */
nav{background:white;display:flex;align-items:center;justify-content:space-between;padding:0 40px;height:72px;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1000;box-shadow:0 1px 8px rgba(0,0,0,0.06);}
.nav-logo img{height:48px;width:auto;object-fit:contain;}
.nav-flyout-logo{display:none;} /* logo appears only inside the mobile fly-out panel (see @media) */
/* CTA appears only inside the mobile fly-out panel (see @media). !important beats
   the browser default `li{display:list-item}` and any stray `.nav-links li` rule
   that could otherwise let it leak into the desktop menu row. */
.nav-flyout-cta{display:none !important;}
.nav-links{display:flex;gap:2px;align-items:center;}
.nav-links>li{position:relative;}
.nav-links>li>a{font-size:13px;font-weight:600;color:var(--text-mid);padding:8px 13px;border-radius:3px;transition:color .2s;letter-spacing:0.02em;display:block;white-space:nowrap;}
.nav-links>li>a:hover,.nav-links>li>a.nav-active{color:var(--navy);}
.nav-links>li>a.nav-active{border-bottom:2px solid var(--orange);padding-bottom:6px;}
/* Dropdown */
.nav-dropdown{position:absolute;top:calc(100% + 4px);left:0;background:white;min-width:220px;border:1px solid var(--border);border-top:2px solid var(--orange);box-shadow:0 8px 24px rgba(0,0,0,0.10);opacity:0;visibility:hidden;transform:translateY(6px);transition:all .2s;z-index:200;}
.nav-links>li:hover>.nav-dropdown{opacity:1;visibility:visible;transform:translateY(0);}
.nav-dropdown a{display:block;padding:11px 18px;font-size:13px;font-weight:500;color:var(--text-mid);border-bottom:1px solid var(--light-gray);transition:background .15s,color .15s;}
.nav-dropdown a:last-child{border-bottom:none;}
.nav-dropdown a:hover{background:var(--off-white);color:var(--navy);}
.nav-caret{font-size:9px;margin-left:3px;opacity:0.5;}
.nav-cta{display:flex;align-items:center;gap:16px;}
.nav-phone{font-size:14px;font-weight:700;color:var(--navy);white-space:nowrap;}
.btn-primary{background:var(--orange);color:white;padding:10px 20px;font-size:12px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;border-radius:2px;transition:background .2s;cursor:pointer;border:none;display:inline-block;}
.btn-primary:hover{background:var(--orange-dark);}
.btn-outline-white{border:2px solid rgba(255,255,255,0.6);color:white;padding:12px 24px;font-size:12px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;border-radius:2px;transition:all .2s;display:inline-block;}
.btn-outline-white:hover{background:rgba(255,255,255,0.12);border-color:white;}
.btn-navy{background:var(--navy);color:white;padding:12px 24px;font-size:12px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;border-radius:2px;transition:background .2s;display:inline-block;}
.btn-navy:hover{background:var(--navy-dark);}

/* Mobile burger (added for WP — not in the static mockup, which simply hid the menu) */
.nav-burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px;}
.nav-burger span{display:block;width:24px;height:2px;background:var(--navy);transition:all .2s;}
/* Hover/open: brand-orange pill + white bars. Overrides hello-elementor reset.css
   `button:hover/:focus` (which paints a #CC3366 pink). The idle, closed burger stays
   transparent so a lingering :focus after closing on mobile doesn't leave it coloured. */
.nav-burger:focus{background:none;}
.nav-burger:hover,.nav-burger.open{background:var(--orange);}
.nav-burger:hover span,.nav-burger.open span{background:#fff;}
.nav-overlay{display:none;}
/* Lock page scroll while the mobile fly-out is open (set on <html> and <body> so
   it holds regardless of which element is the scroll container). */
html.nb-menu-open,body.nb-menu-open{overflow:hidden;}

/* CTA BANNER */
.cta-banner{background:var(--navy);display:flex;justify-content:space-between;align-items:center;padding:56px 60px;gap:40px;}
.cta-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.12em;color:var(--orange);margin-bottom:10px;}
.cta-heading{font-size:clamp(22px,3vw,34px);font-weight:700;color:white;margin-bottom:12px;line-height:1.25;}
.cta-sub{font-size:14px;color:rgba(255,255,255,0.65);max-width:540px;line-height:1.8;margin-bottom:28px;}
.cta-actions{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.cta-right{text-align:right;flex-shrink:0;}
.cta-phone{font-size:32px;font-weight:700;color:white;display:block;margin-bottom:6px;}
.cta-phone:hover{color:#FFB060;}
.cta-hours{font-size:13px;color:rgba(255,255,255,0.55);margin-bottom:20px;}
.social-links{display:flex;gap:10px;justify-content:flex-end;}
.social-link{background:rgba(255,255,255,0.12);color:white;padding:8px 14px;font-size:11px;font-weight:700;letter-spacing:0.06em;border-radius:2px;transition:background .2s;}
.social-link:hover{background:var(--orange);}

/* FOOTER STRIP */
.footer-strip{background:var(--navy-dark);padding:56px 60px;display:grid;grid-template-columns:repeat(3,1fr);gap:48px;border-top:1px solid rgba(255,255,255,0.08);}
.fs-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.12em;color:rgba(255,255,255,0.45);margin-bottom:18px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,0.08);}
.serve-list{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;}
.serve-list li{font-size:13px;color:rgba(255,255,255,0.6);padding:4px 0;}
.serve-list a{color:inherit;text-decoration:none;transition:color .2s;}
.serve-list a:hover{color:#FFB060;}
.hours-row{display:flex;justify-content:space-between;font-size:13px;color:rgba(255,255,255,0.6);padding:6px 0;border-bottom:1px solid rgba(255,255,255,0.06);}
.hours-row .day{font-weight:600;color:rgba(255,255,255,0.75);}
.contact-phone{font-size:22px;font-weight:700;color:white;display:block;margin-bottom:16px;}
.contact-phone:hover{color:#FFB060;}
.contact-links li{padding:5px 0;}
.contact-links a{font-size:13px;color:rgba(255,255,255,0.55);transition:color .2s;}
.contact-links a:hover{color:#FFB060;}

/* FOOTER */
footer{background:var(--navy-dark);border-top:1px solid rgba(255,255,255,0.06);padding:20px 60px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;}
.footer-brand{font-size:14px;font-weight:700;color:rgba(255,255,255,0.7);}
.footer-links{display:flex;gap:24px;}
.footer-links a{font-size:12px;color:rgba(255,255,255,0.4);transition:color .2s;}
.footer-links a:hover{color:rgba(255,255,255,0.75);}
.footer-copy{font-size:12px;color:rgba(255,255,255,0.35);}

/* SECTION HEADINGS */
.section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.12em;color:var(--orange);margin-bottom:10px;}
.section-title{font-size:clamp(22px,3vw,34px);font-weight:700;color:var(--navy);line-height:1.25;margin-bottom:16px;}
.section-sub{font-size:15px;color:var(--text-mid);line-height:1.85;max-width:620px;}

/* ===================== HERO ===================== */
.hero{position:relative;height:90vh;min-height:580px;display:flex;flex-direction:column;justify-content:flex-end;}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:center;}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(13,31,66,0.92) 0%,rgba(13,31,66,0.65) 55%,rgba(13,31,66,0.25) 100%);}
.hero-content{position:relative;z-index:2;padding:0 60px 60px;}
.hero-eyebrow{display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);padding:8px 16px;border-radius:2px;margin-bottom:20px;}
.hero-eyebrow span{font-size:11px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:rgba(255,255,255,0.85);}
.hero h1{font-size:clamp(38px,5.5vw,72px);font-weight:700;color:white;line-height:1.1;margin-bottom:20px;}
.hero h1 span{color:#FFB060;}
.hero-sub{font-size:16px;color:rgba(255,255,255,0.7);max-width:520px;line-height:1.8;margin-bottom:32px;font-weight:300;}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.hero-trust{position:relative;z-index:2;background:rgba(13,31,66,0.75);backdrop-filter:blur(6px);border-top:1px solid rgba(255,255,255,0.1);display:flex;justify-content:center;gap:0;flex-wrap:wrap;}
.trust-item{display:flex;align-items:center;gap:10px;padding:16px 28px;border-right:1px solid rgba(255,255,255,0.1);font-size:13px;font-weight:600;color:rgba(255,255,255,0.85);}
.trust-item:last-child{border-right:none;}
.trust-dot{width:6px;height:6px;background:var(--orange);border-radius:50%;flex-shrink:0;}

/* ABOUT SECTION (homepage-of-full-site; unused on our home but harmless) */
.about-section{padding:88px 60px;background:var(--white);display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center;}
.about-photo-wrap{position:relative;}
.about-photo{height:500px;background-size:cover;background-position:center;border-radius:2px;}
.about-badge{position:absolute;bottom:-24px;right:-24px;background:var(--orange);color:white;padding:24px 28px;text-align:center;border-radius:2px;box-shadow:0 8px 24px rgba(224,123,42,0.35);}
.ab-num{font-size:36px;font-weight:700;line-height:1;}
.ab-label{font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;margin-top:4px;opacity:0.85;}
.about-stats{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:32px;}
.stat-card{background:var(--off-white);border:1px solid var(--border);border-left:3px solid var(--orange);padding:20px 22px;}
.sc-num{font-size:28px;font-weight:700;color:var(--navy);line-height:1;}
.sc-label{font-size:11px;color:var(--text-mid);margin-top:4px;text-transform:uppercase;letter-spacing:0.06em;font-weight:600;}
.about-body{font-size:15px;color:var(--text-mid);line-height:1.85;margin-bottom:12px;}
.about-cta{margin-top:28px;display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.link-arrow{font-size:13px;font-weight:700;color:var(--navy);letter-spacing:0.04em;display:inline-flex;align-items:center;gap:6px;}
.link-arrow:hover{color:var(--orange);}

/* WHY CHOOSE */
.why-section{background:var(--navy);padding:88px 60px;}
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,0.08);margin-top:48px;}
.why-card{background:var(--navy);padding:36px 32px;transition:background .2s,transform .3s ease,box-shadow .3s ease;display:block;color:inherit;text-decoration:none;}
.why-card:hover{background:var(--navy-mid);}
a.why-card{cursor:pointer;}
a.why-card:hover{background:var(--navy-mid);transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,0,0,0.28);}
a.why-card:hover .wc-title{color:#FFB060;}
.wc-icon{font-size:32px;margin-bottom:16px;}
.wc-title{font-size:16px;font-weight:700;color:white;margin-bottom:10px;transition:color .2s;}
.wc-body{font-size:14px;color:rgba(255,255,255,0.6);line-height:1.8;}
/* Image variant: a project photo replaces the icon at the top of the card. */
.why-card--image{padding:0;overflow:hidden;}
.why-card--image .wc-image{width:calc(100% + 0px);height:200px;background-size:cover;background-position:center;display:block;}
.why-card--image .wc-title{padding:24px 28px 0;margin-bottom:8px;}
.why-card--image .wc-body{padding:0 28px 28px;}
a.why-card--image:hover .wc-image{transform:scale(1.04);transition:transform .5s ease;}
.why-card--image .wc-image{transition:transform .5s ease;}
.why-section .section-label{color:rgba(255,255,255,0.5);}
.why-section .section-title{color:white;}

/* SERVICES */
.services-section{padding:88px 60px;background:var(--off-white);}
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:auto auto;gap:3px;margin-top:40px;}
.svc-card{position:relative;overflow:hidden;height:320px;cursor:pointer;}
.svc-card.span2{grid-column:span 2;height:360px;}
.svc-bg{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform .4s;}
.svc-card:hover .svc-bg{transform:scale(1.04);}
.svc-overlay{position:absolute;inset:0;background:linear-gradient(0deg,rgba(13,32,64,0.88) 0%,rgba(13,32,64,0.2) 65%,transparent 100%);}
.svc-info{position:absolute;bottom:0;left:0;right:0;padding:28px 32px;z-index:2;}
.svc-title{font-size:20px;font-weight:700;color:white;margin-bottom:6px;}
.svc-desc{font-size:13px;color:rgba(255,255,255,0.7);line-height:1.6;max-width:400px;}
.svc-arrow{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:11px;font-weight:700;color:#FFB060;letter-spacing:0.08em;text-transform:uppercase;}

/* PROCESS (homepage-of-full-site) */
.process-section{padding:88px 60px;background:var(--white);}
.process-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-top:48px;}
.proc-card{padding:32px 28px;border:1px solid var(--border);border-top:3px solid var(--navy);position:relative;}
.proc-num{font-size:48px;font-weight:700;color:var(--light-gray);line-height:1;margin-bottom:12px;}
.proc-title{font-size:16px;font-weight:700;color:var(--navy);margin-bottom:10px;}
.proc-body{font-size:14px;color:var(--text-mid);line-height:1.8;}

/* PORTFOLIO (homepage-of-full-site) */
.portfolio-section{padding:88px 60px;background:var(--off-white);}
.gallery-tabs-wrap{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;flex-wrap:wrap;gap:16px;}
.gallery-tabs{display:flex;gap:4px;}
.tab{padding:9px 18px;font-size:12px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;border:1px solid var(--border);cursor:pointer;transition:all .2s;color:var(--text-mid);background:white;border-radius:2px;}
.tab.active,.tab:hover{background:var(--navy);color:white;border-color:var(--navy);}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;}
.gallery-item{overflow:hidden;height:280px;}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .4s;}
.gallery-item:hover img{transform:scale(1.05);}

/* REVIEWS */
.reviews-section{padding:88px 60px;background:var(--white);}
.reviews-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:40px;flex-wrap:wrap;gap:20px;}
.rating-badge{display:flex;align-items:center;gap:12px;}
.rating-num{font-size:48px;font-weight:700;color:var(--navy);line-height:1;}
.rating-stars{color:#FFB060;font-size:22px;letter-spacing:2px;}
.rating-count{font-size:13px;color:var(--text-light);margin-top:2px;}
.reviews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.review-card{background:var(--off-white);border:1px solid var(--border);padding:32px 28px;border-radius:2px;}
.review-stars{color:#FFB060;font-size:16px;letter-spacing:2px;margin-bottom:14px;}
.review-body{font-size:14px;color:var(--text-mid);line-height:1.85;margin-bottom:20px;font-style:italic;}
.review-author{font-size:13px;font-weight:700;color:var(--navy);}
.review-date{font-size:11px;color:var(--text-light);margin-top:3px;}

/* BLOG */
.blog-section{padding:88px 60px;background:var(--off-white);}
.blog-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:40px;}
.blog-card{background:white;border:1px solid var(--border);overflow:hidden;border-radius:2px;transition:box-shadow .2s;}
.blog-card:hover{box-shadow:0 8px 24px rgba(0,0,0,0.08);}
.blog-img{height:180px;background-size:cover;background-position:center;}
.blog-body{padding:22px 20px;}
.blog-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:var(--orange);margin-bottom:8px;}
.blog-title{font-size:14px;font-weight:700;color:var(--navy);line-height:1.4;margin-bottom:10px;}
.blog-excerpt{font-size:12px;color:var(--text-light);line-height:1.7;}
.blog-link{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--navy);letter-spacing:0.06em;text-transform:uppercase;margin-top:14px;}

/* ===================== INNER PAGES ===================== */
.inner-hero{position:relative;height:55vh;min-height:380px;overflow:hidden;display:flex;align-items:flex-end;}
.page-hero-bg{position:absolute;inset:0;background-size:cover;background-position:center;}
.page-hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(13,31,66,0.90) 0%,rgba(13,31,66,0.65) 55%,rgba(13,31,66,0.3) 100%);}
.page-hero-content{position:relative;z-index:2;padding:40px 60px 52px;}
.breadcrumb{font-size:12px;color:rgba(255,255,255,0.45);margin-bottom:14px;letter-spacing:0.05em;}
.breadcrumb a{color:rgba(255,255,255,0.45);}
.breadcrumb a:hover{color:#FFB060;}
.page-title{font-size:clamp(30px,4vw,52px);font-weight:700;color:white;line-height:1.15;margin-bottom:12px;}
/* Inner-page hero eyebrow (kicker above the H1). Mirrors the homepage hero
   eyebrow style but on the dark inner-hero band with a light-gold accent. */
.page-eyebrow{display:inline-flex;align-items:center;gap:10px;background:rgba(158,125,79,0.18);border:1px solid rgba(158,125,79,0.4);border-radius:2px;padding:6px 14px;margin-bottom:20px;}
.page-eyebrow span{color:#C2AE94;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;font-weight:600;}
.page-sub{font-size:15px;color:rgba(255,255,255,0.65);max-width:520px;font-weight:300;line-height:1.8;}

/* TRUST BADGES */
.trust-badges{background:var(--navy);display:flex;padding:18px 60px;gap:40px;flex-wrap:wrap;}
.tb-item{display:flex;align-items:center;gap:10px;color:rgba(255,255,255,0.75);font-size:13px;font-weight:600;}
.tb-dot{width:6px;height:6px;background:var(--orange);border-radius:50%;flex-shrink:0;}

/* CONTENT SPLIT */
.content-split{display:grid;grid-template-columns:1fr 1fr;gap:72px;padding:88px 60px;align-items:center;background:var(--white);}
.content-split.bg-off{background:var(--off-white);}
.content-split.reverse{direction:rtl;}
.content-split.reverse>*{direction:ltr;}
.content-img{height:480px;background-size:cover;background-position:center;border-radius:2px;}
.content-img-sq{height:380px;background-size:cover;background-position:center;border-radius:2px;}
.content-text-body{font-size:15px;color:var(--text-mid);line-height:1.85;margin-bottom:14px;}
.content-text-cta{margin-top:28px;}

/* SUB-SERVICES */
.sub-services-section{padding:88px 60px;background:var(--off-white);}
.sub-services{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin-top:40px;}
.sub-card{position:relative;overflow:hidden;height:360px;cursor:pointer;}
.sub-card-bg{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform .4s;}
.sub-card:hover .sub-card-bg{transform:scale(1.04);}
.sub-card-overlay{position:absolute;inset:0;background:linear-gradient(0deg,rgba(13,32,64,0.88) 0%,rgba(13,32,64,0.2) 60%,transparent 100%);}
.sub-card-info{position:absolute;bottom:0;left:0;right:0;padding:32px;z-index:2;}
.sub-card-title{font-size:22px;font-weight:700;color:white;margin-bottom:8px;}
.sub-card-desc{font-size:14px;color:rgba(255,255,255,0.72);line-height:1.7;max-width:400px;}
.sub-card-link{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-size:11px;font-weight:700;color:#FFB060;letter-spacing:0.08em;text-transform:uppercase;}

/* WHY INNER */
.why-inner{background:var(--navy);padding:88px 60px;}
.why-inner .section-title{color:var(--white);margin-bottom:48px;}
.why-inner .section-label{color:rgba(255,255,255,0.5);}

/* FAQ */
.faq-section{background:var(--off-white);padding:88px 60px;}
.faq-item{border-bottom:1px solid var(--border);}
.faq-q{padding:22px 0;font-size:16px;font-weight:600;color:var(--navy);cursor:pointer;display:flex;justify-content:space-between;align-items:center;user-select:none;}
.faq-icon{font-size:22px;color:var(--orange);transition:transform .25s;line-height:1;}
.faq-item.open .faq-icon{transform:rotate(45deg);}
.faq-a{display:none;padding:0 0 22px;font-size:15px;color:var(--text-mid);line-height:1.85;max-width:720px;}
.faq-item.open .faq-a{display:block;}

/* PROCESS STEPS — vertical timeline */
.process-steps-section{padding:88px 60px;--node:64px;--pad-y:34px;}
.process-intro{max-width:760px;margin:0 auto 56px;text-align:center;}
.process-timeline{max-width:860px;margin:0 auto;}
.process-alt-step{position:relative;display:grid;grid-template-columns:calc(var(--node) + 20px) 1fr;gap:30px;padding:var(--pad-y) 0;align-items:start;}
.process-alt-step::before{content:"";position:absolute;left:calc(var(--node) / 2 - 1px);top:0;bottom:0;width:2px;background:var(--border);z-index:0;}
.process-alt-step.is-first::before{top:calc(var(--pad-y) + var(--node) / 2);}
.process-alt-step.is-last::before{top:0;bottom:auto;height:calc(var(--pad-y) + var(--node) / 2);}
.process-step-num{position:relative;z-index:1;width:var(--node);height:var(--node);background:var(--navy);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;flex-shrink:0;box-shadow:0 0 0 6px var(--white),0 0 0 8px rgba(224,123,42,0.22),0 8px 18px rgba(26,58,107,0.26);transition:box-shadow .3s ease,transform .3s ease;}
.process-step-content{background:var(--off-white);border:1px solid var(--border);border-radius:16px;padding:24px 28px;box-shadow:0 1px 3px rgba(26,58,107,0.05);transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease;}
.process-step-title{font-size:20px;font-weight:700;color:var(--navy);margin-bottom:10px;letter-spacing:-0.01em;}
.process-step-body{font-size:15px;color:var(--text-mid);line-height:1.9;}
.process-alt-step:hover .process-step-content{transform:translateY(-4px);box-shadow:0 16px 34px rgba(26,58,107,0.13);border-color:#C3CEDE;}
.process-alt-step:hover .process-step-num{transform:scale(1.06);box-shadow:0 0 0 6px var(--white),0 0 0 10px rgba(224,123,42,0.42),0 10px 22px rgba(26,58,107,0.32);}

/* CHECKLIST */
.why-check-section{background:var(--off-white);padding:88px 60px;}
.check-list{display:grid;grid-template-columns:1fr 1fr;gap:0 32px;list-style:none;margin-top:32px;}
.check-list li{display:flex;align-items:flex-start;gap:12px;font-size:14px;color:var(--text-mid);padding:11px 0;border-bottom:1px solid var(--border);}
.check-list li::before{content:"✓";color:var(--orange);font-weight:700;flex-shrink:0;font-size:15px;}

/* BENEFIT CARDS */
.benefit-cards-section{background:var(--off-white);padding:88px 60px;}
.benefit-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:48px;}
.benefit-card{background:white;border:1px solid var(--border);border-top:3px solid var(--orange);padding:36px 28px;border-radius:2px;}
.benefit-icon{font-size:32px;margin-bottom:16px;}
.benefit-title{font-size:17px;font-weight:700;color:var(--navy);margin-bottom:10px;}
.benefit-desc{font-size:14px;color:var(--text-mid);line-height:1.8;}

/* CREDENTIALS */
.credentials-section{background:var(--off-white);padding:64px 60px;}
.cred-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:40px;}
.cred-card{background:white;border:1px solid var(--border);border-top:3px solid var(--navy);padding:28px;}
.cred-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:var(--navy);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.cred-list{list-style:none;}
.cred-list li{font-size:14px;color:var(--text-mid);padding:6px 0;border-bottom:1px solid var(--light-gray);}

/* SPECIALTIES */
.specialties-section{padding:64px 60px;background:var(--white);}
.spec-tags{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px;}
.spec-tag{background:var(--off-white);border:1px solid var(--border);border-left:3px solid var(--orange);padding:10px 18px;font-size:13px;font-weight:600;color:var(--navy);border-radius:2px;}
a.spec-tag{text-decoration:none;transition:border-color .2s,background .2s,color .2s;}
a.spec-tag:hover{border-color:var(--orange);background:var(--light-gray);color:var(--navy);}

/* ABOUT STAT CARDS */
.about-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.about-stat-card{background:var(--navy);color:white;padding:28px 24px;border-radius:2px;text-align:center;}
.asc-num{font-size:36px;font-weight:700;color:white;line-height:1;}
.asc-num sup{font-size:16px;color:#FFB060;}
.asc-label{font-size:11px;color:rgba(255,255,255,0.6);margin-top:6px;text-transform:uppercase;letter-spacing:0.08em;font-weight:600;}

/* CONTACT */
.contact-section{display:grid;grid-template-columns:1fr 420px;}
.contact-form-wrap{padding:64px 60px;background:var(--white);}
.contact-form-intro{font-size:15px;color:var(--text-mid);margin-bottom:24px;line-height:1.7;}
/* "Before you continue" plaque — gold-accented callout above the form. */
.contact-plaque{background:var(--off-white);border:1px solid var(--border);border-left:3px solid var(--orange);padding:18px 22px;border-radius:4px;margin-bottom:28px;}
.contact-plaque .plaque-label{font-size:11px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--navy);margin-bottom:6px;}
.contact-plaque p{font-size:14px;color:var(--text-mid);line-height:1.75;}
/* External embed container (iframe/script). Reset any inline sizing quirks so
   the GHL survey fills the column smoothly and can grow to its own height. */
.contact-form-embed{position:relative;min-height:400px;}
.contact-form-embed iframe{width:100% !important;min-height:600px;border:0;display:block;}
.contact-info-panel{background:var(--navy);padding:64px 48px;color:white;}
.form-group{margin-bottom:20px;}
.form-group label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:var(--navy);margin-bottom:7px;}
.form-group input,.form-group textarea{width:100%;padding:13px 16px;border:1px solid var(--border);border-radius:3px;font-family:inherit;font-size:14px;color:var(--text);outline:none;transition:border-color .2s;}
.form-group input:focus,.form-group textarea:focus{border-color:var(--navy);}
.form-group textarea{height:120px;resize:vertical;}
.ci-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.12em;color:rgba(255,255,255,0.45);margin-bottom:4px;margin-top:20px;}
.ci-value{font-size:15px;color:white;font-weight:500;}
.ci-phone-big{font-size:28px;font-weight:700;color:white;display:block;margin-bottom:4px;}

/* SERVICE AREA TAGS */
.areas-section{background:var(--off-white);padding:56px 60px;text-align:center;}
.area-tags{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:28px;}
.area-tag{background:var(--navy);color:white;padding:10px 24px;font-size:13px;font-weight:600;border-radius:3px;letter-spacing:0.04em;}

/* CONTENT BAND */
.content-band{padding:88px 60px;background:var(--white);}
.content-band.bg-off{background:var(--off-white);}
.content-band-inner{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center;max-width:1200px;margin:0 auto;}
.content-band.reverse .content-band-inner{direction:rtl;}
.content-band.reverse .content-band-inner>*{direction:ltr;}

/* FINANCING */
.fin-cta-navy{background:var(--navy);padding:56px 60px;text-align:center;}
.fin-disclosure{font-size:11px;color:var(--text-light);text-align:center;padding:16px 60px;background:var(--off-white);}

/* PROCESS PHOTO */
.process-photo-band{height:400px;background-size:cover;background-position:center;}

/* RESPONSIVE (Part A) */
@media(max-width:1100px){
  .blog-grid{grid-template-columns:repeat(2,1fr);}
  .process-grid{grid-template-columns:repeat(2,1fr);}
  .reviews-grid{grid-template-columns:1fr 1fr;}
}
@media(max-width:960px){
  nav{padding:0 20px;height:64px;}
  /* Off-canvas fly-out panel — slides in from the right. */
  .nav-links{position:fixed;top:0;right:0;bottom:0;height:100%;width:min(84vw,340px);background:white;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:0 0 32px;box-shadow:-14px 0 44px rgba(0,0,0,0.18);transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:1200;display:flex;}
  /* Fly-out logo header (first item in the panel; the X burger floats top-right over it). */
  /* Fly-out header row (64px tall) mirrors the desktop nav-bar height so the X
     (burger.open, fixed top-right below) sits on the same baseline as the logo. */
  .nav-flyout-logo{display:flex;align-items:center;min-height:64px;height:64px;padding:0;border-bottom:1px solid var(--light-gray);}
  /* Reset the mobile `.nav-links>li>a` padding (15px 26px) inherited from the
     accordion-link rule, otherwise the logo cell balloons past 64px. */
  .nav-flyout-logo>a{display:inline-flex;align-items:center;justify-content:flex-start;padding:0 26px;height:100%;}
  .nav-flyout-logo img{height:42px;width:auto;object-fit:contain;}
  .nav-links.open{transform:translateX(0);}
  .nav-links>li{position:relative;border-bottom:1px solid var(--light-gray);}
  .nav-links>li>a{display:flex;align-items:center;justify-content:space-between;padding:15px 26px;font-size:15px;}
  .nav-caret{font-size:11px;opacity:0.55;transition:transform .25s;}
  .nav-links>li.nb-open>a .nav-caret{transform:rotate(180deg);}
  /* Accordion submenu — collapsed until its parent row is tapped. */
  .nav-dropdown{position:static;opacity:1;visibility:visible;transform:none;border:none;box-shadow:none;border-top:none;min-width:0;background:var(--off-white);max-height:0;overflow:hidden;transition:max-height .3s ease;}
  .nav-links>li.nb-open>.nav-dropdown{max-height:520px;}
  .nav-dropdown a{padding:12px 26px 12px 40px;}
  /* Dimmer behind the panel. */
  .nav-overlay{display:block;position:fixed;inset:0;background:rgba(15,23,42,0.5);opacity:0;visibility:hidden;transition:opacity .3s;z-index:1100;}
  .nav-overlay.open{opacity:1;visibility:visible;}
  /* Burger stays above the panel and morphs into an X. When the panel is open,
     lift the burger out of the sticky nav row (which sits below the top-bar and
     puts the X ~40px lower than the fly-out logo) and pin it to the viewport
     top-right so its centre lines up with the 64px fly-out header centre. */
  .nav-burger{position:relative;z-index:1300;}
  .nav-burger.open{position:fixed;top:16px;right:16px;padding:8px;}
  .nav-burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
  .nav-burger.open span:nth-child(2){opacity:0;}
  .nav-burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
  /* The phone number lives in the top-bar on mobile — keep the bar uncluttered. */
  .nav-phone{display:none;}
  /* The CTA button leaves the header row and drops to the bottom of the fly-out panel
     (see .nav-flyout-cta below), so the header row only holds the logo + burger. */
  .nav-cta{display:none;}
  .nav-flyout-cta{display:block !important;padding:22px 26px 28px;border-top:1px solid var(--light-gray);border-bottom:none;}
  .nav-flyout-cta a{display:block;text-align:center;padding:14px 20px;font-size:12px;letter-spacing:0.08em;}
  /* Bigger tap target for the accordion caret so tapping the label reliably navigates
     to the parent page instead of getting hijacked into expanding the submenu. */
  .nav-links>li>a .nav-caret{padding:14px 12px;margin:-14px -12px -14px 8px;font-size:14px;opacity:0.7;}
  .nav-burger{display:flex;}
  .about-section,.content-split,.contact-section,.content-band-inner{grid-template-columns:1fr;}
  .content-band-inner{gap:40px;}
  .sub-services{grid-template-columns:1fr;}
  .benefit-cards,.cred-grid{grid-template-columns:1fr;}
  .check-list{grid-template-columns:1fr;}
  .trust-badges{padding:16px 24px;gap:20px;}
  .page-hero-content{padding:30px 24px 40px;}
  .process-steps-section{--node:48px;--pad-y:26px;}
  .process-alt-step{grid-template-columns:calc(var(--node) + 14px) 1fr;gap:18px;}
  .process-step-num{font-size:18px;}
  .process-step-content{padding:18px 20px;border-radius:14px;}
  .process-step-title{font-size:18px;}
  .process-steps-section,.why-check-section,.sub-services-section,.faq-section,.benefit-cards-section,.credentials-section,.specialties-section,.contact-form-wrap,.areas-section{padding:56px 24px;}
  .content-split,.why-inner,.content-band,.why-section,.services-section,.portfolio-section,.reviews-section,.blog-section,.process-section,.about-section,.footer-strip{padding:56px 24px;}
  .why-grid,.services-grid{grid-template-columns:1fr;}
  .svc-card.span2{grid-column:span 1;}
  .hero-content{padding:0 24px 40px;}
  .hero-trust{display:none;}
  .gallery-grid{grid-template-columns:1fr 1fr;}
  .gallery-tabs{flex-wrap:wrap;}
  .blog-grid{grid-template-columns:1fr;}
  .reviews-grid{grid-template-columns:1fr;}
  .about-stats-grid{grid-template-columns:1fr 1fr;}
  .footer-strip{grid-template-columns:1fr;padding:40px 24px;}
  footer{padding:16px 24px;}
  .cta-banner{flex-direction:column;padding:48px 24px;}
  .cta-right{text-align:left;}
  .social-links{justify-content:flex-start;}
  .process-grid{grid-template-columns:1fr;}
  .about-stats,.about-stats-grid{grid-template-columns:1fr 1fr;}
}

/* ==================== PART B — HOMEPAGE (scoped .nbh) ==================== */
/* Part A styles some of the same class names; .nbh only wins for properties
   restated here, so rules below explicitly reset every Part A leak. */
.nbh{font-size:16px;line-height:1.6;color:var(--text);}
.nbh a{text-decoration:none;color:inherit;}
.nbh img{display:block;width:100%;object-fit:cover;}

/* Buttons (modern) */
.nbh .btn-primary{background:var(--orange);color:var(--white);padding:11px 22px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;border-radius:3px;transition:background .2s;border:none;cursor:pointer;display:inline-block;}
.nbh .btn-primary:hover{background:var(--orange-dark);}
.nbh .btn-navy{background:var(--navy);color:var(--white);padding:13px 28px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;border-radius:3px;transition:background .2s;display:inline-block;}
.nbh .btn-navy:hover{background:var(--navy-dark);}
.nbh .btn-outline-white{background:transparent;color:var(--white);padding:13px 28px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;border-radius:3px;border:2px solid rgba(255,255,255,0.45);transition:all .2s;display:inline-block;}
.nbh .btn-outline-white:hover{border-color:white;background:rgba(255,255,255,0.1);}
.nbh .btn-outline-navy{background:transparent;color:var(--navy);padding:11px 22px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;border-radius:3px;border:2px solid var(--navy);transition:all .2s;display:inline-block;}
.nbh .btn-outline-navy:hover{background:var(--navy);color:white;}

/* HERO (modern) */
/* padding-top clears the sticky site header, padding-bottom clears the absolute
   .hero-trust bar so the CTA buttons don't visually collide with either. */
.nbh .hero{position:relative;height:90vh;min-height:580px;overflow:hidden;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:60px 0 140px;}
.nbh .hero-bg{position:absolute;inset:0;background-size:cover;background-position:center;}
.nbh .hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(13,31,66,0.88) 0%,rgba(13,31,66,0.60) 50%,rgba(13,31,66,0.25) 100%);}
.nbh .hero-content{position:relative;z-index:2;padding:0 60px;max-width:660px;}
.nbh .hero-eyebrow{display:inline-flex;align-items:center;gap:10px;background:rgba(224,123,42,0.18);border:1px solid rgba(224,123,42,0.4);border-radius:2px;padding:6px 14px;margin-bottom:28px;}
.nbh .hero-eyebrow span{color:#FFB060;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;font-weight:600;}
.nbh .hero h1{font-size:clamp(36px,5vw,64px);color:var(--white);font-weight:700;line-height:1.15;letter-spacing:-0.01em;margin-bottom:20px;}
.nbh .hero h1 span{color:#FFB060;}
.nbh .hero-sub{font-size:16px;color:rgba(255,255,255,0.72);margin-bottom:36px;max-width:480px;line-height:1.85;font-weight:300;}
.nbh .hero-actions{display:flex;gap:14px;flex-wrap:wrap;align-items:stretch;}
.nbh .hero-trust{position:absolute;bottom:0;left:0;right:0;z-index:2;background:rgba(18,39,80,0.88);backdrop-filter:blur(6px);border-top:1px solid rgba(255,255,255,0.08);display:flex;justify-content:flex-start;flex-wrap:nowrap;padding:20px 60px;}
.nbh .trust-item{flex:1;display:flex;align-items:center;gap:14px;padding:0 32px 0 0;border-right:1px solid rgba(255,255,255,0.1);font-weight:400;}
.nbh .trust-item:last-child{border-right:none;padding-right:0;padding-left:32px;}
.nbh .trust-item:first-child{padding-left:0;}
.nbh .trust-icon{width:40px;height:40px;background:rgba(224,123,42,0.2);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.nbh .trust-icon svg{width:18px;height:18px;fill:none;stroke:#FFB060;stroke-width:2;}
.nbh .trust-text strong{display:block;color:var(--white);font-size:13px;font-weight:600;}
.nbh .trust-text span{font-size:12px;color:rgba(255,255,255,0.55);}

/* SHARED SECTION HEADINGS (modern) */
.nbh .section-label{display:inline-flex;align-items:center;gap:8px;margin-bottom:12px;}
.nbh .section-label::before{content:'';display:block;width:28px;height:3px;background:var(--orange);border-radius:2px;}
.nbh .section-label span{font-size:11px;font-weight:700;letter-spacing:0.2em;text-transform:uppercase;color:var(--orange);}
.nbh .section-title{font-size:clamp(28px,3.5vw,44px);font-weight:700;color:var(--navy);line-height:1.2;margin-bottom:16px;}
.nbh .section-title span{color:var(--orange);}
.nbh .section-body{font-size:15px;color:var(--text-mid);line-height:1.9;font-weight:400;max-width:600px;}

/* ABOUT (modern) */
.nbh .about{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center;padding:96px 60px;background:var(--white);}
.nbh .about-media{position:relative;}
.nbh .about-img-main{height:540px;background-size:cover;background-position:center;border-radius:2px;}
.nbh .about-badge{position:absolute;bottom:-28px;right:-28px;width:160px;height:160px;padding:0;background:var(--orange);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;box-shadow:0 8px 32px rgba(224,123,42,0.35);}
.nbh .badge-num{font-size:42px;font-weight:700;color:white;line-height:1;}
.nbh .badge-label{font-size:10px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:rgba(255,255,255,0.9);margin-top:4px;}
.nbh .about-stats{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:32px 0 36px;}
.nbh .stat-card{background:var(--off-white);border:1px solid var(--border);border-left:3px solid var(--navy);padding:20px;border-radius:2px;}
.nbh .stat-num{font-size:32px;font-weight:700;color:var(--navy);line-height:1;}
.nbh .stat-num sup{font-size:16px;color:var(--orange);}
.nbh .stat-desc{font-size:12px;color:var(--text-light);margin-top:4px;font-weight:500;text-transform:uppercase;letter-spacing:0.04em;}

/* WHY CHOOSE (modern) */
.nbh .why-choose{background:var(--navy);padding:88px 60px;}
.nbh .why-choose .section-title{color:var(--white);}
.nbh .features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:52px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.06);}
.nbh .feature-card{background:rgba(255,255,255,0.04);padding:36px 32px;transition:background .25s;}
.nbh .feature-card:hover{background:rgba(255,255,255,0.08);}
.nbh .feature-num{font-size:11px;font-weight:700;letter-spacing:0.12em;color:var(--orange);margin-bottom:20px;opacity:0.8;}
.nbh .feature-title{font-size:17px;font-weight:700;color:var(--white);margin-bottom:10px;}
.nbh .feature-desc{font-size:14px;color:rgba(255,255,255,0.52);line-height:1.8;}

/* SERVICES (modern) */
.nbh .services{background:var(--off-white);padding:88px 60px;}
.nbh .services-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:48px;}
.nbh .services-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,230px);gap:3px;margin-top:0;}
.nbh .service-card{position:relative;overflow:hidden;cursor:pointer;}
/* First card is a 2x2 hero: 6 cards then fill a 3x3 mosaic (big top-left, two
   stacked right, three across the bottom) with no orphaned last card / blank gap. */
.nbh .service-card:first-child{grid-column:span 2;grid-row:span 2;}
.nbh .service-thumb{height:100%;background-size:cover;background-position:center;position:relative;overflow:hidden;transition:transform .4s ease;}
.nbh .service-card:first-child .service-thumb{height:100%;}
.nbh .service-card:hover .service-thumb{transform:scale(1.03);}
.nbh .service-thumb::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(13,32,64,0.82) 0%,rgba(13,32,64,0.15) 55%,transparent 100%);transition:opacity .3s;}
.nbh .service-card:hover .service-thumb::after{opacity:0.85;}
.nbh .service-info{position:absolute;bottom:0;left:0;right:0;padding:28px;z-index:2;}
.nbh .service-tag{display:inline-block;background:var(--orange);color:var(--white);font-size:10px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;padding:3px 10px;border-radius:2px;margin-bottom:8px;}
.nbh .service-name{font-size:24px;font-weight:700;color:var(--white);}
.nbh .service-card:first-child .service-name{font-size:30px;}
.nbh .service-arrow{position:absolute;bottom:28px;right:28px;width:40px;height:40px;background:var(--orange);border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:2;opacity:0;transition:opacity .25s,transform .25s;}
.nbh .service-card:hover .service-arrow{opacity:1;transform:scale(1.1);}
.nbh .service-arrow svg{width:16px;height:16px;fill:none;stroke:white;stroke-width:2.5;}

/* SERVICES v2 (widget nordic-nbh-services) — 3-up image cards with body copy +
   Explore arrow. Separate from the legacy .service-* mosaic above so both can
   coexist while the design system settles. */
.nbh .svc-intro{font-size:15px;color:var(--text-mid);line-height:1.85;margin-top:14px;max-width:640px;}
/* Default 2 columns; the widget's `Columns` control overrides per-instance. */
.nbh .svc-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:16px;}
.nbh .svc-cardx{position:relative;background:var(--white);border:1px solid var(--border);border-radius:6px;overflow:hidden;display:block;color:inherit;transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s ease,border-color .25s ease;}
.nbh a.svc-cardx{text-decoration:none;}
.nbh .svc-cardx:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(26,58,107,0.12);border-color:var(--orange);}
.nbh .svc-thumbx{height:220px;background-size:cover;background-position:center;background-color:var(--navy);transition:transform .5s cubic-bezier(.16,1,.3,1);}
.nbh .svc-cardx:hover .svc-thumbx{transform:scale(1.04);}
.nbh .svc-bodyx{padding:22px 24px 24px;}
/* The wp_head inline stylesheet reasserts .nbh .svc-tagx at equal specificity
   without setting `display`, and something else in that block bumps the span to
   `display:block`, which stretches the pill into a full-width gold bar. Force
   the pill shape and background to win regardless. */
.nbh .svc-tagx{display:inline-block !important;width:auto !important;background:var(--orange) !important;color:#fff !important;font-size:10px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;padding:3px 10px;border-radius:2px;margin-bottom:10px;align-self:flex-start;}
.nbh .svc-namex{font-size:18px;font-weight:700;color:var(--navy);margin-bottom:8px;line-height:1.3;}
.nbh .svc-descx{font-size:14px;color:var(--text-mid);line-height:1.7;margin-bottom:16px;}
.nbh .svc-arrowx{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:var(--orange);letter-spacing:0.1em;text-transform:uppercase;transition:gap .25s ease;}
.nbh .svc-cardx:hover .svc-arrowx{gap:14px;}
.nbh .svc-arrowx svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.5;}

/* THE PROBLEM (widget nordic-nbh-problem) — 2-column: pain-point items left, photo right */
.nbh .nb-prob2{background:var(--white);padding:96px 60px;}
/* The wp_head inline stylesheet reasserts `.nb-prob2 .section-title { color:#fff }`
   from an older dark-band design; on our current white background that turns the
   non-accent portion of the heading invisible. Higher specificity forces navy. */
.nbh .nb-prob2 .section-title{color:var(--navy) !important;}
.nbh .nb-prob2-inner{display:grid;grid-template-columns:1.05fr 1fr;gap:64px;align-items:center;max-width:1280px;margin:0 auto;}
.nbh .nb-prob2-text .section-label{margin-bottom:14px;}
.nbh .nb-prob2-text .section-title{margin-bottom:20px;}
.nbh .nb-prob2-lead{font-size:15px;color:var(--text-mid);line-height:1.9;margin-bottom:32px;max-width:560px;}
.nbh .nb-prob2-list{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.nbh .nb-prob2-item{background:var(--off-white);border:1px solid var(--border);border-left:3px solid var(--orange);padding:18px 22px;border-radius:4px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;}
.nbh .nb-prob2-item:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(26,58,107,0.08);}
.nbh .nb-prob2-item .pi-t{font-size:15px;font-weight:700;color:var(--navy);margin-bottom:4px;}
.nbh .nb-prob2-item .pi-d{font-size:13px;color:var(--text-mid);line-height:1.6;}
.nbh .nb-prob2-media{height:540px;background-size:cover;background-position:center;border-radius:6px;background-color:var(--light-gray);}

/* SERVICE AREAS (widget nordic-nbh-areas) — navy band, text left, neighborhood tiles right */
.nbh .nb-areas2{background:var(--navy);padding:88px 60px;color:#fff;}
.nbh .nb-areas2-inner{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;max-width:1280px;margin:0 auto;}
.nbh .nb-areas2-text .section-label span{color:#FFB060;}
.nbh .nb-areas2-text .section-title{color:#fff;margin-bottom:18px;}
.nbh .nb-areas2-text .section-title span{color:#FFB060;}
.nbh .nb-areas2-lead{font-size:15px;color:rgba(255,255,255,0.68);line-height:1.85;margin-bottom:28px;max-width:520px;}
.nbh .nb-areas2-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.nbh .nb-area-box{background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.14);padding:16px 18px;border-radius:4px;font-size:14px;font-weight:600;color:rgba(255,255,255,0.9);letter-spacing:0.01em;text-align:center;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .25s ease;}
.nbh a.nb-area-box:hover{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.32);color:#fff;transform:translateY(-2px);}
.nbh .nb-area-box.nb-area-more{background:var(--orange);border-color:var(--orange);color:#fff;font-weight:700;}
.nbh a.nb-area-box.nb-area-more:hover{background:var(--orange-dark);border-color:var(--orange-dark);}

/* PROCESS (modern) */
.nbh .process{background:var(--white);padding:88px 60px;}
.nbh .process-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:56px;border:1px solid var(--border);}
.nbh .process-step{padding:40px 32px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);transition:background .25s;}
.nbh .process-step:hover{background:var(--off-white);}
.nbh .process-step:nth-child(3),.nbh .process-step:nth-child(6){border-right:none;}
.nbh .process-step:nth-child(4),.nbh .process-step:nth-child(5),.nbh .process-step:nth-child(6){border-bottom:none;}
.nbh .step-num{width:40px;height:40px;background:var(--navy);color:white;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;margin-bottom:18px;}
.nbh .process-step:hover .step-num{background:var(--orange);}
.nbh .step-title{font-size:16px;font-weight:700;color:var(--navy);margin-bottom:10px;}
.nbh .step-desc{font-size:14px;color:var(--text-mid);line-height:1.8;}

/* PORTFOLIO (modern) */
.nbh .portfolio{background:var(--navy);padding:88px 60px;}
.nbh .portfolio .section-title{color:var(--white);}
.nbh .gallery-tabs{display:flex;gap:0;margin:36px 0 28px;border-bottom:1px solid rgba(255,255,255,0.12);}
.nbh .tab{padding:10px 24px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:rgba(255,255,255,0.4);cursor:pointer;background:transparent;border:none;border-bottom:3px solid transparent;border-radius:0;transition:color .2s,border-color .2s;margin-bottom:-1px;}
.nbh .tab.active,.nbh .tab:hover{color:var(--white);background:transparent;border-bottom-color:var(--orange);}
.nbh .gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:230px;gap:4px;}
/* "All Projects" view: first item is a 2x2 hero -> 5 items render as 1 big + 4 small
   filling a 4x2 block (no orphaned tile in an implicit extra row). */
.nbh .gallery-grid[data-view="all"] .gallery-item:first-child{grid-column:span 2;grid-row:span 2;}
/* Filtered views: hero off; matching tiles auto-fit and stretch to fill the row width,
   so a category with only 1-2 projects still fills the band instead of leaving a gap. */
.nbh .gallery-grid:not([data-view="all"]){grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.nbh .gallery-item[hidden]{display:none;}
.nbh .gallery-item{position:relative;overflow:hidden;height:auto;cursor:pointer;border-radius:2px;background:var(--navy-dark);}
.nbh .gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease;}
.nbh .gallery-item:hover img{transform:scale(1.05);}
.nbh .gallery-item::after{content:'';position:absolute;inset:0;background:rgba(0,0,0,0);transition:background .3s;z-index:1;}
.nbh .gallery-item:hover::after{background:rgba(224,123,42,0.2);}
.nbh .gallery-label{position:absolute;bottom:0;left:0;right:0;padding:16px 18px;background:linear-gradient(0deg,rgba(13,32,64,0.85) 0%,transparent 100%);font-size:12px;font-weight:600;color:white;letter-spacing:0.04em;z-index:2;opacity:0;transition:opacity .3s;}
.nbh .gallery-item:hover .gallery-label{opacity:1;}

/* PORTFOLIO LIGHTBOX (widget nordic-nbh-portfolio) — hidden by default; the
   controls only surface after JS toggles .open on .pf-lightbox. */
.nbh .pf-badge{position:absolute;top:12px;right:12px;background:rgba(13,32,64,0.72);color:#fff;font-size:10px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;padding:5px 10px;border-radius:2px;z-index:3;backdrop-filter:blur(4px);}
.nbh .gallery-item.has-gallery{cursor:zoom-in;}
.nbh .pf-lightbox{display:none;position:fixed;inset:0;z-index:9999;background:rgba(8,16,36,0.94);align-items:center;justify-content:center;padding:40px 60px;}
.nbh .pf-lightbox.open{display:flex;}
.nbh .pf-lb-img{max-width:min(1200px,100%);max-height:min(80vh,100%);width:auto;height:auto;object-fit:contain;box-shadow:0 20px 60px rgba(0,0,0,0.5);border-radius:2px;}
.nbh .pf-lightbox button{position:absolute;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.24);color:#fff;width:52px;height:52px;border-radius:50%;font-size:24px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .2s ease;padding:0;}
.nbh .pf-lightbox button:hover{background:var(--orange);border-color:var(--orange);transform:scale(1.05);}
.nbh .pf-lb-close{top:24px;right:24px;font-size:28px;}
.nbh .pf-lb-prev{left:24px;top:50%;transform:translateY(-50%);}
.nbh .pf-lb-next{right:24px;top:50%;transform:translateY(-50%);}
.nbh .pf-lightbox .pf-lb-prev:hover,.nbh .pf-lightbox .pf-lb-next:hover{transform:translateY(-50%) scale(1.05);}
.nbh .pf-lb-caption{position:absolute;left:24px;right:24px;bottom:24px;text-align:center;color:rgba(255,255,255,0.85);font-size:14px;font-weight:600;letter-spacing:0.03em;}
.nbh .pf-lb-count{position:absolute;top:32px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,0.6);font-size:12px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;}

/* REVIEWS (modern) */
.nbh .reviews{background:var(--off-white);padding:88px 60px;}
.nbh .reviews-header{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:nowrap;gap:0;margin-bottom:48px;}
.nbh .stars{color:#FFB060;font-size:20px;letter-spacing:2px;margin-bottom:6px;}
.nbh .rating-summary{font-size:48px;font-weight:700;color:var(--navy);line-height:1;}
.nbh .rating-count{font-size:13px;color:var(--text-light);margin-top:4px;}
.nbh .reviews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.nbh .review-card{background:var(--white);padding:32px 28px;border:none;border-top:3px solid var(--navy);border-radius:2px;box-shadow:0 2px 12px rgba(26,58,107,0.06);transition:box-shadow .25s,border-color .25s;}
.nbh .review-card:hover{box-shadow:0 6px 24px rgba(26,58,107,0.12);border-color:var(--orange);}
.nbh .review-stars{color:#FFB060;font-size:14px;letter-spacing:2px;margin-bottom:16px;}
.nbh .review-text{font-size:15px;color:var(--text-mid);line-height:1.8;margin-bottom:20px;font-style:italic;}
.nbh .review-author{font-size:14px;font-weight:700;color:var(--navy);}
.nbh .review-date{font-size:12px;color:var(--text-light);margin-top:2px;}

/* BLOG (modern) */
.nbh .blog{background:var(--white);padding:88px 60px;}
.nbh .blog-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:48px;}
.nbh .blog-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:0;}
.nbh .blog-card{cursor:pointer;background:transparent;border:none;border-radius:0;overflow:visible;transition:none;box-shadow:none;}
.nbh .blog-card:hover{box-shadow:none;}
.nbh .blog-thumb{height:200px;margin-bottom:18px;overflow:hidden;border-radius:2px;background:var(--navy);}
.nbh .blog-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease;}
.nbh .blog-card:hover .blog-thumb img{transform:scale(1.05);}
.nbh .blog-tag{display:inline-block;background:var(--off-white);color:var(--navy);font-size:10px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;padding:3px 10px;border-radius:2px;margin-bottom:8px;border-left:2px solid var(--orange);}
.nbh .blog-title{font-size:16px;font-weight:700;color:var(--navy);line-height:1.4;margin-bottom:6px;transition:color .2s;}
.nbh .blog-card:hover .blog-title{color:var(--orange);}
.nbh .blog-meta{font-size:12px;color:var(--text-light);font-weight:500;}
.nbh .blog-excerpt{font-size:13px;color:var(--text-mid);line-height:1.7;margin-top:8px;}

/* CTA BANNER (modern) */
.nbh .cta-banner{background:var(--navy-dark);padding:72px 60px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:48px;position:relative;overflow:hidden;}
.nbh .cta-banner::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(224,123,42,0.07) 0%,transparent 50%);pointer-events:none;}
/* Sit above the ::before gradient so taps always land on the buttons/links, not on
   an intermediate pseudo-element (fixes CTA buttons appearing unresponsive on mobile). */
.nbh .cta-banner>*{position:relative;z-index:1;}
.nbh .cta-eyebrow{font-size:11px;font-weight:700;letter-spacing:0.18em;text-transform:uppercase;color:#FFB060;margin-bottom:10px;}
.nbh .cta-heading{font-size:36px;font-weight:700;color:var(--white);margin-bottom:14px;line-height:1.2;}
.nbh .cta-sub{font-size:15px;color:rgba(255,255,255,0.58);max-width:520px;line-height:1.8;margin-bottom:0;}
.nbh .cta-actions{margin-top:28px;display:flex;gap:14px;flex-wrap:wrap;align-items:stretch;}
.nbh .cta-right{display:flex;flex-direction:column;align-items:flex-end;gap:12px;position:relative;text-align:right;}
.nbh .cta-phone{font-size:30px;font-weight:700;color:var(--white);letter-spacing:-0.01em;margin-bottom:0;}
.nbh .cta-phone:hover{color:var(--white);}
.nbh .cta-hours{font-size:12px;color:rgba(255,255,255,0.45);letter-spacing:0.06em;font-weight:500;margin-bottom:0;}
.nbh .social-links{display:flex;gap:8px;}
.nbh .social-link{width:36px;height:36px;background:transparent;padding:0;border:1px solid rgba(255,255,255,0.2);border-radius:3px;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,0.5);font-size:11px;font-weight:700;letter-spacing:normal;transition:all .2s;}
.nbh .social-link:hover{background:var(--orange);border-color:var(--orange);color:white;}

/* RESPONSIVE (Part B — homepage) */
@media (max-width:960px){
  /* Let the hero grow to fit its content + trust strip: the desktop layout uses
     height:90vh with the trust strip absolutely pinned to the bottom, which on a
     phone crops the second CTA button. Static-flow trust strip fixes the overlap. */
  /* The wp_head inline stylesheet reasserts `.nbh .hero-trust { position:absolute }`
     LATER in source order than this @media block, so it re-pins the trust strip
     to the bottom of the hero on mobile and crops the second CTA button behind
     it. !important on height + position beats the inline non-media rule. */
  .nbh .hero{height:auto !important;min-height:0 !important;overflow:visible !important;display:block !important;padding:0 !important;}
  /* Balance: enough top padding to clear the sticky header, enough bottom padding
     to visibly separate the CTAs from the stats strip, but small enough that the
     stats strip still peeks above the fold on a typical phone viewport. */
  .nbh .hero-content{padding:56px 24px 32px;max-width:none;}
  /* Keep hero CTAs side-by-side on phones instead of wrapping onto two rows.
     Each button flexes down to fit the narrower column with a smaller font. */
  .nbh .hero-actions{flex-wrap:nowrap;gap:10px;align-items:stretch;}
  .nbh .hero-actions>a{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:12px 10px !important;font-size:11px !important;line-height:1.3;letter-spacing:0.04em;}
  /* Mobile: the trust strip becomes its own stats section right after the banner.
     Solid navy-dark background (not translucent over the hero image) so it reads
     as a distinct block. Desktop still keeps the absolute-pinned overlay look.
     display:flex !important is needed because the generic `.hero-trust{display:none}`
     rule for inner pages (a few lines above) would otherwise apply here on mobile. */
  .nbh .hero-trust{display:flex !important;position:static !important;padding:28px 24px;flex-wrap:wrap;background:var(--navy-dark) !important;border-top:none !important;backdrop-filter:none;-webkit-backdrop-filter:none;}
  .nbh .trust-item{flex:none;border:none !important;padding:8px 0 !important;}
  .nbh .about{grid-template-columns:1fr;padding:56px 24px;}
  .nbh .why-choose,.nbh .services,.nbh .process,.nbh .portfolio,.nbh .reviews,.nbh .blog,.nbh .cta-banner{padding:64px 24px;}
  .nbh .features-grid,.nbh .services-grid,.nbh .process-grid,.nbh .reviews-grid,.nbh .blog-grid{grid-template-columns:1fr;}
  /* Services: release the desktop fixed 230px rows; the hero drops to a normal cell.
     Cards get real height here because .service-info is absolutely positioned. */
  .nbh .services-grid{grid-template-rows:auto;}
  .nbh .service-card:first-child{grid-column:span 1;grid-row:span 1;}
  .nbh .service-thumb,.nbh .service-card:first-child .service-thumb{height:260px;}
  /* Gallery: 2-up; re-scope the hero to the All view and drop it to a single row
     (selector must match the desktop 0,5,0 rule to override it inside the query). */
  .nbh .gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:auto;}
  .nbh .gallery-grid[data-view="all"] .gallery-item:first-child{grid-column:span 2;grid-row:span 1;height:240px;}
  .nbh .gallery-item{height:160px;}
  .nbh .cta-banner{grid-template-columns:1fr;}
  .nbh .services-header,.nbh .reviews-header,.nbh .blog-header{flex-direction:column;gap:16px;align-items:flex-start;}
  /* Gallery tab row: scroll within its own box instead of pushing the page wide. */
  .nbh .gallery-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .nbh .gallery-tabs::-webkit-scrollbar{display:none;}
  .nbh .tab{flex:0 0 auto;white-space:nowrap;}
  /* About badge overhangs right on desktop (right:-28px); pull it inside on mobile. */
  .nbh .about-badge{right:0;bottom:-24px;}
  /* Services v2 / The Problem / Service Areas — single-column on mobile. */
  .nbh .svc-cards{grid-template-columns:1fr;gap:18px;}
  .nbh .svc-thumbx{height:200px;}
  .nbh .nb-prob2{padding:56px 24px;}
  .nbh .nb-prob2-inner{grid-template-columns:1fr;gap:36px;}
  .nbh .nb-prob2-media{height:260px;order:-1;}
  .nbh .nb-prob2-list{grid-template-columns:1fr;gap:12px;}
  .nbh .nb-areas2{padding:56px 24px;}
  .nbh .nb-areas2-inner{grid-template-columns:1fr;gap:32px;}
  .nbh .nb-areas2-grid{grid-template-columns:1fr 1fr;}
  /* Lightbox: fit the phone; controls above/below the image. */
  .nbh .pf-lightbox{padding:20px;}
  .nbh .pf-lb-close{top:12px;right:12px;width:40px;height:40px;}
  .nbh .pf-lb-prev{left:8px;width:40px;height:40px;}
  .nbh .pf-lb-next{right:8px;width:40px;height:40px;}
  .nbh .pf-lb-caption{font-size:12px;bottom:12px;}
}

/* ===== FOOTER FULL-BLEED (Elementor integration) =====
   Elementor renders the footer template inside a location wrapper
   <footer class="elementor-location-footer">. The generic footer{} rule above
   (navy bg + 20px 60px padding, intended for the mockup's bottom bar) also hits
   that wrapper: it painted it navy AND gave it 60px side padding, so the wrapper
   content box was only 1145px. The stretched section (inline width:1265;left:-60)
   could not escape the padded box, so the footer sat 1145px wide anchored left
   inside a 1265px navy wrapper and navy showed on the right of the light homepage
   strip. Reset the wrapper and force the section + container to fill it edge to
   edge (both mockups render the footer full-bleed as direct body children). The
   real bottom bar (.elementor-location-footer footer) still gets navy from the
   rule above; inner-page strips are navy either way.
   display:block also neutralises the generic footer{} flex layout (flex + gap:16px
   + align-items:center) that bled onto this wrapper — it was centring the inner
   section inside a 16px-taller flex box, leaving a 16px gap between the last page
   section (CTA) and the footer. Block flow drops that gap to zero. */
footer.elementor-location-footer{background:transparent;padding:0;border-top:0;display:block;}
footer.elementor-location-footer > .elementor-section{width:100%!important;left:0!important;}
footer.elementor-location-footer .elementor-container{max-width:100%!important;}

/* ===== STICKY HEADER (Elementor integration) =====
   Elementor wraps the header widget in <header class="elementor-location-header">.
   The widget's own nav{position:sticky} never worked in WP: a sticky element sticks
   only inside its containing block, and here that is this ~110px wrapper (not the
   body scroll container), so the nav scrolled away with it. Make the WRAPPER the
   sticky element instead — it is a direct child of <body>, so it pins to the page
   scroll. Desktop: pull up by the 38px top-bar height so the announcement bar
   scrolls off and the nav pins flush at the top (matches the mockup). Mobile: the
   top-bar can wrap to two lines, so pin the whole header at top:0. The inner nav is
   reset to static so there is no nested-sticky fighting the wrapper. */
header.elementor-location-header{position:sticky;top:-38px;z-index:1000;}
header.elementor-location-header nav{position:static;}
@media(max-width:960px){
  header.elementor-location-header{top:0;}
}

/* ===== HOMEPAGE FOOTER-STRIP OVERRIDE (modern.html = light) =====
   The global footer widget renders the navy footer-strip (full-site.html) that
   inner pages use. On the homepage only (body.home), the approved modern.html
   mockup shows a LIGHT footer-strip: off-white bg, navy titles, single-column
   serving list with orange bullets + dividers. The bottom footer bar stays
   navy-dark in BOTH mockups, so it is deliberately left untouched. */
body.home .footer-strip{background:var(--off-white);border-top:3px solid var(--navy);}
body.home .fs-title{color:var(--navy);border-bottom:1px solid var(--border);letter-spacing:0.18em;padding-bottom:12px;}
body.home .serve-list{display:block;grid-template-columns:none;gap:0;}
body.home .serve-list li{font-size:14px;color:var(--text-mid);padding:6px 0;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;}
body.home .serve-list li::before{content:'';display:block;width:5px;height:5px;background:var(--orange);border-radius:50%;flex-shrink:0;}
body.home .hours-row{color:var(--text-mid);border-bottom:1px solid var(--border);}
body.home .hours-row .day{color:var(--navy);}
body.home .contact-phone{font-size:26px;color:var(--navy);margin-bottom:6px;}
body.home .contact-phone:hover{color:var(--navy);}
body.home .contact-links li{font-size:14px;color:var(--text-mid);padding:6px 0;border-bottom:1px solid var(--border);}
body.home .contact-links a{color:var(--text-mid);}
body.home .contact-links a:hover{color:var(--orange);}
body.home .serve-list a:hover{color:var(--orange);}
@media(max-width:960px){body.home .footer-strip{padding:56px 24px;}}

/* ==================== PART C — BLOG (global, inner) ==================== */
/* Reuses .blog-section/.blog-grid/.blog-card/.blog-img/.blog-body/.blog-tag/
   .blog-title/.blog-excerpt/.blog-link from Part A. Adds the loop-specific
   pieces the static mockup never needed: clickable cards, equal-height cards,
   pagination, an empty state, and the single-post reading view. */

/* Blog index (archive) */
.blog-card>.blog-img{display:block;}
.blog-card .blog-title a{color:inherit;transition:color .2s;}
.blog-card .blog-title a:hover{color:var(--orange);}
.blog-card .blog-link:hover{color:var(--orange);}
.blog-archive .blog-card{display:flex;flex-direction:column;}
.blog-archive .blog-body{flex:1;display:flex;flex-direction:column;}
.blog-archive .blog-excerpt{margin-bottom:16px;}
.blog-archive .blog-link{margin-top:auto;}

.blog-empty{grid-column:1/-1;padding:56px 40px;text-align:center;background:white;border:1px solid var(--border);border-radius:2px;}
.blog-empty h3{font-size:20px;font-weight:700;color:var(--navy);margin-bottom:10px;}
.blog-empty p{font-size:14px;color:var(--text-mid);line-height:1.7;}

.blog-pagination{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:56px;}
.blog-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 15px;border:1px solid var(--border);background:white;color:var(--navy);font-size:13px;font-weight:700;border-radius:2px;transition:border-color .2s,background .2s,color .2s;}
.blog-pagination a.page-numbers:hover{border-color:var(--navy);}
.blog-pagination .page-numbers.current{background:var(--navy);border-color:var(--navy);color:white;}
.blog-pagination .page-numbers.dots{border-color:transparent;background:transparent;min-width:auto;}

/* Single post reading view (sits under the standard inner .inner-hero) */
.post-hero .page-sub{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;}
.post-meta-cat{color:#FFB060;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;font-size:12px;}
.post-single{padding:72px 60px;background:white;}
.post-prose{max-width:760px;margin:0 auto;font-size:16px;line-height:1.85;color:var(--text);}
.post-prose>*:first-child{margin-top:0;}
.post-prose p{margin:0 0 24px;}
.post-prose h2{font-size:clamp(23px,2.6vw,30px);font-weight:700;color:var(--navy);line-height:1.3;margin:44px 0 16px;scroll-margin-top:88px;}
.post-prose h3{font-size:20px;font-weight:700;color:var(--navy);line-height:1.35;margin:36px 0 14px;}
.post-prose h4{font-size:13px;font-weight:700;color:var(--orange);text-transform:uppercase;letter-spacing:0.08em;margin:30px 0 12px;}
.post-prose a{color:var(--orange);text-decoration:underline;text-underline-offset:2px;}
.post-prose a:hover{color:var(--orange-dark);}
.post-prose ul,.post-prose ol{margin:0 0 24px;padding-left:22px;}
.post-prose li{margin-bottom:10px;}
.post-prose li::marker{color:var(--orange);}
.post-prose img{border-radius:2px;margin:8px 0 28px;}
.post-prose figure{margin:8px 0 28px;}
.post-prose figcaption{font-size:12px;color:var(--text-light);margin-top:8px;text-align:center;}
.post-prose blockquote{margin:32px 0;padding:6px 0 6px 28px;border-left:3px solid var(--orange);font-size:19px;line-height:1.6;color:var(--navy);font-style:italic;}
.post-prose blockquote p:last-child{margin-bottom:0;}
.post-prose strong{color:var(--navy);}
.post-prose hr{border:none;border-top:1px solid var(--border);margin:40px 0;}
.post-back{max-width:760px;margin:44px auto 0;}
/* Single-post Table of Contents */
.post-toc{display:block;position:static;height:auto;max-width:760px;margin:0 auto 44px;background:var(--off-white);border:1px solid var(--border);border-left:3px solid var(--orange);border-radius:10px;padding:22px 28px 24px;box-shadow:0 1px 3px rgba(26,58,107,0.04);}
.post-toc-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.14em;color:var(--navy);margin-bottom:14px;display:flex;align-items:center;gap:10px;}
.post-toc-label::after{content:"";flex:1;height:1px;background:var(--border);}
.post-toc-list{list-style:none;margin:0;padding:0;counter-reset:toc;display:grid;gap:10px;}
.post-toc-list li{counter-increment:toc;position:relative;padding-left:34px;}
.post-toc-list li::before{content:counter(toc,decimal-leading-zero);position:absolute;left:0;top:1px;font-size:12px;font-weight:800;color:var(--orange);letter-spacing:0.06em;font-variant-numeric:tabular-nums;}
.post-toc-list a{color:var(--navy);text-decoration:none;font-size:15px;font-weight:500;line-height:1.5;border-bottom:1px solid transparent;transition:color .2s ease,border-color .2s ease;}
.post-toc-list a:hover,.post-toc-list a:focus-visible{color:var(--orange);border-bottom-color:currentColor;outline:none;}

@media(max-width:960px){
  .post-single{padding:56px 24px;}
  .blog-pagination{margin-top:40px;}
}

/* CTA action buttons stay side by side on phones (all pages). Placed last so it beats
   the base `.cta-actions`/`.nbh .cta-actions{flex-wrap:wrap}`; !important overrides the
   inline padding/size on the primary button. */
@media(max-width:960px){
  .cta-banner .cta-actions{flex-wrap:nowrap;gap:10px;align-items:stretch;}
  .cta-banner .cta-actions>a{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:12px 10px !important;font-size:11px !important;line-height:1.3;letter-spacing:0.04em;}
}

/* ==========================================================================
   INNER-PAGE SECTION BRIDGE CSS
   The interior pages (Services, About, Our Process, Projects, etc.) still
   render several sections as raw Elementor HTML widgets that use these
   class-name families:
     hub-*    — service-hub sections (Core Services grid, Fit compare, Steps chip
                row, Proof band) reused across /services/ and each service page
     ab-*/av-*/ap-* — About page sections (why/values/proof)
     proc-*   — Our Process page sections (Communication, Change Orders)
     nb-stat* — Projects page stats band
   Rules live outside .nbh because interior pages don't apply that wrapper.
   Everything picks up the design tokens from :root so the client's overridden
   Rich-Blue / Gold palette flows through automatically.
   ========================================================================== */

/* Shared inner container + optional centred section-label variant. */
.hub-inner{max-width:1180px;margin:0 auto;}
.section-label.ab-center{text-align:center;display:block;}
.section-label.ab-center>span{display:inline-flex;}

/* SERVICES HUB — Core Services image-card grid ------------------------------ */
.hub-core{background:var(--white);padding:88px 60px;}
.hub-svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;margin-top:44px;}
.hub-svc{background:var(--white);border:1px solid var(--border);border-radius:6px;overflow:hidden;display:flex;flex-direction:column;transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s ease,border-color .25s ease;}
.hub-svc:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(26,58,107,0.12);border-color:var(--orange);}
.hub-svc-thumb{height:260px;background-size:cover;background-position:center;background-color:var(--navy);}
.hub-svc-body{padding:26px 30px 30px;flex:1;display:flex;flex-direction:column;}
.hub-svc-body h3{font-size:22px;font-weight:700;color:var(--navy);margin-bottom:12px;line-height:1.25;}
.hub-svc-body p{font-size:14px;color:var(--text-mid);line-height:1.85;margin-bottom:16px;}
.hub-svc-body .fit{font-size:13px;color:var(--text-light);font-style:italic;padding:12px 14px;background:var(--off-white);border-left:3px solid var(--orange);margin-bottom:18px;border-radius:2px;}
.hub-svc-body .expl{margin-top:auto;font-size:12px;font-weight:700;color:var(--orange);letter-spacing:0.08em;text-transform:uppercase;transition:letter-spacing .2s;}
.hub-svc-body .expl:hover{letter-spacing:0.14em;}
.hub-note{max-width:820px;margin:32px auto 0;text-align:center;font-size:13px;color:var(--text-light);font-style:italic;line-height:1.7;}

/* SERVICES HUB — Right-fit YES/NO compare ---------------------------------- */
.hub-fit-sec{background:var(--off-white);padding:88px 60px;}
.hub-fit{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:44px;}
.hub-fit-col{background:var(--white);border:1px solid var(--border);border-radius:6px;padding:32px 30px;transition:transform .25s ease,box-shadow .25s ease;}
.hub-fit-col:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(26,58,107,0.08);}
.hub-fit-col.yes{border-top:3px solid var(--orange);}
.hub-fit-col.no{border-top:3px solid var(--text-light);}
.hub-fit-col h3{font-size:18px;font-weight:700;color:var(--navy);margin-bottom:20px;}
.hub-fit-col ul{list-style:none;padding:0;margin:0;}
.hub-fit-col li{position:relative;padding:10px 0 10px 28px;border-bottom:1px solid var(--light-gray);font-size:14px;color:var(--text-mid);line-height:1.7;}
.hub-fit-col li:last-child{border-bottom:none;}
.hub-fit-col.yes li::before{content:"\2713";position:absolute;left:0;top:10px;color:var(--orange);font-weight:700;}
.hub-fit-col.no li::before{content:"\2715";position:absolute;left:0;top:10px;color:var(--text-light);font-weight:700;}
.hub-fit-close{max-width:640px;margin:32px auto 0;text-align:center;font-size:14px;color:var(--text-mid);font-style:italic;}

/* SERVICES HUB — Six-step chip row ----------------------------------------- */
.hub-steps-sec{background:var(--white);padding:88px 60px;text-align:center;}
.hub-steps{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin:36px auto 24px;max-width:1000px;}
.hub-chip{display:inline-flex;align-items:center;gap:10px;background:var(--off-white);border:1px solid var(--border);padding:12px 20px;border-radius:60px;font-size:14px;font-weight:600;color:var(--navy);transition:background .2s ease,border-color .2s ease,transform .2s ease;}
.hub-chip:hover{background:var(--white);border-color:var(--orange);transform:translateY(-2px);}
.hub-chip b{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--navy);color:#fff;font-size:12px;font-weight:700;font-family:inherit;}
.hub-link{display:inline-block;margin-top:16px;font-size:13px;font-weight:700;color:var(--orange);letter-spacing:0.08em;text-transform:uppercase;transition:letter-spacing .2s;}
.hub-link:hover{letter-spacing:0.14em;}

/* SERVICES HUB — Proof band (stats + testimonial) -------------------------- */
.hub-proof{background:var(--navy);padding:72px 60px;color:#fff;text-align:center;}
.hub-proof .hub-inner{max-width:1080px;}
.hub-proof-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;margin:0 auto 36px;}
.hub-proof-stats>div{color:rgba(255,255,255,0.85);font-size:13px;font-weight:600;letter-spacing:0.04em;line-height:1.4;}
.hub-proof-stats b{display:block;font-size:38px;font-weight:700;color:var(--orange);margin-bottom:8px;line-height:1;}
.hub-proof-quote{max-width:820px;margin:24px auto 0;font-size:16px;color:rgba(255,255,255,0.9);font-style:italic;line-height:1.75;}
.hub-proof-quote cite{display:block;margin-top:14px;font-size:12px;font-weight:600;color:rgba(255,255,255,0.6);font-style:normal;letter-spacing:0.05em;text-transform:uppercase;}
.hub-proof .hub-link{color:var(--orange);margin-top:24px;}

/* ABOUT PAGE — Why band (2-col text + media) ------------------------------- */
.ab-why{background:var(--white);padding:88px 60px;}
.ab-why-inner{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center;}
.ab-why-text .section-title{margin-bottom:24px;}
.ab-why-text p{font-size:15px;color:var(--text-mid);line-height:1.9;margin-bottom:16px;}
.ab-why-media{height:520px;background-size:cover;background-position:center;border-radius:6px;background-color:var(--light-gray);}

/* ABOUT PAGE — Values grid ------------------------------------------------- */
.ab-values{background:var(--off-white);padding:88px 60px;}
.ab-values-inner{max-width:1180px;margin:0 auto;}
.ab-values-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px;}
.ab-value{background:var(--white);border:1px solid var(--border);border-left:3px solid var(--orange);padding:26px 28px;border-radius:4px;transition:transform .25s ease,box-shadow .25s ease;}
.ab-value:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(26,58,107,0.10);}
.ab-value .av-t{font-size:16px;font-weight:700;color:var(--navy);margin-bottom:8px;}
.ab-value .av-d{font-size:14px;color:var(--text-mid);line-height:1.8;}

/* ABOUT PAGE — Proof band (stats + story + quote) -------------------------- */
.ab-proof{background:var(--navy);padding:88px 60px;color:#fff;}
.ab-proof-inner{max-width:1180px;margin:0 auto;}
.ab-proof .section-title{color:#fff;}
.ab-proof .section-label span{color:var(--orange);}
.ab-proof-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin:36px 0 40px;}
.ap-stat{text-align:center;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.12);padding:24px 18px;border-radius:4px;}
.ap-num{font-size:34px;font-weight:700;color:var(--orange);line-height:1;margin-bottom:8px;}
.ap-lbl{font-size:12px;font-weight:600;color:rgba(255,255,255,0.7);letter-spacing:0.03em;line-height:1.4;}
/* Same inline-block trick as .proc-comm-intro: keeps story + quote aligned
   with the label/title/stats instead of floating auto-centred in a left
   layout (the About Proof stats sit at the container's left edge, so the
   story shouldn't self-centre underneath them). */
.ap-story{display:inline-block;max-width:820px;margin:0 0 28px 0;font-size:15px;color:rgba(255,255,255,0.85);line-height:1.9;}
.ap-quote{display:inline-block;max-width:820px;margin:0;font-size:16px;font-style:italic;color:rgba(255,255,255,0.9);line-height:1.75;padding-top:20px;border-top:1px solid rgba(255,255,255,0.15);}
.ap-quote cite{display:block;margin-top:12px;font-size:12px;font-weight:600;color:rgba(255,255,255,0.55);font-style:normal;letter-spacing:0.05em;text-transform:uppercase;}

/* OUR PROCESS — Communication grid + Change-orders callout ---------------- */
.proc-comm{background:var(--off-white);padding:88px 60px;text-align:center;}
/* inline-block + no explicit horizontal margin makes the intro follow the
   parent's `text-align`: on our default centred layout it centres; on pages
   like /contact/ that override to `text-align:left`, it sits at the left
   flush with the label/title/cards instead of floating in the middle. */
.proc-comm-intro{display:inline-block;max-width:720px;margin:14px 0 40px 0;font-size:15px;color:var(--text-mid);line-height:1.85;}
/* Grid fills the .hub-inner (1180px, centred). Removed max-width/margin:0 auto
   so the cards align with the label/title/intro on left-aligned layouts (e.g.
   the contact page's `.page-id-87 .proc-comm { text-align:left }` override) —
   auto-margins were centring the grid narrower than the header row above it. */
.proc-comm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;text-align:left;margin:0;}
.proc-comm-card{background:var(--white);border:1px solid var(--border);border-top:3px solid var(--navy);padding:28px 26px;border-radius:4px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;}
.proc-comm-card:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(26,58,107,0.10);border-top-color:var(--orange);}
.proc-comm-card h3{font-size:16px;font-weight:700;color:var(--navy);margin-bottom:10px;}
.proc-comm-card p{font-size:14px;color:var(--text-mid);line-height:1.8;}
.proc-changes{background:var(--white);padding:88px 60px;text-align:center;}
.proc-changes p{max-width:820px;margin:20px auto 0;font-size:15px;color:var(--text-mid);line-height:1.9;}

/* TEAM GRID (widget nordic-nb-team-grid) — 2-col card grid, photo top, body under */
.nb-team{background:var(--white);padding:88px 60px;}
.nb-team .section-label{margin-bottom:14px;}
.nb-team .section-title{margin-bottom:16px;}
.nb-team-intro{font-size:15px;color:var(--text-mid);line-height:1.85;max-width:760px;margin-bottom:40px;}
.nb-team-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;}
.nb-team-card{background:var(--white);border:1px solid var(--border);border-top:3px solid var(--orange);border-radius:6px;overflow:hidden;display:flex;flex-direction:column;transition:transform .25s ease,box-shadow .25s ease;}
.nb-team-card:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(26,58,107,0.10);}
.nb-team-photo{height:220px;background-size:cover;background-position:center;background-color:var(--light-gray);}
.nb-team-photo-empty{background:linear-gradient(135deg,var(--off-white),var(--light-gray));}
.nb-team-body{padding:22px 26px 24px;flex:1;}
.nb-team-name{font-size:17px;font-weight:700;color:var(--navy);margin-bottom:8px;line-height:1.3;}
.nb-team-body p{font-size:14px;color:var(--text-mid);line-height:1.8;}
.nb-team-footer{margin-top:34px;font-size:14px;color:var(--text-mid);line-height:1.85;font-style:italic;max-width:820px;}

/* NUMBERED STEPS (widget nordic-nb-steps-numbered) — 3 numbered cards */
.nb-numsteps{background:var(--off-white);padding:88px 60px;}
.nb-numsteps .section-label{margin-bottom:14px;}
.nb-numsteps .section-title{margin-bottom:36px;}
.nb-numsteps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
.nb-numstep{background:var(--white);border:1px solid var(--border);padding:28px 26px 26px;border-radius:6px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;}
.nb-numstep:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(26,58,107,0.10);border-color:var(--orange);}
.nb-numstep-num{width:44px;height:44px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;margin-bottom:16px;}
.nb-numstep:hover .nb-numstep-num{background:var(--orange);}
.nb-numstep-title{font-size:16px;font-weight:700;color:var(--navy);margin-bottom:8px;}
.nb-numstep-body{font-size:14px;color:var(--text-mid);line-height:1.75;}

/* LINK CARDS (widget nordic-nb-link-cards) — 2-up clickable arrow cards */
.nb-linkcards{background:var(--white);padding:72px 60px;}
.nb-linkcards .section-title{margin-bottom:28px;}
.nb-linkcards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;}
.nb-linkcard{position:relative;display:block;padding:26px 60px 26px 28px;background:var(--off-white);border:1px solid var(--border);border-left:3px solid var(--orange);border-radius:6px;text-decoration:none;color:inherit;transition:transform .25s ease,box-shadow .25s ease,background .2s ease;}
.nb-linkcard:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(26,58,107,0.10);background:var(--white);}
.nb-linkcard-title{display:block;font-size:16px;font-weight:700;color:var(--navy);margin-bottom:6px;line-height:1.3;}
.nb-linkcard-desc{display:block;font-size:14px;color:var(--text-mid);line-height:1.7;}
.nb-linkcard-arrow{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-size:26px;font-weight:700;color:var(--orange);transition:transform .2s ease;line-height:1;}
.nb-linkcard:hover .nb-linkcard-arrow{transform:translateY(-50%) translateX(4px);}

/* PROJECTS PAGE — Stat band ----------------------------------------------- */
.nb-statband{background:var(--navy);padding:56px 60px;}
.nb-statband-in{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:32px;text-align:center;}
.nb-stat{color:rgba(255,255,255,0.75);font-size:12px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;line-height:1.4;}
.nb-stat b{display:block;font-size:36px;font-weight:700;color:var(--orange);line-height:1;margin-bottom:8px;font-family:inherit;}

/* Responsive collapse for every band above. */
@media(max-width:960px){
  .hub-core,.hub-fit-sec,.hub-steps-sec,.hub-proof,
  .ab-why,.ab-values,.ab-proof,
  .proc-comm,.proc-changes,.nb-statband{padding:56px 24px;}
  .hub-svc-grid{grid-template-columns:1fr;gap:20px;}
  .hub-svc-thumb{height:220px;}
  .hub-fit{grid-template-columns:1fr;gap:20px;}
  .hub-proof-stats,.ab-proof-stats,.nb-statband-in{grid-template-columns:1fr 1fr;gap:20px;}
  .ab-why-inner{grid-template-columns:1fr;gap:36px;}
  .ab-why-media{height:280px;order:-1;}
  .ab-values-grid{grid-template-columns:1fr;}
  .proc-comm-grid{grid-template-columns:1fr;}
  .hub-chip{padding:10px 16px;font-size:13px;}
  /* New widgets — collapse to single column on phones. */
  .nb-team,.nb-numsteps,.nb-linkcards{padding:56px 24px;}
  .nb-team-grid,.nb-numsteps-grid,.nb-linkcards-grid{grid-template-columns:1fr;}
  .nb-team-photo{height:200px;}
}

/* ==========================================================================
   MOTION LAYER — sitewide smooth animation.
   The static button LOOK is preserved (colour / type / shape); we only add a
   smooth hover lift + shadow, card/image micro-interactions, smooth link eases,
   and a flash-safe scroll-reveal. All reveal rules are gated on `html.nb-js`
   (added by main.js) so content is never hidden if JS fails, and forced visible
   in the Elementor editor. Honours prefers-reduced-motion.
   ========================================================================== */

a{transition:color .2s ease;}
img{transition:transform .5s cubic-bezier(.16,1,.3,1);}

/* Buttons: keep the static look, add a smooth lift + shadow on hover. */
.btn-primary,.btn-navy,.btn-outline-white,.btn-outline-navy,
.nbh .btn-primary,.nbh .btn-navy,.nbh .btn-outline-white,.nbh .btn-outline-navy{
  transition:background-color .25s ease,border-color .25s ease,color .25s ease,
             transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s ease;
}
.btn-primary:hover,.nbh .btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(224,123,42,0.32);}
.btn-navy:hover,.nbh .btn-navy:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(26,58,107,0.30);}
.btn-outline-white:hover,.nbh .btn-outline-white:hover,
.btn-outline-navy:hover,.nbh .btn-outline-navy:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,0.14);}
.btn-primary:active,.btn-navy:active,.btn-outline-white:active,.btn-outline-navy:active,
.nbh .btn-primary:active,.nbh .btn-navy:active,.nbh .btn-outline-white:active,.nbh .btn-outline-navy:active{
  transform:translateY(0);box-shadow:none;
}

/* Cards: gentle lift on hover across the site. */
.proc-card,.benefit-card,.cred-card,.review-card,.blog-card,.spec-tag{
  transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s ease,border-color .25s ease;
}
.proc-card:hover,.benefit-card:hover,.cred-card:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(26,58,107,0.10);border-color:var(--orange);}
.review-card:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(26,58,107,0.12);}
.svc-card .svc-overlay,.sub-card .sub-card-overlay{transition:background .35s ease;}

/* Flash-safe scroll-reveal. */
html.nb-js .nb-reveal{opacity:0;transform:translateY(28px);
  transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);}
html.nb-js .nb-reveal.nb-in{opacity:1;transform:none;}
body.elementor-editor-active .nb-reveal{opacity:1!important;transform:none!important;}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
  html.nb-js .nb-reveal{opacity:1!important;transform:none!important;}
}

/* ==================== THANK YOU PAGE (widget: nordic-nb-thankyou) ================
   Rendered inside the site header/footer chrome. Owns its own spacing/typography
   so it doesn't depend on the .hero or inner-page-hero patterns.
   ================================================================================ */
.ty{background:linear-gradient(180deg,var(--off-white) 0%,#fff 40%,var(--off-white) 100%);padding:96px 24px 120px;}
.ty-container{max-width:820px;margin:0 auto;}
.ty-hero{text-align:center;margin-bottom:72px;}
.ty-check{width:96px;height:96px;margin:0 auto 28px;display:flex;align-items:center;justify-content:center;background:rgba(224,123,42,0.10);border:2px solid rgba(224,123,42,0.35);border-radius:50%;position:relative;}
.ty-check-svg{width:64px;height:64px;fill:none;stroke:var(--orange);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}
.ty-check-ring{stroke-dasharray:176;stroke-dashoffset:176;animation:tyRing .7s .1s ease-out forwards;}
.ty-check-mark{stroke-dasharray:52;stroke-dashoffset:52;animation:tyMark .5s .7s ease-out forwards;}
@keyframes tyRing{to{stroke-dashoffset:0;}}
@keyframes tyMark{to{stroke-dashoffset:0;}}
.ty-eyebrow{font-size:12px;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--orange);margin-bottom:16px;}
.ty-title{font-size:clamp(34px,4.5vw,54px);font-weight:700;color:var(--navy);line-height:1.15;letter-spacing:-0.01em;margin-bottom:20px;}
.ty-sub{font-size:17px;color:var(--text-mid);line-height:1.75;max-width:640px;margin:0 auto;font-weight:400;}
/* Founder message card */
.ty-founder{display:flex;gap:24px;align-items:center;background:#fff;border:1px solid var(--border);border-left:4px solid var(--orange);padding:28px 32px;border-radius:4px;box-shadow:0 8px 24px rgba(26,58,107,0.06);margin-bottom:72px;}
.ty-founder-photo{flex:0 0 88px;width:88px;height:88px;border-radius:50%;background-size:cover;background-position:center;}
.ty-founder-body{flex:1;min-width:0;}
.ty-founder-note{font-size:15px;color:var(--text);line-height:1.7;margin-bottom:12px;font-style:italic;}
.ty-founder-name{font-size:14px;font-weight:700;color:var(--navy);}
.ty-founder-title{font-size:12px;color:var(--text-light);letter-spacing:0.02em;}
/* Timeline */
.ty-steps{margin-bottom:72px;}
.ty-steps-title{font-size:22px;font-weight:700;color:var(--navy);text-align:center;margin-bottom:36px;letter-spacing:-0.01em;}
.ty-steps-list{list-style:none;margin:0;padding:0;position:relative;}
.ty-steps-list::before{content:"";position:absolute;left:23px;top:24px;bottom:24px;width:2px;background:linear-gradient(180deg,var(--orange),rgba(224,123,42,0.15));}
.ty-step{display:flex;gap:22px;align-items:flex-start;padding:14px 0;position:relative;}
.ty-step-num{flex:0 0 48px;width:48px;height:48px;border-radius:50%;background:var(--navy);color:#fff;font-weight:700;font-size:16px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;box-shadow:0 0 0 6px var(--off-white);}
.ty-step-copy{padding-top:8px;}
.ty-step-title{font-size:16px;font-weight:700;color:var(--navy);margin-bottom:4px;}
.ty-step-body{font-size:14.5px;color:var(--text-mid);line-height:1.75;}
/* Testimonial */
.ty-quote{background:var(--navy);color:#fff;padding:40px 36px;border-radius:4px;margin:0 0 72px;position:relative;}
.ty-quote-stars{color:#FFB060;letter-spacing:0.15em;font-size:14px;margin-bottom:14px;}
.ty-quote blockquote{font-size:18px;line-height:1.6;color:#fff;margin:0 0 20px;font-weight:400;}
.ty-quote figcaption{display:flex;flex-direction:column;gap:2px;}
.ty-quote figcaption strong{font-size:14px;font-weight:700;color:#fff;}
.ty-quote figcaption span{font-size:12px;color:rgba(255,255,255,0.6);letter-spacing:0.02em;}
/* CTA block: two paths (call or browse) inside a subtle floating card */
.ty-cta{padding:16px 0 0;}
.ty-cta-card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:44px 40px;box-shadow:0 18px 44px rgba(26,58,107,0.09);max-width:560px;margin:0 auto;text-align:center;position:relative;overflow:hidden;}
.ty-cta-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--orange) 0%,#C2AE94 50%,var(--orange) 100%);}
.ty-cta-label{font-size:11px;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:var(--text-light);margin-bottom:20px;}
.ty-cta-phone{display:inline-flex;align-items:center;gap:14px;font-size:clamp(26px,3.4vw,38px);font-weight:700;color:var(--navy);letter-spacing:-0.01em;text-decoration:none;transition:color .2s;line-height:1;}
.ty-cta-phone-text{transition:color .2s;}
.ty-cta-phone:hover .ty-cta-phone-text{color:var(--orange);}
.ty-cta-icon{width:44px;height:44px;flex:0 0 44px;background:rgba(158,125,79,0.12);border:1px solid rgba(158,125,79,0.4);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--orange);transition:transform .2s,background .2s,color .2s;}
.ty-cta-icon svg{width:20px;height:20px;fill:currentColor;}
.ty-cta-phone:hover .ty-cta-icon{background:var(--orange);color:#fff;transform:rotate(-8deg) scale(1.06);}
.ty-cta-sep{display:flex;align-items:center;gap:14px;margin:26px 0;color:var(--text-light);font-size:11px;letter-spacing:0.16em;text-transform:uppercase;font-weight:600;}
.ty-cta-sep::before,.ty-cta-sep::after{content:"";flex:1;height:1px;background:var(--border);}
.ty-cta-btn{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--navy);text-decoration:none;padding:15px 32px;border:2px solid var(--navy);border-radius:3px;transition:all .2s;}
.ty-cta-btn-arrow{display:inline-block;transition:transform .2s;font-weight:400;font-size:16px;line-height:1;}
.ty-cta-btn:hover{background:var(--navy);color:#fff;transform:translateY(-2px);box-shadow:0 10px 24px rgba(26,58,107,0.2);}
.ty-cta-btn:hover .ty-cta-btn-arrow{transform:translateX(4px);}
@media (max-width:640px){
  .ty-cta-card{padding:32px 22px;}
  .ty-cta-phone{gap:10px;}
  .ty-cta-icon{width:38px;height:38px;flex:0 0 38px;}
  .ty-cta-icon svg{width:17px;height:17px;}
}
@media (max-width:640px){
  .ty{padding:64px 20px 80px;}
  .ty-hero{margin-bottom:48px;}
  .ty-founder{flex-direction:column;text-align:center;padding:24px;margin-bottom:48px;}
  .ty-founder-photo{margin:0 auto;}
  .ty-steps{margin-bottom:48px;}
  .ty-quote{padding:28px 24px;margin-bottom:48px;}
  .ty-quote blockquote{font-size:16px;}
}
