/* ===========================
   VARIABLES & RESET
=========================== */
:root {
    --orange:      #F47920;
    --orange-dark: #c9611a;
    --orange-light:#ffa04d;
    --green:       #6DB33F;
    --green-dark:  #4d8a28;
    --purple:      #7B68C8;
    --dark:        #141428;
    --dark2:       #1c1c3a;
    --white:       #ffffff;
    --light:       #f4f6f8;
    --gray:        #6b7280;
    --ease:        cubic-bezier(.25,.8,.25,1);
    --t:           all .4s var(--ease);
}
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; font-size:16px; overflow-x:hidden; }
body { font-family:'Montserrat',sans-serif; color:var(--dark); overflow-x:hidden; }
img  { display:block; max-width:100%; }
a    { text-decoration:none; }
ul   { list-style:none; }
button { font-family:inherit; cursor:pointer; border:none; }

/* ===========================
   UTILITIES
=========================== */
.container { max-width:1200px; margin:0 auto; padding:20px 20px; }

.section-tag {
    display:inline-flex; align-items:center; gap:.5rem;
    font-size:.72rem; font-weight:700; letter-spacing:.15em;
    text-transform:uppercase; color:var(--orange); margin-bottom:.6rem;
}
.section-tag::before {
    content:''; display:block; width:2rem; height:2px; background:var(--orange);
}

.section-title {
    font-size:clamp(1.8rem,4vw,2.8rem); font-weight:900;
    color:var(--dark); line-height:1.15; margin-bottom:1rem;
}
.section-title span { color:var(--orange); }

.section-desc {
    font-size:.97rem; color:var(--gray); line-height:1.85; max-width:580px; word-break:break-word; overflow-wrap:break-word;
}

/* ===========================
   TIPOGRAFÍA — anti-viudas
=========================== */
h1, h2, h3, h4, h5, h6,
.section-title, .hero-title,
.svc-body h3, .spec-card h4,
.ext-card h4, .value-label,
.footer-brand p + p {
    text-wrap: balance;
}

p, .section-desc, .about-body,
.svc-body p, .spec-card p,
.ext-card p > p, .value-desc,
.hero-sub, .footer-brand > p,
.contact-form-wrap > p,
.section-desc {
    text-wrap: pretty;
}

/* reveal animation */
.reveal {
    opacity:0; transform:translateY(36px);
    transition:opacity .7s var(--ease), transform .7s var(--ease);
}
.reveal.visible { opacity:1; transform:translateY(0); }

.reveal-left  { opacity:0; transform:translateX(-40px); transition:opacity .7s var(--ease),transform .7s var(--ease); }
.reveal-right { opacity:0; transform:translateX( 40px); transition:opacity .7s var(--ease),transform .7s var(--ease); }
.reveal-left.visible, .reveal-right.visible { opacity:1; transform:translateX(0); }

/* ===========================
   NAVBAR
=========================== */
#navbar {
    position:fixed; inset:0 0 auto 0; z-index:1000;
    padding:1rem 2rem;
    display:flex; align-items:center; justify-content:center;
    transition:var(--t);
}
#navbar.scrolled {
    background:rgba(20,20,40,.92);
    backdrop-filter:blur(20px);
    padding:.7rem 2rem;
    box-shadow:0 4px 30px rgba(0,0,0,.35);
}
.nav-logo { height:250px; transition:var(--t); }
#navbar.scrolled .nav-logo { height:90px; }

.nav-links {
    position:fixed; top:0; right:-100%;
    width:78%; max-width:340px; height:100vh;
    background:var(--dark2); flex-direction:column;
    justify-content:center; align-items:center;
    transition:right .4s var(--ease); gap:2.2rem;
    display:flex;
}
.nav-links.open { right:0; }
.nav-links a {
    color:#fff; font-weight:600; font-size:.82rem;
    letter-spacing:.06em; text-transform:uppercase;
    position:relative; transition:color .3s;
}
.nav-links a::after {
    content:''; position:absolute; bottom:-4px; left:0;
    width:0; height:2px; background:var(--orange); transition:width .3s;
}
.nav-links a:hover { color:var(--orange-light); }
.nav-links a:hover::after { width:100%; }

.nav-cta {
    background:var(--orange); color:#fff !important;
    padding:.6rem 1.4rem; border-radius:50px;
    font-weight:700 !important; transition:var(--t) !important;
    display:inline-flex; align-items:center; gap:.4rem;
}
.nav-cta::after { display:none !important; }
.nav-cta:hover {
    background:var(--orange-dark) !important;
    transform:translateY(-2px);
    box-shadow:0 8px 24px rgba(244,121,32,.45);
}

.hamburger {
    background-color:#00000000; display:flex; flex-direction:column; gap:5px; cursor:pointer; z-index:1001;
    position:absolute; right:2rem; top:50%; transform:translateY(-50%);
}
.hamburger span {
    display:block; width:26px; height:3px;
    background:#fff; border-radius:3px; transition:var(--t);
}
.hamburger.open span:nth-child(1) { transform:rotate(45deg) translate(5px,6px); }
.hamburger.open span:nth-child(2) { opacity:0; }
.hamburger.open span:nth-child(3) { transform:rotate(-45deg) translate(5px,-6px); }

