/* acadesign effects sheet.
   Every rule here was checked against Elementor's control dictionary first;
   the query that came back empty is named beside each block. */

/* ---- pseudo-elements: no control exists for ::before/::after (by definition) ---- */

/* .eyebrow::before  - 26x3 brand bar */
.aca-eyebrow .elementor-heading-title::before{
  content:"";display:inline-block;width:26px;height:3px;background:#ffb300;
  vertical-align:middle;margin-right:10px;transform:translateY(-2px);
}

/* .nav__links a::after - 2px brand underline, scaleX 0 -> 1 on hover */
.aca-navlink a::after{
  content:"";position:absolute;left:14px;right:14px;bottom:4px;height:2px;background:#ffb300;
  transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.22,.61,.36,1);
}
.aca-navlink a{position:relative}
.aca-navlink a:hover::after,.aca-navlink.is-active a::after{transform:scaleX(1)}

/* .quote-card::before - Georgia open-quote glyph */
.aca-quote{position:relative}
.aca-quote::before{
  content:"\201C";position:absolute;top:6px;left:20px;font-family:Georgia,serif;
  font-size:5rem;line-height:1;color:#ffb300;opacity:.5;pointer-events:none;
}

/* .cta-band::before - diagonal brand stripes over the right 40% */
.aca-cta-band{position:relative}
.aca-cta-band::before{
  content:"";position:absolute;inset:0 0 0 60%;pointer-events:none;
  background:repeating-linear-gradient(-45deg,rgba(255,179,0,.14) 0 14px,transparent 14px 28px);
}

/* ---- repeating-linear-gradient: `controls.py container gradient` returns only
       background_gradient_angle / background_gradient_type (a 2-stop linear gradient);
       a repeating gradient cannot be expressed. ---- */
