/* HandyAce shared enhancements */
.ha-back-control{min-width:42px;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 11px;border:1px solid rgba(255,183,125,.22);border-radius:10px;background:rgba(255,183,125,.035);color:#d8c9c0;cursor:pointer;font:700 10px/1 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase;transition:border-color .2s ease,background .2s ease,color .2s ease,transform .2s ease}
.ha-back-control:hover{color:#ffb77d;background:rgba(255,183,125,.08);border-color:rgba(255,183,125,.48);transform:translateY(-1px)}
.ha-back-control .material-symbols-outlined{font-size:18px!important}
.ha-back-control:focus-visible,.v3-visual-link:focus-visible{outline:2px solid #ffb77d;outline-offset:3px}
.v3-visual-link{cursor:pointer;text-decoration:none;color:inherit;transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease}
.v3-visual-link:hover{transform:translateY(-4px);border-color:rgba(255,183,125,.46);box-shadow:0 42px 100px rgba(0,0,0,.44),0 0 0 1px rgba(255,183,125,.05)}
.v3-visual-link>img{transition:transform .45s ease,filter .45s ease}
.v3-visual-link:hover>img{transform:scale(1.035);filter:saturate(.84) contrast(1.03) brightness(.72)}
.v3-visual-cta{margin-top:18px;display:inline-flex;align-items:center;gap:8px;color:#ffb77d;font:700 10px/1 'JetBrains Mono',monospace;letter-spacing:.10em;text-transform:uppercase}
.v3-visual-cta .material-symbols-outlined{font-size:17px!important;transition:transform .2s ease}
.v3-visual-link:hover .v3-visual-cta .material-symbols-outlined{transform:translateX(3px)}
.ha-mobile-home{color:#ffb77d!important;border-bottom-color:rgba(255,183,125,.18)!important}
input.ha-input,select.ha-input,textarea.ha-input{background-color:#111!important;color:#eee7e2!important;border-color:rgba(255,183,125,.22)!important;color-scheme:dark}
input.ha-input[type="email"],input.ha-input[type="tel"],input.ha-input[type="date"],input.ha-input[type="text"],input.ha-input[type="file"]{background-color:#111!important;color:#eee7e2!important;-webkit-text-fill-color:#eee7e2}
input.ha-input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(.85) sepia(.12) saturate(.65);opacity:.82;cursor:pointer}
input.ha-input[type="file"]{padding:8px 10px}
input.ha-input[type="file"]::file-selector-button,input.ha-input[type="file"]::-webkit-file-upload-button{margin-right:12px;padding:8px 12px;border:1px solid rgba(255,183,125,.32);background:rgba(255,183,125,.08);color:#ffb77d;font:700 10px/1 'JetBrains Mono',monospace;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
input.ha-input:focus,select.ha-input:focus,textarea.ha-input:focus{border-color:rgba(255,183,125,.75)!important;box-shadow:0 0 0 3px rgba(255,183,125,.08)!important}
input.ha-input:-webkit-autofill,input.ha-input:-webkit-autofill:hover,input.ha-input:-webkit-autofill:focus{-webkit-text-fill-color:#eee7e2;-webkit-box-shadow:0 0 0 1000px #111 inset;caret-color:#eee7e2;transition:background-color 9999s ease-out 0s}
input[type="checkbox"].ha-invalid{outline:2px solid #ff8f8f;outline-offset:3px}
:root{--ha-anchor-offset:120px}
html{scroll-padding-top:var(--ha-anchor-offset)}
.scroll-mt,.scroll-mt-32,#resources,#services,#estimate,#move-estimate,#pm-estimate,#manager-estimate{scroll-margin-top:var(--ha-anchor-offset)!important}
.ha-skip-link{position:fixed;top:10px;left:10px;z-index:200;transform:translateY(-180%);padding:11px 14px;border:1px solid rgba(255,183,125,.75);background:#111;color:#ffb77d;font:700 11px/1 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;transition:transform .18s ease}
.ha-skip-link:focus,.ha-skip-link:focus-visible{transform:translateY(0);outline:2px solid #ffb77d;outline-offset:2px}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role="link"]:focus-visible{outline:2px solid #ffb77d;outline-offset:3px}
/* Tailwind compatibility gaps verified against every current template. */
.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.font-semibold{font-weight:600}
@media(min-width:1024px){.lg\:grid-cols-\[1\.1fr_\.9fr\]{grid-template-columns:1.1fr .9fr}}
@media(max-width:1279px){.ha-back-text{display:none}.ha-back-control{width:42px;padding:0;flex:0 0 42px}}
@media(max-width:767px){.ha-back-control{min-width:40px;width:40px;min-height:40px;height:40px;border-radius:9px}.v3-visual-link:hover{transform:none}.v3-visual-cta{font-size:9px;margin-top:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.ha-mobile-menu,.ha-skip-link,.v3-resource,.v3-visual-cta,.glitch-reveal,.v3-visual-link,.v3-visual-link>img,.v3-visual-cta .material-symbols-outlined,.ha-back-control{transition:none!important;animation:none!important;transform:none!important}}

/* V15 visual regression fixes: restore Tailwind responsive visibility semantics. */
@media(min-width:640px){
  .hidden.sm\:inline{display:inline!important}
  .hidden.sm\:inline-flex{display:inline-flex!important}
}
@media(min-width:768px){
  .hidden.md\:inline-flex{display:inline-flex!important}
}
@media(min-width:1280px){
  .hidden.xl\:flex{display:flex!important}
}
/* Restore the approved pre-V14 hero composition. */
.home-v3 .v3-hero-inner::before,
.home-v3 .v3-hero-inner::after{content:none!important;display:none!important}

/* V16: semantic Tailwind token fallback for legacy/blog/service templates.
   These pages were authored against the Tailwind CDN theme. Keep the token
   classes authoritative after the static-CSS migration so Firefox/Safari do
   not fall back to black/default UI colors on the dark site. */
body{color:#e5e2e1}
.text-primary{color:#ffb77d!important}
.text-on-primary{color:#4d2600!important}
.text-on-background,.text-on-surface{color:#e5e2e1!important}
.text-on-surface-variant{color:#ddc1ae!important}
.text-white{color:#fff!important}
.text-white\/45{color:rgba(255,255,255,.45)!important}
.text-white\/65{color:rgba(255,255,255,.65)!important}
.bg-primary{background-color:#ffb77d!important}
.bg-background,.bg-surface{background-color:#131313!important}
.bg-surface-container-low{background-color:#1c1b1b!important}
.bg-surface-container{background-color:#201f1f!important}
.bg-surface-container-highest{background-color:#353534!important}
.bg-surface-container-low\/45{background-color:rgba(28,27,27,.45)!important}
.bg-surface-container\/40{background-color:rgba(32,31,31,.4)!important}
.bg-surface-container-highest\/45{background-color:rgba(53,53,52,.45)!important}
.bg-outline-variant\/30{background-color:rgba(86,67,52,.3)!important}
.border-outline-variant\/20{border-color:rgba(86,67,52,.2)!important}
.border-outline-variant\/30{border-color:rgba(86,67,52,.3)!important}
.border-outline-variant\/40{border-color:rgba(86,67,52,.4)!important}
.border-primary\/40{border-color:rgba(255,183,125,.4)!important}
.hover\:text-primary:hover{color:#ffb77d!important}
.hover\:text-white:hover{color:#fff!important}
.group:hover .group-hover\:text-primary{color:#ffb77d!important}

/* Firefox native button appearance can otherwise leak through on the Back control. */
.ha-back-control{-webkit-appearance:none;appearance:none;color:#d8c9c0!important;background:rgba(255,183,125,.035)!important;border-color:rgba(255,183,125,.22)!important}
.ha-back-control:hover{color:#ffb77d!important;background:rgba(255,183,125,.08)!important;border-color:rgba(255,183,125,.48)!important}

/* Keep interior-page Back control compact on normal laptop widths. */
@media(max-width:1535px){.ha-back-text{display:none}.ha-back-control{width:42px;padding:0;flex:0 0 42px}}

/* V17: homepage rendering-performance pass.
   Preserve the approved visual hierarchy while avoiding expensive live
   filtering/backdrop sampling during scroll, especially in Firefox/macOS. */
.home-v3 .ha-header{
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  background:rgba(15,15,15,.985);
}
.home-v3 .v3-hero::before{
  -webkit-mask-image:none;
  mask-image:none;
  opacity:.30;
}
.home-v3 .v3-visual{
  box-shadow:0 24px 56px rgba(0,0,0,.30);
}
.home-v3 .v3-visual>img{
  filter:none;
  transform:none;
}
.home-v3 .v3-visual::after{
  background:linear-gradient(180deg,rgba(12,12,12,.32) 25%,rgba(12,12,12,.52) 54%,rgba(12,12,12,.96) 100%);
}
.home-v3 .v3-visual-badge{
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  background:rgba(16,16,16,.94);
}
.home-v3 .v3-visual-card{
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  background:rgba(19,18,17,.96);
}
.home-v3 .v3-visual-link{
  transition:transform .20s ease,border-color .20s ease;
}
.home-v3 .v3-visual-link:hover{
  box-shadow:0 22px 52px rgba(0,0,0,.32);
}
.home-v3 .v3-visual-link>img{
  transition:transform .28s ease;
}
.home-v3 .v3-visual-link:hover>img{
  filter:none;
  transform:scale(1.015);
}

/* V19: real-device mobile polish from iPhone Safari testing. */
@media(max-width:767px){
  body{padding-bottom:calc(58px + env(safe-area-inset-bottom,0px))}
  .ha-mobile-menu.open{
    max-height:calc(100dvh - 102px - env(safe-area-inset-bottom,0px));
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    background:#121212;
    border-bottom:1px solid rgba(255,183,125,.22);
    box-shadow:0 18px 40px rgba(0,0,0,.38)
  }
  .ha-mobile-menu.open>.ha-shell{padding-top:12px!important;padding-bottom:16px!important}
  .ha-mobile-link{min-height:52px;display:flex;align-items:center;padding:0 4px;font-size:16px;line-height:1.25}
  .ha-mobile-menu .ha-primary-btn,.ha-mobile-menu .ha-secondary-btn{min-height:48px}
  .ha-mobile-cta{padding-bottom:env(safe-area-inset-bottom,0px);background:#0e0e0e}
  .ha-mobile-cta a{min-height:58px}
  body:has(.ha-mobile-menu.open) .ha-mobile-cta{transform:translateY(calc(100% + env(safe-area-inset-bottom,0px)));pointer-events:none}
  .home-v3 .v3-hero-inner{padding-bottom:64px}
}
