/* The illustrated stage is independent from the portfolio dialogs. */
html{scroll-behavior:smooth}body{background:#29243e}.flight-home{--p:0;--hero-opacity:1;--arrival-opacity:0;--mx:0px;--my:0px;--sky-drift:0px}.flight-track{height:230svh;position:relative}.flight-stage{position:sticky;top:0;height:100svh;min-height:620px;overflow:hidden;isolation:isolate;background:#342c51}.sky-layer{position:absolute;inset:-5%;z-index:-3;transform:translate(calc(var(--mx) * -.35),calc(var(--my) * -.35 + var(--sky-drift))) scale(1.06);will-change:transform}.motion-sky{width:100%;height:100%;object-fit:cover}.sky-tint{position:absolute;inset:0;background:linear-gradient(180deg,#211b3d26,transparent 50%,#20172a26);z-index:-2;pointer-events:none}#stardust{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}.flight-header{position:absolute;z-index:10;top:0;left:0;width:100%;display:flex;justify-content:space-between;align-items:center;padding:24px 4.5%;gap:24px}.flight-brand{display:flex;align-items:center;gap:12px;letter-spacing:.1em;font-size:19px;white-space:nowrap;color:#fff4e0}.flight-brand>span{font-size:32px;line-height:1;color:#ffe4b6}.flight-header nav{display:flex;gap:36px}.flight-header nav button{background:transparent;padding:9px 0;font-size:15px;color:#f3eafb;position:relative}.flight-header nav button:after{content:"";position:absolute;bottom:3px;left:0;width:100%;height:1px;background:#ffe3aa;transform:scaleX(0);transform-origin:left;transition:transform .25s}.flight-header nav button:hover:after{transform:scaleX(1)}.flight-resume{background:#fff4e80e;border:1px solid #f7e7fe5c;padding:8px 20px;border-radius:30px;font-size:14px;transition:background .2s}.flight-resume:hover{background:#e8d5fc26}.hero-copy{position:absolute;inset:0;opacity:var(--hero-opacity);pointer-events:none;transform:translateY(calc(var(--p) * -65px));will-change:transform,opacity}.flight-eyebrow{position:absolute;top:18%;left:50%;transform:translateX(-50%);margin:0;color:#ece0f3;font-size:12px;letter-spacing:.2em;white-space:nowrap;border:1px solid #e8d6f453;border-radius:30px;padding:8px 19px}.flight-eyebrow span{margin:0 8px;opacity:.5}.hero-copy h1{margin:0;font-family:"Songti SC","STSong",serif;font-size:clamp(66px,8.3vw,132px);font-weight:400;line-height:1.1;letter-spacing:.06em;color:#fff0dc;text-shadow:0 3px 28px #22132d24}.title-first,.title-second{position:absolute;display:block;will-change:transform}.title-first{left:17%;top:28%;transform:translateX(calc(var(--p) * -90px))}.title-second{left:56%;top:45%;transform:translateX(calc(var(--p) * 90px))}.hero-caption{position:absolute;left:63%;top:65%;color:#f2e5f9;font-size:17px;line-height:1.9}.hero-caption p{margin:0 0 20px}.hero-explore{pointer-events:auto;background:#e9d5fa;color:#352344;border:1px solid #f9e9ff88;border-radius:30px;padding:12px 21px;font-size:14px;box-shadow:0 6px 25px #17102720;transition:background .2s,transform .2s}.hero-explore:hover{background:#fae9ff;transform:translateY(-3px)}.hero-explore span{margin-left:15px;font-size:19px}.arrival-copy{position:absolute;left:8%;top:15%;opacity:var(--arrival-opacity);transform:translateY(calc((1 - var(--arrival-opacity)) * 20px));pointer-events:none}.arrival-copy p{font-size:13px;letter-spacing:.2em;color:#d0b9de;margin:0 0 12px}.arrival-copy h2{font-family:"Songti SC","STSong",serif;font-size:clamp(32px,4vw,60px);font-weight:400;line-height:1.3;margin:0 0 14px;color:#fff0dc;letter-spacing:.08em}.arrival-copy>span{font-size:15px;color:#e7d7ed}.mascot-position{position:absolute;left:0;top:0;width:clamp(170px,21vw,320px);z-index:5;will-change:transform;transform:translate(40vw,44vh)}.mascot-button{position:relative;display:block;width:100%;aspect-ratio:1;background:transparent;padding:0;border-radius:45%;outline-offset:8px;transform-origin:50% 65%;cursor:grab;filter:drop-shadow(0 15px 28px #21103724);transition:filter .3s}.mascot-button:hover{filter:drop-shadow(0 10px 22px #fadd8740)}.mascot-button img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}.mascot-button.greeting{animation:hello .85s ease-in-out}.mascot-hi{position:absolute;left:70%;top:-8%;background:#fff0d7;color:#584065;padding:7px 16px;border-radius:18px 18px 18px 3px;font-size:15px;white-space:nowrap;opacity:0;transform:translateY(10px) rotate(-3deg);transition:.25s;pointer-events:none}.greeting .mascot-hi{opacity:1;transform:translateY(0) rotate(-3deg)}@keyframes hello{0%,100%{rotate:0deg}20%{rotate:10deg;scale:1.06}40%{rotate:-12deg}60%{rotate:8deg}80%{rotate:-4deg}}.journey-orbit{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:calc(var(--arrival-opacity) * .8);overflow:visible}.journey-orbit path{fill:none;stroke-width:.8}.orbit-back{stroke:#edd6fa5e;stroke-dasharray:3 10}.orbit-flow{stroke:#ffe4ad;stroke-dasharray:90 1700;animation:orbit-flow 18s linear infinite;filter:drop-shadow(0 0 3px #ffe6b7)}@keyframes orbit-flow{to{stroke-dashoffset:-1790}}.constellation{position:absolute;inset:0;opacity:var(--arrival-opacity);pointer-events:none}.portal{position:absolute;pointer-events:auto;display:flex;align-items:center;gap:16px;background:#4c385133;border:1px solid #e3c7ed4f;padding:17px 23px 17px 15px;border-radius:60px;backdrop-filter:blur(15px);text-align:left;box-shadow:inset 0 1px 0 #ffffff0a,0 10px 40px #1d11251a;transform:translateY(calc((1 - var(--arrival-opacity)) * 35px));transition:background .3s,border-color .3s,box-shadow .3s;animation:portal-float 5s ease-in-out infinite;min-width:230px}.portal:hover,.portal:focus-visible{border-color:#ffe8b9;background:#7f5d814a;box-shadow:0 0 40px #ffe5b117;animation-play-state:paused}.portal-dot{width:45px;height:45px;border-radius:50%;display:grid;place-items:center;border:1px solid #efd5ed52;background:#f8e1c00a;color:#ffe8bc;font-family:Georgia,serif;font-size:17px;flex-shrink:0}.portal-copy strong{display:block;color:#fff0e6;font-size:21px;font-weight:400;letter-spacing:.08em}.portal-copy small{font-size:12px;color:#dcc8e5;display:block;margin-top:3px;letter-spacing:.04em}.portal-about{left:14%;top:48%;animation-delay:-1s}.portal-work{left:39%;top:68%;animation-delay:-3s;border-color:#f3dcb17a;background:#71537945}.portal-experience{left:67%;top:30%;animation-delay:-2s}.portal-contact{left:73%;top:61%;animation-delay:-4s}@keyframes portal-float{50%{translate:0 -9px}}.flight-footer{position:absolute;bottom:26px;left:4.5%;right:4.5%;display:flex;align-items:center;justify-content:space-between;z-index:10;gap:20px}.journey-toggle{display:flex;align-items:center;gap:13px;background:transparent;padding:0;font-size:13px;letter-spacing:.08em;color:#f0e4f6}.scroll-mark{display:block;width:19px;height:29px;border:1px solid #e9d5f17a;border-radius:20px;position:relative}.scroll-mark:before{content:"";position:absolute;top:6px;left:8px;width:1px;height:6px;background:#f9e7c9;animation:scroll-hint 2s ease-in-out infinite}@keyframes scroll-hint{60%{transform:translateY(8px);opacity:.2}}.flight-controls{display:flex;align-items:center;gap:17px;font-size:11px;letter-spacing:.1em;color:#e9d7f2}.flight-controls button{background:transparent;padding:8px 0;font-size:12px;color:#d4bddf;border-bottom:1px solid #c9a9df33}.journey-meter{display:block;width:80px;height:1px;background:#ead4fa35}.journey-meter i{display:block;width:0%;height:100%;background:#ffe4b5}.motion-paused *{animation-play-state:paused!important}.motion-paused .sky-layer{will-change:auto}body:has(dialog[open]) .flight-stage{pointer-events:none}body:has(dialog[open]) .portal{animation-play-state:paused}.flight-home button:focus-visible{outline:2px solid #fff0cd;outline-offset:5px}
@media(max-width:1050px){.flight-header nav{gap:22px}.flight-header{padding:22px 4%}.hero-copy h1{font-size:9vw}.hero-caption{font-size:15px;left:61%;top:65%}.portal{min-width:190px;padding:14px 17px 14px 12px;gap:12px}.portal-copy strong{font-size:18px}.portal-copy small{font-size:11px}.portal-dot{width:34px;height:34px}.portal-contact{left:70%}.portal-experience{left:66%}.flight-stage{min-height:570px}}
@media(max-width:680px){.flight-track{height:205svh}.flight-stage{height:100svh;min-height:640px}.flight-header{padding:20px 6%;gap:10px;flex-wrap:wrap}.flight-brand{font-size:16px;gap:6px}.flight-brand>span{font-size:25px}.flight-resume{padding:6px 13px;font-size:12px}.flight-header nav{order:3;flex-basis:100%;justify-content:space-between;border-bottom:1px solid #f0dfff16;padding:7px 0 9px;gap:10px}.flight-header nav button{font-size:13px}.flight-eyebrow{top:21%;font-size:10px;letter-spacing:.12em;padding:6px 11px}.hero-copy h1{font-size:clamp(57px,15.5vw,86px);letter-spacing:.05em}.title-first{top:31%;left:9%}.title-second{top:44%;left:45%}.hero-caption{left:48%;top:65%;font-size:13px;line-height:1.85}.hero-caption p{margin:0 0 14px}.hero-explore{padding:9px 12px;font-size:12px}.hero-explore span{margin-left:5px;font-size:15px}.mascot-position{width:48vw;max-width:235px}.mascot-hi{font-size:12px;padding:6px 10px;left:65%}.arrival-copy{left:8%;top:22%}.arrival-copy p{font-size:11px;margin-bottom:8px}.arrival-copy h2{font-size:32px}.arrival-copy>span{font-size:13px}.portal{min-width:0;padding:10px 13px 10px 10px;gap:8px;border-radius:24px}.portal-dot{width:27px;height:27px;font-size:12px}.portal-copy strong{font-size:16px}.portal-copy small{font-size:10px;max-width:130px;letter-spacing:0}.portal-about{left:6%;top:49%}.portal-work{left:19%;top:70%}.portal-experience{left:auto;right:5%;top:39%}.portal-contact{left:auto;right:4%;top:59%}.flight-footer{left:6%;right:6%;bottom:23px;align-items:flex-end}.journey-toggle{font-size:11px;gap:8px;letter-spacing:0;max-width:200px}.flight-controls{gap:12px;font-size:10px}.journey-meter{display:none}.flight-controls button{font-size:11px}.scroll-mark{width:15px;height:24px;flex-shrink:0}.scroll-mark:before{left:6px;height:5px}.journey-orbit{opacity:calc(var(--arrival-opacity) * .45)}.sky-layer{inset:-8%}.hero-caption{right:6%;left:auto;max-width:200px}.portal-copy small{font-size:11px}}
@media(max-height:600px) and (min-width:681px){.flight-stage{min-height:540px}.flight-eyebrow{top:19%}.hero-copy h1{font-size:72px}.hero-caption{top:64%;font-size:14px}.hero-caption p{margin-bottom:8px}.mascot-position{width:210px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.flight-home *{animation:none!important;transition:none!important}.sky-layer{transform:scale(1.06)}}
