@import "https://fonts.googleapis.com/css2?family=Oxanium:wght@200;300;400;500;600;700&display=swap";:root{--bg:#0a0a0a;--fg:#ededeb;--fg-soft:#ededeb9e;--fg-faint:#ededeb52;--line:#ededeb29;--font:"Oxanium", -apple-system, BlinkMacSystemFont, sans-serif}[data-theme=light]{--bg:#cfcfcc;--fg:#111;--fg-soft:#111111b8;--fg-faint:#1111117a;--line:#11111138}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);height:100%;color:var(--fg);font-family:var(--font);letter-spacing:.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;font-weight:400;transition:background .6s,color .6s;overflow:hidden}a{color:inherit;text-decoration:none}::selection{background:var(--fg);color:var(--bg)}.canvas-container{z-index:0;pointer-events:none;width:100vw;height:100vh;transition:opacity .5s;position:fixed;inset:0}.meteor-canvas{z-index:5;pointer-events:none;display:block;position:fixed}.frame{border:1px solid var(--line);z-index:1;pointer-events:none;transition:border-color .6s;position:fixed;inset:45px;overflow:hidden}.stage{z-index:2;grid-template-columns:420px 1fr;gap:24px 48px;padding:80px;display:grid;position:fixed;inset:0}.left{flex-direction:column;height:100%;min-height:0;display:flex}.identity{flex-shrink:0}.site-name{letter-spacing:.005em;color:var(--fg);white-space:nowrap;font-size:50px;font-weight:200;line-height:1;transition:color .6s}.site-role{color:var(--fg-soft);letter-spacing:.06em;text-transform:uppercase;margin-top:6px;font-size:11px;transition:color .6s}nav.primary{flex-direction:column;gap:8px;margin:auto 0;display:flex}nav.primary a{color:var(--fg);letter-spacing:.06em;opacity:.72;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;width:max-content;padding:2px 0;font-size:13px;font-weight:400;transition:opacity .2s;display:inline-flex;position:relative}nav.primary a:hover{opacity:1}nav.primary a .dot{background:var(--fg);opacity:0;border-radius:50%;flex-shrink:0;width:4px;height:4px;transition:opacity .22s,transform .22s;transform:scale(.6)}nav.primary a.active{opacity:1}nav.primary a.active .dot{opacity:1;transform:scale(1)}nav.primary a:before{content:"";transform-origin:0;opacity:.45;background:currentColor;width:100%;height:1px;transition:transform .38s cubic-bezier(.5,.05,.2,1);position:absolute;bottom:-1px;left:0;transform:scaleX(0)}nav.primary a:hover:before{transform:scaleX(1)}.panel{align-self:stretch;height:100%;min-height:0;position:relative;overflow:hidden}.section{pointer-events:none;opacity:0;transition:opacity .52s cubic-bezier(.4,0,.2,1),transform .52s cubic-bezier(.4,0,.2,1);position:absolute;inset:0;overflow:hidden;transform:translateY(8px)}.section.active{opacity:1;pointer-events:auto;transition-delay:.24s;transform:translateY(0)}.home-bio{text-align:right;max-width:360px;position:absolute;right:0}.home-bio-text{color:var(--fg-soft);letter-spacing:.015em;font-size:13px;line-height:1.9}.home-stats{text-align:right;font-size:11px;line-height:1.55;position:absolute;bottom:4px;right:0}.home-stats .row{color:var(--fg-soft);letter-spacing:.04em}.home-stats .val{color:var(--fg);margin-top:4px;margin-bottom:10px;font-weight:500}.home-stats .val:last-child{margin-bottom:0}.projects-scroll{scrollbar-width:none;-ms-overflow-style:none;width:min(70%,720px);padding:8px 0;position:absolute;top:0;bottom:0;right:0;overflow-y:auto}.projects-scroll::-webkit-scrollbar{display:none}.projects-inner{flex-direction:column;justify-content:center;min-height:100%;display:flex}.project-row{color:var(--fg);text-align:right;cursor:pointer;margin-bottom:6px;text-decoration:none;display:block}.project-row:last-child{margin-bottom:0}.project-row .title{letter-spacing:.005em;font-size:clamp(17px,2.2vh,27px);font-weight:300;line-height:1.08;transition:opacity .2s}.project-row .meta{color:var(--fg-soft);letter-spacing:.08em;text-transform:uppercase;margin-top:3px;font-size:10px;font-weight:400}.project-row:hover .title{opacity:.55}.info-grid{scrollbar-width:none;-ms-overflow-style:none;width:min(68%,640px);padding:4px 0;position:absolute;bottom:0;right:0;overflow-y:auto}.info-grid::-webkit-scrollbar{display:none}.info-label{text-transform:uppercase;letter-spacing:.14em;color:var(--fg-faint);margin-bottom:14px;font-size:10px}.info-bio-block{margin-bottom:32px}.info-bio-text{color:var(--fg-soft);font-size:12px;line-height:1.8}.info-detail{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:16px;padding:10px 0;font-size:11px;display:flex}.info-detail:first-of-type{border-top:1px solid var(--line)}.info-detail-key{color:var(--fg-soft);flex-shrink:0}.info-detail-val{color:var(--fg);text-align:right}.info-recognition{margin-top:32px;display:none}.info-recognition-item{border-bottom:1px solid var(--line);color:var(--fg-soft);justify-content:space-between;gap:16px;padding:10px 0;font-size:11px;display:flex}.info-recognition-item:first-of-type{border-top:1px solid var(--line)}.info-recognition-name{color:var(--fg)}.contact-headline{text-align:right;position:absolute;top:0;right:0}.contact-headline-text{letter-spacing:.005em;color:var(--fg);font-size:clamp(26px,3.6vw,54px);font-weight:300;line-height:1.1}.contact-sub{color:var(--fg-soft);letter-spacing:.04em;margin-top:10px;font-size:11px}.contact-list{text-align:right;position:absolute;bottom:4px;right:0}.contact-list a{letter-spacing:.04em;opacity:.88;font-size:12px;line-height:1.95;transition:opacity .2s;display:block;position:relative}.contact-list a:hover{opacity:1}.contact-list a:after{content:" ↗";opacity:.5}.faq-list{scrollbar-width:none;-ms-overflow-style:none;width:min(58%,640px);padding:4px 0;position:absolute;top:0;bottom:0;right:0;overflow-y:auto}.faq-list::-webkit-scrollbar{display:none}.qa{border-bottom:1px solid var(--line);padding:14px 0}.qa:first-child{border-top:1px solid var(--line)}.qa .q{letter-spacing:.025em;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;gap:24px;font-size:11px;display:flex}.qa .q .plus{color:var(--fg-soft);flex-shrink:0;transition:transform .2s}.qa.open .q .plus{transform:rotate(45deg)}.qa .a{max-height:0;color:var(--fg-soft);padding-top:0;font-size:11px;line-height:1.75;transition:max-height .36s cubic-bezier(.4,0,.2,1),padding-top .36s;overflow:hidden}.qa.open .a{max-height:220px;padding-top:10px}.colophon-text{width:min(58%,600px);color:var(--fg-soft);scrollbar-width:none;-ms-overflow-style:none;padding:4px 0;font-size:11px;line-height:1.75;position:absolute;top:0;bottom:0;right:0;overflow-y:auto}.colophon-text::-webkit-scrollbar{display:none}.colophon-text p{margin-bottom:14px}.colophon-text p:last-child{margin-bottom:0}.colophon-text p strong{color:var(--fg);letter-spacing:.14em;text-transform:uppercase;margin-bottom:3px;font-size:10px;font-weight:600;display:block}[data-id=resume]{flex-direction:column;display:flex;overflow:hidden}.resume-layout{flex-direction:column;gap:8px;height:100%;min-height:0;display:flex}.resume-viewer-header{flex-shrink:0;justify-content:flex-end;align-items:center;display:flex}.resume-download{font-family:var(--font);letter-spacing:.2em;text-transform:uppercase;color:var(--fg-soft);opacity:.8;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:15px;transition:opacity .2s,color .2s}.resume-download:hover{opacity:1;color:var(--fg)}.resume-pdf-area{scrollbar-width:none;-ms-overflow-style:none;flex:1;justify-content:center;align-items:flex-start;min-height:0;padding-top:10px;display:flex;overflow:hidden}.resume-pdf-area::-webkit-scrollbar{display:none}.resume-pdf-card{flex-direction:column;align-items:center;display:flex}.resume-avatar-wrap{flex-shrink:0;justify-content:center;margin-bottom:24px;display:flex}.resume-avatar-ring{width:110px;height:110px;box-shadow:0 0 0 4px var(--fg-soft), 0 0 0 2px var(--bg), 0 0 0 9px var(--line);border-radius:50%;transition:box-shadow .6s;overflow:hidden}.resume-avatar-img{object-fit:cover;object-position:top center;filter:grayscale(6%);width:130%;height:115%;margin:-12px;display:block}.resume-pdf-box{border-radius:30px;flex-shrink:0;overflow:hidden}.resume-pdf-box .react-pdf__Document{display:flex}.resume-pdf-box .react-pdf__Page{display:block}.resume-pdf-status{letter-spacing:.1em;color:var(--fg-faint);padding:24px;font-size:10px;transition:color .6s}.resume-pdf-loading{flex-direction:column;align-items:center;gap:20px;padding:48px 24px;display:flex}.rpl-svg{width:60px;height:60px;overflow:visible}.rpl-bracket{stroke:var(--fg);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.2;animation:2.4s ease-in-out infinite rpl-pulse}.rpl-d1{animation-delay:.15s}.rpl-d2{animation-delay:.3s}.rpl-d3{animation-delay:.45s}.rpl-scan{stroke:var(--fg);stroke-width:.75px;opacity:0;animation:2.4s ease-in-out infinite rpl-scan}.rpl-dot{fill:var(--fg);transform-box:fill-box;transform-origin:50%;opacity:.25;animation:2.4s ease-in-out infinite rpl-dot}.rpl-label{font-family:var(--font);letter-spacing:.28em;color:var(--fg-faint);font-size:9px;animation:2.4s ease-in-out .6s infinite rpl-pulse}@keyframes rpl-pulse{0%,to{opacity:.2}50%{opacity:.65}}@keyframes rpl-scan{0%{opacity:0;transform:translateY(0)}6%{opacity:.65}90%{opacity:.65}96%{opacity:0;transform:translateY(41px)}to{opacity:0;transform:translateY(0)}}@keyframes rpl-dot{0%,to{opacity:.2;transform:scale(.7)}50%{opacity:.9;transform:scale(1.4)}}.resume-nav{flex-shrink:0;justify-content:center;align-items:center;gap:18px;margin-top:8px;display:flex}.resume-nav-btn{color:var(--fg-soft);font-family:var(--font);cursor:pointer;opacity:.7;background:0 0;border:none;padding:4px 6px;font-size:14px;line-height:1;transition:opacity .2s,color .6s}.resume-nav-btn:hover:not(:disabled){opacity:1}.resume-nav-btn:disabled{opacity:.18;cursor:default}.resume-page-count{letter-spacing:.1em;color:var(--fg-faint);font-size:10px;transition:color .6s}.rail{z-index:3;writing-mode:vertical-rl;font-family:var(--font);letter-spacing:.18em;color:var(--fg-soft);gap:18px;font-size:12px;transition:color .6s;display:flex;position:fixed;bottom:46px;left:31px;transform:rotate(180deg)}.rail button{color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0;line-height:1;transition:color .2s;display:inline-flex}.rail button.on,.rail button:hover{color:var(--fg)}.rail .sw{background:0 0;border:1px solid;flex-shrink:0;width:9px;height:9px;transition:background .2s,border-color .2s}.rail button.on .sw{background:var(--fg);border-color:var(--fg)}.copyright{color:var(--fg);opacity:.6;letter-spacing:.1em;z-index:4;white-space:nowrap;pointer-events:none;font-size:10px;transition:color .6s;position:fixed;bottom:14px;left:50%;transform:translate(-50%)}.burger{display:none}@media (hover:hover) and (pointer:fine){html,body,*{cursor:none!important}.cursor{pointer-events:none;z-index:9999;will-change:transform;width:28px;height:28px;position:fixed;top:0;left:0}.cursor-dot{pointer-events:none;z-index:10000;background:var(--fg);will-change:transform;border-radius:50%;width:3px;height:3px;transition:opacity .2s,background .6s;position:fixed;top:0;left:0}.cursor svg{width:100%;height:100%;display:block;overflow:visible}.cursor .bracket{stroke:var(--fg);stroke-width:1px;fill:none;opacity:.55;transform-origin:14px 14px;transition:transform .32s cubic-bezier(.5,.05,.2,1),opacity .22s,stroke .6s}body.cursor-hover .cursor .bracket{opacity:.95}body.cursor-hover .cursor .b-tl{transform:translate(4px,4px)}body.cursor-hover .cursor .b-tr{transform:translate(-4px,4px)}body.cursor-hover .cursor .b-bl{transform:translate(4px,-4px)}body.cursor-hover .cursor .b-br{transform:translate(-4px,-4px)}body.cursor-button .cursor .bracket{opacity:.95}body.cursor-button .cursor .b-tl{transform:translate(4px,4px)}body.cursor-button .cursor .b-tr{transform:translate(-4px,4px)}body.cursor-button .cursor .b-bl{transform:translate(4px,-4px)}body.cursor-button .cursor .b-br{transform:translate(-4px,-4px)}body.cursor-down .cursor-dot{opacity:.35}body.cursor-down .cursor .bracket{opacity:.25}body.cursor-out .cursor,body.cursor-out .cursor-dot{opacity:0}body.cursor-meteor .cursor .bracket{opacity:.95}body.cursor-meteor .cursor .b-tl{transform:translate(4px,4px)}body.cursor-meteor .cursor .b-tr{transform:translate(-4px,4px)}body.cursor-meteor .cursor .b-bl{transform:translate(4px,-4px)}body.cursor-meteor .cursor .b-br{transform:translate(-4px,-4px)}:root:not([data-theme=light]) body.cursor-pdf .cursor .bracket{stroke:#111}:root:not([data-theme=light]) body.cursor-pdf .cursor-dot{background:#111}}@media (hover:none),(pointer:coarse){.cursor,.cursor-dot{display:none}}@media (width<=760px),(width<=1024px) and (orientation:portrait){html,body{scrollbar-width:none;-ms-overflow-style:none;overflow:hidden}html::-webkit-scrollbar{display:none}body::-webkit-scrollbar{display:none}.frame{inset:32px}.left{display:contents}.stage{grid-template-rows:auto 1fr;grid-template-columns:1fr;gap:0;padding:50px 44px;position:fixed;inset:0}.identity{z-index:9;grid-area:1/1;justify-content:space-between;align-items:flex-start;padding-bottom:0;display:flex;position:relative}.identity-text{flex:1;min-width:0}.site-name{white-space:normal;font-size:24px}.burger{cursor:pointer;background:0 0;border:none;flex-direction:column;flex-shrink:0;gap:5px;width:22px;margin-top:7px;padding:0;display:flex}.burger span{background:var(--fg);transform-origin:50%;width:100%;height:1px;transition:transform .32s cubic-bezier(.4,0,.2,1),opacity .22s,background .6s;display:block}.burger.open span:first-child{transform:translateY(6px)rotate(45deg)}.burger.open span:nth-child(2){opacity:0;transform:scaleX(0)}.burger.open span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}nav.primary{z-index:8;background:var(--bg);opacity:0;pointer-events:none;border:none;flex-direction:column;justify-content:center;align-items:flex-end;gap:0;margin:0;padding:50px 44px;transition:opacity .3s,background .6s;display:flex;position:absolute;inset:0}nav.primary.open{opacity:1;pointer-events:auto}nav.primary a{letter-spacing:.06em;opacity:0;gap:0;width:max-content;padding:8px 0;font-size:clamp(22px,6.5vw,34px);font-weight:200;transition:opacity .3s,transform .38s cubic-bezier(.4,0,.2,1),color .2s;transform:translate(14px)}nav.primary.open a{opacity:.35;transition-delay:calc(var(--i,0) * 45ms + 60ms);transform:translate(0)}nav.primary.open a.active{opacity:1}nav.primary a .dot,nav.primary a:before{display:none}.panel{grid-area:2/1;height:100%;min-height:0;position:relative;overflow:hidden}.section{opacity:0;pointer-events:none;scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;justify-content:center;transition:opacity .38s;display:flex;position:absolute;inset:0;overflow:hidden auto;transform:none}.section::-webkit-scrollbar{display:none}.section.active{opacity:1;pointer-events:auto;transition-delay:60ms}.home-bio{text-align:left;max-width:100%;margin:auto 0 24px;position:relative;right:auto}.home-stats{text-align:left;margin-bottom:auto;position:relative;bottom:auto;right:auto}.projects-scroll{width:100%;max-height:none;margin:auto 0;padding:0;position:relative;top:auto;bottom:auto;right:auto;overflow-y:visible}.projects-inner{justify-content:flex-start;min-height:0}.project-row{text-align:left;margin-bottom:18px}.project-row:last-child{margin-bottom:0}.project-row .title{font-size:clamp(17px,5.5vw,24px)}.info-grid{width:100%;margin:auto 0;position:relative;top:auto;bottom:auto;right:auto;overflow-y:visible;transform:none}.contact-headline{text-align:left;margin:auto 0 28px;position:relative;top:auto;right:auto}.contact-headline-text{font-size:clamp(26px,8vw,42px)}.contact-list{text-align:left;margin-bottom:auto;position:relative;bottom:auto;right:auto}.contact-list a:after{display:none}.faq-list{width:100%;margin:auto 0;position:relative;top:auto;bottom:auto;right:auto;overflow-y:visible}.colophon-text{width:100%;position:relative;top:auto;bottom:auto;right:auto;overflow-y:visible}[data-id=resume]{justify-content:flex-start;overflow:hidden}.resume-layout{gap:6px;margin-top:clamp(4%,8vh,14%)}.resume-pdf-area{flex:1;align-items:flex-start;min-height:0}.resume-avatar-ring{width:80px;height:80px}.rail{writing-mode:horizontal-tb;letter-spacing:.16em;gap:12px;font-size:9px;bottom:12px;left:36px;transform:none}.copyright{letter-spacing:.08em;font-size:9px;bottom:12px;left:auto;right:36px;transform:none}}@media (width<=760px) and (orientation:landscape){html,body{scrollbar-width:none;-ms-overflow-style:none;overflow:auto}.stage{min-height:150vh;position:relative}.panel{height:auto;overflow:visible}.section{opacity:1;pointer-events:auto;height:auto;padding-bottom:20px;transition:none;display:none;position:relative;inset:auto;overflow-y:visible}.section.active{display:flex}.projects-scroll,.info-grid,.faq-list{margin:0}.home-bio{margin:0 0 24px}.home-stats{margin-bottom:0}.contact-headline{margin:0 0 28px}.contact-list{margin-bottom:0}}
