@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:100 900;font-display:swap;src:url(/bundles/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2")}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/bundles/instrument-sans-latin-wght-normal-BbzFLZTg.woff2)format("woff2")}@font-face{font-family:Caveat;font-style:normal;font-weight:100 900;font-display:swap;src:url(/bundles/caveat-latin-wght-normal-C1hSzPvX.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/bundles/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2")}:root{--ease-ui:cubic-bezier(.22, 1, .36, 1);--duration-ui:.18s;--bg:#080b10;--surface:#11161e;--text:#f1f4f8;--muted:#a8b3c2;--subtle:#98a7ba;--line:#2b3543;--blue:#70bdff;--header:#080b10eb;--font:"Instrument Sans", Arial, sans-serif;--display:"Bricolage Grotesque", Arial, sans-serif;--mono:"JetBrains Mono", monospace;--gutter:clamp(64px, 8vw, 180px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f3f6fa;--surface:#e8eef5;--text:#142237;--muted:#53657a;--subtle:#546a83;--line:#cbd7e5;--blue:#086bbb;--header:#f3f6faf0;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:auto;scrollbar-gutter:stable;scroll-padding-top:105px}::view-transition-old(root){animation-duration:.22s;animation-timing-function:var(--ease-ui)}::view-transition-new(root){animation-duration:.22s;animation-timing-function:var(--ease-ui)}body{background:var(--bg);color:var(--text);font:17px/1.65 var(--font);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}img{max-width:100%;display:block}svg{width:24px;height:24px}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--display);font-weight:700;line-height:1.08}h2{letter-spacing:-.045em;text-wrap:balance;font-size:clamp(48px,5.2vw,80px)}::selection{color:#fff;background:#258af5}:focus-visible{outline:2px solid var(--blue);outline-offset:5px}[hidden]{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.skip-link{z-index:200;background:var(--blue);color:var(--bg);padding:12px 20px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:12px}.section{padding:110px var(--gutter)}.handwritten{color:var(--blue);letter-spacing:-.025em;font-family:Caveat,cursive;font-weight:500;line-height:1.12}.muted{color:var(--muted)}.text-link{border-bottom:1px solid var(--blue);align-items:center;gap:18px;min-height:44px;font-size:15px;font-weight:600;display:inline-flex}.text-link:hover{color:var(--blue)}.eyebrow{font:12px/1.6 var(--mono);color:var(--muted)}.site-header{z-index:50;background:var(--header);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:30px;height:80px;padding:0 3.4%;display:flex;position:fixed;inset:0 0 auto}.site-header.scrolled{border-color:var(--line)}.logo{min-height:44px;font:700 29px/1 var(--display);letter-spacing:-2px;align-items:center;display:inline-flex}.logo span{color:var(--blue)}.navigation{gap:26px;margin-left:auto;display:flex}.navigation a{align-items:center;min-height:44px;font-size:14px;font-weight:500;display:flex;position:relative}.navigation a:after{content:"";background:var(--blue);transform-origin:0;width:100%;height:1px;transition:transform .25s;position:absolute;bottom:3px;left:0;transform:scaleX(0)}.navigation a:hover,.navigation a.active{color:var(--blue)}.navigation a:hover:after,.navigation a.active:after{transform:scaleX(1)}.header-actions{align-items:center;gap:12px;display:flex}.resume-link{border:1px solid var(--line);border-radius:6px;align-items:center;gap:13px;min-height:44px;padding:0 17px;font-size:14px;font-weight:600;display:inline-flex}.resume-link:hover{border-color:var(--blue)}.icon-button{border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.icon-button:hover{background:var(--surface)}.menu-toggle{display:none}.social-rail{z-index:10;flex-direction:column;align-items:center;gap:12px;display:flex;position:fixed;bottom:0;left:2.4%}.social-rail a{width:44px;height:44px;color:var(--muted);place-items:center;display:grid}.social-rail a:hover{color:var(--blue)}.linkedin-icon{font:700 25px/1 Arial,sans-serif}.rail-line{background:var(--line);width:1px;height:95px;margin-top:12px}.intro-journey{isolation:isolate;position:relative}.avatar-track{z-index:2;pointer-events:none;position:absolute;inset:0}.avatar-stage{height:100svh;min-height:720px;position:sticky;top:0;overflow:hidden;-webkit-mask-image:linear-gradient(#000 65%,#0000 100%);mask-image:linear-gradient(#000 65%,#0000 100%)}.hero-portrait{width:49vw;max-width:820px;height:92%;position:absolute;top:50%;left:50%;transform:translate(-50%,-46%)}.avatar-float{height:100%;position:relative}.hero-portrait img{object-fit:contain;object-position:center bottom;width:100%;height:100%;-webkit-mask-image:linear-gradient(#000 74%,#0000 99%);mask-image:linear-gradient(#000 74%,#0000 99%)}.portrait-halo{background:radial-gradient(#1477d820,#0000 65%);position:absolute;inset:20% -10% 0}.hero{height:100svh;min-height:720px;padding:80px var(--gutter) 40px;position:relative}.hero-grid{justify-content:space-between;align-items:center;gap:30%;height:100%;padding-bottom:60px;display:flex}.hero-intro,.hero-role{z-index:3;position:relative}.hero-intro>.handwritten{margin-bottom:18px;font-size:38px;transform:rotate(-6deg)}.hero-intro h1 span{color:var(--blue)}.hero-summary{color:var(--muted);margin-top:23px;font-size:16px;line-height:1.65}.hero-summary strong{color:var(--text);font-weight:600}.hero-role{text-align:right}.hero-role>.handwritten{margin-bottom:17px;font-size:30px;transform:rotate(5deg)}.role-title{font:700 clamp(35px, 3.8vw, 65px)/1.02 var(--display);letter-spacing:-.055em;white-space:nowrap}.blue-period{color:var(--blue)}.hero-bottom{z-index:4;bottom:36px;left:var(--gutter);right:var(--gutter);justify-content:space-between;align-items:center;gap:25px;display:flex;position:absolute}.hero-actions{gap:12px;display:flex}.button{border:1px solid var(--line);border-radius:6px;justify-content:center;align-items:center;gap:20px;min-height:48px;padding:10px 20px;font-size:14px;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.button-primary{background:var(--blue);color:var(--bg);border-color:var(--blue)}.button-primary:hover{background:var(--text);border-color:var(--text)}.button-secondary{background:var(--bg)}.button-secondary:hover{border-color:var(--blue)}.scroll-cue{color:var(--muted);align-items:center;gap:12px;min-height:44px;font-size:13px;display:flex}.scroll-line{background:linear-gradient(transparent, var(--blue));width:1px;height:38px}.about-section{align-items:center;min-height:100svh;padding-block:120px;display:flex;position:relative}.about-copy{z-index:3;width:50%;max-width:660px;margin-left:auto;position:relative}.about-lead{font:600 clamp(28px, 2.6vw, 40px)/1.25 var(--display);letter-spacing:-.025em;text-wrap:pretty;margin-bottom:26px}.about-description{color:var(--muted);margin-top:18px;font-size:18px;line-height:1.75}.about-description a{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--blue);text-decoration-color:var(--blue);text-underline-offset:4px}.about-facts{color:var(--muted);flex-wrap:wrap;gap:10px 28px;padding:24px 0 12px;font-size:13px;display:flex}.experience-section .section-heading{text-align:center;margin-bottom:85px}.experience-section h2 .handwritten{vertical-align:middle;font-size:1.25em;display:inline-block}.timeline{position:relative}.timeline-rail{background:var(--line);width:1px;position:absolute;top:0;bottom:0;left:50%}.timeline-progress{background:linear-gradient(to bottom, var(--blue), color-mix(in srgb, var(--blue) 65%, white));width:100%;height:0;box-shadow:0 0 10px color-mix(in srgb, var(--blue) 58%, transparent);position:absolute;top:0;left:0}.experience{grid-template-columns:24% 19% 42%;justify-content:space-between;min-height:290px;padding:36px 0 62px;display:grid}.experience-company h3{font-size:clamp(22px,2vw,32px);line-height:1.1}.experience-company>.handwritten{margin-top:14px;font-size:clamp(28px,2.8vw,41px)}.experience-date{flex-direction:column;gap:8px;display:flex}.experience-year{font:500 clamp(28px, 2.9vw, 45px)/1.05 var(--mono);letter-spacing:-.07em;margin-bottom:16px}.experience-date>span{color:var(--muted);font-size:12px;line-height:1.6}.experience-date>span:first-of-type{font-family:var(--mono);letter-spacing:-.035em;font-size:11px}.experience-description{color:var(--muted);font-size:17px;line-height:1.7}.experience-points{margin:16px 0 0;padding-left:19px}.experience-points li{margin-top:10px;padding-left:4px}.experience-points li::marker{color:var(--blue)}.previous-experience{border-block:1px solid var(--line);margin-top:25px}.previous-experience summary{cursor:pointer;justify-content:space-between;align-items:center;padding:22px 0;font-weight:600;list-style:none;display:flex}.previous-experience summary::-webkit-details-marker{display:none}.previous-grid{grid-template-columns:repeat(3,1fr);gap:40px;padding:8px 0 30px;display:grid}.ai-section{border-top:1px solid var(--line);grid-template-columns:42% 50%;justify-content:space-between;row-gap:50px;display:grid}.ai-heading>.handwritten{margin-bottom:20px;font-size:32px}.ai-heading h2{font-size:clamp(48px,5vw,76px)}.section-intro{color:var(--muted);max-width:35ch;margin:28px 0 23px;font-size:18px}.ai-capabilities article{border-bottom:1px solid var(--line);grid-template-columns:36px 1fr;gap:24px;padding:26px 0;display:grid}.ai-capabilities article:first-child{padding-top:4px}.capability-icon{color:var(--blue)}.capability-icon svg{width:32px;height:32px}.ai-capabilities h3{letter-spacing:-.025em;margin-bottom:12px;font-size:24px}.ai-capabilities p{color:var(--muted);font-size:17px;line-height:1.7}.ai-workflow{background:var(--surface);border:1px solid var(--line);border-radius:12px;grid-column:1/-1;grid-template-columns:56px 1fr;gap:24px;padding:32px 36px;display:grid}.workflow-mark{color:var(--blue);font-size:44px;line-height:1}.ai-workflow h3{margin-bottom:10px;font-size:23px}.ai-workflow p{max-width:85ch;color:var(--muted)}.projects-section{padding-block:80px 100px;overflow:clip}.project-pin{width:100%}.is-pinned .project-pin{top:var(--project-offset);position:sticky}.projects-section .section-heading{justify-content:space-between;align-items:center;gap:25px;margin-bottom:30px;display:flex}.projects-section h2{font-size:clamp(48px,4.9vw,72px)}.projects-section h2 .handwritten{font-size:1.25em}.project-filters{gap:8px;display:flex}.project-filters button{border:1px solid var(--line);min-height:44px;color:var(--muted);border-radius:24px;padding:9px 18px;font-size:14px}.project-filters button[aria-pressed=true]{background:var(--blue);color:var(--bg);border-color:var(--blue)}.project-filters button:hover{border-color:var(--blue)}.project-viewport{overscroll-behavior-x:contain;scroll-behavior:auto;width:calc(100% + var(--gutter));scrollbar-width:none;scroll-snap-type:x proximity;padding:8px 0;overflow:auto hidden}.project-viewport::-webkit-scrollbar{display:none}.is-pinned .project-viewport{scroll-snap-type:none;overflow-x:hidden}.project-grid{padding-right:var(--gutter);align-items:stretch;gap:25px;width:max-content;display:flex}.project-card{background:var(--surface);border:1px solid var(--line);scroll-snap-align:start;border-radius:16px;flex-direction:column;flex-shrink:0;width:clamp(480px,44vw,630px);padding:18px 18px 0;display:flex}.project-image{text-align:left;background:#1b314b;border-radius:9px;width:100%;height:190px;padding:12px 12px 0;display:block;position:relative;overflow:hidden}.project-image-slate{background:#293349}.browser-bar{color:#526075;height:23px;font:9px/1 var(--mono);background:#f0f2f5;border-radius:5px 5px 0 0;align-items:center;gap:4px;padding:0 8px;display:flex}.browser-bar i{background:#acb6c4;border-radius:50%;width:5px;height:5px}.browser-bar span:first-of-type{margin-left:8px}.browser-bar span:last-child{margin-left:auto}.project-image img{object-fit:cover;object-position:top;width:100%;height:calc(100% - 23px);transition:transform .5s}.project-image:hover img{transform:scale(1.025)}.project-image-game,.project-image-friends{padding:0}.project-image-game img,.project-image-friends img{height:100%}.image-action{background:var(--bg);width:38px;height:38px;color:var(--blue);border-radius:50%;place-items:center;font-size:0;display:grid;position:absolute;bottom:12px;right:12px;box-shadow:0 2px 14px #0003}.image-action:after{content:"↗";font-size:23px}.project-detail{flex-direction:column;flex:1;padding:24px 10px 15px;display:flex}.project-card h3{letter-spacing:-.035em;font-size:29px}.project-category{margin:7px 0 14px;font-size:27px}.project-detail>p:not(.project-category){color:var(--muted);font-size:16px;line-height:1.6}.project-detail>.project-evidence{flex-wrap:wrap;gap:6px 20px;margin-top:14px;font-size:13px;display:flex}.project-evidence strong{color:var(--blue);font-weight:600}.project-tech-label{color:var(--subtle);font:11px/1.5 var(--mono);letter-spacing:.08em;margin-top:auto;padding-top:22px}.tags{flex-wrap:wrap;gap:15px;margin-top:10px;display:flex}.tags span{align-items:center;gap:7px;font-size:12px;display:flex}.tags img{object-fit:contain;filter:grayscale()brightness(0)invert(.9);width:22px;height:22px}:root[data-theme=light] .tags img,:root[data-theme=light] .tech-orb img{filter:brightness(.2)}.project-links{border-top:1px solid var(--line);gap:24px;margin-top:18px;display:flex}.project-links>a,.project-links>button{align-items:center;min-height:44px;padding:8px 0;font-size:14px;font-weight:600;display:inline-flex}.project-links>a:hover,.project-links>button:hover{color:var(--blue)}.project-navigation{align-items:center;gap:24px;padding-top:18px;display:flex}.project-progress{background:var(--line);flex:1;height:2px}.project-progress>span{background:var(--blue);transform-origin:0;height:100%;display:block}.project-arrows{gap:9px;display:flex}.project-navigation button{border:1px solid var(--line);border-radius:50%;width:44px;height:44px;font-size:22px}.project-navigation button:hover:not(:disabled){color:var(--blue);border-color:var(--blue)}.project-navigation button:disabled{opacity:.35;cursor:default}.tech-section .section-heading{text-align:center;margin-bottom:64px}.tech-section .section-heading>.handwritten{margin-top:15px;font-size:34px}.tech-group{border-top:1px solid var(--line);grid-template-columns:180px 1fr;align-items:start;gap:30px;padding:30px 0;display:grid}.tech-group h3{color:var(--muted);padding-top:25px;font-size:18px;line-height:1.4}.tech-list{flex-wrap:wrap;gap:26px 18px;margin:0;padding:0;list-style:none;display:flex}.tech-item{text-align:center;width:88px}.tech-orb{border:1px solid var(--line);background:var(--surface);border-radius:50%;place-items:center;width:70px;height:70px;margin:0 auto 10px;transition:border-color .2s,transform .2s;display:grid}.tech-orb img{object-fit:contain;filter:grayscale()brightness(0)invert(.9);width:31px;height:31px}.tech-item:hover .tech-orb{border-color:var(--blue);transform:translateY(-4px)}.tech-item>span{color:var(--muted);font-size:12px;line-height:1.4;display:block}.education-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:30px;margin-top:35px;padding-top:36px;display:flex}.education-row h3{margin-bottom:10px;font-size:23px}.education-row p{color:var(--muted);font-size:15px}.education-row .text-link{flex-shrink:0}.life-section{border-top:1px solid var(--line);grid-template-columns:39% 51%;align-items:center;gap:10%;display:grid}.life-photo{position:relative}.life-photo img{border:1px solid var(--line);border-radius:12px;width:100%;height:auto}.life-photo figcaption{color:var(--muted);margin-top:13px;font-size:13px}.life-copy h2{margin-bottom:28px;font-size:clamp(38px,4vw,60px)}.life-copy>p:not(.handwritten){color:var(--muted);margin-top:20px;font-size:18px;line-height:1.75}.life-copy>.life-closing{color:var(--text);margin-top:32px}.life-closing .handwritten{margin-top:4px;font-size:31px;display:inline-block}.contact-section{padding:100px var(--gutter) 75px;border-top:1px solid var(--line)}.contact-section h2{letter-spacing:-.055em;font-size:clamp(60px,8vw,124px)}.contact-section h2 a{color:var(--blue);white-space:nowrap}.contact-section h2 a span{margin-left:12px;font-weight:400;display:inline-block}.contact-intro{max-width:62ch;color:var(--muted);margin-top:28px;font-size:18px}.contact-bottom{justify-content:space-between;align-items:start;gap:40px;margin-top:45px;display:flex}.contact-bottom>div:first-child{flex-direction:column;align-items:start;display:flex}.contact-email{letter-spacing:-.035em;min-height:44px;font-size:clamp(20px,2.3vw,34px)}.copy-email{min-height:44px;color:var(--muted);padding:5px 0;font-size:13px}.copy-email:hover{color:var(--blue)}.contact-social{grid-template-columns:repeat(2,auto);gap:5px 35px;display:grid}.contact-social a{align-items:center;min-height:44px;font-size:16px;display:flex}.contact-social a:hover{color:var(--blue)}.site-footer{border-top:1px solid var(--line);margin-inline:var(--gutter);justify-content:space-between;align-items:center;gap:20px;padding:24px 0;display:flex}.site-footer p,.back-to-top{color:var(--muted);font-size:13px}.back-to-top{align-items:center;gap:15px;min-height:44px;display:flex}body.dialog-open{overflow:hidden}dialog{border:1px solid var(--line);background:var(--bg);width:min(1080px,94vw);max-height:92svh;color:var(--text);border-radius:14px;padding:28px;overflow:auto}dialog::backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000c}.dialog-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;display:flex}.dialog-header h2{letter-spacing:-.025em;margin-top:7px;font-size:27px}.dialog-close{flex-shrink:0;font-size:32px}.gallery-stage{background:var(--surface);border-radius:8px;overflow:hidden}.gallery-stage img{object-fit:contain;width:100%;height:min(56svh,600px)}.gallery-controls{justify-content:space-between;align-items:center;gap:20px;margin-top:16px;display:flex}.gallery-controls button{border:1px solid var(--line);border-radius:50%;min-width:44px;min-height:44px;font-size:22px}.gallery-controls p{color:var(--muted);text-align:center;font-size:14px}@media (width>=1000px) and (height<=850px){.project-image{height:160px}.project-detail{padding-top:18px}.project-card h3{font-size:27px}.project-detail>p:not(.project-category){font-size:15px}.project-category{margin-bottom:10px}.project-tech-label{padding-top:15px}}@media (width<=1199px){.navigation{gap:19px}.site-header{gap:20px}.hero-grid{gap:20%}.hero-intro h1{font-size:clamp(43px,4.5vw,60px)}.hero-role .role-title{font-size:3.7vw}.tech-group{grid-template-columns:150px 1fr;gap:20px}.tech-list{gap:25px 12px}.tech-item{width:80px}.experience{grid-template-columns:24% 20% 42%}}@media (width<=999px){:root{--gutter:40px}.social-rail{display:none}.section{padding-block:85px}.site-header{height:72px;padding-inline:30px}.menu-toggle{flex-direction:column;justify-content:center;gap:6px;display:flex}.menu-toggle span{background:var(--text);width:21px;height:1px;transition:transform .2s}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px)rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px)rotate(-45deg)}.navigation{background:var(--bg);border-bottom:1px solid var(--line);margin:0;padding:18px 30px 28px;display:none;position:absolute;top:72px;left:0;right:0;box-shadow:0 20px 30px #0003}.navigation.open{flex-direction:column;gap:2px;display:flex}.navigation a{min-height:52px;font-size:20px}.hero{height:880px;min-height:0;padding-top:125px}.hero-grid{align-items:flex-start;gap:30px;height:auto;padding:0}.hero-intro h1{font-size:54px}.hero-intro>.handwritten{font-size:32px}.hero-role{margin-top:58px}.hero-role .role-title{font-size:40px}.hero-role>.handwritten{font-size:26px}.avatar-track{height:880px;bottom:auto}.avatar-stage{height:880px;min-height:0;position:relative}.hero-portrait{width:560px;height:600px;top:auto;bottom:25px;left:50%;transform:translate(-50%)}.hero-bottom{bottom:26px}.about-section{min-height:0}.about-copy{width:100%;max-width:750px;margin:0 auto}.about-lead{font-size:35px}.experience-section .section-heading{margin-bottom:55px}.experience{grid-template-columns:23% 20% 43%;gap:0}.experience-company h3{font-size:23px}.experience-company>.handwritten{font-size:28px}.experience-date>span:first-of-type{font-size:11px}.experience-year{font-size:27px}.experience-description{font-size:16px}.ai-section{grid-template-columns:1fr;gap:42px}.ai-heading{max-width:650px}.section-intro{max-width:52ch}.ai-capabilities{grid-template-columns:1fr 1fr;gap:25px 35px;display:grid}.ai-capabilities article{padding-top:0}.ai-capabilities h3{font-size:22px}.project-card{width:520px}.project-image{height:205px}.projects-section .section-heading{flex-wrap:wrap}.tech-group{grid-template-columns:150px 1fr}.education-row{flex-direction:column;align-items:start;gap:14px}.life-section{grid-template-columns:40% 53%;gap:7%}.life-copy h2{font-size:39px}.life-copy>p:not(.handwritten){font-size:16px}.life-closing .handwritten{font-size:28px}.contact-section{padding-block:80px}.contact-bottom{gap:25px}}@media (width<=760px){:root{--gutter:22px}html{scroll-padding-top:90px}body{font-size:16px}h2{font-size:43px}.section{padding-block:68px}.site-header{gap:10px;height:68px;padding-inline:20px}.header-actions{gap:3px}.logo{font-size:27px}.resume-link{gap:8px;padding:0 12px;font-size:13px}.navigation{padding-inline:22px;top:68px}.hero{height:auto;min-height:860px;padding:110px var(--gutter) 30px;flex-direction:column;display:flex}.hero-grid{display:block}.hero-intro>.handwritten{margin-bottom:12px;font-size:29px;transform:none}.hero-intro h1{font-size:clamp(42px,12vw,65px);line-height:.97}.hero-summary{margin-top:17px;font-size:16px;line-height:1.6}.hero-role{text-align:left;margin-top:17px}.hero-role>.handwritten{display:none}.hero-role .role-title{letter-spacing:-.035em;font-size:22px}.role-title>br{display:none}.role-title>span:last-child{margin-left:6px}.hero-bottom{margin-top:21px;display:block;position:relative;inset:auto}.hero-actions{gap:9px}.hero-actions .button{gap:10px;padding:10px 13px;font-size:13px}.scroll-cue{display:none}.scroll-line{height:25px}.avatar-track,.avatar-stage{height:860px}.hero-portrait{width:100%;max-width:450px;height:425px;bottom:2px}.about-copy h2{margin-bottom:22px;font-size:35px}.about-lead{font-size:29px}.about-description{font-size:17px;line-height:1.7}.about-facts{gap:6px 18px}.experience-section .section-heading{text-align:left;margin-bottom:35px}.experience-section h2{font-size:43px}.timeline-rail{left:0}.experience{min-height:0;padding:20px 0 40px 24px;display:block}.experience-company h3{font-size:27px;line-height:1.15}.experience-company h3 br{display:none}.experience-company .handwritten{margin-top:9px;font-size:32px}.experience-date{gap:5px;margin:18px 0}.experience-year{display:none}.experience-date>span:first-of-type{letter-spacing:0;font-size:12px}.experience-date>span{font-size:13px}.experience-description{font-size:16px}.experience-points{padding-left:17px}.previous-experience{margin-top:15px}.previous-experience summary{gap:20px;font-size:16px}.previous-grid{grid-template-columns:1fr;gap:28px}.ai-section{gap:33px}.ai-heading>.handwritten{font-size:29px}.ai-heading h2{font-size:50px}.section-intro{margin-top:23px;font-size:17px}.ai-capabilities{grid-template-columns:1fr;gap:0}.ai-capabilities article{grid-template-columns:32px 1fr;gap:18px;padding:24px 0}.ai-capabilities h3{font-size:23px}.ai-capabilities p{font-size:16px}.ai-workflow{grid-template-columns:1fr;gap:12px;padding:24px 20px}.workflow-mark{font-size:34px}.ai-workflow h3{font-size:23px}.ai-workflow p{font-size:16px}.projects-section .section-heading{margin-bottom:22px;display:block}.projects-section h2{font-size:43px}.project-filters{gap:7px;margin-top:23px}.project-filters button{padding:9px 15px;font-size:13px}.project-grid{gap:14px}.project-card{border-radius:13px;width:calc(100vw - 52px);padding:12px 12px 0}.project-image{height:180px;padding:9px 9px 0}.project-image-game,.project-image-friends{padding:0}.project-detail{padding:20px 5px 12px}.project-card h3{font-size:26px}.project-category{margin-top:9px;font-size:25px}.project-detail>p:not(.project-category){font-size:16px}.project-detail>.project-evidence{flex-direction:column;gap:4px;font-size:13px}.tags{gap:12px 15px}.tags span{font-size:12px}.project-tech-label{font-size:11px}.project-links{gap:24px}.project-links>a,.project-links>button{font-size:14px}.project-navigation{gap:18px}.tech-section .section-heading{text-align:left;margin-bottom:34px}.tech-section h2{font-size:40px}.tech-section .section-heading>.handwritten{font-size:29px}.tech-group{padding:25px 0;display:block}.tech-group h3{margin-bottom:24px;padding:0;font-size:18px}.tech-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:25px 7px;display:grid}.tech-item{width:auto}.tech-orb{width:61px;height:61px}.tech-orb img{width:28px;height:28px}.tech-item>span{font-size:12px}.education-row{margin-top:15px;padding-top:28px}.education-row h3{font-size:23px;line-height:1.2}.education-row p{margin-top:8px;font-size:15px}.life-section{flex-direction:column;gap:35px;display:flex}.life-copy{order:0}.life-photo{order:1;width:100%;max-width:430px}.life-copy h2{font-size:42px}.life-copy>.handwritten{font-size:31px}.life-copy>p:not(.handwritten){font-size:17px}.life-closing .handwritten{font-size:29px}.contact-section{padding-block:65px 45px}.contact-section h2{font-size:clamp(43px,12vw,65px)}.contact-section h2 a{display:block}.contact-section h2 a span{margin-left:5px}.contact-intro{font-size:17px}.contact-bottom{margin-top:30px;display:block}.contact-email{font-size:25px}.contact-social{justify-content:start;gap:5px 35px;margin-top:25px}.site-footer{flex-wrap:wrap;gap:10px 20px;padding-block:20px}.site-footer p{font-size:12px}.site-footer .back-to-top{width:100%}dialog{padding:18px}.dialog-header h2{font-size:23px}.gallery-stage img{height:45svh}.gallery-controls{gap:12px}.gallery-controls p{font-size:13px}}@media (width<=370px){:root{--gutter:18px}.site-header{gap:4px;padding-inline:12px}.header-actions{gap:0}.resume-link{gap:5px;padding-inline:8px}.hero-actions .button{gap:7px;padding-inline:10px;font-size:12px}.hero-intro h1{font-size:43px}.hero-portrait{height:400px}.project-card{width:calc(100vw - 43px)}.project-image{height:160px}.tech-orb{width:56px;height:56px}.tech-list{column-gap:5px}.life-copy h2{font-size:37px}.contact-email{font-size:23px}}:root[data-motion=reduced]{scroll-behavior:auto}:root[data-motion=reduced] *,:root[data-motion=reduced] :before,:root[data-motion=reduced] :after{transition:none!important;animation:none!important}:root[data-motion=reduced] .avatar-track{height:100svh;bottom:auto}:root[data-motion=reduced] .avatar-stage{position:relative}:root[data-motion=reduced] .about-copy{width:100%;max-width:800px;margin-inline:auto}.motion-toggle[aria-pressed=true]{color:var(--blue)}@media (prefers-reduced-motion:reduce){:root:not([data-motion=full]){scroll-behavior:auto}}.language-switch{min-width:56px;min-height:44px;color:var(--muted);border-radius:6px;justify-content:center;align-items:center;gap:7px;font-size:12px;font-weight:600;display:inline-flex}.language-switch:hover{color:var(--blue);background:var(--surface)}.language-switch svg,.resume-link svg{flex-shrink:0;width:18px;height:18px}.theme-toggle svg{width:21px;height:21px}.theme-sun,:root[data-theme=light] .theme-moon{display:none}:root[data-theme=light] .theme-sun{display:block}.hero-bottom-minimal{justify-content:flex-end}.hero-portrait img{width:auto;max-width:none;height:100%;margin-inline:auto;-webkit-mask-image:none;mask-image:none}.ai-workflow>svg{width:32px;height:32px;color:var(--blue)}.ai-knowledge{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 25px;margin:22px 0 0;padding:23px 0 0;list-style:none;display:grid}.ai-knowledge li{color:var(--text);font-size:15px;line-height:1.55}.education-section{border-top:1px solid var(--line)}.education-heading{max-width:800px;margin-bottom:48px}.education-heading>.handwritten{margin-bottom:20px;font-size:32px}.education-heading h2{font-size:clamp(44px,4.8vw,70px)}.education-cards{grid-template-columns:1fr 1fr;gap:26px;display:grid}.education-cards article{background:var(--surface);border:1px solid var(--line);border-radius:12px;grid-template-columns:38px 1fr;gap:24px;padding:34px;display:grid}.education-icon svg{width:30px;height:30px;color:var(--blue)}.education-label{font:12px/1.6 var(--mono);color:var(--muted);margin-bottom:14px}.education-cards h3{letter-spacing:-.03em;margin-bottom:12px;font-size:27px;line-height:1.2}.education-cards h3+p{color:var(--text);font-size:16px}.education-note{color:var(--muted);margin:16px 0;font-size:16px;line-height:1.7}.life-copy>.life-achievement{color:var(--blue);align-items:center;gap:13px;margin:0 0 26px;font-size:15px;line-height:1.5;display:flex}.life-achievement svg{flex-shrink:0;width:24px;height:24px}.life-photo{align-self:start;margin-top:12px}.contact-social{gap:12px 16px}.contact-social a{border:1px solid var(--line);background:var(--surface);border-radius:8px;gap:13px;min-width:175px;padding:13px 18px}.contact-social a:hover{border-color:var(--blue)}.contact-social svg{width:21px;height:21px;color:var(--blue);flex-shrink:0}.copy-email{align-items:center;gap:9px;display:inline-flex}.copy-email svg{width:16px;height:16px}@media (width<=1199px){.site-header{gap:16px}.navigation{gap:18px}.header-actions{gap:6px}.education-cards article{gap:18px;padding:26px}}@media (width<=999px){.education-cards article{grid-template-columns:1fr}.ai-knowledge{grid-template-columns:1fr 1fr}.contact-bottom{flex-wrap:wrap}.hero-portrait img{object-fit:contain;max-width:100%}.life-section{align-items:start}}@media (width<=760px){.resume-link{gap:6px;padding-inline:10px}.header-actions{gap:0}.language-switch{gap:4px;min-width:45px}.language-switch svg{display:none}.hero{min-height:810px}.avatar-track,.avatar-stage{height:810px}.hero-portrait{height:420px;bottom:0}.hero-bottom-minimal{margin:0}.ai-workflow{grid-template-columns:1fr}.ai-knowledge{grid-template-columns:1fr;gap:12px}.education-cards{grid-template-columns:1fr;gap:18px}.education-heading{margin-bottom:32px}.education-heading h2{font-size:43px}.education-cards article{grid-template-columns:30px 1fr;gap:15px;padding:24px 20px}.education-cards h3{font-size:24px}.education-label{font-size:11px}.life-copy>.life-achievement{font-size:14px}.contact-social{grid-template-columns:1fr 1fr;gap:10px}.contact-social a{gap:10px;min-width:0;padding:12px;font-size:14px}.contact-social svg{width:19px;height:19px}}@media (width<=370px){.resume-link svg{display:none}.language-switch{min-width:42px}.hero{min-height:780px}.avatar-track,.avatar-stage{height:780px}.hero-portrait{height:390px}.education-cards article{grid-template-columns:1fr}.contact-social a{gap:8px;font-size:13px}}@media (width>=1000px) and (height<=850px){.projects-section .section-heading{margin-bottom:16px}.projects-section h2{font-size:48px}.project-image{height:130px}.project-detail{padding-top:16px}.project-category{margin-bottom:8px;font-size:25px}.project-detail>.project-evidence{margin-top:8px}.project-tech-label{padding-top:12px}.project-links{margin-top:12px}.project-navigation{padding-top:10px}}.copy-toast{z-index:1100;bottom:max(24px, env(safe-area-inset-bottom));border:1px solid var(--blue);background:var(--surface);width:max-content;max-width:calc(100vw - 32px);color:var(--text);text-align:center;opacity:0;visibility:hidden;transition:opacity var(--duration-ui), transform var(--duration-ui) var(--ease-ui), visibility var(--duration-ui);border-radius:12px;padding:14px 20px;font-size:14px;position:fixed;left:50%;transform:translate(-50%,12px);box-shadow:0 12px 40px #0004}.copy-toast.is-visible{opacity:1;visibility:visible;transform:translate(-50%)}.project-image img{transition:transform .5s var(--ease-ui), opacity .3s ease}.project-image img.image-loading{opacity:0}:is(.icon-button,.language-switch,.contact-links a,.project-controls button){transition:background var(--duration-ui), border-color var(--duration-ui), color var(--duration-ui), box-shadow var(--duration-ui)}:is(.icon-button,.language-switch,.contact-links a,.project-controls button):focus-visible{outline:2px solid var(--blue);outline-offset:4px;box-shadow:0 0 0 6px color-mix(in srgb, var(--blue) 12%, transparent)}:root .pswp{--pswp-bg:#080b10;--pswp-icon-color:#f1f4f8;--pswp-icon-color-secondary:#080b10;--pswp-icon-stroke-color:#080b10;--pswp-root-z-index:2000;color:#f1f4f8;font-family:var(--font)}.pswp .pswp__button{min-width:48px;min-height:48px}.pswp .pswp__icn{width:32px;max-width:none;height:32px}.pswp .pswp__button--arrow .pswp__icn{width:60px;height:60px}.pswp :focus-visible{outline-offset:-4px;outline:2px solid #70bdff}.pswp__project-details{padding:16px 24px max(18px, env(safe-area-inset-bottom));text-align:center;pointer-events:none;background:linear-gradient(#0000,#080b10 16%);font-size:14px;position:absolute;bottom:0;left:0;right:0}.pswp__project-details strong{font-family:var(--display);font-size:18px;display:block}.pswp__project-details p{color:#a8b3c2}.pswp__project-details a{color:#70bdff;pointer-events:auto;align-items:center;min-height:36px;display:inline-flex}@media (width<=599px){.pswp__project-details{padding-inline:20px;font-size:12px}.pswp__project-details strong{font-size:16px}}@media (width<=760px){.intro-journey{grid-template-columns:minmax(0,1fr);display:grid}.intro-journey>.hero{grid-row:1;height:auto;min-height:0;padding-bottom:20px}.intro-journey>.avatar-track{grid-row:2;height:auto;position:relative;inset:auto}.avatar-track .avatar-stage{height:clamp(320px,50svh,430px)}.avatar-stage .hero-portrait{width:100%;height:100%;bottom:0}.intro-journey>.about-section{grid-row:3;padding-top:36px}.hero-summary{max-width:30ch}.project-card{width:min(440px,100vw - 54px)}.project-image{aspect-ratio:16/9;height:auto}.project-image img{height:calc(100% - 23px)}.project-image-game img,.project-image-friends img{height:100%}.project-card h3{font-size:clamp(23px,6vw,28px)}.project-detail>p:not(.project-category){line-height:1.55}.project-links{flex-wrap:wrap}.project-links a,.project-links button{align-items:center;min-height:44px;display:inline-flex}}@media (width<=999px),(pointer:coarse),(height<=699px){.project-viewport{scroll-snap-type:x proximity}.project-card{scroll-snap-stop:normal}}@media (width>=1000px) and (height<=760px){.hero,.avatar-stage{min-height:620px}.hero-grid{padding-bottom:20px}.hero-portrait{height:88%}}@media (width>=1000px) and (height>=700px) and (height<=740px){.projects-section h2{font-size:42px}.projects-section .section-heading{margin-bottom:12px}.project-image{height:90px}}.section-kicker,.hero-greeting,.role-context{color:var(--blue);font:600 15px/1.4 var(--font);letter-spacing:0}.hero-greeting{margin-bottom:18px}.hero-intro h1{letter-spacing:-.065em;font-size:clamp(56px,5.8vw,102px);line-height:.94}.hero-summary{max-width:32ch;margin-top:28px;font-size:clamp(18px,1.5vw,22px);line-height:1.5}.hero-grid{gap:min(29vw,430px)}.hero-role{max-width:26ch}.role-context{color:var(--muted);margin-bottom:14px}.role-title{white-space:normal;font-size:clamp(34px,3.4vw,58px);line-height:1}.hero-portrait{aspect-ratio:2/3;width:clamp(340px,33vw,490px);max-width:none;height:auto;top:auto;bottom:0;left:56%;overflow:visible;transform:translate(-50%)}.avatar-stage{-webkit-mask-image:none;mask-image:none}.hero-portrait img{object-fit:contain;object-position:center bottom;width:100%;max-width:100%;height:100%;box-shadow:none;border-radius:0;-webkit-mask-image:linear-gradient(#000 84%,#0000 100%);mask-image:linear-gradient(#000 84%,#0000 100%)}.portrait-halo{z-index:-1;background:radial-gradient(#166ca745,#0000 70%);inset:10% -10%}.about-copy{padding-block:36px}.about-copy h2{margin-bottom:28px;font-size:clamp(43px,4vw,66px)}.experience-section .section-heading,.tech-section .section-heading{text-align:left}.experience{border-top:1px solid var(--line)}.experience-company .company-name{color:var(--blue);font:600 clamp(18px, 1.7vw, 24px)/1.3 var(--font);margin-top:15px}.experience-year{font-family:var(--display);letter-spacing:-.04em;font-size:clamp(27px,2.5vw,38px);font-weight:600}.experience-date>span,.experience-date>span:first-of-type,.eyebrow,.education-label{font:500 14px/1.5 var(--font);letter-spacing:0;color:var(--muted)}.ai-heading>.section-kicker,.education-heading>.section-kicker{margin-bottom:18px}.ai-case{border-block:1px solid var(--line);grid-column:1/-1;grid-template-columns:36% 1fr;gap:7%;padding:38px 0;display:grid}.ai-case h3{font-size:clamp(24px,2.5vw,38px)}.ai-case p{color:var(--muted);max-width:65ch;font-size:17px;line-height:1.7}.ai-workflow{background:0 0;border:0;border-radius:0;padding:12px 0 0}.ai-knowledge li,.tech-item>span{font-size:14px}.project-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;width:clamp(500px,41vw,590px);padding:16px}.project-image{background:var(--bg);border:0;border-radius:8px;height:clamp(170px,22vh,240px);padding:0}.project-image img,.project-image-game img,.project-image-friends img{object-fit:contain;width:100%;height:100%}.project-detail{padding:22px 4px 0}.project-category{color:var(--blue);font:600 14px/1.5 var(--font);margin:8px 0 15px}.project-detail>p:not(.project-category),.project-detail>.project-evidence{font-size:15px}.tags span{font-size:14px}.tags{margin-top:auto;padding-top:22px}.education-cards{border-top:1px solid var(--line);gap:0}.education-cards article{background:0 0;border:0;border-radius:0;padding:32px 32px 0 0}.education-cards article+article{border-left:1px solid var(--line);padding-left:32px}.life-copy>.handwritten{margin-bottom:22px;font-size:32px}.life-photo img{border-radius:8px}.contact-social a{border:0;border-bottom:1px solid var(--line);background:0 0;border-radius:0;padding-inline:0}@media (width<=999px){.hero-grid{gap:24px}.hero-portrait{width:min(48vw,440px);height:auto;max-height:none;bottom:0;left:50%}.ai-case{grid-template-columns:1fr;gap:16px}.project-card{width:min(550px,65vw)}}@media (width<=760px){.hero{padding-top:110px}.hero-intro h1{font-size:clamp(48px,13vw,68px)}.hero-summary{margin-top:22px;font-size:18px}.hero-role{text-align:left;margin-top:24px}.hero-role .role-title{font-size:28px}.role-context{display:none}.avatar-track .avatar-stage{height:min(64svh,500px);min-height:370px;overflow:visible}.avatar-stage .hero-portrait{width:min(72vw,340px);height:auto;bottom:0}.about-section{padding-top:62px!important}.about-copy{padding-block:0}.experience-company .company-name{margin-top:10px;font-size:19px}.experience-date>span:first-of-type,.experience-date>span{font-size:14px}.ai-case{padding-block:28px}.project-card{width:min(440px,100vw - 44px);padding:13px}.project-image{aspect-ratio:16/9;height:auto}.project-card h3{font-size:25px}.tags span{font-size:13px}.education-cards{display:block}.education-cards article{padding:28px 0}.education-cards article+article{border-left:0;border-top:1px solid var(--line);padding-left:0}.education-label{font-size:14px}.life-section{flex-direction:column;gap:0;display:flex}.life-copy{display:contents}.life-copy>.handwritten{order:0;margin-bottom:14px}.life-copy h2{order:1;margin-bottom:22px}.life-copy>.life-achievement{order:2}.life-photo{order:3;width:100%;max-width:none;margin:4px 0 18px}.life-copy>p:not(.handwritten):not(.life-achievement){order:4;margin-top:16px}.contact-social a{min-width:0}}.site-header.scrolled,.experience,.ai-section,.ai-capabilities article,.ai-case,.tech-group,.education-section,.education-cards,.life-section,.contact-section,.site-footer,.project-links,.contact-social a{border-top:0;border-bottom:0}.site-header.scrolled{box-shadow:0 12px 30px #0002}.previous-experience{background:0 0;border:0;border-radius:0;padding-inline:0}.ai-section{background:var(--surface)}.ai-capabilities article+article{margin-top:12px}.ai-case{background:var(--bg);border:0;border-radius:10px;padding:34px}.tech-group+.tech-group{margin-top:16px}.contact-section{background:var(--surface)}.site-footer{padding-top:34px;padding-bottom:34px}.language-switch{font-size:14px}@media (width<=760px){.ai-case{padding:26px 20px}:root[data-motion=reduced] .intro-journey>.avatar-track{height:auto}.site-footer p{font-size:13px}}.site-header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);column-gap:clamp(16px,2vw,38px);height:78px;padding-inline:clamp(24px,3.2vw,64px);display:grid}.site-header .logo{justify-self:start}.site-header .navigation{background:color-mix(in srgb, var(--surface) 82%, transparent);border-radius:999px;justify-self:center;gap:2px;margin-left:0;padding:5px}.site-header .navigation a{min-height:38px;color:var(--muted);white-space:nowrap;transition:color var(--duration-ui), background var(--duration-ui);border-radius:999px;padding-inline:15px;font-size:13px;font-weight:600}.site-header .navigation a:after{display:none}.site-header .navigation a:hover{color:var(--text);background:color-mix(in srgb, var(--text) 7%, transparent)}.site-header .navigation a.active{color:var(--blue);background:color-mix(in srgb, var(--blue) 13%, transparent)}.site-header .header-actions{justify-self:end;gap:8px}.site-header .resume-link,.site-header .language-switch,.site-header .theme-toggle{border-radius:10px;height:42px;min-height:42px}.site-header .resume-link{background:color-mix(in srgb, var(--blue) 13%, transparent);color:var(--text);border-color:#0000;gap:9px;padding-inline:14px}.site-header .resume-link:hover{background:color-mix(in srgb, var(--blue) 20%, transparent)}.site-header .language-switch{min-width:60px;color:var(--text);font-size:13px}.site-header .theme-toggle{width:42px;color:var(--text);background:color-mix(in srgb, var(--text) 6%, transparent);padding:0;line-height:0}.site-header .theme-toggle:hover{color:var(--blue);background:color-mix(in srgb, var(--blue) 13%, transparent)}.site-header .theme-toggle>span{place-items:center;width:22px;height:22px}.site-header .theme-toggle svg{width:21px;height:21px;display:block}.site-header .theme-toggle .theme-moon,:root[data-theme=light] .site-header .theme-toggle .theme-sun{display:grid}.site-header .theme-toggle .theme-sun,:root[data-theme=light] .site-header .theme-toggle .theme-moon{display:none}@media (width<=1199px) and (width>=1000px){.site-header .navigation a{padding-inline:11px}.site-header .header-actions{gap:4px}.site-header .resume-link{padding-inline:11px}}@media (width<=999px){.site-header{grid-template-columns:minmax(0,1fr) auto;height:72px}.site-header .navigation{background:var(--bg);border-radius:0 0 18px 18px;justify-self:stretch;margin:0;padding:18px 30px 28px}.site-header .navigation.open{gap:4px}.site-header .navigation a{min-height:48px;padding-inline:16px;font-size:17px}}@media (width<=760px){.site-header{height:68px;padding-inline:20px}.site-header .header-actions{gap:3px}.site-header .resume-link{padding-inline:10px}.site-header .language-switch{min-width:44px}.site-header .navigation{padding-inline:20px}}@media (width<=370px){.site-header{padding-inline:12px}.site-header .resume-link{padding-inline:8px}}.timeline-rail{pointer-events:none;width:2px;margin-left:-1px}.timeline .experience{position:relative}.timeline .experience:before,.timeline .previous-experience summary:before{content:"";background:color-mix(in srgb, var(--blue) 30%, var(--line));width:9px;height:9px;box-shadow:0 0 0 4px var(--bg);transition:background .26s ease, box-shadow .32s ease, transform .32s var(--ease-ui);border-radius:50%;position:absolute;top:40px;left:calc(50% - 4px)}.timeline .experience.is-reached:before,.timeline .previous-experience summary.is-reached:before{background:var(--blue);box-shadow:0 0 0 4px var(--bg), 0 0 0 7px color-mix(in srgb, var(--blue) 20%, transparent), 0 0 22px 5px color-mix(in srgb, var(--blue) 44%, transparent);transform:scale(1.12)}.timeline .previous-experience{z-index:1;margin-top:0;position:relative}.timeline .previous-experience summary{grid-template-columns:42% 42%;justify-content:space-between;align-items:center;gap:0;min-height:124px;padding:22px 0 34px;display:grid;position:relative}.previous-summary-copy{flex-direction:column;gap:5px;display:flex}.previous-title{font:700 clamp(22px, 1.8vw, 28px)/1.15 var(--display)}.previous-years{font:500 14px/1.4 var(--font);color:var(--muted)}.timeline .previous-experience summary>.previous-toggle{color:var(--blue);font:650 14px/1.3 var(--font);transition:color var(--duration-ui);justify-self:start;align-items:center;gap:10px;display:inline-flex}.timeline .previous-experience summary:hover>.previous-toggle{color:var(--text)}.previous-toggle svg{width:17px;height:17px;transition:transform var(--duration-ui) var(--ease-ui)}.previous-open-label,.timeline .previous-experience[open] .previous-closed-label{display:none}.timeline .previous-experience[open] .previous-open-label{display:inline}.timeline .previous-experience[open] .previous-toggle svg{transform:rotate(180deg)}.timeline .previous-grid{padding:0;display:block}.timeline .previous-experience:not([open])>.previous-grid{display:none}@media (width<=760px){.timeline .experience:before,.timeline .previous-experience summary:before{top:27px;left:-4px}.timeline .previous-experience summary{flex-direction:column;align-items:flex-start;gap:12px;min-height:0;padding:20px 0 28px 24px;display:flex}.previous-title{font-size:21px}.previous-years{display:block}.timeline .previous-experience summary>.previous-toggle{font-size:14px}}:root[data-motion=reduced] .timeline-progress{height:100%!important}:root[data-motion=reduced] .timeline .experience:before,:root[data-motion=reduced] .timeline .previous-experience summary:before{background:var(--blue);box-shadow:0 0 0 4px var(--bg);transform:none}.nowrap{white-space:nowrap}.split-line-mask{margin-bottom:-.1em;padding-bottom:.1em}.scroll-progress{z-index:60;pointer-events:none;height:2px;position:fixed;inset:0 0 auto}.scroll-progress span{background:linear-gradient(90deg, var(--blue), #c4e3ff);height:100%;box-shadow:0 0 14px color-mix(in srgb, var(--blue) 70%, transparent);transform-origin:0;display:block;transform:scaleX(0)}:root[data-motion=reduced] .scroll-progress{display:none}.stack-marquee{border-block:1px solid var(--line);-webkit-user-select:none;user-select:none;padding-block:clamp(26px,3.6vw,46px);overflow:hidden}.marquee-track{will-change:transform;width:max-content;display:flex}.marquee-group{flex-shrink:0;align-items:center;display:flex}.marquee-group span{font:800 clamp(42px, 6.2vw, 92px) / 1 var(--display);letter-spacing:-.045em;color:#0000;-webkit-text-stroke:1px color-mix(in srgb, var(--text) 34%, transparent);transition:color .35s var(--ease-ui), -webkit-text-stroke-color .35s var(--ease-ui);padding-inline:.32em}.marquee-group span:nth-of-type(3n+1){color:var(--text);-webkit-text-stroke-color:transparent}.marquee-group span:hover{color:var(--blue);-webkit-text-stroke-color:transparent}.marquee-group i{color:var(--blue);font-size:clamp(18px,2.2vw,32px);font-style:normal}.projects-section.is-pinned{height:calc(var(--project-height) + var(--project-travel) + 80px)}.project-card{isolation:isolate;transition:border-color .35s var(--ease-ui), box-shadow .35s var(--ease-ui);position:relative}.project-card:before,.project-card:after{content:"";border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .35s var(--ease-ui);position:absolute}.project-card:before{background:radial-gradient(380px circle at var(--mx,50%) var(--my,0%), var(--blue), transparent 60%);-webkit-mask-composite:xor;z-index:3;padding:1px;inset:-1px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.project-card:after{background:radial-gradient(560px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--blue) 10%, transparent), transparent 45%);z-index:-1;inset:0}.project-card:hover{box-shadow:0 24px 60px -30px color-mix(in srgb, var(--blue) 45%, transparent)}.project-card:hover:before,.project-card:hover:after{opacity:1}.project-image{aspect-ratio:16/8.2;background:var(--bg);border:1px solid var(--line);border-radius:10px;height:auto;padding:24px 0 0}.project-image:before{content:"";z-index:1;background:#ff5f57;border-radius:50%;width:7px;height:7px;position:absolute;top:9px;left:12px;box-shadow:12px 0 #febc2e,24px 0 #28c840}.project-image img,.project-image-game img,.project-image-friends img{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform .9s var(--ease-ui)}.project-card:hover .project-image img{transform:scale(1.045)}.project-index{font:500 12px/1 var(--mono);letter-spacing:.08em;color:var(--blue);margin-bottom:10px}.project-metrics{border-top:1px solid var(--line);margin:16px 0 0;padding-top:14px;display:flex}.project-metrics div{flex:1;min-width:0;padding-right:12px}.project-metrics div+div{border-left:1px solid var(--line);padding-left:14px}.project-metrics dt{font:700 22px/1.1 var(--display);letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums}.project-metrics dd{font:500 10.5px/1.35 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--subtle);margin:5px 0 0}.tech-orb{transition:border-color .3s var(--ease-ui), box-shadow .3s var(--ease-ui), transform .3s var(--ease-ui)}.tech-item:hover .tech-orb{box-shadow:0 0 0 5px color-mix(in srgb, var(--blue) 12%, transparent), 0 10px 30px -8px color-mix(in srgb, var(--blue) 55%, transparent);transform:translateY(-6px)scale(1.06)}.contact-section h2 a span{transition:transform .45s var(--ease-ui)}.contact-section h2 a:hover span{transform:translate(6px,-6px)rotate(8deg)}@media (width<=999px){.project-metrics dt{font-size:19px}.project-metrics dd{font-size:10px}}.tech-orb img{transition:filter .35s var(--ease-ui)}:root[data-theme=light] .tech-item:hover .tech-orb img,:root:not([data-theme=light]) .tech-item:hover .tech-orb img:not([src*=django],[src*=nextdotjs],[src*=playwright],[src*=vercel]){filter:none}.about-actions{flex-wrap:wrap;align-items:center;gap:18px clamp(28px,4vw,56px);margin-top:8px;display:flex}.life-teaser{text-align:left;color:var(--blue);grid-template-columns:auto 78px auto;align-items:center;gap:2px;padding:0;display:grid}.life-teaser-note{transition:transform .4s var(--ease-ui);font-size:27px;line-height:.95;transform:rotate(-4deg)}.life-teaser-arrow{width:78px;height:46px;stroke:var(--blue);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--ease-ui);margin-top:18px}.about-copy .life-teaser .life-teaser-photo{width:84px;height:auto;transition:transform .45s var(--ease-ui), box-shadow .45s var(--ease-ui);background:#f4f1ea;border-radius:3px;flex:none;padding:5px 5px 20px;display:block;position:relative;transform:rotate(6deg);box-shadow:0 14px 30px -12px #000a,0 0 0 1px #0000000f}.life-teaser-photo img{aspect-ratio:1;object-fit:cover;object-position:50% 30%;border-radius:1px;width:100%;height:auto}.life-teaser-photo span{text-align:center;color:#1c2b40;font:600 14px/1 Caveat,cursive;position:absolute;inset:auto 0 3px}.life-teaser:hover .life-teaser-note,.life-teaser:focus-visible .life-teaser-note{transform:rotate(-2deg)translateY(-2px)}.life-teaser:hover .life-teaser-arrow,.life-teaser:focus-visible .life-teaser-arrow{transform:translate(5px)}.life-teaser:hover .life-teaser-photo,.life-teaser:focus-visible .life-teaser-photo{box-shadow:0 20px 40px -14px color-mix(in srgb, var(--blue) 60%, #000), 0 0 0 1px #0000000f;transform:rotate(0)scale(1.08)}.life-teaser:focus-visible{outline:2px solid var(--blue);outline-offset:6px;border-radius:6px}html.drawer-open{overflow:hidden}dialog.life-drawer{background:0 0;border:0;border-radius:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}dialog.life-drawer::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0}dialog.life-drawer:before{content:"";z-index:3;background:linear-gradient(90deg, color-mix(in srgb, var(--blue) 55%, #06101c), var(--blue));pointer-events:none;clip-path:inset(0 0 0 100%);position:absolute;inset:0}dialog.life-drawer[open]:before{animation:1s cubic-bezier(.65,0,.35,1) both cover-curtain}dialog.life-drawer.is-closing:before{animation:none}dialog.life-drawer[open] .life-drawer-panel{animation:.72s cubic-bezier(.65,0,.35,1) .14s both cover-in}dialog.life-drawer.is-closing .life-drawer-panel{animation:.6s cubic-bezier(.65,0,.35,1) both cover-out}.life-drawer-panel{z-index:1;background:var(--bg);overscroll-behavior:contain;height:100%;padding:96px var(--gutter) 56px;grid-template-columns:minmax(0,39%) minmax(0,51%);align-content:center;align-items:center;gap:10%;display:grid;position:relative;overflow-y:auto}.life-drawer-close{z-index:2;border:1px solid var(--line);background:var(--surface);min-height:44px;transition:border-color .25s var(--ease-ui), color .25s var(--ease-ui);border-radius:999px;align-items:center;gap:10px;padding:0 18px 0 14px;font-size:15px;font-weight:600;display:inline-flex;position:absolute;top:22px;left:clamp(24px,3.2vw,64px)}.life-drawer-close svg{width:20px;height:20px;transition:transform .3s var(--ease-ui)}.life-drawer-close:hover{border-color:var(--blue);color:var(--blue)}.life-drawer-close:hover svg{transform:translate(-4px)}.life-drawer .life-photo{margin:0}.life-drawer .life-photo img{object-fit:cover;object-position:50% 30%;width:100%;max-height:calc(100dvh - 210px)}.life-drawer .life-copy h2{font-size:clamp(38px,4vw,60px)}.life-drawer[open] .life-drawer-panel>*{animation:cover-item .9s var(--ease-ui) both;animation-delay:.62s}.life-drawer[open] .life-drawer-panel>.life-copy{animation-delay:.74s}@keyframes cover-in{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes cover-out{0%{clip-path:inset(0)}to{clip-path:inset(0 100% 0 0)}}@keyframes cover-curtain{0%{clip-path:inset(0 100% 0 0)}50%{clip-path:inset(0)}to{clip-path:inset(0 0 0 100%)}}@keyframes cover-item{0%{opacity:0;transform:translate(-48px)}}@media (width<=999px){.life-drawer-panel{padding:88px 22px 48px;display:block}.life-drawer .life-photo{margin-bottom:30px}.life-drawer .life-photo img{max-height:48vh}.life-drawer-close{top:18px;left:18px}.life-teaser-note{font-size:24px}}:root{--curtain-ease:cubic-bezier(.77, 0, .18, 1)}.curtain{z-index:9000;visibility:hidden;pointer-events:none;position:fixed;inset:0}html.curtain-in .curtain,html.curtain-out .curtain,html.curtain-leave .curtain{visibility:visible}html.curtain-in .curtain,html.curtain-leave .curtain{pointer-events:auto}html.curtain-in{overflow:hidden}.curtain-blue,.curtain-panel{clip-path:inset(0 0 0 100%);position:absolute;inset:0}.curtain-blue{background:linear-gradient(90deg, color-mix(in srgb, var(--blue) 55%, #06101c), var(--blue))}.curtain-panel{background:radial-gradient(circle at 50% 62%, color-mix(in srgb, var(--blue) 14%, transparent), transparent 55%), var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}html.curtain-in .curtain-blue,html.curtain-in .curtain-panel{clip-path:inset(0)}html.curtain-leave .curtain-blue{animation:curtain-cover .6s var(--curtain-ease) both}html.curtain-leave .curtain-panel{animation:curtain-cover .6s var(--curtain-ease) .1s both}html.curtain-out .curtain-panel{animation:curtain-uncover .75s var(--curtain-ease) both}html.curtain-out .curtain-blue{animation:curtain-uncover .75s var(--curtain-ease) .12s both}.curtain-code,.curtain-logo{font:800 clamp(120px, 22vw, 300px) / .9 var(--display);letter-spacing:-.06em;color:var(--text);margin:0;padding-bottom:.04em;display:flex;overflow:hidden}.curtain-code span,.curtain-logo span{display:inline-block}.curtain-logo .dot{color:var(--blue)}.curtain-note{margin:0;font-size:clamp(28px,3vw,40px);transform:rotate(-3deg)}.curtain-bar{background:var(--line);border-radius:2px;width:min(260px,50vw);height:2px;overflow:hidden}.curtain-bar i{background:var(--blue);height:100%;box-shadow:0 0 12px var(--blue);transform-origin:0;display:block;transform:scaleX(0)}.curtain-status{font:500 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--subtle);margin:0}.curtain [data-curtain-intro],.curtain-logo{display:none}html.curtain-intro .curtain [data-curtain-intro]{display:block}html.curtain-intro .curtain-logo{display:flex}html.curtain-intro .curtain-code,html.curtain-intro [data-curtain-lang]{display:none}html.curtain-lang .curtain-bar i{transform:scaleX(1)}html.curtain-leave .curtain-code span{animation:curtain-char .8s var(--ease-ui) .28s both}html.curtain-leave .curtain-code span+span{animation-delay:.36s}html.curtain-leave .curtain-note{animation:curtain-fade .6s var(--ease-ui) .4s both}html.curtain-leave .curtain-bar i{animation:curtain-bar .65s var(--curtain-ease) .2s both}html.curtain-intro .curtain-logo span{animation:curtain-char .9s var(--ease-ui) .15s both}html.curtain-intro .curtain-logo span:nth-child(2){animation-delay:.23s}html.curtain-intro .curtain-logo span:nth-child(3){animation-delay:.31s}html.curtain-intro .curtain-note{animation:curtain-fade .7s var(--ease-ui) .45s both}html.curtain-intro .curtain-bar i{animation:curtain-bar .95s var(--curtain-ease) .2s both}html.curtain-intro .curtain-status{animation:curtain-status .6s var(--ease-ui) .5s both}@keyframes curtain-cover{0%{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}@keyframes curtain-uncover{0%{clip-path:inset(0)}to{clip-path:inset(0 100% 0 0)}}@keyframes curtain-char{0%{transform:translateY(105%)rotate(6deg)}}@keyframes curtain-fade{0%{opacity:0;transform:translateY(12px)rotate(-3deg)}}@keyframes curtain-status{0%{opacity:0}}@keyframes curtain-bar{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.cursor{display:none}html.has-cursor .cursor{z-index:8000;pointer-events:none;display:block;position:fixed;inset:0 auto auto 0}.cursor-ring{border:1px solid color-mix(in srgb, var(--blue) 70%, transparent);opacity:0;width:34px;height:34px;transition:width .35s var(--ease-ui), height .35s var(--ease-ui), margin .35s var(--ease-ui), background-color .3s var(--ease-ui), border-color .3s var(--ease-ui), opacity .3s var(--ease-ui);border-radius:50%;place-items:center;margin:-17px 0 0 -17px;display:grid;position:fixed;top:0;left:0}.cursor.is-visible .cursor-ring{opacity:1}.cursor.is-link .cursor-ring{background:color-mix(in srgb, var(--blue) 12%, transparent);width:56px;height:56px;margin:-28px 0 0 -28px}.cursor.is-view .cursor-ring{background:var(--blue);border-color:#0000;width:88px;height:88px;margin:-44px 0 0 -44px}.cursor-label{font:600 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#06101c;opacity:0;transition:opacity .2s var(--ease-ui)}.cursor.is-view .cursor-label{opacity:1}@media (width>=1000px){.hero-portrait{width:min(clamp(340px,33vw,490px),66.6667svh - 74.6667px)}}:root[data-theme=light] .curtain-blue,:root[data-theme=light] dialog.life-drawer:before{background:linear-gradient(90deg, var(--blue), #9fd0ff)}@media (width>=1000px){.projects-section{padding-block:36px 56px}.projects-section .section-heading{margin-bottom:14px}.projects-section h2{font-size:clamp(34px,3.6vw,50px)}.project-card{grid-template-columns:minmax(0,46%) minmax(0,1fr);column-gap:24px;width:min(860px,66vw);padding:14px;display:grid}.project-image{aspect-ratio:auto;height:100%;min-height:0}.project-detail{padding:4px 6px 4px 0}.project-index{margin-bottom:8px}.project-card h3{font-size:clamp(21px,2vw,26px)}.project-category{margin:4px 0 8px;font-size:13px}.project-detail>p:not(.project-category){-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:14px;line-height:1.5;display:-webkit-box;overflow:hidden}.project-metrics{margin-top:12px;padding-top:10px}.project-metrics dt{font-size:19px}.tags{padding-top:12px}.tags span{font-size:13px}.project-links{margin-top:10px}}html,body{overflow-x:clip}.role-title span{white-space:nowrap}@media (width<=999px){.avatar-track .avatar-stage{height:auto;min-height:0}.avatar-stage .hero-portrait{margin-inline:auto;position:relative;bottom:auto;left:auto;transform:none}.intro-journey>.about-section{padding-bottom:24px}}
