@font-face {
font-family: "UbuntuLocal";
src: url("fonts/ubuntu.woff") format("woff");
font-display: swap;
}

@font-face {
font-family: "OswaldLocal";
src: url("fonts/oswald.woff") format("woff");
font-display: swap;
}

@font-face {
font-family: "FontAwesome";
src: url("fonts/fontawesome-webfont.woff") format("woff");
font-weight: normal;
font-style: normal;
font-display: block;
}

:root {
--site-max: 1900px;
--container: 1900px;
--ink: #182331;
--muted: #657282;
--white: #ffffff;
--paper: #f3f7fb;
--paper-2: #e5edf4;
--steel: #243f5d;
--steel-dark: #13263a;
--gold: #2f6f9f;
--gold-dark: #183f61;
--clay: #245f8c;
--rust: #4d87ad;
--line: #d3dee8;
--blue-light: #b7dff7;
--blue-soft: #edf5fb;
--shadow: 0 18px 45px rgba(15, 18, 22, 0.18);
--radius: 8px;
}

* {
box-sizing: border-box;
}

html {
scroll-behavior: smooth;
}

body {
margin: 0;
color: var(--ink);
background: #102033 url("images/bg.jpg") center top / 900px auto fixed;
font-family: UbuntuLocal, Arial, Helvetica, sans-serif;
font-size: 16px;
line-height: 1.65;
}

img,
iframe {
max-width: 100%;
}

img {
display: block;
height: auto;
}

a {
color: var(--clay);
text-decoration: none;
}

a:hover,
a:focus {
color: var(--gold-dark);
}

p,
h1,
h2,
h3,
li,
address {
overflow-wrap: break-word;
}

.skip-link {
position: absolute;
left: 1rem;
top: -5rem;
z-index: 20;
padding: 0.65rem 1rem;
border-radius: var(--radius);
background: var(--gold);
color: var(--white);
font-weight: 900;
transition: top 0.2s ease;
}

.skip-link:focus {
top: 1rem;
}

.site-shell {
width: 100%;
max-width: var(--site-max);
margin-inline: auto;
background: var(--paper);
box-shadow: 0 0 70px rgba(0, 0, 0, 0.32);
}

.container {
width: 100%;
max-width: var(--container);
margin-inline: auto;
padding-inline: clamp(1rem, 3vw, 2.5rem);
}

