:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:DM Sans,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0}button{font:inherit}#root{min-height:100vh}:root{--yellow:#fffdf7;--yellow-soft:#fff4b8;--photo-bg:#f0dc83;--ink:#33282d;--muted:#786b6f;--line:#e8d66f;--gold:#d8b928;--gold-light:#e7cf50;--gold-dark:#c5a400;--gold-text:#9a7f18;--gold-mid:#b19b42;--sans:"DM Sans", sans-serif;--display:"Fraunces", Georgia, serif;--mono:var(--sans);--btn-bg:var(--yellow);--btn-border:var(--gold);--btn-bg-hover:var(--gold);--btn-text:var(--ink)}html{scroll-padding-top:90px}body{background:var(--yellow);color:var(--ink)}main{background:var(--yellow);min-height:100vh}a{color:inherit}a:hover{color:var(--gold-dark)}h2{font:500 clamp(37px, 5vw, 68px)/1 var(--display);letter-spacing:-2px;margin:0 0 35px}h4{color:var(--muted);margin:0 0 13px}ul{color:var(--muted);font:12px/1.65 var(--sans);margin:0;padding:0 0 0 17px}nav a,h4,.footer{font:11px var(--mono);text-transform:uppercase;letter-spacing:.8px}.page-width{width:min(1120px,100% - 64px);margin:0 auto}.section{border-top:1px solid var(--line);padding:90px 0 120px}.about{padding-bottom:45px}.contact{padding-bottom:100px}.projects-content>h2,.experience-content>h2,.skills-section-content>h2,.about-content>h2,.contact-content>h2{text-align:center;margin:0 auto 58px}.projects-content>h2:after,.experience-content>h2:after,.skills-section-content>h2:after,.about-content>h2:after,.contact-content>h2:after{content:"";background:var(--gold-light);width:66px;height:4px;margin:22px auto 0;display:block}.site-bar{z-index:15;background:var(--yellow);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header{justify-content:space-between;align-items:center;height:86px;display:flex;position:relative}.logo{font:600 27px/1 var(--display);letter-spacing:-1px;text-decoration:none}.logo span{color:var(--gold)}nav{gap:28px;display:flex}nav a{color:var(--muted);text-decoration:none}nav a:hover{color:var(--gold-dark)}.menu-toggle{display:none}.button-link,.project-details-button,.project-links a,.social-links a,.back-button,.modal-close,.menu-toggle{background:var(--btn-bg);border:1px solid var(--btn-border);color:var(--btn-text)}.button-link:hover,.project-details-button:hover,.project-links a:hover,.social-links a:hover,.back-button:hover,.modal-close:hover,.menu-toggle:hover{background:var(--btn-bg-hover);border-color:var(--btn-border);color:var(--btn-text)}.button-link,.project-details-button,.project-links a,.social-links a,.back-button{text-transform:uppercase;border-radius:7px;align-items:center;text-decoration:none;transition:background .2s,color .2s,transform .2s;display:inline-flex}.button-link{font:11px var(--mono);border-radius:8px;margin-top:32px;padding:13px 17px}.project-details-button,.project-links a{font:10px var(--mono);padding:7px 9px}.project-details-button{cursor:pointer}.social-links a{padding:10px 12px}.back-button{font:600 13px var(--mono);letter-spacing:.8px;border-radius:12px;gap:10px;padding:16px 26px}.back-button:hover{transform:translate(-2px)}.button-link span,.project-details-button span,.project-links span,.social-links span{color:var(--gold);margin-left:8px}.button-link:hover span,.project-details-button:hover span,.project-links a:hover span,.social-links a:hover span{color:var(--btn-text)}.project-links{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.intro{grid-template-columns:1fr 1fr;align-items:start;gap:88px;padding:80px 0 90px;display:grid}.intro-content{min-width:0}.intro h1{max-width:800px;font:600 clamp(48px, 7vw, 92px)/.95 var(--display);letter-spacing:-3px;margin:22px 0}.intro h1 span{color:var(--gold-dark)}.intro-copy{max-width:420px;color:var(--muted);font:18px/1.6 var(--sans)}.profile-photo{width:100%;max-width:440px;height:320px;color:var(--gold-text);text-align:center;border-radius:24px;place-items:center;margin-top:32px;display:grid;position:relative;overflow:hidden}.profile-photo img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.photo-fallback{background:var(--photo-bg);width:100%;height:100%;color:var(--gold-text);font:11px/1.7 var(--mono);text-transform:uppercase;letter-spacing:.7px;place-items:center;display:grid}.now-panel{border:1px solid var(--line);background:var(--yellow-soft);box-shadow:8px 8px 0 var(--gold-light);border-radius:28px;align-self:center;padding:26px}.now-header{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:18px;padding-bottom:14px;display:flex}.now-header h2{font:500 clamp(24px, 2.6vw, 32px)/1 var(--display);letter-spacing:-.5px;margin:0}.now-updated{color:var(--muted);font:11px var(--mono);text-transform:uppercase;letter-spacing:.8px;align-items:center;gap:8px;display:inline-flex}.now-updated i{background:var(--gold);border-radius:50%;width:8px;height:8px;animation:2s ease-in-out infinite now-pulse}.now-grid{grid-template-columns:1fr;gap:12px;display:grid}.now-card{border:1px solid var(--line);background:var(--yellow);border-radius:14px;padding:16px 18px;text-decoration:none;transition:transform .2s,box-shadow .2s;display:block}a.now-card:hover{box-shadow:4px 4px 0 var(--gold-light);color:inherit;transform:translateY(-2px)}.now-card h3{font:600 20px/1.15 var(--display);letter-spacing:-.3px;margin:6px 0 4px}.now-card p{color:var(--muted);font:13px/1.55 var(--sans);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 4px;display:-webkit-box;overflow:hidden}.now-card .now-org{color:var(--ink);font-weight:500}.now-card .now-update{color:var(--gold-mid);font:11px var(--mono);text-transform:uppercase;letter-spacing:.6px}.experience-list{gap:16px;display:grid}.experience-item{padding:12px 0}.experience-organization{color:var(--gold-text);font:12px var(--mono);text-transform:uppercase;letter-spacing:.8px}.experience-role{border-left:2px solid var(--yellow-soft);padding:22px 0 8px 24px}.experience-role+.experience-role{margin-top:12px}.experience-meta,.project-meta,.story-date{color:var(--gold-mid);font:10px var(--mono);text-transform:uppercase;letter-spacing:.7px}.experience-meta,.project-meta{justify-content:space-between;gap:12px;display:flex}.experience-role h3{font:600 28px/1.1 var(--display);margin:12px 0}.experience-role p{color:var(--muted);font:14px/1.65 var(--sans);margin:0 0 14px}.experience-role ul{gap:8px;padding:0;list-style:none;display:grid}.experience-role li{font:12px/1.5 var(--sans)}.experience-role li:before{content:"•";color:var(--gold);margin-right:8px}.project-list{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:24px;width:100%;margin:0 auto;display:grid}.project-card{background:var(--yellow-soft);border:1px solid var(--line);border-radius:24px;flex-direction:column;transition:transform .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.project-card:hover{box-shadow:6px 6px 0 var(--gold-light);transform:translateY(-4px)}.project-card-body{flex-direction:column;flex:1;min-height:0;display:flex}.project-card-details{flex-direction:column;flex:1;min-width:0;padding:22px;display:flex}.project-card-hit{z-index:1;cursor:pointer;background:0 0;border:0;border-radius:24px;position:absolute;inset:0}.project-card-hit:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.project-photo{aspect-ratio:16/10;background:var(--photo-bg);color:var(--gold-text);position:relative;overflow:hidden}.project-photo span{font:11px var(--mono);text-transform:uppercase;letter-spacing:.8px;place-items:center;display:grid;position:absolute;inset:0}.project-photo img{object-fit:contain;border-radius:10px;width:calc(100% - 28px);height:calc(100% - 28px);position:absolute;inset:14px}.project-heading{align-items:start;gap:15px;margin-top:16px;display:flex}.project-heading h3{font:600 24px/1.1 var(--display);letter-spacing:-.5px;text-align:left;margin:0}.project-description{color:var(--muted);font:13px/1.6 var(--sans);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:12px 0 16px;display:-webkit-box;overflow:hidden}.project-section{border-top:1px solid var(--line);margin-top:4px;padding-top:12px}.project-actions{flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:20px;display:flex}.project-actions a{z-index:2;position:relative}.skills{flex-wrap:wrap;gap:6px;display:flex}.skills span{border:1px solid var(--line);font:10px var(--mono);padding:6px 8px}.project-modal-backdrop{z-index:20;background:#33282d6b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.project-modal{border:1px solid var(--line);background:var(--yellow-soft);border-radius:24px;grid-template-columns:1fr 1fr;width:min(920px,100%);max-height:min(760px,100vh - 48px);display:grid;position:relative;overflow:auto;box-shadow:0 24px 70px #33282d38}.project-modal.no-image{grid-template-columns:1fr;width:min(560px,100%)}.modal-close{z-index:1;cursor:pointer;width:34px;height:34px;font:24px/1 var(--sans);border-radius:50%;position:absolute;top:16px;right:18px}.modal-image-wrap{background:var(--photo-bg);place-items:center;min-height:520px;padding:34px;display:grid}.modal-image-wrap img{object-fit:contain;border-radius:14px;width:100%;height:100%}.modal-content{padding:58px 48px 42px}.modal-content h2{margin:24px 0 0;font-size:clamp(36px,5vw,58px)}.modal-content .project-links{gap:12px;margin-top:30px}.modal-section{border-top:1px solid var(--line);margin-top:28px;padding-top:16px}.modal-section h4{color:var(--gold-text);margin-bottom:12px}.modal-description{color:var(--muted);font:15px/1.7 var(--sans);margin:0}.skills-section-content{text-align:center;max-width:920px;margin:0 auto}.skill-groups{grid-template-columns:repeat(3,1fr);gap:28px;display:grid}.skill-group h4{color:var(--gold-text);align-items:center;gap:10px;margin-bottom:14px;display:flex}.about-content{max-width:920px;margin:0 auto}.about-body{grid-template-columns:300px 1fr;align-items:center;gap:56px;display:grid}.about-photo{border-radius:24px;width:100%;max-width:300px;overflow:hidden}.about-photo img{width:100%;height:auto;display:block}.about-photo .photo-fallback{aspect-ratio:4/5;height:auto}.bio-copy p,.contact-content>p{max-width:390px;color:var(--muted);font:15px/1.75 var(--sans);margin:0 0 20px}.bio-copy p{max-width:none;font-size:16px}.bio-copy p:last-child{margin-bottom:0}.contact-content{text-align:center;max-width:760px;margin:0 auto}.contact-content>p{max-width:480px;margin:0 auto}.social-links{font:11px var(--mono);text-transform:uppercase;flex-wrap:wrap;justify-content:center;gap:14px;margin-top:34px;display:flex}.footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;padding:24px 0 30px;display:flex}.project-page{padding:70px 0 100px}.project-page h1{font:600 clamp(40px, 7vw, 76px)/1 var(--display);letter-spacing:-2px;margin:24px 0 20px}.project-page-summary{max-width:760px;color:var(--muted);font:17px/1.65 var(--sans);margin:0 0 24px}.project-page .project-links{margin-top:20px}.story-back{margin-top:72px}.story{border-top:1px solid var(--line);gap:72px;margin-top:64px;padding-top:16px;display:grid}.story figure{margin:0}.story img{width:100%;display:block}.story-text h2{font:500 clamp(26px, 3.5vw, 36px)/1.1 var(--display);letter-spacing:-1px;margin:8px 0 16px}.story-text p{color:var(--muted);font:17px/1.75 var(--sans);margin:0 0 16px}.story-split{grid-template-columns:1fr 1fr;align-items:stretch;gap:56px;display:grid}.story-split .story-copy{align-self:center}.story-split-left .story-photo{order:-1}.story-photo{--cap:0px;--photo-max-w:400px;--photo-max-h:480px;flex-direction:column;justify-content:center;align-items:center;min-height:280px;display:flex;container-type:size}.story-photo:has(figcaption){--cap:3.5rem}.story-photo img{width:auto;height:auto;max-width:min(100%, var(--photo-max-w));max-height:min(calc(100cqh - var(--cap)), var(--photo-max-h))}.story-gallery{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.story-gallery img{aspect-ratio:4/3;object-fit:cover}.story-figure img{height:auto}.story-video{aspect-ratio:16/9;background:var(--yellow-soft);position:relative;overflow:hidden}.story-video iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.story-figure img,.story-photo img,.story-gallery img{border-radius:16px}.story-video{border:1px solid var(--line);border-radius:16px}.story figcaption{color:var(--muted);font:13px/1.5 var(--sans);margin-top:10px}.collaborators{border-top:1px solid var(--line);margin-top:72px;padding-top:28px}.collaborators h2{font:500 34px/1 var(--display);letter-spacing:-1px;margin:0 0 24px}.collaborators ul{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:0;list-style:none;display:grid}.collaborators li{border:1px solid var(--line);background:var(--yellow-soft);font:14px/1.4 var(--sans);border-radius:16px;padding:18px 20px}.collaborators li strong{color:var(--ink);display:block}.collaborators li span{color:var(--muted)}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}@keyframes now-pulse{0%,to{box-shadow:0 0 #d8b92899}50%{box-shadow:0 0 0 7px #d8b92800}}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(28px)}.reveal.is-visible{opacity:1;transform:none}.reveal.is-visible .project-card{animation:.6s backwards rise}.reveal.is-visible .project-card:nth-child(3n+2){animation-delay:.1s}.reveal.is-visible .project-card:nth-child(3n+3){animation-delay:.2s}.intro h1,.intro-copy,.profile-photo,.button-link,.now-panel{animation:.7s backwards rise}.intro-copy{animation-delay:80ms}.profile-photo{animation-delay:.16s}.now-panel{animation-delay:.2s}.button-link{animation-delay:.24s}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}.reveal.is-visible .project-card,.intro h1,.intro-copy,.profile-photo,.button-link,.now-panel,.now-updated i{animation:none}}@media (width<=1000px){.project-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=800px){html{scroll-padding-top:80px}.page-width{width:min(100% - 36px,560px)}.section{padding:70px 0 85px}.site-header{height:70px}.menu-toggle{cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:0 11px;display:flex}.menu-toggle span{background:var(--ink);border-radius:2px;height:2px;transition:transform .2s,opacity .2s;display:block}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(7px)rotate(45deg)}.menu-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.menu-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}#site-nav{z-index:10;background:var(--yellow);border:1px solid var(--line);border-top:0;border-radius:0 0 16px 16px;flex-direction:column;gap:0;padding:8px 18px;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 12px 30px #33282d1f}#site-nav.open{display:flex}#site-nav a{border-bottom:1px solid var(--line);padding:16px 0;font-size:13px}#site-nav a:last-child{border-bottom:0}.intro{flex-direction:column;align-items:stretch;gap:0;padding:56px 0 64px;display:flex}.intro-content{display:contents}.intro h1{letter-spacing:-4px;order:1;margin:0 0 18px;font-size:clamp(48px,14vw,72px)}.intro-copy{order:2;margin:0}.button-link{order:3;align-self:flex-start;margin:24px 0 36px}.profile-photo{order:4;align-self:center;width:min(100%,420px);height:240px;margin:0 auto 32px}.now-panel{box-shadow:5px 5px 0 var(--gold-light);order:5;align-self:stretch;padding:20px}.about-content>h2{margin-bottom:32px}.about-body{display:block}.about-photo{width:min(100%,260px);margin:0 auto 32px}.skill-groups{grid-template-columns:1fr;gap:22px}.experience-role h3{font-size:24px}.project-modal-backdrop{padding:12px}.project-modal{grid-template-columns:1fr;max-height:calc(100dvh - 24px)}.modal-image-wrap{min-height:260px;padding:24px}.modal-content{padding:34px 24px 28px}.story-split{grid-template-columns:1fr;gap:24px}.story-split-left .story-photo{order:0}.story-photo{min-height:0;display:block;container-type:normal}.story-photo img{width:100%;max-width:100%;max-height:none}.footer{line-height:2;display:block}.footer span{display:block}.button-link{padding:14px 18px}.project-actions{gap:10px}.project-details-button,.project-links a{padding:12px 14px;font-size:11px}.social-links a{padding:14px 16px}.modal-close{width:44px;height:44px;top:12px;right:12px}}@media (width<=640px){.project-list{grid-template-columns:1fr}}
