/* Mudanzas Lizcano 1.6 — efectos y microinteracciones.
   La arquitectura sigue siendo Elementor clásico: sections/columns/widgets. */

/* ---------- Reveal general ---------- */
.elementor-element.mlzfx-reveal,
.elementor-element.mlzfx-fade-up,
.elementor-element.mlzfx-title-reveal {
    will-change: opacity, transform;
}
.elementor-element.mlzfx-reveal.mlzfx-waiting {
    opacity: 0;
    transform: translateY(34px);
}
.elementor-element.mlzfx-reveal-left.mlzfx-waiting {
    transform: translateX(-46px);
}
.elementor-element.mlzfx-reveal-right.mlzfx-waiting {
    transform: translateX(46px);
}
.elementor-element.mlzfx-reveal-wide.mlzfx-waiting {
    transform: translateY(62px) scale(.985);
}
.elementor-element.mlzfx-reveal.mlzfx-visible {
    opacity: 1;
    transform: none;
    transition: opacity .82s ease, transform .9s cubic-bezier(.2,.75,.2,1);
}
.elementor-element.mlzfx-fade-up {
    opacity: 0;
    transform: translateY(22px);
}
.elementor-element.mlzfx-fade-up.mlzfx-visible {
    opacity: 1;
    transform: none;
    transition: opacity .7s ease .15s, transform .7s cubic-bezier(.2,.75,.2,1) .15s;
}
.elementor-element.mlzfx-title-reveal {
    overflow: hidden;
}
.elementor-element.mlzfx-title-reveal .elementor-heading-title {
    transform: translateY(112%);
    opacity: 0;
    transition: transform .9s cubic-bezier(.17,.84,.28,1), opacity .35s ease;
}
.elementor-element.mlzfx-title-reveal.mlzfx-visible .elementor-heading-title {
    transform: translateY(0);
    opacity: 1;
}

/* ---------- Section ornaments ---------- */
.elementor-element.mlzfx-section-reveal {
    position: relative;
}
.elementor-element.mlzfx-section-reveal:before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: 0;
    height: 1px;
    background: rgba(31,31,29,.12);
    transition: width 1.25s ease, left 1.25s ease;
    pointer-events: none;
}
.elementor-element.mlzfx-section-reveal.mlzfx-section-visible:before {
    width: calc(100% - 56px);
    left: 28px;
}

/* ---------- Cards / panels ---------- */
.elementor-element.mlzfx-panel-lift,
.elementor-element.mlzfx-card-tilt,
.elementor-element.mlzfx-glass-card {
    position: relative;
    overflow: hidden;
    transition: transform .38s cubic-bezier(.2,.75,.2,1), box-shadow .38s ease, border-color .3s ease;
    transform-style: preserve-3d;
    will-change: transform, box-shadow;
}
.elementor-element.mlzfx-panel-lift:before,
.elementor-element.mlzfx-card-tilt:before,
.elementor-element.mlzfx-glass-card:before {
    content: "";
    position: absolute;
    inset: 0 auto 0 -105%;
    width: 58%;
    background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.22) 50%, transparent 100%);
    transform: skewX(-24deg);
    transition: left .82s ease;
    z-index: 3;
    pointer-events: none;
}
.elementor-element.mlzfx-panel-lift:hover:before,
.elementor-element.mlzfx-card-tilt:hover:before,
.elementor-element.mlzfx-glass-card:hover:before {
    left: 130%;
}
.elementor-element.mlzfx-panel-lift:hover,
.elementor-element.mlzfx-panel-lift:focus-within {
    transform: translateY(-8px);
    box-shadow: 0 28px 70px rgba(19,19,18,.13);
}
.elementor-element.mlzfx-glass-card {
    backdrop-filter: blur(7px);
    -webkit-backdrop-filter: blur(7px);
}

/* ---------- Rows ---------- */
.elementor-element.mlzfx-row-slide,
.elementor-element.mlzfx-service-row {
    position: relative;
    transition: transform .34s cubic-bezier(.2,.75,.2,1), background-color .3s ease, padding-left .3s ease;
}
.elementor-element.mlzfx-row-slide:after,
.elementor-element.mlzfx-service-row:after {
    content: "";
    position: absolute;
    left: 0;
    top: 18%;
    bottom: 18%;
    width: 0;
    background: #f96116;
    transition: width .25s ease;
}
.elementor-element.mlzfx-row-slide:hover,
.elementor-element.mlzfx-service-row:hover {
    transform: translateX(8px);
    background: rgba(249,97,22,.035);
}
.elementor-element.mlzfx-row-slide:hover:after,
.elementor-element.mlzfx-service-row:hover:after {
    width: 4px;
}

