:root{--paper:#fbfbf9;--paper-2:#f2f2ee;--rule:#d9d9d2;--ink:#1a1c20;--ink-soft:#45484f;--muted:#6a6d74;--pencil:#2447c7;--pencil-lit:#9db4ff;--font:"Newsreader", Georgia, serif;--nav-h:64px;--max-w:1100px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{font-family:var(--font);background:var(--paper);color:var(--ink);font-size:1.1875rem;line-height:1.65}h1,h2,h3{letter-spacing:-.01em;font-weight:500;line-height:1.15}a{color:inherit;text-decoration:none}ul{list-style:none}:focus-visible{outline:2px solid var(--pencil);outline-offset:3px}section[id],header[id]{scroll-margin-top:var(--nav-h)}.container{max-width:var(--max-w);margin:0 auto;padding:0 2.5rem}.section{padding:6rem 0}.section-alt{background:var(--paper-2)}.section-heading{margin-bottom:1rem;font-size:clamp(2rem,4vw,2.75rem)}.section-intro{max-width:52ch;color:var(--ink-soft);margin-bottom:2.5rem}.nav{height:var(--nav-h);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule);z-index:100;background:#fbfbf9eb;justify-content:space-between;align-items:center;padding:0 2.5rem;display:flex;position:fixed;inset:0 0 auto}.nav-logo{letter-spacing:.02em;font-size:1.25rem;font-weight:600}.nav-links{gap:2.25rem;display:flex}.nav-links a{color:var(--ink-soft)}.nav-links a:hover{color:var(--pencil)}.nav-toggle{cursor:pointer;z-index:101;background:0 0;border:none;flex-direction:column;gap:5px;padding:8px;display:none}.nav-toggle-bar{background:var(--ink);width:22px;height:2px;transition:transform .25s,opacity .25s;display:block}.nav-toggle[aria-expanded=true] .nav-toggle-bar:first-child{transform:translateY(7px)rotate(45deg)}.nav-toggle[aria-expanded=true] .nav-toggle-bar:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] .nav-toggle-bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.btn{border:1px solid var(--ink);cursor:pointer;border-radius:2px;padding:.7rem 1.4rem;font-family:inherit;font-size:1.0625rem;font-weight:500;line-height:1.3;transition:background .2s,color .2s,border-color .2s;display:inline-block}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--pencil);border-color:var(--pencil)}.btn-secondary{color:var(--ink);background:0 0}.btn-secondary:hover{background:var(--ink);color:var(--paper)}.hero{padding:calc(var(--nav-h) + 6rem) 0 5rem}.hero-name{letter-spacing:-.025em;font-size:clamp(3rem,9vw,6.5rem);font-weight:500;line-height:1}.hero-role{max-width:44ch;color:var(--ink-soft);margin-top:1.5rem}.hero-role strong{color:var(--ink);font-weight:600}.hero-edit{max-width:26ch;margin:3.5rem 0 3rem;font-size:clamp(1.5rem,3vw,2.25rem);line-height:1.35;position:relative}.hero-edit del{color:var(--muted);background:linear-gradient(var(--pencil), var(--pencil)) no-repeat 0 58% / 100% .08em;text-decoration:none}.hero-edit ins{color:var(--pencil);font-style:italic;text-decoration:none}.hero-edit-note{color:var(--pencil);margin-top:.6rem;font-size:1rem;font-style:italic;display:block}@media (width>=900px){.hero-edit-note{white-space:nowrap;margin:0 0 0 1.75rem;position:absolute;top:.35em;left:100%}}@media (prefers-reduced-motion:no-preference){.hero-edit del{animation:.7s ease-out both strike;animation-delay:var(--at,.8s)}.hero-edit ins{animation:.5s ease-out both write;animation-delay:var(--at,1.4s)}.hero-edit-note{animation:.5s ease-out 2.4s both write}}@keyframes strike{0%{background-size:0 .08em}to{background-size:100% .08em}}@keyframes write{0%{opacity:0}to{opacity:1}}.filter-bar{flex-wrap:wrap;gap:.25rem 1.5rem;margin-bottom:2rem;display:flex}.filter-btn{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:.25rem 0;font-family:inherit;font-size:1.0625rem}.filter-btn:hover{color:var(--ink)}.filter-btn[aria-pressed=true]{color:var(--ink);border-bottom-color:var(--pencil);font-weight:600}.work-list{border-top:1px solid var(--rule)}.work-item{border-bottom:1px solid var(--rule);grid-template-columns:13rem 1fr;gap:0 2.5rem;padding:1.5rem 0;display:grid;position:relative}.work-item[data-series=true]{box-shadow:inset 3px 0 0 var(--pencil);padding-left:1.25rem}.work-pub{font-weight:600;line-height:1.35}.work-date{color:var(--muted);font-size:1rem;font-style:italic;line-height:1.4}.work-title{font-size:1.4rem;line-height:1.25}.work-title a{text-underline-offset:.2em;text-decoration:underline .06em #0000;transition:text-decoration-color .2s}.work-title a:after{content:"";position:absolute;inset:0}.work-item:hover .work-title a{text-decoration-color:var(--pencil)}.work-title a:focus-visible{outline:none}.work-title a:focus-visible:after{outline:2px solid var(--pencil);outline-offset:2px}.work-desc{max-width:62ch;color:var(--ink-soft);margin-top:.4rem;font-size:1.0625rem}.work-load-more-wrap{margin-top:2.5rem}.two-col{grid-template-columns:1fr 1fr;align-items:center;gap:5rem;display:grid}.about-text p{max-width:52ch;color:var(--ink-soft);margin-bottom:1.25rem}.about-text .btn{margin-top:.5rem}.about-photo-wrap{justify-content:center;display:flex}.about-photo{aspect-ratio:3/4;object-fit:cover;object-position:center 20%;border-radius:2px;width:100%;max-width:380px}.resume-download-bar{margin-bottom:3rem}.resume-section-title{border-bottom:1px solid var(--ink);margin:2.5rem 0 0;padding-bottom:.5rem;font-size:1.5rem}.resume-row{border-bottom:1px solid var(--rule);grid-template-columns:13rem 1fr;gap:0 2.5rem;padding:1.25rem 0;display:grid}.resume-company{font-weight:600;line-height:1.35}.resume-date{color:var(--muted);font-size:1rem;font-style:italic;line-height:1.4}.resume-role{font-size:1.25rem;line-height:1.3}.resume-highlight{max-width:62ch;color:var(--ink-soft);margin-top:.4rem;font-size:1.0625rem}.resume-bullets{max-width:62ch;margin-top:.6rem;padding-left:1.25rem;list-style:outside}.resume-bullets li{color:var(--ink-soft);margin-bottom:.25rem;font-size:1.0625rem;line-height:1.55}.skills-chip{color:var(--ink-soft)}.skills-chip:not(:last-child):after{content:", "}.skills-chip:last-child:after{content:"."}.contact-section{background:var(--ink);color:var(--paper);padding:6rem 0}.contact-section :focus-visible{outline-color:var(--pencil-lit)}.contact-inner{flex-direction:column;align-items:flex-start;gap:1rem;display:flex}.contact-headline{font-size:clamp(2rem,5vw,3.25rem)}.contact-sub{color:#c4c6cb;max-width:40ch}.contact-email{text-decoration:underline;text-decoration-color:var(--pencil-lit);text-underline-offset:.25em;overflow-wrap:anywhere;font-size:clamp(1.4rem,3.5vw,2.25rem);font-style:italic}.contact-email:hover{color:var(--pencil-lit)}.contact-section .btn{color:var(--paper);border-color:#6a6d74}.contact-section .btn:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}.footer{background:var(--ink);color:#c4c6cb;border-top:1px solid #33363d;padding:2rem 0}.footer-inner{flex-wrap:wrap;justify-content:space-between;gap:.5rem;font-size:1rem;display:flex}.pdf-overlay{background:var(--paper);z-index:200;opacity:0;pointer-events:none;border-radius:4px;flex-direction:column;display:flex;position:fixed;overflow:hidden;box-shadow:0 24px 80px #0000004d}.pdf-close{z-index:10;background:var(--ink);width:2.25rem;height:2.25rem;color:var(--paper);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1rem;display:flex;position:absolute;top:.75rem;right:.75rem}.pdf-frame{border:none;flex:1;width:100%;display:block}.pdf-backdrop{z-index:199;opacity:0;pointer-events:none;background:#1a1c2099;transition:opacity .3s;position:fixed;inset:0}@media (width<=768px){.container{padding:0 1.25rem}.section{padding:4rem 0}.hero{padding-top:calc(var(--nav-h) + 3rem)}.hero-edit{margin:2.5rem 0 2rem}.nav{padding:0 1.25rem}.nav-toggle{display:flex}.nav-links{background:var(--paper);z-index:100;flex-direction:column;gap:1.5rem;width:260px;height:100vh;padding:5rem 2rem 2rem;transition:transform .3s;position:fixed;top:0;right:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001f}.nav-links.open{transform:translate(0)}.nav-links a{font-size:1.25rem}.work-item,.resume-row{grid-template-columns:1fr;gap:.5rem 0}.work-source{flex-wrap:wrap;gap:0 .75rem;display:flex}.two-col{grid-template-columns:1fr;gap:3rem}.about-photo-wrap{order:-1}.about-photo{max-width:280px}}
