/* October 21 annotations. The PDF's typography and homepage geometry remain the base. */
.hero-meta{cursor:pointer;transition:color .3s}
.hero-meta:hover{color:#000}.hero-meta:after{content:'↘';display:inline-block;margin-left:.6em;opacity:0;transform:translate(-8px,-8px);transition:.4s}
.hero-meta:hover:after,.hero-meta:focus-visible:after{opacity:1;transform:none}
.site-header nav a{position:relative;perspective:500px}
.site-header nav a .kinetic{transform-origin:50% 70%;transition:transform .55s cubic-bezier(.2,1.5,.4,1),color .4s}
.site-header nav a:hover .kinetic,.site-header nav a:focus-visible .kinetic{transform:translateY(-7px) scale(1.19) rotate(-3deg);color:#090909}
.nav-link:after{content:'';height:1px;position:absolute;bottom:3px;left:0;right:0;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .4s}
.nav-link:hover:after,.nav-link:focus-visible:after{transform:scaleX(1)}
.cv-link:hover svg{transform:translate(3px,-3px)}.cv-link svg{transition:transform .45s}
.hero-motto{perspective:600px}.hero-motto .kinetic{transform-origin:left center;transition:transform .65s cubic-bezier(.2,1.4,.3,1),letter-spacing .55s,color .3s}
.hero-motto:hover .kinetic:first-child{transform:translate(12px,-9px) rotate(-3deg) scale(1.13);letter-spacing:.07em;color:#111}
.hero-motto:hover .kinetic:last-child{transform:translate(24px,6px) rotate(2deg) scale(1.13);letter-spacing:.08em;color:#625b6e}
.project-header-panel{background:var(--project-color,var(--paper));background-image:none}
.editorial-copy{display:grid;border-top:.6px solid #0003;padding-top:4cqw;gap:0;color:#595959}
.editorial-copy p{margin:0}.editorial-copy .kinetic:hover{transform:none;color:inherit}
.intro-tag-en{font-family:var(--serif);text-transform:uppercase;font-size:3.15cqw;line-height:1.42;color:#090909;font-weight:300}
.intro-tag-zh{font-family:var(--light);font-size:2.35cqw;line-height:1.65}
.intro-body-en{font-family:var(--light);font-weight:300;font-size:2.6cqw;line-height:1.8;letter-spacing:.005em}
.intro-body-zh{font-family:var(--light);font-weight:300;font-size:1.9cqw;line-height:1.95}
.project-vogue .editorial-copy{display:block}.project-vogue .intro-tag-en,.project-vogue .intro-tag-zh{display:inline}.project-vogue .intro-tag-zh{margin-left:.8em;font-size:2.1cqw}
.project-vogue .intro-body-en{width:76%;margin:12cqw auto 9cqw;text-align:justify}
.project-vogue .intro-body-zh{text-align:center}
.project-gaggenau .intro-tag-en{max-width:88%}.project-gaggenau .intro-tag-zh{text-align:right;margin-top:3.5cqw}
.project-gaggenau .intro-body-en{max-width:86%;margin-top:4.5cqw;text-align:justify}
.project-gaggenau .intro-body-zh{width:88%;margin:6cqw 0 0 auto;text-align:justify;letter-spacing:.13em}
.project-alipay .editorial-copy{text-align:center;padding:6cqw 3cqw 0}
.project-alipay .intro-tag-zh{margin:1cqw 3cqw 0}.project-alipay .intro-body-en{margin-top:5.5cqw;text-align:center}
.project-alipay .intro-body-zh{margin:6cqw 2cqw 0;text-align:center}
.project-mm6 .editorial-copy{grid-template-columns:54% 34%;column-gap:12%;grid-template-rows:auto auto auto;align-items:start}
.project-mm6 .intro-tag-en{grid-column:1/-1;text-align:right}.project-mm6 .intro-tag-zh{grid-column:1/-1;text-align:right;margin-top:.7cqw}
.project-mm6 .intro-body-en{grid-column:1;grid-row:3;margin-top:8cqw;text-align:justify}
.project-mm6 .intro-body-zh{grid-column:2;grid-row:3;margin-top:41cqw;text-align:justify}
.project-resonant-forms .editorial-copy{grid-template-columns:1fr}
.project-resonant-forms .intro-body-en{grid-row:1;width:64%;margin-left:auto;text-align:right}
.project-resonant-forms .intro-tag-zh{grid-row:2;margin-top:10cqw}
.project-resonant-forms .intro-tag-en{grid-row:3;max-width:82%;margin-top:.4cqw}
.project-resonant-forms .intro-body-zh{grid-row:4;max-width:74%;margin-top:.5cqw}
/* Each gallery has a static, readable fallback, enhanced only after its controller is ready. */
.project-experience{margin:5cqw 0 0;position:relative}
.experience-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1.4cqw 2cqw;border-top:.7px solid #999;font-family:var(--light);font-size:11px;letter-spacing:.08em;color:#5c5c5c;min-height:52px;gap:20px}
.experience-count{font-variant-numeric:tabular-nums;min-width:55px}.experience-hint{margin-left:auto}
.scene-controls,.density-controls{display:flex;gap:8px}.experience-toolbar button{border:.6px solid #aaa;background:transparent;width:32px;height:32px;border-radius:50%;transition:background .3s,transform .3s}.experience-toolbar button:hover{background:#e5e3e8;transform:scale(1.1)}
.experience-stage{position:relative;outline-offset:-2px}.experience-field{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2cqw;padding:2cqw}
.experience-item{margin:0;min-width:0}.experience-image{padding:0;border:0;background:transparent;display:block;width:100%;position:relative;cursor:zoom-in}
.experience-image img{width:100%;height:auto;display:block;user-select:none;pointer-events:none}.experience-alipay .experience-image{cursor:grab}
.gallery-exit{display:block;text-align:center;font:11px var(--light);letter-spacing:.08em;color:#555;padding:22px;margin:0 auto;width:fit-content}
.gallery-exit:hover{transform:translateY(3px)}.field-wordmark{display:none}
.scene-ready .experience-stage{height:clamp(520px,77vh,850px);overflow:hidden;touch-action:pan-y;cursor:grab;isolation:isolate}
.scene-ready .experience-stage.is-dragging{cursor:grabbing}
.scene-ready .experience-field{display:block;padding:0;position:absolute;inset:0;perspective:1100px}
.scene-ready .experience-item{position:absolute;left:0;top:0;will-change:transform;transform-origin:50% 50%}
.scene-ready .experience-image{transition:filter .45s,box-shadow .45s,scale .45s}
.scene-ready .experience-image:hover{filter:brightness(1.025);z-index:2}
.experience-mm6 .experience-item:hover{z-index:20!important}
.experience-mm6 .experience-image:after{content:'VIEW';position:absolute;inset:0;margin:auto;display:grid;place-items:center;width:74px;height:74px;border:.7px solid #fff;border-radius:50%;font:11px var(--light);letter-spacing:.1em;color:#fff;background:#0001;opacity:0;transition:opacity .4s;pointer-events:none}
.experience-mm6 .experience-image:hover:after{opacity:1}
.experience-gaggenau.scene-ready .field-wordmark{display:block;position:absolute;left:0;right:0;top:44%;text-align:center;font-family:var(--sans);font-size:5.2cqw;letter-spacing:-.04em;z-index:-1;pointer-events:none}
.experience-resonant-forms.scene-ready .experience-stage{height:82vh;min-height:550px}
.experience-resonant-forms .experience-image{filter:none;transition:filter .5s,scale .5s}
.experience-resonant-forms .experience-image:hover,.experience-resonant-forms .experience-image:focus-visible{filter:none;scale:1.06;z-index:10}
.experience-item.small-object .experience-image{width:62%;margin:auto}
/* VOGUE uses the page's natural vertical scroll; no nested scroll trap. */
.experience-vogue .experience-stage{overflow:clip}
.experience-vogue .experience-field{display:flex;flex-direction:column;align-items:center;gap:5cqw;padding:5cqw 3cqw 8cqw}
.experience-vogue .experience-item{width:66%;perspective:1100px;position:relative}
.experience-vogue .experience-item:nth-child(3n+2){margin-left:15%}.experience-vogue .experience-item:nth-child(3n){margin-right:15%}
.experience-vogue .experience-item img{max-height:65vh;object-fit:contain}
.experience-vogue canvas{display:block;width:auto;height:auto;max-width:100%;max-height:65vh;margin:auto;pointer-events:none}.experience-vogue .canvas-ready img{position:absolute;inset:0;width:100%;height:100%;opacity:0}
.experience-vogue .experience-image{transform:rotateX(var(--pitch,0deg)) rotateZ(var(--roll,0deg)) scale(var(--paper-scale,1));transform-origin:center;will-change:transform}
/* Internal viewers stay on the project page. Native dialogs provide focus containment. */
.experience-viewer{position:fixed;inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0;margin:0;padding:0;background:#f8f8f7;color:#111;overflow:hidden}
.experience-viewer::backdrop{background:#f8f8f7f5}
.viewer-close{position:absolute;top:22px;right:28px;z-index:20;border:0;background:#f8f8f7cc;font:300 40px var(--light);width:48px;height:48px;border-radius:50%;transition:transform .35s}
.viewer-close:hover{transform:rotate(90deg)}
.viewer-scroll{height:100%;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;outline-offset:-3px;padding:0 13vw 0 3vw}
.viewer-slide{min-height:95vh;display:flex;align-items:center;justify-content:center;position:relative;padding:10vh 0;margin:0;scroll-margin-top:0}
.viewer-slide img{display:block;width:auto;max-width:100%;height:auto;max-height:76vh;object-fit:contain}
.viewer-count{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);font:11px var(--light);letter-spacing:.1em;z-index:12;background:#f8f8f7cc;padding:8px 12px}
.viewer-index{position:absolute;right:22px;top:90px;bottom:65px;width:74px;overflow:auto;scrollbar-width:none;z-index:10;overscroll-behavior:contain}
.viewer-index::-webkit-scrollbar{display:none}
.viewer-index button{padding:4px;border:0;background:transparent;display:block;width:100%;margin-bottom:4px;opacity:.55;transition:opacity .35s}
.viewer-index button:hover,.viewer-index button[aria-current=true]{opacity:1}
.viewer-index button img{width:100%;height:100%;max-height:65px;object-fit:contain;display:block}
.viewer-index .index-window{position:absolute;top:0;left:0;width:100%;border:1px solid #4e4e4e;pointer-events:none;transition:transform .55s cubic-bezier(.2,.8,.2,1),height .55s;z-index:3}
.viewer-gaggenau .viewer-index{left:25px;right:auto;width:65px}
.viewer-gaggenau .viewer-scroll{padding:0 7vw 0 12vw;scroll-snap-type:y proximity}
.viewer-gaggenau .viewer-slide{height:100vh;scroll-snap-align:center}
.viewer-gaggenau .viewer-slide img{max-width:31vw;max-height:46vh}
.viewer-gaggenau .viewer-slide.small-object img{max-width:20vw;max-height:29vh}
.viewer-mm6 .viewer-index{display:none}.viewer-mm6 .viewer-scroll{padding:0 10vw 0;scroll-behavior:smooth}
.viewer-mm6 .viewer-slide{position:sticky;top:0;height:100vh;min-height:100vh;padding:14vh 0;pointer-events:none}
.viewer-mm6 .viewer-slide img{max-width:74vw;max-height:72vh;box-shadow:0 4px 20px #0000000a;transform:translateY(var(--slide-y,0px)) scale(var(--slide-scale,1));transition:none}
.viewer-scroll-hint{position:absolute;right:3vw;top:50%;font:11px var(--light);letter-spacing:.07em;writing-mode:vertical-rl;z-index:15;animation:scroll-nudge 1.8s ease-in-out infinite}
@keyframes scroll-nudge{50%{translate:0 9px}}
.viewer-vogue .viewer-scroll{padding:0 9vw}.viewer-vogue .viewer-index{display:none}
.viewer-vogue .viewer-slide{scroll-snap-align:center}.viewer-vogue .viewer-scroll{scroll-snap-type:y proximity}
.viewer-resonant-forms .viewer-scroll{padding:0 16vw 0 5vw}.viewer-resonant-forms .viewer-slide{min-height:90vh;padding:7vh 0}
.viewer-resonant-forms .viewer-slide img{width:100%;max-height:none}
.motion-paused .hero-motto:hover .kinetic,.motion-paused .site-header nav a:hover .kinetic{transform:none;letter-spacing:normal}
@media(max-width:700px){
 .editorial-copy{padding-top:7cqw}.intro-tag-en{font-size:5.4cqw;line-height:1.4}.intro-tag-zh{font-size:3.7cqw;line-height:1.8}
 .intro-body-en{font-size:3.8cqw;line-height:1.9}.intro-body-zh{font-size:3.4cqw;line-height:2}
 .project-vogue .intro-tag-zh{display:block;font-size:3.7cqw;margin:3cqw 0 0}.project-vogue .intro-body-en{width:90%;margin:12cqw 0 10cqw auto;text-align:left}.project-vogue .intro-body-zh{text-align:left}
 .project-gaggenau .intro-tag-en{max-width:100%}.project-gaggenau .intro-body-en{max-width:100%;margin-top:9cqw;text-align:left}.project-gaggenau .intro-body-zh{width:92%;margin-top:10cqw;letter-spacing:.04em;text-align:left}
 .project-alipay .editorial-copy{padding-left:0;padding-right:0}.project-alipay .intro-body-en{margin-top:10cqw}.project-alipay .intro-body-zh{margin:10cqw 0 0}
 .project-mm6 .editorial-copy{grid-template-columns:1fr}.project-mm6 .intro-body-en{grid-column:1;grid-row:3;max-width:87%;text-align:left}.project-mm6 .intro-body-zh{grid-column:1;grid-row:4;max-width:77%;margin:9cqw 0 0 auto;text-align:left}
 .project-resonant-forms .intro-body-en{width:88%}.project-resonant-forms .intro-tag-zh{margin-top:14cqw}.project-resonant-forms .intro-tag-en{max-width:100%}.project-resonant-forms .intro-body-zh{max-width:92%;margin-top:4cqw}
 .experience-toolbar{padding:12px 6px;font-size:9px;gap:9px}.experience-toolbar button{width:28px;height:28px}.experience-field{grid-template-columns:repeat(2,minmax(0,1fr))}
 .scene-ready .experience-stage{min-height:460px;height:65vh}.experience-resonant-forms.scene-ready .experience-stage{height:70vh;min-height:480px}
 .experience-vogue .experience-item{width:86%}.experience-vogue .experience-item:nth-child(3n+2){margin-left:6%}.experience-vogue .experience-item:nth-child(3n){margin-right:6%}
 .experience-vogue .experience-field{gap:12cqw}.experience-gaggenau.scene-ready .field-wordmark{font-size:8cqw}
 .viewer-close{right:12px;top:12px;width:38px;height:38px;font-size:30px}.viewer-index{right:8px;width:44px;top:75px;bottom:65px}
 .viewer-index button{padding:2px}.viewer-gaggenau .viewer-index{left:8px;width:42px}.viewer-gaggenau .viewer-slide img{max-width:54vw;max-height:42vh}.viewer-gaggenau .viewer-slide.small-object img{max-width:35vw;max-height:29vh}
 .viewer-mm6 .viewer-scroll{padding:0 6vw}.viewer-mm6 .viewer-slide img{max-width:84vw;max-height:65vh}.viewer-scroll-hint{right:2vw;font-size:9px;top:auto;bottom:15vh}
 .viewer-resonant-forms .viewer-scroll{padding:0 16vw 0 4vw}.viewer-resonant-forms .viewer-slide{min-height:65vh}.viewer-count{bottom:12px}
}
@media(prefers-reduced-motion:reduce){.hero-motto:hover .kinetic,.site-header nav a:hover .kinetic{transform:none;letter-spacing:normal}.viewer-scroll{scroll-behavior:auto}.viewer-scroll-hint{animation:none}}

/* All image transformations stay inside the existing gallery rectangle. */
.experience-stage{height:clamp(520px,77vh,850px);overflow:hidden;container-type:size;isolation:isolate}
.experience-vogue .experience-stage{overflow:hidden}
.experience-vogue .experience-field{height:100%;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;align-items:center}
.experience-vogue .experience-item{flex-shrink:0}
.experience-vogue canvas{max-height:65cqh}
.experience-viewer{position:absolute;inset:0;width:100%;max-width:none;height:100%;max-height:none;z-index:50;background:#f8f8f7;overflow:hidden}
.experience-viewer[hidden]{display:none}
.viewer-open .experience-field{visibility:hidden;pointer-events:none}
.viewer-open .field-wordmark{visibility:hidden}
.viewer-scroll{padding:0 12% 0 3%;height:100%;scroll-behavior:smooth;overflow-anchor:none}
.viewer-slide{height:100cqh;min-height:100cqh;padding:9cqh 0}
.viewer-slide img{max-width:100%;max-height:76cqh}
.viewer-gaggenau .viewer-scroll{padding:0 7% 0 12%}
.viewer-gaggenau .viewer-slide{height:100cqh;min-height:100cqh}
.viewer-gaggenau .viewer-slide img{max-width:31cqw;max-height:46cqh}
.viewer-gaggenau .viewer-slide.small-object img{max-width:20cqw;max-height:29cqh}
.viewer-mm6 .viewer-scroll{padding:0 10%}
.viewer-mm6 .viewer-slide{height:100cqh;min-height:100cqh;padding:14cqh 0}
.viewer-mm6 .viewer-slide img{max-width:74cqw;max-height:72cqh}
.viewer-scroll-hint{right:3%;top:50%}
.viewer-vogue .viewer-scroll{padding:0 9%}
.viewer-resonant-forms .viewer-scroll{padding:0 16% 0 5%}
.viewer-resonant-forms .viewer-slide{height:100cqh;min-height:100cqh;padding:7cqh 0}
.viewer-resonant-forms .viewer-slide img{width:auto;max-width:100%;max-height:80cqh}
@media(max-width:700px){
 .experience-stage{height:65vh;min-height:460px}
 .viewer-gaggenau .viewer-slide img{max-width:54cqw;max-height:42cqh}
 .viewer-gaggenau .viewer-slide.small-object img{max-width:35cqw;max-height:29cqh}
 .viewer-mm6 .viewer-scroll{padding:0 6%}.viewer-mm6 .viewer-slide img{max-width:84cqw;max-height:65cqh}
 .viewer-scroll-hint{right:2%;top:auto;bottom:15cqh}
 .viewer-resonant-forms .viewer-scroll{padding:0 16% 0 4%}
}

.viewer-open .scene-controls,.viewer-open .density-controls{visibility:hidden}

/* Latest review: restore the first version's title-to-copy hierarchy. */
.editorial-copy .intro-tag-en{font-size:3cqw;line-height:1.3}
.editorial-copy .intro-tag-zh{font-size:2.1cqw;line-height:1.7}
.editorial-copy .intro-body-en{font-size:clamp(12px,1.65cqw,22px);line-height:1.8}
.editorial-copy .intro-body-zh{font-size:clamp(12px,1.6cqw,21px);line-height:2}
.project-vogue .intro-body-en{margin-top:7cqw;margin-bottom:6cqw}
.project-mm6 .intro-body-en{margin-top:5cqw}.project-mm6 .intro-body-zh{margin-top:26cqw}
.project-resonant-forms .intro-tag-zh{margin-top:7cqw}
.experience-vogue .experience-image{transform:none;will-change:auto}
.experience-vogue .experience-image img{width:83%;height:auto;max-height:65cqh;margin:auto;object-fit:contain}
.viewer-gaggenau .viewer-slide img,.viewer-gaggenau .viewer-slide.small-object img{max-width:56cqw;max-height:68cqh}
@media(max-width:700px){
 .editorial-copy .intro-tag-en{font-size:4.8cqw}
 .editorial-copy .intro-tag-zh{font-size:3.38cqw}
 .editorial-copy .intro-body-en{font-size:clamp(12px,2.66cqw,18px)}
 .editorial-copy .intro-body-zh{font-size:clamp(12px,2.58cqw,17px)}
 .project-mm6 .intro-body-zh{margin-top:8cqw}
 .viewer-gaggenau .viewer-slide img,.viewer-gaggenau .viewer-slide.small-object img{max-width:64cqw;max-height:68cqh}
}
