:root{--paper:#faf9f5;--ink:#25352f;--muted:#657068;--line:#dcded5;--sage:#e8eddf;--lilac:#eee8f4;--peach:#f7e8db;--blue:#e6edf3;--accent:#46644b}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:5px}button{font:inherit;color:inherit}img{display:block;max-width:100%;height:auto}figure{margin:0}p{margin:0 0 1em}h1,h2,h3{line-height:1.15;font-weight:500;margin:0;letter-spacing:-.035em}h1,h2,.project-title{font-family:Georgia,'Times New Roman',serif}h1{font-size:clamp(40px,5.7vw,68px)}h2{font-size:clamp(26px,3vw,32px)}h3{font-size:23px}a:focus-visible,button:focus-visible,summary:focus-visible,video:focus-visible{outline:3px solid #657e6b;outline-offset:6px}::selection{background:#d9e4cf}.wrap{width:min(1080px,calc(100% - 80px));margin-inline:auto}.skip{position:absolute;left:24px;top:-100px;background:white;padding:10px;z-index:10}.skip:focus{top:10px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:28px 0;border-bottom:1px solid var(--line);gap:20px}.wordmark{font-size:19px;font-weight:650;letter-spacing:-.055em;text-decoration:none}.wordmark::after{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:#a9bd95;margin-left:5px}.nav{display:flex;gap:26px;font-size:13px}.nav a{text-decoration:none}.nav a:hover{text-decoration:underline}.hero{display:grid;grid-template-columns:1.4fr 1fr;align-items:center;gap:80px;padding:65px 0 72px}.eyebrow{font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:600;display:block;margin-bottom:18px;color:var(--muted)}.hero h1{margin-bottom:22px}.hero .intro{font-size:21px;line-height:1.55;max-width:550px;letter-spacing:-.02em}.hero .subintro{max-width:480px;color:var(--muted);font-size:15px}.inline-links{display:flex;gap:12px 20px;flex-wrap:wrap;margin-top:24px;font-size:13px}.inline-links a{white-space:nowrap}.portrait-frame{position:relative;padding:0 13px 13px 0}.portrait-frame::before{content:'';position:absolute;inset:16px 0 0 16px;background:var(--lilac);border-radius:4px 35px 4px 4px}.portrait-frame img{position:relative;width:100%;aspect-ratio:1.15;object-fit:cover;object-position:50% 45%;border-radius:4px 35px 4px 4px}.tiny-note{margin:12px 0 0;font-size:12px;color:var(--muted)}.section-head{display:flex;justify-content:space-between;gap:20px;align-items:baseline;margin-bottom:28px}.section-head p{font-size:13px;color:var(--muted);margin:0}.section{padding-bottom:78px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}.project{min-width:0}.project-image{position:relative;display:block;overflow:hidden;border-radius:6px;background:var(--sage)}.project-image img{width:100%;aspect-ratio:1.45;object-fit:cover;transition:transform .45s ease}.project-image:hover img{transform:scale(1.025)}.project-image .rsi-cover{object-position:50% 24%}.image-label{position:absolute;bottom:15px;left:15px;border-radius:30px;padding:6px 13px;background:var(--paper);font-size:11px;font-weight:600;box-shadow:0 2px 12px #17281b12}.project .eyebrow{margin:22px 0 11px;font-size:10px;letter-spacing:.1em}.project-title{font-size:30px;line-height:1.12;max-width:430px;margin-bottom:14px}.project-title a{text-decoration:none}.project-title a:hover{text-decoration:underline}.project p{font-size:14px;color:var(--muted);margin-bottom:14px;max-width:450px}.text-link{font-size:13px;text-decoration:none;border-bottom:1px solid #9aa896;padding-bottom:3px;display:inline-block}.text-link:hover{color:var(--accent)}.more-work{margin-top:43px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.small-project{display:flex;flex-direction:column;align-items:flex-start;padding:26px 24px;border-radius:6px;background:var(--lilac)}.small-project:nth-child(2){background:var(--blue)}.small-project:nth-child(3){background:var(--peach)}.small-project .eyebrow{margin:0 0 14px;font-size:10px}.small-project h3{font-size:21px;line-height:1.25;letter-spacing:-.025em;margin-bottom:12px}.small-project p{font-size:13px;line-height:1.65;color:#4f5d55;margin-bottom:20px}.small-project .text-link{margin-top:auto}.moments{border-top:1px solid var(--line);padding-top:43px}.moments-intro{max-width:590px;font-size:15px;color:var(--muted);margin:18px 0 28px}.photo-button{display:block;background:none;border:0;padding:0;width:100%;cursor:zoom-in;text-align:left}.photo-button:hover img{filter:brightness(1.035)}figcaption{font-size:12px;color:var(--muted);line-height:1.6;margin-top:10px}.contact{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:30px;padding:40px 0 30px}.contact h2{font-size:30px}.contact p{color:var(--muted);font-size:14px;margin:12px 0 0}.contact>a{white-space:nowrap}.footer{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;padding:18px 0 32px}.footer a{margin-left:20px}.case-header{padding:52px 0 38px}.back{font-size:12px;display:inline-block;margin-bottom:34px;text-decoration:none}.case-header h1{font-size:clamp(37px,5vw,60px);max-width:850px;margin-bottom:23px}.case-header .lede{font-size:20px;line-height:1.6;max-width:740px;color:var(--muted)}.case-meta{font-size:12px;color:var(--muted);margin-top:24px;display:flex;gap:25px;flex-wrap:wrap}.case-wide{width:100%;border-radius:6px;max-height:650px;object-fit:cover}.case-content{max-width:760px;margin:50px auto 64px}.case-content h2{font-size:30px;margin:42px 0 18px}.case-content h3{margin:28px 0 12px;font-size:20px}.case-content p,.case-content li{color:#4d5b53;font-size:16px}.case-content ul{padding-left:22px}.case-content li{margin:10px 0}.video-shell{background:#111815;border-radius:7px;overflow:hidden;line-height:0}.video-shell video{width:100%;aspect-ratio:16/9;display:block}.video-caption{font-size:12px;color:var(--muted);margin-top:11px}.tech-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:25px 0}.tech-step{padding:20px 18px;background:var(--sage);border-radius:5px}.tech-step b{display:block;font-size:14px;margin-bottom:7px;font-weight:600}.tech-step p{font-size:12px;line-height:1.6;margin:0}.case-photos{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:30px 0}.case-photos img{aspect-ratio:1.2;object-fit:cover;width:100%;border-radius:5px}.full-figure{margin:30px 0}.full-figure img{width:100%;border-radius:4px}.note{border-left:3px solid #bdcdb4;padding:12px 20px;background:var(--sage);font-size:14px;margin:25px 0}.note p{margin:0;font-size:14px}.case-divider{border:0;border-top:1px solid var(--line);margin:48px 0}.research-photo{width:100%;max-height:560px;object-fit:contain;background:var(--lilac);border-radius:6px}.photo-dialog{border:0;border-radius:8px;padding:18px;background:var(--paper);width:min(1000px,94vw);max-height:94vh;color:var(--ink)}.photo-dialog::backdrop{background:#14251bcc;backdrop-filter:blur(5px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:12px;font-size:13px}.dialog-top p{margin:0}.dialog-top button{border:1px solid var(--line);border-radius:20px;padding:5px 15px;background:transparent;cursor:pointer}.photo-dialog img{max-height:76vh;object-fit:contain;width:100%}.no-js-note{font-size:12px;color:var(--muted)}
@media(min-width:1500px){.wrap{width:1120px}.hero{padding-top:75px;padding-bottom:85px}}
@media(max-width:800px){.wrap{width:calc(100% - 44px)}.hero{gap:32px;padding:44px 0 50px;grid-template-columns:1.2fr 1fr}.hero .intro{font-size:18px}.project-grid{gap:22px}.project-title{font-size:26px}.more-work{grid-template-columns:1fr;gap:14px}.small-project{padding:24px}.small-project p{max-width:620px}.section{padding-bottom:55px}.contact{align-items:flex-start}.contact h2{font-size:26px}.section-head p{display:none}}
@media(max-width:540px){.wrap{width:calc(100% - 36px)}.topbar{padding:23px 0}.nav{gap:16px;font-size:12px}.nav .optional{display:none}.hero{grid-template-columns:1fr;gap:26px;padding:36px 0 48px}.hero h1{font-size:43px}.hero .intro{font-size:19px}.hero-portrait{width:100%;max-width:380px}.portrait-frame img{aspect-ratio:1.45;object-position:center 35%}.project-grid{grid-template-columns:1fr;gap:38px}.project-title{font-size:29px}.project .eyebrow{margin-top:17px}.more-work{margin-top:32px}.contact{display:block}.contact>a{margin-top:23px}.contact h2{font-size:29px}.footer{gap:12px;align-items:flex-start}.footer a{margin-left:12px}.case-header{padding-top:32px}.case-header h1{font-size:38px}.case-header .lede{font-size:18px}.case-content{margin-top:32px}.tech-steps{grid-template-columns:1fr}.tech-step{padding:18px}.case-photos{grid-template-columns:1fr}.research-photo{max-height:470px}.case-meta{gap:10px 20px}}
@media(max-width:360px){.topbar{flex-wrap:wrap;gap:12px}.nav{width:100%;justify-content:space-between}.hero h1{font-size:39px}.footer{flex-wrap:wrap}.footer a{margin-left:0;margin-right:16px}}.footer{flex-wrap:wrap;gap:16px 24px}.footer-links{display:flex;flex-wrap:wrap;gap:12px 20px}.footer .footer-links a{margin:0;white-space:nowrap}
.affiliation{display:flex;align-items:center;gap:16px;margin:0 0 24px}.affiliation strong{flex-shrink:0;background:var(--sage);border-radius:5px;padding:8px 14px;font-size:30px;line-height:1.2;letter-spacing:-.04em;font-weight:750}.affiliation>span{font-size:18px;line-height:1.4;min-width:0}.affiliation small{display:block;margin-top:4px;font-size:12px;color:var(--muted)}
@media(max-width:540px){.affiliation{gap:13px}.affiliation>span{font-size:16px}.affiliation strong{font-size:29px;padding:8px 12px}}
.hero .mission{max-width:510px;font-size:21px;line-height:1.55;letter-spacing:-.015em;margin:0;color:var(--ink)}.experience-intro{padding:0 0 35px;margin-bottom:45px;border-bottom:1px solid var(--line)}.experience-intro>h2{font-size:clamp(26px,3vw,32px);margin-bottom:24px}.experience-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}.experience-grid article{min-width:0}.experience-grid h3{font-size:17px;line-height:1.4;letter-spacing:-.015em;font-weight:600;margin:0 0 6px}.experience-grid h3 a{text-decoration:none}.experience-grid h3 a:hover{text-decoration:underline}.experience-grid p{font-size:13px;line-height:1.7;margin:0}.experience-grid .experience-role{font-size:11px;color:var(--muted);margin-bottom:11px;line-height:1.5}
@media(max-width:800px){.experience-grid{gap:22px}.experience-grid h3{font-size:16px}.hero .mission{font-size:19px}}
@media(max-width:640px){.experience-grid{grid-template-columns:1fr;gap:23px}.experience-grid article+article{padding-top:23px;border-top:1px solid var(--line)}.experience-intro{padding-bottom:28px;margin-bottom:35px}.experience-grid p{max-width:520px}.experience-grid .experience-role{margin-bottom:8px}}
.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}.project-grid>.project{display:flex;flex-direction:column;align-items:flex-start}.project-grid .project-image{width:100%;flex-shrink:0}.project-grid .project-image img{aspect-ratio:1.45}.project-image .ramp-cover{object-fit:cover;object-position:center}.project-grid .project-title{font-size:27px;min-height:2.24em}.project-grid .text-link{margin-top:auto}.project-grid .image-label{max-width:calc(100% - 24px);left:12px;bottom:12px;font-size:10px}.more-work-pair{grid-template-columns:repeat(2,minmax(0,1fr))}.ramp-photos{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:30px 0}.ramp-photos img{width:100%;height:auto;border-radius:5px}.experience-grid strong{font-weight:600}.case-content .early-selection{font-size:18px;color:var(--ink);line-height:1.6}
@media(max-width:760px){.project-grid{grid-template-columns:1fr;gap:36px}.project-grid .project-title{font-size:29px;min-height:0}.project-grid .text-link{margin-top:0}}
@media(max-width:640px){.more-work-pair,.ramp-photos{grid-template-columns:1fr}.ramp-photos{gap:25px}}

