@charset "utf-8";
/* ==========================================================================
   Otero · sistema visual web
   Derivado del Manual de Marca Otero v1.1. Los valores de esta hoja son la
   implementación literal del manual: no se inventa ningún color ni tamaño.
   ========================================================================== */

/* ---------- tipografía de marca, auto-hospedada ---------- */
@font-face{font-family:"Bricolage Grotesque";src:url("../fonts/w-bri-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Bricolage Grotesque";src:url("../fonts/w-bri-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url("../fonts/w-ss-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url("../fonts/w-ss-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("../fonts/w-mono-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("../fonts/w-mono-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}

/* ---------- tokens ---------- */
:root{
  --ink:#0A1F33;        /* Azul Otero  */
  --ink-2:#33495B;
  --muted:#56697A;      /* Pizarra     */
  --hair:#D2DCE3;
  --paper:#EFF3F6;      /* Niebla      */
  --surface:#FFFFFF;
  --surface-2:#F6F9FB;
  --signal:#1B6E9C;     /* Azul Señal — único color de interacción */
  --signal-dark:#155676;
  --on-dark-signal:#6FB6DC;
  --amber:#B0761A;      /* Ocre — solo donde algo pide atención   */
  --amber-text:#8A5A0E;
  --amber-lite:#DFA845;
  --amber-soft:#F6EEDD;
  --good:#2C7355;
  --bad:#9E3B2E;

  --display:"Bricolage Grotesque","Helvetica Neue",Arial,sans-serif;
  --body:"Source Serif 4",Georgia,"Times New Roman",serif;
  --mono:"IBM Plex Mono",Consolas,"SFMono-Regular",monospace;

  --r:3px;
  --wrap:1180px;
  --measure:66ch;
  --shadow:0 1px 2px rgba(10,31,51,.05),0 8px 24px -14px rgba(10,31,51,.16);
  --pad:clamp(56px,7vw,104px);
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:17.5px;line-height:1.62;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img,svg{max-width:100%;height:auto;display:block}
a{color:var(--signal);text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{color:var(--signal-dark)}
:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:2px}
::selection{background:var(--amber-soft);color:var(--ink)}
hr{border:0;border-top:1px solid var(--hair);margin:0}

h1,h2,h3,h4,h5{font-family:var(--display);font-weight:600;color:var(--ink);letter-spacing:-.024em;text-wrap:balance;margin:0}
h1{font-weight:700;letter-spacing:-.036em}
p{margin:0 0 1.05em;max-width:var(--measure)}
ul,ol{max-width:var(--measure);padding-left:1.15em;margin:0 0 1.05em}
li{margin-bottom:.42em}
strong,b{font-weight:600;color:var(--ink)}
code{font-family:var(--mono);font-size:.86em;background:var(--surface-2);border:1px solid var(--hair);border-radius:2px;padding:1px 5px}
abbr[title]{text-decoration:underline dotted;cursor:help}

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:24px}
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:12px 18px;z-index:100;font-family:var(--mono);font-size:13px}
.skip:focus{left:8px;top:8px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- utilidades tipográficas ---------- */
.eyebrow{font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--amber-text);margin:0 0 20px}
.eyebrow.on-dark{color:var(--amber-lite)}
.lede{font-size:1.12rem;color:var(--ink-2);max-width:60ch}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.center{text-align:center;margin-inline:auto}

/* ---------- barra superior ---------- */
.topbar{position:sticky;top:0;z-index:50;background:rgba(239,243,246,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--hair)}
.topbar-in{max-width:var(--wrap);margin-inline:auto;padding:12px 24px;display:flex;align-items:center;gap:18px}
.brandlock{display:flex;align-items:center;gap:9px;text-decoration:none;flex:none}
.brandlock img{width:26px;height:26px}
.brandlock span{font-family:var(--display);font-weight:700;font-size:1.02rem;letter-spacing:-.03em;color:var(--ink)}
.nav{margin-left:auto;display:flex;align-items:center;gap:6px}
.nav a{font-family:var(--mono);font-size:11.5px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);text-decoration:none;padding:8px 11px;border-radius:2px}
.nav a:hover{color:var(--signal);background:var(--surface)}
.nav a[aria-current="page"]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--amber)}
.nav .btn{padding:11px 18px;font-size:11.5px;letter-spacing:.1em}
.nav .btn-primary,.nav .btn-primary[aria-current="page"]{background:var(--signal);color:#fff;box-shadow:none}
.nav .btn-primary:hover{background:var(--signal-dark);color:#fff}
.navtoggle{display:none;margin-left:auto;background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:9px 13px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);cursor:pointer}
@media (max-width:960px){
  .navtoggle{display:block}
  .nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--surface);border-bottom:1px solid var(--hair);padding:8px 16px 16px;margin:0}
  .nav.open{display:flex}
  .nav a{padding:12px 6px;border-bottom:1px solid var(--hair);font-size:12.5px}
  .nav .btn{margin-top:12px;text-align:center;border-bottom:0}
}