.aca-hazard{
  height:10px;
  background:repeating-linear-gradient(-45deg,#ffb300 0 22px,#14161b 22px 44px);
}
.aca-page-hero{position:relative}
.aca-page-hero::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:10px;
  background:repeating-linear-gradient(-45deg,#ffb300 0 22px,#14161b 22px 44px);
}

/* ---- aspect-ratio: `controls.py container aspect` -> 0 matches ---- */
.aca-ar-16-10 img{aspect-ratio:16/10;object-fit:cover;width:100%;height:auto;display:block}
.aca-ar-4-3 img{aspect-ratio:4/3;object-fit:cover;width:100%;height:auto;display:block}

/* ---- place-items: no control (`controls.py container place`) ---- */
.aca-tile .elementor-widget-container,.aca-tile{display:grid;place-items:center}

/* ---- backdrop-filter: `controls.py container backdrop` -> 0 matches ---- */
.aca-header-bar{backdrop-filter:blur(10px)}

/* ---- cross-element hover (parent :hover styling a child): no widget control
       can react to an ancestor's hover state ---- */
.aca-card{transition:transform .35s cubic-bezier(.22,.61,.36,1),box-shadow .35s,border-color .35s}
/* card lift/shadow/border-color: native container hover controls (_transform_translateY_effect_hover, box_shadow_hover_*, border_hover_color) */
.aca-card img{transition:transform .6s cubic-bezier(.22,.61,.36,1)}
.aca-card:hover img{transform:scale(1.07)}
.aca-card:hover .aca-cardlink .elementor-button-icon{margin-left:6px}
.aca-gal-item{position:relative;overflow:hidden;border-radius:14px;background:#eceff2}
.aca-gal-item::after{
  content:"\f00e";font-family:"Font Awesome 6 Free";font-weight:900;
  position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:1.6rem;
  background:rgba(20,22,27,.55);opacity:0;transition:opacity .35s;
}
.aca-gal-item:hover::after{opacity:1}
.aca-gal-item img{transition:transform .6s cubic-bezier(.22,.61,.36,1)}
.aca-gal-item:hover img{transform:scale(1.08)}

/* ---- keyframe animation + mask-image: `controls.py container mask` -> 0 matches;
       Elementor's animation controls are entrance animations only ---- */
.aca-marquee{position:relative;overflow:hidden;padding:6px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.aca-marquee__track{display:flex;gap:22px;width:max-content;animation:aca-marquee 60s linear infinite}
.aca-marquee--rev .aca-marquee__track{animation-duration:68s;animation-direction:reverse}
.aca-marquee:hover .aca-marquee__track{animation-play-state:paused}
@keyframes aca-marquee{to{transform:translateX(-50%)}}
.aca-logo-cell{width:190px;height:104px;background:#fff;border:1px solid #e4e7ec;border-radius:12px;display:grid;place-items:center;padding:20px;flex:0 0 auto}
.aca-logo-cell img{max-width:100%;height:auto;filter:grayscale(1);opacity:.72;transition:filter .35s,opacity .35s}
.aca-logo-cell:hover img{filter:none;opacity:1}

.aca-wa{animation:aca-wa-pulse 2.4s infinite}
.aca-wa:hover{transform:scale(1.08)}
@keyframes aca-wa-pulse{
  0%{box-shadow:0 10px 26px rgba(37,211,102,.5),0 0 0 0 rgba(37,211,102,.45)}
  70%{box-shadow:0 10px 26px rgba(37,211,102,.5),0 0 0 16px rgba(37,211,102,0)}
  100%{box-shadow:0 10px 26px rgba(37,211,102,.5),0 0 0 0 rgba(37,211,102,0)}
}

/* AOS is disabled below 620px in the source (main.js AOS.init disable option);
   Elementor has no "disable animation under X" control - animation_mobile only
   swaps the name. (`controls.py container animation` -> 5 keys, none disables.) */
@media (max-width:620px){
  .elementor-invisible{visibility:visible!important;animation:none!important}
}

/* .hero::after - 3-stop gradient overlay; `controls.py container gradient` exposes
   only a 2-stop linear gradient (background_gradient_angle/type), and the overlay
   must sit above the bg image but below content -> pseudo-element. */
.aca-hero{position:relative}
.aca-hero::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:linear-gradient(100deg,rgba(15,16,20,.94) 0%,rgba(15,16,20,.78) 42%,rgba(15,16,20,.32) 100%)}
/* full-width containers have no .e-con-inner - lift the actual children */
.aca-hero > .e-con, .aca-hero > .elementor-element{position:relative;z-index:1}

/* raw markup blocks (html widget) need their own base styling - no widget
   controls apply to markup inside an html widget. */
.aca-wa{position:fixed;right:22px;bottom:22px;z-index:90;width:58px;height:58px;
  border-radius:50%;background:#25d366;color:#fff;font-size:1.7rem;
  display:grid;place-items:center;box-shadow:0 10px 26px rgba(37,211,102,.5);
  transition:transform .3s cubic-bezier(.22,.61,.36,1)}
.aca-toggle{width:46px;height:46px;border-radius:10px;background:#14161b;border:0;
  display:grid;place-items:center;cursor:pointer}
.aca-toggle span,.aca-toggle span::before,.aca-toggle span::after{
  content:"";display:block;width:20px;height:2px;background:#fff;position:relative}
.aca-toggle span::before{position:absolute;top:-6px}
.aca-toggle span::after{position:absolute;top:6px}
/* .breadcrumb a:hover{color:var(--brand)} -- hover on an inline anchor inside a
   heading widget; controls.py heading hover has no per-anchor control. */
.aca-crumb a:hover{color:#ffb300}
/* .logo-cell img{filter:grayscale(1);opacity:.72} + .logo-cell:hover img{none}
   -- cross-element hover (parent container -> child image filter); no native
   control (controls.py image hover -> filters only on the image's own hover). */
.aca-logo-gcell img{filter:grayscale(1);opacity:.72;transition:filter .35s,opacity .35s}
.aca-logo-gcell:hover img{filter:none;opacity:1}

/* .contact-person__row i { color: var(--brand-dark); width:16px; text-align:center }
   Button widget exposes no icon-colour / icon-width control:
   `python controls.py button icon_color` -> 0 key(s) matching. */
.aca-crow .elementor-button-icon{color:#e59a00;width:16px;text-align:center}
