:root{color-scheme:dark;background:#000;color:#fff;font-family:'IBM Plex Mono',monospace;font-synthesis:none;-webkit-font-smoothing:antialiased;--edge:clamp(22px,3.4vw,64px);--reveal:0;--intro:1;--scene:1;--cursor:1}
*{box-sizing:border-box}html{scrollbar-width:thin;scrollbar-color:#333 #000}body{margin:0;min-width:320px;background:#000}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}a{color:inherit;text-decoration:none}button,a{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:1px solid white;outline-offset:7px}button:disabled{opacity:.4;cursor:default}h1,h2,p{margin:0}::selection{background:white;color:black}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip{position:fixed;z-index:50;top:20px;left:50%;transform:translate(-50%,-200%);font-size:12px;background:#fff;color:#000;padding:12px 16px}.skip:focus{transform:translate(-50%,0)}[hidden]{display:none!important}
#universe{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:var(--scene);background:#000}#space{display:block;width:100%;height:100%;position:absolute;inset:0}.fallback-well{display:none;position:absolute;left:20%;top:38%;width:60%;aspect-ratio:1;border:1px solid #777;border-radius:50%;box-shadow:0 0 0 24px #000,0 0 0 25px #555,0 0 0 50px #000,0 0 0 51px #333;transform:rotateX(55deg)}.no-graphics .fallback-well{display:block}.scanlines{pointer-events:none;position:fixed;inset:0;z-index:4;opacity:.14;background:repeating-linear-gradient(0deg,transparent 0 3px,#000 3px 4px);mix-blend-mode:multiply}.navigation{position:fixed;z-index:15;top:0;left:0;right:0;padding:max(22px,env(safe-area-inset-top)) var(--edge) 0;display:flex;justify-content:space-between;align-items:center;height:84px;pointer-events:none}.navigation a{pointer-events:auto;font-size:11px;letter-spacing:.025em;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.navigation nav{display:flex;align-items:center;gap:30px}#home-link{font-size:14px;letter-spacing:-.06em;opacity:0;pointer-events:none;transition:opacity .4s}body.has-depth #home-link,body.is-about #home-link{opacity:1;pointer-events:auto}#about-link{position:relative}#about-link:after{content:'';position:absolute;bottom:10px;left:0;right:100%;height:1px;background:#fff;transition:right .25s}#about-link:hover:after{right:0}.navigation .signin-link{font-size:21px;width:44px;margin-right:-14px;transition:transform .25s}.signin-link:hover{transform:translate(2px,-2px)}
#journey{height:430svh;position:relative}.viewport{position:sticky;top:0;height:100svh;isolation:isolate;overflow:hidden;pointer-events:none}.intro{position:absolute;left:0;right:0;top:43%;text-align:center;z-index:3;opacity:var(--intro);transform:translateY(calc(-50% - var(--intro-shift,0px)));will-change:opacity,transform}.intro h1{font-size:clamp(40px,6vw,88px);font-weight:400;letter-spacing:-.08em;line-height:1.2}.word{position:relative;display:inline-flex;align-items:center;min-width:5.45em;justify-content:flex-start;text-shadow:0 1px 18px #000,0 0 35px #000}.block-cursor{display:inline-block;width:.54em;height:.94em;background:#fff;position:relative;margin-left:.14em;animation:cursor-blink 1.15s steps(1) infinite;box-shadow:0 0 6px #ffffff18}.glitch-copy{position:absolute;inset:0;pointer-events:none;opacity:0;color:#fff}.glitch-copy:after{content:'█';margin-left:.14em;font-size:.94em}.word.glitch .glitch-one{opacity:1;animation:glitch-top .22s steps(1) both}.word.glitch .glitch-two{opacity:1;animation:glitch-bottom .22s steps(1) both}.word.glitch #typed{animation:type-tear .22s steps(1) both}.descend{position:absolute;left:50%;bottom:max(46px,calc(env(safe-area-inset-bottom) + 30px));width:44px;height:44px;transform:translateX(-50%);font-size:24px;font-weight:400;z-index:6;pointer-events:auto;opacity:var(--intro);transition:color .2s}.descend span{display:block;animation:descend 2.8s ease-in-out infinite}.frame-mark{position:absolute;width:9px;height:9px;top:64%;opacity:calc(var(--intro)*.32);border-top:1px solid #fff}.mark-one{left:16%;border-left:1px solid #fff}.mark-two{right:16%;border-right:1px solid #fff}.scroll-track{position:fixed;z-index:8;right:var(--edge);top:44%;height:84px;width:1px;background:#ffffff1c;pointer-events:none}.scroll-track span{position:absolute;width:3px;height:12px;left:-1px;background:#fff;transform:translateY(var(--scroll-indicator,0px));opacity:.65}.motion-toggle{position:fixed;z-index:20;bottom:max(18px,env(safe-area-inset-bottom));height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;color:#ffffff80;transition:color .2s}.motion-toggle:hover{color:#fff}.motion-toggle{right:calc(var(--edge) - 12px);font-size:14px}.destination{position:absolute;z-index:6;inset:0;display:flex;align-items:center;justify-content:center;opacity:var(--reveal);transform:translateY(calc((1 - var(--reveal))*24px));will-change:opacity,transform}.destination:not([inert]){pointer-events:auto}.gate{display:flex;align-items:center;flex-direction:column;gap:28px;padding:0 24px;text-align:center;max-width:800px}.gate h2{font-size:clamp(17px,2vw,29px);line-height:1.6;font-weight:400;letter-spacing:-.055em;text-wrap:balance;text-shadow:0 0 25px #000,0 0 50px #000}.gate a{font-size:11px;display:inline-flex;align-items:center;gap:26px;line-height:44px;color:#aaa;transition:color .2s}.gate a:hover{color:#fff}.gate a span{font-size:18px}.gate-lock{width:16px;height:18px;margin-bottom:6px;color:#999}.gate-lock path,.gate-lock rect{stroke:currentColor;fill:none;stroke-width:1}.projects{width:min(560px,calc(100% - 72px));list-style:none;margin:0;padding:0}.projects li{border-bottom:1px solid #ffffff2b;transform:translateY(calc((1 - var(--reveal))*36px));transition:transform .3s}.projects li:first-child{border-top:1px solid #ffffff2b}.projects a{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 0;font-size:clamp(23px,3.4vw,39px);letter-spacing:-.06em;transition:padding .3s}.projects a:hover{padding-left:12px;padding-right:8px}.projects a>span:last-child{font-size:24px;opacity:.55;transition:opacity .2s,transform .2s}.projects a:hover>span:last-child{opacity:1;transform:translate(3px,-3px)}.empty-projects{font-size:16px;letter-spacing:-.03em}.endpoint-home{position:absolute;bottom:max(46px,calc(env(safe-area-inset-bottom) + 30px));left:50%;transform:translateX(-50%);width:44px;height:44px;font-size:24px}
#about-page{position:relative;z-index:5;min-height:100svh;padding:24vh max(var(--edge),calc((100vw - 640px)/2)) 140px;pointer-events:auto}.about-sheet{width:100%;max-width:640px;margin:auto}.about-sheet h1{font-size:clamp(32px,5vw,58px);font-weight:400;letter-spacing:-.07em;margin-bottom:50px;padding-bottom:35px;border-bottom:1px solid #ffffff24}.about-sheet p{font-family:'Manrope Variable',sans-serif;font-size:16px;font-weight:400;line-height:1.9;color:#d4d4d4;margin-bottom:24px;white-space:pre-wrap;overflow-wrap:anywhere}.is-about .scroll-track{display:none}.is-about #universe{opacity:.18}.is-about .scanlines{opacity:.04}
@keyframes cursor-blink{0%,54%{opacity:1}55%,100%{opacity:0}}@keyframes descend{0%,100%{transform:translateY(-3px)}50%{transform:translateY(3px)}}@keyframes glitch-top{0%{clip-path:inset(18% 0 64% 0);transform:translate(5px,-1px)}30%{clip-path:inset(48% 0 37% 0);transform:translate(-6px,1px)}65%{clip-path:inset(23% 0 72% 0);transform:translate(3px,0)}100%{opacity:0;transform:none}}@keyframes glitch-bottom{0%{clip-path:inset(65% 0 18% 0);transform:translate(-4px,0)}40%{clip-path:inset(80% 0 7% 0);transform:translate(6px,1px)}70%{clip-path:inset(53% 0 40% 0);transform:translate(-3px,0)}100%{opacity:0;transform:none}}@keyframes type-tear{0%,100%{transform:none}25%{transform:skewX(1deg)}50%{transform:translateX(-1px)}}
@media(max-width:767px){:root{--edge:24px}.navigation{height:72px;padding-top:max(15px,env(safe-area-inset-top))}.navigation nav{gap:24px}.navigation a{font-size:10px}#journey{height:360svh}.intro{top:42%}.intro h1{font-size:clamp(38px,10vw,64px)}.word{min-width:5.65em}.frame-mark{top:65%}.mark-one{left:9%}.mark-two{right:9%}.scroll-track{right:18px;height:64px;top:45%}.scroll-track span{transform:translateY(calc(var(--scroll-indicator,0px)*.7222))}.projects{width:calc(100% - 64px);max-width:430px}.projects a{padding:24px 0;font-size:28px}.gate{gap:22px;max-width:350px}.gate h2{font-size:19px;max-width:280px}.gate a{font-size:11px}.descend,.endpoint-home{bottom:max(64px,calc(env(safe-area-inset-bottom) + 44px))}.motion-toggle{bottom:max(14px,env(safe-area-inset-bottom))}#about-page{padding:22vh 28px 120px}.about-sheet p{font-size:15px}.about-sheet h1{margin-bottom:32px;padding-bottom:26px}}
@media(max-width:360px){:root{--edge:20px}.intro h1{font-size:36px}.projects a{font-size:25px}.projects{width:calc(100% - 56px)}.gate h2{font-size:18px}.scroll-track{right:12px}dialog{padding:23px}.mode-picker{gap:18px}}
html[data-reduced=true] .block-cursor{animation:none}html[data-reduced=true] .descend span{animation:none}html[data-reduced=true] .glitch-copy{display:none}html[data-reduced=true] .intro,html[data-reduced=true] .destination{will-change:auto}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.block-cursor{opacity:1}}
@media print{#universe,.scanlines,.navigation,.motion-toggle,.scroll-track,.descend,.endpoint-home{display:none}#journey{height:auto}.viewport{height:auto;position:static}.intro,.destination{position:static;opacity:1;transform:none;color:#000}.destination{padding:60px 20px}.intro{padding:30px}.block-cursor{display:none}body{background:#fff;color:#000}dialog{display:none}}
#home-link{visibility:hidden}body.has-depth #home-link,body.is-about #home-link{visibility:visible}html[data-reduced=true] .destination{transform:none}
html[data-reduced=true] #journey{height:200svh}
.word{min-width:0}

/* Choreographed entry: the invisible measure reserves only the finished title. */
.intro{top:50%}
.word{display:inline-block;min-width:0;--title-offset:1.04em}
.word-size{visibility:hidden;white-space:nowrap}
.word-text{position:absolute;left:0;top:0;transform:translateX(var(--title-offset));transition:transform .58s cubic-bezier(.22,1,.36,1);white-space:nowrap}
.word.shifted .word-text{transform:translateX(0)}
#typed{position:relative;display:inline-block}
.block-cursor{position:absolute;left:100%;top:.14em;margin-left:.14em;visibility:hidden;animation:none}
.word.typing .block-cursor{visibility:visible;animation:cursor-blink .7s steps(1) infinite}
.glitch-copy:after{content:none}
#close-about{position:fixed;right:var(--edge);top:105px;width:48px;height:48px;border:1px solid #ffffff4d;display:grid;place-items:center;z-index:20;background:#000b}
#close-about svg{width:22px;height:22px;fill:none;stroke:white;stroke-width:1.5}
#close-about:hover{background:#fff}#close-about:hover svg{stroke:#000}
.about-sheet:focus{outline:none}.about-word{position:relative}
.route-out #journey,.route-out #about-page{animation:route-out .14s steps(1) both}
.route-in #journey,.route-in #about-page{animation:route-in .4s steps(1) both}
.route-out #universe,.route-in #universe{animation:signal-shift .3s steps(1)}
@keyframes nav-glitch{0%,100%{transform:none;opacity:1}20%{transform:translateX(3px);text-shadow:-5px 0 #fff8;clip-path:inset(15% 0 30%)}50%{transform:translateX(-2px);clip-path:inset(0 0 15%)}70%{transform:none;opacity:.5}}
@keyframes route-out{0%{transform:none;opacity:1}30%{transform:translateX(-7px);clip-path:polygon(0 0,100% 0,100% 32%,0 32%,0 39%,100% 39%,100% 76%,0 76%)}70%{transform:translateX(9px);opacity:.45;clip-path:inset(45% 0 10%)}100%{opacity:0}}
@keyframes route-in{0%{opacity:0;transform:translateX(8px);clip-path:inset(15% 0 65%)}20%{opacity:1;transform:translateX(-5px);clip-path:polygon(0 0,100% 0,100% 28%,0 28%,0 36%,100% 36%,100% 100%,0 100%)}45%{transform:translateX(3px);clip-path:inset(0 0 20%)}65%{transform:translateX(-1px);clip-path:inset(0)}100%{opacity:1;transform:none;clip-path:inset(0)}}
@keyframes signal-shift{0%,100%{transform:none}25%{transform:translateX(5px);filter:contrast(1.6)}55%{transform:translateX(-3px)}}
html[data-reduced=true] .word-text{transition:none;transform:none}
html[data-reduced=true] .glitch,html[data-reduced=true] .glitch:after,html[data-reduced=true] .route-in *,html[data-reduced=true] .route-out *{animation:none!important}
@media(max-width:767px){#close-about{top:90px;width:44px;height:44px}}

.is-about .skip{display:none}

/* Quiet attribution replaces the development control. */
.copyright{position:fixed;z-index:20;left:var(--edge);bottom:max(18px,env(safe-area-inset-bottom));height:44px;display:flex;align-items:center;margin:0;color:#ffffff80;font-size:9px;letter-spacing:.025em;pointer-events:none}
.home-main{width:100%;text-align:center}.home-main>.projects,.home-main>.gate{margin-inline:auto}.access-notice{margin:0 auto 28px;max-width:540px;font-size:12px}.access-notice h2{font-size:20px;font-weight:400}.access-notice a,.access-notice button,.home-status button{text-decoration:underline;text-underline-offset:4px}.access-notice .eyebrow{display:none}.notice-error{color:#eda79d}.home-status{font-size:13px}.home-status button{margin-left:14px}.home-intro h1{font-size:20px;font-weight:400}.home-action{display:inline-block;margin-top:20px}
html[data-reduced=true] *,html[data-reduced=true] *::before,html[data-reduced=true] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(max-width:600px){.copyright{bottom:max(14px,env(safe-area-inset-bottom));font-size:8px}}
@media print{.copyright{position:static;color:#444}}