/* ===========================
   HERO
=========================== */
#home {
    position:relative; min-height:120vh;
    display:flex; align-items:center; overflow:hidden;
}
.hero-bg {
    position:absolute; inset:0;
    background:url('./img/fotos/edit-nico/hero-img.webp')  center/cover no-repeat;
    animation:heroZoom 18s ease-in-out infinite alternate;
}
@keyframes heroZoom {
    from { transform:scale(1.04); }
    to   { transform:scale(1.12); }
}
.hero-overlay {
    position:absolute; inset:0;
    background:linear-gradient(
        120deg,
        rgba(20,20,40,.90) 0%,
        rgba(20,20,40,.72) 45%,
        rgba(244,121,32,.18) 100%
    );
}
.hero-particles { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.hero-particle {
    position:absolute; border-radius:50%; opacity:0;
    animation:floatUp linear infinite;
}
@keyframes floatUp {
    0%   { transform:translateY(110vh) rotate(0deg);   opacity:0; }
    8%   { opacity:.18; }
    92%  { opacity:.18; }
    100% { transform:translateY(-120px) rotate(720deg); opacity:0; }
}
.hero-content {
    position:relative; z-index:2;
    padding-top:90px;
}
.hero-badge {
    display:inline-flex; align-items:center; gap:.5rem;
    background:rgba(244,121,32,.18); border:1px solid rgba(244,121,32,.45);
    color:#ffa04d; padding:.38rem 1rem; border-radius:50px;
    font-size:.75rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
    margin-bottom:1.4rem;
    animation:fadeInDown .9s ease both;
}
.hero-title {
    font-size:clamp(2.6rem,6.5vw,5.2rem);
    font-weight:900; color:#fff; line-height:1.08;
    margin-bottom:1.4rem;
    animation:fadeInUp .9s ease .15s both;
}
.hero-title em { color:var(--orange); font-style:normal; display:block; }
.hero-sub {
    font-size:clamp(.95rem,2vw,1.2rem); color:rgba(255,255,255,.78);
    max-width:800px; line-height:1.8; font-weight:400;
    margin-bottom:2.4rem;
    animation:fadeInUp .9s ease .3s both;
}
.hero-btns {
    display:flex; flex-wrap:wrap; gap:1rem;
    animation:fadeInUp .9s ease .45s both;
}
.btn-primary {
    display:inline-flex; align-items:center; gap:.5rem;
    background:var(--orange); color:#fff;
    padding:.95rem 2rem; border-radius:50px;
    font-weight:700; font-size:.93rem;
    transition:var(--t);
    box-shadow:0 8px 28px rgba(244,121,32,.42);
}
.btn-primary:hover {
    background:var(--orange-dark); transform:translateY(-3px);
    box-shadow:0 14px 38px rgba(244,121,32,.5);
}
.btn-outline {
    display:inline-flex; align-items:center; gap:.5rem;
    background:rgba(255,255,255,.1); color:#fff;
    padding:.95rem 2rem; border-radius:50px;
    font-weight:600; font-size:.93rem;
    border:2px solid rgba(255,255,255,.3);
    backdrop-filter:blur(8px); transition:var(--t);
}
.btn-outline:hover {
    background:rgba(255,255,255,.2); border-color:rgba(255,255,255,.6);
    transform:translateY(-3px);
}
.hero-scroll {
    position:absolute; bottom:2rem; left:50%;
    transform:translateX(-50%); z-index:2;
    color:rgba(255,255,255,.5); font-size:1.4rem;
    animation:scrollBounce 2.4s ease infinite;
}
@keyframes scrollBounce {
    0%,100% { transform:translateX(-50%) translateY(0); }
    50%     { transform:translateX(-50%) translateY(-10px); }
}

/* ===========================
   VALUES STRIP
=========================== */
#valores {
    background:linear-gradient(135deg,var(--dark) 0%,var(--dark2) 100%);
    padding:3.5rem 0;
}
.values-grid {
    display:grid; grid-template-columns:repeat(3,1fr); gap:2rem;
}
.value-card {
    text-align:center; padding:2rem 1.5rem;
    border-radius:18px;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.07);
    transition:var(--t);
    opacity:0; transform:translateY(30px);
}
.value-card.visible { opacity:1; transform:translateY(0); }
.value-card:hover {
    background:rgba(255,255,255,.09); transform:translateY(-6px);
}
.value-num {
    font-size:3rem; font-weight:900; color:var(--orange);
    display:block; line-height:1; margin-bottom:.3rem;
}
.value-label {
    font-size:.82rem; font-weight:800; color:#fff;
    letter-spacing:.1em; text-transform:uppercase; margin-bottom:.7rem;
}
.value-desc { font-size:.82rem; color:rgba(255,255,255,.5); line-height:1.65; }

/* ===========================
   EMPRESA / ABOUT
=========================== */
#empresa { padding:6rem 0; background:var(--light); }
.about-grid {
    display:grid; grid-template-columns:1fr 1fr; gap:5rem; align-items:center;
}
.about-img-wrap { position:relative; }
.about-img {
    width:100%; height:500px; object-fit:cover;
    border-radius:22px;
    box-shadow:0 30px 60px rgba(0,0,0,.14);
}
.about-badge {
    position:absolute; bottom:-22px; right:-22px;
    background:var(--orange); color:#fff;
    padding:1.5rem 1.8rem; border-radius:18px;
    text-align:center;
    box-shadow:0 20px 40px rgba(244,121,32,.38);
}
.about-badge .big  { font-size:36px; font-weight:900; display:block; line-height:1; }
.about-badge .sm   { font-size:16px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; }

.about-text-wrap { display:flex; flex-direction:column; gap:1.4rem; min-width:0; }
.about-body { font-size:16px; color:var(--gray); line-height:1.9; text-align:justify; overflow-wrap:break-word; word-break:break-word; }
.about-body strong { color:var(--dark); }

