*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{--p:#1A6FA8;--p2:#155C8C;--a:#5D7A8A;--a2:#4A6370;--dark:#0E2030;--light:#F7FAFB;--cream:#EDF3F7;--text:#1A2933;--gray:#6B8190;--border:rgba(26,111,168,.12);--white:#fff;--radius:8px;--shadow:0 8px 40px rgba(26,111,168,.10);--trans:.3s ease;}
html{scroll-behavior:smooth;}
body{font-family:'Inter',Arial,sans-serif;color:var(--text);background:var(--white);line-height:1.6;}
img{display:block;max-width:100%;}a{text-decoration:none;color:inherit;}
.container{max-width:1200px;margin:0 auto;padding:0 44px;}

/* HEADER — línea azul abajo al hacer scroll */
#header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:border-color var(--trans),box-shadow var(--trans);}
#header.scrolled{border-bottom-color:var(--border);box-shadow:0 2px 20px rgba(26,111,168,.08);}
.header-inner{display:flex;align-items:center;justify-content:space-between;height:70px;}
.logo-link img{height:36px;}
.nav{display:flex;align-items:center;gap:32px;}
.nav a:not(.btn-nav){color:var(--gray);font-size:.87rem;font-weight:500;}
.nav a:not(.btn-nav):hover{color:var(--p);}
.btn-nav{background:var(--p);color:var(--white);padding:10px 24px;border-radius:var(--radius);font-weight:700;font-size:.84rem;}
.btn-nav:hover{background:var(--p2);}
.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:4px;}
.hamburger span{display:block;width:24px;height:2px;background:var(--text);}

/* HERO — texto izquierda + collage CSS grid derecha */
.hero{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--white);}
.hero-left{display:flex;flex-direction:column;justify-content:center;padding:120px 48px 80px 44px;}
.hero-kicker{font-size:.68rem;font-weight:700;letter-spacing:5px;text-transform:uppercase;color:var(--p);margin-bottom:20px;}
.hero-h1{font-size:clamp(2.2rem,4vw,3.6rem);font-weight:900;color:var(--text);line-height:1.06;letter-spacing:-1.2px;margin-bottom:22px;}
.hero-h1 em{font-style:normal;color:var(--p);}
.hero-desc{font-size:1rem;color:var(--gray);line-height:1.8;margin-bottom:44px;max-width:420px;}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:48px;}
.btn-primary{display:inline-block;background:var(--p);color:var(--white);padding:14px 38px;border-radius:var(--radius);font-weight:800;font-size:.93rem;transition:background var(--trans),transform var(--trans);}
.btn-primary:hover{background:var(--p2);transform:translateY(-2px);}
.btn-border{display:inline-block;border:1.5px solid var(--border);color:var(--a);padding:13px 32px;border-radius:var(--radius);font-weight:600;font-size:.9rem;transition:border-color var(--trans),color var(--trans);}
.btn-border:hover{border-color:var(--p);color:var(--p);}
.hero-disciplines{display:flex;flex-wrap:wrap;gap:10px;}
.disc-pill{background:var(--cream);color:var(--a2);padding:7px 16px;border-radius:30px;font-size:.8rem;font-weight:600;}
/* COLLAGE hero derecha */
.hero-right{background:var(--light);overflow:hidden;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:3px;padding:3px;}
.hero-right-img{overflow:hidden;}
.hero-right-img img{width:100%;height:100%;object-fit:cover;transition:transform .7s;}
.hero-right-img:hover img{transform:scale(1.05);}
.hero-right-img.tall{grid-row:1/3;}

/* PORTFOLIO — bento con hover overlay azul */
.portfolio{padding:100px 0;background:var(--white);}
.sec-tag{font-size:.67rem;font-weight:700;letter-spacing:5px;text-transform:uppercase;color:var(--p);}
.sec-h2{font-size:clamp(1.5rem,2.8vw,2.3rem);font-weight:900;letter-spacing:-.5px;margin-top:8px;color:var(--text);}
.port-intro{margin-bottom:56px;}
.port-intro p{color:var(--gray);margin-top:12px;font-size:.93rem;max-width:500px;}
.port-bento{display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:260px 260px;gap:4px;}
.port-item{overflow:hidden;position:relative;background:var(--cream);}
.port-item:nth-child(1){grid-column:1/6;grid-row:1/2;}
.port-item:nth-child(2){grid-column:6/9;grid-row:1/2;}
.port-item:nth-child(3){grid-column:9/13;grid-row:1/3;}
.port-item:nth-child(4){grid-column:1/5;grid-row:2/3;}
.port-item:nth-child(5){grid-column:5/9;grid-row:2/3;}
.port-item img{width:100%;height:100%;object-fit:cover;transition:transform .6s;filter:saturate(.85);}
.port-item:hover img{transform:scale(1.06);filter:saturate(1);}
.port-item::after{content:'';position:absolute;inset:0;background:rgba(26,111,168,.0);transition:background var(--trans);}
.port-item:hover::after{background:rgba(26,111,168,.35);}
.port-item-label{position:absolute;bottom:0;left:0;right:0;padding:20px 24px;z-index:1;background:linear-gradient(to top,rgba(14,32,48,.8) 0%,transparent 100%);opacity:0;transition:opacity var(--trans);}
.port-item:hover .port-item-label{opacity:1;}
.port-item-label span{font-size:.78rem;color:rgba(255,255,255,.6);display:block;}
.port-item-label h4{font-size:.95rem;font-weight:800;color:var(--white);}
.port-item{opacity:0;transform:scale(.97);}
.port-item.visible{opacity:1;transform:none;transition:opacity .5s,transform .5s;}

