@font-face{font-family:SF Pro Display;src:url(/fonts/SF-Pro-Display-Regular.otf) format("opentype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:SF Pro Display;src:url(/fonts/SF-Pro-Display-Medium.otf) format("opentype");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:SF Pro Display;src:url(/fonts/SF-Pro-Display-Semibold-latin.woff2) format("woff2");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:SF Pro Display;src:url(/fonts/SF-Pro-Display-Bold.otf) format("opentype");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:SF Pro Display;src:url(/fonts/SF-Pro-Display-Heavy.otf) format("opentype");font-style:normal;font-weight:800;font-display:swap}@font-face{font-family:SF Pro Display;src:url(/fonts/SF-Pro-Display-Black.otf) format("opentype");font-style:normal;font-weight:900;font-display:swap}@font-face{font-family:SF Pro Text;src:url(/fonts/SF-Pro-Text-Regular-latin.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:SF Pro Text;src:url(/fonts/SF-Pro-Text-Medium.otf) format("opentype");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:SF Pro Text;src:url(/fonts/SF-Pro-Text-Semibold-latin.woff2) format("woff2");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:SF Pro Text;src:url(/fonts/SF-Pro-Text-Bold.otf) format("opentype");font-style:normal;font-weight:700;font-display:swap}:root{color-scheme:light dark;--font-display: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--font-text: "SF Pro Text", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--background: #f7f7f5;--text: #171717;--muted: #666663;--line: #deded9;--focus: #245ca6;--ease-fluid: cubic-bezier(.16, 1, .3, 1);--ease-cinematic: cubic-bezier(.2, .9, .2, 1)}@media(prefers-color-scheme:dark){:root{--background: #090807;--text: #b5b5b5;--muted: #6e6e6e;--line: #1c1a18;--focus: #38bdf8}}*,*:before,*:after{box-sizing:border-box}html{background:var(--background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-synthesis:none;scroll-behavior:auto;overscroll-behavior:none}body{position:relative;display:flex;flex-direction:column;align-items:center;min-width:20rem;min-height:100dvh;margin:0;padding:clamp(3rem,7vh,5.5rem) 1.5rem;padding-top:calc(clamp(3rem,7vh,5.5rem) + env(safe-area-inset-top,0px));padding-bottom:calc(clamp(3rem,7vh,5.5rem) + env(safe-area-inset-bottom,0px));padding-left:calc(1.5rem + env(safe-area-inset-left,0px));padding-right:calc(1.5rem + env(safe-area-inset-right,0px));background:var(--background);color:var(--text);font-family:var(--font-text);font-size:1.05rem;line-height:1.55}::selection{background:color-mix(in srgb,var(--text) 16%,transparent)}a{color:inherit;text-decoration-color:color-mix(in srgb,currentColor 32%,transparent);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color .26s var(--ease-fluid),text-decoration-color .26s var(--ease-fluid)}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--focus);outline-offset:4px}.profile{position:relative;z-index:1;width:min(100%,39rem);margin:0 auto}.education,.summary,.ai-choice,.work h2,.music h2,.footer{animation:enter .48s var(--ease-cinematic) both;will-change:opacity,transform}.education{animation-delay:.11s}.summary{animation-delay:.21s}.ai-choice{animation-delay:.3s}.work h2{animation-delay:.4s}.music h2{animation-delay:.78s}.footer{animation-delay:1.08s}.intro{margin-bottom:2.75rem}h1,h2,p{margin-top:0}.hero-signature-wrap{margin:0 0 .85rem -.35rem;padding:0;display:block;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.hero-signature{display:block;width:100%;max-width:clamp(14.5rem,44vw,19.5rem);height:auto;color:var(--text);overflow:visible;cursor:pointer;-webkit-tap-highlight-color:transparent}.signature-stroke{fill:none;stroke:currentColor;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round}.stroke-1{stroke-dasharray:360;stroke-dashoffset:360;animation:drawStroke1 .34s cubic-bezier(.35,.1,.25,.95) 20ms forwards}.stroke-2{stroke-dasharray:240;stroke-dashoffset:240;animation:drawStroke2 .26s cubic-bezier(.35,.1,.25,.95) .31s forwards}.stroke-3{stroke-dasharray:90;stroke-dashoffset:90;animation:drawStroke3 .12s cubic-bezier(.35,.1,.25,.95) .51s forwards}.stroke-4{stroke-dasharray:450;stroke-dashoffset:450;animation:drawStroke4 .42s cubic-bezier(.35,.1,.25,.95) .57s forwards}.stroke-5{stroke-dasharray:490;stroke-dashoffset:490;animation:drawStroke5 .5s cubic-bezier(.35,.1,.25,.95) .97s forwards}@keyframes drawStroke1{to{stroke-dashoffset:0}}@keyframes drawStroke2{to{stroke-dashoffset:0}}@keyframes drawStroke3{to{stroke-dashoffset:0}}@keyframes drawStroke4{to{stroke-dashoffset:0}}@keyframes drawStroke5{to{stroke-dashoffset:0}}.education,.summary,.contact{color:var(--muted)}.education{margin:0;font-family:var(--font-text);font-size:1.05rem;font-weight:400;letter-spacing:-.008em}.education a,.contact a{color:var(--text);text-decoration-color:color-mix(in srgb,currentColor 32%,transparent);transition:color .24s var(--ease-fluid),text-decoration-color .24s var(--ease-fluid)}.ai-choice a{color:var(--muted);text-decoration-color:color-mix(in srgb,currentColor 32%,transparent);transition:color .24s var(--ease-fluid),text-decoration-color .24s var(--ease-fluid)}.summary{max-width:39rem;margin-bottom:0;font-family:var(--font-text);font-size:1.05rem;font-weight:400;line-height:1.55;letter-spacing:-.011em;text-wrap:pretty}.work{margin-bottom:2.75rem}h2{margin-bottom:.85rem;font-family:var(--font-display);font-size:1rem;font-weight:600;letter-spacing:-.015em}.project-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.25rem}.project-list li{animation:row-enter .45s var(--ease-cinematic) both;will-change:opacity,transform}.project-list li:nth-child(1){animation-delay:.5s}.project-list li:nth-child(2){animation-delay:.59s}.project-list li:nth-child(3){animation-delay:.69s}.project-list a{position:relative;display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:1rem;align-items:baseline;min-height:2.85rem;padding:.55rem 1.4rem .55rem 0;text-decoration:none}.project-list a:after{position:absolute;top:50%;right:0;width:.48rem;height:.48rem;border-top:1px solid currentColor;border-right:1px solid currentColor;color:var(--muted);content:"";opacity:0;transform:translateY(-50%);transition:opacity .28s var(--ease-fluid),color .28s var(--ease-fluid)}.project-name{font-family:var(--font-text);font-size:1.02rem;font-weight:600;color:var(--muted);letter-spacing:-.012em;transition:color .28s var(--ease-fluid)}.project-description{font-family:var(--font-text);font-size:1rem;font-weight:400;color:var(--muted);letter-spacing:-.006em;transition:color .28s var(--ease-fluid)}.music{margin-bottom:2.75rem}.music-list{max-width:34.65rem;margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}.music-list li{display:grid;grid-template-columns:3.35rem minmax(0,1fr) auto;gap:1.05rem;align-items:center;min-height:4.4rem;padding:.5rem 0;animation:row-enter .45s var(--ease-cinematic) both;will-change:opacity,transform}.music-list li:nth-child(1){animation-delay:.88s}.music-list li:nth-child(2){animation-delay:.98s}.music-icon{width:3.25rem;height:3.25rem;background:var(--text);opacity:.88;filter:drop-shadow(0 0 .4px currentColor);transition:opacity .28s var(--ease-fluid),filter .28s var(--ease-fluid);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.music-icon--piano{-webkit-mask-image:url(/images/piano.png);mask-image:url(/images/piano.png)}.music-icon--sax{-webkit-mask-image:url(/images/altosax.png);mask-image:url(/images/altosax.png)}.music-details{display:grid;gap:.02rem;min-width:0}.music-name{font-family:var(--font-text);font-size:1rem;font-weight:600;color:var(--text);letter-spacing:-.012em;transition:color .28s var(--ease-fluid)}.music-gear{font-family:var(--font-text);font-size:.85rem;font-weight:400;line-height:1.35;color:var(--muted);letter-spacing:-.004em;transition:color .28s var(--ease-fluid)}.music-duration{align-self:center;justify-self:end;text-align:right;font-family:var(--font-text);font-size:.9rem;font-weight:400;color:var(--muted);white-space:nowrap;letter-spacing:-.005em;transition:color .28s var(--ease-fluid)}.footer{display:flex;flex-direction:column;gap:.65rem;margin:0}.contact{display:flex;flex-wrap:wrap;gap:.45rem .9rem;align-items:center;margin:0;font-family:var(--font-text);font-size:.95rem;font-weight:400;font-style:normal}.ai-choice{margin-top:0;margin-bottom:2.75rem;font-family:var(--font-text);font-size:.8rem;font-weight:400;font-style:italic;color:var(--muted);letter-spacing:-.004em}.updated-date{margin:0;font-family:var(--font-text);font-size:.8rem;font-weight:400;font-style:italic;color:var(--muted);letter-spacing:-.004em}@media(hover:hover)and (pointer:fine){.education a:hover,.contact a:hover,.ai-choice a:hover{color:var(--text);text-decoration-color:currentColor}.project-list a:hover .project-name{color:var(--text)}.project-list a:hover:after{opacity:1;color:var(--text)}.project-list a:hover .project-description,.music-list li:hover .music-name{color:var(--text)}.music-list li:hover .music-icon{opacity:1;filter:drop-shadow(0 0 .6px currentColor)}.music-list li:hover .music-gear,.music-list li:hover .music-duration{color:var(--text)}}@media(prefers-color-scheme:light){@media(hover:hover)and (pointer:fine){.education a:hover,.contact a:hover,.ai-choice a:hover,.project-list a:hover .project-name,.project-list a:hover:after,.project-list a:hover .project-description,.music-list li:hover .music-name,.music-list li:hover .music-gear,.music-list li:hover .music-duration{color:#000}}}@keyframes enter{0%{opacity:0;transform:translateY(8px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0px)}}@keyframes row-enter{0%{opacity:0;transform:translateY(4px);filter:blur(2px)}to{opacity:1;transform:translateY(0);filter:blur(0px)}}@media(max-width:34rem){body{padding-inline:1.25rem}.hero-signature-wrap{margin:0 0 .75rem -.2rem}.hero-signature{max-width:min(17rem,86vw)}.intro,.ai-choice,.work,.music{margin-bottom:2.35rem}.summary{margin-bottom:0}.ai-choice{margin-top:0}.project-list a{grid-template-columns:1fr;gap:.05rem;padding-block:.72rem}.music-list li{grid-template-columns:2.85rem minmax(0,1fr) auto;gap:.85rem}.music-icon{width:2.85rem;height:2.85rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;filter:none!important}.signature-stroke{stroke-dashoffset:0!important;animation:none!important}}:root{color-scheme:dark;--background: #10171c;--text: #e0e2e2;--muted: #a9afb2;--line: #343b40;--focus: #bbd7ee}body{justify-content:center;align-items:flex-start;padding-inline:max(1.5rem,7.5vw);isolation:isolate}.profile{margin-inline:0;text-shadow:0 1px 12px rgb(4 8 11 / 22%)}.flight-background{position:fixed;z-index:-1;inset:0;overflow:hidden;pointer-events:none;background:#25313b;contain:strict}.flight-sky{position:absolute;inset:-3%;background:url(/images/sky-cloudscape.webp) center / cover no-repeat;filter:brightness(.72) saturate(.7)}.flight-aircraft,.flight-poster,.flight-aircraft canvas,.flight-shade,.flight-grain{position:absolute;inset:0;width:100%;height:100%}.flight-aircraft canvas{display:block;opacity:0}.flight-background[data-ready] canvas{opacity:1}.flight-poster{inset:-1.207% auto auto 76.775%;width:auto;height:100%;aspect-ratio:8 / 5;transform:translate(-50%);background:url(/images/aircraft-poster.webp) center / 100% 100% no-repeat}.flight-background[data-ready] .flight-poster{opacity:0}.flight-shade{background:linear-gradient(90deg,#060a0cf2,#070b0ee0 25%,#090e12ad 38%,#0c121733 52%,#0c121705 68%),linear-gradient(0deg,rgb(6 10 14 / 43%),transparent 32%,transparent 78%,rgb(9 14 18 / 16%))}.flight-grain{background:url(/images/film-grain.png) repeat;background-size:192px 192px;opacity:.105;mix-blend-mode:soft-light}@media(hover:hover)and (pointer:fine){.profile a:hover,.profile a:hover .project-name,.profile a:hover .project-description,.profile .project-list a:hover:after,.profile .music-list li:hover .music-name,.profile .music-list li:hover .music-gear,.profile .music-list li:hover .music-duration{color:var(--text)}}@media(max-width:68rem){body{padding-inline:max(1.5rem,6vw)}.flight-shade{background:linear-gradient(90deg,#060a0ce8,#070b0ed1 38%,#090e123d),linear-gradient(0deg,rgb(6 10 14 / 50%),transparent 70%)}}@media(max-width:44rem){body{padding-inline:1.25rem}.profile{margin-inline:auto}.flight-sky{background-image:url(/images/sky-cloudscape-mobile.webp);background-position:65% center}.flight-aircraft{opacity:.7}.flight-poster{top:-26%;left:78%;background-image:url(/images/aircraft-poster-mobile.webp)}.flight-shade{background:linear-gradient(90deg,#060a0cb8,#080d1152),linear-gradient(0deg,#060a0ed9,#070c10c2 45%,#090e1238)}.flight-grain{opacity:.08}}@media(max-width:44rem),(hover:none)and (pointer:coarse)and (max-width:68rem){html{min-height:100%;background-color:#10171c;background-image:linear-gradient(90deg,#060a0cb8,#080d1152),linear-gradient(0deg,#060a0ed9,#070c10c2 45%,#090e1238),linear-gradient(#00000047,#00000047),url(/images/sky-cloudscape-mobile.webp);background-size:cover;background-position:65% top;background-repeat:no-repeat}body{background:transparent;padding-left:max(1.25rem,env(safe-area-inset-left,0px));padding-right:max(1.25rem,env(safe-area-inset-right,0px))}.flight-background{background:transparent}.flight-sky,.flight-shade,.flight-grain{display:none}.flight-aircraft{-webkit-mask-image:linear-gradient(90deg,#00000047,#000000ad),linear-gradient(0deg,#00000026,#0000003d 45%,#000000c7);mask-image:linear-gradient(90deg,#00000047,#000000ad),linear-gradient(0deg,#00000026,#0000003d 45%,#000000c7);-webkit-mask-composite:source-in;mask-composite:intersect}}@media(prefers-reduced-motion:reduce){.flight-sky{filter:brightness(.72) saturate(.7)!important}}
