/* ==========================================================================
   Elementor integration for the Leo's design system (loaded after main.css)
   ========================================================================== */
body.leo-site {
  --container-default-padding-top: 0px; --container-default-padding-right: 0px;
  --container-default-padding-bottom: 0px; --container-default-padding-left: 0px;
  --widgets-spacing: 0px; --widgets-spacing-row: 0px; --widgets-spacing-column: 0px;
  margin: 0;
}
.leo-site .elementor { overflow-x: clip; }

/* Containers behave like the original blocks unless they are a layout */
.leo-site .e-con.e-con { --display: block; display: block; gap: 0; }
.leo-site .e-con.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding: 0 var(--gutter); }
.leo-site .e-con.split, .leo-site .e-con.grid { --display: grid; display: grid; }
.leo-site .e-con.split { gap: clamp(32px, 5vw, 72px); }
.leo-site .e-con.btn-row { --display: flex; display: flex; flex-flow: row wrap; gap: 14px; }
.leo-site .e-con.btn-row--center { justify-content: center; margin-top: 36px; }
.leo-site .e-con.hero { --display: flex; display: flex; align-items: center; }
.leo-site .e-con.hero > .e-con.wrap { flex: 1 1 auto; }
.leo-site .e-con.head--center { margin-inline: auto; }
.leo-site .e-con.head--center .eyebrow { justify-content: center; }
.leo-site .e-con.head--center > .elementor-element { text-align: center; }
.leo-site .e-con.frame { aspect-ratio: 5 / 4; }
.leo-site .e-con.frame--tall { aspect-ratio: 4 / 5; }
.leo-site .e-con.frame-wrap { position: relative; }
.leo-site .e-con.frame-wrap::before { z-index: 0; }
.leo-site .e-con.frame { z-index: 1; }
.leo-site .e-con > .elementor-widget { width: auto; max-width: 100%; }
.leo-site .e-con.btn-row > .elementor-element { flex: 0 0 auto; }

/* Decorative layers (backgrounds, sunburst) position against the section */
.leo-site .decor-w, .leo-site .decor-w > .elementor-widget-container { position: static !important; }
.leo-site .html-w > .elementor-widget-container { display: contents; }