/* ---------- Icons ---------- */
.elementor-element.mlzfx-icon-shift .elementor-icon {
    transition: transform .32s cubic-bezier(.2,.75,.2,1), box-shadow .32s ease, background-color .32s ease, color .32s ease;
    will-change: transform;
}
.elementor-element.mlzfx-icon-shift:hover .elementor-icon,
.elementor-element.mlzfx-icon-shift:focus-within .elementor-icon {
    transform: translate(4px,-4px) scale(1.08) rotate(-6deg);
    box-shadow: 0 16px 38px rgba(20,20,18,.14);
}

/* ---------- Images ---------- */
.elementor-element.mlzfx-image-zoom,
.elementor-element.mlzfx-project-image {
    overflow: hidden;
    position: relative;
}
.elementor-element.mlzfx-image-zoom img,
.elementor-element.mlzfx-project-image img {
    transition: transform 1.05s cubic-bezier(.18,.72,.24,1), filter .45s ease;
    will-change: transform;
}
.elementor-element.mlzfx-image-zoom:hover img,
.elementor-element.mlzfx-project-image:hover img {
    transform: scale(1.065);
    filter: saturate(1.04) contrast(1.03);
}
.elementor-element.mlzfx-image-sweep:before {
    content: "";
    position: absolute;
    inset: -8% auto -8% -90%;
    width: 34%;
    background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.24) 50%, transparent 100%);
    transform: skewX(-20deg);
    transition: left .9s ease;
    z-index: 2;
    pointer-events: none;
}
.elementor-element.mlzfx-image-sweep:hover:before {
    left: 125%;
}

/* ---------- Buttons ---------- */
.elementor-element.mlzfx-button-lift .elementor-button {
    transition: transform .22s ease, background-color .22s ease, color .22s ease, border-color .22s ease, box-shadow .22s ease;
    will-change: transform;
}
.elementor-element.mlzfx-button-lift:hover .elementor-button,
.elementor-element.mlzfx-button-lift:focus-within .elementor-button {
    transform: translateY(-3px);
    box-shadow: 0 14px 30px rgba(17,17,17,.13);
}

/* ---------- Hero / project backgrounds ---------- */
.elementor-element.mlzfx-hero-cinematic,
.elementor-element.mlzfx-project-panel {
    overflow: hidden;
    position: relative;
}
.elementor-element.mlzfx-hero-cinematic:after,
.elementor-element.mlzfx-project-panel:after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(110deg, rgba(255,255,255,.035), transparent 32%, transparent 70%, rgba(249,97,22,.05));
    z-index: 1;
}
.elementor-element.mlzfx-hero-cinematic > .elementor-container,
.elementor-element.mlzfx-project-panel > .elementor-container {
    position: relative;
    z-index: 2;
}
.elementor-element.mlzfx-project-copy {
    transition: transform .65s cubic-bezier(.2,.75,.2,1);
}
.elementor-element.mlzfx-project-panel:hover .mlzfx-project-copy {
    transform: translateY(-10px);
}

