:root{--negro:#0A0A0B;--negro-s:#111214;--g-osc:#1C1E22;--g-med:#2E3138;--g-ace:#4A5060;--g-cla:#8B9099;--g-hum:#C8CBD4;--bco:#F4F5F7;--ac:#00C896;--ac-h:#00A87E;--ac-s:rgba(0,200,150,0.1);--ac-g:rgba(0,200,150,0.25);--tp:#F4F5F7;--ts:#8B9099;--tm:#555B66;--fb:#0A0A0B;--fc:#141618;--fe:#1C1E22;--fbo:#252830;--fd:'Barlow Condensed',sans-serif;--fb2:'DM Sans',sans-serif;--fm:'JetBrains Mono',monospace;--mw:1200px;--nh:72px;--rs:4px;--rm:8px;--rl:12px;--rx:20px;--tr:.15s ease;--tm2:.3s ease;--tl:.5s ease;--sh:0 8px 40px rgba(0,0,0,.6)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--fb2);font-size:1rem;line-height:1.6;color:var(--tp);background:var(--fb);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{cursor:pointer;border:none;background:none;font-family:inherit}
input,textarea,select{font-family:inherit;font-size:inherit}
h1,h2,h3,h4{font-family:var(--fd);line-height:1.05;color:var(--tp)}
h1{font-size:clamp(2.5rem,5.5vw,5rem);font-weight:900}
h2{font-size:clamp(1.75rem,3vw,3rem);font-weight:800}
h3{font-size:clamp(1.1rem,2vw,1.5rem);font-weight:700}
p{line-height:1.7;color:var(--ts)}
::selection{background:var(--ac);color:var(--negro)}
:focus-visible{outline:2px solid var(--ac);outline-offset:3px}
::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--negro)}::-webkit-scrollbar-thumb{background:var(--g-med);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--ac)}

/* Layout */
.c{width:100%;max-width:var(--mw);margin-inline:auto;padding-inline:1.5rem}
.sec{padding-block:6rem}
.sec-sm{padding-block:4rem}
.g2{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.fbe{display:flex;align-items:center;justify-content:space-between}
.sh{margin-bottom:4rem;max-width:600px}
.shc{text-align:center;margin-inline:auto}
.tag{font-family:var(--fm);font-size:.72rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ac);display:inline-flex;align-items:center;gap:.5rem;margin-bottom:1rem}
.tag::before{content:'';display:block;width:20px;height:1px;background:var(--ac)}
.ac{color:var(--ac)}

/* Nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:1000;height:var(--nh);display:flex;align-items:center;transition:background var(--tm2),box-shadow var(--tm2)}
.nav.sol{background:rgba(10,10,11,.96);backdrop-filter:blur(20px);box-shadow:0 1px 0 var(--fbo)}
.nci{width:100%;max-width:var(--mw);margin-inline:auto;padding-inline:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:2rem}
.logo{display:flex;align-items:center;gap:.75rem;flex-shrink:0}
.lm{width:36px;height:36px;background:var(--ac);border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-weight:900;font-size:1.1rem;color:var(--negro)}
.lt{font-family:var(--fd);font-size:1.2rem;font-weight:800;color:var(--bco);letter-spacing:.02em}
.lt span{color:var(--ac)}
.nm{display:flex;align-items:center;gap:.25rem}
.ne{font-size:.875rem;font-weight:500;color:var(--g-hum);padding:.5rem .75rem;border-radius:var(--rs);transition:color var(--tr),background var(--tr);white-space:nowrap;cursor:pointer}
.ne:hover,.ne.act{color:var(--bco);background:var(--fe)}
.ne.act{color:var(--ac)!important}
.ncta{background:var(--ac);color:var(--negro);font-size:.85rem;font-weight:700;padding:.5rem 1.25rem;border-radius:var(--rs);transition:all var(--tr);white-space:nowrap;font-family:var(--fd);letter-spacing:.03em;cursor:pointer}
.ncta:hover{background:var(--ac-h);transform:translateY(-1px)}
.ham{display:none;flex-direction:column;gap:5px;padding:.5rem;cursor:pointer;background:none;border:none}
.ham span{display:block;width:24px;height:2px;background:var(--bco);border-radius:2px;transition:transform var(--tm2),opacity var(--tm2)}
.ham.op span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.ham.op span:nth-child(2){opacity:0}
.ham.op span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.mob{display:none;position:fixed;top:var(--nh);left:0;right:0;background:rgba(10,10,11,.98);backdrop-filter:blur(20px);padding:1.5rem;border-top:1px solid var(--fbo);flex-direction:column;gap:.5rem;z-index:999}
.mob.op{display:flex}
.mob .ne{padding:.75rem 1rem;font-size:1rem}
.mob .ncta{margin-top:1rem;padding:.75rem;text-align:center;font-size:1rem}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--fd);font-weight:700;font-size:1rem;letter-spacing:.03em;padding:1rem 2rem;border-radius:var(--rs);border:2px solid transparent;cursor:pointer;transition:all var(--tm2);white-space:nowrap}
.b1{background:var(--ac);color:var(--negro);border-color:var(--ac)}
.b1:hover{background:var(--ac-h);border-color:var(--ac-h);transform:translateY(-2px);box-shadow:0 8px 24px var(--ac-g)}
.b2{background:transparent;color:var(--bco);border-color:var(--fbo)}
.b2:hover{border-color:var(--g-ace);background:var(--fe);transform:translateY(-2px)}
.bf{background:transparent;color:var(--ac);border-color:var(--ac);padding:.7rem 1.5rem;font-size:.875rem}
.bf:hover{background:var(--ac-s)}
.blg{padding:1.2rem 2.5rem;font-size:1.1rem}
.barr{width:18px;height:18px;transition:transform var(--tr)}
.btn:hover .barr{transform:translateX(3px)}

/* Badge */
.badge{display:inline-flex;align-items:center;gap:.5rem;background:var(--ac-s);border:1px solid rgba(0,200,150,.2);border-radius:100px;padding:.25rem 1rem;font-family:var(--fm);font-size:.72rem;color:var(--ac);letter-spacing:.08em;text-transform:uppercase}
.dot{width:6px;height:6px;background:var(--ac);border-radius:50%;animation:blink 2s ease-in-out infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}