.affiliation-branded{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:20px}.mit-logo-frame{display:block;width:180px;max-width:100%;height:56px;overflow:hidden}.mit-logo-frame .mit-logo{display:block;width:100%;height:auto;transform:translateY(-24%)}.affiliation-branded>span:not(.mit-logo-frame){font-size:16px;line-height:1.4}.hero .intro-evidence{max-width:510px;font-size:14px;line-height:1.7;color:var(--muted);margin:16px 0 0}.intro-evidence a{color:var(--ink)}
@media(max-width:540px){.mit-logo-frame{width:170px;height:52px}}
.hero .mission{font-size:20px;line-height:1.6;max-width:540px}.project .eyebrow{font-size:12px;letter-spacing:0;text-transform:none;font-weight:400}.more-work .small-project{background:transparent;border-radius:0;border-top:1px solid var(--line);padding:22px 0}.small-project .eyebrow{letter-spacing:0;text-transform:none;font-size:12px;font-weight:400}.portrait-frame{padding:0}.portrait-frame::before{display:none}.portrait-frame img{border-radius:5px}.project-image img{transition:none}.project-image:hover img{transform:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}
.hero .intro-evidence{font-size:19px;line-height:1.65;color:var(--ink);margin:0;max-width:540px}@media(max-width:540px){.hero .intro-evidence{font-size:17px}}

