@import "https://fonts.googleapis.com/css2?family=Shadows+Into+Light&display=swap";@import "https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Mono:wght@400;500&display=swap";@import "https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/dist/tabler-icons.min.css";:root{--surface:#e0e5ec;--shadow-dark:#b8bec7;--shadow-light:#fff;--ink:#5a6a7e;--ink-muted:#8a9bb0;--raised-sm:4px 4px 10px var(--shadow-dark), -4px -4px 10px var(--shadow-light);--raised:5px 5px 12px var(--shadow-dark), -5px -5px 12px var(--shadow-light);--raised-md:6px 6px 14px var(--shadow-dark), -6px -6px 14px var(--shadow-light);--raised-lg:7px 7px 16px var(--shadow-dark), -7px -7px 16px var(--shadow-light);--raised-xl:10px 10px 22px var(--shadow-dark), -10px -10px 22px var(--shadow-light);--inset-sm:inset 3px 3px 8px var(--shadow-dark), inset -3px -3px 8px var(--shadow-light);--inset:inset 4px 4px 10px var(--shadow-dark), inset -4px -4px 10px var(--shadow-light);--text:#6b6375;--text-h:#08060d;--bg:#fff;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-light:#aa3bfcc0;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--nav-bg:#e0e5ecdb;--nav-button-bg:var(--surface);--nav-shadow:var(--raised-md);--nav-shadow-strong:var(--raised-lg);--nav-shadow-inset:var(--inset-sm);--nav-padding-x:24px;--nav-padding-y:12px;--nav-button-padding-x:24px;--nav-button-padding-y:12px;--nav-radius:12px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:"DM Mono", ui-monospace, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}}body{margin:0}button,input,textarea,select{font-family:inherit}.site-nav{z-index:100;padding:var(--nav-padding-y) var(--nav-padding-x);background:var(--nav-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--nav-shadow);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.site-nav__logo{cursor:pointer;letter-spacing:-.02em;color:var(--text);background:0 0;border:none;padding:0;font-size:18px;font-weight:800}.site-nav__links{gap:4px;display:flex}.nav-link,.cta-btn,.social-btn,.project-feature__link,.typeahead-search__button{background:var(--surface);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;font-family:inherit;text-decoration:none;display:inline-flex}.nav-link{border-radius:var(--nav-radius);color:var(--text);padding:var(--nav-button-padding-y) var(--nav-button-padding-x);box-shadow:var(--nav-shadow);font-size:14px;font-weight:600;transition:box-shadow .35s,transform .35s}.nav-link:hover,.nav-link.active{box-shadow:var(--nav-shadow-inset);transition-delay:.18s;transform:scale(.98)}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:100%;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}.entry{z-index:1000;background:#0e0e0e;justify-content:center;align-items:center;font-family:Syne,sans-serif;display:flex;position:fixed;inset:0;overflow:hidden}.entry__content{text-align:center;position:relative}.entry__year{text-align:left;font-family:var(--mono);color:#555;letter-spacing:.15em;margin-bottom:16px;font-size:12px;animation:.8s .2s both fadeUp;display:block}.entry__name{color:#fff;letter-spacing:-.03em;margin:0 0 12px;font-family:Shadows Into Light,cursive;font-size:clamp(48px,8vw,96px);font-weight:800;line-height:1;animation:.8s .5s both fadeUp}.entry__instruction{text-align:right;font-family:var(--mono)}.entry__space-hint{fill:#ffffffe9;pointer-events:none;width:min(400px,32vw);height:auto;font-family:Shadows Into Light,cursive;font-size:25px;animation:6.5s ease-out both hintFloat;position:absolute;bottom:10%;left:10%;overflow:visible}.entry__space-hint path{fill:none}.entry--exiting{animation:.65s cubic-bezier(.4,0,.2,1) forwards exitZoom}.dodging-image__stage{position:fixed;inset:0}.dodging-image__img{opacity:0;width:160px;animation:1.2s 2s forwards fadeInImage;position:absolute;transform:translate(-50%,-50%)}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes exitZoom{0%{opacity:1;filter:blur();transform:scale(1)}to{opacity:0;filter:blur(16px);transform:scale(6)}}@keyframes fadeInImage{0%{opacity:0}to{opacity:1}}@keyframes hintFloat{0%{opacity:0;transform:translate(-50%,28px)}15%{opacity:1}to{opacity:0;transform:translate(-50%,-70px)}}@media (width<=1024px),(hover:none),(pointer:coarse){.entry__space-hint{display:none}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}.site-wrapper{background:var(--surface);color:var(--ink);font-family:var(--sans);width:100%}.section__header{margin-top:20px}.section__label{font-family:var(--mono);font-size:13px;font-weight:500}.cta-btn{color:var(--ink);box-shadow:var(--raised-sm);border-radius:15px;padding:12px 24px;font-size:15px;font-weight:700;transition:box-shadow .15s,transform .1s}.cta-btn:hover{box-shadow:2px 2px 2px var(--shadow-dark),-2px -2px 10px var(--shadow-light)}.skills-groups{gap:16px;max-width:720px;margin:14px auto 0;padding:0 16px;display:grid}.skills-grid{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.skills-grid .skill-pill{flex:0 calc(25% - 10.5px);justify-content:center}@media (width<=600px){.skills-grid .skill-pill{flex-basis:calc(50% - 7px)}}.skill-pill{background:var(--surface);box-shadow:var(--raised-md);cursor:default;border-radius:14px;align-items:center;gap:7px;padding:7px 16px;font-size:13px;font-weight:600;transition:transform .15s,box-shadow .15s;display:inline-flex}.skill-pill:hover,.stat-card:hover{box-shadow:var(--inset);transform:scale(1.06)}.dot{border-radius:50%;width:10px;height:10px;display:inline-block}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-top:64px;margin-bottom:64px;display:grid}.stat-card{text-align:center;background:var(--surface);box-shadow:var(--raised-md);border:1.5px solid #eee;border-radius:16px;padding:24px 20px;transition:transform .15s,box-shadow .15s}.stat-card__num{letter-spacing:-.03em;font-size:36px;font-weight:800}.stat-card__label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:10px;font-size:11px}input,textarea{background:var(--surface);color:var(--ink);box-sizing:border-box;border:none;border-radius:10px;outline:none;width:100%;padding:10px 14px;font-size:14px}textarea{resize:vertical;margin-bottom:16px}.social-links{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.social-btn{color:var(--ink);box-shadow:var(--raised);border-radius:24px;padding:10px 20px;font-size:14px;font-weight:600;transition:box-shadow .15s,transform .1s}.social-btn:hover{box-shadow:var(--raised-lg)}.site-footer{text-align:center;color:#aaa;padding:24px;font-size:13px}@media (width<=600px){section{padding:60px 16px}}.hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;width:100%;min-height:calc(100svh - 50px);display:grid;position:relative;overflow:hidden}.hero__content{isolation:isolate;text-align:center;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:10px 16px;display:flex;position:relative;overflow:hidden}.hero__name{letter-spacing:-.03em;color:#e1e8f0;margin-bottom:16px;font-size:clamp(48px,8vw,80px);font-weight:800;line-height:1.05}.hero__role{min-height:1.4em;font-size:clamp(20px,4vw,32px);font-weight:700;font-family:var(--mono);color:#c084fcfd;margin-bottom:0;position:relative}.hero__bio-wrap{isolation:isolate;width:min(100%,520px);margin-bottom:40px;position:relative}.hero__bio{color:#e1e8f0;width:100%;font-size:17px;font-weight:500;line-height:1.7;font-family:var(--sans)}.hero__actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.hero-image{object-fit:contain;object-position:bottom center;z-index:40;border-radius:24px;justify-self:center;width:min(100%,500px);max-height:calc(100svh - 50px);display:block}.blob{z-index:-1;opacity:.18;pointer-events:none;background:radial-gradient(ellipse, var(--accent-light), transparent 70%);width:100%;height:100%;position:absolute}@media (width<=996px){.hero{grid-template-columns:1fr}.hero-image{padding:20px 0}}@media (width<=600px){.hero-image{display:none}}.projects-page{background:var(--surface);min-height:100vh;color:var(--text);font-family:var(--sans);padding:0 24px 80px;position:relative;overflow:hidden}.projects-page__nav{width:100%;padding:var(--nav-padding-y) var(--nav-padding-x);z-index:20;box-shadow:none;border-radius:0;margin:0;position:fixed;top:0;left:0}.projects-page__inner{max-width:1100px;margin:0 auto;padding-top:92px}.projects-page__header{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:20px;margin-bottom:44px;display:flex}.projects-page__stack{flex-direction:column;gap:28px;display:flex}.projects-page__title{letter-spacing:-.04em;color:var(--text);margin-top:8px;font-size:clamp(1.75rem,3.5vw,2.75rem);font-weight:800}.project-feature{background:var(--surface);width:100%;box-shadow:var(--raised-xl);border-radius:24px;grid-template-columns:1fr 1fr;align-items:center;gap:24px;padding:32px 28px;display:grid}.project-feature--typeahead{grid-template-columns:1fr}.project-feature--typeahead .project-feature__copy,.project-feature--typeahead .project-feature__preview{justify-self:stretch;width:100%;max-width:none}.project-feature__copy{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.project-feature__title{letter-spacing:-.04em;color:var(--text);margin:0;font-size:clamp(2rem,4vw,3rem);font-weight:800}.project-feature__description{max-width:760px;color:var(--text);text-align:left;margin:0;line-height:1.7}.project-feature__thumb-link{border-radius:18px;justify-self:end;width:100%;max-width:420px;display:block;position:relative;overflow:hidden;box-shadow:8px 8px 18px #818c9b33,-8px -8px 18px #ffffffb3}.project-feature__thumb{aspect-ratio:16/10;object-fit:cover;width:100%;height:auto;transition:transform .15s;display:block}.project-feature__thumb-link:before{content:"";background-color:var(--accent);z-index:1;pointer-events:none;opacity:.2;width:100%;height:100%;position:absolute;top:0;left:0}.project-feature__thumb-link:hover .project-feature__thumb{transform:scale(1.02)}.project-feature__link{color:var(--text);box-shadow:var(--raised);border-radius:999px;margin:0 auto;padding:12px 20px;font-weight:700;transition:transform .15s,box-shadow .15s}.project-feature__link:hover{box-shadow:var(--raised-lg);transform:translateY(-1px)}@media (width<=760px){.project-feature{grid-template-columns:1fr}.project-feature__thumb-link{justify-self:stretch;max-width:none}}.project-tech{text-align:left;flex-direction:column;gap:2px;width:100%;max-width:760px;margin:0 0 14px;font-size:.7rem;line-height:1.35;display:flex}.typeahead-page{background:var(--surface);min-height:100vh;color:var(--text);font-family:var(--sans);padding:120px 24px 80px}.typeahead-page__inner{max-width:980px;margin:0 auto}.typeahead-page__label{font-family:var(--mono);margin-bottom:10px;font-size:13px}.typeahead-page__title{letter-spacing:-.04em;color:var(--text);margin:0;font-size:clamp(2.5rem,5vw,4rem);font-weight:800}.typeahead-page__panel{background:var(--surface);box-shadow:var(--raised-xl);border-radius:24px;margin-top:32px;padding:28px}.typeahead-form{flex-direction:column;gap:18px;display:flex}.typeahead-search{background:var(--surface);box-shadow:inset 5px 5px 12px var(--shadow-dark), inset -5px -5px 12px var(--shadow-light);border-radius:18px;align-items:center;gap:12px;padding:14px 18px;transition:box-shadow .15s;display:flex}.typeahead-search:focus-within{box-shadow:inset 7px 7px 16px var(--shadow-dark), inset -7px -7px 16px var(--shadow-light)}.typeahead-search__icon{color:var(--text);font-size:1.1rem}.typeahead-search__input{color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:1.05rem}.typeahead-search__input::placeholder{color:var(--text)}.typeahead-search__button{color:var(--ink);box-shadow:var(--raised);border-radius:12px;padding:10px 16px;font-weight:700;transition:transform .15s,box-shadow .15s}.typeahead-search__button:hover{box-shadow:var(--raised-lg);transform:translateY(-1px)}.typeahead-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.typeahead-item{width:100%;color:var(--text);text-align:left;cursor:pointer;background:#ffffff2e;border:none;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;transition:transform .15s,box-shadow .15s;display:flex}.typeahead-item:hover,.typeahead-item.is-active{box-shadow:var(--raised);transform:translateY(-1px)}.typeahead-item__text{align-items:center;gap:10px;display:flex}.typeahead-item__badge{letter-spacing:.08em;text-transform:uppercase;color:#7a8ca1;background:#ffffff38;border-radius:999px;padding:4px 8px;font-size:.7rem}@media (width<=640px){.typeahead-page{padding-top:110px}.typeahead-search{flex-wrap:wrap}.typeahead-search__button{width:100%}}