.fa {
display: inline-block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

.fa-home::before { content: "\f015"; }
.fa-phone::before { content: "\f095"; }
.fa-envelope-o::before { content: "\f003"; }
.fa-map-marker::before { content: "\f041"; }
.fa-clock-o::before { content: "\f017"; }
.fa-wrench::before { content: "\f0ad"; }
.fa-shield::before { content: "\f132"; }
.fa-star::before { content: "\f005"; }
.fa-exclamation-triangle::before { content: "\f071"; }
.fa-check::before { content: "\f00c"; }
.fa-caret-right::before { content: "\f0da"; }
.fa-chevron-left::before { content: "\f053"; }
.fa-chevron-right::before { content: "\f054"; }
.fa-building-o::before { content: "\f0f7"; }
.fa-university::before { content: "\f19c"; }
.fa-fax::before { content: "\f1ac"; }
.fa-file-pdf-o::before { content: "\f1c1"; }
.fa-external-link::before { content: "\f08e"; }
.fa-quote-left::before { content: "\f10d"; }
.fa-arrow-circle-up::before { content: "\f0aa"; }
.fa-facebook::before { content: "\f09a"; }
.fa-google::before { content: "\f1a0"; }
.fa-users::before { content: "\f0c0"; }
.fa-cogs::before { content: "\f085"; }
.fa-road::before { content: "\f018"; }
.fa-camera::before { content: "\f030"; }
.fa-certificate::before { content: "\f0a3"; }
.fa-cc-visa::before { content: "\f1f0"; }
.fa-cc-mastercard::before { content: "\f1f1"; }
.fa-cc-discover::before { content: "\f1f2"; }

.fa-check {
padding-right: 3px;
}

.hero-card .fa-check + span,
.check-list .fa-check + span,
.icon-list .fa-check + span {
padding-left: 3px;
}

.icon-link,
.main-nav a,
.button,
.footer-list a,
.contact-line,
.js-email {
display: inline-flex;
align-items: center;
min-width: 0;
}

.icon-link .fa,
.main-nav .fa,
.button .fa,
.footer-list .fa,
.contact-line .fa,
.js-email .fa {
flex: 0 0 auto;
}

.icon-link .fa + span,
.main-nav .fa + span,
.button .fa + span,
.footer-list .fa + span,
.contact-line .fa + span,
.js-email .fa + .email-text {
margin-left: 0.42rem;
}

.top-bar {
background: linear-gradient(90deg, var(--steel-dark), var(--steel));
color: rgba(255, 255, 255, 0.88);
font-size: 0.88rem;
}

.top-bar__inner {
min-height: 38px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
flex-wrap: wrap;
}

.top-bar a {
color: var(--white);
font-weight: 800;
}

.top-bar__group {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
}

.site-header {
background: rgba(255, 255, 255, 0.96);
position: relative;
z-index: 10;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
}

.nav-row {
min-height: 104px;
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 1.5rem;
}

.brand {
display: inline-block;
color: var(--steel-dark);
max-width: min(430px, 100%);
}

.brand img {
width: min(430px, 100%);
max-height: 128px;
object-fit: contain;
}

.brand > span {
display: none !important;
}

.brand strong {
display: block;
font-family: OswaldLocal, Impact, sans-serif;
font-size: clamp(1.35rem, 2.1vw, 2.2rem);
line-height: 1;
letter-spacing: 0.01em;
text-transform: uppercase;
}

.brand span {
display: block;
color: var(--muted);
font-size: 0.82rem;
font-weight: 800;
line-height: 1.2;
min-width: 0;
}

.main-nav {
display: flex;
align-items: center;
justify-content: center;
gap: clamp(0.45rem, 1vw, 0.9rem);
flex-wrap: wrap;
}

.main-nav a {
color: #30343a;
font-size: 0.88rem;
font-weight: 900;
padding: 0.35rem 0;
border-bottom: 3px solid transparent;
}

.main-nav a:hover,
.main-nav a:focus,
.main-nav a.is-active {
color: var(--steel);
border-color: var(--gold);
}

.header-cta {
white-space: nowrap;
}

.button {
justify-content: center;
min-height: 46px;
padding: 0.72rem 1.25rem;
border-radius: 999px;
border: 2px solid transparent;
font-weight: 900;
line-height: 1.1;
text-align: center;
transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
}

.button:hover,
.button:focus {
transform: translateY(-1px);
}

.button-primary {
background: var(--gold);
color: var(--white);
box-shadow: 0 12px 28px rgba(47, 111, 159, 0.28);
}

.button-primary:hover,
.button-primary:focus {
background: #245778;
color: var(--white);
}

.button-secondary {
background: var(--steel);
color: var(--white);
box-shadow: 0 12px 28px rgba(36, 63, 93, 0.24);
}

.button-secondary:hover,
.button-secondary:focus {
background: var(--steel-dark);
color: var(--white);
}

.button-outline {
background: rgba(255, 255, 255, 0.9);
border-color: rgba(47, 111, 159, 0.45);
color: var(--clay);
}

.hero {
position: relative;
background:
linear-gradient(90deg, rgba(11, 28, 46, 0.96), rgba(19, 38, 58, 0.74), rgba(19, 38, 58, 0.34)),
url("images/bg.jpg") center / cover;
color: var(--white);
overflow: hidden;
}

.hero .container {
min-height: clamp(560px, 58vw, 760px);
display: grid;
grid-template-columns: minmax(0, 0.95fr) minmax(320px, 0.75fr);
gap: clamp(2rem, 5vw, 5rem);
align-items: center;
padding-block: clamp(4rem, 7vw, 7rem);
}

.eyebrow {
margin: 0 0 0.7rem;
color: var(--gold);
font-size: 0.8rem;
font-weight: 900;
letter-spacing: 0.16em;
text-transform: uppercase;
}

.hero h1,
.page-hero h1,
.section-title {
font-family: OswaldLocal, Impact, sans-serif;
letter-spacing: 0.01em;
line-height: 1.03;
}

.hero h1 {
margin: 0;
font-size: clamp(3rem, 5.2vw, 5.65rem);
text-transform: uppercase;
overflow-wrap: normal;
word-break: normal;
}

.hero h1 span {
display: block;
}

.hero-tagline {
max-width: 760px;
margin: 0.75rem 0 0;
color: var(--blue-light);
font-size: clamp(1.05rem, 1.55vw, 1.35rem);
font-weight: 900;
}

.hero-copy {
max-width: 760px;
margin: 1.15rem 0 0;
font-size: clamp(1.05rem, 1.4vw, 1.28rem);
color: rgba(255, 255, 255, 0.88);
}

.hero-actions,
.section-actions {
display: flex;
flex-wrap: wrap;
gap: 0.85rem;
margin-top: 1.55rem;
}

.hero-card {
background: rgba(255, 255, 255, 0.94);
color: var(--ink);
border-radius: var(--radius);
padding: clamp(1.4rem, 3vw, 2rem);
box-shadow: var(--shadow);
}

.year-badge {
display: grid;
grid-template-columns: auto 1fr;
gap: 1rem;
align-items: center;
margin-bottom: 1.2rem;
}

.year-badge strong {
display: grid;
place-items: center;
width: 108px;
height: 108px;
border-radius: 999px;
background: linear-gradient(145deg, var(--gold), var(--steel));
color: var(--white);
font-family: OswaldLocal, Impact, sans-serif;
font-size: 3.5rem;
line-height: 1;
box-shadow: inset 0 0 0 7px rgba(255, 255, 255, 0.22);
}

.year-badge span {
display: block;
font-weight: 900;
font-size: 1.28rem;
line-height: 1.25;
}

.hero-card ul,
.check-list,
.icon-list {
list-style: none;
margin: 0;
padding: 0;
}

.hero-card li,
.check-list li,
.icon-list li {
display: grid;
align-items: start;
margin: 0.55rem 0;
}

.hero-card li {
grid-template-columns: 18px minmax(0, 1fr);
gap: 0.45rem;
}

.check-list li,
.icon-list li {
grid-template-columns: 0.55rem minmax(0, 1fr);
gap: 0.08rem;
}

.check-list .fa,
.icon-list .fa {
color: var(--clay);
margin-top: 0.28rem;
width: 0.55rem;
text-align: center;
}

.hero-card .fa {
color: var(--clay);
margin-top: 0.28rem;
width: 18px;
text-align: center;
}

.trust-band {
background: var(--steel-dark);
color: var(--white);
}

.trust-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 1px;
background: rgba(255, 255, 255, 0.12);
}

