:root{--ink:#351b15;--muted:#734334;--line:#4c251c33;--cream:#fff2df;--red:#bd331c;--gutter:32px;color-scheme:light;font-family:"Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif;font-synthesis:none;font-weight:400}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{color:var(--ink);background:#ed8354;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:5px}svg{fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;width:24px;height:24px;flex-shrink:0}button{touch-action:manipulation}[hidden]{display:none!important}.tiny{font-size:9px;letter-spacing:.1em}.atmosphere{position:fixed;inset:0;overflow:hidden;background:linear-gradient(145deg,#ffe6c6 0%,#f4aa76 42%,#e6663d 72%,#f19357 100%);z-index:-2}.glow{position:absolute;border-radius:50%;filter:blur(68px);will-change:transform;animation:drift 24s ease-in-out infinite alternate}.glow-a{width:100vw;height:100vh;left:-45%;bottom:-65%;background:#9f1616;opacity:.95;animation-delay:-11s}.glow-b{width:60vw;height:95vh;right:-20%;top:-45%;background:#f54b24;opacity:.8;animation-delay:-5s}.glow-c{width:52vw;height:70vh;left:22%;top:6%;background:#ffb35a;opacity:.7;animation-duration:32s}.glow-d{width:70vw;height:55vh;right:-22%;bottom:-25%;background:#ffe3ab;opacity:.7;animation-delay:-15s}.grain{position:absolute;inset:0;opacity:.048;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.7' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:multiply}.guides{position:fixed;left:8%;top:0;bottom:0;width:1px;background:#7b3b2310;pointer-events:none;z-index:-1}.guides:after{content:"";position:absolute;left:-8vw;width:100vw;height:1px;top:71%;background:#7b3b2315}.site-header{position:fixed;top:0;left:0;width:100%;padding:26px var(--gutter);display:flex;align-items:center;gap:40px;z-index:5;pointer-events:none}.site-header>*{pointer-events:auto}.wordmark{display:flex;align-items:baseline;gap:12px;text-align:left}.wordmark>span{font-size:25px;font-family:"Songti SC","Noto Serif CJK SC",serif;font-weight:600;letter-spacing:-.08em}.wordmark i{font-size:15px;font-family:Georgia,serif;font-style:italic;letter-spacing:-.04em}.header-note{margin-left:auto;display:flex;flex-direction:column;font-size:9px;line-height:1.7;letter-spacing:.04em}.header-note i{display:inline-block;width:4px;height:4px;background:#82381f;border-radius:50%;margin-right:5px}.header-note small{font-size:7px;opacity:.65}.about-button{display:flex;align-items:center;gap:14px;font-size:11px;min-height:44px}.about-button svg{width:28px}.canvas-view,.stage{position:absolute;inset:0}.stage{outline:0;cursor:grab;touch-action:none;user-select:none;overscroll-behavior:none}.stage.dragging{cursor:grabbing}.stage.over-card{cursor:pointer}#gallery-canvas{width:100%;height:100%;display:block}#fallback-cards{position:absolute;inset:0;pointer-events:none;display:none}#fallback-cards img{position:absolute;object-fit:cover;will-change:transform;box-shadow:0 15px 30px #621f1520}.no-webgl #fallback-cards{display:block}.manifesto{position:absolute;top:19%;right:8%;text-align:right;pointer-events:none}.manifesto p{font-size:clamp(22px,2.3vw,36px);line-height:1.5;font-weight:300;letter-spacing:-.04em;margin:14px 0 20px}.manifesto-line{height:1px;width:38px;background:var(--ink);display:block;margin-left:auto;opacity:.5}.identity{position:absolute;left:8%;bottom:12%;pointer-events:none}.identity-meta{display:flex;gap:60px;font-size:9px;line-height:1.45;margin-bottom:25px}.identity h1{font-size:clamp(48px,5.7vw,88px);line-height:.96;letter-spacing:-.065em;font-weight:400;margin:0}.identity>p{font-size:10px;letter-spacing:.08em;margin:19px 0 0}.current-project{position:absolute;left:56%;bottom:14%;max-width:35%;min-width:240px;pointer-events:none}.current-kicker{display:flex;gap:10px;align-items:center;font-size:10px;letter-spacing:.06em}.slash{opacity:.4}#current-category{margin-left:18px;font-size:10px;letter-spacing:0}.current-project button{display:flex;align-items:center;gap:30px;font-size:clamp(17px,1.5vw,24px);font-weight:400;line-height:1.45;text-align:left;padding:14px 0 12px;pointer-events:auto}.project-arrow{font-size:28px;font-weight:200}.current-project>span:last-child{font-size:10px;letter-spacing:.05em;opacity:.65}.view-switch{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:6;background:#fff0d93d;backdrop-filter:blur(16px);border:1px solid #fff9e551;border-radius:32px;padding:5px;display:flex;flex-direction:column;gap:4px}.view-switch button{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;transition:background .3s,transform .3s}.view-switch button[aria-pressed=true]{background:#fff4e4;box-shadow:0 2px 10px #6c35281c}.view-switch svg{width:19px;height:19px}.canvas-footer{position:fixed;bottom:0;left:0;width:100%;z-index:5;padding:14px var(--gutter) 20px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.canvas-footer>*{pointer-events:auto}.canvas-footer p{font-size:10px;display:flex;gap:12px;align-items:center;margin:0;letter-spacing:.05em}.drag-symbol{font-size:21px}.mobile-hint{display:none}.footer-controls{display:flex;align-items:center;gap:9px}.footer-controls button{width:36px;height:36px;display:grid;place-items:center;border:1px solid #47231838;border-radius:50%;transition:background .2s}.footer-controls button:hover{background:#fff2df40}.footer-controls svg{width:15px;height:15px}.footer-controls>span{font-size:9px;margin-left:15px}.project-index{display:flex;align-items:center;gap:5px;position:absolute;left:50%;transform:translateX(-50%)}.project-index button{width:24px;height:40px;position:relative;font-size:9px;transition:opacity .3s;color:var(--ink)}.project-index button:before{content:"";position:absolute;width:3px;height:3px;border-radius:50%;background:var(--ink);left:calc(50% - 1.5px);top:5px;opacity:0;transition:opacity .3s}.project-index button[aria-current=true]:before{opacity:1}.project-index button:not([aria-current=true]){opacity:.4}.project-index button:hover{opacity:1}.drag-cursor{position:fixed;width:68px;height:68px;top:0;left:0;border:1px solid #fff1d866;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:4px;flex-direction:column;pointer-events:none;z-index:3;background:#f8ca9524;backdrop-filter:blur(8px);opacity:0;transform:translate(-100px,-100px);font-size:9px;color:var(--cream);transition:opacity .2s}.drag-cursor svg{height:16px}.drag-cursor.visible{opacity:1}.dragging~.drag-cursor{opacity:0}.overview{position:fixed;inset:105px 80px 75px 8%;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#5a2e2340 transparent;padding-right:20px}.overview-header{display:flex;align-items:end;justify-content:space-between;margin-bottom:30px}.overview h2{font-size:36px;font-weight:300;letter-spacing:-.04em;margin:12px 0 0}.overview h2>span{font-size:11px;vertical-align:top;padding-left:12px}.filters{display:flex;gap:5px}.filters button{font-size:11px;padding:12px 16px;border-radius:24px;border:1px solid transparent}.filters button[aria-pressed=true]{border-color:#4c251c66;background:#fff1d633}.project-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px 16px}.project-card{min-width:0}.project-cover{display:block;aspect-ratio:1.35;position:relative;overflow:hidden;background:#3b241e}.project-card:nth-child(3n + 2) .project-cover{aspect-ratio:1.1}.project-card img{width:100%;height:100%;object-fit:cover;transition:transform .7s}.project-cover:hover img{transform:scale(1.05)}.project-cover>span{position:absolute;right:12px;bottom:12px;width:30px;height:30px;border-radius:50%;background:#fff0ddcc;display:grid;place-items:center;font-size:20px}.project-card-meta{display:flex;justify-content:space-between;font-size:9px;opacity:.7;margin:13px 0 8px}.project-card h3{font-size:16px;font-weight:400;line-height:1.4;margin:0}.project-card p{font-size:10px;line-height:1.6;margin:7px 0;opacity:.7}.overview-end{font-size:11px;margin:35px 0 20px;border-top:1px solid var(--line);padding-top:20px}.grid-mode .canvas-footer p,.grid-mode .project-index{visibility:hidden}.grid-mode .footer-controls{margin-left:auto}.grid-mode .guides{opacity:0}dialog{padding:0;border:0;max-width:100%;max-height:100%;color:var(--ink)}dialog::backdrop{background:#32130b55;backdrop-filter:blur(14px)}.case-dialog,.about-dialog{position:fixed;inset:0;width:100%;height:100%;height:100dvh;margin:0;overflow-y:auto;overscroll-behavior:contain;background:#f8f1e7;scrollbar-width:thin;animation:panel-in .5s cubic-bezier(.2,.8,.2,1)}.dialog-bar{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;min-height:76px;padding:14px 5%;background:inherit;border-bottom:1px solid var(--line);backdrop-filter:blur(16px)}.dialog-bar>span{font-size:10px;letter-spacing:.08em}.close-button{display:flex;gap:16px;align-items:center;min-height:44px;font-size:12px}.close-button>span{font-weight:200;font-size:32px;line-height:1}#case-content{padding:58px 8% 0}.case-heading .tiny{display:block;margin-bottom:22px}.case-heading h2{font-size:clamp(30px,4vw,64px);font-weight:300;line-height:1.25;letter-spacing:-.04em;margin:0 0 18px}.case-heading .meta{font-size:12px;opacity:.65;margin:0 0 40px}.case-hero{margin:0;position:relative}.image-button{display:block;width:100%;cursor:zoom-in}.case-hero img{display:block;width:100%;max-height:75vh;object-fit:cover}.case-hero figcaption{font-size:10px;margin-top:13px;opacity:.6;display:flex;justify-content:space-between}.case-story{display:grid;grid-template-columns:1fr 1fr;gap:8%;padding:64px 0 45px}.case-story h3{font-size:clamp(25px,3vw,42px);font-weight:300;line-height:1.5;letter-spacing:-.03em;margin:0}.case-story p{font-size:15px;line-height:1.9;margin:0 0 24px}.text-link{font-size:12px;border-bottom:1px solid;padding-bottom:8px;display:inline-flex;gap:35px;margin-top:8px}.case-stats{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:35px 0;margin:10px 0 48px;gap:7%}.stat{flex:1;min-width:0}.stat-value{font-size:clamp(27px,3.6vw,52px);font-weight:300;letter-spacing:-.05em}.stat-label{font-size:12px;line-height:1.6;opacity:.65;margin-bottom:0}.case-gallery{display:grid;grid-template-columns:1fr 1fr;gap:35px 24px}.gallery-item{margin:0;min-width:0}.gallery-item img{display:block;width:100%;height:100%;max-height:580px;aspect-ratio:1.5;object-fit:cover}.gallery-item.portrait img{aspect-ratio:.75;object-fit:contain;background:#100f11}.gallery-item.wide{grid-column:1/-1}.gallery-item.wide img{aspect-ratio:auto;max-height:none;object-fit:contain}.gallery-item figcaption{font-size:11px;line-height:1.7;opacity:.65;margin-top:12px}.dance-pair{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:24px}.dance-crop{overflow:hidden;aspect-ratio:1.47;position:relative}.dance-crop img{position:absolute;top:0;left:0;max-height:none;width:200%;height:100%;max-width:none;object-fit:fill}.dance-crop.right img{left:-100%}.case-next{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:30px;margin-top:80px;padding:35px 0 50px}.case-next small{font-size:10px;opacity:.6}.case-next h3{font-size:clamp(24px,3vw,38px);font-weight:300;margin:15px 0 0}.case-next>span{font-size:48px}.dark-case{background:#0b0c0d;color:#e9e5df;--line:#eee6db33}.dark-case .dialog-bar{background:#0b0c0df2}.dark-case button:focus-visible,.dark-case a:focus-visible{outline-color:#f5c7a4}.about-content{max-width:1160px;margin:auto;padding:70px 8% 60px}.about-content h2{font-size:clamp(42px,5vw,76px);font-weight:300;letter-spacing:-.06em;line-height:1.3;margin:25px 0 45px}.about-story{max-width:750px;margin-left:auto}.about-story p{font-size:17px;line-height:1.9}.about-facts{margin:45px 0 70px;padding:25px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);gap:25px;font-size:11px;line-height:1.8}.about-facts strong{display:block;font-size:14px;font-weight:400;margin-top:12px}.practice h3{font-size:32px;font-weight:300;margin:20px 0 35px}.practice-list>div{display:grid;grid-template-columns:120px 1fr 120px;align-items:start;border-top:1px solid var(--line);padding:20px 0;gap:25px;font-size:12px}.practice-list p{font-size:14px;line-height:1.8;margin:0}.practice-list small{font-size:10px;text-align:right;opacity:.6}.concept-image{margin:40px 0 0}.concept-image img{display:block;width:100%;max-height:430px;object-fit:cover}.concept-image figcaption{font-size:10px;opacity:.6;margin-top:12px}.lightbox{inset:0;position:fixed;margin:0;background:#09090af7;width:100%;height:100%;color:white;overflow:hidden}.lightbox[open]{display:flex;align-items:center;justify-content:space-between;padding:70px 28px 45px;gap:20px;animation:panel-in .25s ease-out}.lightbox-top{position:absolute;inset:20px 30px auto;display:flex;justify-content:space-between;align-items:center;font-size:12px}.lightbox-top button{font-size:35px;width:44px;height:44px;font-weight:200}.lightbox>button{font-size:30px;width:44px;height:55px;flex-shrink:0}.lightbox figure{margin:0;max-width:calc(100% - 130px);display:flex;flex-direction:column;align-items:center;gap:20px}.lightbox img{max-width:100%;max-height:calc(100dvh - 170px);object-fit:contain}.lightbox figcaption{font-size:12px;text-align:center;line-height:1.5;color:#ddd}.noscript{position:fixed;inset:40%;z-index:10}.paused .glow{animation-play-state:paused}@keyframes drift{from{transform:translate(-3%,2%) scale(1)}to{transform:translate(8%,-7%) scale(1.15)}}@keyframes panel-in{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1500px){.current-project{bottom:16%}.identity{bottom:13%}.manifesto{top:20%}}
@media(max-width:1000px){.project-grid{grid-template-columns:repeat(3,1fr)}.identity-meta{gap:25px}.identity h1{font-size:59px}.manifesto{right:9%;top:17%}.current-project{left:55%;bottom:13%;max-width:35%}.case-story{gap:6%}}
@media(max-width:700px){:root{--gutter:20px}.site-header{padding:17px 20px;gap:12px}.wordmark{gap:8px}.wordmark>span{font-size:25px}.wordmark i{font-size:13px}.header-note{display:none}.about-button{margin-left:auto;gap:10px;font-size:11px}.about-button svg{width:22px}.glow{filter:blur(45px)}.glow-a{width:150vw;height:75vh;left:-60%;bottom:-35%;opacity:.8}.glow-b{width:130vw;height:65vh;right:-65%;top:-28%}.glow-c{width:100vw;height:60vh;left:4%;top:20%}.glow-d{width:130vw;right:-75%;bottom:-15%;height:50vh}.guides{left:20px}.guides:after{top:74%}.manifesto{top:14%;left:25px;right:auto;text-align:left}.manifesto .tiny{font-size:7px}.manifesto p{font-size:25px;line-height:1.5;margin:12px 0 0;letter-spacing:-.04em}.manifesto-line{display:none}.identity{left:24px;bottom:29%;display:none}.current-project{left:25px;right:25px;bottom:19%;max-width:none;min-width:0}.current-kicker{font-size:9px;gap:8px}#current-category{font-size:9px;margin-left:15px}.current-project button{font-size:20px;justify-content:space-between;width:100%;padding:12px 0 8px;gap:12px;min-height:50px;line-height:1.45}.current-project>span:last-child{font-size:10px}.project-arrow{font-size:28px}.view-switch{right:17px;top:auto;bottom:11%;transform:none;flex-direction:row;border-radius:32px;padding:4px;gap:3px}.view-switch button{width:36px;height:36px}.view-switch svg{width:17px}.canvas-footer{padding:0 20px max(18px,env(safe-area-inset-bottom));height:11%;align-items:flex-end}.canvas-footer p{position:absolute;bottom:calc(100% + 17px);font-size:9px;gap:8px;left:25px}.desktop-hint{display:none}.mobile-hint{display:inline}.footer-controls{margin-left:auto;gap:7px}.footer-controls button{width:30px;height:30px}.footer-controls>span{display:none}.project-index{position:static;transform:none;gap:3px}.project-index button{width:21px;height:30px;font-size:8px}.project-index button:before{top:0}.drag-cursor{display:none}.overview{inset:90px 0 80px;padding:0 20px;scrollbar-width:none}.overview-header{display:block;margin-bottom:24px}.overview h2{font-size:30px}.overview-header .tiny{font-size:8px}.filters{margin-top:20px}.filters button{font-size:10px;padding:10px 14px}.project-grid{grid-template-columns:repeat(2,1fr);gap:25px 12px}.project-card .project-cover{aspect-ratio:1.1}.project-card:nth-child(3n + 2) .project-cover{aspect-ratio:1.1}.project-card-meta{font-size:8px;margin-top:10px;gap:8px}.project-card h3{font-size:13px;line-height:1.5}.project-card p{font-size:9px}.project-cover>span{width:25px;height:25px;font-size:18px;right:8px;bottom:8px}.grid-mode .view-switch{bottom:20px;left:20px;right:auto;z-index:7}.grid-mode .canvas-footer{height:68px;background:linear-gradient(transparent,#efa16c 70%);padding-bottom:25px;z-index:6}.dialog-bar{min-height:65px;padding:10px 20px}.dialog-bar>span{font-size:8px}.close-button{font-size:10px;gap:12px}.close-button>span{font-size:27px}#case-content{padding:34px 20px 0}.case-heading .tiny{font-size:9px;margin-bottom:20px}.case-heading h2{font-size:32px;line-height:1.35;margin-bottom:16px}.case-heading .meta{font-size:11px;line-height:1.7;margin-bottom:28px}.case-hero{margin:0 -20px}.case-hero img{min-height:240px;max-height:none;object-fit:cover}.case-hero figcaption{padding:0 20px;font-size:9px;gap:20px;line-height:1.6}.case-hero figcaption>span:first-child{max-width:70%}.case-story{display:block;padding:38px 0 20px}.case-story h3{font-size:27px;margin-bottom:28px;line-height:1.5}.case-story p{font-size:16px;line-height:1.9;margin-bottom:22px}.text-link{font-size:12px}.case-stats{gap:22px;flex-wrap:wrap;padding:25px 0;margin:20px 0 32px}.stat{flex:1 1 40%}.stat-value{font-size:30px}.stat-label{font-size:11px}.case-gallery{display:block}.gallery-item{margin-bottom:30px}.gallery-item img{aspect-ratio:auto;max-height:none;object-fit:contain}.gallery-item.portrait img{max-height:65vh;aspect-ratio:auto}.gallery-item figcaption{font-size:11px}.dance-pair{display:block}.dance-pair .gallery-item{margin-bottom:26px}.dance-crop{aspect-ratio:1.47}.dance-crop img{width:200%;height:100%}.case-next{margin-top:45px;padding:30px 0 40px}.case-next h3{font-size:25px;line-height:1.4}.case-next>span{font-size:35px}.about-content{padding:42px 24px}.about-content h2{font-size:43px;margin:25px 0 35px}.about-story p{font-size:16px;line-height:1.9}.about-facts{grid-template-columns:1fr 1fr;gap:25px;margin:35px 0 45px}.about-facts>a{grid-column:1/-1}.about-facts strong{font-size:13px;margin-top:8px}.practice h3{font-size:28px}.practice-list>div{grid-template-columns:1fr auto;gap:12px;padding:20px 0}.practice-list p{grid-column:1/-1;grid-row:2;font-size:14px}.practice-list small{grid-column:2;grid-row:1}.lightbox[open]{padding:70px 8px 70px;gap:0}.lightbox figure{max-width:100%;width:100%}.lightbox img{max-height:calc(100dvh - 190px)}.lightbox>button{position:absolute;bottom:15px;font-size:25px}.lightbox>button:first-of-type{left:25px}.lightbox>button:last-of-type{right:25px}.lightbox-top{inset:12px 18px auto}.lightbox figcaption{padding:0 16px;font-size:11px;line-height:1.6}.concept-image img{min-height:180px}.overview-end{font-size:10px}}
@media(max-width:360px){.manifesto{top:13%;left:20px}.manifesto p{font-size:22px}.current-project{left:20px;right:20px;bottom:20%}.current-project button{font-size:18px}.project-index{gap:0}.project-index button{width:20px}.canvas-footer{padding-left:16px;padding-right:16px}.current-kicker{font-size:8px}.view-switch{bottom:11%}.canvas-footer p{left:20px;font-size:8px}.case-heading h2{font-size:29px}}
@media(max-height:650px) and (min-width:701px){.identity h1{font-size:52px}.identity-meta{margin-bottom:15px}.identity{bottom:13%}.manifesto{top:18%}.manifesto p{font-size:24px}.current-project{bottom:14%}.site-header{padding-top:16px}.manifesto>.tiny{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep the fixed typography clear as photographs move through the edges. */
#gallery-canvas,#fallback-cards{mask-image:linear-gradient(to bottom,transparent 0%,#000 14%,#000 77%,transparent 100%)}
@media(max-width:700px){#gallery-canvas,#fallback-cards{mask-image:linear-gradient(to bottom,transparent 0%,#000 27%,#000 65%,transparent 73%)}.project-index{gap:1px}.project-index button{width:25px;height:44px;font-size:10px}.project-index button:before{top:4px}.project-index button:not([aria-current=true]){opacity:.58}.footer-controls button{width:40px;height:40px}.view-switch button{width:40px;height:40px}.canvas-footer{align-items:flex-end}.footer-controls{gap:4px}.canvas-footer p{bottom:calc(100% + 20px)}}
@media(max-width:360px){.project-index button{width:23px;font-size:9px}.project-index{gap:0}.footer-controls button{width:38px;height:38px}.view-switch button{width:38px;height:38px}}

#main{position:fixed;inset:0;width:100%;height:100dvh}.no-webgl #gallery-canvas{visibility:hidden}
@media(max-height:500px) and (min-width:701px){.identity{display:none}.manifesto{top:20%;right:7%}.manifesto p{font-size:20px}.current-project{left:6%;bottom:17%;max-width:40%}.current-project button{font-size:17px}.current-project .current-kicker{font-size:9px}.current-project>span:last-child{font-size:9px}}

/* Second edition: an airy row of smaller, oblique book covers. */
.identity{bottom:10%}.identity h1{font-size:clamp(48px,5vw,76px)}.manifesto{top:16%}.current-project{bottom:12%}
#gallery-canvas,#fallback-cards{mask-image:linear-gradient(to bottom,transparent 0%,#000 13%,#000 83%,transparent 100%)}
.project-cover,.project-card:nth-child(3n + 2) .project-cover{aspect-ratio:720/940;background:#0b0c0e}
.project-card img{object-fit:contain}.project-grid{gap:35px 24px}.project-cover>span{right:18px;bottom:18px}
.case-heading-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:35px}.case-heading-bottom .meta{margin:0;line-height:1.7}
.source-link{display:inline-flex;align-items:center;justify-content:space-between;gap:25px;font-size:12px;line-height:1.3;min-height:44px;padding:10px 0;border-bottom:1px solid currentColor;white-space:nowrap}.source-link>span{font-size:21px;font-weight:300}.source-link:hover{opacity:.65}
@media(min-width:701px) and (min-height:501px) and (max-height:800px){.current-project{bottom:8.5%}}
@media(max-width:700px){.manifesto{top:14%}.current-project{bottom:19%}.project-grid{gap:25px 14px}.project-card .project-cover,.project-card:nth-child(3n + 2) .project-cover{aspect-ratio:720/940}.project-cover>span{right:9px;bottom:9px}.case-heading-bottom{align-items:flex-start;flex-direction:column;gap:14px;margin-bottom:28px}.case-heading-bottom .meta{margin:0}.source-link{font-size:12px;gap:30px;padding-top:0;min-height:37px}.case-heading h2{margin-bottom:17px}#gallery-canvas,#fallback-cards{mask-image:linear-gradient(to bottom,transparent 0%,#000 25%,#000 65%,transparent 73%)}}
@media(max-width:360px){.manifesto{top:13%}.current-project{bottom:20%}}

/* Photo-led, landscape project KVs: each case retains its own visual identity. */
.project-cover,.project-card:nth-child(3n + 2) .project-cover{aspect-ratio:16/9}
.project-cover>span{right:12px;bottom:12px}
@media(max-width:700px){.project-card .project-cover,.project-card:nth-child(3n + 2) .project-cover{aspect-ratio:16/9}.project-grid{grid-template-columns:1fr;gap:30px}.project-card h3{font-size:17px}.project-card p{font-size:12px}.project-card-meta{font-size:10px}.project-cover>span{width:31px;height:31px;right:12px;bottom:12px}}

/* A warm light field follows the selected textile with a delayed response. */
body{--ambient-x:0px;--ambient-y:0px}.glow-a{translate:var(--ambient-x) var(--ambient-y)}.glow-b{translate:calc(var(--ambient-x) * -.55) calc(var(--ambient-y) * -.5)}.glow-c{translate:calc(var(--ambient-x) * .6) calc(var(--ambient-y) * .8)}
.interaction-light{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;will-change:transform;mix-blend-mode:screen}.interaction-light i,.interaction-light b{position:absolute;display:block;left:-340px;top:-260px;width:680px;height:520px;border-radius:47% 53% 41% 59%;background:radial-gradient(ellipse,#ffd7a8 0%,#ffb55688 30%,#ff642c22 56%,transparent 70%);filter:blur(38px);transform:scale(var(--focus-scale,1));transition:transform 1.8s ease}.interaction-light b{left:-230px;top:-190px;width:460px;height:380px;background:radial-gradient(ellipse,#fff0bb88,transparent 67%);transform:rotate(-20deg) scale(var(--focus-scale,1));filter:blur(25px)}
.project-index:after{content:"";position:absolute;left:calc(var(--flow,0) * 100%);top:-3px;width:14px;height:1px;background:currentColor;opacity:.45;pointer-events:none;transform:translateX(-7px)}.grid-mode .interaction-light{opacity:0!important}.grid-mode .project-index:after{display:none}
/* Magazine details: readable narrative, with original photographs beside each chapter. */
.project-journal{padding-top:66px}.magazine-intro{max-width:950px;margin:0 auto 50px}.magazine-intro>.tiny{opacity:.55}.magazine-intro h3{font-size:clamp(28px,3.5vw,49px);line-height:1.4;letter-spacing:-.04em;font-weight:300;margin:24px 0}.magazine-intro>p{font-size:20px;line-height:1.9;font-weight:300;max-width:880px;margin:0}.project-brief{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:1.3fr 1fr;gap:9%;padding:27px 0;margin-bottom:65px}.project-brief span{font-size:11px;opacity:.55;letter-spacing:.12em}.project-brief p{font-size:14px;line-height:1.9;margin:12px 0 0}.story-chapter{display:grid;grid-template-columns:90px minmax(0,1fr);gap:32px;margin:0 0 72px;align-items:start}.story-chapter.has-art{grid-template-columns:70px minmax(0,1.1fr) minmax(0,1fr);gap:30px}.chapter-index{display:flex;flex-direction:column;gap:12px;padding-top:8px}.chapter-index>span{font-size:27px;line-height:1;font-weight:200;opacity:.5}.chapter-index>small{font-size:10px;letter-spacing:.08em;line-height:1.7;opacity:.6}.chapter-body{max-width:800px}.chapter-body h3,.project-readout h3{font-size:27px;line-height:1.5;font-weight:300;letter-spacing:-.02em;margin:0 0 24px}.chapter-body p{font-size:16px;line-height:1.95;margin:0 0 22px}.chapter-visual{padding-top:5px}.chapter-visual .gallery-item{margin:0}.chapter-visual .gallery-item img{aspect-ratio:auto;object-fit:contain;height:auto;max-height:none}.chapter-visual .gallery-item.portrait img{max-height:490px;width:100%;background:#141211;object-fit:contain}.chapter-visual figcaption{font-size:11px;line-height:1.8;opacity:.6;margin-top:15px}.story-chapter.wide-art{grid-template-columns:90px minmax(0,1fr)}.wide-art .chapter-visual{grid-column:2;max-width:100%}.chapter-visual .dance-pair{gap:20px}.chapter-visual .dance-crop img{width:200%;height:100%;object-fit:fill;max-height:none}.project-readout{display:grid;grid-template-columns:90px minmax(0,1fr);gap:32px;border-top:1px solid var(--line);padding-top:35px}.project-readout>div:last-child{max-width:800px}.project-readout p{font-size:17px;line-height:1.95;margin:0}.project-journal .case-stats{margin-top:35px;margin-bottom:15px}.data-scope{font-size:11px;line-height:1.8;opacity:.5;margin:0 0 65px;max-width:900px}.photo-essay-heading{margin:0 0 25px}.photo-essay-heading .tiny{opacity:.5}.photo-essay-heading h3{font-size:25px;font-weight:300;margin:12px 0}.journal-source{margin-top:45px;padding-top:25px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line)}.journal-source>span{font-size:12px;opacity:.6}.journal-source .text-link{margin:0}.project-journal .case-gallery .gallery-item img{object-fit:contain;aspect-ratio:auto;max-height:none}.project-journal .case-gallery .gallery-item.portrait img{max-height:650px}.paused .interaction-light i,.paused .interaction-light b{transition:none}
@media(max-width:1000px){.story-chapter.has-art{grid-template-columns:70px minmax(0,1fr);gap:25px}.chapter-visual{grid-column:2}.chapter-visual .gallery-item img{max-height:540px;object-fit:contain}.chapter-body{max-width:760px}.magazine-intro>p{font-size:18px}.chapter-visual .dance-crop img{max-height:none}.chapter-visual .dance-pair .gallery-item{max-width:none}}
@media(max-width:700px){.interaction-light i{width:440px;height:380px;left:-220px;top:-190px;filter:blur(30px)}.interaction-light b{width:300px;height:260px;left:-150px;top:-130px}.project-index:after{top:0}.project-journal{padding-top:38px}.magazine-intro{margin-bottom:30px}.magazine-intro h3{font-size:29px;margin:20px 0 23px;line-height:1.5}.magazine-intro>p{font-size:17px;line-height:1.95;font-weight:400}.project-brief{display:block;padding:22px 0;margin-bottom:40px}.project-brief>div+div{margin-top:22px}.project-brief span{font-size:10px}.project-brief p{font-size:14px;margin-top:8px;line-height:1.9}.story-chapter,.story-chapter.has-art,.story-chapter.wide-art{display:block;margin-bottom:45px}.chapter-index{flex-direction:row;gap:12px;align-items:baseline;margin-bottom:20px;padding:0}.chapter-index>span{font-size:23px}.chapter-index>small{font-size:10px}.chapter-body h3,.project-readout h3{font-size:24px;line-height:1.55;margin-bottom:19px}.chapter-body p{font-size:16px;line-height:1.95;margin-bottom:20px}.chapter-visual{padding-top:9px}.chapter-visual figcaption{font-size:11px;margin-top:12px}.chapter-visual .gallery-item{margin:0}.chapter-visual .dance-pair .gallery-item+.gallery-item{margin-top:24px}.chapter-visual .gallery-item.portrait img{max-height:530px}.project-readout{display:block;padding-top:28px}.project-readout p{font-size:16px;line-height:1.95}.project-journal .case-stats{margin-top:27px;margin-bottom:13px}.data-scope{font-size:10px;line-height:1.85;margin-bottom:42px;opacity:.6}.photo-essay-heading h3{font-size:23px}.journal-source{display:block;margin-top:25px}.journal-source>span{display:block;margin-bottom:18px;font-size:11px}.journal-source .text-link{font-size:12px}.project-journal .case-gallery .gallery-item.portrait img{max-height:70vh}}

/* Mobile: one complete card and a half-card preview on either side. */
.identity h1{font-size:clamp(32px,3.35vw,52px);line-height:1.03;letter-spacing:-.055em}
.swipe-cue{display:none}
@media(max-width:700px){.swipe-cue{position:absolute;left:50%;top:60%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:11px;pointer-events:none;font-size:10px;letter-spacing:.06em;color:var(--ink);opacity:.7;transition:opacity 1s}.swipe-track{position:relative;width:54px;height:1px;background:#351b1533}.swipe-track:before,.swipe-track:after{content:"";position:absolute;width:4px;height:4px;border:solid #351b1555;border-width:0 1px 1px 0;top:-2px}.swipe-track:before{left:0;transform:rotate(135deg)}.swipe-track:after{right:0;transform:rotate(-45deg)}.swipe-track i{position:absolute;width:5px;height:5px;top:-2px;left:24px;border-radius:50%;background:#65362a;animation:swipe-cue 3.8s ease-in-out infinite}.has-swiped .swipe-cue{opacity:0}.paused .swipe-track i{animation-play-state:paused}.manifesto p{font-size:27px}.canvas-footer .drag-symbol{animation:swipe-arrow 4.5s ease-in-out infinite}.paused .drag-symbol{animation-play-state:paused}}
@media(max-width:360px){.manifesto p{font-size:24px}.swipe-cue{top:59%;font-size:9px;gap:9px}}
@keyframes swipe-cue{0%,15%,100%{transform:translateX(0);opacity:.65}35%{transform:translateX(-18px);opacity:1}65%{transform:translateX(18px);opacity:1}85%{transform:translateX(0);opacity:.65}}
@keyframes swipe-arrow{0%,30%,100%{transform:translateX(0)}45%{transform:translateX(-3px)}65%{transform:translateX(3px)}80%{transform:translateX(0)}}

/* Two ways of looking at the same body of work. */
.theme-picker{position:relative;flex-shrink:0;z-index:10}.theme-button{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid #633a2b40;border-radius:30px;background:#fff3de24;font-size:11px;white-space:nowrap;transition:background .25s,border-color .25s}.theme-button:hover{background:#fff5e366;border-color:#633a2b77}.theme-button>svg{width:19px;height:19px}.theme-button .theme-chevron{width:10px;height:10px;transition:rotate .25s}.theme-button[aria-expanded=true] .theme-chevron{rotate:180deg}.theme-button .line-icon{display:none}.theme-menu{position:absolute;right:0;top:calc(100% + 12px);width:310px;padding:15px 10px 10px;border:1px solid #78513b33;background:#fff6e9f5;backdrop-filter:blur(20px);box-shadow:0 12px 38px #3b1f1714;border-radius:12px}.theme-menu>p{font-size:10px;margin:0 10px 12px;letter-spacing:.05em;opacity:.6}.theme-menu>button{width:100%;display:flex;align-items:center;text-align:left;gap:13px;padding:12px 10px;border-radius:7px;min-height:74px}.theme-menu>button:hover,.theme-menu>button[aria-pressed=true]{background:#8f5e2910}.theme-menu strong{display:block;font-weight:400;font-size:15px;line-height:1.4}.theme-menu small{font-size:10px;display:block;opacity:.6;margin-top:5px;line-height:1.4}.theme-check{margin-left:auto;opacity:0;font-size:13px}.theme-menu [aria-pressed=true] .theme-check{opacity:1}.theme-swatch{width:42px;height:42px;flex-shrink:0;border-radius:5px;border:1px solid #62473725}.sunset-swatch{background:radial-gradient(ellipse at 10% 100%,#9d261b,transparent 70%),radial-gradient(ellipse at 100% 0,#f9542b,transparent 75%),#ffdc9f}.laundry-swatch{position:relative;background:#f9f9f1}.laundry-swatch:before{content:"";position:absolute;left:3px;right:3px;top:12px;height:1px;background:#586056}.laundry-swatch i{position:absolute;width:19px;height:14px;border:1px solid #586056;left:11px;top:16px;rotate:-8deg;background:#edeadd}.laundry-swatch i:before{content:"";width:2px;height:8px;position:absolute;left:7px;top:-8px;border-left:1px solid #586056}.atmosphere,.guides{transition:opacity .7s}.laundry-scene{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .6s,visibility .6s;pointer-events:none}#gallery-canvas,#fallback-cards{transition:opacity .6s}.laundry-card{position:absolute;left:0;top:0;box-sizing:border-box;margin:0;padding:8px 8px 22px;background:#fffef9;border:1px solid #59605485;border-radius:2px 1px 3px 1px;box-shadow:2px 4px 0 #48503d0b;will-change:transform;transform-origin:50% 50%}.laundry-card img{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;pointer-events:none}.laundry-card figcaption{display:flex;justify-content:space-between;align-items:center;padding-top:7px;font-family:Georgia,serif;font-size:8px;letter-spacing:.06em;opacity:.65;white-space:nowrap}.laundry-card.is-current{border-color:#404b3a;box-shadow:2px 4px 0 #48503d12}#laundry-lines{position:absolute;inset:0;width:100%;height:100%;z-index:45;fill:none;stroke:#4a5347;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}#clothesline{stroke-width:1.15;opacity:.85}.thread{stroke-width:.8;opacity:.55}.peg path{fill:#eee9dc;stroke-width:.85}.doodle{stroke-width:1.3}.doodle>path:first-child{fill:#f6f5ed}.doodle .tiny-peg{fill:#e6dfcf;stroke-width:1}.doodle.kerchief>path:nth-child(2){opacity:.45}.doodle.sock>path:nth-child(2){stroke:#9d8b6c;stroke-width:1}
body[data-theme=laundry]{--ink:#354236;--muted:#78806e;--line:#4e5a4530;--cream:#f7f7ef;background:#f7f7f0}.atmosphere{opacity:1}body[data-theme=laundry] .atmosphere,body[data-theme=laundry] .guides{opacity:0}body[data-theme=laundry] #gallery-canvas,body[data-theme=laundry] #fallback-cards{opacity:0;visibility:hidden}body[data-theme=laundry] .laundry-scene{opacity:1;visibility:visible}body[data-theme=laundry] .theme-button .sun-icon{display:none}body[data-theme=laundry] .theme-button .line-icon{display:initial}body[data-theme=laundry] .theme-button{background:#fffef955;border-color:#59614955;border-radius:18px 20px 17px 22px}body[data-theme=laundry] .theme-menu{background:#fcfcf5f7;border-color:#59614933}body[data-theme=laundry] .theme-menu>button:hover,body[data-theme=laundry] .theme-menu>button[aria-pressed=true]{background:#5961490b}body[data-theme=laundry] .manifesto{top:13%}body[data-theme=laundry] .manifesto p{font-family:"Kaiti SC","STKaiti","Songti SC",serif;font-size:clamp(25px,2.3vw,34px);line-height:1.45;letter-spacing:.015em}body[data-theme=laundry] .manifesto-line{opacity:.25}body[data-theme=laundry] .identity h1{font-weight:300}body[data-theme=laundry] .current-project button{font-family:"Kaiti SC","STKaiti","Songti SC",serif;font-size:23px}body[data-theme=laundry] .view-switch{background:#f7f7efc9;border-color:#5a674733;backdrop-filter:none;border-radius:24px 21px 25px 23px}body[data-theme=laundry] .view-switch button[aria-pressed=true]{background:#e8ecdf;box-shadow:none}body[data-theme=laundry] .footer-controls button{border-color:#4e5a4540;border-radius:46% 53% 48% 51%}body[data-theme=laundry] .footer-controls button:hover{background:#e8ecdf}body[data-theme=laundry] .drag-cursor{background:#f7f7efba;border-color:#59614966;color:var(--ink);backdrop-filter:none}body[data-theme=laundry].grid-mode .canvas-footer{background:linear-gradient(transparent,#f7f7f0 70%)}body[data-theme=laundry] .project-cover{padding:5px;background:#fffef9;border:1px solid #59605466}body[data-theme=laundry] .project-cover>span{background:#fffef9e6}body[data-theme=laundry] .swipe-track{background:#4f594233}body[data-theme=laundry] .swipe-track i{background:#6a7658}body[data-theme=laundry] .swipe-track:before,body[data-theme=laundry] .swipe-track:after{border-color:#4f594255}
@media(max-width:1000px) and (min-width:701px){.site-header{gap:22px}.header-note{font-size:8px}.theme-button{padding:0 9px}.identity h1{font-size:34px}}
@media(max-width:700px){.site-header{gap:12px}.wordmark{gap:7px;flex-shrink:0}.wordmark>span{font-size:23px}.wordmark i{font-size:12px}.theme-picker{margin-left:auto}.theme-button{min-height:36px;padding:0 9px;gap:6px;font-size:10px}.theme-button>svg{width:16px;height:16px}.theme-button .theme-chevron{width:8px;height:8px}.about-button{margin-left:0;min-width:26px;justify-content:center}.about-button>span{display:none}.theme-menu{position:fixed;left:20px;right:20px;top:76px;width:auto;max-width:none}.theme-menu>button{min-height:75px}.theme-menu strong{font-size:16px}.theme-menu small{font-size:11px}.laundry-card{padding:6px 6px 20px}.laundry-card figcaption{padding-top:6px;font-size:6px;letter-spacing:.03em}body[data-theme=laundry] .manifesto{top:14%}body[data-theme=laundry] .manifesto p{font-size:28px;line-height:1.5}body[data-theme=laundry] .current-project button{font-size:22px}body[data-theme=laundry] .swipe-cue{top:63%}.swipe-cue{top:62%}}
@media(max-width:360px){.site-header{gap:8px}.wordmark>span{font-size:22px}.wordmark i{font-size:11px}.theme-button{padding:0 8px;gap:5px;font-size:10px}.theme-menu{top:72px}.swipe-cue{top:59%}body[data-theme=laundry] .manifesto{top:13%}body[data-theme=laundry] .manifesto p{font-size:25px}body[data-theme=laundry] .swipe-cue{top:59%}body[data-theme=laundry] .current-project button{font-size:20px}}

.doodle-thread{stroke-width:.8;opacity:.65}.doodle.boxers>path:nth-child(2){stroke:#87917e;stroke-width:.9}.doodle.shirt>path:nth-child(2){stroke:#8b927b;stroke-width:1}

/* Continuous ribbon: let the defocused foreground extend beyond the upper-left edge. */
body[data-theme=sunset] #gallery-canvas,body[data-theme=sunset] #fallback-cards{mask-image:none}
body[data-theme=sunset] .wordmark{text-shadow:0 1px 12px #ffe5bfc9}
@media(max-width:700px){body[data-theme=sunset] #gallery-canvas,body[data-theme=sunset] #fallback-cards{mask-image:linear-gradient(to bottom,transparent 22%,#000 30%,#000 59%,transparent 70%)}body[data-theme=sunset] .swipe-cue{top:59%}}
@media(max-width:360px){body[data-theme=sunset] .swipe-cue{top:59%}}

/* Draw navigation icons as paths so mobile emoji fonts cannot substitute them. */
.ui-icon{display:inline-block;width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.12em;flex-shrink:0;pointer-events:none}
.project-arrow,.source-link>span,.text-link>span,.case-next>span,.drag-symbol{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1}
.project-arrow .ui-icon{width:30px;height:30px}.project-cover .ui-icon{width:17px;height:17px}
.source-link .ui-icon,.text-link .ui-icon{width:19px;height:19px}.case-next .ui-icon{width:42px;height:42px}
.drag-symbol .ui-icon{width:24px;height:24px}.case-hero figcaption .ui-icon,.about-facts .ui-icon,.noscript .ui-icon{width:1em;height:1em}
#lightbox-prev .ui-icon,#lightbox-next .ui-icon{width:28px;height:28px}
@media(max-width:700px){.project-arrow .ui-icon{width:30px;height:30px}.case-next .ui-icon{width:32px;height:32px}}
