:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f5f3ed;--ink:#20231f;--muted:#6d7169;--line:#d8d8cf;--green:#c9ed72;--orange:#ff805b;--blue:#a9c9f4;--serif:Georgia, "Times New Roman", serif;--sans:"Avenir Next", Avenir, "Segoe UI", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}.wrap{width:min(100% - 40px,1120px);margin-inline:auto}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:68px;display:flex}.wordmark{letter-spacing:-.03em;font-size:14px;font-weight:750;text-decoration:none}.wordmark span{color:#789629}nav{gap:clamp(10px,3vw,20px);display:flex}nav a{color:var(--muted);font-size:12px;font-weight:650;text-decoration:none}nav a:hover,.text-link:hover{color:#64811d}.hero{padding:58px 0 56px}.section-kicker{text-transform:uppercase;letter-spacing:.13em;font-size:10px;font-weight:750;line-height:1.4}.hero-layout{grid-template-columns:minmax(0,1fr) minmax(95px,29vw);align-items:center;gap:14px;display:grid}.hero-copy{min-width:0}.hero h1{letter-spacing:-.075em;margin:0 0 14px;font-size:clamp(34px,11vw,112px);font-weight:720;line-height:.93}.hero-role{margin:0 0 8px;font-size:12px;font-weight:700}.intro{max-width:440px;color:var(--muted);margin:0 0 18px;font-size:13px;line-height:1.6}.hero-photo{aspect-ratio:.78;width:100%;max-width:250px;color:var(--muted);background:#e9e3d6;border:1px dashed #a9aaa0;border-radius:14px;justify-self:end;place-items:center;display:grid;position:relative;overflow:hidden}.hero-photo:before{content:"";border:1px solid #20231f25;border-radius:8px;position:absolute;inset:12px}.hero-photo>span{z-index:1;letter-spacing:.1em;text-transform:uppercase;background:#e9e3d6;padding:8px;font-size:9px;font-weight:750}.hero-photo-image{object-fit:cover}.pill-link{background:var(--ink);color:#fff;border-radius:999px;flex:none;align-items:center;gap:10px;padding:12px 16px;font-size:12px;font-weight:700;text-decoration:none;transition:transform .2s,background .2s;display:inline-flex}.pill-link:hover{background:#41483b;transform:translateY(-2px)}.pill-link span{font-size:16px}.section-head{justify-content:space-between;align-items:end;margin-bottom:18px;display:flex}.section-head h2{letter-spacing:-.055em;margin:7px 0 0;font-size:30px}.section-kicker{color:var(--muted)}.count{color:var(--muted);font-size:11px}.projects{padding:8px 0 78px}.project-grid{grid-template-columns:1fr;gap:14px;display:grid}.project-card{min-width:0}.project-art{border-radius:12px;place-items:center;height:230px;display:grid;position:relative;overflow:hidden}.project-placeholder{place-items:center;display:grid;position:absolute;inset:0}.project-media{position:absolute;inset:0}.project-photo{object-fit:cover}.project-media video{object-fit:cover;width:100%;height:100%}.art-rover{background:var(--green)}.art-vision{background:var(--blue)}.art-mapping{background:#f7c5a8}.art-gripper{background:#ded8f1}.resume-badge{z-index:2;letter-spacing:.08em;text-transform:uppercase;background:#ffffffa8;border:1px solid #20231f12;border-radius:99px;padding:6px 9px;font-size:9px;font-weight:750;position:absolute;top:13px;right:13px}.orbit{border:1px solid #20231f42;border-radius:50%;width:180px;height:180px;position:absolute;transform:rotate(-24deg)scaleY(.36)}.orbit:after{content:"";background:var(--orange);border-radius:50%;width:10px;height:10px;position:absolute;top:23px;right:20px}.bot{background:var(--paper);border-radius:30px 30px 23px 23px;width:104px;height:104px;position:relative;transform:rotate(-6deg);box-shadow:12px 14px #20231f18}.bot:before{content:"";background:var(--ink);width:12px;height:12px;box-shadow:37px 0 var(--ink);border-radius:50%;position:absolute;top:34px;left:21px}.bot:after{content:"";border-bottom:2px solid var(--ink);border-radius:50%;width:34px;height:9px;position:absolute;top:62px;left:35px}.bot-antenna{background:var(--ink);width:2px;height:27px;position:absolute;top:-23px;left:51px;transform:rotate(6deg)}.bot-antenna:after{content:"";background:var(--orange);border-radius:50%;width:8px;height:8px;position:absolute;top:-4px;left:-3px}.arm{background:var(--ink);border-radius:99px;width:42px;height:12px;position:absolute;top:50px;right:-29px;transform:rotate(-35deg)}.arm:after{content:"";border:3px solid var(--ink);background:var(--orange);border-radius:50%;width:14px;height:14px;position:absolute;top:-1px;right:-9px}.wheel{border:7px solid var(--ink);background:var(--paper);width:29px;height:29px;box-shadow:47px 0 var(--paper), 47px 0 0 7px var(--ink);border-radius:50%;position:absolute;bottom:-17px;left:12px}.gear{border:1px solid #20231f5c;border-radius:50%;width:100px;height:100px;position:absolute}.gear:before,.gear:after{content:"";background:#20231f5c;width:1px;height:122px;position:absolute;top:-12px;left:49px}.gear:after{transform:rotate(60deg)}.gear-two{border:8px solid var(--ink);background:var(--orange);width:42px;height:42px}.gear-two:before{content:none}.scan{border:2px solid var(--ink);border-radius:50%;width:150px;height:90px;position:absolute;transform:rotate(-20deg)}.scan:before{content:"";border:1px dashed #20231f99;border-radius:50%;position:absolute;inset:12px 27px}.scan:after{content:"";background:var(--orange);border-radius:50%;width:12px;height:12px;position:absolute;top:11px;right:4px}.mini-rover{background:var(--ink);border-radius:30px 30px 14px 14px;width:108px;height:52px;position:relative;transform:rotate(8deg)}.mini-rover:before{content:"";background:var(--paper);border:2px solid var(--ink);border-radius:12px 12px 3px 3px;width:27px;height:20px;position:absolute;top:-16px;left:39px}.mini-rover:after{content:"";background:var(--orange);width:26px;height:10px;box-shadow:-39px 37px 0 -2px var(--ink), 39px 37px 0 -2px var(--ink);border-radius:10px;position:absolute;top:17px;left:41px}.media-arrow{width:38px;height:38px;color:var(--ink);cursor:pointer;background:#f5f3edeb;border:0;border-radius:50%;font-size:27px;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.media-arrow:hover{background:#fff}.media-prev{left:12px}.media-next{right:12px}.media-count{color:#fff;background:#20231fd9;border-radius:99px;padding:5px 8px;font-size:11px;position:absolute;bottom:12px;right:12px}.project-meta{grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;padding:14px 2px 3px;display:grid}.project-meta h3{letter-spacing:-.035em;margin:0;font-size:19px;line-height:1.2}.project-date{color:var(--muted);white-space:nowrap;padding-top:3px;font-size:12px;font-weight:650}.project-meta p{color:var(--muted);grid-column:1/-1;margin:0;font-size:14px;line-height:1.55}.project-meta .project-technologies{font-size:12px;line-height:1.55}.github-link{border:1px solid var(--line);border-radius:999px;grid-column:1/-1;justify-self:start;align-items:center;gap:8px;margin-top:3px;padding:9px 13px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.github-link:hover{background:var(--green);border-color:var(--green)}.arrow{border:1px solid var(--line);border-radius:50%;flex:none;place-items:center;width:29px;height:29px;text-decoration:none;display:grid}.arrow:hover{background:var(--green);border-color:var(--green)}.education{border-bottom:1px solid var(--line);padding:56px 0}.education h2{letter-spacing:-.05em;margin:8px 0 18px;font-size:25px}.education-item{border-top:1px solid var(--line);padding:13px 0}.education-item h3{margin:0 0 5px;font-size:14px}.education-item time{color:var(--muted);font-size:11px}.experience{padding:62px 0 70px}.experience h2{letter-spacing:-.055em;margin:7px 0 25px;font-size:30px}.job{border-top:1px solid var(--line);grid-template-columns:52px minmax(0,1fr);gap:14px;padding:18px 0;display:grid}.company-logo{border:1px solid var(--line);width:48px;height:48px;color:var(--ink);letter-spacing:-.04em;background:#fff;border-radius:12px;place-items:center;font-size:12px;font-weight:800;display:grid;overflow:hidden}.company-logo img{object-fit:contain;width:100%;height:100%;padding:5px}.job-content{min-width:0}.job-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.job h3{letter-spacing:-.02em;margin:0;font-size:16px;line-height:1.3}.job-heading time{color:var(--muted);white-space:nowrap;flex:none;padding-top:2px;font-size:12px;font-weight:650}.job-role{margin:3px 0 0;font-size:13px;line-height:1.45}.job-description{color:var(--ink);margin:10px 0 0;font-size:14px;line-height:1.6}.job-technologies{color:var(--muted);margin:7px 0 0;font-size:12px;line-height:1.55}.contact{background:var(--ink);color:var(--paper);padding:44px 0 22px}.contact-top{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:20px;padding-bottom:38px;display:flex}.contact h2{letter-spacing:-.07em;max-width:520px;margin:9px 0 0;font-size:clamp(38px,9vw,72px);line-height:.95}.contact .section-kicker{color:#b4b9aa}.contact .pill-link{color:var(--ink);background:var(--green);margin-top:8px}.contact-links{border-top:1px solid #ffffff2b;flex-wrap:wrap;gap:10px 18px;padding-top:17px;display:flex}.contact-links a{color:#d7dbd0;font-size:11px;text-decoration:none}.contact-links a:hover{color:var(--green)}.copyright{color:#92988d;padding-top:28px;font-size:10px}@media (min-width:700px){.wrap{width:min(100% - 72px,1120px)}.topbar{min-height:78px}nav{gap:30px}nav a{font-size:13px}.hero{padding:96px 0 78px}.hero-layout{grid-template-columns:minmax(0,1fr) minmax(190px,30%);gap:36px}.hero h1{font-size:clamp(64px,10vw,112px)}.hero-role{font-size:14px}.intro{font-size:16px}.projects{padding-bottom:98px}.project-grid{grid-template-columns:repeat(2,1fr);gap:28px 18px}.project-art{height:290px}.section-head{margin-bottom:24px}.section-head h2,.experience h2{font-size:38px}.education{padding:78px 0}.experience{padding:88px 0 96px}.job{grid-template-columns:60px minmax(0,1fr);gap:20px;padding:22px 0}.company-logo{width:56px;height:56px}.job h3{font-size:18px}.job-description{max-width:850px;font-size:15px}.contact{padding:60px 0 28px}.contact-top{align-items:end;padding-bottom:56px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important}}
