:root,[data-theme=light]{--bg:#fffff4;--text:#322f2f;--accent:#ee8533;--blob:#f0ece2;--nav-blob:#e4ddd0;--cursor-blob:#ee8533;--blobs-opacity:.5;--cursor-blend:multiply;--display:"Sarina", "Arial Rounded MT Bold", sans-serif;--sans:"Outfit", "Avenir Next", sans-serif}[data-theme=dark]{--bg:#141211;--text:#fffff4;--accent:#ee8533;--blob:#242120;--nav-blob:#2a2522;--cursor-blob:#ee8533;--blobs-opacity:.55;--cursor-blend:screen}*,:before,:after{box-sizing:border-box}html,body{overscroll-behavior:none;touch-action:manipulation;width:100%;height:100dvh;max-height:100dvh;margin:0;overflow:hidden}body{font-family:var(--sans);color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .25s,color .25s}#app{--swipe-x:0px;--swipe-y:0px;--work-swipe:0px;width:100%;height:100dvh;max-height:100dvh;position:relative;overflow:hidden}.stage{will-change:transform;grid-template-rows:100dvh 100dvh 100dvh;grid-template-columns:100vw 100vw 100vw;width:300vw;height:300dvh;transition:transform .7s cubic-bezier(.22,1,.36,1);display:grid}#app.is-swiping .stage,#app.is-swiping .work-list,#app.is-swiping .work-detail{transition:none}#app[data-screen=play] .stage{transform:translate(var(--swipe-x), var(--swipe-y))}#app[data-screen=home] .stage{transform:translate(calc(-100vw + var(--swipe-x)), var(--swipe-y))}#app[data-screen=work] .stage{transform:translate(calc(-200vw + var(--swipe-x)), var(--swipe-y))}#app[data-screen=about] .stage{transform:translate(calc(-100vw + var(--swipe-x)), calc(-100dvh + var(--swipe-y)))}#app[data-screen=experience] .stage{transform:translate(calc(-200vw + var(--swipe-x)), calc(-100dvh + var(--swipe-y)))}#app[data-screen=contact] .stage{transform:translate(calc(-100vw + var(--swipe-x)), calc(-200dvh + var(--swipe-y)))}.screen{z-index:1;width:100vw;height:100dvh;max-height:100dvh;padding:1.5rem;position:relative;overflow:hidden}.screen--play{grid-area:1/1;padding:0}.play-root{width:100%;height:100%;position:relative;overflow:hidden}.play-canvas{touch-action:none;width:100%;height:100%;display:block}.play-welcome{z-index:2;background:color-mix(in srgb, var(--bg) 52%, transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:absolute;inset:0}.play-root.is-playing .play-welcome{display:none}.play-leaderboard-wrap{pointer-events:none;width:max-content;position:absolute;top:50%;left:calc(25% - 1.4375rem);transform:translate(-50%,-50%)}.play-leaderboard{text-align:left;font-family:var(--sans);letter-spacing:.14em;text-transform:lowercase;margin:0;padding:0;font-size:.72rem;font-weight:300;list-style:none}.play-leaderboard-chevron{display:none}.play-leaderboard li{grid-template-columns:1.1rem 5.4rem 3.2rem;align-items:baseline;gap:.45rem;line-height:1.55;display:grid}.play-leaderboard li:nth-child(7n+1){color:var(--accent)}.play-leaderboard li:nth-child(7n+2){color:#5c8f76}.play-leaderboard li:nth-child(7n+3){color:#c45c5c}.play-leaderboard li:nth-child(7n+4){color:#5c7ec4}.play-leaderboard li:nth-child(7n+5){color:#a56bb8}.play-leaderboard li:nth-child(7n+6){color:#c49a4a}.play-leaderboard li:nth-child(7n){color:#4aa3b5}.play-leaderboard li.is-empty{opacity:.4}.play-leaderboard-rank{opacity:.55}.play-leaderboard-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.play-leaderboard-score{text-align:right;font-variant-numeric:tabular-nums}.play-name-prompt{flex-direction:column;align-items:center;gap:.7rem;min-width:9.5rem;display:none}.play-full-error{max-width:14rem;font-family:var(--sans);letter-spacing:.14em;text-transform:lowercase;color:var(--text);opacity:.7;margin:.9rem 0 0;font-size:.72rem;font-weight:300;line-height:1.45;display:none}.play-welcome.is-full .play-full-error{display:block}.play-welcome.is-naming .play-start,.play-welcome.is-naming .play-full-error{display:none}.play-welcome.is-naming .play-name-prompt{display:flex}.play-name-prompt-title{font-family:var(--sans);letter-spacing:.16em;text-transform:lowercase;color:var(--text);opacity:.62;margin:0;font-size:.72rem;font-weight:300}.play-name-field{flex-direction:column;align-items:center;gap:.28rem;display:flex}.play-name-field-label{font-family:var(--sans);letter-spacing:.16em;text-transform:lowercase;color:var(--text);opacity:.45;font-size:.62rem;font-weight:300}.play-name-input{border:0;border-bottom:1px solid color-mix(in srgb, var(--text) 28%, transparent);width:7.5rem;font-family:var(--sans);letter-spacing:.12em;text-align:center;text-transform:lowercase;color:var(--text);background:0 0;outline:none;margin:0;padding:.28rem .2rem;font-size:16px;font-weight:400}.play-name-input:focus{border-bottom-color:var(--accent)}.play-name-actions{gap:.9rem;display:flex}.play-name-save,.play-name-skip{font-family:var(--sans);letter-spacing:.16em;text-transform:lowercase;color:var(--text);opacity:.55;cursor:pointer;background:0 0;border:0;margin:0;padding:0;font-size:.62rem;font-weight:400}.play-name-save:hover,.play-name-skip:hover,.play-name-save:focus-visible,.play-name-skip:focus-visible{opacity:.9}.play-name-save:focus-visible,.play-name-skip:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (width<=720px){.play-leaderboard-wrap{pointer-events:auto;padding-bottom:.85rem;top:calc(75% + 1.4375rem);left:50%;transform:translate(-50%,-50%)}.play-leaderboard{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scrollbar-width:none;-ms-overflow-style:none;max-height:8.525em;overflow-y:auto}.play-leaderboard::-webkit-scrollbar{display:none}.play-leaderboard-chevron{width:.7rem;height:.7rem;color:var(--text);opacity:.45;pointer-events:none;transition:opacity .2s;display:block;position:absolute;bottom:0;left:50%;transform:translate(-50%)rotate(90deg)}.play-leaderboard-wrap.is-scrolled .play-leaderboard-chevron{opacity:0}}.play-hint{z-index:3;left:1.25rem;right:1.25rem;bottom:max(1rem, env(safe-area-inset-bottom));font-family:var(--sans);letter-spacing:.16em;text-transform:lowercase;color:var(--text);opacity:.5;text-align:center;pointer-events:none;margin:0;font-size:.72rem;font-weight:300;position:absolute}@media (hover:none){.play-hint{display:none}}.play-stats{z-index:3;top:max(1.25rem, env(safe-area-inset-top));height:2.5rem;font-family:var(--sans);letter-spacing:.16em;text-transform:lowercase;color:var(--text);opacity:.5;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:1.1rem;margin:0;font-size:.72rem;font-weight:300;display:none;position:absolute;left:0;right:0}.play-root.is-playing .play-stats{display:flex}@media (width<=639px){.play-stats{top:calc(max(1.25rem, env(safe-area-inset-top)) + 2.5rem + .35rem);height:auto;left:1.25rem;right:1.25rem}}.play-start{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.play-start-blob{--magnet-x:0px;--magnet-y:0px;transform:translate(var(--magnet-x), var(--magnet-y));display:inline-flex}.play-start-shape{background:var(--nav-blob);opacity:.92;border-radius:58% 42% 50% 46%/44% 52% 42% 58%;justify-content:center;align-items:center;width:5.75rem;height:5.75rem;padding:.55rem;transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s;animation:7s ease-in-out -1.8s infinite blob-morph;display:inline-flex}.play-start-label{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;text-align:center;color:var(--text);opacity:.75;font-size:.62rem;font-weight:500;line-height:1.15;transition:opacity .3s}.play-start:hover .play-start-shape,.play-start:focus-visible .play-start-shape{opacity:1;transform:scale(1.08)}.play-start:hover .play-start-label,.play-start:focus-visible .play-start-label{opacity:.9}.play-start:focus-visible{outline:none}.play-start:focus-visible .play-start-shape{outline:2px solid var(--accent);outline-offset:3px}.play-start.is-busy{pointer-events:none}.play-start.is-busy .play-start-shape{opacity:.7}.play-hud{z-index:4;pointer-events:none;display:none;position:absolute;inset:0}.play-shoot{padding:3.25rem 3.5rem max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;background:0 0;border:0;justify-content:flex-start;align-items:flex-end;margin:0;display:inline-flex;position:absolute;bottom:0;left:0}.play-shoot-shape{background:var(--nav-blob);opacity:.88;border-radius:58% 42% 50% 46%/44% 52% 42% 58%;justify-content:center;align-items:center;width:3.75rem;height:3.75rem;padding:.36rem;transition:transform .2s cubic-bezier(.22,1,.36,1),opacity .2s;animation:7s ease-in-out -3.2s infinite blob-morph;display:inline-flex}.play-shoot-label{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;text-align:center;color:var(--text);opacity:.75;font-size:.55rem;font-weight:500;line-height:1.15}.play-shoot:active .play-shoot-shape,.play-shoot.is-pressed .play-shoot-shape{opacity:1;transform:scale(.9)}.play-shoot:focus-visible{outline:none}.play-shoot:focus-visible .play-shoot-shape{outline:2px solid var(--accent);outline-offset:3px}.play-stick{pointer-events:none;width:0;height:0;position:absolute}.play-stick-base,.play-stick-thumb{border-radius:50%;position:absolute;top:0;left:0}.play-stick-base{background:var(--nav-blob);opacity:.42;width:6.5rem;height:6.5rem;margin:-3.25rem 0 0 -3.25rem}.play-stick-thumb{background:var(--text);opacity:.78;will-change:transform;width:2.65rem;height:2.65rem;margin:-1.325rem 0 0 -1.325rem}@media (hover:none){.play-root.is-playing .play-hud{display:block}}@media (orientation:landscape) and (hover:none){.play-shoot{padding:2.6rem 2.8rem max(.7rem, env(safe-area-inset-bottom)) max(.7rem, env(safe-area-inset-left));bottom:0;left:0}.play-shoot-shape{width:3.05rem;height:3.05rem;padding:.28rem}.play-shoot-label{font-size:.48rem}.play-stick-base{width:5.5rem;height:5.5rem;margin:-2.75rem 0 0 -2.75rem}.play-stick-thumb{width:2.2rem;height:2.2rem;margin:-1.1rem 0 0 -1.1rem}}.screen--home{grid-area:1/2;justify-content:center;align-items:center;display:flex}.screen--work{grid-area:1/3;padding:0;overflow:hidden}.work-panes{width:100%;height:100%;position:relative;overflow:hidden}.work-pane{will-change:transform;width:100%;height:100%;padding:1.5rem;transition:transform .7s cubic-bezier(.22,1,.36,1);position:absolute;inset:0;overflow:hidden}.work-list{transform:translate3d(var(--work-swipe), 0, 0)}.work-detail{transform:translate3d(calc(100% + var(--work-swipe)), 0, 0);z-index:1;overscroll-behavior:contain;overflow-y:auto}#app[data-project] .work-list{transform:translate3d(calc(-100% + var(--work-swipe)), 0, 0)}#app[data-project] .work-detail{transform:translate3d(var(--work-swipe), 0, 0);z-index:2}.screen--about{grid-area:2/2;overflow:hidden}.screen--experience{overscroll-behavior:contain;grid-area:2/3;overflow-y:auto}.screen--contact{grid-area:3/2;overflow:hidden}.screen-inner{--screen-pad-top:15dvh;max-width:40rem;padding:var(--screen-pad-top) .5rem 4rem;margin:0 auto}.goo-svg{width:0;height:0;position:absolute;overflow:hidden}.blobs{z-index:0;pointer-events:none;filter:url(#goo);opacity:var(--blobs-opacity);transition:opacity .25s;position:fixed;inset:0;overflow:hidden}#app[data-screen=play] .blobs{opacity:0;visibility:hidden}#app[data-screen=play] .blobs-toggle{display:none}.blob{background:var(--blob);will-change:transform, border-radius;border-radius:50%;display:block;position:absolute;top:0;left:0}.blob--endcap{pointer-events:none;opacity:1;border-radius:50%}.blob-cursor{z-index:100;pointer-events:none;opacity:0;width:18px;height:18px;mix-blend-mode:var(--cursor-blend);contain:layout style;will-change:transform;margin:-9px 0 0 -9px;transition:opacity .2s;position:fixed;top:0;left:0}.blob-cursor.is-on{opacity:1}.blob-cursor.is-on.is-melted{opacity:0}.blob-cursor-motion{transform-origin:50%;will-change:transform;width:100%;height:100%;transition:transform .2s ease-out;display:block}.blob-cursor.is-moving .blob-cursor-motion{transition:none}.blob-cursor-shape{background:var(--cursor-blob);transform-origin:50%;border-radius:58% 42% 50% 46%/44% 52% 42% 58%;width:100%;height:100%;transition:transform .18s cubic-bezier(.22,1,.36,1);animation:6.5s ease-in-out infinite blob-morph;display:block}.blob-cursor.is-hover .blob-cursor-shape{transform:scale(2.2)}.blob-cursor.is-down .blob-cursor-shape{transform:scale(.78)}.blob-cursor.is-melted .blob-cursor-shape{transform:scale(0)}@media (hover:hover) and (pointer:fine){html.has-blob-cursor,html.has-blob-cursor *{cursor:none!important}}.corner-cluster{top:max(1.25rem, env(safe-area-inset-top));left:max(1.25rem, env(safe-area-inset-left));z-index:10;align-items:center;display:flex;position:fixed}.corner-cluster--right{left:auto;right:max(1.25rem, env(safe-area-inset-right))}.corner-btn.kill-toggle{display:none}#app[data-screen=play]:has(.play-root.is-playing) .kill-toggle{display:inline-flex}.corner-btn{width:2.5rem;height:2.5rem;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;padding:0;transition:color .25s,opacity .2s;display:inline-flex}.corner-btn:hover{opacity:.7}.corner-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.corner-btn.is-off{opacity:.4}.corner-btn.is-off:hover{opacity:.7}.home-toggle .theme-icon,.kill-toggle .theme-icon{width:1.12rem;height:1.12rem}.theme-icon{width:1.35rem;height:1.35rem;display:block}.hero{z-index:1;text-align:center;will-change:transform;flex-direction:column;align-items:center;display:flex;position:relative}.name{font-family:var(--display);letter-spacing:.01em;color:var(--text);margin:0;font-size:clamp(2.49rem,8vw,5.8rem);font-weight:400;line-height:1.1;animation:1.1s ease-out both fade-rise}.name:after{content:"";background:var(--accent);transform-origin:50%;width:3.25rem;height:2px;margin:.45rem auto 0;animation:.9s ease-out .45s both draw-line;display:block}.hero-meta{flex-wrap:wrap;justify-content:center;align-items:center;gap:.65rem 1.1rem;margin:1.15rem 0 0;animation:1.1s ease-out .15s both fade-rise;display:flex}.hero .title{font-size:clamp(.85rem,2.5vw,.9rem)}.hero-meta-sep{font-family:var(--sans);letter-spacing:.22em;color:var(--text);opacity:.45;font-size:.85rem;font-weight:500}.hero-cta{color:var(--text);font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;opacity:.9;cursor:pointer;align-items:center;gap:0;margin:0;font-size:.85rem;font-weight:500;text-decoration:none;transition:opacity .2s,color .2s;display:inline-flex}.hero-cta .project-desc-arrow-track{flex:none;width:.72rem;min-width:.72rem;margin-left:.4rem;position:relative}.hero-cta .project-desc-arrow{opacity:.5;width:.72rem;height:.72rem;transition:transform .45s cubic-bezier(.22,1,.36,1),opacity .2s;position:relative;left:0;transform:translateY(.08em)}.hero-cta:hover,.hero-cta:focus-visible{opacity:1;color:var(--accent)}.hero-cta:hover .project-desc-arrow,.hero-cta:focus-visible .project-desc-arrow{opacity:.9;transform:translateY(.08em)translate(.2rem)}.hero-cta:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.nav-blob{z-index:10;width:auto;min-width:3.25rem;height:3.25rem;color:var(--accent);cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;--magnet-x:0px;--magnet-y:0px;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:opacity .35s,visibility .35s;display:inline-flex;position:fixed}.nav-blob-shape{box-sizing:border-box;background:var(--nav-blob);width:auto;min-width:3.25rem;height:100%;color:var(--accent);opacity:.92;--nav-blob-r0:58% 42% 50% 46% / 44% 52% 42% 58%;--nav-blob-r1:44% 56% 40% 60% / 54% 40% 60% 44%;--nav-blob-r2:52% 44% 60% 40% / 40% 58% 44% 56%;--nav-blob-r-hover:48% 52% 50% 50% / 52% 48% 52% 48%;border-radius:var(--nav-blob-r0);border:3px solid #0000;justify-content:center;align-items:center;gap:0;padding-inline:1.1rem;transition:padding .35s cubic-bezier(.22,1,.36,1),gap .35s cubic-bezier(.22,1,.36,1),opacity .3s,border-color .2s,border-radius .4s cubic-bezier(.22,1,.36,1);animation:7s ease-in-out infinite nav-blob-morph;display:flex}.nav-blob-arrow{opacity:.75;flex:none;width:1.05rem;height:1.05rem;display:block}.nav-blob-label{max-width:0;font-family:var(--sans);letter-spacing:.12em;text-transform:lowercase;white-space:nowrap;color:var(--text);opacity:0;pointer-events:none;margin:0;font-size:.75rem;font-weight:300;line-height:1;transition:max-width .35s cubic-bezier(.22,1,.36,1),opacity .25s;overflow:hidden}.nav-blob--right{transform:translateY(-50%) translate(var(--magnet-x), var(--magnet-y));top:50%;right:.85rem}.nav-blob--right .nav-blob-shape{--nav-blob-r0:62% 38% 54% 46% / 48% 58% 40% 52%;--nav-blob-r1:46% 56% 40% 62% / 58% 42% 56% 40%;--nav-blob-r2:54% 48% 58% 42% / 40% 60% 44% 54%;--nav-blob-r-hover:50% 50% 46% 54% / 54% 46% 52% 48%;flex-direction:row-reverse}.nav-blob--right .nav-blob-arrow{transform:none}.nav-blob--bottom{transform:translateX(-50%) translate(var(--magnet-x), var(--magnet-y));transition:bottom .25s;bottom:.85rem;left:50%}#app[data-cookie-banner=open]:not([data-screen=play]) .nav-blob--bottom{bottom:calc(var(--cookie-banner-h,2.75rem) + var(--cookie-banner-gap,.15rem))}.nav-blob--bottom .nav-blob-shape{--nav-blob-r0:50% 50% 36% 64% / 58% 44% 52% 46%;--nav-blob-r1:42% 60% 48% 50% / 40% 62% 38% 56%;--nav-blob-r2:60% 38% 46% 54% / 50% 42% 58% 48%;--nav-blob-r-hover:52% 48% 50% 50% / 48% 52% 46% 54%;animation-delay:-2.2s}.nav-blob--bottom .nav-blob-arrow{transform:rotate(90deg)}.nav-blob--left{transform:translateY(-50%) translate(var(--magnet-x), var(--magnet-y));top:50%;left:.85rem}.nav-blob--left .nav-blob-shape{--nav-blob-r0:38% 64% 44% 58% / 54% 40% 56% 46%;--nav-blob-r1:56% 46% 60% 40% / 42% 58% 38% 60%;--nav-blob-r2:44% 58% 48% 52% / 60% 38% 52% 44%;--nav-blob-r-hover:48% 52% 54% 46% / 46% 54% 48% 52%;animation-delay:-4.1s}.nav-blob--left .nav-blob-arrow{transform:rotate(180deg)}.nav-blob--top{transform:translateX(-50%) translate(var(--magnet-x), var(--magnet-y));top:.85rem;left:50%}.nav-blob--top .nav-blob-shape{--nav-blob-r0:46% 54% 62% 36% / 40% 58% 44% 56%;--nav-blob-r1:60% 40% 48% 54% / 56% 38% 62% 42%;--nav-blob-r2:38% 62% 54% 46% / 48% 52% 46% 54%;--nav-blob-r-hover:50% 50% 48% 52% / 50% 48% 54% 46%;animation-delay:-1.4s}.nav-blob--top .nav-blob-arrow{transform:rotate(-90deg)}#app[data-screen=play] .nav-blob--right,#app[data-screen=home] .nav-blob--left,#app[data-screen=home] .nav-blob--right,#app[data-screen=home] .nav-blob--bottom,#app[data-screen=work] .nav-blob--left,#app[data-screen=work] .nav-blob--bottom,#app[data-screen=about] .nav-blob--top,#app[data-screen=about] .nav-blob--right,#app[data-screen=about] .nav-blob--bottom,#app[data-screen=experience] .nav-blob--left,#app[data-screen=experience] .nav-blob--top,#app[data-screen=contact] .nav-blob--top{opacity:1;visibility:visible;pointer-events:auto}.nav-blob:focus-visible{outline:none}.nav-blob:focus-visible .nav-blob-shape{outline:2px solid var(--accent);outline-offset:3px;opacity:1;border-radius:var(--nav-blob-r-hover);gap:.4rem;animation:none}.nav-blob:focus-visible .nav-blob-label{opacity:.7;max-width:7em}.nav-blob--left:focus-visible .nav-blob-shape{padding-inline:1.1rem .9rem}.nav-blob--right:focus-visible .nav-blob-shape,.nav-blob--top:focus-visible .nav-blob-shape,.nav-blob--bottom:focus-visible .nav-blob-shape{padding-inline:.9rem 1.1rem}@media (hover:hover){.nav-blob:hover .nav-blob-shape{opacity:1;border-color:var(--cursor-blob);border-radius:var(--nav-blob-r-hover);gap:.4rem;animation:none}.nav-blob:hover .nav-blob-label{opacity:.7;max-width:7em}.nav-blob--left:hover .nav-blob-shape{padding-inline:1.1rem .9rem}.nav-blob--right:hover .nav-blob-shape,.nav-blob--top:hover .nav-blob-shape,.nav-blob--bottom:hover .nav-blob-shape{padding-inline:.9rem 1.1rem}}.swipe-hints{z-index:10;left:1.25rem;right:1.25rem;bottom:max(1rem, env(safe-area-inset-bottom));pointer-events:none;transition:bottom .25s;display:none;position:fixed}#app[data-cookie-banner=open]:not([data-screen=play]) .swipe-hints{bottom:calc(var(--cookie-banner-h,2.75rem) + var(--cookie-banner-gap,.15rem))}.swipe-hints__set{font-family:var(--sans);--swipe-track:.12em;letter-spacing:0;text-transform:lowercase;color:var(--text);opacity:.5;text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:.7rem 1.15rem;margin:0;font-size:.72rem;font-weight:300;display:none}.swipe-hints__dir{appearance:none;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;white-space:nowrap;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items:center;gap:.28rem;margin:0;padding:.45rem .2rem;line-height:1;display:inline-flex}.swipe-hints__label{letter-spacing:var(--swipe-track)}.swipe-hints__dir--right{flex-direction:row-reverse}.swipe-hints__dir--right .swipe-hints__label{margin-inline-end:calc(-1 * var(--swipe-track))}.swipe-hints__dir:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.swipe-hints__chevron{transform-origin:50%;flex-shrink:0;width:.75rem;height:.75rem;display:block;overflow:visible}.swipe-hints__chevron--right{transform:none}.swipe-hints__chevron--left{transform:rotate(180deg)}.swipe-hints__chevron--up{transform:rotate(-90deg)}.swipe-hints__chevron--down{transform:rotate(90deg)}.screen-title{font-family:var(--display);letter-spacing:.01em;color:var(--text);margin:0;font-size:clamp(2rem,5vw,3.25rem);font-weight:400;line-height:1.1}.screen-title:after{content:"";background:var(--accent);width:3.25rem;height:2px;margin:.7rem 0 0;display:block}.project-grid{gap:1.75rem;margin:2.5rem 0 0;padding:0;list-style:none;display:grid}.project-link{color:inherit;cursor:pointer;border-radius:.35rem;text-decoration:none;display:block}.project-link:focus-visible{outline:2px solid var(--accent);outline-offset:6px}.project-name{font-family:var(--sans);letter-spacing:.02em;color:var(--text);margin:0;font-size:1.15rem;font-weight:500}.project-desc{color:var(--text);margin:.35rem 0 0;padding-bottom:.85rem;font-size:.98rem;font-weight:300;line-height:1.5;position:relative}.project-desc-row{align-items:baseline;width:100%;display:flex}.project-desc-text{opacity:.75;min-width:0;margin-right:.4rem}.project-desc-arrow-track{flex:auto;min-width:.72rem;position:relative}.project-desc-arrow{opacity:.5;width:.72rem;height:.72rem;transition:left .45s cubic-bezier(.22,1,.36,1),opacity .2s;position:relative;left:0;transform:translateY(.08em)}.project-link:hover .project-desc-arrow,.project-link:focus-visible .project-desc-arrow{opacity:.9;left:calc(100% - .72rem)}.project-underline{opacity:0;pointer-events:none;width:100%;height:14px;color:var(--text);transition:opacity .2s;position:absolute;bottom:0;left:0;right:0;overflow:visible}.project-underline-path{fill:none;stroke:var(--text);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round}@media (hover:hover){.project-link:hover .project-underline,.project-link:focus-visible .project-underline{opacity:1}}.work-list .screen-inner,.work-detail .screen-inner{position:relative}.work-kicker,.work-back,.title{font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--text);opacity:.55;margin:0;font-size:.85rem;font-weight:500}.work-kicker,.work-back{top:var(--screen-pad-top);position:absolute;left:.5rem;transform:translateY(calc(-100% - .35rem))}.work-kicker{padding-left:.2rem}.work-back{cursor:pointer;background:0 0;border:none;align-items:center;gap:.45rem;padding:0;display:inline-flex}.work-back:before{content:"";border-bottom:1.5px solid;border-left:1.5px solid;width:.42rem;height:.42rem;transform:rotate(45deg)}.work-back:hover,.work-back:focus-visible{opacity:1;color:var(--accent)}.work-back:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.work-detail-title{margin:0}.work-detail-tags{flex-wrap:wrap;gap:.4rem;margin:.9rem 0 0;padding:0;list-style:none;display:flex}.work-detail-tags[hidden]{display:none}.work-detail-tag{letter-spacing:.02em;color:var(--text);background:var(--nav-blob);border-radius:999px;align-items:center;padding:.22rem .72rem;font-size:.78rem;font-weight:400;line-height:1.4;display:inline-flex}.work-detail-desc{color:var(--text);opacity:.85;margin:1.25rem 0 0;font-size:1.05rem;font-weight:300;line-height:1.65}.work-detail-link{color:var(--accent);margin:.85rem 0 0;font-size:1.05rem;font-weight:400;text-decoration:none;transition:opacity .2s,color .2s;display:inline-block}.work-detail-link[hidden]{display:none}.work-detail-link:hover,.work-detail-link:focus-visible{opacity:.8}.work-detail-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.work-detail-frame{--frame-thickness:.42rem;--frame-wave:.16rem;--frame-radius:.5rem;--frame-inset:calc(var(--frame-thickness) + var(--frame-wave));aspect-ratio:3/2;width:100%;margin:2.25rem 0 0;position:relative;overflow:visible}.work-detail-frame-img{z-index:0;top:var(--frame-inset);left:var(--frame-inset);width:calc(100% - 2 * (var(--frame-thickness) + var(--frame-wave)));height:calc(100% - 2 * (var(--frame-thickness) + var(--frame-wave)));object-fit:cover;object-position:center;border-radius:var(--frame-radius);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:none;max-width:none;display:block;position:absolute}.work-detail-live{--preview-scale:.5;z-index:1;top:var(--frame-inset);left:var(--frame-inset);width:calc(100% - 2 * (var(--frame-thickness) + var(--frame-wave)));height:calc(100% - 2 * (var(--frame-thickness) + var(--frame-wave)));overscroll-behavior:none;contain:paint;border-radius:var(--frame-radius);background:var(--bg);position:absolute;overflow:clip}.work-detail-live[hidden],.work-detail-live-arm[hidden]{display:none}.work-detail-live-frame{width:1280px;height:calc(100% / var(--preview-scale));transform:scale(var(--preview-scale));transform-origin:0 0;overscroll-behavior:none;pointer-events:none;border:0;display:block;position:absolute;top:0;left:0}.work-detail-frame.is-armed .work-detail-live-frame{pointer-events:auto}.work-detail-frame.is-armed .work-detail-frame-img{visibility:hidden}.work-detail:has(.work-detail-frame.is-armed){overscroll-behavior:none}.work-detail-live-arm{z-index:2;top:var(--frame-inset);left:var(--frame-inset);width:calc(100% - 2 * (var(--frame-thickness) + var(--frame-wave)));height:calc(100% - 2 * (var(--frame-thickness) + var(--frame-wave)));border-radius:var(--frame-radius);background:color-mix(in srgb, var(--bg) 52%, transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);cursor:pointer;border:0;justify-content:center;align-items:center;margin:0;padding:0;transition:background .25s,-webkit-backdrop-filter .25s,backdrop-filter .25s;display:flex;position:absolute}.work-detail-live-arm-blob{--magnet-x:0px;--magnet-y:0px;transform:translate(var(--magnet-x), var(--magnet-y));display:inline-flex}.work-detail-live-arm-shape{background:var(--nav-blob);opacity:.92;border-radius:58% 42% 50% 46%/44% 52% 42% 58%;justify-content:center;align-items:center;width:5.75rem;height:5.75rem;padding:.55rem;transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s;animation:7s ease-in-out -1.8s infinite blob-morph;display:inline-flex}.work-detail-live-arm-label{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;text-align:center;color:var(--text);opacity:.75;flex-direction:column;align-items:center;gap:.12rem;font-size:.62rem;font-weight:500;line-height:1.15;transition:opacity .3s;display:flex}.work-detail-live-arm:hover,.work-detail-live-arm:focus-visible{background:color-mix(in srgb, var(--bg) 62%, transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.work-detail-live-arm:hover .work-detail-live-arm-shape,.work-detail-live-arm:focus-visible .work-detail-live-arm-shape{opacity:1;transform:scale(1.08)}.work-detail-live-arm:hover .work-detail-live-arm-label,.work-detail-live-arm:focus-visible .work-detail-live-arm-label{opacity:.9}.work-detail-live-arm:focus-visible{outline:none}.work-detail-live-arm:focus-visible .work-detail-live-arm-shape{outline:2px solid var(--accent);outline-offset:3px}.work-detail-frame-border{z-index:3;pointer-events:none;width:100%;height:100%;color:var(--nav-blob);position:absolute;inset:0;overflow:visible}.project-preview-shape{aspect-ratio:1;background:var(--nav-blob);border-radius:58% 42% 50% 46%/44% 52% 42% 58%;width:100%;padding:.42rem;animation:7s ease-in-out infinite blob-morph;display:block;overflow:hidden}.project-preview-img{object-fit:cover;object-position:center;border-radius:inherit;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:none;width:100%;max-width:none;height:100%;display:block}.project-preview{z-index:2;pointer-events:none;opacity:0;visibility:hidden;transform-origin:100% 100%;width:clamp(22rem,36vw,48rem);transition:opacity .35s,visibility .35s,transform .5s cubic-bezier(.22,1,.36,1);position:absolute;bottom:0;right:0;transform:translate(52%,52%)scale(.88)}.project-preview.is-visible{opacity:1;visibility:visible;transform:translate(14%,14%)scale(1)}#app[data-project] .project-preview,#app[data-project] .project-preview.is-visible{opacity:0;visibility:hidden;transform:translate(52%,52%)scale(.88)}@media (hover:none){.project-underline,.project-preview{display:none}}.experience-list{gap:1.75rem;margin:2.5rem 0 0;padding:0;list-style:none;display:grid}.experience-role{font-family:var(--sans);letter-spacing:.02em;color:var(--text);margin:0;font-size:1.15rem;font-weight:500}.experience-meta{letter-spacing:.04em;color:var(--text);opacity:.55;margin:.3rem 0 0;font-size:.88rem;font-weight:300}.experience-desc{color:var(--text);opacity:.75;margin:.35rem 0 0;font-size:.98rem;font-weight:300;line-height:1.5}.about-layout{grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:1fr;align-items:start;gap:1.5rem;height:100%;min-height:0;display:grid}.profile-blob{align-self:stretch;width:100%;height:auto;min-height:0;position:relative;overflow:hidden}.profile-blob-shape{background:var(--nav-blob);will-change:transform, border-radius;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:54% 50% 52% 48%/50% 54% 48% 52%;width:14rem;height:14rem;padding:.42rem;display:block;position:absolute;top:0;left:0;overflow:hidden}.profile-blob-shape:focus{outline:none}.profile-blob-shape:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.profile-blob-shape--small{z-index:1;width:7rem;height:7rem;padding:.28rem}.profile-blob-img{object-fit:cover;object-position:center;border-radius:inherit;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:none;width:100%;max-width:none;height:100%;display:block}.about-bio{max-width:32rem;margin:0;font-size:1.05rem;font-weight:300;line-height:1.65}@media (width>=48rem){.about-layout{grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:minmax(0,1fr) 16.5rem;gap:1.5rem 2.25rem}.about-layout>:not(.profile-blob){grid-column:1}.profile-blob{grid-area:1/2/-1;width:auto}}.contact-list{flex-flow:wrap;gap:.5rem 1.25rem;margin:0;padding:0;list-style:none;display:flex}.contact-list a{color:var(--text);opacity:.9;align-items:center;gap:0;font-size:1.05rem;font-weight:400;text-decoration:none;transition:opacity .2s,color .2s;display:inline-flex}.contact-list__detail{opacity:0;white-space:nowrap;max-width:0;margin:0;transition:max-width .45s cubic-bezier(.22,1,.36,1),opacity .45s cubic-bezier(.22,1,.36,1),margin .45s cubic-bezier(.22,1,.36,1);overflow:hidden}.contact-list .project-desc-arrow-track{flex:none;width:.72rem;min-width:.72rem;margin-left:.35rem;position:relative}.contact-list .project-desc-arrow{opacity:.5;width:.72rem;height:.72rem;transition:transform .45s cubic-bezier(.22,1,.36,1),opacity .2s;position:relative;left:0;transform:translateY(.08em)}.contact-list a:hover,.contact-list a:focus-visible{opacity:1;color:var(--accent)}.contact-list a:hover .contact-list__detail,.contact-list a:focus-visible .contact-list__detail{opacity:1;max-width:16rem;margin-left:.65rem}.contact-list a:hover .project-desc-arrow,.contact-list a:focus-visible .project-desc-arrow{opacity:.9;transform:translateY(.08em)translate(.2rem)}.contact-list a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.screen--contact .contact-layout{box-sizing:border-box;grid-template-rows:auto auto minmax(0,1fr);align-items:stretch;gap:1.25rem;height:100%;min-height:0;padding-bottom:1rem;display:grid}.contact-form-wrap{flex-direction:column;height:100%;min-height:0;padding-bottom:.85rem;display:flex;position:relative}.contact-form{--contact-control-min-block:calc(.9rem + 1.575rem);--contact-message-max-block:calc(3 * var(--contact-control-min-block));overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;flex:auto;gap:.85rem;height:100%;min-height:0;display:flex;overflow-y:auto}.contact-form::-webkit-scrollbar{display:none}.contact-form-chevron{width:.7rem;height:.7rem;color:var(--text);opacity:.45;pointer-events:none;transition:opacity .2s;display:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)rotate(90deg)}.contact-form-wrap.is-scrollable .contact-form-chevron{display:block}.contact-form-wrap.is-scrolled .contact-form-chevron{opacity:0}.contact-form__honeypot{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.contact-form__field{flex-direction:column;flex:none;gap:.4rem;display:flex}.contact-form__field--message{grid-template-rows:auto minmax(var(--contact-control-min-block), var(--contact-message-max-block));flex:none;display:grid}.contact-form__field label{font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--text);font-size:.7rem;font-weight:500}.contact-form__field input,.contact-form__field textarea{border:1px solid color-mix(in srgb, var(--text) 28%, transparent);width:100%;color:var(--text);font-family:var(--sans);resize:vertical;background:0 0;border-radius:.25rem;margin:0;padding:.45rem .65rem;font-size:1.05rem;font-weight:300;line-height:1.5;transition:border-color .2s}.contact-form__field input{min-height:var(--contact-control-min-block)}.contact-form__field--message textarea{min-height:var(--contact-control-min-block);max-height:var(--contact-message-max-block);height:var(--contact-message-max-block);resize:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;overflow-y:auto}.contact-form__field--message textarea::-webkit-scrollbar{display:none}.contact-form__field input:hover,.contact-form__field textarea:hover{border-color:color-mix(in srgb, var(--text) 55%, transparent)}.contact-form__field input:focus,.contact-form__field textarea:focus{border-color:var(--accent);outline:none}.contact-form__submit{background:var(--text);width:100%;color:var(--bg);font-family:var(--sans);letter-spacing:.08em;text-align:left;text-transform:uppercase;cursor:pointer;border:none;border-radius:.25rem;flex:none;margin-top:.15rem;padding:.75rem 1.25rem;font-size:.95rem;font-weight:500;transition:background-color .2s,opacity .2s}.contact-form__submit:hover,.contact-form__submit:focus-visible{background:var(--accent)}.contact-form__submit:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.contact-form__submit:disabled{opacity:.55;cursor:wait}.contact-form__status{flex:none;margin:0;font-size:.95rem;font-weight:300;line-height:1.5}.contact-form__status.is-success{color:var(--accent)}.contact-form__status.is-error{color:var(--text);opacity:.85}@keyframes fade-rise{0%{opacity:0;transform:translateY(1.25rem)}to{opacity:1;transform:translateY(0)}}@keyframes draw-line{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes blob-morph{0%,to{border-radius:58% 42% 50% 46%/44% 52% 42% 58%}33%{border-radius:44% 56% 40% 60%/54% 40% 60% 44%}66%{border-radius:52% 44% 60% 40%/40% 58% 44% 56%}}.cookie-consent{z-index:20;width:100%;max-width:none;padding:.65rem max(1rem, env(safe-area-inset-right)) max(.65rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));box-sizing:border-box;color:var(--text);font-family:var(--sans);background:0 0;border-radius:0;flex-flow:wrap;justify-content:center;align-items:center;gap:.55rem .65rem;display:flex;position:fixed;bottom:0;left:0;right:0;transform:none}#app[data-screen=play] .cookie-consent{opacity:0;visibility:hidden;pointer-events:none}.cookie-consent__copy{letter-spacing:.01em;flex:0 auto;min-width:0;margin:0;font-size:.72rem;font-weight:300;line-height:1.35}.cookie-consent__actions{flex:none;align-items:center;gap:.75rem;display:flex}.cookie-consent__btn{appearance:none;cursor:pointer;letter-spacing:.06em;text-transform:lowercase;color:var(--text);text-underline-offset:.2em;background:0 0;border:none;padding:0;font-family:inherit;font-size:.72rem;font-weight:400;line-height:1.35;text-decoration:underline;transition:opacity .2s}.cookie-consent__btn:hover{opacity:.7}.cookie-consent__btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.cookie-consent__btn--accept{color:var(--accent)}@keyframes nav-blob-morph{0%,to{border-radius:var(--nav-blob-r0)}33%{border-radius:var(--nav-blob-r1)}66%{border-radius:var(--nav-blob-r2)}}@media (prefers-reduced-motion:reduce){.name,.hero-meta,.name:after{animation:none}.hero,.blob,.stage,.work-list,.work-detail{will-change:auto}.stage,.work-list,.work-detail,.project-preview{transition:none}.nav-blob-shape{border-radius:var(--nav-blob-r0);animation:none}.project-preview-shape,.project-preview-img,.blob-cursor-shape{border-radius:52% 44% 56% 48%/46% 54% 42% 56%;animation:none}.nav-blob-shape,.nav-blob-label{transition:none}.profile-blob-shape,.profile-blob-img{border-radius:54% 50% 52% 48%/50% 54% 48% 52%;animation:none}.blob-cursor{display:none}.work-detail-live-arm-shape,.play-start-shape{border-radius:50%;transition:none;animation:none}.profile-blob-shape{will-change:auto}.project-underline{display:none}.project-desc-text{box-shadow:none}@media (hover:hover){.project-link:hover .project-desc-text,.project-link:focus-visible .project-desc-text{box-shadow:0 1px 0 var(--text)}}#app[data-blobs=off] .blob:not(.blob--endcap){opacity:0}}@media (width<=48rem){.profile-blob-shape{width:150px;max-width:150px;height:150px;max-height:150px;padding:.2rem}.profile-blob-shape--moon,.nav-blob{display:none}.swipe-hints{display:block}.swipe-hints__set{--swipe-track:.12em}#app[data-screen=home] .swipe-hints__set--home,#app[data-screen=work]:not([data-project]) .swipe-hints__set--work,#app[data-screen=work][data-project] .swipe-hints__set--work-detail,#app[data-screen=about] .swipe-hints__set--about,#app[data-screen=experience] .swipe-hints__set--experience,#app[data-screen=contact] .swipe-hints__set--contact{display:flex}#app[data-screen=play]:not(:has(.play-root.is-playing)) .swipe-hints__set--play{display:flex}.screen{padding-bottom:5rem}.screen--play{padding-bottom:0}.screen--home{padding-bottom:1.5rem}.hero-cta,.hero-meta-sep{font-size:.72rem}.screen--work{padding-bottom:0}.work-pane{padding-bottom:5rem}.screen-inner{--screen-pad-top:12dvh;padding-bottom:5rem}.screen--experience .screen-inner{padding-bottom:0}.screen--about .about-layout{padding-bottom:1rem}.screen--contact .contact-layout{gap:1rem;padding-bottom:.35rem}.screen--play,.screen--home,.screen--about.is-at-top,.screen--experience.is-at-top,.screen--contact.is-at-top,.screen--contact.is-at-top .contact-form,.screen--contact.is-at-top .contact-form__field--message textarea,.screen--work.is-at-bottom .work-pane{touch-action:none}.work-pane,.screen--about,.screen--experience,.screen--contact,.contact-form,.contact-form__field--message textarea{touch-action:pan-y}.project-preview{width:min(16.5rem,64vw)}}
