@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap";:root{color:#252923;font-synthesis:none;--paper:#f9f9f4;--ink:#252923;--muted:#62685e;--line:#dbded4;--green:#456345;--lime:#d9ee9d;background:#f9f9f4;font-family:DM Sans,sans-serif}*{box-sizing:border-box}body{margin:0}html{scroll-behavior:smooth;scroll-padding-top:95px}button,input,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a,button{transition:background .2s,color .2s,transform .2s}a:focus-visible,button:focus-visible,input:focus-visible{outline-offset:5px;outline:3px solid #62803d}button{color:inherit}img{max-width:100%;display:block}p{line-height:1.7}h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:Manrope,sans-serif}svg{flex-shrink:0}section{scroll-margin-top:24px}.container{width:min(1240px,100% - 100px);margin:auto}.site-header{z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);background:#f9f9f4f2;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;height:90px;display:flex}.wordmark{letter-spacing:-2px;font-family:Manrope,sans-serif;font-size:34px;font-weight:800}.wordmark span{color:var(--green)}.navigation{align-items:center;gap:36px;font-size:14px;font-weight:550;display:flex}.navigation a{align-items:center;gap:7px;display:flex}.navigation a:hover{color:var(--green)}.navigation .nav-contact{background:var(--ink);color:#fff;border-radius:5px;margin-left:8px;padding:13px 21px}.menu-toggle{display:none}.hero{grid-template-columns:1.3fr 1fr;align-items:center;gap:76px;padding-top:86px;padding-bottom:87px;display:grid}.eyebrow{letter-spacing:1.8px;align-items:center;gap:9px;font-size:10px;font-weight:650;line-height:1.6;display:flex}.status-dot{background:var(--green);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #45634512}h1{letter-spacing:-4px;margin:28px 0 25px;font-size:clamp(48px,5.3vw,76px);font-weight:600;line-height:1.12}h1 span{color:var(--green)}.hero-intro{max-width:480px;color:var(--muted);font-size:16px}.hero-actions{align-items:center;gap:27px;margin-top:32px;display:flex}.button{border:0;border-radius:4px;justify-content:center;align-items:center;gap:24px;padding:15px 21px;font-size:13px;font-weight:550;display:inline-flex}.button-dark{background:var(--ink);color:#fff}.button-dark:hover,.nav-contact:hover{background:var(--green)}.text-link{align-items:center;gap:15px;font-size:13px;font-weight:550;display:inline-flex}.text-link:hover{color:var(--green)}.hero-portrait{padding:13px 18px 25px 0;position:relative}.portrait-frame{background:#e8e8df;border-radius:5px;position:relative;overflow:hidden;transform:rotate(2deg)}.portrait-frame img{-o-object-fit:cover;object-fit:cover;-o-object-position:center 37%;object-position:center 37%;filter:saturate(.7);width:100%;height:425px}.portrait-label{color:#fff;letter-spacing:1.4px;background:linear-gradient(#0000,#0009);justify-content:space-between;padding:50px 22px 23px;font-size:9px;display:flex;position:absolute;bottom:0;left:0;right:0}.portrait-note{background:var(--lime);align-items:center;gap:14px;padding:18px 23px;font-size:13px;font-weight:550;line-height:1.5;display:flex;position:absolute;bottom:49px;left:-30px;transform:rotate(-5deg);box-shadow:0 4px 14px #00000008}.note-star{font-size:42px;line-height:1}.portrait-index{letter-spacing:1.5px;color:var(--muted);font-size:8px;position:absolute;bottom:0;right:8px}.focus-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0}.focus-strip .container{justify-content:space-between;align-items:center;gap:25px;display:flex}.focus-strip span{letter-spacing:1.5px;color:var(--muted);font-size:9px}.focus-strip p{font-size:14px}.focus-strip i{color:var(--green);margin:0 26px;font-size:19px;font-style:normal}.section{padding-top:89px;padding-bottom:89px}.section-heading{justify-content:space-between;align-items:end;gap:25px;margin-bottom:40px;display:flex}h2{letter-spacing:-1.9px;font-size:clamp(30px,3vw,42px);font-weight:550;line-height:1.2}.section-heading h2{margin-top:13px}.section-heading h2 span{color:var(--green)}.section-heading>p{color:var(--muted);padding-bottom:3px;font-size:13px}.featured-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;display:grid}.featured-card{flex-direction:column;display:flex}.art-link{border-radius:5px;display:block;position:relative;overflow:hidden}.project-art{height:270px;padding:24px;position:relative;overflow:hidden}.art-label{letter-spacing:1.6px;font-size:8px;font-weight:600}.art-caption{font-size:10px;position:absolute;bottom:21px;left:24px}.art-football{background:#e3e9de}.chart-art{background:#f9fcf4;border-radius:4px;padding:20px 22px;position:absolute;top:63px;left:12%;right:12%;transform:rotate(-5deg);box-shadow:0 8px 18px #29372012}.chart-heading,.chart-axis{letter-spacing:.8px;justify-content:space-between;font-size:7px;display:flex}.chart-bars{background:repeating-linear-gradient(0deg,#0000 0 24px,#dce3d7 25px);border-bottom:1px solid #ccd4c5;align-items:end;gap:9px;height:100px;margin:12px 0 8px;display:flex}.chart-bars i{background:#547458;border-radius:3px 3px 0 0;flex:1}.chart-bars i:nth-last-child(-n+3){background:#b6d288}.art-catan{background:#ede7db}.hex-board{width:234px;height:176px;position:absolute;top:53%;left:50%;transform:translate(-50%,-50%)rotate(-10deg)}.hex{clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:#718466;place-items:center;width:75px;height:85px;display:grid;position:absolute}.hex span{background:#f6efd8;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:29px;height:29px;font:600 12px Georgia,serif;display:flex}.hex small{letter-spacing:.5px;font-size:5px}.hex-0{background:#bbaa73;top:0;left:79px}.hex-1{top:44px;left:0}.hex-2{background:#bd8568;top:44px;left:158px}.hex-3{background:#829585;top:89px;left:79px}.hex-4{background:#b8b396;top:133px;left:0}.hex-5{background:#bfa774;top:133px;left:158px}.hex-6{background:#939c9d;top:178px;left:79px}.hex-board{top:40%;transform:translate(-50%,-50%)rotate(-10deg)scale(.72)}.art-brief{background:#e4e4f0}.brief-art{background:#fcfcff;border-radius:3px;width:75%;padding:21px;position:absolute;top:60px;left:15%;transform:rotate(5deg);box-shadow:0 8px 18px #33334d12}.brief-top{letter-spacing:.6px;color:#656085;justify-content:space-between;font-size:7px;display:flex}.brief-art h4{letter-spacing:-.6px;margin:16px 0;font:600 18px/1.3 Manrope,sans-serif}.brief-lines{gap:5px;display:grid}.brief-lines i{background:#e5e5ed;height:3px}.brief-lines i:last-child{width:60%}.brief-bottom{letter-spacing:.5px;color:#656085;gap:14px;margin-top:19px;font-size:6px;display:flex}.art-arrow{background:#ffffffb0;border-radius:50%;place-items:center;width:30px;height:30px;display:grid;position:absolute;bottom:15px;right:15px}.art-link:hover .art-arrow{background:var(--ink);color:#fff;transform:rotate(45deg)}.project-meta{text-transform:uppercase;color:var(--muted);letter-spacing:1.2px;justify-content:space-between;margin:22px 0 10px;font-size:8px;display:flex}.featured-card h3{letter-spacing:-.8px;font-size:22px;font-weight:650}.featured-card>p{color:var(--muted);margin:13px 0 20px;font-size:13px}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags span{border:1px solid var(--line);border-radius:4px;padding:5px 9px;font-size:10px}.featured-card .tags{margin-top:auto}.project-code{border-top:1px solid var(--line);justify-content:space-between;align-items:center;margin-top:22px;padding-top:18px;font-size:12px;display:flex}.project-code:hover{color:var(--green)}.project-library{border-block:1px solid var(--line);background:#f0f1e9}.library-controls{justify-content:space-between;align-items:center;gap:20px;display:flex}.filters{flex-wrap:wrap;gap:6px;display:flex}.filters button{background:0 0;border:1px solid #0000;border-radius:4px;padding:11px 15px;font-size:12px}.filters button:hover{border-color:#9da992}.filters button.active{background:var(--ink);color:#fff}.search{background:var(--paper);color:var(--muted);border:1px solid #ccd1c3;border-radius:4px;align-items:center;gap:9px;padding:11px 12px;display:flex}.search input{width:215px;color:var(--ink);background:0 0;border:0;min-width:0;font-size:12px}.result-count{color:var(--muted);margin:20px 0 14px;font-size:10px}.index-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;display:grid}.index-card{background:var(--paper);border:1px solid var(--line);border-radius:4px;flex-direction:column;min-height:235px;padding:25px;display:flex}.index-card:hover{background:#fff;border-color:#8b9c7a;transform:translateY(-3px)}.index-card-top{text-transform:uppercase;letter-spacing:1px;color:var(--muted);justify-content:space-between;align-items:center;gap:8px;font-size:8px;display:flex}.index-card-top svg{font-size:17px}.index-card h3{letter-spacing:-.5px;margin:17px 0 9px;font-size:18px}.index-card p{color:var(--muted);margin-bottom:23px;font-size:12px}.index-tech{color:var(--green);margin-top:auto;font-size:9px;line-height:1.6}.github-link{justify-content:center;align-items:center;gap:12px;width:fit-content;margin:32px auto 0;font-size:12px;display:flex}.empty-state{text-align:center;padding:45px}.empty-state p{color:var(--muted);margin:12px 0 20px}.about{grid-template-columns:1fr 1fr;gap:100px;padding-block:110px;display:grid}.about h2{margin-top:22px;font-size:48px;line-height:1.22}.about h2 em{color:var(--green);font-style:normal}.about-copy>p{color:var(--muted);margin-bottom:18px;font-size:14px}.about-copy .about-lead{color:var(--ink);font-size:19px;line-height:1.6}.toolbox{margin:30px 0}.toolbox .tags{margin-top:12px}.contact{background:#dfe9d5;padding:70px 0 36px}.contact-main{justify-content:space-between;align-items:center;margin:24px 0 45px;display:flex}.contact h2{letter-spacing:-2.8px;font-size:clamp(42px,5vw,66px)}.contact h2 em{color:var(--green);font-style:normal}.contact-arrow{border:1px solid #91a184;border-radius:50%;place-items:center;width:90px;height:90px;font-size:45px;display:grid}.contact-arrow:hover{background:var(--ink);color:var(--lime);transform:rotate(5deg)}.contact-bottom{border-top:1px solid #b9c7af;justify-content:space-between;gap:20px;padding-top:25px;display:flex}.contact-bottom a{align-items:center;gap:14px;font-size:15px;display:flex}.contact-bottom p{color:#4d5d43;font-size:11px}.footer{justify-content:space-between;align-items:center;gap:20px;padding-block:31px;display:flex}.footer p{color:var(--muted);font-size:10px}.footer>div{align-items:center;gap:22px;display:flex}.back-top{font-size:10px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:40;background:var(--ink);color:#fff;padding:12px 20px;position:fixed;top:-70px;left:15px}.skip-link:focus{top:12px}@media (min-width:1500px){.hero{gap:100px}h1{font-size:78px}}@media (max-width:1100px){.container{width:calc(100% - 64px)}.hero{gap:38px}.hero-actions{gap:18px}.portrait-frame img{height:390px}.portrait-note{left:-15px}.focus-strip i{margin:0 14px}.focus-strip span{max-width:130px;line-height:1.7}.section-heading>p{max-width:250px}.featured-grid{gap:20px}.project-art{height:235px}.chart-art{padding:16px;left:9%;right:9%}.brief-art{width:82%;left:10%}.index-card{padding:22px}.about{gap:55px}.library-controls{flex-wrap:wrap}.about h2{font-size:43px}}@media (max-width:760px){.container{width:calc(100% - 40px)}.header-inner{height:72px}.wordmark{font-size:30px}.menu-toggle{border:1px solid var(--line);background:0 0;border-radius:4px;place-items:center;padding:8px;font-size:23px;display:grid}.navigation{background:var(--paper);border-bottom:1px solid var(--line);gap:23px;padding:25px;display:none;position:absolute;top:72px;left:0;right:0}.navigation.is-open{flex-direction:column;align-items:stretch;display:flex}.navigation .nav-contact{justify-content:center;margin:0}.hero{grid-template-columns:1fr;gap:40px;padding-top:48px;padding-bottom:43px}h1{letter-spacing:-2.8px;margin-top:23px;font-size:clamp(43px,9.6vw,69px)}.hero-intro{max-width:100%;font-size:15px}.hero-actions{gap:22px}.button{gap:15px;padding:14px 17px;font-size:12px}.text-link{gap:9px;font-size:12px}.hero-portrait{width:85%;max-width:420px;margin:auto;padding-right:5px}.portrait-frame img{-o-object-position:center 35%;object-position:center 35%;height:350px}.portrait-note{padding:14px 18px;font-size:12px;bottom:47px;left:-20px}.portrait-index{font-size:6px;right:0}.focus-strip .container{display:block}.focus-strip{padding:20px 0}.focus-strip span{max-width:none;margin-bottom:7px;display:block}.focus-strip p{font-size:11px}.focus-strip i{margin:0 6px;font-size:12px}.section{padding-block:54px}.section-heading{margin-bottom:29px;display:block}.section-heading>p{max-width:none;margin-top:16px;font-size:13px}.desktop-break{display:none}h2{letter-spacing:-1.3px;font-size:31px}.featured-grid{grid-template-columns:1fr;gap:37px}.project-art{height:285px}.chart-art{top:67px;left:15%;right:15%}.chart-bars{height:110px}.brief-art{width:65%;padding:24px;top:53px;left:22%}.brief-art h4{font-size:22px}.brief-bottom{margin-top:25px}.hex-board{transform:translate(-50%,-50%)rotate(-10deg)scale(.83)}.featured-card h3{font-size:24px}.featured-card>p{font-size:14px}.project-meta{font-size:9px}.project-code{margin-top:18px;padding-top:14px}.index-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.filters{gap:3px}.filters button{padding:10px;font-size:10px}.search,.search input{width:100%}.library-controls{gap:14px}.index-card{min-height:250px;padding:17px}.index-card h3{font-size:17px;line-height:1.4}.index-card p{font-size:12px}.index-card-top{font-size:7px;line-height:1.5}.about{grid-template-columns:1fr;gap:28px}.about h2{font-size:40px}.about-copy .about-lead{font-size:18px}.contact{padding:48px 0 30px}.contact h2{letter-spacing:-1.8px;font-size:40px}.contact-arrow{width:57px;height:57px;font-size:30px}.contact-main{gap:15px;margin-bottom:30px}.contact-bottom{display:block}.contact-bottom a{font-size:13px}.contact-bottom p{margin-top:12px}.footer{flex-wrap:wrap;gap:16px}.footer p{order:3;width:100%;font-size:10px}.footer>div{gap:20px}.eyebrow{letter-spacing:1.4px;font-size:8px}}@media (max-width:400px){.index-grid{grid-template-columns:1fr}.index-card{min-height:0}.hero-actions{gap:15px}.text-link{font-size:11px}.focus-strip p{font-size:10px}.contact h2{font-size:34px}.hero-portrait{width:90%}.portrait-frame img{height:320px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media (min-width:761px) and (max-width:1100px){.brief-art{padding:16px;top:53px}.brief-art h4{margin:12px 0;font-size:15px}.brief-bottom{gap:7px;margin-top:14px;font-size:5px}.chart-art{top:53px}.chart-bars{height:85px}}.art-graph{background:#e3e9de}.graph-art{width:84%;height:65%;position:absolute;top:17%;left:8%}.experience{border-bottom:1px solid var(--line)}.timeline{margin:0;padding:0;list-style:none}.timeline-item{grid-template-columns:100px 1fr;padding-bottom:18px;display:grid;position:relative}.timeline-item:before{content:"";background:var(--line);width:1px;position:absolute;top:32px;bottom:-32px;left:71px}.timeline-item:last-child:before{display:none}.timeline-item:after{content:"";background:var(--paper);border:1px solid #9ba78f;border-radius:50%;width:9px;height:9px;position:absolute;top:31px;left:67px}.timeline-item.is-active:after{background:var(--green);box-shadow:0 0 0 5px #45634512}.timeline-year{color:var(--muted);font-variant-numeric:tabular-nums;padding-top:28px;font-size:12px}.timeline-card{border:1px solid var(--line);background:var(--paper);border-radius:5px}.timeline-item.is-active .timeline-card{background:#f0f3e9;border-color:#aab9a0}.timeline-trigger{text-align:left;background:0 0;border:0;border-radius:5px;align-items:center;gap:24px;width:100%;padding:23px 28px;display:flex}.timeline-trigger:hover{background:#45634506}.timeline-title{flex-direction:column;flex:1;gap:6px;display:flex}.timeline-company{letter-spacing:-.6px;font-family:Manrope,sans-serif;font-size:21px;font-weight:650}.timeline-role{color:var(--muted);font-family:DM Sans,sans-serif;font-size:12px;font-weight:400}.timeline-date{color:var(--muted);font-family:DM Sans,sans-serif;font-size:11px;font-weight:400}.timeline-icon{border:1px solid var(--line);border-radius:50%;place-items:center;width:30px;height:30px;font-size:18px;display:grid}.timeline-item.is-active .timeline-icon{background:var(--green);color:#fff;border-color:var(--green)}.timeline-detail-inner{max-width:890px;padding:0 28px 28px}.timeline-location{letter-spacing:.8px;color:var(--green);text-transform:uppercase;font-size:10px}.timeline-summary{letter-spacing:-.3px;margin:13px 0 17px;font-size:17px}.timeline-details ul{margin:0 0 22px;padding-left:18px}.timeline-details li{color:var(--muted);margin-bottom:10px;padding-left:5px;font-size:13px;line-height:1.8}.timeline-details li::marker{color:var(--green)}.education-note{border-top:1px solid var(--line);align-items:baseline;gap:32px;margin:28px 0 0 100px;padding-top:25px;display:flex}.education-note p{font-size:14px}.education-note p span{color:var(--muted);margin-top:5px;font-size:12px;display:block}.tap-instruction{display:none}@media (hover:none){.hover-instruction{display:none}.tap-instruction{display:inline}}@media (max-width:760px){.timeline-item{grid-template-columns:1fr;padding:0 0 20px 23px}.timeline-item:before{top:9px;bottom:-9px;left:4px}.timeline-item:after{top:8px;left:0}.timeline-year{padding:0 0 10px;font-size:10px}.timeline-trigger{flex-wrap:wrap;gap:10px;padding:20px}.timeline-title{flex-basis:calc(100% - 45px)}.timeline-company{font-size:19px}.timeline-role{font-size:11px}.timeline-date{flex-basis:100%;order:3;margin-top:4px;font-size:10px}.timeline-icon{width:27px;height:27px}.timeline-detail-inner{padding:0 20px 22px}.timeline-summary{font-size:15px}.timeline-details li{font-size:12px}.education-note{margin-left:23px;display:block}.education-note .eyebrow{margin-bottom:11px}}@keyframes arrive{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes underline-in{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes bar-rise{0%{transform:scaleY(.25)}to{transform:scaleY(1)}}@keyframes route-draw{0%{stroke-dashoffset:450px}to{stroke-dashoffset:0}}.hero-copy>*{animation:.75s both arrive}.hero-copy h1{animation-delay:.1s}.hero-copy .hero-intro{animation-delay:.2s}.hero-copy .hero-actions{animation-delay:.3s}.hero-portrait{animation:1s .2s both arrive}.hero h1>span{position:relative}.hero h1>span:after{content:"";background:var(--lime);transform-origin:0;border-radius:50%;height:6px;animation:.8s .7s both underline-in;position:absolute;bottom:-8px;left:0;right:0}.portrait-note{transition:transform .35s}.hero-portrait:hover .portrait-note{transform:rotate(0)translateY(-5px)}.note-star{transition:transform .7s;display:inline-block}.hero-portrait:hover .note-star{transform:rotate(90deg)}.enter-view{animation:.65s both arrive}.featured-card:nth-child(2).enter-view{animation-delay:.1s}.featured-card:nth-child(3).enter-view{animation-delay:.2s}.chart-bars i{transform-origin:bottom}.art-link:hover .chart-bars i,.art-link:focus-visible .chart-bars i{animation:.65s both bar-rise}.chart-bars i:nth-child(2n){animation-delay:90ms!important}.hex{transition:translate .3s}.art-link:hover .hex:nth-child(odd),.art-link:focus-visible .hex:nth-child(odd){translate:0 -6px}.art-link:hover .graph-art>path,.art-link:focus-visible .graph-art>path{stroke-dasharray:450;animation:1.2s both route-draw}.timeline-details:not([hidden]) .timeline-detail-inner{animation:.3s both arrive}.button svg,.text-link svg{transition:transform .2s}.button:hover svg{transform:translateY(3px)}.text-link:hover svg{transform:translate(2px,-2px)}@media (max-width:760px){.hero h1>span:after{height:4px;bottom:-5px}}@media (prefers-reduced-motion:reduce){.hero h1>span:after{transform:scaleX(1)}}
