/* front-2026.css · SOLO portada (is_front_page) · 13 Nov 2026 */
/* ───────────── secciones ───────────── */
.sec{position:relative;padding:clamp(48px,6.5vw,80px) 0}
.sec > .in{max-width:var(--max);margin:auto;padding:0 var(--gut)}
.s-l1{background:var(--l1);color:var(--ink)}
.s-l2{background:var(--l2);color:var(--ink)}
.s-d{background:var(--d1);color:var(--dink);--mute:var(--dmute);--card:var(--dcard);--line:var(--dline);--accent-l:var(--accent-d);--ink:var(--dink)}
.s-d2{background:var(--d2)}
/* las oscuras se montan sobre la anterior con la esquina grande, estilo apple.com */
.s-d,.s-round{border-radius:clamp(28px,5vw,56px) clamp(28px,5vw,56px) 0 0;margin-top:calc(-1*clamp(28px,5vw,56px));z-index:1}
.eyebrow{font-size:.9375rem;font-weight:600;color:var(--accent-l);letter-spacing:.01em;margin-bottom:14px}
.h2{font-size:clamp(2.25rem,1.2rem + 4.6vw,4.75rem);font-weight:700;letter-spacing:-.04em;line-height:1.04;max-width:16ch}
.lede{margin-top:22px;max-width:44ch;color:var(--mute);font-size:clamp(1.1875rem,1.05rem + .6vw,1.5rem);line-height:1.4;letter-spacing:-.01em}
.head{margin-bottom:clamp(32px,4.5vw,56px)}

/* ───────────── hero ───────────── */
.hero{padding:calc(var(--hdr) + clamp(20px,3vw,40px)) 0 clamp(32px,5vw,64px);min-height:100svh;display:flex;align-items:center;overflow:hidden}
.hero .in{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(32px,5vw,72px);align-items:center;width:100%}
.kicker{font-size:1.0625rem;font-weight:600;color:var(--mute);margin-bottom:18px}
.hero h1{font-size:clamp(2.6rem,.6rem + 6.6vw,6.5rem);font-weight:700;letter-spacing:-.05em;line-height:.98}
.hero h1 em{font-style:normal;color:var(--accent-l)}
.hero .sub{margin-top:clamp(18px,2.2vw,28px);max-width:42ch;font-size:clamp(1.1875rem,1.05rem + .7vw,1.6rem);line-height:1.38;letter-spacing:-.012em;color:var(--mute)}
.hero .sub b{color:var(--ink);font-weight:600}
.acts{display:flex;flex-wrap:wrap;gap:12px 14px;margin-top:clamp(26px,3.5vw,40px)}
.hlinks{display:flex;flex-wrap:wrap;align-items:center;gap:0 clamp(18px,3vw,28px);margin-top:clamp(20px,2.6vw,30px);font-size:1.0625rem}
.hlinks a{display:inline-flex;align-items:center;gap:7px;min-height:44px;color:var(--mute);font-weight:500;transition:color .2s}
.hlinks a:hover{color:var(--ink)}
.hlinks .lead{color:var(--accent-l);font-weight:600}
.hlinks .lead:hover{color:var(--accent-l);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1.5px}
.hlinks svg{width:18px;height:18px;flex:none;transition:transform .3s var(--ease)}
.hlinks .lead:hover svg{transform:translateX(4px)}
.shot{position:relative;justify-self:end;width:min(100%,460px);}
.shot img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 20%;border-radius:clamp(28px,4vw,44px);box-shadow:0 30px 60px -34px rgba(12,30,80,.35)}
.facts{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;gap:clamp(22px,5vw,64px);margin-top:clamp(26px,3vw,40px);padding-top:20px;border-top:1px solid var(--line)}
.fact b{display:block;font-size:clamp(2rem,1.4rem + 2.4vw,3.25rem);font-weight:700;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.fact span{display:block;margin-top:6px;font-size:.9375rem;color:var(--mute);line-height:1.3}
.cue{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);width:44px;height:44px;display:grid;place-items:center;color:var(--mute);}
@media(max-width:900px){
  .hero{align-items:flex-start;min-height:0}
  .hero h1{font-size:clamp(2.5rem,.9rem + 8.4vw,5rem)}
  .hero .in{grid-template-columns:minmax(0,1fr)}
  .shot{justify-self:start;width:min(100%,380px);margin-top:12px}
  .cue{display:none}
}
@media(max-width:480px){.facts{gap:20px}.fact span{font-size:.875rem}}

