@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--paper:#f8f7f3;--ink:#20291f;--muted:#62685f;--line:#d9dcd2;--lime:#d5f18a}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,summary:focus-visible{outline:3px solid #517126;outline-offset:6px}.skip{position:absolute;top:-80px;left:20px;padding:10px;background:white;z-index:9}.skip:focus{top:10px}header,main,footer{max-width:1320px;margin:auto}header{display:flex;align-items:center;justify-content:space-between;padding:23px 56px;border-bottom:1px solid var(--line)}.brand{font-family:'Manrope',sans-serif;font-size:34px;font-weight:800;letter-spacing:-3px}.brand span{color:#73993d}nav{display:flex;align-items:center;gap:32px;font-size:14px}.nav-contact{border:1px solid var(--ink);padding:9px 17px;border-radius:30px}.hero{padding:90px 56px 0}.eyebrow{font-size:11px;letter-spacing:1.7px;font-weight:700;margin:0 0 22px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#68963f;margin-right:9px}h1,h2,h3{font-family:Manrope,sans-serif;font-weight:500;line-height:1.12;letter-spacing:-2px;margin:0}h1{font-size:clamp(52px,6.8vw,88px);letter-spacing:-5px}h1>span{color:#78816f}.hero-bottom{display:flex;align-items:center;justify-content:space-between;gap:60px;margin:32px 0 58px}.hero-bottom p{max-width:590px;font-size:18px;color:var(--muted)}strong{font-weight:600;color:var(--ink)}.hero-actions{min-width:220px;display:flex;flex-direction:column;gap:16px;align-items:center}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;padding:15px 23px;border-radius:6px;background:var(--ink);color:white;font-size:14px}.button:hover{background:#43583b}.text-link{font-size:14px;border-bottom:1px solid var(--ink)}.credentials{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0;display:flex;gap:40px;justify-content:space-between;font-size:12px;color:var(--muted)}.work,.experience,.about{padding:88px 56px}.section-title{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:35px}h2{font-size:38px;letter-spacing:-1.5px}.section-title>p{font-size:13px;color:var(--muted)}.projects{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}.project{border:1px solid var(--line);padding:24px;background:#fffefa;border-radius:9px;overflow:hidden}.project-top{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px;font-weight:700}.project-mark{height:145px;display:grid;place-items:center;font-family:Manrope,sans-serif;font-size:76px;font-weight:500;margin:20px -8px 25px;border-radius:5px;letter-spacing:-6px}.purple .project-mark{background:#e8e4f2;color:#6a568e}.green .project-mark{background:#e5ebdb;color:#4a6240}.orange .project-mark{background:#f1e5d4;color:#996b32}.stack{font-size:10px;color:var(--muted)}.project h3{font-size:25px;letter-spacing:-1px}.project-intro{font-size:15px;line-height:1.5;min-height:45px;margin-bottom:10px}.project-body{font-size:13px;line-height:1.75;color:var(--muted);min-height:91px}details{border-top:1px solid var(--line);font-size:13px}summary{padding:15px 0;cursor:pointer;list-style:none;display:flex;justify-content:space-between}summary::-webkit-details-marker{display:none}details[open] summary span{transform:rotate(45deg)}.detail-content{padding-bottom:10px}.detail-content p{color:var(--muted);font-size:13px}.detail-content h4{margin-bottom:0}.date{font-size:11px!important}.repo-link{display:flex;justify-content:space-between;font-size:13px;border-top:1px solid var(--line);padding-top:15px}.repo-link:hover{text-decoration:underline}.experience{background:#eeeee7}.featured{background:var(--ink);color:#f9f9f2;padding:40px;border-radius:9px;display:grid;grid-template-columns:1fr 210px;gap:65px}.featured .eyebrow{color:var(--lime)}.featured h3{font-size:30px;letter-spacing:-1px}.featured p{color:#c9d1c5;font-size:14px}.featured .role{font-size:12px;margin-top:20px}.tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:25px}.tags span{font-size:10px;border:1px solid #5a6556;padding:4px 9px;border-radius:20px}.metrics{border-left:1px solid #52614d;padding-left:30px;display:flex;flex-direction:column;justify-content:space-between}.metrics div{margin-bottom:20px}.metrics strong{display:block;color:var(--lime);font-size:38px;letter-spacing:-1px;line-height:1.3}.metrics span{display:block;font-size:12px;color:#c9d1c5}.experience-row{display:grid;grid-template-columns:1fr 1.5fr;gap:70px;padding:30px 0;border-bottom:1px solid #ccd1c3}.experience-row h3{font-size:21px;letter-spacing:-.5px}.experience-row span{font-size:12px;color:var(--muted)}.experience-row p{font-size:14px;color:var(--muted);margin:0}.about{display:grid;grid-template-columns:1fr 1fr;gap:70px}.about>div>p:not(.eyebrow){font-size:15px;color:var(--muted);margin-top:0}.skill-groups{display:flex;gap:35px;border-top:1px solid var(--line);margin-top:26px;padding-top:10px}.skill-groups h4{font-size:12px;margin-bottom:6px}.skill-groups p{font-size:12px;color:var(--muted)}.contact{background:var(--lime);margin:0 56px 70px;padding:48px;border-radius:9px}.contact h2{font-size:49px;margin-bottom:30px}.contact h2 span{color:#688e2c}.email{margin-left:25px;font-size:13px}footer{padding:25px 56px 35px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted)}footer div{display:flex;gap:25px}@media(max-width:900px){header{padding:20px 28px}.hero{padding:60px 28px 0}.work,.experience,.about{padding:60px 28px}.projects{gap:12px}.project{padding:18px}.hero-bottom{gap:25px}.credentials{gap:20px}.featured{gap:30px;padding:30px}.about{gap:30px}.contact{margin:0 28px 50px}.email{display:block;margin:20px 0 0}.experience-row{gap:30px}footer{padding:25px 28px}}@media(max-width:650px){header{padding:16px 22px}nav{gap:17px;font-size:12px}.nav-contact{display:none}.hero{padding:50px 22px 0}h1{font-size:53px;letter-spacing:-3px}.hero-bottom{display:block;margin-bottom:35px}.hero-bottom p{font-size:16px}.hero-actions{flex-direction:row;justify-content:start;min-width:0;margin-top:26px;gap:24px}.credentials{flex-direction:column;gap:8px;padding:20px 0}.work,.experience,.about{padding:48px 22px}.section-title{display:block}.section-title>p{margin-bottom:0}h2{font-size:31px}.projects{grid-template-columns:1fr;gap:22px}.project{padding:24px}.project-mark{height:130px}.project-intro,.project-body{min-height:0}.featured{display:block;padding:25px}.featured h3{font-size:27px}.metrics{border-left:0;border-top:1px solid #52614d;padding:22px 0 0;margin-top:25px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.metrics strong{font-size:26px}.metrics span{font-size:10px}.metrics div{margin:0}.experience-row{grid-template-columns:1fr;gap:12px}.about{grid-template-columns:1fr;gap:25px}.contact{margin:0 22px 40px;padding:28px}.contact h2{font-size:36px}footer{padding:24px 22px;flex-wrap:wrap;font-size:11px}.skill-groups{gap:25px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.google-project{margin-top:26px;background:#e7ecdf;border:1px solid #cfd8c4;border-radius:9px;padding:32px;display:grid;grid-template-columns:1.2fr 1fr;gap:50px}.google-project h3{font-size:32px;letter-spacing:-1px}.google-project p,.google-project li{font-size:14px;color:var(--muted)}.google-project .google-lead{font-size:18px;color:var(--ink)}.google-project h4{margin:0 0 16px;font-size:14px}.google-project ul{padding-left:20px}.google-project li{margin-bottom:12px}.google-project .tags span{border-color:#a9b79c}.google-note{margin-top:25px;font-size:12px!important}.challenge{margin-top:25px;border-color:#52614d}.challenge summary{font-size:14px;color:var(--lime);gap:20px}.challenge p{font-size:14px}@media(max-width:650px){.google-project{grid-template-columns:1fr;padding:24px;gap:22px}.google-project h3{font-size:28px}}
/* Personal introduction and visual portfolio */
.hero{padding-top:58px}.hero-grid{display:grid;grid-template-columns:1.35fr 1fr;align-items:center;gap:58px;margin-bottom:48px}.hero-name{font-size:21px;margin:0 0 18px;font-weight:600}.hero h1{font-size:clamp(40px,4.5vw,63px);letter-spacing:-3px;line-height:1.12}.hero-intro{font-size:17px;color:var(--muted);max-width:540px;margin:25px 0 30px}.hero .hero-actions{flex-direction:row;justify-content:start;gap:24px}.hero-portrait{margin:0;position:relative;overflow:hidden;border-radius:140px 140px 12px 12px;background:#32aaa4}.hero-portrait img{display:block;width:100%;height:510px;object-fit:cover;object-position:center 34%}.hero-portrait figcaption{position:absolute;bottom:0;left:0;right:0;padding:35px 20px 20px;background:linear-gradient(transparent,rgba(0,0,0,.75));color:white;font-size:12px;text-align:center;letter-spacing:.4px}.demo-block{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.5fr;gap:32px;border-top:1px solid #c1cdb4;padding-top:28px}.video-frame{aspect-ratio:16/9;background:#20291f;border-radius:8px;overflow:hidden}.video-frame iframe{width:100%;height:100%;border:0}.approach{padding:88px 56px 30px;display:grid;grid-template-columns:1fr 1fr;gap:70px}.approach-lead{color:var(--muted);font-size:17px;margin-top:26px}.approach-copy>p{color:var(--muted);font-size:15px;margin-top:0;margin-bottom:20px}.approach-values{display:flex;gap:9px;flex-wrap:wrap}.approach-values span{border:1px solid var(--line);border-radius:30px;padding:5px 12px;font-size:11px}.about{padding-top:55px}.photography{padding:70px 56px 85px;border-top:1px solid var(--line)}.photography-intro{display:grid;grid-template-columns:1fr 1fr;gap:55px;align-items:center;margin-bottom:40px}.photography-intro h3{font-size:27px;letter-spacing:-1px}.photography-intro p{color:var(--muted);font-size:15px}.photography-intro .gallery-hint{font-size:13px}.camera-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}.camera-photo{height:300px;overflow:hidden;position:relative;border-radius:7px;background:#7faccc}.camera-photo img{position:absolute;width:100%;height:auto;left:0}.camera-photo.side img{top:-30px}.camera-photo.front img{top:-70px}.gallery-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;font-size:11px;letter-spacing:1.5px}.gallery-controls{display:flex;gap:10px}.gallery-controls[hidden]{display:none}.gallery-controls button{height:42px;width:42px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);font-size:21px;cursor:pointer}.gallery-controls button:hover:not(:disabled){background:var(--lime)}.gallery-controls button:disabled{opacity:.3;cursor:default}button:focus-visible,.photo-gallery:focus-visible{outline:3px solid #517126;outline-offset:4px}.photo-gallery{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:18px;scrollbar-color:#a6b397 transparent}.gallery-slide{flex:0 0 70%;min-width:0;margin:0;scroll-snap-align:start}.gallery-slide>a{display:block;background:#e9eae3;border-radius:8px;overflow:hidden}.gallery-slide img{display:block;width:100%;height:410px;object-fit:contain}.gallery-slide figcaption{display:flex;gap:20px;margin-top:12px;font-size:13px}.gallery-slide figcaption span{color:var(--muted);font-size:11px;letter-spacing:1px}
@media(max-width:1000px){.hero-grid{gap:30px}.hero-portrait img{height:450px}.hero h1{font-size:46px}.approach,.photography{padding-left:28px;padding-right:28px}.photography-intro{gap:28px}.camera-photo{height:245px}.camera-photo.side img{top:-24px}.camera-photo.front img{top:-52px}}
@media(max-width:650px){.hero{padding-top:35px}.hero-grid{grid-template-columns:1fr;gap:30px;margin-bottom:30px}.hero h1{font-size:43px;letter-spacing:-2px}.hero-name{font-size:18px}.hero-intro{font-size:16px}.hero-portrait{max-width:380px;width:100%;justify-self:center;border-radius:110px 110px 10px 10px}.hero-portrait img{height:420px}.hero .hero-actions{gap:22px;flex-wrap:wrap}.photo-nav{display:none}.approach{grid-template-columns:1fr;padding:48px 22px 0;gap:20px}.approach-lead{font-size:16px}.about{padding-top:40px}.demo-block{grid-template-columns:1fr;gap:22px}.photography{padding:45px 22px}.photography-intro{grid-template-columns:1fr;gap:25px}.camera-photo{height:260px}.camera-photo.side img{top:-22px}.camera-photo.front img{top:-49px}.gallery-slide{flex-basis:90%}.gallery-slide img{height:300px}.gallery-slide figcaption{font-size:12px;gap:12px}.gallery-heading{letter-spacing:1px}}

.camera-photo{height:auto;aspect-ratio:4/5}.camera-photo.side img{top:-10%}.camera-photo.front img{top:-25%}.text-link svg{display:inline-block;vertical-align:middle}