.about-feats {
    display:grid; grid-template-columns:1fr 1fr; gap:.85rem;
}
.about-feat {
    display:flex; align-items:flex-start; gap:.75rem;
}
.feat-icon {
    width:36px; height:36px; min-width:36px;
    border-radius:50%; background:rgba(244,121,32,.1);
    display:flex; align-items:center; justify-content:center;
    color:var(--orange); font-size:16px;
}
.feat-text { font-size:16px; color:var(--dark); font-weight:600; line-height:1.4; }

.certs {
    padding:1.4rem 1.6rem; background:#fff;
    border-radius:14px; border-left:4px solid var(--green);
    display:flex; flex-direction:column; gap:.45rem;
}
.certs p {
    display:flex; align-items:flex-start; gap:.55rem;
    font-size:15px; color:var(--gray);
}
.certs p i { color:var(--green); font-size:15px; flex-shrink:0; margin-top:2px; }

/* ===========================
   SERVICIOS
=========================== */
#servicios { padding:6rem 0; background:#fff; }
.services-head { text-align:left; margin-bottom:4rem; }
.services-head .section-desc { margin:0; }

/* Main 3 cards */
.services-main {
    display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:2rem;
    margin-bottom:3rem;
}
.svc-card {
    border-radius:20px; overflow:hidden; background:#fff;
    box-shadow:0 10px 40px rgba(0,0,0,.07);
    transition:var(--t);
    opacity:0; transform:translateY(40px);
    display:flex; flex-direction:column;
}
.svc-card.visible { opacity:1; transform:translateY(0); }
.svc-card:hover {
    transform:translateY(-10px);
    box-shadow:0 28px 60px rgba(0,0,0,.14);
}
.svc-img-wrap { position:relative; overflow:hidden; }
.svc-img {
    width:100%; height:210px; object-fit:cover;
    transition:transform .6s var(--ease);
}
.svc-card:hover .svc-img { transform:scale(1.07); }
.svc-tag {
    position:absolute; top:1rem; left:1rem;
    background:var(--orange); color:#fff;
    padding:.28rem .8rem; border-radius:50px;
    font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em;
}
.svc-body { padding:1.8rem; flex:1; display:flex; flex-direction:column; }
.svc-icon {
    width:48px; height:48px; border-radius:14px;
    display:flex; align-items:center; justify-content:center;
    font-size:1.2rem; color:#fff; margin-bottom:1rem;
}
.svc-card h3 { font-size:1.05rem; font-weight:800; color:var(--dark); margin-bottom:.65rem; display:flex; align-items:flex-start; }
.svc-card p  { font-size:16px; color:var(--gray); line-height:1.75; text-align:justify; }
.svc-list { margin-top:.75rem; padding-top:0; display:flex; flex-direction:column; gap:.6rem; }
.svc-list li {
    display:flex; align-items:flex-start; gap:.5rem;
    font-size:16px; color:var(--gray); line-height:1.75;
}
.svc-list li i { color:var(--green); font-size:.68rem; flex-shrink:0; }

/* Specialties grid */
.spec-grid {
    display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:1.4rem;
}
.spec-card {
    padding:2rem 1.5rem; border-radius:16px;
    text-align:center; transition:var(--t);
    opacity:0; transform:translateY(28px);
}
.spec-card.visible { opacity:1; transform:translateY(0); }
.spec-card:hover { transform:translateY(-7px); }
.spec-card .spec-ico { font-size:2.4rem; margin-bottom:.85rem; }
.spec-card h4 { font-size:.92rem; font-weight:800; margin-bottom:.45rem; color:var(--dark); }
.spec-card p  { font-size:.79rem; color:var(--gray); line-height:1.6; text-align:justify; }

