: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:"Rammetto One", "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;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;grid-template-columns:100vw 100vw;width:200vw;height:200dvh;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=home] .stage{transform:translate(var(--swipe-x), var(--swipe-y))}#app[data-screen=work] .stage{transform:translate(calc(-100vw + var(--swipe-x)), var(--swipe-y))}#app[data-screen=about] .stage{transform:translate(var(--swipe-x), calc(-100dvh + var(--swipe-y)))}#app[data-screen=experience] .stage{transform:translate(calc(-100vw + var(--swipe-x)), calc(-100dvh + var(--swipe-y)))}.screen{z-index:1;width:100vw;height:100dvh;max-height:100dvh;padding:1.5rem;position:relative;overflow:hidden}.screen--home{grid-area:1/1;justify-content:center;align-items:center;display:flex}.screen--work{grid-area:1/2;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/1;overflow:hidden}.screen--experience{overscroll-behavior:contain;grid-area:2/2;overflow-y:auto}.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}.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;position:fixed;top:0;left:0}.blob-cursor.is-on{opacity:1}.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)}@media (hover:hover) and (pointer:fine){html.has-blob-cursor,html.has-blob-cursor *{cursor:none!important}}.corner-cluster{z-index:10;align-items:center;display:flex;position:fixed;top:1.25rem;left:1.25rem}.corner-cluster--right{left:auto;right:1.25rem}.home-toggle{z-index:10;position:fixed;top:1.25rem;left:1.25rem}.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{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.5rem,7vw,4.75rem);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:2.5rem;height:2px;margin:.45rem auto 0;animation:.9s ease-out .45s both draw-line;display:block}.title{font-family:var(--sans);letter-spacing:.28em;text-transform:lowercase;color:var(--text);margin:.45rem 0 0;font-size:clamp(.95rem,2.2vw,1.15rem);font-weight:300;animation:1.1s ease-out .15s both fade-rise}.nav-blob{z-index:10;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{background:var(--nav-blob);width:100%;height:100%;color:var(--accent);opacity:.92;border-radius:58% 42% 50% 46%/44% 52% 42% 58%;justify-content:center;align-items:center;transition:transform .3s cubic-bezier(.22,1,.36,1);animation:7s ease-in-out infinite blob-morph;display:flex}.nav-blob-arrow{opacity:.75;width:1.05rem;height:1.05rem;display:block}.nav-blob--right{transform:translateY(-50%) translate(var(--magnet-x), var(--magnet-y));top:50%;right:.85rem}.nav-blob--right .nav-blob-arrow{transform:none}.nav-blob--bottom{transform:translateX(-50%) translate(var(--magnet-x), var(--magnet-y));bottom:.85rem;left:50%}.nav-blob--bottom .nav-blob-shape{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{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{animation-delay:-1.4s}.nav-blob--top .nav-blob-arrow{transform:rotate(-90deg)}#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=experience] .nav-blob--left,#app[data-screen=experience] .nav-blob--top{opacity:1;visibility:visible;pointer-events:auto}.nav-blob:hover .nav-blob-shape,.nav-blob:focus-visible .nav-blob-shape{opacity:1;transform:scale(1.08)}.nav-blob:focus-visible{outline:none}.nav-blob:focus-visible .nav-blob-shape{outline:2px solid var(--accent);outline-offset:3px}.swipe-hints{z-index:10;left:1.25rem;right:1.25rem;bottom:max(1rem, env(safe-area-inset-bottom));pointer-events:none;display:none;position:fixed}.swipe-hints__set{font-family:var(--sans);letter-spacing:.16em;text-transform:lowercase;color:var(--text);opacity:.5;text-align:center;flex-wrap:nowrap;justify-content:center;align-items:center;gap:.85rem 1.5rem;margin:0;font-size:.72rem;font-weight:300;display:none}.swipe-hints__set span{white-space:nowrap}.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:2.5rem;height:2px;margin:.45rem 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-detail .screen-inner{position:relative}.work-back{top:var(--screen-pad-top);font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--text);opacity:.55;cursor:pointer;background:0 0;border:none;align-items:center;gap:.45rem;margin:0;padding:0;font-size:.85rem;font-weight:500;display:inline-flex;position:absolute;left:.5rem;transform:translateY(calc(-100% - .85rem))}.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);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)));border-radius:var(--frame-radius);position:absolute;overflow:hidden}.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;pointer-events:none;border:0;display:block}.work-detail-frame.is-armed .work-detail-live-frame{pointer-events:auto}.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;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 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;border-radius:58% 42% 50% 46%/44% 52% 42% 58%;width:14rem;height:14rem;padding:.42rem;display:block;position:absolute;top:0;left:0;overflow:hidden}.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;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 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-heading{font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--text);margin:1rem 0 0;font-size:.85rem;font-weight:500}.contact-list{flex-direction:column;gap:.45rem;margin-top:-.65rem;padding:0;list-style:none;display:flex}.contact-list a{color:var(--text);opacity:.8;font-size:1.05rem;font-weight:300;text-decoration:none;transition:opacity .2s,color .2s}.contact-list a:hover,.contact-list a:focus-visible{opacity:1;color:var(--accent)}.contact-list a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@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%}}@media (prefers-reduced-motion:reduce){.name,.title,.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,.profile-blob-shape,.profile-blob-img,.project-preview-shape,.project-preview-img,.blob-cursor-shape{border-radius:52% 44% 56% 48%/46% 54% 42% 56%;animation:none}.blob-cursor{display:none}.work-detail-live-arm-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--small{width:9rem;height:9rem}.nav-blob{display:none}.swipe-hints{display:block}.swipe-hints__set{letter-spacing:.12em;gap:.85rem 1rem}#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{display:flex}.screen{padding-bottom:4.25rem}.screen--home{padding-bottom:1.5rem}.screen--work{padding-bottom:0}.work-pane{padding-bottom:4.25rem}.screen-inner{--screen-pad-top:12dvh;padding-bottom:5rem}.screen--experience .screen-inner{padding-bottom:0}.screen--about .about-layout{padding-bottom:1rem}.screen--home,.screen--about.is-at-top,.screen--experience.is-at-top,.screen--work.is-at-bottom .work-pane{touch-action:none}.work-pane,.screen--about,.screen--experience{touch-action:pan-y}.project-preview{width:min(16.5rem,64vw)}}
