/* ==========================================================================
   Soft Elite. Colour rule: navy/blue is the main colour, gold the secondary;
   teal and orange are small accents only (eyebrows, the sun motif, gradient tips).
   ========================================================================== */
:root {
	--navy: #0b2f52; --navy-d: #071f38; --blue: #14558a; --gold: #e5a823; --gold-l: #f4c95a;
	--teal: #0b7f8e; --orange: #e8751f; --ink: #12263a; --muted: #55677a; --line: #dfe6ec; --mist: #f3f6f9;
	--white: #fff; --radius: 6px; --shadow: 0 18px 45px -22px rgba(11, 47, 82, .35); --wrap: 1200px;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 90px; }
body { margin: 0; color: var(--ink); overflow-x: hidden; }
img { max-width: 100%; height: auto; display: block; }
.wp-site-blocks { padding: 0; }
.wp-site-blocks > * { margin-block: 0; }
main.site-main, .wp-block-post-content, .wp-block-post-content > * { margin-block: 0; }
.wp-block-post-content > .se-section, .wp-block-post-content > section { max-width: none !important; margin-inline: 0 !important; }
.wrap { width: min(100% - 40px, var(--wrap)); margin-inline: auto; }
.narrow { max-width: 820px; }
h1, .h1 { font-size: clamp(2.2rem, 4.8vw, 3.9rem); letter-spacing: -.02em; line-height: 1.1; margin: 0 0 .5em; font-weight: 800; color: inherit; }
h2 { font-size: clamp(1.75rem, 3.2vw, 2.65rem); letter-spacing: -.015em; line-height: 1.16; margin: 0 0 .55em; font-weight: 800; }
h3 { font-size: 1.2rem; line-height: 1.3; margin: 0 0 .5em; font-weight: 700; }
/* Highlighted words: blue with a gold underline on light backgrounds; gold text only on dark ones (contrast). */
h1 em, h2 em, .h1 em { font-style: normal; color: var(--blue); box-shadow: inset 0 -.14em 0 rgba(229, 168, 35, .75); }
.bg-navy h2 em, .hero-slider h1 em, .hero-slider .h1 em, .page-hero h1 em, .cta-banner h2 em { color: var(--gold-l); box-shadow: none; }
.lead { font-size: clamp(1.08rem, 1.6vw, 1.25rem); line-height: 1.6; }
.se-section { padding-block: clamp(64px, 8vw, 110px); }
.bg-white { background: var(--white); }
.bg-mist { background: var(--mist); }
.bg-navy { background: var(--navy); color: #d9e4ee; }
.bg-navy h2, .bg-navy h3 { color: var(--white); }
.eyebrow { display: inline-flex; align-items: center; gap: 10px; color: var(--teal); font-size: .86rem; font-weight: 700; letter-spacing: .03em; margin-bottom: 14px; }
.eyebrow::before { content: ""; width: 24px; height: 2px; background: var(--gold); }
.bg-navy .eyebrow, .cta-banner .eyebrow { color: var(--gold-l); }
.section-head { display: grid; grid-template-columns: 1.1fr 1fr; gap: 20px 60px; align-items: end; margin-bottom: 48px; }
.section-head h2 { margin-bottom: 0; }
.section-head > div:only-child { grid-column: 1 / -1; max-width: 780px; }
.section-head.is-center { display: block; text-align: center; max-width: 720px; margin-inline: auto; }
.section-head.is-center .eyebrow { justify-content: center; }
.section-intro { margin: 0; color: var(--muted); }
.bg-navy .section-intro { color: #c3d2df; }
.prose p { margin: 0 0 1em; }
.prose h2 { font-size: clamp(1.4rem, 2.4vw, 1.8rem); margin-top: 1.6em; }
.prose h3 { margin-top: 1.4em; }
.prose ul { padding-left: 1.2em; }
.prose a { text-decoration: underline; }
.text-media .prose, .about-collage .prose { color: var(--muted); }
.bg-navy .prose { color: #c9d7e3; }

/* Buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 15px 30px; border-radius: var(--radius); font-weight: 700; font-size: .95rem; text-decoration: none; border: 2px solid transparent; transition: transform .2s, background-color .2s, color .2s, box-shadow .2s; }
.btn:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.btn-gold { background: var(--gold); color: var(--navy-d); }
.btn-gold:hover { background: var(--gold-l); color: var(--navy-d); }
.btn-navy { background: var(--navy); color: var(--white); }
.btn-navy:hover { background: var(--blue); color: var(--white); }
.btn-white { background: var(--white); color: var(--navy); }
.btn-white:hover { color: var(--navy); }
.btn-line { border-color: var(--navy); color: var(--navy); background: transparent; }
.btn-line:hover { background: var(--navy); color: var(--white); }
.btn-row { display: flex; flex-wrap: wrap; gap: 14px; }
.link-arrow { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; color: var(--blue); text-decoration: none; }
.link-arrow:hover { color: var(--navy); }
.icon { width: 1.25em; height: 1.25em; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.icon-fill { fill: currentColor; stroke: none; }
.icon-disc { display: inline-grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: rgba(20, 85, 138, .09); color: var(--blue); flex: none; font-size: 1.15rem; }
.bg-navy .icon-disc { background: rgba(255, 255, 255, .09); color: var(--gold-l); }
.checks { list-style: none; margin: 18px 0 28px; padding: 0; display: grid; gap: 10px; }
.checks li { display: flex; gap: 10px; font-weight: 600; font-size: .98rem; }
.checks .icon { color: var(--gold); stroke-width: 2.6; margin-top: 3px; }

/* The sun: a small nod to the sphere of the logo */
.sun { position: absolute; width: 150px; height: 150px; border-radius: 50%; background: radial-gradient(circle at 38% 30%, var(--gold-l), var(--gold) 55%, var(--orange)); }
.sun--sm { width: 86px; height: 86px; }

/* Header */
.site-header { display: grid; grid-template-columns: 250px 1fr; background: var(--white); position: sticky; top: 0; z-index: 50; box-shadow: 0 1px 0 var(--line); transition: box-shadow .2s; }
.admin-bar .site-header { top: 32px; }
.site-header.is-stuck { box-shadow: 0 10px 30px -18px rgba(11, 47, 82, .45); }
.brand { display: flex; align-items: center; justify-content: center; padding: 8px 22px; border-right: 1px solid var(--line); }
.brand-logo { width: 100%; max-width: 196px; height: auto; }
.hd-top { display: flex; align-items: center; gap: 26px; padding: 7px 34px; background: var(--navy); color: #d3e0ea; font-size: .84rem; }
.hd-top a { color: inherit; text-decoration: none; }
.hd-top a:hover { color: var(--gold-l); }
.hd-top__text { margin-right: auto; }
.hd-top__item { display: inline-flex; align-items: center; gap: 7px; }
.hd-top__item .icon { color: var(--gold-l); }
.social { display: flex; gap: 12px; }
.social a { color: inherit; display: inline-flex; }
.is-stuck .hd-top { display: none; }
.hd-nav { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 0 34px; min-height: 72px; }
.nav { list-style: none; margin: 0; padding: 0; display: flex; gap: 28px; }
.nav > li { position: relative; }
.nav a { display: flex; align-items: center; gap: 6px; padding: 24px 0; color: var(--ink); font-weight: 600; font-size: .95rem; text-decoration: none; }
.nav a:hover, .nav .current-menu-item > a, .nav .current-menu-ancestor > a { color: var(--blue); }
.nav > .current-menu-item > a, .nav > .current-menu-ancestor > a { box-shadow: inset 0 -3px 0 var(--gold); }
.caret { width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translateY(-2px); }
.nav .sub-menu { position: absolute; top: 100%; left: -18px; min-width: 310px; list-style: none; margin: 0; padding: 10px; background: var(--white); border-top: 3px solid var(--gold); border-radius: 0 0 var(--radius) var(--radius); box-shadow: var(--shadow); opacity: 0; visibility: hidden; transform: translateY(8px); transition: .18s; }
.nav > li:hover > .sub-menu, .nav > li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.nav .sub-menu a { padding: 9px 12px; border-radius: 4px; font-size: .92rem; }
.nav .sub-menu a:hover { background: var(--mist); }
.hd-tools { display: flex; align-items: center; gap: 18px; }
.hd-search { position: relative; }
.hd-search summary { list-style: none; cursor: pointer; display: grid; place-items: center; width: 38px; height: 38px; color: var(--navy); }
.hd-search summary::-webkit-details-marker { display: none; }
.hd-search form { position: absolute; right: 0; top: calc(100% + 16px); display: flex; width: 300px; background: var(--white); box-shadow: var(--shadow); border-radius: var(--radius); overflow: hidden; border-top: 3px solid var(--gold); }
.hd-search input { flex: 1; border: 0; padding: 13px 14px; font: inherit; min-width: 0; }
.hd-search button { border: 0; background: var(--navy); color: var(--white); padding: 0 14px; cursor: pointer; }
.lang-switch { display: flex; border: 1px solid var(--line); border-radius: 4px; overflow: hidden; }
.lang-switch a { padding: 5px 9px; font-size: .78rem; font-weight: 700; color: var(--navy); text-decoration: none; }
.lang-switch a.is-current { background: var(--navy); color: var(--white); }
.hd-phone { display: flex; align-items: center; gap: 10px; color: var(--navy); text-decoration: none; }
.hd-phone__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--navy); color: var(--gold-l); }
.hd-phone__txt { display: grid; line-height: 1.25; white-space: nowrap; }
.hd-phone small { color: var(--muted); font-size: .76rem; }
.hd-phone b { font-size: .98rem; }
.burger { display: none; background: none; border: 0; padding: 8px; cursor: pointer; }
.burger span { display: block; width: 24px; height: 2px; margin: 5px 0; background: var(--navy); }

/* WordPress wraps header parts in its own element: without this, sticky would be limited to that wrapper. */
header.wp-block-template-part { display: contents; }

/* Header 2: flat, one row, fixed on scroll */
.site-header.is-flat { display: block; background: rgba(255, 255, 255, .94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: none; border-bottom: 1px solid transparent; transition: box-shadow .25s, border-color .25s; }
.site-header.is-flat.is-stuck { border-bottom-color: var(--line); box-shadow: 0 8px 24px -16px rgba(11, 47, 82, .45); }
.flat-bar { display: flex; align-items: center; gap: 24px; width: min(100% - 40px, 1320px); min-height: 80px; margin-inline: auto; }
.is-flat .brand { flex: none; width: 168px; padding: 6px 0; border: 0; }
.is-flat .brand-logo { max-width: none; }
.is-flat .nav-wrap { flex: 1; display: flex; justify-content: center; }
.is-flat .nav > li > a { position: relative; padding: 29px 0; box-shadow: none !important; }
.is-flat .nav > li > a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 20px; height: 2px; background: var(--gold); transform: scaleX(0); transform-origin: left; transition: transform .22s; }
.is-flat .nav > li:hover > a::after, .is-flat .nav > .current-menu-item > a::after, .is-flat .nav > .current-menu-ancestor > a::after { transform: scaleX(1); }
.is-flat .nav .sub-menu { border-top: 0; border-radius: var(--radius); box-shadow: 0 18px 45px -18px rgba(11, 47, 82, .4), 0 0 0 1px var(--line); }
.is-flat .hd-tools { gap: 12px; }
.is-flat .lang-switch { border: 0; background: var(--mist); border-radius: 99px; padding: 3px; }
.is-flat .lang-switch a { border-radius: 99px; }
.is-flat .btn { padding: 11px 20px; font-size: .9rem; white-space: nowrap; }

/* Hero: slider */
.hero-slider { position: relative; min-height: clamp(540px, 76vh, 760px); background: var(--navy-d); color: var(--white); overflow: hidden; display: grid; }
.hero-slide { grid-area: 1 / 1; position: relative; display: flex; align-items: center; opacity: 0; visibility: hidden; transition: opacity .8s, visibility .8s; }
.hero-slide.is-active { opacity: 1; visibility: visible; }
.hero-slide__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(95deg, rgba(7, 31, 56, .94) 0%, rgba(11, 47, 82, .82) 48%, rgba(11, 47, 82, .35) 100%); }
.hero-slide__body { position: relative; z-index: 2; padding-block: 70px; }
.hero-slide__body > * { max-width: 760px; }
.hero-slide__eyebrow { display: inline-block; color: var(--gold-l); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; font-size: .85rem; margin-bottom: 18px; border-bottom: 2px solid var(--gold); padding-bottom: 6px; }
.hero-slide .lead { color: #dbe6ef; margin-bottom: 32px; max-width: 640px; }
.hero-arrows { position: absolute; right: clamp(16px, 4vw, 56px); bottom: 40px; z-index: 3; display: flex; gap: 10px; }
.hero-arrows button { width: 50px; height: 50px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .5); background: transparent; color: var(--white); cursor: pointer; display: grid; place-items: center; transition: .2s; }
.hero-arrows button:hover { background: var(--gold); border-color: var(--gold); color: var(--navy-d); }

/* Hero: split */
.hero-split { background: linear-gradient(180deg, var(--mist), var(--white)); padding-block: clamp(50px, 6vw, 90px) clamp(36px, 4vw, 56px); overflow: hidden; color: var(--navy); }
.hero-split__grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(40px, 6vw, 80px); align-items: center; }
.hero-split .lead { color: var(--muted); margin-bottom: 30px; }
.tag-row { list-style: none; padding: 0; margin: 32px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
.tag-row li { padding: 6px 13px; border: 1px solid var(--line); background: var(--white); border-radius: 99px; font-size: .84rem; font-weight: 600; color: var(--navy); }
.hero-split__media { position: relative; padding: 30px 30px 40px 0; }
.hero-split__frame { position: relative; border-radius: 180px 14px 14px 14px; overflow: hidden; box-shadow: var(--shadow); aspect-ratio: 5 / 5.2; z-index: 1; }
.hero-split__frame img { width: 100%; height: 100%; object-fit: cover; }
.hero-split__media .sun { top: 0; right: 0; }
.hero-split__media::before { content: ""; position: absolute; left: -26px; bottom: 6px; width: 170px; height: 170px; border: 2px dashed rgba(20, 85, 138, .3); border-radius: 50%; }
.float-card { position: absolute; z-index: 2; left: -28px; bottom: 30px; display: flex; gap: 12px; align-items: center; background: var(--white); padding: 15px 20px; border-radius: 10px; box-shadow: var(--shadow); max-width: 300px; }
.float-card__icon { display: grid; place-items: center; width: 44px; height: 44px; flex: none; border-radius: 50%; background: var(--navy); color: var(--gold-l); }
.float-card b { display: block; color: var(--navy); line-height: 1.25; }
.float-card small { color: var(--muted); line-height: 1.35; display: block; margin-top: 2px; }

/* Page hero */
.page-hero { position: relative; background: var(--navy-d); color: var(--white); padding-block: clamp(70px, 9vw, 120px); overflow: hidden; }
.page-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.page-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(95deg, rgba(7, 31, 56, .95), rgba(11, 47, 82, .72)); }
.page-hero::before { content: ""; position: absolute; z-index: 1; right: -60px; top: -40%; width: 340px; height: 180%; transform: rotate(24deg); background: linear-gradient(180deg, rgba(229, 168, 35, .26), rgba(229, 168, 35, 0)); }
.page-hero__body { position: relative; z-index: 2; }
.page-hero h1 { font-size: clamp(2rem, 4.2vw, 3.3rem); margin-bottom: .35em; max-width: 900px; }
.page-hero .lead { color: #dbe6ef; max-width: 780px; margin: 0; }
.crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: .87rem; margin-bottom: 18px; color: #c8d6e2; }
.crumbs a { color: var(--gold-l); text-decoration: none; }
.crumbs a:hover { text-decoration: underline; color: var(--white); }

/* About collage */
.about-collage__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 6vw, 80px); align-items: center; }
.about-collage__media { position: relative; padding: 0 12% 16% 0; }
.about-collage__a { aspect-ratio: 4 / 4.6; overflow: hidden; border-radius: var(--radius); }
.about-collage__a img, .about-collage__b img { width: 100%; height: 100%; object-fit: cover; }
.about-collage__b { position: absolute; right: 0; bottom: 0; width: 60%; aspect-ratio: 5 / 4.2; overflow: hidden; border-radius: var(--radius); border: 8px solid var(--white); box-shadow: var(--shadow); }
.about-collage__badge { position: absolute; right: 8%; top: 38%; background: var(--navy); color: var(--white); padding: 18px 22px; border-radius: var(--radius); max-width: 190px; z-index: 2; border-left: 4px solid var(--gold); }
.about-collage__badge b { display: block; font-size: 2rem; line-height: 1; color: var(--gold-l); margin-bottom: 6px; }
.about-collage__badge span { font-size: .85rem; line-height: 1.35; display: block; }
.about-collage__media .sun { right: 2%; top: 0; }
.mini-features { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 22px 0; }
.mini-features > div { display: flex; align-items: center; gap: 12px; }
.mini-features b { color: var(--navy); line-height: 1.3; }

