:root{--navy:#0f3164;--muted:#51677d;--paper:#e7ebe7;--rule:#0f31642a;font-family:Arial,Helvetica,sans-serif;color:var(--navy);background:var(--paper);font-size:16px;line-height:1.6;color-scheme:light}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--navy);outline-offset:8px}button{background:none;border:0}[hidden]{display:none!important}.landing{min-height:100svh;overflow:hidden}.backgrounds,.veil{position:fixed;inset:0;pointer-events:none}.backgrounds{background:#d9e2df}.backdrop{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity .65s ease;transform:scale(1.015)}.backdrop.is-active{opacity:1}.default-image{background-image:url('assets/hero-street-v9.png')}.architecture-image{background-image:url('assets/house-entry.jpeg');background-size:cover;background-repeat:no-repeat;background-color:#dce4e6;background-position:55% 58%}.restoration-image{background-image:url('assets/luis-sketch.jpeg');background-size:auto 92%;background-repeat:no-repeat;background-color:#edf0ea;background-position:50% center;filter:saturate(.5)}.veil{background:linear-gradient(90deg,#eef0e880 0%,#eef0e85c 32%,#eef0e826 51%,#eef0e866 75%,#eef0e87a 100%)}.landing-header,.landing-footer{position:fixed;left:5vw;right:5vw;z-index:3;display:flex;justify-content:space-between;align-items:center;gap:24px;font-size:11px;letter-spacing:.06em}.landing-header{top:30px}.landing-header>div{display:flex;align-items:center;gap:32px}.landing-header a{font-size:13px;letter-spacing:0}.language{padding:10px;font-size:11px}.landing-main{position:relative;z-index:2;min-height:100svh;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:12%;padding:100px 12vw}.identity{position:relative;max-width:360px;justify-self:center;width:100%}.logo-link{display:block;width:260px;max-width:100%;text-align:center;margin:auto}.logo-link img{width:100%;height:auto;display:block}.logo-caption{display:block;font-size:12px;letter-spacing:.01em;margin-top:38px;color:var(--muted);transition:opacity .3s}.firm-preview{position:absolute;left:-5%;right:-5%;top:calc(100% + 28px);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .3s,transform .3s,visibility .3s;font-size:14px;line-height:1.65}.firm-preview p{margin:0 0 18px}.firm-preview a{font-size:12px;text-decoration:underline;text-underline-offset:5px}.landing[data-preview="estudio"] .firm-preview{visibility:visible;opacity:1;transform:none}.landing[data-preview="estudio"] .logo-caption{opacity:0}.disciplines{display:flex;flex-direction:column;align-items:stretch;gap:17px;justify-self:end;width:100%;max-width:400px}.disciplines a{font-size:clamp(21px,2vw,31px);font-weight:400;letter-spacing:-.035em;line-height:1.35;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:5px 0;position:relative;transition:opacity .25s,color .25s}.disciplines a>span:first-child{border-bottom:1px solid transparent}.arrow{font-size:21px;opacity:0;transition:opacity .25s}.disciplines a:hover .arrow,.disciplines a.is-selected .arrow{opacity:1}.disciplines:has(.is-selected) a:not(.is-selected){opacity:.48}.landing[data-preview="estudio"] .disciplines{opacity:.3}.landing-footer{bottom:28px;color:var(--muted);font-size:10px;letter-spacing:.015em}.touch-team{display:none}.firm-image{background:#dce2dd}.portrait-pair{position:absolute;left:43%;bottom:-2%;height:93%;display:flex;align-items:flex-end;gap:15px}.portrait-pair img{height:100%;width:auto;object-fit:contain;filter:saturate(.35)}.touch-selection{position:fixed;bottom:62px;left:24px;right:24px;z-index:5;padding:13px 16px;background:#edf0eadf;border:1px solid var(--rule);backdrop-filter:blur(15px);display:flex;align-items:center;gap:16px;font-size:12px}.touch-selection>a{margin-left:auto;text-decoration:underline;text-underline-offset:4px}.touch-selection button{font-size:22px;line-height:1;padding:8px}.inner-header{padding:24px 6vw;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--rule)}.inner-header img{width:90px;height:auto;display:block}.inner-header>div{display:flex;align-items:center;gap:28px;font-size:13px}.inner-main{max-width:1200px;margin:auto;padding:80px 36px}.kicker{font-size:11px;letter-spacing:.12em;text-transform:uppercase;margin:0 0 28px}.inner-main h1{font-size:clamp(44px,6vw,82px);line-height:1.06;font-weight:400;letter-spacing:-.055em;margin:0 0 35px}.intro-story{display:grid;grid-template-columns:1.1fr 1fr;gap:10%;align-items:start}.intro-story p{font-size:18px;color:var(--muted);line-height:1.75;margin:0 0 24px}.intro-story .lead{font-size:23px;line-height:1.5;color:var(--navy)}.family-image{background:#d6dfd8;margin:60px 0;display:flex;justify-content:center;height:400px;overflow:hidden;gap:20px}.family-image img{height:620px;width:auto;object-fit:contain;object-position:top;margin-top:32px}.story-row{display:grid;grid-template-columns:1fr 2fr;gap:12%;border-top:1px solid var(--rule);padding:40px 0}.story-row h2{font-size:32px;letter-spacing:-.035em;line-height:1.2;font-weight:400;margin:0 0 20px}.story-row p{font-size:17px;color:var(--muted);margin:0 0 20px}.story-row .roles{font-size:12px}.credentials{padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.credentials li{border-left:1px solid var(--rule);padding-left:16px;font-size:14px;color:var(--muted)}.credentials strong{display:block;font-size:16px;color:var(--navy);font-weight:400;margin-bottom:6px}details{border-top:1px solid var(--rule);padding:16px 0;font-size:15px}summary{cursor:pointer}details ul{padding-left:20px}details li{margin-bottom:12px}details a,.external{text-decoration:underline;text-underline-offset:4px}.inner-footer{border-top:1px solid var(--rule);padding:34px 0;display:flex;justify-content:space-between;gap:24px;margin-top:50px;font-size:13px}.experience-layout{display:grid;grid-template-columns:1fr 1fr;gap:7%;align-items:start}.experience-image{width:100%;height:460px;object-fit:cover;background:#d7e1e5}.experience-layout p{color:var(--muted);font-size:18px;line-height:1.65}.example-note{font-size:11px!important;letter-spacing:.035em}.experience-links{list-style:none;padding:0;margin:30px 0}.experience-links li{border-top:1px solid var(--rule)}.experience-links a{padding:18px 0;display:flex;justify-content:space-between;gap:25px;font-size:17px}.experience-nav{display:flex;gap:20px;flex-wrap:wrap;margin-top:50px;font-size:13px}.experience-nav a{text-decoration:underline;text-underline-offset:4px}
@media(max-width:900px){.landing-main{padding-inline:8vw;gap:10%}.logo-link{width:210px}.disciplines{gap:15px}.firm-preview{font-size:13px}.portrait-pair{left:40%;height:80%}}
@media(max-width:600px){.landing{overflow:auto}.landing-main{min-height:100svh;padding:115px 30px 140px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:60px}.identity{width:100%;max-width:none}.logo-link{width:160px;margin:0}.logo-caption{font-size:10px;margin-top:18px;text-align:left}.disciplines{align-self:flex-end;width:84%;gap:12px;max-width:none}.disciplines a{font-size:23px;padding-block:6px}.arrow{font-size:18px}.landing-header{left:24px;right:24px;top:18px;font-size:9px}.landing-header>div{gap:18px}.landing-footer{left:24px;right:24px;bottom:20px;flex-wrap:wrap;gap:7px;font-size:9px}.landing-footer>span:first-child{display:none}.touch-team{display:block}.veil{background:linear-gradient(90deg,#edf0e87a,#edf0e84d 45%,#edf0e86b)}.firm-preview{position:static;display:none;padding-top:20px;max-width:330px}.landing[data-preview="estudio"] .firm-preview{display:block}.landing[data-preview="estudio"] .logo-caption{display:none}.landing[data-preview="estudio"] .landing-main{gap:35px}.landing[data-preview="estudio"] .disciplines{opacity:.3}.portrait-pair{left:30%;height:75%;opacity:.6;gap:10px}.inner-header{padding:20px 24px}.inner-header img{width:72px}.inner-header>div{gap:16px;font-size:12px}.inner-main{padding:45px 24px}.intro-story,.story-row,.experience-layout{grid-template-columns:1fr;gap:24px}.intro-story p{font-size:16px}.intro-story .lead{font-size:20px}.family-image{height:300px;margin:30px 0;gap:12px}.family-image img{height:440px}.credentials{grid-template-columns:1fr}.inner-footer{flex-direction:column;gap:14px}.experience-image{height:300px}.experience-layout p{font-size:16px}.story-row h2{font-size:28px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
/* Keep the logo itself on the vertical center line; captions sit outside it. */
.logo-link{position:relative}.logo-caption{position:absolute;top:calc(100% + 28px);left:0;right:0;margin-top:0}
.landing[data-preview="estudio"] .disciplines{opacity:0}
.landing[data-preview="estudio"] .veil{background:linear-gradient(90deg,#eef0e8f0 0%,#eef0e8d9 32%,#eef0e830 50%,#eef0e812 75%,#eef0e866 100%)}
@media(max-width:600px){.logo-caption{top:calc(100% + 18px)}.landing[data-preview="estudio"] .disciplines{opacity:.25}.landing[data-preview="estudio"] .veil{background:#eef0e8b8}}

/* A stable central composition; viewport growth adds space around the group. */
.landing-main{width:680px;max-width:calc(100% - 64px);margin:0 auto;padding:100px 0;grid-template-columns:260px 340px;column-gap:80px;justify-content:center}
.identity{width:260px;max-width:none;justify-self:stretch}.logo-link{width:260px}.disciplines{width:340px;max-width:none;justify-self:stretch}.disciplines a{font-size:28px}
.landing-header{justify-content:flex-end}.secondary-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--navy);background:transparent;min-height:46px;padding:11px 17px;font-size:14px;line-height:1.4;transition:background .2s,color .2s}.secondary-button:hover{background:var(--navy);color:#fff}.identity-contact{position:absolute;top:calc(100% + 32px);left:50%;transform:translateX(-50%);white-space:nowrap}.firm-preview{top:calc(100% + 108px);left:-24px;right:-24px}
.landing-footer>span:first-child{display:block}.landing-footer{font-size:11px;letter-spacing:0}
.inner-header{border:0;position:relative;gap:28px;padding:24px 4vw}.inner-header>div.inner-controls{gap:14px;display:flex}.inner-header>a{flex-shrink:0}.inner-navigation{display:flex;align-items:center;justify-content:center;gap:20px;flex:1;flex-wrap:wrap}.inner-navigation a{font-size:13px;line-height:1.5;padding:6px 0;white-space:nowrap;border-bottom:1px solid transparent}.inner-menu-toggle{display:none}.inner-footer{font-size:13px}
@media(min-width:601px) and (max-width:899px){.landing-main{width:600px;grid-template-columns:220px 300px;column-gap:80px}.identity,.logo-link{width:220px}.disciplines{width:300px}.disciplines a{font-size:25px}.firm-preview{font-size:12px}}
@media(max-width:700px){.inner-header{padding:20px 24px;justify-content:space-between}.inner-menu-toggle{display:block;font-size:13px;padding:10px 0}.inner-navigation{display:none;position:absolute;top:100%;left:0;right:0;z-index:10;background:#e7ebe7;padding:16px 24px 28px;box-shadow:0 18px 24px #0f316410;flex-direction:column;align-items:flex-start;gap:8px}.inner-navigation.is-open{display:flex}.inner-navigation a{font-size:16px;padding:8px 0}}
@media(max-width:600px){.landing-main{width:auto;max-width:none;padding:105px 30px 125px;gap:105px}.identity{width:100%;max-width:none}.logo-link{width:160px;margin:0 auto}.identity-contact{top:calc(100% + 24px);font-size:13px;min-height:44px}.disciplines{width:min(100%,340px);align-self:center}.disciplines a{font-size:23px}.firm-preview{position:static;padding-top:95px;font-size:13px;margin:auto;max-width:330px}.landing[data-preview="estudio"] .landing-main{gap:35px}.landing-footer{font-size:10px;gap:12px}.inner-footer{font-size:12px}}
@media(min-width:601px) and (max-height:700px){.firm-preview{font-size:12px;top:calc(100% + 94px)}.firm-preview p{margin-bottom:8px}}
@media(max-width:600px){.identity-contact{top:121px}}
@media(min-width:601px) and (max-height:700px){.firm-preview{top:auto;bottom:calc(100% + 24px)}}

/* Outline appears on pointer hover only; keyboard focus retains its clear ring. */
.disciplines a,.inner-navigation a{position:relative}
.disciplines a::before,.inner-navigation a::before{content:"";position:absolute;inset:-6px -16px;pointer-events:none;border:1px solid var(--navy);opacity:0;transition:opacity .18s ease}
.inner-navigation a::before{inset:-4px -9px}
@media(hover:hover){.disciplines a:hover::before,.inner-navigation a:hover::before{opacity:1}}
.landing-footer,.inner-footer{font-size:16px;line-height:1.5}
.atelier-language.btn-group{padding:2px;border:1px solid #0f31642e;border-radius:5px;background:#e7ebe733;gap:0}
.ui-controls .atelier-language .btn{--bs-btn-color:#51677d;--bs-btn-hover-color:#0f3164;--bs-btn-hover-bg:#e7ebe7;--bs-btn-border-color:transparent;--bs-btn-hover-border-color:transparent;min-width:36px;min-height:34px;padding:5px 8px;font-size:14px;line-height:22px;border-radius:3px!important;margin:0!important;background:transparent;color:#51677d}
.ui-controls .atelier-language .btn[aria-pressed=true]{background:#f7f8f3;color:#0f3164;box-shadow:0 1px 3px #0d203d15;font-weight:600}
.ui-controls .atelier-language .btn:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
@media(max-width:600px){.landing-footer{gap:6px;flex-direction:column;align-items:flex-start;font-size:16px}.landing-main{padding-bottom:150px}.touch-selection{bottom:90px}}
@media(prefers-reduced-motion:reduce){.disciplines a::before,.inner-navigation a::before{transition:none}}

/* Keep the image vivid; contrast belongs to the lettering and hover controls. */
.disciplines a{isolation:isolate;text-shadow:0 0 2px #fff,0 0 5px #ffffffb3;-webkit-text-stroke:.45px #ffffffe6;paint-order:stroke fill;transition:color .18s ease}
.disciplines a::before{z-index:-1;border-radius:2px;transition:opacity .18s ease,background-color .18s ease}
.disciplines:has(.is-selected) a:not(.is-selected){opacity:1}
@media(hover:hover){.disciplines a:hover{color:#fff;text-shadow:none;-webkit-text-stroke:0}.disciplines a:hover::before{background:var(--navy);opacity:1}}
.disciplines a:focus-visible{color:#fff;text-shadow:none;-webkit-text-stroke:0}
.disciplines a:focus-visible::before{background:var(--navy);opacity:1}
@media(hover:none){.disciplines a.is-selected{color:#fff;text-shadow:none;-webkit-text-stroke:0}.disciplines a.is-selected::before{background:var(--navy);opacity:1}}
.landing-footer{color:var(--navy);text-shadow:0 0 3px #fff,0 0 6px #fff}
.landing .logo-link img{filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 3px #ffffff80)}
.identity-contact{text-shadow:0 0 2px #fff,0 0 5px #fff;background:#ffffff26}
.identity-contact:hover,.identity-contact:focus-visible{text-shadow:none;background:var(--navy);color:#fff}

/* Soft button surfaces replace white text edging. */
.disciplines a,.identity-contact,.landing-footer{text-shadow:none;-webkit-text-stroke:0}
.disciplines a::before{background:#ffffff80;opacity:1;border-color:transparent}
.identity-contact{background:#ffffff99}
@media(hover:hover){.disciplines a:hover::before{background:var(--navy);border-color:var(--navy)}}
.disciplines a:focus-visible::before{background:var(--navy);border-color:var(--navy)}
@media(hover:none){.disciplines a.is-selected::before{background:var(--navy);border-color:var(--navy)}}

/* Size every hover surface to the longest translated discipline label. */
.disciplines{width:max-content;max-width:100%;justify-self:start}
.disciplines a{text-shadow:0 0 2px #ffffffb3;-webkit-text-stroke:.4px #ffffffe6;paint-order:stroke fill}
.disciplines a::before{inset:-6px -10px;background:transparent;opacity:0;border-color:transparent}
@media(hover:hover){.disciplines a:hover{text-shadow:none;-webkit-text-stroke:0}.disciplines a:hover::before{background:var(--navy);opacity:1}}
.disciplines a:focus-visible{text-shadow:none;-webkit-text-stroke:0}
.disciplines a:focus-visible::before{background:var(--navy);opacity:1}
@media(hover:none){.disciplines a.is-selected{text-shadow:none;-webkit-text-stroke:0}.disciplines a.is-selected::before{background:var(--navy);opacity:1}}

/* Top-anchored composition with upright discipline links. */
.landing-main{min-height:0;padding-top:40px;padding-bottom:180px;align-items:start}
@media(min-width:601px){.landing-main{align-items:start}.identity{align-self:start}}
@media(max-width:600px){.landing-main{padding-top:40px;padding-bottom:150px;justify-content:flex-start;gap:100px}.identity{align-self:center}}

/* One centered stack: identity, disciplines, then contact. */
.landing{overflow:auto}
.landing-main{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;width:100%;max-width:none;min-height:0;padding:40px 24px 120px;gap:32px}
.landing .identity{width:260px;max-width:100%;align-self:center;text-align:center}
.landing .disciplines{align-self:center;text-align:center}
.landing .disciplines a{justify-content:center}
.landing .identity-contact{position:static;transform:none;align-self:center;margin:0}
.landing .firm-preview{top:calc(100% + 32px);bottom:auto;left:50%;right:auto;width:min(360px,calc(100vw - 48px));transform:translate(-50%,8px)}
.landing[data-preview="estudio"] .firm-preview{transform:translate(-50%,0)}
.landing[data-preview="estudio"] .landing-main{gap:32px}
@media(max-width:600px){.landing .identity{width:160px}.landing .firm-preview{position:absolute;padding-top:0}.landing-main{padding-bottom:150px;gap:28px}.landing[data-preview="estudio"] .landing-main{gap:28px}}

/* Independent video crops over their matching still frame. */
.video-preview{overflow:hidden}
.video-plane{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:var(--video-width,100vw);height:var(--video-height,56.25vw)}
.video-plane>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.discipline-video{position:absolute;top:0;height:100%;object-fit:fill;pointer-events:none}
.video-restauracion{left:0;width:40%;mask-image:linear-gradient(90deg,#000 97%,transparent)}
.video-inmersivo{left:70%;width:30%;mask-image:linear-gradient(90deg,transparent,#000 4%)}

/* Stronger reading area, with clear windows over the active motion. */
.landing .veil{background:linear-gradient(90deg,#eef0e880 0%,#eef0e8ad 35%,#eef0e8bf 50%,#eef0e8ad 65%,#eef0e880 100%)}
.video-preview{transition:opacity .1s ease}
.landing[data-preview="restauracion"] .veil{mask-image:linear-gradient(90deg,transparent calc(var(--restoration-edge,40vw) - clamp(80px,12vw,190px)),#000 calc(var(--restoration-edge,40vw) + clamp(80px,12vw,190px)))}
.landing[data-preview="inmersivo"] .veil{mask-image:linear-gradient(90deg,#000 calc(var(--immersive-edge,70vw) - clamp(80px,12vw,190px)),transparent calc(var(--immersive-edge,70vw) + clamp(80px,12vw,190px)))}

/* Reveal both built facades while keeping the central street subdued. */
.architecture-image{background:none;overflow:hidden;transition:opacity .35s ease}
.architecture-plane .house-reveal{mask-image:none}
.landing[data-preview="arquitectura"] .veil{mask-image:linear-gradient(90deg,transparent calc(var(--restoration-edge,40vw) - clamp(80px,12vw,190px)),#000 var(--architecture-center,55vw),transparent calc(var(--architecture-right,70vw) + clamp(80px,12vw,190px)))}

/* Keep the menu at the viewport center, with breathing room on both sides. */
.landing .landing-main{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto 1fr;min-height:max(100svh,860px);padding:40px 24px;row-gap:64px;justify-items:center;align-items:center}
.landing .landing-main>.identity{align-self:end;justify-self:center}
.landing .landing-main>.disciplines{align-self:center;justify-self:center}
.landing .landing-main>.identity-contact{align-self:start;justify-self:center}
@media(max-width:600px){.landing .landing-main{min-height:max(100svh,780px);padding:48px 24px;row-gap:48px}}

/* Clear sky and tree canopies, feathering back into the quieter facades. */
.video-paisajismo{left:0;width:100%}
.landing[data-preview="paisajismo"] .veil{mask-image:radial-gradient(ellipse var(--landscape-rx,27vw) var(--landscape-ry,72vh) at var(--landscape-x,55vw) var(--landscape-y,25vh),transparent 38%,#000 100%)}

/* The studio entrance uses real extracted motion over our original scene. */
.firm-image{background:url('assets/hero-house-clean.png') center/cover no-repeat}
.architects-entrance{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s}
.architects-entrance video,.architects-static{position:absolute;height:75svh;width:auto;max-width:none;bottom:0;left:50%;transform:translateX(-50%)}
.architects-static{display:none}
.landing[data-preview="estudio"] .architects-entrance{opacity:1;visibility:visible}
.landing .disciplines,.landing .identity-contact{transition:opacity .25s ease,visibility .25s}
.landing[data-preview="estudio"] .disciplines,.landing[data-preview="estudio"] .identity-contact{opacity:0;visibility:hidden;pointer-events:none}
.landing[data-preview="estudio"] .veil{background:#eef0e8a6;mask-image:none}
.landing .firm-preview{position:fixed;left:5vw;top:42%;bottom:auto;right:auto;width:260px;transform:none;text-align:left}
.landing[data-preview="estudio"] .firm-preview{transform:none}
@media(max-width:800px){.landing .firm-preview{left:50%;top:calc(50svh - 160px);width:90vw;transform:translateX(-50%);text-align:center}.landing[data-preview="estudio"] .firm-preview{transform:translateX(-50%)}.firm-preview p{display:none}.architects-entrance video,.architects-static{height:68svh}}
@media(prefers-reduced-motion:reduce){.architects-entrance video{display:none}.architects-static{display:block}}

/* Shared corner treatment for buttons on every atelier page. */
:root{--button-radius:5px}
body :is(button,.primary-button,.secondary-button,.projects-shortcut,[role="button"]){border-radius:var(--button-radius)}

/* Email links underline only when interacted with. */
body a[href^="mailto:"]{text-decoration:none;text-underline-offset:7px;text-decoration-thickness:1px}
body a[href^="mailto:"]:hover,body a[href^="mailto:"]:focus-visible{text-decoration-line:underline}

/* Shared portrait treatment on the home and studio pages. */
:root{--media-radius:6px}
.studio-portrait img,.project-image,.experience-image,.family-image,.photo-dialog,body .work-tile,.video-project video{border-radius:var(--media-radius)}
