/* Selective material: photographs get glass; artwork and the page do not. */
.hero .hero-link,.project-card .image:not(.photography),.project-gallery>button,.hero-caption,.crest-glass,.magazine{background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.hero .hero-link,.project-card .image:not(.photography),.project-gallery>button,.crest-glass{padding:0!important}
.hero .hero-link::before,.hero .hero-link::after,.project-card .image:not(.photography)::before,.project-card .image:not(.photography)::after,.project-gallery>button::before,.project-gallery>button::after{display:none!important}
.hero .hero-link img,.hero.art .hero-link img,.project-card .image:not(.photography) img,.project-gallery>button img,.crest-frame{border-radius:0!important;box-shadow:none!important;background:transparent}
/* Only this home photo strip joins the dedicated photographic glass galleries. */
.photo-ribbon .project-card .image{background:linear-gradient(135deg,#dceaff26,#6989b610 48%,#ffffff17)!important;border:1px solid #ffffff38!important;border-radius:16px!important;box-shadow:var(--panel-edge)!important}
.photo-ribbon .project-card .image::before,.photo-ribbon .project-card .image::after{display:block!important}.photo-ribbon .project-card .image img{border-radius:8px!important}
/* Keep native swiping. No vertical flying, page parallax or extended scroll runway. */
.photo-ribbon{padding-block:16px 24px;gap:24px}.photo-ribbon .project-card{transform:none!important}
.flow-track{padding-top:24px;height:calc(var(--photo-height) + 75px)}.flow-card{margin-right:16px}.flow-status{margin-top:0}
.scroll-crest{height:auto;min-height:0;margin-block:40px}.crest-sticky{position:static;padding-block:0 12px}.crest-glass{margin-top:18px}.crest-frame{max-height:42svh}.crest-heading h2{font-size:clamp(24px,3vw,34px)}
/* Paper sits directly on the page. The central gutter is a fold, not a glass pane. */
.magazine{padding:0;margin-block:30px 48px}.book-heading{margin-bottom:28px}
.book-stage,.book-stage.single{width:min(100%,840px);grid-template-columns:repeat(2,minmax(0,1fr));isolation:isolate}
.book-page{background:#f4eddb;border:1px solid #d1c7b0;border-radius:1px;box-shadow:0 1px 0 #e7dfcd,0 3px 0 #b9af99,0 15px 30px #0006}
.book-page img{background:#f4eddb;filter:none}
.book-ready .book-stage:not(.single)::after{content:'';position:absolute;inset:0 auto 0 calc(50% - 10px);width:20px;z-index:3;pointer-events:none;background:linear-gradient(90deg,transparent,#45372122 35%,#271f1a55 50%,#e9dfc755 58%,transparent)}
.book-ready .book-stage:not(.single) .book-page::after{background:linear-gradient(90deg,#44331c12,transparent 4%,transparent 96%,#44331c1a)}
.book-turn,.book-stage.single .book-turn{width:50%;border-color:#d9ceba;backface-visibility:hidden}
.book-fold-shadow{position:absolute;inset:0;pointer-events:none;z-index:4}
@media(max-width:800px){.flow-track{padding-top:20px;height:calc(var(--photo-height) + 65px)}.photo-ribbon{padding-block:12px 20px}.crest-sticky{padding-inline:0}.scroll-crest{min-height:0;height:auto}.book-stage,.book-stage.single{width:min(100%,440px);grid-template-columns:1fr}.book-turn,.book-stage.single .book-turn{width:100%}.book-ready .book-stage:not(.single)::after{display:none}.book-page::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#44331c1c,transparent 4%,transparent 97%,#44331c12)}}
@media(prefers-reduced-motion:reduce){.flow-card{transform:none!important}.book-fold-shadow{display:none}}
/* Posters are printed sheets attached directly to charcoal, with no mount or crop. */
.project-card .image.streaming{height:auto!important;aspect-ratio:var(--panel-ratio,2/3);overflow:hidden;box-shadow:0 1px 1px #000d,0 3px 6px #0007!important;border-radius:0!important}
.project-card .image.streaming img{display:block;position:static;width:100%;height:100%;object-fit:contain!important;border-radius:0!important}
.project-card .image.streaming::after{content:'';display:block!important;position:absolute;inset:0;border-radius:0;background:repeating-linear-gradient(0deg,#fff00000 0px,#ffffff03 1px,transparent 2px,transparent 4px);box-shadow:inset 0 0 0 1px #ffffff0a;pointer-events:none}
.project-gallery.poster-gallery>button{width:min(100%,560px);margin-inline:auto;box-shadow:0 1px 1px #000d,0 3px 6px #0007!important}
.project-gallery.poster-gallery>button img{display:block;width:100%;height:auto!important;max-height:none;object-fit:contain;aspect-ratio:var(--panel-ratio,auto)}
#lightbox[data-material=paper] .viewer-surface{background:#121314;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
#lightbox[data-material=paper] .viewer-surface::before,#lightbox[data-material=paper] .viewer-surface::after{display:none}
.photo-ribbon .project-card .image{backdrop-filter:blur(18px) saturate(1.35)!important;-webkit-backdrop-filter:blur(18px) saturate(1.35)!important}
#lightbox[data-material=paper] .glass-morph{background:#121314!important;border:0!important;border-radius:0!important;box-shadow:0 8px 25px #0005!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
#lightbox[data-material=paper] .glass-morph::after{display:none}
@media(prefers-reduced-transparency:reduce){.photo-ribbon .project-card .image{background:#202731!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.photo-ribbon .project-card .image::before{display:none!important}}

.crest-frame{aspect-ratio:64/33}
.flow-track.swipe-ready,.photo-ribbon.swipe-ready{touch-action:pan-x pan-y pinch-zoom;scroll-snap-type:x proximity}
.flow-track.swipe-ready.dragging,.photo-ribbon.swipe-ready.dragging{scroll-snap-type:none;cursor:grabbing;user-select:none}
.flow-track.swipe-ready.page-zoomed,.photo-ribbon.swipe-ready.page-zoomed{touch-action:pan-x pan-y pinch-zoom}

.photo-ribbon.swipe-ready .project-card{scroll-snap-align:center}

/* Descendant buttons must allow the same native panning and pinch as the strip. */
.flow-track.swipe-ready .flow-card,.photo-ribbon.swipe-ready .project-card{touch-action:pan-x pan-y pinch-zoom;scroll-snap-stop:normal}

/* Small, state-driven feedback; never controls scrolling or input. */
@media(prefers-reduced-motion:no-preference){
 .flow-card .flow-art{transform:translateY(0);transition:transform .28s cubic-bezier(.2,.7,.25,1),border-color .28s}
 .flow-card[aria-current="true"] .flow-art{transform:translateY(-3px);border-color:#ffffff62}
 :is(#flow-open,.book-controls button,.crest-control button,.lightbox-bar button,#lightbox .controls button,.gv-button,.filters button,.hero-select button,.menu-button){transition:transform .24s cubic-bezier(.2,.8,.25,1.15),box-shadow .24s,border-color .24s}
 :is(#flow-open,.book-controls button,.crest-control button,.lightbox-bar button,#lightbox .controls button,.gv-button,.filters button,.hero-select button,.menu-button):active{transform:translateY(1px) scale(.97);transition-duration:.08s}
}
@media(prefers-reduced-motion:reduce){.flow-card .flow-art{transform:none!important;transition:none!important}}

/* Web equivalents of comfortable discrete controls and non-gesture navigation. */
header nav a,.original-spreads>summary,.book-pdf,footer small a{min-height:44px;display:inline-flex;align-items:center}
header nav a{min-width:44px;justify-content:center}
.flow-status{flex-wrap:wrap;gap:12px}.flow-status button{min-width:44px;min-height:44px}
.flow-status button:disabled,.book-controls button:disabled{opacity:.45;cursor:default;transform:none!important}
.viewer-status{position:absolute;left:12px;right:12px;top:70px;z-index:4;pointer-events:none;background:#111e;border-radius:6px;min-height:1.3em;margin:0;text-align:center;font-size:13px;color:#e6e5e2;max-width:100%;padding-inline:12px}
.viewer-status:empty{display:none}
@media(max-width:600px){.flow-status{gap:8px}.flow-status button{padding-inline:14px}.flow-status #flow-count{flex-basis:100%;text-align:center}}

.original-files>summary,.original-files a{display:inline-flex;align-items:center;min-height:44px}
/* A height-capped aspect ratio must never shrink the hero's page-width footprint. */
.hero-shell .hero{width:100%;min-width:100%;box-sizing:border-box}
.hero .hero-link{width:100%;min-width:100%}
/* A stable paper opening with two-sided hinged leaves, never a sliding glass pane. */
.book-stage,.book-stage.single{aspect-ratio:3/2;perspective:1600px}
.book-stage .paper-leaf,.book-stage.single .paper-leaf{transform-style:preserve-3d;backface-visibility:visible;overflow:visible;border:0;background:transparent;border-radius:0;box-shadow:none;will-change:transform}
.paper-leaf>.book-front,.paper-leaf>.book-back{position:absolute;inset:0;width:100%;height:100%;margin:0;backface-visibility:hidden;transform:rotateY(0deg);box-shadow:none;pointer-events:none}
.paper-leaf>.book-back{transform:rotateY(180deg);background:#f4eddb}
.paper-leaf>.book-fold-shadow{backface-visibility:hidden;transform:translateZ(1px)}
.book-stage .book-underlay{position:absolute;top:0;bottom:0;width:50%;height:100%;z-index:1;pointer-events:none;box-shadow:none}
.book-stage.is-turning .book-page{cursor:default}.book-stage.is-turning{user-select:none}
@media(max-width:800px){.book-stage,.book-stage.single{aspect-ratio:3/4;overflow:hidden;box-shadow:0 2px 0 #b9af99,0 5px 0 #594f40,0 15px 28px #0006}.book-stage .book-underlay{width:100%}.book-stage::before{content:'';position:absolute;inset:0 auto 0 0;width:7px;z-index:7;pointer-events:none;background:linear-gradient(90deg,#33271a66,#e9dfc733,transparent)}}
@media(prefers-reduced-motion:reduce){.book-stage .paper-leaf{display:none;will-change:auto}}

.book-stage.page-zoomed,.book-stage.page-zoomed .book-page{touch-action:pan-x pan-y pinch-zoom}

/* A consistent settle for navigation and action controls; no scroll-position effects. */
@media(prefers-reduced-motion:no-preference){header nav a,.mobile-menu-links a{transition:color .2s ease,background .2s ease,transform .24s cubic-bezier(.2,.75,.2,1)}.mobile-menu-links a:active{transform:translateX(3px)}.project-card .tile-caption strong{transition:color .25s ease}}
