
:root{
  --paper:#fffdf9;--paper-2:#f8f5ef;--paper-3:#f1eee7;--surface:#fff;
  --ink:#17253a;--ink-2:#4e5965;--ink-3:#7b817f;
  --line:rgba(23,37,58,.14);--line-strong:rgba(23,37,58,.25);
  --brick:#a34029;--brick-dark:#84321f;--brick-soft:#f5e8e3;
  --teal:#294d49;--navy:#142942;--navy-2:#0f2137;
  --radius:8px;--shadow:0 18px 48px rgba(20,41,66,.09);--header:70px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;max-width:100%;overflow-x:hidden}body{margin:0;padding-top:var(--header);max-width:100%;overflow-x:hidden;background:var(--paper);color:var(--ink);font-family:"IBM Plex Sans",system-ui,sans-serif;line-height:1.62;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}img,svg{display:block;max-width:100%}section[id]{scroll-margin-top:calc(var(--header) + 18px)}h1,h2,h3{margin:0;font-family:"Fraunces",Georgia,serif;font-weight:500;letter-spacing:-.018em}.wrap{width:min(1120px,calc(100% - 48px));margin:0 auto}.skip-link{position:fixed;left:12px;top:-60px;z-index:3000;padding:10px 13px;background:#fff;border:1px solid var(--line-strong)}.skip-link:focus{top:12px}.eyebrow{display:inline-flex;align-items:center;gap:8px;color:var(--brick);font:600 9.5px/1 "IBM Plex Mono",monospace;letter-spacing:.11em;text-transform:uppercase}.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.btn{min-height:43px;padding:11px 17px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;font:600 11px/1.2 "IBM Plex Mono",monospace;transition:.16s;white-space:nowrap}.btn:hover{transform:translateY(-1px);border-color:var(--brick);color:var(--brick)}.btn-primary,.btn-primary:visited{background:var(--brick);border-color:var(--brick);color:#fff}.btn-primary:hover{background:var(--brick-dark);border-color:var(--brick-dark);color:#fff}.btn-row{display:flex;gap:11px;flex-wrap:wrap}.text-link{display:inline-flex;align-items:center;gap:7px;color:var(--brick);font:600 10px "IBM Plex Mono",monospace}.text-link:hover{text-decoration:underline}

/* Navigation */
.nav{position:fixed;inset:0 0 auto;z-index:1000;background:rgba(255,253,249,.97);border-bottom:1px solid var(--line);backdrop-filter:blur(10px)}.nav-inner{position:relative;width:min(1120px,calc(100% - 48px));height:var(--header);margin:0 auto;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:9px;min-width:178px}.brand img{width:31px;height:31px}.brand-word{display:flex;align-items:baseline;gap:5px}.brand-word strong{font:600 14px "IBM Plex Sans",sans-serif;letter-spacing:.09em}.brand-word span{font:500 16px "Fraunces",serif}.nav-links{display:flex;align-items:center;justify-content:center;gap:23px;margin-left:auto}.nav-links a{color:var(--ink-2);font-size:12px}.nav-links a:hover,.nav-links a[aria-current="page"]{color:var(--ink)}.nav-tools{display:flex;align-items:center;gap:9px}.lang-switch{display:flex;padding:2px;border:1px solid var(--line);border-radius:5px;background:var(--paper-2)}.lang-switch button{border:0;background:transparent;color:var(--ink-3);cursor:pointer;padding:6px 7px;font:600 9.5px "IBM Plex Mono",monospace}.lang-switch button.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(20,41,66,.1)}.nav-cta{min-height:35px;padding:8px 12px}.mobile-toggle,.mobile-nav{display:none}

