@import"https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,200..800;1,6..72,200..800&family=Inter:wght@300;400;500&family=DotGothic16&display=swap";/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial}}}@layer theme{:root,:host{--font-sans:"Inter",sans-serif;--font-serif:"Newsreader",serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-blue-400:oklch(70.7% .165 254.624);--color-gray-300:oklch(87.2% .01 258.338);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--leading-relaxed:1.625;--radius-md:.375rem;--radius-xl:.75rem;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{background-color:var(--color-black);font-family:var(--font-sans);color:var(--color-white)}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif)}}@layer components;@layer utilities{.relative{position:relative}.mt-20{margin-top:calc(var(--spacing)*20)}.\!mb-0{margin-bottom:calc(var(--spacing)*0)!important}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.block{display:block}.flex{display:flex}.inline{display:inline}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.h-full{height:100%}.w-full{width:100%}.max-w-none{max-width:none}.shrink-0{flex-shrink:0}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#131313\]{border-color:#131313}.border-neutral-800{border-color:var(--color-neutral-800)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-4{padding:calc(var(--spacing)*4)}.pt-8{padding-top:calc(var(--spacing)*8)}.font-mono{font-family:var(--font-mono)}.font-serif{font-family:var(--font-serif)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-\[\#1DB954\]{color:#1db954}.text-neutral-300{color:var(--color-neutral-300)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.no-underline{text-decoration-line:none}.opacity-50{opacity:.5}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.group-hover\:text-blue-400:is(:where(.group):hover *){color:var(--color-blue-400)}.hover\:bg-neutral-800:hover{background-color:var(--color-neutral-800)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:items-baseline{align-items:baseline}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:calc(var(--spacing)*4)}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:#000;color:#fff;font-family:Inter,system-ui,sans-serif}.app-shell{position:relative;min-height:100vh;padding:clamp(1rem,3vw,2rem) clamp(1rem,4vw,4rem);display:flex;justify-content:center}.app-shell:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:radial-gradient(1100px 800px at 50% 40%,transparent 55%,rgba(0,0,0,.55) 100%)}.surface{width:min(720px,100%);padding:1.5rem clamp(1rem,2vw,2rem) 2rem;background:transparent}.surface{position:relative;z-index:1}.halo{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.halo-top{background:radial-gradient(circle at 50% 0%,rgba(255,255,255,.13) 0%,transparent 29%),radial-gradient(circle at 50% -20%,rgba(255,255,255,.25) 0%,transparent 36%);mix-blend-mode:screen;filter:blur(40px)}.halo-bottom{background:radial-gradient(1680px 1120px at 50% 100%,rgba(147,51,234,.15),rgba(236,72,153,.15),transparent 60%);mix-blend-mode:screen;filter:blur(80px)}.nav-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.nav-links{display:flex;gap:1.5rem;font-size:.9rem;color:#bbb;font-weight:500}.nav-links a{position:relative;padding-bottom:.25rem;text-decoration:none;color:inherit;transition:color .2s}.nav-links a:hover{color:#fff}.listening{font-size:.7rem;color:#666}.spinner{width:14px;height:14px;border:2px solid #333;border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite;display:inline-block;margin-left:.5rem;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.banner{margin:1rem 0;height:170px;border-radius:12px;overflow:hidden;border:1px solid #111;background:#0a0a0a}.banner-image{width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.6) contrast(1.2);display:block}.location-text{display:flex;justify-content:flex-end;align-items:center;gap:.4rem;font-size:.7rem;color:#555;margin-bottom:2rem}.dot{width:6px;height:6px;border-radius:50%;background:#fff}.dot.green{background:#1db954;box-shadow:0 0 6px #1db954}.profile .eyebrow{font-size:.9rem;color:#ccc;margin-bottom:.5rem;font-weight:400}.profile h1{font-family:Newsreader,serif;font-size:clamp(2.5rem,5vw,3.5rem);font-weight:400;margin:0 0 .5rem;letter-spacing:-.02em;color:#fff}.bio{max-width:60ch;font-size:1rem;line-height:1.6;color:#fff;font-weight:400;margin-top:2rem}.section{margin-top:3rem}.section-heading{font-family:Newsreader,serif;font-size:2rem;color:#fff;margin-bottom:1rem;text-transform:none;letter-spacing:-.01em;font-weight:400}.simple-list{list-style:none;padding:0;margin:0}.simple-list-item+.simple-list-item{margin-top:.4rem}.blog-row,.oss-row{display:flex;align-items:baseline;text-decoration:none;padding:.2rem 0;border:none}.blog-title,.oss-name{color:#5e9eff;font-size:.95rem}.blog-title:hover,.oss-name:hover{text-decoration:underline}.row-spacer{flex-grow:1;border-bottom:1px dashed #333;margin:0 .8rem;position:relative;top:-4px}.blog-date,.oss-star{font-size:.85rem;color:#666;font-family:monospace}.card-row{display:flex;flex-direction:column;gap:1rem}.card{border:1px solid #131313;background:#0d0d0d;border-radius:18px;padding:1.1rem 1.2rem;transition:background .15s ease,border-color .15s ease}.card:hover{background:#111;border-color:#1f1f1f}.project-card,.work-card{display:flex;align-items:center;gap:1rem;text-decoration:none}.project-card h3,.work-card h3{margin:0;font-size:.9rem}.project-card p,.work-card p{margin:.25rem 0 0;font-size:.7rem;color:#999;line-height:1.3}.project-icon,.work-logo{width:40px;height:40px;border:1px solid #222;background:#0a0a0a;border-radius:12px;display:grid;place-items:center;font-size:.95rem}.rail{position:fixed;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:.9rem;color:#555;font-size:.55rem;letter-spacing:.3em;text-transform:uppercase}.rail-left{left:clamp(.4rem,4vw,2.8rem)}.rail-right{right:clamp(.4rem,4vw,2.8rem)}.rail-line{width:1px;height:60px;background:linear-gradient(180deg,transparent,#333,transparent)}.rail ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.rail a{writing-mode:vertical-rl;transform:rotate(180deg);font-size:.6rem;letter-spacing:.15em}.vertical-link{writing-mode:vertical-rl;text-transform:lowercase}.dancer{display:inline-block;margin-left:.5rem;animation:dance 1s infinite;font-style:normal;vertical-align:middle}@keyframes dance{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(-10deg)}75%{transform:translateY(-2px) rotate(10deg)}}@media (max-width: 960px){.rail{display:none}.surface{padding:2rem 1.3rem 3rem}.listening{text-align:left}}@media (max-width: 640px){.banner{height:120px}.banner-image{transform:scale(1.25)}.blog-date,.oss-star{font-size:.8rem;color:#888}}.markdown-content{line-height:1.6;color:#d4d4d4}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{margin-top:2em;margin-bottom:1em;color:#fff}.markdown-content p{margin-bottom:1.5em}.markdown-content a{color:#fff;text-decoration:underline;text-decoration-color:#666;text-underline-offset:2px}.markdown-content a:hover{text-decoration-color:#fff}.markdown-content ul,.markdown-content ol{margin-bottom:1.5em;padding-left:1.5em}.markdown-content li{margin-bottom:.5em}.markdown-content code{background:#222;padding:.2em .4em;border-radius:3px;font-family:monospace;font-size:.9em}.markdown-content pre{background:#111;padding:1em;border-radius:8px;overflow-x:auto;margin-bottom:1.5em;border:1px solid #333}.markdown-content pre code{background:none;padding:0;color:#ccc}.markdown-content blockquote{border-left:3px solid #444;margin:0 0 1.5em;padding-left:1em;color:#888;font-style:italic}.markdown-content img{max-width:100%;border-radius:8px;margin:1.5em 0}.markdown-content hr{border:0;border-top:1px dashed #333;margin:3em 0}.github-graph svg,.github-graph article{width:100%!important;height:auto!important;max-width:100%!important}.react-activity-calendar__tooltip{width:max-content;max-width:calc(100vw - 20px);padding:.2em .5em;border-radius:.25em;background-color:#1a1a1a;color:#f0f0f0;font-size:13px}.react-activity-calendar__tooltip .react-activity-calendar__tooltip-arrow{fill:#1a1a1a}.react-activity-calendar__tooltip[data-color-scheme=dark]{background-color:#f0f0f0;color:#0f0f0f}.react-activity-calendar__tooltip[data-color-scheme=dark] .react-activity-calendar__tooltip-arrow{fill:#f0f0f0}