/* ---------- botones ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  padding:13px 22px;border-radius:var(--r);border:1px solid transparent;
  text-decoration:none;cursor:pointer;transition:background .14s ease,border-color .14s ease,color .14s ease;
}
.btn-primary{background:var(--signal);color:#fff;border-color:var(--signal)}
.btn-primary:hover{background:var(--signal-dark);border-color:var(--signal-dark);color:#fff}
.btn-ghost{background:transparent;color:var(--signal);border-color:var(--hair)}
.btn-ghost:hover{border-color:var(--signal);color:var(--signal-dark)}
.btn-on-dark,.section-dark .btn-on-dark,.ctaband .btn-on-dark{background:var(--on-dark-signal);color:#08202E;border-color:var(--on-dark-signal)}
.btn-on-dark:hover,.section-dark .btn-on-dark:hover{background:#8FC8E5;color:#08202E}
.btn-outline-dark{background:transparent;color:#E8EFF4;border-color:rgba(232,239,244,.32)}
.btn-outline-dark:hover{border-color:#E8EFF4;color:#fff}
.btnrow{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.btnrow-center{justify-content:center}

/* ---------- secciones ---------- */
.section{padding-block:var(--pad)}
.section + .section{border-top:1px solid var(--hair)}
.section-dark + .section,.section + .section-dark,.hero + .section{border-top:0}
.section-dark{background:var(--ink);color:#E8EFF4;border-top:0}
.section-dark h1,.section-dark h2,.section-dark h3,.section-dark h4{color:#fff}
.section-dark p{color:#C9D8E2}
.section-dark strong{color:#fff}
.section-dark a{color:var(--on-dark-signal)}
.section-surface{background:var(--surface)}
.shead{margin-bottom:34px;max-width:62ch}
.shead h2{font-size:clamp(1.75rem,3.4vw,2.45rem);line-height:1.06;margin-bottom:14px}
.shead p{margin-bottom:0}

/* ---------- hero ---------- */
.hero{background:var(--ink);color:#E8EFF4;padding-block:clamp(72px,10vw,132px);position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;inset:auto 0 0 0;height:1px;background:linear-gradient(90deg,transparent,rgba(223,168,69,.55),transparent)}
.hero h1{font-size:clamp(2.9rem,7.6vw,5.4rem);line-height:.94;color:#fff;margin:0 0 24px;max-width:15ch}
.hero .sub{font-size:clamp(1.08rem,2vw,1.3rem);color:#C9D8E2;max-width:56ch;margin:0}
.hero-mark{width:56px;height:56px;margin-bottom:34px}
.hero-meta{margin-top:52px;padding-top:26px;border-top:1px solid rgba(232,239,244,.16);display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:26px}
.hero-meta div span{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-lite);margin-bottom:7px}
.hero-meta div p{margin:0;font-size:.97rem;color:#C9D8E2}

.pagehead{background:var(--ink);color:#E8EFF4;padding-block:clamp(56px,7vw,86px)}
.pagehead h1{font-size:clamp(2.1rem,5vw,3.4rem);line-height:1;color:#fff;margin:0 0 18px;max-width:20ch}
.pagehead p{color:#C9D8E2;max-width:58ch;font-size:1.08rem;margin:0}
.crumbs{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#8CA6B7;margin:0 0 22px}
.crumbs a{color:#8CA6B7;text-decoration:none}
.crumbs a:hover{color:#fff}
.crumbs span{color:var(--amber-lite)}

/* ---------- rejillas y tarjetas ---------- */
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(272px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(228px,1fr))}
.card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:26px 26px 24px;box-shadow:var(--shadow)}
.card h3{font-size:1.16rem;margin:0 0 10px}
.card p{font-size:.97rem;margin-bottom:.7em}
.card p:last-child{margin-bottom:0}
.card ul{font-size:.95rem;max-width:none;margin-bottom:0}
.card .k{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}
.section-dark .card{background:rgba(255,255,255,.045);border-color:rgba(232,239,244,.14);box-shadow:none}
.section-dark .card .k{color:var(--amber-lite)}

/* línea de servicio */
.line{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:26px;position:relative;overflow:hidden}
.line::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--signal)}
.line.l2::before{background:#3E8FBB}
.line.l3::before{background:var(--amber)}
.line.l4::before{background:var(--ink)}
.line h3{font-size:1.2rem;margin:0 0 4px}
.line .role{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--amber-text);margin:0 0 14px}
.line p{font-size:.96rem}
.line ul{list-style:none;padding:0;margin:0;font-size:.93rem}
.line li{padding-left:16px;position:relative;color:var(--ink-2)}
.line li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--hair)}

/* nota ocre */
.note{border-left:2px solid var(--amber);background:var(--amber-soft);padding:16px 20px;border-radius:0 var(--r) var(--r) 0;margin:0 0 26px}
.note p{margin:0;font-size:.97rem;max-width:64ch;color:#4A3A1E}
.note .k{display:block;font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-text);margin-bottom:7px}

/* panel oscuro */
.panel{background:var(--ink);color:#E8EFF4;border-radius:var(--r);padding:38px 34px}
.panel .k{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-lite);margin:0 0 16px}
.panel .big{font-family:var(--display);font-weight:600;font-size:clamp(1.35rem,2.6vw,1.75rem);line-height:1.22;letter-spacing:-.022em;color:#fff;margin:0 0 16px;max-width:40ch}
.panel p{color:#C9D8E2;max-width:62ch}
.panel p:last-child{margin-bottom:0}

/* cifras */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:2px;background:var(--hair);border:1px solid var(--hair);border-radius:var(--r);overflow:hidden}
.stats div{background:var(--surface);padding:26px 24px}
.stats b{display:block;font-family:var(--mono);font-weight:600;font-size:2rem;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1}
.stats span{display:block;font-size:.93rem;color:var(--ink-2);margin-top:9px;line-height:1.45}

/* pasos */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;counter-reset:s}
.step{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:24px}
.step .n{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-text);display:block;margin-bottom:11px}
.step h3{font-size:1.06rem;margin:0 0 8px}
.step p{font-size:.93rem;margin:0}

/* tabla */
.scroll{overflow-x:auto;border:1px solid var(--hair);border-radius:var(--r);background:var(--surface);-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;min-width:620px;font-size:.93rem}
caption{text-align:left;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:14px 16px 0}
th,td{text-align:left;padding:11px 16px;border-bottom:1px solid var(--hair);vertical-align:top}
thead th{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);white-space:nowrap}
tbody tr:last-child td{border-bottom:0}
td.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--amber-text)}

/* etiquetas */
.tag{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:4px 9px;border-radius:2px;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--hair)}
.tag-amber{background:var(--amber-soft);color:var(--amber-text);border-color:rgba(176,118,26,.35)}
.tag-signal{background:var(--signal);color:#fff;border-color:var(--signal)}

/* listas sí/no */
.lex{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px}
.lex ul{list-style:none;padding:0;margin:0;font-size:.95rem;max-width:none}
.lex li{padding-left:22px;position:relative;line-height:1.5;margin-bottom:.6em}
.lex .si li::before{content:"✓";position:absolute;left:0;color:var(--good);font-weight:700}
.lex .no li::before{content:"✕";position:absolute;left:0;color:var(--bad);font-weight:700}

/* ---------- clientes ---------- */
.clients{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.client{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column}
.client .logo{background:var(--surface);border-bottom:1px solid var(--hair);height:150px;display:grid;place-items:center;padding:26px}
.client .logo img{max-height:104px;width:auto;object-fit:contain}
.client .body{padding:22px 24px 24px;flex:1;display:flex;flex-direction:column}
.client h3{font-size:1.1rem;margin:0 0 3px}
.client .sector{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--amber-text);margin:0 0 12px}
.client p{font-size:.94rem;margin-bottom:.8em}
.client .link{margin-top:auto;font-family:var(--mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;text-decoration:none}
.client .link:hover{text-decoration:underline}
.logostrip{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(28px,6vw,72px);padding:14px 0}
.logostrip img{height:74px;width:auto;filter:grayscale(1);opacity:.8;transition:filter .18s ease,opacity .18s ease}
.logostrip a:hover img,.logostrip a:focus-visible img{filter:grayscale(0);opacity:1}

/* ---------- blog ---------- */
.posts{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.post-card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:26px;display:flex;flex-direction:column}
.post-card .meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}
.post-card h3{font-size:1.18rem;line-height:1.24;margin:0 0 10px}
.post-card h3 a{color:var(--ink);text-decoration:none}
.post-card h3 a:hover{color:var(--signal)}
.post-card p{font-size:.95rem}
.post-card .more{margin-top:auto;font-family:var(--mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;text-decoration:none}
.article{max-width:70ch}
.article h2{font-size:1.5rem;margin:44px 0 14px}
.article h3{font-size:1.16rem;margin:32px 0 10px}
.article blockquote{margin:28px 0;padding:4px 0 4px 22px;border-left:2px solid var(--amber);font-size:1.08rem;color:var(--ink-2)}
.article blockquote p:last-child{margin-bottom:0}
.article .byline{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding-bottom:22px;border-bottom:1px solid var(--hair);margin-bottom:32px}

/* ---------- vacantes ---------- */
.job{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:26px}
.job .top{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:12px}
.job h3{font-size:1.14rem;margin:0}
.job .facts{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-left:auto}
.job p{font-size:.95rem}
.job ul{font-size:.94rem;margin-bottom:0}

/* ---------- acordeón ---------- */
details{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:0;margin-bottom:10px}
summary{cursor:pointer;padding:18px 22px;font-family:var(--display);font-weight:600;font-size:1.03rem;color:var(--ink);list-style:none;display:flex;align-items:center;gap:14px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";margin-left:auto;font-family:var(--mono);color:var(--amber-text);font-size:1.15rem;line-height:1}
details[open] summary::after{content:"−"}
details .in{padding:0 22px 20px}
details .in p:last-child{margin-bottom:0}

/* ---------- formularios ---------- */
.form{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:30px}
.field{margin-bottom:18px}
.field label{display:block;font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.field .req{color:var(--amber-text)}
.field input,.field select,.field textarea{
  width:100%;font-family:var(--body);font-size:1rem;color:var(--ink);
  background:var(--surface-2);border:1px solid var(--hair);border-radius:var(--r);
  padding:12px 14px;transition:border-color .14s ease,background .14s ease;
}
.field input:focus,.field select:focus,.field textarea:focus{background:var(--surface);border-color:var(--signal);outline:2px solid rgba(27,110,156,.22);outline-offset:0}
.field textarea{min-height:140px;resize:vertical}
.field .hint{font-size:.85rem;color:var(--muted);margin:6px 0 0}
.field.error input,.field.error select,.field.error textarea{border-color:var(--bad);background:#FCF3F1}
.field .err{display:none;font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--bad);margin-top:6px}
.field.error .err{display:block}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:620px){.row2{grid-template-columns:1fr}}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.consent{display:flex;gap:11px;align-items:flex-start;font-size:.9rem;color:var(--ink-2);margin-bottom:20px}
.consent input{width:auto;margin-top:.28em;accent-color:var(--signal)}
.formnote{font-size:.86rem;color:var(--muted);margin:16px 0 0}
.formstatus{display:none;margin-top:18px;padding:14px 18px;border-radius:var(--r);font-size:.95rem}
.formstatus.show{display:block}
.formstatus.ok{background:#EAF3EF;border-left:2px solid var(--good);color:#1F5540}
.formstatus.bad{background:#FBF0EE;border-left:2px solid var(--bad);color:#7B2F24}

/* ---------- datos de contacto ---------- */
.contactlist{list-style:none;padding:0;margin:0}
.contactlist li{padding:16px 0;border-bottom:1px solid var(--hair);margin:0}
.contactlist li:last-child{border-bottom:0}
.contactlist + .eyebrow{margin-top:42px}
.contactlist .k{display:block;font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.contactlist .v{font-size:1.02rem;color:var(--ink)}
.contactlist a{text-decoration:none}
.contactlist a:hover{text-decoration:underline}

/* ---------- banda de llamada ---------- */
.ctaband{background:var(--ink);color:#E8EFF4;padding-block:clamp(52px,6vw,78px)}
.ctaband h2{color:#fff;font-size:clamp(1.6rem,3.4vw,2.3rem);line-height:1.1;margin:0 0 14px;max-width:22ch}
.ctaband p{color:#C9D8E2;max-width:56ch;margin:0}
.ctaband .in{display:flex;flex-wrap:wrap;gap:32px;align-items:center;justify-content:space-between}

/* ---------- pie ---------- */
.footer{background:var(--surface);border-top:1px solid var(--hair);padding-block:56px 34px}
.fgrid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:34px}
@media (max-width:860px){.fgrid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.fgrid{grid-template-columns:1fr}}
.footer h4{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 14px}
.footer ul{list-style:none;padding:0;margin:0;font-size:.94rem}
.footer li{margin-bottom:.5em}
.footer a{color:var(--ink-2);text-decoration:none}
.footer a:hover{color:var(--signal);text-decoration:underline}
.footer .tag-line{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-text);margin:14px 0 0}
.footer .desc{font-size:.94rem;color:var(--muted);max-width:34ch;margin:14px 0 0}
.legal{margin-top:44px;padding-top:22px;border-top:1px solid var(--hair);display:flex;flex-wrap:wrap;gap:14px 26px;align-items:center}
.legal p{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--muted);margin:0}
.legal nav{margin-left:auto;display:flex;flex-wrap:wrap;gap:18px}
.legal nav a{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--muted);text-decoration:none}
.legal nav a:hover{color:var(--signal)}

/* ---------- impresión ---------- */
@media print{
  .topbar,.ctaband,.btnrow,.navtoggle{display:none}
  body{background:#fff;font-size:11pt}
  .hero,.pagehead,.section-dark,.panel{background:#fff!important;color:#000!important}
  .hero h1,.pagehead h1,.panel .big{color:#000!important}
  a[href^="http"]::after{content:" (" attr(href) ")";font-family:monospace;font-size:9pt}
}

/* ==========================================================================
   v2 · dinamismo: hero visual, revelado por scroll, contadores, pestañas
   ========================================================================== */

/* ---------- hero dividido con visual animado ---------- */
.hero2{background:var(--ink);color:#E8EFF4;position:relative;overflow:hidden;min-height:min(92vh,880px);display:flex;align-items:center}
.hero2::before{content:"";position:absolute;inset:0;background:
  radial-gradient(900px 520px at 78% 40%,rgba(27,110,156,.28),transparent 60%),
  radial-gradient(600px 400px at 10% 90%,rgba(223,168,69,.10),transparent 60%)}
.hero2 .wrap{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;padding-block:clamp(56px,7vw,96px)}
@media (max-width:900px){.hero2 .wrap{grid-template-columns:1fr;gap:40px}}
.hero2 h1{font-size:clamp(2.7rem,6.4vw,4.9rem);line-height:.96;color:#fff;margin:0 0 22px;max-width:14ch}
.hero2 .sub{font-size:clamp(1.05rem,1.7vw,1.22rem);color:#C9D8E2;max-width:48ch;margin:0}
.hero2 .eyebrow{margin-bottom:18px}
.trust{display:flex;align-items:center;gap:18px;margin-top:38px;padding-top:24px;border-top:1px solid rgba(232,239,244,.14);flex-wrap:wrap}
.trust span{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#8CA6B7}
.trust img{height:30px;width:auto;filter:grayscale(1) brightness(2.2);opacity:.75}

/* el visual: anillo grande, órbita y fichas de estado */
.viz{position:relative;aspect-ratio:1;max-width:520px;margin-inline:auto;width:100%}
.viz svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.viz .orbit{fill:none;stroke:rgba(232,239,244,.18);stroke-width:1;stroke-dasharray:3 9;transform-origin:50% 50%;animation:spin 60s linear infinite}
.viz .orbit2{fill:none;stroke:rgba(111,182,220,.28);stroke-width:1;transform-origin:50% 50%;animation:spin 38s linear infinite reverse}
.viz .ring{fill:none;stroke:#fff;stroke-width:6.5;stroke-linecap:round;stroke-dasharray:120;stroke-dashoffset:120;animation:draw 1.6s .2s cubic-bezier(.6,0,.2,1) forwards}
.viz .dot{fill:var(--amber-lite);transform-origin:center;animation:pop .6s 1.4s cubic-bezier(.2,.9,.3,1.3) both}
.viz .halo{fill:none;stroke:var(--amber-lite);stroke-width:1.2;opacity:0;transform-origin:center;animation:halo 3.2s 2s ease-out infinite}
.viz .sat{fill:var(--on-dark-signal);transform-origin:50% 50%;animation:spin 38s linear infinite reverse}
.chip{position:absolute;background:rgba(13,35,49,.92);border:1px solid rgba(232,239,244,.16);border-radius:var(--r);padding:10px 13px;box-shadow:0 14px 34px -18px rgba(0,0,0,.7);backdrop-filter:blur(6px);opacity:0;animation:fadeUp .7s cubic-bezier(.2,.8,.2,1) forwards}
.chip .l{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:#8CA6B7;margin-bottom:4px}
.chip .v{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:14px;font-weight:600;color:#fff;font-variant-numeric:tabular-nums}
.chip .v i{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 0 3px rgba(44,115,85,.28)}
.chip .v i.a{background:var(--amber-lite);box-shadow:0 0 0 3px rgba(223,168,69,.25)}
.c1{top:6%;left:-4%;animation-delay:1.9s}
.c2{top:22%;right:-6%;animation-delay:2.3s}
.c3{bottom:20%;left:-2%;animation-delay:2.7s}
.c4{bottom:4%;right:2%;animation-delay:3.1s}
@media (max-width:900px){.viz{max-width:380px}.c1{left:0}.c2{right:0}.c3{left:0}.c4{right:0}}
@media (max-width:480px){.chip .v{font-size:12.5px}.chip{padding:8px 10px}}

@keyframes spin{to{transform:rotate(360deg)}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes pop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes halo{0%{transform:scale(1);opacity:.7}100%{transform:scale(3.2);opacity:0}}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes lineGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- revelado al hacer scroll ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal[data-d="1"]{transition-delay:.08s}.reveal[data-d="2"]{transition-delay:.16s}.reveal[data-d="3"]{transition-delay:.24s}.reveal[data-d="4"]{transition-delay:.32s}
.reveal[data-d="5"]{transition-delay:.40s}.reveal[data-d="6"]{transition-delay:.48s}

/* ---------- barra que reacciona ---------- */
.topbar{transition:box-shadow .25s ease,background .25s ease}
.topbar.scrolled{box-shadow:0 10px 30px -18px rgba(10,31,51,.35);background:rgba(239,243,246,.97)}

/* ---------- tarjetas con vida ---------- */
.card,.line,.client,.post-card,.step,.svc-card{transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease,border-color .28s ease}
.card:hover,.line:hover,.client:hover,.post-card:hover,.step:hover,.svc-card:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35);border-color:#B9CBD7}
.section-dark .card:hover{border-color:rgba(232,239,244,.36);box-shadow:none}

/* iconos de línea: 1.5 px, extremos redondos, un color */
.ico{width:44px;height:44px;border-radius:var(--r);display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--hair);margin-bottom:18px;color:var(--signal)}
.ico svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.line .ico{margin-bottom:14px}
.l3 .ico{color:var(--amber-text)}
.l4 .ico{color:var(--ink)}
.section-dark .ico{background:rgba(255,255,255,.06);border-color:rgba(232,239,244,.16);color:var(--on-dark-signal)}
.ico-inline{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---------- banda de cifras con contador ---------- */
.numbers{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:28px}
.numbers div{padding:8px 0}
.numbers b{display:block;font-family:var(--display);font-weight:700;font-size:clamp(2.6rem,5vw,4rem);letter-spacing:-.04em;line-height:1;color:#fff;font-variant-numeric:tabular-nums}
.numbers b small{font-size:.5em;letter-spacing:-.02em;color:var(--amber-lite);margin-left:.1em}
.numbers > div > span{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:#8CA6B7;margin-top:12px}
.numbers b span{display:inline;font:inherit;color:inherit;letter-spacing:inherit;margin:0}

/* ---------- línea de tiempo horizontal ---------- */
.timeline{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:18px;padding-top:34px}
.timeline::before{content:"";position:absolute;top:8px;left:0;right:0;height:1px;background:var(--hair)}
.timeline::after{content:"";position:absolute;top:8px;left:0;right:0;height:1px;background:var(--amber);transform-origin:left;transform:scaleX(0)}
.timeline.in::after{animation:lineGrow 1.6s .3s cubic-bezier(.6,0,.2,1) forwards}
.tstep{position:relative}
.tstep::before{content:"";position:absolute;top:-30px;left:0;width:9px;height:9px;border-radius:50%;background:var(--surface);border:2px solid var(--amber);box-sizing:border-box}
.tstep .n{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--amber-text);display:block;margin-bottom:8px}
.tstep h3{font-size:1.1rem;margin:0 0 6px}
.tstep p{font-size:.93rem;color:var(--ink-2);margin:0}
@media (max-width:820px){.timeline{grid-template-columns:1fr 1fr}.timeline::before,.timeline::after{display:none}.tstep::before{display:none}.timeline{padding-top:0}}
@media (max-width:480px){.timeline{grid-template-columns:1fr}}

/* ---------- pestañas ---------- */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:26px;border-bottom:1px solid var(--hair);padding-bottom:0}
.tabs button{background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:12px 16px;font-family:var(--display);font-weight:600;font-size:1rem;color:var(--muted);cursor:pointer;letter-spacing:-.01em;transition:color .15s ease,border-color .15s ease}
.tabs button:hover{color:var(--ink)}
.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--amber)}
.tabpanel{display:none}
.tabpanel.active{display:block;animation:fadeUp .45s cubic-bezier(.2,.8,.2,1)}
.tabpanel .intro{font-size:1.06rem;color:var(--ink-2);max-width:60ch;margin:0 0 24px}
.svc-card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:24px;display:flex;flex-direction:column}
.svc-card h3{font-size:1.1rem;margin:0 0 8px}
.svc-card p{font-size:.94rem;color:var(--ink-2);margin:0 0 16px}
.svc-card .tag{margin-top:auto;align-self:flex-start}

/* ---------- paquetes ---------- */
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px;align-items:stretch}
.plan{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:28px;display:flex;flex-direction:column;position:relative;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease}
.plan:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35)}
.plan.hi{border-color:var(--signal);box-shadow:0 0 0 1px var(--signal)}
.plan .k{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-text);margin:0 0 8px}
.plan h3{font-size:1.5rem;margin:0 0 6px;letter-spacing:-.03em}
.plan .for{font-size:.93rem;color:var(--muted);margin:0 0 20px;padding-bottom:20px;border-bottom:1px solid var(--hair)}
.plan ul{list-style:none;padding:0;margin:0 0 24px;font-size:.93rem}
.plan li{padding-left:24px;position:relative;margin-bottom:.55em;color:var(--ink-2)}
.plan li::before{content:"";position:absolute;left:0;top:.42em;width:12px;height:7px;border-left:2px solid var(--good);border-bottom:2px solid var(--good);transform:rotate(-45deg)}
.plan li.plus{color:var(--ink);font-weight:600}
.plan .btn{margin-top:auto}
.plan .badge{position:absolute;top:-11px;right:20px;background:var(--signal);color:#fff;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;padding:4px 9px;border-radius:2px}

/* ---------- valores compactos ---------- */
.valgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:900px){.valgrid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.valgrid{grid-template-columns:1fr}}
.val2{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:24px;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease}
.val2:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35)}
.val2 .num{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--amber-text);display:block;margin-bottom:10px}
.val2 h3{font-size:1.08rem;margin:0 0 8px}
.val2 p{font-size:.93rem;color:var(--ink-2);margin:0}

/* ---------- declaración grande ---------- */
.statement{font-family:var(--display);font-weight:600;font-size:clamp(1.6rem,3.6vw,2.6rem);line-height:1.12;letter-spacing:-.03em;max-width:26ch;color:var(--ink);margin:0}
.statement em{font-style:normal;color:var(--signal)}
.section-dark .statement{color:#fff}

/* ---------- logos de clientes ---------- */
.logos{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:700px){.logos{grid-template-columns:1fr}}
.logos a{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);display:grid;place-items:center;padding:30px 26px;min-height:150px;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease,border-color .28s ease}
.logos a:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35);border-color:#B9CBD7}
.logos img{max-height:84px;width:auto}

/* ---------- marquee de marcos ---------- */
.marquee{overflow:hidden;position:relative;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee ul{display:flex;gap:14px;list-style:none;padding:0;margin:0;width:max-content;animation:marquee 48s linear infinite}
.marquee:hover ul{animation-play-state:paused}
.marquee li{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:#C9D8E2;background:rgba(255,255,255,.05);border:1px solid rgba(232,239,244,.14);border-radius:2px;padding:10px 16px;white-space:nowrap}
@keyframes marquee{to{transform:translateX(-50%)}}

@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none}
  .viz .ring{stroke-dashoffset:0;animation:none}
  .viz .dot,.chip{opacity:1;animation:none;transform:none}
  .viz .orbit,.viz .orbit2,.viz .sat,.viz .halo,.marquee ul{animation:none}
  .timeline::after{transform:scaleX(1)}
}

/* ==========================================================================
   v3 · cada página con su propio hero y su propio movimiento
   ========================================================================== */

/* hero de página interior: texto + visual */
.ph2{background:var(--ink);color:#E8EFF4;position:relative;overflow:hidden}
.ph2::before{content:"";position:absolute;inset:0;background:radial-gradient(760px 420px at 82% 30%,rgba(27,110,156,.26),transparent 60%)}
.ph2 .wrap{position:relative;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;padding-block:clamp(52px,6.5vw,88px);min-height:380px}
@media (max-width:900px){.ph2 .wrap{grid-template-columns:1fr}.ph2 .vis{display:none}}
.ph2 h1{font-size:clamp(2.3rem,5.4vw,3.8rem);line-height:.98;color:#fff;margin:0 0 16px;max-width:16ch}
.ph2 p.sub{color:#C9D8E2;max-width:50ch;font-size:1.08rem;margin:0}
.ph2 .vis{position:relative;aspect-ratio:4/3;max-width:460px;margin-left:auto;width:100%}
.ph2 .vis svg{width:100%;height:100%;overflow:visible}

/* visual: nodos conectados con pulso viajero */
.nodes .rail{stroke:rgba(232,239,244,.22);stroke-width:1.5;fill:none}
.nodes .node{fill:var(--ink);stroke:#fff;stroke-width:2}
.nodes .node.on{stroke:var(--amber-lite)}
.nodes .lbl{font-family:var(--mono);font-size:9px;fill:#8CA6B7;letter-spacing:1.2px;text-anchor:middle}
.nodes .pulse{fill:var(--amber-lite);animation:travel 5.2s cubic-bezier(.45,0,.2,1) infinite}
.nodes .glow{fill:none;stroke:var(--amber-lite);stroke-width:1;opacity:0;animation:glow 5.2s infinite}
.nodes .g1{animation-delay:.9s}.nodes .g2{animation-delay:2.2s}.nodes .g3{animation-delay:3.5s}.nodes .g4{animation-delay:4.8s}
@keyframes travel{0%{transform:translateX(0)}25%{transform:translateX(110px)}50%{transform:translateX(220px)}75%{transform:translateX(330px)}100%{transform:translateX(330px);opacity:0}}
@keyframes glow{0%,12%{transform:scale(1);opacity:0}14%{opacity:.9}30%{transform:scale(2.6);opacity:0}100%{opacity:0}}

/* visual: anillos concéntricos que respiran */
.rings circle{fill:none;stroke:#fff;stroke-width:1.2;transform-origin:center;opacity:.25;animation:breathe 4.8s ease-in-out infinite}
.rings .r2{animation-delay:.5s}.rings .r3{animation-delay:1s}.rings .r4{animation-delay:1.5s}
.rings .core{fill:var(--amber-lite);stroke:none;opacity:1;animation:none}
.rings text{font-family:var(--mono);font-size:9px;fill:#C9D8E2;letter-spacing:1.4px}
@keyframes breathe{0%,100%{transform:scale(1);opacity:.22}50%{transform:scale(1.05);opacity:.5}}

/* visual: fichas flotando */
.floaters{position:absolute;inset:0}
.floater{position:absolute;background:#fff;border-radius:var(--r);padding:20px 28px;box-shadow:0 30px 60px -30px rgba(0,0,0,.8);display:grid;place-items:center;animation:floaty 6s ease-in-out infinite}
.floater img{height:84px;width:auto}
.f1{top:4%;left:2%;animation-delay:0s}.f2{top:30%;right:0;animation-delay:1.2s}.f3{bottom:2%;left:20%;animation-delay:2.4s}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}

/* visual: turnos con relevo */
.shifts{position:absolute;inset:0;display:grid;place-items:center}
.shifts .clock{width:min(300px,100%);aspect-ratio:1;border-radius:50%;border:1px solid rgba(232,239,244,.18);position:relative}
.shifts .seg{position:absolute;inset:14px;border-radius:50%;border:10px solid transparent;border-top-color:var(--on-dark-signal);transform-origin:center;animation:spin 12s linear infinite}
.shifts .seg.s2{border-top-color:var(--amber-lite);animation-delay:-4s}
.shifts .seg.s3{border-top-color:#fff;animation-delay:-8s}
.shifts .mid{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:0 70px}
.shifts .mid b{font-family:var(--display);font-weight:700;font-size:2.6rem;color:#fff;letter-spacing:-.04em;line-height:1}
.shifts .mid span{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:#8CA6B7;margin-top:8px;line-height:1.5}

/* visual: señal de respuesta */
.beacon{position:absolute;inset:0;display:grid;place-items:center}
.beacon .dot{width:22px;height:22px;border-radius:50%;background:var(--good);position:relative}
.beacon .dot::before,.beacon .dot::after{content:"";position:absolute;inset:-10px;border-radius:50%;border:1px solid var(--good);animation:halo 2.6s ease-out infinite}
.beacon .dot::after{animation-delay:1.3s}
.beacon .txt{position:absolute;bottom:14%;left:0;right:0;text-align:center;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8CA6B7}
.beacon .txt b{display:block;font-family:var(--display);font-size:1.6rem;color:#fff;letter-spacing:-.03em;text-transform:none;margin-bottom:6px}

/* ---------- blog ---------- */
.feature{display:grid;grid-template-columns:1.2fr .8fr;background:var(--ink);border-radius:var(--r);overflow:hidden;color:#E8EFF4;text-decoration:none;transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s ease}
.feature:hover{transform:translateY(-4px);box-shadow:0 30px 60px -30px rgba(10,31,51,.6);color:#E8EFF4}
.feature .t{padding:clamp(28px,4vw,52px)}
.feature .meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-lite);margin:0 0 16px}
.feature h2{color:#fff;font-size:clamp(1.5rem,3vw,2.3rem);line-height:1.08;margin:0 0 14px;max-width:24ch}
.feature p{color:#C9D8E2;max-width:52ch;margin:0 0 22px}
.feature .more{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--on-dark-signal)}
.feature .art{position:relative;min-height:260px;background:radial-gradient(400px 300px at 70% 40%,rgba(27,110,156,.35),transparent 60%);display:grid;place-items:center;overflow:hidden}
.feature .art svg{width:70%;height:70%}
@media (max-width:800px){.feature{grid-template-columns:1fr}.feature .art{min-height:180px}}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 22px}
.filters button{font-family:var(--mono);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;padding:9px 14px;border-radius:999px;border:1px solid var(--hair);background:var(--surface);color:var(--muted);cursor:pointer;transition:all .15s ease}
.filters button:hover{border-color:var(--signal);color:var(--signal)}
.filters button[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.post-card.hidden{display:none}
.post-card .cat{display:inline-block;align-self:flex-start;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;padding:4px 8px;border-radius:2px;background:var(--amber-soft);color:var(--amber-text);margin-bottom:14px}
.post-card .foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:16px;border-top:1px solid var(--hair)}
.post-card .foot a{text-decoration:none}

/* barra de progreso de lectura */
.progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--amber);z-index:60;transition:width .1s linear}
.article-hero{background:var(--ink);color:#E8EFF4;padding-block:clamp(56px,7vw,96px);position:relative;overflow:hidden}
.article-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(700px 380px at 90% 20%,rgba(27,110,156,.25),transparent 60%)}
.article-hero .wrap{position:relative}
.article-hero h1{font-size:clamp(2rem,4.6vw,3.4rem);line-height:1.02;color:#fff;max-width:22ch;margin:0 0 18px}
.article-hero .sub{color:#C9D8E2;max-width:56ch;font-size:1.1rem;margin:0}
.article-layout{display:grid;grid-template-columns:1fr 260px;gap:56px;align-items:start}
@media (max-width:900px){.article-layout{grid-template-columns:1fr}.toc{display:none}}
.toc{position:sticky;top:90px;border-left:1px solid var(--hair);padding-left:18px}
.toc h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 12px}
.toc a{display:block;font-size:.9rem;color:var(--ink-2);text-decoration:none;padding:5px 0;border-left:2px solid transparent;margin-left:-19px;padding-left:17px;transition:color .15s,border-color .15s}
.toc a:hover,.toc a.on{color:var(--signal);border-left-color:var(--amber)}
.nextprev{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px}
@media (max-width:640px){.nextprev{grid-template-columns:1fr}}
.nextprev a{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:22px 24px;text-decoration:none;color:var(--ink);transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease}
.nextprev a:hover{transform:translateY(-3px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35)}
.nextprev span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-text);margin-bottom:8px}
.nextprev b{font-family:var(--display);font-weight:600;font-size:1.02rem;letter-spacing:-.015em;line-height:1.3}

/* ---------- carreras ---------- */
.benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media (max-width:900px){.benefits{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.benefits{grid-template-columns:1fr}}
.benefit{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:22px;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease,border-color .28s}
.benefit:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35);border-color:#B9CBD7}
.benefit .ico{width:38px;height:38px;margin-bottom:14px}
.benefit .ico svg{width:19px;height:19px}
.benefit h3{font-size:1rem;margin:0 0 6px}
.benefit p{font-size:.9rem;color:var(--ink-2);margin:0}
.jobs{display:grid;gap:12px}
.jobcard{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);overflow:hidden;transition:border-color .2s}
.jobcard[open]{border-color:var(--signal)}
.jobcard summary{padding:22px 26px;display:grid;grid-template-columns:1fr auto auto;gap:18px;align-items:center}
.jobcard summary::after{content:"+";font-family:var(--mono);color:var(--amber-text);font-size:1.3rem}
.jobcard[open] summary::after{content:"−"}
.jobcard summary h3{font-size:1.14rem;margin:0}
.jobcard summary h3,.svc-full summary h3{font-family:var(--display)}
.jobcard summary .where{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.jobcard .in{padding:0 26px 26px;display:grid;grid-template-columns:1fr 1fr;gap:28px}
@media (max-width:700px){.jobcard summary{grid-template-columns:1fr auto}.jobcard summary .where{grid-column:1/-1}.jobcard .in{grid-template-columns:1fr}}
.jobcard .in h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-text);margin:0 0 10px}
.jobcard .in ul{font-size:.93rem;margin:0;padding-left:1.1em}
.vtimeline{position:relative;padding-left:34px}
.vtimeline::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:1px;background:var(--hair)}
.vtimeline .vt{position:relative;padding-bottom:28px}
.vtimeline .vt:last-child{padding-bottom:0}
.vtimeline .vt::before{content:"";position:absolute;left:-30px;top:6px;width:9px;height:9px;border-radius:50%;background:var(--surface);border:2px solid var(--amber)}
.vtimeline h3{font-size:1.04rem;margin:0 0 4px}
.vtimeline p{font-size:.93rem;color:var(--ink-2);margin:0}
.vtimeline .vt .n{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--amber-text);display:block;margin-bottom:4px}

/* ---------- clientes ---------- */
.client .logo{position:relative}
.client .over{position:absolute;inset:0;background:rgba(10,31,51,.94);color:#fff;display:grid;place-items:center;text-align:center;padding:22px;opacity:0;transition:opacity .28s ease}
.client .over p{color:#E8EFF4;font-size:.9rem;margin:0}
.client .over span{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-lite);margin-bottom:8px}
.client:hover .over,.client:focus-within .over{opacity:1}

/* ---------- contacto ---------- */
.contact-split{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:start}
@media (max-width:900px){.contact-split{grid-template-columns:1fr}}
.quick{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:26px}
.quick a{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:18px;text-decoration:none;color:var(--ink);display:flex;gap:14px;align-items:center;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease,border-color .28s}
.quick a:hover{transform:translateY(-3px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35);border-color:#B9CBD7}
.quick .ico{margin:0;width:40px;height:40px;flex:none}
.quick .ico svg{width:19px;height:19px}
.quick b{display:block;font-family:var(--display);font-size:.98rem;letter-spacing:-.01em}
.quick small{display:block;font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.04em}
@media (max-width:520px){.quick{grid-template-columns:1fr}}

/* cierre suave sin botón repetido */
.soft-end{padding-block:clamp(48px,6vw,80px);text-align:center}
.soft-end p{margin:0 auto;font-family:var(--display);font-weight:600;font-size:clamp(1.3rem,2.6vw,1.9rem);letter-spacing:-.025em;line-height:1.2;max-width:28ch;color:var(--ink)}
.soft-end a{color:var(--signal);text-decoration:none;border-bottom:2px solid var(--amber)}

@media (prefers-reduced-motion:reduce){
  .nodes .pulse,.nodes .glow,.rings circle,.floater,.shifts .seg,.beacon .dot::before,.beacon .dot::after{animation:none}
  .rings circle{opacity:.4}
}

/* ==========================================================================
   v4 · dos prácticas, servicios independientes, más movimiento
   ========================================================================== */
.practices{display:grid;grid-template-columns:1fr 1fr;gap:28px}
@media (max-width:900px){.practices{grid-template-columns:1fr}}
.ptitle{display:flex;align-items:center;gap:12px;font-size:1.3rem;margin:0 0 16px;letter-spacing:-.025em}
.ptitle .ico{margin:0;width:38px;height:38px}
.ptitle .ico svg{width:19px;height:19px}
.svc-mini{display:grid;grid-template-columns:44px 1fr 22px;gap:16px;align-items:start;background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:20px 22px;text-decoration:none;color:inherit;position:relative;overflow:hidden;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease,border-color .28s}
.svc-mini::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--amber);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.svc-mini:hover{transform:translateY(-3px);box-shadow:0 22px 44px -26px rgba(10,31,51,.35);border-color:#B9CBD7}
.svc-mini:hover::after{transform:scaleX(1)}
.svc-mini .ico{margin:0;transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.svc-mini:hover .ico{transform:scale(1.08) rotate(-4deg)}
.svc-mini h3{font-size:1.02rem;margin:2px 0 4px;letter-spacing:-.015em}
.svc-mini p{font-size:.9rem;color:var(--ink-2);margin:0}
.svc-mini .arrow{color:var(--signal);font-size:1.1rem;margin-top:2px;transition:transform .28s}
.svc-mini:hover .arrow{transform:translateX(4px)}

.svc-list{display:grid;gap:12px}
.svc-full{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);overflow:hidden;transition:border-color .2s,box-shadow .28s ease}
.svc-full:hover{box-shadow:0 22px 44px -26px rgba(10,31,51,.28)}
.svc-full[open]{border-color:var(--signal)}
.svc-full summary{display:grid;grid-template-columns:44px 1fr auto;gap:18px;align-items:start;padding:22px 26px}
.svc-full summary .ico{margin:0}
.svc-full summary h3{font-size:1.14rem;margin:0 0 5px;letter-spacing:-.018em}
.svc-full summary p{font-family:var(--body);font-weight:400;font-size:.93rem;color:var(--ink-2);margin:0;max-width:64ch}
.svc-full summary::after{content:"+";font-family:var(--mono);color:var(--amber-text);font-size:1.3rem;align-self:center}
.svc-full[open] summary::after{content:"−"}
.svc-full .in{padding:0 26px 26px 88px;display:grid;grid-template-columns:1.3fr 1fr;gap:28px;animation:fadeUp .4s cubic-bezier(.2,.8,.2,1)}
.svc-full .in h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-text);margin:0 0 10px}
.svc-full .in ul{font-size:.93rem;margin:0;padding-left:1.1em}
.svc-full .in p.mono{font-size:.92rem;color:var(--ink);margin:0}
@media (max-width:700px){.svc-full .in{grid-template-columns:1fr;padding-left:26px}}

.floater.txt{padding:14px 20px}
.floater.txt span{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);font-weight:600}
.nodes .pulse.p2{animation-delay:2.6s}

/* nav: subrayado animado */
.nav a:not(.btn){position:relative}
.nav a:not(.btn)::after{content:"";position:absolute;left:11px;right:11px;bottom:5px;height:1px;background:var(--signal);transform:scaleX(0);transform-origin:left;transition:transform .25s cubic-bezier(.2,.8,.2,1)}
.nav a:not(.btn):hover::after{transform:scaleX(1)}

/* chips que cambian de dato */
.chip .l,.chip .v{transition:opacity .35s ease,transform .35s ease}
.chip.swap .l,.chip.swap .v{opacity:0;transform:translateY(-4px)}

/* hero: leve paralaje */
.viz{will-change:transform}
