:root{--paper:#f7f7f2;--ink:#232b24;--muted:#656b63;--line:#dce0d6;--accent:#d4f58c;--deep:#263c2d;--ease:cubic-bezier(.22,.68,0,1.01)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Segoe UI","Microsoft YaHei",sans-serif;line-height:1.6}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #668944;outline-offset:5px}button:disabled{cursor:default}::selection{background:var(--accent)}.wrap{max-width:1320px;padding:0 56px;margin:auto}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--ink);color:white;padding:12px}.skip:focus{top:10px}.site-header{position:sticky;top:0;z-index:10;background:#f7f7f2ef;backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}nav{height:86px;display:flex;justify-content:space-between;align-items:center;gap:25px}.wordmark{font-size:19px;font-weight:750;letter-spacing:-.7px}.wordmark span{font-size:12px;letter-spacing:2px;display:block;font-weight:400}.navlinks{display:flex;align-items:center;gap:30px;font-size:14px}.navlinks a{transition:color .2s}.navlinks a:hover{color:#64823e}.contact-link{border:1px solid #788173;border-radius:25px;padding:8px 18px}.intro{padding:58px 0 42px;display:flex;justify-content:space-between;align-items:flex-end;gap:50px}.eyebrow{font-size:12px;letter-spacing:1.7px;color:var(--muted);margin:0 0 18px}h1{font-size:clamp(34px,4vw,54px);font-weight:500;line-height:1.3;letter-spacing:-1.6px;margin:0}h1 span{background:linear-gradient(transparent 76%,var(--accent) 76%,var(--accent) 95%,transparent 95%)}.intro-side{font-size:16px;min-width:245px;padding-bottom:4px}.intro-side p{margin:0 0 16px;color:var(--muted);line-height:1.8}.quiet-link{font-size:14px;border-bottom:1px solid #abb3a2;padding-bottom:4px;display:inline-block}.work-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 0 25px;border-top:1px solid var(--line)}.filters{display:flex;gap:8px;flex-wrap:wrap}.filter{border:0;background:transparent;border-radius:30px;padding:10px 18px;font-size:14px;transition:background .2s,color .2s}.filter:hover{background:#e8edde}.filter.active{background:var(--ink);color:white}.count{font-size:12px;white-space:nowrap;color:var(--muted)}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:38px 30px}.project{min-width:0;background:transparent;border:0;padding:0;text-align:left;display:block;animation:card-in .4s var(--ease) both}.project[hidden]{display:none}.cover{position:relative;aspect-ratio:1.5;background:#e8ebe3;border-radius:10px;overflow:hidden;isolation:isolate}.cover>img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.002);transition:transform .65s var(--ease),filter .5s}.cover:after{content:"";position:absolute;inset:55% 0 0;background:linear-gradient(transparent,#14201755);pointer-events:none;opacity:.35;transition:opacity .35s}.view-work{position:absolute;right:18px;bottom:18px;display:flex;gap:25px;align-items:center;background:#f8faf1ee;color:#253226;border-radius:30px;padding:9px 16px;z-index:1;font-size:13px;box-shadow:0 3px 18px #1726170a;transition:background .25s,transform .4s var(--ease)}.view-work b{font-size:19px;font-weight:400;line-height:1}.project:hover .cover>img,.project:focus-visible .cover>img{transform:scale(1.055)}.project:hover .cover:after{opacity:1}.project:hover .view-work,.project:focus-visible .view-work{background:var(--accent);transform:translateY(-4px)}.project:active .cover>img{transform:scale(1.03)}.media-type{position:absolute;top:16px;left:16px;font-size:12px;letter-spacing:.4px;background:#20291dda;color:white;border:1px solid #ffffff33;padding:5px 11px;border-radius:30px}.project-info{display:flex;gap:18px;justify-content:space-between;align-items:baseline;padding-top:15px}.project-info h3{font-size:20px;font-weight:500;line-height:1.4;margin:0}.project-info p{color:var(--muted);font-size:12px;margin:6px 0 0}.project-no{font-size:12px;color:#89917f}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:28px}h2{font-size:32px;font-weight:500;line-height:1.45;letter-spacing:-.5px;margin:0}.section-heading>p{font-size:14px;color:var(--muted);margin:0}.social-section{margin-top:90px;padding-top:40px;border-top:1px solid var(--line)}.social-links{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.social-card{display:block;padding:20px 0;border-top:1px solid var(--line);transition:color .2s}.social-card h3{font-size:18px;font-weight:500;display:flex;justify-content:space-between;margin:0 0 7px}.social-card .social-type{font-size:12px;color:var(--muted)}.social-card p{font-size:14px;line-height:1.8;color:var(--muted);margin:10px 0 0;max-width:310px}a.social-card:hover{color:#638135}a.social-card h3 span{transition:transform .25s}a.social-card:hover h3 span{transform:translate(3px,-3px)}.about-section{border-top:1px solid var(--line);margin-top:65px;padding-top:48px;display:grid;grid-template-columns:1fr 1.35fr;gap:70px}.portrait{width:82px;height:99px;object-fit:cover;margin-top:28px;border-radius:5px}.about-lead{font-size:19px;line-height:1.7;margin:0 0 22px}.about-copy{font-size:16px;line-height:1.9;color:var(--muted);margin:0 0 25px}.facts{font-size:14px;border-top:1px solid var(--line);margin-bottom:20px}.facts>div{display:grid;grid-template-columns:60px 1fr;gap:15px;padding:16px 0;border-bottom:1px solid var(--line)}.facts span{color:var(--muted)}.facts p{margin:0;line-height:1.8}.contact-section{margin-top:74px;padding:38px 40px;background:var(--deep);border-radius:10px;color:#f1f6e9;display:flex;align-items:center;justify-content:space-between;gap:25px}.contact-section .eyebrow{color:#b8c9ab;margin-bottom:9px}.contact-section>a{font-size:17px;padding-bottom:8px;border-bottom:1px solid #98af88;overflow-wrap:anywhere}.contact-section>a span{margin-left:24px;color:var(--accent)}footer{padding:29px 0;display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted)}
/* Work viewer */
body.modal-open{overflow:hidden}dialog{color:var(--ink);border:0;padding:0;background:var(--paper);border-radius:14px;max-width:none;max-height:none}#details{width:min(1260px,94vw);height:auto;max-height:94dvh;overflow:auto;overscroll-behavior:contain}#details[open]{animation:viewer-in .3s var(--ease) both}dialog::backdrop{background:#121b16b8;backdrop-filter:blur(9px);animation:backdrop-in .25s ease both}#details.is-closing{animation:viewer-out .18s ease both}#details.is-closing::backdrop{animation:backdrop-out .18s ease both}.detail-top{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper);z-index:2}.detail-top>span{font-size:12px;letter-spacing:1.5px}.close-button{display:inline-flex;align-items:center;gap:16px;border:1px solid #c5cdbc;border-radius:30px;background:var(--paper);padding:9px 16px;font-size:14px;transition:background .2s;min-height:44px}.close-button span{font-size:22px;line-height:1}.close-button:hover{background:var(--accent)}.detail-layout{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(270px,1fr);gap:30px;padding:26px}.art-view{min-width:0}.stage{position:relative;background:#e9ece4;border-radius:7px;overflow:hidden;height:min(56vh,590px);display:grid;place-items:center}.stage-image{border:0;padding:0;background:transparent;display:block;width:100%;height:100%;min-height:0;position:relative;cursor:zoom-in}.stage-image img{height:100%;width:100%;object-fit:contain;display:block}.expand-hint{position:absolute;bottom:14px;right:14px;background:#f7f9f1e8;border:1px solid #ffffffaa;border-radius:25px;padding:7px 12px;font-size:12px}.image-arrow{position:absolute;top:50%;transform:translateY(-50%);border:1px solid #ffffff80;border-radius:50%;background:#f7f9f1ec;width:44px;height:44px;display:grid;place-items:center;font-size:28px;line-height:1;box-shadow:0 2px 16px #0001;transition:background .2s,opacity .2s;z-index:1}.image-arrow:hover{background:var(--accent)}.image-arrow:disabled{opacity:.3}.previous{left:12px}.next{right:12px}.image-meta{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted);padding:13px 0}.thumbnails{display:flex;gap:8px;overflow-x:auto;padding:3px 3px 10px;scrollbar-width:thin}.thumbnail{width:74px;height:53px;flex:none;padding:0;border:2px solid transparent;border-radius:5px;overflow:hidden;background:#e5e9dc;opacity:.55;transition:opacity .2s,border-color .2s}.thumbnail img{width:100%;height:100%;object-fit:cover;display:block}.thumbnail[aria-current="true"]{border-color:#4d6635;opacity:1}.thumbnail:hover{opacity:1}.detail-copy{padding:15px 8px 20px 0}.detail-copy h2{font-size:34px;line-height:1.35;margin-bottom:24px}.detail-copy>.eyebrow{font-size:12px;letter-spacing:.5px;line-height:1.8;margin-bottom:12px}.detail-copy>p:not(.eyebrow){font-size:16px;color:var(--muted);line-height:1.95;margin:0 0 27px}.watch-video{display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--ink);color:var(--paper);padding:14px 17px;border-radius:5px;font-size:14px;transition:background .2s}.watch-video:hover{background:#416237}.video-note{font-size:12px;color:var(--muted);margin:8px 0 0}.detail-foot{font-size:12px;letter-spacing:1px;border-top:1px solid var(--line);margin-top:36px;padding-top:18px;color:var(--muted)}#image-error{position:absolute;padding:30px;background:var(--paper);font-size:14px;pointer-events:none}#zoom{background:#141b16;width:100vw;height:100dvh;border-radius:0;margin:0;color:white;overflow:auto}#zoom[open]{animation:viewer-in .22s var(--ease)}#zoom>.close-button{position:fixed;right:24px;top:18px;z-index:3;color:var(--ink)}.zoom-canvas{min-height:100%;padding:80px 24px 24px;display:flex;align-items:flex-start;justify-content:center}.zoom-canvas img{width:auto;max-width:100%;height:auto;display:block;max-height:none}.zoom-canvas img:not(.tall){max-height:calc(100dvh - 110px);object-fit:contain}.image-enter{animation:image-in .26s ease both}@keyframes card-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes viewer-in{from{opacity:0;transform:translateY(22px) scale(.985)}to{opacity:1;transform:none}}@keyframes viewer-out{to{opacity:0;transform:translateY(12px) scale(.99)}}@keyframes backdrop-in{from{opacity:0}to{opacity:1}}@keyframes backdrop-out{to{opacity:0}}@keyframes image-in{from{opacity:.3;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(min-width:1600px){.wrap{max-width:1440px}.cover{aspect-ratio:1.55}}
@media(max-width:900px){.wrap{padding:0 30px}.intro{gap:25px}.intro-side{min-width:210px;font-size:15px}.detail-layout{grid-template-columns:1fr;gap:12px}.stage{height:50dvh}.detail-copy{padding:12px 0}.detail-copy h2{margin-bottom:15px}.about-section{gap:35px}.contact-section{display:block}.contact-section>a{display:inline-block;margin-top:24px}.navlinks{gap:19px}}
@media(max-width:600px){html{scroll-padding-top:90px}.wrap{padding:0 20px}nav{height:72px;gap:10px}.wordmark{font-size:15px}.wordmark span{font-size:10px}.navlinks{font-size:13px;gap:16px}.navlinks .contact-link{display:none}.intro{padding:35px 0 25px;display:block}.eyebrow{font-size:11px;letter-spacing:1.1px;margin-bottom:13px}h1{font-size:36px;letter-spacing:-1px}.intro-side{margin-top:19px;font-size:14px;display:flex;gap:20px;justify-content:space-between;align-items:end}.intro-side p{margin:0}.intro-side .quiet-link{font-size:12px;white-space:nowrap}.work-toolbar{display:block;padding:17px 0 20px}.filters{gap:4px}.filter{font-size:13px;padding:9px 12px}.count{display:block;margin:11px 0 0 10px}.projects{grid-template-columns:1fr;gap:27px}.cover{aspect-ratio:1.4}.project-info h3{font-size:19px}.project-info p{font-size:12px}.view-work{font-size:12px;right:13px;bottom:13px;padding:8px 13px}.section-heading{display:block}.section-heading>p{margin-top:10px}.social-section{margin-top:56px;padding-top:30px}.social-links{grid-template-columns:1fr;gap:0}.social-card{padding:19px 0}.social-card p{max-width:none}.about-section{margin-top:40px;padding-top:30px;grid-template-columns:1fr;gap:22px}.about-section>div:first-child{position:relative;padding-right:80px}.portrait{position:absolute;right:0;top:0;width:56px;height:70px;margin:0}.about-section h2{font-size:26px}.about-lead{font-size:17px}.about-copy{font-size:15px}.facts{font-size:13px}.contact-section{padding:26px;margin-top:45px}.contact-section h2{font-size:27px}.contact-section>a{font-size:14px}.contact-section>a span{margin-left:10px}footer{font-size:11px}footer>span:nth-child(2){display:none}#details{width:100vw;height:100dvh;max-height:100dvh;border-radius:0;margin:0}.detail-top{padding:12px 16px}.detail-layout{padding:16px;gap:3px}.stage{height:42dvh;min-height:235px}.image-meta{font-size:11px}.image-arrow{width:40px;height:40px}.detail-copy h2{font-size:28px}.detail-copy>p:not(.eyebrow){font-size:15px}.detail-foot{margin-top:22px}.thumbnail{width:65px;height:48px}.zoom-canvas{padding:75px 10px 20px}#zoom>.close-button{right:16px;top:14px}.expand-hint{font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.inline-player{position:absolute;inset:0;background:#111;z-index:2}.inline-player[hidden]{display:none}.inline-player iframe{width:100%;height:100%;border:0;display:block}.stage.is-playing .image-arrow,.stage.is-playing .stage-image{display:none}.watch-video{border:0;width:100%;text-align:left;cursor:pointer}.stage{scroll-margin-top:90px}

/* Compact social links immediately below the opening. */
.social-section{margin:0 0 28px;padding:0;border:0}.social-label{font-size:13px;color:var(--muted);margin-bottom:12px}.social-label span{margin-left:16px;font-size:12px;color:#808778}.social-links{gap:14px}.social-card{padding:15px 19px;border:1px solid var(--line);border-radius:8px;background:#f0f3e9;transition:background .2s,border-color .2s}.social-card:hover{background:#e8efda;border-color:#9baa8b}.social-card h3{font-size:17px;margin:0 0 5px}.social-card .social-type{font-size:13px}.social-card p{font-size:13px;line-height:1.65;margin-top:7px}.intro{padding-bottom:28px}.cover.full-cover{background:#edf2dc}.project[data-project="endless-summer"] .cover{background:#f7e2cf}.full-cover>img{transform:none}.project:hover .full-cover>img,.project:focus-visible .full-cover>img{transform:none}.full-cover .view-work{box-shadow:0 2px 15px #23301b12}@media(max-width:600px){.social-links{gap:8px}.social-card{padding:12px 15px}.social-card p{margin-top:4px}.social-card h3{font-size:16px}.social-section{margin-bottom:22px}.social-label{margin-top:2px}.intro{padding-bottom:24px}}
.inline-player video{width:100%;height:100%;display:block;object-fit:contain;background:#111}.video-recovery{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.video-recovery button,.video-recovery a{font:inherit;font-size:13px;border:1px solid var(--line);background:transparent;padding:8px 12px;border-radius:5px}.teaching-section{margin-top:48px;padding:28px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:220px 1fr;gap:30px;align-items:center}.teaching-section img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px}.teaching-section h2{font-size:24px}.teaching-section .eyebrow{margin-bottom:8px}.teaching-section p:not(.eyebrow){font-size:14px;color:var(--muted);max-width:560px;margin:8px 0 0}@media(max-width:600px){.teaching-section{grid-template-columns:1fr;gap:18px}.teaching-section img{max-width:280px}}
