/* Optical Original retained. Additions are scoped to loader, cursor and lens. */
.opening:not(.logo-exiting){mask-image:none;-webkit-mask-image:none}.opening .loading-optic:after{content:'';position:absolute;inset:0;mask:url('med-mark.svg') center/contain no-repeat;-webkit-mask:url('med-mark.svg') center/contain no-repeat;background:#f4f0e8;opacity:.12;z-index:0;pointer-events:none}
@media(max-height:600px){.opening .loading-optic{width:120px!important;height:120px!important;margin-bottom:10px}.opening .loading-number{font-size:64px;margin:5px 0 12px}.opening .loading-status{margin-top:12px}.opening .loading-center{padding:65px 20px}}
.opening{--opening-iris:0px;mask-image:radial-gradient(circle at 50% 43%,transparent var(--opening-iris),#000 calc(var(--opening-iris) + 45px));-webkit-mask-image:radial-gradient(circle at 50% 43%,transparent var(--opening-iris),#000 calc(var(--opening-iris) + 45px))}
.opening .loading-optic{width:clamp(240px,28vw,360px);height:clamp(240px,28vw,360px);margin-bottom:15px;isolation:isolate}.loading-optic .logo-solid,.loading-optic .logo-echo,.loading-optic .logo-refraction{position:absolute;inset:0;display:grid;place-items:center}.opening .loading-optic img{width:100%;height:100%;object-fit:contain;filter:grayscale(1) brightness(3);max-width:none}.logo-solid{z-index:2}.logo-echo{z-index:1;opacity:0;pointer-events:none}.opening .echo-a img{filter:brightness(0) saturate(100%) invert(58%) sepia(35%) saturate(1100%) hue-rotate(317deg) brightness(105%)}.opening .echo-b img{filter:brightness(0) invert(1);opacity:.6}.logo-refraction{z-index:3;opacity:0;pointer-events:none}.logo-scan{position:absolute;top:var(--logo-scan,12%);left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,#f36f64bb,#fff9,transparent);z-index:4;opacity:.5;box-shadow:0 0 12px #f36f6450}.opening .loading-optic .logo-orbit{inset:-4%;border-color:#e8eceb12;transform:rotate(-25deg) scaleX(.8);pointer-events:none;z-index:0}.opening .loading-optic .logo-orbit:nth-child(2){transform:rotate(25deg) scaleX(.8);border-color:#f36f641c}.opening .loading-optic .logo-orbit:nth-child(3){inset:5%;transform:rotate(90deg) scaleX(.8);border-color:#e8eceb10}.opening .loading-number{font-size:clamp(70px,8.5vw,135px);margin:10px 0 16px;line-height:1.15;letter-spacing:-.085em}.opening .loading-kicker{font-size:8px;letter-spacing:2px}.opening .loading-progress{width:clamp(180px,20vw,310px)}.opening.logo-complete .logo-scan{opacity:0}.opening.logo-complete .logo-orbit{border-color:#f36f6440}.opening .logo-scan{transition:opacity .2s}.loading-center{padding-top:65px;padding-bottom:65px}
@media(max-width:600px){.opening .loading-optic{width:230px;height:230px;margin-bottom:20px}.opening .loading-number{font-size:88px}.opening .loading-kicker{font-size:7px}.opening .loading-status{font-size:9px}}
@media(prefers-reduced-motion:reduce){.opening{mask-image:none;-webkit-mask-image:none}.opening .logo-echo,.opening .logo-refraction,.opening .logo-scan,.opening .logo-orbit{display:none}.opening .logo-solid{clip-path:none!important;opacity:1!important}}
.loading-optic i{rotate:var(--optic-turn,0deg)}
@media(prefers-reduced-motion:reduce){.loading-optic i{rotate:none}}
.cursor-logo{position:absolute;left:-12px;top:-12px;width:24px;height:24px;background:var(--coral);mask:url('med-mark.svg') center/contain no-repeat;-webkit-mask:url('med-mark.svg') center/contain no-repeat;transition:width .25s,height .25s,left .25s,top .25s,transform .25s,background .25s;filter:drop-shadow(0 1px 4px #0008)}
.cursor-dot{display:none}.optical-cursor .cursor-ring{border-color:transparent;box-shadow:none}.optical-cursor .cursor-ring:before,.optical-cursor .cursor-ring:after{display:none}.optical-cursor[data-mode=link] .cursor-logo{width:30px;height:30px;left:-15px;top:-15px;transform:rotate(-10deg)}.optical-cursor[data-mode=link] .cursor-label{top:calc(100% + 13px);font-size:7px;letter-spacing:1.4px}.optical-cursor[data-mode=portrait] .cursor-logo{width:20px;height:20px;left:-10px;top:-10px;background:var(--coral)}.optical-cursor.is-pressed .cursor-logo{transform:scale(.8)}
.opening{background:#131518;z-index:100;isolation:isolate}.opening:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 40%,#f36f640b,transparent 50%)}.opening[hidden]{display:none!important}.opening-top,.opening-bottom{z-index:2}.skip-opening{min-height:38px}.loading-center{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:85px 25px;text-align:center}.loading-optic{position:relative;width:110px;height:110px;display:grid;place-items:center;margin-bottom:25px}.loading-optic img{filter:grayscale(1) brightness(3);width:40px;height:40px}.loading-optic i{position:absolute;inset:0;border:1px solid #e8ecea30;border-radius:50%;transform:rotate(-30deg) scaleX(.53)}.loading-optic i:nth-child(2){transform:rotate(30deg) scaleX(.53);border-color:#f36f6480}.loading-optic i:nth-child(3){transform:rotate(90deg) scaleX(.53)}.loading-kicker{font-size:9px;letter-spacing:2.5px;line-height:1.7;color:#b4b8bd}.loading-number{font-size:clamp(100px,16vw,245px);font-weight:400;letter-spacing:-.09em;line-height:1.15;display:flex;align-items:baseline;margin:5px 0 18px;font-variant-numeric:tabular-nums}.loading-number sup{font-size:.16em;letter-spacing:0;color:var(--coral);margin-left:15px;align-self:flex-start;margin-top:.9em}.loading-progress{height:1px;width:clamp(220px,28vw,460px);background:#ffffff20;overflow:hidden;position:relative}.loading-progress>span{display:block;width:100%;height:100%;background:var(--coral);transform:scaleX(0);transform-origin:left;box-shadow:0 0 10px #f36f6480}.loading-status{font-size:10px;line-height:1.6;color:#b4b8bd;margin-top:20px;min-height:16px}.optical-loading{overflow:hidden!important}.optical-loading .menu-button{pointer-events:none}.optical-cursor{position:fixed;left:0;top:0;width:0;height:0;z-index:200;pointer-events:none;opacity:0;transition:opacity .15s;contain:layout style}.optical-cursor.visible{opacity:1}.cursor-dot{position:absolute;left:-2px;top:-2px;width:4px;height:4px;border-radius:50%;background:#f36f64}.cursor-ring{position:absolute;left:-18px;top:-18px;width:36px;height:36px;border:1px solid #e8eceba6;border-radius:50%;transition:width .3s,height .3s,left .3s,top .3s,border-color .3s,transform .3s;box-shadow:0 0 14px #f36f640a}.cursor-ring:before,.cursor-ring:after{content:'';position:absolute;inset:6px -4px;border-top:1px solid #f36f64;border-bottom:1px solid #f36f64;clip-path:polygon(0 0,4px 0,4px 100%,0 100%,0 0,100% 0,100% 100%,calc(100% - 4px) 100%,calc(100% - 4px) 0)}.cursor-ring:after{transform:rotate(90deg)}.cursor-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:8px Inter,Arial,sans-serif;letter-spacing:1px;color:#fff;white-space:nowrap;opacity:0;transition:opacity .2s}.optical-cursor[data-mode=link] .cursor-ring{width:64px;height:64px;left:-32px;top:-32px;border-color:var(--coral);background:#181a1d8a;backdrop-filter:blur(3px)}.optical-cursor[data-mode=link] .cursor-label{opacity:1}.optical-cursor[data-mode=link] .cursor-dot{opacity:0}.optical-cursor[data-mode=portrait] .cursor-ring{width:150px;height:150px;left:-75px;top:-75px;border-color:#ffffff40;transform:rotate(30deg)}.optical-cursor[data-mode=portrait] .cursor-dot{background:#fff;width:2px;height:2px;left:-1px;top:-1px}.optical-cursor.is-pressed .cursor-ring{transform:scale(.85)}
.portrait-lens{position:absolute;top:0;left:0;width:220px;height:220px;pointer-events:none;z-index:4;opacity:0;transition:opacity .25s;will-change:transform;contain:strict}.portrait-lens.active{opacity:1}.hero-photo{isolation:isolate}.hero-photo img{transform:none!important}.hero-photo .portrait-lens{mask-image:linear-gradient(#000,#000)}
@media(hover:hover) and (pointer:fine){body.cursor-ready,body.cursor-ready a,body.cursor-ready button,body.cursor-ready summary{cursor:none}body.cursor-ready input,body.cursor-ready textarea{cursor:text}}
@media(max-width:600px){.loading-optic{width:90px;height:90px;margin-bottom:25px}.loading-number{font-size:32vw;letter-spacing:-.09em}.loading-kicker{font-size:7px;letter-spacing:1.8px;max-width:260px}.loading-status{font-size:9px}.opening-bottom{font-size:8px;line-height:1.5}.opening-bottom>span:last-child{max-width:145px;text-align:right}.opening-top>span{max-width:160px;line-height:1.5}.portrait-lens,.optical-cursor{display:none}}
@media(prefers-reduced-motion:reduce){.optical-cursor,.portrait-lens{display:none!important}body.cursor-ready,body.cursor-ready a,body.cursor-ready button{cursor:auto}.loading-optic i{transform:none}.opening *{animation:none!important;transition:none!important}}

.optical-steps{height:100dvh;overflow:hidden;overscroll-behavior:none}
.optical-steps .optical-journey{height:100dvh!important}
.optical-steps .optical-stage{height:100dvh;position:relative;touch-action:pan-y pinch-zoom}
.optical-steps .optical-stage>.hero{height:100%;min-height:0}
.optical-steps .optical-fallback img{object-fit:cover}
.optical-steps .optical-panel{overscroll-behavior:contain}
.optical-steps .optical-anchor{top:0!important;pointer-events:none}
.optical-light-fallback{position:absolute;inset:-30% auto -30% 0;width:150px;z-index:3;pointer-events:none;opacity:0;transform:translateX(-200px);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--optical-tint,#f36f64) 12%,transparent) 30%,color-mix(in srgb,var(--optical-tint,#f36f64) 40%,transparent) 48%,#fff9 50%,color-mix(in srgb,var(--optical-tint,#f36f64) 40%,transparent) 52%,transparent 80%);border-radius:50%;filter:blur(.5px)}
@media(max-width:600px){.optical-steps .optical-stage{height:100dvh}.optical-steps .project-top{top:max(90px,env(safe-area-inset-top));font-size:8px}.optical-steps .project-caption{bottom:calc(80px + env(safe-area-inset-bottom));text-shadow:0 2px 20px #000b}.optical-steps .optical-chapter{bottom:calc(15px + env(safe-area-inset-bottom))}.optical-steps .optical-project:before{background:linear-gradient(0deg,#000c,transparent 58%,#0005)}.optical-steps .hero-bottom{bottom:calc(55px + env(safe-area-inset-bottom))}}
.optical-steps:has(#nl-badge-frame) .optical-chapter .chapter-skip{margin-right:185px}
@media(max-width:600px){.optical-steps:has(#nl-badge-frame) .optical-chapter .chapter-skip{margin-right:0;transform:translateY(-55px)}}
/* Keep hierarchy inside short and panoramic viewports, not just a width breakpoint. */
.optical-steps .hero{padding-top:clamp(112px,14dvh,190px)}
@media(min-width:901px){.optical-steps .hero h1{font-size:clamp(76px,min(10.2vw,18dvh),240px)}}
.optical-steps .contact h2{font-size:clamp(54px,min(10vw,16dvh),170px)}
@media(min-aspect-ratio:2/1){.optical-steps .optical-fallback img{object-fit:contain}.optical-steps .hero-photo{width:62%;right:0}.optical-steps .project-caption{bottom:90px}}
@media(max-height:650px) and (min-width:601px){.optical-steps .hero{padding-top:90px}.optical-steps .hero-heading,.optical-steps .hero-note{width:55%}.optical-steps .hero h1{font-size:clamp(48px,min(9vw,15dvh),95px);margin-top:12px}.optical-steps .hero-note{margin-top:12px}.optical-steps .hero-note>p{font-size:17px}.optical-steps .hero-note>span{font-size:11px;line-height:1.5;margin:8px 0 12px}.optical-steps .hero-note .text-link{font-size:11px;padding-bottom:7px}.optical-steps .hero-photo{width:58%;right:-2%;height:100%}.optical-steps .hero-bottom{font-size:8px;bottom:45px}.optical-steps .eyebrow{font-size:8px}.optical-steps .project-top{top:82px}.optical-steps .project-caption{bottom:65px}.optical-steps .project-caption h3{font-size:clamp(38px,10dvh,70px)}.optical-steps .project-caption p{font-size:24px}.optical-steps .perspective,.optical-steps .experience,.optical-steps .contact{justify-content:flex-start;padding-top:95px;padding-bottom:90px}.optical-steps .menu-button{top:18px}}
@media(max-width:600px) and (max-height:700px){.optical-steps .hero{padding-top:95px}.optical-steps .hero h1{font-size:18vw;margin-top:12px}.optical-steps .hero-note{margin-top:12px}.optical-steps .hero-note>p{font-size:16px}.optical-steps .hero-note>span{font-size:10px;line-height:1.45;margin:8px 0 12px}.optical-steps .hero-photo{height:43%;bottom:40px}.optical-steps .project-caption p{font-size:21px}.optical-steps .project-caption h3{font-size:11.5vw}.optical-steps .concept-note{font-size:8px}.optical-steps .project-caption>a{margin-top:10px}}
@media(max-width:600px){.optical-steps .hero-photo{height:calc(100dvh - 450px);min-height:33dvh;max-height:60dvh;bottom:35px}}
@media(max-height:450px) and (min-width:601px){.optical-steps .hero{padding-top:76px}}
.optical-steps .optical-stage>:is(.perspective,.experience,.contact){justify-content:flex-start}
.optical-steps .optical-stage>:is(.perspective,.experience,.contact)>:first-child{margin-top:auto}
.optical-steps .optical-stage>:is(.perspective,.experience,.contact)>:last-child{margin-bottom:auto}

/* Mobile quick contact: same mark, light and type as the main experience. */
.mobile-contact-trigger{display:none}
.mobile-contact{box-sizing:border-box;position:fixed;inset:auto 16px calc(142px + env(safe-area-inset-bottom)) auto;margin:0;width:min(354px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 170px - env(safe-area-inset-bottom));padding:24px;border:1px solid #ffffff26;border-radius:22px;background:#202226;color:#e9e9e7;box-shadow:0 24px 90px #0008;overflow:auto;overscroll-behavior:contain;font-family:Inter,Arial,sans-serif;color-scheme:dark}
.mobile-contact::backdrop{background:#080b1066;backdrop-filter:blur(7px)}
.mobile-contact[open]{animation:contact-arrive .32s cubic-bezier(.2,.8,.2,1) both}
.mobile-contact-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mobile-contact-top>span{font-size:8px;letter-spacing:.12em;color:#c1c1c4}
.mobile-contact-top button{flex:none;width:44px;height:44px;margin:-10px -10px -4px 0;border:0;background:transparent;color:#e9e9e7;font:28px/1 Inter,Arial,sans-serif;border-radius:50%;cursor:pointer}
.mobile-contact h2{margin:16px 0 10px;font:46px/.98 Anton,Arial,sans-serif;font-weight:400;letter-spacing:-.025em}
.mobile-contact h2 em{font-family:'Instrument Serif',Georgia,serif;font-size:58px;color:#f36f64;font-weight:400}
.mobile-contact>p{margin:0 0 24px;color:#c6c7cb;font-size:13px;line-height:1.65}
.mobile-contact a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;color:inherit;text-decoration:none;font-size:12px}
.mobile-contact a span{font-size:19px}
.mobile-contact .mobile-contact-whatsapp{padding:0 16px;border-radius:9px;background:#f36f64;color:#181a1d;font-weight:600}
.mobile-contact-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0 16px}
.mobile-contact-options a{padding:0 12px;border:1px solid #ffffff26;border-radius:9px}
.mobile-contact .mobile-contact-details{border-top:1px solid #ffffff26;padding-top:12px;color:#c6c7cb;font-size:11px}
.mobile-contact :is(a,button):focus-visible,.mobile-contact-trigger:focus-visible{outline:2px solid #e9e9e7;outline-offset:4px}
.mobile-contact a:active{transform:translateY(1px)}
@keyframes contact-arrive{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:900px){
 .mobile-contact-trigger{display:flex;position:fixed;right:18px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:85;align-items:center;justify-content:center;gap:9px;min-height:48px;padding:0 16px;border:1px solid #ffffff30;border-radius:28px 28px 7px 28px;background:#f36f64;color:#181a1d;box-shadow:0 6px 25px #0004;font:600 12px Inter,Arial,sans-serif;cursor:pointer;touch-action:manipulation}
 .mobile-contact-trigger img{width:24px;height:24px;filter:brightness(0)}
 body:has(#nl-badge-frame) .mobile-contact-trigger{bottom:calc(80px + env(safe-area-inset-bottom))}
 body:not(:has(#nl-badge-frame)) .mobile-contact{bottom:calc(86px + env(safe-area-inset-bottom));max-height:calc(100dvh - 114px - env(safe-area-inset-bottom))}
 .has-mobile-contact .optical-chapter .chapter-skip{display:none}
 .optical-loading .mobile-contact-trigger,body:has(.menu[open]) .mobile-contact-trigger,body:has(.project-viewer[open]) .mobile-contact-trigger,.mobile-contact-open .mobile-contact-trigger{visibility:hidden;pointer-events:none}
}
@media(max-height:500px){.mobile-contact{bottom:12px!important;max-height:calc(100dvh - 24px)!important;width:min(354px,calc(100vw - 32px))}}
@media(prefers-reduced-motion:reduce){.mobile-contact[open]{animation:none}}
