:root,[data-theme=light]{--bg:#fffff4;--text:#322f2f;--accent:#ee8533;--blob:#f0ece2;--nav-blob:#e4ddd0;--blobs-opacity:.5;--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:#1a1715;--nav-blob:#2a2522;--blobs-opacity:.55}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;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;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{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;padding:1.5rem;position:relative;overflow:hidden}.screen--home{grid-area:1/1;justify-content:center;align-items:center;display:flex}.screen--work{overscroll-behavior:contain;grid-area:1/2;overflow-y:auto}.screen--about{overscroll-behavior:contain;grid-area:2/1;overflow-y:auto}.screen--experience{overscroll-behavior:contain;grid-area:2/2;overflow-y:auto}.screen-inner{max-width:40rem;margin:0 auto;padding:5.5rem .5rem 4rem}.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;border-radius:50%}.theme-toggle{z-index:10;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;position:fixed;top:1.25rem;left:1.25rem}.theme-toggle:hover{opacity:.7}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.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:wrap;justify-content:center;align-items:center;gap:.85rem 1.5rem;margin:0;font-size:.72rem;font-weight:300;display:none}.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-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);opacity:.75;margin:.35rem 0 0;font-size:.98rem;font-weight:300;line-height:1.5}.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-bio{max-width:32rem;margin:1.75rem 0 0;font-size:1.05rem;font-weight:300;line-height:1.65}.contact-heading{font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--text);margin:2.5rem 0 0;font-size:.85rem;font-weight:500}.contact-list{flex-direction:column;gap:.45rem;margin:.85rem 0 0;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{will-change:auto}.stage{transition:none}.nav-blob-shape{border-radius:52% 44% 56% 48%/46% 54% 42% 56%;animation:none}}@media (width<=48rem){.nav-blob{display:none}.swipe-hints{display:block}#app[data-screen=home] .swipe-hints__set--home,#app[data-screen=work] .swipe-hints__set--work,#app[data-screen=about] .swipe-hints__set--about,#app[data-screen=experience] .swipe-hints__set--experience{display:flex}.screen{padding-bottom:4.25rem}.screen-inner{padding-bottom:5rem}.screen--home,.screen--about.is-at-top,.screen--experience.is-at-top,.screen--work.is-at-bottom{touch-action:none}.screen--work,.screen--about,.screen--experience{touch-action:pan-y}}
