@font-face{font-family:InterVariable;src:url('assets/fonts/InterVariable.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
/* A continuous studio archive: small type, open space, numbered images. */
:root{--paper:#fff;--ink:#434343;--muted:#919191;--line:#858585;--light-line:#d5d5d5;--sans:'InterVariable',Arial,Helvetica,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;--gutter:16px;--catalog-image-width:78px;--catalog-track:calc(var(--catalog-image-width) + 2 * var(--cell-inset));--page-width:calc(4 * (var(--catalog-title-track) + var(--catalog-portrait-track)) - 2 * var(--cell-inset));--type-body:.875rem;--type-ui:.75rem;--type-meta:.6875rem;--header-height:94px;--toolbar-height:calc(var(--type-ui)*1.25 + 19px);--column-gap:16px;--cell-inset:8px;--content-inset:9px;--detail-offset:calc(25% + var(--column-gap)/4)}
:root{--page-edge:32px;--page-frame-inset:calc(var(--page-edge) - var(--cell-inset));--works-index-width:320px;--works-landscape-width:144px;--header-start:calc(var(--page-edge) + var(--works-index-width));--header-track:calc(var(--works-landscape-width) + 2 * var(--cell-inset));--header-width:calc(100% - var(--header-start) - var(--page-edge))}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-width:none}
.portfolio,.portfolio *{scrollbar-width:none}
html::-webkit-scrollbar,.portfolio::-webkit-scrollbar,.portfolio *::-webkit-scrollbar{display:none}
body{font-variation-settings:"wght" 350,"opsz" 14;margin:0;background:var(--paper);color:var(--ink);font:var(--type-body)/1.25 var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button,select{color:inherit;font:inherit;cursor:pointer}
button{padding:0;background:transparent;border:0}
img,video{display:block;max-width:100%}
/* Crop in the page only; keep the original media files intact. */
.portfolio img{width:100%;height:auto;aspect-ratio:var(--image-ratio,16/9);object-fit:cover;object-position:center}
h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}
h1,h2,h3,strong{font-size:inherit;font-weight:400}
ul,ol{padding:0;list-style:none}
[hidden]{display:none!important}
a,button{-webkit-tap-highlight-color:transparent}
a:hover{color:#999}
a:focus-visible,button:focus-visible,select:focus-visible{outline:1px solid var(--ink);outline-offset:4px}
#main:focus{outline:none}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.skip-link{position:fixed;z-index:20;top:8px;left:16px;padding:10px;background:var(--ink);color:white;transform:translateY(-180%)}
.skip-link:focus{transform:none}
/* Reserve tile space, revealing only the uninterrupted run of decoded images. */
.works-reveal .works-image-grid .overview-image:not(.is-image-ready){visibility:hidden}
.works-image-grid .overview-image.is-image-error{display:none!important}
/* Shared header columns follow the fixed Works image columns. */
:root{--catalog-title-width:112px;--catalog-title-track:calc(var(--catalog-title-width) + 2 * var(--cell-inset))}
/* Lab tiles retain their existing dimensions. */
:root{--catalog-cell-height:200px;--catalog-cell-bottom:16px;--catalog-portrait-height:calc(var(--catalog-cell-height) - var(--content-inset) - var(--catalog-cell-bottom) - 1px - var(--type-meta) * 1.25 - 8px);--catalog-portrait-track:calc(var(--catalog-portrait-height) * 3 / 4 + 2 * var(--cell-inset))}
.site-frame{width:100%;margin:0}
.portfolio-book{position:relative;height:max(280px,calc(100dvh - var(--header-height) - var(--toolbar-height) - 200px));margin:8px calc(-1 * var(--cell-inset));overflow:hidden}
.portfolio-book .portfolio-slide{width:100%;height:100%;aspect-ratio:auto;object-fit:contain;object-position:center}
.portfolio-prev,.portfolio-next{position:absolute;top:0;bottom:0;width:50%;z-index:1;background:transparent}
.portfolio-prev{left:0;cursor:url('assets/cursor-previous.svg') 16 16,w-resize}
.portfolio-next{right:0;cursor:url('assets/cursor-next.svg') 16 16,e-resize}
.page-portfolio .site-footer{margin-top:0}
.page-lab{--catalog-cell-height:calc(200px - var(--type-meta) * 1.25 - 8px);--catalog-portrait-height:calc(200px - var(--content-inset) - var(--catalog-cell-bottom) - 1px - var(--type-meta) * 1.25 - 8px)}
.site-header{position:relative;width:var(--header-width);margin-inline:var(--header-start) var(--page-edge);min-height:var(--header-height);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-content:start;align-items:start;padding:9px 0 16px;font-size:var(--type-ui)}
.wordmark,.footer-wordmark{text-transform:uppercase;font-size:var(--type-body);font-weight:600}
.wordmark{grid-column:1/-1}
.footer-contact>p{text-transform:uppercase}
/* Align starting points without restricting each block to a single image width. */
.site-nav{display:flex;flex-wrap:wrap;gap:8px;min-width:0;z-index:5;background:#fffffff5;margin:-1px -4px 0;padding:1px 4px;text-transform:uppercase;font-size:var(--type-body)}
.site-nav a{padding-block:1px}
.site-nav a[aria-current]{text-decoration:underline;text-underline-offset:3px}
.header-note{grid-column:1/-1;min-width:0;max-width:360px;overflow-wrap:anywhere}
.language-nav{align-self:start;display:flex;gap:7px;margin-top:-4px;font-size:var(--type-ui)}
.language-nav a{color:var(--muted);padding-block:4px}
.language-nav a[aria-current]{color:var(--ink)}
.language-nav span{color:var(--muted);padding-block:4px}
#main{min-width:0;min-height:55vh}
/* Every route reserves the same filter space and starts at one shared rule. */
.page-toolbar{height:var(--toolbar-height);margin-inline:var(--page-frame-inset);padding-inline:var(--cell-inset)}
.page-content{border-top:1px solid var(--line);margin-inline:var(--page-frame-inset);padding-inline:var(--cell-inset);display:flow-root}
.catalog-toolbar{display:flex;align-items:center;gap:28px;height:100%;padding-bottom:9px}
#catalog-count{margin-left:auto;color:var(--muted);font-size:var(--type-meta);font-variant-numeric:tabular-nums}
.catalog-filters{display:flex;gap:18px}
.catalog-filters select{display:block;max-width:150px;border:0;border-radius:0;background:transparent;font-size:var(--type-ui);line-height:1.25;text-transform:uppercase;padding:5px 0}
/* Title widths stay independent of the smaller, fixed-size images. */
/* Draw each row's rule across the full archive, including unused space. */
.overview-grid{display:flex;flex-wrap:wrap;margin:-1px calc(-1*var(--cell-inset)) 0;background-image:repeating-linear-gradient(to bottom,var(--line) 0,var(--line) 1px,transparent 1px,transparent var(--catalog-cell-height))}
.overview-project,.overview-image{min-width:0;height:var(--catalog-cell-height);padding:calc(var(--content-inset) + 1px) var(--cell-inset) var(--catalog-cell-bottom);font-size:var(--type-ui)}
.overview-project{flex:0 0 var(--catalog-title-track)}
.project-summary{height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:24px;overflow-wrap:anywhere}
.project-number{display:block;margin-bottom:5px;font-size:var(--type-meta);font-variant-numeric:tabular-nums}
.project-summary h2{text-transform:uppercase;margin-bottom:1px;overflow-wrap:anywhere}
.project-categories span{font-variant-numeric:tabular-nums;margin-right:3px}
.project-summary-bottom{max-width:190px;overflow-wrap:anywhere}
.overview-image{display:flex;flex-direction:column;flex:0 0 var(--catalog-track)}
.page-lab .overview-image{justify-content:center;padding-block:calc(var(--content-inset) + 1px)}
.page-lab .project-summary .lab-date{margin-top:6px;color:var(--muted);font-size:var(--type-meta)}
.page-lab .project-summary .lab-description{margin-top:8px;white-space:pre-wrap;line-height:1.5}
.lab-entry{display:flex;flex:none}
.lab-entry .overview-image{width:calc(2 * var(--catalog-track));flex:none}
.lab-entry .overview-image[data-orientation="portrait"],.lab-entry .overview-image:not([data-orientation]){width:var(--catalog-portrait-track)}
.lab-entry .overview-project{width:var(--catalog-title-track);flex:none;display:flex;align-items:stretch;padding-block:calc(var(--content-inset) + 1px)}
.lab-entry .project-summary{height:auto;width:100%;justify-content:space-between}
@media(min-width:901px){
 .page-lab .overview-grid{display:flex;flex-wrap:wrap;background-image:none}
 .page-lab .lab-entry{display:flex;flex:0 0 20%;min-width:0;border-top:1px solid var(--line)}
 .page-lab .lab-entry .overview-project{width:auto;flex:1 1 0;min-width:0;height:auto;min-height:var(--catalog-cell-height)}
 .page-lab .lab-entry .overview-image{width:auto;flex:1 1 0;min-width:0;height:auto;min-height:var(--catalog-cell-height)}
 .page-lab .lab-entry .overview-image-link{height:auto;aspect-ratio:3/4;max-width:100%;align-self:center}
 .page-lab .lab-entry .overview-image[data-orientation="portrait"] .overview-image-link,.page-lab .lab-entry .overview-image:not([data-orientation]) .overview-image-link{aspect-ratio:3/4;max-width:100%}
}
.overview-image[data-orientation="portrait"],.page-lab .overview-image:not([data-orientation]){flex-basis:var(--catalog-portrait-track)}
.overview-image[data-orientation="landscape"]{flex-basis:calc(2 * var(--catalog-track));grid-column:span 2}
.image-reference{display:block;flex-shrink:0;font-size:var(--type-meta);font-variant-numeric:tabular-nums;letter-spacing:.025em;margin-bottom:8px}
.overview-image-link{position:relative;display:block;flex:none;width:100%;height:calc(var(--catalog-image-width) * 4 / 3);overflow:hidden;cursor:pointer}
.overview-image[data-orientation="portrait"] .overview-image-link,.page-lab .overview-image:not([data-orientation]) .overview-image-link{height:var(--catalog-portrait-height)}
.page-lab .lab-entry .overview-image .overview-image-link{width:100%;height:auto;aspect-ratio:3/4}
.page-lab .overview-image-link video{width:100%;height:100%;max-height:none;aspect-ratio:3/4;object-fit:cover;object-position:center}
.page-study .post-video video{height:auto;aspect-ratio:auto;object-fit:contain}
.overview-image-link img,.overview-image-link video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity 180ms ease}
.overview-image-link:hover img{opacity:.7}
/* A compact project index beside the image-only archive. */
/* Keep the index's line breaks stable while only the image area gets narrower. */
.works-layout{display:grid;grid-template-columns:var(--works-index-width) minmax(0,1fr);margin-inline:calc(-1 * var(--cell-inset));align-items:start}
.works-index{position:sticky;top:48px;min-width:0;width:min(100%,var(--works-index-width));max-height:calc(100dvh - 64px);overflow-y:auto;padding:var(--content-inset) var(--cell-inset) 0}
.works-all{position:sticky;top:0;display:block;width:100%;text-align:left;background:var(--paper);padding:2px 0 12px;font-size:var(--type-ui);z-index:1}
.works-all[aria-pressed="true"]{text-decoration:underline;text-underline-offset:3px}
.works-index .catalog-toolbar{display:flex;flex-wrap:wrap;height:auto;gap:4px 20px;padding:0 0 12px;background:var(--paper)}
.works-index #catalog-count{margin-left:0}
.works-index .catalog-filters{gap:18px}
.works-index-controls{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:2px 8px 14px 0}
.works-index-controls .works-all{position:static;width:auto;padding:0}
.works-filter-toggle{font-size:var(--type-ui);white-space:nowrap}
.works-filter-toggle:hover,.works-filter-toggle[aria-expanded="true"]{text-decoration:underline;text-underline-offset:3px}
.works-index #catalog-count{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.works-filter-tags{display:flex;flex-wrap:wrap;gap:6px 12px;padding-bottom:14px;font-size:var(--type-meta)}
.works-filter-tags button{padding:3px 0;color:var(--ink);text-align:left}
.works-filter-tags button:hover{text-decoration:underline}
.works-stage{min-width:0}
.works-stage>.works-image-grid{margin-inline:0}
.works-index-link[aria-current] .works-index-title{text-decoration:underline;text-underline-offset:3px}
.works-index-link{display:grid;grid-template-columns:20px minmax(0,1fr) max-content;grid-template-areas:"number title year";gap:6px;align-items:baseline;padding:4px 0;font-size:var(--type-ui);line-height:1.4}
.works-index-title{grid-area:title;overflow-wrap:anywhere}
.works-index-number{grid-area:number}
.works-index-year{grid-area:year;text-align:right;white-space:nowrap;padding-right:8px}

.works-index-number,.works-index-year{color:var(--muted);font-size:var(--type-meta);overflow-wrap:anywhere}
.works-index-number,.works-index-year{font-variant-numeric:tabular-nums}
.works-index-link:hover .works-index-title{text-decoration:underline;text-underline-offset:3px}
/* Fixed media bounds: narrower containers wrap tiles instead of shrinking them. */
.works-image-grid{--works-image-width:var(--works-landscape-width);--works-image-ratio:16/9;display:flex;flex-wrap:wrap;min-width:0;align-content:flex-start}
.works-image-grid .overview-image{flex:0 0 auto;width:max-content;grid-column:auto}
/* Crop landscape sources to 16:9 and portrait sources to 3:4 at fixed sizes. */
.works-image-grid .overview-image[data-orientation="portrait"]{--works-image-width:114px;--works-image-ratio:3/4}
.works-image-grid .overview-image .overview-image-link{align-self:flex-start;width:var(--works-image-width);height:auto;aspect-ratio:var(--works-image-ratio)}
.works-image-grid.is-project-preview{padding-top:var(--project-preview-offset,0px);background-image:none}
.works-image-grid .overview-image.is-hover-hidden{display:none}
/* Project details replace the gallery in the same Works surface. */
.works-project-panel{--detail-paper:#ddd;--detail-stage-height:max(420px,calc(100dvh - var(--header-height) - var(--toolbar-height)));--detail-media-inset:24px;--inline-info-top:max(64px,calc(50dvh - 120px));min-width:0}
.works-project-panel:focus{outline:none}
.inline-work{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"gallery" "information";align-items:start}
.inline-project-information{grid-area:information;min-width:0;width:100%;max-width:728px;padding:32px var(--detail-media-inset)}
.inline-project-information .work-meta{max-width:480px}
.inline-project-heading{margin-bottom:24px}
.inline-project-heading .eyebrow{margin-bottom:8px}
.inline-project-heading h2{font-size:var(--type-body);line-height:1.4;overflow-wrap:anywhere}
.inline-all-works{display:none;font-size:var(--type-ui);margin:0 var(--cell-inset) 16px}
/* The title and metadata determine when the side column has enough room. */
.works-project-panel{--inline-information-width:300px}
.has-side-information .inline-work{grid-template-columns:minmax(0,1fr) var(--inline-information-width);grid-template-areas:"gallery information"}
.has-side-information .inline-project-information{position:sticky;top:var(--inline-info-top);margin-top:max(32px,calc(var(--detail-stage-height) / 2 - 120px));max-width:none;max-height:calc(100dvh - var(--inline-info-top) - 24px);overflow-y:auto;padding:0 var(--cell-inset)}
.has-side-information .inline-project-information{display:flex;flex-direction:column;overflow:visible}
.has-side-information .inline-project-information>.inline-project-heading,.has-side-information .inline-project-information>.project-facts{flex:none}
.has-side-information .inline-project-information>.post-des{min-height:0;overflow-y:auto;flex:0 1 auto}
.inline-text-measure{position:fixed;left:0;top:0;visibility:hidden;pointer-events:none;white-space:pre}
.catalog-empty{text-align:center;padding:80px 16px}
.catalog-empty button{margin-top:20px;text-decoration:underline;text-underline-offset:3px}
/* The same column rhythm continues through the archive and project pages. */
.eyebrow{text-transform:uppercase;color:var(--muted);font-size:var(--type-meta);letter-spacing:.02em}
/* A scrollable introduction beside a large photograph. */
.about-article{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);grid-template-rows:auto;align-items:start;gap:clamp(24px,3vw,48px);width:calc(100% - (var(--header-start) - var(--page-edge)));margin-left:calc(var(--header-start) - var(--page-edge));height:auto;padding-top:var(--content-inset)}
.about-information{min-width:0;min-height:0;overflow:visible;padding-right:16px}
.about-information:focus-visible{outline:1px solid var(--ink);outline-offset:3px}
.about-heading{margin-bottom:48px}
.about-heading h1{font-size:var(--type-body);line-height:1.5;overflow-wrap:anywhere}
.about-meta{margin-top:4px;font-size:var(--type-ui);line-height:1.6}
.about-image{min-width:0;min-height:0;width:100%;height:auto}
.about-image img{display:block;width:auto;max-width:100%;height:auto;max-height:min(var(--about-text-height,600px),600px);object-fit:contain;object-position:left top}
figcaption{display:flex;justify-content:space-between;gap:12px;padding-top:8px;font-size:var(--type-meta)}
.prose{font-size:var(--type-body);line-height:1.35;word-break:keep-all;overflow-wrap:anywhere}
.prose p+p{margin-top:1.5em}
.prose h2,.prose h3{font-size:var(--type-body);font-weight:600;margin:24px 0 16px}
.prose ul,.prose ol{list-style:revert;margin:18px 0;padding-left:20px}
.prose li+li{margin-top:8px}
.prose a,.cv-row a{text-decoration:underline;text-underline-offset:3px}
.cv-row .cv-company-link,.cv-row .teaching-link{text-decoration:none}
.cv-row .cv-company-link:hover,.cv-row .cv-company-link:focus-visible,.cv-row .teaching-link:hover,.cv-row .teaching-link:focus-visible{text-decoration:underline}
.about-prose{font-size:var(--type-body);line-height:1.8}
.about-fields{margin-top:32px;font-size:var(--type-body);line-height:1.8}
.about-fields ul{list-style:"– ";padding-left:1em}
.about-fields li+li{margin-top:4px}
.about-contact{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-top:36px;padding-bottom:12px;font-size:var(--type-ui);line-height:1.6;font-style:normal;overflow-wrap:anywhere}
/* One continuous CV, aligned with the shared page edge and small archive type. */
.cv-article{width:calc(100% - (var(--header-start) - var(--page-edge)));max-width:1000px;margin-left:calc(var(--header-start) - var(--page-edge));margin-right:0;padding-top:var(--content-inset)}
.cv-title{font-size:var(--type-body);margin-bottom:32px}
.teaching-link{display:inline-block;margin-left:12px}
.teaching-materials{padding-block:24px 40px}
.teaching-materials>h1{margin:24px 0 12px;font-size:20px}
.teaching-intro{font-size:var(--type-ui);line-height:1.7;margin-bottom:32px}
.teaching-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:32px 24px}
.teaching-card{min-width:0;font-size:var(--type-ui);line-height:1.6}
.teaching-card h2{margin:12px 0 8px}
.teaching-card h2 span{color:var(--muted);margin-right:8px}
.teaching-card>a{display:inline-block;margin-right:16px;text-decoration:underline;text-underline-offset:3px}
.pdf-preview{width:100%;height:280px;border:1px solid var(--light-line);background:#eee}
.teaching-empty{padding:32px 0;color:var(--muted)}
.pdf-mobile-preview{display:none}
.pdf-reader{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:var(--paper);color:var(--ink)}
.pdf-reader[open]{display:flex;flex-direction:column}
.pdf-reader::backdrop{background:#fff}
.pdf-reader header,.pdf-reader footer{display:flex;align-items:center;gap:16px;padding:12px max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left));font-size:var(--type-ui);flex:none}
.pdf-reader header{border-bottom:1px solid var(--light-line);padding-top:max(12px,env(safe-area-inset-top))}
.pdf-reader-title{flex:1;min-width:0}
.pdf-reader button{min-width:44px;min-height:44px}
.pdf-reader [data-pdf-close]{font-size:26px}
.pdf-reader-stage{position:relative;flex:1;min-height:0;background:#eee;touch-action:pan-x pan-y pinch-zoom}
.pdf-canvas-scroll{position:absolute;inset:0;overflow:scroll;display:block;padding:12px;touch-action:pan-x pan-y pinch-zoom;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:#888 #e4e4e4}
.portfolio .pdf-canvas-scroll::-webkit-scrollbar{display:block;width:10px;height:10px}
.pdf-canvas-scroll::-webkit-scrollbar-thumb{background:#888;border:2px solid #e4e4e4;border-radius:8px}
.pdf-canvas-scroll::-webkit-scrollbar-track{background:#e4e4e4}
.pdf-scroll-page{position:relative;margin:0 auto 16px;background:#fff;flex:none}
.pdf-scroll-page:last-child{margin-bottom:0}
.pdf-canvas-scroll canvas{display:block;flex:none;background:white;max-width:none}
.pdf-page-prev,.pdf-page-next{position:absolute;top:0;bottom:0;width:50%;z-index:1}
.pdf-page-prev{left:0;cursor:url('assets/cursor-previous.svg') 16 16,w-resize}
.pdf-page-next{right:0;cursor:url('assets/cursor-next.svg') 16 16,e-resize}
.pdf-reader footer{justify-content:center;padding-bottom:max(12px,env(safe-area-inset-bottom))}
.pdf-page-status{font-variant-numeric:tabular-nums;min-width:60px;text-align:center}
.pdf-reader [data-pdf-zoom]{margin-left:auto}
.pdf-reader button:disabled{opacity:.3;cursor:default}
.pdf-reader.is-zoomed .pdf-page-prev,.pdf-reader.is-zoomed .pdf-page-next{display:none}
.pdf-reader.is-zoomed .pdf-canvas-scroll{display:block;touch-action:pan-x pan-y pinch-zoom}
.pdf-reader-error{font-size:var(--type-ui);padding:0 16px 12px}
.pdf-reader-error:empty{display:none}
.pdf-reader-open{overflow:hidden}
@media(max-width:900px){
 .teaching-card.pdf-mobile-ready .pdf-preview{display:none}
 .pdf-mobile-ready .pdf-mobile-preview{display:block;width:100%;min-height:140px;background:#eee;text-align:left;padding:8px}
 .pdf-mobile-preview canvas{display:block;width:100%;height:auto}
 .pdf-mobile-preview span{display:block;padding:8px}
 .teaching-grid{grid-template-columns:minmax(0,1fr)}
}
.cv-sections{display:flex;flex-direction:column;gap:48px}
.cv-section{min-width:0}
.cv-section h2{display:flex;align-items:baseline;gap:12px;padding:14px 0 18px;border-top:1px solid var(--line);font-size:var(--type-ui);font-weight:400;line-height:1.5;text-transform:uppercase}
.cv-section:first-child h2{border-top:0;padding-top:0}
.section-number{color:var(--muted);font-size:var(--type-meta);font-variant-numeric:tabular-nums}
.cv-row{display:grid;grid-template-columns:144px minmax(0,1fr);gap:var(--column-gap);padding:10px 0;font-size:var(--type-ui);line-height:1.6}
.cv-row dt{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.cv-row dd{display:flex;flex-wrap:wrap;align-items:baseline;align-content:flex-start;gap:3px 12px;min-width:0;word-break:keep-all;overflow-wrap:anywhere}
.cv-entry-primary{flex:0 1 auto;max-width:100%;font-weight:400;color:var(--ink)}
.cv-entry-secondary{flex:0 1 auto;max-width:100%;margin-top:0;color:var(--muted);font-size:var(--type-meta);line-height:1.6}
.cv-row .teaching-link{display:inline-block;margin:0;font-size:var(--type-meta)}
.cv-section .section-number{font-weight:400}
/* A gray image column, a centered title, and a compact two-column record. */
.page-work{--detail-gap:0px;--detail-side-width:calc((100% - 2 * var(--page-frame-inset)) / 4.4);--detail-stage-height:100dvh;--detail-media-inset:clamp(20px,2.5vw,36px);--detail-info-top:calc(50dvh - var(--type-ui) * .625);--detail-paper:#ddd}
.page-work .site-header{position:absolute;top:0;left:var(--header-start);margin-inline:0;min-height:0;pointer-events:none;z-index:5}
.page-work .site-header>*{pointer-events:auto}
.page-work .page-toolbar{position:absolute;top:64px;left:var(--page-frame-inset);width:var(--detail-side-width);height:auto;margin-inline:0;padding:var(--cell-inset);z-index:5}
.page-work .detail-toolbar{align-items:flex-start;flex-direction:column;gap:12px;padding:0}
.page-work .page-content{padding:0;border-top:0}
.page-work .project-pagination{margin-inline:var(--cell-inset)}
.detail-toolbar{height:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:9px}
.archive-back{font-size:var(--type-meta)}
.work-article{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.4fr) minmax(0,1fr);grid-template-areas:"heading gallery information";gap:var(--detail-gap);align-items:start;min-height:100dvh}
.project-information{grid-area:information;min-width:0;position:sticky;top:var(--detail-info-top);margin-top:var(--detail-info-top);padding-inline:var(--cell-inset);max-height:calc(50dvh - 24px);overflow-y:auto}
.feature-heading{grid-area:heading;min-width:0;position:fixed;top:50dvh;left:var(--page-frame-inset);width:var(--detail-side-width);transform:translateY(-50%);padding-inline:var(--cell-inset);z-index:2}
.post-title{font-size:var(--type-body);font-weight:400;line-height:1.4;overflow-wrap:anywhere}
.project-facts{margin-bottom:24px}
@media(min-width:901px){
 .page-study .project-information>.project-facts{margin-bottom:14px}
 .page-study .project-information>.post-des{line-height:1.6}
}
.work-meta{font-size:var(--type-ui);line-height:1.25}
.work-meta>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.work-meta dt{color:var(--ink);overflow-wrap:anywhere}
.work-meta dd{overflow-wrap:anywhere}
.post-des{font-size:var(--type-ui);line-height:1.7}
.post-des p+p{margin-top:1.5em}
.post-des h2,.post-des h3{font-size:inherit;line-height:inherit}
.post-des>:first-child{margin-top:0}
.feature-gallery{grid-area:gallery;min-width:0;display:grid;grid-template-columns:repeat(var(--detail-columns,1),minmax(0,1fr));gap:24px;background:var(--detail-paper,#ddd);padding:48px 24px;align-content:start}
.feature-gallery>.post-video{grid-column:1/-1}
.page-study .feature-gallery{position:relative;align-self:stretch;padding-inline:clamp(48px,5vw,72px);padding-bottom:80px}
.page-study .project-pagination{margin-top:0}
.page-study .page-content{border-top:1px solid var(--line)}
@media(min-width:901px){
 .page-study .site-header{position:relative;top:auto;left:auto;margin-inline:var(--header-start) var(--page-edge);min-height:var(--header-height)}
 .page-study .page-toolbar{position:static;width:auto;height:var(--toolbar-height);margin-inline:var(--page-frame-inset);padding:0 var(--cell-inset)}
 .page-study .detail-toolbar{flex-direction:row;align-items:center;justify-content:space-between;height:100%}
 .page-study .work-article{position:relative;min-height:max(420px,calc(100dvh - var(--header-height) - var(--toolbar-height)))}
 .page-study .feature-heading{position:absolute;grid-area:auto;left:0;top:var(--study-media-center,50%);width:calc(100% / 4.4);margin:0;transform:translateY(-50%)}
 .page-study .project-information{position:absolute;grid-area:auto;right:0;top:calc(var(--study-media-center,50%) - var(--study-facts-half,8px));width:calc(100% / 4.4);margin:0;max-height:calc(100% - var(--study-media-center,50%));}
 .page-study .feature-gallery{align-content:center;padding-block:48px}
 .page-study .feature-gallery img,.page-study .feature-gallery video{max-height:max(300px,calc(100dvh - var(--header-height) - var(--toolbar-height) - 96px))}
}
.page-study .feature-gallery .study-arrow{position:absolute;top:0;bottom:0;display:block;width:50%;height:100%;background:transparent;z-index:1}
.page-study .feature-gallery .study-arrow-previous{left:0;cursor:url('assets/cursor-previous.svg') 16 16,w-resize}
.page-study .feature-gallery .study-arrow-next{right:0;cursor:url('assets/cursor-next.svg') 16 16,e-resize}
.page-study .feature-gallery>.project-image,.page-study .feature-gallery>.post-video{position:relative;z-index:2;pointer-events:none}
.page-study .feature-gallery .project-image img,.page-study .feature-gallery .post-video video,.page-study .feature-gallery .post-video iframe{pointer-events:auto}
.page-study .feature-gallery .study-arrow[data-disabled]{cursor:default}
.study-arrow:focus-visible{outline:1px solid currentColor;outline-offset:-3px}
.feature-gallery>.project-image,.feature-gallery>.post-video{display:grid;place-items:start center;height:auto;min-width:0;padding:0}
.feature-gallery a{display:block;width:100%;cursor:zoom-in}
.feature-gallery img{width:100%;height:auto;max-height:90vh;aspect-ratio:auto;object-fit:contain;object-position:center top;margin-inline:auto}
.feature-gallery img[data-orientation="landscape"]{width:85%}
.post-video{min-width:0}
.post-video video{width:70%;max-height:90vh;object-fit:contain;margin-inline:auto}
.post-video-frame{width:70%;aspect-ratio:16/9;background:transparent;margin-inline:auto}
.post-video iframe{display:block;width:100%;height:100%;border:0}
.project-pagination{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;margin-top:32px;padding-top:16px;border-top:1px solid var(--light-line);font-size:var(--type-ui)}
.project-pagination a:last-child{text-align:right}
.project-pagination span{color:var(--muted)}
.project-pagination strong{display:block;margin-top:8px;overflow-wrap:anywhere}
.site-footer{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:40px var(--column-gap);border-top:1px solid var(--line);margin:64px var(--page-frame-inset) 0;padding:32px var(--cell-inset) 18px;font-size:var(--type-ui)}
.footer-wordmark{grid-column:1}
.footer-contact{grid-column:2/5}
.footer-links{grid-column:5/7;display:flex;gap:4px;flex-direction:column;align-items:flex-start}
.back-to-top{grid-column:7/9;justify-self:end;text-transform:uppercase}
.footer-copyright{grid-column:1/3;color:var(--muted);font-size:var(--type-meta)}
.footer-practice{grid-column:5/9;color:var(--muted);font-size:var(--type-meta)}
.viewer-open{overflow:hidden}
.media-dialog{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#000;color:#fff;overflow:hidden;cursor:zoom-out}
.media-dialog::backdrop{background:#000}
.media-dialog header{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.media-dialog h2{flex:1;text-transform:uppercase}
.media-dialog button{padding:5px;text-transform:uppercase}
#viewer-work{text-transform:uppercase}
#viewer-media{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);place-items:center;width:100vw;height:100dvh;overflow:hidden}
#viewer-media img,#viewer-media video{display:block;margin:0;width:100vw;height:100dvh;min-width:0;min-height:0;max-width:none;max-height:none;aspect-ratio:auto;object-fit:contain;object-position:center}
@media(min-width:1088px){
 .site-header{grid-template-columns:var(--header-track) calc(2 * var(--header-track)) minmax(0,1fr);gap:16px 0}
 .site-header>.wordmark{grid-column:1;grid-row:1}
 .site-header>.header-note{grid-column:2;grid-row:1;padding-right:calc(2 * var(--cell-inset))}
 .site-header>.site-nav{grid-column:3;grid-row:1}
 .site-header>.language-nav{grid-column:3;grid-row:2}
}
@media(min-width:1320px){
 .site-header{grid-template-columns:var(--header-track) calc(2 * var(--header-track)) calc(2 * var(--header-track)) minmax(0,1fr)}
 .site-header>.language-nav{grid-column:4;grid-row:1}
 .site-nav{position:fixed;left:calc(var(--header-start) + 3 * var(--header-track) - 4px);top:8px;width:max-content;max-width:calc(2 * var(--header-track) - 8px);margin:0}
}
@media(min-width:901px){
 .page-work .project-information{display:flex;flex-direction:column;overflow:visible}
 .page-work .project-information>.project-facts{flex:none}
 .page-work .project-information>.post-des{min-height:0;overflow-y:auto;flex:0 1 auto}
 .site-header>.header-note{position:absolute;grid-column:auto;grid-row:auto;top:9px;left:calc(-1 * var(--works-index-width));width:calc(var(--works-index-width) - 16px);max-width:none;padding:0}
}
.page-work .site-nav,.page-works:has(.is-detail-open) .site-nav{position:fixed;top:8px;left:min(calc(var(--header-start) + 3 * var(--header-track) - 4px),calc(100% - 320px - var(--page-edge)));width:max-content;max-width:calc(100% - 2 * var(--page-edge));margin:0;z-index:20;background:var(--paper)}
@media(max-width:900px){
 .site-header{min-height:0;padding-bottom:12px}
 .page-toolbar[aria-hidden="true"],.page-lab .page-toolbar:not(:has(label:not([hidden]))){display:none}
 .page-work .site-nav,.page-works:has(.is-detail-open) .site-nav{top:40px;left:var(--page-edge)}
 :root{--header-height:126px;--header-start:var(--page-edge)}
 .site-footer{grid-template-columns:repeat(4,minmax(0,1fr))}
 .footer-contact{grid-column:2/4}
 .footer-links{grid-column:4}
 .back-to-top{grid-column:4;grid-row:2}
 .footer-copyright{grid-row:2}
 .footer-practice{grid-column:2/4;grid-row:2}
 .works-layout{grid-template-columns:minmax(0,1fr);gap:28px}
 .works-index{position:static;width:100%;max-height:none;overflow:visible}
 .works-layout.is-detail-open .works-index ol{max-height:240px;overflow-y:auto}
 .works-project-panel{--detail-stage-height:clamp(320px,60dvh,560px);--detail-media-inset:20px}
 .inline-all-works{display:block}
 .work-article{grid-template-columns:minmax(0,1fr);grid-template-areas:"heading" "facts" "gallery" "description";gap:24px}
 .page-study .work-article{grid-template-areas:"gallery" "heading" "facts" "description";min-height:0;row-gap:10px;padding-bottom:20px}
 .page-study .feature-heading{margin-top:6px}
 .page-study .work-article .post-des{margin-top:4px;line-height:1.6}
 .inline-work{grid-template-columns:minmax(0,1fr);grid-template-areas:"heading" "facts" "gallery" "description";gap:24px}
 .inline-work .inline-project-information,.work-article .project-information{display:contents}
 .inline-project-heading{grid-area:heading;margin:0;padding-inline:var(--cell-inset)}
 .inline-work .project-facts,.work-article .project-facts{grid-area:facts;margin:0;padding-inline:var(--cell-inset)}
 .inline-work>.inline-project-information>.post-des,.work-article>.project-information>.post-des{grid-area:description;padding:0 var(--cell-inset);max-height:none;overflow:visible}
 .page-work .site-header{position:relative;left:auto;margin-inline:var(--header-start) var(--page-edge);min-height:var(--header-height);pointer-events:auto}
 .page-work .page-toolbar{position:static;width:auto;margin-inline:var(--page-frame-inset);padding-block:16px}
 .page-work .detail-toolbar{flex-direction:row;justify-content:space-between}
 .feature-heading,.project-information{position:static;width:auto;transform:none;margin-top:0;max-height:none;overflow:visible}
 .page-work{--detail-stage-height:clamp(360px,65dvh,600px)}
}
@media(max-width:700px){
 .about-article{grid-template-columns:minmax(0,1fr);grid-template-rows:auto;height:auto;gap:32px}
 .about-article .about-image{grid-row:1}
 .about-article .about-information{grid-row:2}
 .about-information{overflow:visible;padding-right:0;scrollbar-gutter:auto}
 .about-heading{margin-bottom:28px}
 .about-image,.about-image img{height:auto}
 .about-image img{max-height:400px}
}
@media(max-width:600px){
 :root{--page-edge:16px}
 :root{--gutter:12px;--header-height:124px;--toolbar-height:calc(var(--type-meta)*1.25 + 48px);--cell-inset:5px;--content-inset:8px;--column-gap:12px}
 .catalog-toolbar{display:grid;grid-template-columns:1fr auto;gap:3px 12px}
 #catalog-count{grid-column:2;grid-row:1}
 .catalog-filters{grid-column:1/-1;grid-row:2;justify-content:flex-end;gap:18px}
 .catalog-filters select{min-height:36px}
 :root{--catalog-cell-bottom:14px}
 .prose{line-height:1.5}
 .cv-sections{gap:36px}
 .cv-row{grid-template-columns:10em minmax(0,1fr)}
 .detail-toolbar{align-items:flex-end;padding-bottom:14px}
 .page-work{--detail-stage-height:clamp(320px,60dvh,480px)}
 .post-des{line-height:1.7}
 .site-footer{grid-template-columns:1fr 1fr;gap:28px 12px;margin-top:42px}
 .footer-contact{grid-column:2}
 .footer-links{grid-column:2;grid-row:2}
 .back-to-top{grid-column:1;grid-row:2;justify-self:start}
 .footer-copyright{grid-column:1;grid-row:3}
 .footer-practice{grid-column:2;grid-row:3}
 .media-dialog{width:100vw;padding:0}
 .media-dialog header{flex-wrap:wrap;gap:12px}
 .media-dialog h2{flex-basis:100%}
 .media-dialog button{margin-left:auto;min-height:32px}
}
@media(max-width:900px){
 .portfolio .site-header{position:sticky;top:0;min-height:0;z-index:25;background:var(--paper);grid-template-columns:minmax(0,1fr);gap:12px;padding:9px 0 12px}
 .portfolio .site-header::after{content:"";position:absolute;left:calc(-1 * var(--cell-inset));right:calc(-1 * var(--cell-inset));bottom:0;height:1px;background:var(--line);pointer-events:none}
 .portfolio .page-content{border-top:0}
 .works-image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,144px),1fr));background-image:none;row-gap:0;align-items:stretch}
 .page-lab .overview-grid{display:grid;grid-template-columns:minmax(0,1fr);background-image:none}
 .page-lab .lab-entry{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .page-lab .lab-entry .overview-image{width:100%}
 .page-lab .overview-project,.page-lab .overview-image{width:100%;min-width:0;grid-column:auto;height:auto;min-height:var(--catalog-cell-height);border-top:1px solid var(--line)}
 .page-lab .overview-project,.page-lab .overview-image{padding-block:16px}
 .page-lab .overview-image .overview-image-link{width:100%;height:auto;aspect-ratio:3/4}
 .page-lab .overview-image[data-orientation="portrait"] .overview-image-link{aspect-ratio:3/4}
 .works-image-grid .overview-image{width:100%;min-width:0;height:auto;border-top:1px solid var(--line);padding-top:16px}
 .works-image-grid .overview-image .overview-image-link{width:100%;align-self:stretch}
 .feature-gallery img[data-orientation="landscape"]{width:100%}
 .portfolio .site-header>.wordmark{grid-column:1;grid-row:1}
 .portfolio .site-header>.header-note{position:static;grid-column:1;grid-row:2;width:auto;max-width:100%;padding:0}
 .portfolio .site-header>.site-nav{position:static;grid-column:1;grid-row:3;top:auto;left:auto;width:auto;max-width:100%;margin:0 -4px;z-index:auto}
}
@media print{
 @page{size:A4;margin:12mm}
 :root{--page-edge:var(--cell-inset)}
 .site-nav,.language-nav,.page-toolbar,.site-footer,.skip-link,.media-dialog,.project-pagination,.archive-back,.post-video{display:none!important}
 .works-reveal .works-image-grid .overview-image{visibility:visible!important}
 .site-frame{width:auto;max-width:none;margin:0}
 .site-header{min-height:70px}
 .overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background-image:none}
 .works-layout{display:block}
 .works-index{position:static;max-height:none;overflow:visible;margin-bottom:24px}
 .works-all,.inline-all-works{display:none!important}
 .inline-work{display:block}
 .inline-project-information,.has-side-information .inline-project-information{position:static;margin:0 0 24px;max-height:none;overflow:visible}
 .works-image-grid .overview-image{width:auto;max-width:none}
 .works-image-grid.is-project-preview{min-height:0!important;padding-top:0}
 .works-image-grid .overview-image.is-hover-hidden{display:block}
 .overview-project,.overview-image{height:auto;padding-top:var(--content-inset);border-top:1px solid var(--line);break-inside:avoid}
 .feature-gallery figure,.cv-section{break-inside:avoid}
 .work-article{display:block}
 .page-work .site-header{display:none}
 .feature-heading,.project-information{position:static;width:auto;transform:none;margin:0 0 24px;max-height:none;overflow:visible}
 .feature-gallery{background:transparent}
 .feature-gallery>.project-image{height:auto;padding:12px 0;border-color:var(--light-line)}
 .about-article{display:block;height:auto}
 .about-information{overflow:visible;padding-right:0}
 .about-image{margin-top:24px}
 .about-image,.about-image img{height:auto}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}

.project-documents{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:24px}.project-documents a{font-size:12px;text-decoration:none}.project-documents a:hover{text-decoration:underline}

.detail-image-row{grid-column:1/-1;display:grid;grid-template-columns:repeat(var(--row-columns,1),minmax(0,1fr));gap:24px;column-gap:6px;align-items:start;min-width:0}.detail-image-row>.project-image{min-width:0;margin:0;display:grid;place-items:start center}.detail-image-row[style*="columns:2"] img,.detail-image-row[style*="columns:3"] img{width:100%}@media(max-width:760px){.detail-image-row{gap:12px;column-gap:4px}}

.detail-image-row .gallery-video video{display:block;width:100%;height:auto;max-height:90vh;object-fit:contain}.detail-image-row[style*="columns:1"] .gallery-video video{width:85%;margin-inline:auto}

.works-project-panel .feature-gallery>.post-video:has(+.detail-image-row),.page-work:not(.page-study) .feature-gallery>.post-video:has(+.detail-image-row){margin-bottom:40px}@media(max-width:760px){.works-project-panel .feature-gallery>.post-video:has(+.detail-image-row),.page-work:not(.page-study) .feature-gallery>.post-video:has(+.detail-image-row){margin-bottom:24px}}

.post-video-frame mux-player{display:block;width:100%;height:100%;aspect-ratio:16/9}.post-video-frame mux-player::part(center play button){width:36px;height:36px;min-width:36px;padding:0;--media-button-icon-width:36px;--media-button-icon-height:36px}

/* Works videos align with the single landscape-image width. */
.works-project-panel .post-video-frame,.works-project-panel .post-video>video,.page-work:not(.page-study) .post-video-frame,.page-work:not(.page-study) .post-video>video{width:85%}
@media(max-width:900px){.works-project-panel .post-video-frame,.works-project-panel .post-video>video,.page-work:not(.page-study) .post-video-frame,.page-work:not(.page-study) .post-video>video,.detail-image-row[style*="columns:1"] .gallery-video video{width:100%}}

.post-video-frame mux-player::part(center play button){background:transparent;border:0;border-radius:0;box-shadow:none;--media-control-background:transparent;--media-control-hover-background:transparent;--media-icon-color:var(--detail-paper,#ddd)}
.post-video-frame mux-player::part(center play button):hover{background:transparent;box-shadow:none}
.post-video-frame mux-player::part(center play button):focus-visible{outline:1px solid var(--detail-paper,#ddd);outline-offset:4px}

.works-project-panel .feature-gallery,.page-work:not(.page-study) .feature-gallery{row-gap:200px}
@media(max-width:900px){.works-project-panel .feature-gallery,.page-work:not(.page-study) .feature-gallery{row-gap:36px}}

/* Works detail editorial copy. Other page layouts retain their existing rules. */
.detail-copy-section{padding-top:0;border:0}
.detail-copy-section+.detail-copy-section{margin-top:32px}
.detail-copy-section>h3,.detail-process-copy>.detail-section-label{font-size:var(--type-ui);font-weight:400;line-height:1.7;color:var(--muted);margin:0 0 12px}
.detail-copy-section>div>:first-child{margin-top:0}
.detail-process{grid-column:1/-1;min-width:0}
.detail-process-row{display:grid;grid-template-columns:minmax(0,1fr) var(--inline-information-width,400px);align-items:stretch}
.detail-process-media{min-width:0;background:var(--detail-paper,#ddd);padding:48px 24px;display:grid;gap:200px;align-content:start}
.detail-process-media .project-image{margin:0;min-width:0}
.detail-process-media img,.detail-process-media video{display:block;width:100%;height:auto;aspect-ratio:auto;max-height:90vh;object-fit:contain;margin:auto}
.detail-process-media img[data-orientation="landscape"]{width:85%}
.detail-process-copy{min-width:0;padding:48px var(--cell-inset) 24px}
.detail-process-copy>.detail-section-label{margin:0 0 20px}
.detail-process-row.is-text-only .detail-process-copy{padding-top:16px}
.detail-copy-section p+p,.detail-process-copy p+p{margin-top:10px}
.detail-copy-section>div>:last-child,.detail-process-copy>:last-child{margin-bottom:0}
.detail-process-copy h4{font-size:inherit;font-weight:400;line-height:inherit;margin:0 0 12px;padding-top:0;border:0}
.detail-process-copy h4 span{color:var(--muted);margin-right:8px}
.detail-process-row.is-text-only .detail-process-media{padding-block:0}
.page-work:not(.page-study) .detail-process{grid-column:2/4}
.page-work:not(.page-study) .detail-process-row{grid-template-columns:minmax(0,2.4fr) minmax(0,1fr)}
@media(min-width:901px){
.has-side-information .inline-work>.inline-project-information{position:fixed;top:max(var(--inline-start-top),var(--inline-info-top));right:var(--inline-fixed-right);width:var(--inline-information-width);margin:0;height:calc(100dvh - max(var(--inline-start-top),var(--inline-info-top)) - 24px);max-height:none;background:var(--paper);z-index:3}
.has-side-information .inline-work>.inline-project-information>.post-des{min-height:0;overflow-y:auto;scrollbar-width:thin;padding-right:8px}
}
@media(max-width:900px){
.detail-process,.page-work:not(.page-study) .detail-process{grid-column:1/-1;grid-row:auto}
.detail-process-row,.page-work:not(.page-study) .detail-process-row{grid-template-columns:minmax(0,1fr)}
.detail-process-media{padding:32px 20px;gap:36px}
.detail-process-media img[data-orientation="landscape"]{width:100%}
.detail-process-copy{padding:24px var(--cell-inset) 20px}
.detail-process-row.is-text-only .detail-process-copy{padding-top:12px}
.detail-copy-section{padding-top:0}
.detail-process-copy h4{padding-top:0}
.detail-copy-section p+p,.detail-process-copy p+p{margin-top:10px}
.detail-process-row.is-text-only .detail-process-media{display:none}
.detail-copy-section+.detail-copy-section{margin-top:24px}
}

.works-project-panel:not(.has-side-information) .detail-process-row{grid-template-columns:minmax(0,1fr)}
.works-project-panel:not(.has-side-information) .detail-process-row.is-text-only .detail-process-media{display:none}

.detail-process-media{grid-template-columns:repeat(var(--process-columns,1),minmax(0,1fr));column-gap:6px}
.detail-process-media[style*="--process-columns:2"] img,.detail-process-media[style*="--process-columns:3"] img{width:100%}
@media(max-width:900px){.detail-process-media{column-gap:4px}}

/* Keep authored line breaks in Lab detail descriptions. */
.page-study .project-information>.post-des{white-space:pre-line}

.page-study .post-video>video[data-orientation="landscape"]{width:85%}

/* Continue the Works media background through the gap above the footer rule. */
@media(min-width:901px){
 .has-side-information .inline-work:not(:has(.detail-process))>.feature-gallery{position:relative;align-self:stretch}
 .has-side-information .detail-process-row:last-child>.detail-process-media{position:relative}
 .has-side-information .inline-work:not(:has(.detail-process))>.feature-gallery::after,
 .has-side-information .detail-process-row:last-child>.detail-process-media::after{content:"";position:absolute;left:0;right:0;top:100%;height:64px;background:var(--detail-paper,#ddd);pointer-events:none}
}

/* Fill the entire opening grid row even when its text is taller than its media. */
@media(min-width:901px){
 .has-side-information .inline-work>.feature-gallery,
 .page-work:not(.page-study) .work-article>.feature-gallery{align-self:stretch}
}

.detail-process-media .project-image>a{display:block;width:100%}

/* Compact copy rhythm, with space instead of rules between Works sections. */
.works-project-panel .post-des,.page-work:not(.page-study) .post-des{line-height:1.5}
.detail-copy-section p,.detail-process-copy p{margin-bottom:0}
.detail-copy-section>h3,.detail-process-copy>.detail-section-label{line-height:1.5}

@media(min-width:901px){
.page-work:not(.page-study) .work-article{grid-template-columns:minmax(0,1fr) minmax(0,2.4fr) 300px}
.page-work:not(.page-study) .project-information{position:fixed;right:var(--page-frame-inset);width:300px;margin-top:0;height:calc(50dvh - 24px)}
.page-work:not(.page-study) .detail-process-row{grid-template-columns:minmax(0,1fr) 300px}
}

/* One caption below each Process media group. */
.detail-process-media{row-gap:6px}
.detail-process-images{grid-column:1/-1;min-width:0;display:grid;grid-template-columns:repeat(var(--process-columns,1),minmax(0,1fr));column-gap:6px;row-gap:200px;align-items:start}
.detail-process-caption{grid-column:1/-1;margin:0;text-align:center;font-size:var(--type-ui);font-weight:400;line-height:1.5;color:#666;overflow-wrap:anywhere}
@media(max-width:900px){.detail-process-images{column-gap:4px;row-gap:36px}}

@media(min-width:901px){
.has-side-information .inline-work>.inline-project-information{height:max(0px,calc(100dvh - max(var(--inline-start-top),var(--inline-info-top)) - 24px));min-height:0;overflow:hidden}
.page-work:not(.page-study) .project-information{height:max(0px,calc(100dvh - var(--detail-info-top) - 24px));min-height:0;overflow:hidden}
}

.works-detail-hover{position:fixed;z-index:15;display:flex;align-items:center;justify-content:center;pointer-events:none;background:rgba(255,255,255,.2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:32px}
.works-detail-hover img{display:block;width:auto;height:auto;aspect-ratio:auto;max-width:76%;max-height:80%;object-fit:contain;box-shadow:0 8px 32px rgba(0,0,0,.12)}
@media(max-width:900px){.works-detail-hover{display:none}}

/* Keep the reading panel anchored while respecting the footer boundary. */
@media(min-width:901px){
.has-side-information .inline-work>.inline-project-information{transform:none;height:max(0px,calc(100dvh - max(var(--inline-start-top),var(--inline-info-top)) - 24px - var(--works-footer-overlap,0px)))}
.page-work:not(.page-study) .project-information{transform:none;height:max(0px,calc(100dvh - var(--detail-info-top) - 24px - var(--works-footer-overlap,0px)))}
}

/* Lab loops show a soft first frame until actual playback, including autoplay refusal. */
.lab-motion{position:relative;display:block;overflow:hidden;isolation:isolate;aspect-ratio:var(--lab-motion-ratio,1.777778)}
.lab-motion-preview{position:absolute;inset:0;z-index:2;display:block;overflow:hidden;background:var(--detail-paper,#ddd);opacity:1;pointer-events:none;transition:opacity 180ms ease}
.lab-motion .lab-motion-preview img{position:absolute;inset:0;width:100%;height:100%;max-height:none;aspect-ratio:auto;object-fit:contain;filter:blur(6px);opacity:.85;transform:scale(1.025);margin:0}
.lab-motion.is-playing .lab-motion-preview{opacity:0;visibility:hidden}
.lab-motion img.lab-motion-fallback{position:absolute;inset:0;z-index:1;width:100%;height:100%;max-height:none;aspect-ratio:auto;object-fit:contain;opacity:0;pointer-events:none;margin:0}
.lab-motion.is-fallback .lab-motion-fallback{opacity:1}
.lab-motion.is-fallback .lab-motion-preview{opacity:0;visibility:hidden}
.lab-motion.is-fallback video{opacity:0}
.page-lab .lab-motion .lab-motion-fallback{object-fit:cover}
.lab-motion video::-webkit-media-controls,.lab-motion video::-webkit-media-controls-panel,.lab-motion video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}
.page-lab .overview-image-link>.lab-motion{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:3/4}
.page-lab .lab-motion .lab-motion-preview img{object-fit:cover}
.page-study{--lab-motion-height:90vh}
.page-study :is(.post-video,.gallery-video)>.lab-motion{width:70%;max-width:calc(var(--lab-motion-height) * var(--lab-motion-ratio));margin-inline:auto;pointer-events:auto}
.page-study :is(.post-video,.gallery-video)>.lab-motion[data-orientation="landscape"]{width:85%}
.page-study .feature-gallery .lab-motion video{width:100%;height:100%;max-height:none;aspect-ratio:auto;object-fit:contain;margin:0}
@media(min-width:901px){.page-study{--lab-motion-height:max(300px,calc(100dvh - var(--header-height) - var(--toolbar-height) - 96px))}}
