/* Personal story planes approach through a calm, continuous purple world. */
.journey{--tv-tracking:0;--tv-band-y:20;--journey-end-screen:0;background:#030205;color:#f2edf6;transition:background 700ms ease;height:100svh;font-family:var(--landing-font,Manrope,Arial,sans-serif)}
@supports(height:100dvh){.journey{height:100dvh}}
.journey.light{background:#030205}
#tunnel{opacity:1}
.journey .journey-picture{position:absolute;inset:0;overflow:hidden;z-index:5;filter:url(#journey-tv-colour)}
.journey .scene{perspective:none;transform-style:flat;overflow:clip;z-index:5}
.journey .chapter:not(.finale){position:absolute;inset:0;display:block;opacity:1;transform:none;transform-style:flat;will-change:auto}
.journey .chapter:not(.finale)>.chapter-copy,.journey .chapter:not(.finale)>.artifact{position:absolute;left:50%;top:50%;margin:0;transform-origin:50% 50%;will-change:transform,opacity}
.journey .chapter:not(.finale)>.chapter-copy{width:min(52vw,640px);max-width:none;padding:12px 12px 16px;z-index:3;isolation:isolate;text-align:center}
.journey .chapter:not(.finale)>.artifact{width:min(32vw,460px);height:auto;max-width:none;max-height:none;aspect-ratio:auto;align-self:auto;justify-self:auto;z-index:2}
.journey .chapter h2{font-family:'Space Grotesk',Arial,sans-serif;font-weight:700;color:#fff;text-wrap:pretty;overflow-wrap:normal}
.journey .chapter:not(.finale) h2{font-family:'Space Grotesk',Arial,sans-serif;font-weight:700;font-size:clamp(38px,3.7vw,64px);line-height:1.07;letter-spacing:-.055em;text-transform:none;text-shadow:.6px 0 #d859f255,-.6px 0 #8b83e844,0 2px 20px #030205;margin-bottom:22px}
.journey .chapter:not(.finale) h2 em{font-style:normal;font-weight:inherit;color:#f4ddfa}
.journey .chapter:first-child h2{color:#fff}
.journey .chapter .eyebrow{font-family:'Roboto Mono',monospace;color:#e2b0f2;font-size:14px;line-height:1.45;letter-spacing:.035em;margin-bottom:18px;font-weight:600;text-shadow:0 0 9px #e2b0f244}
.journey .chapter .chapter-copy>p:not(.eyebrow):not(.territory-line):not(.matrix-line){font-family:var(--landing-font,Manrope,Arial,sans-serif);font-size:18px;max-width:490px;line-height:1.55;color:#ede7f2;opacity:1;text-shadow:0 1px 12px #000;margin:0 auto}
.journey .chapter .marginal-note,.journey .chapter .artwork-credit{display:block;opacity:1;color:#e8e0ef;font-size:14px;line-height:1.5;margin:20px auto 0}
.journey .chapter .artwork-credit{font-family:inherit;font-style:normal;margin-top:16px}
.journey .journey-media{overflow:visible;filter:none}
.journey .chapter:not(.finale)>.portrait-art{width:min(26vw,340px)}
.journey .chapter:not(.finale)>.roots-art{width:min(30vw,440px)}
.journey .journey-photo{position:relative;inset:auto;margin:0;display:block}
.journey .journey-photo img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;border:0;box-shadow:none;filter:none}
.journey .journey-photo figcaption{display:block;margin:12px 0 0;color:#e8e0ef;font:400 13px/1.5 'Roboto Mono',monospace;letter-spacing:.01em;text-align:center;text-shadow:0 1px 8px #030205}
.journey .journey-photo .journey-still{display:none}
.journey .chapter .chapter-copy>p.matrix-line{display:grid;grid-template-areas:'typed';max-width:100%;min-height:1.55em;font:400 16px/1.55 'Roboto Mono',monospace;color:#ede7f2;opacity:1}
.matrix-reserve,.matrix-visual{grid-area:typed}.matrix-reserve{visibility:hidden}.matrix-visual{text-shadow:.4px 0 #cf79ee55,-.4px 0 #a0a4fa44}
.journey .mosaic-display{position:relative;padding:9px;border:1px solid #d1a0e67a;background:#08050d;clip-path:polygon(0 12px,12px 0,calc(100% - 12px) 0,100% 12px,100% calc(100% - 12px),calc(100% - 12px) 100%,12px 100%,0 calc(100% - 12px));box-shadow:0 0 20px #cf00f426}
.mosaic-display::before{content:'';position:absolute;inset:3px;pointer-events:none;z-index:2;background:linear-gradient(#e8bdf5,#e8bdf5) left top/28px 2px no-repeat,linear-gradient(#e8bdf5,#e8bdf5) left top/2px 22px no-repeat,linear-gradient(#e8bdf5,#e8bdf5) right top/28px 2px no-repeat,linear-gradient(#e8bdf5,#e8bdf5) right top/2px 22px no-repeat,linear-gradient(#e8bdf5,#e8bdf5) left bottom/28px 2px no-repeat,linear-gradient(#e8bdf5,#e8bdf5) left bottom/2px 22px no-repeat,linear-gradient(#e8bdf5,#e8bdf5) right bottom/28px 2px no-repeat,linear-gradient(#e8bdf5,#e8bdf5) right bottom/2px 22px no-repeat;filter:drop-shadow(0 0 3px #cf79ee77)}
.mosaic-display::after{content:'';position:absolute;left:43%;right:43%;top:3px;height:2px;background:#d1a0e6;pointer-events:none}
.journey .mosaic-crop{position:relative;aspect-ratio:1254/906;overflow:hidden}
.journey .mosaic-crop img{position:absolute;width:111.643%;max-width:none;left:-5.901%;top:-8.168%;height:auto}
.journey .work-copy .journey-project-loop{width:min(100%,400px);margin:0 auto 24px}
.journey .journey-symbol.gaming-symbol{width:140px;aspect-ratio:3/4}

.journey .chapter-copy .childhood-note{font-family:var(--landing-font,Manrope,Arial,sans-serif);font-style:italic;font-size:16px;letter-spacing:.025em}
.journey .chapter:not(.finale) h2.work-statement{font-family:var(--landing-font,Manrope,Arial,sans-serif);font-weight:500;font-size:clamp(24px,2.4vw,36px);line-height:1.4;letter-spacing:-.035em;margin:0;text-wrap:pretty}
.journey .finale{transform-origin:50% 50%}
.journey .finale .chapter-copy{padding:20px 0;background:none}
.journey .finale h2{color:#f2edf6}
.journey .finale .territory-line{font-size:14px;line-height:1.6;margin-top:16px;margin-bottom:0;color:#f2edf6;opacity:1}
.journey .finale-links button{font-size:14px;min-height:44px}
.journey .figure-container .hf{--hf-accent:#f4ddfa}
.journey .figure-container .hf-role-note{font-size:14px;line-height:1.5;min-height:42px;color:#f2edf6;opacity:1}
.journey .figure-container .hf-label{font-size:14px;color:#f2edf6;opacity:1}
.journey .figure-container .hf-label:hover,.journey .figure-container .hf-label:focus-visible,.journey .figure-container .hf-label[aria-pressed="true"]{color:#e2b0f2}
/* Persistent navigation uses the main site typography and accent. */
.journey .journey-top{position:absolute;top:0;left:0;right:0;min-height:56px;padding:6px 4.5%;display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;align-items:center;z-index:30;color:#f2edf6;background:#030205eb;border-bottom:1px solid #ffffff12}
.journey .journey-top button{grid-column:1;grid-row:1;justify-self:start;display:inline-flex;align-items:center;gap:10px;font-size:14px;min-height:44px;white-space:nowrap}
.journey .journey-top>span{grid-column:2;grid-row:1;opacity:1;font-size:14px;line-height:1.4;letter-spacing:.025em;text-align:right;white-space:normal;min-width:0}
.journey-feed{position:absolute;left:0;right:0;top:56px;height:36px;display:flex;align-items:center;gap:22px;padding-inline:4.5%;overflow:hidden;z-index:29;background:#030205c9;border-bottom:1px solid #b458d518;font:500 13px/1.2 'Roboto Mono',monospace;white-space:nowrap}
.journey-feed-label{flex:none;color:#e2b0f2;text-shadow:0 0 8px #e2b0f288}
.journey-feed-window{min-width:0;flex:1;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 18px,#000 calc(100% - 18px),transparent)}
.journey-feed-track{display:flex;width:max-content;animation:journey-feed-travel 80s linear infinite;animation-play-state:paused;color:#dab7eb;text-shadow:0 0 7px #b458d5aa}
body[data-view="journey"] .journey-feed-track{animation-play-state:running}
.journey-feed-run{display:flex;align-items:center;gap:24px;padding-right:24px;flex:none}
.feed-dot{display:block;flex:none;width:3px;height:3px;background:#e2b0f2;border-radius:50%;box-shadow:0 0 5px #cf00f466}
@keyframes journey-feed-travel{to{transform:translateX(-50%)}}
.journey-scanlines{position:absolute;inset:0;z-index:12;pointer-events:none;opacity:calc(.42*(1 - var(--journey-end-screen,0)));background-image:repeating-linear-gradient(0deg,#0006 0,#0006 .5px,transparent .5px,transparent 2px),repeating-linear-gradient(90deg,#e5d4f017 0,#e5d4f017 .5px,transparent .5px,transparent 3px);background-size:3px 2px,3px 3px}
/* The screen treatment belongs only to the tunnel; controls stay above its layers. */
.journey .journey-tv-defs{position:absolute;left:0;top:0;width:0;height:0;overflow:hidden;pointer-events:none}
.journey .journey-tv-grain,.journey .journey-tv-tracking{position:absolute;pointer-events:none;z-index:12}
.journey .journey-tv-grain{inset:-6px;background:url('media/journey/tv-grain.svg') repeat;background-size:128px 128px;mix-blend-mode:screen;opacity:.18;animation:journey-tv-noise .6s steps(1,end) infinite;animation-play-state:paused;will-change:transform}
body[data-view="journey"] .journey .journey-tv-grain{animation-play-state:running}
body[data-view="journey"] .journey.is-suspended .journey-tv-grain{animation-play-state:paused}
.journey .journey-tv-tracking{left:0;right:0;top:calc(var(--tv-band-y,20)*1%);height:12%;transform:translateY(-50%);opacity:calc(var(--tv-tracking,0)*.32*(1 - var(--journey-end-screen,0)));background:linear-gradient(0deg,transparent,#c7a8e617 25%,#f0e1fa55 48%,#fff8 50%,#c7a8e62b 53%,transparent 85%),repeating-linear-gradient(0deg,transparent 0,transparent 2px,#e9d9f21f 3px,transparent 4px);mix-blend-mode:screen;will-change:top,opacity}
@keyframes journey-tv-noise{0%,100%{transform:translate3d(0,0,0)}16%{transform:translate3d(-3px,2px,0)}33%{transform:translate3d(2px,-3px,0)}50%{transform:translate3d(-2px,-1px,0)}66%{transform:translate3d(3px,3px,0)}83%{transform:translate3d(1px,-2px,0)}}
@media(max-width:760px){.journey .journey-picture{filter:url(#journey-tv-colour-mobile)}.journey .journey-tv-grain{opacity:.13}}
@media(prefers-reduced-motion:reduce){.journey .journey-picture{filter:url(#journey-tv-colour-mobile)}.journey .journey-tv-grain{animation:none!important;transform:none;opacity:.08}.journey .journey-tv-tracking{display:none}}
.journey .journey-symbol{position:absolute;left:50%;top:50%;width:clamp(210px,27vw,380px);aspect-ratio:1000/570;visibility:hidden;opacity:0;pointer-events:none;z-index:2;will-change:transform,opacity;filter:drop-shadow(0 0 10px #cf00f433)}
.journey-symbol img{display:block;width:100%;height:auto}
.journey .education-symbols{width:clamp(260px,28vw,380px);aspect-ratio:auto;display:flex;flex-direction:column;align-items:center;gap:34px}
.education-symbols img:first-child{width:100%}.education-symbols img:last-child{width:62%}
.journey .mono,.journey .eyebrow,.journey .marginal-note,.journey .journey-top,.journey .journey-bottom{font-family:'Roboto Mono',monospace}
@media(max-width:760px){.journey .journey-symbol{width:170px}.journey .education-symbols{width:240px;gap:24px}.journey .journey-symbol.gaming-symbol{width:90px}}
/* Progress remains separate from the travelling content. */
.journey .journey-bottom{left:max(4.5%,env(safe-area-inset-left));right:max(4.5%,env(safe-area-inset-right));bottom:22px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 28px;align-items:center;z-index:30;color:#f2edf6;text-shadow:0 1px 12px #000}
.journey .depth-caption{grid-column:1/-1;opacity:1;font-size:13px;line-height:1.45;letter-spacing:.025em;display:flex;gap:16px;align-items:flex-start;justify-content:space-between}
.journey #scroll-instruction{max-width:70%;text-align:right}
.journey .journey-actions{grid-column:2;grid-row:2;justify-self:end;display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:16px}
.journey .journey-actions button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-width:44px;min-height:44px;padding:8px 4px;font-size:14px;white-space:nowrap}
.journey .chapter-dots{--progress:0;position:relative;display:block;height:44px;width:calc(100% - 44px);margin-inline:22px;color:#daa9eb;isolation:isolate;grid-column:1;grid-row:2}
.journey .chapter-dots::before,.journey .chapter-dots::after{content:"";position:absolute;left:0;right:0;top:21px;height:2px;border-radius:2px;pointer-events:none}
.journey .chapter-dots::before{background:#b458d53b}.journey .chapter-dots::after{background:currentColor;transform-origin:left;transform:scaleX(var(--progress));box-shadow:0 0 10px #b458d588}
.journey .chapter-dots button{position:absolute;left:calc(var(--stop)*100%);top:0;transform:translateX(-50%);width:44px;height:44px;opacity:1;z-index:1;padding:0;color:inherit}
.journey .chapter-dots button::before{left:calc(50% - .5px);right:auto;top:18px;width:1px;height:8px;background:#eadcf0;transition:height 250ms,top 250ms,background 250ms}
.journey .chapter-dots button.active::before{top:15px;height:14px;background:#e2b0f2}.journey .chapter-dots button:hover::before{background:#fff}
.journey .chapter-dots button:focus-visible{outline:1px solid #e2b0f2;outline-offset:-6px;border-radius:50%}
.portal-rim{border-color:#d389e5;box-shadow:0 0 18px 4px #b458d555,inset 0 0 18px #b458d533}
@media(max-width:1100px) and (min-width:761px){.journey .chapter:not(.finale)>.chapter-copy{width:58vw}.journey .chapter:not(.finale) h2{font-size:4vw}.journey .chapter:not(.finale)>.artifact{width:32vw}}
@media(max-width:760px){
 .journey .chapter:not(.finale)>.chapter-copy{width:84vw;max-width:460px;padding:8px}
 .journey .chapter:not(.finale)>.artifact{width:min(67vw,280px);max-width:none}.journey .chapter:not(.finale)>.portrait-art{width:min(50vw,190px)}.journey .chapter:not(.finale)>.roots-art{width:min(65vw,260px)}
 .journey .chapter:not(.finale) h2{font-size:clamp(30px,8.2vw,44px);line-height:1.04;margin-bottom:16px}
 .journey .chapter:first-child>.chapter-copy{width:52vw;max-width:230px;text-align:left}
 .journey .chapter:first-child h2{font-size:clamp(26px,7.5vw,36px)}
 .journey .chapter:first-child>.portrait-art{width:40vw;max-width:170px}
 .journey .chapter .chapter-copy>p.matrix-line{font-size:15px;line-height:1.5}
 .journey .work-copy .journey-project-loop{margin-bottom:20px}

 .journey .chapter .eyebrow{font-size:13px;margin-bottom:12px}
 .journey .chapter .chapter-copy>p:not(.eyebrow):not(.territory-line):not(.matrix-line){font-size:16px;line-height:1.45;max-width:360px}
 .journey .chapter .marginal-note{display:none}.journey .chapter .childhood-note{display:block;font-size:14px;margin-top:16px}
 .journey .chapter .artwork-credit{font-size:14px;margin-top:14px}

 .journey .journey-top{gap:10px;min-height:60px;padding-top:calc(4px + env(safe-area-inset-top));padding-left:max(4.5%,env(safe-area-inset-left));padding-right:max(4.5%,env(safe-area-inset-right))}
 .journey .journey-top>span,.journey .journey-top button{font-size:13px}
 .journey-feed{display:none} .journey .journey-bottom{bottom:calc(14px + env(safe-area-inset-bottom));gap:0 16px}
 .journey .depth-caption{grid-column:1;grid-row:1;font-size:13px}.journey #scroll-instruction{display:none}
 .journey .journey-actions{grid-column:2;grid-row:1;gap:16px}.journey .journey-actions button{font-size:13px}
 .journey .chapter-dots{grid-column:1/-1;grid-row:2}
 .journey .finale .chapter-copy{padding:0}.journey .finale .territory-line{font-size:13px;margin-top:12px}
 .journey .finale h2{font-size:clamp(34px,10vw,48px)}.journey .finale-links{margin-top:16px;gap:20px}.journey .finale-links button{font-size:13px;min-height:44px}
 .journey .figure-container .hf-label{font-size:13px}
}
@media(max-height:700px) and (max-width:760px) and (orientation:portrait){
 .journey .chapter:not(.finale) h2{font-size:clamp(27px,7.3vw,36px)}
 .journey .chapter:not(.finale)>.artifact{width:min(63vw,240px)}.journey .chapter:not(.finale)>.portrait-art{width:40vw;max-width:160px}
 .journey .finale h2{font-size:clamp(30px,9vw,40px)}.journey .figure-container{width:74%;max-width:min(250px,28svh)}
 .journey .finale .territory-line{font-size:13px;margin-top:10px}.journey .finale-links{margin-top:10px}
}
@media(orientation:landscape) and (max-height:540px){
 .journey-feed{display:none}.journey .journey-top{min-height:50px} .journey .chapter:not(.finale)>.chapter-copy{width:55vw}
 .journey .chapter:not(.finale)>.artifact{width:28vw;max-width:300px}.journey .chapter:not(.finale)>.portrait-art{width:17vw;max-width:170px}
 .journey .chapter:not(.finale) h2{font-size:clamp(24px,3.3vw,34px);margin-bottom:12px}
 .journey .chapter .eyebrow{font-size:13px;margin-bottom:10px}
 .journey .chapter .chapter-copy>p:not(.eyebrow):not(.territory-line):not(.matrix-line){font-size:15px;line-height:1.4;max-width:360px}
 .journey .chapter .marginal-note{display:none}.journey .chapter .childhood-note{display:block;font-size:13px;margin-top:12px}
 .journey .chapter .artwork-credit{font-size:13px;margin-top:10px}.journey .journey-bottom{bottom:calc(12px + env(safe-area-inset-bottom))}
 .journey .finale h2{font-size:clamp(29px,4.8vw,43px)}.journey .finale .territory-line{font-size:13px;margin-top:10px}
 .journey .finale .chapter-copy>p:not(.eyebrow):not(.territory-line):not(.matrix-line){font-size:14px}.journey .finale-links{margin-top:12px;gap:16px}
}
@media(prefers-reduced-motion:reduce){
 .journey .chapter:first-child>.chapter-copy{width:84vw;max-width:460px;text-align:center}
 .journey .chapter:not(.finale)>.chapter-copy,.journey .chapter:not(.finale)>.artifact,.journey .journey-symbol{will-change:auto}
 .journey-feed-track{animation:none} .journey .journey-photo .journey-loop{display:none}.journey .journey-photo .journey-still{display:block}
 .journey .journey-photo figcaption{transform:scale(var(--caption-scale,1));transform-origin:50% 0}
}
