:root{color-scheme:light dark;--paper:light-dark(#faf9f5,#151a1b);--white:light-dark(#fff,#202729);--ink:light-dark(#172729,#edf3ef);--muted:light-dark(#536665,#a7b9b4);--line:light-dark(#dce3db,#36443f);--green:light-dark(#286658,#98cbb6);--pale:light-dark(#eef2e9,#25332b);--button:light-dark(#224c43,#b7ddca);--button-text:light-dark(#fff,#152820);--night:light-dark(#17283c,#1f344d);--night-text:light-dark(#dae8f7,#e1edfa);--garden:light-dark(#e4edd8,#31452e);--garden-text:light-dark(#365538,#d5e9c5);--radius:10px}*,:before,:after{box-sizing:border-box}body,h1,h2,h3,p,ul,ol{margin:0}img,svg{max-width:100%;display:block}button,input,textarea{font:inherit}html{scroll-behavior:smooth;scroll-padding-top:24px}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.6}h1,h2,h3{color:var(--ink);letter-spacing:-.04em;font-family:inherit;font-weight:500;line-height:1.17}h1{font-size:clamp(32px,5.3vw,56px)}h2{font-size:27px}h3{font-size:21px}p{color:var(--muted)}p+p{margin-top:1em}strong{font-weight:500}em{color:var(--green);font-style:normal}a{color:inherit;text-decoration:none}a:hover{text-underline-offset:4px;text-decoration:underline}a:focus-visible,summary:focus-visible{outline:2px solid var(--green);outline-offset:5px;border-radius:3px}::selection{color:var(--ink);background:var(--garden)}[id]{scroll-margin-top:28px}.shell{width:min(916px,100% - 84px);margin-inline:auto}.icon{flex:none;width:17px;height:17px}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:22px;padding-block:26px;display:flex}.wordmark{color:var(--ink);letter-spacing:-1.4px;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:24px;font-weight:500;display:inline-flex}.wordmark.personal{letter-spacing:-.045em;font-family:inherit;font-size:22px}.brand-dot{color:var(--green)}.desktop-nav{color:var(--muted);flex-wrap:wrap;align-items:center;gap:16px;font-size:13px;display:flex}.desktop-nav a[aria-current]{color:var(--green)}.skip-link{z-index:20;background:var(--white);padding:12px 20px;position:absolute;top:-100px;left:16px}.skip-link:focus{top:16px}main:focus{outline:none}.home-page{font-size:15px}.hero{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:center;gap:48px;padding-block:62px 48px;display:grid}.hero h1{margin:18px 0 23px;line-height:1.07}.eyebrow{letter-spacing:.1em;color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:500;line-height:1.6}.intro{max-width:470px;font-size:15px}.actions{flex-wrap:wrap;align-items:center;gap:20px;margin-top:25px;display:flex}.button{background:var(--button);color:var(--button-text);border:1px solid var(--button);border-radius:6px;align-items:center;gap:12px;padding:10px 16px;font-size:13px;font-weight:400;display:inline-flex}.button:hover{filter:brightness(.96);text-decoration:none}.button.secondary{color:var(--green);border-color:var(--line);background:0 0}.button.secondary:hover{background:var(--pale)}.text-link{color:var(--green);align-items:center;gap:8px;font-size:13px;font-weight:500;display:inline-flex}.home-page .text-link{font-size:12px}.home-page .hero .actions>.text-link,.home-page .personal-hero .actions>.text-link,.home-page .personal-hero .button,.home-page .card-body>.text-link,.home-page .personal-apps .app-row>.text-link,.home-page .about-band .link-group>.text-link:first-child,.home-page .section-heading>a[href="/resume/"]{font-size:15px}.hero-aside{background:var(--pale);border-radius:10px;padding:25px}.aside-item{align-items:center;gap:12px;margin-top:25px;display:flex}.aside-item>div{min-width:0}.aside-item strong{letter-spacing:-.02em;align-items:center;gap:6px;font-size:14px;display:flex}.aside-item strong .icon{width:12px;height:12px}.aside-item div>span{color:var(--muted);margin-top:3px;font-size:12px;line-height:1.45;display:block}.aside-item:hover{text-decoration:none}.aside-item:hover strong{text-underline-offset:4px;text-decoration:underline}.hero-aside>.text-link{margin-top:18px}.small-icon{border-radius:8px;flex:none;place-items:center;width:36px;height:36px;display:grid}.sky{background:var(--night);color:var(--night-text)}.garden{background:var(--garden);color:var(--garden-text)}.section{padding-bottom:40px}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:22px;display:flex}.section-heading h2{font-size:24px}.section-heading>p{font-size:12px}.two-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;display:grid}.three-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;display:grid}.project-card{border:1px solid var(--line);background:var(--white);border-radius:10px;overflow:hidden}.app-art{justify-content:center;align-items:center;gap:16px;height:116px;display:flex}.app-art .icon{width:27px;height:27px}.app-art span{text-transform:uppercase;letter-spacing:.13em;font-size:10px}.card-body{padding:22px 24px}.card-body h3{letter-spacing:-.035em;font-size:21px}.card-body>p:not(.eyebrow){margin-top:10px;font-size:15px;line-height:1.6}.card-body>.text-link{margin-top:18px}.card-body>.eyebrow{margin-bottom:10px}.home-page .card-body>p{min-height:62px;font-size:13px}.app-heading{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.status{color:var(--green);white-space:nowrap;font-size:11px;font-weight:400}.home-page .status{font-size:10px}.work-cards{border-top:1px solid var(--line);padding-top:23px}.work-card h3{margin:10px 0;font-size:21px;line-height:1.3}.work-card p{font-size:15px}.work-card>.text-link{margin-top:18px}.home-page .work-card .eyebrow{letter-spacing:.08em;font-size:10px}.home-page .work-card h3{font-size:17px}.home-page .work-card p{font-size:12px}.investigation{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:14px;margin-top:22px;padding-top:18px;display:flex}.investigation .eyebrow{letter-spacing:.07em;font-size:11px}.investigation strong{color:var(--green);font-size:13px}.investigation:hover{text-decoration:none}.investigation:hover strong{text-underline-offset:4px;text-decoration:underline}.about-band{border-top:1px solid var(--line);grid-template-columns:1fr 1.6fr;gap:34px;padding-block:30px 38px;display:grid}.about-band h2{margin-top:12px;font-size:32px}.about-band p{font-size:13px}.about-band div>p+p{margin-top:12px}.link-group{flex-wrap:wrap;align-items:center;gap:0 20px;margin-top:18px;display:flex}.personal-hero{padding-block:54px 42px}.personal-hero h1{margin:21px 0;font-size:clamp(40px,5.7vw,62px);line-height:1.02}.personal-intro{max-width:570px;font-size:17px;line-height:1.6}.availability{color:var(--green);align-items:center;gap:8px;margin-top:20px;font-size:12px;display:inline-flex}.availability:before{content:"";background:var(--green);border-radius:50%;flex:none;width:6px;height:6px}.personal-about{border-top:1px solid var(--line);grid-template-columns:1fr 1.55fr;gap:40px;padding-block:29px 36px;display:grid}.personal-about h2{max-width:250px;font-size:27px}.personal-about p{font-size:13px}.personal-about p+p{margin-top:13px}.personal-apps{padding-bottom:35px}.app-row{border-top:1px solid var(--line);align-items:center;gap:15px;padding-block:19px;display:flex}.app-row>div{flex:1;min-width:0}.app-row h3{font-size:18px}.app-row p{margin-top:6px;font-size:12px}.app-row>.text-link{flex:none}.workbench-list{border-top:1px solid var(--line);gap:24px;padding-top:18px}.bench-entry h3{align-items:center;gap:7px;margin:9px 0;font-size:18px;display:flex}.bench-entry p{font-size:12px}.bench-entry .eyebrow{letter-spacing:.08em;font-size:10px}.bench-entry:hover{text-decoration:none}.bench-entry:hover h3{text-underline-offset:4px;text-decoration:underline}.page-intro{padding-block:54px 38px}.page-intro h1{max-width:780px;margin:18px 0 23px;font-size:clamp(32px,4.8vw,50px);line-height:1.07}.lead{max-width:690px;font-size:18px;line-height:1.6}.page-content{padding-bottom:54px}.reading-layout{grid-template-columns:minmax(0,1fr) 240px;gap:48px;display:grid}.prose{max-width:650px}.prose h2{margin-block:30px 15px;font-size:26px}.prose h2:first-child{margin-top:0}.prose h3{margin-block:25px 12px;font-size:21px}.prose ul,.prose ol{color:var(--muted);margin-block:16px 22px;padding-left:22px}.prose li+li{margin-top:8px}.prose strong{color:var(--ink)}.prose a{color:var(--green);text-underline-offset:3px;text-decoration:underline}.prose .button{color:var(--button-text);text-decoration:none}.prose .button.secondary{color:var(--green)}.side-panel{border-top:1px solid var(--line);align-self:start;padding-top:20px}.side-panel h2{margin-block:12px;font-size:21px}.side-panel p{font-size:15px}.side-panel nav{color:var(--green);gap:12px;margin-top:20px;font-size:13px;display:grid}.side-panel section+section{border-top:1px solid var(--line);margin-top:30px;padding-top:20px}.full-card{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:24px}.full-card h2{margin-block:12px 15px;font-size:25px}.full-card h3{margin-block:12px;font-size:21px}.full-card p{font-size:15px}.full-card+.full-card{margin-top:22px}.two-grid .full-card+.full-card{margin-top:0}.note{background:var(--pale);border-radius:10px;margin-block:28px;padding:20px 24px}.note p{font-size:15px}.note a{color:var(--green);text-underline-offset:3px;text-decoration:underline}.faq{border-top:1px solid var(--line)}.faq details{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;color:var(--ink);padding:20px 24px 20px 0;font-size:17px;font-weight:500}.faq details p{padding-bottom:22px;font-size:15px}.resume-section{margin-bottom:32px}.resume-section>h2{margin-bottom:20px;font-size:26px}.experience{border-top:1px solid var(--line);break-inside:avoid;padding-block:22px}.experience h3{margin:0 0 8px;font-size:21px}.experience .role{color:var(--ink);font-size:15px;font-weight:500}.experience .dates{margin:3px 0 15px;font-size:13px}.experience p,.experience ul{font-size:15px}.skill-list{flex-wrap:wrap;gap:9px;margin:22px 0 30px;padding:0;list-style:none;display:flex}.skill-list li{background:var(--pale);border-radius:5px;padding:6px 11px;font-size:13px}.legal-date{margin-bottom:26px;font-size:13px}.site-footer{border-top:1px solid var(--line);background:var(--pale);padding-block:24px 30px}.footer-grid{justify-content:space-between;align-items:start;gap:25px;display:flex}.footer-identity .wordmark{font-size:21px}.footer-identity p{margin-top:8px;font-size:11px;line-height:1.6}.footer-links{flex-wrap:wrap;justify-content:flex-end;gap:12px 18px;max-width:380px;padding-top:6px;display:flex}.footer-links a{color:var(--muted);padding-block:2px;font-size:12px}.small{font-size:13px}.small a{color:var(--green)}.breadcrumb{color:var(--green);margin-top:26px;font-size:13px;display:inline-block}.project-preview{border:1px solid var(--line);border-radius:10px;margin-bottom:32px;overflow:hidden}.project-preview img{width:100%;height:auto}.project-preview figcaption{background:var(--white);color:var(--muted);padding:12px 20px;font-size:12px}@media (width<=800px){.hero{gap:25px}.hero-aside{padding:20px}.reading-layout{grid-template-columns:minmax(0,1fr) 210px;gap:30px}.desktop-nav{gap:16px}.site-header{flex-wrap:wrap}}@media (width<=600px){.shell{width:calc(100% - 44px)}.site-header{gap:12px;padding-block:21px}.desktop-nav{gap:16px;width:100%;font-size:12px}.hero{grid-template-columns:1fr;gap:27px;padding-block:36px}.hero h1{font-size:38px}.hero-aside{padding:20px}.aside-item{margin-top:18px}.section{padding-bottom:32px}.two-grid{grid-template-columns:1fr;gap:18px}.app-art{height:90px}.card-body{padding:20px}.home-page .card-body>p{min-height:0}.three-grid{grid-template-columns:1fr;gap:22px}.about-band{grid-template-columns:1fr;gap:20px}.footer-grid{flex-direction:column;gap:16px}.footer-links{justify-content:flex-start}.personal-hero{padding-block:36px}.personal-hero h1{font-size:44px}.personal-intro{font-size:15px}.personal-about{grid-template-columns:1fr;gap:19px}.personal-about h2{max-width:none}.personal-apps{padding-bottom:30px}.app-row{flex-wrap:wrap}.app-row>.text-link{margin-left:51px}.investigation{gap:8px}.investigation .eyebrow{width:100%}.reading-layout{grid-template-columns:1fr;gap:30px}.page-intro{padding-block:36px 30px}.page-content{padding-bottom:38px}.full-card{padding:20px}}@media (pointer:coarse){.desktop-nav a,.text-link,.footer-links a{align-items:center;min-height:44px;display:inline-flex}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{:root{color-scheme:light}body{color:#000;background:#fff;font-size:10pt}.site-header,.site-footer,.skip-link,.side-panel,.actions,.availability{display:none}.shell{width:100%}.page-intro{padding:0 0 20px}.page-intro h1{font-size:28pt}.lead{font-size:11pt}.reading-layout{display:block}.prose{max-width:none}.page-content{padding:0}a{color:#000}.experience{padding-block:14px}.experience p,.experience ul{font-size:10pt}}