/* Photo cards */
.photo-cards { position: relative; z-index: 2; margin-bottom: -120px; padding-top: 10px; }
.photo-cards__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.photo-card { display: block; text-decoration: none; color: var(--navy); }
.photo-card__media { display: block; position: relative; aspect-ratio: 16 / 10; overflow: hidden; border-radius: var(--radius) var(--radius) 0 0; }
.photo-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.photo-card:hover img { transform: scale(1.05); }
.photo-card__icon { position: absolute; right: 16px; bottom: 16px; display: grid; place-items: center; width: 52px; height: 52px; background: var(--gold); color: var(--navy-d); font-size: 1.2rem; border-radius: var(--radius); }
.photo-card strong { display: block; width: 92%; margin: -22px auto 0; position: relative; background: var(--white); padding: 20px 18px; text-align: center; line-height: 1.35; box-shadow: var(--shadow); border-radius: var(--radius); }
.photo-cards + .services-grid { padding-top: 200px; }

/* Services grid */
.services-grid__list { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(255px, 1fr)); }
.svc { display: flex; flex-direction: column; text-decoration: none; color: inherit; transition: transform .25s, box-shadow .25s, border-color .25s; }
.svc:hover { transform: translateY(-5px); }
.svc__icon { font-size: 1.45rem; }
.svc__body { display: flex; flex-direction: column; flex: 1; gap: 8px; }
.svc__title { font-size: 1.1rem; line-height: 1.3; color: var(--navy); }
.svc__text { font-size: .95rem; line-height: 1.55; color: var(--muted); }
.svc__link { margin-top: auto; padding-top: 10px; font-size: .9rem; font-weight: 700; color: var(--blue); }
.is-cards .svc { background: var(--white); padding: 30px 26px; border: 1px solid var(--line); border-radius: var(--radius); border-top: 3px solid var(--navy); }
.is-cards .svc:hover { box-shadow: var(--shadow); border-top-color: var(--gold); }
.is-cards .svc__icon { display: grid; place-items: center; width: 56px; height: 56px; margin-bottom: 18px; border-radius: 50%; background: rgba(20, 85, 138, .09); color: var(--blue); }
/* Notched cards */
.is-notched .services-grid__list { grid-template-columns: repeat(4, 1fr); gap: 46px 18px; padding-top: 36px; }
.is-notched .svc { position: relative; background: var(--navy-d); text-align: center; padding: 58px 22px 28px; border-radius: var(--radius); align-items: center; }
.is-notched .svc__icon { position: absolute; top: -34px; display: grid; place-items: center; width: 72px; height: 72px; background: var(--navy-d); border-radius: 50%; color: var(--gold-l); font-size: 1.55rem; box-shadow: 0 0 0 5px var(--navy); transition: .25s; }
.is-notched .svc:hover .svc__icon { background: var(--gold); color: var(--navy-d); }
.is-notched .svc__title { color: var(--white); }
.is-notched .svc__text { color: #a9bccd; }
.is-notched .svc__link { color: var(--gold-l); }
/* Bento */
.is-bento .services-grid__list { grid-template-columns: repeat(4, 1fr); }
.is-bento .svc { background: var(--white); border: 1px solid var(--line); border-radius: 12px; padding: 26px; position: relative; overflow: hidden; }
.is-bento .svc:hover { box-shadow: var(--shadow); }
.is-bento .svc__icon { color: var(--blue); font-size: 1.5rem; margin-bottom: 14px; }
.is-bento .svc:first-child { grid-column: span 2; grid-row: span 2; background: var(--navy); border-color: var(--navy); padding: 0; min-height: 420px; }
.is-bento .svc:first-child .svc__img { display: block; height: 52%; overflow: hidden; }
.is-bento .svc:first-child .svc__img img { width: 100%; height: 100%; object-fit: cover; }
.is-bento .svc:first-child .svc__icon { position: absolute; top: 18px; left: 18px; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 10px; margin: 0; background: var(--gold); color: var(--navy-d); }
.is-bento .svc:first-child .svc__body { padding: 26px 28px 30px; }
.is-bento .svc:first-child .svc__title { color: var(--white); font-size: 1.45rem; }
.is-bento .svc:first-child .svc__text { color: #c9d7e3; font-size: 1rem; }
.is-bento .svc:first-child .svc__link { color: var(--gold-l); }
.is-bento .svc:not(:first-child) .svc__img { display: none; }
.is-bento .svc:last-child { grid-column: span 2; }
/* Tiles */
.is-tiles .services-grid__list { grid-template-columns: repeat(4, 1fr); gap: 16px; }
.is-tiles .svc { position: relative; aspect-ratio: 3 / 4; overflow: hidden; border-radius: var(--radius); justify-content: flex-end; color: var(--white); background: var(--navy); }
.is-tiles .svc__img, .is-tiles .svc__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.is-tiles .svc:hover img { transform: scale(1.06); }
.is-tiles .svc::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(7, 31, 56, 0) 35%, rgba(7, 31, 56, .94)); }
.is-tiles .svc__body { position: relative; z-index: 1; padding: 22px; flex: none; }
.is-tiles .svc__title { color: var(--white); }
.is-tiles .svc__text { color: #d4dfe8; font-size: .88rem; }
.is-tiles .svc__link { color: var(--gold-l); }
/* Slider: photo tiles in a scroll-snap track; arrows and dots come from theme.js */
.is-slider .services-grid__list { --v: 4; display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
.is-slider .services-grid__list::-webkit-scrollbar { display: none; }
.is-slider .svc { flex: 0 0 calc((100% - (var(--v) - 1) * 16px) / var(--v)); scroll-snap-align: start; }
.is-slider .svc:hover { transform: none; }
.carousel-nav { display: flex; align-items: center; justify-content: center; gap: 18px; margin-top: 28px; }
.carousel-nav[hidden] { display: none; }
.carousel-nav button[data-prev], .carousel-nav button[data-next] { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--line); background: var(--white); color: var(--navy); cursor: pointer; transition: .2s; }
.carousel-nav button[data-prev]:hover, .carousel-nav button[data-next]:hover { background: var(--navy); border-color: var(--navy); color: var(--white); }
.carousel-dots { display: flex; gap: 2px; }
.carousel-dots button { width: 26px; height: 24px; padding: 0; border: 0; background: none; cursor: pointer; }
.carousel-dots button::before { content: ""; display: block; height: 4px; border-radius: 2px; background: var(--line); transition: background-color .2s; }
.carousel-dots button:hover::before { background: var(--blue); }
.carousel-dots button[aria-current="true"]::before { background: var(--navy); }

/* Gold CTA panel */
.cta-panel-wrap { position: relative; background: linear-gradient(180deg, var(--navy) 50%, var(--white) 50%); }
.bg-mist + .cta-panel-wrap, .bg-white + .cta-panel-wrap { background: var(--white); }
.cta-panel { display: grid; grid-template-columns: auto 1fr auto; gap: 40px; align-items: center; padding: clamp(32px, 4vw, 54px) clamp(26px, 5vw, 70px); border-radius: var(--radius); color: var(--navy-d); background: linear-gradient(100deg, var(--gold) 0%, var(--gold-l) 78%, #f0b24a 100%); }
.cta-panel__img { width: 170px; height: 170px; border-radius: 50%; overflow: hidden; border: 6px solid rgba(255, 255, 255, .6); }
.cta-panel__img img { width: 100%; height: 100%; object-fit: cover; }
.cta-panel h2 { font-size: clamp(1.5rem, 2.6vw, 2.1rem); color: var(--navy-d); margin-bottom: .4em; }
.cta-panel h2 em { color: var(--navy-d); box-shadow: inset 0 -.18em 0 rgba(255, 255, 255, .6); }
.cta-panel p { margin: 0 0 .7em; }
.cta-panel .checks { margin: 0; gap: 6px; }
.cta-panel .checks .icon { color: var(--navy); }

/* Diagonal banner */
.cta-banner { position: relative; background: var(--navy-d); color: var(--white); padding-block: clamp(70px, 9vw, 120px); overflow: hidden; }
.cta-banner__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .36; }
.cta-banner__slash { position: absolute; top: -20%; left: 6%; width: 190px; height: 140%; transform: rotate(32deg); background: linear-gradient(180deg, rgba(229, 168, 35, .55), rgba(229, 168, 35, .12)); }
.cta-banner__grid { position: relative; display: grid; grid-template-columns: 1.4fr 1fr; gap: 50px; align-items: center; }
.cta-banner h2 { color: var(--white); }
.cta-banner .lead { color: #d3e0ea; margin-bottom: 28px; }
.cta-banner__figures { display: grid; gap: 12px; justify-items: end; }
.cta-banner__figures > div { width: min(100%, 300px); padding: 22px 26px; border-radius: var(--radius); background: var(--blue); }
.cta-banner__figures > div:first-child { background: var(--gold); color: var(--navy-d); }
.cta-banner__figures b { display: block; font-size: 2.1rem; line-height: 1.1; }
.cta-banner__figures span { font-size: .92rem; line-height: 1.35; display: block; margin-top: 4px; }

/* Logos */
.logo-strip { padding-block: clamp(36px, 4vw, 56px); }
.logo-strip .section-head { margin-bottom: 26px; }
.logo-strip .section-head:has(h2) { margin-bottom: 36px; }
.hero-split + .logo-strip { padding-top: 16px; }
.logo-strip__list { --v: 6; list-style: none; margin: 0; padding: 4px 0; display: flex; align-items: center; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
.logo-strip__list::-webkit-scrollbar { display: none; }
.logo-strip__list li { flex: 0 0 calc((100% - (var(--v) - 1) * 16px) / var(--v)); display: grid; place-items: center; height: 92px; padding-inline: 12px; scroll-snap-align: start; }
/* Centres a row that fits, and still scrolls from the first logo when it doesn't. */
.logo-strip__list li:first-child { margin-left: auto; }
.logo-strip__list li:last-child { margin-right: auto; }
.logo-strip__list a { display: grid; place-items: center; width: 100%; height: 100%; }
.logo-strip__list img { max-width: 100%; max-height: 84px; width: auto; height: auto; object-fit: contain; filter: saturate(.9); transition: filter .25s, transform .25s; }
.logo-strip__list li:hover img { filter: none; transform: translateY(-3px) scale(1.04); }
.bg-navy .logo-strip__list li { background: var(--white); border-radius: 8px; }

/* Text + media */
.text-media__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 6vw, 80px); align-items: center; }
.is-left .text-media__media { order: -1; }
.text-media__media { position: relative; }
.text-media__media::before { content: ""; position: absolute; right: -16px; bottom: -16px; width: 62%; height: 62%; border: 3px solid var(--gold); border-radius: var(--radius); z-index: 0; }
.is-left .text-media__media::before { right: auto; left: -16px; }
.text-media__media img { position: relative; z-index: 1; width: 100%; aspect-ratio: 5 / 4; object-fit: cover; border-radius: var(--radius); }

/* Cards */
.card-grid { --n: 3; display: flex; flex-wrap: wrap; justify-content: center; gap: 22px; }
.cols-2 { --n: 2; }
.cols-3 { --n: 3; }
.cols-4 { --n: 4; }
.cols-5 { --n: 5; }
.card-grid > * { flex: 0 1 calc((100% - (var(--n) - 1) * 22px) / var(--n)); min-width: 0; }
.cols-5 .card { padding: 24px 20px; }
.card { background: var(--white); padding: 30px 28px; border: 1px solid var(--line); border-radius: var(--radius); transition: box-shadow .25s, transform .25s; }
.card:hover { box-shadow: var(--shadow); transform: translateY(-3px); }
.card h3 { margin-top: 16px; color: var(--navy); }
.card p { margin: 0 0 .6em; color: var(--muted); font-size: .97rem; line-height: 1.6; }
.bg-navy .card { background: rgba(255, 255, 255, .05); border-color: rgba(255, 255, 255, .13); }
.bg-navy .card h3 { color: var(--white); }
.bg-navy .card p { color: #c3d2df; }
.doc { display: flex; gap: 18px; }
.doc h3 { margin-top: 0; }
.doc small { display: block; color: var(--muted); margin-bottom: 10px; }

/* Steps */
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 26px; counter-reset: none; }
.steps li { position: relative; padding-top: 22px; border-top: 3px solid var(--navy); }
.steps__n { display: block; font-size: 2.2rem; font-weight: 800; line-height: 1; color: var(--gold); margin-bottom: 12px; }
.steps h3 { color: var(--navy); }
.steps p { margin: 0; color: var(--muted); font-size: .97rem; line-height: 1.6; }
.bg-navy .steps li { border-top-color: var(--gold); }
.bg-navy .steps h3 { color: var(--white); }
.bg-navy .steps p { color: #c3d2df; }

/* Stats */
.stats-row { padding-block: clamp(40px, 5vw, 64px); }
.stats-row__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 24px; text-align: center; }
.stats-row b { display: block; font-size: clamp(2.2rem, 4vw, 3.1rem); line-height: 1.1; font-weight: 800; color: var(--navy); }
.bg-navy.stats-row b { color: var(--gold-l); }
.stats-row span { font-size: .95rem; font-weight: 600; color: var(--muted); }
.bg-navy.stats-row span { color: #c9d7e3; }

/* FAQ */
.faq__grid { display: grid; grid-template-columns: 1fr 1.6fr; gap: clamp(30px, 5vw, 70px); align-items: start; }
.faq .section-head { display: block; position: sticky; top: 110px; margin: 0; }
.faq .section-intro { margin-top: 14px; }
.faq__item, .catalog__group { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); margin-bottom: 12px; }
.faq__item[open], .catalog__group[open] { border-color: rgba(11, 47, 82, .35); box-shadow: var(--shadow); }
.faq summary, .catalog summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 22px; font-weight: 700; color: var(--navy); line-height: 1.35; }
.faq summary::-webkit-details-marker, .catalog summary::-webkit-details-marker { display: none; }
.faq summary i, .catalog summary i { flex: none; position: relative; width: 14px; height: 14px; }
.faq summary i::before, .faq summary i::after, .catalog summary i::before, .catalog summary i::after { content: ""; position: absolute; left: 0; top: 6px; width: 14px; height: 2px; background: var(--gold); transition: transform .2s; }
.faq summary i::after, .catalog summary i::after { transform: rotate(90deg); }
details[open] > summary i::after { transform: none; }
.faq__item .prose { padding: 0 22px 16px; color: var(--muted); }

/* Catalog */
.catalog summary span { flex: 1; }
.catalog summary small { flex: none; display: grid; place-items: center; min-width: 30px; height: 26px; padding-inline: 8px; background: var(--mist); color: var(--navy); border-radius: 99px; font-size: .8rem; }
.catalog__body { padding: 0 22px 20px; }
.catalog__body > p { color: var(--muted); margin: 0 0 12px; }
.table-scroll { overflow-x: auto; }
.catalog table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.catalog th { text-align: left; color: var(--white); background: var(--navy); padding: 10px 14px; font-size: .84rem; white-space: nowrap; }
.catalog td { padding: 10px 14px; border-bottom: 1px solid var(--line); }
.catalog td:not(:first-child) { white-space: nowrap; color: var(--muted); }
.catalog tbody tr:hover { background: var(--mist); }

/* Contact */
.contact-section__grid { display: grid; grid-template-columns: 1fr 1.15fr; gap: clamp(36px, 5vw, 70px); }
.contact-section__grid > * { min-width: 0; }
.contact-details { list-style: none; margin: 28px 0 0; padding: 0; display: grid; gap: 18px; }
.contact-details li { display: flex; gap: 14px; align-items: center; }
.contact-details small { display: block; color: var(--muted); font-size: .84rem; }
.contact-details a, .contact-details span:not(.icon-disc) { font-weight: 700; color: var(--navy); text-decoration: none; line-height: 1.4; }
.contact-form { background: var(--mist); padding: clamp(24px, 3vw, 40px); border-radius: var(--radius); border-top: 4px solid var(--gold); }
.contact-form h3 { font-size: 1.4rem; color: var(--navy); }
.contact-form label { display: block; font-weight: 600; font-size: .92rem; color: var(--navy); margin-bottom: 14px; }
.contact-form input:not([type="submit"]):not([type="checkbox"]), .contact-form textarea, .contact-form select { display: block; width: 100%; margin-top: 6px; padding: 12px 14px; font: inherit; font-weight: 400; color: var(--ink); background: var(--white); border: 1px solid var(--line); border-radius: 4px; }
.contact-form input:focus, .contact-form textarea:focus { outline: 2px solid var(--blue); outline-offset: 1px; }
.contact-form textarea { height: 150px; resize: vertical; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; }
.contact-form .wpcf7-submit { background: var(--navy); color: var(--white); padding: 15px 34px; border: 0; border-radius: var(--radius); font: inherit; font-weight: 700; cursor: pointer; margin-top: 10px; }
.contact-form .wpcf7-submit:hover { background: var(--blue); }
.contact-form .wpcf7-acceptance label { font-weight: 400; font-size: .86rem; margin: 0; }
.contact-form .wpcf7-list-item { margin: 0; }
.h-captcha { margin: 10px 0; }
.wpcf7-not-valid-tip { font-size: .84rem; color: #b3261e; }
.wpcf7 form .wpcf7-response-output { margin: 14px 0 0; padding: 10px 14px; border-radius: 4px; font-size: .92rem; }
.contact-map { margin-top: clamp(40px, 5vw, 70px); }
.contact-map iframe { display: block; width: 100%; height: 400px; border: 0; }
.contact-section { padding-bottom: 0; }

/* Footer */
.site-footer { background: var(--navy-d); color: #b9c9d7; font-size: .95rem; }
.footer-grid { display: grid; grid-template-columns: 1.5fr 1fr 1.2fr 1.2fr; gap: 42px; padding-block: 70px 50px; }
.footer-logo { display: inline-block; background: var(--white); padding: 8px 14px; border-radius: 6px; margin-bottom: 18px; }
.footer-logo img { width: 190px; }
.footer-about p { margin: 0 0 16px; line-height: 1.65; }
.footer-title { font-size: 1.05rem; color: var(--white); margin: 0 0 18px; font-weight: 700; padding-bottom: 12px; border-bottom: 2px solid rgba(229, 168, 35, .7); display: inline-block; }
.footer-links, .footer-contact, .footer-legal { list-style: none; margin: 0; padding: 0; }
.footer-links li { margin-bottom: 9px; }
.site-footer a { color: inherit; text-decoration: none; }
.site-footer a:hover { color: var(--gold-l); }
.footer-contact li { display: flex; gap: 10px; margin-bottom: 12px; line-height: 1.45; }
.footer-contact .icon { color: var(--gold-l); margin-top: 3px; }
.site-footer .social { gap: 10px; }
.site-footer .social a { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: rgba(255, 255, 255, .08); }
.site-footer .social a:hover { background: var(--gold); color: var(--navy-d); }
.footer-bottom { border-top: 1px solid rgba(255, 255, 255, .1); padding-block: 18px; font-size: .87rem; }
.footer-bottom .wrap { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 26px; }
.footer-legal { display: flex; flex-wrap: wrap; gap: 20px; }

/* Search, posts */
.result-list { list-style: none; padding: 0; }
.result-list li { padding: 18px 0; border-bottom: 1px solid var(--line); }
.result-list p { margin: 4px 0 0; color: var(--muted); }
.wp-block-post-title { max-width: 820px; margin: 60px auto 20px; padding-inline: 20px; }

/* Reveal (added by JS only, so content is never hidden without it) */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .7s ease, transform .7s ease; }
.reveal.is-in { opacity: 1; transform: none; }
.reveal-item { opacity: 0; transform: translateY(18px); transition: opacity .6s ease var(--d, 0s), transform .6s ease var(--d, 0s), box-shadow .25s, border-color .25s; }
.reveal-item.is-in { opacity: 1; transform: none; }
/* Once shown, hover lifts must not wait for the entrance delay. */
.reveal-item.is-done { transition: opacity .25s, transform .25s, box-shadow .25s, border-color .25s; }

/* Soft animations */
.reveal .eyebrow::before { width: 0; transition: width .6s ease .25s; }
.reveal.is-in .eyebrow::before { width: 24px; }
.btn:hover { transform: translateY(-2px); }
.card .icon-disc, .svc__icon { transition: background-color .25s, color .25s, transform .25s; }
.card:hover .icon-disc { background: var(--navy); color: var(--gold-l); transform: scale(1.06); }
.is-cards .svc:hover .svc__icon { background: var(--navy); color: var(--gold-l); }
.svc__link span, .link-arrow .icon { display: inline-block; transition: transform .22s; }
.svc:hover .svc__link span { transform: translateX(5px); }
.text-media__media img, .about-collage__a img, .about-collage__b img { transition: transform .6s ease; }
.text-media__media:hover img { transform: scale(1.015); }
.about-collage__a { overflow: hidden; }
.about-collage__a:hover img, .about-collage__b:hover img { transform: scale(1.04); }
.steps li { transition: border-color .25s, transform .25s; }
.steps li:hover { border-top-color: var(--gold); transform: translateY(-3px); }
.faq summary, .catalog summary { transition: color .2s; }
.faq summary:hover, .catalog summary:hover { color: var(--blue); }
details[open] > .prose, details[open] > .catalog__body { animation: se-open .35s ease; }
.hero-slide.is-active .hero-slide__img { animation: se-zoom 14s ease-out forwards; }
.hero-slide.is-active .hero-slide__body > * { animation: se-rise .75s ease both; }
.hero-slide.is-active .hero-slide__body > *:nth-child(2) { animation-delay: .12s; }
.hero-slide.is-active .hero-slide__body > *:nth-child(3) { animation-delay: .24s; }
.hero-slide.is-active .hero-slide__body > *:nth-child(4) { animation-delay: .36s; }
.hero-split__text > * { animation: se-rise .75s ease both; }
.hero-split__text > *:nth-child(2) { animation-delay: .1s; }
.hero-split__text > *:nth-child(3) { animation-delay: .2s; }
.hero-split__text > *:nth-child(4) { animation-delay: .3s; }
.hero-split__text > *:nth-child(5) { animation-delay: .4s; }
.hero-split__frame { animation: se-rise .9s ease .15s both; }
.sun { animation: se-float 7s ease-in-out infinite; }
.float-card { animation: se-float 6s ease-in-out infinite; }
@keyframes se-rise { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
@keyframes se-zoom { from { transform: scale(1.001); } to { transform: scale(1.07); } }
@keyframes se-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-9px); } }
@keyframes se-open { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

@media (max-width: 1280px) {
	.site-header { grid-template-columns: 200px 1fr; }
	.hd-top__text { display: none; }
	.hd-top { justify-content: flex-end; }
	.nav { gap: 20px; }
	.nav a { font-size: .9rem; }
	.hd-phone__txt { display: none; }
	.is-bento .services-grid__list, .is-tiles .services-grid__list, .is-notched .services-grid__list { grid-template-columns: repeat(3, 1fr); }
	.is-bento .svc:last-child { grid-column: auto; }
	.is-slider .services-grid__list { --v: 3; }
}
@media (max-width: 1080px) {
	.site-header { grid-template-columns: 170px 1fr; }
	.hd-top { display: none; }
	.hd-nav { justify-content: flex-end; min-height: 66px; padding: 0 18px; }
	.nav-wrap { display: none; position: absolute; left: 0; right: 0; top: 100%; background: var(--white); max-height: calc(100vh - 80px); overflow-y: auto; box-shadow: var(--shadow); padding: 8px 20px 20px; }
	.is-open .nav-wrap { display: block; }
	.nav { display: block; }
	.nav a { padding: 13px 0; border-bottom: 1px solid var(--line); justify-content: space-between; }
	.nav > .current-menu-item > a, .nav > .current-menu-ancestor > a { box-shadow: none; }
	.nav .sub-menu { display: none; position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; padding: 0 0 0 14px; min-width: 0; }
	.nav .is-sub-open > .sub-menu { display: block; }
	.burger { display: block; }
	.flat-bar { min-height: 68px; justify-content: space-between; }
	.is-flat .brand { width: 140px; }
	.is-flat .nav-wrap { display: none; flex: none; }
	.is-flat.is-open .nav-wrap { display: block; }
	.is-flat .nav > li > a { padding: 13px 0; }
	.is-flat .nav > li > a::after { display: none; }
	.section-head { grid-template-columns: 1fr; }
	.hero-split__grid, .about-collage__grid, .text-media__grid, .faq__grid, .contact-section__grid, .cta-banner__grid { grid-template-columns: 1fr; }
	.is-left .text-media__media { order: 0; }
	.faq .section-head { position: static; }
	.cta-banner__figures { justify-items: start; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
	.cta-banner__figures > div { width: auto; }
	.cta-panel { grid-template-columns: 1fr; text-align: left; }
	.footer-grid { grid-template-columns: 1fr 1fr; }
	.cols-3, .cols-4, .cols-5 { --n: 2; }
	.is-slider .services-grid__list { --v: 2; }
	.logo-strip__list { --v: 4; }
	.float-card { left: 0; }
	.hero-split__media::before { left: 0; }
	.is-bento .services-grid__list, .is-tiles .services-grid__list, .is-notched .services-grid__list { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }
@media (max-width: 640px) {
	.site-header { grid-template-columns: 136px 1fr; }
	.brand { padding: 6px 10px; }
	.hd-tools { gap: 8px; }
	.hd-search form { position: fixed; left: 16px; right: 16px; width: auto; top: 80px; }
	.hd-phone { display: none; }
	.is-flat .btn { display: none; }
	.is-flat .brand { width: 120px; }
	.photo-cards__grid, .footer-grid, .mini-features, .field-row { grid-template-columns: 1fr; }
	.cols-2, .cols-3, .cols-4, .cols-5 { --n: 1; }
	.is-slider .services-grid__list { --v: 1.12; }
	.logo-strip__list { --v: 2; }
	.contact-form { padding: 22px 14px; }
	.h-captcha { transform: scale(.88); transform-origin: left top; height: 70px; }
	.is-bento .services-grid__list, .is-tiles .services-grid__list, .is-notched .services-grid__list { grid-template-columns: 1fr; }
	.is-bento .svc:first-child { grid-column: auto; grid-row: auto; }
	.is-tiles .svc { aspect-ratio: 4 / 3.4; }
	.photo-cards { margin-bottom: -70px; }
	.photo-cards + .services-grid { padding-top: 130px; }
	.float-card { left: 0; right: 10px; bottom: 0; }
	.hero-split__media { padding-right: 10px; }
	.hero-split__media .sun { width: 90px; height: 90px; }
	.hero-arrows { display: none; }
	.about-collage__badge { top: auto; right: auto; left: 0; bottom: 0; }
	.btn { width: 100%; }
	.cta-panel__img { width: 120px; height: 120px; }
}
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	* { transition: none !important; animation: none !important; }
}
