@font-face{font-family:Patrick Hand;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/9c658d69512eff08-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Patrick Hand;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/223db0593b777c06-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Patrick Hand;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/fb80db0e9f250198-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Patrick Hand Fallback;src:local("Arial");ascent-override:127.97%;descent-override:38.32%;line-gap-override:0.00%;size-adjust:81.43%}.__className_09d425{font-family:Patrick Hand,Patrick Hand Fallback;font-weight:400;font-style:normal}.__variable_09d425{--font-hand:"Patrick Hand","Patrick Hand Fallback"}:root{--blue:#2563a8}*{box-sizing:border-box}html{background:#fdfdfc;scroll-behavior:smooth;scrollbar-width:none}html::-webkit-scrollbar{width:0;height:0}body{min-height:100vh;margin:0;overflow-x:hidden;background:#fdfdfc;color:#16191f;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.6;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}img,video{display:block;max-width:100%}a,button{-webkit-tap-highlight-color:transparent}::selection{background:#d7e8f7}.v2-menu-bar{position:fixed;z-index:20;top:1.5rem;left:1.25rem}.v2-menu-toggle{width:2rem;height:2rem;display:inline-grid;padding:0;border:1px solid #e5e2dc;border-radius:50%;background:#fffefa;cursor:pointer;place-items:center;position:relative;z-index:2;transition:border-color .16s ease,transform .16s ease}.v2-menu-toggle:hover{border-color:#7c828a;transform:translateY(-1px)}.v2-menu-toggle img{width:1.15rem;height:1.15rem;object-fit:contain}.v2-menu-panel{position:absolute;top:calc(100% + .55rem);left:0;width:11rem;padding:.4rem;border:1px solid #e5e2dc;border-radius:.8rem;background:#fffefa;box-shadow:0 12px 36px rgba(22,25,31,.12);animation:v2-menu-popup-in .16s ease-out both}.v2-menu-links{display:grid;grid-gap:.1rem;gap:.1rem}.v2-menu-links a{padding:.48rem .6rem;border-radius:.48rem;color:#747984;font-size:.76rem;font-weight:500;line-height:1.4;transition:background .15s ease,color .15s ease}.v2-menu-links a:hover,.v2-menu-links a[aria-current=page]{background:#f3f1ed;color:#16191f}.v2-menu-resume{display:flex;align-items:center;gap:.45rem;margin-top:.35rem;padding:.55rem .6rem .25rem;border-top:1px solid #e5e2dc;color:#315f8d;font-size:.65rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.v2-menu-resume img{width:.9rem;height:.9rem;object-fit:contain}.v2-menu-panel a:focus-visible,.v2-menu-toggle:focus-visible{outline:2px solid #315f8d;outline-offset:3px}@keyframes v2-menu-popup-in{0%{opacity:0;transform:translateY(-.35rem) scale(.98)}to{opacity:1;transform:translateY(0)}}.v2-page{--v2-ink:#16191f;--v2-muted:#74777f;--v2-border:#e5e2dc;--v2-divider:#eeebe5;--v2-surface:#fff;position:relative;min-height:100vh;overflow:hidden;background:#fdfdfc;color:var(--v2-ink)}.v2-cursor-dots{position:fixed;z-index:0;inset:0;overflow:hidden;pointer-events:none}.v2-cursor-dots span{position:absolute;display:block;border-radius:50%;background:#747a82;will-change:transform}.v2-main{position:relative;z-index:1;width:min(calc(100% - 3rem),43rem);margin:0 auto;padding:6rem 0 3rem}.v2-hero-cartoons{inset:0 0 auto;height:15rem}.v2-cartoon,.v2-hero-cartoons{position:absolute;z-index:0;pointer-events:none}.v2-cartoon{display:block;max-width:none;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none}.v2-cartoon-moon{top:3.75rem;left:-18rem;width:11rem;transform:rotate(-7deg)}.v2-hero,.v2-section>:not(.v2-cartoon){position:relative;z-index:1}.v2-hero{display:grid;grid-template-columns:minmax(0,1fr) 15rem;align-items:start;grid-gap:1.2rem;gap:1.2rem}.v2-hero h1{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1.9rem;font-weight:500;line-height:1.2;letter-spacing:-.035em}.v2-tagline{margin:.35rem 0 0;color:var(--v2-muted);font-size:1.15rem;line-height:1.35}.v2-flags{margin:.45rem 0 0;font-size:1.04rem;line-height:1;letter-spacing:.08em}.v2-hero-seeking{width:-moz-fit-content;width:fit-content;display:inline-flex;align-items:center;gap:.35rem;margin-top:.85rem;padding:.28rem .62rem;border:1px solid #cbdceb;border-radius:999px;background:#f2f7fb;color:#315f8d;font-family:var(--font-hand),cursive;font-size:.76rem;line-height:1.35;transition:border-color .16s ease,background .16s ease,transform .16s ease}.v2-hero-seeking:hover{border-color:#8dafcc;background:#eaf3fa;transform:translateY(-1px)}.v2-intro-about{max-width:32rem;margin:1rem 0 0;color:var(--v2-muted);font-size:.86rem;line-height:1.72}.v2-intro-highlight{color:#315f8d;font-weight:550}.v2-hero-aside{min-width:0;display:flex;flex-direction:column;align-items:flex-end;gap:2.35rem;padding-top:.1rem}.v2-hero-portrait{position:relative;width:9.75rem;height:9.75rem;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer}.v2-portrait-reaction{--poke-x:0px;--poke-y:-6px;--poke-bounce-x:0px;--poke-bounce-y:1.32px;--bonk-left:50%;--bonk-top:-2%;--bonk-rotation:-5deg;position:relative;width:100%;height:100%;display:block;transform-origin:50% 16%;will-change:transform}.v2-hero-portrait-photo{width:100%;height:100%;border-radius:50%;object-fit:cover}.v2-portrait-reaction.is-reacting{animation:v2-portrait-wobble .82s cubic-bezier(.34,1.28,.64,1) both}.v2-portrait-bonk{position:absolute;z-index:3;top:var(--bonk-top);left:var(--bonk-left);display:flex;align-items:flex-end;gap:.28rem;color:#16191f;font-family:var(--font-hand),cursive;opacity:0;pointer-events:none;transform:translate(-50%,-50%) rotate(var(--bonk-rotation)) scale(.65);white-space:nowrap}.v2-portrait-bonk b{font-size:.78rem;font-weight:700;letter-spacing:.04em;line-height:1}.v2-bonk-line{width:.12rem;height:.62rem;display:block;border-radius:999px;background:currentColor;transform-origin:50% 100%}.v2-bonk-line-left{transform:rotate(-32deg)}.v2-bonk-line-right{transform:rotate(34deg)}.v2-portrait-reaction.is-reacting .v2-portrait-bonk{animation:v2-bonk-pop .43s ease-out both}.v2-portrait-damage{position:absolute;z-index:4;top:12%;right:-5%;color:#8b1f1f;font-family:var(--font-hand),cursive;font-size:.64rem;font-style:normal;font-weight:700;letter-spacing:.03em;opacity:0;pointer-events:none;transform:rotate(5deg);white-space:nowrap;animation:v2-damage-tick .78s ease-out both}.v2-portrait-hint{position:absolute;z-index:2;top:99%;left:34%;width:7.25rem;height:auto;max-width:none;pointer-events:none;transform:rotate(-5deg);transform-origin:20% 15%}.v2-hero-portrait:focus-visible{outline:2px solid #315f8d;outline-offset:4px}.v2-section{position:relative;margin-top:4.75rem}.v2-section-heading{display:flex;align-items:center;gap:.5rem;margin-bottom:1.3rem}.v2-section-heading h2{margin:0;border-bottom:1px solid;font-size:1.5rem;font-weight:500;line-height:1.4}.v2-section-heading>img{width:1.3rem;height:1.3rem;object-fit:contain;opacity:.7}.v2-card{border:1px solid var(--v2-border);border-radius:.85rem;background:var(--v2-surface);transition:border-color .2s ease-out,background .2s ease-out,box-shadow .2s ease-out,transform .2s ease-out}.v2-card:hover,.v2-project:hover{border-color:#aaa69f;background:var(--v2-surface);box-shadow:0 7px 20px rgba(39,35,29,.045);transform:translateY(-2px)}.v2-card h3{margin:0;color:var(--v2-ink);font-size:1.13rem;font-weight:500}.v2-mini-contribution{width:19.75rem}.v2-mini-contribution-button{width:100%;min-height:3.15rem;display:grid;padding:.1rem;border:0;border-radius:.38rem;background:transparent;cursor:pointer;place-items:center}.v2-mini-contribution-button:disabled{opacity:1;cursor:default}.v2-mini-contribution-grid{width:max-content;display:grid;grid-auto-columns:.3rem;grid-auto-flow:column;grid-template-rows:repeat(7,.3rem);grid-gap:.07rem;gap:.07rem;margin:0 auto;transform:scale(1.25);transform-origin:center}.v2-mini-contribution-day{width:.3rem;height:.3rem;display:block;border-radius:.085rem;background:#edf0f2;transition:background-color .15s ease,opacity .15s ease,transform .26s cubic-bezier(.22,1,.36,1)}.v2-mini-contribution-day[data-level="1"]{background:#bad7ee}.v2-mini-contribution-day[data-level="2"]{background:#77afd8}.v2-mini-contribution-day[data-level="3"]{background:#3f83bd}.v2-mini-contribution-day[data-level="4"]{background:#235f99}.v2-mini-contribution-button:hover .v2-mini-contribution-grid{filter:saturate(1.08)}.v2-mini-contribution.is-heart .v2-mini-contribution-day{animation:v2-commit-morph .42s cubic-bezier(.22,1,.36,1) var(--morph-delay) both}.v2-mini-contribution.is-converging .v2-mini-contribution-day{transform:scale(.88)}.v2-education-card{min-height:5.1rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:1.25rem 1.4rem}.v2-education-card p,.v2-experience-topline p{margin:.22rem 0 0;color:var(--v2-muted);font-size:.99rem}.v2-card-note{flex:0 0 auto;color:var(--v2-muted);font-size:.94rem}.v2-experience-list{display:grid;grid-gap:.8rem;gap:.8rem}.v2-experience-card{min-height:6.6rem;display:flex;flex-direction:column;justify-content:center;padding:1.2rem 1.4rem}.v2-experience-topline{display:grid;grid-template-columns:3rem minmax(0,1fr) auto;align-items:center;grid-gap:.9rem;gap:.9rem}.v2-experience-logo{width:3rem;height:3rem;display:grid;place-items:center;overflow:hidden;padding:.2rem;border:1px solid var(--v2-border);border-radius:.65rem;background:#fffdf8}.v2-experience-logo img{width:100%;height:100%;border-radius:.42rem;object-fit:contain}.v2-experience-info{min-width:0}.v2-experience-topline time{color:var(--v2-muted);font-size:.92rem;text-align:right}.v2-experience-card>.v2-tags{margin-left:3.9rem}.v2-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin:.95rem 0 0;padding:0;list-style:none}.v2-tags li{padding:.18rem .48rem;border-radius:99px;background:#f1efeb;color:#555961;font-size:.69rem;line-height:1.2;transition:background .16s ease,transform .16s ease}.v2-tags li:hover{background:#e9e6e0;transform:scale(1.02)}.v2-project-grid{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;align-items:stretch;grid-gap:1.35rem;gap:1.35rem}.v2-project{min-width:0;height:100%;display:flex;flex-direction:column;overflow:hidden;padding:.55rem;border:1px solid var(--v2-border);border-radius:.9rem;background:var(--v2-surface);transition:border-color .22s ease-out,background .22s ease-out,box-shadow .22s ease-out,transform .22s cubic-bezier(.22,1,.36,1)}.v2-project:hover{transform:translateY(-3px)}.v2-project-video-button{position:relative;width:100%;height:auto;aspect-ratio:16/10;display:block;overflow:hidden;padding:0;border:1px solid var(--v2-divider);border-radius:.68rem;background:#f4f2ee;cursor:zoom-in}.v2-project-video-button img,.v2-project-video-button video{width:100%;height:100%;object-fit:cover;transition:transform .24s cubic-bezier(.22,1,.36,1)}.v2-project-video-button img{background:#1a1a1a;object-fit:contain}.v2-project:hover .v2-project-video-button img,.v2-project:hover .v2-project-video-button video{transform:scale(1.025)}.v2-project-copy{width:100%;display:flex;flex:1 1;flex-direction:column;padding:.95rem .55rem .65rem}.v2-project-copy>h3{margin:0;color:var(--v2-ink);font-size:1rem;font-weight:500}.v2-project-copy>p{margin:.45rem 0 0;color:var(--v2-muted);font-size:.78rem;line-height:1.62}.v2-project-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:.85rem;margin-top:auto;padding-top:1rem}.v2-project-links{display:flex;flex:0 0 auto;justify-content:flex-start;gap:.8rem;margin:0;padding:0}.v2-project-links a{display:flex;flex-direction:column;align-items:center;gap:.15rem;color:var(--v2-muted);font-size:.64rem;transition:color .16s ease,transform .2s cubic-bezier(.22,1,.36,1)}.v2-project-links a:hover{color:var(--blue);transform:translateY(-2px) rotate(-2deg)}.v2-project-links img{width:1.75rem;height:1.75rem;object-fit:contain}.v2-project-links a:last-child img{transform:scale(1.18)}.v2-project-tech{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.28rem;margin:0;padding:0;list-style:none}.v2-project-tech li{padding:.17rem .4rem;border-radius:999px;background:#f1efeb;color:#5b5e64;font-size:.55rem;line-height:1.15;transition:background .16s ease,transform .16s ease}.v2-project-tech li:hover{background:#e9e6e0;transform:scale(1.02)}.v2-blog-list{display:grid;grid-gap:.8rem;gap:.8rem}.v2-blog-entry{min-height:6.6rem;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.2rem 1.4rem;color:var(--v2-ink)}.v2-blog-entry h3{margin:0;font-size:1.13rem;font-weight:500;line-height:1.5}.v2-blog-meta{display:flex;flex-wrap:wrap;gap:.35rem;margin:0;color:var(--v2-muted);font-size:.72rem}.v2-blog-entry:hover{color:#315f8d}.v2-blog-entry:focus-visible{border-radius:.2rem;outline:2px solid #315f8d;outline-offset:4px}.v2-blog-page-main{min-height:100svh}.v2-blog-page-header{position:relative;z-index:1;animation:v2-fade-down .42s cubic-bezier(.22,1,.36,1) both}.v2-blog-page-header a{display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1.9rem;font-weight:500;line-height:1.2;letter-spacing:-.035em}.v2-blog-page-header a:hover{color:#315f8d}.v2-blog-page-header a:focus-visible{border-radius:.2rem;outline:2px solid #315f8d;outline-offset:4px}.v2-blog-article{min-height:calc(100svh - 12rem)}.v2-blog-post{position:relative;z-index:1;padding:5rem 0 3rem;color:var(--v2-muted);font-size:.9rem;line-height:1.75}.v2-blog-post h1,.v2-blog-post h2,.v2-blog-post h3{color:var(--v2-ink);font-weight:500}.v2-blog-post-intro{max-width:37rem}.v2-blog-eyebrow{margin:0 0 .35rem;color:#315f8d;font-family:var(--font-hand),cursive;font-size:.9rem}.v2-blog-post-intro h1{margin:0;font-size:2rem;line-height:1.25;letter-spacing:-.025em}.v2-blog-post-intro p{margin:1.4rem 0 0}.v2-blog-post-intro .v2-blog-lead{color:var(--v2-ink);font-size:1.02rem;line-height:1.7}.v2-blog-highlight{color:#315f8d;font-weight:600}.v2-blog-toc{margin-top:3.5rem}.v2-blog-toc ul{display:grid;grid-gap:.7rem;gap:.7rem;margin:0;padding-left:1.25rem}.v2-blog-toc li{padding-left:.2rem;color:var(--v2-ink)}.v2-blog-toc a{color:#315f8d;font-size:1rem;line-height:1.45;transition:color .16s ease,transform .16s ease}.v2-blog-toc a:hover{color:var(--v2-ink)}.v2-blog-toc a:focus-visible{border-radius:.15rem;outline:2px solid #315f8d;outline-offset:3px}.v2-coop-sections{margin-top:4.5rem}.v2-coop-section{scroll-margin-top:2rem;padding:3rem 0;border-top:1px solid var(--v2-divider)}.v2-coop-section:last-child{border-bottom:1px solid var(--v2-divider)}.v2-coop-section>h2{width:-moz-fit-content;width:fit-content;margin:0 0 1.2rem;border-bottom:1px solid;font-size:1.4rem;line-height:1.45}.v2-coop-pros-cons p,.v2-coop-section>p{margin:0}.v2-coop-copy{margin-bottom:2rem}.v2-coop-copy h3{margin:0 0 .55rem;font-size:1rem}.v2-coop-copy p{margin:0}.v2-coop-pros-cons{display:grid;grid-gap:2rem;gap:2rem}.v2-coop-pros-cons>div{padding-top:1.6rem;border-top:1px solid var(--v2-divider)}.v2-coop-pros-cons h3{margin:0 0 .75rem;font-size:1rem}.v2-coop-pros-cons ul{display:grid;grid-gap:.7rem;gap:.7rem;margin:0;padding-left:1.05rem}.v2-coop-pros-cons li{padding-left:.15rem}.v2-coop-quote{margin:2.25rem 0 0;padding:.2rem 0 .2rem 1.15rem;border-left:3px solid #315f8d;color:var(--v2-muted)}.v2-coop-quote p{margin:0}.v2-coop-quote strong{color:var(--v2-ink);font-weight:500}.v2-job-statistics{margin:0;border-top:1px solid var(--v2-divider)}.v2-job-statistics>div{display:grid;grid-template-columns:minmax(8rem,.8fr) minmax(0,1.2fr);grid-gap:1rem;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--v2-divider)}.v2-job-statistics dt{color:var(--v2-ink);font-weight:500}.v2-job-statistics dd{margin:0;color:var(--v2-ink)}.v2-job-statistics dd span{color:var(--v2-muted);font-size:.82rem}.v2-experience-story{max-width:43rem}.v2-experience-story h3{margin:2.2rem 0 .55rem;color:#315f8d;font-size:1rem}.v2-experience-story h3:first-child{margin-top:0}.v2-experience-story p{margin:0 0 1rem}.v2-story-quote{margin:1.6rem 0;padding:1rem 1.15rem;border-left:3px solid #315f8d;border-radius:0 .55rem .55rem 0;background:#f2f7fb;color:#315f8d;font-size:1rem}.v2-story-quote p{margin:0}.v2-blog-figure{margin:2rem 0 2.5rem}.v2-blog-figure img{display:block;width:100%;height:auto;border:1px solid var(--v2-divider);border-radius:.65rem}.v2-blog-figure figcaption{margin-top:.55rem;color:var(--v2-muted);font-size:.76rem}.v2-tips-list{max-width:43rem;display:grid;grid-gap:1.8rem;gap:1.8rem;counter-reset:tip}.v2-tips-list article{--tip-accent:#315f8d;position:relative;padding-left:2.8rem;counter-increment:tip}.v2-tips-list article:nth-child(2){--tip-accent:#2f7775}.v2-tips-list article:nth-child(3){--tip-accent:#9a693c}.v2-tips-list article:nth-child(4){--tip-accent:#715b8b}.v2-tips-list article:before{position:absolute;top:-.1rem;left:0;width:1.8rem;height:1.8rem;display:grid;border:1px solid color-mix(in srgb,var(--tip-accent) 45%,transparent);border-radius:50%;background:color-mix(in srgb,var(--tip-accent) 8%,white);color:var(--tip-accent);content:counter(tip,decimal-leading-zero);font-size:.62rem;font-weight:600;place-items:center}.v2-tips-list h3{margin:0 0 .45rem;color:var(--tip-accent);font-size:1rem}.v2-tips-list p{margin:0}.v2-project-dialog-backdrop{--v2-border:#e5e2dc;--v2-surface:#fff;position:fixed;z-index:20;inset:0;display:grid;padding:1rem;overflow:auto;background:rgba(22,25,31,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);place-items:center}.v2-project-dialog{width:min(100%,62rem);max-height:calc(100svh - 2rem);overflow:auto;border-radius:1rem}.v2-project-dialog-inner{position:relative;overflow:hidden;padding:.55rem;border:1px solid var(--v2-border);border-radius:1rem;background:var(--v2-surface);box-shadow:0 24px 70px rgba(22,25,31,.24)}.v2-project-dialog video,.v2-project-dialog-inner>img{width:100%;max-height:calc(100svh - 4rem);border-radius:.7rem;background:#111;object-fit:contain}.v2-project-dialog-close{position:absolute;z-index:2;top:.9rem;right:.9rem;width:2rem;height:2rem;display:grid;padding:.32rem;border:1px solid rgba(255,255,255,.7);border-radius:50%;background:rgba(255,255,255,.88);cursor:pointer;place-items:center}.v2-project-dialog-close img{width:100%;height:100%;object-fit:contain}.v2-connect-card{padding:1.3rem 1.45rem .95rem}.v2-connect-section{scroll-margin-top:2rem}.v2-connect-card>p{margin:0;color:var(--v2-muted);font-size:.9rem}.v2-connect-card>.v2-seeking{margin-bottom:.25rem;color:#315f8d;font-family:var(--font-hand),cursive;font-size:.9rem;font-weight:400}.v2-connect-links{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.95rem;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--v2-divider)}.v2-connect-links a{min-width:4rem;display:flex;flex-direction:column;align-items:center;gap:.3rem;color:var(--v2-muted);font-size:.69rem;transition:color .16s ease,transform .22s cubic-bezier(.22,1,.36,1)}.v2-connect-links a:hover{color:var(--blue);transform:translateY(-3px) rotate(-1.5deg)}.v2-connect-links a:hover .v2-connect-icon{animation:v2-pendulum-swing .7s cubic-bezier(.4,0,.2,1)}.v2-intro-contact-links{margin:3.75rem 0 0}.v2-connect-icon{width:3rem;height:3rem;display:grid;place-items:center;overflow:visible}.v2-connect-icon img{width:100%;height:100%;object-fit:contain}.v2-connect-links .contact-card-mail .v2-connect-icon{width:3rem;height:3rem;overflow:visible}.v2-connect-links .contact-card-mail img{width:100%;height:100%;max-width:100%;object-fit:contain;object-position:center;transform:translateX(-.45rem) translateY(-.05rem) scale(2.63)}.v2-connect-links .contact-card-github img{transform:scale(1.18)}.v2-connect-links .contact-card-resume img{transform:scale(1.04)}.v2-footer{display:flex;justify-content:center;margin-top:4.75rem;padding:1.45rem 0 1.85rem;border-top:1px solid var(--v2-divider);color:#999a9d;font-size:.8rem}.v2-footer p{display:flex;align-items:center;gap:.4rem;margin:0}.v2-footer img{width:1rem;height:1rem;object-fit:contain;opacity:.72}.v2-top-controls{--v2-ink:#16191f;--v2-muted:#74777f;--v2-border:#e5e2dc;--v2-divider:#eeebe5;--v2-surface:#fff;position:absolute;z-index:5;top:1.6rem;right:max(1.25rem,calc((100vw - 43rem) / 2));display:flex;height:2rem;align-items:center;gap:.45rem}.v2-home-link,.v2-now-playing-trigger,.v2-theme-toggle{width:2rem;height:2rem;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex:0 0 2rem;padding:0;border:1px solid var(--v2-border);border-radius:999px;background:var(--v2-surface);cursor:pointer}.v2-home-link{transition:border-color .16s ease,transform .16s ease}.v2-home-link:hover{border-color:#7c828a;transform:translateY(-1px)}.v2-home-link img{width:1.08rem;height:1.08rem;object-fit:contain;opacity:.7}.v2-theme-toggle{color:var(--v2-muted);font:inherit;transition:border-color .16s ease,background .16s ease,color .16s ease}.v2-theme-toggle>span{font-size:1rem;line-height:1}.v2-theme-toggle:hover{border-color:#7c828a;color:var(--v2-ink)}.v2-now-playing-wrap{position:relative;display:flex;height:2rem;align-items:center;line-height:0}.v2-now-playing-trigger{padding:.16rem;transition:border-color .16s ease,background .16s ease,transform .16s ease}.v2-now-playing-trigger:hover{border-color:#7c828a;transform:translateY(-1px)}.v2-now-playing-trigger.is-playing{border-color:#1db954}.v2-now-playing-trigger>img{width:1.65rem;height:1.65rem;object-fit:contain;transform:scale(1.16)}.v2-audio-player{position:absolute;top:calc(100% + .55rem);left:0;width:min(13.75rem,calc(100vw - 2rem));padding:.62rem .62rem .68rem;border:1px solid var(--v2-border);border-radius:.82rem;background:var(--v2-surface);box-shadow:0 12px 36px rgba(22,25,31,.14);animation:v2-player-in .16s ease-out both}.v2-audio-minimize{position:absolute;z-index:1;top:.75rem;right:.75rem;width:1.5rem;height:1.5rem;padding:0;border:1px solid var(--v2-border);border-radius:50%;background:rgba(252,252,251,.88);cursor:pointer}.v2-audio-minimize span{display:block;width:.66rem;height:1px;margin:0 auto;background:var(--v2-muted)}.v2-audio-cover{width:100%;height:auto;aspect-ratio:1;border-radius:.5rem;object-fit:cover;box-shadow:0 2px 8px rgba(23,32,51,.08)}.v2-audio-details{display:flex;min-width:0;flex-direction:column;padding:.52rem .12rem 0;line-height:1.15}.v2-audio-details span{color:#315f8d;font-size:.45rem;font-weight:700;letter-spacing:.055em;text-transform:uppercase}.v2-audio-details strong{overflow:hidden;margin-top:.08rem;font-size:.75rem;text-overflow:ellipsis;white-space:nowrap}.v2-audio-details small{margin-top:.08rem;color:var(--v2-muted);font-size:.55rem}.v2-audio-progress-wrap{padding:.5rem .12rem 0}.v2-audio-range{--range-progress:0%;width:100%;height:.22rem;margin:0;border-radius:999px;outline:none;background:linear-gradient(to right,#303238 0 var(--range-progress),#d9d7d2 var(--range-progress) 100%);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.v2-audio-range::-webkit-slider-thumb{width:.68rem;height:.68rem;border:2px solid #fff;border-radius:50%;background:#303238;box-shadow:0 1px 4px rgba(23,32,51,.24);-webkit-appearance:none;appearance:none}.v2-audio-range::-moz-range-thumb{width:.52rem;height:.52rem;border:2px solid #fff;border-radius:50%;background:#303238;box-shadow:0 1px 4px rgba(23,32,51,.24)}.v2-audio-progress{display:block}.v2-audio-time{display:flex;justify-content:space-between;margin-top:.62rem;color:var(--v2-muted);font-size:.51rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.v2-audio-controls{display:grid;grid-template-columns:1.3rem 1fr 1.95rem;align-items:center;grid-gap:.34rem;gap:.34rem;padding:.28rem .08rem 0}.v2-audio-volume{height:.18rem}.v2-audio-play-button,.v2-audio-volume-button{display:inline-grid;padding:0;border:0;background:transparent;color:var(--v2-muted);cursor:pointer;place-items:center}.v2-audio-volume-button{width:1.3rem;height:1.3rem}.v2-audio-volume-button svg{width:.9rem;height:.9rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6}.v2-audio-play-button{width:1.95rem;height:1.95rem;border-radius:50%;transition:transform .15s ease}.v2-audio-play-button:hover{transform:scale(1.04)}.v2-audio-play-button img{width:100%;height:100%;object-fit:contain}.v2-audio-minimize:focus-visible,.v2-audio-play-button:focus-visible,.v2-audio-range:focus-visible,.v2-audio-volume-button:focus-visible,.v2-connect-links a:focus-visible,.v2-education-card:focus-visible,.v2-experience-card:focus-visible,.v2-hero-seeking:focus-visible,.v2-home-link:focus-visible,.v2-mini-contribution-button:focus-visible,.v2-now-playing-trigger:focus-visible,.v2-project-links a:focus-visible,.v2-project-video-button:focus-visible,.v2-theme-toggle:focus-visible{outline:2px solid #315f8d;outline-offset:3px}.v2-flags,.v2-footer,.v2-hero h1,.v2-hero-portrait,.v2-hero-seeking,.v2-intro-about,.v2-intro-contact-links,.v2-main>.v2-section,.v2-mini-contribution,.v2-tagline{animation:v2-fade-down .42s cubic-bezier(.22,1,.36,1) both}.v2-hero h1{animation-delay:30ms}.v2-hero-portrait,.v2-tagline{animation-delay:90ms}.v2-flags{animation-delay:.14s}.v2-hero-seeking{animation-delay:165ms}.v2-intro-about{animation-delay:.19s}.v2-mini-contribution{animation-delay:215ms}.v2-intro-contact-links{animation-delay:.22s}.v2-main>.v2-section:nth-of-type(2){animation-delay:.25s}.v2-main>.v2-section:nth-of-type(3){animation-delay:.31s}.v2-main>.v2-section:nth-of-type(4){animation-delay:.37s}.v2-main>.v2-section:nth-of-type(5){animation-delay:.43s}.v2-main>.v2-section:nth-of-type(6){animation-delay:.49s}.v2-footer{animation-delay:.55s}@keyframes v2-fade-down{0%{opacity:0;transform:translateY(-.65rem)}to{opacity:1;transform:translateY(0)}}@keyframes v2-tooltip-in{0%{opacity:0;transform:translate(-50%,calc(-100% + .2rem))}to{opacity:1;transform:translate(-50%,-100%)}}@keyframes v2-commit-morph{0%{opacity:.35;transform:scale(.45) rotate(-8deg)}70%{opacity:1;transform:scale(1.12) rotate(1deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes v2-player-in{0%{opacity:0;transform:translateY(-.3rem) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes v2-pendulum-swing{0%,to{transform:rotate(0deg);transform-origin:50% 0}20%{transform:rotate(13deg)}42%{transform:rotate(-10deg)}62%{transform:rotate(7deg)}78%{transform:rotate(-4deg)}90%{transform:rotate(2deg)}}@keyframes v2-portrait-wobble{0%{transform:translate(0)}12%{transform:translate(var(--poke-x),var(--poke-y)) rotate(-7deg)}30%{transform:translate(var(--poke-bounce-x),var(--poke-bounce-y)) rotate(6deg)}48%{transform:translate(0) rotate(-4deg)}66%{transform:translateY(-1px) rotate(2deg)}82%{transform:translate(0) rotate(-.6deg)}to{transform:translate(0) rotate(0deg)}}@keyframes v2-bonk-pop{0%{opacity:0;transform:translate(-50%,-50%) translateY(.35rem) rotate(var(--bonk-rotation)) scale(.55)}18%,62%{opacity:1;transform:translate(-50%,-50%) translateY(-.25rem) rotate(var(--bonk-rotation)) scale(1)}to{opacity:0;transform:translate(-50%,-50%) translateY(-.8rem) rotate(var(--bonk-rotation)) scale(.92)}}@keyframes v2-damage-tick{0%{opacity:0;translate:0 .2rem;scale:.86}15%{opacity:.92;translate:0 0;scale:1}72%{opacity:.92;translate:0 -.85rem;scale:1}to{opacity:0;translate:0 -1.25rem;scale:.96}}html[data-theme=dark] .v2-page{background:#090a0c}html[data-theme=dark] .v2-page,html[data-theme=dark] .v2-top-controls{--v2-ink:#e8eaed;--v2-muted:#a9aeb7;--v2-border:#30343a;--v2-divider:#292d32;--v2-surface:#111316}html[data-theme=dark] .v2-project-dialog-backdrop{--v2-border:#30343a;--v2-surface:#111316}html[data-theme=dark] .v2-cursor-dots span{background:#f1f3f5}html[data-theme=dark] .v2-card:hover,html[data-theme=dark] .v2-project:hover{border-color:#727982;background:#191c20;box-shadow:0 8px 24px rgba(0,0,0,.24)}html[data-theme=dark] .v2-audio-details span,html[data-theme=dark] .v2-connect-card>.v2-seeking,html[data-theme=dark] .v2-intro-highlight{color:#82acd2}html[data-theme=dark] .v2-hero-seeking{border-color:#274963;background:#111d27;color:#9ec4e6}html[data-theme=dark] .v2-hero-seeking:hover{border-color:#47799d;background:#152633}html[data-theme=dark] .v2-blog-entry:hover,html[data-theme=dark] .v2-blog-eyebrow,html[data-theme=dark] .v2-blog-highlight,html[data-theme=dark] .v2-blog-page-header a:hover,html[data-theme=dark] .v2-blog-toc a{color:#82acd2}html[data-theme=dark] .v2-blog-toc a:hover{color:var(--v2-ink)}html[data-theme=dark] .v2-coop-quote{border-color:#82acd2}html[data-theme=dark] .v2-experience-story h3{color:#82acd2}html[data-theme=dark] .v2-story-quote{border-color:#82acd2;background:#151f28;color:#9ec4e6}html[data-theme=dark] .v2-tips-list article:before{background:color-mix(in srgb,var(--tip-accent) 20%,#111316)}html[data-theme=dark] .v2-project-tech li,html[data-theme=dark] .v2-tags li{background:#292d32;color:#c6cad0}html[data-theme=dark] .v2-mini-contribution-day{background:#20252a}html[data-theme=dark] .v2-mini-contribution-day[data-level="1"]{background:#173b58}html[data-theme=dark] .v2-mini-contribution-day[data-level="2"]{background:#245f8c}html[data-theme=dark] .v2-mini-contribution-day[data-level="3"]{background:#3d86bc}html[data-theme=dark] .v2-mini-contribution-day[data-level="4"]{background:#76b2df}html[data-theme=dark] .v2-project-tech li:hover,html[data-theme=dark] .v2-tags li:hover{background:#343940}html[data-theme=dark] .v2-experience-logo{background:#f7f5f0}html[data-theme=dark] .v2-project-video-button{border-color:#393e45;background:#101214}html[data-theme=dark] .v2-audio-minimize{background:rgba(17,19,22,.88)}html[data-theme=dark] .v2-audio-play-button img,html[data-theme=dark] .v2-footer img,html[data-theme=dark] .v2-portrait-hint,html[data-theme=dark] .v2-section-heading>img{filter:invert(1)}html[data-theme=dark] .v2-portrait-bonk{color:#f1f3f5}html[data-theme=dark] .v2-portrait-damage{color:#a93a3a}html[data-theme=dark] body{background:#090a0c;color:#e8eaed}html[data-theme=dark] .v2-menu-panel,html[data-theme=dark] .v2-menu-toggle{border-color:#30343a;background:#111316}html[data-theme=dark] .v2-home-link img,html[data-theme=dark] .v2-menu-toggle img{filter:invert(1)}html[data-theme=dark] .v2-menu-links a{color:#a9aeb7}html[data-theme=dark] .v2-menu-links a:hover,html[data-theme=dark] .v2-menu-links a[aria-current=page]{background:#20242a;color:#f1f3f5}html[data-theme=dark] .v2-menu-resume{border-color:#30343a;color:#82acd2}html[data-theme=dark] .v2-menu-resume img{filter:invert(77%) sepia(18%) saturate(836%) hue-rotate(167deg) brightness(89%)}@media (max-width:840px){.v2-main{width:min(calc(100% - 2.5rem),43rem)}.v2-top-controls{right:1.25rem}.v2-cartoon-moon{top:3rem;left:-7rem;width:7.25rem;opacity:.72}}@media (max-width:620px){.v2-main{width:calc(100% - 2rem);padding-top:4rem}.v2-hero{grid-template-columns:1fr;gap:2rem}.v2-hero-aside{display:grid;grid-template-columns:minmax(0,1fr) 7.2rem;grid-gap:1.5rem;gap:1.5rem;padding-top:0}.v2-mini-contribution{width:100%}.v2-blog-page-header a,.v2-hero h1{font-size:1.55rem}.v2-blog-post{padding-top:4rem}.v2-blog-post-intro h1{font-size:1.7rem}.v2-job-statistics>div{grid-template-columns:1fr;gap:.15rem}.v2-tagline{font-size:.94rem}.v2-hero-portrait{width:7.2rem;height:7.2rem}.v2-portrait-hint{width:5.8rem}.v2-intro-contact-links{margin-top:3rem}.v2-section{margin-top:4rem}.v2-education-card{flex-direction:column;align-items:flex-start;gap:.65rem}.v2-experience-topline{grid-template-columns:2.75rem minmax(0,1fr)}.v2-experience-logo{width:2.75rem;height:2.75rem}.v2-experience-topline time{grid-column:2;text-align:left}.v2-experience-card>.v2-tags{margin-left:3.65rem}.v2-project-grid{grid-template-columns:1fr}.v2-project-footer{align-items:flex-start;flex-direction:column-reverse}.v2-project-tech{justify-content:flex-start}.v2-top-controls{top:1rem;right:1rem}.v2-menu-bar{top:1rem;left:.75rem}.v2-audio-player{right:0;left:auto}.v2-footer{margin-top:4rem;padding-bottom:1.5rem}.v2-cartoon-moon{top:2rem;left:-3.75rem;width:4.75rem;opacity:.5}}@media (max-width:440px){.v2-hero{grid-template-columns:1fr}.v2-hero-aside{display:flex;align-items:flex-start;gap:2rem}.v2-hero-portrait{margin-top:.5rem;justify-self:start}.v2-intro-contact-links{margin-top:4.25rem}.v2-experience-card{padding:1rem}.v2-experience-card>.v2-tags{margin-left:0}.v2-project-copy{padding-right:.35rem;padding-left:.35rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{transition-duration:.01ms!important;animation:none!important}}