@font-face{font-family:Instrument Serif;src:url('fonts/InstrumentSerif-Regular.498efd461f6d.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Manrope;src:url('fonts/Manrope-Variable.3ae11c49db04.ttf') format('truetype');font-weight:200 800;font-style:normal;font-display:swap}
:root{--navy:#0B1F3A;--green:#00D26A;--green-white:#0B8A43;--warm:#F6F5F2;--white:#FFF;--black:#000;--gutter:48px;--section:96px;--sans:Manrope,Arial,sans-serif;--serif:'Instrument Serif',Georgia,serif}
*{box-sizing:border-box}html{font-size:100%;color:var(--navy);background:var(--white);scroll-behavior:auto}body{margin:0;font-family:var(--sans);font-size:1.125rem;line-height:1.6}img{display:block;max-width:100%;height:auto}a{color:inherit;text-underline-offset:.23em;text-decoration-thickness:1px;transition:background-color .16s,color .16s,text-decoration-thickness .16s}a:hover{text-decoration-thickness:2px}button,summary{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--navy);outline-offset:3px}p,h1,h2,h3,h4{margin:0}p+p{margin-top:24px}h1,h2,h3{font-family:var(--serif);font-weight:400}h1{font-size:clamp(2.5rem,5.6vw,4.5rem);line-height:1.08;letter-spacing:-.015em}h2{font-size:clamp(2rem,3.8vw,3rem);line-height:1.15}h3{font-size:clamp(1.75rem,2.5vw,2rem);line-height:1.2}h4{font-family:var(--sans);font-size:1.375rem;font-weight:600;line-height:1.35}ul{padding-left:1.25em}li+li{margin-top:12px}.container{width:min(100% - var(--gutter)*2,1200px);margin-inline:auto}.section{padding-block:var(--section)}.warm{background:var(--warm)}.dark{background:var(--navy);color:var(--warm)}.dark :focus-visible{outline-color:var(--green)}.skip{position:absolute;top:8px;left:8px;padding:12px 20px;background:var(--navy);color:var(--warm);z-index:10;transform:translateY(-200%)}.skip:focus{transform:none}.site-header{background:var(--white)}.header-inner{min-height:128px;display:flex;align-items:center;gap:32px}.brand{display:flex;align-items:center;gap:16px;text-decoration:none;flex-shrink:0}.brand img{width:96px;height:96px;object-fit:contain}.brand-name{font-size:1rem;font-weight:600;line-height:1.4;max-width:150px}.header-links{margin-left:auto;display:flex;gap:28px;align-items:center;font-size:1rem;font-weight:500}.header-links a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;white-space:nowrap}.header-links a[aria-current=page]{font-weight:700;text-decoration:underline}.header-links a:hover{text-decoration:underline}.languages{display:flex;align-items:center;gap:2px;font-size:.875rem}.languages a{display:flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;text-decoration:none}.languages [aria-current=true]{text-decoration:underline;font-weight:700}.mobile-menu{display:none}.hero{padding-top:80px;padding-bottom:96px}.hero-grid{display:grid;grid-template-columns:7fr 4fr;gap:calc(100% / 12)}.hero-copy{padding-top:8px}.hero-copy p{font-size:1.375rem;line-height:1.5}.hero-actions{margin-top:32px;display:flex;align-items:center;flex-wrap:wrap;gap:24px}.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:48px;background:var(--navy);color:var(--warm);text-decoration:none;font-size:1rem;font-weight:600;line-height:1.4;padding:14px 24px;border-radius:4px;text-align:center}.button:hover{background:var(--black)}.button:active{text-decoration:underline}.dark .button{background:var(--green);color:var(--navy)}.dark .button:hover{background:var(--warm)}.text-link{display:inline-flex;align-items:center;gap:12px;min-height:44px;font-size:1rem;font-weight:600}.hero-copy .hero-note{margin-top:32px;font-size:.875rem;line-height:1.5}.section-grid{display:grid;grid-template-columns:4fr 7fr;gap:calc(100% / 12)}.section-intro p{margin-top:24px;max-width:28ch}.section-intro .text-link{margin-top:24px}.experience-entry+.experience-entry{margin-top:48px}.experience-date{font-size:.875rem;font-weight:500;margin-bottom:12px}.experience-role{font-family:var(--sans);font-size:1.375rem;font-weight:600;line-height:1.35;margin-bottom:16px}.experience-entry p{max-width:65ch}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:32px;margin-bottom:48px}.publication{display:grid;grid-template-columns:3fr 8fr;gap:calc(100% / 12);padding-block:0 48px}.publication:last-child{padding-bottom:0}.publication-meta{font-size:.875rem;line-height:1.5;padding-top:6px}.publication-meta span{display:block;margin-top:8px}.publication :is(h2,h3) a{text-decoration:none}.publication :is(h2,h3) a:hover{text-decoration:underline;text-decoration-thickness:1px}.publication-body p{margin-top:16px;max-width:64ch}.publication-body>.text-link{margin-top:12px}.contact-band .section-grid{align-items:start}.contact-band h2{max-width:17ch}.contact-band p{max-width:57ch}.contact-links{margin-top:32px;display:flex;align-items:center;flex-wrap:wrap;gap:24px}.contact-links .text-link{font-weight:500}.site-footer{padding-block:40px;background:var(--navy);color:var(--warm)}.footer-inner{display:flex;align-items:center;gap:32px}.footer-brand{display:flex;align-items:center;gap:16px}.footer-brand img{width:80px;height:80px}.footer-brand span{font-size:1rem}.footer-links{display:flex;gap:24px;flex-wrap:wrap;margin-left:auto;font-size:.875rem}.footer-links a{display:inline-flex;min-width:44px;min-height:44px;align-items:center}.footer-inner .languages{margin-left:16px}.page-hero{padding-top:64px;padding-bottom:64px}.page-hero .lead{font-size:1.375rem;line-height:1.5;max-width:65ch;margin-top:32px}.page-hero.compact{max-width:880px}.prose{max-width:70ch}.profile-grid{display:grid;grid-template-columns:4fr 7fr;gap:calc(100% / 12)}.profile-grid+.profile-grid{margin-top:64px}.education h3{font-family:var(--sans);font-size:1.375rem;font-weight:600;line-height:1.35}.education p{margin-top:12px}.language-list{list-style:none;padding:0;margin:0}.language-list strong{font-weight:600}.contact-page{padding-top:80px;padding-bottom:96px;min-height:62vh}.contact-page h1{max-width:14ch}.contact-page .intro{font-size:1.375rem;line-height:1.5;max-width:52ch;margin-top:32px}.contact-addresses{margin-top:64px;display:grid;gap:32px}.contact-address{display:grid;grid-template-columns:1fr 3fr;gap:24px;align-items:baseline}.contact-address dt{font-size:.875rem}.contact-address dd{margin:0;font-family:var(--serif);font-size:clamp(1.75rem,3vw,2.25rem);line-height:1.25;overflow-wrap:anywhere}.contact-address dd a{display:inline-block;min-height:44px;text-decoration-thickness:1px}.contact-address dd span{font-size:1rem;font-family:var(--sans)}.content-spacer{margin-top:32px}.small-note{font-size:.875rem}.section-title-line{display:block}.nowrap{white-space:nowrap}.external-mark{font-family:var(--sans);font-size:.8em}.brand:focus-visible{outline-offset:3px}a{overflow-wrap:anywhere}.menu-icon{display:inline-flex;flex-direction:column;gap:5px;width:20px}.menu-icon i{display:block;height:1.5px;width:20px;background:currentColor}.menu-close{display:none}.mobile-menu[open] .menu-open{display:none}.mobile-menu[open] .menu-close{display:inline}.menu-content a[aria-current=page]{font-weight:700;text-decoration:underline}
@media(min-width:1280px){.hero{padding-top:96px}.hero h1{font-size:4.5rem}}
@media(max-width:1100px){.brand-name{display:none}.header-links{gap:24px}.header-inner{gap:24px}}
@media(max-width:959px){:root{--gutter:32px}.header-inner{min-height:112px}.header-links{display:none}.languages{margin-left:auto}.mobile-menu{display:block}.mobile-menu summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;min-height:44px;font-size:1rem;font-weight:600}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu[open]{flex-basis:100%;order:3}.mobile-menu[open] summary{justify-content:flex-end}.header-inner:has(.mobile-menu[open]){flex-wrap:wrap;gap:0 24px;padding-bottom:24px}.menu-content{display:flex;flex-direction:column;gap:8px;padding-top:16px}.menu-content a{min-height:48px;display:flex;align-items:center;font-size:1.125rem;text-decoration:none}.menu-content a:hover{text-decoration:underline}.hero{padding-top:64px}.hero-grid{grid-template-columns:1.3fr 1fr;gap:48px}.hero-copy p{font-size:1.1875rem}.hero h1{font-size:3.5rem}.section-grid,.profile-grid{grid-template-columns:3fr 5fr;gap:32px}.brand-name{display:block}.footer-brand span{max-width:150px}.footer-links{gap:16px}.footer-inner{gap:24px;flex-wrap:wrap}.footer-inner .languages{margin-left:0}.publication{grid-template-columns:2fr 6fr;gap:32px}}
@media(max-width:639px){:root{--gutter:20px;--section:64px}body{font-size:1.0625rem}.header-inner{min-height:96px;gap:16px}.brand img{width:72px;height:72px}.brand-name{display:none}.header-inner>.languages{margin-left:auto}.languages a{min-width:44px}.mobile-menu summary{font-size:.875rem;gap:8px}.header-inner:has(.mobile-menu[open]){gap:0 16px}.hero{padding-top:48px;padding-bottom:64px}.hero-grid,.section-grid,.profile-grid{grid-template-columns:1fr;gap:32px}.hero h1{font-size:2.5rem}.hero-copy{padding-top:0}.hero-copy p{font-size:1.1875rem}.hero-actions{gap:16px}.hero-copy .hero-note{margin-top:24px}.section-heading{display:block;margin-bottom:32px}.section-heading .text-link{margin-top:16px}.section-intro p{max-width:60ch}.section-intro .text-link{margin-top:16px}.experience-role,h4{font-size:1.25rem}.experience-entry+.experience-entry{margin-top:32px}.publication{grid-template-columns:1fr;gap:12px;padding-bottom:40px}.publication-meta{padding-top:0;display:flex;flex-wrap:wrap;gap:8px 16px}.publication-meta span{margin:0}.publication :is(h2,h3){font-size:1.75rem}.contact-band h2{max-width:19ch}.contact-links{align-items:flex-start;gap:16px 24px}.contact-links .button{width:100%}.site-footer{padding-block:32px}.footer-inner{gap:24px}.footer-brand{width:100%}.footer-brand img{width:72px;height:72px}.footer-brand span{max-width:none}.footer-links{width:100%;margin-left:0;justify-content:space-between;gap:8px}.footer-links a{font-size:.875rem}.footer-inner .languages{margin-left:0}.page-hero{padding-top:48px;padding-bottom:48px}.page-hero .lead{font-size:1.1875rem;margin-top:24px}.profile-grid+.profile-grid{margin-top:48px}.contact-page{padding-top:48px;padding-bottom:64px;min-height:auto}.contact-page .intro{font-size:1.1875rem;margin-top:24px}.contact-addresses{margin-top:48px;gap:32px}.contact-address{grid-template-columns:1fr;gap:8px}.contact-address dd{font-size:1.75rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* Fase V · revisión 2: retrato, portadas y movimiento solicitado por el titular. */
:root{--ease-out:cubic-bezier(.23,1,.32,1);--motion-press:160ms;--motion-entry:600ms}
.hero-portrait .hero-grid{align-items:center}
.hero-writing{min-width:0}
.hero-writing .hero-copy{margin-top:32px;padding-top:0;max-width:47ch}
.portrait{margin:0;align-self:center}
.portrait img{width:100%;height:auto}
.publication{grid-template-columns:minmax(0,3fr) minmax(0,8fr);align-items:start;padding-bottom:64px}
.publication-visual{padding-top:4px;min-width:0}
.publication-cover{display:block;overflow:hidden}
.publication-cover img{width:100%;height:auto;aspect-ratio:690/388}
.publication .publication-meta{display:flex;flex-wrap:wrap;gap:8px 20px;padding:0;margin-bottom:16px}
.publication .publication-meta span{margin:0}
.publication-body{min-width:0}
.project-copy h3{margin-bottom:24px}
.project-copy p{max-width:65ch}
.project-copy .text-link{margin-top:24px}
.project-image{margin:48px 0 0}
.project-image img{display:block;width:100%;height:auto}
.project-image figcaption{margin-top:12px;font-size:.875rem}
.button{transition:transform var(--motion-press) var(--ease-out),background-color var(--motion-press),color var(--motion-press)}
html[data-input=pointer] .button:active{transform:scale(.97)}
.text-link span{display:inline-block;transition:transform 160ms var(--ease-out)}
@media(hover:hover) and (pointer:fine){
  .text-link:hover span{transform:translateX(2px)}
}
html[data-input=keyboard] *{transition:none!important}
html[data-motion=reduce] .button,html[data-motion=reduce] .text-link span{transform:none!important;transition:none}
@media(max-width:959px){
  .hero-portrait .hero-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:48px}
}
@media(max-width:639px){
  .hero-portrait .hero-grid{grid-template-columns:minmax(0,1fr) 120px;grid-template-areas:"name portrait" "copy copy";gap:32px 20px}
  .hero-writing{display:contents}
  .hero-writing h1{grid-area:name;align-self:center}
  .hero-writing .hero-copy{grid-area:copy;margin-top:0;max-width:none}
  .hero-portrait .portrait{grid-area:portrait;align-self:center}
  .publication{grid-template-columns:1fr;gap:24px;padding-bottom:48px}
  .publication .publication-meta{margin-bottom:12px}
  .project-image{margin-top:32px}
}

/* Revisión 3 · entradas más visibles y dos etapas del proyecto Web3. */
.name-line{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}
.name-line>span{display:block}
.project-gallery{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;margin-top:48px;align-items:start}
.project-gallery .project-image{margin:0;min-width:0}
.project-gallery-full{grid-template-columns:minmax(0,1fr);gap:48px}
.portrait{overflow:hidden}
.portrait img,.publication-cover img{transition:transform 250ms var(--ease-out)}
@media(hover:hover) and (pointer:fine){
  html[data-input=pointer] .portrait:hover img,html[data-input=pointer] .publication-cover:hover img{transform:scale(1.05)}
  html[data-input=pointer] .text-link:hover span{transform:translateX(6px)}
}
html[data-motion=reduce] .portrait img,html[data-motion=reduce] .publication-cover img{transform:none!important;transition:none}
@media(prefers-reduced-motion:reduce){.portrait img,.publication-cover img{transform:none!important}}
@media(max-width:639px){.project-gallery{grid-template-columns:minmax(0,1fr);gap:32px;margin-top:32px}}

/* Revisión 4 · retrato transparente y más próximo al texto. */
.hero-portrait .portrait{max-width:460px;justify-self:start;overflow:visible}
@media(min-width:640px){
  .hero-portrait .hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
}

/* Acento de marca en los subrayados de navegación y enlaces. */
:root{--link-accent:var(--green-white)}
.dark,.site-footer{--link-accent:var(--green)}
a,
.header-links a,.header-links a:hover,.header-links a[aria-current=page],
.languages a,.languages [aria-current=true],
.menu-content a:hover,.menu-content a[aria-current=page],
.publication :is(h2,h3) a:hover{
  text-decoration-color:var(--link-accent);
  text-decoration-thickness:2px;
}
.button,.button:active{text-decoration-color:currentColor}

/* El foco del pie también debe contrastar contra el azul marino. */
.site-footer :focus-visible{outline-color:var(--green)}

/* Con texto ampliado, la cabecera permite otra fila sin cortar el menú. */
.header-inner{flex-wrap:wrap}
main{overflow-wrap:anywhere}
.section-grid>*,.profile-grid>*{min-width:0}

/* El nivel semántico de artículo cambia según el contexto, con la misma jerarquía visual. */
.publication h2{font-size:clamp(1.75rem,2.5vw,2rem);line-height:1.2}
