/* Identidad compartida, composición editorial de la web personal. */
:root{--section-title-size:clamp(1.875rem,3.2vw,2.65rem)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--cream);color:var(--dark);font-family:var(--sans);font-size:17px;line-height:1.65}
button,a{-webkit-tap-highlight-color:transparent}
button{font-family:inherit}
.section-inner,.hero-grid,.logos-outer{width:100%;max-width:1180px;margin-inline:auto}

/* Portada: tipografía y retrato como dos planos, sin recursos externos. */
#hero{position:relative;isolation:isolate;background:var(--dark);color:var(--cream);padding:88px max(6vw,24px) 100px;min-height:780px;display:flex;align-items:center;overflow:hidden}
#hero::before{content:'';position:absolute;z-index:-1;inset:0 0 0 66%;border-left:1px solid rgba(247,245,241,.13);background:linear-gradient(90deg,transparent,rgba(247,245,241,.025))}
#hero::after{content:'';position:absolute;right:6vw;top:48px;width:72px;height:3px;background:var(--accent)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);column-gap:clamp(48px,6vw,96px);align-items:center}
.hero-text{padding-block:24px;min-width:0}
.hero-label{font-size:.875rem;font-weight:700;letter-spacing:.09em;line-height:1.6;text-transform:uppercase;margin-bottom:42px;display:flex;align-items:center;gap:16px;color:var(--cream)}
.hero-label::before{content:'';width:24px;height:1px;background:var(--accent);flex-shrink:0}
.hero-title{font-size:clamp(2.25rem,3.75vw,3.5rem);font-weight:800;line-height:1.12;letter-spacing:-.035em;margin-bottom:38px}
.hero-title .line1{display:block;font-size:1em;font-weight:400;line-height:1.12;letter-spacing:-.035em}
.hero-title .line2{display:block;max-width:none;margin-top:24px;font-size:1em;font-weight:800;line-height:1.12;letter-spacing:-.035em;color:var(--accent)}
.hero-photo{position:relative;min-width:0;max-width:420px;justify-self:end;width:100%;padding:12px;border:1px solid rgba(247,245,241,.24);box-shadow:0 28px 64px rgba(0,0,0,.2)}
.hero-photo::before{content:'';position:absolute;inset:24px -22px -24px 24px;z-index:-1;border:1px solid rgba(247,245,241,.12)}
.hero-photo::after{content:'';position:absolute;bottom:-1px;left:-1px;width:60px;height:3px;background:var(--accent)}
.hero-photo img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 45%;display:block}

/* Controles sobrios, con respuestas claras al foco y al puntero. */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:14px 24px;border:1px solid var(--cream);border-radius:3px;background:var(--cream);color:var(--dark);font-size:1rem;font-weight:800;line-height:1.35;letter-spacing:0;text-decoration:none;cursor:pointer;transition:background .18s,color .18s,transform .18s,box-shadow .18s}
.btn:hover{background:var(--line);box-shadow:0 5px 16px rgba(0,0,0,.1);transform:translateY(-2px)}
.btn-accent{background:var(--dark);color:var(--cream);border-color:var(--dark)}
.btn-accent:hover{background:var(--dark);color:var(--cream);box-shadow:0 6px 20px rgba(15,27,45,.16)}
button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:5px}
#hero button:focus-visible,#contacto button:focus-visible{outline-color:var(--cream)}