/* One shared layout for every memory group. */
.experience-dates { display: block; margin-top: 3px; }
.memory-group {
  display: grid;
  grid-template-columns: minmax(180px, 220px) minmax(0, 1fr);
  align-items: start;
  gap: 32px;
  margin-top: 32px;
}
.memory-group + .memory-group {
  margin-top: 36px;
  padding-top: 36px;
  border-top: 1px solid var(--line);
}
.memory-heading h3 { font-size: 20px; line-height: 1.35; letter-spacing: -.02em; }
.memory-context, .memory-caption, .camp-context {
  margin: 12px 0 0;
  font-size: 13px;
  line-height: 1.65;
  color: var(--muted);
}
.memory-caption { font-style: italic; }
.then-now, .photo-grid, .camp-gallery {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: 18px;
  min-width: 0;
}
.then-now { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.memory-group figure { min-width: 0; }
.memory-group img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 5px;
}
.then-now img { aspect-ratio: 8 / 9; object-fit: contain; }
.photo-grid .portrait { object-position: 50% 80%; }
.memory-group figcaption { margin-top: 10px; font-size: 12px; line-height: 1.5; }
@media (max-width: 800px) {
  .memory-group { grid-template-columns: 1fr; gap: 20px; }
  .memory-heading { max-width: 600px; }
  .then-now { max-width: none; }
}
@media (max-width: 540px) {
  .memory-group { margin-top: 24px; gap: 18px; }
  .memory-group + .memory-group { margin-top: 28px; padding-top: 28px; }
  .photo-grid, .camp-gallery { grid-template-columns: 1fr; gap: 24px; }
  .then-now { gap: 14px; }
  .memory-heading h3 { font-size: 19px; }
}
