:root{font-family:DM Sans,sans-serif;color:#243247;background:#f5f8fc;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--ink: #243247;--muted: #66758a;--paper: #f5f8fc;--line: #d9e2ed;--blue-soft: #dce8f5;--orange: #4c83b6;--mono: "DM Mono", monospace;--display: "Manrope", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px}button,a{color:inherit;font:inherit}a{text-decoration:none}button{-webkit-tap-highlight-color:transparent}::selection{color:var(--ink);background:#dce8f5}.page-shell,.site-header{width:min(1160px,calc(100% - 96px));margin:0 auto}.site-header{min-height:82px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font:800 calc(22px + var(--text-size-increase, 0px)) var(--display);letter-spacing:-1.5px}.wordmark-dot,.footer-name span{color:var(--orange)}.main-nav{display:flex;gap:38px;margin-left:86px}.main-nav a,.header-contact{font-size:calc(14px + var(--text-size-increase, 0px));font-weight:600;transition:color .16s ease}.main-nav a:hover,.header-contact:hover,.footer-links a:hover{color:#527ba5}.header-contact{border:1px solid #cbd7e5;border-radius:99px;padding:10px 16px}.accessibility-toggle{min-width:40px;min-height:40px;padding:0 12px;border:1px solid #cbd7e5;border-radius:99px;color:var(--ink);background:transparent;font:600 calc(13px + var(--text-size-increase, 0px)) var(--display);cursor:pointer}.accessibility-toggle-label{margin-left:4px;font-size:.8em}.accessibility-toggle[aria-pressed=true]{color:#fff;background:var(--ink)}.accessibility-toggle:focus-visible,a:focus-visible,button:focus-visible{outline:3px solid #1c5d97;outline-offset:3px}.header-contact span{margin-left:8px;color:var(--orange)}.hero{min-height:615px;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:40px;padding-top:44px;padding-bottom:52px}.hero-copy{padding:24px 0 16px}.availability,.eyebrow,.text-link,.project-number,.project-art-caption,.project-type,.work-note,.resume-period,.resume-link,.footer-note,.footer-links,.footer-year{font-family:var(--mono);font-size:calc(11px + var(--text-size-increase, 0px));font-weight:400;letter-spacing:.09em}.availability{display:flex;align-items:center;gap:10px;letter-spacing:.12em}.availability-dot{width:7px;height:7px;background:#5c88b5;border-radius:50%;box-shadow:0 0 0 4px #e5edf6}h1,h2,h3,p{margin-top:0}.hero h1,.section-heading h2,.resume-intro h2,.contact-section h2{font-family:var(--display);font-weight:600}.hero h1{margin:29px 0 28px -5px;font-size:calc(clamp(24px,6.2vw,48px) + 2px + var(--text-size-increase, 0px));line-height:1.025}.hero-reduced{font-size:calc(.6em + 2px + var(--text-size-increase, 0px));font-family:var(--mono)}.mono-word{font-family:var(--mono)}.accent-period{color:var(--orange)}.hero-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:25px}.hero-foot p{margin:0;color:#586a82;font-size:calc(15px + var(--text-size-increase, 0px));line-height:1.8}.text-link,.resume-link{display:inline-flex;align-items:center;gap:9px;white-space:nowrap}.text-link{padding-bottom:7px;border-bottom:1px solid #c2cfde}.arrow-icon{width:15px;height:15px;stroke:currentColor;stroke-width:1.4;transition:transform .18s ease}.arrow-icon--diagonal{transform:rotate(-45deg)}a:hover .arrow-icon,button:hover .arrow-icon{transform:translate(3px)}a:hover .arrow-icon--diagonal,button:hover .arrow-icon--diagonal{transform:rotate(-45deg) translate(3px)}.hero-art{height:474px;position:relative;overflow:hidden;background:#e5edf6;isolation:isolate}.hero-art:before{position:absolute;z-index:-1;content:"";width:270px;height:270px;top:92px;right:35px;border:1px solid rgba(36,50,71,.16);border-radius:50%}.portrait-topline{position:absolute;top:20px;left:22px;right:22px;display:flex;justify-content:space-between;color:#64758b;font:calc(10px + var(--text-size-increase, 0px)) var(--mono);letter-spacing:.09em}.portrait-copy{position:absolute;z-index:1;top:25%;left:24px}.portrait-eyebrow{color:#64758b;font:calc(10px + var(--text-size-increase, 0px)) var(--mono);letter-spacing:.1em}.portrait-copy h2{margin:14px 0 17px;font:600 calc(clamp(25px,3vw,36px) + 2px + var(--text-size-increase, 0px))/.99 var(--display);letter-spacing:-.075em}.portrait-copy h2 span{color:#456f9a;font-family:var(--mono);font-weight:400;font-style:italic;letter-spacing:-.09em}.portrait-copy p{margin:0;color:#586a82;font-size:calc(13px + var(--text-size-increase, 0px));line-height:1.7}.portrait-figure{position:absolute;right:-27px;bottom:-1px;width:76%;height:91%;object-fit:contain;object-position:right bottom}.portrait-caption{position:absolute;right:20px;bottom:17px;color:#64758b;font:calc(9px + var(--text-size-increase, 0px)) var(--mono);letter-spacing:.08em}.intro-strip{background:#e8eff7}.intro-inner{min-height:174px;display:grid;grid-template-columns:1fr 4fr 1fr;align-items:center;gap:20px}.eyebrow{color:#66758a}.intro-inner>p{margin:0;font:500 calc(clamp(21px,2.5vw,31px) + 2px + var(--text-size-increase, 0px))/1.35 var(--display);letter-spacing:-.045em}.intro-note{justify-self:end;align-self:end;padding-bottom:28px;font:calc(11px + var(--text-size-increase, 0px)) var(--mono);letter-spacing:.1em;color:#66758a}.intro-note span{margin-left:8px;color:var(--orange)}.work-section{padding-top:113px;padding-bottom:110px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:49px}.section-heading h2,.resume-intro h2,.contact-section h2{margin:19px 0 0;font-size:calc(clamp(48px,6vw,70px) + 2px + var(--text-size-increase, 0px));line-height:1.02}.section-aside{max-width:350px;margin:0 18px 8px 0;color:#66758a;font-size:calc(14px + var(--text-size-increase, 0px));line-height:1.75}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.project-card{padding:0;border:0;background:transparent;text-align:left;cursor:pointer}.project-art{height:360px;position:relative;display:grid;place-items:center;overflow:hidden;transition:transform .22s ease}.project-card:hover .project-art{transform:translateY(-4px)}.gdla{color:#344b62;background:#eef2f5}.readahead{color:#31465f;background:#dce8f5}.goodform{color:#354b68;background:#d9e1f0}.project-logo{display:block;width:min(88%,320px);height:auto;object-fit:contain;transition:transform .28s ease}.project-number,.project-art-caption{position:absolute;top:15px;left:15px;font-size:calc(10px + var(--text-size-increase, 0px));opacity:.75}.project-art-caption{top:auto;bottom:15px;letter-spacing:.13em}.project-mark{font:500 calc(132px + var(--text-size-increase, 0px))/1 Georgia,serif;transition:transform .28s ease}.readahead .project-mark{font-size:calc(106px + var(--text-size-increase, 0px))}.goodform .project-mark{font:700 calc(107px + var(--text-size-increase, 0px)) var(--display);letter-spacing:-.1em}.project-card:hover .project-mark{transform:scale(1.08) rotate(-5deg)}.project-card:hover .project-logo{transform:scale(1.04)}.project-open{position:absolute;top:12px;right:12px;width:30px;height:30px;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%}.project-open .arrow-icon{width:14px;height:14px}.project-meta{padding:18px 1px 0}.project-type{color:#687a91;font-size:calc(10px + var(--text-size-increase, 0px))}.project-meta h3{margin:11px 0 4px;font:600 calc(23px + var(--text-size-increase, 0px)) var(--display);letter-spacing:-.04em}.project-date{display:block;margin-bottom:9px;color:#687a91;font:calc(10px + var(--text-size-increase, 0px)) var(--mono);letter-spacing:.06em}.project-meta p{margin:0;color:#66758a;font-size:calc(13px + var(--text-size-increase, 0px))}.work-note{display:flex;align-items:center;gap:10px;margin:40px 0 0;color:#66758a;font-size:calc(10px + var(--text-size-increase, 0px));letter-spacing:.035em}.work-note-star{color:var(--orange);font-size:calc(17px + var(--text-size-increase, 0px))}.resume-section{background:#e8eff7}.resume-inner{display:grid;grid-template-columns:.8fr 1.2fr;gap:35px;padding-top:106px;padding-bottom:112px}.resume-intro h2{margin-top:21px}.resume-intro>p{max-width:280px;margin:23px 0 27px;color:#66758a;font-size:calc(14px + var(--text-size-increase, 0px));line-height:1.8}.resume-link{padding-bottom:8px;border-bottom:1px solid #c2cfde;font-size:calc(10px + var(--text-size-increase, 0px))}.resume-list{border-top:1px solid #cbd7e5}.resume-item{border-bottom:1px solid #cbd7e5}.resume-toggle{width:100%;min-height:91px;padding:16px 0;display:grid;grid-template-columns:95px 1fr 25px;align-items:flex-start;gap:16px;border:0;color:var(--ink);background:transparent;text-align:left;cursor:pointer}.resume-period{color:#66758a;font-size:calc(10px + var(--text-size-increase, 0px));white-space:nowrap}.resume-role{margin-top:15px}.resume-role strong,.resume-education strong{display:block;margin-bottom:5px;font:600 calc(16px + var(--text-size-increase, 0px)) var(--display);letter-spacing:-.02em}.resume-role>span,.resume-education{color:#66758a;font-size:calc(13px + var(--text-size-increase, 0px))}.resume-plus{justify-self:end;color:#71829a;font-size:calc(21px + var(--text-size-increase, 0px));font-weight:300}.resume-detail{padding:0 40px 24px 111px;animation:reveal .18s ease-out}.resume-detail p{max-width:420px;margin:0 0 16px;color:#586a82;font-size:calc(13px + var(--text-size-increase, 0px));line-height:1.8}.resume-detail ul{max-width:560px;margin:0 0 16px;padding-left:18px;color:#586a82;font-size:calc(13px + var(--text-size-increase, 0px));line-height:1.8}.resume-detail li+li{margin-top:7px}.resume-tags{display:flex;flex-wrap:wrap;gap:7px}.resume-tags span{padding:6px 9px;border:1px solid #cbd7e5;border-radius:99px;color:#586a82;font:calc(11px + var(--text-size-increase, 0px)) var(--mono)}.resume-education{min-height:84px;display:grid;grid-template-columns:95px 1fr;align-items:flex-start;gap:16px;border-bottom:1px solid #cbd7e5;line-height:1.55;margin-top:15px}.resume-education strong{display:inline;color:var(--ink)}.skills-section{background:#e8eff7}.skills-inner{padding-top:100px;padding-bottom:108px}.skills-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:34px;row-gap:30px}.skill-group{min-width:0;padding-top:16px;border-top:1px solid #cbd7e5}.skill-group h3{margin:0 0 14px;font:600 calc(15px + var(--text-size-increase, 0px))/1.5 var(--display);letter-spacing:-.02em}.skill-tags{display:flex;flex-wrap:wrap;gap:7px}.skill-tags span{padding:6px 8px;border:1px solid #cbd7e5;border-radius:99px;color:#586a82;font:calc(14px + var(--text-size-increase, 0px))/1.5 var(--mono)}.contact-section{min-height:410px;position:relative;padding-top:88px;padding-bottom:90px;overflow:hidden}.contact-section h2{margin-top:17px;font-size:calc(clamp(57px,7vw,82px) + 2px + var(--text-size-increase, 0px))}.contact-cta{display:inline-flex;align-items:center;gap:14px;margin-top:25px;padding:13px 19px;border-radius:99px;color:#f5f8fc;background:var(--ink);font:calc(11px + var(--text-size-increase, 0px)) var(--mono);letter-spacing:.08em;transition:background .16s ease}.contact-cta:hover{background:#365d83}.contact-decoration{position:absolute;right:13%;top:70px;color:#e2ebf5;font-size:calc(227px + var(--text-size-increase, 0px));line-height:1;z-index:-1}.site-footer{color:#f5f8fc;background:#243247}.footer-inner{min-height:95px;display:grid;grid-template-columns:1.1fr 1.5fr 1.5fr auto;align-items:center;gap:20px}.footer-name{font:700 calc(13px + var(--text-size-increase, 0px)) var(--display);letter-spacing:.06em}.footer-note,.footer-year{color:#b3c1d2;font-size:calc(10px + var(--text-size-increase, 0px));letter-spacing:.04em}.footer-links{display:flex;gap:20px;font-size:calc(10px + var(--text-size-increase, 0px))}.footer-links a{display:inline-flex;align-items:center;gap:3px;transition:color .16s ease}.footer-links .arrow-icon{width:11px;height:11px}.dialog-backdrop{position:fixed;z-index:5;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#18253694;animation:fade-in .15s ease-out}.project-dialog{width:min(490px,100%);position:relative;padding:45px;background:var(--paper);box-shadow:0 20px 70px #00000024}.dialog-close{position:absolute;top:15px;right:17px;padding:2px 7px;border:0;color:var(--muted);background:transparent;font-size:calc(27px + var(--text-size-increase, 0px));cursor:pointer}.project-dialog h2{margin:20px 0 13px;font:600 calc(45px + var(--text-size-increase, 0px)) var(--display);letter-spacing:-.07em}.project-dialog>p{margin-bottom:22px;color:#586a82;font-size:calc(15px + var(--text-size-increase, 0px));line-height:1.8}.project-dialog .resume-link{margin-top:27px}@keyframes reveal{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media(max-width:900px){.page-shell,.site-header{width:min(100% - 56px,700px)}.hero{grid-template-columns:1fr .85fr;gap:22px}.hero h1{font-size:calc(clamp(24px,8vw,48px) + 2px + var(--text-size-increase, 0px))}.hero-foot{align-items:flex-start;flex-direction:column;gap:17px}.hero-art{height:410px}.portrait-figure{right:-38px;width:79%;height:88%}.portrait-copy{left:18px}.portrait-topline{left:18px;right:18px;font-size:calc(9px + var(--text-size-increase, 0px))}.intro-inner{grid-template-columns:1fr 2fr}.intro-note{display:none}.resume-inner{display:flex;flex-direction:column;gap:35px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 24px}.skills-inner{padding-top:78px;padding-bottom:82px}.footer-inner{grid-template-columns:1fr 1.5fr 1.5fr}.footer-year{display:none}}@media(max-width:640px){.page-shell,.site-header{width:calc(100% - 40px)}.site-header{min-height:68px;display:grid;grid-template-columns:auto 1fr auto;column-gap:10px;row-gap:12px;padding:12px 0}.wordmark{grid-column:1;grid-row:1}.accessibility-toggle{grid-column:2;grid-row:1;justify-self:center}.header-contact{grid-column:3;grid-row:1}.main-nav{grid-column:1 / -1;grid-row:2;width:100%;justify-content:space-between}.main-nav{gap:8px;margin-left:0}.main-nav a{font-size:calc(10px + var(--text-size-increase, 0px))}.header-contact{font-size:calc(12px + var(--text-size-increase, 0px))}.header-contact{padding:8px 11px}.hero{grid-template-columns:1fr;gap:27px;padding-top:47px;padding-bottom:45px}.hero-copy{padding:0}.hero h1{margin-top:24px;font-size:calc(clamp(20px,16vw,36px) + 2px + var(--text-size-increase, 0px))}.hero-foot{flex-direction:row;align-items:flex-end}.hero-foot p{font-size:calc(14px + var(--text-size-increase, 0px))}.text-link{font-size:calc(9px + var(--text-size-increase, 0px))}.hero-art{height:360px}.portrait-figure{right:-20px;width:78%;height:90%}.portrait-copy{top:22%;left:16px}.portrait-copy h2{font-size:calc(clamp(24px,8vw,32px) + 2px + var(--text-size-increase, 0px))}.portrait-topline{left:16px;right:16px;font-size:calc(8px + var(--text-size-increase, 0px))}.portrait-caption{right:13px;bottom:12px;font-size:calc(8px + var(--text-size-increase, 0px))}.intro-inner{min-height:155px;grid-template-columns:1fr;gap:14px;align-content:center}.intro-inner>p{font-size:calc(26px + var(--text-size-increase, 0px))}.work-section{padding-top:77px;padding-bottom:76px}.section-heading{align-items:flex-start;flex-direction:column;gap:15px;margin-bottom:30px}.section-heading h2,.resume-intro h2{font-size:calc(48px + var(--text-size-increase, 0px))}.section-aside{max-width:100%;margin:0}.project-grid{grid-template-columns:1fr;gap:35px}.project-art{height:min(85vw,350px)}.project-meta{padding-top:13px}.work-note{align-items:flex-start;line-height:1.7}.resume-inner{grid-template-columns:1fr;gap:44px;padding-top:75px;padding-bottom:75px}.resume-intro>p{max-width:100%}.resume-toggle{grid-template-columns:77px 1fr 20px;align-items:flex-start;gap:10px}.resume-role{margin-top:15px}.resume-detail{padding-left:87px;padding-right:10px}.resume-education{grid-template-columns:77px 1fr;align-items:flex-start;gap:10px;margin-top:15px}.skills-grid{grid-template-columns:1fr;gap:21px}.skills-inner{padding-top:72px;padding-bottom:76px}.contact-section{min-height:380px;padding-top:74px;padding-bottom:70px}.contact-section h2{font-size:calc(58px + var(--text-size-increase, 0px))}.contact-decoration{right:-12%;top:90px;font-size:calc(177px + var(--text-size-increase, 0px))}.footer-inner{min-height:155px;grid-template-columns:1fr 1fr;gap:14px;padding-top:22px;padding-bottom:22px}.footer-note{justify-self:end;text-align:right;line-height:1.6}.footer-links{grid-column:1 / -1;grid-row:2;gap:20px}.project-dialog{padding:37px 26px}}main.accessibility-enhanced{--text-size-increase: 2px;--ink: #10243d;--muted: #263d58;--paper: #ffffff;--line: #61758c;--blue-soft: #d5e5f6;--orange: #1c5d97;color:var(--ink);background:#fff}main.accessibility-enhanced .availability,main.accessibility-enhanced .eyebrow,main.accessibility-enhanced .text-link,main.accessibility-enhanced .project-number,main.accessibility-enhanced .project-art-caption,main.accessibility-enhanced .project-type,main.accessibility-enhanced .project-date,main.accessibility-enhanced .work-note,main.accessibility-enhanced .resume-period,main.accessibility-enhanced .resume-link,main.accessibility-enhanced .footer-note,main.accessibility-enhanced .footer-links,main.accessibility-enhanced .footer-year,main.accessibility-enhanced .hero-foot p,main.accessibility-enhanced .portrait-topline,main.accessibility-enhanced .portrait-eyebrow,main.accessibility-enhanced .portrait-copy p,main.accessibility-enhanced .portrait-caption,main.accessibility-enhanced .section-aside,main.accessibility-enhanced .project-meta p,main.accessibility-enhanced .resume-intro>p,main.accessibility-enhanced .resume-role>span,main.accessibility-enhanced .resume-education,main.accessibility-enhanced .resume-detail p,main.accessibility-enhanced .resume-detail ul,main.accessibility-enhanced .resume-tags span,main.accessibility-enhanced .skill-tags span,main.accessibility-enhanced .project-dialog>p{color:#263d58}main.accessibility-enhanced .hero-art,main.accessibility-enhanced .resume-section,main.accessibility-enhanced .skills-section{background-color:#e3edf8}main.accessibility-enhanced .readahead,main.accessibility-enhanced .goodform{background-color:#d6e3f1}main.accessibility-enhanced .site-footer{color:#fff;background-color:#10243d}main.accessibility-enhanced .footer-note,main.accessibility-enhanced .footer-year,main.accessibility-enhanced .footer-links{color:#d6e3f1}main.accessibility-enhanced .footer-links a:hover{color:#fff}@media(min-width:901px){.wordmark{font-size:calc(23px + var(--text-size-increase, 0px))}.main-nav a,.header-contact{font-size:calc(15px + var(--text-size-increase, 0px))}.availability,.eyebrow,.text-link,.project-number,.project-art-caption,.project-type,.resume-period,.resume-link,.footer-note,.footer-links,.footer-year{font-size:calc(12px + var(--text-size-increase, 0px))}.hero h1{font-size:calc(clamp(26px,6.5vw,50px) + 2px + var(--text-size-increase, 0px))}.hero-foot p{font-size:calc(16px + var(--text-size-increase, 0px))}.portrait-topline,.portrait-eyebrow{font-size:calc(11px + var(--text-size-increase, 0px))}.portrait-copy h2{font-size:calc(clamp(27px,3.2vw,38px) + 2px + var(--text-size-increase, 0px))}.portrait-copy p{font-size:calc(14px + var(--text-size-increase, 0px))}.portrait-caption{font-size:calc(10px + var(--text-size-increase, 0px))}.intro-inner>p{font-size:calc(clamp(23px,2.7vw,33px) + 2px + var(--text-size-increase, 0px))}.intro-note{font-size:calc(12px + var(--text-size-increase, 0px))}.section-heading h2,.resume-intro h2{font-size:calc(clamp(51px,6.3vw,65px) + 2px + var(--text-size-increase, 0px))}.section-aside{font-size:calc(15px + var(--text-size-increase, 0px))}.project-meta h3{font-size:calc(25px + var(--text-size-increase, 0px))}.project-date{font-size:calc(11px + var(--text-size-increase, 0px))}.project-meta p{font-size:calc(14px + var(--text-size-increase, 0px))}.work-note{font-size:calc(11px + var(--text-size-increase, 0px))}.resume-intro>p{font-size:calc(15px + var(--text-size-increase, 0px))}.resume-toggle .resume-role strong,.resume-education strong{font-size:calc(17px + var(--text-size-increase, 0px))}.resume-role>span,.resume-education{font-size:calc(14px + var(--text-size-increase, 0px))}.resume-detail p,.resume-detail ul{font-size:calc(14px + var(--text-size-increase, 0px))}.resume-tags span{font-size:calc(12px + var(--text-size-increase, 0px))}.skill-group h3{font-size:calc(16px + var(--text-size-increase, 0px))}.skill-tags span{font-size:calc(13px + var(--text-size-increase, 0px))}.contact-section h2{font-size:calc(clamp(60px,7.2vw,86px) + 2px + var(--text-size-increase, 0px))}.contact-cta{font-size:calc(12px + var(--text-size-increase, 0px))}.footer-name{font-size:calc(14px + var(--text-size-increase, 0px))}.project-dialog h2{font-size:calc(48px + var(--text-size-increase, 0px))}.project-dialog>p{font-size:calc(16px + var(--text-size-increase, 0px))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