.trust-item {
background: var(--steel-dark);
padding: 1.2rem clamp(1rem, 2vw, 1.6rem);
display: grid;
grid-template-columns: 44px 1fr;
gap: 0.85rem;
align-items: center;
}

.trust-item .fa {
width: 44px;
height: 44px;
border-radius: 999px;
display: grid;
place-items: center;
background: rgba(183, 223, 247, 0.16);
color: var(--blue-light);
font-size: 1.25rem;
}

.trust-item strong {
display: block;
line-height: 1.2;
}

.trust-item span {
display: block;
color: rgba(255, 255, 255, 0.72);
font-size: 0.9rem;
line-height: 1.35;
}

.section {
padding: clamp(3rem, 6vw, 5.5rem) 0;
}

.section-white {
background: var(--white);
}

.section-paper {
background: var(--paper);
}

.section-steel {
background: var(--steel);
color: rgba(255, 255, 255, 0.86);
}

.section-title {
margin: 0 0 1rem;
color: var(--steel-dark);
font-size: clamp(2.25rem, 4vw, 4.1rem);
text-transform: uppercase;
}

.section-steel .section-title {
color: var(--white);
}

.section-intro {
max-width: 850px;
margin: 0 0 2rem;
color: var(--muted);
font-size: 1.06rem;
}

.section-steel .section-intro {
color: rgba(255, 255, 255, 0.72);
}

.card-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 1rem;
}

.card,
.panel,
.review-panel,
.contact-card {
background: var(--white);
border: 1px solid var(--line);
border-radius: var(--radius);
box-shadow: 0 14px 34px rgba(30, 30, 30, 0.08);
}

.card {
display: flex;
flex-direction: column;
min-height: 100%;
overflow: hidden;
}

.card img {
width: 100%;
aspect-ratio: 4 / 3;
object-fit: cover;
background: var(--paper-2);
}