.sc-orange { background:rgba(244,121,32,.06); border:1px solid rgba(244,121,32,.15); }
.sc-green  { background:rgba(109,179,63,.06);  border:1px solid rgba(109,179,63,.15);  }
.sc-purple { background:rgba(123,104,200,.06); border:1px solid rgba(123,104,200,.15); }
.sc-blue   { background:rgba(52,152,219,.06);  border:1px solid rgba(52,152,219,.15);  }
.sc-orange .spec-ico { color:var(--orange); }
.sc-green  .spec-ico { color:var(--green);  }
.sc-purple .spec-ico { color:var(--purple); }
.sc-blue   .spec-ico { color:#3498db;        }

/* Sub-section headings within services */
.svc-subhead {
    display:flex; align-items:center; gap:.75rem;
    margin:3rem 0 1.5rem;
}
.svc-subhead-bar {
    display:block; width:4px; min-height:1.5em;
    background:var(--orange); border-radius:2px; flex-shrink:0;
}
.svc-subhead h3 {
    font-size:.85rem; font-weight:800;
    color:var(--dark); text-transform:uppercase; letter-spacing:.07em;
}

/* Featured card — horizontal split for main service */
.svc-featured {
    display:grid; grid-template-columns:1fr 1.5fr; gap:0;
    border-radius:20px; overflow:hidden; background:#fff;
    box-shadow:0 10px 40px rgba(0,0,0,.07);
    margin-bottom:0;
    opacity:0; transform:translateY(40px); transition:var(--t);
}
.svc-featured.visible { opacity:1; transform:translateY(0); }
.svc-featured:hover {
    transform:translateY(-8px);
    box-shadow:0 28px 60px rgba(0,0,0,.14);
}
.svc-feat-img-wrap { position:relative; overflow:hidden; }
.svc-feat-img {
    width:100%; height:100%; min-height:340px;
    object-fit:cover; display:block;
    transition:transform .6s var(--ease);
}
.svc-featured:hover .svc-feat-img { transform:scale(1.05); }
.svc-feat-img-wrap .svc-tag { position:absolute; top:1rem; left:1rem; }
.svc-feat-body {
    padding:2.5rem; display:flex; flex-direction:column;
    justify-content:center; gap:1rem;
}
.svc-feat-body h3 { font-size:20px; font-weight:800; color:var(--dark); line-height:1.3; }
.svc-feat-body p  { font-size:16px; color:var(--gray); line-height:1.85; text-align:justify; }

/* 4-col grid for specialized services */
.svc-4 { grid-template-columns:repeat(2,1fr); }
.svc-4 .svc-img { height:220px; }
.svc-4 .svc-card h3 { min-height:unset; font-size:16px; }

/* Exterior strip */
.exterior-strip {
    margin-top:3rem; display:grid;
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1.4rem;
}
.ext-card {
    display:flex; align-items:flex-start; gap:1rem;
    padding:1.6rem; background:var(--light); border-radius:16px;
    transition:var(--t);
    opacity:0; transform:translateY(28px);
}
.ext-card.visible { opacity:1; transform:translateY(0); }
.ext-card:hover { transform:translateY(-5px); box-shadow:0 12px 32px rgba(0,0,0,.08); }
.ext-ico {
    width:44px; height:44px; min-width:44px;
    border-radius:12px; background:var(--green);
    display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:1.1rem;
}
.ext-card h4 { font-size:16px; font-weight:800; margin-bottom:.3rem; color:var(--dark); }
.ext-card p  { font-size:16px; color:var(--gray); line-height:1.6; text-align:justify; }

/* ===========================
   CTA BANNER
=========================== */
#cta {
    position:relative; overflow:hidden;
    background:linear-gradient(135deg,var(--dark) 0%,#0e2f5c 100%);
    padding:5.5rem 0; text-align:center;
}
#cta::before {
    content:''; position:absolute; inset:0;
    background:radial-gradient(ellipse at 50% 50%, rgba(244,121,32,.18) 0%, transparent 65%);
    animation:ctaPulse 5s ease-in-out infinite;
}
@keyframes ctaPulse {
    0%,100% { transform:scale(1);   opacity:1; }
    50%     { transform:scale(1.15); opacity:.6; }
}
#cta .container { position:relative; z-index:1; }
#cta h2 {
    font-size:clamp(1.8rem,4vw,2.8rem); font-weight:900;
    color:#fff; margin-bottom:.85rem;
}
#cta p { color:rgba(255,255,255,.68); margin-bottom:2.2rem; font-size:1rem; }
.cta-btns { display:flex; justify-content:center; flex-wrap:wrap; gap:1rem; }

.btn-wa {
    display:inline-flex; align-items:center; gap:.5rem;
    background:#25D366; color:#fff;
    padding:1rem 2.2rem; border-radius:50px;
    font-weight:700; font-size:.95rem;
    box-shadow:0 8px 28px rgba(37,211,102,.32);
    transition:var(--t);
}
.btn-wa:hover {
    background:#1bb358; transform:translateY(-3px);
    box-shadow:0 14px 40px rgba(37,211,102,.42);
}

/* ===========================
   CONTACTO
=========================== */
#contacto { padding:6rem 0; background:var(--light); }
.contact-grid {
    display:grid; grid-template-columns:1fr 1.5fr; gap:4rem; align-items:start;
}
.contact-info-wrap { display:flex; flex-direction:column; gap:1.4rem; min-width:0; }

.cinfo-card {
    display:flex; align-items:center; gap:1rem;
    padding:1.4rem 1.6rem; background:#fff;
    border-radius:16px; box-shadow:0 4px 20px rgba(0,0,0,.05);
    transition:var(--t); overflow:hidden;
}
.cinfo-card:hover { transform:translateX(6px); box-shadow:0 8px 30px rgba(0,0,0,.1); }
.cinfo-ico {
    width:50px; height:50px; min-width:50px;
    border-radius:14px; display:flex; align-items:center; justify-content:center;
    font-size:1.2rem; color:#fff;
}
.ci-green  { background:var(--green);  }
.ci-orange { background:var(--orange); }
.ci-purple { background:var(--purple); }
.cinfo-card > div:last-child { min-width:0; overflow:hidden; }
.cinfo-label {
    font-size:.72rem; font-weight:700; color:var(--gray);
    text-transform:uppercase; letter-spacing:.05em; margin-bottom:.22rem;
}
.cinfo-val { font-size:14px; font-weight:300; color:var(--dark); word-break:break-all; overflow-wrap:break-word; }
.cinfo-val a { color:var(--dark); transition:color .3s; }
.cinfo-val a:hover { color:var(--orange); }