/* Hero */
.hero{min-height:100vh;display:flex;align-items:center;padding-top:var(--nh);position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 70% 50%,rgba(0,200,150,.07) 0%,transparent 60%);pointer-events:none}
.hero::after{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.014) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.014) 1px,transparent 1px);background-size:50px 50px;pointer-events:none}
.hlay{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center;width:100%}
.hbadge{margin-bottom:1.5rem}
.htit{font-size:clamp(2.75rem,5.5vw,5rem);font-weight:900;line-height:1;letter-spacing:-.02em;margin-bottom:1.5rem}
.htit .abl{color:var(--ac);display:block}
.hsub{font-size:clamp(1rem,1.5vw,1.1rem);color:var(--ts);line-height:1.65;margin-bottom:2rem;max-width:480px}
.hact{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:2.5rem}
.hcks{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.hck{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--tm)}
.hck svg{width:14px;height:14px;stroke:var(--ac);flex-shrink:0}
/* hero visual */
.hvis{position:relative}
.hwrap{width:100%;aspect-ratio:4/5;background:var(--g-osc);border-radius:var(--rx);border:1px solid var(--fbo);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;overflow:hidden;position:relative}
.hwrap::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(0,200,150,.025) 2px,rgba(0,200,150,.025) 4px)}
.hwrap svg{width:80px;height:80px;stroke:var(--g-ace);opacity:.25}
.hwrap span{font-family:var(--fm);font-size:.72rem;color:var(--tm);text-align:center;padding:0 2rem}
.hwrap img{width:100%;height:100%;object-fit:cover;object-position:center;position:relative;z-index:1}
.hfl{position:absolute;bottom:1.5rem;left:-2rem;background:rgba(10,10,11,.93);backdrop-filter:blur(16px);border:1px solid var(--fbo);border-radius:var(--rl);padding:1rem 1.25rem;display:flex;align-items:center;gap:1rem;min-width:220px}
.hfi{width:40px;height:40px;background:var(--ac-s);border-radius:var(--rm);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hfi svg{width:20px;height:20px;stroke:var(--ac)}
.hfn{font-family:var(--fd);font-size:1.5rem;font-weight:900;color:var(--ac);line-height:1}
.hfl2{font-size:.72rem;color:var(--ts);line-height:1.3}

/* Ticker */
.tick{background:var(--fc);border-block:1px solid var(--fbo);padding-block:.9rem;overflow:hidden}
.tickp{display:flex;gap:2.5rem;animation:tkr 28s linear infinite;width:max-content}
.ticki{display:flex;align-items:center;gap:.75rem;font-family:var(--fm);font-size:.78rem;color:var(--tm);white-space:nowrap}
.ticki span{color:var(--ac)}
@keyframes tkr{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Metrics */
.mets{background:var(--fc);border-block:1px solid var(--fbo)}
.metg{display:grid;grid-template-columns:repeat(4,1fr)}
.met{text-align:center;padding:2.5rem 1.5rem;border-right:1px solid var(--fbo)}
.met:last-child{border-right:none}
.metn{font-family:var(--fd);font-size:clamp(2.25rem,4vw,3.25rem);font-weight:900;color:var(--ac);line-height:1;margin-bottom:.5rem}
.metl{font-size:.78rem;color:var(--ts);font-weight:500;letter-spacing:.04em}

/* Service cards */
.csv{padding:2rem;background:var(--fc);border:1px solid var(--fbo);border-radius:var(--rl);transition:all var(--tm2);position:relative;overflow:hidden}
.csv::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--ac);transform:scaleX(0);transform-origin:left;transition:transform var(--tm2)}
.csv:hover::before{transform:scaleX(1)}
.csv:hover{border-color:var(--g-ace);transform:translateY(-4px);box-shadow:var(--sh)}
.csvi{width:48px;height:48px;background:var(--ac-s);border-radius:var(--rm);display:flex;align-items:center;justify-content:center;margin-bottom:1.25rem}
.csvi svg{width:24px;height:24px;stroke:var(--ac)}
.csvt{font-size:1.05rem;margin-bottom:.75rem}
.csvd{font-size:.875rem;color:var(--ts);line-height:1.65;margin-bottom:1.25rem}
.csvl{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;color:var(--ac);cursor:pointer;transition:gap var(--tr)}
.csvl:hover{gap:.75rem}
.service-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}
.service-detail-card{background:var(--fc);border:1px solid var(--fbo);border-radius:var(--rx);overflow:hidden;display:flex;flex-direction:column;min-width:0}
.service-detail-media{aspect-ratio:16/10;overflow:hidden;background:linear-gradient(135deg,var(--g-osc),var(--fe))}
.service-detail-media img{width:100%;height:100%;object-fit:cover;object-position:center}
.service-detail-body{padding:2rem;display:flex;flex-direction:column;gap:1rem}
.service-detail-copy{font-size:.95rem;color:var(--ts);line-height:1.7}
.service-detail-list{display:flex;flex-direction:column;gap:.7rem}
.service-detail-list li{display:flex;gap:.75rem;font-size:.88rem;color:var(--ts);line-height:1.55}
.service-detail-list .ok{color:var(--ac);flex-shrink:0;font-weight:700}
.service-detail-cta{margin-top:.5rem}

/* Proceso */
.proc{background:var(--fc);border-block:1px solid var(--fbo)}
.pasos{display:grid;grid-template-columns:repeat(4,1fr);position:relative}
.pasos::before{content:'';position:absolute;top:24px;left:12.5%;right:12.5%;height:1px;background:linear-gradient(to right,var(--ac),var(--g-ace),var(--ac))}
.paso{text-align:center;padding:1.5rem}
.pn{width:48px;height:48px;background:var(--negro);border:2px solid var(--ac);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-size:1.1rem;font-weight:800;color:var(--ac);margin:0 auto 1.25rem;position:relative;z-index:1}
.pt{font-size:.9rem;font-weight:700;font-family:var(--fd);margin-bottom:.5rem;color:var(--tp)}
.pd{font-size:.8rem;color:var(--ts);line-height:1.5}

