code,pre{font-family:var(--font-mono)}:root{--background:#131313;--foreground:#fafafa;--card:#171717;--card-foreground:#fafafa;--muted:#262626;--muted-foreground:#a3a3a3;--border:#ffffff1a;--border-strong:#ffffff29;--primary:#e5e5e5;--primary-foreground:#171717;--link:#60a5fa;--ring:#ffffff24;--radius:0.625rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-sm:0.375rem;--shadow-sm:0 1px 2px 0 #0000004d;--shadow:0 4px 12px -2px #00000073;--shadow-lg:0 12px 32px -8px #0000008c;--font-sans:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;color-scheme:dark}[data-theme=light]{--background:#fff;--foreground:#0a0a0a;--card:#fff;--card-foreground:#0a0a0a;--muted:#f5f5f5;--muted-foreground:#737373;--border:#e5e5e5;--border-strong:#d4d4d4;--primary:#171717;--primary-foreground:#fafafa;--link:#2563eb;--ring:#0000001a;--shadow-sm:0 1px 2px 0 #0000000d;--shadow:0 4px 12px -2px #00000014;--shadow-lg:0 12px 32px -8px #0000001f;color-scheme:light}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#131313;background-color:var(--background);color:#fafafa;color:var(--foreground);font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-family:var(--font-sans);font-size:1rem;line-height:1.5;transition:background-color .2s ease,color .2s ease}blockquote,body,figure,h1,h2,h3,h4,p,ul{margin:0}ul{list-style:none;padding:0}a{color:inherit;text-decoration:none}img,svg{display:block;max-width:100%}button{background:none;border:none;color:inherit;cursor:pointer;font:inherit;padding:0}:focus-visible{border-radius:.375rem;border-radius:var(--radius-sm);outline:2px solid #fafafa;outline:2px solid var(--foreground);outline-offset:2px}::selection{background:#e5e5e5;background:var(--primary);color:#171717;color:var(--primary-foreground)}.page{min-height:100vh;min-height:100dvh;overflow-x:hidden;position:relative}.sf-skyline{line-height:0;overflow:hidden;pointer-events:none;z-index:0}.sf-skyline img{display:block;filter:invert(1) opacity(.16);margin-top:26vh;object-fit:cover;object-position:bottom;width:100%}[data-theme=light] .sf-skyline img{filter:opacity(.14)}.page-backdrop{height:100vh;inset:auto 0 0 0;mask-image:linear-gradient(0deg,#000 45%,#0000);-webkit-mask-image:linear-gradient(0deg,#000 45%,#0000);position:fixed}.page-backdrop img{height:100%;object-position:bottom center}.container{margin:0 auto;max-width:42rem;padding:3rem 1.5rem 9rem;position:relative;z-index:1}@media (min-width:640px){.container{padding-top:6rem}}.sections{gap:3.5rem}.section,.sections{display:flex;flex-direction:column}.section{gap:1rem;scroll-margin-top:2rem}.section--roomy{gap:1.5rem}.section-title{font-size:1.25rem;font-weight:700;letter-spacing:-.01em}.fade{filter:blur(6px);opacity:0;transform:translateY(6px);transition:opacity .4s ease,filter .4s ease,transform .4s ease;transition-delay:0s;transition-delay:var(--fade-delay,0s)}.fade.is-visible{filter:blur(0);opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.fade{filter:none;opacity:1;transform:none;transition:none}}.hero{margin-bottom:3.5rem;scroll-margin-top:2rem}.hero-inner{display:flex;flex-direction:column;gap:1.5rem;justify-content:space-between}@media (min-width:768px){.hero-inner{align-items:flex-start;flex-direction:row;gap:2rem}}.hero-text{display:flex;flex-direction:column;gap:.5rem;order:2}.hero-avatar-wrap{flex:none;order:1}@media (min-width:768px){.hero-text{order:1}.hero-avatar-wrap{order:2}}.hero-title{font-size:1.875rem;font-weight:600;letter-spacing:-.045em;line-height:1.1}@media (min-width:640px){.hero-title{font-size:2.25rem}}@media (min-width:1024px){.hero-title{font-size:3rem}}.hero-wave{animation:wave 4s ease-in-out 1s infinite;display:inline-block;transform-origin:70% 70%}@keyframes wave{0%,50%,to{transform:rotate(0deg)}21%,35%,7%{transform:rotate(14deg)}14%,28%{transform:rotate(-8deg)}}.hero-tagline{color:#a3a3a3;color:var(--muted-foreground);font-size:1rem;max-width:37.5rem}@media (min-width:768px){.hero-tagline{font-size:1.125rem}}.hero-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.75rem}.hero-avatar-frame{border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:9999px;box-shadow:0 12px 32px -8px #0000008c,0 0 0 4px #262626;box-shadow:var(--shadow-lg),0 0 0 4px var(--muted);height:6rem;overflow:hidden;width:6rem}@media (min-width:768px){.hero-avatar-frame{height:8rem;width:8rem}}.hero-avatar{height:100%;object-fit:cover;transform:scale(1.3);transform-origin:center;width:100%}.btn{align-items:center;border-radius:.5rem;border-radius:var(--radius-md);display:inline-flex;font-size:.875rem;font-weight:500;gap:.5rem;height:2.25rem;justify-content:center;padding:0 1rem;transition:background-color .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease;white-space:nowrap}.btn svg{flex:none;height:1rem;width:1rem}.btn--primary{background:#e5e5e5;background:var(--primary);border-radius:9999px;box-shadow:0 1px 2px 0 #0000004d;box-shadow:var(--shadow-sm);color:#171717;color:var(--primary-foreground)}.btn--primary:hover{background:color-mix(in srgb,#e5e5e5 88%,#131313);background:color-mix(in srgb,var(--primary) 88%,var(--background))}.btn--outline{background:#131313;background:var(--background);border:1px solid #ffffff1a;border:1px solid var(--border);box-shadow:0 0 0 2px color-mix(in srgb,#ffffff1a 20%,#0000);box-shadow:0 0 0 2px color-mix(in srgb,var(--border) 20%,#0000);color:#fafafa;color:var(--foreground)}.btn--outline:hover{background:#262626;background:var(--muted)}.btn--icon{border-radius:9999px;padding:0;width:2.25rem}.prose{text-wrap:pretty;color:#a3a3a3;color:var(--muted-foreground);font-size:1rem;line-height:1.625}.link,.prose a{color:#fafafa;color:var(--foreground);text-decoration:underline;-webkit-text-decoration-color:#ffffff29;text-decoration-color:#ffffff29;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:3px;transition:color .15s ease,-webkit-text-decoration-color .15s ease;transition:text-decoration-color .15s ease,color .15s ease;transition:text-decoration-color .15s ease,color .15s ease,-webkit-text-decoration-color .15s ease}.link:hover,.prose a:hover{-webkit-text-decoration-color:currentColor;text-decoration-color:initial}.link--accent{color:#60a5fa;color:var(--link);-webkit-text-decoration-color:color-mix(in srgb,#60a5fa 45%,#0000);text-decoration-color:color-mix(in srgb,#60a5fa 45%,#0000);-webkit-text-decoration-color:color-mix(in srgb,var(--link) 45%,#0000);text-decoration-color:color-mix(in srgb,var(--link) 45%,#0000)}.rows{grid-gap:1.5rem;display:grid;gap:1.5rem}.row{align-items:flex-start;display:flex;gap:.75rem;text-align:left;width:100%}.row-logo{background:#171717;background:var(--card);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:9999px;box-shadow:0 1px 2px 0 #0000004d,0 0 0 2px #ffffff1a;box-shadow:var(--shadow-sm),0 0 0 2px var(--border);color:#fafafa;color:var(--foreground);display:grid;flex:none;font-size:.75rem;font-weight:600;height:2rem;letter-spacing:-.02em;object-fit:contain;overflow:hidden;padding:.25rem;place-items:center;width:2rem}.row-logo svg{height:1rem;width:1rem}.row-logo-img{border-radius:9999px;height:100%;object-fit:contain;width:100%}@media (min-width:768px){.row-logo{font-size:.875rem;height:2.5rem;width:2.5rem}.row-logo svg{height:1.125rem;width:1.125rem}}.row-body{flex:1 1;min-width:0}.row-body,.row-head{display:flex;flex-direction:column;gap:.125rem}@media (min-width:640px){.row-head{align-items:center;flex-direction:row;justify-content:space-between}}.row-name{align-items:center;display:flex;font-weight:600;gap:.5rem;line-height:1.1}.row-subtitle{font-size:.875rem}.row-meta,.row-subtitle{color:#a3a3a3;color:var(--muted-foreground)}.row-meta{font-feature-settings:"tnum";align-items:center;display:flex;flex:none;font-size:.75rem;font-variant-numeric:tabular-nums;gap:.375rem}.row-meta .dash{font-size:.6875rem}.row-detail{color:#a3a3a3;color:var(--muted-foreground);font-size:.8125rem;margin-left:2.75rem}@media (min-width:768px){.row-detail{font-size:.875rem;margin-left:3.25rem}}.bullets{grid-gap:.25rem;display:grid;gap:.25rem;list-style:disc;padding-left:1rem}.row-details{width:100%}.row-details>summary{cursor:pointer;list-style:none}.row-details>summary::-webkit-details-marker{display:none}.chevron{stroke-width:2;color:#a3a3a3;color:var(--muted-foreground);flex:none;height:.875rem;opacity:.5;transition:transform .2s ease,opacity .2s ease;width:.875rem}.row-details>summary:hover .chevron{opacity:1}.row-details[open] .chevron{transform:rotate(180deg)}.roles{grid-gap:1rem;display:grid;gap:1rem;margin-top:.5rem}.role-head{display:flex;flex-direction:column;gap:.125rem;margin-bottom:.25rem}@media (min-width:640px){.role-head{align-items:center;flex-direction:row;justify-content:space-between}}.role-title{color:#fafafa;color:var(--foreground);font-weight:500}.row-link{justify-content:space-between;min-height:3rem;padding:.5rem 0}.row-link,.row-link-main{align-items:center;display:flex;gap:.75rem}.row-link-main{flex:1 1;min-width:0}.arrow-out{color:#a3a3a3;color:var(--muted-foreground);flex:none;height:.875rem;opacity:0;transform:translateX(-.5rem);transition:opacity .2s ease,transform .2s ease;width:.875rem}.row-link:focus-visible .arrow-out,.row-link:hover .arrow-out{opacity:1;transform:none}.pill-grid{display:flex;flex-wrap:wrap;gap:.5rem}.pill{align-items:center;background:#131313;background:var(--background);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:.75rem;border-radius:var(--radius-lg);box-shadow:0 0 0 2px color-mix(in srgb,#ffffff1a 20%,#0000);box-shadow:0 0 0 2px color-mix(in srgb,var(--border) 20%,#0000);color:#fafafa;color:var(--foreground);display:inline-flex;font-size:.875rem;font-weight:500;gap:.5rem;height:2rem;padding:0 1rem;width:-webkit-fit-content;width:fit-content}.pill svg{flex:none;height:1rem;width:1rem}.tag{align-items:center;border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:.375rem;border-radius:var(--radius-sm);color:#fafafa;color:var(--foreground);display:inline-flex;font-size:.6875rem;font-weight:500;height:1.5rem;padding:0 .5rem;width:-webkit-fit-content;width:fit-content}.tag-grid{display:flex;flex-wrap:wrap;gap:.25rem}.chip{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:color-mix(in srgb,#131313 90%,#0000);background:color-mix(in srgb,var(--background) 90%,#0000);border:1px solid #ffffff29;border:1px solid var(--border-strong);border-radius:.5rem;border-radius:var(--radius-md);color:#fafafa;color:var(--foreground);display:inline-flex;font-size:.6875rem;font-weight:500;gap:.375rem;height:1.75rem;padding:0 .625rem;transition:background-color .15s ease}.chip:hover{background:#262626;background:var(--muted)}.chip--read{background:#fafafa;background:var(--foreground);border-color:#fafafa;border-color:var(--foreground);font-weight:600}.chip--read,.chip--read svg,.chip--read:hover{color:#131313;color:var(--background)}.chip--read:hover{background:color-mix(in srgb,#fafafa 85%,#0000);background:color-mix(in srgb,var(--foreground) 85%,#0000)}.chip svg{flex:none;height:.75rem;width:.75rem}.chip--lg{font-size:.75rem;height:2rem;padding:0 .75rem}.feature-head{flex-direction:column;gap:1rem}.feature-head,.rule{align-items:center;display:flex}.rule{width:100%}.rule:after,.rule:before{content:"";flex:1 1;height:1px}.rule:before{background:linear-gradient(90deg,#0000 5%,#ffffff29 95%,#0000);background:linear-gradient(to right,#0000 5%,var(--border-strong) 95%,#0000)}.rule:after{background:linear-gradient(270deg,#0000 5%,#ffffff29 95%,#0000);background:linear-gradient(to left,#0000 5%,var(--border-strong) 95%,#0000)}.rule-label{background:#e5e5e5;background:var(--primary);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:.75rem;border-radius:var(--radius-lg);color:#171717;color:var(--primary-foreground);font-size:.875rem;font-weight:500;padding:.25rem 1rem;position:relative;white-space:nowrap;z-index:1}.feature-titles{align-items:center;display:flex;flex-direction:column;gap:.75rem}.feature-title{font-size:1.875rem;font-weight:700;letter-spacing:-.045em;line-height:1.15;text-align:center}@media (min-width:640px){.feature-title{font-size:2.25rem}}.feature-lede{text-wrap:balance;color:#a3a3a3;color:var(--muted-foreground);line-height:1.625;max-width:34rem;text-align:center}.project-grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:1fr;margin:0 auto;max-width:50rem}@media (min-width:640px){.project-grid{grid-auto-rows:1fr;grid-template-columns:repeat(2,minmax(0,1fr))}}.project-card,.project-grid>.fade{display:flex;height:100%}.project-card{background:#171717;background:var(--card);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:.75rem;border-radius:var(--radius-lg);flex-direction:column;overflow:hidden;transition:box-shadow .2s ease,border-color .2s ease}.project-card:hover{border-color:#0000;box-shadow:0 0 0 2px #262626;box-shadow:0 0 0 2px var(--muted)}.project-media{background:#262626;background:var(--muted);flex:none;height:12rem;position:relative;width:100%}.project-media img{height:100%;inset:0;object-fit:cover;position:absolute;width:100%}.project-media-actions{display:flex;flex-wrap:wrap;gap:.375rem;justify-content:flex-end;max-width:calc(100% - 1rem);position:absolute;right:.5rem;top:.5rem}.project-body{display:flex;flex:1 1;flex-direction:column;gap:.75rem;padding:1.5rem}.project-head{align-items:flex-start;display:flex;gap:.5rem;justify-content:space-between}.project-title{font-size:1rem;font-weight:600}.project-year{font-feature-settings:"tnum";font-size:.75rem;font-variant-numeric:tabular-nums}.project-desc,.project-year{color:#a3a3a3;color:var(--muted-foreground)}.project-desc{text-wrap:pretty;flex:1 1;font-size:.75rem;line-height:1.625}.project-award{align-items:center;color:#fafafa;color:var(--foreground);display:inline-flex;font-size:.6875rem;font-weight:500;gap:.375rem;width:-webkit-fit-content;width:fit-content}.project-card .tag-grid{margin-top:auto}.icon-link{align-items:center;color:#a3a3a3;color:var(--muted-foreground);display:inline-flex;flex:none;justify-content:center;transition:color .15s ease}.icon-link:hover{color:#fafafa;color:var(--foreground)}.icon-link svg{height:1rem;width:1rem}.timeline{grid-gap:2rem;display:grid;gap:2rem;padding:1rem 0;width:100%}.timeline-item{align-items:flex-start;gap:1.5rem;width:100%}.timeline-item,.timeline-rail{display:flex;position:relative}.timeline-rail{align-self:stretch;flex:none;justify-content:center}.timeline-item:not(:last-child) .timeline-rail:after{background:#ffffff29;background:var(--border-strong);bottom:-2rem;content:"";left:50%;position:absolute;top:2.5rem;transform:translateX(-50%);width:1px}.timeline-node{background:#171717;background:var(--card);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:9999px;box-shadow:0 1px 2px 0 #0000004d,0 0 0 2px #ffffff1a;box-shadow:var(--shadow-sm),0 0 0 2px var(--border);color:#fafafa;color:var(--foreground);display:grid;flex:none;height:2.5rem;padding:.25rem;place-items:center;position:relative;width:2.5rem;z-index:1}.timeline-node svg{height:1.125rem;width:1.125rem}.timeline-body{display:flex;flex:1 1;flex-direction:column;gap:.5rem;min-width:0;padding-bottom:.25rem}.timeline-title{font-size:1rem;font-weight:600;line-height:1.25}.timeline-desc,.timeline-source{color:#a3a3a3;color:var(--muted-foreground);font-size:.875rem}.timeline-desc{line-height:1.625;overflow-wrap:break-word}.timeline-actions{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}.contact{margin-top:3.5rem;position:relative;scroll-margin-top:2rem}.contact-card{background:#171717;background:var(--card);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:.75rem;border-radius:var(--radius-lg);padding:3rem 1.5rem 2.5rem;position:relative}@media (min-width:640px){.contact-card{padding:2.5rem}}.contact-badge{left:50%;position:absolute;top:-1rem;transform:translateX(-50%);z-index:2}.contact-inner{align-items:center;display:flex;flex-direction:column;gap:1rem;position:relative;text-align:center;z-index:1}.contact-title{font-size:1.875rem;font-weight:700;letter-spacing:-.045em}@media (min-width:640px){.contact-title{font-size:3rem}}.contact-copy{text-wrap:balance;color:#a3a3a3;color:var(--muted-foreground);line-height:1.625;margin:0 auto;max-width:32rem}.contact-socials{align-items:center;display:flex;gap:.5rem;margin-top:.25rem}.contact-note{color:#a3a3a3;color:var(--muted-foreground);font-size:.75rem;margin-top:1.5rem;text-align:center}.dock-wrap{inset:auto 0 1rem 0;pointer-events:none;position:fixed;z-index:30}.dock{align-items:center;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);background:color-mix(in srgb,#171717 90%,#0000);background:color-mix(in srgb,var(--card) 90%,#0000);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:9999px;box-shadow:0 0 10px 3px color-mix(in srgb,#fafafa 5%,#0000),0 12px 32px -8px #0000008c;box-shadow:0 0 10px 3px color-mix(in srgb,var(--foreground) 5%,#0000),var(--shadow-lg);display:flex;gap:.5rem;height:4rem;justify-content:center;margin:0 auto;max-width:calc(100vw - 2rem);overflow-x:auto;padding:.5rem;pointer-events:auto;position:relative;scrollbar-width:none;width:-webkit-fit-content;width:fit-content}.dock::-webkit-scrollbar{display:none}.dock-item{background:#131313;background:var(--background);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:9999px;color:#a3a3a3;color:var(--muted-foreground);display:grid;flex:none;height:3rem;place-items:center;position:relative;transition:color .15s ease,background-color .15s ease,transform .15s ease;width:3rem}.dock-item:hover{transform:translateY(-2px)}.dock-item.is-active,.dock-item:hover{background:#262626;background:var(--muted);color:#fafafa;color:var(--foreground)}.dock-item svg{height:1.125rem;width:1.125rem}.dock-divider{background:#ffffff29;background:var(--border-strong);flex:none;height:66%;margin:auto .125rem;width:1px}.dock-item:after{background:#171717;background:var(--card);border:1px solid #ffffff1a;border:1px solid var(--border);border-radius:.375rem;border-radius:var(--radius-sm);bottom:calc(100% + .625rem);color:#fafafa;color:var(--foreground);content:attr(data-label);font-size:.6875rem;font-weight:500;left:50%;opacity:0;padding:.25rem .5rem;pointer-events:none;position:absolute;transform:translateX(-50%) translateY(4px);transition:opacity .15s ease,transform .15s ease;white-space:nowrap}.dock-item:focus-visible:after,.dock-item:hover:after{opacity:1;transform:translateX(-50%)}@media (max-width:480px){.dock-item:after{display:none}.dock{gap:.3rem;height:auto;padding:.375rem}.dock-item{height:2.25rem;width:2.25rem}.dock-item svg{height:1rem;width:1rem}.dock-divider{margin:auto 0}}@media (max-width:360px){.dock{gap:.2rem;padding:.3rem}.dock-item{height:2rem;width:2rem}}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}
/*# sourceMappingURL=main.07c72b33.css.map*/