:root{--ink:#102224;--deep:#071a1c;--teal:#0f7775;--mint:#91d1c5;--cream:#f2eee5;--paper:#faf8f3;--line:#d8d8cf;--orange:#e2643e;--sans:'DM Sans',sans-serif;--display:'Manrope',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.6}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}.container{width:min(1160px,calc(100% - 48px));margin:auto}.skip{position:absolute;top:-60px;left:20px;background:#fff;padding:12px;z-index:100}.skip:focus{top:12px}.header{position:sticky;top:0;z-index:20;background:rgba(250,248,243,.92);backdrop-filter:blur(16px);border-bottom:1px solid rgba(16,34,36,.08)}.nav{height:82px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px;font-size:13px;letter-spacing:.12em}.brand img{width:45px;height:45px;object-fit:contain}.nav-links{display:flex;align-items:center;gap:30px;font-size:14px}.nav-links>a{position:relative}.nav-links>a:after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:2px;background:var(--teal);transition:.25s}.nav-links>a:hover:after{width:100%}.lang{border:0;background:none;display:flex;gap:8px;align-items:center;cursor:pointer;color:#7c8886}.lang i{width:1px;height:15px;background:#b6bcb7}.lang .active{color:var(--teal);font-weight:700}.menu-toggle{display:none;background:none;border:0}.hero{min-height:calc(100vh - 82px);display:grid;grid-template-columns:1.1fr .8fr;gap:90px;align-items:center;padding-top:70px;padding-bottom:80px}.eyebrow,.section-number{font-size:12px;letter-spacing:.18em;font-weight:700;color:var(--teal)}h1,h2,h3{font-family:var(--display);line-height:1.08;margin:0}h1{font-size:clamp(48px,6vw,82px);letter-spacing:-.055em;max-width:820px}h2{font-size:clamp(38px,5vw,66px);letter-spacing:-.045em}.intro{max-width:650px;font-size:19px;color:#465756;margin:30px 0}.hero-actions{display:flex;align-items:center;gap:30px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:54px;padding:0 23px;font-weight:700;font-size:14px}.button.primary{background:var(--orange);color:#fff;box-shadow:0 10px 30px rgba(226,100,62,.2);transition:.25s}.button.primary:hover{transform:translateY(-3px)}.button.text{padding:0;border-bottom:1px solid var(--ink)}.button.text b{margin-left:15px}.availability{display:flex;align-items:center;gap:11px;margin-top:38px;font-size:13px;color:#64716f}.availability span{width:9px;height:9px;background:#55b875;border-radius:50%;box-shadow:0 0 0 5px #dceee2}.portrait{position:relative}.portrait-frame{aspect-ratio:4/5;overflow:hidden;border-radius:180px 180px 8px 8px;background:var(--mint);border:12px solid #e3eee8}.portrait-frame img{width:100%;height:100%;object-fit:cover;object-position:52% center;transform:scale(1.12)}.portrait:before{content:"";position:absolute;inset:-25px 30px 30px -25px;border:1px solid var(--mint);border-radius:200px 200px 8px 8px;z-index:-1}.r2e2-card{position:absolute;bottom:18px;left:-55px;background:#fff;padding:12px 18px 12px 12px;display:flex;align-items:center;gap:13px;box-shadow:0 14px 50px rgba(7,26,28,.16)}.r2e2-card img{width:54px;height:54px}.r2e2-card strong,.r2e2-card small{display:block}.r2e2-card strong{font-family:var(--display);font-size:20px}.r2e2-card small{font-size:11px;color:#65706f}.section{padding:120px 0}.story{background:var(--cream)}.story-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:100px}.story h2{margin-top:42px}.story-copy>p{font-size:18px;color:#435453;margin:0 0 25px}.story blockquote{margin:45px 0 0;padding:26px 0;border-top:1px solid #c8c6bc;display:grid;grid-template-columns:95px 1fr;gap:20px}.story blockquote b{font:800 28px var(--display)}.story blockquote span{font-style:italic}.section-heading{display:grid;grid-template-columns:1.2fr .6fr;gap:100px;align-items:end;margin:42px 0 70px}.section-heading>p{color:#60706f;font-size:17px}.stats{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line);margin-bottom:70px}.stats>div{padding:35px 30px;display:flex;align-items:center;gap:20px;border-right:1px solid var(--line)}.stats>div:last-child{border:0}.stats strong{font:800 47px var(--display);color:var(--teal)}.stats span{font-size:14px;line-height:1.35;max-width:150px}.timeline{display:grid;grid-template-columns:repeat(4,1fr)}.timeline article{position:relative;padding:36px 26px 0;border-top:2px solid var(--ink)}.timeline article:before{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:var(--orange);top:-7px;left:26px}.timeline small{color:var(--teal);font-weight:700}.timeline h3{font-size:20px;margin:16px 0 10px}.timeline p{font-size:14px;color:#61706f}.services{background:var(--deep);color:#edf3ed}.services .section-number{color:var(--mint)}.section-heading.light>p{color:#9aacaa}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #284043}.service-grid article{padding:35px;min-height:400px;border-right:1px solid #284043;display:flex;flex-direction:column}.service-grid article:last-child{border:0}.service-grid article>span{font-size:12px;color:var(--mint)}.icon{font-size:34px;color:var(--orange);margin:45px 0 30px}.service-grid h3{font-size:25px}.service-grid p{color:#aebcba}.service-grid small{margin-top:auto;color:var(--mint);letter-spacing:.1em}.contact-grid{display:grid;grid-template-columns:1.25fr .7fr;gap:100px;align-items:end}.contact h2{margin:40px 0 25px}.contact p{max-width:650px}.contact-actions{display:flex;flex-direction:column;align-items:flex-start;gap:22px}.contact-actions>a:not(.button){font-weight:700;border-bottom:1px solid}.contact-actions>span{color:#73807f;font-size:13px}footer{border-top:1px solid var(--line);padding:30px 0}footer .container{display:flex;align-items:center;justify-content:space-between}footer p,footer>a{font-size:11px;color:#667370;letter-spacing:.08em}.reveal{animation:enter .8s ease both}.portrait.reveal{animation-delay:.15s}@keyframes enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@media(max-width:850px){.container{width:min(100% - 34px,700px)}.nav{height:70px}.menu-toggle{display:block;width:38px;height:38px}.menu-toggle span{display:block;width:24px;height:2px;background:var(--ink);margin:6px}.nav-links{display:none;position:absolute;top:70px;left:0;width:100%;background:var(--paper);padding:30px;flex-direction:column;box-shadow:0 20px 30px rgba(0,0,0,.08)}.nav-links.open{display:flex}.hero{grid-template-columns:1fr;gap:70px;padding-top:60px}.hero-copy{order:1}.portrait{width:min(440px,90%);margin:auto}.story-grid,.section-heading,.contact-grid{grid-template-columns:1fr;gap:35px}.section{padding:85px 0}.story h2{margin-top:30px}.stats{grid-template-columns:1fr}.stats>div{border-right:0;border-bottom:1px solid var(--line)}.timeline{grid-template-columns:1fr 1fr;gap:30px 0}.service-grid{grid-template-columns:1fr}.service-grid article{border-right:0;border-bottom:1px solid #284043;min-height:340px}.contact-actions{margin-top:20px}}
@media(max-width:540px){h1{font-size:43px}.hero-actions{align-items:flex-start;flex-direction:column;gap:12px}.r2e2-card{left:-10px}.timeline{grid-template-columns:1fr}.section-heading{margin-bottom:45px}.service-grid article{padding:28px}.story blockquote{grid-template-columns:1fr}.contact-grid{gap:15px}footer .container{flex-direction:column;gap:20px}.brand img{width:38px;height:38px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{animation:none}.button.primary{transition:none}}

/* Retrato editorial: alternativa limpia al marco arqueado */
.portrait-editorial{position:relative;padding:18px 18px 0 0}
.portrait-editorial:before{content:"";position:absolute;inset:0 0 64px 42px;background:#dcebe7;border:0;border-radius:0;z-index:-1}
.portrait-editorial .portrait-frame{aspect-ratio:4/5;overflow:hidden;border:0;border-radius:0;background:#dcebe7;box-shadow:0 28px 70px rgba(7,26,28,.16)}
.portrait-editorial .portrait-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 36%;transform:none}
.portrait-accent{position:absolute;top:-40px;right:-20px;z-index:2;font:800 68px/1 var(--display);color:var(--teal);letter-spacing:-.07em}
.portrait-accent span{font-size:.55em;color:var(--orange)}
.portrait-caption{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:22px 0 0 30px}
.portrait-caption>div:first-child>span,.portrait-caption small{display:block}
.portrait-caption>div:first-child>span{font-size:11px;letter-spacing:.15em;color:var(--teal);font-weight:700}
.portrait-caption>div:first-child>small{font-size:12px;color:#6f7b79;margin-top:3px}
.r2e2-signature{display:flex;align-items:center;gap:9px}
.r2e2-signature img{width:42px;height:42px}
.r2e2-signature>span{font:800 17px var(--display)}
.r2e2-signature small{font:400 10px var(--sans);color:#6f7b79}
.technologies{background:#e7efeb}
.technologies .section-heading{margin-bottom:55px}
.technology-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #bdceca;border-left:1px solid #bdceca}
.technology-grid article{min-height:210px;padding:28px;border-right:1px solid #bdceca;border-bottom:1px solid #bdceca;display:flex;flex-direction:column}
.technology-grid article>span{font-size:11px;letter-spacing:.15em;color:var(--teal);font-weight:700}
.technology-grid h3{font-size:21px;margin:30px 0 14px}
.technology-grid p{margin:0;color:#526462;font-size:14px}
.technology-grid .documentation-card{grid-column:1/-1;min-height:auto;display:grid;grid-template-columns:55px 1fr auto;gap:30px;align-items:center;background:var(--teal);color:#fff;border-color:var(--teal)}
.documentation-card>span{color:var(--mint)!important;align-self:start}
.documentation-card h3{font-size:25px;margin:0 0 12px}
.documentation-card p{color:#d8ece7;font-size:15px;max-width:760px}
.documentation-card strong{font-size:10px;letter-spacing:.14em;color:var(--mint);white-space:nowrap}
@media(max-width:850px){.technology-grid{grid-template-columns:1fr 1fr}.technology-grid .documentation-card{grid-template-columns:40px 1fr}.documentation-card strong{grid-column:2;white-space:normal}}
@media(max-width:540px){.portrait-editorial{padding-right:10px}.portrait-accent{right:-5px;font-size:54px}.portrait-caption{padding-left:10px}.portrait-caption>div:first-child small{display:none}}
@media(max-width:540px){.technology-grid{grid-template-columns:1fr}.technology-grid .documentation-card{grid-template-columns:1fr;gap:12px}.documentation-card strong{grid-column:1}.technology-grid article{min-height:180px}}