/* Projects */
.pg{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:1rem;height:560px}
.pg .pc:first-child{grid-row:span 2}
.pc{position:relative;border-radius:var(--rl);background:var(--g-osc);cursor:pointer;display:flex;align-items:flex-end;justify-content:flex-start;overflow:hidden;border:1px solid transparent;transition:border-color var(--tr),transform var(--tm2)}
.pc:hover{border-color:var(--ac);transform:translateY(-2px)}
.pc img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .7s ease}
.pc:hover img{transform:scale(1.05)}
.pc::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(10,10,11,.9) 0%,rgba(10,10,11,.18) 58%,rgba(10,10,11,0) 100%)}
.pc span{position:relative;z-index:1;display:block;width:100%;padding:1.25rem 1.1rem;font-size:.95rem;font-weight:700;color:var(--tp);text-align:left;line-height:1.25}
.pc small{display:block;margin-top:.35rem;font-size:.8rem;font-weight:500;color:var(--ac)}

/* CTA Banner */
.bann{background:var(--fe);border:1px solid var(--fbo);border-radius:var(--rx);padding:4rem 3rem;text-align:center;position:relative;overflow:hidden}
.bann::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0%,rgba(0,200,150,.07) 0%,transparent 70%);pointer-events:none}
.bannt{font-size:clamp(1.75rem,3vw,3rem);margin-bottom:1rem;position:relative}
.bannd{font-size:1.05rem;color:var(--ts);max-width:480px;margin:0 auto 2rem;position:relative}
.bannb{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;position:relative}

/* Footer */
.foot{background:var(--negro-s);border-top:1px solid var(--fbo);padding-top:4rem}
.fg{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:3rem;padding-bottom:3rem;border-bottom:1px solid var(--fbo)}
.fd{font-size:.875rem;color:var(--ts);line-height:1.6;margin:.75rem 0 1.5rem;max-width:260px}
.fci{display:flex;align-items:center;gap:.75rem;font-size:.875rem;color:var(--ts);margin-bottom:.75rem}
.fci svg{width:15px;height:15px;stroke:var(--ac);flex-shrink:0}
.fci a{color:var(--ts);transition:color var(--tr)}
.fci a:hover{color:var(--ac)}
.fct{font-family:var(--fd);font-size:.9rem;font-weight:700;color:var(--bco);margin-bottom:1.25rem}
.fn{display:flex;flex-direction:column;gap:.75rem}
.fl{font-size:.875rem;color:var(--ts);cursor:pointer;transition:color var(--tr)}
.fl:hover{color:var(--ac)}
.fb{padding-block:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}
.fc2{font-size:.78rem;color:var(--tm)}

/* WhatsApp */
.wa{position:fixed;bottom:1.5rem;right:1.5rem;z-index:999;display:flex;align-items:center;gap:.75rem}
.wab{width:56px;height:56px;background:#25D366;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(37,211,102,.4);transition:all var(--tm2);animation:wap 3s ease-in-out infinite}
.wab:hover{transform:scale(1.1);box-shadow:0 6px 28px rgba(37,211,102,.6)}
.wab svg{width:28px;height:28px;fill:white}
.watt{background:var(--fe);border:1px solid var(--fbo);color:var(--tp);font-size:.8rem;font-weight:500;padding:.4rem 1rem;border-radius:var(--rm);white-space:nowrap;opacity:0;transform:translateX(8px);transition:all var(--tm2);pointer-events:none}
.wa:hover .watt{opacity:1;transform:translateX(0)}
@keyframes wap{0%,100%{box-shadow:0 4px 20px rgba(37,211,102,.4)}50%{box-shadow:0 4px 32px rgba(37,211,102,.7)}}

/* Inner pages */
.ph{padding-top:calc(var(--nh) + 4rem);padding-bottom:4rem;background:var(--fc);border-bottom:1px solid var(--fbo);position:relative;overflow:hidden}
.ph::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0%,rgba(0,200,150,.05) 0%,transparent 70%)}
.ph .c{position:relative;z-index:1}
.bc{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--tm);margin-bottom:1rem}
.bc .bcs{color:var(--g-ace)}