/* ───────────── frase que se enciende al bajar ───────────── */
.say{font-size:clamp(1.9rem,.9rem + 4.3vw,4.25rem);font-weight:700;letter-spacing:-.04em;line-height:1.1;max-width:20ch}
.say .w{opacity:calc(.52 + var(--o,0)*.48);transition:opacity .15s linear}
.say-note{margin-top:30px;color:var(--mute);max-width:46ch;font-size:clamp(1.0625rem,1rem + .35vw,1.25rem)}
.s-say{display:flex;align-items:center}
.s-say .in{width:100%}

/* ───────────── tarjetas ───────────── */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2vw,24px)}
.card{background:var(--card);color:var(--ink);border-radius:clamp(24px,3vw,32px);padding:clamp(26px,3.2vw,40px);min-height:300px;display:flex;flex-direction:column;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.card:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(0,0,0,.35)}
.card .n{font-size:.9375rem;font-weight:600;color:var(--accent-l);font-variant-numeric:tabular-nums}
.card h3{margin-top:auto;padding-top:48px;font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:700;letter-spacing:-.03em;line-height:1.1}
.card p{margin-top:12px;color:var(--mute);font-size:1.0625rem;line-height:1.5}
@media(max-width:900px){.cards{grid-template-columns:1fr}.card{min-height:0}.card h3{padding-top:28px}}

/* ───────────── about ───────────── */
.about{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(32px,6vw,96px);align-items:start}
.about__side{position:sticky;top:96px}
.about p{font-size:clamp(1.1875rem,1.08rem + .5vw,1.5rem);line-height:1.5;letter-spacing:-.012em;color:var(--mute);max-width:34em}
.about p + p{margin-top:1.1em}
.about p b{color:var(--ink);font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:clamp(36px,5vw,56px)}
.chip{padding:9px 16px;border-radius:980px;background:var(--card);border:1px solid var(--line);font-size:.9375rem;font-weight:500;transition:transform .3s var(--ease),border-color .3s,color .3s}
.chip:hover{transform:translateY(-2px);border-color:var(--red);color:var(--accent-l)}
.chips-t{font-size:.9375rem;font-weight:600;color:var(--mute);margin:clamp(36px,5vw,56px) 0 -28px}
.journey{margin-top:clamp(40px,6vw,64px);padding:clamp(26px,3.5vw,44px);border-radius:clamp(24px,3vw,32px);background:var(--card)}
.journey p{color:var(--ink);font-size:clamp(1.25rem,1.1rem + .7vw,1.75rem);font-weight:600;letter-spacing:-.025em;line-height:1.32}
.journey p + p-unused{margin-top:16px;font-weight:400;color:var(--mute);font-size:clamp(1.0625rem,1rem + .3vw,1.1875rem);letter-spacing:-.005em;line-height:1.55}
@media(max-width:900px){.about{grid-template-columns:1fr}.about__side{position:static}}


