/* Shared interaction and finishing details for every page. */
:root { --ease-out: cubic-bezier(.22,1,.36,1); }
html { scroll-padding-top: 132px; }
body { text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
main:focus, #estimate-form:focus { outline: none; }
a, button { transition: color .2s ease, background-color .2s ease, border-color .2s ease; }
.eyebrow { letter-spacing: .045em; }
.site-header { position: sticky; top: 0; border-bottom: 1px solid transparent; transition: box-shadow .3s, border-color .3s; }
.site-header.is-scrolled { border-bottom-color: var(--line); box-shadow: 0 8px 28px #0003; }
.main-nav { gap: 22px; }
.main-nav > a:not(.btn), .nav-group > a { position: relative; }
.main-nav > a:not(.btn)::after, .nav-group > a::after {
  content: ''; position: absolute; left: 0; bottom: 9px; width: 100%; height: 1px;
  background: var(--gold); transform: scaleX(0); transform-origin: left;
  transition: transform .25s var(--ease-out);
}
.main-nav > a:not(.btn):is(:hover,:focus-visible,[aria-current=page])::after,
.nav-group > a:is(:hover,:focus-visible,[aria-current=page])::after { transform: scaleX(1); }
.nav-group { gap: 4px; }
.nav-group::after { content: ''; position: absolute; left: -20px; right: -20px; top: 100%; height: 12px; }
.submenu-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 40px; padding: 0; border-radius: 3px;
  color: var(--muted); flex: 0 0 32px;
}
.submenu-toggle:hover, .submenu-toggle[aria-expanded=true] { color: var(--gold); background: #d6b23012; }
.submenu-arrow { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; transition: transform .25s var(--ease-out); }
.submenu-toggle[aria-expanded=true] .submenu-arrow { transform: rotate(180deg); }
.dropdown {
  top: calc(100% + 8px); left: -20px; width: 325px; padding: 10px;
  border: 1px solid var(--line); border-top: 2px solid var(--gold);
  border-radius: 0 0 5px 5px; box-shadow: 0 20px 45px #0006;
  animation: menu-enter .22s var(--ease-out) both;
  max-height: min(72vh,560px); overflow-y: auto; overscroll-behavior: contain;
}
.dropdown a { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 11px 14px; border-radius: 3px; line-height: 1.55; }
.dropdown a .arrow { width: 19px; height: 19px; flex-basis: 19px; opacity: 0; translate: -5px 0; transition: opacity .2s, translate .2s; }
.dropdown a:is(:hover,:focus-visible) { color: var(--gold); background: #ffffff08; }
.dropdown a:is(:hover,:focus-visible) .arrow { opacity: 1; translate: 0; transform: none; }
.dropdown a:last-child { margin-top: 7px; padding-top: 17px; border-top: 1px solid var(--line); border-radius: 0; }
.arrow { display: inline-block; width: 28px; height: 28px; flex: 0 0 28px; vertical-align: middle; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; transition: transform .3s var(--ease-out), color .2s; }
.text-link { position: relative; transition: border-color .25s, color .25s; }
.text-link::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: var(--gold); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease-out); }
.text-link:is(:hover,:focus-visible)::after { transform: scaleX(1); }
a:is(:hover,:focus-visible) .arrow { transform: translateX(5px); }
.btn { position: relative; overflow: hidden; box-shadow: 0 0 0 #0000; transition: background .25s, border-color .25s, transform .3s var(--ease-out), box-shadow .3s; }
.btn::after { content: ''; position: absolute; inset: -50% auto -50% -70%; width: 45%; transform: skewX(-20deg); background: linear-gradient(90deg,transparent,#ffffff35,transparent); transition: left .6s var(--ease-out); pointer-events: none; }
.btn:is(:hover,:focus-visible) { transform: translateY(-3px); box-shadow: 0 8px 22px #0003; }
.btn:is(:hover,:focus-visible)::after { left: 130%; }
.btn:active { transform: translateY(0); box-shadow: none; }
.btn-outline { box-shadow: none; }
.service-card { border: 1px solid transparent; transition: border-color .3s, transform .4s var(--ease-out), box-shadow .4s; }
.service-card:is(:hover,:focus-visible) { border-color: #d6b23070; transform: translateY(-7px); box-shadow: 0 16px 32px #0004; }
.card-photo img { transition: transform .75s var(--ease-out); }
.service-card:is(:hover,:focus-visible) .card-photo img { transform: scale(1.045); }
.service-card:is(:hover,:focus-visible) h3, .service-card:is(:hover,:focus-visible) .arrow { color: var(--gold); }
.card-body h3 { transition: color .25s; }
.project-big, .project-small > a { display: block; overflow: hidden; }
.project-big img, .project-small img, .gallery-card button img { transition: transform .85s var(--ease-out), filter .5s; }
.project-big:is(:hover,:focus-visible) img, .project-small > a:is(:hover,:focus-visible) img, .gallery-card button:is(:hover,:focus-visible) img { transform: scale(1.035); filter: brightness(1.06); }
.project-overlay { transition: background .3s, color .3s; }
.project-big:is(:hover,:focus-visible) .project-overlay { background: var(--gold); color: var(--ink); }
.gallery-card { border: 1px solid transparent; transition: border-color .3s; }
.gallery-card:hover, .gallery-card:focus-within { border-color: #d6b23060; }
.gallery-card button { overflow: hidden; }
.gallery-zoom { display: inline-flex; align-items: center; gap: 12px; transition: background .3s, color .3s; border-radius: 2px; }
.gallery-zoom .icon { width: 18px; height: 18px; flex-basis: 18px; }
.gallery-card button:is(:hover,:focus-visible) .gallery-zoom { background: var(--gold); color: var(--ink); }
.filter-btn { transition: background .25s, border-color .25s, color .25s, transform .25s; }
.filter-btn:hover { transform: translateY(-2px); }
.filter-btn:active { transform: none; }
.brand img { transition: transform .35s var(--ease-out); }
.brand:hover img { transform: scale(1.06); }
.phone-link, .contact-item a { transition: color .25s; }
.footer-links a { transition: color .25s, translate .25s; }
.footer-links a:hover, .footer-links a:focus-visible { translate: 4px 0; }
.value-card, .review-card, .scope-panel { border: 1px solid var(--line); }
.value-card { transition: border-color .3s, background .3s; }
.value-card:hover { border-color: #d6b23070; background: #223747; }
.accordion summary { transition: color .2s, background .2s; padding-right: 42px; }
.accordion summary:is(:hover,:focus-visible), .accordion details[open] summary { color: var(--gold); }
.accordion summary::before, .accordion summary::after { content: ''; position: absolute; right: 7px; top: 34px; width: 13px; height: 1.5px; background: var(--gold); border: 0; transition: transform .25s; }
.accordion summary::after { transform: rotate(90deg); }
.accordion details[open] summary::after { content: ''; transform: rotate(0); }
.accordion details[open] p { animation: answer-enter .3s var(--ease-out); }
.field input, .field select, .field textarea { transition: border-color .25s, background .25s, box-shadow .25s; }
.field :is(input,select,textarea):hover { border-color: #607583; }
.field :is(input,select,textarea):focus { border-color: var(--gold); background: #203545; box-shadow: 0 0 0 3px #d6b23012; }
.field:focus-within label { color: var(--gold); }
.field label { transition: color .2s; }
.estimate-form { scroll-margin-top: 24px; }
.contact-breadcrumb { padding-top: 38px; }
.contact-breadcrumb .breadcrumbs { margin-bottom: 0; }
.contact-breadcrumb + .section { padding-top: 55px; }
.close-dialog { display: inline-flex; align-items: center; justify-content: center; border-radius: 3px; }
.close-dialog .icon { width: 22px; height: 22px; flex-basis: 22px; }
.close-dialog:hover { color: var(--gold); border-color: var(--gold); }
.lightbox[open] { animation: dialog-enter .25s var(--ease-out); }
.lightbox[open]::backdrop { animation: backdrop-enter .25s ease; }
.menu-lines { border: 0; height: 20px; }
.menu-lines::before, .menu-lines::after { content: ''; position: absolute; left: 0; top: 6px; width: 22px; height: 1.5px; border: 0; background: currentColor; transition: transform .25s, top .25s; }
.menu-lines::after { top: 14px; }
.menu-toggle[aria-expanded=true] .menu-lines::before { top: 10px; transform: rotate(45deg); }
.menu-toggle[aria-expanded=true] .menu-lines::after { top: 10px; transform: rotate(-45deg); }
.menu-toggle:hover, .menu-toggle[aria-expanded=true] { border-color: var(--gold); color: var(--gold); }
/* Entrance motion never sets a persistent hidden state on content. */
.reveal { opacity: 1; }
@keyframes menu-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes answer-enter { from { opacity: .4; transform: translateY(-5px); } to { opacity: 1; transform: none; } }
@keyframes dialog-enter { from { opacity: 0; transform: translateY(12px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes backdrop-enter { from { opacity: 0; } to { opacity: 1; } }
@media(max-width:1350px) and (min-width:1051px) { .nav-text-us { display: none !important; } .main-nav { gap: 18px; } }
@media(max-width:1250px) { .main-nav { gap: 16px; } }
@media(max-width:1050px) {
  html { scroll-padding-top: 116px; }
  .main-nav { gap: 3px; padding-top: 12px; padding-bottom: 22px; overscroll-behavior: contain; }
  .main-nav, .dropdown { scrollbar-width: thin; scrollbar-color: var(--line) var(--navy); }
  .main-nav.is-open { animation: menu-enter .25s var(--ease-out); }
  .main-nav > a:not(.btn)::after, .nav-group > a::after { display: none; }
  .main-nav > a:not(.btn), .nav-group > a { min-height: 48px; display: flex; align-items: center; }
  .nav-group { gap: 0; }
  .nav-group::after { display: none; }
  .submenu-toggle { width: 48px; height: 48px; flex-basis: 48px; border: 1px solid var(--line); }
  .dropdown { position: static; width: 100%; max-height: none; margin-top: 7px; margin-bottom: 10px; padding: 8px; box-shadow: none; background: #0d1b27; border-top-width: 1px; border-radius: 4px; }
  .dropdown a { padding: 12px; }
  .dropdown a .arrow { opacity: .65; translate: 0; }
}
@media(max-width:760px) { html { scroll-padding-top: 110px; } .gallery-zoom { padding: 8px 11px; gap: 8px; } }
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .btn:is(:hover,:focus-visible), .service-card:is(:hover,:focus-visible), .filter-btn:hover,
  .brand:hover img, .service-card:is(:hover,:focus-visible) .card-photo img,
  .project-big:is(:hover,:focus-visible) img, .project-small > a:is(:hover,:focus-visible) img,
  .gallery-card button:is(:hover,:focus-visible) img { transform: none; }
  .footer-links a:is(:hover,:focus-visible) { translate: none; }
  .btn::after { display: none; }
}