/* Headings */
.leo-site .elementor-heading-title {
  font-family: var(--font-head); line-height: 1.12; letter-spacing: -.02em; color: var(--navy); margin: 0 0 .5em; padding: 0;
}
.leo-site h1.elementor-heading-title { font-size: clamp(2.2rem, 5.4vw, 4.2rem); font-weight: 800; color: #fff; margin-bottom: 22px; }
.leo-site .page-hero h1.elementor-heading-title { font-size: clamp(2rem, 4.6vw, 3.5rem); max-width: 860px; }
.leo-site h2.elementor-heading-title { font-size: clamp(1.8rem, 3.6vw, 2.8rem); font-weight: 800; }
.leo-site h3.elementor-heading-title { font-size: clamp(1.2rem, 1.8vw, 1.45rem); font-weight: 700; }
.leo-site .section--dark .elementor-heading-title, .leo-site .hero .elementor-heading-title,
.leo-site .page-hero .elementor-heading-title, .leo-site .cta-band .elementor-heading-title { color: #fff; }
.leo-site .eyebrow .elementor-heading-title { font: inherit; color: inherit; letter-spacing: inherit; margin: 0; line-height: 1; text-transform: inherit; }
.leo-site .eyebrow { display: flex; }
.leo-site .eyebrow > .elementor-widget-container { display: contents; }
.leo-site .e-con.head { display: block; }

/* Text */
.leo-site .elementor-widget-text-editor { color: inherit; }
.leo-site .elementor-widget-text-editor p:last-child { margin-bottom: 1em; }
.leo-site .hero__text p, .leo-site .page-hero .elementor-widget-text-editor p { margin-bottom: 0; }
.leo-site .page-hero .elementor-widget-text-editor { max-width: 680px; margin-bottom: 28px; }
.leo-site .page-hero .elementor-widget-text-editor p { color: #c6d3dc; font-size: clamp(1rem, 1.4vw, 1.18rem); }
.leo-site .hero__text { margin-bottom: 34px; }
.leo-site .checks-w ul.checks { margin-bottom: 28px; }

/* Images */
.leo-site .frame .img-w, .leo-site .frame .img-w > .elementor-widget-container { height: 100%; }
.leo-site .e-con .frame .img-w img { width: 100%; height: 100%; object-fit: cover; display: block; max-width: none; border-radius: 0; }

/* Buttons (Elementor button widget wearing the .btn look) */
.leo-site .btn-w.btn-w { box-shadow: none; background: none; padding: 0; min-height: 0; border: 0; overflow: visible; }
.leo-site .e-con .btn-w .elementor-button {
  --bg: var(--gold); --fg: var(--navy-900);
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 14px 26px; border: 0; border-radius: 999px; overflow: hidden; isolation: isolate;
  font: 700 .98rem/1.1 var(--font-head); letter-spacing: .01em; white-space: nowrap; text-decoration: none;
  background: var(--bg); color: var(--fg); fill: var(--fg); box-shadow: 0 10px 26px -12px rgba(212, 164, 82, .8);
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), background-color .3s, color .3s;
}
.leo-site .e-con .btn-w .elementor-button::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .55) 50%, transparent 70%);
  transform: translateX(-120%); transition: transform .8s var(--ease);
}
.leo-site .e-con .btn-w .elementor-button:hover { transform: translateY(-2px); background: var(--bg); color: var(--fg); }
.leo-site .e-con .btn-w .elementor-button:hover::after { transform: translateX(120%); }
.leo-site .btn-w .elementor-button-content-wrapper { display: inline-flex; align-items: center; gap: 10px; }
.leo-site .btn-w .elementor-button-icon { display: inline-flex; font-size: 1.05em; }
.leo-site .btn-w .elementor-button-icon svg { width: 1.05em; height: 1.05em; fill: currentColor; }
.leo-site .e-con .btn-w.btn--navy .elementor-button { --bg: var(--navy); --fg: #fff; box-shadow: 0 10px 26px -12px rgba(19, 51, 74, .7); }
.leo-site .e-con .btn-w.btn--ghost .elementor-button { --bg: transparent; --fg: #fff; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .45); }
.leo-site .e-con .btn-w.btn--ghost .elementor-button:hover { --bg: rgba(255, 255, 255, .1); box-shadow: inset 0 0 0 2px #fff; }
.leo-site .e-con .btn-w.btn--outline .elementor-button { --bg: transparent; --fg: var(--navy); box-shadow: inset 0 0 0 2px var(--navy); }
.leo-site .e-con .btn-w.btn--outline .elementor-button:hover { --bg: var(--navy); --fg: #fff; }
.leo-site .e-con .btn-w.btn--wa .elementor-button { --bg: #1fae5b; --fg: #fff; box-shadow: 0 10px 26px -12px rgba(31, 174, 91, .8); }
.leo-site .e-con .btn-w.btn--sm .elementor-button { min-height: 42px; padding: 10px 18px; font-size: .88rem; }
@media (max-width: 760px) { .leo-site .hero .e-con.btn-row > .elementor-element, .leo-site .hero .btn-w .elementor-button { flex: 1 1 100%; width: 100%; } }
@media (max-width: 520px) { .leo-site .cta-band .btn-w, .leo-site .cta-band .btn-w .elementor-button { width: 100%; } }

/* Grid helpers inside converted layouts */
@media (max-width: 960px) { .leo-site .e-con.split { grid-template-columns: 1fr; } .leo-site .e-con.split--rev > :first-child { order: 0; } }

/* Scroll reveal via classes (Elementor free has no custom attributes) */
.js .reveal { opacity: 0; transform: translateY(36px); transition: opacity 1s var(--ease), transform 1s var(--ease); transition-delay: calc(var(--d, 0) * 1s); }
.js .reveal-left { transform: translateX(-46px); }
.js .reveal-right { transform: translateX(46px); }
.js .reveal-zoom { transform: scale(.92); }
.js .reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .js .reveal { opacity: 1; transform: none; } }

/* Inside the Elementor editor show everything immediately */
.elementor-editor-active .reveal, .elementor-editor-active [data-reveal], .elementor-editor-active .img-reveal { opacity: 1 !important; transform: none !important; clip-path: none !important; }
.elementor-editor-active .header { position: absolute; }
.elementor-editor-active .drawer, .elementor-editor-active .mobile-bar, .elementor-editor-active .fab { display: none; }

/* Hide WordPress admin-bar overlap with fixed header */
.admin-bar .header { top: 32px; }
@media (max-width: 782px) { .admin-bar .header { top: 46px; } }

/* Elementor sets max-width:100% on full-width containers — restore design widths */
.leo-site .e-con.e-con.wrap { max-width: var(--wrap); }
.leo-site .e-con.e-con.hero__content { max-width: 800px; }
.leo-site .e-con.e-con.head { max-width: 720px; }
.leo-site .e-con.e-con.prose { max-width: 820px; }
