@font-face{font-family:Plienzo;src:url('./assets/noto-sans-display-regular.woff') format('woff');font-weight:400;font-display:swap}
@font-face{font-family:Plienzo;src:url('./assets/noto-sans-display-bold.woff') format('woff');font-weight:700;font-display:swap}
:root{--ink:#073e32;--paper:#f0eee5;--sage:#7ca38d;--edge:clamp(22px,4.4vw,80px);--ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);font-family:Plienzo,Arial,sans-serif;font-synthesis:none;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}html{overflow-x:clip}body{margin:0;width:100%;overflow-x:clip}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;background:none;border:0}button:disabled{cursor:default}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:6px}h1,h2,p{margin:0}h1,h2{font-weight:400;letter-spacing:-.065em;line-height:1.03}h1{font-size:clamp(54px,6.4vw,100px)}h2{font-size:clamp(40px,5vw,76px)}p{line-height:1.5}h1:focus{outline:0}
#world{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:var(--paper)}#canvas{display:block;width:100%;height:100%}#world:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#f0eee580,transparent 65%)}[data-route=proyectos] #world:after{display:none}
header{position:fixed;inset:0 0 auto;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:26px var(--edge);pointer-events:none;background:linear-gradient(var(--paper) 60%,#f0eee500)}header>*{pointer-events:auto}.brand{width:clamp(145px,12vw,178px);display:block}.brand img{display:block;width:100%;height:auto}header nav{display:flex;gap:26px;margin-left:auto;font-size:14px}header nav a{padding-block:14px}header nav a[aria-current]{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px}#menu-toggle{display:flex;gap:12px;align-items:center;padding:14px 0 14px 12px;font-size:14px}#menu-toggle i{width:20px;height:15px;position:relative}#menu-toggle i:before,#menu-toggle i:after{content:'';position:absolute;left:0;top:3px;width:20px;height:1px;background:currentColor;transition:transform 180ms var(--ease-out)}#menu-toggle i:after{top:11px}#menu-toggle[aria-expanded=true] i:before{transform:translateY(4px) rotate(45deg)}#menu-toggle[aria-expanded=true] i:after{transform:translateY(-4px) rotate(-45deg)}
main{position:relative;z-index:2;pointer-events:none}main a,main button,main form{pointer-events:auto}main section{position:relative}main p{font-size:clamp(15px,1.3vw,19px)}.home-hero{height:100svh;overflow:clip}.hero-copy{position:absolute;left:var(--edge);top:38svh}.hero-copy h1{font-size:clamp(54px,5.8vw,88px);transform-origin:left center}.hero-copy p{font-size:16px;margin:26px 0;max-width:340px}.home-signature{position:absolute;right:var(--edge);bottom:100px;font-size:12px;line-height:1.5;text-align:right}.entry-button{display:inline-flex;align-items:center;gap:30px;min-height:58px;padding:7px 9px 7px 20px;border:1px solid #073e3260;border-radius:40px;font-size:14px;background:#f0eee533;transition:background 180ms ease,border-color 180ms ease,transform 140ms var(--ease-out)}.entry-button i{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--ink);color:var(--paper);transition:transform 200ms var(--ease-out)}.entry-button svg{width:26px;height:26px}.entry-button:active{transform:scale(.97)}
.utility{position:fixed;z-index:45;inset:auto var(--edge) 19px;display:flex;align-items:center;gap:9px;pointer-events:none}.utility>*{pointer-events:auto}.utility button{display:grid;place-items:center;width:44px;height:44px;background:#f0eee5dd;border:1px solid #073e3220;border-radius:50%;transition:transform 140ms var(--ease-out),background 180ms ease}.utility svg{width:20px;height:20px}.utility button:active{transform:scale(.94)}.utility #location{margin-left:auto;font-size:11px;letter-spacing:.02em}.play-icon,.sound-waves{display:none}#motion[aria-pressed=false] .pause-icon,#sound[aria-pressed=true] .sound-muted{display:none}#motion[aria-pressed=false] .play-icon,#sound[aria-pressed=true] .sound-waves{display:block}
.section-intro{height:115svh;padding:29svh var(--edge) 15svh}.section-intro h1{max-width:650px}.section-intro p{margin-top:26px}.scroll-invitation{position:absolute;left:var(--edge);bottom:100px;display:inline-flex;align-items:center;gap:30px;font-size:12px;min-height:44px}.service-chapter{height:125svh;padding:25svh var(--edge) 20svh}.service-chapter>div{position:sticky;top:26svh;max-width:470px;padding:24px 0}.service-chapter h2{margin:18px 0 25px}.service-chapter p{max-width:365px}.service-name{display:flex;gap:20px;align-items:center;font-size:14px}.service-name small{font-size:11px;letter-spacing:.04em}
.gallery-journey{height:560svh}.gallery-heading{position:sticky;top:112px;height:145px;margin-left:var(--edge);width:calc(100% - 2 * var(--edge));z-index:5;pointer-events:none}.gallery-heading h1{font-size:clamp(36px,4vw,58px)}.gallery-heading p{font-size:12px;margin-top:10px}.gallery-heading button{position:absolute;right:0;top:8px;font-size:12px;min-height:44px;padding:10px 0;border-bottom:1px solid #073e3260;pointer-events:auto}.gallery-labels{pointer-events:none}.study{position:relative;display:block;width:min(840px,80%);padding:0;margin:70px auto 140px;text-align:left;pointer-events:auto}.study img{display:block;width:100%;height:auto}.study>span{display:grid;grid-template-columns:1fr auto;gap:6px;padding:15px 0}.study strong{font-size:24px;font-weight:400}.study small{grid-row:2;font-size:12px}.study b{grid-column:2;grid-row:1/3;font-weight:400;font-size:24px}.study:focus-visible{outline:2px solid var(--ink);outline-offset:6px}[data-render=webgl] body:not(.gallery-list) .study{position:fixed;left:0;top:0;margin:0;display:none;transform-origin:0 0;will-change:transform}[data-render=webgl] body:not(.gallery-list) .study img{visibility:hidden;width:100%;height:100%}[data-render=webgl] body:not(.gallery-list) .study>span{display:none}.gallery-caption{position:fixed;left:var(--edge);bottom:94px;z-index:6;max-width:65%;font-size:13px!important;padding-left:20px;border-left:2px solid var(--ink);pointer-events:none}.gallery-caption[hidden]{display:none}.gallery-invitation{position:absolute;right:var(--edge);top:calc(100svh - 107px);font-size:11px;display:flex;gap:22px}.gallery-list .gallery-journey,[data-render=static] .gallery-journey{height:auto;background:var(--paper);padding:112px var(--edge) 10px}.gallery-list .gallery-heading,[data-render=static] .gallery-heading{position:relative;top:0;margin:0;width:100%;height:150px}.gallery-list .gallery-caption,.gallery-list .gallery-invitation,[data-render=static] .gallery-caption,[data-render=static] .gallery-invitation{display:none}.gallery-list .study,[data-render=static] .study{width:min(900px,100%);margin:40px auto 110px}
.contact-hero{height:110svh;padding:32svh var(--edge) 18svh}.contact-hero p{margin:25px 0}.contact-close{min-height:70svh;padding:14svh var(--edge) 120px;display:flex;align-items:flex-start;flex-direction:column;background:linear-gradient(#f0eee500,#f0eee5eb 45%,var(--paper))}.contact-close>p{font-size:clamp(27px,3vw,44px);line-height:1.2;letter-spacing:-.035em;margin-bottom:35px}.contact-email{font-size:clamp(21px,3.1vw,48px);letter-spacing:-.035em;min-height:44px}.contact-phone{font-size:16px;margin-top:14px;min-height:44px;display:flex;align-items:center}.contact-close .social-names{margin-top:45px}.contact-close>small{font-size:10px;margin-top:45px}
.site-footer{position:relative;z-index:25;pointer-events:auto;background:#f0eee5f5;padding:60px var(--edge) 105px;display:grid;grid-template-columns:1fr auto;gap:40px 70px;border-top:1px solid #073e3225}.footer-invitation p{font-size:12px;margin-bottom:18px}.footer-invitation>a{display:flex;width:fit-content;align-items:center;gap:35px;font-size:clamp(38px,5.8vw,82px);line-height:1.05;letter-spacing:-.06em}.footer-invitation i{width:.6em;height:.6em;flex-shrink:0;transition:transform 200ms var(--ease-out)}.footer-invitation svg{display:block;width:100%;height:100%}.footer-contact{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:14px;font-size:14px}.footer-contact a{padding:8px 0}.footer-colophon{grid-column:1/-1;display:flex;align-items:center;gap:35px;padding-top:26px;border-top:1px solid #073e3225;font-size:11px}.footer-brand{width:130px}.footer-brand img{width:100%;height:auto;display:block}.footer-colophon small{margin-left:auto;font-size:10px}.footer-colophon>a:last-child{padding:12px 0;display:flex;gap:18px}
#menu{position:fixed;inset:0;z-index:35;overflow:auto;padding:110px var(--edge) 95px;background:#f0eee5d9}#menu[hidden]{display:none}.menu-inner{width:min(760px,100%);min-height:calc(100svh - 205px);margin:auto;display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px}.menu-inner>p{font-size:12px;letter-spacing:.015em}.menu-inner>nav{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 0 18px}.menu-inner nav a{position:relative;display:flex;align-items:center;gap:30px;font-size:clamp(48px,6.2vw,92px);letter-spacing:-.06em;line-height:1.07;padding:5px 26px;transform-origin:center;transition:transform 200ms var(--ease-out),color 180ms ease}.menu-inner nav a i{position:absolute;left:100%;font-size:.45em;font-style:normal;opacity:0;transform:translateX(-12px);transition:opacity 150ms ease,transform 200ms var(--ease-out)}.menu-inner nav a[aria-current]{color:#62796d}.menu-contact{display:flex;gap:30px;font-size:14px}.menu-contact a{padding:8px 0}.social-names{display:flex;flex-wrap:wrap;gap:18px;font-size:11px;line-height:1.7;justify-content:center}.social-names span{white-space:nowrap}
#cursor{position:fixed;left:0;top:0;width:22px;height:22px;border:1px solid var(--ink);border-radius:50%;z-index:100;pointer-events:none;opacity:0;mix-blend-mode:multiply;transform:translate3d(-100px,-100px,0)}#cursor i{position:absolute;width:3px;height:3px;background:var(--ink);border-radius:50%;left:8.5px;top:8.5px}#cursor.active{opacity:.65}#cursor.over{background:#073e3210;border-color:#073e3280}#click-feedback{position:fixed;left:0;top:0;width:34px;height:34px;border:1px solid var(--ink);border-radius:50%;opacity:0;pointer-events:none;z-index:99}.gallery-dragging,.gallery-dragging *{cursor:grabbing!important;user-select:none}
dialog{border:0;background:var(--paper);color:var(--ink);width:min(1080px,94vw);max-height:90svh;overflow:auto;padding:65px 32px 30px}dialog::backdrop{background:#073e32b0}dialog figure{margin:0}dialog img{display:block;max-width:100%;max-height:63svh;object-fit:contain;margin:auto}dialog figcaption{font-size:26px;margin-top:22px}dialog>p{font-size:13px;line-height:1.5;max-width:600px;margin-top:12px}.dialog-close{position:absolute;right:20px;top:14px;padding:14px;min-height:44px;z-index:2}dialog.spatial-inspection{position:fixed;inset:0;margin:0;width:100vw;height:100svh;max-width:none;max-height:none;background:transparent;padding:0;overflow:hidden}dialog.spatial-inspection::backdrop{background:transparent}dialog.spatial-inspection img{visibility:hidden}dialog.spatial-inspection figure{position:absolute;inset:0}dialog.spatial-inspection figcaption{position:absolute;bottom:110px;left:var(--edge);background:#f0eee5eb;padding:8px 14px}dialog.spatial-inspection>p{position:absolute;bottom:65px;left:var(--edge);background:#f0eee5eb;padding:7px 14px;max-width:min(600px,calc(100% - 2 * var(--edge)))}dialog.spatial-inspection .dialog-close{top:25px;right:var(--edge);background:var(--paper)}body:has(dialog[open]) header nav,body:has(dialog[open]) #menu-toggle,body:has(dialog[open]) .utility,body:has(dialog[open]) .gallery-caption,body:has(dialog[open]) .gallery-heading{visibility:hidden}
.skip{position:fixed;top:-70px;left:20px;z-index:101;padding:14px;background:var(--paper)}.skip:focus{top:10px}.sr-only{position:absolute;top:0;left:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}#render-note{position:fixed;bottom:75px;right:var(--edge);max-width:210px;z-index:30;background:var(--paper);padding:12px;font-size:11px}[data-render=static] #world{background:linear-gradient(140deg,var(--paper),#cfd9c9)}
@media(hover:hover) and (pointer:fine){.entry-button:hover{background:#f0eee5a6;border-color:var(--ink)}.entry-button:hover i{transform:rotate(45deg)}.utility button:hover{background:var(--paper);transform:scale(1.06)}.menu-inner nav a:hover{transform:perspective(650px) rotateY(-5deg) scale(1.035);color:var(--ink)}.menu-inner nav a:hover i{opacity:1;transform:translateX(0)}.footer-invitation>a:hover i{transform:translate(5px,-5px)}.footer-contact a:hover,.contact-email:hover,.contact-phone:hover,.menu-contact a:hover{text-decoration:underline;text-underline-offset:5px}header nav a:hover{color:#33755b}}
@media(max-width:700px){header{padding:21px var(--edge)}header nav{display:none}.brand{width:145px}h1{font-size:clamp(46px,12vw,65px)}h2{font-size:42px}.hero-copy{top:52svh}.hero-copy h1{font-size:clamp(44px,11.8vw,62px)}.hero-copy p{font-size:14px;margin:18px 0}.entry-button{min-height:54px;font-size:13px;gap:24px;padding-left:18px}.entry-button i{width:38px;height:38px}.home-signature{display:none}.utility{bottom:13px}.utility #location{font-size:10px}#world:after{background:linear-gradient(180deg,transparent 38%,#f0eee5c0 65%,#f0eee5e5)}.section-intro{padding-top:52svh;height:112svh}.section-intro p{font-size:14px;margin-top:20px}.scroll-invitation{bottom:100px;font-size:11px}.service-chapter{height:140svh;padding:48svh var(--edge) 18svh}.service-chapter>div{top:48svh;padding:16px 0;max-width:100%}.service-chapter h2{font-size:41px;max-width:340px;margin:15px 0 19px}.service-chapter p{max-width:330px;font-size:14px;line-height:1.55}.service-name{font-size:12px;gap:14px}.service-name small{font-size:10px}.gallery-journey{height:540svh}.gallery-heading{top:110px;height:140px}.gallery-heading h1{font-size:40px}.gallery-heading p{font-size:10px;max-width:190px}.gallery-heading button{font-size:10px;top:4px}.gallery-caption{font-size:11px!important;bottom:92px;max-width:85%;padding-left:14px}.gallery-invitation{font-size:10px;top:calc(100svh - 126px);left:var(--edge);right:auto}.gallery-list .gallery-journey,[data-render=static] .gallery-journey{padding-top:110px}.gallery-list .gallery-heading,[data-render=static] .gallery-heading{height:135px}.study strong{font-size:22px}.contact-hero{height:110svh;padding-top:52svh}.contact-hero p{font-size:14px;margin:20px 0}.contact-close{min-height:65svh;padding-top:10svh}.contact-close>p{font-size:29px;margin-bottom:25px}.contact-close .social-names{justify-content:flex-start;gap:12px 20px;margin-top:32px}.site-footer{grid-template-columns:1fr;padding:45px var(--edge) 100px;gap:28px}.footer-invitation p{font-size:11px;margin-bottom:17px}.footer-invitation>a{font-size:42px;gap:18px}.footer-contact{gap:6px;font-size:13px}.footer-colophon{gap:18px;flex-wrap:wrap;padding-top:23px}.footer-brand{width:115px}.footer-colophon>a:last-child{margin-left:auto;font-size:10px}.footer-colophon small{font-size:9px}.menu-inner{gap:20px;min-height:calc(100svh - 210px)}#menu{padding-top:115px}.menu-inner nav a{font-size:56px;line-height:1.11;padding-inline:16px}.menu-contact{flex-direction:column;gap:2px;font-size:13px}.menu-inner .social-names{gap:10px 18px;font-size:10px}.menu-inner nav a i{display:none}#cursor{display:none}dialog{padding:60px 20px 25px}dialog.spatial-inspection figcaption{font-size:24px;bottom:130px}dialog.spatial-inspection>p{font-size:12px;bottom:60px;line-height:1.5}}
@media(max-height:600px) and (min-width:701px){.hero-copy{top:27svh}.hero-copy h1{font-size:46px}.hero-copy p{margin:15px 0;font-size:14px}.home-signature{display:none}.menu-inner nav a{font-size:42px}.menu-inner{gap:10px}#menu{padding-top:90px;padding-bottom:75px}.menu-inner>nav{padding-block:0}.menu-contact{gap:25px}.gallery-heading{top:95px}.gallery-heading h1{font-size:34px}}
@media(max-height:420px){.hero-copy{top:30svh}.hero-copy h1{font-size:36px}.hero-copy p{display:none}.hero-copy .entry-button{margin-top:16px;min-height:45px}.entry-button i{height:31px;width:31px}.utility{bottom:8px}.home-hero .entry-button{font-size:12px}.menu-inner{gap:12px}.menu-inner nav a{font-size:34px}}
@media(prefers-reduced-motion:reduce){html:not([data-motion=full]) :is(a,button,i){transition:none!important}html:not([data-motion=full]) :is(#cursor,#click-feedback){display:none}}
html[data-motion=reduced] #cursor,html[data-motion=reduced] #click-feedback{display:none}html[data-motion=reduced] .entry-button,html[data-motion=reduced] .entry-button i,html[data-motion=reduced] .menu-inner nav a,html[data-motion=reduced] .menu-inner nav a i,html[data-motion=reduced] .footer-invitation i{transition:none;transform:none}

body.menu-open main{visibility:hidden}body.menu-open header nav{visibility:hidden}

.section-intro .scroll-invitation{bottom:calc(15svh + 88px)}
.contact-hero .scroll-invitation{bottom:calc(10svh + 88px)}

html[data-motion=reduced] :is(a,button,i){transition:none!important}

@media(max-height:650px) and (max-width:700px){.hero-copy{top:auto;bottom:100px}.hero-copy h1{font-size:42px}}

body:has(dialog.spatial-inspection[open]) main{visibility:hidden}

/* P19: P17 cursor geometry and scene response retained. */
html[data-pointer=mouse][data-motion=full] #cursor{display:block}

.gallery-journey{height:var(--gallery-length,560svh)}@media(max-width:700px){.gallery-journey{height:var(--gallery-mobile,540svh)}}.gallery-list .gallery-journey,[data-render=static] .gallery-journey{height:auto}dialog figure video{display:block;max-width:100%;max-height:60svh;margin:auto}dialog figure img[hidden]{display:none}
/* Touch landscape also has no decorative mouse; real mouse movement opts in. */
@media(hover:none),(pointer:coarse){#cursor{display:none}}
html[data-pointer=mouse][data-motion=full] #cursor{display:block}
.sound-invitation{font-size:10px;line-height:1.2;color:var(--ink)}.sound-invitation[hidden]{display:none}

/* Bounded rotation keeps text and hit targets centred. */
.hero-copy,.section-intro,.contact-hero>div,.service-chapter>div,#menu nav,.entry-button{perspective:1000px}main h1,main h2,.entry-button span,.entry-button i,#menu nav a,.footer-invitation>a,.footer-contact a,.scroll-invitation,header nav a,#menu-toggle{transform-origin:center;transition:rotate 180ms ease-out,translate 180ms ease-out,scale 180ms ease-out}.entry-button span{display:inline-block}

.gallery-caption{background:#f0eee5ed;padding:7px 12px;border-left:2px solid var(--ink)}@media(max-width:700px){.gallery-invitation{top:190px}}

/* Keep the gallery controls readable as works travel behind the mobile header. */
.gallery-heading{z-index:30}
body[data-route=proyectos] .utility .sound-invitation,body[data-route=proyectos] .utility #location{background:#f0eee5ed;padding:5px 8px}
@media(max-width:700px){[data-route=proyectos] #world:after{display:block;background:linear-gradient(180deg,var(--paper) 210px,transparent 270px)}[data-render=webgl] body:not(.gallery-list) .gallery-labels{position:fixed;inset:0;clip-path:inset(210px 0 0);pointer-events:none}}
body:has(dialog.spatial-inspection[open]) #world:after{display:none}

/* One-finger orbit is confined to the spatial modal; browser pinch zoom stays available. */
dialog.spatial-inspection{touch-action:pinch-zoom}