/* SERVICIOS — lista horizontal con líneas */
.servicios{padding:80px 0;background:var(--light);}
.servicios-intro{margin-bottom:56px;}
.servicios-intro p{color:var(--gray);margin-top:12px;font-size:.93rem;max-width:500px;}
.svc-list{display:grid;grid-template-columns:repeat(2,1fr);gap:0;}
.svc-row-item{display:flex;align-items:flex-start;gap:20px;padding:28px 32px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);transition:background var(--trans);opacity:0;transform:translateY(10px);}
.svc-row-item.visible{opacity:1;transform:none;transition:opacity .5s,transform .5s;}
.svc-row-item:hover{background:var(--white);}
.svc-row-item:nth-child(even){border-right:none;}
.svc-icon-box{width:48px;height:48px;flex-shrink:0;border-radius:var(--radius);background:rgba(26,111,168,.08);display:flex;align-items:center;justify-content:center;color:var(--p);font-size:1.1rem;}
.svc-row-item h3{font-size:.97rem;font-weight:800;color:var(--text);margin-bottom:6px;}
.svc-row-item p{font-size:.85rem;color:var(--gray);line-height:1.68;}

/* DIFS — 2-col texto + imagen */
.difs{padding:100px 0;background:var(--white);}
.difs-inner{display:grid;grid-template-columns:1.1fr 1fr;gap:80px;align-items:center;}
.difs-text .sec-tag{color:var(--p);}
.difs-text h2{font-size:clamp(1.4rem,2.5vw,2.1rem);font-weight:900;color:var(--text);margin:10px 0 24px;line-height:1.2;}
.difs-text p{color:var(--gray);font-size:.93rem;line-height:1.75;margin-bottom:28px;}
.dif-points{display:flex;flex-direction:column;gap:16px;}
.dif-pt{display:flex;align-items:flex-start;gap:14px;opacity:0;transform:translateX(-10px);}
.dif-pt.visible{opacity:1;transform:none;transition:opacity .5s,transform .5s;}
.dif-pt-icon{color:var(--p);font-size:.9rem;margin-top:3px;flex-shrink:0;}
.dif-pt p{font-size:.88rem;color:var(--gray);line-height:1.68;margin:0;}
.dif-pt strong{color:var(--text);}
.difs-img-col{opacity:0;transform:translateX(12px);}
.difs-img-col.visible{opacity:1;transform:none;transition:opacity .6s,transform .6s;}
.difs-main-img{width:100%;border-radius:12px;overflow:hidden;height:460px;}
.difs-main-img img{width:100%;height:100%;object-fit:cover;}
.difs-sub-img{width:100%;border-radius:var(--radius);overflow:hidden;height:160px;margin-top:8px;}
.difs-sub-img img{width:100%;height:100%;object-fit:cover;}

/* PROCESO minimal vertical */
.proceso{padding:100px 0;background:var(--cream);}
.proceso-inner{display:grid;grid-template-columns:1fr 1.2fr;gap:80px;align-items:start;}
.proceso-head .sec-h2{margin-bottom:16px;}
.proceso-head p{color:var(--gray);font-size:.93rem;line-height:1.72;}
.proc-steps{display:flex;flex-direction:column;}
.proc-step{display:flex;gap:24px;padding:28px 0;border-bottom:1px solid var(--border);opacity:0;transform:translateY(10px);}
.proc-step.visible{opacity:1;transform:none;transition:opacity .5s,transform .5s;}
.proc-step:last-child{border-bottom:none;}
.step-num{font-size:1.8rem;font-weight:900;color:rgba(26,111,168,.12);line-height:1;flex-shrink:0;width:48px;}
.step-body h4{font-size:.97rem;font-weight:800;color:var(--text);margin-bottom:6px;}
.step-body p{font-size:.87rem;color:var(--gray);line-height:1.68;}