.card-body {
padding: 1.25rem;
display: flex;
flex-direction: column;
gap: 0.85rem;
flex: 1;
}

.card h2,
.card h3,
.panel h2,
.panel h3,
.contact-card h2 {
margin: 0;
font-family: OswaldLocal, Impact, sans-serif;
line-height: 1.1;
color: var(--steel-dark);
font-size: 1.55rem;
}

.card p,
.panel p,
.contact-card p {
margin: 0;
color: var(--muted);
}

.text-link {
margin-top: auto;
font-weight: 900;
color: var(--clay);
}

.split {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(320px, 0.72fr);
gap: clamp(1.5rem, 4vw, 4rem);
align-items: center;
}

.split.reverse {
grid-template-columns: minmax(320px, 0.72fr) minmax(0, 1fr);
}

.copy p {
margin: 0 0 1rem;
}

.copy p:last-child {
margin-bottom: 0;
}

.copy strong {
color: var(--steel-dark);
}

.media-frame {
border-radius: var(--radius);
overflow: hidden;
box-shadow: var(--shadow);
background: var(--steel-dark);
}

.media-frame img {
width: 100%;
height: 100%;
object-fit: cover;
}

.owner-card {
position: relative;
background: linear-gradient(145deg, #fff, var(--blue-soft));
border: 1px solid var(--line);
border-radius: var(--radius);
box-shadow: var(--shadow);
padding: clamp(1.25rem, 3vw, 2rem);
color: #000;
}

.owner-card h2,
.owner-card p,
.owner-card strong {
color: #000;
}

.owner-card p {
font-style: italic;
}

.owner-card img {
width: min(220px, 48%);
float: right;
margin: 0 0 1rem 1rem;
border-radius: var(--radius);
border: 4px solid var(--white);
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
}

.quote-mark {
color: var(--gold);
font-size: 2.5rem;
line-height: 1;
}

.service-area {
background: linear-gradient(135deg, var(--steel), var(--steel-dark));
color: var(--white);
border-radius: var(--radius);
padding: clamp(1.4rem, 3vw, 2.2rem);
box-shadow: var(--shadow);
}

.service-area p {
color: rgba(255, 255, 255, 0.78);
}

.badge-row {
display: flex;
flex-wrap: wrap;
gap: 0.6rem;
margin-top: 1rem;
}

.badge {
display: inline-flex;
align-items: center;
gap: 0.35rem;
border-radius: 999px;
background: rgba(183, 223, 247, 0.16);
color: var(--blue-light);
font-weight: 900;
padding: 0.4rem 0.75rem;
font-size: 0.9rem;
}

.faq-list {
display: grid;
gap: 0.75rem;
max-width: 1100px;
}

.faq-item {
background: var(--white);
border: 1px solid var(--line);
border-radius: var(--radius);
box-shadow: 0 12px 28px rgba(24, 35, 49, 0.07);
overflow: hidden;
}

.faq-item summary {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 1rem 1.15rem;
color: var(--steel-dark);
font-weight: 900;
cursor: pointer;
list-style: none;
}

.faq-item summary::-webkit-details-marker {
display: none;
}

.faq-item summary .fa {
color: var(--clay);
transition: transform 0.18s ease;
}

.faq-item[open] summary .fa {
transform: rotate(90deg);
}

.faq-answer {
padding: 0 1.15rem 1rem;
}

.faq-answer p {
margin: 0;
color: var(--muted);
}

.service-areas-section {
position: relative;
}

.service-area-groups {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: clamp(1.2rem, 2vw, 1.8rem);
margin-top: 1.8rem;
}

.service-area-groups h3 {
margin: 0;
color: var(--steel-dark);
font-family: OswaldLocal, Impact, sans-serif;
font-size: clamp(1.5rem, 2.2vw, 2rem);
letter-spacing: 0.01em;
line-height: 1.1;
text-transform: uppercase;
}

.town-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 0.65rem;
margin-top: 0.8rem;
}

.town-grid span {
display: flex;
align-items: center;
min-height: 42px;
padding: 0.58rem 0.75rem;
border: 1px solid var(--line);
border-left: 4px solid var(--gold);
border-radius: var(--radius);
background: var(--white);
color: var(--steel-dark);
font-weight: 900;
box-shadow: 0 8px 18px rgba(24, 35, 49, 0.06);
}

