:root {
  color-scheme: light;
  --ink: #092442;
  --muted: #556273;
  --line: #dfe4eb;
  --white: #fff;
  --ticker-height: calc(6rem + env(safe-area-inset-bottom, 0px));
  font-family: "Segoe UI", Arial, sans-serif;
  font-synthesis: none;
  -webkit-font-smoothing: antialiased;
  scroll-padding-bottom: calc(var(--ticker-height) + 1rem);
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--white); color: var(--ink); }
a { color: inherit; text-decoration: none; -webkit-tap-highlight-color: transparent; }
a:focus-visible { outline: 3px solid #337fb9; outline-offset: 5px; }
main:focus { outline: none; }
.skip-link { position: fixed; left: 1rem; top: -6rem; z-index: 100; background: var(--white); padding: 1rem; box-shadow: 0 2px 20px #0002; }
.skip-link:focus { top: 1rem; }
.site-shell { width: 100%; }
.brand { display: block; flex-shrink: 0; }
.brand-frame { display: block; position: relative; width: 11.7rem; aspect-ratio: 1324 / 654; overflow: hidden; }
.brand-frame img { display: block; position: absolute; width: 109.3656%; max-width: none; height: auto; top: -31.3456%; left: -4.6828%; filter: brightness(0) invert(1); }
.cover-masthead { position: absolute; z-index: 2; top: clamp(1.5rem, 3.3vw, 3rem); left: clamp(1.5rem, 3vw, 3.5rem); }
.cover-masthead a:focus-visible { outline-color: var(--white); }

/* Static navigation band shared by every page. */
.navigation-ticker { position: fixed; z-index: 30; inset: auto 0 0; display: flex; align-items: center; gap: 0; padding: .45rem 0; padding-bottom: calc(.45rem + env(safe-area-inset-bottom, 0px)); background: var(--white); color: var(--ink); border-top: 1px solid #09244230; box-shadow: 0 -8px 32px #0618271a; }
.brand--ticker { align-self: stretch; display: flex; align-items: center; justify-content: center; padding: .1rem 1rem; }
.brand--ticker .brand-frame { width: 10rem; max-width: 160px; aspect-ratio: 1304 / 708; }
.brand--ticker .brand-frame img { width: 111.042945%; height: 153.389831%; left: -5.521472%; top: -34.463277%; filter: none; }
/* Separate links follow the logo artwork and the printed phone number. */
.brand-links { position: relative; }
.brand-home-link, .brand-phone-link { position: absolute; left: 0; right: 0; }
.brand-home-link { top: 0; bottom: 20%; }
.brand-phone-link { top: 80%; bottom: -.25rem; min-height: 1.5rem; }
.navigation-ticker a:focus-visible { outline: 2px solid var(--ink); outline-offset: -3px; }
.ticker-nav { display: grid; flex: 1; grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: stretch; min-width: 0; }
.ticker-nav a { position: relative; display: flex; align-items: center; justify-content: center; min-height: 3rem; padding: .5rem clamp(.75rem, 1.5vw, 1.75rem); border-left: 1px solid #09244229; font-size: .9375rem; font-weight: 500; line-height: 1.35; text-align: center; white-space: normal; overflow-wrap: anywhere; }
.ticker-nav a::after { content: ""; position: absolute; bottom: .2rem; height: 2px; left: .8rem; right: .8rem; background: var(--ink); transform: scaleX(0); transform-origin: left; transition: transform .18s ease; }
.ticker-nav a:hover::after, .ticker-nav a[aria-current]::after { transform: scaleX(1); }

/* The homepage announcement occupies the existing navigation band. */
.here-announcement { position: absolute; z-index: 1; inset: 0; display: flex; align-items: center; overflow: hidden; background: var(--white); padding-bottom: env(safe-area-inset-bottom, 0px); }
.here-announcement[hidden] { display: none; }
.here-announcement-message { display: flex; align-items: center; gap: .4em; flex: none; width: max-content; margin: 0; color: var(--ink); font: inherit; font-size: calc((var(--ticker-height) - env(safe-area-inset-bottom, 0px) - 1px) * .58); font-weight: 600; letter-spacing: .035em; line-height: 1; white-space: nowrap; will-change: transform; }
.here-announcement-warning { flex: none; color: #bb2026; font-size: 1.5em; font-weight: 800; }
.here-announcement-copy { flex: none; }
/* Center the visible capital letters, without the font's extra space for descenders. */
@supports (text-box-trim: trim-both) {
  .here-announcement:not(.here-announcement--still) .here-announcement-message { font-size: calc((var(--ticker-height) - env(safe-area-inset-bottom, 0px) - 1px) * .76); }
  .here-announcement-warning, .here-announcement-copy { text-box-trim: trim-both; text-box-edge: cap alphabetic; }
}
.page--home.here-navigation-pending [data-here-fade] { opacity: 0; }
.page--home.here-navigation-pending .brand--ticker,
.page--home.here-navigation-pending .ticker-nav { visibility: hidden; }
.here-navigation-pending .cover-here-link { cursor: progress; }
.here-announcement--still { justify-content: center; padding: .5rem 1rem; }
.here-announcement--still .here-announcement-message { display: block; flex: 0 1 auto; width: auto; max-width: 100%; font-size: clamp(1rem, 1.2vw, 1.5rem); line-height: 1.5; white-space: normal; text-align: center; will-change: auto; }
.here-announcement--still .here-announcement-warning, .here-announcement--still .here-announcement-copy { text-box-trim: none; }

.cover { position: relative; isolation: isolate; overflow: hidden; min-height: 100svh; display: flex; flex-direction: column; padding-bottom: calc(var(--ticker-height) + 1.25rem); background: #182c3d; color: var(--white); }
.cover-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; z-index: -2; }
.cover-shade { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(3, 17, 29, .61), rgba(3, 17, 29, .21) 55%, rgba(3, 17, 29, .04)), linear-gradient(0deg, rgba(4, 15, 24, .44), transparent 30%); }
.cover-copy { position: relative; flex: 1; padding: clamp(10rem, 23svh, 15rem) clamp(2rem, 5.6vw, 6.5rem) 3rem; }
.eyebrow { margin: 0 0 2rem; font-size: .875rem; font-weight: 600; text-transform: uppercase; letter-spacing: .19em; }
.cover .eyebrow { color: #a0a9af; opacity: .62; font-size: 1.75rem; margin-left: -1rem; }
h1 { margin: 0; font-size: clamp(4.1rem, 7.55vw, 8.6rem); font-weight: 500; letter-spacing: -.055em; line-height: 1.02; }
.cover h1 { max-width: 10em; }
.cover-trust { max-width: 52rem; margin: 2rem 0 0 -1rem; color: #a0a9af; opacity: .62; font-size: .75rem; font-weight: 600; line-height: 1.65; text-transform: uppercase; letter-spacing: .19em; text-wrap: balance; }
.cover-here-link {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
  font-style: italic;
  letter-spacing: -.07em;
  background-image: linear-gradient(110deg, #fff 36%, #17395e 44%, #092442 48%, #91b6db 50%, #e4f0fa 51.5%, #1c4773 54%, #092442 57%, #fff 65%);
  background-size: 300% 100%;
  background-position: 100% 50%;
  background-repeat: no-repeat;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: cover-here-sheen 1.4s ease-in-out infinite;
  text-decoration: underline;
  text-decoration-color: #dfe4eb80;
  text-decoration-thickness: 2px;
  text-underline-offset: .12em;
}
.cover-here-link:focus-visible { outline-color: var(--white); }
@keyframes cover-here-sheen {
  from { background-position: 100% 50%; }
  to { background-position: 0% 50%; }
}
.page--home [data-here-fade] { transition: opacity .2s ease; }
.page--home:has(.cover-here-link:focus-visible) [data-here-fade] { opacity: 0; }
@media (hover: hover) {
  .page--home:has(.cover-here-link:hover) [data-here-fade] { opacity: 0; }
}
.image-caption { position: relative; align-self: flex-start; margin: 0 clamp(2rem, 5.6vw, 6.5rem); max-width: calc(100% - 4rem); font-size: .8125rem; line-height: 1.5; font-weight: 400; color: var(--white); padding: .5rem .75rem; background: #061827b8; border: 1px solid #ffffff3b; }
.image-caption span { padding-inline: .25rem; }

/* Shared photo backdrop for interior pages. */
.placeholder-main { position: relative; isolation: isolate; overflow: hidden; min-height: 100svh; display: flex; flex-direction: column; align-items: stretch; padding: clamp(2rem, 5.6vw, 6.5rem); padding-bottom: calc(var(--ticker-height) + 1.25rem); background: #182c3d; color: var(--white); }
.placeholder-content { display: flex; flex: 1; flex-direction: column; align-items: flex-start; justify-content: center; width: 100%; max-width: 48rem; padding-block: 2rem 3rem; }
.page-background { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: var(--photo-position, center); }
.placeholder-main::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, #041526db, #041526ad 45%, #04152633), linear-gradient(0deg, #04152680, transparent 35%); }
.placeholder-main .image-caption { margin: 0; max-width: 100%; }
.placeholder-main a:focus-visible { outline-color: var(--white); }
.placeholder-main .eyebrow { color: #d8e1e9; margin-bottom: 1.5rem; }
.placeholder-main h1 { font-size: clamp(2.7rem, 6vw, 6rem); }
.placeholder-description { margin: 1.75rem 0 2.5rem; color: #e3e9ef; font-size: 1.0625rem; line-height: 1.7; }
.homeowner-message p { margin: 0 0 1.25rem; }
.homeowner-message p:last-child { margin-bottom: 0; }
.homeowner-content { max-width: none; }
.homeowner-content h1 { max-width: 48rem; }
.homeowner-layout { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(14rem, .9fr) minmax(17rem, 1fr); gap: clamp(1.5rem, 2.5vw, 3rem); align-items: start; width: 100%; margin: 1.75rem 0 2.5rem; }
.homeowner-layout .homeowner-message { max-width: 48rem; margin: 0; }
.homeowner-services { border-left: 1px solid #ffffff40; padding-left: clamp(1.25rem, 2vw, 2rem); }
.homeowner-services h2 { margin: 0 0 1.25rem; color: #f4f1e8; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.75rem, 2.5vw, 2.25rem); font-weight: 400; }
.homeowner-services ul { margin: 0; padding-left: 1.2rem; color: #f4f1e8; font-size: 1.0625rem; line-height: 1.65; }
.homeowner-services li { padding-left: .25rem; }
.homeowner-services li + li { margin-top: .75rem; }
.homeowner-service-link { display: inline-block; min-height: 2rem; padding: .125em 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; text-decoration: underline; text-decoration-color: #ffffff50; text-underline-offset: .25em; cursor: pointer; }
.homeowner-service-link:hover, .homeowner-service-link[aria-expanded="true"] { color: #fff; text-decoration-color: currentColor; }
.homeowner-service-link[aria-expanded="true"] { text-decoration-thickness: 2px; }
.homeowner-service-link:focus-visible, .homeowner-detail-close:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.homeowner-detail-stack { min-width: 0; }
.homeowner-detail { padding: clamp(1.25rem, 2vw, 2rem); border: 1px solid #ffffff35; background: #071d2fec; box-shadow: 0 12px 36px #0003; scroll-margin-top: 1.5rem; scroll-margin-bottom: calc(var(--ticker-height) + 1.5rem); }
.homeowner-detail[hidden] { display: none; }
.homeowner-detail:focus { outline: none; }
.homeowner-detail-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; margin-bottom: 1.5rem; }
.homeowner-detail h2 { margin: 0; color: #f4f1e8; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.5rem, 2vw, 2rem); font-weight: 400; line-height: 1.2; overflow-wrap: anywhere; }
.homeowner-detail-close { display: grid; place-items: center; flex: 0 0 2.75rem; width: 2.75rem; height: 2.75rem; margin: -.5rem -.5rem 0 0; padding: 0; border: 0; background: none; color: #e3e9ef; font: inherit; font-size: 1.75rem; line-height: 1; cursor: pointer; }
.homeowner-detail-close:hover { color: #fff; }
.homeowner-detail-photo { margin: 0 0 1.5rem; }
.homeowner-detail-photo img { display: block; width: 100%; height: auto; aspect-ratio: 28 / 17; object-fit: cover; }
.homeowner-detail-photo figcaption { margin-top: .625rem; color: #b7c4cd; font-size: .8125rem; line-height: 1.5; }
.homeowner-detail > p { margin: 0; color: #e3e9ef; font-size: 1rem; line-height: 1.7; }
.homeowner-detail > p + p { margin-top: 1rem; }
.homeowner-detail > ul { margin: .75rem 0 1rem; padding-left: 1.25rem; color: #e3e9ef; font-size: 1rem; line-height: 1.7; }
.homeowner-detail > ul > li + li { margin-top: .25rem; }
@media (min-width: 651px) and (hover: hover) and (pointer: fine) {
  .homeowner-detail-stack { --service-panel-gap: clamp(1rem, 1.1vw, 1.5rem); }
  .homeowner-detail { position: fixed; z-index: 10; top: var(--service-panel-gap); right: var(--service-panel-gap); bottom: calc(var(--ticker-height) + var(--service-panel-gap)); left: var(--service-panel-left); overflow-y: auto; overscroll-behavior: contain; }
  button.homeowner-service-link { cursor: default; }
}
@media (max-width: 1350px) {
  .homeowner-layout { grid-template-columns: minmax(14rem, .9fr) minmax(0, 1.1fr); }
  .homeowner-layout .homeowner-message { grid-column: 1 / -1; }
  .homeowner-services { border-left: 0; border-top: 1px solid #ffffff40; padding: 2rem 0 0; }
  .homeowner-detail-stack { padding-top: 2rem; }
}
@media (max-width: 650px) {
  .homeowner-layout { grid-template-columns: minmax(0, 1fr); }
  .homeowner-detail-stack { padding-top: 0; }
  .homeowner-detail-stack:not(:has(.homeowner-detail:not([hidden]))) { display: none; }
}
.return-link { display: inline-block; font-size: 1rem; border-bottom: 1px solid currentColor; padding-bottom: .4rem; }

/* A warm, open composition leaves the project photograph visible beside the message. */
.placeholder-main.page--commercial { padding-top: clamp(2.5rem, 6vw, 6rem); padding-bottom: calc(var(--ticker-height) + clamp(2.5rem, 6vw, 6rem)); }
.placeholder-main.page--commercial::before { background: linear-gradient(90deg, #041526eb, #041526bf 52%, #04152659), linear-gradient(0deg, #04152666, transparent 60%); }
.commercial-content { max-width: 84rem; margin-inline: auto; align-items: flex-start; text-align: left; padding-block: 0; }
.page--commercial .commercial-headline { max-width: 23ch; color: #f4f1e8; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.1rem, 4.4vw, 4.75rem); font-weight: 400; line-height: 1.16; letter-spacing: -.035em; overflow-wrap: normal; text-wrap: balance; }
.commercial-headline em { font-weight: inherit; }
.commercial-invitation { max-width: 35ch; margin: clamp(1.75rem, 3vw, 2.75rem) 0 0; color: #e3e9ef; font-size: clamp(1.125rem, 1.55vw, 1.5rem); line-height: 1.65; text-wrap: pretty; }
.commercial-invitation a { color: #f4f1e8; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.commercial-invitation a:hover { color: #fff; text-decoration-thickness: 2px; }

/* The supplied About copy scrolls over a steady, shaded photo backdrop. */
.page--about .page-background { position: fixed; height: 100svh; }
.page--about::before { position: fixed; background: linear-gradient(90deg, #041526ed, #041526d9 58%, #04152694); }
.about-masthead { display: flex; justify-content: center; width: 100%; margin-bottom: clamp(2rem, 4vw, 3.5rem); }
.about-masthead .brand-frame { width: min(56rem, 80%); max-width: 100%; }
.about-masthead .brand-frame img { opacity: .1; }
.about-credit { position: absolute; right: 1rem; bottom: calc(var(--ticker-height) + .75rem); display: flex; align-items: center; gap: .35em; margin: 0; color: var(--white); opacity: .1; font-size: .625rem; font-weight: 400; line-height: 1.4; white-space: nowrap; }
.about-credit-logo { display: block; width: auto; height: 1.4em; }
.about-content { width: 100%; padding-block: .5rem 3rem; color: #e3e9ef; font-size: clamp(1rem, 1.2vw, 1.125rem); line-height: 1.75; }
.about-intro, .about-section { max-width: 48rem; }
.about-intro { margin-inline: auto; text-align: center; }
.about-content p { margin: 0 0 1.25rem; }
.about-content p:last-child { margin-bottom: 0; }
.about-content strong { color: #f4f1e8; font-weight: 600; }
.about-history { line-height: 1.9; }
.about-section { margin-top: clamp(2.5rem, 4vw, 3.5rem); }
.about-section--mission { margin-left: auto; text-align: right; }
.about-section h2 { margin: 0 0 1.25rem; color: var(--white); font-size: clamp(1.5rem, 2.2vw, 2rem); font-weight: 500; line-height: 1.25; letter-spacing: -.025em; }
.about-section--mission, .about-summary { max-width: none; padding-top: 1.75rem; border-top: 1px solid #ffffff40; }
.about-section--mission > *, .about-summary > * { max-width: 48rem; }
.about-section--mission > h2, .about-section--mission > p { margin-left: auto; }
.about-summary { text-align: center; }
.about-summary > p { margin-inline: auto; }

/* Reviews appear as expanding speech bubbles; the page has no submission prompt. */
.page--reviews { --crowd-tile-width: max(100vw, 60rem); --crowd-tile-height: calc(var(--crowd-tile-width) * .666666667); background-image: url("assets/reviews-crowd-blurred-v1.webp"); background-repeat: repeat-y; background-size: var(--crowd-tile-width) var(--crowd-tile-height); background-position: center bottom; }
/* An offset layer blends the repeat boundaries into a continuous crowd. */
.page--reviews::after { content: ""; position: absolute; inset: 0; z-index: -2; pointer-events: none; background-image: url("assets/reviews-crowd-blurred-v1.webp"); background-repeat: repeat-y; background-size: var(--crowd-tile-width) var(--crowd-tile-height); background-position: center calc(100% + var(--crowd-tile-height) * .5); mask-image: linear-gradient(to bottom, #000 0%, #000 3%, transparent 15%, transparent 85%, #000 97%, #000 100%); mask-size: 100% var(--crowd-tile-height); mask-repeat: repeat-y; mask-position: center bottom; }
.placeholder-main.page--reviews { padding-top: 1.5rem; padding-inline: 1.5rem; overflow-anchor: none; }
.placeholder-main.page--reviews::before { position: absolute; background: #04152680; }
.page--review-submit .page-background { position: fixed; height: 100svh; }
.placeholder-main.page--review-submit::before { position: fixed; background: linear-gradient(180deg, #041526d9, #041526c7 55%, #041526e3); }
.reviews-content { display: flex; flex: 1; flex-direction: column; justify-content: flex-start; width: 100%; max-width: 80rem; align-self: flex-start; padding-block: 0 3rem; }
.facebook-reviews { width: 100%; min-width: 0; margin-bottom: 2rem; }
.facebook-reviews-heading { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; margin-bottom: 1.5rem; }
.facebook-reviews-heading h2 { margin: 0; color: #f4f1e8; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.5rem, 2.2vw, 2rem); font-weight: 400; line-height: 1.3; }
.facebook-reviews-heading a { color: #e3e9ef; font-size: .875rem; line-height: 1.5; text-decoration: underline; text-underline-offset: .2em; }
.facebook-reviews-heading a:hover { color: #fff; }
.reviews-content:has(.facebook-reviews) .reviews-end:has(#reviews-more[hidden]):has(#reviews-load-status:empty) { display: none; }
.reviews-state { margin: auto; padding-block: 3rem; color: #d0dae3; font-size: 1.0625rem; line-height: 1.6; text-align: center; }
.reviews-state[hidden] { display: none; }
.review-layout { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; gap: 3.5rem 2.5rem; margin-top: auto; flex-shrink: 0; }
.review-bubble { position: relative; min-width: 0; border: 1px solid #ffffffb3; border-radius: 2rem 2rem 2rem .5rem; background: #f4f1e8f5; color: var(--ink); box-shadow: 0 12px 36px #04152626; }
.review-bubble::after { content: ""; position: absolute; left: 1.75rem; bottom: -.95rem; width: 1.6rem; height: 1.6rem; background: #f4f1e8; clip-path: polygon(0 0, 100% 0, 0 100%); }
.review-bubble:nth-child(3n + 2) { margin-top: 2.5rem; border-radius: 2rem 2rem .5rem 2rem; }
.review-bubble:nth-child(3n + 2)::after { left: auto; right: 1.75rem; transform: scaleX(-1); }
.review-bubble-summary { display: flex; flex-direction: column; gap: .875rem; padding: clamp(1.5rem, 2.4vw, 2.25rem); cursor: pointer; list-style: none; border-radius: inherit; }
.review-bubble-summary::-webkit-details-marker { display: none; }
.review-bubble-summary:hover { background: #ffffff4d; }
.review-bubble-summary:focus-visible { outline: 3px solid #8cc9f3; outline-offset: 5px; }
.review-name { display: block; font-size: 1.0625rem; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }
.review-meta { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem 1rem; }
.review-rating { position: relative; isolation: isolate; display: inline-flex; align-items: center; gap: .125rem; color: #c28c20; font-size: 1.1875rem; line-height: 1.2; white-space: nowrap; }
.review-star { display: block; color: transparent; -webkit-text-fill-color: transparent; -webkit-text-stroke: 1px #bd861b; }
.review-star.is-filled { background: linear-gradient(120deg, #ac7415, #e4b641 25%, #f7d76a 38%, #c99525 55%, #e9bf4a 75%, #a97116); background-clip: text; -webkit-background-clip: text; }
.review-rating--five::before { content: ""; position: absolute; z-index: -1; inset: -.6rem -.7rem; border-radius: 50%; background: radial-gradient(ellipse, #ffc94dcc 0%, #f5c75e66 55%, transparent 78%); filter: blur(4px); pointer-events: none; animation: review-gold-glow 2.2s ease-in-out infinite; }
.review-rating--five .review-star { background-image: linear-gradient(120deg, #b57e16 8%, #f1c648 25%, #fff8d8 35%, #fff 39%, #e4b533 46%, #c38a1c 64%, #f7d66b 78%, #b57e16 92%); background-size: 240% 100%; filter: drop-shadow(0 0 3px #e8b333cc); animation: review-star-shine 2.2s linear infinite; }
.review-sparkle { position: absolute; color: #ba8110; font-size: .5625rem; line-height: 1; pointer-events: none; opacity: .9; text-shadow: 0 0 2px #fff, 0 0 4px #ffcf48; animation: review-sparkle 1.4s ease-in-out infinite; }
.review-sparkle--silver { color: #f8fdff; -webkit-text-stroke: .35px #8294a3; text-shadow: 0 0 2px #fff, 0 0 4px #d7e7f4; }
.review-sparkle--1 { top: -.55rem; left: 13%; }
.review-sparkle--2 { top: .2rem; right: -.55rem; font-size: .5rem; animation-delay: -.35s; }
.review-sparkle--3 { bottom: -.45rem; left: 51%; font-size: .4375rem; animation-delay: -.7s; }
.review-sparkle--4 { top: -.35rem; right: 16%; font-size: .4375rem; animation-delay: -1.05s; }
@keyframes review-gold-glow { 0%, 100% { opacity: .7; } 50% { opacity: 1; } }
@keyframes review-star-shine { from { background-position: 150% 50%; } to { background-position: -90% 50%; } }
@keyframes review-sparkle { 0%, 100% { opacity: .35; transform: scale(.65) rotate(-15deg); } 50% { opacity: 1; transform: scale(1.1) rotate(15deg); } }
.review-source { font-size: .75rem; line-height: 1.5; }
.review-source--verified { color: #247344; }
.review-source--google { color: var(--ink); }
a.review-source--google { text-decoration: underline; text-underline-offset: .2em; }
a.review-source--google:hover { color: #174e7a; }
a.review-source--google:focus-visible { outline-color: #174e7a; }
.review-title { display: block; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.25rem, 1.7vw, 1.6rem); font-weight: 400; line-height: 1.4; overflow-wrap: anywhere; }
.review-hint { display: block; margin-top: .25rem; color: #526477; font-size: .75rem; line-height: 1.5; }
.review-hint-close, .review-bubble[open] .review-hint-open { display: none; }
.review-bubble[open] .review-hint-close { display: inline; }
.review-full { margin: 0 clamp(1.5rem, 2.4vw, 2.25rem); padding: 1.5rem 0 2rem; border-top: 1px solid #09244226; }
.review-quote { margin: 0 0 1.5rem; font-size: 1rem; line-height: 1.75; }
.review-quote p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.review-date { display: block; color: #526477; font-size: .8125rem; line-height: 1.5; }
.review-original { display: inline-block; margin-top: .75rem; color: #174e7a; font-size: .875rem; text-decoration: underline; text-underline-offset: .2em; }
.review-full a:focus-visible { outline-color: #174e7a; }
.reviews-end { display: flex; flex-direction: column; align-items: center; padding-top: 3rem; }
.reviews-more { border: 1px solid #ffffff80; border-radius: 2rem; background: #04152680; color: #f4f1e8; padding: .75rem 1.5rem; font: inherit; cursor: pointer; }
.reviews-more:focus-visible { outline: 3px solid #8cc9f3; outline-offset: 4px; }
.reviews-more[hidden] { display: none; }
.reviews-more:disabled { cursor: wait; opacity: .65; }
.reviews-load-status { margin: .75rem 0 0; color: #d0dae3; font-size: .875rem; line-height: 1.5; text-align: center; }
.reviews-load-status:empty { display: none; }
.review-submit-content { width: 100%; max-width: 38rem; margin-inline: auto; padding-block: 1rem 3rem; }
.review-submit-header { margin-bottom: 2rem; text-align: center; }
.review-submit-header .brand-frame { width: 13rem; max-width: 100%; margin: 0 auto 2rem; }
.page--review-submit .review-submit-header h1 { font-size: clamp(2.5rem, 5vw, 4rem); }
.review-submit-header p { margin: 1rem 0 0; color: #d0dae3; font-size: 1rem; line-height: 1.6; }
.review-form { display: grid; gap: 1.25rem; }
.review-form[hidden], .review-success[hidden] { display: none; }
.review-form .message-send { margin-top: 0; }
.review-form .message-status { margin-top: 0; }
.rating-picker { min-width: 0; margin: 0; padding: 0; border: 0; }
.rating-picker legend { padding: 0; color: #e3e9ef; font-size: 1rem; line-height: 1.5; }
.rating-stars { display: flex; width: fit-content; max-width: 100%; gap: .25rem; margin-top: .375rem; }
.rating-option { position: relative; display: flex; align-items: center; justify-content: center; width: 3rem; min-height: 3.5rem; border-radius: .5rem; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.rating-star-shape { display: block; background: none; background-size: 200% 100%; background-clip: text; -webkit-background-clip: text; color: transparent; -webkit-text-fill-color: transparent; -webkit-text-stroke: 1.3px #ddb548; font-size: 2.875rem; line-height: 1; filter: drop-shadow(0 1px 1px #0008); transition: filter .18s ease, transform .18s ease; }
.rating-option.is-lit .rating-star-shape { background-image: linear-gradient(115deg, #a96e15 0%, #ebba42 20%, #fff0a7 32%, #e0a629 42%, #ffe17c 60%, #fff6c7 69%, #c78b20 82%, #f6ce58 100%); filter: drop-shadow(0 0 6px #edbf4c66) drop-shadow(0 2px 2px #0008); }
.rating-option:hover .rating-star-shape, .rating-option:has(input:focus-visible) .rating-star-shape { transform: scale(1.1); }
.rating-option.is-lit:hover .rating-star-shape, .rating-option.is-lit:has(input:focus-visible) .rating-star-shape { animation: rating-shine 1.4s ease both; }
.rating-option:has(input:focus-visible) { outline: 2px solid #ffe17c; outline-offset: 3px; }
.rating-option:has(input:disabled) { cursor: wait; }
.rating-selection { margin: .375rem 0 0; min-height: 1.5rem; color: #d0dae3; font-size: .875rem; line-height: 1.5; }
@keyframes rating-shine { from { background-position: 100% 0; } to { background-position: 0 0; } }
.review-public-note { margin: 0; color: #d0dae3; font-size: .875rem; line-height: 1.6; }
.review-success { min-height: 20rem; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.review-success:focus { outline: none; }
.review-success h2 { margin: 0; font-size: 1.75rem; font-weight: 500; }
.review-success p { color: #d0dae3; font-size: 1rem; line-height: 1.7; }
.review-view-link { margin-top: .75rem; border: 1px solid #ffffff80; border-radius: 2rem; padding: .875rem 1.5rem; font-size: .9375rem; }
@media (max-width: 1000px) {
  .review-layout { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-bubble:nth-child(3n + 2) { margin-top: 0; }
  .review-bubble:nth-child(even) { margin-top: 2rem; }
}
@media (max-width: 600px) {
  .review-layout { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
  .review-bubble:nth-child(even) { margin-top: 0; }
  .review-bubble-summary { padding: 1.5rem; }
  .review-title { font-size: 1.375rem; }
}

/* Contact details stay readable over the shared stock background. */
.page--contact::before { background: linear-gradient(90deg, #041526df, #041526bb 60%, #0415268f), linear-gradient(0deg, #04152680, transparent 35%); }
.contact-content { flex: 1; width: 100%; max-width: 90rem; align-self: center; padding-block: .5rem 2.5rem; }
.page--contact .contact-content h1 { font-size: clamp(2.5rem, 4.4vw, 5.25rem); line-height: 1.1; }
.contact-intro { max-width: 78ch; margin: 1.5rem 0 0; color: #d0dae3; font-size: 1rem; font-weight: 400; line-height: 1.7; letter-spacing: normal; }
.contact-actions { margin-top: clamp(2.5rem, 6svh, 4.5rem); border-top: 1px solid #ffffff59; }
.contact-facebook { display: block; width: fit-content; max-width: 100%; padding-top: 1.25rem; text-decoration: none; }
.contact-directory { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; margin-top: clamp(2.5rem, 6svh, 4.5rem); }
.contact-person { min-width: 0; padding-top: 1.25rem; border-top: 1px solid #ffffff59; }
.contact-role { margin: 1.25rem 0 0; color: #d8e1e9; font-size: .9375rem; line-height: 1.5; }
.contact-person h2 { margin: 0; font-size: clamp(1.5rem, 2vw, 2.125rem); font-weight: 500; line-height: 1.2; letter-spacing: -.025em; }
.contact-details { margin-top: .25rem; font-style: normal; }
.contact-details a { display: block; width: fit-content; max-width: 100%; min-height: 2rem; padding-block: .125rem; line-height: 1.5; overflow-wrap: anywhere; }
.contact-phone { font-size: 1.125rem; }
.contact-email { color: #e3e9ef; font-size: 1rem; }
.contact-details a:hover { color: var(--white); text-decoration: underline; text-underline-offset: .2em; }

.message-section { margin-top: 0; }
.message-disclosure { max-width: 52rem; }
.contact-facebook, .message-toggle { color: var(--white); font-size: 1.125rem; font-weight: 500; line-height: 1.5; }
.message-toggle { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; min-height: 4rem; padding: 1.25rem 0; cursor: pointer; list-style: none; }
.message-toggle::-webkit-details-marker { display: none; }
.contact-facebook:hover, .message-toggle:hover { color: #d8e1e9; }
.contact-facebook:focus-visible, .message-toggle:focus-visible { outline: 2px solid var(--white); outline-offset: 5px; }
.message-panel { padding: .25rem 0 1rem; }
.message-intro { margin: 0 0 1.75rem; color: #d0dae3; font-size: 1rem; line-height: 1.7; }
.message-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem 1.5rem; }
.message-field { display: flex; flex-direction: column; gap: .5rem; min-width: 0; }
.message-field--wide { grid-column: 1 / -1; }
.message-field label { color: #e3e9ef; font-size: 1rem; line-height: 1.5; }
.message-label-row { display: flex; align-items: baseline; flex-wrap: wrap; gap: .25rem .75rem; }
.message-counter { color: #d0dae3; font-size: .8125rem; line-height: 1.5; font-variant-numeric: tabular-nums; white-space: nowrap; }
.message-counter.is-near-limit { color: #ffda9e; }
.message-field input, .message-field textarea, .message-field select { display: block; width: 100%; min-width: 0; min-height: 3rem; border: 1px solid #b6c3cf; border-radius: 2px; background: #ffffffed; color: var(--ink); padding: .75rem .875rem; font: inherit; font-size: 1rem; line-height: 1.5; }
.message-field textarea { resize: vertical; min-height: 8rem; }
.message-field input:focus-visible, .message-field textarea:focus-visible, .message-field select:focus-visible { outline: 3px solid #8cc9f3; outline-offset: 3px; }
.message-field-help { margin: 0; color: #d0dae3; font-size: .875rem; line-height: 1.5; }
.message-send { min-height: 3rem; margin-top: 1.5rem; border: 1px solid var(--white); border-radius: 2px; background: var(--white); color: var(--ink); padding: .75rem 1.5rem; font: inherit; font-size: 1rem; font-weight: 600; cursor: pointer; }
.message-send:hover { background: #e3e9ef; }
.message-send:focus-visible { outline: 3px solid #8cc9f3; outline-offset: 4px; }
.message-send:disabled { cursor: wait; opacity: .65; }
.message-status { margin: 1rem 0 0; color: #e3e9ef; font-size: 1rem; line-height: 1.6; }
.message-status:empty { display: none; }
.message-status[data-state="error"] { color: #ffe0cd; }
.message-honeypot { display: none; }
.message-disclosure[hidden], .message-success[hidden] { display: none; }
.message-section--sent { display: flex; align-items: center; justify-content: center; padding: clamp(2rem, 5svh, 4rem) 0; }
.message-success { width: 100%; max-width: 64ch; margin-inline: auto; color: #e3e9ef; font-size: 1.125rem; line-height: 1.8; text-align: center; }
.message-success p { margin: 0; }
.message-success:focus { outline: none; }

@media (max-width: 540px) {
  .message-fields { grid-template-columns: minmax(0, 1fr); }
  .message-send { width: 100%; }
}

@media (min-width: 1100px) {
  .contact-content { display: flex; flex-direction: column; justify-content: center; }
  .contact-directory { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(2rem, 3vw, 4rem); }
}

/* Homebuilder story and direct contact over the supplied project photograph. */
.page--new-construction { padding-top: clamp(2.5rem, 6vw, 6rem); }
.page--new-construction .page-background { position: fixed; height: 100svh; }
.placeholder-main.page--new-construction::before { position: fixed; background: linear-gradient(90deg, #041526ed, #041526d1 54%, #041526b8), linear-gradient(0deg, #04152659, transparent 70%); }
.builder-content { width: 100%; max-width: 84rem; margin-inline: auto; padding-bottom: 2rem; }
.builder-header { padding-bottom: clamp(2.5rem, 5vw, 4rem); border-bottom: 1px solid #ffffff40; }
.page--new-construction .builder-header .eyebrow { max-width: 48rem; margin-bottom: 1.5rem; font-size: .75rem; line-height: 1.6; letter-spacing: .16em; }
.page--new-construction h1 { font-size: clamp(2.5rem, 5vw, 5.5rem); line-height: 1.05; }
.builder-lead { margin: 1.75rem 0 0; color: #f4f1e8; font-family: Georgia, 'Times New Roman', serif; font-size: clamp(1.375rem, 2.1vw, 1.875rem); line-height: 1.45; }
.builder-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; padding-top: clamp(2.5rem, 5vw, 4rem); }
.builder-story { max-width: 43rem; }
.builder-story section + section { margin-top: 2.5rem; }
.builder-story h2 { margin: 0 0 1rem; font-family: Georgia, 'Times New Roman', serif; font-size: clamp(1.5rem, 2vw, 1.875rem); font-weight: 400; line-height: 1.3; color: #f4f1e8; }
.builder-story p, .builder-contact > p { margin: 0 0 1.125rem; color: #e3e9ef; font-size: 1rem; line-height: 1.85; }
.builder-story .return-link { margin-top: 1.5rem; }
.builder-contact { border-left: 1px solid #ffffff40; padding-left: clamp(1.5rem, 3vw, 3rem); }
.builder-contact > .builder-contact-kicker { margin-bottom: 1rem; font-size: .6875rem; line-height: 1.6; text-transform: uppercase; letter-spacing: .15em; color: #c1cfdb; }
.builder-contact h2 { margin: 0 0 1.5rem; font-family: Georgia, 'Times New Roman', serif; font-size: clamp(2rem, 3vw, 2.875rem); font-weight: 400; line-height: 1.15; color: #f4f1e8; }
.builder-contact-details { display: flex; flex-direction: column; align-items: flex-start; gap: .5rem; margin-top: 2rem; font-style: normal; }
.builder-contact-details strong { font-size: 1.125rem; font-weight: 600; }
.builder-contact-details > span { font-size: .875rem; color: #c1cfdb; }
.builder-contact-details a { max-width: 100%; overflow-wrap: anywhere; }
.builder-phone { margin-top: .5rem; font-size: 1.375rem; line-height: 1.6; }
.builder-email { font-size: .875rem; line-height: 1.6; }
.builder-contact-details a:hover { text-decoration: underline; text-underline-offset: .2em; }
.builder-bid-link { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 3rem; margin-top: 1.5rem; padding: .875rem 1rem; background: #f4f1e8; color: #092442; font-size: .9375rem; font-weight: 600; line-height: 1.4; }
.builder-bid-link:hover { background: #fff; }
@media (max-width: 850px) {
  .builder-layout { grid-template-columns: minmax(0, 1fr); }
  .builder-story { max-width: none; }
  .builder-contact { border-left: 0; border-top: 1px solid #ffffff40; padding: 2rem 0 0; }
  .builder-bid-link { max-width: 26rem; }
}

/* Three image slices provide the Services category navigation. */
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.services-main { display: flex; flex-direction: column; min-height: 100svh; padding-bottom: var(--ticker-height); background: #182c3d; color: var(--white); }
.service-resources { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); justify-items: center; align-items: center; padding: 1rem 0; background: #f5f3ec; color: var(--ink); border-bottom: 1px solid #09244225; }
.service-resources a { display: flex; align-items: center; justify-content: center; min-height: 64px; width: calc(100% - 3rem); padding: .75rem .5rem; border: 0; color: #092442; font-family: "Bahnschrift", "Arial", sans-serif; font-size: clamp(1.35rem, 2vw, 2rem); font-weight: 600; line-height: 1.25; text-align: center; text-wrap: balance; transition: background-color .2s ease; }
.service-resources a:hover, .service-resources a:active { text-decoration: underline; text-underline-offset: .25em; text-decoration-thickness: 2px; }
.service-resources a:focus-visible { outline: 3px solid #092442; outline-offset: 4px; }
.service-categories { display: grid; flex: 1; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.service-panel { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; text-align: center; min-width: 0; min-height: 32rem; padding: clamp(1.5rem, 3vw, 3rem); padding-top: clamp(3rem, 18svh, 11rem); padding-bottom: 4rem; }
.service-panel + .service-panel { border-left: 1px solid #ffffff45; }
.service-photo { position: absolute; z-index: -2; inset: -12px; width: calc(100% + 24px); height: calc(100% + 24px); object-fit: cover; object-position: var(--service-photo-position, center); filter: blur(6px); transition: filter .35s ease; }
.service-panel::before { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(180deg, #031525b8, #0315259e 35%, #03152538 65%, #03152580); }
.service-panel h2 { max-width: 100%; margin: 0; color: #f4f1e8; font-family: "Bahnschrift", "Arial", sans-serif; font-size: clamp(1.625rem, 2.75vw, 3rem); font-weight: 600; line-height: 1.2; letter-spacing: .015em; overflow-wrap: break-word; text-shadow: 0 2px 12px #03152599; }
.service-panel:focus-visible { outline: 3px solid #f4f1e8; outline-offset: -6px; }
.service-panel:hover .service-photo, .service-panel:focus-within .service-photo { filter: blur(0); }
.service-panel--new { --service-photo-position: 72% center; }
.service-panel--existing { --service-photo-position: 64% center; }
.service-collage { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 0; }
.service-collage > span { position: relative; overflow: hidden; min-width: 0; min-height: 0; }
.service-collage img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* Crop the social-media header out of this photo within its tile. */
.service-collage--crop-header img { position: absolute; top: -14%; height: 114%; }
.service-photo-label { position: absolute; left: clamp(1.5rem, 3vw, 3rem); bottom: 1rem; margin: 0; padding: .3rem .5rem; border: 1px solid #ffffff40; background: #031525b8; color: var(--white); font-size: .75rem; line-height: 1.5; text-align: left; }

@media (max-width: 700px) {
  .service-resources { grid-template-columns: 1fr; }
  .service-categories { grid-template-columns: 1fr; grid-template-rows: repeat(3, minmax(14rem, 1fr)); }
  .service-panel { min-height: 14rem; padding: 1.5rem; padding-bottom: 3rem; }
  .service-panel + .service-panel { border-left: 0; border-top: 1px solid #ffffff45; }
  .service-panel h2 { max-width: min(17rem, 100%); font-size: clamp(1.625rem, 7vw, 2.25rem); }
  .service-photo-label { left: 1.5rem; bottom: .65rem; }
  .service-panel--new { --service-photo-position: center 45%; }
  .service-panel--existing { --service-photo-position: center 45%; }
}

@media (max-width: 700px), (hover: none), (pointer: coarse) {
  .service-photo,
  .service-panel:hover .service-photo,
  .service-panel:focus-within .service-photo { filter: none; transition: none; }
}

@media (max-width: 1000px) {
  :root { --ticker-height: calc(7rem + env(safe-area-inset-bottom, 0px)); }
  .brand--ticker .brand-frame { width: 10rem; }
  .ticker-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ticker-nav a { font-size: .875rem; white-space: normal; overflow-wrap: anywhere; padding: .4rem .6rem; }
  .ticker-nav a:last-child { grid-column: span 2; }
  .cover h1 { font-size: clamp(4.2rem, 9vw, 6rem); }
}

@media (max-width: 540px) {
  .cover-masthead { top: 1.5rem; left: 1.5rem; }
  .about-masthead .brand-frame { width: 100%; }
  .brand--cover .brand-frame { width: min(10rem, 48vw); }
  .brand--ticker { padding-inline: .6rem; }
  .brand--ticker .brand-frame { width: 8.5rem; max-width: 136px; }
  .ticker-nav a { min-height: 2.75rem; padding: .4rem .35rem; }
  .cover-image { object-position: 61% center; }
  .cover-shade { background: linear-gradient(180deg, rgba(3, 17, 29, .61), rgba(3, 17, 29, .22) 60%, rgba(3, 17, 29, .6)); }
  .cover-copy { padding: clamp(9rem, 23svh, 14rem) clamp(1.5rem, 6vw, 2rem) 3rem; }
  .eyebrow { margin-bottom: 1.55rem; font-size: .8125rem; }
  .cover .eyebrow { font-size: 1.625rem; margin-left: -.5rem; }
  .cover-trust { margin-left: -.5rem; color: #c5cbd0; opacity: 1; text-shadow: 0 1px 4px #03111d; }
  .cover h1 { font-size: clamp(1.6rem, 14vw, 4.5rem); line-height: 1.04; }
  .cover-here-link { display: block; width: fit-content; }
  .image-caption { margin-inline: 1.5rem; max-width: calc(100% - 3rem); font-size: .75rem; padding: .5rem .6rem; }
  .placeholder-main { padding: 2rem 1.5rem calc(var(--ticker-height) + 1.25rem); }
  .placeholder-main::before { background: linear-gradient(90deg, #041526d6, #04152680), linear-gradient(0deg, #04152680, transparent 40%); }
  .page--services { --photo-position: 64% center; }
  .page--work { --photo-position: 51% center; }
  .page--about { --photo-position: 76% center; }
  .page--about::before { background: #041526db; }
  .page--contact { --photo-position: 64% center; }
  .placeholder-main h1 { font-size: clamp(2.5rem, 12vw, 4rem); overflow-wrap: anywhere; }
}

@media (max-width: 400px) {
  :root { --ticker-height: calc(10rem + env(safe-area-inset-bottom, 0px)); }
  .ticker-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