/* Experiencia: un carrusel más contenido, con una base propia. */
#logos{padding:40px max(6vw,24px) 44px;border-bottom:1px solid rgba(15,27,45,.12);background:var(--line)}
.logos-label{max-width:1180px;margin:0 auto 26px;color:var(--mid);font-size:.875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.logos-outer{display:flex;align-items:center;gap:24px}
.logos-viewport{overflow:hidden;flex:1;min-width:0}
.logos-track{display:flex;align-items:center;gap:12px;transition:transform .4s cubic-bezier(.25,.46,.45,.94);will-change:transform}
.logo-slide{flex:0 0 var(--slide-w,240px);height:124px;display:flex;align-items:center;justify-content:center;padding:8px 12px}
.logo-slide img{max-width:100%;max-height:100%;object-fit:contain;filter:grayscale(1);opacity:.8;display:block;transition:filter .2s,opacity .2s}
.logo-slide img:hover{filter:none;opacity:1}
.carousel-btn{flex-shrink:0;width:44px;height:44px;border:1px solid rgba(15,27,45,.35);border-radius:50%;background:transparent;color:var(--dark);display:grid;place-items:center;font-size:1.1rem;cursor:pointer;touch-action:manipulation;appearance:none;transition:background .18s,color .18s}
.carousel-btn:hover{background:var(--dark);color:var(--cream)}

/* Criterio: titular a la izquierda y argumento a la derecha. */
#tesis{padding:112px max(6vw,24px)}
#tesis .section-inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:clamp(48px,7vw,112px);align-items:start}
.section-label{color:var(--mid);font-size:.875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;line-height:1.5;margin-bottom:24px}
#tesis .section-label{grid-column:1;grid-row:1}
.tesis-title{font-size:var(--section-title-size);font-weight:800;line-height:1.2;letter-spacing:-.035em;color:var(--dark);max-width:820px;margin-bottom:24px}
#tesis .tesis-title{grid-column:1;grid-row:2;margin:0}
.tesis-title-line1{color:var(--dark)}
.tesis-title-line2{color:var(--accent)}
.tesis-divider{width:56px;height:2px;background:var(--accent);margin:24px 0 30px}
#tesis .tesis-divider{grid-column:1;grid-row:3}
.tesis-body{grid-column:2;grid-row:1/5;max-width:550px;padding-top:4px}
.tesis-body p{color:var(--mid);font-size:1.0625rem;line-height:1.8;margin-bottom:20px}
.tesis-body p.strong-p{color:var(--dark);font-size:1.3rem;font-weight:800;line-height:1.4;padding-left:18px;border-left:2px solid var(--accent);margin:28px 0}
.tesis-body strong{color:var(--dark);font-weight:700}
.tesis-remate{margin-top:32px;padding-top:28px;border-top:1px solid rgba(15,27,45,.2)}
.tesis-remate p{margin-bottom:24px}

/* Proyectos: una pieza principal y cuatro fichas con detalle. */
#proyectos{padding:92px max(6vw,24px) 104px;background:var(--line);border-top:1px solid rgba(15,27,45,.08)}
#proyectos .section-label{margin-bottom:16px}
#proyectos .tesis-title{max-width:900px;margin-bottom:0}
#proyectos .tesis-divider{margin:24px 0}
.proyectos-list{margin-top:44px;display:grid;grid-template-columns:1fr 1fr;gap:20px}
.proyecto-row{position:relative;min-width:0;display:flex;flex-direction:column;padding:36px 38px 32px;background:var(--cream);border:1px solid rgba(15,27,45,.14);border-radius:4px;transition:border-color .2s,box-shadow .2s,transform .2s}
.proyecto-row::before{content:'';position:absolute;left:38px;top:0;width:32px;height:2px;background:var(--accent)}
.proyecto-row:hover{border-color:rgba(15,27,45,.35);box-shadow:0 12px 28px rgba(15,27,45,.06);transform:translateY(-3px)}
.proyecto-tag{font-size:.875rem;font-weight:700;line-height:1.45;color:var(--mid);margin-bottom:12px;letter-spacing:.015em}
.proyecto-name{font-size:1.75rem;font-weight:800;line-height:1.2;letter-spacing:-.025em;margin-bottom:18px}
.proyecto-desc{font-size:1.0625rem;line-height:1.7;color:var(--mid);max-width:640px}
.proyecto-link{align-self:flex-start;display:inline-flex;align-items:center;min-height:44px;gap:10px;padding:8px 0;margin-top:24px;color:var(--dark);font-size:1rem;font-weight:700;line-height:1.4;text-decoration:none;border-bottom:1px solid var(--accent);transition:background .18s}
.proyecto-link:hover{text-decoration:underline;text-underline-offset:5px}
.proyecto-row:first-child{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.1fr;column-gap:56px;row-gap:0;padding:46px 48px;background:var(--dark);color:var(--cream);border-color:var(--dark);box-shadow:0 12px 32px rgba(15,27,45,.12)}
.proyecto-row:first-child::before{left:48px;width:56px;height:3px}
.proyecto-row:first-child .proyecto-tag{grid-column:1;grid-row:1;color:var(--cream);max-width:290px;margin-bottom:20px}
.proyecto-row:first-child .proyecto-name{grid-column:1;grid-row:2/4;font-size:var(--section-title-size);margin:0;align-self:start}
.proyecto-row:first-child .proyecto-desc{grid-column:2;grid-row:1/3;color:var(--cream);max-width:520px}
.proyecto-row:first-child .proyecto-link{grid-column:2;grid-row:3;justify-self:start;color:var(--cream);margin-top:16px}
.proyecto-row:first-child a:focus-visible{outline-color:var(--cream)}

/* Contacto: un cierre de la página con composición propia. */
#contacto{padding:88px max(6vw,24px) 80px;background:var(--cream)}
#contacto .section-inner{position:relative;display:grid;grid-template-columns:.8fr 1.2fr;column-gap:56px;row-gap:20px;padding:64px 48px 64px 72px;background:var(--dark);color:var(--cream);border-radius:4px;overflow:hidden}
#contacto .section-inner::after{content:'';position:absolute;right:-68px;bottom:-92px;width:250px;height:250px;border:1px solid rgba(247,245,241,.1);border-radius:50%;pointer-events:none}
.contacto-label{grid-column:1;grid-row:1;color:var(--cream);font-size:.875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;line-height:1.5;margin:0}
.contacto-divider{grid-column:1;grid-row:3;width:56px;height:2px;background:var(--accent);align-self:start;margin-top:8px}
.contacto-title{grid-column:1;grid-row:2;color:var(--cream);font-size:var(--section-title-size);font-weight:800;line-height:1.1;letter-spacing:-.04em;margin:0}
.contacto-sub{grid-column:2;grid-row:1/3;color:var(--cream);font-size:1.125rem;line-height:1.85;max-width:none;margin:0;padding-top:3px}
#contacto .btn{grid-column:2;grid-row:3;justify-self:start;position:relative;z-index:1}
.site-footer{padding:30px max(6vw,24px);border-top:1px solid rgba(15,27,45,.15);color:var(--mid);background:var(--cream);font-size:.9375rem;line-height:1.6}
.site-footer p{max-width:1180px;margin:0}

@media(min-width:1800px){#hero{min-height:850px}.hero-title{font-size:3.75rem}}
@media(max-width:1050px){
 #hero{min-height:700px;padding-block:70px 84px}.hero-grid{column-gap:48px;grid-template-columns:1.2fr 1fr}.hero-title{font-size:2.7rem}.hero-label{margin-bottom:28px}.hero-photo::before{right:-12px;bottom:-16px}
 #tesis .section-inner{column-gap:48px}.tesis-title{font-size:var(--section-title-size)}
 #contacto .section-inner{padding:48px;column-gap:40px}.proyecto-row:first-child{column-gap:40px;padding:40px}
}
@media(max-width:860px){
 #hero{min-height:0;padding:56px max(6vw,24px) 72px}.hero-grid{grid-template-columns:1fr 1fr;gap:32px}.hero-title{font-size:2.25rem}.hero-label{font-size:.8rem;gap:12px;flex-wrap:wrap}.hero-photo{padding:8px}.hero-photo img{aspect-ratio:3/4}.hero-text{padding:0}.hero-photo::before{inset:18px -10px -16px 18px}
 #tesis{padding-block:80px}.tesis-title{font-size:var(--section-title-size)}.tesis-body p{font-size:1rem}.tesis-body p.strong-p{font-size:1.2rem}
 #proyectos{padding-block:72px 80px}.proyecto-row{padding:28px}.proyecto-row::before{left:28px}.proyecto-row:first-child{padding:36px;column-gap:30px}.proyecto-row:first-child::before{left:36px}.proyecto-desc{font-size:1rem}.proyecto-name{font-size:1.6rem}
 #contacto{padding-block:64px}.contacto-title{font-size:var(--section-title-size)}.contacto-sub{font-size:1.0625rem}.contacto-divider{display:none}
}
@media(max-width:650px){
 #hero{padding:38px 24px 56px}#hero::before{inset:56% 0 0 50%}#hero::after{right:24px;top:30px;width:36px;height:2px}
 .hero-grid{display:flex;flex-direction:column;gap:36px;align-items:stretch}.hero-label{max-width:260px;font-size:.75rem;margin-bottom:28px;letter-spacing:.06em}.hero-label::before{width:18px}.hero-title{font-size:clamp(2rem,8.5vw,2.75rem);line-height:1.14;margin-bottom:28px}.hero-title .line2{font-size:1em;margin-top:20px;max-width:none}.hero-photo{width:calc(100% - 12px);max-width:390px;align-self:center;padding:10px}.hero-photo img{aspect-ratio:5/4;object-position:center 34%}.hero-photo::before{inset:20px -12px -14px 20px}.btn{min-height:50px;padding:13px 20px}
 #logos{padding:30px 24px 34px}.logos-label{font-size:.8125rem;margin-bottom:20px;max-width:270px;line-height:1.5}.logos-outer{gap:12px}.logo-slide{height:128px;padding:8px 8px}
 #tesis{padding:64px 24px}#tesis .section-inner{display:block}.section-label{font-size:.8125rem;margin-bottom:18px}.tesis-title{font-size:var(--section-title-size);line-height:1.2}#tesis .tesis-title{margin:0}.tesis-divider{margin:24px 0 30px}.tesis-body{padding:0;max-width:none}.tesis-body p{font-size:1.0625rem;line-height:1.75}.tesis-body p.strong-p{font-size:1.25rem}.tesis-remate{margin-top:28px;padding-top:24px}
 #proyectos{padding:60px 24px 64px}.proyectos-list{grid-template-columns:1fr;gap:16px;margin-top:32px}.proyecto-row{padding:28px 26px;min-height:0}.proyecto-row::before{left:26px}.proyecto-tag{font-size:.875rem}.proyecto-desc{font-size:1.0625rem}.proyecto-name{font-size:1.65rem;margin-bottom:16px}.proyecto-row:first-child{display:flex;padding:32px 26px}.proyecto-row:first-child::before{left:26px}.proyecto-row:first-child .proyecto-tag{margin-bottom:16px;max-width:none}.proyecto-row:first-child .proyecto-name{font-size:var(--section-title-size);margin-bottom:24px}.proyecto-row:first-child .proyecto-link{margin-top:20px}
 #contacto{padding:48px 16px}#contacto .section-inner{display:flex;flex-direction:column;gap:0;padding:36px 26px}.contacto-label{font-size:.8125rem;margin-bottom:24px}.contacto-title{font-size:var(--section-title-size);margin-bottom:24px}.contacto-sub{padding:0;font-size:1.0625rem;margin-bottom:28px}.contacto-divider{display:none}#contacto .btn{align-self:flex-start}.site-footer{padding:24px;font-size:.875rem}
}
@media(max-width:360px){#hero,#logos,#tesis,#proyectos{padding-inline:20px}.hero-label{font-size:.6875rem;max-width:230px;gap:8px}.hero-title{font-size:2rem}.proyecto-row,.proyecto-row:first-child{padding-inline:22px}.proyecto-name{font-size:1.5rem}#contacto .section-inner{padding-inline:22px}.contacto-title{font-size:var(--section-title-size)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}

.footer-inner{max-width:1180px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px 32px}.site-footer .legal-links{margin-top:0;flex-shrink:0}.footer-owner{margin-top:10px!important;font-size:.875rem}.legal-links{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:14px}.legal-links a{color:var(--dark);display:inline-flex;align-items:center;min-height:44px;text-decoration:underline;text-underline-offset:4px;font-size:.875rem}

/* Escala compartida por los titulares principales, proyectos y contacto. */
.hero-title{font-size:var(--section-title-size)}
@media(max-width:1050px){:root{--section-title-size:2.2rem}.footer-inner{display:block}.site-footer .legal-links{margin-top:12px}}
@media(max-width:860px){:root{--section-title-size:1.95rem}}
@media(max-width:650px){:root{--section-title-size:clamp(1.875rem,7.5vw,2.25rem)}}