.page-hero {
background:
linear-gradient(90deg, rgba(11, 28, 46, 0.96), rgba(19, 38, 58, 0.72)),
url("images/bg.jpg") center / cover;
color: var(--white);
padding: clamp(3.5rem, 7vw, 6rem) 0;
}

.page-hero .breadcrumb {
color: var(--gold);
font-weight: 900;
font-size: 0.78rem;
letter-spacing: 0.14em;
text-transform: uppercase;
margin-bottom: 0.8rem;
}

.page-hero h1 {
margin: 0;
font-size: clamp(2.7rem, 5vw, 5rem);
text-transform: uppercase;
}

.page-hero p {
max-width: 860px;
margin: 1rem 0 0;
color: rgba(255, 255, 255, 0.82);
font-size: 1.08rem;
}

.content-grid {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(260px, 0.38fr);
gap: clamp(1.5rem, 4vw, 3rem);
align-items: start;
}

.panel {
padding: clamp(1.25rem, 2.5vw, 2rem);
}

.callout {
background: linear-gradient(135deg, var(--gold), var(--steel));
color: var(--white);
border-radius: var(--radius);
padding: 1.35rem;
font-weight: 900;
}

.callout p {
margin: 0;
color: var(--white);
}

.photo-pair,
.gallery-grid {
display: grid;
gap: 1rem;
}

.photo-pair {
grid-template-columns: repeat(2, minmax(0, 1fr));
margin: 1.25rem 0;
}

.photo-pair img,
.gallery-grid img,
.process-photo {
border-radius: var(--radius);
border: 1px solid var(--line);
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
background: var(--paper-2);
}

.gallery-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gallery-grid img {
width: 100%;
aspect-ratio: 680 / 317;
object-fit: cover;
}

.gallery-heading {
text-align: center;
margin: 0 0 1.25rem;
font-weight: 900;
color: var(--steel-dark);
}

.video-frame {
position: relative;
max-width: 900px;
margin: 2rem auto;
aspect-ratio: 16 / 9;
border-radius: var(--radius);
overflow: hidden;
box-shadow: var(--shadow);
background: #000;
}

.video-frame iframe {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border: 0;
}

.pdf-link {
margin-top: 1.25rem;
}

.review-panel {
max-width: 760px;
margin-inline: auto;
padding: clamp(1.5rem, 4vw, 3rem);
text-align: center;
}

.review-panel img {
width: min(413px, 100%);
margin: 0 auto 1.5rem;
}

.reviews-panel {
max-width: none;
overflow: hidden;
}

.reviews-marquee {
margin: 2rem 0 1.7rem;
overflow: hidden;
padding: 0.35rem 0 0.5rem;
}

.reviews-track {
position: relative;
width: min(860px, 100%);
min-height: 0;
margin-inline: auto;
transition: height 0.35s ease;
}

.reviews-set {
display: block;
}

