@font-face{font-family:EssensiaSerif;src:local('Baskerville');font-display:swap}
:root{--cream:#f6ebd8;--forest:#184e3d;--gold:#bb914f;--world-scale:.4;--ui-scale:2.5;color-scheme:light;font-family:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}html{height:100%;overflow:hidden;margin:0;scrollbar-width:none;background:#ede1cc}html::-webkit-scrollbar{display:none}body{height:100%;margin:0;overflow:hidden;color:var(--forest);background:#ede1cc}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid #225b45;outline-offset:8px}button:disabled{cursor:default}img{user-select:none;-webkit-user-drag:none}h1,h2,p{margin:0}
#experience{position:fixed;inset:0;isolation:isolate;overflow:hidden;height:100vh;height:100dvh;background:#f2e6d2}.sky-wash{position:absolute;inset:0;background:radial-gradient(ellipse at 70% 16%,#fff9eb 0,#f3e5d1 45%,#c2d29d 84%,#496337 100%)}.camera{position:absolute;inset:0;transform-origin:50% 58%;will-change:transform}.world-frame{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.world{position:absolute;width:4442px;height:1964px;transform:scale(var(--world-scale));transform-origin:0 0}.plane{position:absolute;inset:0;pointer-events:none}.asset{position:absolute;display:block;max-width:none;pointer-events:none}.plane[data-depth]{will-change:transform}#base-layer{z-index:1}#architecture{z-index:5}#middle-layer{z-index:8}#garden-back-layer{z-index:12}#family-layer{z-index:14}#garden-front-layer{z-index:16}#title-layer{z-index:20}#petal-layer{z-index:22}#project-labels{z-index:25}
#building-effects{width:100%;height:100%;overflow:visible;pointer-events:none}.building-effect{opacity:0}.building-effect path{fill:none;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.building-effect .building-wash{fill:url(#warm-sheen);stroke:none;opacity:.6}.outline-glow{stroke:#ffe6a0;stroke-width:12;filter:url(#soft-gold);opacity:.6}.outline-draw{stroke:#fff7d5;stroke-width:1.1;opacity:.8}.outline-travel{stroke:#fffbe8;stroke-width:2.8;filter:drop-shadow(0 0 3px #ffc967)}
.project-link{position:absolute;display:flex;flex-direction:column;align-items:flex-start;width:max-content;min-width:150px;padding:10px 14px;pointer-events:auto;transform:translateY(var(--label-y,0px)) scale(var(--ui-scale));transform-origin:0 0;text-shadow:0 1px 12px #fff5e9,0 1px 3px #fff8eb;color:#164632;opacity:0;visibility:hidden}.project-sky{left:2025px;top:895px}.project-parkway{left:2540px;top:1250px}.project-name{display:flex;flex-direction:column}.project-name small{font-size:9px;letter-spacing:3px;margin-bottom:3px}.project-name>span{font-family:EssensiaSerif,Baskerville,'Times New Roman',serif;font-size:35px;font-weight:400;line-height:1}.label-rule{position:absolute;left:-40px;top:41px;width:42px;height:1px;background:linear-gradient(to left,#8b854c,transparent);transform-origin:right center}.label-rule:before{content:'';position:absolute;width:4px;height:4px;border-radius:50%;background:#fff9d6;left:0;top:-1.5px;box-shadow:0 0 0 4px #d8bc6e44,0 0 10px #f0d58f}.project-action{font-size:10px;letter-spacing:1.2px;display:flex;gap:19px;align-items:center;margin-top:9px;opacity:0;transform:translateY(4px);transition:opacity .3s,transform .3s}.project-action>span{font-size:16px}.project-link:hover .project-action,.project-link:focus-visible .project-action,.project-link.is-active .project-action{opacity:1;transform:translateY(0)}.project-link:hover .project-name>span,.project-link.is-active .project-name>span{color:#9b6c2b}
.atmosphere{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}.sunbeam{position:absolute;right:4%;top:-38%;width:35%;height:130%;background:linear-gradient(90deg,transparent,#fff5ce20 45%,#fff7da25 53%,transparent);transform:rotate(29deg);mix-blend-mode:screen}.pollen{position:absolute;inset:0;opacity:.55}.pollen i{position:absolute;display:block;width:3px;height:3px;border-radius:50%;background:#fff3c7;box-shadow:0 0 10px #ffefba;opacity:0}
.curtains{position:absolute;inset:0;z-index:8;pointer-events:none;overflow:hidden;background:#173c2d}
.intro-veil{position:absolute;inset:0;z-index:9;pointer-events:none;background:linear-gradient(180deg,#071e2430,#0b25163d 45%,#061b2855),radial-gradient(ellipse at 50% 45%,#092a3c44,transparent 65%)}

.opening{position:absolute;inset:0;display:grid;place-items:center;z-index:10;color:#fff5dc;text-shadow:0 2px 35px #08211244}.opening-copy{text-align:center;transform:translateY(-3vh)}.opening-overline{display:block;font-size:10px;letter-spacing:4px;margin-bottom:30px;font-weight:400;color:#e7d6b2}.opening h1{font-family:EssensiaSerif,Baskerville,Georgia,serif;font-size:clamp(48px,6.1vw,100px);line-height:.99;font-weight:400;letter-spacing:-2px}.opening h1 em{font-weight:400;font-size:.72em;letter-spacing:-1.2px;color:#f0dcb4;line-height:1.5}.enter-garden{display:inline-flex;align-items:center;gap:20px;padding:18px 2px;margin-top:30px;background:none;border:none;color:inherit;font-size:10px;letter-spacing:2px}.enter-line{width:35px;height:1px;background:#d1b77c;transform-origin:left;transition:transform .4s}.enter-garden:hover .enter-line{transform:scaleX(1.35)}.enter-garden>span:last-child{font-size:19px;transition:transform .4s}.enter-garden:hover>span:last-child{transform:translate(3px,3px)}.enter-garden:focus-visible{outline-color:#eddfb6}.scroll-cue{position:absolute;bottom:max(27px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:1px;color:#f5e7c6cc}.scroll-line{width:1px;height:28px;background:linear-gradient(transparent,#f8e6b8);position:relative;overflow:hidden}.scroll-line:after{content:'';position:absolute;inset:0;background:#fff5d8;transform:translateY(-100%);animation:scroll-drift 2s ease-in-out infinite}@keyframes scroll-drift{to{transform:translateY(120%)}}
.skip-opening{position:absolute;top:max(26px,env(safe-area-inset-top));right:max(30px,env(safe-area-inset-right));z-index:12;background:none;border:0;color:#f3e4c6;font-size:11px;letter-spacing:.6px;padding:10px 0}.skip-opening span{margin-left:10px}.skip-opening:focus-visible{outline-color:#e5d4ac}.replay{position:absolute;right:24px;bottom:max(18px,env(safe-area-inset-bottom));z-index:7;color:#eef1d8;border:1px solid #fff7d94d;border-radius:50%;background:#193d3038;backdrop-filter:blur(6px);font-size:23px;width:39px;height:39px;display:grid;place-items:center;opacity:0;visibility:hidden;transition:background .2s}.replay:hover{background:#193d3088}.explore-hint{position:absolute;z-index:6;bottom:26px;left:50%;transform:translateX(-50%);font-size:11px;letter-spacing:1px;white-space:nowrap;color:#fff9e9;text-shadow:0 1px 8px #153721;opacity:0;pointer-events:none}
.transition-veil{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,#f5ebd5db,#f7f1e4);z-index:30;opacity:0;visibility:hidden;pointer-events:none}.destination{position:absolute;inset:0;z-index:31;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#285640;opacity:0}.destination[hidden]{display:none}.destination-overline{font-size:11px;letter-spacing:6px;margin-bottom:20px}.destination h2{font-family:EssensiaSerif,Baskerville,Georgia,serif;font-size:clamp(72px,10vw,155px);font-weight:400;letter-spacing:-3px;line-height:1.1}.destination button{color:inherit;background:none;border:0;border-bottom:1px solid #28564066;padding:12px 2px;margin-top:42px;font-size:11px;letter-spacing:1px}.scroll-space{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.no-script{position:fixed;inset:0;background:#f2e6d2;color:#184e3d;display:grid;place-items:center;z-index:1000}
.ambient-petal{width:55px;position:absolute;pointer-events:none;opacity:0;filter:blur(.5px)}.flying-bird{position:absolute;width:145px;height:auto;z-index:19;pointer-events:none;left:50%;top:25%;opacity:0;will-change:transform}
@media(max-aspect-ratio:1/1){
 .world-frame{top:54%}.opening-overline{font-size:9px;letter-spacing:2.7px;margin-bottom:24px}.opening h1{font-size:clamp(46px,11vw,74px);letter-spacing:-1.3px}.opening h1 em{font-size:.7em}.opening-copy{transform:translateY(-5vh)}.enter-garden{margin-top:25px;font-size:9px;gap:14px;letter-spacing:1.3px}.skip-opening{right:22px;top:max(18px,env(safe-area-inset-top));font-size:10px}.scroll-cue{bottom:34px}.project-sky{left:1820px;top:740px}.project-parkway{left:2550px;top:1450px}.project-link{min-width:128px;padding:8px 12px}.project-name small{font-size:8px;letter-spacing:2.1px}.project-name>span{font-size:29px}.label-rule{width:23px;left:-22px;top:31px}.project-action{font-size:9px;opacity:1;transform:none;margin-top:6px}.explore-hint{bottom:90px;font-size:10px;letter-spacing:.4px}.replay{right:17px;bottom:24px}.sunbeam{right:-35%;width:110%;height:150%}.destination h2{font-size:84px}
}
@media(prefers-reduced-motion:reduce){.scroll-line:after{animation:none}*,*:before,*:after{scroll-behavior:auto!important}.plane[data-depth],.camera{will-change:auto}}
/* Art direction for portrait screens keeps the garden continuous. */
.portrait-brand,.portrait-garden{display:none;pointer-events:none}
.project-link{color:#fff7df;text-shadow:0 2px 8px #183a27,0 1px 2px #183a27,0 0 22px #183a2788}
.project-link:hover .project-name>span,.project-link.is-active .project-name>span{color:#ffe6a0}
.project-action{opacity:.8;transform:none}.label-rule{background:linear-gradient(to left,#fff4c2,transparent)}
@media(max-aspect-ratio:1/1){
 .sky-wash{background:#efe4ce url('./assets/psd/base-seamless.webp') center center/auto 100% no-repeat;filter:blur(20px);transform:scale(1.12)}
 .world-frame{top:54%;mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}
 #title-layer{display:none}
 .portrait-brand{display:block;position:absolute;inset:0;z-index:1;opacity:0;visibility:hidden}
 .portrait-logos{position:absolute;width:112px;height:auto;left:calc(50% - 56px);top:5.5svh}
 .portrait-title{position:absolute;width:70%;left:11%;top:20svh}
 .portrait-bird{position:absolute;width:48px;right:7%;top:18svh}
 .portrait-garden{display:block;position:absolute;left:-60%;width:220%;height:31svh;bottom:-2%;z-index:3;background:url('./assets/psd/garden-front.webp') center bottom/100% auto no-repeat;mask-image:linear-gradient(transparent,#000 40%);-webkit-mask-image:linear-gradient(transparent,#000 40%);opacity:0;visibility:hidden}
 .project-sky{left:1885px;top:940px}.project-parkway{left:2290px;top:1570px}
 .project-link{min-width:115px;padding:10px}.project-name>span{font-size:29px}
 .project-action{font-size:9px;letter-spacing:.5px;gap:12px}
 .explore-hint{bottom:6.5svh;z-index:6;font-size:9px;letter-spacing:.1px}.replay{bottom:16px;width:32px;height:32px;font-size:20px}

}
@media(max-aspect-ratio:1/1){
 .project-parkway{top:1420px}
 .portrait-garden{background-position:left bottom;background-size:auto 115%;height:22svh;bottom:-4svh}
}

/* Project names stay readable against all areas of the scene. */
.project-link{min-width:184px;padding:17px 22px 15px;border:1px solid #e1c68a99;border-radius:7px;background:linear-gradient(125deg,#123b2ff5,#163c31e8);box-shadow:0 7px 25px #10271d33,inset 0 1px 0 #fff7d31c;color:#fff8e6;text-shadow:0 1px 2px #081d17;transition:background .25s,border-color .25s,box-shadow .25s}
.project-name small{font-size:10px;font-weight:600;letter-spacing:3.2px;margin-bottom:6px;color:#e9d29d}
.project-name>span{font-size:45px;line-height:1.03;letter-spacing:-.5px}
.project-action{font-size:10px;letter-spacing:1px;margin-top:13px;opacity:1;gap:26px;transform:none;color:#fff8e6}
.project-action>span{width:25px;height:25px;display:grid;place-items:center;border:1px solid #e5c78080;border-radius:50%;font-size:16px}
.label-rule{top:56px;background:linear-gradient(to left,#f4dca0,transparent)}
.project-link:hover,.project-link:focus-visible,.project-link.is-active{background:linear-gradient(125deg,#1d5341,#123c2f);border-color:#f7d798;box-shadow:0 9px 32px #10271d44,0 0 0 3px #e8cd821c}
.project-link:focus-visible{outline:2px solid #fff0bd;outline-offset:4px}
.opening-copy{text-shadow:0 3px 28px #051d2060}
.opening-overline{font-size:11px;font-weight:600;color:#f2e4bd;letter-spacing:4.5px}
.enter-garden{padding:14px 22px;border:1px solid #e7d59e99;border-radius:4px;background:#0b2b2466;backdrop-filter:blur(5px);font-size:11px;color:#fff6d8}
@media(max-aspect-ratio:1/1){
 .opening-overline{font-size:9px;letter-spacing:2.7px}
 .project-link{min-width:124px;padding:12px 14px 10px;border-radius:5px}
 .project-name small{font-size:8px;letter-spacing:2.2px;margin-bottom:5px}
 .project-name>span{font-size:31px;letter-spacing:-.4px}
 .project-action{font-size:9px;letter-spacing:.3px;margin-top:8px;gap:12px}
 .project-action>span{width:21px;height:21px;font-size:14px}
 .project-parkway{left:2250px;top:1400px}
 .label-rule{top:40px}
 .enter-garden{font-size:10px;padding:14px 18px}
}
/* Compact labels: enough contrast without covering the architecture. */
.project-link{min-width:160px;padding:14px 58px 14px 18px}
.project-name>span{font-size:40px}
.project-action{position:absolute;right:16px;top:50%;margin:0;font-size:0;gap:0;transform:translateY(-50%)!important}
.project-action>span{width:27px;height:27px;font-size:17px}
@media(max-aspect-ratio:1/1){
 .project-link{min-width:116px;padding:11px 39px 11px 12px}
 .project-name>span{font-size:29px}
 .project-action{right:10px;font-size:0}
 .project-action>span{width:21px;height:21px;font-size:14px}
}
/* Open sightline through the garden; foreground bonsai frame the scene. */
.curtains{background:none}
.leaf-curtain,.leaf-near,.opening-cloud,.opening-ground,.opening-shrub{position:absolute;pointer-events:none;will-change:transform,opacity}
.leaf-curtain{width:64%;aspect-ratio:761/621;bottom:-12%;z-index:3;transform-origin:50% 90%;filter:brightness(.74) saturate(.8)}
.leaf-curtain img,.leaf-near img,.opening-cloud img,.opening-shrub img{display:block;width:100%;height:auto}
.leaf-left{left:-24%}.leaf-right{right:-21%;width:58%;bottom:-11%;filter:brightness(.68) saturate(.78)}
.leaf-right img{transform:scaleX(-1)}
.leaf-near{width:54%;aspect-ratio:1038/497;z-index:5;filter:brightness(.52) saturate(.8) blur(.5px);transform-origin:20% 10%}
.leaf-near-left{left:-27%;top:-22%;transform:rotate(-8deg)}
.leaf-near-left img{transform:rotate(180deg)}
.leaf-near-right{right:-28%;top:-23%;width:51%;transform:rotate(9deg)}
.leaf-near-right img{transform:scaleY(-1)}
.opening-cloud{aspect-ratio:680/459;z-index:1}
.cloud-left{width:49%;left:-8%;top:-8%;opacity:.9}
.cloud-right{width:46%;right:-4%;top:-10%;opacity:.82}
.cloud-low{width:38%;left:34%;top:-16%;opacity:.64}
.cloud-right img{animation-direction:alternate-reverse}
.cloud-low img{animation-duration:22s}
.cloud-drift{animation:cloud-drift 16s ease-in-out infinite alternate}
@keyframes cloud-drift{from{transform:translate3d(-18px,5px,0)}to{transform:translate3d(22px,-8px,0)}}
.opening-ground{left:-5%;bottom:-2%;width:110%;height:35%;z-index:4;background:#4b6e32 url('./assets/psd/tree-left.webp') center bottom/120% auto no-repeat;mask-image:linear-gradient(transparent,#000 48%);filter:brightness(.65) saturate(.72)}
.opening-shrub{width:32%;bottom:-17%;z-index:5;filter:brightness(.65) saturate(.75)}
.shrub-left{left:-9%;mask-image:linear-gradient(to right,#000 65%,transparent 100%)}
.shrub-right{right:-8%;width:29%;bottom:-16%;mask-image:linear-gradient(to left,#000 65%,transparent 100%)}
.shrub-right img{transform:scaleX(-1)}
.intro-veil{background:linear-gradient(180deg,#0b291e45,#0c271b20 55%,#0b291e45),radial-gradient(ellipse at 50% 45%,#143e2a52,transparent 70%)}
.opening{color:#fff5dc;text-shadow:0 2px 35px #08211244}
.opening-copy{transform:translateY(-4vh);text-shadow:0 3px 28px #051d2060}
.opening h1 em{color:#f0dcb4}
.opening-overline{color:#f2e4bd}
.skip-opening{color:#f3e4c6}
.skip-opening:focus-visible{outline-color:#e5d4ac}
.bird-hover{width:100%;height:100%;position:relative}
.resident-bird img{position:absolute;inset:0;width:100%;height:100%}
.resident-bird .bird-hover{animation:bird-hover 3.2s ease-in-out infinite alternate}
.bird-body{clip-path:polygon(0 28%,24% 28%,31% 36%,47% 44%,69% 58%,76% 95%,37% 95%,27% 53%,0 43%)}
.bird-wing{clip-path:polygon(23% 34%,23% 23%,33% 12%,40% 13%,39% 20%,54% 14%,53% 25%,43% 34%,30% 38%);transform-origin:28% 34%;animation:bird-wingbeat .16s ease-in-out infinite alternate}
@keyframes bird-wingbeat{from{transform:rotate(-6deg) scaleY(1)}to{transform:rotate(21deg) scaleY(-.45)}}
@keyframes bird-hover{from{transform:translate3d(0,0,0) rotate(-1deg)}to{transform:translate3d(3px,-9px,0) rotate(1deg)}}
.building-effect .building-wash{opacity:.25}
.outline-glow{stroke-width:7;opacity:.45}
@media(max-aspect-ratio:1/1){
 .leaf-curtain{width:148%;bottom:9%;filter:brightness(.92) saturate(.86)}.leaf-left{left:-100%}.leaf-right{right:-97%;width:142%;bottom:10%;filter:brightness(.85) saturate(.84)}
 .leaf-near{width:110%;top:-12%}.leaf-near-left{left:-67%}.leaf-near-right{right:-68%;top:-13%}
 .cloud-left{width:115%;left:-25%;top:-2%;opacity:1}.cloud-right{width:105%;right:-22%;top:14%;opacity:.9}.cloud-low{width:75%;left:30%;top:-3%;opacity:.75}
 .opening-ground{height:25%;width:240%;left:-70%;background-size:170% auto}
 .opening-shrub{width:77%;bottom:-11%}.shrub-left{left:-33%}.shrub-right{right:-34%;width:73%;bottom:-10%}
 .portrait-bird{height:85px}
 .opening-copy{position:absolute;top:22%;left:18px;right:18px;transform:none}
}
@media(prefers-reduced-motion:reduce){.bird-wing,.resident-bird .bird-hover,.cloud-drift{animation:none}.leaf-curtain,.leaf-near,.opening-cloud,.opening-ground,.opening-shrub{will-change:auto}}
/* Native 300 × 600 Illustrator artboard, with its own layers and hit regions. */
.asset[data-layout="portrait"]{display:none}
.is-portrait .asset[data-layout="desktop"]{display:none}
.is-portrait .asset[data-layout="portrait"]{display:block}
.is-portrait .world-frame{top:auto;bottom:0;transform:translateX(-50%);mask-image:none;-webkit-mask-image:none}
.is-portrait #title-layer{display:block}
.is-portrait .sky-wash{background:linear-gradient(180deg,#f8eddd 0%,#f9efdf 39%,#e8dec5 60%,#73914a 85%,#497a28 100%);filter:none;transform:none}
.is-portrait .project-sky{left:115px;top:285px}
.is-portrait .project-parkway{left:167px;top:345px}
.is-portrait .project-link{min-width:108px;padding:10px 35px 10px 11px}
.is-portrait .project-name>span{font-size:27px}
.is-portrait .project-name small{font-size:7px;letter-spacing:2px}
.is-portrait .project-action{right:9px}
.is-portrait .project-action>span{width:19px;height:19px;font-size:13px}
.is-portrait .label-rule{width:20px;left:-20px;top:31px}
.resident-bird[data-layout="portrait"] .bird-body{clip-path:polygon(0 15%,18% 15%,18% 25%,28% 32%,40% 36%,55% 44%,100% 45%,100% 100%,0 100%)}
.resident-bird[data-layout="portrait"] .bird-wing{clip-path:polygon(15% 23%,23% 5%,38% 0,100% 0,100% 45%,55% 44%,40% 36%,28% 32%);transform-origin:23% 25%}
.resident-bird[data-layout="portrait"] .bird-hover{animation-name:portrait-bird-hover}
@keyframes portrait-bird-hover{from{transform:translate3d(0,0,0) rotate(-1deg)}to{transform:translate3d(1px,-2px,0) rotate(1deg)}}
@media(prefers-reduced-motion:reduce){.resident-bird[data-layout="portrait"] .bird-hover{animation:none}}
@media(max-width:360px) and (max-aspect-ratio:1/1){
 .is-portrait .project-link{min-width:92px;padding:8px 31px 8px 10px}
 .is-portrait .project-name>span{font-size:23px}
 .is-portrait .project-name small{font-size:7px;letter-spacing:1.6px;margin-bottom:4px}
 .is-portrait .project-action{right:8px}
 .is-portrait .project-sky{top:270px}
 .is-portrait .project-parkway{top:330px}
}

/* Vector controls keep their exact appearance on iOS. */
.ui-icon{display:inline-block;width:16px;height:16px;vertical-align:middle;flex-shrink:0}
.replay .ui-icon{width:22px;height:22px}.project-action .ui-icon{width:14px;height:14px}
html,body{overscroll-behavior-y:none}
#project-connections{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
#project-connections g{opacity:0}
#project-connections path{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}
.connection-base{stroke:#fff2b7;stroke-width:1;opacity:.38}
.connection-run{stroke:#fff9d7;stroke-width:2;stroke-dasharray:100;stroke-dashoffset:100;filter:drop-shadow(0 0 3px #ffcb69)}
.label-trace{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.label-trace rect{width:calc(100% - 2px);height:calc(100% - 2px);fill:none;stroke:#fff3c1;stroke-width:2;stroke-dasharray:24 76;opacity:0;filter:drop-shadow(0 0 4px #ffcb69)}
/* The mobile wing hinges at the shoulder; it never flips through the body. */
.resident-bird[data-layout="portrait"] .bird-body{clip-path:polygon(0 0,22% 0,22% 24%,26% 28%,44% 37%,53% 42%,100% 50%,100% 100%,0 100%)}
.resident-bird[data-layout="portrait"] .bird-wing{clip-path:polygon(22% 0,100% 0,100% 50%,53% 42%,44% 37%,26% 28%,22% 24%);transform-origin:26% 28%;animation:portrait-wingbeat .22s ease-in-out infinite alternate}
@keyframes portrait-wingbeat{from{transform:rotate(-5deg) scaleY(1)}to{transform:rotate(12deg) scaleY(.3)}}
@media(prefers-reduced-motion:reduce){.resident-bird[data-layout="portrait"] .bird-wing{animation:none}}

/* One native composition; empty sky fills only the space outside the artboard. */
#experience{touch-action:pinch-zoom}
.opening-title-line{white-space:nowrap}
.opening h1 .opening-bloom{font-size:.58em;letter-spacing:-1px;line-height:1.15;vertical-align:baseline}
.opening h1{font-size:clamp(44px,5.7vw,94px)}
.opening-copy{transform:translateY(-7vh)}
/* A large filtered SVG was repainting on every dash frame on mobile. */
.outline-glow{filter:none;stroke-width:4;opacity:.2}
.outline-travel{filter:none;stroke-width:1.8}
.connection-run,.label-trace rect{filter:none;stroke-width:1.5}
#curtains[style*="hidden"] .cloud-drift{animation-play-state:paused}
@media(max-aspect-ratio:1/1){
 .opening h1{font-size:clamp(42px,12vw,68px)}
 .opening h1 .opening-bloom{font-size:.55em;letter-spacing:-.6px}
 .opening-copy{top:22%;transform:none}
 .is-portrait .plane[data-depth]{will-change:auto}
 .is-portrait .outline-glow{display:none}
 .is-portrait .building-wash{opacity:.15}
 .is-portrait .replay{backdrop-filter:none}
 .is-portrait .ambient-petal{filter:none}
}

/* On shorter phones, use the empty upper sky for a smaller header.
   The garden stays full width with its original, undistorted proportions. */
#portrait-title-content{display:none}
.is-portrait #portrait-title-content{display:block;transform:translateY(var(--portrait-header-offset,0px)) scale(var(--portrait-header-scale,1));transform-origin:50% 0}

/* Opaque controls sit above decorative motion, at unscaled pixel positions. */
#project-connections-layer{z-index:25}
#project-labels{position:absolute;inset:0;z-index:25;pointer-events:none}
#experience .project-link,
#experience .project-link:hover,
#experience .project-link:focus-visible,
#experience .project-link.is-active{
 transform:none;
 background:#173f32;
 box-shadow:0 7px 25px #10271d33,inset 0 1px 0 #fff7d31c;
 text-shadow:0 1px 2px #081d17;
 transition:none;
 isolation:isolate;
}
#experience .project-link .project-name>span{text-shadow:0 1px 2px #081d17}

/* Replace the old embedded WorldHotels wordmark with the supplied transparent logo. */
.asset[data-asset="title"][data-layout="desktop"]{clip-path:polygon(0 0,90% 0,90% 40%,100% 40%,100% 100%,0 100%)}
.asset[data-asset="title"][data-layout="portrait"]{clip-path:polygon(0 0,76% 0,76% 26%,100% 26%,100% 100%,0 100%)}

.scene-retry{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;padding:12px 18px;border:1px solid #d7c5a1;border-radius:6px;background:#f6ebd8;color:#184e3d;cursor:pointer}