/* GALERÍA lineal 6 fotos */
.galeria{display:grid;grid-template-columns:repeat(6,1fr);height:180px;gap:3px;}
.gal-img{overflow:hidden;}
.gal-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s,filter .4s;filter:saturate(.7);}
.gal-img:hover img{transform:scale(1.08);filter:saturate(1);}

/* CONTACTO 2-col clara */
.contacto{padding:100px 0;background:var(--white);}
.contacto-inner{display:grid;grid-template-columns:1fr 1.4fr;gap:72px;align-items:start;}
.c-left .sec-h2{color:var(--text);}
.c-left p{color:var(--gray);font-size:.93rem;line-height:1.75;margin:16px 0 28px;}
.c-info{list-style:none;display:flex;flex-direction:column;gap:14px;}
.c-info li{display:flex;align-items:center;gap:14px;font-size:.9rem;color:var(--gray);}
.c-info li i{color:var(--p);width:16px;}
.c-img{width:100%;height:190px;object-fit:cover;border-radius:var(--radius);margin-top:28px;}
.c-form{background:var(--dark);border-radius:12px;padding:44px;}
.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;}
.form-group label{font-size:.78rem;font-weight:700;color:rgba(255,255,255,.4);}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.form-group input,.form-group select,.form-group textarea{padding:12px 16px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);font-size:.9rem;font-family:inherit;background:rgba(255,255,255,.05);color:var(--white);transition:border-color var(--trans);}
.form-group input::placeholder,.form-group textarea::placeholder{color:rgba(255,255,255,.2);}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--p);}
.form-group select{color:rgba(255,255,255,.4);}
.form-group select option{background:var(--dark);}
.form-group textarea{resize:vertical;}
.btn-submit{width:100%;padding:15px;background:var(--p);color:var(--white);border:none;border-radius:var(--radius);font-weight:800;font-size:1rem;cursor:pointer;transition:background var(--trans);}
.btn-submit:hover{background:var(--p2);}
.form-success{display:none;margin-top:16px;padding:14px;background:rgba(26,111,168,.15);border-radius:4px;color:var(--p);font-weight:600;font-size:.9rem;text-align:center;}
.c-left,.c-form{opacity:0;transform:translateY(14px);}
.c-left.visible,.c-form.visible{opacity:1;transform:none;transition:opacity .6s,transform .6s;}

/* FOOTER */
.footer{background:var(--dark);padding:64px 0 24px;}
.footer-inner{display:grid;grid-template-columns:2fr 1fr 1fr;gap:60px;margin-bottom:44px;}
.footer-brand img{height:36px;margin-bottom:16px;}
.footer-brand p{font-size:.84rem;color:rgba(255,255,255,.32);line-height:1.75;}
.footer-col h5{font-size:.67rem;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--p);margin-bottom:14px;}
.footer-col{display:flex;flex-direction:column;gap:9px;}
.footer-col a{font-size:.84rem;color:rgba(255,255,255,.32);transition:color var(--trans);}
.footer-col a:hover{color:var(--white);}
.footer-bottom{border-top:1px solid rgba(255,255,255,.06);padding-top:24px;text-align:center;}
.footer-bottom p{font-size:.78rem;color:rgba(255,255,255,.22);}

@media(max-width:768px){
.hero{grid-template-columns:1fr;}.hero-right{min-height:300px;}.hero-left{padding:110px 24px 60px;}
.hero-right{grid-template-columns:1fr 1fr;}
.port-bento{grid-template-columns:1fr 1fr;grid-template-rows:auto;}.port-item{grid-column:auto!important;grid-row:auto!important;min-height:200px;}
.svc-list{grid-template-columns:1fr;}.svc-row-item{border-right:none;}
.difs-inner{grid-template-columns:1fr;}
.proceso-inner{grid-template-columns:1fr;}
.galeria{grid-template-columns:repeat(3,1fr);height:auto;}.gal-img{height:140px;}
.contacto-inner{grid-template-columns:1fr;}
.footer-inner{grid-template-columns:1fr;}
.form-row{grid-template-columns:1fr;}
.nav{display:none;position:fixed;inset:0;background:var(--dark);flex-direction:column;justify-content:center;align-items:center;gap:24px;z-index:99;}.nav.open{display:flex;}.nav a{font-size:1.1rem;color:rgba(255,255,255,.8);}
.hamburger{display:flex;z-index:100;}
}