@font-face{font-family:Lora;font-style:normal;font-weight:400;font-display:swap;src:local("Lora Regular"),local("Lora-Regular"),url(/fonts/lora-regular.woff2) format("woff2")}@font-face{font-family:Lora;font-style:italic;font-weight:400;font-display:swap;src:local("Lora Italic"),local("Lora-Italic"),url(/fonts/lora-italic.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:local("Inter"),url(/fonts/inter.woff2) format("woff2")}:root{--color-bg: #f7f7f5;--color-text: #66666a;--color-heading: #222228;--color-surface-dark: #1c1c20;--color-surface-darker: #161619;--color-white: #ffffff;--color-border: #222228;--color-muted: rgba(102, 102, 106, .9);--color-muted-light: rgba(247, 247, 245, .75);--font-heading: "Lora", Georgia, serif;--font-body: "Inter", system-ui, -apple-system, sans-serif;--font-ui: "Inter", system-ui, -apple-system, sans-serif;--space-xs: .5rem;--space-sm: 1rem;--space-md: 2rem;--space-lg: 3.75rem;--space-xl: 5.625rem;--container-max: 1035px;--container-pad: 20px;--border-thin: 1px solid var(--color-border);--transition: .2s ease}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,svg{max-width:100%;height:auto;display:block}ul,ol{list-style:none;padding:0;margin:0}a{color:inherit;text-decoration:none;transition:color var(--transition),opacity var(--transition)}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}::selection{background:var(--color-heading);color:var(--color-bg)}:focus-visible{outline:2px solid var(--color-heading);outline-offset:3px}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--color-heading);font-weight:400;margin:0 0 .5rem}h1{font-size:27px;line-height:39px;letter-spacing:-.75px}h2{font-size:23.5px;line-height:34.5px}h3{font-size:18px;line-height:29px;font-style:italic}h4{font-size:16.5px;line-height:27.5px;font-style:italic}h5{font-size:14px;line-height:20px}h6{font-size:12px;line-height:23px}p{margin:0 0 .625rem}p:last-child{margin-bottom:0}.container{width:100%;max-width:var(--container-max);margin:0 auto;padding:0 var(--container-pad)}.section{padding:var(--space-xl) 0;border-bottom:var(--border-thin)}.section:first-of-type{border-top:0}.section--dark{background-color:var(--color-heading);border-bottom:0}.section--dark,.section--dark .eyebrow,.section--dark p,.section--dark h2,.section--dark h3,.section--dark h4{color:var(--color-bg)}.section--dark-divider{border-bottom:var(--border-thin)}.section-header{max-width:560px;margin:0 auto var(--space-lg);text-align:center}.section-header--light h2,.section-header--light p{color:var(--color-bg)}.eyebrow{font-family:var(--font-body);color:var(--color-text);font-size:15px;margin:0 0 .3125rem}.eyebrow--light{color:var(--color-bg)}.button{display:inline-flex;align-items:center;justify-content:center;min-width:200px;height:48px;padding:0 1.25rem;background-color:var(--color-heading);color:var(--color-bg);font-family:var(--font-body);font-size:14px;border:1px solid transparent;text-align:center;transition:background-color var(--transition),color var(--transition),border-color var(--transition)}.button:hover,.button:focus-visible{background-color:transparent;color:var(--color-heading);border-color:var(--color-heading)}.button--inverse{background-color:var(--color-bg);color:var(--color-heading)}.button--inverse:hover,.button--inverse:focus-visible{background-color:transparent;color:var(--color-bg);border-color:var(--color-bg)}.button--ghost{background-color:transparent;color:var(--color-bg);border-color:var(--color-bg)}.button--ghost:hover,.button--ghost:focus-visible{background-color:var(--color-bg);color:var(--color-heading)}.site-header{position:sticky;top:0;z-index:50;background-color:var(--color-bg);border-bottom:var(--border-thin)}.nav-container{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);height:110px}.brand{display:inline-flex;align-items:center}.brand img{height:80px;width:auto;transition:height .3s ease,transform .35s cubic-bezier(.34,1.4,.64,1),opacity .25s ease}.brand:hover img,.brand:focus-visible img{transform:scale(1.05) rotate(-1.5deg);opacity:.88}#scrollprog{position:absolute;left:0;bottom:-1px;height:1.5px;width:100%;background-color:var(--color-heading);transform:scaleX(0);transform-origin:left}.nav-menu{position:relative;display:flex;align-items:center;gap:var(--space-md);font-family:var(--font-ui);font-size:13.75px;font-weight:500}#navu{position:absolute;bottom:-6px;left:0;width:0;height:1.5px;background-color:var(--color-heading);opacity:0;transition:left .3s cubic-bezier(.22,.61,.36,1),width .3s cubic-bezier(.22,.61,.36,1),opacity .2s ease}.nav-menu a{color:var(--color-heading)}.nav-menu a:hover{color:var(--color-muted)}.nav-toggle{display:none;width:36px;height:36px;padding:6px;flex-direction:column;justify-content:space-between}.nav-toggle span{display:block;height:2px;background-color:var(--color-heading);transition:transform .25s ease,opacity .25s ease}.nav-toggle[aria-expanded=true] span:nth-child(1){transform:translateY(8px) rotate(45deg)}.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}.section--hero{position:relative;overflow:hidden;padding:110px 0 92px;border-bottom:var(--border-thin)}.hero{position:relative;max-width:720px;margin:0 auto;text-align:center}.hero__pitch{font-size:36px;line-height:48px;letter-spacing:-.5px;margin:var(--space-sm) 0 14px}.hero__sub{font-family:var(--font-body);font-size:15px;color:var(--color-text);margin:0 0 34px;text-wrap:pretty}#hero-art{position:absolute;inset:0;pointer-events:none}.hero-scrim{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 42% 48% at 50% 50%,var(--color-bg) 40%,rgba(247,247,245,0) 78%)}#hero-art>div{position:absolute;inset:0;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}#hero-art svg{width:100%;height:100%;max-width:none;display:block}.js-ready .hline{stroke-dasharray:1700;stroke-dashoffset:1700;transition:stroke-dashoffset 1.6s cubic-bezier(.22,.61,.36,1) .15s}.js-ready .drawn .hline{stroke-dashoffset:0}.js-ready .hnode{opacity:0;transition:opacity .7s ease 1.1s}.js-ready .drawn .hnode{opacity:1}@keyframes dashflow{to{stroke-dashoffset:-412px}}.signal{stroke-dasharray:12 400;animation:dashflow 11s linear infinite}#scrollhint{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;transition:opacity .4s ease}#scrollhint span{font-size:10.5px;text-transform:uppercase;letter-spacing:1.5px;color:#66666acc}.scrollhint__line{width:1px;height:34px;background:linear-gradient(to bottom,#2222288c,#22222800)}.about{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg);align-items:center}.about__frame{overflow:hidden;max-width:451px}.about__portrait{width:100%;filter:grayscale(1);transform:scale(1.07)}.about__copy h2{color:var(--color-heading);margin-top:.625rem}.signature-wrap{display:block;width:196px;margin:.9375rem 0 var(--space-md)}.signature{width:196px;height:auto}.employers{background-color:var(--color-surface-dark);padding:55px 0}.employers__row{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.employers__label{flex:0 0 20%;margin:0;color:var(--color-bg);border:0;padding:0;font-family:var(--font-body);font-size:13px;font-weight:500}.employers__logos{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-lg);flex-wrap:wrap}.employers__logos img{width:auto;height:auto;object-fit:contain;filter:brightness(0) invert(1);opacity:.55;transition:opacity .25s ease,transform .25s ease}.elogo:hover img,.elogo:focus-within img{opacity:1;transform:translateY(-2px)}.employers__logos li:nth-child(1) img{max-height:38px;max-width:100px}.employers__logos li:nth-child(2) img{max-height:32px;max-width:100px}.employers__logos li:nth-child(3) img{max-height:36px;max-width:130px}.employers__logos li:nth-child(4) img{max-height:32px;max-width:115px}.credentials-compact{display:grid;grid-template-columns:180px 1fr;column-gap:var(--space-md);row-gap:24px;max-width:800px;margin:0 auto}.edu-rule{height:1px;background-color:#22222866;max-width:800px;margin:0 auto 40px}.deg-list{display:flex;flex-direction:column;gap:14px}.deg{position:relative;padding-left:14px}.deg:before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:1px;background-color:var(--color-heading);transform:scaleY(0);transform-origin:top;transition:transform .3s cubic-bezier(.22,.61,.36,1)}.deg:hover:before,.deg:focus-within:before{transform:scaleY(1)}.deg__name{font-family:var(--font-heading);font-size:18px;line-height:26px;color:var(--color-heading)}.deg__meta{font-size:13px;margin-top:2px}.deg__meta span{color:var(--color-text);transition:color .25s ease}.deg:hover .deg__meta span,.deg:focus-within .deg__meta span{color:var(--color-heading)}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid rgba(34,34,40,.4);padding:4px 12px;font-family:var(--font-body);font-size:11.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--color-text);transition:background-color .2s ease,color .2s ease,border-color .2s ease}.chip:hover{background-color:var(--color-heading);color:var(--color-bg);border-color:var(--color-heading)}.credentials-compact dt{font-family:var(--font-heading);font-style:italic;color:var(--color-heading);font-size:16.5px;line-height:27.5px;margin:0}.credentials-compact dd{margin:0;align-self:center}.impact{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-md)}.impact__card{position:relative;height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(34,34,40,.18);background-color:var(--color-bg);padding:30px 26px;transition:border-color .25s ease,transform .25s ease}.impact__card:hover{border-color:var(--color-heading);transform:translateY(-3px)}.impact__kicker{font-family:var(--font-body);font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#66666ad9;margin-bottom:14px}.impact__metric{font-family:var(--font-heading);font-style:normal;font-size:27px;line-height:35px;color:var(--color-heading);margin:0 0 var(--space-xs)}.impact__metric [data-count]{font-variant-numeric:tabular-nums}.impact__card p{font-family:var(--font-body);font-size:15px;color:var(--color-text);margin:0;flex:1}.impact__attribution{display:block;margin-top:14px;font-family:var(--font-body);font-size:12px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px}.contact{position:relative;overflow:hidden}.contact__inner{position:relative}.contact__grid{position:absolute;inset:0;pointer-events:none;background-image:repeating-linear-gradient(to right,rgba(247,247,245,.035) 0 1px,transparent 1px 80px),repeating-linear-gradient(to bottom,rgba(247,247,245,.035) 0 1px,transparent 1px 80px)}#contactlight{position:absolute;top:0;left:0;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(247,247,245,.05),transparent 65%);opacity:0;transition:transform .5s cubic-bezier(.22,.61,.36,1),opacity .6s ease;pointer-events:none}.contact-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);justify-content:center}.site-footer{background-color:var(--color-bg);padding:var(--space-md) 0;border-top:var(--border-thin)}.site-footer__inner{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.brand--footer img{height:60px}.socials{display:flex;gap:var(--space-sm)}.socials a{color:var(--color-heading);display:inline-flex;padding:6px;transition:opacity var(--transition)}.socials a:hover{opacity:.7}.site-footer__notice{border-top:var(--border-thin);padding-top:var(--space-sm);font-size:12.5px}.site-footer__notice a{text-decoration:underline}.footer__trademark{margin-top:var(--space-sm);font-family:var(--font-body);font-size:.75em;line-height:1.5;color:var(--color-text);opacity:.65}.js-ready .section{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}.js-ready .section.is-visible{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.js-ready .section{opacity:1;transform:none;transition:none}}.nav-container{transition:height .3s ease}.site-header.is-scrolled .nav-container{height:72px}.site-header.is-scrolled .brand img{height:52px}@media(max-width:768px){.nav-toggle{display:flex}.nav-menu{position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background-color:var(--color-heading);padding:var(--space-sm) var(--container-pad);transform:translateY(-10px);opacity:0;pointer-events:none;transition:opacity var(--transition),transform var(--transition)}.nav-menu.is-open{transform:translateY(0);opacity:1;pointer-events:auto}.nav-menu a{color:var(--color-bg);padding:var(--space-sm) 0;border-bottom:1px solid rgba(255,255,255,.1)}.nav-menu a:last-child{border-bottom:0}#navu{display:none}.about{grid-template-columns:1fr;gap:var(--space-md)}.about__frame{max-width:60%;margin:0 auto}.impact{grid-template-columns:repeat(2,1fr)}.employers__row{flex-direction:column;align-items:flex-start}.employers__label{flex-basis:auto}.employers__logos{width:100%;justify-content:space-around}.section{padding:var(--space-lg) 0}.section--hero{padding-bottom:100px}}@media(max-width:480px){.nav-container{height:80px}.brand img{height:56px}.about__frame{max-width:80%}.impact{grid-template-columns:1fr;gap:var(--space-md)}.credentials-compact{grid-template-columns:1fr;row-gap:var(--space-xs)}.credentials-compact dd{margin-bottom:var(--space-sm)}.button{min-width:0;width:100%}.contact-actions{flex-direction:column;align-items:stretch}h1{font-size:24px;line-height:34px}h2{font-size:21px;line-height:30px}.hero__pitch{font-size:26px;line-height:34px}}.explore-tabs{position:relative;display:flex;gap:var(--space-md);border-bottom:1px solid rgba(34,34,40,.25);margin:0 auto var(--space-lg);max-width:800px;justify-content:center}.explore-tab{padding:14px 24px;font-family:var(--font-ui);font-size:13.75px;font-weight:500;color:var(--color-text);border-bottom:1.5px solid transparent;margin-bottom:-1px;transition:color var(--transition),border-color var(--transition)}.explore-tab:hover{color:var(--color-heading)}.explore-tab.is-active{color:var(--color-heading);border-bottom-color:var(--color-heading)}.js-ready .explore-tab.is-active{border-bottom-color:transparent}#tabind{position:absolute;bottom:-1px;left:0;width:0;height:1.5px;background-color:var(--color-heading);transition:left .3s cubic-bezier(.22,.61,.36,1),width .3s cubic-bezier(.22,.61,.36,1)}.js-ready .explore-panel[hidden]{display:none}.writing-list{display:flex;flex-direction:column;max-width:800px;margin:0 auto}.writing-item{padding:var(--space-md) 0;border-bottom:var(--border-thin);display:grid;grid-template-columns:1fr;gap:.5rem}.writing-item:last-child{border-bottom:0}[data-tab-panel=writing] .writing-list{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}[data-tab-panel=writing] .writing-item{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:var(--space-xs);height:100%;border-bottom:1px solid rgba(34,34,40,.25);border:1px solid rgba(34,34,40,.25);background-color:var(--color-bg);padding:var(--space-md);transition:border-color .25s ease,transform .25s ease}[data-tab-panel=writing] .writing-item:hover{border-color:var(--color-heading);transform:translateY(-3px)}[data-tab-panel=writing] .writing-item__desc{flex:1}.writing-item__foot{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-body);font-size:12px;color:var(--color-text);margin-top:6px}.writing-item__foot .arr{color:var(--color-heading)}.writing-item__category{font-family:var(--font-body);font-size:12px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px}.writing-item__title{font-family:var(--font-heading);font-size:18px;line-height:1.45;font-style:italic;color:var(--color-heading);margin:0}.writing-item__title a{color:inherit}.writing-item__title a:hover{color:var(--color-muted)}.writing-item__desc{margin:0;font-size:15px;color:var(--color-text)}.writing-item__meta{font-family:var(--font-body);font-size:12px;color:var(--color-text)}.explore-more{margin-top:var(--space-md);text-align:center;font-family:var(--font-body);font-size:14px}.explore-more a{color:var(--color-heading);border-bottom:1px solid var(--color-heading);padding-bottom:2px}.explore-more a:hover{opacity:.7}.projects-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);max-width:800px;margin:0 auto}.project-card{position:relative;overflow:hidden;background-color:var(--color-bg);border:1px solid rgba(34,34,40,.25);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs);color:inherit;transition:border-color .25s ease,transform .25s ease}.project-card:hover{border-color:var(--color-heading);transform:translateY(-3px)}.project-card__circuit{position:absolute;right:-10px;bottom:-10px;width:120px;height:120px;opacity:.08;pointer-events:none}.project-card__icon{display:flex;align-items:center;gap:.4rem;font-family:var(--font-body);font-size:12px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px}.project-card__icon svg{width:16px;height:16px}.project-card__name{font-family:var(--font-heading);font-size:18px;font-style:italic;color:var(--color-heading);margin:0}.project-card__desc{font-size:15px;color:var(--color-text);margin:0}.project-card__tech{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:var(--space-xs)}.project-card__tech span{border:var(--border-thin);padding:2px 8px;font-family:var(--font-body);font-size:11px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px}.blog-listing{max-width:800px;margin:0 auto}.category-filters{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin:0 auto var(--space-lg)}.category-filters button{padding:6px 12px;font-family:var(--font-body);font-size:12px;color:var(--color-text);border:var(--border-thin);text-transform:uppercase;letter-spacing:.5px;transition:background-color var(--transition),color var(--transition)}.category-filters button:hover{color:var(--color-heading)}.category-filters button.is-active{background-color:var(--color-heading);color:var(--color-bg)}.writing-item.is-hidden{display:none}.blog-post{max-width:680px;margin:0 auto;padding:var(--space-xl) var(--container-pad)}.blog-post__back{display:inline-block;font-family:var(--font-body);font-size:13px;color:var(--color-text);margin-bottom:var(--space-md)}.blog-post__back:hover{color:var(--color-heading)}.blog-post__title{font-family:var(--font-heading);font-size:32px;line-height:1.25;letter-spacing:-.5px;font-style:normal;color:var(--color-heading);margin:0 0 var(--space-sm)}.blog-post__meta{font-family:var(--font-body);font-size:12px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-md);display:flex;flex-wrap:wrap;gap:var(--space-sm)}.blog-post__body{font-size:15px;line-height:1.7}.blog-post__body h2,.blog-post__body h3{margin-top:var(--space-md)}.blog-post__body p{margin:0 0 1rem}.blog-post__body img{width:100%;margin:var(--space-md) 0}.blog-post__body a{color:var(--color-heading);border-bottom:1px solid var(--color-text)}.blog-post__body code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace;font-size:.92em;background-color:var(--color-white);border:var(--border-thin);padding:1px 5px}.blog-post__body pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace;background-color:var(--color-surface-dark);color:var(--color-bg);padding:var(--space-sm) var(--space-md);overflow-x:auto;font-size:13px;line-height:1.5;margin:var(--space-md) 0}.blog-post__body pre code{background:none;border:0;padding:0;color:inherit}.post-share{margin-top:var(--space-md);padding-top:var(--space-md);border-top:var(--border-thin)}.post-share__label{font-family:var(--font-body);font-size:12px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px;margin:0 0 var(--space-sm)}.post-share__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.post-share__link{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-body);font-size:13px;color:var(--color-text);padding:0;transition:color var(--transition)}.post-share__link svg{width:20px;height:20px;flex:0 0 20px}.post-share__link:hover,.post-share__link:focus-visible{color:var(--color-heading)}.post-share__copy{background:none;border:0;cursor:pointer}.author-bio{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-md);padding:1.5rem;background-color:var(--color-bg);border:var(--border-thin)}.author-bio__portrait{width:72px;height:72px;flex:0 0 72px;border-radius:50%;object-fit:cover;filter:grayscale(1)}.author-bio__text{flex:1;min-width:0}.author-bio__name{font-family:var(--font-heading);font-size:16.5px;color:var(--color-heading);margin:0 0 .25rem}.author-bio__one-liner{font-family:var(--font-body);font-size:14px;line-height:1.5;color:var(--color-text);margin:0 0 .5rem}.author-bio__link{display:inline-block;font-family:var(--font-body);font-size:13px;color:var(--color-heading)}.author-bio__link:hover,.author-bio__link:focus-visible{text-decoration:underline}.post-subscribe,.related-articles{margin-top:var(--space-md);padding-top:var(--space-md);border-top:var(--border-thin)}.related-articles__label{font-family:var(--font-body);font-size:12px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px;margin:0 0 var(--space-sm)}.related-articles__list{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}.related-articles .writing-item{border:var(--border-thin);border-bottom:var(--border-thin);padding:var(--space-md)}@media(max-width:480px){.projects-grid,[data-tab-panel=writing] .writing-list{grid-template-columns:1fr}.blog-post__title{font-size:26px;line-height:1.2}.blog-post{padding:var(--space-lg) var(--container-pad)}.author-bio{flex-direction:column;text-align:center}.author-bio__portrait{margin:0 auto}.related-articles__list{grid-template-columns:1fr}}html.is-modal-open,html.is-modal-open body{overflow:hidden}.resume-modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--container-pad)}.resume-modal[hidden]{display:none}.resume-modal__backdrop{position:absolute;inset:0;background:#00000080}.resume-modal__panel{position:relative;width:100%;max-width:440px;background-color:var(--color-bg);border:1px solid var(--color-border);padding:var(--space-md);max-height:calc(100vh - 2 * var(--container-pad));overflow-y:auto}.resume-modal__close{position:absolute;top:.5rem;right:.75rem;width:32px;height:32px;font-size:22px;line-height:1;color:var(--color-text);transition:color var(--transition)}.resume-modal__close:hover,.resume-modal__close:focus-visible{color:var(--color-heading)}.resume-modal__title{font-family:var(--font-heading);font-size:20px;line-height:1.3;color:var(--color-heading);margin:0 0 .5rem;font-style:normal}.resume-modal__sub{font-family:var(--font-body);font-size:14px;line-height:1.5;color:var(--color-text);margin:0 0 var(--space-sm)}.resume-form{display:block}.resume-form__label{display:block;font-family:var(--font-body);font-size:12px;color:var(--color-text);text-transform:uppercase;letter-spacing:.5px;margin:0 0 .25rem}.resume-form__input{display:block;width:100%;margin-bottom:1rem;padding:.75rem 1rem;font-family:var(--font-body);font-size:14px;color:var(--color-heading);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:0;transition:border-color var(--transition);-webkit-appearance:none;appearance:none}.resume-form__input:focus{outline:none;border-color:var(--color-heading)}.resume-form__textarea{resize:vertical;min-height:80px;font-family:var(--font-body)}.resume-form__submit{width:100%;margin-top:.25rem}.resume-form__submit:disabled{opacity:.6;cursor:not-allowed}.resume-form__captcha{margin:.5rem 0 1rem;min-height:65px}.resume-form__error{font-family:var(--font-body);font-size:13px;color:#b00020;margin:.75rem 0 0}.resume-form__error a{color:inherit;text-decoration:underline}.resume-modal__success{text-align:center;padding:var(--space-sm) 0}.resume-modal__check{font-size:48px;line-height:1;color:var(--color-heading);margin-bottom:var(--space-sm)}.post-tags{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin:.5rem 0 var(--space-md);padding:0;list-style:none}.post-tags__chip{font-family:var(--font-body);font-size:12.5px;color:var(--color-text);text-decoration:none}.post-tags__chip:hover,.post-tags__chip:focus-visible{color:var(--color-heading);text-decoration:underline}.js-ready [data-rv]{opacity:0;transform:translateY(18px);transition:opacity .65s cubic-bezier(.22,.61,.36,1) var(--d, 0s),transform .65s cubic-bezier(.22,.61,.36,1) var(--d, 0s)}.js-ready [data-rv=fade]{transform:none}.js-ready [data-rv=line]{transform:scaleX(0);transform-origin:left center;transition:transform .9s cubic-bezier(.22,.61,.36,1) var(--d, 0s),opacity .4s ease var(--d, 0s)}.js-ready [data-rv=wipe]{transform:none;transition:opacity .3s ease var(--d, 0s)}.js-ready [data-rv=wipe] img{clip-path:inset(-8px 100% -8px 0);transition:clip-path 1.1s cubic-bezier(.22,.61,.36,1) var(--d, 0s)}.js-ready [data-rv].rv-in{opacity:1;transform:translateY(0)}.js-ready [data-rv=line].rv-in{transform:scaleX(1)}.js-ready [data-rv=wipe].rv-in img{clip-path:inset(-8px 0 -8px 0)}@keyframes signOn{0%{clip-path:inset(-8px 100% -8px 0)}18%{clip-path:inset(-8px 76% -8px 0)}34%{clip-path:inset(-8px 62% -8px 0)}55%{clip-path:inset(-8px 34% -8px 0)}72%{clip-path:inset(-8px 22% -8px 0)}to{clip-path:inset(-8px 0 -8px 0)}}.js-ready [data-rv=wipe].signing img{animation:signOn 1.3s cubic-bezier(.4,.1,.4,.9) both}.abtn{gap:10px}.abtn .arr{display:inline-block;transition:transform .2s ease}.abtn:hover .arr,.abtn:focus-visible .arr{transform:translate(4px)}.icard .glow{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .35s ease;background:radial-gradient(230px circle at var(--gx, 50%) var(--gy, 50%),rgba(28,28,32,.06),transparent 70%)}.node{position:absolute;top:12px;right:12px;width:16px;height:16px;border:1px solid rgba(34,34,40,.3);display:flex;align-items:center;justify-content:center;transition:border-color .35s ease}.node-check{stroke-dasharray:12;stroke-dashoffset:12;transition:stroke-dashoffset .45s cubic-bezier(.22,.61,.36,1) .15s}.icard.done .node{border-color:var(--color-heading)}.icard.done .node-check{stroke-dashoffset:0}html:not(.js-ready) .node-check{stroke-dashoffset:0}@keyframes panelIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.js-ready .explore-panel.panel:not([hidden]){animation:panelIn .35s cubic-bezier(.22,.61,.36,1) both}.section-header--tight{margin-bottom:48px}@keyframes modalIn{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalOut{0%{opacity:1}to{opacity:0;transform:translateY(6px) scale(.98)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.resume-modal .mpanel{animation:modalIn .24s cubic-bezier(.22,.61,.36,1) both}.resume-modal .mback{animation:fadeIn .22s ease both}.resume-modal.closing .mpanel{animation:modalOut .16s ease both}.resume-modal.closing .mback{animation:fadeOut .16s ease both}@keyframes rowIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.resume-modal .mrow{animation:rowIn .4s cubic-bezier(.22,.61,.36,1) both}@keyframes flineIn{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.fline{height:1.5px;background-color:var(--color-heading);margin:-1px 0 1rem;transform-origin:left;animation:flineIn .55s cubic-bezier(.22,.61,.36,1) both}.mrow .resume-form__input{margin-bottom:0}.resume-form__submit{position:relative;overflow:hidden}.sendbar{position:absolute;left:0;bottom:0;height:2px;width:100%;background-color:var(--color-bg);transform:scaleX(0);transform-origin:left}@keyframes sendProg{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.resume-form__submit:disabled .sendbar{animation:sendProg .9s linear forwards}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js-ready [data-rv]{opacity:1;transform:none;transition:none}.js-ready [data-rv=wipe] img{clip-path:none;transition:none}.js-ready [data-rv=wipe].signing img{animation:none}.js-ready .hline{stroke-dashoffset:0;transition:none}.js-ready .hnode{opacity:1;transition:none}.signal{animation:none}.js-ready .explore-panel.panel:not([hidden]){animation:none}.resume-modal .mpanel,.resume-modal .mback,.resume-modal.closing .mpanel,.resume-modal.closing .mback,.resume-modal .mrow,.fline,.resume-form__submit:disabled .sendbar{animation:none}.resume-modal .mrow{opacity:1}.fline{transform:none}.node-check{stroke-dashoffset:0;transition:none}#hero-art>div{transition:none}}
