@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.fade-in-element{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s ease}.fade-in-element.visible{opacity:1;transform:translateY(0)}@font-face{font-display:swap;font-family:Fly Flower Song;font-style:normal;font-weight:400;src:url(/static/media/FlyFlowerSong.40e24328f494bf8d0855.ttf) format("truetype")}:root{--page-max-width:1200px;--page-gutter:clamp(1rem,3vw,2rem);--header-safe-offset:7.5rem;--color-dark:#372d2d;--color-light:#6b6363;--type-caption:clamp(0.75rem,1.5vw,0.8rem);--type-label:clamp(0.8rem,2vw,0.9rem);--type-body:clamp(0.9rem,2vw,1rem);--type-lead:clamp(1rem,3vw,1.25rem);--type-heading:clamp(1.5rem,4vw,2rem);--type-home-name:calc(var(--type-lead)*3)}@media (min-width:821px){html{font-size:90%}:root{--page-max-width:1080px}}*{box-sizing:border-box;margin:0;padding:0;-webkit-user-select:none;user-select:none}body{background:linear-gradient(10deg,#eeeee5,#f5f7f8 70%);color:#372d2d;color:var(--color-dark);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.app,body{height:100vh;height:100dvh;overflow:hidden}.app{position:relative}.header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);left:0;padding-block:clamp(1rem,3vw,2rem);padding-inline:clamp(1rem,3vw,2rem);padding-inline:var(--page-gutter);position:fixed;right:0;top:0;z-index:100}.header-content{grid-gap:clamp(1rem,3vw,2rem);align-items:center;display:grid;gap:clamp(1rem,3vw,2rem);grid-template-columns:1fr 1fr;margin:0 auto;max-width:1200px;max-width:var(--page-max-width)}.header-left,.header-right{align-items:center;display:flex}.header-right{justify-content:flex-end}.welcome-text{color:#372d2d;color:var(--color-dark);font-size:clamp(1rem,3vw,1.25rem);font-size:var(--type-lead);font-weight:400}.nav-links{display:flex;gap:clamp(1rem,3vw,2rem)}.nav-links a{align-items:center;color:#372d2d;color:var(--color-dark);display:flex;font-size:clamp(.9rem,2vw,1rem);font-size:var(--type-body);font-weight:400;min-height:44px;padding:clamp(.25rem,1vw,.5rem);text-decoration:none;transition:color .3s ease}.nav-links a:hover{color:#6b6363;color:var(--color-light)}.nav-links>:last-child{padding-right:0}.nav-button{align-items:center;background:none;border:none;color:#372d2d;color:var(--color-dark);cursor:pointer;display:flex;font-family:inherit;font-size:clamp(.9rem,2vw,1rem);font-size:var(--type-body);font-weight:400;min-height:44px;padding:clamp(.25rem,1vw,.5rem);text-decoration:none;transition:color .3s ease}.nav-button:hover{color:#6b6363;color:var(--color-light)}a:focus-visible,button:focus-visible{outline:2px solid #372d2d;outline:2px solid var(--color-dark);outline-offset:4px}.nav-links .active{color:#6b6363;color:var(--color-light);font-weight:500}@media (max-width:820px){body{overflow:auto;overflow-x:hidden}.app,body{height:auto}.app{overflow:visible}.header-content{gap:.75rem;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto;text-align:left}.header-left{justify-content:flex-start;min-width:0}.header-right{justify-content:flex-end}.welcome-text{font-size:clamp(.9rem,2vw,1rem);font-size:var(--type-body);white-space:nowrap}.nav-links{gap:clamp(.125rem,1vw,.5rem)}.nav-links a{min-height:40px;padding:.375rem}}@media (max-width:480px){:root{--page-gutter:clamp(0.75rem,3vw,1rem)}.nav-links{gap:0}.nav-links a{font-size:clamp(.8rem,2vw,.9rem);font-size:var(--type-label);padding-inline:.3rem}.header{padding-block:clamp(.75rem,2vw,1rem)}}.about-page .main-content{padding-bottom:clamp(.75rem,2vh,2rem);padding-top:clamp(5.5rem,13vh,8rem)}.about-wrapper{grid-gap:clamp(1rem,3vw,1.5rem);display:grid;gap:clamp(1rem,3vw,1.5rem);margin:0 auto;max-width:var(--page-max-width);padding-top:clamp(20px,calc(30px + 1vw),50px);width:100%}.about-title h1{color:var(--color-dark);font-family:DM Sans,sans-serif;font-size:var(--type-heading);font-weight:400;line-height:1.24;margin-bottom:0;text-align:left}.about-section{margin-bottom:0}.about-section h2{font-size:var(--type-label);letter-spacing:.5px;margin-bottom:clamp(.25rem,1vw,.5rem);text-transform:uppercase}.about-section h2,.about-section p{color:var(--color-light);font-weight:400}.about-section p{font-family:DM Sans,sans-serif;font-size:var(--type-lead);line-height:1.17;margin-bottom:clamp(.5rem,2vw,1rem)}.skills-content{display:flex;flex-direction:column;gap:clamp(.25rem,1vw,.5rem)}.skill-category{margin-bottom:clamp(.5rem,2vw,1rem)}.skill-category h3{color:var(--color-dark);font-family:DM Sans,sans-serif;font-size:var(--type-lead);font-weight:600;margin-bottom:clamp(.25rem,1vw,.5rem)}.skill-category p{color:var(--color-dark);font-family:inter,sans-serif;font-size:var(--type-label);line-height:1.4;margin-bottom:0}.experience-testimonial-grid{grid-gap:clamp(1.5rem,4vw,3rem);align-items:start;display:grid;gap:clamp(1.5rem,4vw,3rem);grid-template-columns:1fr 1fr}.experience-timeline{display:flex;flex-direction:column;gap:0}.experience-item{grid-gap:clamp(1rem,3vw,1.5rem);align-items:center;display:grid;gap:clamp(1rem,3vw,1.5rem);grid-template-columns:1fr auto;padding:clamp(.5rem,2vw,.75rem) 0}.experience-content h3{color:var(--color-dark);font-family:inter,sans-serif;font-size:var(--type-label);font-weight:400;margin-bottom:clamp(.125rem,.5vw,.25rem)}.experience-content p{color:var(--color-light);font-family:inherit;font-size:var(--type-caption);margin-bottom:0}.experience-date{text-align:right}.experience-date span{color:var(--color-light);font-family:inherit;font-size:var(--type-caption);font-weight:500}.timeline-line{background-color:#e0e0e0;height:1px;margin:clamp(.25rem,1vw,.5rem) 0}.testimonial-right{align-self:start;text-align:right}.testimonial-right blockquote{background:#f1f1f133;border-right:2px solid var(--color-light);font-family:DM Sans,sans-serif;font-size:var(--type-lead);font-style:italic;line-height:1.17;margin:0 0 clamp(.5rem,2vw,1rem);padding:clamp(.5rem,2vw,1rem)}.testimonial-right blockquote,.testimonial-right cite{color:var(--color-light);font-weight:400;text-align:right}.testimonial-right cite{display:block;font-family:inherit;font-size:var(--type-caption);font-style:normal}@container (max-width: 600px){.about-title h1{text-align:center}.experience-testimonial-grid{gap:clamp(1rem,3vw,1.5rem);grid-template-columns:1fr}.testimonial-right{text-align:left}.testimonial-right blockquote{border-left:2px solid var(--color-light);border-right:none;text-align:left}.testimonial-right cite{text-align:left}}@media (min-width:1200px){.about-wrapper{gap:1.5rem;padding-top:0}.skills-content{grid-gap:clamp(1rem,3vw,1.5rem);display:grid;gap:clamp(1rem,3vw,1.5rem);grid-template-columns:1fr 1fr}}@media (min-width:768px) and (max-width:1199px){.about-wrapper{gap:clamp(1rem,3vw,1.5rem);padding-top:clamp(80px,calc(70px + 2vw),100px)}}@media (max-width:820px){.about-page .main-content{align-items:flex-start;height:auto;min-height:100vh;overflow:visible;padding-bottom:2.5rem;padding-top:6.5rem}.about-wrapper{gap:2rem;padding-top:0}.about-section p{line-height:1.4}.skills-content{display:flex;flex-direction:column;gap:1.25rem}.skill-category{margin-bottom:0}.experience-testimonial-grid{gap:2.5rem;grid-template-columns:1fr}.testimonial-right{text-align:left}.testimonial-right blockquote{border-left:2px solid var(--color-light);border-right:none;line-height:1.35;padding:.75rem 0 .75rem 1rem;text-align:left}.testimonial-right cite{text-align:left}}@media (max-width:480px){.about-wrapper{gap:1.75rem;padding-top:0}}.experience-item.clickable{--hover-edge-overhang:clamp(0.375rem,1vw,0.5rem);background:none;border:0;border-radius:8px;color:inherit;cursor:pointer;font:inherit;overflow:visible;padding:clamp(.5rem,2vw,.75rem) clamp(.5rem,2vw,.75rem) clamp(.5rem,2vw,.75rem) 0;position:relative;text-align:left;transition:all .3s ease;width:100%}.experience-item.clickable:before{background:#ffffff26;border-radius:8px;bottom:0;box-shadow:0 4px 12px #0000001a;content:"";left:calc(var(--hover-edge-overhang)*-1);opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .3s ease}.experience-item.clickable:hover:before{opacity:1}.experience-item.clickable:hover{transform:translateY(-2px)}.modal-overlay{align-items:center;animation:modalFadeIn .25s ease-out forwards;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);background:#0000;bottom:0;display:flex;justify-content:center;left:0;padding:clamp(1rem,5vw,2rem);position:fixed;right:0;top:0;z-index:1000}@keyframes modalFadeIn{0%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);background:#0000}to{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0003}}.modal-content{animation:modalContentSlideIn .3s ease-out forwards;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffffff2;border:1px solid #e0e0e04d;border-radius:12px;box-shadow:0 8px 32px #0000001f;max-height:90vh;max-width:900px;opacity:0;overflow:hidden;position:relative;transform:scale(.8) translateY(20px);width:100%}@keyframes modalContentSlideIn{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modalContentSlideOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.8) translateY(20px)}}@keyframes modalFadeOut{0%{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0003}to{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);background:#0000}}.modal-close{align-items:center;background:none;border:none;border-radius:50%;color:var(--color-light);cursor:pointer;display:flex;font-family:inherit;font-size:var(--type-heading);height:32px;justify-content:center;position:absolute;right:1rem;top:1rem;transition:all .3s ease;width:32px;z-index:10}.modal-close:hover{background:#00000014;color:var(--color-dark)}.modal-body{grid-gap:clamp(1.5rem,4vw,2rem);align-items:center;display:grid;gap:clamp(1.5rem,4vw,2rem);grid-template-columns:1fr 1fr;padding:clamp(2rem,5vw,3rem)}.modal-text h2{font-size:var(--type-heading);font-weight:400;line-height:1.24;margin-bottom:clamp(.5rem,1vw,1rem)}.modal-text h2,.modal-text h3{color:var(--color-dark);font-family:DM Sans,sans-serif}.modal-text h3{font-size:var(--type-lead);font-weight:600;margin-bottom:clamp(.25rem,.5vw,.5rem)}.modal-year{background:#f1f1f180;border-radius:20px;display:inline-block;font-family:inter,sans-serif;font-size:var(--type-caption);letter-spacing:.5px;margin-bottom:clamp(1rem,2vw,1.5rem);padding:clamp(.25rem,.5vw,.5rem) clamp(.75rem,1.5vw,1rem);text-transform:uppercase}.modal-text p,.modal-year{color:var(--color-light);font-weight:400}.modal-text p{font-family:DM Sans,sans-serif;font-size:var(--type-lead);line-height:1.17;margin:0}.modal-image{align-items:center;display:flex;flex-direction:column;gap:clamp(.5rem,1vw,.75rem);justify-content:center;padding:clamp(1rem,2vw,1.5rem)}.modal-image img{border-radius:8px;height:auto;object-fit:contain;width:125%}.modal-image-caption{color:var(--color-light);font-family:inherit;font-size:var(--type-caption);line-height:1.4;margin:0;text-align:right}@media (max-width:820px){.modal-overlay{align-items:flex-end;padding:.75rem}.modal-body{gap:1.25rem;grid-template-columns:1fr;padding:3rem 1.25rem 1.25rem}.modal-text p{line-height:1.4}.modal-image{padding:0}.modal-image img{max-height:200px;width:100%}.modal-content{border-radius:8px;max-height:calc(100dvh - 1.5rem);overflow-y:auto}}.modal-overlay.closing{animation:modalFadeOut .3s ease-in forwards}.modal-content.closing{animation:modalContentSlideOut .3s ease-in forwards}@media (min-width:768px) and (max-height:760px){.about-wrapper{gap:clamp(.5rem,1.5vh,.875rem);padding-bottom:0;padding-top:0}.about-section p,.testimonial-right blockquote{font-size:var(--type-body);line-height:1.2}.skill-category{margin-bottom:.25rem}.experience-item{padding-bottom:.35rem;padding-top:.35rem}}.easter-egg-page{color:var(--color-dark);display:grid;font-family:Courier New,monospace;min-height:100vh;min-height:100dvh;overflow:hidden;padding:var(--page-gutter);place-items:center;position:relative}.easter-back-link{align-items:center;color:var(--color-dark);display:inline-flex;font-size:var(--type-label);left:var(--page-gutter);letter-spacing:.08em;min-height:44px;position:absolute;text-decoration:none;text-transform:uppercase;top:var(--page-gutter)}.easter-back-link:hover{color:var(--color-light)}.easter-egg-content{display:grid;justify-items:center;text-align:center;width:min(100%,44rem)}.easter-egg-content h1{font-family:DM Sans,sans-serif;font-size:clamp(2rem,7vw,4.5rem);font-weight:400;letter-spacing:0;line-height:1}.crow-stage{display:grid;height:clamp(15rem,42vw,23rem);margin-block:clamp(1.5rem,5vw,3rem);place-items:center;position:relative;width:min(82vw,28rem)}.pixel-crow{animation:crow-dance .8s steps(2) infinite;height:190px;left:50%;margin-left:-90px;margin-top:-105px;position:absolute;top:50%;transform-origin:center bottom;width:180px;z-index:2}.crow-beak,.crow-body,.crow-eye,.crow-foot,.crow-head,.crow-leg,.crow-tail,.crow-wing{display:block;position:absolute}.crow-head{animation:crow-head-bob .4s steps(2) infinite;background:var(--color-dark);box-shadow:-8px 8px 0 var(--color-dark);height:56px;left:78px;top:18px;width:64px}.crow-eye{background:#f5f7f8;box-shadow:3px -3px 0 #f5f7f8,6px -3px 0 #f5f7f8,9px 0 0 #f5f7f8;height:3px;right:19px;top:17px;width:3px}.crow-beak{background:var(--color-light);box-shadow:8px 8px 0 -2px var(--color-light);height:16px;left:130px;top:38px;width:28px}.crow-body{background:var(--color-dark);box-shadow:-16px 16px 0 -4px var(--color-dark);height:88px;left:54px;top:68px;width:82px}.crow-wing{animation:crow-wing-flap .4s steps(2) infinite;background:var(--color-light);box-shadow:-12px 16px 0 -2px var(--color-light);height:64px;left:42px;top:78px;transform-origin:top right;width:54px;z-index:3}.crow-tail{background:var(--color-dark);height:50px;top:132px;transform-origin:top center;width:18px}.tail-one{left:58px;transform:rotate(22deg)}.tail-two{left:80px;transform:rotate(8deg)}.crow-leg{background:var(--color-light);height:32px;top:150px;transform-origin:top center;width:8px}.leg-left{animation:crow-leg-left .8s steps(2) infinite;left:76px}.leg-right{animation:crow-leg-right .8s steps(2) infinite;left:112px}.crow-foot{background:var(--color-light);bottom:-4px;height:8px;left:-8px;width:26px}.crow-shadow{animation:crow-shadow-dance .8s steps(2) infinite;background:#372d2d29;bottom:15%;height:12px;left:50%;margin-left:-66px;position:absolute;width:132px}.music-note{animation:music-note-rise 1.6s steps(4) infinite;color:var(--color-light);font-family:Courier New,monospace;font-size:2rem;font-weight:700;position:absolute}.note-one{left:18%;top:24%}.note-two{animation-delay:-.8s;right:17%;top:18%}@keyframes crow-dance{0%,to{transform:translate(-8px) rotate(-2deg)}50%{transform:translate(8px,-12px) rotate(2deg)}}@keyframes crow-head-bob{0%,to{transform:translateY(0)}50%{transform:translateY(8px)}}@keyframes crow-wing-flap{0%,to{transform:rotate(8deg)}50%{transform:rotate(-30deg) translate(-8px,-4px)}}@keyframes crow-leg-left{0%,to{transform:rotate(14deg)}50%{transform:rotate(-18deg)}}@keyframes crow-leg-right{0%,to{transform:rotate(-18deg)}50%{transform:rotate(14deg)}}@keyframes crow-shadow-dance{0%,to{opacity:1;transform:scaleX(1)}50%{opacity:.6;transform:scaleX(.72)}}@keyframes music-note-rise{0%{opacity:0;transform:translateY(20px)}25%,75%{opacity:1}to{opacity:0;transform:translateY(-32px)}}@media (max-width:600px){.easter-egg-page{align-items:start;padding-top:6rem}.crow-stage{height:20rem;margin-block:1.5rem;width:100%}}@media (prefers-reduced-motion:reduce){.crow-head,.crow-leg,.crow-shadow,.crow-wing,.music-note,.pixel-crow{animation:none}}.main-content{align-items:center;display:flex;height:100vh;height:100dvh;justify-content:center;overflow:hidden;padding-inline:var(--page-gutter);padding-bottom:var(--page-gutter);padding-top:clamp(250px,calc(230px + 5vw),280px)}.content-wrapper{grid-gap:clamp(1.5rem,4vw,3rem);container-type:inline-size;display:grid;gap:clamp(1.5rem,4vw,3rem);grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto;margin:0 auto;max-width:var(--page-max-width);position:relative;width:100%}.name-section-container{align-items:flex-start;display:flex;flex-direction:column;grid-column:1;grid-row:1}.name-section{--name-block-height:calc(var(--type-home-name)*2.48);align-items:flex-start;display:flex;gap:clamp(.5rem,2vw,1rem)}.chinese-name{word-wrap:break-word;color:var(--color-light);font-family:Fly Flower Song,"Noto Serif JP",serif;font-size:calc(var(--name-block-height)/3);font-weight:400;line-height:1;text-orientation:mixed;width:auto;writing-mode:vertical-rl}.chinese-name,.name-divider{height:var(--name-block-height)}.name-divider{background-color:var(--color-light);width:2px}.english-name{color:var(--color-dark);font-family:DM Sans,sans-serif;font-size:var(--type-home-name);font-weight:400;height:var(--name-block-height);line-height:1.24}.summary-section{align-self:start;display:flex;flex-direction:column;gap:clamp(.5rem,2vw,1rem);grid-column:2;grid-row:1;text-align:right}.links-heading,.summary-label{color:var(--color-light);font-size:var(--type-label);font-weight:400;letter-spacing:.5px;margin-bottom:clamp(.25rem,1vw,.5rem);text-transform:uppercase}.summary-text{word-wrap:break-word;color:var(--color-light);font-family:DM Sans,sans-serif;font-size:var(--type-lead);font-weight:400;line-height:1.17;margin-bottom:clamp(.5rem,2vw,1rem)}.summary-text p+p{margin-top:1em}.current-status{word-wrap:break-word;color:var(--color-light);font-family:DM Sans,sans-serif;font-size:var(--type-heading);font-weight:400;line-height:1.17}.links-section{align-self:end;display:flex;flex-direction:column;gap:clamp(.5rem,2vw,1rem);grid-column:1;grid-row:2}.links-heading{font-family:inherit}.links-list{display:flex;flex-direction:column;gap:clamp(.25rem,1vw,.5rem)}.links-list a{align-items:center;color:var(--color-dark);display:flex;font-family:inter\ ,sans-serif;font-size:var(--type-label);min-height:16px;padding:clamp(.125rem,.5vw,.25rem) 0;text-decoration:none;transition:color .3s ease}.footer-credit,.links-list a:hover{color:var(--color-light)}.footer-credit{align-self:end;font-size:var(--type-caption);grid-column:2;grid-row:2;text-align:right}@container (max-width: 600px){.footer-credit,.summary-section{text-align:left}.name-section{justify-content:center}}@media (min-width:1200px){.content-wrapper{gap:3rem}.main-content{padding-top:250px}}@media (min-width:768px) and (max-width:1199px){.content-wrapper{gap:clamp(2rem,4vw,3rem)}.main-content{padding-top:clamp(240px,calc(230px + 4vw),260px)}}@media (max-width:820px){.home-page .main-content{align-items:flex-start;height:auto;min-height:100vh;overflow:visible;padding-bottom:2rem;padding-top:6.5rem}.content-wrapper{gap:2.25rem;grid-template-columns:1fr;grid-template-rows:auto auto auto auto}.name-section-container{align-items:flex-start;grid-column:1;grid-row:1}.summary-section{gap:.5rem;grid-column:1;grid-row:2;text-align:left}.links-section{gap:.5rem;grid-column:1;grid-row:3}.footer-credit{grid-column:1;grid-row:4;padding-top:.5rem;text-align:left}.name-section{justify-content:flex-start}.summary-text{line-height:1.35;margin-bottom:0;max-width:34rem}.links-list{gap:0}.links-list a{min-height:44px;padding-block:.5rem;width:-webkit-fit-content;width:fit-content}}@media (max-width:480px){.content-wrapper{gap:2rem}}.projects-page .main-content{align-items:flex-start;padding-bottom:clamp(.75rem,2vh,2rem);padding-top:calc(clamp(5.5rem, 13vh, 8rem) + clamp(1rem, 3vw, 1.5rem) + 1rem)}.projects-wrapper{grid-gap:clamp(.75rem,2vh,1.25rem);display:grid;gap:clamp(.75rem,2vh,1.25rem);margin:0 auto;max-width:var(--page-max-width);width:100%}.projects-selector>h2,.projects-title h1{color:var(--color-light);font-family:DM Sans,sans-serif;font-size:var(--type-label);font-weight:400;letter-spacing:.5px;text-transform:uppercase}.projects-layout{grid-column-gap:clamp(2rem,5vw,5rem);grid-row-gap:clamp(.75rem,2vh,1.25rem);align-items:start;column-gap:clamp(2rem,5vw,5rem);display:grid;grid-template-areas:"title selector" "detail selector";grid-template-columns:minmax(0,1.65fr) minmax(240px,.65fr);row-gap:clamp(.75rem,2vh,1.25rem)}.projects-title{grid-area:title}.project-detail{grid-gap:clamp(.75rem,2vh,1.25rem);display:grid;gap:clamp(.75rem,2vh,1.25rem);grid-area:detail;min-width:0}.project-detail.portrait-project{align-items:center;column-gap:clamp(1.5rem,4vw,3rem);grid-template-columns:minmax(0,3fr) minmax(0,3fr)}.portrait-project .project-image{aspect-ratio:auto;justify-self:stretch;max-height:none;max-width:none;overflow:visible;width:100%}.portrait-project .project-image img{height:auto}.project-image{align-items:center;aspect-ratio:16/9;background:#0000;border:0;color:var(--color-light);display:flex;font-family:DM Sans,sans-serif;justify-content:center;max-height:45vh;overflow:hidden;width:100%}.project-image.video-project{max-height:none}.project-image img,.project-image video{height:100%;object-fit:contain;width:100%}.project-image video{display:block}.project-image video[hidden]{display:none}.project-content,.project-image img,.project-image video:not([hidden]),.project-image>span{animation:projectSwap .8s ease}.project-content{grid-gap:clamp(.5rem,1.4vh,.875rem);display:grid;gap:clamp(.5rem,1.4vh,.875rem)}@keyframes projectSwap{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.project-heading{align-items:flex-end;display:flex;gap:1.5rem;justify-content:space-between}.project-heading h2{color:var(--color-dark);font-family:DM Sans,sans-serif;font-size:var(--type-heading);font-weight:400;line-height:1.1;margin:.125rem 0 0}.project-year{color:var(--color-light);font-family:DM Sans,sans-serif;font-size:var(--type-caption)}.project-links{display:flex;flex-shrink:0;gap:1rem;justify-content:flex-end}.project-link{align-items:center;border-bottom:1px solid #0000;color:var(--color-dark);display:inline-flex;font-family:DM Sans,sans-serif;font-size:var(--type-label);min-height:44px;text-decoration:none;transition:color .2s ease,border-color .2s ease}.project-link:hover{border-bottom-color:initial;color:var(--color-light)}.project-description{color:var(--color-light);font-family:DM Sans,sans-serif;font-size:var(--type-body);line-height:1.45;margin:0;max-width:720px}.project-technologies{display:flex;flex-wrap:wrap;gap:.375rem}.tech-tag{background:#f1f1f18c;border:1px solid #e0e0e099;border-radius:4px;color:var(--color-light);font-family:DM Sans,sans-serif;font-size:var(--type-caption);padding:.25rem .625rem}.projects-selector{align-self:start;grid-area:selector;justify-self:end;max-width:340px;text-align:right;width:100%}.projects-selector>h2{margin-bottom:clamp(.5rem,1.5vh,.875rem)}.projects-list{display:flex;flex-direction:column}.project-selector-item{--hover-edge-overhang:clamp(0.375rem,1vw,0.5rem);grid-gap:clamp(1rem,3vw,1.5rem);align-items:center;background:#0000;border:0;border-radius:8px;color:inherit;cursor:pointer;display:grid;font:inherit;gap:clamp(1rem,3vw,1.5rem);grid-template-columns:1fr auto;overflow:visible;padding:clamp(.5rem,2vw,.75rem) 0 clamp(.5rem,2vw,.75rem) clamp(.5rem,2vw,.75rem);position:relative;text-align:left;transition:all .3s ease;width:100%}.project-selector-item:before{background:#ffffff26;border-radius:8px;box-shadow:0 4px 12px #0000001a;content:"";inset:0 calc(var(--hover-edge-overhang)*-1) 0 0;opacity:0;pointer-events:none;position:absolute;transition:opacity .3s ease}.project-selector-item:hover:before{opacity:1}.project-selector-item:hover{transform:translateY(-2px)}.project-selector-content{display:flex;flex-direction:column;min-width:0}.project-selector-title{color:var(--color-dark);font-family:inter,sans-serif;font-size:var(--type-label);font-weight:400;margin-bottom:clamp(.125rem,.5vw,.25rem)}.project-selector-item.active .project-selector-title{font-weight:500}.project-selector-summary{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-selector-date,.project-selector-summary{color:var(--color-light);font-family:inherit;font-size:var(--type-caption)}.project-selector-date{font-weight:500;text-align:right}.project-divider{background:#e0e0e0;height:1px;margin:clamp(.25rem,1vw,.5rem) 0}@media (min-width:768px) and (max-height:760px){.projects-page .main-content{padding-bottom:.75rem;padding-top:calc(clamp(5.5rem, 13vh, 8rem) + clamp(1rem, 3vw, 1.5rem) + 1rem)}.project-detail,.projects-wrapper{gap:.5rem}.project-image{max-height:37vh}.project-heading h2{font-size:var(--type-heading)}.project-description{font-size:var(--type-label);line-height:1.35}.project-selector-item{padding-bottom:.375rem;padding-top:.375rem}}@media (max-width:820px){.projects-page .main-content{align-items:flex-start;height:auto;min-height:100vh;overflow:visible;padding-bottom:2.5rem;padding-top:6.5rem}.projects-wrapper{padding:0}.projects-layout{gap:1.25rem;grid-template-areas:"title" "selector" "detail";grid-template-columns:1fr}.project-image{max-height:none}.project-detail.portrait-project{grid-template-columns:1fr}.portrait-project .project-image{justify-self:center;width:min(78vw,320px)}.projects-selector{justify-self:stretch;margin-top:0;max-width:none;overflow:hidden;text-align:left}.projects-selector>h2{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.projects-list{-webkit-overflow-scrolling:touch;flex-direction:row;gap:.5rem;overflow-x:auto;padding-bottom:.375rem;scroll-snap-type:x proximity;scrollbar-width:none}.projects-list::-webkit-scrollbar{display:none}.project-selector-item{--hover-edge-overhang:0px;border:1px solid #e0e0e0;border-radius:4px;flex:0 0 auto;padding:.625rem .75rem;scroll-snap-align:start;width:min(72vw,240px)}.project-selector-item.active{border-color:var(--color-light)}.project-selector-summary{white-space:nowrap}.project-divider{display:none}.project-description{line-height:1.5}.project-technologies{gap:.5rem}.tech-tag{padding:.35rem .625rem}}@media (max-width:600px){.project-heading{align-items:flex-start;flex-direction:column;gap:.25rem}.project-links{justify-content:flex-start}}
/*# sourceMappingURL=main.080a757f.css.map*/