/* Forms */
.fg2{display:flex;flex-direction:column;gap:.5rem}
.fl2{font-size:.875rem;font-weight:500;color:var(--g-hum)}
.fi,.fsel,.fta{background:var(--fe);border:1px solid var(--fbo);border-radius:var(--rm);color:var(--tp);font-size:1rem;padding:1rem 1.25rem;width:100%;transition:border-color var(--tr),box-shadow var(--tr);-webkit-appearance:none}
.fi::placeholder,.fta::placeholder{color:var(--tm)}
.fi:focus,.fsel:focus,.fta:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 3px var(--ac-s)}
.fta{min-height:110px;resize:vertical}
.fsel{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%238B9099' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem}
.fsel option{background:var(--fe);color:var(--tp)}
.ferr{font-size:.75rem;color:#FF6B6B;display:none}
.fg2.ce .fi,.fg2.ce .fsel{border-color:#FF6B6B}
.fg2.ce .ferr{display:block}
.fgg{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.fst{display:flex;flex-direction:column;gap:1.25rem}
.fcard{background:var(--fc);border:1px solid var(--fbo);border-radius:var(--rx);padding:2.5rem}

/* Contact */
.cly{display:grid;grid-template-columns:1fr 1.2fr;gap:4rem;align-items:start}
.dat{display:flex;gap:1rem;margin-bottom:1.25rem}
.dati{width:44px;height:44px;background:var(--ac-s);border-radius:var(--rm);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dati svg{width:20px;height:20px;stroke:var(--ac)}
.datl{font-size:.7rem;font-family:var(--fm);text-transform:uppercase;letter-spacing:.1em;color:var(--tm);margin-bottom:2px}
.datv{font-size:.95rem;color:var(--tp);font-weight:500}

/* Filters */
.fils{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:2.5rem}
.fil{padding:.4rem 1.25rem;border-radius:100px;font-size:.875rem;font-weight:500;color:var(--ts);border:1px solid var(--fbo);background:transparent;cursor:pointer;transition:all var(--tr)}
.fil:hover,.fil.act{color:var(--ac);border-color:var(--ac);background:var(--ac-s)}

/* About */
.abh{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
.abim{aspect-ratio:1;background:var(--g-osc);border-radius:var(--rx);border:1px solid var(--fbo);display:flex;align-items:center;justify-content:center;overflow:hidden}
.abim img{width:100%;height:100%;object-fit:cover;object-position:center}
.vc{padding:2rem 1.5rem;background:var(--fc);border:1px solid var(--fbo);border-radius:var(--rl);text-align:center}
.vci{font-size:2rem;margin-bottom:1rem}
.vct{font-size:1.05rem;font-family:var(--fd);font-weight:700;margin-bottom:.75rem;color:var(--tp)}
.vcd{font-size:.875rem;color:var(--ts);line-height:1.6}

/* Reveal */
.rv{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}
.rv.vs{opacity:1;transform:translateY(0)}
.d1{transition-delay:.1s}.d2{transition-delay:.2s}.d3{transition-delay:.3s}

/* SPA */
.pg2{display:none}.pg2.act{display:block}

/* Dynamic project cards */
.project-card{background:var(--fc);border:1px solid var(--fbo);border-radius:var(--rl);overflow:hidden;display:flex;flex-direction:column;min-height:100%;height:100%;transition:transform var(--tm2),border-color var(--tm2),box-shadow var(--tm2);cursor:pointer;min-width:0}
.pg .project-card:first-child{grid-row:span 2}
.project-card:hover,.project-card:focus-visible{transform:translateY(-4px);border-color:var(--ac);box-shadow:var(--sh)}
.project-media{position:relative;aspect-ratio:4/3;overflow:hidden;background:linear-gradient(135deg,var(--g-osc),var(--fe))}
.pg .project-card:first-child .project-media{aspect-ratio:4/5}
.project-media::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(10,10,11,.22),rgba(10,10,11,0) 55%)}
.project-media img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .7s ease}
.project-card:hover .project-media img{transform:scale(1.05)}
.project-copy{padding:1.2rem 1.2rem 1.35rem;display:flex;flex-direction:column;gap:.8rem;flex:1;justify-content:flex-start}
.project-meta{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.project-chip{display:inline-flex;align-items:center;padding:.28rem .7rem;border-radius:999px;background:var(--ac-s);border:1px solid rgba(0,200,150,.18);font-family:var(--fm);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ac)}
.project-location{font-size:.78rem;color:var(--g-hum);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.project-title{font-size:1.1rem;line-height:1.12;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.5em;overflow-wrap:anywhere}
.project-desc{font-size:.9rem;color:var(--ts);line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:4.8em}
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;align-items:stretch;grid-auto-flow:row}
.project-grid .project-card{min-height:100%}
.project-grid .project-media{aspect-ratio:5/4}
.project-modal{position:fixed;inset:0;z-index:1400;display:none}
.project-modal.open{display:block}
.project-modal-backdrop{position:absolute;inset:0;background:rgba(10,10,11,.8);backdrop-filter:blur(8px)}
.project-modal-dialog{position:relative;z-index:1;width:min(960px,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);margin:4vh auto;background:var(--fc);border:1px solid var(--fbo);border-radius:var(--rx);overflow:hidden;box-shadow:var(--sh)}
.project-modal-close{position:absolute;top:1rem;right:1rem;width:42px;height:42px;border-radius:50%;background:rgba(10,10,11,.78);border:1px solid rgba(255,255,255,.08);color:var(--bco);display:flex;align-items:center;justify-content:center;z-index:2}
.project-modal-grid{display:grid;grid-template-columns:1.1fr .9fr;max-height:calc(100dvh - 2rem)}
.project-modal-visual{background:var(--negro);min-height:360px}
.project-modal-visual img{width:100%;height:100%;object-fit:cover}
.project-modal-copy{padding:2rem;display:flex;flex-direction:column;justify-content:center;overflow:auto}
.project-modal-meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}
.project-modal-location{font-size:.85rem;color:var(--g-hum)}
.project-modal-title{margin-bottom:1rem;overflow-wrap:anywhere}
.project-modal-text{font-size:.98rem;color:var(--ts);line-height:1.7}

/* Responsive */
@media(max-width:1024px){
  .hlay,.abh{grid-template-columns:1fr}
  .hvis{display:none}
  .metg{grid-template-columns:repeat(2,1fr)}
  .pg{grid-template-columns:1fr 1fr;grid-template-rows:auto;height:auto}
  .pg .pc:first-child{grid-row:span 1}
  .pg .project-card:first-child{grid-row:span 1}
  .project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fg{grid-template-columns:1fr 1fr;gap:2rem}
  .cly{grid-template-columns:1fr}
}
@media(max-width:768px){
  .nm,.ncta{display:none}
  .ham{display:flex}
  .hero{min-height:auto;padding-top:calc(var(--nh) + 2.5rem);padding-bottom:4rem}
  .g3,.g2{grid-template-columns:1fr}
  .service-detail-grid{grid-template-columns:1fr}
  .pasos{grid-template-columns:repeat(2,1fr)}
  .pasos::before{display:none}
  .metg{grid-template-columns:1fr 1fr}
  .met{border-right:none;border-bottom:1px solid var(--fbo);padding:1.5rem}
  .met:last-child{border-bottom:none}
  .pg{grid-template-columns:1fr}
  .fg{grid-template-columns:1fr}
  .fb{flex-direction:column;text-align:center}
  .fgg{grid-template-columns:1fr}
  .bann{padding:2.5rem 1.5rem}
  .fcard{padding:1.5rem}
  .project-modal-dialog{width:min(100vw - 1rem,680px);margin:1rem auto}
  .project-modal-grid{grid-template-columns:1fr}
  .project-modal-visual{min-height:260px;max-height:42vh}
  .project-modal-copy{padding:1.35rem}
  .project-grid{grid-template-columns:1fr}
  .project-grid .project-media{aspect-ratio:16/10}
}
@media(max-width:480px){.pasos{grid-template-columns:1fr}}