.review-card {
position: absolute;
top: 0;
left: 0;
width: 100%;
margin: 0;
background: linear-gradient(145deg, #fff, var(--blue-soft));
border: 1px solid var(--line);
border-radius: var(--radius);
box-shadow: 0 14px 34px rgba(30, 30, 30, 0.08);
padding: clamp(1.15rem, 2vw, 1.55rem);
text-align: left;
opacity: 0;
pointer-events: none;
transform: translateX(110%);
z-index: 1;
}

.reviews-track.is-ready .review-card {
transition: opacity 0.55s ease, transform 0.55s ease;
}

.review-card.is-active {
opacity: 1;
pointer-events: auto;
transform: translateX(0);
z-index: 3;
}

.review-card.is-leaving {
opacity: 0;
transform: translateX(-110%);
z-index: 2;
}

.review-card.is-leaving-left {
opacity: 0;
transform: translateX(-110%);
z-index: 2;
}

.review-card.is-leaving-right {
opacity: 0;
transform: translateX(110%);
z-index: 2;
}

.review-card.is-entering-left {
transform: translateX(-110%);
}

.review-controls {
display: flex;
align-items: center;
justify-content: center;
gap: 0.8rem;
margin: 0.8rem 0 1.1rem;
}

.review-control {
width: 44px;
height: 44px;
display: grid;
place-items: center;
border: 1px solid rgba(47, 111, 159, 0.28);
border-radius: 50%;
background: var(--white);
color: var(--steel);
box-shadow: 0 10px 24px rgba(15, 38, 58, 0.1);
cursor: pointer;
transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.review-control:hover,
.review-control:focus {
background: var(--steel);
color: var(--white);
transform: translateY(-1px);
outline: none;
}

.review-stars {
display: flex;
gap: 0.18rem;
color: var(--gold);
font-size: 1rem;
margin-bottom: 0.8rem;
}

.review-card blockquote {
margin: 0;
color: var(--ink);
font-style: italic;
line-height: 1.55;
max-height: min(420px, 42vh);
overflow-y: auto;
padding-right: 0.4rem;
scrollbar-color: var(--gold) var(--paper-2);
overscroll-behavior: contain;
}

.review-card blockquote p {
margin: 0 0 0.75rem;
color: var(--ink);
}

.review-card blockquote p:last-child {
margin-bottom: 0;
}

.review-author {
margin: 1rem 0 0;
color: var(--steel-dark);
font-weight: 900;
}

.review-location {
margin: 0.15rem 0 0;
color: var(--muted);
font-size: 0.92rem;
}

.contact-grid {
display: grid;
grid-template-columns: minmax(280px, 0.75fr) minmax(320px, 1fr);
gap: clamp(1.5rem, 4vw, 3rem);
align-items: start;
}

.contact-card {
padding: clamp(1.25rem, 3vw, 2rem);
}

.contact-line {
margin: 0.8rem 0;
color: var(--ink);
font-weight: 800;
}

.contact-card .contact-line {
display: flex;
width: 100%;
align-items: flex-start;
margin: 1.05rem 0;
}

.contact-line .fa {
color: var(--clay);
}

.site-footer .contact-line {
color: var(--white);
}

.site-footer .contact-line .fa {
color: var(--blue-light);
}

address {
font-style: normal;
}

.form-frame {
min-height: 420px;
border: 0;
border-radius: 0;
background: rgba(255, 255, 255, 0.82);
padding: 1rem 0;
}

.site-footer {
background: var(--steel-dark);
color: rgba(255, 255, 255, 0.82);
}

.footer-grid {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(240px, 0.55fr) minmax(240px, 0.55fr);
gap: clamp(1.5rem, 4vw, 3rem);
padding-block: clamp(2.5rem, 5vw, 4rem);
}

.footer-logo {
width: min(360px, 100%);
margin-bottom: 1rem;
background: var(--white);
border-radius: var(--radius);
padding: 0.65rem;
}

.footer-title {
margin: 0 0 0.5rem;
font-family: OswaldLocal, Impact, sans-serif;
font-size: 2rem;
line-height: 1;
color: var(--white);
text-transform: uppercase;
}

.footer-list {
list-style: none;
margin: 0;
padding: 0;
}

.footer-list li + li {
margin-top: 0.45rem;
}

.footer-list a,
.site-footer a {
color: var(--white);
font-weight: 800;
}

.site-footer h2 {
margin: 0 0 0.9rem;
font-size: 1rem;
color: var(--gold);
text-transform: uppercase;
letter-spacing: 0.12em;
}

.payment-icons {
font-size: 1.55rem;
color: var(--gold);
letter-spacing: 0.25rem;
margin: 0.8rem 0 0;
}

.bbb-logo {
width: 117px;
margin-top: 1rem;
}

#cp {
background: #000;
color: #fff;
font-size: 11px;
text-align: center;
padding: 0.65rem 1rem;
}

.vicwdcopyright {
margin: 0;
}

.copy {
padding-inline: 0.2rem;
}

.vicwdicon {
display: inline-block;
width: 23px;
height: 16px;
margin: 0 4px;
vertical-align: -3px;
}

.vicwd {
color: #fff;
font-weight: 700;
}

.to-top {
position: fixed;
right: 10px;
bottom: 28px;
z-index: 30;
display: none;
width: 42px;
height: 42px;
border: 0;
border-radius: 999px;
background: var(--gold);
color: var(--white);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.28);
cursor: pointer;
font-size: 1.45rem;
}

