/* Autobody Elementor Widgets v1.1 — dark / red design system.
   Accent = --ab-accent (Settings → Autobody; per-widget override in Style tab).
   Classes prefixed km- are hooks the template assigns to native Elementor widgets. */
:root{--ab-accent:#e3192f;--ab-accent-dark:#a80f21;--ab-accent-fg:#fff;
  --ab-bg:#0b0c0e;--ab-panel:#141619;--ab-panel2:#1c1f23;--ab-fg:#f2f2f0;--ab-muted:#a2a6ad;--ab-line:#2a2e34;
  --ab-display:"Oswald","Arial Narrow",Impact,sans-serif;--ab-body:"Barlow","Helvetica Neue",Arial,sans-serif;--ab-ease:cubic-bezier(.2,.7,.2,1)}
[class^="ab-"],[class*=" ab-"]{box-sizing:border-box}

/* ---------- site-wide (only when "Dark theme CSS" is on in Settings) ---------- */
body.ab-dark{background:var(--ab-bg);color:var(--ab-fg);font-family:var(--ab-body)}
body.ab-dark h1,body.ab-dark h2,body.ab-dark h3,body.ab-dark h4{font-family:var(--ab-display);text-transform:uppercase;letter-spacing:.01em;line-height:1.05;color:var(--ab-fg)}
body.ab-dark .elementor-widget-text-editor,body.ab-dark p{color:inherit}
body.ab-dark a{color:inherit}
body.ab-dark .site-header,body.ab-dark .ast-primary-header-bar,body.ab-dark .ast-above-header-bar{background:rgba(11,12,14,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--ab-line)}
body.ab-dark .main-header-menu a{color:var(--ab-muted)}
body.ab-dark .main-header-menu a:hover{color:#fff}
body.ab-dark .ast-mobile-menu-buttons .menu-toggle{color:#fff}
body.ab-dark .site-footer{background:#000}
body.ab-dark.elementor-page .entry-header,body.ab-dark.elementor-page .ast-single-post-featured-section{display:none}
body.ab-dark ::selection{background:var(--ab-accent);color:#fff}

/* ---------- headings with red rule ---------- */
.km-h2 .elementor-heading-title::after{content:"";display:block;width:56px;height:4px;background:var(--ab-accent);margin-top:14px;transform-origin:left;transition:transform .6s .2s var(--ab-ease)}
.km-h2.elementor-invisible .elementor-heading-title::after{transform:scaleX(0)}
.km-center .elementor-heading-title::after{margin-inline:auto}
.km-kicker .elementor-heading-title{font-family:var(--ab-display)!important;font-weight:600!important;text-transform:uppercase;letter-spacing:.14em;font-size:13px!important;color:var(--ab-accent)!important}
.km-muted,.km-muted p{color:var(--ab-muted)}

/* ---------- buttons (native Elementor button + ab-btn) ---------- */
.ab-btn,.km-btn .elementor-button{display:inline-flex;align-items:center;gap:10px;background:var(--ab-accent);color:var(--ab-accent-fg)!important;font-family:var(--ab-display)!important;font-weight:600!important;text-transform:uppercase;letter-spacing:.08em;font-size:16px;padding:14px 24px!important;text-decoration:none!important;border:0;border-radius:0!important;cursor:pointer;line-height:1.2;position:relative;overflow:hidden;isolation:isolate;transition:color .25s;clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%)}
.ab-btn::before,.km-btn .elementor-button::before{content:"";position:absolute;inset:0;background:#fff;transform:translateX(-101%);transition:transform .35s var(--ab-ease);z-index:-1}
.ab-btn:hover::before,.km-btn .elementor-button:hover::before{transform:none}
.ab-btn:hover,.km-btn .elementor-button:hover{color:var(--ab-accent)!important;background:var(--ab-accent)}
.km-btn-ghost .elementor-button{background:transparent;border:2px solid var(--ab-fg);clip-path:none}
.km-btn-ghost .elementor-button::before{background:var(--ab-fg)}
.km-btn-ghost .elementor-button:hover{color:#000!important;background:transparent}
.km-call .elementor-button-icon svg,.km-call .elementor-button-icon i{transform-origin:50% 60%}
.km-call .elementor-button:hover .elementor-button-icon svg,.km-call .elementor-button:hover .elementor-button-icon i{animation:ab-ring .7s ease-in-out infinite}
@keyframes ab-ring{0%,100%{transform:rotate(0)}15%{transform:rotate(-16deg)}30%{transform:rotate(14deg)}45%{transform:rotate(-12deg)}60%{transform:rotate(9deg)}75%{transform:rotate(-5deg)}90%{transform:rotate(2deg)}}

/* ---------- trust strip (icon-box) ---------- */
.km-trust .elementor-icon-box-wrapper{display:flex;gap:12px;align-items:center;text-align:left;transition:transform .25s}
.km-trust:hover .elementor-icon-box-wrapper{transform:translateY(-3px)}
.km-trust .elementor-icon-box-icon{flex:0 0 6px;height:34px;background:var(--ab-accent);transform:skewX(-18deg);transition:height .25s,background .25s;margin:0!important}
.km-trust .elementor-icon-box-icon *{display:none}
.km-trust:hover .elementor-icon-box-icon{height:42px;background:#fff}
.km-trust .elementor-icon-box-title,.km-trust .elementor-icon-box-title a{font-family:var(--ab-display)!important;font-size:18px!important;text-transform:uppercase;letter-spacing:.04em;font-weight:600;margin:0;color:var(--ab-fg)!important}
.km-trust .elementor-icon-box-description{color:var(--ab-muted);font-size:13px;margin:0}

/* ---------- service tiles (icon-box grid) ---------- */
/* Styling lives on the inner wrapper so it works with and without Elementor's widget-container div,
   and so hover transforms don't fight the entrance animation on the widget root. */
.km-tiles>.elementor-container{gap:1px;background:var(--ab-line);border:1px solid var(--ab-line)}
.km-tiles .elementor-column,.km-tiles .elementor-widget-wrap,.km-tiles .elementor-column-wrap{padding:0!important}
.km-tiles .elementor-widget-wrap{align-content:stretch}
.km-tiles .elementor-widget,.km-tiles .elementor-widget-container{margin:0!important;height:100%;background:transparent!important}
.km-tile{height:100%}
.km-tile .elementor-icon-box-wrapper{display:flex;gap:16px;align-items:flex-start;text-align:left;height:100%;padding:26px 22px;background:var(--ab-bg);position:relative;transition:background .25s,transform .25s}
.km-tile .elementor-icon-box-wrapper::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--ab-accent);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.km-tile:hover .elementor-icon-box-wrapper{background:var(--ab-panel2);transform:translateY(-4px)}
.km-tile:hover .elementor-icon-box-wrapper::after{transform:scaleX(1)}
.km-tile .elementor-icon-box-icon{margin:0!important;flex:0 0 auto}
.km-tile .elementor-icon{color:var(--ab-accent)!important;font-size:40px;transition:transform .35s var(--ab-ease);display:inline-block}
.km-tile .elementor-icon svg{width:40px;height:40px;fill:var(--ab-accent)}
.km-tile:hover .elementor-icon{transform:scale(1.12) rotate(-4deg)}
.km-tile .elementor-icon-box-content{min-width:0}
.km-tile .elementor-icon-box-title,.km-tile .elementor-icon-box-title a{font-family:var(--ab-display)!important;font-size:18px!important;text-transform:uppercase;margin:0 0 6px;color:var(--ab-fg)!important;transition:color .25s;text-decoration:none}
.km-tile .elementor-icon-box-description{color:var(--ab-muted);font-size:14px;line-height:1.5;margin:0}

/* ---------- photo bands / gallery images ---------- */
.km-photo .elementor-widget-container,.km-photo img{height:100%}
.km-photo img{object-fit:cover;width:100%;display:block;transition:transform 1.2s var(--ab-ease)}
.km-photo:hover img{transform:scale(1.05)}
.km-gallery .gallery-item img,.km-gallery .elementor-gallery-item__image{transition:transform 1.2s var(--ab-ease)}
.km-gallery .gallery-item:hover img{transform:scale(1.05)}
.km-gallery .gallery-item a{position:relative;display:block;overflow:hidden}
.km-gallery .gallery-item a::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(227,25,47,.55),transparent 60%);opacity:0;transition:opacity .4s}
.km-gallery .gallery-item:hover a::after{opacity:1}

/* ---------- service board (list) ---------- */
.ab-board{min-width:0;font-family:var(--ab-body);color:var(--ab-fg)}
.ab-board h3{font-family:var(--ab-display);font-size:20px;font-weight:600;text-transform:uppercase;margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--ab-line)}
.ab-board ul{list-style:none;margin:0;padding:0;column-gap:28px}
.ab-board li{break-inside:avoid;padding:8px 0 8px 30px;border-bottom:1px solid var(--ab-line);position:relative;font-size:15px;margin:0;transition:padding-left .25s,color .25s}
.ab-board li:hover{padding-left:34px;color:#fff}
.ab-board li .ab-bul{position:absolute;left:0;top:50%;transform:translateY(-50%);width:22px;height:16px;display:grid;place-items:center;color:var(--ab-accent);transition:transform .25s,color .25s}
.ab-board li .ab-bul svg{width:22px;height:16px;fill:currentColor}
.ab-board li .ab-bul i{font-size:14px}
.ab-board li:hover .ab-bul{transform:translateY(-50%) translateX(4px);color:#fff}
.ab-board a{color:inherit;text-decoration:none}

/* ---------- before/after ---------- */
.ab-ba{position:relative;max-width:100%;overflow:hidden;user-select:none;background:#222}
.ab-pane{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ab-ph.before{background:radial-gradient(circle at 35% 55%,#4b2d25 0 9%,#6c5248 10% 16%,#2c2f33 17%),linear-gradient(#3b3e42,#1c1e21)}
.ab-ph.after{background:linear-gradient(135deg,#7f1b24 0%,#3a0d12 50%,#141416 100%)}
.ab-pane.after{clip-path:inset(0 0 0 var(--cut,50%))}
.ab-ba-tag{position:absolute;top:12px;background:rgba(0,0,0,.6);color:#fff;font-family:var(--ab-display);font-weight:600;text-transform:uppercase;letter-spacing:.1em;padding:5px 10px;font-size:13px;pointer-events:none}
.ab-ba-tag.l{left:12px}.ab-ba-tag.r{right:12px}
.ab-ba input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.ab-handle{position:absolute;top:0;bottom:0;left:var(--cut,50%);width:2px;background:#fff;pointer-events:none;transform:translateX(-50%);transition:left .08s linear}
.ab-handle::after{content:"◂ ▸";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--ab-accent);color:#fff;font-weight:700;padding:8px 10px;border-radius:999px;white-space:nowrap;font-family:var(--ab-body);font-size:13px;transition:transform .25s}
.ab-ba:hover .ab-handle::after{transform:translate(-50%,-50%) scale(1.12)}

/* ---------- counters (native) ---------- */
.km-stat .elementor-counter-number-wrapper{font-family:var(--ab-display)!important;font-size:40px!important;font-weight:700;color:var(--ab-accent)!important;line-height:1}
.km-stat .elementor-counter-title{color:#d6d8dc!important;font-size:13px;text-transform:uppercase;letter-spacing:.08em;font-family:var(--ab-body)}
.km-stats>.elementor-container{gap:1px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(4px)}
.km-stats .elementor-column,.km-stats .elementor-widget-wrap,.km-stats .elementor-column-wrap{padding:0!important}
.km-stats .elementor-widget,.km-stats .elementor-widget-container{margin:0!important;background:transparent!important}
.km-stat .elementor-counter{background:rgba(11,12,14,.55);padding:22px 12px;text-align:center}
.km-parallax{background-attachment:scroll}

/* ---------- insurance ---------- */
.ab-ins{display:flex;gap:8px;flex-wrap:wrap;font-family:var(--ab-body)}
.ab-ins span{border:1px solid var(--ab-line);background:rgba(20,22,25,.8);color:var(--ab-fg);padding:8px 14px;font-weight:500;font-size:14px;display:flex;align-items:center;transition:border-color .25s,transform .25s,background .25s}
.ab-ins span:hover{border-color:var(--ab-accent);transform:translateY(-2px);background:rgba(227,25,47,.12)}
.ab-ins img{height:24px;width:auto}
.ab-steps{list-style:none;margin:36px 0 0;padding:0;display:grid;grid-template-columns:repeat(var(--n,4),1fr);gap:1px;background:var(--ab-line);border:1px solid var(--ab-line);counter-reset:s;font-family:var(--ab-body)}
.ab-steps li{background:var(--ab-panel);padding:22px;counter-increment:s;min-width:0;margin:0;transition:background .3s,transform .3s}
.ab-steps li:hover{background:var(--ab-panel2);transform:translateY(-4px)}
.ab-steps.num li::before{content:counter(s,decimal-leading-zero);font-family:var(--ab-display);font-weight:700;font-size:40px;color:var(--ab-accent);line-height:1;display:block;margin-bottom:10px;transition:transform .3s}
.ab-steps li:hover::before{transform:translateX(6px)}
.ab-steps b{display:block;font-family:var(--ab-display);text-transform:uppercase;letter-spacing:.04em;font-size:17px;margin-bottom:6px;color:var(--ab-fg)}
.ab-steps p{margin:0;color:var(--ab-muted);font-size:14px}

/* ---------- hours ---------- */
.ab-hours{padding:22px;min-width:0;border:1px solid var(--ab-line);border-top:4px solid var(--ab-accent);font-family:var(--ab-body);background:rgba(20,22,25,.85);backdrop-filter:blur(6px);color:var(--ab-fg)}
.ab-hours strong{font-family:var(--ab-display);font-size:20px;text-transform:uppercase;letter-spacing:.04em;display:block}
.ab-hours dl{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;margin:12px 0 0;font-variant-numeric:tabular-nums;font-size:15px}
.ab-hours dt{color:var(--ab-muted)}.ab-hours dd{margin:0}

/* ---------- form ---------- */
.ab-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;position:relative;font-family:var(--ab-body);background:var(--ab-bg);border:1px solid var(--ab-line);padding:22px}
.ab-form label{display:grid;gap:5px;font-size:13px;color:var(--ab-muted);text-transform:uppercase;letter-spacing:.08em;min-width:0;margin:0}
.ab-form input,.ab-form select,.ab-form textarea{font:inherit;font-size:15px;padding:11px 12px;border:1px solid var(--ab-line);background:var(--ab-panel2);color:var(--ab-fg);width:100%;min-width:0;border-radius:0;text-transform:none;letter-spacing:0;transition:border-color .2s,box-shadow .2s}
.ab-form input:focus,.ab-form select:focus,.ab-form textarea:focus{outline:0;border-color:var(--ab-accent);box-shadow:0 0 0 3px rgba(227,25,47,.2)}
.ab-form textarea{min-height:100px;resize:vertical}
.ab-full{grid-column:1/-1}
.ab-hp{position:absolute;left:-9999px}
.ab-form-msg{margin-left:12px;font-weight:600}
.ab-form-msg.ok{color:#3ddc84}.ab-form-msg.err{color:#ff5c5c}

/* ---------- seasonal banner ---------- */
.ab-season{background:var(--ab-accent);color:#fff;font-family:var(--ab-body);font-weight:600;font-size:15px;padding:10px 20px;display:flex;justify-content:center;gap:14px;align-items:center;flex-wrap:wrap;text-align:center}
.ab-season a{color:inherit;font-family:var(--ab-display);text-transform:uppercase;letter-spacing:.08em;font-weight:600;text-decoration:none;border-bottom:2px solid rgba(255,255,255,.6)}

/* ---------- whatsapp + call bar ---------- */
.ab-wa{display:grid;justify-items:end;gap:8px;font-family:var(--ab-body)}
.ab-wa.fixed{position:fixed;right:16px;bottom:16px;z-index:9999}
.ab-wa-btn{display:flex;align-items:center;gap:10px;background:#25d366;color:#07251a;font-family:var(--ab-display);font-weight:600;font-size:16px;text-transform:uppercase;letter-spacing:.06em;padding:12px 18px;border-radius:999px;border:0;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.4);line-height:1;transition:transform .25s,box-shadow .25s}
.ab-wa-btn:hover{transform:translateY(-3px) scale(1.03);box-shadow:0 10px 26px rgba(37,211,102,.35)}
.ab-wa-btn svg{width:22px;height:22px;fill:currentColor}
.ab-wa-pop{display:none;background:var(--ab-panel);color:var(--ab-fg);border:1px solid var(--ab-line);padding:14px;width:min(280px,calc(100vw - 32px));box-shadow:0 10px 30px rgba(0,0,0,.5)}
.ab-wa-pop.show{display:grid;gap:8px}
.ab-wa-pop b{font-size:14px}
.ab-wa-pop a{display:block;text-decoration:none;border:1px solid var(--ab-line);padding:9px 12px;font-weight:600;font-size:14px;color:var(--ab-fg);transition:border-color .2s}
.ab-wa-pop a:hover{border-color:var(--ab-accent)}
.ab-wa-pop small{color:var(--ab-muted)}
.ab-callbar{display:none}

/* ---------- footer hooks ---------- */
.km-footer{background:linear-gradient(180deg,#141619 0%,#0b0c0e 40%,#000 100%);position:relative}
.km-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,transparent,var(--ab-accent) 30%,var(--ab-accent) 70%,transparent)}
.km-footer .elementor-icon-list-item a{color:var(--ab-muted);transition:color .2s,padding-left .2s}
.km-footer .elementor-icon-list-item a:hover{color:#fff;padding-left:4px}
.km-foot-title .elementor-heading-title{font-family:var(--ab-display);text-transform:uppercase;letter-spacing:.1em;color:var(--ab-fg);font-size:14px}

@media (max-width:1024px){.ab-steps{grid-template-columns:1fr 1fr}}
@media (max-width:767px){
  .ab-form{grid-template-columns:1fr}
  .ab-steps{grid-template-columns:1fr}
  .ab-board ul{columns:1!important}
  .km-tiles>.elementor-container{gap:1px}
  .ab-callbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:9998;background:var(--ab-accent);color:#fff;font-family:var(--ab-display);text-transform:uppercase;letter-spacing:.1em;font-weight:600;justify-content:center;padding:14px;text-decoration:none}
  body.ab-callbar-on{padding-bottom:52px}
  .ab-wa.fixed{bottom:72px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