/* ---------- Interactive map ---------- */
.mlz-map-stage {
    position: relative;
    min-height: 620px;
    background: #efede7;
    overflow: hidden;
    border: 1px solid rgba(31,31,29,.09);
}
.mlz-map-visual {
    position: relative;
    min-height: 620px;
    padding: 26px 360px 26px 26px;
    background:
      radial-gradient(circle at 35% 34%, rgba(249,97,22,.09), transparent 26%),
      linear-gradient(180deg,#f3f1ec 0%,#ece9e2 100%);
}
.mlz-map-visual svg {
    width: 100%;
    height: 560px;
    display: block;
}
.mlz-map-colombia {
    fill: rgba(255,255,255,.78);
    stroke: rgba(31,31,29,.14);
    stroke-width: 2;
}
.mlz-map-route {
    fill: none;
    stroke: rgba(31,31,29,.34);
    stroke-width: 3;
    stroke-linecap: round;
    stroke-dasharray: 8 12;
    animation: mlz-route-flow 8s linear infinite;
}
.mlz-map-route.primary {
    stroke: #f96116;
    stroke-width: 4;
}
.mlz-map-route.faint {
    opacity: .38;
}
.mlz-map-dot circle:first-child {
    fill: rgba(249,97,22,.14);
    stroke: #f96116;
    stroke-width: 2;
    transform-origin: center;
    animation: mlz-pulse 2.5s ease-out infinite;
}
.mlz-map-dot .core { fill: #f96116; }
.mlz-map-dot.primary circle:first-child { fill: rgba(31,31,29,.12); stroke: #1f1f1d; }
.mlz-map-dot.primary .core { fill: #1f1f1d; }
.mlz-map-labels text {
    fill: #1f1f1d;
    font: 600 17px/1.2 Roboto, Arial, sans-serif;
}
.mlz-map-heading {
    position: absolute;
    left: 40px;
    bottom: 36px;
    width: 360px;
}
.mlz-map-heading small {
    display: block;
    color: #f96116;
    font: 700 17px/1.35 Roboto, Arial, sans-serif;
    letter-spacing: .13em;
    margin-bottom: 10px;
}
.mlz-map-heading strong {
    display: block;
    color: #1f1f1d;
    font: 600 32px/1.08 Montserrat, Arial, sans-serif;
    letter-spacing: -.03em;
}
.mlz-map-card {
    position: absolute;
    right: 26px;
    top: 26px;
    width: 330px;
    background: #fff;
    box-shadow: 0 28px 68px rgba(24,24,22,.16);
    overflow: hidden;
    transform: translateY(0);
    transition: transform .42s cubic-bezier(.2,.75,.2,1), box-shadow .42s ease;
}
.mlz-map-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 34px 78px rgba(24,24,22,.2);
}
.mlz-map-card-image {
    height: 210px;
    background-position: center;
    background-size: cover;
    transition: opacity .3s ease, transform .7s cubic-bezier(.2,.75,.2,1);
}
.mlz-map-card:hover .mlz-map-card-image { transform: scale(1.035); }
.mlz-map-card-body { padding: 22px; }
.mlz-map-kicker {
    color: #f96116;
    font: 700 17px/1.2 Roboto, Arial, sans-serif;
    letter-spacing: .12em;
}
.mlz-map-card-title {
    margin: 8px 0 8px;
    color: #1f1f1d;
    font: 600 23px/1.12 Montserrat, Arial, sans-serif;
    letter-spacing: -.02em;
}
.mlz-map-card-copy {
    min-height: 42px;
    margin: 0 0 18px;
    color: #6d6963;
    font: 400 17px/1.55 Roboto, Arial, sans-serif;
}
.mlz-map-city-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px;
}
.mlz-map-city {
    appearance: none;
    border: 1px solid rgba(31,31,29,.13);
    background: #faf8f4;
    color: #1f1f1d;
    padding: 9px 8px;
    font: 600 17px/1.25 Roboto, Arial, sans-serif;
    cursor: pointer;
    transition: background .25s ease, color .25s ease, transform .25s ease, border-color .25s ease;
}
.mlz-map-city:hover,
.mlz-map-city.is-active {
    background: #f96116;
    color: #fff;
    border-color: #f96116;
    transform: translateY(-2px);
}
@keyframes mlz-route-flow { to { stroke-dashoffset: -180; } }
@keyframes mlz-pulse { 0%{opacity:1;transform:scale(1)} 70%{opacity:.12;transform:scale(1.65)} 100%{opacity:1;transform:scale(1)} }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
    .mlz-map-stage,
    .mlz-map-visual { min-height: 570px; }
    .mlz-map-visual { padding-right: 330px; }
    .mlz-map-card { width: 300px; }
    .mlz-map-heading { width: 300px; }
    .mlz-map-heading strong { font-size: 28px; }
}
@media (max-width: 767px) {
    .elementor-element.mlzfx-row-slide:hover,
    .elementor-element.mlzfx-service-row:hover { transform: none; }
    .mlz-map-stage { min-height: auto; }
    .mlz-map-visual { min-height: auto; padding: 18px 14px 210px; }
    .mlz-map-visual svg { height: 390px; }
    .mlz-map-heading { left: 20px; right: 20px; bottom: 26px; width: auto; }
    .mlz-map-heading strong { font-size: 24px; }
    .mlz-map-card { position: relative; right: auto; top: auto; width: auto; margin: -150px 14px 18px; z-index: 3; }
    .mlz-map-card-image { height: 190px; }
    .mlz-map-labels text { font-size: 17px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *:before, *:after { scroll-behavior: auto !important; }
    .elementor-element.mlzfx-reveal,
    .elementor-element.mlzfx-reveal.mlzfx-waiting,
    .elementor-element.mlzfx-reveal.mlzfx-visible,
    .elementor-element.mlzfx-fade-up,
    .elementor-element.mlzfx-title-reveal .elementor-heading-title,
    .elementor-element.mlzfx-panel-lift,
    .elementor-element.mlzfx-card-tilt,
    .elementor-element.mlzfx-row-slide,
    .elementor-element.mlzfx-service-row,
    .elementor-element.mlzfx-icon-shift .elementor-icon,
    .elementor-element.mlzfx-image-zoom img,
    .elementor-element.mlzfx-project-image img,
    .elementor-element.mlzfx-button-lift .elementor-button,
    .mlz-map-route,
    .mlz-map-dot circle:first-child {
        transition: none !important;
        animation: none !important;
        transform: none !important;
        opacity: 1 !important;
    }
}