.fixed-quote {
position: fixed;
right: 10px;
bottom: 78px;
z-index: 29;
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 46px;
padding: 0.78rem 1.05rem;
border-radius: 999px;
background: var(--gold);
color: var(--white);
font-weight: 900;
line-height: 1.1;
box-shadow: 0 12px 28px rgba(15, 32, 48, 0.34);
border: 2px solid rgba(255, 255, 255, 0.78);
}

.fixed-quote:hover,
.fixed-quote:focus {
background: var(--steel-dark);
color: var(--white);
}

.fixed-quote .fa + span {
margin-left: 0.42rem;
}

@media (prefers-reduced-motion: reduce) {
.reviews-track {
height: auto !important;
}
.review-card,
.review-card.is-active,
.review-card.is-leaving,
.review-card.is-leaving-left,
.review-card.is-leaving-right,
.review-card.is-entering-left {
position: static;
opacity: 1;
pointer-events: auto;
transform: none;
transition: none;
margin-bottom: 1rem;
}
}

@media (max-width: 1180px) {
.nav-row {
grid-template-columns: auto 1fr;
}
.header-cta {
grid-column: 1 / -1;
justify-self: start;
margin-bottom: 1rem;
}
.main-nav {
justify-content: flex-end;
}
.card-grid,
.trust-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.gallery-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}

@media (max-width: 820px) {
.top-bar__inner,
.top-bar__group {
justify-content: center;
text-align: center;
}
.top-bar__inner {
gap: 0.35rem 0.85rem;
padding-block: 0.45rem;
}
.top-bar .icon-link {
white-space: normal;
}
.nav-row {
grid-template-columns: 1fr;
justify-items: center;
gap: 1rem;
padding-block: 1rem;
}
.main-nav {
justify-content: center;
width: 100%;
}
.header-cta {
justify-self: center;
margin-bottom: 0;
}
.hero .container,
.split,
.split.reverse,
.content-grid,
.contact-grid,
.footer-grid {
grid-template-columns: 1fr;
}
.service-area-groups {
grid-template-columns: 1fr;
}
.hero .container {
min-height: auto;
}
.hero-card {
max-width: 620px;
}
.owner-card img {
float: none;
width: 180px;
margin: 0 0 1rem;
}
.photo-pair,
.gallery-grid {
grid-template-columns: 1fr;
}
.fixed-quote {
display: none;
}
}

@media (max-width: 560px) {
body {
font-size: 15px;
}
.container {
width: 100%;
max-width: 390px;
padding-inline: 1rem;
}
.top-bar {
font-size: 0.82rem;
}
.top-bar__group {
width: 100%;
justify-content: center;
gap: 0.35rem 0.7rem;
}
.top-bar__group .icon-link {
flex: 0 0 auto;
}
.brand {
width: 100%;
max-width: 340px;
}
.brand img {
width: 100%;
max-height: 96px;
}
.brand strong {
font-size: clamp(1.12rem, 6vw, 1.38rem);
white-space: normal;
overflow-wrap: break-word;
}
.main-nav {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
column-gap: 0.7rem;
row-gap: 0.4rem;
max-width: 360px;
}
.main-nav a {
font-size: 0.82rem;
justify-content: center;
text-align: center;
}
.hero {
background-position: 54% center;
}
.hero .container {
padding-block: 3.2rem;
}
.hero-copy {
font-size: 1rem;
max-width: 100%;
overflow-wrap: break-word;
}
.hero-actions,
.section-actions {
display: grid;
grid-template-columns: 1fr;
gap: 0.75rem;
}
.hero-actions .button,
.section-actions .button {
width: 100%;
max-width: 320px;
}
.trust-grid,
.card-grid {
grid-template-columns: 1fr;
}
.contact-form-card {
width: calc(100% + 2rem);
margin-inline: -1rem;
padding-inline: 0;
border-left: 0;
border-right: 0;
border-radius: 0;
}
.contact-form-card h2,
.contact-form-card > p {
padding-inline: 1.25rem;
}
.contact-form-card .form-frame {
padding-left: 0;
padding-right: 0;
}
.year-badge {
grid-template-columns: 72px minmax(0, 1fr);
gap: 0.6rem;
}
.year-badge strong {
width: 72px;
height: 72px;
font-size: 2.25rem;
}
.year-badge span {
font-size: 1.08rem;
}
.hero h1 {
font-size: clamp(1.95rem, 9.8vw, 2.45rem);
max-width: 100%;
}
}
