.elementor-widget-container .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-container .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-149 .elementor-element.elementor-element-8016edb{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-149 .elementor-element.elementor-element-8016edb > .elementor-shape-bottom .elementor-shape-fill, .elementor-149 .elementor-element.elementor-element-8016edb > .e-con-inner > .elementor-shape-bottom .elementor-shape-fill{fill:var( --e-global-color-secondary );}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-button .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-button .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-149 .elementor-element.elementor-element-a70d929 .elementor-button{font-family:"Poppins", Sans-serif;font-weight:700;box-shadow:0px 5px 10px 0px #000000;}.elementor-149 .elementor-element.elementor-element-e66272e{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--padding-top:10px;--padding-bottom:10px;--padding-left:10px;--padding-right:10px;}.elementor-149 .elementor-element.elementor-element-e66272e:not(.elementor-motion-effects-element-type-background), .elementor-149 .elementor-element.elementor-element-e66272e > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-secondary );}.elementor-149 .elementor-element.elementor-element-df96023{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-149 .elementor-element.elementor-element-b05015a{--display:flex;--justify-content:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-site-logo .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-theme-site-logo .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-theme-site-logo .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-149 .elementor-element.elementor-element-5ba8d99{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;}.elementor-149 .elementor-element.elementor-element-5ba8d99 img{height:100px;object-fit:contain;object-position:center center;}.elementor-widget-social-icons .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-social-icons .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-f1b2ac4.elementor-social-icon{background-color:var( --e-global-color-accent );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-f1b2ac4.elementor-social-icon i{color:var( --e-global-color-secondary );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-f1b2ac4.elementor-social-icon svg{fill:var( --e-global-color-secondary );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-8e9f4e7.elementor-social-icon{background-color:var( --e-global-color-accent );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-8e9f4e7.elementor-social-icon i{color:var( --e-global-color-text );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-8e9f4e7.elementor-social-icon svg{fill:var( --e-global-color-text );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-366e6fc.elementor-social-icon{background-color:var( --e-global-color-accent );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-366e6fc.elementor-social-icon i{color:var( --e-global-color-secondary );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-366e6fc.elementor-social-icon svg{fill:var( --e-global-color-secondary );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-3495f2f.elementor-social-icon{background-color:var( --e-global-color-accent );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-3495f2f.elementor-social-icon i{color:var( --e-global-color-cfcd83d );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-repeater-item-3495f2f.elementor-social-icon svg{fill:var( --e-global-color-cfcd83d );}.elementor-149 .elementor-element.elementor-element-24c99c8{--grid-template-columns:repeat(0, auto);text-align:center;--icon-size:20px;--grid-column-gap:10px;--grid-row-gap:0px;}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-social-icon{background-color:var( --e-global-color-primary );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-social-icon i{color:var( --e-global-color-b2b0da4 );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-social-icon svg{fill:var( --e-global-color-b2b0da4 );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-social-icon:hover{background-color:var( --e-global-color-primary );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-social-icon:hover i{color:var( --e-global-color-b2b0da4 );}.elementor-149 .elementor-element.elementor-element-24c99c8 .elementor-social-icon:hover svg{fill:var( --e-global-color-b2b0da4 );}.elementor-widget-text-editor .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-text-editor .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-149 .elementor-element.elementor-element-bfd1de3{text-align:center;color:var( --e-global-color-b2b0da4 );}.elementor-149 .elementor-element.elementor-element-bfd1de3 a{color:var( --e-global-color-b2b0da4 );}.elementor-149 .elementor-element.elementor-element-bfd1de3 a:hover, .elementor-149 .elementor-element.elementor-element-bfd1de3 a:focus{color:var( --e-global-color-primary );}.elementor-widget-html .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-html .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-149 .elementor-element.elementor-element-c28b3d9{--display:flex;--flex-direction:column;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;}.elementor-widget-heading .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-heading .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );text-transform:var( --e-global-typography-primary-text-transform );color:var( --e-global-color-primary );}.elementor-widget-icon-list .eael-protected-content-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-icon-list .protected-content-error-msg{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-icon-list .elementor-icon-list-item:not(:last-child):after{border-color:var( --e-global-color-text );}.elementor-widget-icon-list .elementor-icon-list-icon i{color:var( --e-global-color-primary );}.elementor-widget-icon-list .elementor-icon-list-icon svg{fill:var( --e-global-color-primary );}.elementor-widget-icon-list .elementor-icon-list-item > .elementor-icon-list-text, .elementor-widget-icon-list .elementor-icon-list-item > a{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-widget-icon-list .elementor-icon-list-text{color:var( --e-global-color-secondary );}.elementor-149 .elementor-element.elementor-element-f9da9f8 .elementor-icon-list-icon i{transition:color 0.3s;}.elementor-149 .elementor-element.elementor-element-f9da9f8 .elementor-icon-list-icon svg{transition:fill 0.3s;}.elementor-149 .elementor-element.elementor-element-f9da9f8{--e-icon-list-icon-size:14px;--icon-vertical-offset:0px;}.elementor-149 .elementor-element.elementor-element-f9da9f8 .elementor-icon-list-text{color:var( --e-global-color-b2b0da4 );transition:color 0.3s;}.elementor-149 .elementor-element.elementor-element-e40e816{--display:flex;}.elementor-149 .elementor-element.elementor-element-e41649a{text-align:center;}.elementor-149 .elementor-element.elementor-element-9dd6ec3 .elementor-icon-list-icon i{transition:color 0.3s;}.elementor-149 .elementor-element.elementor-element-9dd6ec3 .elementor-icon-list-icon svg{transition:fill 0.3s;}.elementor-149 .elementor-element.elementor-element-9dd6ec3{--e-icon-list-icon-size:14px;--icon-vertical-offset:0px;}.elementor-149 .elementor-element.elementor-element-9dd6ec3 .elementor-icon-list-text{color:var( --e-global-color-b2b0da4 );transition:color 0.3s;}.elementor-149 .elementor-element.elementor-element-e7f515c{--display:flex;--flex-direction:row;--container-widget-width:initial;--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:space-between;}.elementor-149 .elementor-element.elementor-element-e7f515c:not(.elementor-motion-effects-element-type-background), .elementor-149 .elementor-element.elementor-element-e7f515c > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-primary );}.elementor-149 .elementor-element.elementor-element-f6c8879{color:var( --e-global-color-753fd0c );}.elementor-149 .elementor-element.elementor-element-227c89f{color:var( --e-global-color-b2b0da4 );}.elementor-149 .elementor-element.elementor-element-227c89f a{color:var( --e-global-color-b2b0da4 );}.elementor-149 .elementor-element.elementor-element-227c89f a:hover, .elementor-149 .elementor-element.elementor-element-227c89f a:focus{color:var( --e-global-color-secondary );}.elementor-theme-builder-content-area{height:400px;}.elementor-location-header:before, .elementor-location-footer:before{content:"";display:table;clear:both;}@media(min-width:768px){.elementor-149 .elementor-element.elementor-element-b05015a{--width:30%;}.elementor-149 .elementor-element.elementor-element-c28b3d9{--width:40%;}.elementor-149 .elementor-element.elementor-element-e40e816{--width:30%;}}@media(max-width:767px){.elementor-149 .elementor-element.elementor-element-8016edb{--min-height:56px;--margin-top:-56px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-149 .elementor-element.elementor-element-8016edb > .elementor-shape-bottom svg, .elementor-149 .elementor-element.elementor-element-8016edb > .e-con-inner > .elementor-shape-bottom svg{width:calc(100% + 1.3px);height:30px;}.elementor-149 .elementor-element.elementor-element-a70d929{width:100%;max-width:100%;padding:5px 5px 5px 5px;}.elementor-149 .elementor-element.elementor-element-a70d929.elementor-element{--align-self:center;}.elementor-149 .elementor-element.elementor-element-a70d929 .elementor-button{font-size:16px;padding:15px 15px 15px 15px;}.elementor-149 .elementor-element.elementor-element-e66272e{--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );}.elementor-149 .elementor-element.elementor-element-b05015a{--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );}.elementor-149 .elementor-element.elementor-element-5ba8d99 img{height:50px;}.elementor-149 .elementor-element.elementor-element-24c99c8{--icon-size:15px;}.elementor-149 .elementor-element.elementor-element-9dd6ec3.elementor-element{--align-self:center;}.elementor-149 .elementor-element.elementor-element-e7f515c{--justify-content:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;}.elementor-149 .elementor-element.elementor-element-f6c8879{text-align:center;}}/* Start custom CSS *//* site-wide hero helpers (A1A service + city heroes) */
/* hide Calendly's inner scrollbar: widen the iframe and clip the bar off the card edge */
#a1sb #a1sb-cal{overflow:hidden}
#a1sb #a1sb-cal iframe{width:calc(100% + 20px) !important;max-width:none !important;right:auto !important}
/* service (94cdd52) and service-area / city (9985a13) heroes: 90vh tall on desktop (was capped at 820px) */
@media (min-width:1025px){html body .elementor-element.elementor-element-94cdd52,html body .elementor-element.elementor-element-9985a13{min-height:90vh !important}}
/* service hero background video (#a1sv): no blur - the static 2.5px blur and the blurred start of the a1s-zoom entrance are both overridden (!important beats the animation); the zoom itself still plays */
html body #a1sv video{filter:none !important}
/* appear on scroll, same as the homepage (post 14 has its own copy): on desktop the page sections fade up and settle in as they enter the screen, starting from the second section after the hero (the hero and the section right below it stay put). Scroll-driven CSS only (no script), skipped on phones/tablets, for reduced motion and in browsers without scroll timelines. The Gravity Forms popup components between sections are left alone; the products block (#a1p-wrap) is included */
@media (min-width:1025px) and (prefers-reduced-motion:no-preference){
@supports (animation-timeline: view()){
html body [data-elementor-type="wp-page"]:not(.elementor-14)>.e-con.e-parent:first-child~.e-con.e-parent~:is(.e-con.e-parent,#a1p-wrap){animation:a1-sec-in linear none;animation-timeline:view();animation-range:entry 0% entry 55%}
}
}
@keyframes a1-sec-in{from{opacity:0;translate:0 90px;scale:.96}}
/* eyebrows site-wide in Nunito Sans, all caps. Every V3 eyebrow is a heading widget set to auto width with a div/p/span tag (the service hero one draws its text on ::after; the city hero one has its own stronger rule, matched by the 9985a13 line); the V4 ones are the first paragraph of the products head (#a1p-head) and of the box above the 3D explorer. Size, weight and colour stay as they were */
html body .elementor-widget-heading.elementor-widget__width-auto :is(div,p,span).elementor-heading-title,
html body .elementor-widget-heading.elementor-widget__width-auto :is(div,p,span).elementor-heading-title::after,
html body .elementor-element.elementor-element-9985a13 .elementor-element.elementor-widget-heading.elementor-widget__width-auto .elementor-heading-title,
html body #a1p-head>p:first-child,
html body .e-con:has(+ .e-con #a1gd-explorer)>p.e-paragraph-base:first-child{font-family:"Nunito Sans",sans-serif !important;text-transform:uppercase !important}
/* eyebrows: 20px rounded corners everywhere (section pills carry their colour on the widget, hero pills on the text) */
html body .elementor-widget-heading.elementor-widget__width-auto:has(:is(div,p,span).elementor-heading-title),
html body .elementor-widget-heading.elementor-widget__width-auto :is(div,p,span).elementor-heading-title,
html body .elementor-element.elementor-element-9985a13 .elementor-element.elementor-widget-heading.elementor-widget__width-auto .elementor-heading-title,
html body #a1p-head>p:first-child,
html body .e-con:has(+ .e-con #a1gd-explorer)>p.e-paragraph-base:first-child{border-radius:20px !important}
/* eyebrows on phones: 13px text, centred pill (the service hero one keeps its 0px title and sizes the ::after text); padding 5px top, 30px sides, 0 bottom - on the widget for the section pills, on the text for the hero pills (homepage 83218c1 incl. its own dc5ed31 rule, service 94cdd52, city 9985a13) and the V4 paragraphs */
@media (max-width:767px){
html body .elementor-widget-heading.elementor-widget__width-auto:has(:is(div,p,span).elementor-heading-title){align-self:center !important;justify-self:center !important;margin-left:auto !important;margin-right:auto !important}
html body .elementor-widget-heading.elementor-widget__width-auto :is(div,p,span).elementor-heading-title:not(.elementor-element-a635d32 *),
html body .elementor-widget-heading.elementor-widget__width-auto :is(div,p,span).elementor-heading-title::after,
html body .elementor-element.elementor-element-9985a13 .elementor-element.elementor-widget-heading.elementor-widget__width-auto .elementor-heading-title,
html body #a1p-head>p:first-child,
html body .e-con:has(+ .e-con #a1gd-explorer)>p.e-paragraph-base:first-child{font-size:13px !important;text-align:center !important}
html body .elementor-widget-heading.elementor-widget__width-auto:has(:is(div,p,span).elementor-heading-title):not(:is(.elementor-element-83218c1,.elementor-element-94cdd52,.elementor-element-9985a13) *),
html body :is(.elementor-element-83218c1,.elementor-element-94cdd52) .elementor-widget-heading.elementor-widget__width-auto :is(div,p,span).elementor-heading-title,
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-dc5ed31 .elementor-heading-title,
html body .elementor-element.elementor-element-9985a13 .elementor-element.elementor-widget-heading.elementor-widget__width-auto .elementor-heading-title,
html body #a1p-head>p:first-child,
html body .e-con:has(+ .e-con #a1gd-explorer)>p.e-paragraph-base:first-child{padding:5px 30px 0 30px !important}
}
/* service-area / city hero (9985a13): slow zoom-and-pan on the background photo, up to 15% zoom. The photo is copied onto ::after (inherits each page's own image) and only that layer moves (transform only, GPU-cheap); the hero is isolated so the layer sits above the static photo but below the ::before vignette and the content. Pans stay inside the zoomed margin so no edge ever shows */
@keyframes a1c-kb{0%{transform:scale(1) translate(0,0)}35%{transform:scale(1.09) translate(-3%,-1.5%)}70%{transform:scale(1.15) translate(2.5%,1.5%)}100%{transform:scale(1.15) translate(-2%,2%)}}
html body .elementor-element.elementor-element-9985a13{isolation:isolate}
html body .elementor-element.elementor-element-9985a13::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:inherit;background-size:cover;background-position:inherit;background-repeat:no-repeat;transform-origin:50% 50%;will-change:transform;animation:a1c-kb 24s ease-in-out infinite alternate}
@media (prefers-reduced-motion:reduce){html body .elementor-element.elementor-element-9985a13::after{animation:none}}
/* service-page H1 replacement: V4 #a1s-h1 replaces the V3 heading d1d3873 */
.elementor-element-57d000b:has(#a1s-h1)>.elementor-element-d1d3873{display:none !important}
#a1s-h1{margin:0 0 clamp(22px,3.4vh,34px) !important;padding:0 !important;font-family:"Nunito Sans",sans-serif !important;font-weight:800 !important;
font-size:clamp(34px,4.2vw,60px) !important;line-height:1.04 !important;letter-spacing:-.015em !important;text-transform:none;text-align:left;
color:#fff;text-shadow:0 12px 50px rgba(2,10,35,.55);background:linear-gradient(180deg,#fff 55%,#ffd9b8);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
@media (max-width:1024px){#a1s-h1{text-align:center;font-size:clamp(30px,7vw,46px) !important}}
/* performance: the service / city hero H1 is the page's largest paint - slide it in but keep it visible from the first frame (the old fade from opacity 0 + blur added ~4 s to mobile LCP) */
html body #a1s-h1,html body .elementor-element.elementor-element-9985a13 .elementor-element.elementor-element-e666c8a{animation:a1s-h1-in .9s cubic-bezier(.16,.84,.24,1) .1s backwards !important}
@keyframes a1s-h1-in{from{transform:translateY(24px)}}
@media (prefers-reduced-motion:reduce){html body #a1s-h1,html body .elementor-element.elementor-element-9985a13 .elementor-element.elementor-element-e666c8a{animation:none !important}}
/* symbols as literal characters: saving page CSS through publish strips CSS backslash escapes (25CF / 2192 escapes turned into plain text), so these overrides use the real glyphs */
html body #a1sb::after{content:"●  OPEN TODAY"}
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-84e1102::after{content:"●  OPEN TODAY"}
html body #a1p [id^=a1p-grid] p::after{content:"→"}
/* 3D service explorer (global widget 1800): until its lazy script runs and sets --a1-vw, the full-bleed viewer fell back to 100vw, which includes the vertical scrollbar = horizontal scrollbar. The explorer root is made an inline-size container so the fallback can be its exact full width (content + 16px padding each side) = the same width the script sets, so nothing moves when it loads */
html body #a1gd-explorer{container-type:inline-size}
html body #a1gd-explorer:not([style*="--a1-vw"]) .a1gd-viewer{width:calc(100cqw + 32px) !important;margin-left:calc(50% - (100cqw + 32px) / 2) !important}
/* homepage: "Serving Novato and Nearby Marin Communities" H2 (V3 heading 20c8620 on the navy section) in white */
html body .elementor-element.elementor-element-20c8620 .elementor-heading-title{color:#fff !important;-webkit-text-fill-color:#fff !important}
/* homepage hero on tablets / phones: the empty row that showed the photo between the buttons and the booking card is now a small gap */
@media (max-width:1024px){html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-27951e2{grid-template-rows:auto auto auto auto 28px auto auto !important}}
/* homepage hero, wide screens (16:10 and wider): the mirrored copy of the scene and the blur strip are gone. #a1h-l-mid::before is reused as a foliage cover layer over the empty left gap: two enlarged treeline copies, faded out over 320px so they melt across the photo's left edge; the photo keeps its own 160px soft left edge. Trees and house keep their original size and placement */
@media (min-width:1025px) and (min-aspect-ratio:16/10){
html body #a1h-l-mid::after{content:none !important;display:none !important}
html body #a1h-i-mid{-webkit-mask-image:linear-gradient(90deg,transparent,#000 160px) !important;mask-image:linear-gradient(90deg,transparent,#000 160px) !important}
html body #a1h-l-mid::before{content:"" !important;display:block !important;position:absolute !important;z-index:1 !important;transform:none !important;filter:none !important;top:0 !important;bottom:0 !important;left:0 !important;height:auto !important;width:calc(100cqw - var(--fw) + 320px) !important;
background:url(/wp-content/uploads/2026/11/a1a-hero-trees-v3.webp) 100% 62%/auto 165% no-repeat,url(/wp-content/uploads/2026/11/a1a-hero-trees-v3.webp) 100% 100%/auto 110% no-repeat !important;
-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 320px),transparent) !important;mask-image:linear-gradient(90deg,#000 calc(100% - 320px),transparent) !important}
}
/* homepage hero, desktop: progressive blur from the left edge of the screen to where the H1 ends - about 25px at the edge easing to sharp at the H1's right edge (content column left + 480px H1 column). Two stacked backdrop blurs with staggered fades on the scene shade layer; the text sits above the scene so it stays crisp */
@media (min-width:1025px){
html body #a1h-shade::before,html body #a1h-shade::after{content:"";position:absolute;top:0;bottom:0;left:0;pointer-events:none;width:calc(max(var(--px), (100% - 974px) / 2) + 480px)}
html body #a1h-shade::before{-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);-webkit-mask-image:linear-gradient(90deg,#000 0%,transparent 75%);mask-image:linear-gradient(90deg,#000 0%,transparent 75%)}
html body #a1h-shade::after{-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);-webkit-mask-image:linear-gradient(90deg,#000 30%,transparent 100%);mask-image:linear-gradient(90deg,#000 30%,transparent 100%)}
}
/* products section (#a1p, homepage + city pages + Installation / Opener copies): 3em of space above and below */
html body #a1p{padding-top:3em !important;padding-bottom:3em !important}
/* products section (#a1p): brand logo in each brand tab; the brand name stays in the markup for screen readers. Tab order: CHI, Amarr, Clopay, Martin, LiftMaster */
#a1p #a1p-menu [role=tab]{padding:8px 14px 8px 8px !important}
#a1p #a1p-menu [role=tab] p{font-size:0 !important;gap:0}
#a1p #a1p-menu [role=tab] p span{margin-left:10px}
#a1p #a1p-menu [role=tab] p::before{content:"";flex:0 0 auto;width:112px;height:38px;padding:5px 10px;box-sizing:border-box;
background:var(--a1p-logo) center/contain no-repeat;background-origin:content-box}
#a1p #a1p-menu [role=tab]:nth-child(1) p::before{--a1p-logo:url(/wp-content/uploads/2023/08/CHI-logo-300x91.jpg)}
#a1p #a1p-menu [role=tab]:nth-child(2) p::before{--a1p-logo:url(/wp-content/uploads/2023/08/amarr-300x118.jpg)}
#a1p #a1p-menu [role=tab]:nth-child(3) p::before{--a1p-logo:url(/wp-content/uploads/2024/03/clopay.png)}
#a1p #a1p-menu [role=tab]:nth-child(4) p::before{--a1p-logo:url(/wp-content/uploads/2026/02/Martin-300x88.png)}
#a1p #a1p-menu [role=tab]:nth-child(5) p::before{--a1p-logo:url(/wp-content/uploads/2023/08/liftmaster.jpg)}
/* tabs stay white so the logo sits seamlessly; hover / selected change only the tab border and the count badge */
#a1p #a1p-menu [role=tab],#a1p #a1p-menu [role=tab]:hover,#a1p #a1p-menu [role=tab][aria-selected=true]{background:#fff !important;color:var(--a1p-ink) !important;box-shadow:inset 0 0 0 2px transparent}
#a1p #a1p-menu [role=tab]:hover{box-shadow:inset 0 0 0 2px rgba(0,49,139,.3)}
#a1p #a1p-menu [role=tab]:hover p span{background:rgba(0,49,139,.16);color:var(--a1p-navy)}
#a1p #a1p-menu [role=tab][aria-selected=true]{box-shadow:inset 0 0 0 2px var(--a1p-navy),0 10px 24px -14px rgba(0,49,139,.7)}
#a1p #a1p-menu [role=tab][aria-selected=true] p span{background:var(--a1p-navy);color:#fff}
/* phones: centred logo grid (3 + 2, or 2 x 2 for four brands), rounded-rectangle tabs so the border never clips, counts hidden */
@media (max-width:767px){
#a1p #a1p-menu{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:6px;border-radius:20px}
#a1p #a1p-menu [role=tab]{grid-column:span 2;width:auto;min-width:0;border-radius:14px !important;justify-content:center;padding:6px !important}
#a1p #a1p-menu [role=tab]:nth-child(4):nth-last-child(2){grid-column:2/4}
#a1p #a1p-menu [role=tab]:nth-child(5){grid-column:4/6}
#a1p #a1p-menu:not(:has(>:nth-child(5))) [role=tab]{grid-column:span 3}
#a1p #a1p-menu [role=tab] p{width:100%;justify-content:center}
#a1p #a1p-menu [role=tab] p::before{width:100%;max-width:104px;height:34px;padding:3px 4px}
#a1p #a1p-menu [role=tab] p span{display:none}
}
/* homepage hero trust badges (post 14): two V4 badges inside the Marin badge e8b5acb, stacked above it; all three share one metallic black icon button; labels in Nunito Sans */
body .elementor-element.elementor-element-83218c1 .elementor-element-e8b5acb>#a1h-bg-google,body .elementor-element.elementor-element-83218c1 .elementor-element-e8b5acb>#a1h-bg-247{display:flex;flex-direction:column;align-items:center;gap:12px;padding:0;margin:0 0 18px;min-height:0;width:auto;background:none;order:-1}
body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-e8b5acb{gap:12px !important}
#a1h-bg-google-i,#a1h-bg-247-i,body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ea15edc .elementor-icon{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z'/%3E%3C/svg%3E");display:block;width:60px !important;height:60px !important;padding:0;margin:0;min-height:0;flex:0 0 auto;border-radius:50%;
position:relative;transition:transform .5s cubic-bezier(.34,1.56,.64,1),box-shadow .4s;background:radial-gradient(90% 60% at 50% 0%,rgba(255,255,255,.42),rgba(255,255,255,0) 60%),conic-gradient(from 210deg at 50% 50%,#1b1d21,#4a4e56 12%,#15171a 30%,#3b3e45 52%,#101114 70%,#4a4e56 86%,#1b1d21);
border:1px solid rgba(255,255,255,.22);box-sizing:border-box;
box-shadow:0 0 0 3px rgba(10,12,16,.55),0 0 0 4px rgba(255,255,255,.1),0 12px 26px -8px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.45),inset 0 -4px 8px rgba(0,0,0,.65)}
#a1h-bg-247-i{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 6.5V12l3.5 2'/%3E%3C/svg%3E")}
body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ea15edc .elementor-icon{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E")}
body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ea15edc .elementor-icon svg{display:none !important}
#a1h-bg-google p,#a1h-bg-247 p,html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-7b7d681 .elementor-heading-title{margin:0;font:800 11px/1 "Nunito Sans",sans-serif !important;letter-spacing:.04em !important;text-transform:uppercase;color:#fff;white-space:nowrap;text-shadow:0 2px 10px rgba(0,0,0,.75)}
/* glyph on ::before so it can move on its own; ::after is the hover ripple ring */
#a1h-bg-google-i::before,#a1h-bg-247-i::before,body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ea15edc .elementor-icon::before,#a1h-bg-google-i::after,#a1h-bg-247-i::after,body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ea15edc .elementor-icon::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none}
#a1h-bg-google-i::before,#a1h-bg-247-i::before,body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ea15edc .elementor-icon::before{background:var(--ico) center/28px no-repeat}
#a1h-bg-google-i::after,#a1h-bg-247-i::after,body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ea15edc .elementor-icon::after{border:2px solid rgba(255,255,255,.6);opacity:0}
#a1h-bg-google p,#a1h-bg-247 p,body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-7b7d681 .elementor-heading-title{transition:letter-spacing .4s cubic-bezier(.16,.84,.24,1),color .3s}
/* hover (mouse only): button springs up, a ring ripples out, each glyph does its own move, label opens up */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
#a1h-bg-google:hover>#a1h-bg-google-i,#a1h-bg-247:hover>#a1h-bg-247-i,body .elementor-element.elementor-element-83218c1 .elementor-element-e8b5acb:has(>.elementor-element-ea15edc:hover,>.elementor-element-7b7d681:hover) .elementor-element-ea15edc .elementor-icon{transform:translateY(-4px) scale(1.1);box-shadow:0 0 0 3px rgba(10,12,16,.55),0 0 0 4px rgba(255,255,255,.28),0 18px 34px -8px rgba(0,0,0,.95),0 0 26px -2px rgba(255,255,255,.28),inset 0 1px 1px rgba(255,255,255,.6),inset 0 -4px 8px rgba(0,0,0,.65)}
#a1h-bg-google:hover>#a1h-bg-google-i::after,#a1h-bg-247:hover>#a1h-bg-247-i::after,body .elementor-element.elementor-element-83218c1 .elementor-element-e8b5acb:has(>.elementor-element-ea15edc:hover,>.elementor-element-7b7d681:hover) .elementor-element-ea15edc .elementor-icon::after{animation:a1h-ring 1.3s cubic-bezier(.16,.84,.24,1) infinite}
#a1h-bg-google:hover>#a1h-bg-google-i::before{animation:a1h-twinkle .8s cubic-bezier(.34,1.56,.64,1)}
#a1h-bg-247:hover>#a1h-bg-247-i::before{animation:a1h-tick .9s cubic-bezier(.65,0,.35,1)}
body .elementor-element.elementor-element-83218c1 .elementor-element-e8b5acb:has(>.elementor-element-ea15edc:hover,>.elementor-element-7b7d681:hover) .elementor-element-ea15edc .elementor-icon::before{animation:a1h-drop .9s cubic-bezier(.34,1.56,.64,1)}
#a1h-bg-google:hover p,#a1h-bg-247:hover p,body .elementor-element.elementor-element-83218c1 .elementor-element-e8b5acb:has(>.elementor-element-ea15edc:hover,>.elementor-element-7b7d681:hover) .elementor-element-7b7d681 .elementor-heading-title{letter-spacing:.07em !important;color:#ffd9b8 !important}
}
@keyframes a1h-ring{0%{transform:scale(1);opacity:.85}100%{transform:scale(1.9);opacity:0}}
@keyframes a1h-twinkle{0%{transform:rotate(0) scale(1)}45%{transform:rotate(144deg) scale(1.3)}100%{transform:rotate(216deg) scale(1)}}
@keyframes a1h-tick{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
@keyframes a1h-drop{0%{transform:translateY(0)}30%{transform:translateY(-5px)}55%{transform:translateY(1px) scaleY(.9)}75%{transform:translateY(-2px)}100%{transform:translateY(0)}}
/* Nunito labels run wider than the 160px badge column: nudge the stack 14px right so they clear the Calendly card */
@media (min-width:1025px){html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-e265ade>.elementor-element.elementor-element-e8b5acb{left:calc(100% + 348px) !important}}
/* homepage hero reviews card (desktop): sized to its review with even 15px on all sides - Trustindex's rating footer hidden and its 15px bottom margin removed; the card is 272px tall (reserved up front so it doesn't shift when Trustindex loads). The left column (eyebrow down) moves 70px lower so the card's bottom still lines up with the Calendly card and badges */
@media (min-width:1025px){
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ad0cf11{min-height:272px !important;height:auto !important}
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ad0cf11 .ti-footer{display:none !important}
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-ad0cf11 .ti-widget-container{margin-bottom:0 !important}
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-dc5ed31{margin-top:70px !important}
}
/* performance: lazy Calendly. Global widget 1371 (home / emergency / safety) uses .a1-cal-slot, the V4 booking cards on the 8 service + 10 city pages use .a1-cal-lazy (site-wide Custom Code loader). Size the slot like the widget and show the A1A logo gently pulsing over a thin navy loading bar. The logo stays after the loader swaps in Calendly (phones start it on the first scroll, so the calendar is still blank for a moment): it sits under the Calendly iframe, which covers it once the calendar paints, and its animation stops when Calendly removes its spinner (the spinner itself is hidden) */
.a1-cal-slot{position:relative}
.a1-cal-slot::before,#a1sb-cal.a1-cal-lazy::before,.calendly-inline-widget::before{content:"";position:absolute;z-index:0;inset:0;margin:auto;width:132px;height:80px;pointer-events:none;background:url(/wp-content/uploads/2026/02/A1A-Logo.png) center/contain no-repeat;animation:a1-cal-logo 1.8s ease-in-out infinite}
.a1-cal-slot::after,#a1sb-cal.a1-cal-lazy::after,.calendly-inline-widget::after{content:"";position:absolute;z-index:0;left:50%;top:calc(50% + 58px);width:64px;height:3px;margin-left:-32px;border-radius:3px;pointer-events:none;background:linear-gradient(90deg,transparent,#00318b,transparent) 0 0/50% 100% no-repeat,rgba(0,49,139,.12);animation:a1-cal-bar 1.2s ease-in-out infinite}
.calendly-inline-widget>iframe{z-index:1}
.calendly-inline-widget:not(#a1sb-cal)>iframe{position:relative}
.calendly-inline-widget>.calendly-spinner{display:none !important}
.calendly-inline-widget:not(:has(>.calendly-spinner))::before,.calendly-inline-widget:not(:has(>.calendly-spinner))::after{animation:none;opacity:0}
@media (max-width:1024px){html body .elementor-element.elementor-element-84e1102 .calendly-inline-widget{position:relative}}
@keyframes a1-cal-logo{0%,100%{transform:scale(.94);opacity:.55}50%{transform:scale(1);opacity:1}}
@keyframes a1-cal-bar{0%{background-position:-100% 0,0 0}100%{background-position:200% 0,0 0}}
@media (prefers-reduced-motion:reduce){.a1-cal-slot::before,#a1sb-cal.a1-cal-lazy::before,.a1-cal-slot::after,#a1sb-cal.a1-cal-lazy::after,.calendly-inline-widget::before,.calendly-inline-widget::after{animation:none}}
@media (min-width:1025px){html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-84e1102 .a1-cal-slot{position:absolute !important;inset:0 !important;height:auto !important;min-width:0 !important}}
@media (max-width:1024px){html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-84e1102 .a1-cal-slot{height:680px !important;min-width:0 !important}}
body .elementor-element:is(.elementor-element-0af1ccc,.elementor-element-f1ef287) .a1-cal-slot{position:absolute !important;inset:0;height:auto !important;min-width:0 !important}
/* booking cards on phones: calendar area 540px (month grid + the full time zone picker, with room for a 6-week month), card 598px with its 58px header; was 680 / 738 */
@media (max-width:767px){
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-84e1102 :is(.a1-cal-slot,.calendly-inline-widget){height:540px !important}
html body #a1sb{height:598px !important}
html body .elementor-element.elementor-element-94cdd52 .elementor-element:is(.elementor-element-0af1ccc,.elementor-element-f1ef287){height:598px !important}
}
/* performance: header (template 75) - keep the nav menu and the call button on one line while the web fonts load; the wider fallback font wrapped them and the header jumped from 2 rows to 1 (~0.24 layout shift) */
[data-elementor-id="75"] .elementor-element-4c1f5bc .elementor-nav-menu{flex-wrap:nowrap !important}
[data-elementor-id="75"] .elementor-element-384c8f0 .elementor-button,[data-elementor-id="75"] .elementor-element-384c8f0 .elementor-button-text{white-space:nowrap !important}
/* homepage hero eyebrow shows the brand tagline. The text is swapped here because dc5ed31 is a global widget that also feeds the About page hero */
html body .elementor-14 .elementor-element.elementor-element-dc5ed31.elementor-widget :is(div,p,span).elementor-heading-title{font-size:0 !important;letter-spacing:0 !important}
html body .elementor-14 .elementor-element.elementor-element-dc5ed31.elementor-widget :is(div,p,span).elementor-heading-title::after{content:"Here for You Through the Ups and Downs";font-size:14px;line-height:14px;letter-spacing:.14em;font-weight:700}
@media (max-width:767px){html body .elementor-14 .elementor-element.elementor-element-dc5ed31.elementor-widget :is(div,p,span).elementor-heading-title::after{font-size:12px !important;line-height:1.45;letter-spacing:.06em}}
/* booking card title: short label so it never collides with the OPEN TODAY badge on narrow cards / browsers without zoom */
html body #a1sb::before{content:"BOOK ONLINE";white-space:nowrap}
/* same short title + real bullet for the homepage card (84e1102) and the Emergency/Safety V3 cards */
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-84e1102::before,html body .elementor-element.elementor-element-94cdd52 .elementor-element:is(.elementor-element-0af1ccc,.elementor-element-f1ef287)::before{content:"BOOK ONLINE";white-space:nowrap}
html body .elementor-element.elementor-element-83218c1 .elementor-element.elementor-element-84e1102::after,html body .elementor-element.elementor-element-94cdd52 .elementor-element:is(.elementor-element-0af1ccc,.elementor-element-f1ef287)::after{content:"●  OPEN TODAY";white-space:nowrap}/* End custom CSS */