/* Portal direction: custom lettering, plum space, rounded imagery. */
.portal-v2{--plum:#21102f;--ink:#21102f;--lilac:#cdb6ef;--paper:#f3f0e9;--gutter:max(6vw,calc((100vw - 1100px)/2));--radius:24px;background:var(--paper);color:var(--ink)}
.portal-v2 header{padding:24px 4vw;mix-blend-mode:difference}.portal-v2 .portal-v2-scene{height:420svh}.portal-v2 .portal-stage{background:#21102f;color:#e8d9fa}.portal-v2 .portal-stage:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 12% 65%,#36124790,transparent 50%),radial-gradient(ellipse at 75% 30%,#160a25,transparent 45%);pointer-events:none}.portal-v2 .portal-stage:after{content:'';position:absolute;inset:0;background-image:radial-gradient(circle at 12% 20%,#d5b6ff80 0 .6px,transparent 1.4px),radial-gradient(circle at 70% 60%,#d5b6ff60 0 .6px,transparent 1.3px),radial-gradient(circle at 31% 85%,#b790dc60 0 .5px,transparent 1px);background-size:211px 241px,317px 337px,127px 173px;opacity:.45;pointer-events:none;z-index:0}.portal-v2 .distant-work{position:absolute;inset:0;overflow:hidden;z-index:1}.distant-work img{position:absolute;width:18vw;height:23vw;max-height:37svh;object-fit:cover;border-radius:24px;filter:blur(12px);opacity:.38;will-change:transform}.distant-work img:nth-child(1){left:3%;top:13%;transform:rotate(-12deg)}.distant-work img:nth-child(2){right:4%;top:12%;transform:rotate(13deg)}.distant-work img:nth-child(3){left:17%;bottom:5%;width:21vw;height:15vw}.distant-work img:nth-child(4){right:21%;bottom:4%;width:17vw;height:17vw}.portal-v2 .wordmark-wrap{will-change:auto;z-index:3;transform-origin:26.6% 52%;pointer-events:none}.portal-v2 .wordmark{width:94vw;height:62svh;fill:#d4b9f4;overflow:visible}.portal-v2 .hero-caption{z-index:4;top:13%;left:4vw;font-size:12px;letter-spacing:.01em;line-height:1.5}.portal-v2 .hint,.portal-v2 .portal-note{z-index:4;bottom:36px}.portal-v2 .portal-note{right:4vw;line-height:1.8;letter-spacing:.04em}.portal-v2 .portal-peek{z-index:5;background:#321040;clip-path:ellipse(0 0 at 26.6% 52%);will-change:clip-path}.portal-v2 .portal-peek:after{display:none}.welcome{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:12vh 10vw;color:#e4c9f5;text-align:center;opacity:0}.welcome p{font-size:clamp(27px,3.8vw,65px);line-height:1.24;font-weight:300;letter-spacing:-.045em;max-width:28ch;margin:30px 0}.welcome-down{font-size:11px;letter-spacing:.04em;margin-top:15px}.welcome .eyebrow{opacity:.6}.portal-v2 .work-section{padding-top:100px;background:var(--paper)}.portal-v2 .work-heading{margin:0 var(--gutter) 55px}.portal-v2 .work-heading h2{font-weight:500;letter-spacing:-.07em}.portal-v2 .work-heading p{max-width:22ch}.portal-v2 .image-rail{padding:0 var(--gutter);gap:22px;scroll-padding-inline:var(--gutter);scroll-snap-type:x mandatory;touch-action:pan-x pan-y;user-select:none}.portal-v2 .rail-frame{width:76vw;flex-basis:76vw;max-width:1100px;height:65svh;border-radius:var(--radius);scroll-snap-align:start;isolation:isolate;background:#ddd7d5}.portal-v2 .rail-frame img{transform:scale(1.14);object-fit:cover}.portal-v2 .rail-caption{margin:22px var(--gutter) 0;grid-template-columns:1fr auto auto;column-gap:30px;align-items:start}.portal-v2 .rail-details{display:flex;align-items:baseline;gap:18px}.portal-v2 .rail-index{font-size:11px;opacity:.6}.portal-v2 .rail-caption h3{font-size:21px;font-weight:600}.portal-v2 .rail-caption p{font-size:11px;line-height:1.6;margin:5px 0 12px;opacity:.65}.portal-v2 .rail-caption .project-category{padding-top:6px}.portal-v2 .rail-caption .rail-actions{padding-top:2px}.portal-v2 .project-row{margin-bottom:120px}.portal-v2 .about{background:#e8dfcb}.portal-v2 .about img{border-radius:var(--radius)}.portal-v2 .contact{background:var(--plum);color:#dec4f7}.portal-v2 dialog{border-radius:24px;overscroll-behavior:contain}.portal-v2 .case-images{gap:24px}.portal-v2 .case-images img,.portal-v2 .case-images video,.portal-v2 .case-images iframe{border-radius:18px}.portal-v2 .case-images video{width:100%;max-height:90svh;background:#17101e}.case-pair{display:grid;gap:18px;align-items:start}.case-subsection{padding:45px 3vw 15px}.case-subsection h3{font-size:32px}.case-subsection p{max-width:70ch;font-size:14px;line-height:1.8}.case-video{border:0;width:100%;aspect-ratio:16/9;background:#180d22}.video-source{font-size:12px;text-decoration:underline;padding:10px 0 30px;display:inline-block}
/* The collection folds into a single, optional doorway. */
.gather-scene{height:280svh;background:var(--paper)}.gather-stage{height:100svh;position:sticky;top:0;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 50% 55%,#d5c1ef45,transparent 65%)}.gather-note{position:absolute;left:var(--gutter);top:9%;z-index:1}.gather-note h2{font-size:clamp(40px,5.5vw,85px);font-weight:500;line-height:1;letter-spacing:-.06em;margin:20px 0}.gather-images{position:absolute;inset:0;pointer-events:none;z-index:2}.gather-tile{position:absolute;left:50%;top:51%;width:clamp(110px,20vw,290px);height:clamp(85px,15vw,215px);border-radius:18px;overflow:hidden;box-shadow:0 14px 40px #2613371c;will-change:transform,opacity;transform:translate(-50%,-50%)}.gather-tile img{width:100%;height:100%;object-fit:cover}.into-button{position:absolute;z-index:3;left:50%;top:51%;transform:translate(-50%,-50%);width:clamp(260px,40vw,640px);height:clamp(120px,17vw,235px);border-radius:32px;background:#2b123e;color:#dec3f8;display:flex;align-items:center;justify-content:space-between;padding:4vw;font-size:clamp(45px,7.7vw,125px);font-weight:650;letter-spacing:-.065em;box-shadow:0 20px 60px #2d124529;overflow:hidden;transition:background .2s}.into-button:hover{background:#49205f}.into-button:focus-visible{outline:3px solid #744794;outline-offset:8px}.into-button span:last-child{font-size:.55em;font-weight:300}.gather-bottom{position:absolute;bottom:8%;left:6vw;right:6vw;text-align:center;font-size:14px;line-height:1.8;z-index:4}.gather-bottom span{font-size:11px;opacity:.6}
/* The full collection is a distinct page; navigation never depends on hover. */
.catalogue-intro{min-height:95svh;background:#261236;color:#dcc3f3;padding:120px 6vw 60px;position:relative;overflow:hidden;border-radius:0 0 36px 36px}.catalogue-intro:before{content:'';position:absolute;width:50vw;height:65vw;border:1px solid #d0abef20;border-radius:50%;right:-10vw;top:5%;transform:rotate(25deg);box-shadow:0 0 0 60px #d0abef05,0 0 0 140px #d0abef03;pointer-events:none}.back-link{display:block;font-size:11px;margin-bottom:8vh;position:relative;z-index:1}.catalogue-intro>.eyebrow{opacity:.6}.catalogue-intro h1{font-size:clamp(65px,12vw,190px);font-weight:500;letter-spacing:-.08em;line-height:.88;margin:25px 0 35px;position:relative}.catalogue-intro p{font-size:15px;line-height:1.8}.catalogue-down{position:absolute;right:7vw;bottom:60px;border:1px solid #d0abef80;border-radius:50%;height:70px;width:70px;display:grid;place-items:center;font-size:30px}.category-tabs{display:flex;position:sticky;top:0;z-index:45;gap:10px;justify-content:center;padding:18px 4vw;background:#f3f0e9ed;backdrop-filter:blur(16px);border-bottom:1px solid #2612361c}.category-tabs a{border-radius:30px;padding:10px 20px;font-size:13px}.category-tabs a.active,.category-tabs a:hover{background:#2b123e;color:#ead6fa}.category-tabs span{font-size:9px;vertical-align:super;opacity:.6;margin-left:6px}.catalogue header{position:absolute}.catalogue-section{padding:90px 6vw 70px;scroll-margin-top:70px}.catalogue-section:nth-child(even){background:#eae4ee}.catalogue-section-head{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:40px}.catalogue-section-head h2{font-size:clamp(50px,8vw,120px);font-weight:500;letter-spacing:-.07em;line-height:.95;margin:0}.catalogue-section-head p{max-width:27ch;font-size:12px;line-height:1.7}.catalogue-grid{display:grid;grid-template-columns:1fr 1fr;gap:45px 25px}.catalogue-card{background:none;border:0;padding:0;text-align:left;min-width:0}.catalogue-picture{display:block;width:100%;aspect-ratio:1.35;border-radius:24px;overflow:hidden;background:#ddd5de;position:relative}.catalogue-picture img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.catalogue-card:hover img{transform:scale(1.04)}.catalogue-info{display:flex;justify-content:space-between;gap:15px;margin-top:15px}.catalogue-info strong{display:block;font-size:19px;font-weight:600;letter-spacing:-.035em}.catalogue-info small{font-size:11px;display:block;opacity:.6;margin-top:6px}.catalogue-info .card-arrow{border:1px solid #21102f55;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;flex-shrink:0}.motion-play{position:absolute;left:20px;bottom:20px;background:#fffdefec;color:#21102f;border-radius:50%;width:45px;height:45px;display:grid;place-items:center;font-size:12px}.loading{padding:100px 6vw}
@media(max-width:700px){.portal-v2{--gutter:6vw;--radius:18px}.portal-v2 header{padding:22px 6vw}.portal-v2 .portal-v2-scene{height:370svh}.portal-v2 .wordmark{height:48svh;width:96vw}.portal-v2 .hero-caption{top:18%;left:6vw;font-size:11px}.portal-v2 .hint{left:6vw;bottom:40px}.portal-v2 .portal-note{right:6vw;bottom:40px;font-size:9px}.distant-work img{width:31vw;height:40vw;filter:blur(8px);opacity:.4}.distant-work img:nth-child(1){top:15%}.distant-work img:nth-child(2){top:25%;right:-6%}.distant-work img:nth-child(3){width:35vw;height:30vw;left:-3%;bottom:15%}.distant-work img:nth-child(4){width:28vw;height:36vw;right:10%;bottom:8%}.welcome{padding:13vh 8vw}.welcome p{font-size:30px;max-width:19ch;line-height:1.3}.welcome .eyebrow{font-size:8px}.portal-v2 .work-section{padding-top:70px}.portal-v2 .work-heading{margin-bottom:35px}.portal-v2 .image-rail{gap:12px}.portal-v2 .rail-frame{width:86vw;flex-basis:86vw;height:56svh}.portal-v2 .rail-caption{margin-top:18px;grid-template-columns:1fr auto;column-gap:12px;row-gap:10px}.portal-v2 .rail-details{gap:9px;grid-column:1;grid-row:1}.portal-v2 .rail-index{font-size:9px}.portal-v2 .rail-caption h3{font-size:18px}.portal-v2 .rail-caption .project-category{grid-column:1;grid-row:2;padding-left:24px;font-size:9px;padding-top:0}.portal-v2 .rail-caption .rail-actions{grid-column:2;grid-row:1}.portal-v2 .rail-caption .rail-actions button{width:30px;height:30px}.portal-v2 .project-row{margin-bottom:75px}.portal-v2 .case-images{gap:15px}.portal-v2 .case-images img,.portal-v2 .case-images video{border-radius:12px}.case-pair{gap:10px}.gather-scene{height:260svh}.gather-note{top:11%}.gather-note h2{font-size:42px}.gather-note>.eyebrow{font-size:8px}.gather-tile{width:37vw;height:29vw;border-radius:12px}.into-button{width:78vw;height:135px;border-radius:26px;padding:28px;font-size:62px}.gather-bottom{bottom:10%;font-size:13px}.gather-bottom span{font-size:10px}.catalogue-intro{min-height:85svh;padding:110px 6vw 60px;border-radius:0 0 24px 24px}.back-link{margin-bottom:70px}.catalogue-intro h1{font-size:76px}.catalogue-intro p{font-size:13px;max-width:25ch}.catalogue-down{width:50px;height:50px;right:6vw;bottom:50px}.category-tabs{padding:12px 3vw;gap:0;justify-content:space-between}.category-tabs a{padding:10px 9px;font-size:11px}.category-tabs span{font-size:8px;margin-left:3px}.catalogue-section{padding:65px 6vw 50px}.catalogue-section-head{display:block;margin-bottom:30px}.catalogue-section-head h2{font-size:57px}.catalogue-section-head p{margin-top:20px}.catalogue-grid{grid-template-columns:1fr;gap:30px}.catalogue-picture{border-radius:18px}.catalogue-info strong{font-size:18px}.catalogue-info small{font-size:10px}}
@media(prefers-reduced-motion:reduce){.portal-v2 .portal-v2-scene{height:auto}.portal-v2 .portal-stage{height:auto;min-height:100svh;padding-top:100svh}.portal-v2 .wordmark-wrap{height:100svh;bottom:auto}.portal-v2 .hero-caption{top:15svh}.portal-v2 .hint,.portal-v2 .portal-note{display:none}.portal-v2 .portal-peek{position:relative;clip-path:none!important;display:block!important;min-height:65svh}.welcome{min-height:65svh;opacity:1!important}.gather-scene{height:auto}.gather-stage{position:relative;height:100svh}.gather-note{opacity:1!important}.gather-images{display:none}.into-button{transform:translate(-50%,-50%)!important}.catalogue-card img{transition:none}.portal-v2 .rail-frame img{transform:none!important}}
/* Revision 4: floating type, kinetic copy, staggered collection and stacked catalogue. */
.portal-v2 header{position:fixed;inset:14px 3vw auto;padding:14px 22px;border:1px solid #e2c9f32b;border-radius:50px;background:#21102fb5;backdrop-filter:blur(22px) saturate(145%);-webkit-backdrop-filter:blur(22px) saturate(145%);box-shadow:0 8px 32px #170c241a;mix-blend-mode:normal;color:#f0e4ff;z-index:80}.portal-v2 header .brand{font-size:15px}.portal-v2 .portal-peek{background:#d4b9f4;clip-path:none;opacity:0;pointer-events:none}.portal-v2 .welcome{color:#271332;pointer-events:auto;opacity:0}.portal-v2 .welcome .eyebrow{color:#271332}.portal-v2 .wordmark{overflow:visible}.letter-float{transform-box:fill-box;transform-origin:center;animation:letter-drift var(--duration,7s) ease-in-out var(--delay,0s) infinite alternate}.letter-shift{transform-origin:center;will-change:transform}@keyframes letter-drift{0%{transform:translateY(-7px) rotate(-.8deg)}100%{transform:translateY(8px) rotate(.8deg)}}
.word-play{cursor:default;position:relative;isolation:isolate}.play-word{display:inline-block;transform-origin:center;will-change:transform;position:relative}.word-play:focus-visible{outline:1px dashed currentColor;outline-offset:10px;border-radius:12px}.welcome .word-play{max-width:28ch}.portal-v2 .rail-frame img{transform:scale(1.65);will-change:transform}.portal-v2 .work-section{position:relative;z-index:1}.gather-scene{height:350svh;position:relative;z-index:5}.gather-stage{overflow:visible;background:var(--paper)}.gather-images{position:fixed;inset:0;z-index:3;pointer-events:none;overflow:hidden}.gather-tile{top:50%;opacity:0;will-change:transform,opacity,filter}.gather-note{top:12%;pointer-events:none}.gather-bottom{pointer-events:none}.into-button{top:50%;width:min(40vw,440px);height:auto;aspect-ratio:1;border-radius:50%;padding:0;display:grid;place-items:center;transform:translate(-50%,-50%) scale(0);box-shadow:none;will-change:transform;background:#2b123e;overflow:hidden;pointer-events:none}.into-label{position:absolute;width:360px;height:200px;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:clamp(55px,7vw,100px);line-height:1;white-space:nowrap;transform-origin:center;letter-spacing:-.06em}.into-label>span:last-child{font-size:35px;margin-top:25px}.into-button:hover{background:#39144f}.gather-bottom{z-index:5}
.portal-v2 #about.about{display:block;position:relative;z-index:10;padding:0;background:#e8dfcb;overflow:clip}.about-stage{position:sticky;display:grid;grid-template-columns:1fr 1.1fr;gap:7vw;padding:110px 5vw;align-items:start;transform-origin:center bottom}.about-copy{transform-origin:50% 60%;will-change:transform,opacity}.about-portrait{position:sticky;top:110px;margin:0;align-self:start;transform-origin:center;will-change:transform,clip-path;overflow:hidden;border-radius:24px;height:min(75svh,850px)}.portal-v2 .about-portrait img{height:100%;max-height:none;width:100%;object-fit:cover;object-position:center 35%;border-radius:0}.portal-v2 .contact{position:relative;z-index:20;border-radius:36px 36px 0 0;box-shadow:0 -25px 65px #26123628;margin-top:-36px;padding-top:135px}.portal-v2 .about p.word-play{line-height:1.85}.portal-v2 .about h2.word-play{line-height:1.02}.portal-v2 .about h2 .play-word{letter-spacing:-.07em}
.catalogue header{position:fixed}.catalogue .category-tabs{top:84px;z-index:60;border:1px solid #33213f1f;border-radius:50px;margin:14px 3vw;padding:8px 12px;background:#f3f0e9d6;box-shadow:0 8px 25px #26123614}.catalogue-section{position:sticky;top:92px;border-radius:36px 36px 0 0;box-shadow:0 -20px 65px #26123620;background:#f3f0e9;padding-top:115px;scroll-margin-top:155px;transform-origin:center bottom}.catalogue-section:nth-child(2){background:#e9dfed}.catalogue-section:nth-child(3){background:#dcd1e9}.catalogue-section:nth-child(4){background:#cdb6e3}.catalogue-card-body{transform-origin:50% 100%;will-change:transform,opacity}.catalogue-section-head{margin-bottom:55px}.catalogue #catalogue-sections{position:relative;isolation:isolate;padding-bottom:10svh}.catalogue .contact{z-index:30}
@media(max-width:700px){.portal-v2 header{inset:10px 3vw auto;padding:13px 15px;gap:15px}.portal-v2 header .brand{font-size:13px}.portal-v2 header nav{gap:15px;font-size:10px}.portal-v2 .welcome p{font-size:30px}.gather-scene{height:330svh}.into-button{width:58vw}.into-label{width:80vw;font-size:64px}.into-label>span:last-child{font-size:28px;margin-top:20px}.gather-note{top:13%}.gather-note h2{font-size:38px}.about-stage{grid-template-columns:1fr;gap:35px;padding:85px 6vw 100px}.about-portrait{top:95px;height:62svh;width:100%;border-radius:18px}.portal-v2 .about p.word-play{font-size:14px;line-height:1.9}.portal-v2 .contact{border-radius:26px 26px 0 0;padding-top:100px;margin-top:-26px}.catalogue .category-tabs{top:72px;margin:10px 3vw;padding:7px 4px}.catalogue .category-tabs a{font-size:11px;padding:9px}.catalogue-section{padding-top:90px;border-radius:26px 26px 0 0;scroll-margin-top:135px}.catalogue-section-head{margin-bottom:35px}}
@media(prefers-reduced-motion:reduce){.letter-float{animation:none!important}.portal-v2 .portal-peek{opacity:1!important}.portal-v2 .welcome{opacity:1!important;transform:none!important}.gather-scene{height:100svh}.gather-stage{height:100svh;overflow:hidden}.gather-images{display:none}.into-button{width:min(65vw,350px);transform:translate(-50%,-50%) scale(1)!important;pointer-events:auto!important}.into-label{transform:none!important;opacity:1!important}.gather-note{top:6%}.gather-note h2{font-size:30px}.gather-bottom{opacity:1!important;bottom:6%}.portal-v2 #about.about{height:auto!important}.about-stage{position:relative;top:auto!important}.about-copy,.about-portrait{transform:none!important;opacity:1!important;clip-path:none!important}.catalogue-section{position:relative;top:auto!important}.catalogue-card-body{transform:none!important;opacity:1!important}.play-word{will-change:auto}.portal-v2 .rail-frame img{transform:none!important}}
html:has(body.portal-v2){overflow-x:clip}.portal-v2{overflow-x:clip}.portal-v2 .gather-stage{overflow:clip}
.about-copy{transform-origin:50% 50%}
/* Revision 6 — a shared visual rhythm across index, collection and profile. */
.portal-v2 header{inset:0 0 auto;width:100%;padding:22px 4vw;border:0;border-radius:0;box-shadow:none;background:#21102f99;backdrop-filter:blur(24px) saturate(135%);-webkit-backdrop-filter:blur(24px) saturate(135%)}
.catalogue .category-tabs{width:max-content;max-width:calc(100vw - 24px);margin:12px auto;padding:5px 7px;gap:0;top:76px;justify-content:center}.catalogue .category-tabs a{padding:10px 15px;font-size:12px;white-space:nowrap}.category-tabs a span{display:none}.back-to-top{position:fixed;right:24px;bottom:24px;z-index:75;display:flex;align-items:center;gap:20px;border:1px solid #e0c5f033;border-radius:40px;padding:13px 17px;background:#261236db;color:#ead5fb;box-shadow:0 8px 25px #140a241c;backdrop-filter:blur(20px);font-size:11px}.back-to-top>span:last-child{font-size:18px}.back-to-top:hover{background:#53306b}.catalogue .contact{padding-bottom:160px}
.archive-scene{height:300svh;position:relative;background:#21102f}.catalogue .archive-stage{position:sticky;top:0;height:100svh;min-height:0;border-radius:0;padding:0;background:#21102f;isolation:isolate;color:#d4b9f4;overflow:hidden;--archive-fill:0}.archive-stage:before{display:none}.archive-stage:after{content:'';position:absolute;inset:0;background:#d4b9f4;opacity:var(--archive-fill);z-index:4;pointer-events:none}.archive-stage .back-link{position:absolute;left:5vw;top:110px;font-size:10px;z-index:8;margin:0}.archive-title-wrap{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;transform-origin:center}.archive-title-wrap>.eyebrow{font-size:9px;letter-spacing:.18em;margin-bottom:30px}.catalogue .archive-title{position:relative;display:flex;align-items:center;justify-content:center;gap:0;margin:0;font-size:clamp(85px,18vw,280px);font-weight:650;letter-spacing:-.08em;line-height:1}.archive-title>span{display:inline-block;will-change:transform}.archive-title>.archive-gap{margin-left:.12em}.archive-title-wrap p{font-size:11px;letter-spacing:.05em;margin-top:40px;opacity:.7}.archive-floats{position:absolute;inset:0;z-index:2;overflow:hidden;pointer-events:none}.archive-floats img{position:absolute;width:23vw;height:27vw;max-height:45svh;object-fit:cover;border-radius:24px;opacity:.5;filter:blur(6px);will-change:transform,filter,opacity}.archive-floats img:nth-child(1){left:-5%;top:24%}.archive-floats img:nth-child(2){right:-4%;top:8%}.archive-floats img:nth-child(3){left:20%;bottom:-12%;height:23vw}.archive-floats img:nth-child(4){right:17%;bottom:-13%;height:24vw}.archive-reveal{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12vh 5vw;color:#271332;text-align:center;opacity:0;pointer-events:none}.archive-reveal h2{font-size:clamp(48px,8vw,130px);font-weight:500;letter-spacing:-.065em;line-height:.98;margin:28px 0}.archive-reveal p{font-size:13px;opacity:.65}.archive-stage .catalogue-down{z-index:7;bottom:35px;border-color:#d4b9f455;background:#271332;color:#d4b9f4;width:48px;height:48px;font-size:23px}.archive-reveal .eyebrow{font-size:9px}.catalogue .catalogue-section{scroll-margin-top:145px}
/* About continues the dark space of INTO IT; the lilac footer is the final colour turn. */
.portal-v2 #about.about{background:#2b123e;color:#e3cbf8}.about-stage{grid-template-columns:1.15fr .85fr;gap:50px 7vw;padding:120px 6vw 110px}.about-heading{grid-column:1/-1;position:relative;padding-bottom:40px;border-bottom:1px solid #e3cbf825;will-change:transform,opacity}.portal-v2 #about .about-heading h2{font-size:clamp(48px,6.8vw,110px);letter-spacing:-.065em;line-height:1.04;font-weight:500;margin:25px 0}.about-heading .eyebrow{font-size:9px;letter-spacing:.15em;opacity:.55}.about-heading-note{font-size:10px;opacity:.55}.portal-v2 #about .about-copy p{font-size:16px;line-height:1.85;letter-spacing:-.015em;margin:0 0 25px}.portal-v2 #about .about-copy p:first-child{font-size:clamp(23px,2.5vw,38px);line-height:1.4;letter-spacing:-.04em;margin-bottom:35px;color:#f1e3fc}.portal-v2 #about .about-copy p.eyebrow{font-size:10px;letter-spacing:.07em;opacity:.65;margin-top:40px;line-height:2}.about-portrait{height:min(70svh,750px);top:105px;border-radius:70px 24px 70px 24px;border:1px solid #e3cbf81a;box-shadow:0 28px 85px #0e071c4a}.about-portrait figcaption{position:absolute;bottom:20px;left:18px;right:18px;padding:11px 16px;color:#f0e3ff;background:#25123480;backdrop-filter:blur(16px);border-radius:30px;font-size:10px;text-align:center;letter-spacing:.07em}.portal-v2 .contact{background:#d4b9f4;color:#271332;box-shadow:0 -25px 65px #160b2320}.contact-actions{display:flex;gap:32px;flex-wrap:wrap;align-items:center}.contact-actions a{font-size:14px}.contact-actions .call-link{opacity:.8}.contact-actions a:hover{opacity:1}
@media(max-width:700px){.portal-v2 header{inset:0 0 auto;padding:18px 6vw}.catalogue .category-tabs{top:63px;margin:10px auto;padding:4px 5px;max-width:calc(100vw - 20px)}.catalogue .category-tabs a{padding:9px 11px;font-size:11px}.back-to-top{right:14px;bottom:14px;padding:11px 14px;gap:12px;font-size:10px}.archive-scene{height:260svh}.archive-stage .back-link{top:95px;left:6vw;font-size:9px}.catalogue .archive-title{font-size:19vw}.archive-title-wrap>.eyebrow{font-size:8px;margin-bottom:25px}.archive-title-wrap p{font-size:9px;margin-top:25px}.archive-floats img{width:41vw;height:55vw;border-radius:18px;max-height:none}.archive-floats img:nth-child(1){left:-14%;top:27%}.archive-floats img:nth-child(2){right:-12%;top:20%}.archive-floats img:nth-child(3){left:9%;bottom:10%;height:39vw}.archive-floats img:nth-child(4){right:3%;bottom:7%;height:44vw}.archive-reveal h2{font-size:57px}.archive-reveal p{font-size:11px}.archive-reveal .eyebrow{font-size:8px}.about-stage{grid-template-columns:1fr;gap:35px;padding:95px 6vw 100px}.about-heading{padding-bottom:25px}.portal-v2 #about .about-heading h2{font-size:47px;line-height:1.06}.portal-v2 #about .about-copy p{font-size:14px;line-height:1.85}.portal-v2 #about .about-copy p:first-child{font-size:27px;line-height:1.4;margin-bottom:30px}.portal-v2 #about .about-copy p.eyebrow{font-size:9px}.about-portrait{height:60svh;top:90px;border-radius:50px 20px 50px 20px}.about-portrait figcaption{font-size:9px}.contact-actions{gap:23px}.contact-actions a{font-size:13px}}
@media(prefers-reduced-motion:reduce){.archive-scene{height:100svh}.catalogue .archive-stage{position:relative;height:100svh}.archive-title-wrap{opacity:1!important;transform:none!important}.archive-stage:after,.archive-reveal{display:none}.archive-floats img{filter:none!important;opacity:.25!important;transform:none!important}.about-heading{opacity:1!important;transform:none!important}}
.archive-stage .catalogue-down{left:5vw;right:auto}@media(max-width:700px){.archive-stage .catalogue-down{left:6vw}}
.portal-v2 .contact{min-height:100svh}
/* Revision 8: continuous motion, neutral glass and horizontal contact. */
.portal-v2 header{padding:10px 4vw;background:rgb(255 255 255 / .035);backdrop-filter:blur(24px) saturate(120%);-webkit-backdrop-filter:blur(24px) saturate(120%);color:var(--menu-ink,#f1e6fc)}.portal-v2 header nav{color:var(--menu-ink,#f1e6fc)}.portal-v2 header .brand{color:var(--brand-ink,#f1e6fc);display:grid;place-items:center;width:40px;height:44px;flex-shrink:0}.portal-v2 header .brand svg{width:24px;height:44px;fill:currentColor;overflow:visible}.letter-float{animation:none!important;will-change:transform}.into-wordmark{display:block;width:100%;height:100%;fill:currentColor;overflow:visible}.catalogue .archive-title{width:92vw;height:54svh;max-height:600px;margin:0;display:block}.archive-title-wrap>.eyebrow{margin-bottom:10px}.archive-title-wrap p{margin-top:15px}.into-label>span:first-child{display:block;width:330px;height:140px}.archive-letter-float{will-change:transform}
.orbit-drag-surface{position:fixed;inset:0;z-index:0;pointer-events:none;touch-action:pan-y;cursor:grab;user-select:none}.orbit-drag-surface.is-dragging{cursor:grabbing}.gather-images,.gather-tile{pointer-events:none}.gather-note,.gather-bottom{pointer-events:none}.portal-v2 .gather-stage{user-select:none}
.photo-languages{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;letter-spacing:0!important;text-transform:none!important}.photo-languages span{display:flex;flex-direction:column;gap:4px;font-size:10px}.photo-languages b{font-size:12px;font-weight:500}.bio-reveal{display:flow-root;position:relative}.bio-reveal>p{will-change:transform,opacity,filter}.portal-v2 #about .about-copy{transform:none!important;opacity:1!important}.portal-v2 #about .about-copy p{font-size:16px;line-height:1.85}.portal-v2 #about .about-copy .bio-reveal:first-child p{font-size:clamp(23px,2.5vw,38px);line-height:1.4;letter-spacing:-.04em;color:#f1e3fc;margin-bottom:35px}.about-heading{opacity:1!important;transform:none!important}
.contact-scene{height:240svh;position:relative;z-index:30;margin-top:-220svh;overflow:clip;pointer-events:none}.portal-v2 .contact-scene .contact{position:sticky;top:0;height:100svh;min-height:100svh;width:100%;margin:0;border-radius:0;box-shadow:none;transform:translateX(100%);will-change:transform;padding:100px 6vw 75px;display:flex;flex-direction:column;justify-content:center;pointer-events:none;overflow:hidden}.contact-scene .contact>.eyebrow{margin-bottom:35px;font-size:10px;letter-spacing:.12em}.contact-layout{display:grid;grid-template-columns:1.25fr .8fr;gap:7vw;align-items:center}.portal-v2 .contact-layout h2{font-size:clamp(65px,8.2vw,140px);line-height:.96;letter-spacing:-.075em;margin:0;max-width:9ch;font-weight:500}.contact-layout .contact-actions{display:flex;flex-direction:column;gap:20px}.contact-layout .contact-actions a{display:flex;align-items:center;justify-content:center;gap:22px;height:125px;padding:20px 25px;width:100%;border:1.25px solid currentColor;border-radius:50%;background:none;font-size:clamp(18px,1.8vw,26px);letter-spacing:-.03em;opacity:1;transition:transform .25s,background .25s}.contact-layout .contact-actions a:hover{transform:translateX(5px);background:rgb(255 255 255 / .09)}.contact-actions svg{width:32px;height:32px;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.contact-scene .contact>small{position:absolute;left:6vw;bottom:30px;margin:0;font-size:10px;opacity:.6}.catalogue #catalogue-sections{padding-bottom:200svh}.catalogue .contact-scene{margin-top:-200svh}.catalogue-section-head{justify-content:flex-start}.catalogue-picture img{transition:none;will-change:transform}.catalogue-card:hover img{transform:none}.catalogue-picture.brand-logo-thumb{background:#e9e1f1}.catalogue-picture.brand-logo-thumb img{object-fit:contain;padding:17%;mix-blend-mode:multiply}.catalogue-section:nth-child(2) .catalogue-picture.brand-logo-thumb{background:#e9e1f1}
@media(max-width:700px){.portal-v2 header{padding:8px 6vw}.portal-v2 header .brand{height:40px;width:32px}.portal-v2 header .brand svg{height:40px;width:21px}.catalogue .archive-title{height:43svh;width:96vw}.into-label>span:first-child{width:78vw;height:130px}.portal-v2 #about .about-copy p{font-size:14px;line-height:1.85}.portal-v2 #about .about-copy .bio-reveal:first-child p{font-size:27px;line-height:1.4;margin-bottom:30px}.photo-languages{gap:3px;left:12px!important;right:12px!important;padding:12px 5px!important}.photo-languages span{font-size:9px}.photo-languages b{font-size:11px}.portal-v2 .contact-scene .contact{padding:90px 6vw 70px}.contact-scene .contact>.eyebrow{font-size:8px;max-width:30ch;line-height:1.7;margin-bottom:30px}.contact-layout{grid-template-columns:1fr;gap:35px}.portal-v2 .contact-layout h2{font-size:16vw;max-width:9ch;line-height:.96}.contact-layout .contact-actions{flex-direction:row;gap:12px}.contact-layout .contact-actions a{height:96px;padding:12px 8px;gap:8px;font-size:16px}.contact-actions svg{width:23px;height:23px}.contact-scene .contact>small{bottom:25px;font-size:9px}.catalogue-picture.brand-logo-thumb img{padding:15%}}
@media(prefers-reduced-motion:reduce){.portal-v2 #about.about{height:auto!important}.bio-reveal>p{opacity:1!important;transform:none!important;filter:none!important}.contact-scene,.catalogue .contact-scene{height:auto;margin-top:0}.portal-v2 .contact-scene .contact{position:relative;transform:none!important;pointer-events:auto!important}.catalogue #catalogue-sections{padding-bottom:0}.orbit-drag-surface{display:none}.catalogue-picture img{transform:none!important}.letter-float,.archive-letter-float{transform:none!important}}
.portal-v2 #about .about-copy .bio-reveal>p{font-size:16px;line-height:1.85;letter-spacing:-.015em;margin:0 0 25px;color:inherit}.portal-v2 #about .about-copy .bio-reveal:first-child>p{font-size:clamp(23px,2.5vw,38px);line-height:1.4;letter-spacing:-.04em;margin-bottom:35px;color:#f1e3fc}@media(max-width:700px){.portal-v2 #about .about-copy .bio-reveal>p{font-size:14px}.portal-v2 #about .about-copy .bio-reveal:first-child>p{font-size:27px;line-height:1.4;margin-bottom:30px}}@media(prefers-reduced-motion:no-preference){.portal:not(.catalogue) .contact-scene{margin-top:calc(-1 * var(--about-overlap,220svh))}}
.portal-v2 header{background:transparent}.photo-languages span{font-size:11px}.photo-languages b{font-size:12px}@media(max-width:700px){.photo-languages span{font-size:10px}.photo-languages b{font-size:12px}.contact-layout .contact-actions{flex-wrap:nowrap}.contact-layout .contact-actions a{width:auto;flex:1;min-width:0;white-space:nowrap}}

/* Revision 11: independent orbital drag, clearer categories and immediate contact handoff. */
.welcome .welcome-sentence{display:block;margin:.24em 0;text-wrap:balance}.welcome p{max-width:30ch}.welcome .play-word{white-space:nowrap}.contact-layout .contact-actions a{border-radius:24px}.archive-reveal{pointer-events:auto}.archive-reveal .word-play{cursor:default}.catalogue #print{background:#2b123e;color:#ead6fa}.catalogue #digital{background:#cdb6e3;color:#271332}.catalogue #motion{background:#eae4ee;color:#271332}.catalogue #print .card-arrow{border-color:#ead6fa66}.catalogue-picture.brand-logo-thumb{background:#fff}.catalogue-picture.brand-logo-thumb img{mix-blend-mode:normal;padding:17%;filter:none}.catalogue #catalogue-sections{padding-bottom:100svh}.catalogue .contact-scene{margin-top:-200svh;height:200svh}.catalogue .contact{background:#f3f0e9}.catalogue #motion{padding-bottom:70px}.orbit-drag-surface{z-index:3}.gather-note{z-index:4}.gather-images{z-index:2}.portal-v2 .gather-stage .into-button{pointer-events:none!important}.portal-v2 .gather-stage .into-button .into-label{pointer-events:auto}.archive-reveal h2{overflow:visible}
@media(max-width:700px){.welcome p{font-size:clamp(23px,6.5vw,30px);max-width:29ch}.welcome .welcome-sentence{margin:.4em 0}.contact-layout .contact-actions a{border-radius:18px}}
@media(prefers-reduced-motion:reduce){.catalogue #catalogue-sections{padding-bottom:0}.catalogue .contact-scene{margin-top:0;height:auto}}

/* Revision 14: one continuous layout, from the collecting circle to the full archive. */
.play-token{white-space:nowrap;display:inline-block}.play-letter{display:inline-block;position:relative;transform-origin:center;will-change:transform}.archive-reveal h2{letter-spacing:-.065em}.full-collection{position:relative;z-index:6;margin-top:-100svh;background:transparent}.unified .archive-scene{background:transparent}.unified .archive-stage{background:#2b123e;color:#dec3f8;will-change:opacity,transform}.unified .archive-title-wrap>.eyebrow,.unified .archive-title-wrap>p{display:none}.unified .archive-title-wrap{justify-content:center}.unified .archive-title{height:54svh;width:92vw;max-height:none}.unified .archive-floats img{opacity:0}.unified .gather-stage .into-button,.unified .gather-stage .into-button .into-label{pointer-events:none!important}.unified .into-label>span:last-child{position:absolute;top:100%;margin-top:15px}.unified .into-label{height:200px}.full-collection #catalogue-sections{padding-bottom:0}.unified .full-collection .category-tabs{transition:opacity .25s}.unified .back-to-top{opacity:0;pointer-events:none;transition:opacity .25s}.unified .archive-stage .catalogue-down{opacity:0;pointer-events:none}.full-collection .catalogue-section{background:#f3f0e9}.full-collection #print{background:#2b123e}.full-collection #digital{background:#cdb6e3}.full-collection #motion{background:#eae4ee}.full-collection #branding .brand-logo-thumb{background:#fff}.unified .gather-scene{overflow:clip}.unified .gather-stage{overflow:visible}.unified .gather-images{position:fixed}.unified #about{margin-top:0}
@media(max-width:700px){.unified .archive-title{height:54svh;width:92vw}.unified .into-label>span:first-child{height:140px}.full-collection .archive-reveal h2{font-size:13.8vw}}
@media(prefers-reduced-motion:reduce){.full-collection{margin-top:0}.unified .archive-stage{opacity:1!important;transform:none!important}.unified .gather-scene{display:none}.play-letter{transform:none!important}.unified .archive-stage .catalogue-down{opacity:1;pointer-events:auto}}
.flow-cursor{position:fixed;inset:0;width:100%;height:100%;z-index:120;pointer-events:none;opacity:0;mix-blend-mode:difference;transition:opacity .15s}.cursor-hint{position:fixed;top:0;left:0;z-index:121;pointer-events:none;color:#fff;mix-blend-mode:difference;font-size:10px;line-height:1.2;white-space:nowrap;opacity:0;letter-spacing:.02em;transition:opacity .15s;will-change:transform}@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){html.cursor-active,html.cursor-active *{cursor:none!important}html.cursor-active dialog,html.cursor-active dialog *{cursor:auto!important}}@media(hover:none),(pointer:coarse),(prefers-reduced-motion:reduce){.flow-cursor,.cursor-hint{display:none}}

.unified .gather-stage .into-label{visibility:hidden}.into-bridge{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:8;color:#dec3f8;pointer-events:none;opacity:0;will-change:width,height,opacity}.into-bridge>svg{width:100%;height:100%}@media(prefers-reduced-motion:reduce){.into-bridge{display:none}}
.archive-reveal .play-token+.play-token{margin-left:.22em}

/* Revision 17: quiet cursor, gentler hover and more legible editorial copy. */
.catalogue-info small{font-size:14px;line-height:1.5;margin-top:7px}.portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{font-size:clamp(20px,1.8vw,27px);line-height:1.65}.portal-v2 #about .attention-line{display:block;font-size:clamp(26px,2.7vw,40px);line-height:1.35;font-weight:500;letter-spacing:-.035em;color:#fff4ff;margin:24px 0 10px}.attention-line .play-word{color:inherit}.contact-layout .contact-actions a{transition:background .3s,transform .3s}.contact-layout .contact-actions a:hover{background:#f6edff;transform:translateX(3px)}.cursor-glass{position:fixed;left:0;top:0;width:74px;height:74px;z-index:119;pointer-events:none;border-radius:50%;opacity:0;background:rgb(255 255 255 / .008);backdrop-filter:blur(.65px) saturate(104%) brightness(1.025);-webkit-backdrop-filter:blur(.65px) saturate(104%) brightness(1.025);mask-image:radial-gradient(circle,#0003,transparent 70%);transition:opacity .15s;will-change:transform}.gather-tile.is-grabbed{z-index:2}
@media(max-width:700px){.catalogue-info small{font-size:13px}.portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{font-size:19px;line-height:1.7}.portal-v2 #about .attention-line{font-size:25px;line-height:1.4;margin-top:22px}}
@media(hover:none),(pointer:coarse),(prefers-reduced-motion:reduce){.cursor-glass{display:none}}
/* Performance revision: localized pointer layers and no permanent word layers. */
.play-word,.play-letter{will-change:auto}.light-cursor{position:fixed;left:0;top:0;width:1px;height:1px;z-index:120;pointer-events:none;opacity:0;will-change:transform}.light-cursor i{position:absolute;display:block;pointer-events:none}.cursor-dot{left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#fffC 50%,#fff5 65%,transparent 75%);mix-blend-mode:difference}.cursor-ring{left:-25px;top:-25px;width:50px;height:50px;border-radius:50%;border:1px solid #fff9;opacity:0;mix-blend-mode:difference}.light-cursor.has-label .cursor-ring{opacity:.8}.light-cursor.is-down .cursor-ring{scale:.8}.light-cursor .cursor-hint{position:absolute;left:30px;top:-22px;transform:none;opacity:1;will-change:auto}.light-wave{position:fixed;left:0;top:0;width:64px;height:64px;z-index:119;pointer-events:none;opacity:0;background:radial-gradient(ellipse,transparent 35%,#fff4 52%,transparent 72%);border-radius:50%;mix-blend-mode:difference;will-change:transform}.portal-v2 header{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
@media(hover:none),(pointer:coarse),(prefers-reduced-motion:reduce){.light-cursor,.light-wave{display:none}}

/* Revision 22: readable cursor labels, reliable previews and restrained hover. */
.light-cursor{mix-blend-mode:difference;isolation:auto}.light-cursor .cursor-dot,.light-cursor .cursor-ring,.light-cursor .cursor-hint{mix-blend-mode:normal}.light-cursor .cursor-hint{color:#fff}.catalogue-picture img{opacity:1;visibility:visible}.catalogue-info small{font-size:13px}.portal-v2 #about .attention-line{margin:0;padding:0}.catalogue-card-body{opacity:1!important}
@media(max-width:700px){.catalogue-info small{font-size:12px}.portal-v2 #about .attention-line{margin:0}}

/* Revision 23: locations, curated order and original dark identity treatments. */
.portal-v2 .work-heading p{max-width:none;white-space:normal;line-height:1.7}.project-location{display:inline-block;opacity:.8;margin-left:12px}.portal-v2 .catalogue-picture.noisy-surface{background:#151515!important;isolation:isolate}.noisy-surface:before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.0207;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");z-index:1}.noisy-surface img{mix-blend-mode:normal!important}.portal-v2 .catalogue-picture.unpublished-surface{background:#111!important}.catalogue-picture.unpublished-surface img{filter:invert(1) grayscale(1) contrast(1.3);mix-blend-mode:screen}.portal-v2 .case-head p{max-width:none;width:100%;margin-right:0}.motion-cta{display:inline-flex;align-items:center;gap:18px;border:1px solid currentColor;border-radius:30px;padding:13px 20px;font-size:12px;white-space:nowrap}.motion-cta span{font-size:20px}.catalogue-section-head{justify-content:space-between;align-items:center}.motion-cta:hover{background:#fff5}.back-to-top{z-index:75}.portal-v2 .case-subsection p{max-width:none}
@media(max-width:700px){.project-location{margin-left:7px;font-size:10px}.catalogue-section-head:has(.motion-cta){display:flex;align-items:center;gap:12px}.motion-cta{font-size:10px;padding:10px 12px;gap:8px}.motion-cta span{font-size:17px}}

/* Revision 24: balanced copy and corrected artwork. */
.portal-v2 .work-heading p span{white-space:nowrap}
.portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{font-size:clamp(19px,2.02vw,26px);text-wrap:pretty}
.portal-v2 #about .about-copy p{text-wrap:pretty}
.portal-v2 .catalogue-picture.noisy-surface img{mix-blend-mode:screen!important}
.portal-v2 .catalogue-picture.cacica-thumb img{object-position:50% 72%}
@media(max-width:700px){.portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{font-size:18px}.portal-v2 .work-heading{flex-wrap:wrap}.portal-v2 .work-heading p{font-size:10px}}
.portal-v2 #about .attention-line{text-wrap:balance}
/* Revision 25: editorial pairings and compact biography. */
.portal-v2 .case-pair{display:grid;gap:24px;align-items:start;margin-bottom:28px}
.portal-v2 .case-pair img{width:100%;height:auto;margin:0}
.portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{font-size:clamp(18px,1.94vw,25px)}
.portal-v2 #about .attention-line{font-size:clamp(10px,1.5vw,22px);white-space:nowrap;letter-spacing:-.04em;line-height:1.6}
.portal-v2 .noisy-surface:before{opacity:.07}
@media(max-width:700px){.portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{font-size:17px}.portal-v2 #about .attention-line{font-size:clamp(10px,3.05vw,17px)}.portal-v2 .case-pair{gap:12px;margin-bottom:16px}}
/* Revision 26: selected image framing and stronger About emphasis. */
.portal-v2 .rail-frame.thrive-plan-rotated img{rotate:180deg}
.portal-v2 .rail-frame.ita-covid-focus img{object-position:50% 28%}
.portal-v2 #about .attention-line{font-size:clamp(12px,1.8vw,26px);letter-spacing:-.045em}
@media(max-width:700px){.portal-v2 #about .attention-line{font-size:clamp(11px,3.55vw,19px)}}
/* Revision 28: approved geometric identity, deep violet palette and distant orbiting stars. */
.portal-v2{--plum:#100819;--ink:#1a1027;--lilac:#b090d5;--paper:#f0edf3;background:var(--paper);color:var(--ink)}
.portal-v2 .portal-stage,.portal-v2 .archive-scene,.portal-v2 .archive-stage{background:#100819!important;color:#b090d5}
.portal-v2 .portal-stage:before{background:none}
.portal-v2 .portal-stage:after,.portal-v2 .archive-stage:before{content:'';display:block;position:absolute;inset:-8%;pointer-events:none;z-index:0;opacity:.55;background-color:transparent;background-image:radial-gradient(circle at 12% 20%,#d8c3f5aa 0 .5px,transparent 1.5px),radial-gradient(circle at 70% 60%,#b49cd080 0 .6px,transparent 1.7px),radial-gradient(circle at 31% 85%,#e9d6ff70 0 .4px,transparent 1.2px),radial-gradient(circle at 82% 23%,#c7b0e340 0 1px,transparent 3px);background-size:211px 241px,317px 337px,127px 173px,577px 463px;animation:distant-star-orbit 55s ease-in-out infinite alternate;animation-play-state:paused;transform-origin:50% 50%}
.portal-v2 .portal-stage.stars-visible:after,.portal-v2 .archive-stage.stars-visible:before{animation-play-state:running}
@keyframes distant-star-orbit{from{transform:translate3d(-7px,4px,0) rotate(-1deg)}to{transform:translate3d(9px,-6px,0) rotate(1.4deg)}}
.portal-v2 #portal-lettering .geometric-wordmark{width:94vw;height:62svh;overflow:visible}
.portal-v2 .geometric-wordmark{display:block;width:100%;height:100%;overflow:visible;fill:#b090d5}
.portal-v2 header .brand .geometric-wordmark{width:30px;height:42px}
.portal-v2 .portal-peek{background:#b090d5;color:#100819}
.portal-v2 .welcome,.portal-v2 .welcome p{color:#100819}
.portal-v2 .welcome .eyebrow,.portal-v2 .welcome-down{color:#28163c}
.portal-v2 .archive-stage:after{background:#b090d5}
.portal-v2 .archive-reveal{color:#100819}
.portal-v2 .into-button{background:#100819;color:#b090d5}
.portal-v2 .work-section,.portal-v2 #branding{background:#f0edf3;color:#1a1027}
.portal-v2 #print{background:#1b0d29;color:#e0d0f2}
.portal-v2 #digital{background:#9c80ba;color:#140b20}
.portal-v2 #motion{background:#d7c8e6;color:#1a1027}
.portal-v2 #about{background:#160b22;color:#d8c6ec}
.portal-v2 #about .about-copy .bio-reveal:first-child p{color:#e4d7f2}
.portal-v2 #about .attention-line{color:#f3eaff}
.portal-v2 .contact-scene .contact{background:#e9e1f1;color:#1a1027}
.portal-v2 .category-tabs{background:#f0edf3d9;color:#1a1027}
.portal-v2 .category-tabs a.is-active,.portal-v2 .category-tabs a[aria-current=true]{background:#29143c;color:#eee1fa}
.portal-v2 .contact-actions a:hover{background:#fcf8ff}
@media(prefers-reduced-motion:reduce){.portal-v2 .portal-stage:after,.portal-v2 .archive-stage:before{animation:none}}

.portal-v2 #about.about{background:#160b22!important}
.portal-v2 .into-button{border:0;box-shadow:none}
/* Revision 29: deeper violet, joined syllables and stacked mobile lettering. */
.portal-v2{--plum:#0c0614;--lilac:#9774bd}
.portal-v2 .portal-stage,.portal-v2 .archive-scene,.portal-v2 .archive-stage{background:#0c0614!important;color:#9774bd}
.portal-v2 .geometric-wordmark{fill:#9774bd;overflow:visible}
.portal-v2 header .brand .single-mark{width:30px;height:40px}
.portal-v2 .portal-peek,.portal-v2 .archive-stage:after{background:#9774bd}
.portal-v2 .into-button{background:#0c0614;color:#9774bd}
.portal-v2 .archive-title .geometric-wordmark{width:100%;height:100%}
@media(max-width:700px){.portal-v2 #portal-lettering .geometric-wordmark{width:90vw;height:72svh}.portal-v2 .catalogue .archive-title{height:72svh;width:90vw;max-height:none}.portal-v2 .hero-caption{top:10%;font-size:10px}.portal-v2 .portal-note{font-size:9px}.portal-v2 .archive-title-wrap{justify-content:center}}
.portal-v2 .geometric-wordmark .syllable-layout{overflow:hidden!important}
/* Revision 30: individual desktop collapse and camera travel through O. */
.portal-v2 .archive-stage:after{display:none!important}
.o-counter-portal{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none;overflow:hidden}
.o-counter-portal polygon{fill:#0c0614}
.portal-v2 .archive-reveal{color:#9774bd;z-index:5}
.portal-v2 .archive-reveal .eyebrow,.portal-v2 .archive-reveal p{color:#e4d6f3}
.portal-v2 .into-bridge{background:transparent!important;border:0!important;box-shadow:none!important;overflow:visible}
.portal-v2 .into-bridge>svg{background:transparent!important}
.portal-v2 .portal-stage:after,.portal-v2 .archive-stage:before{animation-duration:36s;animation-name:distant-star-orbit-visible}
@keyframes distant-star-orbit-visible{from{transform:translate3d(-12px,7px,0) rotate(-1.8deg)}to{transform:translate3d(14px,-9px,0) rotate(2deg)}}
.portal-v2 .home-letter>svg{overflow:hidden!important}
@media(prefers-reduced-motion:reduce){.o-counter-portal{display:none}.portal-v2 .portal-stage:after,.portal-v2 .archive-stage:before{animation:none}}
.portal-v2 .into-bridge{z-index:20}
/* Revision 31: smooth vector contours, free glyph movement and deforming O aperture. */
.portal-v2 .geometric-wordmark .syllable-layout{overflow:visible!important}
.portal-v2 .o-counter-portal path{fill:#0c0614}
.portal-v2 .merge-mass{fill:var(--lilac);pointer-events:none}
.portal-v2 .portal-stage:after,.portal-v2 .archive-stage:before{animation-name:stellar-orbit;animation-duration:20s;opacity:.65}
@keyframes stellar-orbit{0%{transform:translate3d(-28px,18px,0) rotate(-4deg)}50%{transform:translate3d(18px,-24px,0) rotate(1deg)}100%{transform:translate3d(32px,12px,0) rotate(5deg)}}
@media(prefers-reduced-motion:reduce){.portal-v2 .portal-stage:after,.portal-v2 .archive-stage:before{animation:none}}
.portal-v2 .merge-mass{display:none}
.portal-v2 .merging-glyph{stroke:var(--lilac);stroke-width:1;stroke-linejoin:round;stroke-linecap:round;paint-order:stroke fill}
/* Keep the lettering vector-rendered during zoom instead of caching enlarged bitmap layers. */
.portal-v2 .wordmark-wrap,.portal-v2 .archive-title-wrap,.portal-v2 .letter-float,.portal-v2 .archive-letter-float,.portal-v2 .home-letter{will-change:auto}
.portal-v2 .into-bridge{will-change:opacity}

/* Focus group revision: shorter journeys, readable navigation and true circular collection. */
.portal-v2 header{background:var(--menu-glass,rgb(12 6 20 / .55));color:var(--menu-ink);transition:color .15s,background .15s}
.portal-v2 header .brand .geometric-wordmark g{fill:currentColor}
.portal-v2 .portal-v2-scene{height:260svh}
.unified .gather-scene{overflow:visible}
.portal-v2 .gather-stage{overflow:visible}
.portal-v2 .gather-stage .into-button{width:min(40vw,440px);height:min(40vw,440px);aspect-ratio:1;border-radius:50%;flex-shrink:0}
.portal-v2 .contact-scene{height:150svh;margin-top:calc(-1 * var(--about-overlap,70svh))}
#close-case{width:44px;height:44px;padding:0;display:grid;place-items:center;border-radius:50%;font-size:28px;line-height:1}
@media(max-width:700px){
 .portal-v2 .portal-v2-scene{height:235svh}
 .portal-v2 .gather-stage .into-button{width:58vw;height:58vw}
 .portal-v2 dialog.video-modal{position:fixed;inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:16px;border-radius:0;background:#0c0614;color:#f1e6fc}
 .video-modal .modal-top{position:absolute;inset:12px 16px auto;background:transparent;justify-content:flex-end;padding:0;z-index:5}
 .video-modal .modal-top>span,.video-modal .case-head{display:none}
 .video-modal #close-case{border-color:#f1e6fc99;background:#0c0614cc;color:#fff}
 .video-modal #case-content,.video-modal .case-images{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;gap:20px}
 .portal-v2 .video-modal .case-video{width:100%;height:auto;max-height:calc(100dvh - 150px);aspect-ratio:16/9;border-radius:0;flex-shrink:0}
 .video-modal .video-source{align-self:center;color:#f1e6fc}
}
@media(prefers-reduced-motion:reduce){.portal-v2 .portal-v2-scene{height:auto}.portal-v2 .contact-scene{height:auto;margin-top:0}}

/* Performance and responsive QA: reserve geometry and avoid unnecessary permanent layers. */
.portal-v2 .geometric-wordmark{contain:style}
.portal-v2 .gather-tile{will-change:transform,opacity}
.portal-v2 .catalogue-picture img{will-change:auto}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{position:fixed;left:16px;top:-100px;z-index:200;background:#f1e6fc;color:#21102f;padding:14px 20px;border-radius:12px}.skip-link:focus{top:12px}
@media(min-width:701px) and (max-width:1024px){
 .about-stage{grid-template-columns:1fr 1fr;gap:32px;padding-inline:5vw}
 .portal-v2 #about .about-heading h2{font-size:clamp(48px,6.5vw,68px)}
 .portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{font-size:19px}
 .portal-v2 #about .attention-line{white-space:normal;font-size:22px}
 .contact-layout{grid-template-columns:1fr 1fr;gap:28px}
 .portal-v2 .contact-layout h2{font-size:8vw}
 .contact-layout .contact-actions a{height:100px;font-size:21px;gap:14px}
 .catalogue-info strong{font-size:18px}
}
@media(pointer:coarse){.light-cursor,.light-wave{display:none!important}.rail-actions button{min-width:44px;min-height:44px}.portal-v2 .category-tabs a{min-height:44px;display:inline-flex;align-items:center}.portal-v2 header nav a{min-height:44px;display:inline-flex;align-items:center}.portal-v2 header{padding-block:2px}}
@media(max-width:370px){.portal-v2 .contact-layout h2{font-size:15vw}.contact-layout .contact-actions a{font-size:14px;gap:6px}.photo-languages span{font-size:9px}.portal-v2 header nav{gap:12px}}

/* Short landscape viewports: keep video controls and contact actions inside the screen. */
@media(max-height:500px) and (max-width:1100px){
 .portal-v2 dialog.video-modal{position:fixed;inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:12px 60px;border-radius:0;background:#0c0614;color:#f1e6fc}
 .video-modal .modal-top{position:absolute;inset:10px 12px auto;background:transparent;justify-content:flex-end;padding:0;z-index:5}
 .video-modal .modal-top>span,.video-modal .case-head{display:none}
 .video-modal #close-case{border-color:#f1e6fc99;background:#0c0614cc;color:#fff}
 .video-modal #case-content,.video-modal .case-images{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;gap:8px}
 .portal-v2 .video-modal .case-video{width:100%;height:calc(100dvh - 65px);aspect-ratio:auto;border-radius:0;flex-shrink:0}
 .video-modal .video-source{align-self:center;color:#f1e6fc;padding:0;font-size:11px}
 .portal-v2 .contact-scene .contact{padding:65px 5vw 30px}
 .contact-scene .contact>.eyebrow{margin-bottom:14px;font-size:9px}
 .contact-layout{grid-template-columns:1fr 1fr;gap:24px}
 .portal-v2 .contact-layout h2{font-size:8vw}
 .contact-layout .contact-actions{flex-direction:column;gap:10px}
 .contact-layout .contact-actions a{height:65px;flex:auto;width:100%;font-size:19px}
 .contact-scene .contact>small{bottom:12px}
}

/* Reserve the About overlap before scripts run, stabilizing direct contact links. */
.portal-v2 #about.about{padding-bottom:70svh}
@media(prefers-reduced-motion:reduce){.portal-v2 #about.about{padding-bottom:0}}
/* Approved bilingual copy, language switch and case study rhythm. */
.language-switch{display:inline-flex;align-items:center;gap:6px;border-left:1px solid currentColor;padding-left:12px;font-size:10px;white-space:nowrap}
.language-switch a{opacity:.55}.language-switch a[aria-current="true"]{opacity:1;text-decoration:underline;text-underline-offset:4px}
.welcome .welcome-questions{font-weight:300;opacity:.85}.welcome strong{font-weight:600}.welcome p{max-width:27ch;text-wrap:balance}
.gather-ready{font-size:clamp(38px,5vw,78px);line-height:1.08;letter-spacing:-.055em;max-width:13ch;margin:20px 0 0;font-weight:500}.gather-ready em{font-style:normal;color:#9774bd}.mobile-break{display:none}
.archive-scroll-hint{position:absolute;z-index:7;left:6vw;right:6vw;bottom:7%;font-size:12px!important;line-height:1.5;text-align:center;color:#e4d6f3;pointer-events:none;margin:0!important;opacity:1}
.portal-v2 .archive-reveal p{color:#f0e4fa;opacity:1}
.footer-bottom{position:absolute;left:6vw;right:6vw;bottom:25px;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:11px}.footer-bottom small{margin:0!important;font-size:11px}.footer-links{display:flex;gap:12px;align-items:center}.portal-v2 .footer-links a{font-size:11px;display:inline;padding:0;border:0;background:none}.footer-links a:hover{text-decoration:underline;text-underline-offset:4px}
.portal-v2 #about .about-copy .bio-reveal>p{max-width:68ch;line-height:1.5}.portal-v2 #about .about-copy .bio-reveal:first-child>p{line-height:1.5}
.case-head .case-hook{font-size:clamp(21px,2.5vw,32px);line-height:1.4;max-width:48ch;margin:0 0 40px;letter-spacing:-.035em}
.case-narrative{display:grid;grid-template-columns:1fr 1fr;gap:40px}.case-narrative h3{font-size:18px;line-height:1.3;margin:0 0 14px;letter-spacing:-.03em}.case-narrative p{font-size:15px;line-height:1.65;margin:0;max-width:68ch}.portal-v2 .case-narrative section{min-width:0}
#close-case{width:auto;min-width:44px;height:44px;display:flex;gap:12px;padding:8px 16px;border-radius:30px;font-size:13px}#close-case>span:last-child{font-size:24px}.video-modal #close-case{width:44px;padding:0;justify-content:center;border-radius:50%}.video-modal .close-word{display:none}
.entra-wordmark{display:block;width:100%;height:100%;overflow:visible}
html[lang="es"] .attention-line{white-space:normal}
@media(max-width:700px){.portal-v2 header nav{gap:12px}.language-switch{padding-left:8px;gap:5px;font-size:9px}.gather-ready{font-size:42px;max-width:12ch}.mobile-break{display:block}.archive-scroll-hint{font-size:11px!important;bottom:6%}.footer-bottom{font-size:10px;gap:15px;flex-wrap:wrap;bottom:24px}.footer-bottom small,.portal-v2 .footer-links a{font-size:10px}.footer-links{gap:9px}.case-narrative{grid-template-columns:1fr;gap:28px}.case-narrative p{font-size:14px}.case-head .case-hook{font-size:24px;margin-bottom:30px}.welcome p{font-size:clamp(26px,7.4vw,31px);line-height:1.28}.portal-v2 #about .about-copy .bio-reveal>p{line-height:1.5}}
@media(max-width:360px){.portal-v2 header nav{gap:8px;font-size:9px}.language-switch{padding-left:6px;gap:4px}.portal-v2 header{padding-inline:5vw}.contact-layout .contact-actions a{white-space:normal;text-align:center}.footer-bottom{gap:10px}}
@media(max-height:500px) and (max-width:1100px){.footer-bottom{bottom:10px;font-size:9px}.footer-bottom small,.portal-v2 .footer-links a{font-size:9px}.archive-scroll-hint{bottom:3%}}

.portal-v2 .rail-frame:after{content:'View project →'}html[lang="es"] .rail-frame:after{content:'Ver proyecto →'}

html[lang="es"] .contact-layout .contact-actions a{white-space:normal;text-align:center;line-height:1.25}html[lang="es"] .contact-layout .contact-actions a>span{min-width:0}@media(max-width:700px){html[lang="es"] .contact-layout .contact-actions a{font-size:15px}html[lang="es"] .contact-actions svg{width:21px;height:21px}}
.portal-v2 .modal-top{justify-content:flex-end}

.portal-v2 #about .about-copy .bio-reveal:not(:first-child)>p{line-height:1.5;max-width:68ch}.at-contact .back-to-top{bottom:75px}@media(max-width:700px){.at-contact .back-to-top{bottom:76px}}

/* v38: approved Spanish composition and native brand icon. */
html[lang="es"] .welcome .welcome-thanks{font-weight:800}
html[lang="es"] .gather-ready{max-width:none}
.gather-ready .ready-question{color:#0c0614}
.gather-enter-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;z-index:3;white-space:nowrap;pointer-events:none;font-size:14px;color:#21152f}
.motion-cta{display:inline-flex;align-items:center;gap:9px}
.vimeo-mark{width:19px;height:19px;flex:none}

/* v39: explicit emphasis survives animated word wrappers. */
.portal-v2 .welcome strong.welcome-thanks,.portal-v2 .welcome strong.welcome-thanks .play-word{font-weight:800!important;font-variation-settings:"wght" 800;-webkit-text-stroke:.35px currentColor}
.gather-ready{max-width:none}
@font-face{font-family:ManropeWelcome;src:url('../assets/manrope.ttf') format('truetype');font-display:swap;font-weight:400}
.portal-v2 .welcome strong.welcome-thanks,.portal-v2 .welcome strong.welcome-thanks .play-word{font-family:ManropeWelcome,Arial,sans-serif;font-synthesis:weight;font-variation-settings:normal;-webkit-text-stroke:0}
.portal-v2 .welcome strong.welcome-thanks,.portal-v2 .welcome strong.welcome-thanks .play-word{-webkit-text-stroke:.55px currentColor}
