.preloader{--bg-color-a: black;--bg-color-b: black;position:fixed;display:flex;width:100vw;height:100vh;z-index:3;align-items:center;justify-content:center;flex-wrap:wrap;background-color:var(--bg-color-a);animation:bg-flash .9s ease-in-out infinite;overflow:hidden}.preloader-symbol{--symbol-color-a: white;--symbol-color-b: white;width:clamp(18px,3vw,28px);height:clamp(18px,3vw,28px);background-color:var(--symbol-color-a);transform:rotate(45deg);animation:symbol-flash .9s ease-in-out infinite}@keyframes bg-flash{0%,to{background-color:var(--bg-color-a)}50%{background-color:var(--bg-color-b)}}@keyframes symbol-flash{0%,to{opacity:.15;transform:rotate(45deg) scale(.7);background-color:var(--symbol-color-a)}50%{opacity:1;transform:rotate(45deg) scale(1);background-color:var(--symbol-color-b)}}html:not(.dark) .preloader{--bg-color-a: rgb(255, 77, 133);--bg-color-b: rgb(75, 75, 75)}html:not(.dark) .preloader-symbol{--symbol-color-a: rgb(75, 75, 75);--symbol-color-b: rgb(255, 77, 133)}.navbar-wrapper{width:100%;margin:0 auto;background-color:var(--color-bg1)}.nav-container{position:absolute;left:0;right:0;margin:2rem auto 0;z-index:1;display:flex;justify-content:space-between;width:var(--content-width);max-width:var(--content-max);padding:24px 0 18px;border-bottom:1px solid var(--color-rule)}.nav-list{display:flex;align-items:center;list-style:none;gap:1.75rem}.nav-link{font-size:13px;font-weight:500;font-family:var(--font-mono);color:var(--color-text);text-decoration:none;text-transform:uppercase;transition:background-color .08s,color .08s}.nav-link:visited{color:var(--color-text)}.nav-link:not(.active):hover{background-color:var(--color-text);color:var(--color-bg1)}.nav-link.active{background-color:var(--color-text);color:var(--color-bg1)}.nav-item:last-child .nav-link{margin-right:0}.dark-toggle{background:none;border:none;cursor:pointer;padding:0;line-height:1}.nav-icon-link{display:flex;align-items:center}.nav-icon-link svg{display:block}@media(max-width:768px){.nav-container{width:var(--content-width-mobile);padding:18px 0}.nav-list{gap:20px}}.now-playing{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--color-rule);border-radius:10px;text-decoration:none;color:inherit;background:#00000008;transition:background .2s ease,border-color .2s ease;width:100%;box-sizing:border-box}.now-playing--active{background:#1db954;border-color:#1db954}.now-playing--active:hover{background:#1aa34a;border-color:#1aa34a;opacity:1}.now-playing--idle{cursor:default}.now-playing--idle:hover{background:#00000008;border-color:var(--color-rule)}.now-playing-spotify-icon{width:20px;height:20px;flex-shrink:0}.now-playing-spotify-icon--active{fill:#fff}.now-playing-spotify-icon--idle{fill:var(--color-text)}.now-playing-art{width:36px;height:36px;border-radius:4px;object-fit:cover;flex-shrink:0}.now-playing-info{display:flex;flex-direction:column;gap:2px;overflow:hidden}.now-playing-title{font-family:var(--font-link);font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.now-playing-artist{font-family:var(--font-link);font-size:12px;font-weight:400;color:#ffffffb3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.now-playing-idle-text{font-family:var(--font-link);font-size:14px;text-transform:capitalize;color:var(--color-text)}.hero-wrapper{position:relative;width:100%;margin:0 auto;overflow-x:hidden;z-index:0;background-color:transparent}.intro-container{width:var(--content-width);max-width:var(--content-max);margin:0 auto;padding:calc(var(--nav-height) + var(--section-gap)) 0 0;display:flex;flex-direction:column;justify-content:flex-start;gap:2.5rem;z-index:1;position:relative}.intro-headline{display:flex;flex-direction:column}.hero-wrapper .sections-wrapper{margin-top:var(--section-gap)}.greeting-header{font-family:var(--font-mono);text-transform:uppercase;font-size:var(--hero-font-size);line-height:1.8;font-weight:400;text-align:left}@media(max-width:768px){.intro-container{width:var(--content-width-mobile);margin:0 auto;gap:2rem}.greeting-header{font-size:var(--hero-font-size-mobile)}}.about-wrapper{position:relative;width:100%;margin:0 auto;overflow-x:hidden;z-index:0;background-color:transparent}.about-container{display:flex;width:100%;margin:7rem 0 0;flex-wrap:wrap;flex-direction:column}.about-logo{display:block;width:35%;margin:2.75rem auto 0}.biography-container{display:flex;flex-direction:row;width:var(--content-width);max-width:var(--content-max);margin:8rem auto 3.5rem;align-items:center;gap:3rem}.portrait{flex:1;filter:grayscale(70%) drop-shadow(5px 5px 10px rgba(0,0,0,.711));width:40%}.biography-text-container{flex:2;display:flex;flex-direction:column;gap:1rem}.biography-text-container p,.biography-text-container span{font-family:var(--font-body);font-size:17px;font-weight:500;line-height:1.3}.biography-header-container{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center}.biography-emoji{font-size:32px;line-height:1;display:inline-block}.biography-title{font-family:var(--font-body);font-size:21px;font-weight:500}.biography-subtitle{font-family:var(--font-body);font-size:17px;font-weight:500}.biography-text a,.biography-subtitle a{text-decoration:underline rgb(216,216,216);font-family:var(--font-body);font-size:17px;font-weight:500}@media(max-width:768px){.about-logo{width:70%}.biography-container{flex-direction:column;width:60%}.portrait{width:80%;margin:0 auto}.biography-text-container p,.biography-text-container span,.biography-text a,.biography-subtitle a{font-size:15px}}.music-wrapper{position:relative;width:100%;margin:0 auto;overflow-x:hidden;z-index:0;background-color:transparent}.music-container{display:flex;width:100%;flex-wrap:wrap;flex-direction:column}.music-logo{display:block;width:50%;max-width:480px;margin:8rem auto 2.75rem}@media(max-width:768px){.music-logo{width:70%;max-width:none;margin:11rem auto}}.music-wrapper .project-row{grid-template-columns:1.75rem 1fr auto}.misc-wrapper{display:flex;justify-content:center;align-items:center;height:100vh;background-color:#f7f7f7;height:300vh}.coming-soon-logo{width:auto;max-width:30%;height:auto;object-fit:contain}.not-found-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;width:100%;min-height:100vh;text-align:center}.not-found-code{font-family:var(--font-header);font-size:6rem;font-weight:500;color:var(--color-text-strong)}.not-found-message{font-family:var(--font-body);font-size:1.15rem;color:var(--color-text)}.not-found-home-link{font-family:var(--font-body);font-size:1.05rem;color:var(--color-text-strong);text-decoration:underline;text-underline-offset:.25rem;transition:opacity .2s ease}.not-found-home-link:hover{opacity:.7}@media(max-width:768px){.not-found-code{font-size:4rem}}.footer-wrapper{width:100%;background-color:transparent}.footer-container{width:var(--content-width);max-width:var(--content-max);margin:0 auto;padding:1.25rem 0;display:grid;grid-template-columns:3fr 1fr;align-items:start;gap:1.25rem 1.5rem;border-top:1px solid var(--color-rule)}.social-container{display:flex;margin:0;min-width:0}.footer-list{display:grid;grid-template-columns:repeat(3,minmax(0,max-content));justify-content:start;list-style:none;margin:0;padding:0;width:100%;gap:1rem 2rem}.footer-links a{font-family:var(--font-mono);text-transform:uppercase;font-size:13px;font-weight:500;line-height:1.5;display:block;transition:background-color .08s,color .08s}.footer-links a:after{content:" ↗";font-size:1.2em;vertical-align:super;line-height:0}.footer-links a:hover{background-color:var(--color-text);color:var(--color-bg1)}.credit-container{display:flex;flex-direction:column;align-items:flex-end;gap:1rem;min-width:0;text-align:right}.copyright{font-family:var(--font-mono);text-transform:uppercase;font-size:13px;font-weight:500;line-height:1.5;color:var(--color-text)}@media(max-width:768px){.footer-container{grid-template-columns:1fr;gap:1.5rem;width:var(--content-width-mobile);align-items:start}.credit-container{align-items:flex-start;text-align:left}.social-container{width:100%;flex-direction:row}.footer-list{grid-template-columns:repeat(2,minmax(0,max-content))}}.like-wrapper{position:fixed;bottom:4rem;right:4rem;display:flex;flex-direction:column;align-items:center;gap:.25rem;z-index:100}.like-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.like-btn:focus-visible{outline:2px solid var(--color-text);outline-offset:3px;border-radius:6px}.heart-icon{width:21px;height:21px;fill:none;stroke:var(--color-text);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:fill .35s ease,stroke .35s ease}.like-btn.liked .heart-icon{fill:#ff6b9d;stroke:#ff6b9d}.like-count{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--color-text);letter-spacing:.04em;opacity:.6}.back-to-top-btn{position:fixed;bottom:4rem;left:4rem;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;z-index:100}.back-to-top-btn:focus-visible{outline:2px solid var(--color-text-strong);outline-offset:4px}.back-to-top-icon{width:22px;height:22px;fill:none;stroke:var(--color-text-strong);stroke-width:2;stroke-linecap:square;stroke-linejoin:miter}@media(max-width:768px){.back-to-top-btn{display:none}}@font-face{font-family:Geist;src:url(/assets/Geist-Light-0dmTLZIz.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/assets/Geist-Regular-B1wb-odA.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/assets/Geist-Medium-fu4ekwtu.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/assets/Geist-SemiBold-BvYtazuD.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/assets/Geist-Bold-D5ckTPaB.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Lora;src:url(/assets/lora-latin-400-normal-DnxXpLNu.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Lora;src:url(/assets/lora-latin-500-normal-Dh16O2IA.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Lora;src:url(/assets/lora-latin-600-normal-B-3RcLOQ.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Lora;src:url(/assets/lora-latin-700-normal-BHK4Pzk4.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Lora;src:url(/assets/lora-latin-400-italic-DYjZp4sZ.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Light-CaMH-tsk.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Regular-BxSzyECb.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Medium-BdW0Mzrp.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-SemiBold-C_rrDxVZ.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}:root{--font-serif: "Lora", Georgia, "Times New Roman", Times, serif;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "Geist Mono", "Courier New", Courier, monospace;--font-header: var(--font-serif);--font-body: var(--font-serif);--font-link: var(--font-sans);--color-bg1: rgb(255, 140, 175);--color-bg2: rgb(238, 238, 238);--color-text: rgb(58, 24, 40);--color-text-strong: rgb(40, 16, 28);--color-text-muted: rgb(88, 34, 58);--color-rule: rgba(58, 24, 40, .16);--color-rule: color-mix(in srgb, var(--color-text) 16%, transparent);--content-width: 46%;--content-max: 660px;--content-width-mobile: 90%;--nav-height: 5.85rem;--section-gap: 4.25rem;--hero-font-size: clamp(1.375rem, 1.9vw + .95vh, 2.25rem);--hero-font-size-mobile: clamp(1.25rem, 4vw + .8vh, 1.875rem);--color1: 255, 77, 133;--color2: 163, 56, 131;--color3: 76, 117, 213;--color4: 255, 216, 86;--color-interactive: 197, 139, 214;--circle-size: 70%;--blob-alpha: .55;--blending: screen}html.dark{--blob-alpha: .42}html.intense{--color-bg1: rgb(202, 74, 130);--color-bg2: rgb(184, 66, 118);--color-text: rgb(248, 236, 222);--color-text-strong: rgb(250, 241, 229);--color-text-muted: rgba(248, 236, 222, .6);--blob-alpha: .45}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;min-height:100%}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg1);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;overflow-x:hidden}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-family:var(--font-header)}p{font-family:var(--font-body);font-weight:400;font-size:19px}a{font-family:var(--font-link);text-decoration:none;color:inherit;cursor:pointer}ul,ol{list-style:none}html.dark{--color-bg1: rgb(18, 18, 18);--color-bg2: rgb(18, 18, 18);--color-text: rgb(245, 245, 245);--color-text-strong: rgb(255, 255, 255);--color-text-muted: rgba(255, 255, 255, .62)}html.light{--color-bg1: rgb(255, 255, 255);--color-bg2: rgb(246, 246, 246);--color-text: rgb(18, 18, 18);--color-text-strong: rgb(0, 0, 0);--color-text-muted: rgb(100, 100, 100);--blob-alpha: .42;--blending: multiply}html.dark .typewriter-container,html.intense .typewriter-container{color:var(--color-text)}html.dark .typewriter-text,html.intense .typewriter-text{border-right:2px solid var(--color-text)}html.dark .project,html.intense .project{border-top:1px solid rgba(232,232,232,.12)}html.dark .project:hover,html.intense .project:hover{background-color:var(--color-text);color:var(--color-bg1);border-top:2px solid var(--color-bg1)}html.dark .footer-container,html.intense .footer-container{border-top:1px solid var(--color-rule)}html.dark .now-playing,html.intense .now-playing{border:1px solid var(--color-rule);background:#e8e8e80a}html.dark .now-playing--idle:hover,html.intense .now-playing--idle:hover{background:#e8e8e80f;border-color:#e8e8e833}html.dark .heart-icon,html.intense .heart-icon{stroke:var(--color-text)}html.dark .like-btn:focus-visible,html.intense .like-btn:focus-visible{outline:2px solid var(--color-text)}html.dark .like-count,html.intense .like-count{color:var(--color-text)}@keyframes moveInCircle{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}@keyframes moveVertical{0%{transform:translateY(-50%)}50%{transform:translateY(50%)}to{transform:translateY(-50%)}}@keyframes moveHorizontal{0%{transform:translate(-50%) translateY(-10%)}50%{transform:translate(50%) translateY(10%)}to{transform:translate(-50%) translateY(-10%)}}.gradient-bg{width:100%;height:100%;position:fixed;top:0;left:0;overflow:hidden;pointer-events:none;z-index:-1}.gradient-bg svg{position:fixed;top:0;left:0;width:0;height:0}.gradient-bg .gradient-container{filter:url(#goo) blur(40px);position:relative;width:100%;height:65%}.gradient-bg .g1{position:absolute;background:radial-gradient(circle at center,rgba(var(--color1),var(--blob-alpha)) 0,rgba(var(--color1),0) 60%) no-repeat;mix-blend-mode:var(--blending);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2);left:calc(50% - var(--circle-size) / 2);transform-origin:center center;animation:moveVertical 30s ease infinite;will-change:transform}.gradient-bg .g2{position:absolute;background:radial-gradient(circle at center,rgba(var(--color3),var(--blob-alpha)) 0,rgba(var(--color3),0) 60%) no-repeat;mix-blend-mode:var(--blending);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2);left:calc(50% - var(--circle-size) / 2);transform-origin:calc(50% - 400px);animation:moveInCircle 20s reverse infinite;will-change:transform}.gradient-bg .g3{position:absolute;background:radial-gradient(circle at center,rgba(var(--color2),var(--blob-alpha)) 0,rgba(var(--color2),0) 60%) no-repeat;mix-blend-mode:var(--blending);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2 + 200px);left:calc(50% - var(--circle-size) / 2 - 500px);transform-origin:calc(50% + 400px);animation:moveInCircle 40s linear infinite;will-change:transform}.gradient-bg .g4{position:absolute;background:radial-gradient(circle at center,rgba(var(--color3),var(--blob-alpha)) 0,rgba(var(--color3),0) 60%) no-repeat;mix-blend-mode:var(--blending);width:var(--circle-size);height:var(--circle-size);top:calc(50% - var(--circle-size) / 2);left:calc(50% - var(--circle-size) / 2);transform-origin:calc(50% - 200px);animation:moveHorizontal 40s ease infinite;will-change:transform}.gradient-bg .g5{position:absolute;background:radial-gradient(circle at center,rgba(var(--color2),var(--blob-alpha)) 0,rgba(var(--color2),0) 60%) no-repeat;mix-blend-mode:var(--blending);width:calc(var(--circle-size) * 2);height:calc(var(--circle-size) * 2);top:calc(50% - var(--circle-size));left:calc(50% - var(--circle-size));transform-origin:calc(50% - 800px) calc(50% + 200px);animation:moveInCircle 20s ease infinite;will-change:transform}.gradient-bg .interactive{position:absolute;background:radial-gradient(circle at center,rgba(var(--color-interactive),var(--blob-alpha)) 0,rgba(var(--color-interactive),0) 60%) no-repeat;mix-blend-mode:var(--blending);width:100%;height:100%;top:-50%;left:-50%;will-change:transform}html.grad-vivid{--color1: 255, 77, 133;--color2: 163, 56, 131;--color3: 76, 117, 213;--color4: 255, 216, 86;--color-interactive: 197, 139, 214}html.grad-green{--color1: 77, 214, 138;--color2: 42, 138, 116;--color3: 186, 216, 82;--color4: 120, 232, 198;--color-interactive: 143, 219, 170}html.grad-fall{--color1: 255, 133, 58;--color2: 172, 64, 47;--color3: 234, 184, 76;--color4: 214, 92, 60;--color-interactive: 238, 168, 110}html.grad-neutral{--color1: 232, 210, 220;--color2: 208, 197, 219;--color3: 196, 209, 231;--color4: 227, 218, 201;--color-interactive: 215, 205, 223}html.light.grad-neutral{--color1: 176, 162, 172;--color2: 158, 152, 176;--color3: 150, 164, 186;--color4: 178, 170, 156;--color-interactive: 166, 158, 178}html.dark.grad-neutral{--color1: 130, 95, 115;--color2: 100, 75, 105;--color3: 75, 90, 120;--color4: 150, 135, 90;--color-interactive: 110, 100, 125}html.no-gradient .gradient-bg{display:none}.sections-wrapper{width:var(--content-width);max-width:var(--content-max);margin:3.5rem auto var(--section-gap) auto;display:flex;flex-direction:column;gap:var(--section-gap)}.section-block{display:flex;flex-direction:column}.section-title{font-family:var(--font-serif);font-size:17px;font-weight:600;text-transform:capitalize;letter-spacing:.02em;color:var(--color-text);padding:0 0 10px}.about-bio{display:flex;flex-direction:column;gap:1rem}.about-bio p{font-family:var(--font-serif);font-size:16px;font-weight:600;line-height:1.65;color:var(--color-text)}.about-bio a{font-family:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:background-color .08s,color .08s}.about-bio a:hover{background-color:var(--color-text);color:var(--color-bg1)}.work-entry{display:grid;grid-template-columns:4.25rem 1fr auto;gap:0 1.25rem;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--color-rule);text-transform:capitalize}.work-year{font-family:var(--font-sans);font-size:12px;font-weight:500;color:var(--color-text);letter-spacing:.02em;font-variant-numeric:tabular-nums}.work-role{font-family:var(--font-sans);font-size:15px;font-weight:600;letter-spacing:-.005em}.work-company{font-family:var(--font-sans);font-size:15px;font-weight:400;color:var(--color-text);justify-self:end}a.work-company{color:var(--color-text);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:background-color .08s,color .08s}a.work-company:hover{background-color:var(--color-text);color:var(--color-bg1)}.project-row{display:grid;grid-template-columns:1.75rem 1fr 5.5rem;gap:0 1.25rem;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--color-rule);text-transform:capitalize;transition:opacity .15s ease}.section-list:hover .project-row:not(:hover){opacity:.45}.project-row-index{font-family:var(--font-sans);font-size:12px;font-weight:500;color:var(--color-text);letter-spacing:.02em;font-variant-numeric:tabular-nums}.project-row-name{font-family:var(--font-sans);font-size:15px;font-weight:600;letter-spacing:-.005em;text-decoration:none}.project-row:hover .project-row-name{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}a.project-row-name{cursor:pointer}.project-row-cat{font-family:var(--font-sans);font-size:13px;font-weight:400;color:var(--color-text)}.project-row-date{font-family:var(--font-sans);font-size:12px;font-weight:500;color:var(--color-text);letter-spacing:.02em;font-variant-numeric:tabular-nums;justify-self:end}@media(max-width:768px){:root{--nav-height: 5.45rem;--section-gap: 3rem}.sections-wrapper{width:var(--content-width-mobile)}.about-bio p{font-size:16px}.work-entry{grid-template-columns:2.5rem 1fr;row-gap:2px}.work-company{grid-column:2;justify-self:start}.hero-wrapper .project-row{grid-template-columns:1.5rem 1fr auto}}