/* Home */
.hero{position:relative;padding:76px 0 66px;border-bottom:1px solid var(--line);overflow:hidden}.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 90% 18%,rgba(163,64,41,.07),transparent 25%),linear-gradient(180deg,#fffdf9 0%,#fbf8f3 100%);pointer-events:none}.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:72px;align-items:center}.hero h1{max-width:790px;margin:18px 0 20px;font-size:clamp(45px,5.2vw,67px);line-height:1.02}.hero-lede{max-width:760px;margin:0;color:var(--ink-2);font-size:16.5px;line-height:1.72}.hero .btn-row{margin-top:28px}.hero-note{max-width:740px;margin-top:17px;color:var(--ink-3);font:500 9.5px/1.55 "IBM Plex Mono",monospace}.portrait-card{width:300px;overflow:hidden;border:1px solid var(--line-strong);border-radius:10px;background:#fff;box-shadow:var(--shadow)}.portrait-frame{height:235px;overflow:hidden;background:var(--paper-3)}.portrait-frame img{width:100%;height:100%;object-fit:cover;object-position:center 12%}.portrait-caption{padding:15px 16px;background:var(--navy);color:#fff}.portrait-caption strong{display:block;font:500 18px "Fraunces",serif}.portrait-caption span{display:block;margin-top:3px;color:rgba(255,255,255,.68);font:500 8.8px/1.45 "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.055em}
.home-block{padding:68px 0;border-bottom:1px solid var(--line)}.block-soft{background:var(--paper-2)}.block-deep{background:var(--paper-3)}.section-head{max-width:800px;margin-bottom:32px}.section-head h2{margin:13px 0 11px;font-size:clamp(31px,3.7vw,44px);line-height:1.1}.section-head p{max-width:760px;margin:0;color:var(--ink-2);font-size:14.5px;line-height:1.7}
.entry-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);background:#fff}.entry-card{padding:27px 26px;border-right:1px solid var(--line)}.entry-card:last-child{border-right:0}.entry-card code,.service-card code,.method-step code{color:var(--brick);font:600 9px "IBM Plex Mono",monospace;letter-spacing:.08em}.entry-card h3{margin:14px 0 8px;font-family:"IBM Plex Sans",sans-serif;font-size:16px;font-weight:600}.entry-card p{margin:0;color:var(--ink-2);font-size:13px;line-height:1.64}
.service-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.service-card{min-height:205px;padding:23px 20px;border:1px solid var(--line);border-radius:7px;background:#fff;display:flex;flex-direction:column}.service-card h3{margin:14px 0 8px;font-family:"IBM Plex Sans",sans-serif;font-size:15px;line-height:1.32;font-weight:600}.service-card p{margin:0;color:var(--ink-2);font-size:12.4px;line-height:1.6}.service-card .text-link{margin-top:auto;padding-top:15px}
.tech-panel{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(280px,.65fr);gap:42px;align-items:center;padding:31px 33px;border-radius:10px;background:var(--navy);color:#fff}.tech-panel h2{font-size:31px;line-height:1.12}.tech-panel p{margin:11px 0 0;color:rgba(255,255,255,.72);font-size:13.5px;line-height:1.68}.tech-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.tech-panel .btn:not(.btn-primary){background:transparent;border-color:rgba(255,255,255,.36);color:#fff}.tech-panel .btn:not(.btn-primary):hover{border-color:#fff;color:#fff}
.demo-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:15px}.demo-card{min-height:210px;padding:25px;border:1px solid var(--line);border-radius:8px;background:#fff;display:flex;flex-direction:column}.demo-card.featured{background:linear-gradient(145deg,#fff 0%,#f6eee8 100%)}.demo-card small{color:var(--brick);font:600 9px "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.08em}.demo-card h3{margin:15px 0 8px;font-size:26px;line-height:1.16}.demo-card p{margin:0;color:var(--ink-2);font-size:13px;line-height:1.66}.demo-card .text-link{margin-top:auto;padding-top:17px}
.direction-strip{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) auto;gap:28px;align-items:center;padding:25px 28px;border:1px solid var(--line);background:#fff}.direction-strip h2{font-size:27px}.direction-strip p{margin:0;color:var(--ink-2);font-size:13.3px;line-height:1.66}
.cta-band{padding:48px 0;background:var(--navy);color:#fff}.cta-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:center}.cta-inner h2{font-size:36px}.cta-inner p{margin:8px 0 0;color:rgba(255,255,255,.7);font-size:13.5px}.cta-inner .btn-row{justify-content:flex-end}.cta-inner .btn:not(.btn-primary){background:transparent;border-color:rgba(255,255,255,.4);color:#fff}

/* Internal pages */
.page-hero{padding:70px 0 57px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fffdf9,#f8f4ee)}.page-hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.5fr);gap:58px;align-items:start}.page-hero h1{max-width:820px;margin:17px 0 18px;font-size:clamp(41px,5vw,61px);line-height:1.04}.page-hero .lede{max-width:780px;margin:0;color:var(--ink-2);font-size:16px;line-height:1.72}.side-panel{padding:25px;border:1px solid var(--line);border-radius:9px;background:#fff;box-shadow:var(--shadow)}.side-panel h2{font-size:27px}.side-panel p,.side-panel li{color:var(--ink-2);font-size:12.8px;line-height:1.64}.side-panel ul{margin:15px 0 0;padding-left:18px}.page-block{padding:72px 0;border-bottom:1px solid var(--line)}.page-block.soft{background:var(--paper-2)}.two-col{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:68px;align-items:start}.copy h2{margin:13px 0 14px;font-size:39px;line-height:1.12}.copy p{margin:0 0 14px;color:var(--ink-2);font-size:14.5px;line-height:1.75}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.detail-card{padding:25px;border:1px solid var(--line);border-radius:8px;background:#fff}.detail-card code{color:var(--brick);font:600 9px "IBM Plex Mono",monospace}.detail-card h3{margin:14px 0 8px;font-family:"IBM Plex Sans",sans-serif;font-size:16px;font-weight:600}.detail-card p,.detail-card li{color:var(--ink-2);font-size:12.8px;line-height:1.64}.detail-card ul{margin:12px 0 0;padding-left:17px}.method-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);background:#fff}.method-step{padding:27px 24px;border-right:1px solid var(--line)}.method-step:last-child{border-right:0}.method-step h3{margin:14px 0 8px;font-family:"IBM Plex Sans",sans-serif;font-size:15px;font-weight:600}.method-step p{margin:0;color:var(--ink-2);font-size:12.5px;line-height:1.62}.portrait-inline{display:grid;grid-template-columns:235px minmax(0,1fr);gap:45px;align-items:start}.portrait-inline .photo{height:250px;overflow:hidden;border:1px solid var(--line-strong);border-radius:8px;background:var(--paper-3)}.portrait-inline .photo img{width:100%;height:100%;object-fit:cover;object-position:center 10%}.meta-list{display:grid;gap:8px;margin-top:21px;padding-top:19px;border-top:1px solid var(--line);color:var(--ink-2);font-size:12.5px}.warning{padding:15px 17px;border-left:3px solid var(--brick);background:var(--brick-soft);color:#704234;font-size:12px;line-height:1.6}
.contact-page{background:var(--navy);color:#fff}.contact-grid{display:grid;grid-template-columns:minmax(0,.75fr) minmax(520px,1.25fr);gap:58px;align-items:start}.contact-page h2{margin:14px 0 11px;font-size:41px}.contact-page p{color:rgba(255,255,255,.72);font-size:14px}.contact-meta{display:grid;gap:8px;margin-top:22px;padding-top:18px;border-top:1px solid rgba(255,255,255,.18);color:rgba(255,255,255,.65);font-size:12px}.contact-meta a{color:#fff}.form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{color:rgba(255,255,255,.77);font:600 9px "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.06em}.field input,.field select,.field textarea{width:100%;border:1px solid rgba(255,255,255,.22);border-radius:6px;background:rgba(255,255,255,.07);color:#fff;padding:12px 13px;outline:none}.field select option{color:#111}.field input:focus,.field select:focus,.field textarea:focus{border-color:#fff;background:rgba(255,255,255,.1)}.field textarea{min-height:130px;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:rgba(255,255,255,.42)}.honeypot{position:absolute!important;left:-9999px!important}.form-note{color:rgba(255,255,255,.55);font-size:10.5px;line-height:1.55}.form-status{min-height:20px;margin-top:8px;font-size:12px}.form-status.error{color:#ffd2c8}.form-status.success{color:#ccebd7}

/* Footer */
footer{padding:42px 0 29px;background:var(--navy-2);color:#fff}.footer-grid{display:grid;grid-template-columns:1.15fr .8fr .75fr;gap:46px}.footer-brand .brand{min-width:0}.footer-brand .brand-word strong,.footer-brand .brand-word span{color:#fff}.footer-about{max-width:470px;margin:12px 0 0;color:rgba(255,255,255,.62);font-size:12px;line-height:1.64}.footer-col h3{font-family:"IBM Plex Sans",sans-serif;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em}.footer-links{display:grid;gap:8px;margin-top:13px}.footer-links a,.footer-links span{color:rgba(255,255,255,.64);font-size:11.8px}.footer-links a:hover{color:#fff}.footer-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:30px;padding-top:17px;border-top:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.48);font-size:10.2px}

@media(max-width:1050px){.nav-links{gap:15px}.hero-grid{grid-template-columns:minmax(0,1fr) 270px;gap:43px}.portrait-card{width:270px}.portrait-frame{height:215px}.service-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.contact-grid{grid-template-columns:1fr 1fr;gap:36px}}
@media(max-width:850px){:root{--header:66px}.wrap{width:calc(100% - 32px)}.nav-inner{width:100%;height:var(--header);padding:0 16px;gap:10px}.brand{min-width:0}.nav-links,.nav-tools>.btn{display:none}.nav-tools{margin-left:auto}.mobile-toggle{display:inline-flex;width:39px;height:39px;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:6px;background:#fff;color:var(--ink);cursor:pointer;position:relative}.mobile-toggle span,.mobile-toggle::before,.mobile-toggle::after{content:"";position:absolute;width:17px;height:1.5px;background:currentColor;transition:.18s}.mobile-toggle::before{transform:translateY(-5px)}.mobile-toggle::after{transform:translateY(5px)}.mobile-toggle.open span{opacity:0}.mobile-toggle.open::before{transform:rotate(45deg)}.mobile-toggle.open::after{transform:rotate(-45deg)}.mobile-nav{position:absolute;left:0;right:0;top:100%;padding:8px 16px 16px;background:rgba(255,253,249,.99);border-bottom:1px solid var(--line);box-shadow:0 18px 34px rgba(20,41,66,.08)}.mobile-nav.open{display:grid}.mobile-nav a{padding:12px 4px;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink-2)}.mobile-nav a:last-child{border-bottom:0}.mobile-nav .mobile-contact{margin-top:10px;border:0;background:var(--brick);color:#fff;text-align:center;border-radius:6px}.hero{padding:50px 0}.hero-grid,.page-hero-grid,.two-col,.contact-grid{grid-template-columns:1fr}.hero-grid{gap:32px}.portrait-card{width:100%;max-width:360px;display:grid;grid-template-columns:150px 1fr}.portrait-frame{height:150px}.portrait-caption{display:flex;align-items:center}.entry-grid,.method-grid{grid-template-columns:1fr 1fr}.entry-card:nth-child(2),.method-step:nth-child(2){border-right:0}.entry-card:nth-child(-n+2),.method-step:nth-child(-n+2){border-bottom:1px solid var(--line)}.entry-card:nth-child(3){grid-column:1/-1;border-right:0}.method-step:nth-child(3){border-right:1px solid var(--line)}.service-grid{grid-template-columns:1fr 1fr}.tech-panel,.demo-grid,.direction-strip,.cta-inner,.portrait-inline{grid-template-columns:1fr}.tech-actions,.cta-inner .btn-row{justify-content:flex-start}.detail-grid{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}.form{grid-template-columns:1fr}.field.full{grid-column:auto}.portrait-inline .photo{width:235px}.page-hero-grid{gap:32px}}
@media(max-width:600px){.wrap{width:calc(100% - 28px)}.brand-word strong{font-size:12px}.brand-word span{font-size:13px}.lang-switch button{padding:6px}.hero{padding-top:39px}.hero h1,.page-hero h1{font-size:clamp(37px,10.5vw,49px)}.hero-lede{font-size:15.3px}.btn-row{display:grid;grid-template-columns:1fr;width:100%}.btn-row .btn{width:100%;min-width:0}.portrait-card{max-width:100%;grid-template-columns:130px 1fr}.portrait-frame{height:130px}.portrait-caption strong{font-size:16px}.entry-grid,.service-grid,.method-grid,.footer-grid{grid-template-columns:1fr}.entry-card,.entry-card:nth-child(3),.method-step,.method-step:nth-child(3){grid-column:auto;border-right:0!important;border-bottom:1px solid var(--line)}.entry-card:last-child,.method-step:last-child{border-bottom:0}.home-block,.page-block{padding:57px 0}.section-head h2,.copy h2,.contact-page h2{font-size:33px}.service-card{min-height:0}.tech-panel{padding:24px}.direction-strip{padding:22px}.cta-band{padding:42px 0}.cta-inner h2{font-size:31px}.footer-brand{grid-column:auto}.footer-bottom{flex-direction:column}.page-hero{padding:44px 0}.portrait-inline .photo{width:100%;height:220px}.contact-page{padding:57px 0}}
@media print{body{padding-top:0}.nav,.btn,.mobile-nav,.contact-page form{display:none!important}.hero,.home-block,.page-hero,.page-block{padding:27px 0}.portrait-card,.service-card,.detail-card,.method-step,.demo-card{break-inside:avoid;box-shadow:none}}

/* Ajuste puntual 2026-07-17: retrato principal más discreto y leyenda legible. */
@media (min-width: 1051px) {
  .hero-grid { grid-template-columns: minmax(0,1fr) 260px; gap: 60px; }
  .portrait-card { width: 260px; }
  .portrait-frame { height: 200px; }
}

@media (min-width: 851px) and (max-width: 1050px) {
  .hero-grid { grid-template-columns: minmax(0,1fr) 235px; gap: 40px; }
  .portrait-card { width: 235px; }
  .portrait-frame { height: 185px; }
}

@media (max-width: 850px) {
  .portrait-card {
    width: 100%;
    max-width: 292px;
    grid-template-columns: 104px minmax(0,1fr);
    justify-self: start;
  }
  .portrait-frame { height: 104px; }
  .portrait-caption {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 6px;
    padding: 13px 14px;
  }
  .portrait-caption strong {
    margin: 0;
    font-size: 15px;
    line-height: 1.05;
  }
  .portrait-caption span {
    margin: 0;
    font-size: 7.8px;
    line-height: 1.45;
    letter-spacing: .045em;
  }
}

@media (max-width: 600px) {
  .portrait-card {
    max-width: 272px;
    grid-template-columns: 96px minmax(0,1fr);
  }
  .portrait-frame { height: 96px; }
  .portrait-caption { padding: 12px 13px; gap: 5px; }
  .portrait-caption strong { font-size: 14px; }
  .portrait-caption span { font-size: 7.4px; line-height: 1.42; }
}