.social-row { display:flex; gap:.85rem; margin-top:.3rem; }
.soc-btn {
    width:46px; height:46px; border-radius:50px;
    display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:1.1rem; transition:var(--t);
}
.soc-btn:hover { transform:translateY(-5px); }
.soc-ig { background:linear-gradient(135deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888); }
.soc-li { background:#0077b5; }

/* Form */
.contact-form-wrap {
    background:#fff; padding:2.5rem; border-radius:22px;
    box-shadow:0 12px 50px rgba(0,0,0,.08); min-width:0;
}
.contact-form-wrap h3 { font-size:1.4rem; font-weight:800; margin-bottom:.4rem; }
.contact-form-wrap > p { font-size:16px; color:var(--gray); margin-bottom:2rem; }

.form-row2 { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.fg { display:flex; flex-direction:column; gap:.35rem; margin-bottom:.9rem; }
.fg label {
    font-size:.73rem; font-weight:700; text-transform:uppercase;
    letter-spacing:.05em; color:var(--dark);
}
.fg input, .fg textarea, .fg select {
    padding:.85rem 1.1rem; border:2px solid #e5e7eb;
    border-radius:12px; font-family:inherit; font-size:.88rem;
    color:var(--dark); background:var(--light); outline:none; transition:var(--t);
}
.fg input:focus, .fg textarea:focus, .fg select:focus {
    border-color:var(--orange); background:#fff;
    box-shadow:0 0 0 4px rgba(244,121,32,.1);
}
.fg textarea { height:116px; resize:none; }
.btn-submit {
    width:100%; padding:1rem; border-radius:50px;
    background:var(--orange); color:#fff;
    font-weight:700; font-size:.97rem;
    display:flex; align-items:center; justify-content:center; gap:.5rem;
    transition:var(--t);
}
.btn-submit:hover {
    background:var(--orange-dark); transform:translateY(-2px);
    box-shadow:0 10px 28px rgba(244,121,32,.4);
}

/* ===========================
   FOOTER
=========================== */
footer {
    background:var(--dark); color:rgba(255,255,255,.6);
    padding:3.5rem 0 1.8rem;
}
.footer-top {
    display:grid; grid-template-columns:1.6fr 1fr 1fr; gap:3rem;
    padding-bottom:2.2rem;
    border-bottom:1px solid rgba(255,255,255,.08);
    margin-bottom:2rem;
}
.footer-brand img {
    height: 100px; margin-bottom:1rem;
    filter:brightness(0) invert(1);
}
.footer-brand p { font-size:16px; line-height:1.85; }

.fc h4 {
    color:#fff; font-size:16px; font-weight:700;
    text-transform:uppercase; letter-spacing:.08em; margin-bottom:1rem;
}
.fc ul { display:flex; flex-direction:column; gap:.55rem; }
.fc ul li a {
    color:rgba(255,255,255,.55); font-size:.82rem;
    display:flex; align-items:center; gap:.5rem; transition:var(--t);
}
.fc ul li a i { color:var(--orange); font-size:.68rem; }
.fc ul li a:hover { color:var(--orange); padding-left:4px; }

.footer-bottom {
    display:flex; justify-content:space-between;
    align-items:flex-start; flex-wrap:wrap; gap:1rem;
}
.footer-legal {
    font-size:.7rem; line-height:1.9; max-width:620px;
    color:rgba(255,255,255,.35);
}
.footer-legal strong { color:rgba(255,255,255,.5); }
.footer-copy { font-size:.78rem; text-align:right; }
.footer-copy a { color:var(--orange); }

/* ===========================
   WHATSAPP FLOAT
=========================== */
.wa-float {
    position:fixed; bottom:2rem; right:2rem; z-index:999;
    animation:fadeInRight 1s ease 1.2s both;
}
.wa-float a {
    width:60px; height:60px; border-radius:50%;
    background:#25D366; color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:1.8rem; position:relative;
    box-shadow:0 8px 24px rgba(37,211,102,.4);
    transition:var(--t);
}
.wa-float a::before {
    content:''; position:absolute;
    width:60px; height:60px; border-radius:50%;
    background:#25D366; opacity:.4;
    animation:rippleWa 2.2s ease-out infinite;
}
@keyframes rippleWa {
    0%   { transform:scale(1); opacity:.4; }
    100% { transform:scale(2.2); opacity:0; }
}
.wa-float a:hover { transform:scale(1.15); }

/* ===========================
   KEYFRAMES
=========================== */
@keyframes fadeInDown {
    from { opacity:0; transform:translateY(-22px); }
    to   { opacity:1; transform:translateY(0); }
}
@keyframes fadeInUp {
    from { opacity:0; transform:translateY(28px); }
    to   { opacity:1; transform:translateY(0); }
}
@keyframes fadeInRight {
    from { opacity:0; transform:translateX(28px); }
    to   { opacity:1; transform:translateX(0); }
}

/* ===========================
   RESPONSIVE
=========================== */
@media (max-width:960px) {
    .about-grid, .contact-grid { grid-template-columns:1fr; gap:2.5rem; }
    .about-img-wrap { order:-1; }
    .about-img { height:360px; }
    .about-badge { bottom:10px; right:10px; }
    .about-feats { grid-template-columns:1fr; }
    .certs p { overflow-wrap:break-word; word-break:break-word; }
    .values-grid { grid-template-columns:1fr; max-width:380px; margin:0 auto; }
    .footer-top { grid-template-columns:1fr; gap:2rem; }
    .form-row2 { grid-template-columns:1fr; }
    /* prevent reveal-left/right from causing horizontal overflow on mobile */
    .reveal-left, .reveal-right { transform:translateY(36px); }
    .reveal-left.visible, .reveal-right.visible { transform:translateY(0); }

    /* nav-links ya es panel global — sin override necesario */
    .nav-logo { height:140px; }
}
@media (max-width:768px) {
    .hero-bg {
        background-position: 72% center;
    }
    .svc-4 { grid-template-columns:1fr; }
    .exterior-strip { grid-template-columns:1fr; }
}
@media (max-width:640px) {
    .svc-featured { grid-template-columns:1fr; }
    .svc-feat-img { min-height:240px; }
}
@media (max-width:600px) {
    .hero-btns { flex-direction:column; }
    .spec-grid { grid-template-columns:1fr }
    .cta-btns { flex-direction:column; align-items:center; }
    .footer-bottom { flex-direction:column; }
    .footer-copy { text-align:left; }
    .contact-form-wrap { padding:1.4rem; }
    .contact-info-wrap > div { max-width:100%; }
    .cinfo-card { overflow:hidden; max-width:100%; }

    .about-img-wrap { overflow:hidden; }
    .about-badge {
        right:.8rem;
        bottom:.8rem;
        padding:.9rem 1.1rem;
    }
    .about-badge .big { font-size:1.8rem; }
    .about-badge .sm  { font-size:.7rem; }
}

/* ===========================
   GALERÍA
=========================== */
#galeria { padding:6rem 0; background:var(--light); }
.gallery-head { text-align:left; margin-bottom:3.5rem; }
.gallery-head .section-desc { margin:0; }

.gallery-grid {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    grid-auto-rows:220px;
    gap:1rem;
}
.gallery-item {
    position:relative; overflow:hidden; border-radius:16px;
    cursor:pointer;
    box-shadow:0 8px 28px rgba(0,0,0,.12);
}
.gallery-item.wide  { grid-column:span 2; }
.gallery-item.tall  { grid-row:span 2; }

@media (max-width:768px) {
    .gallery-grid { grid-template-columns:1fr 1fr !important; gap:.6rem; grid-auto-rows:180px; }
    .gallery-item.wide, .gallery-item.tall { grid-column:span 1 !important; grid-row:span 1 !important; }
    .gallery-item.last-alone { grid-column:span 2 !important; }
}
.gallery-item img,
.gallery-item video {
    width:100%; height:100%; object-fit:cover;
    transition:transform .6s var(--ease);
    display:block;
}
.gallery-item:hover img,
.gallery-item:hover video { transform:scale(1.07); }

.gallery-overlay {
    position:absolute; inset:0;
    background:linear-gradient(to top,rgba(20,20,40,.65) 0%,transparent 55%);
    opacity:0; transition:opacity .4s;
    display:flex; align-items:flex-end; padding:1.2rem;
}
.gallery-item:hover .gallery-overlay { opacity:1; }
.gallery-overlay-icon {
    width:46px; height:46px; border-radius:50%;
    background:rgba(255,255,255,.22); backdrop-filter:blur(6px);
    display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:1.1rem; margin-left:auto;
    transition:transform .3s;
}
.gallery-item:hover .gallery-overlay-icon { transform:scale(1.15); }

/* video badge */
.gallery-vid-badge {
    position:absolute; top:.75rem; left:.75rem;
    background:rgba(244,121,32,.9); color:#fff;
    font-size:.65rem; font-weight:700; text-transform:uppercase;
    letter-spacing:.06em; padding:.25rem .7rem; border-radius:50px;
    display:flex; align-items:center; gap:.3rem;
}

/* Lightbox */
#gallery-lb {
    position:fixed; inset:0; z-index:2000;
    background:rgba(10,10,20,.94); backdrop-filter:blur(10px);
    display:flex; align-items:center; justify-content:center;
    opacity:0; pointer-events:none;
    transition:opacity .35s;
}
#gallery-lb.open { opacity:1; pointer-events:all; }
.lb-inner {
    position:relative; max-width:92vw; max-height:88vh;
    display:flex; align-items:center; justify-content:center;
}
.lb-inner img, .lb-inner video {
    max-width:90vw; max-height:85vh;
    border-radius:14px;
    box-shadow:0 30px 80px rgba(0,0,0,.5);
    object-fit:contain;
}
.lb-close {
    position:fixed; top:1.4rem; right:1.6rem;
    width:46px; height:46px; border-radius:50%;
    background:rgba(255,255,255,.12); color:#fff;
    font-size:1.3rem; cursor:pointer; border:none;
    display:flex; align-items:center; justify-content:center;
    transition:background .25s, transform .25s;
}
.lb-close:hover { background:var(--orange); transform:rotate(90deg); }
.lb-arrow {
    position:fixed; top:50%; transform:translateY(-50%);
    width:48px; height:48px; border-radius:50%;
    background:rgba(255,255,255,.12); color:#fff;
    font-size:1.2rem; cursor:pointer; border:none;
    display:flex; align-items:center; justify-content:center;
    transition:background .25s;
}
.lb-arrow:hover { background:var(--orange); }
.lb-prev { left:1rem; }
.lb-next { right:1rem; }
.lb-counter {
    position:fixed; bottom:1.4rem; left:50%; transform:translateX(-50%);
    color:rgba(255,255,255,.6); font-size:.78rem; font-weight:600;
    letter-spacing:.08em;
}


/* ===========================
   ICON ANIMATIONS
=========================== */

/* --- Keyframes --- */
@keyframes iconFloat {
    0%,100% { transform:translateY(0); }
    50%     { transform:translateY(-4px); }
}
@keyframes iconPulse {
    0%,100% { transform:scale(1); }
    50%     { transform:scale(1.08); }
}
@keyframes iconWiggle {
    0%,100% { transform:rotate(0deg); }
    25%     { transform:rotate(-8deg); }
    75%     { transform:rotate(8deg); }
}
@keyframes iconSpin {
    from { transform:rotate(0deg); }
    to   { transform:rotate(360deg); }
}
@keyframes iconBounce {
    0%,100% { transform:translateY(0) scale(1); }
    40%     { transform:translateY(-8px) scale(1.05); }
    60%     { transform:translateY(-4px) scale(1.02); }
}
@keyframes iconGlow {
    0%,100% { box-shadow:0 0 0 0 rgba(244,121,32,.45); }
    50%     { box-shadow:0 0 0 10px rgba(244,121,32,0); }
}
@keyframes iconGlowGreen {
    0%,100% { box-shadow:0 0 0 0 rgba(109,179,63,.45); }
    50%     { box-shadow:0 0 0 10px rgba(109,179,63,0); }
}
@keyframes iconShake {
    0%,100% { transform:translateX(0); }
    20%,60% { transform:translateX(-2px); }
    40%,80% { transform:translateX(2px); }
}

/* --- About / feature icons --- */
.feat-icon {
    animation:iconFloat 3.5s ease-in-out infinite;
    transition:var(--t);
}
.feat-icon i { transition:transform .4s var(--ease); }
.about-feat:hover .feat-icon {
    background:var(--orange);
    color:#fff;
    transform:scale(1.12) rotate(-6deg);
    animation-play-state:paused;
}
.about-feat:hover .feat-icon i { transform:scale(1.15); }

/* --- Certifications check icons --- */
.certs p i {
    transition:transform .3s var(--ease);
}
.certs p:hover i { transform:scale(1.35) rotate(15deg); }

/* --- Service main cards icon --- */
.svc-icon {
    position:relative;
    transition:var(--t);
    overflow:hidden;
}
.svc-icon::after {
    content:''; position:absolute; inset:0; border-radius:inherit;
    background:rgba(255,255,255,.25);
    transform:scale(0); opacity:0;
    transition:transform .5s var(--ease), opacity .5s var(--ease);
}
.svc-icon i {
    display:inline-block;
    transition:transform .5s var(--ease);
}
.svc-card:hover .svc-icon,
.svc-featured:hover .svc-icon {
    transform:rotate(-8deg) scale(1.08);
    animation:iconGlow 1.4s ease-out infinite;
}
.svc-card:hover .svc-icon::after,
.svc-featured:hover .svc-icon::after {
    transform:scale(1.5); opacity:1;
}
.svc-card:hover .svc-icon i,
.svc-featured:hover .svc-icon i {
    animation:iconBounce .9s var(--ease);
}

/* --- Specialty cards icons (bug/shield/flask/drop) --- */
.spec-card .spec-ico {
    display:inline-block;
    transition:transform .5s var(--ease), color .3s;
    animation:iconFloat 4s ease-in-out infinite;
    transform-origin:center bottom;
}
.sc-green  .spec-ico { animation-delay:.3s; }
.sc-purple .spec-ico { animation-delay:.6s; }
.sc-blue   .spec-ico { animation-delay:.9s; }

.spec-card:hover .spec-ico {
    animation:iconWiggle .6s var(--ease);
    transform:scale(1.18);
}

/* --- Exterior cards icons (scissors/tree/plant) --- */
.ext-ico {
    transition:var(--t);
    position:relative;
}
.ext-ico i { transition:transform .5s var(--ease); }
.ext-card:hover .ext-ico {
    transform:rotate(8deg) scale(1.1);
    animation:iconGlowGreen 1.4s ease-out infinite;
}
.ext-card:hover .ext-ico i {
    animation:iconBounce .8s var(--ease);
}

/* --- Contact info icons --- */
.cinfo-ico {
    transition:var(--t);
}
.cinfo-ico i { transition:transform .5s var(--ease); }
.cinfo-card:hover .cinfo-ico {
    transform:scale(1.1) rotate(-6deg);
}
.cinfo-card:hover .cinfo-ico i {
    animation:iconBounce .8s var(--ease);
}
/* Specific gentle idle animations per icon color */
.ci-green  i { animation:iconFloat 3.6s ease-in-out infinite; }
.ci-orange i { animation:iconFloat 3.6s ease-in-out .4s infinite; }
.ci-purple i { animation:iconFloat 3.6s ease-in-out .8s infinite; }

/* --- Social buttons --- */
.soc-btn { transition:transform .4s var(--ease), box-shadow .4s var(--ease); }
.soc-btn i { transition:transform .4s var(--ease); }
.soc-btn:hover { transform:translateY(-6px) scale(1.08); box-shadow:0 10px 24px rgba(0,0,0,.18); }
.soc-btn:hover i { animation:iconWiggle .6s var(--ease); }

/* --- Footer link bullets --- */
.fc ul li a i {
    transition:transform .35s var(--ease);
}
.fc ul li a:hover i {
    transform:translateX(4px) scale(1.3);
}

/* --- Service list checks --- */
.svc-list li i { transition:transform .3s var(--ease); }
.svc-list li:hover i { transform:scale(1.4) rotate(20deg); }

/* --- Navbar CTA icon --- */
.nav-cta i { transition:transform .4s var(--ease); display:inline-block; }
.nav-cta:hover i { transform:translateX(4px) rotate(-10deg); }

/* --- Hero buttons icons --- */
.btn-primary i, .btn-outline i, .btn-wa i, .btn-submit i {
    display:inline-block;
    transition:transform .4s var(--ease);
}
.btn-primary:hover i { transform:translateX(4px); }
.btn-outline:hover i { transform:rotate(15deg) scale(1.15); }
.btn-wa:hover i      { animation:iconWiggle .6s var(--ease); }
.btn-submit:hover i  { transform:translateX(4px) scale(1.1); }

/* --- Gallery overlay icon --- */
.gallery-overlay-icon i { transition:transform .4s var(--ease); }
.gallery-item:hover .gallery-overlay-icon i { animation:iconBounce .8s var(--ease); }

/* --- Hero scroll arrow: keep existing scrollBounce but add subtle pulse --- */
.hero-scroll i { display:inline-block; animation:iconPulse 1.8s ease-in-out infinite; }

/* --- WhatsApp float: add gentle wiggle on the icon --- */
.wa-float a i { display:inline-block; animation:iconWiggle 3.2s ease-in-out infinite; }
.wa-float a:hover i { animation:iconSpin .8s linear; }

/* --- Section tag dash --- */
.section-tag::before { transition:width .4s var(--ease); }
.section-tag:hover::before { width:3rem; }

/* --- Reduce motion accessibility --- */
@media (prefers-reduced-motion: reduce) {
    .feat-icon, .spec-card .spec-ico,
    .ci-green i, .ci-orange i, .ci-purple i,
    .hero-scroll i, .wa-float a i {
        animation:none !important;
    }
}

/* ===========================
   LUCIDE ICON BASE STYLING
=========================== */
/* Default Lucide SVG sizing � Lucide outputs <svg> with currentColor stroke */
svg.lucide {
    width: 1em;
    height: 1em;
    stroke-width: 1.75;
    vertical-align: -0.15em;
    display: inline-block;
}

/* Sizing inside circular/square icon containers */
.feat-icon svg.lucide       { width: 18px; height: 18px; stroke-width: 2; }
.svc-icon svg.lucide        { width: 24px; height: 24px; stroke-width: 2; }
.cinfo-ico svg.lucide       { width: 22px; height: 22px; stroke-width: 2; }
.ext-ico svg.lucide         { width: 22px; height: 22px; stroke-width: 2; }
.spec-card .spec-ico svg.lucide { width: 44px; height: 44px; stroke-width: 1.6; }
.gallery-overlay-icon svg.lucide { width: 20px; height: 20px; stroke-width: 2; }
.gallery-vid-badge svg.lucide    { width: 12px; height: 12px; stroke-width: 2.4; }
.hero-scroll svg.lucide     { width: 28px; height: 28px; stroke-width: 1.8; }
.lb-close svg.lucide,
.lb-arrow svg.lucide        { width: 22px; height: 22px; stroke-width: 2; }
.btn-primary svg.lucide,
.btn-outline svg.lucide,
.btn-wa svg.lucide,
.btn-submit svg.lucide,
.nav-cta svg.lucide         { width: 16px; height: 16px; stroke-width: 2.2; }
.svc-list li svg.lucide,
.certs p svg.lucide,
.fc ul li a svg.lucide      { width: 15px; height: 15px; stroke-width: 2.2; flex-shrink: 0; }

/* Spinner helper for loader-2 */
.icon-spin { animation: iconSpin .9s linear infinite; transform-origin: center; }

/* ===========================
   ANIMATIONS: also target SVG
=========================== */
.feat-icon svg              { transition: transform .4s var(--ease); }
.about-feat:hover .feat-icon svg { transform: scale(1.15); }

.certs p svg                { transition: transform .3s var(--ease); }
.certs p:hover svg          { transform: scale(1.35) rotate(15deg); }

.svc-icon svg               { display: inline-block; transition: transform .5s var(--ease); }
.svc-card:hover .svc-icon svg { animation: iconBounce .9s var(--ease); }

.spec-card .spec-ico svg {
    display: inline-block;
    transition: transform .5s var(--ease), color .3s;
    animation: iconFloat 4s ease-in-out infinite;
    transform-origin: center bottom;
}
.sc-green  .spec-ico svg { animation-delay: .3s; }
.sc-purple .spec-ico svg { animation-delay: .6s; }
.sc-blue   .spec-ico svg { animation-delay: .9s; }
.spec-card:hover .spec-ico svg {
    animation: iconWiggle .6s var(--ease);
    transform: scale(1.18);
}

.ext-ico svg { transition: transform .5s var(--ease); }
.ext-card:hover .ext-ico svg { animation: iconBounce .8s var(--ease); }

.cinfo-ico svg { transition: transform .5s var(--ease); }
.cinfo-card:hover .cinfo-ico svg { animation: iconBounce .8s var(--ease); }
.ci-green  svg { animation: iconFloat 3.6s ease-in-out infinite; }
.ci-orange svg { animation: iconFloat 3.6s ease-in-out .4s infinite; }
.ci-purple svg { animation: iconFloat 3.6s ease-in-out .8s infinite; }

.fc ul li a svg { transition: transform .35s var(--ease); }
.fc ul li a:hover svg { transform: translateX(4px) scale(1.3); }

.svc-list li svg { transition: transform .3s var(--ease); }
.svc-list li:hover svg { transform: scale(1.4) rotate(20deg); }

.nav-cta svg { transition: transform .4s var(--ease); display: inline-block; }
.nav-cta:hover svg { transform: translateX(4px) rotate(-10deg); }

.btn-primary svg, .btn-outline svg, .btn-wa svg, .btn-submit svg {
    display: inline-block;
    transition: transform .4s var(--ease);
}
.btn-primary:hover svg { transform: translateX(4px); }
.btn-outline:hover svg { transform: rotate(15deg) scale(1.15); }
.btn-submit:hover svg  { transform: translateX(4px) scale(1.1); }

.gallery-overlay-icon svg { transition: transform .4s var(--ease); }
.gallery-item:hover .gallery-overlay-icon svg { animation: iconBounce .8s var(--ease); }

.hero-scroll svg { display: inline-block; animation: iconPulse 1.8s ease-in-out infinite; }

/* Footer chevron bullets keep orange tint to match previous look */
.fc ul li a svg { color: var(--orange); }
.svc-list li svg, .certs p svg { color: var(--green); }

/* Service list rows (chevron-right replacement looks better aligned) */
.svc-list li { align-items: flex-start; }

/* About feature icon � slight bigger pill */
.feat-icon { width: 40px; height: 40px; min-width: 40px; }

/* Reduce motion accessibility � extend to SVG */
@media (prefers-reduced-motion: reduce) {
    .spec-card .spec-ico svg,
    .ci-green svg, .ci-orange svg, .ci-purple svg,
    .hero-scroll svg, .wa-float a svg, .icon-spin {
        animation: none !important;
    }
}