@font-face{font-family:Manrope;src:url('/assets/fonts/manrope.ttf') format('truetype');font-weight:200 800;font-display:swap}
:root{color-scheme:dark;--bg:oklch(16% .012 158);--surface:oklch(19% .015 158);--ink:oklch(96% .008 135);--muted:oklch(73% .018 145);--accent:oklch(89% .13 128);--line:oklch(33% .02 150);--dark:oklch(18% .04 140);--max:1280px;--nav-z:10}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:36px}body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.75 Manrope,Arial,sans-serif}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:var(--dark)}h1,h2,h3,p{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}h1,h2{font-weight:600;letter-spacing:-.04em;line-height:1.12}h2{font-size:clamp(2rem,4vw,3.5rem)}h3{line-height:1.3}img{max-width:100%;display:block}button{color:inherit}button:disabled{cursor:default}.wrap{width:min(var(--max),calc(100% - 112px));margin-inline:auto}.accent{color:var(--accent)}.skip{position:fixed;top:8px;left:8px;transform:translateY(-160%);background:var(--accent);color:var(--dark);padding:12px 20px;z-index:20}.skip:focus{transform:none}.site-header{display:flex;justify-content:space-between;align-items:center;min-height:110px;gap:24px;border-bottom:1px solid var(--line)}.identity{display:flex;align-items:center;gap:13px;font-size:19px;font-weight:700;letter-spacing:-.035em}.identity-dot{color:var(--muted);font-weight:400}.orbit-mark{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--accent);border-radius:50%;font-size:25px;line-height:1;color:var(--accent);font-weight:600}.site-header nav{display:flex;align-items:center;gap:32px;font-size:14px}.site-header nav a{padding-block:10px}.site-header nav a:hover,.text-link:hover{color:var(--accent)}.nav-cv{border-bottom:1px solid var(--accent)}.nav-cv span{margin-left:12px;color:var(--accent)}.hero{display:grid;grid-template-columns:1.02fr 1fr;align-items:center;min-height:690px;gap:12px;padding-block:64px 70px}.hero-copy{position:relative;z-index:1}.intro{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:10px;margin-bottom:28px}.status-dot{width:7px;height:7px;background:var(--accent);border-radius:50%}.hero h1{font-size:clamp(3rem,5.8vw,5.6rem);line-height:1.08;letter-spacing:-.04em;white-space:nowrap}.hero h1 em{font-style:normal;color:var(--accent)}.hero-description{max-width:440px;color:var(--muted);font-size:16px;line-height:1.9;margin-top:30px}.hero-actions{display:flex;align-items:center;gap:30px;margin-top:34px}.button{display:inline-flex;justify-content:center;align-items:center;gap:22px;min-height:54px;padding:12px 24px;border-radius:3px;font-size:14px;font-weight:700;transition:background .2s,transform .2s}.primary{background:var(--accent);color:var(--dark)}.primary:hover{background:oklch(94% .1 128);transform:translateY(-2px)}.text-link{display:inline-flex;align-items:center;gap:15px;font-size:14px;font-weight:600;min-height:44px}.hero-location{font-size:12px;color:var(--muted);margin-top:32px}.gravity-scene{position:relative;width:100%;min-width:0;align-self:stretch;display:flex;flex-direction:column;min-height:540px}.scene-heading{display:flex;justify-content:space-between;padding:12px 0 0 25px;font-size:11px;color:var(--muted)}.scene-plus{font-size:18px}#gravity{width:100%;height:440px;display:block;flex:1;min-height:300px;touch-action:pan-y}.scene-controls{display:flex;gap:12px;align-items:center;justify-content:center;font-size:11px;position:relative;z-index:1}.scene-controls button{background:none;border:1px solid var(--line);padding:8px 12px;min-height:38px;border-radius:3px}.scene-controls button:hover{border-color:var(--accent)}.scene-controls label{display:flex;align-items:center;gap:9px;color:var(--muted)}.scene-controls input{width:65px;accent-color:var(--accent);min-height:38px}.scene-controls output{min-width:30px;color:var(--ink)}.scene-hint{font-size:10px;color:var(--muted);text-align:center;margin-top:10px}.current-strip{border-block:1px solid var(--line)}.current-strip .wrap{display:flex;gap:45px;align-items:center;padding-block:23px}.current-strip span:first-child{color:var(--muted);font-size:12px;margin-right:auto}.current-strip a{font-size:19px;font-weight:650;letter-spacing:-.02em}.current-strip span[aria-hidden]{color:var(--accent);font-size:21px}.current-strip .strip-scroll{margin-left:auto;color:var(--accent)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:64px}.section-heading>p{font-size:14px;color:var(--muted);max-width:400px}.work{padding-top:115px}.feature{display:grid;grid-template-columns:1.22fr 1fr;gap:72px;align-items:center;margin-bottom:105px;scroll-margin-top:40px}.feature-reverse{grid-template-columns:1fr 1.22fr}.feature-reverse .project-art{order:2}.feature-reverse .feature-copy{order:1}.project-art{padding:35px 25px 0;background:oklch(28% .025 155);overflow:hidden;border-radius:7px;min-width:0}.project-art img{width:100%;height:auto;border-radius:4px;transition:transform .45s cubic-bezier(.22,1,.36,1)}.project-art:hover img{transform:translateY(-5px)}.contactter-art{background:oklch(32% .045 160)}.opennan-art{background:oklch(33% .05 290)}.bestsignal-art{background:oklch(27% .04 175)}.art-caption{display:block;font-size:10px;letter-spacing:.02em;color:var(--ink);padding:18px 0;text-align:left}.project-label{font-size:11px;color:var(--accent);margin-bottom:16px}.feature h3{font-size:35px;letter-spacing:-.035em;font-weight:600}.feature-copy>p:not(.project-label):not(.project-summary){font-size:14px;color:var(--muted);margin-top:18px;line-height:1.85}.project-summary{font-size:20px;line-height:1.5;margin-top:18px;color:var(--ink)}.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:23px 0 18px}.tags li{font-size:10px;border:1px solid var(--line);border-radius:3px;padding:3px 8px;color:var(--muted)}.chart-art{background:var(--bg);padding:25px 20px 18px;min-height:270px;border-radius:4px;display:flex;flex-direction:column;justify-content:space-between}.chart-top{display:flex;flex-direction:column;gap:4px}.chart-top strong{font-size:23px;font-weight:700;letter-spacing:-.03em}.chart-top strong span{color:var(--accent)}.chart-top>span{font-size:9px;color:var(--muted)}.chart-art svg{width:100%;height:auto;margin-top:25px}.chart-bottom{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);padding-top:12px}.directory-section{background:var(--surface);padding-block:90px 100px;border-block:1px solid var(--line)}.directory-section .section-heading{margin-bottom:38px}.filters{display:flex;flex-wrap:wrap;gap:8px}.filters button{border:1px solid var(--line);background:none;border-radius:4px;padding:8px 17px;min-height:44px;font-size:12px;color:var(--muted)}.filters button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--dark)}.project-count{font-size:11px;color:var(--muted);margin:21px 0 8px}.project-row{border-bottom:1px solid var(--line)}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}.project-row summary{display:grid;grid-template-columns:2fr 1fr 1fr 30px;gap:20px;align-items:center;min-height:82px;padding:18px 8px}.project-row summary:hover .project-name{color:var(--accent)}.project-name{font-size:18px;font-weight:550;letter-spacing:-.02em}.project-category,.project-status{font-size:11px;color:var(--muted)}.row-plus{justify-self:end;font-size:23px;line-height:1;transition:transform .2s;color:var(--accent)}details[open]>summary .row-plus{transform:rotate(45deg)}.project-detail{padding:0 8px 26px;max-width:740px}.project-detail>p{color:var(--muted);font-size:14px}.project-detail .tags{margin-block:16px 8px}.project-row[hidden]{display:none}.earlier-work{margin-top:42px;border:1px solid var(--line);border-radius:4px;padding:0 24px}.earlier-work>summary{display:flex;gap:20px;align-items:center;min-height:76px;font-size:17px;font-weight:600}.earlier-work>summary>span:not(.row-plus){font-weight:400;color:var(--muted);font-size:11px;margin-left:auto}.earlier-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px 40px;padding:15px 0 30px}.earlier-grid h3{font-size:14px}.earlier-grid p{font-size:12px;color:var(--muted);margin-top:5px}.about{display:grid;grid-template-columns:.7fr 1.3fr;gap:100px;padding-block:125px 110px}.about-heading img{border-radius:50%;border:3px solid var(--line);margin-bottom:25px}.about-heading>p{font-size:22px;line-height:1.5;letter-spacing:-.02em;margin-bottom:14px}.about-heading .text-link{font-size:12px;color:var(--muted)}.about-copy h2{font-size:clamp(2rem,3.5vw,3.1rem)}.about-lead{font-size:23px;line-height:1.55;margin-top:26px;letter-spacing:-.015em}.about-copy>p:not(.about-lead){color:var(--muted);font-size:14px;line-height:1.9;margin-top:22px;max-width:65ch}.skills{margin-top:32px;display:grid;grid-template-columns:1fr 1fr;gap:25px 35px}.skills h3{font-size:12px;font-weight:600;color:var(--accent);margin-bottom:8px}.skills p{font-size:12px;color:var(--muted);line-height:1.8}.experience-section{padding-bottom:115px}.experience-section .section-heading{border-top:1px solid var(--line);padding-top:80px;margin-bottom:40px}.timeline article{display:grid;grid-template-columns:1fr 2fr;gap:30px;padding:30px 0;border-bottom:1px solid var(--line)}.timeline-date{font-size:12px;color:var(--muted)}.timeline h3{font-size:20px;letter-spacing:-.015em;font-weight:600}.timeline .company{font-size:13px;color:var(--accent);margin-top:8px}.timeline article div>p:last-child:not(.company){font-size:13px;color:var(--muted);margin-top:12px}.contact-section{background:var(--accent);color:var(--dark);padding-block:85px 65px}.contact-inner>p{font-size:14px;margin-bottom:24px}.contact-inner h2{font-size:clamp(2.8rem,6vw,5.4rem);position:relative;max-width:950px}.contact-inner h2>span{font-size:1.7em;position:absolute;right:0;top:-.16em;font-weight:300}.contact-email{display:inline-flex;gap:25px;align-items:center;font-size:clamp(1.2rem,2.4vw,1.8rem);letter-spacing:-.02em;margin-top:30px;border-bottom:1px solid var(--dark);padding-bottom:6px}.contact-links{display:flex;gap:32px;flex-wrap:wrap;margin-top:60px;font-size:13px}.contact-links a{padding-block:7px}.contact-links a:last-child{margin-left:auto}.contact-section a:hover{text-decoration:underline}.contact-section a:focus-visible{outline-color:var(--dark)}footer{display:flex;justify-content:space-between;gap:20px;padding-block:30px;font-size:11px;color:var(--muted)}footer a{color:var(--ink)}.error-page{padding-block:15vh}.error-page h1{font-size:clamp(3rem,7vw,6rem);margin-block:24px 36px}.error-page>p{color:var(--muted)}
@media(min-width:1600px){.hero{min-height:750px}.gravity-scene{min-height:580px}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.hero{gap:0;min-height:620px}.hero h1{font-size:5.5vw}.hero-description{max-width:360px;font-size:14px}.gravity-scene{min-height:480px}.scene-controls{gap:6px}.scene-controls button{padding:8px}.scene-controls label{gap:5px}.scene-controls input{width:45px}.feature{gap:40px}.current-strip .wrap{gap:25px}.about{gap:60px}.feature h3{font-size:30px}.project-summary{font-size:18px}.section-heading>p{max-width:320px}}
@media(max-width:800px){.wrap{width:calc(100% - 44px)}.site-header{min-height:85px;gap:14px}.site-header nav{gap:18px;font-size:12px}.identity{font-size:16px;gap:8px}.orbit-mark{width:32px;height:32px;font-size:21px}.site-header nav a[href="#experience"]{display:none}.hero{grid-template-columns:1fr;padding-block:52px 36px}.hero h1{font-size:clamp(3rem,8.5vw,5.5rem);white-space:normal}.hero-description{max-width:480px;font-size:15px}.hero-copy{padding-left:5px}.hero-location{margin-top:22px}.gravity-scene{min-height:430px;max-width:590px;margin:18px auto 0}.scene-heading{padding-left:0}#gravity{height:345px}.scene-controls{gap:13px}.scene-controls label{gap:9px}.scene-controls input{width:85px}.scene-controls button{padding:8px 12px}.current-strip .wrap{flex-wrap:wrap;gap:15px 22px}.current-strip span:first-child{flex-basis:100%}.current-strip a{font-size:16px}.current-strip .strip-scroll{display:none}.section-heading{align-items:flex-start;flex-direction:column;gap:22px;margin-bottom:42px}.section-heading>p{max-width:none}.work{padding-top:72px}.feature,.feature-reverse{grid-template-columns:1fr;gap:30px;margin-bottom:70px}.feature-reverse .project-art,.feature-reverse .feature-copy{order:initial}.project-art{padding:26px 22px 0}.feature h3{font-size:32px}.feature-copy{max-width:590px}.project-summary{font-size:21px}.directory-section{padding-block:65px}.project-row summary{grid-template-columns:1.5fr 1fr 24px;gap:12px;min-height:76px}.project-category{display:none}.project-name{font-size:16px}.project-status{font-size:10px}.about{grid-template-columns:1fr;gap:40px;padding-block:75px}.about-heading{display:grid;grid-template-columns:110px 1fr;gap:0 24px;align-items:center}.about-heading img{width:110px;height:110px;grid-row:span 2;margin:0}.about-heading>p{font-size:19px;margin:0}.about-heading .text-link{align-self:start}.about-copy h2{font-size:36px}.experience-section{padding-bottom:75px}.experience-section .section-heading{padding-top:55px}.timeline article{grid-template-columns:1fr 2fr;gap:25px}.timeline h3{font-size:17px}.contact-section{padding-block:65px 45px}.contact-inner h2>span{font-size:1.1em;right:0;top:0}.contact-links{gap:20px;margin-top:40px}.contact-links a:last-child{margin-left:0}footer{flex-wrap:wrap;font-size:10px}footer>span:nth-child(2){display:none}}
@media(max-width:420px){.wrap{width:calc(100% - 36px)}.identity-dot{display:none}.site-header nav{gap:14px;font-size:11px}.nav-cv span{margin-left:4px}.hero{padding-top:40px}.intro{font-size:11px;margin-bottom:22px}.hero h1{font-size:11vw;letter-spacing:-.04em}.hero-description{font-size:14px;margin-top:24px}.hero-actions{gap:20px;margin-top:27px}.button{font-size:12px;padding:12px 18px;gap:15px}.text-link{font-size:12px}.gravity-scene{min-height:360px}.scene-heading{font-size:10px}#gravity{height:275px;min-height:260px}.scene-controls{gap:8px;font-size:10px}.scene-controls input{width:57px}.scene-controls button{padding:7px 9px}.current-strip .wrap{gap:13px 18px}.current-strip a{font-size:14px}.current-strip span[aria-hidden]{font-size:16px}.filters{gap:6px}.filters button{padding:8px 11px;font-size:10px}.project-row summary{grid-template-columns:1.5fr 1fr 16px;gap:10px;padding-inline:0}.project-name{font-size:14px}.project-status{font-size:9px}.earlier-work{padding-inline:15px}.earlier-work>summary{flex-wrap:wrap;gap:8px;padding-block:15px;position:relative}.earlier-work>summary>span:not(.row-plus){margin-left:0;flex-basis:100%;font-size:9px}.earlier-work .row-plus{position:absolute;right:0;top:21px}.earlier-grid{grid-template-columns:1fr}.about-heading{gap:0 18px;grid-template-columns:90px 1fr}.about-heading img{width:90px;height:90px}.about-heading>p{font-size:17px}.about-heading .text-link{font-size:10px}.about-copy h2{font-size:31px}.about-lead{font-size:19px}.skills{gap:25px}.timeline article{grid-template-columns:1fr;gap:10px}.contact-inner h2{font-size:11vw}.contact-inner h2>span{display:none}.contact-email{font-size:5vw;gap:16px}.contact-links{gap:13px;font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.primary:hover,.project-art:hover img{transform:none}}
