/* Narrative layer. Natural scrolling remains the only timeline controller. */
:root{--story-ink:#111624;--story-mint:#95e2d1}.topbar{height:78px;background:linear-gradient(#10111fb0,transparent)}.header-brand{font-size:38px}.topbar .breadcrumb{font-size:10px}.menu-toggle{font-size:9px}.topbar .button-small{font-size:10px}.reveal:not(.is-visible){opacity:1;transform:translateY(16px)}
#inicio.portal-section{height:165svh;min-height:1100px;padding:0;overflow:visible;isolation:auto;background:#0e1320}
.portal-stage{position:sticky;top:0;height:100svh;min-height:720px;display:grid;grid-template-rows:auto minmax(230px,1fr) auto;align-items:center;justify-items:center;padding:98px 4vw 25px;isolation:isolate;overflow:clip;--scene-shift:0px;--atmosphere-shift:0px;--scene-scale:1;--frame-shift:0px}
.portal-atmosphere{position:absolute;inset:-100px 0;z-index:-1;background:radial-gradient(ellipse at 48% 65%,#244b524a,transparent 55%),radial-gradient(ellipse at 75% 10%,#51416b55,transparent 55%),url('assets/data-landscape.svg') center/cover;transform:translateY(var(--atmosphere-shift));pointer-events:none}
.portal-heading{text-align:center;position:relative;z-index:2}.portal-heading .eyebrow{justify-content:center;font-size:9px;letter-spacing:.19em;color:var(--accent)}.portal-heading h1{font-size:clamp(45px,5.3vw,76px);font-weight:600;line-height:1.01;letter-spacing:-.045em;margin:19px 0 14px}.portal-heading h1 span{background:linear-gradient(100deg,#9ce4d4,#cbbaf1 63%,#eab5c5);background-clip:text;-webkit-background-clip:text;color:transparent}.portal-heading p{font-size:13px;line-height:1.7;color:#b9c6d1}.portal-frame{width:min(860px,85vw);height:100%;max-height:440px;min-height:265px;position:relative;border:1px solid #99bbc32b;border-radius:22px;margin:21px 0 15px;background:linear-gradient(160deg,#101e2b77,#131a2b44);transform:translateY(var(--frame-shift));box-shadow:0 30px 90px #0002}.portal-frame:before,.portal-frame:after{content:"";position:absolute;pointer-events:none;inset:12px;border:1px solid #aec9cc13;border-radius:13px}.portal-frame:after{inset:-9px 20%;border:0;border-top:1px solid #a8d3cc77;border-bottom:1px solid #e2b4d155;border-radius:0}.frame-caption,.frame-coordinate{position:absolute;top:20px;font-family:Consolas,monospace;font-size:9px;letter-spacing:.12em;color:#98adbb;z-index:1}.frame-caption{left:23px}.frame-coordinate{right:23px}.observatory-scene{position:absolute;width:100%;height:100%;object-fit:contain;transform:translateY(var(--scene-shift)) scale(var(--scene-scale));transform-origin:center 65%;pointer-events:none}.portal-entry{position:absolute;bottom:17px;left:50%;transform:translateX(-50%);z-index:3;white-space:nowrap;font-size:11px;padding:13px 24px;background:#b5e9dd;border-color:#b5e9dd;box-shadow:0 8px 28px #0005}.portal-entry:hover{transform:translateX(-50%) translateY(-2px);background:#d7f9ed;border-color:#d7f9ed}.portal-bottom{display:flex;justify-content:space-between;align-items:center;width:min(1160px,92vw);gap:20px;padding-top:27px;font-size:8px;letter-spacing:.1em;color:#9eacb8;position:relative;z-index:1}.portal-bottom a{font-size:10px;letter-spacing:0;display:flex;align-items:center;gap:8px;color:#d4c6e4}.portal-bottom svg{width:13px;height:13px}.portal-scroll{color:#e5b5be}
/* Hotspot panel stays above the scene and supports hover, focus and touch. */
.scene-hotspot{position:absolute;z-index:5}.scene-hotspot.is-open{z-index:8}.spot-source{left:27%;top:52%}.spot-model{left:49%;top:47%}.spot-insight{left:69%;top:41%}.hotspot-trigger{height:35px;min-width:35px;display:flex;align-items:center;gap:7px;border:1px solid #a0d8ceaa;border-radius:24px;background:#0e2632e8;color:#baf4e5;font-size:10px;padding:0 10px;box-shadow:0 0 0 5px #92dcca0b;white-space:nowrap}.hotspot-trigger span{font-size:9px}.spot-model .hotspot-trigger{color:#e4d3ff;border-color:#c7b3f4aa;background:#28243be8}.spot-insight .hotspot-trigger{color:#fbd2d4;border-color:#e9b7cbaa;background:#322435e8}.hotspot-trigger[aria-expanded=true]{background:#23473e;color:#f0fff9}.hotspot-panel{width:232px;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);border:1px solid #697b866b;border-radius:10px;padding:10px;background:#142230;box-shadow:0 12px 50px #0008;text-align:left}.hotspot-panel[hidden]{display:none}.hotspot-panel img{width:100%;height:78px;object-fit:cover;object-position:center;border-radius:5px;margin-bottom:10px}.hotspot-panel strong{font-size:12px;font-weight:500;display:block}.hotspot-panel p{font-size:11px;color:#b5c5cd;line-height:1.6;margin-top:6px}.hotspot-panel .text-link{font-size:11px;color:var(--accent);padding:10px 0 2px}
/* Reading, proof and method follow the opening scene. */
.story-intro{padding-top:95px;padding-bottom:85px;background:radial-gradient(ellipse at 20% 20%,#35465925,transparent 65%),#101722}.story-intro>.eyebrow{color:var(--lavender);margin-bottom:30px}.story-intro-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:9vw;align-items:start}.story-intro h2{font-size:clamp(37px,4.2vw,61px);line-height:1.13;letter-spacing:-.04em}.story-intro h2 span{color:#a4d7cd}.story-intro-grid p{font-size:14px;line-height:1.9;color:var(--muted);margin-bottom:17px}.story-intro-grid .story-personal{font-size:17px;line-height:1.8;color:#e2e6e9}.editorial-motto{display:block;font-size:13px;color:var(--lavender);border-left:2px solid #847496;padding-left:15px;margin:23px 0 12px}.story-intro .evidence-strip{margin-top:65px;max-width:none}.story-band{padding:45px 6.5vw;background:#14262d;display:flex;align-items:center;justify-content:space-between;gap:25px}.story-band>span{font-family:Consolas,monospace;font-size:9px;letter-spacing:.08em;color:#9ab7bd}.story-band p{font-size:clamp(20px,2.5vw,33px);font-weight:400;letter-spacing:-.02em}.story-band em{font-style:normal;color:var(--accent)}.story-band svg{color:var(--accent)}.band-lavender{background:#242235}.band-lavender em,.band-lavender svg{color:var(--lavender)}.band-coral{background:#30242d}.band-coral em,.band-coral svg{color:var(--coral)}
.method-section{padding-top:100px;padding-bottom:100px;display:grid;grid-template-columns:1fr 1fr;gap:8vw;background:#101722;align-items:center}.method-copy h2{font-size:clamp(36px,3.6vw,53px);margin:20px 0 23px}.method-copy>p{font-size:14px;line-height:1.8;color:var(--muted);max-width:490px}.delivery-steps{padding:0;list-style:none;margin:27px 0 0;display:grid;gap:19px}.delivery-steps li{display:flex;gap:18px;align-items:start}.delivery-steps li>span{font-family:Consolas,monospace;font-size:10px;color:var(--accent);border:1px solid #47665e66;border-radius:50%;width:29px;height:29px;display:grid;place-items:center;flex-shrink:0}.delivery-steps strong{font-size:14px;font-weight:500}.delivery-steps p{font-size:12px;color:var(--dim);line-height:1.7;margin-top:5px}.method-visual{position:relative}.method-visual:before{content:"";position:absolute;inset:-70px;pointer-events:none;background:radial-gradient(ellipse,#558a8340,transparent 65%)}.method-visual .architecture{transform:none;max-width:none;outline-color:#8db4aa44;position:relative}.method-hint{font-size:10px;text-align:center;color:var(--dim);margin-top:25px}.method-section .pipeline-node .node-icon{display:grid;place-items:center}
/* Each project is a scene, not another compact dashboard tile. */
#proyectos.projects-story{background:linear-gradient(#171928,#121c29);padding-bottom:30px}.projects-story .section-heading{margin-bottom:55px}.project-scene{display:grid;grid-template-columns:.85fr 1.35fr;gap:6vw;padding:55px 0 75px;border-top:1px solid #66768133;align-items:center}.project-scene:nth-child(2){padding-top:85px;padding-bottom:85px}.project-scene:nth-child(3){padding-bottom:70px}.project-index{display:flex;align-items:center;gap:17px;font-size:9px;color:#abb7c5;letter-spacing:.1em}.project-index>span:first-child{font-family:Consolas,monospace;color:var(--accent);font-size:12px}.project-editorial h3{font-size:clamp(34px,3.5vw,51px);line-height:1.1;letter-spacing:-.04em;font-weight:550;margin:20px 0}.project-headline{font-size:23px;line-height:1.4;color:var(--lavender);letter-spacing:-.025em}.project-description{font-size:13px;line-height:1.85;color:var(--muted);max-width:380px;margin:18px 0 25px}.project-status{display:block;font-size:10px;line-height:1.7;color:var(--dim);margin-top:17px}.project-editorial .button{font-size:11px;padding:13px 21px}.project-window{border-radius:12px;border:1px solid #75839744;background:#1a2635;overflow:hidden;position:relative;width:100%;padding:0;box-shadow:0 30px 65px #0003;transform:perspective(1300px) rotateY(-5deg) rotateX(3deg)}.project-window:hover{transform:perspective(1300px) rotateY(0) rotateX(0) translateY(-4px);border-color:#8bbdad99}.project-window-chrome{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:16px;font-size:8px;letter-spacing:.1em;color:#bcc3cf;background:#172232}.window-lights{color:#78849b;letter-spacing:5px;white-space:nowrap}.project-window-chrome svg{width:14px;height:14px}.project-window>img{width:100%;height:auto;max-height:420px;object-fit:cover;object-position:top;transition:transform .5s}.project-ready .project-window>img{aspect-ratio:1920/1400;object-fit:contain;max-height:none}.project-window-caption{display:block;padding:14px 18px;font-size:10px;color:#a7bcca;border-top:1px solid #55647733}.project-pending .project-window{background:#212337}.project-pending .project-window img{opacity:.65}.project-scene:nth-child(3) .project-headline{color:var(--coral)}
/* End scene: editorial contexts with persistent content and local state. */
.perspective-section{padding-top:95px;padding-bottom:95px;background:#111925}.perspective-head{display:flex;align-items:end;justify-content:space-between;gap:35px;margin-bottom:40px}.perspective-head .eyebrow{font-size:9px;margin-bottom:17px}.perspective-head h2{font-size:clamp(34px,3.8vw,54px)}.environment-switch{display:flex;gap:4px;padding:5px;border:1px solid #72859744;background:#1c2938;border-radius:50px}.environment-switch button{padding:10px 18px;border-radius:50px;font-size:11px;color:var(--muted);min-height:40px}.environment-switch button[aria-pressed=true]{background:#b7e5d9;color:#18392f}.environment-stage{position:relative;min-height:440px;overflow:hidden;border:1px solid #889db333;border-radius:15px;isolation:isolate;background:radial-gradient(ellipse at 70% 35%,#34587566,transparent 70%),#101e2e;transition:background .7s,color .5s;color:#f2f3f6}.environment-image{position:absolute;width:75%;right:-5%;height:100%;object-fit:contain;z-index:-1;opacity:.65;transition:filter .8s,opacity .8s,transform .8s}.environment-copy{padding:60px 50px;max-width:470px}.environment-copy>span{font-size:9px;letter-spacing:.15em;color:#a6ded3}.environment-copy h3{font-size:48px;line-height:1.1;font-weight:550;letter-spacing:-.035em;margin:18px 0}.environment-copy p{font-size:14px;line-height:1.85;color:#b1c3d0}.environment-copy .text-link{margin-top:20px;color:#bbecdf;font-size:12px}.environment-marker{position:absolute;bottom:25px;right:25px;font-size:8px;letter-spacing:.1em;font-family:Consolas,monospace;color:#9fbdcc}.perspective-section[data-environment=impact] .environment-stage{background:radial-gradient(ellipse at 80% 10%,#fff4d1,transparent 60%),#e6d9d0;color:#312a3e}.perspective-section[data-environment=impact] .environment-copy>span{color:#735375}.perspective-section[data-environment=impact] .environment-copy p{color:#645d69}.perspective-section[data-environment=impact] .environment-copy .text-link{color:#414769}.perspective-section[data-environment=impact] .environment-image{filter:sepia(.3) saturate(.65) brightness(1.6);opacity:.55;transform:scale(1.1)}.perspective-section[data-environment=impact] .environment-marker{color:#786775}.contact-section h2{font-size:clamp(39px,4.8vw,67px)}.contact-section p{max-width:520px}.sidebar .nav-link{font-size:clamp(25px,3vw,44px)}.sidebar nav{gap:7px}.sidebar .sidebar-bottom{margin-top:25px}.project-scene,.story-intro-grid,.method-section{scroll-margin-top:95px}
.method-visual:before{inset:-35px}
.environment-stage{transition:none}
@media(min-width:1700px){.portal-frame{max-height:520px;width:1000px}.portal-heading h1{font-size:83px}.portal-stage{padding-top:115px}}
@media(max-height:780px) and (min-width:801px){.portal-stage{min-height:650px;padding-top:85px}.portal-heading h1{font-size:51px;margin:14px 0 10px}.portal-heading p{font-size:12px}.portal-frame{min-height:245px;max-height:325px;width:720px}.portal-bottom{padding-top:17px}.portal-heading .eyebrow{font-size:8px}}
@media(max-width:1000px){.story-intro-grid{gap:40px}.story-intro-grid .story-personal{font-size:15px}.story-intro-grid p{font-size:13px}.method-section{gap:40px}.method-copy h2{font-size:37px}.method-section .pipeline-node small{font-size:7px}.project-scene{gap:35px;grid-template-columns:1fr 1.2fr}.project-headline{font-size:20px}.project-description{font-size:12px}.environment-copy{padding:50px 35px;max-width:410px}.environment-copy h3{font-size:43px}.environment-copy p{font-size:13px}.environment-image{right:-15%;opacity:.45}.perspective-head{align-items:start;flex-direction:column;gap:23px}}
@media(max-width:800px){#inicio.portal-section{height:145svh;min-height:1050px}.portal-stage{min-height:720px;padding:92px 24px 25px}.portal-heading h1{font-size:57px}.portal-frame{width:100%;max-height:390px;min-height:290px}.portal-heading .eyebrow{font-size:8px}.portal-bottom{width:100%;font-size:7px;gap:15px;flex-wrap:wrap;justify-content:center}.portal-bottom a{font-size:10px}.portal-bottom>span:first-child{display:none}.story-intro{padding-top:75px;padding-bottom:65px}.story-intro-grid{grid-template-columns:1fr;gap:29px}.story-intro h2{font-size:43px;max-width:530px}.story-intro-grid>div{max-width:570px}.story-intro .evidence-strip{margin-top:35px}.story-band{padding:30px 24px;gap:20px}.story-band>span:first-child{font-size:8px}.story-band p{font-size:23px;line-height:1.3}.method-section{grid-template-columns:1fr;gap:45px;padding-top:70px;padding-bottom:70px}.method-copy h2{font-size:41px;max-width:560px}.method-visual{max-width:580px;width:100%;justify-self:center}.method-section .pipeline-node small{font-size:9px}.project-scene{grid-template-columns:1fr;gap:32px;padding:40px 0 55px}.project-scene:nth-child(2){padding:55px 0}.project-editorial h3{font-size:42px;margin:18px 0 14px}.project-headline{font-size:24px}.project-headline br{display:none}.project-description{font-size:14px;max-width:590px;margin:15px 0 22px}.project-window{transform:none}.project-window>img{max-height:330px}.project-ready .project-window>img{max-height:none}.project-window-chrome{font-size:9px}.project-index{font-size:9px}.perspective-section{padding-top:70px;padding-bottom:70px}.environment-stage{min-height:430px}.environment-copy{position:relative;padding:38px 32px;max-width:390px;background:linear-gradient(90deg,#101e2eef,#101e2e00)}.perspective-section[data-environment=impact] .environment-copy{background:linear-gradient(90deg,#e6d9d0ef,#e6d9d000)}.environment-image{width:95%;right:-28%;opacity:.5}.environment-copy h3{font-size:43px}.environment-marker{bottom:20px}.perspective-head h2{font-size:39px}}
@media(max-width:500px){#inicio.portal-section{height:auto;min-height:0}.portal-stage{position:relative;height:auto;min-height:calc(100svh - 10px);padding:101px 20px 27px;grid-template-rows:auto auto auto}.portal-heading .eyebrow{font-size:7px;letter-spacing:.09em}.portal-heading h1{font-size:clamp(40px,11.5vw,55px);margin:20px 0 18px}.portal-heading p{font-size:12px}.portal-frame{margin:23px 0 13px;height:280px;min-height:280px;max-height:none;border-radius:13px}.frame-caption,.frame-coordinate{font-size:7px;top:16px}.frame-caption{left:16px}.frame-coordinate{right:16px}.observatory-scene{width:125%;max-width:none;left:-12.5%;transform:none;object-position:center 25%}.portal-entry{font-size:11px;padding:12px 17px;bottom:15px}.portal-bottom{padding-top:10px;gap:16px}.portal-bottom a{width:100%;justify-content:center}.portal-scroll{font-size:8px}.hotspot-trigger{height:32px;min-width:32px;padding:0 7px;font-size:9px}.hotspot-trigger span{display:none}.spot-source{left:23%;top:48%}.spot-model{left:47%;top:43%}.spot-insight{left:72%;top:38%}.hotspot-panel{width:210px;padding:11px;left:0;transform:none}.spot-source .hotspot-panel{left:-45px}.spot-model .hotspot-panel{left:-105px}.spot-insight .hotspot-panel{left:auto;right:-35px}.hotspot-panel img{height:61px}.hotspot-panel strong{font-size:11px}.hotspot-panel p{font-size:10px}.hotspot-panel .text-link{min-height:36px}.story-intro h2{font-size:35px}.story-intro-grid .story-personal{font-size:15px}.story-intro-grid p{font-size:13px}.editorial-motto{font-size:12px}.story-intro>.eyebrow{font-size:8px}.story-intro .evidence-strip{margin-top:28px}.story-band{padding:27px 24px;gap:15px}.story-band>span:first-child{display:none}.story-band p{font-size:24px}.story-band em{display:block}.method-copy h2{font-size:34px}.method-copy>p{font-size:13px}.delivery-steps strong{font-size:13px}.delivery-steps p{font-size:11px}.method-section .pipeline-node small{font-size:8px}.method-section .pipeline-node strong{font-size:12px}.method-visual:before{inset:-20px}.method-hint{font-size:9px;line-height:1.8}.projects-story .section-heading{margin-bottom:30px}.project-editorial h3{font-size:38px}.project-headline{font-size:23px}.project-description{font-size:13px}.project-window-chrome{font-size:7px;gap:10px;padding:13px}.project-window-caption{font-size:9px;line-height:1.7}.window-lights{font-size:7px;letter-spacing:2px}.project-status{font-size:10px}.perspective-head h2{font-size:34px}.perspective-head .eyebrow{font-size:8px}.environment-switch button{font-size:11px;padding:9px 17px}.environment-stage{min-height:530px}.environment-copy{padding:30px 25px 0;max-width:none;background:none!important}.environment-copy h3{font-size:40px}.environment-copy p{font-size:13px;max-width:270px}.environment-copy .text-link{font-size:11px;margin-top:13px}.environment-image{width:125%;max-width:none;right:-27%;height:57%;bottom:-8px;opacity:.8}.environment-marker{font-size:7px;bottom:17px;right:18px}.contact-section h2{font-size:42px}.sidebar .nav-link{font-size:30px;min-height:46px}.sidebar nav{gap:9px}.sidebar .sidebar-bottom{margin-top:26px}}
@media(prefers-reduced-motion:reduce){#inicio.portal-section{height:auto;min-height:0}.portal-stage{position:relative}.portal-atmosphere,.observatory-scene,.portal-frame{transform:none!important}.portal-entry{transform:translateX(-50%)!important}.reveal:not(.is-visible){transform:none}.project-window{transform:none}.environment-image{transition:none}}