/* tarjetas de la sección about */
.bento{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(14px,2vw,24px)}
.bt{background:var(--card);border-radius:clamp(24px,3vw,32px);padding:clamp(26px,3.2vw,44px);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.bt:hover{transform:translateY(-5px);box-shadow:0 30px 60px -34px rgba(12,30,80,.35)}
.bt .ic{width:44px;height:44px;color:var(--accent-l);margin-bottom:22px}
.bt p{font-size:clamp(1.0625rem,1rem + .35vw,1.25rem);line-height:1.55;letter-spacing:-.008em;color:var(--mute)}
.bt p b{color:var(--ink);font-weight:600}
@media(max-width:820px){.bento{grid-template-columns:1fr}}
.s-l1{--card:var(--l2)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .s-l1{--card:#1c1c1e}}
:root[data-theme="dark"] .s-l1{--card:#1c1c1e}
.chips{margin-top:clamp(28px,4vw,44px)}

/* ───────────── experiencia (línea que se rellena) ───────────── */
.tl{position:relative;display:grid;gap:14px;padding-left:clamp(0px,3vw,36px)}
.tl::before,.tl__fill{content:"";position:absolute;left:0;top:10px;bottom:10px;width:2px;border-radius:2px;background:var(--line)}
.tl__fill{background:var(--red);transform:scaleY(var(--tl,0));transform-origin:50% 0;will-change:transform}
@media(max-width:700px){.tl{padding-left:0}.tl::before,.tl__fill{display:none}}
.row{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.4fr) 150px;gap:8px 24px;align-items:center;background:var(--card);border-radius:clamp(20px,2.4vw,28px);padding:clamp(20px,2.6vw,30px) clamp(22px,3vw,36px);
  transition:transform .45s var(--ease),background .3s}
.row:hover{transform:translateX(6px)}
.row__co{font-size:clamp(1.25rem,1.1rem + .6vw,1.625rem);font-weight:700;letter-spacing:-.03em;line-height:1.15}
.row__co a{display:inline-flex;align-items:center;min-height:44px;transition:color .2s}
.row__co a:hover{color:var(--accent-l)}
.row__role{color:var(--mute);font-size:1.0625rem;line-height:1.35}
.row__when{text-align:right;font-size:.9375rem;color:var(--mute);font-variant-numeric:tabular-nums;white-space:nowrap}
.row--now .row__when{color:var(--accent-l);font-weight:600}
@media(max-width:700px){.row{grid-template-columns:minmax(0,1fr) auto}.row__role{grid-column:1/-1;order:3}}

/* ───────────── proyectos ───────────── */
.proj{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(14px,2vw,24px)}
.pj{display:flex;flex-direction:column;background:var(--card);border-radius:clamp(24px,3vw,32px);padding:clamp(26px,3.2vw,40px);min-height:280px;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.pj:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(0,0,0,.3)}
.pj__y{font-size:.9375rem;font-weight:600;color:var(--accent-l);font-variant-numeric:tabular-nums}
.pj h3{margin-top:14px;font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:700;letter-spacing:-.03em;line-height:1.12}
.pj p{margin-top:12px;color:var(--mute);font-size:1.0625rem;line-height:1.5;max-width:38ch}
.pj a{margin-top:auto;padding-top:22px;display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--accent-l);font-weight:500;width:max-content}
.pj a span{transition:transform .3s var(--ease)}
.pj a:hover span{transform:translateX(5px)}
@media(max-width:760px){.proj{grid-template-columns:1fr}.pj{min-height:0}}

/* ───────────── formación, idiomas, premio ───────────── */
.edu{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(14px,2vw,24px)}
.panel{background:var(--card);border-radius:clamp(24px,3vw,32px);padding:clamp(26px,3.2vw,44px)}
.panel h3{font-size:.9375rem;font-weight:600;color:var(--accent-l);margin-bottom:22px}
.ed{padding:18px 0;border-top:1px solid var(--line)}
.ed:first-of-type{border-top:0;padding-top:0}
.ed b{display:block;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;line-height:1.25}
.ed span{display:block;margin-top:4px;color:var(--mute);font-size:1rem;line-height:1.4}
.ed time{display:block;margin-top:2px;color:var(--mute);font-size:.9375rem;font-variant-numeric:tabular-nums}
.langs{display:grid;gap:4px}
.lang{display:flex;align-items:center;gap:16px;padding:12px 0;border-top:1px solid var(--line)}
.lang:first-of-type{border-top:0;padding-top:0}
.lang img{width:44px;height:44px;border-radius:50%;flex:none}
.lang b{display:block;font-size:1.125rem;font-weight:600;line-height:1.25}
.lang span{display:block;color:var(--mute);font-size:.9375rem;line-height:1.3}
.award{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr;gap:clamp(22px,4vw,56px);align-items:center}
.award .logo{background:#fff;border-radius:24px;padding:22px 28px;width:clamp(160px,22vw,260px)}
.award .logo img{width:100%;height:auto}
.award h3{margin-bottom:6px}
.award .t{font-size:clamp(1.375rem,1.1rem + 1vw,2rem);font-weight:700;letter-spacing:-.03em;line-height:1.15}
.award blockquote{margin-top:16px;color:var(--mute);font-size:1.0625rem;line-height:1.55;max-width:62ch}
@media(max-width:900px){.edu{grid-template-columns:1fr}.award{grid-template-columns:1fr}}

/* ───────────── escritos ───────────── */
.feat{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2vw,24px)}
.fc{display:flex;flex-direction:column;min-height:280px;overflow:hidden;background:var(--card);border-radius:clamp(24px,3vw,32px);padding:0 0 clamp(22px,3vw,32px);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.fc:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(0,0,0,.3)}
.fc small,.pl__d{font-size:.9375rem;color:var(--mute);font-variant-numeric:tabular-nums}
.fc__img{display:block;aspect-ratio:16/9;padding:clamp(14px,2vw,22px);background:#f5f5f7;margin-bottom:clamp(18px,2.4vw,26px)}
.fc__img img{width:100%;height:100%;object-fit:contain;border-radius:0}
.fc small,.fc h3,.fc .go{margin-left:clamp(22px,3vw,32px);margin-right:clamp(22px,3vw,32px)}
.fc small{white-space:nowrap}
.fc h3{margin-top:12px;font-size:clamp(1.3125rem,1.1rem + .7vw,1.625rem);font-weight:700;letter-spacing:-.025em;line-height:1.2}
.fc span.go{margin-top:auto;padding-top:22px;color:var(--accent-l);font-weight:500}
.pl{margin-top:clamp(14px,2vw,24px);background:var(--card);border-radius:clamp(24px,3vw,32px);padding:8px clamp(22px,3vw,36px)}
.pl a{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;min-height:60px;padding:12px 0;border-top:1px solid var(--line);transition:color .2s,padding .3s var(--ease)}
.pl li:first-child a{border-top:0}
.pl a:hover{color:var(--accent-l);padding-left:8px}
.pl__t{font-size:1.0625rem;font-weight:500;letter-spacing:-.01em;line-height:1.3}
.more{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:22px;font-weight:500;color:var(--accent-l)}
.more:hover{text-decoration:underline;text-underline-offset:4px}
@media(max-width:900px){.feat{grid-template-columns:1fr}.fc{min-height:0}}

/* ───────────── contacto + pie ───────────── */
.end{text-align:center;padding:clamp(56px,7vw,96px) 0 clamp(40px,5vw,64px)}
.end .h2{margin:auto;max-width:12ch}
.end .lede{margin:22px auto 0;max-width:36ch}
.end .acts{justify-content:center}
/* ───────────── revelado al entrar ───────────── */
.js [data-r]{opacity:0;transform:translate3d(0,16px,0);transition:opacity .65s var(--ease),transform .65s var(--ease);transition-delay:var(--d,0s)}
.js [data-r].in-v{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js [data-r]{opacity:1;transform:none;transition:none}
  .say .w{opacity:1 !important}
  .cue{animation:none}
  .card:hover,.pj:hover,.fc:hover,.row:hover,.chip:hover,.btn:hover{transform:none}
  *{transition-duration:.01ms !important}
}
@media (prefers-contrast:more){:root{--mute:#3a3a3c}.s-d{--mute:#d1d1d6}}
@media (prefers-reduced-transparency:reduce){.hdr{background:var(--l1);-webkit-backdrop-filter:none;backdrop-filter:none}}

.s-say.sec{padding-top:clamp(32px,5vw,64px);padding-bottom:clamp(56px,8vw,96px)}

/* crane.css · grúa de la sección "say" · se añade al final de front-2026.css */
/* tokens del sitio -> tokens de la grúa (claro/oscuro salen solos de --ink/--mute/--card/--accent-l) */
.crane{--crane-line:var(--mute);--crane-soft:rgba(99,99,102,.4);--crane-fill:var(--card);--crane-fill2:var(--line);--crane-red:var(--accent-l);--crane-redf:rgba(197,63,63,.12);
  width:min(100%,600px);justify-self:end;color:var(--mute)}
/* modo oscuro: prefers-color-scheme (si no hay data-theme=light) y el interruptor data-theme=dark */
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .crane{--crane-soft:rgba(161,161,166,.38);--crane-redf:rgba(232,85,85,.17)}}
:root[data-theme=dark] .crane,.s-d .crane{--crane-soft:rgba(161,161,166,.38);--crane-redf:rgba(232,85,85,.17)}
:root[data-theme=light] .crane{--crane-soft:rgba(99,99,102,.4);--crane-redf:rgba(197,63,63,.12)}
.crane svg{width:100%;height:auto}
/* colocación: junto a la frase en escritorio, debajo en móvil */
.s-say .in.has-crane{display:grid;grid-template-columns:minmax(0,.9fr) minmax(360px,1.1fr);gap:clamp(24px,4vw,64px);align-items:center}
@media (max-width:900px){
  .s-say .in.has-crane{grid-template-columns:minmax(0,1fr)}
  .crane{justify-self:start;margin-top:clamp(28px,6vw,48px);width:min(100%,380px)}
}
/* misma entrada que el resto: [data-r] (fade + subida .9s var(--ease)), con 0,15 s de retraso; el bucle arranca en crane.js */
@media (prefers-reduced-motion:reduce){.crane svg *{animation:none!important}.crane svg .gl{opacity:.75}}

/* grúa dirigida por el scroll: --cp (0..1) fija el instante del ciclo; sin scroll queda quieta, nunca en bucle */
.cr.is-scroll .tr,.cr.is-scroll .sw,.cr.is-scroll .cb,.cr.is-scroll .hk,.cr.is-scroll .bl,.cr.is-scroll .cl,.cr.is-scroll .gl,.cr.is-scroll .led,.cr.is-scroll .sp{
  animation-duration:8s !important;animation-iteration-count:1 !important;animation-fill-mode:both !important;animation-play-state:paused !important;animation-delay:calc(var(--cp,0) * -7.9s) !important}
.cr.is-scroll .fl,.cr.is-scroll .bc{animation:none !important}
.cr.is-scroll .sw{animation-delay:calc(var(--cs,0) * -7.9s) !important}
.cr .cld{fill:var(--c-fill);fill-opacity:.55;stroke-width:2}
.s-say .has-crane .say{font-size:clamp(1.75rem,1rem + 2.6vw,3.25rem);max-width:22ch}
@media (max-width:900px){.s-say.sec{padding-bottom:clamp(40px,8vw,72px)}.hero{padding-bottom:clamp(8px,3vw,24px)}.s-say.sec{padding-top:clamp(24px,5vw,40px)}}

/* cubos de colores: paleta sobria (rojo del sitio + azul, verde y ámbar suaves), clara y oscura */
.crane .cr{--k0:var(--c-red);--k1:#3b78d0;--k2:#3a9a5d;--k3:#c98512}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .crane .cr{--k1:#6ea0e8;--k2:#62c07f;--k3:#e8ac4a}}
:root[data-theme=dark] .crane .cr{--k1:#6ea0e8;--k2:#62c07f;--k3:#e8ac4a}
.crane .cr .rd{stroke:var(--blk,var(--c-red));fill:color-mix(in srgb,var(--blk,var(--c-red)) 16%,transparent)}
.crane .cr .rr{stroke:var(--blk,var(--c-red))}
.crane .cr .wr{stroke:var(--kc);stroke-width:1.5;fill:color-mix(in srgb,var(--kc) 20%,transparent)}
.crane .cr .wg{fill:url(#cgl);stroke:none}
.crane .cr .wl{stroke:var(--kc);stroke-width:1.2;opacity:.5}

.crane .cr .sh{fill:var(--c-line);stroke:none;opacity:.12}
.crane .cr .l{stroke-width:1.5}.crane .cr .t{stroke-width:1.2}.crane .cr .s{stroke-width:1}
.crane .cr .rd{stroke-width:1.5}
.crane .cr .cld{stroke-width:1.5;fill-opacity:.5}
@media (prefers-reduced-motion:no-preference){.crane .cr .wc{transform-box:fill-box;transform-origin:50% 100%;animation:wcb 6s ease-in-out infinite}.crane .cr .wc2{animation-delay:-2s}.crane .cr .wc3{animation-delay:-4s}}
@keyframes wcb{0%,100%{transform:scale(1)}50%{transform:scale(1.012)}}
.crane .cr .wc{transform-box:view-box}
/* misma familia de curvas que el resto de la página: entrada y salida suaves */
.cr.is-scroll .tr,.cr.is-scroll .hk,.cr.is-scroll .cb,.cr.is-scroll .sw,.cr.is-scroll .bl,.cr.is-scroll .cl{animation-timing-function:cubic-bezier(.4,0,.2,1) !important}

/* nube de cajitas: falta una; la grúa la encaja con el scroll */
.crane .cr .sm{stroke-width:1.2}
.crane .cr .cl{transform-origin:292px 218px}
.crane .cr .fill{transform-box:fill-box;transform-origin:50% 100%;opacity:0}
.cr.is-scroll .fill{animation-name:fillin !important;animation-duration:8s !important;animation-iteration-count:1 !important;animation-fill-mode:both !important;animation-play-state:paused !important;animation-delay:calc(var(--cp,0) * -7.9s) !important;animation-timing-function:cubic-bezier(.4,0,.2,1) !important}
@media (prefers-reduced-motion:reduce){.crane .cr .fill{opacity:1}.crane .cr .bl{display:none}}
/* composición: cajitas más ligeras, escena contenida */
.crane .cr .cx .wr.sm{stroke-width:.9;fill:color-mix(in srgb,var(--kc) 13%,transparent)}
.crane .cr .cx .wl.sm{stroke-width:.9;opacity:.45}

/* ── eje central y párrafos justificados (13 Nov 2026) ── */
.head{text-align:center}
.head .h2{margin-left:auto;margin-right:auto;max-width:20ch}
.head .lede{margin-left:auto;margin-right:auto}
.sub,.lede,.bt p,.pj p,.journey p,.award blockquote,.ed span,.say-note{text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto;text-wrap:pretty}
.sub{text-align-last:left}
.row__role{hyphens:auto}
@media(max-width:900px){
  .hero__txt{text-align:center}
  .hero .sub{margin-left:auto;margin-right:auto}
  .hlinks,.facts{justify-content:center}
  .facts{justify-items:center;text-align:center}
  .shot{justify-self:center}
  .s-say .say{text-align:center;margin-left:auto;margin-right:auto}
  .crane{justify-self:center}
}
@media (max-width:420px){.bt p,.pj p,.journey p,.sub{font-size:1rem;letter-spacing:-.005em}}
.fc,.pj,.bt{text-align:left}
.pj p,.bt p{text-align:justify}

/* ── estructura: historia principal en UNA columna ancha; lo secundario en dos ── */
.bento{grid-template-columns:1fr;max-width:760px;margin-left:auto;margin-right:auto}
.journey{max-width:760px;margin-left:auto;margin-right:auto}
.duo{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(56px,8vw,96px)}
.duo .head{text-align:left;margin-bottom:clamp(24px,3vw,36px)}
.duo .h2{margin-left:0;margin-right:0;max-width:none;font-size:clamp(2rem,1.1rem + 2.6vw,3rem)}
.duo .row{grid-template-columns:minmax(0,1fr) auto}
.duo .row__role{grid-column:1/-1;order:3}
.duo .proj{grid-template-columns:1fr}
.duo .pj{min-height:0}
.duo .tl{padding-left:0}.duo .tl::before,.duo .tl__fill{display:none}
@media(min-width:1000px){.duo{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 clamp(40px,6vw,96px);align-items:start}}
