@font-face{font-display:swap;font-family:Mabry;font-style:normal;font-weight:400;src:url(/fonts/29b1a93e4a75feaa-s.p.woff2) format("woff2"),url(/fonts/60641944d8142f50-s.p.woff) format("woff")}@font-face{font-display:swap;font-family:Mabry;font-style:normal;font-weight:500;src:url(/fonts/842025f8208ee68b-s.p.woff2) format("woff2"),url(/fonts/0efa0c72bddb5a64-s.p.woff) format("woff")}@font-face{font-display:swap;font-family:FK Display;font-style:normal;font-weight:400;src:url(/fonts/f80ad73864883a33-s.p.woff2) format("woff2"),url(/fonts/a1ab1b75044c1b4e-s.p.woff) format("woff")}:root{--color-bg: #000;--color-fg: #fff;--color-accent: #ddfa42;--color-muted: hsla(0, 0%, 100%, .62);--color-muted-strong: hsla(0, 0%, 100%, .74);--color-muted-soft: hsla(0, 0%, 100%, .34);--color-surface: hsla(0, 0%, 100%, .06);--color-border: hsla(0, 0%, 100%, .18);--color-border-subtle: hsla(0, 0%, 100%, .14);--color-tag-border: hsla(0, 0%, 100%, .16);--color-line: hsla(0, 0%, 100%, .3);--color-timeline: hsla(0, 0%, 100%, .5);--color-node-border: hsla(0, 0%, 100%, .82);--color-node-bg: #000;--color-node-shadow: rgba(0, 0, 0, .85);--color-loader-bg: #000;--color-loader-track: hsla(0, 0%, 100%, .1);--color-hover-fg: #000;--color-pill: hsla(0, 0%, 100%, .1);--project-preview-backdrop: rgba(0, 0, 0, .6);--overlay-top-bg: linear-gradient(0deg, rgba(1, 1, 1, 0) 15.2%, rgba(1, 1, 1, .5) 51%, rgba(0, 0, 0, .85) 84.8%);--overlay-bottom-bg: linear-gradient(0deg, rgba(0, 0, 0, .85) 9.5%, rgba(1, 1, 1, .5) 51%, rgba(1, 1, 1, 0) 84.8%);--container: 2.4rem;color:var(--color-fg);background:var(--color-bg);font-family:Mabry,Arial,sans-serif;font-size:10px;font-synthesis:none;text-rendering:geometricPrecision}:root[data-theme=light]{--color-bg: #f4f4f0;--color-fg: #050505;--color-muted: rgba(5, 5, 5, .62);--color-muted-strong: rgba(5, 5, 5, .72);--color-muted-soft: rgba(5, 5, 5, .42);--color-surface: rgba(5, 5, 5, .05);--color-border: rgba(5, 5, 5, .16);--color-border-subtle: rgba(5, 5, 5, .12);--color-tag-border: rgba(5, 5, 5, .14);--color-line: rgba(5, 5, 5, .28);--color-timeline: rgba(5, 5, 5, .44);--color-node-border: rgba(5, 5, 5, .76);--color-node-bg: #f4f4f0;--color-node-shadow: rgba(244, 244, 240, .85);--color-loader-bg: #f4f4f0;--color-loader-track: rgba(5, 5, 5, .12);--color-pill: hsla(0, 0%, 0%, .08);--overlay-top-bg: linear-gradient(0deg, rgba(244, 244, 240, 0) 15.2%, rgba(244, 244, 240, .5) 51%, rgba(244, 244, 240, .92) 84.8%);--overlay-bottom-bg: linear-gradient(0deg, rgba(244, 244, 240, .92) 9.5%, rgba(244, 244, 240, .5) 51%, rgba(244, 244, 240, 0) 84.8%);color-scheme:light}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;height:100%;margin:0;overflow:hidden;background:var(--color-bg);transition:background-color .7s cubic-bezier(.19,1,.22,1),color .7s cubic-bezier(.19,1,.22,1)}body{font-size:1.6rem}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit}.hero-shell{position:relative;min-height:100svh;background:var(--color-bg)}.project-placeholder{position:relative;min-height:100svh;overflow:hidden;background:var(--color-bg)}.project-placeholder-inner{display:flex;min-height:100svh;flex-direction:column;align-items:flex-start;justify-content:center;gap:2.4rem;padding:10rem var(--container)}.project-placeholder-kicker{margin:0;color:var(--color-muted);font-size:1.5rem;font-weight:500;line-height:1}.project-placeholder-title{max-width:min(92rem,88vw);margin:0;font-size:clamp(5.4rem,10vw,15rem);font-weight:500;line-height:.9;letter-spacing:0}.project-placeholder-empty{width:min(42rem,70vw);height:1px;margin-top:2rem;background:linear-gradient(90deg,var(--color-accent),rgba(221,250,66,0));transform:scaleX(0);transform-origin:left center;animation:reveal-line-in .72s cubic-bezier(.19,1,.22,1) .34s forwards}.project-placeholder-action{margin-top:.4rem}.project-detail-page{position:relative;height:100svh;overflow-x:hidden;overflow-y:auto;background:var(--color-bg);color:var(--color-fg);scrollbar-width:none}.project-detail-page::-webkit-scrollbar{display:none}.project-detail-hero{position:relative;min-height:100svh;overflow:hidden;background:var(--color-bg)}.project-detail-hero:after{position:absolute;inset:0;background:linear-gradient(180deg,#0000006b,#0000 22% 72%,#000000c7),radial-gradient(circle at 50% 50%,#0000 48%,#00000070);content:"";pointer-events:none}.project-detail-hero-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;-webkit-user-select:none;user-select:none}.project-overlay-top,.project-overlay-bottom{position:fixed;left:0;z-index:40;width:100%;height:15%;pointer-events:none}.project-overlay-top{top:0;background:var(--overlay-top-bg)}.project-overlay-bottom{bottom:0;background:var(--overlay-bottom-bg)}.project-page-open-wipe{position:fixed;inset:0;z-index:58;background:var(--color-accent);pointer-events:none;transform:translate3d(0,-105%,0);animation:project-page-color-open .9s cubic-bezier(.76,0,.24,1) forwards}.project-detail-feed{position:relative;min-height:100svh;padding:0 0 18rem;background:var(--color-bg)}.project-feed-admin-link{position:sticky;top:8.2rem;z-index:45;display:inline-flex;align-items:center;justify-content:center;width:4.2rem;height:4.2rem;margin:2rem 0 2rem max(var(--container),calc((100vw - 1920px)/2));border-radius:50%;background:var(--color-pill);color:var(--color-fg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transition:background-color .7s cubic-bezier(.19,1,.22,1),color .7s cubic-bezier(.19,1,.22,1),transform .7s cubic-bezier(.19,1,.22,1)}.project-feed-admin-link:hover{background:var(--color-accent);color:var(--color-hover-fg);transform:translateY(-.1rem)}.project-feed-layout{width:min(100%,1920px);display:grid;gap:var(--project-feed-row-gap, 16px);margin:0 auto;line-height:0}.project-feed-row{display:flex;align-items:flex-start;gap:0;width:100%}.project-feed-title-row{display:flex;min-height:clamp(24rem,30vw,48rem);align-items:flex-end;width:100%;padding:clamp(5.6rem,8vw,11rem) var(--container);background:var(--color-bg);color:var(--color-fg)}.project-feed-title{width:100%;max-width:100%;margin:0;overflow-wrap:anywhere;font-size:clamp(4.8rem,8vw,12rem);font-weight:500;line-height:.94;letter-spacing:0}.project-feed-column{display:grid;flex:var(--column-grow) 1 0;min-width:0;gap:0}.project-feed-item{display:block;margin:0;line-height:0;background:#000}.project-feed-open{display:block;width:100%;margin:0;padding:0;border:0;background:transparent;cursor:zoom-in}.project-feed-image{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none}.project-feed-video-shell{position:relative;overflow:hidden;width:100%;background:#000}.project-feed-video{display:block;width:100%;height:auto;cursor:zoom-in;-webkit-user-select:none;user-select:none}.project-feed-video-controls{position:absolute;inset:0;z-index:2;background:#00000029;opacity:0;pointer-events:none;transition:opacity .18s ease}.project-feed-video-shell.is-controls-visible .project-feed-video-controls,.project-feed-video-shell:focus-within .project-feed-video-controls{opacity:1}.project-feed-video-control{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:4.4rem;height:4.4rem;border:0;border-radius:50%;background:#000000b3;color:#fff;cursor:pointer;opacity:0;pointer-events:none;transition:background-color .18s ease,color .18s ease,transform .18s ease;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.project-feed-video-shell.is-controls-visible .project-feed-video-control,.project-feed-video-shell:focus-within .project-feed-video-control{opacity:1;pointer-events:auto}.project-feed-video-control-playback{left:1.6rem;bottom:1.6rem}.project-feed-video-control-fullscreen{left:50%;top:50%;transform:translate(-50%,-50%)}.project-feed-video-control-sound{right:1.6rem;bottom:1.6rem}.project-feed-video-control:hover,.project-feed-video-control:focus-visible{background:var(--color-accent);color:var(--color-hover-fg)}.project-feed-video-control-fullscreen:hover,.project-feed-video-control-fullscreen:focus-visible{transform:translate(-50%,-50%) scale(1.06)}.project-feed-video-error{position:absolute;inset:50% auto auto 50%;z-index:3;width:min(80%,42rem);margin:0;padding:1.2rem 1.6rem;background:#000000c7;color:#fff;font-size:1.3rem;line-height:1.4;text-align:center;transform:translate(-50%,-50%)}.project-video-preview-dialog{position:fixed;inset:0;z-index:130;display:grid;place-items:center;overflow:hidden;padding:clamp(2rem,5vw,6rem);background:var(--project-preview-backdrop)}.project-video-preview-stage{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-width:0;min-height:0}.project-video-preview-video{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;background:transparent}.project-video-preview-close{z-index:4}.project-video-preview-controls{position:absolute;left:50%;bottom:1.8rem;z-index:3;display:flex;gap:.8rem;transform:translate(-50%)}.project-video-preview-control{display:inline-flex;align-items:center;justify-content:center;width:4.6rem;height:4.6rem;border:0;border-radius:50%;background:#ffffff29;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:background-color .18s ease,color .18s ease}.project-video-preview-control:hover,.project-video-preview-control:focus-visible{background:var(--color-accent);color:var(--color-hover-fg)}.project-video-preview-error{position:absolute;left:50%;top:50%;width:min(80%,44rem);margin:0;padding:1.4rem 1.8rem;background:#000000c7;color:#fff;font-size:1.4rem;line-height:1.45;text-align:center;transform:translate(-50%,-50%)}.project-feed-carousel{position:relative;display:block;overflow:hidden;width:100%;background:#000}.project-feed-carousel-spacer{display:block;width:100%;height:auto;opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none}.project-feed-carousel-image{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .26s ease;-webkit-user-select:none;user-select:none}.project-feed-carousel-image.is-active{opacity:1}.project-feed-carousel-open{position:relative}.project-feed-carousel-control{position:absolute;top:50%;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:4.2rem;height:4.2rem;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:#585858d1;box-shadow:0 .4rem 1.6rem #00000047;color:#fff;cursor:pointer;opacity:0;transform:translateY(-50%);transition:opacity .22s ease,background-color .22s ease,color .22s ease;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.project-feed-carousel:hover .project-feed-carousel-control,.project-feed-carousel:focus-within .project-feed-carousel-control{opacity:1}.project-feed-carousel-control:hover{background:#404040f0;color:#fff}.project-feed-carousel-control:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-feed-carousel-control-prev{left:1.6rem}.project-feed-carousel-control-next{right:1.6rem}.project-feed-carousel-pagination{position:absolute;bottom:1.6rem;left:50%;z-index:2;display:flex;align-items:center;gap:.5rem;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:#585858b8;box-shadow:0 .4rem 1.4rem #0000003d;transform:translate(-50%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.project-feed-carousel-page{display:block;width:1.8rem;height:1.8rem;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer}.project-feed-carousel-page:before{display:block;width:.6rem;height:.6rem;margin:auto;border-radius:50%;background:#ffffff73;content:"";transition:background-color .18s ease,transform .18s ease}.project-feed-carousel-page.is-active:before{background:#fff;transform:scale(1.25)}.project-feed-carousel-page:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-feed-empty{width:min(100%,1920px);height:48rem;margin:0 auto;background:radial-gradient(circle at 20% 12%,#7e6cff2e,#0000 26rem),linear-gradient(135deg,#ffffff12,#ffffff04)}.project-image-preview{position:fixed;inset:0;z-index:4000;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:6rem;background:var(--project-preview-backdrop);cursor:zoom-out}.project-image-preview-img{max-width:100%;max-height:100%;cursor:zoom-in;object-fit:contain;touch-action:none;transform-origin:center center;transition:transform .12s ease-out;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.project-image-preview-img.is-pannable{cursor:grab}.project-image-preview-img.is-panning{cursor:grabbing;transition:none}.project-image-preview-close{position:fixed;top:2rem;right:2rem;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:4.4rem;height:4.4rem;border:0;border-radius:50%;background:var(--color-pill);color:var(--color-fg);cursor:pointer;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.project-product-pages{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr);align-items:center;width:min(100% - var(--container) * 2,72rem);margin:10rem auto 0;gap:clamp(1.6rem,4vw,4rem);line-height:1.2}.project-product-page-files{display:grid;gap:1rem;min-width:0}.project-product-page-file{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.6rem;align-items:center;width:100%;min-height:8.8rem;border:1px solid rgba(0,0,0,.12);border-radius:.6rem;background:#fff;color:#151515;cursor:pointer;padding:1.35rem 1.55rem;text-align:left}.project-product-page-file-icon{display:inline-flex;align-items:center;justify-content:center;width:5.2rem;height:5.2rem;border-radius:.4rem;background:#efbf24;color:#fff}.project-product-page-file-meta{display:grid;gap:.25rem;min-width:0}.project-product-page-file-name{overflow:hidden;font-size:clamp(1.55rem,2vw,1.95rem);line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.project-product-page-file-size{color:#0000008f;font-size:1.25rem;line-height:1.2}.project-product-page-file-eye{color:#000000ad}.project-product-page-copy{display:grid;gap:.8rem;color:var(--color-fg)}.project-product-page-copy-kicker{color:var(--color-muted);font-size:1.1rem;letter-spacing:0;line-height:1.1}.project-product-page-copy-title{max-width:14em;font-size:clamp(2.5rem,4.5vw,5rem);font-weight:500;letter-spacing:0;line-height:1.02}.project-product-page-copy-line{display:block;white-space:nowrap}.project-product-page-dialog{position:fixed;inset:0;z-index:4000;overflow-x:hidden;overflow-y:scroll;scrollbar-gutter:stable;overscroll-behavior:contain;padding:0;background:var(--project-preview-backdrop)}.project-product-page-stage{position:relative;width:100%;min-height:100%}.project-product-page-reader-img{position:absolute;top:0;left:50%;display:block;width:var(--project-product-page-reader-native-width);max-width:none;height:auto;max-height:none;margin:0;cursor:grab;touch-action:none;transform-origin:top center;transition:transform .16s cubic-bezier(.22,1,.36,1);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform}.project-product-page-reader-img.is-dragging{cursor:grabbing;transition:none}.reveal-clip{display:block;overflow:hidden}.reveal-content{display:block;opacity:0;transform:translateY(112%);animation:reveal-content-in .76s cubic-bezier(.19,1,.22,1) forwards;animation-delay:var(--reveal-delay, 0ms)}.reveal-clip.is-scroll-reveal .reveal-content{animation:none}.reveal-clip.is-scroll-reveal.is-reveal-visible .reveal-content{animation:reveal-content-in .76s cubic-bezier(.19,1,.22,1) forwards;animation-delay:var(--reveal-delay, 0ms)}.about-page{position:relative;height:100svh;overflow-x:hidden;overflow-y:auto;background:radial-gradient(circle at 12% 12%,#ddfa420d,#0000 32rem),radial-gradient(circle at 92% 4%,#ddfa420f,#0000 38rem),var(--color-bg);color:var(--color-fg);scrollbar-width:none}.about-page::-webkit-scrollbar{display:none}.about-page-inner{width:100%;padding:clamp(11.8rem,14vh,16rem) var(--container) 16rem}.about-hero{display:flex;min-height:calc(100svh - 18rem);flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:clamp(4.2rem,5.2vw,7.2rem)}.about-kicker,.about-section-label{margin:0;color:var(--color-accent);font-size:clamp(1.4rem,1.1vw,1.9rem);font-weight:500;line-height:1}.about-title-group{display:grid;width:100%;gap:clamp(.8rem,1vw,1.6rem)}.about-title{max-width:min(118rem,92vw);margin:0;font-size:clamp(5.8rem,8vw,12.4rem);font-weight:500;line-height:.92;letter-spacing:0}.about-copy{display:grid;max-width:min(118rem,92vw);gap:clamp(1.6rem,2vw,2.6rem);font-size:clamp(3.2rem,4.2vw,7rem);font-weight:500;line-height:1.04}.about-copy p{margin:0}.about-copy .is-muted{color:var(--color-muted-soft)}.about-section{padding:clamp(7.2rem,10vw,13rem) 0;border-top:1px solid var(--color-border)}.about-section-title{max-width:min(104rem,90vw);margin:2rem 0 clamp(4rem,6vw,7.2rem);font-size:clamp(3.4rem,4.1vw,7rem);font-weight:500;line-height:.98;letter-spacing:0}.about-skill-list{display:flex;max-width:min(105rem,100%);flex-wrap:wrap;gap:.8rem}.about-skill{display:inline-flex;align-items:center;min-height:4.2rem;padding:.9rem 1.4rem .85rem;border:1px solid var(--color-tag-border);border-radius:10rem;background-color:var(--color-surface);color:var(--color-muted-strong);font-size:clamp(1.5rem,1.1vw,1.9rem);font-weight:500;line-height:1;transition:background-color .7s cubic-bezier(.19,1,.22,1),border-color .7s cubic-bezier(.19,1,.22,1),color .7s cubic-bezier(.19,1,.22,1),transform .7s cubic-bezier(.19,1,.22,1)}.about-skill:hover{border-color:var(--color-accent);background-color:var(--color-accent);color:var(--color-hover-fg);transform:translateY(-.1rem)}.about-experience-list{display:grid;gap:clamp(4.4rem,5vw,7rem)}.about-experience-reveal,.about-experience-reveal>.reveal-content,.about-contact-item-reveal,.about-contact-item-reveal>.reveal-content{width:100%}.about-experience-row{display:grid;grid-template-columns:minmax(18rem,.72fr) 3.2rem minmax(0,1.65fr);gap:clamp(2rem,4vw,5.8rem)}.about-experience-date{margin:0;color:var(--color-fg);font-size:clamp(2.8rem,3vw,5rem);font-weight:500;line-height:.98;letter-spacing:0}.about-experience-track{position:relative;display:flex;min-height:100%;justify-content:center}.about-experience-track:before{position:absolute;top:1rem;bottom:-4.8rem;width:1px;background:var(--color-timeline);content:""}.about-experience-reveal:last-child .about-experience-track:before{bottom:1rem}.about-experience-node{position:relative;width:1.1rem;height:1.1rem;margin-top:.6rem;border:2px solid var(--color-node-border);border-radius:50%;background:var(--color-node-bg);box-shadow:0 0 0 3px var(--color-node-shadow)}.about-experience-body{max-width:88rem}.about-experience-company{margin:0;font-size:clamp(2.2rem,2vw,3.6rem);font-weight:500;line-height:1.08}.about-experience-role{margin:.6rem 0 0;color:var(--color-muted);font-size:clamp(1.7rem,1.2vw,2.2rem);font-weight:500;line-height:1.25}.about-experience-details{display:grid;gap:.8rem;margin:2rem 0 0;padding-left:0;list-style:none;color:var(--color-muted-strong);font-size:clamp(1.6rem,1.15vw,2.2rem);font-weight:400;line-height:1.35}.about-experience-details li{position:relative;padding-left:2.3rem}.about-experience-details li:before{position:absolute;left:0;content:"·"}.about-contact-section{display:flex;min-height:82svh;flex-direction:column;justify-content:center}.about-contact-intro{display:grid;width:100%;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:2rem}.about-contact-copy{grid-column:1 / span 3;min-width:0}.about-contact-title{max-width:min(128rem,94vw);margin:1.8rem 0 2.2rem;font-size:clamp(6rem,10vw,16rem);font-weight:500;line-height:.92;letter-spacing:0}.about-contact-role{margin:0 0 clamp(4rem,7vw,8.4rem);color:var(--color-muted-strong);font-size:clamp(2rem,2vw,3.4rem);font-weight:500;line-height:1.1}.about-contact-qr-reveal{grid-column:4;width:clamp(18rem,14vw,28rem);justify-self:start}.about-contact-qr-reveal>.reveal-content{width:100%}.about-contact-qr{display:block;width:100%;height:auto;background:#fff}.about-contact-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem;padding-top:2.6rem;border-top:1px solid var(--color-border)}@media(max-width:1023px){.about-contact-intro{grid-template-columns:1fr;gap:0}.about-contact-copy,.about-contact-qr-reveal{grid-column:auto}.about-contact-qr-reveal{width:min(44vw,24rem);margin-bottom:4rem}}.about-contact-item{display:grid;gap:1rem;min-width:0;color:inherit}.about-contact-label{color:var(--color-accent);font-size:1.4rem;font-weight:500;line-height:1}.about-contact-value{overflow-wrap:anywhere;font-size:clamp(1.9rem,1.7vw,3rem);font-weight:500;line-height:1.1}.about-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:3.4rem}.project-index-page{position:relative;height:100svh;overflow-x:hidden;overflow-y:auto;background:var(--color-bg);color:var(--color-fg);scrollbar-width:none}.project-index-page::-webkit-scrollbar{display:none}.project-index-shell{position:relative;min-height:100svh;padding:20vh var(--container) 15vh}.project-index-list{display:flex;flex-direction:column;font-size:clamp(1.8rem,1.05vw,2rem);font-weight:400;line-height:1.1}.project-index-row{display:block;overflow:hidden;color:inherit;cursor:pointer}.project-index-line,.project-index-final-line{display:block;width:100%;height:1px;background:var(--color-line);transform:scaleX(0);transform-origin:left center}.project-index-line{animation:project-index-line-in .68s cubic-bezier(.19,1,.22,1) forwards;animation-delay:calc(.12s + (var(--row-index) * 48ms))}.project-index-final-line{animation:project-index-line-in .68s cubic-bezier(.19,1,.22,1) .76s forwards}.project-index-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:1.8rem 0 2rem;overflow:hidden;transform:translateY(100%);transition:color .25s ease;animation:project-index-row-in .68s cubic-bezier(.19,1,.22,1) forwards;animation-delay:calc(.18s + (var(--row-index) * 48ms))}.project-index-details{position:relative;z-index:1;display:flex;width:90%;align-items:center;gap:.6rem}.project-index-title{width:25%;font-weight:500}.project-index-service,.project-index-collaborator{width:37%}.project-index-year{position:relative;z-index:1;width:10%;text-align:right;text-wrap:pretty}.project-index-hover{position:absolute;top:0;left:-50%;width:200%;height:100%;background:var(--color-accent);transform:scaleY(0);transform-origin:top center;transition:transform .25s ease}.project-index-row:hover .project-index-item{color:var(--color-hover-fg)}.project-index-row:hover .project-index-hover{transform:scaleY(1)}.project-canvas{position:relative;width:100%;height:100svh;overflow:hidden;touch-action:none}.project-canvas canvas{display:block}.overlay-top,.overlay-bottom{position:fixed;left:0;z-index:40;width:100%;height:15%;pointer-events:none}.overlay-top{top:0;background-image:var(--overlay-top-bg)}.overlay-bottom{bottom:0;background-image:var(--overlay-bottom-bg)}.site-header,.site-footer{position:fixed;left:0;right:0;z-index:60;pointer-events:none;opacity:0;transform:translateY(70px);animation:chrome-in .72s cubic-bezier(.19,1,.22,1) 1.18s forwards}.site-header{top:1.8rem;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 var(--container)}.nav-left,.nav-right{display:flex;align-items:center;gap:.8rem}.nav-right{justify-content:flex-end}.brand-title{pointer-events:auto;font-size:clamp(2rem,1.35vw,2.6rem);font-weight:500;line-height:1;letter-spacing:0;white-space:nowrap}.text-pill,.icon-pill{display:inline-flex;position:relative;align-items:center;justify-content:center;border:0;background:var(--color-pill);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:var(--color-fg);cursor:pointer;pointer-events:auto;transition:background-color .7s cubic-bezier(.19,1,.22,1),color .7s cubic-bezier(.19,1,.22,1),transform .7s cubic-bezier(.19,1,.22,1)}.text-pill{min-height:4.4rem;padding:1.05rem 1.8rem 1rem;border-radius:10rem;font-size:1.7rem;font-weight:500;line-height:1.1;overflow:hidden;white-space:nowrap}.icon-pill{width:4.4rem;height:4.4rem;border-radius:50%}.icon-pill svg{transition:transform .52s cubic-bezier(.19,1,.22,1)}.pill-label{display:grid;height:1.12em;overflow:hidden}.pill-label-text{grid-area:1 / 1;transform:translateY(0);transition:transform .52s cubic-bezier(.19,1,.22,1)}.pill-label-text-hover{transform:translateY(116%)}.text-pill:hover,.icon-pill:hover,.text-pill.is-active{background:var(--color-accent);color:var(--color-hover-fg)}.text-pill:hover .pill-label-text,.text-pill:focus-visible .pill-label-text{transform:translateY(-116%)}.text-pill:hover .pill-label-text-hover,.text-pill:focus-visible .pill-label-text-hover{transform:translateY(0)}.icon-pill:hover svg,.icon-pill:focus-visible svg{transform:rotate(38deg) scale(1.06)}.text-pill:active,.icon-pill:active{transform:scale(.96)}.route-transition{position:fixed;z-index:3000;inset:0;overflow:hidden;isolation:isolate;pointer-events:none;opacity:0}.route-transition.is-active{pointer-events:auto;opacity:1}.route-transition-veil,.route-transition-curtain,.route-transition-curtain-shadow{position:absolute;pointer-events:none;will-change:opacity,transform}.route-transition-veil{inset:0;background:#000;opacity:0}.route-transition-curtain,.route-transition-curtain-shadow{inset:0;width:100%;height:100%;background:var(--color-accent);transform:translate3d(0,105%,0);transform-origin:center bottom}.route-transition-curtain{z-index:1}.route-transition-curtain-shadow{opacity:0;box-shadow:0 -2.4rem 5rem #ddfa423d,0 2.4rem 5rem #00000047;filter:blur(.8px)}.route-transition.is-active .route-transition-veil{animation:route-veil 1.36s cubic-bezier(.76,0,.24,1) forwards}.route-transition.is-active .route-transition-curtain{animation:route-curtain-pull-up 1.12s cubic-bezier(.76,0,.24,1) .1s forwards}.route-transition.is-active .route-transition-curtain-shadow{animation:route-curtain-shadow-pull-up 1.12s cubic-bezier(.76,0,.24,1) .1s forwards}.site-footer{bottom:2rem;display:flex;align-items:center;justify-content:space-between;padding:0 var(--container)}.footer-mail{pointer-events:auto;font-size:1.8rem;font-weight:500;line-height:1}.footer-icp{position:absolute;left:50%;color:var(--color-muted);font-size:1.2rem;font-weight:500;line-height:1;pointer-events:auto;transform:translate(-50%);transition:color .18s ease;white-space:nowrap}.footer-icp:hover,.footer-icp:focus-visible{color:var(--color-fg)}.overview-controls{display:flex;align-items:center;gap:2.4rem;color:var(--color-muted);font-size:1.7rem;font-weight:500;line-height:1;pointer-events:auto}.overview-controls .footer-view-link{background:transparent;color:var(--color-muted)}.footer-view-link-index.is-active{background:var(--color-accent);color:var(--color-hover-fg)}.overview-controls:has(.footer-view-link-overview:is(:hover,:focus-visible)) .footer-view-link-overview{background:var(--color-accent);color:var(--color-hover-fg)}.overview-controls:has(.footer-view-link-overview:is(:hover,:focus-visible)) .footer-view-link-index{background:transparent;color:var(--color-muted)}.loader-shell{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:var(--color-loader-bg)}.loader-track{position:relative;width:min(36rem,42vw);height:2px;overflow:hidden;background:var(--color-loader-track)}.loader-bar{position:absolute;inset:0;background:var(--color-accent);transform:scaleX(0)}.cursor-trail{position:fixed;inset:0;z-index:89;width:100vw;height:100vh;pointer-events:none}.cursor-trail path{fill:none;stroke:var(--color-accent);stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgba(221,250,66,.35))}.custom-cursor-label{position:fixed;top:0;left:0;z-index:90;max-width:24rem;padding:0;background:transparent;border:0;color:var(--color-fg);font-size:1.4rem;font-weight:500;line-height:1;opacity:0;pointer-events:none;text-shadow:0 1px 6px rgba(0,0,0,.85);transition:opacity .16s ease;white-space:nowrap;will-change:transform}.custom-cursor-label.is-visible{opacity:1}.side-scroller{position:fixed;top:50%;right:1.2rem;z-index:55;display:none;padding:2rem;border:0;background:transparent;cursor:pointer;outline:0;pointer-events:auto;touch-action:none;transform:translateY(-50%)}.side-scroller-track{position:relative;width:6px;height:18rem;overflow:hidden;border-radius:12px;background:var(--color-loader-track)}.side-scroller-track span{position:absolute;top:0;left:0;width:100%;height:34%;border-radius:inherit;background:var(--color-accent);transform:translateY(calc(var(--side-scroller-progress, 0) * 11.88rem));transition:transform .12s ease}.side-scroller:focus-visible .side-scroller-track{outline:2px solid var(--color-accent);outline-offset:.6rem}.side-scroller:active .side-scroller-track span{transition:none}@keyframes chrome-in{to{opacity:1;transform:translateY(0)}}@keyframes project-index-line-in{to{transform:scaleX(1)}}@keyframes project-index-row-in{to{transform:translateY(0)}}@keyframes reveal-content-in{to{opacity:1;transform:translateY(0)}}@keyframes reveal-line-in{to{transform:scaleX(1)}}@keyframes route-veil{0%{opacity:0}22%{opacity:.9}48%{opacity:.9}76%{opacity:.32}to{opacity:0}}@keyframes route-curtain-pull-up{0%{transform:translate3d(0,105%,0)}42%{transform:translateZ(0)}56%{transform:translateZ(0)}to{transform:translate3d(0,-105%,0)}}@keyframes route-curtain-shadow-pull-up{0%{opacity:0;transform:translate3d(0,105%,0)}24%{opacity:.58}48%{opacity:.58;transform:translateZ(0)}64%{opacity:.42;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-105%,0)}}@keyframes project-page-color-open{0%{transform:translateZ(0)}42%{transform:translateZ(0)}to{transform:translate3d(0,-105%,0)}}@media(prefers-reduced-motion:reduce){.reveal-content,.reveal-clip.is-scroll-reveal .reveal-content,.reveal-clip.is-scroll-reveal.is-reveal-visible .reveal-content{opacity:1;transform:translateY(0);animation:none}}@media(min-width:768px){:root{--container: 4.8rem}}@media(min-width:1280px){:root{--container: 6.2rem}.side-scroller{display:block}}@media(max-width:767px){.project-detail-hero{min-height:0;aspect-ratio:var(--project-detail-cover-aspect)}.project-detail-hero-image{object-fit:contain}.site-header{top:1.4rem;grid-template-columns:1fr auto;row-gap:1rem}.brand-title{grid-column:1 / -1;grid-row:1;justify-self:center;font-size:1.8rem}.nav-left{grid-column:1;grid-row:2;gap:.5rem}.nav-right{grid-column:2;grid-row:2;gap:.5rem}.text-pill{min-height:3.8rem;padding:.9rem 1.2rem .85rem;font-size:1.4rem}.icon-pill{width:3.8rem;height:3.8rem}.nav-right .icon-pill{display:none}.site-footer{bottom:1.6rem}.footer-mail{font-size:1.4rem}.footer-icp{bottom:calc(100% + 1rem);font-size:1rem}.overview-controls{gap:1rem;font-size:1.4rem}.loader-track{width:min(24rem,58vw)}.custom-cursor-label,.cursor-trail{display:none}.about-page-inner{padding:12.8rem var(--container) 13.6rem}.about-hero{min-height:auto;padding-bottom:8rem}.about-title{max-width:100%;font-size:clamp(5.2rem,16vw,7.8rem);line-height:.96}.about-copy{max-width:100%;font-size:clamp(2.8rem,9vw,4.4rem);line-height:1.08}.about-section{padding:6.4rem 0}.about-section-title{margin-bottom:3.6rem;font-size:clamp(3rem,9.4vw,4.8rem);line-height:1.02}.about-skill{min-height:3.8rem;padding:.85rem 1.1rem .8rem;font-size:1.4rem}.about-experience-row{grid-template-columns:1fr;gap:1.4rem;padding-left:1.8rem;border-left:1px solid var(--color-border)}.about-experience-track{display:none}.about-experience-date{font-size:clamp(2.8rem,9vw,4rem)}.about-experience-company{font-size:clamp(2.1rem,6.8vw,3rem)}.about-experience-details{padding-left:0;font-size:1.55rem}.about-experience-details li{padding-left:1.9rem}.about-contact-section{min-height:auto}.about-contact-title{font-size:clamp(5.2rem,16vw,8.6rem);line-height:.96}.about-contact-grid{grid-template-columns:1fr;gap:2.4rem}.about-contact-value{font-size:2.2rem}.project-index-shell{padding:18vh var(--container) 14rem}.project-index-list{font-size:1.6rem}.project-index-item{align-items:flex-start;padding:1.8rem 0 2rem}.project-index-details{width:60%;flex-direction:column;align-items:flex-start;gap:.6rem}.project-index-title,.project-index-service,.project-index-collaborator{width:100%}.project-index-service{opacity:.6}.project-index-collaborator{padding-top:.8rem;opacity:.8}.project-index-year{width:40%}.project-index-row:hover .project-index-item{color:var(--color-fg)}.project-index-row:hover .project-index-hover{transform:scaleY(0)}.project-detail-feed{padding:0 0 13.6rem}.project-feed-admin-link{top:8.8rem;margin-left:var(--container)}.project-product-pages{grid-template-columns:1fr;width:min(100% - var(--container) * 2,42rem);margin-top:7.2rem;gap:1.8rem}.project-product-page-copy{order:-1}.project-product-page-file{min-height:7.6rem;padding:1.15rem 1.2rem}.project-product-page-file-icon{width:4.6rem;height:4.6rem}.project-product-page-copy-title{max-width:100%;font-size:clamp(2.4rem,9vw,3.8rem)}.project-product-page-dialog{overflow-y:hidden;scrollbar-gutter:auto}}
