:root {
  --ink:#242729; --muted:#777c7d; --paper:#f4f5f2; --line:#25292a25; --accent:#526367;
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; color:var(--ink); background:var(--paper);
  font-synthesis:none; -webkit-font-smoothing:antialiased;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scrollbar-gutter:stable; }
body { margin:0; background:var(--paper); }
button,a,select { -webkit-tap-highlight-color:transparent; }
button,select { font:inherit; color:inherit; }
button { cursor:pointer; }
a { color:inherit; text-decoration:none; }
button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible { outline:2px solid var(--accent); outline-offset:5px; }
button:disabled { opacity:.3; cursor:default; }
[hidden] { display:none!important; }
.sr-only,h1 { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; margin:-1px; }
header { position:absolute; z-index:20; top:0; left:40px; right:40px; height:86px; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--line); }
.identity { display:block; font-size:16px; font-weight:400; letter-spacing:-.3px; }
.identity span { display:block; margin-top:7px; font-size:9px; letter-spacing:1.2px; color:#535b5d; }
nav { display:flex; align-items:center; gap:27px; font-size:12px; }
nav button,nav a { min-height:44px; display:inline-flex; align-items:center; gap:7px; padding:12px 0; border:0; background:none; white-space:nowrap; }
nav a:hover,nav button:hover { color:#637b82; }
nav button[aria-pressed=true] { box-shadow:inset 0 -1px var(--ink); }
main { position:relative; }
.intro { position:absolute; }
.toolbar { position:absolute; z-index:15; top:95px; left:40px; right:40px; }
.filters { display:flex; align-items:center; justify-content:flex-end; gap:28px; }
.filter { border:0; border-bottom:1px solid transparent; background:none; min-height:44px; padding:12px 0; font-size:12px; color:#525a5c; white-space:nowrap; }
.filter:hover,.filter.active { color:#161b1d; }
.filter.active { border-bottom-color:#394b50; }
.room { position:relative; height:100dvh; overflow:hidden; background:#e5e7e3; }
#scene3d { position:absolute; inset:0; }
#scene3d canvas { display:block; width:100%; height:100%; touch-action:none; }
#scene3d canvas:focus-visible { outline:1px solid var(--accent); outline-offset:-4px; }
#loading3d,.scene-error { position:absolute; top:46%; left:10%; right:10%; text-align:center; font-size:14px; letter-spacing:-.2px; color:#666e71; }
#loading3d::after { content:""; display:block; width:32px; height:1px; margin:20px auto 0; background:#6d777a; transform-origin:left; animation:prepare 1.5s ease-in-out infinite alternate; }
.publication-section { background:var(--paper); padding:90px 40px 65px; overflow:clip; }
#upcoming { min-height:900px; scroll-margin-top:0; }
.publication-heading { text-align:center; }
.section-kicker { font-size:10px; line-height:1.5; letter-spacing:1.7px; text-transform:uppercase; margin:0 0 20px; color:#707779; }
.publication-heading h2 { font-size:clamp(60px,7.8vw,112px); font-weight:400; letter-spacing:-.07em; line-height:.88; margin:0; }
.section-note { font-size:12px; color:#7d8282; margin:25px 0 12px; }
.publication-row { display:flex; align-items:flex-end; justify-content:center; gap:17px; min-height:442px; padding:45px 24px 35px; perspective:1600px; }
.publication-item { flex:0 0 auto; position:relative; width:50px; height:var(--book-height); padding:0; border:0; background:transparent; text-align:left; perspective:1200px; transition:width .65s cubic-bezier(.22,.68,0,1); transform-style:preserve-3d; }
.publication-item.is-active { width:calc(var(--book-height) * var(--book-ratio) + 32px); }
.publication-model { pointer-events:none; display:block; position:absolute; left:50%; top:0; width:calc(var(--book-height) * var(--book-ratio)); height:100%; transform:translateX(-50%); perspective:1200px; }
.publication-object { display:block; position:relative; width:100%; height:100%; transform-style:preserve-3d; transform:rotateY(88deg); transition:transform .75s cubic-bezier(.22,.68,0,1); }
.is-active .publication-object { transform:translateZ(calc(var(--book-depth) / -2)); }
.publication-front,.publication-spine,.publication-pages,.publication-top { display:block; position:absolute; backface-visibility:hidden; }
.publication-front { inset:0; background:var(--cover-bg,#b8c5ce); transform:translateZ(calc(var(--book-depth)/2)); border-radius:1px 3px 3px 1px; box-shadow:inset 2px 0 3px #0002; overflow:hidden; }
.publication-front::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,#0003,transparent 2%,#fff2 3%,transparent 6%,transparent 96%,#fff3); border:1px solid #00000010; pointer-events:none; }
.publication-front img { display:block; width:100%; height:100%; object-fit:fill; }
.publication-spine { left:0; top:0; width:var(--book-depth); height:100%; transform-origin:left center; transform:rotateY(-90deg) translateX(calc(var(--book-depth)/-2)); background-color:var(--cover-bg,#b8c5ce); background-size:100% 100%; box-shadow:inset 2px 0 3px #ffffff4d,inset -2px 0 2px #0002; }
.publication-pages { left:100%; top:3px; bottom:3px; width:calc(var(--book-depth) - 3px); transform-origin:left center; transform:rotateY(90deg) translateX(calc(var(--book-depth)/-2)); background:repeating-linear-gradient(90deg,#fafaf5 0px,#fafaf5 1px,#d9ddd9 1.2px,#fff 2px); }
.publication-top { left:2px; top:0; width:calc(100% - 4px); height:calc(var(--book-depth) - 3px); transform-origin:center top; transform:rotateX(90deg) translateY(calc(var(--book-depth)/-2)); background:repeating-linear-gradient(0deg,#f9faf6 0px,#e1e4dd 1px,#fff 2px); }
.publication-model::after { content:""; position:absolute; left:5%; right:-4%; bottom:-12px; height:12px; border-radius:50%; background:#1b26244a; filter:blur(10px); transform:translateY(4px); z-index:-1; }
.publication-fallback-title { display:block; padding:11% 10%; color:#182228; font-size:26px; line-height:1.05; letter-spacing:-1px; }
.publication-fallback-author { position:absolute; left:10%; bottom:6%; font-size:9px; letter-spacing:1px; color:#25353c; }
.publication-label { display:none; }
.publication-caption { min-height:75px; max-width:1050px; margin:20px auto 0; display:grid; grid-template-columns:1fr 2fr 1fr; align-items:start; gap:24px; border-top:1px solid var(--line); padding-top:21px; }
.publication-caption>span { font-size:9px; color:#727b7c; letter-spacing:.8px; }
.publication-caption p { text-align:center; margin:-3px 0 0; font-size:16px; line-height:1.35; letter-spacing:-.35px; }
.publication-hint { text-align:right; }
.mobile-collection { display:none; }
#index { min-height:100dvh; padding:170px 40px 88px; background:var(--paper); }
.index-row { display:flex; align-items:center; gap:28px; width:100%; border:0; border-top:1px solid var(--line); padding:24px 5px; background:transparent; text-align:left; }
.index-row:last-child { border-bottom:1px solid var(--line); }
.index-row:hover { background:#e8eeea80; }
.index-row .number { font-size:11px; color:#858b8b; min-width:20px; }
.index-row strong { flex:1; font-size:clamp(19px,1.9vw,28px); font-weight:400; line-height:1.22; letter-spacing:-.7px; }
.index-row .theme { min-width:155px; max-width:220px; font-size:11px; line-height:1.5; color:#788181; }
.index-row>span:last-child { font-size:16px; }
dialog { border:1px solid #ffffffb3; background:#f7f8f5; color:var(--ink); width:min(990px,92vw); max-height:90dvh; padding:0; overflow:auto; box-shadow:0 30px 120px #17202540; }
dialog::backdrop { background:#29343d6b; backdrop-filter:blur(14px); }
dialog[open] { display:grid; grid-template-columns:52% 48%; animation:arrive .45s cubic-bezier(.22,.68,0,1); }
.close { position:absolute; z-index:3; top:12px; right:12px; width:44px; height:44px; border:0; background:#f8faf6aa; border-radius:50%; font-size:15px; }
.reader-stage { min-width:0; min-height:455px; display:flex; align-items:center; justify-content:space-between; gap:0; padding:25px 15px; background:radial-gradient(ellipse at 45% 35%,#ffffff,#e5e9e5); }
.reader-stage .arrow { flex-shrink:0; z-index:2; width:44px; height:44px; border:1px solid #4c596335; border-radius:50%; background:#ffffff55; font-size:20px; }
.reader-stage .arrow:hover { background:#fff; }
#book3d { flex:1; width:auto; min-width:0; height:380px; position:relative; }
#book3d canvas { display:block; width:100%; height:100%; touch-action:pan-y; }
.reader-copy { display:flex; flex-direction:column; padding:72px 42px 35px; }
.eyebrow { font-size:10px; letter-spacing:1.3px; line-height:1.6; font-weight:400; color:#748081; }
.reader-copy h2 { font-size:34px; font-weight:400; line-height:1.08; letter-spacing:-1px; margin:16px 0; }
.reader-copy>p:not(.eyebrow) { font-size:13px; line-height:1.8; color:#7b8586; }
.read-link { display:inline-flex; align-items:center; min-height:44px; padding:14px 18px; background:#364f57; color:#fff; font-size:13px; margin-top:20px; }
.draft-note { border-top:1px solid var(--line); padding-top:18px; margin-top:20px; color:#7a8484; font-size:12px; line-height:1.7; }
.reader-bottom { margin-top:auto; padding-top:25px; display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:10px; letter-spacing:.3px; color:#818b8a; }
#largeBook { width:64%; height:285px; perspective:1000px; }
.book-object { display:block; width:100%; height:100%; position:relative; transform:none; filter:drop-shadow(10px 18px 14px #26384029); }
.cover { display:flex; flex-direction:column; position:relative; overflow:hidden; width:100%; height:100%; padding:11%; color:var(--fg); background:var(--bg); border-radius:2px 4px 4px 2px; box-shadow:inset 3px 0 6px #0003; }
.cover img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.cover-top,.cover-bottom { font-size:8px; letter-spacing:1px; }
.cover-title { margin-top:18%; font-size:27px; line-height:1.05; letter-spacing:-1px; }
.cover.long-title .cover-title { font-size:21px; line-height:1.12; }
.cover-bottom { margin-top:auto; padding-top:8%; }
.publication-reader-cover { display:block; height:100%; width:auto; aspect-ratio:var(--book-ratio,.71); max-width:100%; margin:auto; position:relative; transform:none; box-shadow:1px 0 #bac3b6,2px 1px #e2e7dc,3px 1px #b6c3b6,9px 16px 24px #25394226; }
.publication-reader-cover img { display:block; width:100%; height:100%; }
@keyframes arrive { from { opacity:0; translate:0 8px; } to { opacity:1; translate:0 0; } }
@keyframes prepare { from { transform:scaleX(.35); opacity:.3; } to { transform:scaleX(1); opacity:.7; } }
@media (max-width:1000px) and (min-width:701px) {
 header { left:24px; right:24px; }
 .toolbar { left:24px; right:24px; }
 .publication-section { padding-left:24px; padding-right:24px; }
 .publication-row { gap:10px; padding-left:0; padding-right:0; }
 .publication-row .publication-item { --book-height:310px!important; width:42px; }
 .publication-row .publication-item.is-active { width:242px; }
 .reader-copy { padding:66px 25px 30px; }
 .reader-copy h2 { font-size:28px; }
 .index-row .theme { min-width:120px; max-width:155px; font-size:10px; }
}
@media (max-width:700px) {
 body { background:#f6f7f4; }
 header { position:relative; height:87px; left:auto; right:auto; margin:0 22px; z-index:30; }
 .identity { font-size:14px; letter-spacing:-.35px; }
 .identity span { font-size:8px; letter-spacing:1px; margin-top:6px; }
 nav { gap:18px; font-size:11px; }
 #upcomingNav { display:none; }
 .intro { display:none; }
 .toolbar { position:sticky; top:0; left:auto; right:auto; padding:0 22px; background:#f6f7f4f2; border-bottom:1px solid #27363513; backdrop-filter:blur(10px); z-index:25; }
 .filters { gap:12px; justify-content:space-between; }
 .filter { font-size:11px; min-height:48px; padding:13px 0; }
 .room { display:none!important; }
 .publication-section { padding:40px 22px 24px; background:#f6f7f4; overflow:hidden; }
 #upcoming { min-height:0; scroll-margin-top:48px; }
 .publication-heading { text-align:center; margin:0 0 42px; }
 .section-kicker { font-size:9px; letter-spacing:1.5px; margin-bottom:17px; }
 .publication-heading h2 { font-size:clamp(50px,14vw,76px); letter-spacing:-.065em; line-height:.92; }
 .section-note { font-size:11px; line-height:1.5; margin:20px 0 0; }
 .publication-row,.publication-stack { display:block; padding:0; min-height:0; perspective:none; }
 .publication-item,.publication-item.is-active { display:block; width:min(100% - 38px,365px); height:auto; aspect-ratio:var(--book-ratio); margin:0 auto 70px; perspective:none; transition:none; touch-action:pan-y; }
 .publication-model { inset:0; width:100%; height:100%; transform:none; perspective:none; }
 .publication-object,.is-active .publication-object { transform:translateZ(calc(var(--book-depth) / -2)); transition:transform .25s ease; }
 .publication-item:active .publication-object { transform:translateZ(calc(var(--book-depth) / -2)) scale(.992); }
 .publication-model::after { left:7%; right:-5%; bottom:-9px; height:15px; filter:blur(15px); background:#2537353d; }
 .publication-label { display:flex; gap:12px; align-items:center; position:absolute; left:0; right:0; top:calc(100% + 25px); font-size:10px; color:#778483; letter-spacing:.15px; }
 .publication-number { color:#a0aaa7; }
 .publication-theme { flex:1; }
 .publication-open { font-size:15px; color:#4c5d61; }
 .publication-caption { margin:0; min-height:0; display:block; border-top:0; padding:0; }
 .publication-caption #upcomingCount { display:block; text-align:center; padding:0 0 18px; color:#929e9c; font-size:9px; }
 #upcomingCaption,.publication-hint { display:none!important; }
 .mobile-collection { display:block; padding-top:38px; }
 .mobile-collection.is-empty { display:none; }
 .collection-heading { margin:0 0 45px; border-top:1px solid var(--line); padding-top:42px; }
 .collection-heading h2 { font-size:40px; line-height:1; font-weight:400; letter-spacing:-2px; margin:0 0 18px; }
 .collection-heading .section-kicker { margin-bottom:14px; }
 #collectionCount { font-size:11px; color:#7c8986; }
 .collection-end { margin:25px 0 30px; text-align:center; font-size:26px; letter-spacing:-1px; }
 .collection-substack { display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--line); padding:23px 0 35px; margin-top:45px; font-size:12px; }
 #index { min-height:calc(100dvh - 135px); padding:22px 22px 60px; }
 .index-row { gap:13px; flex-wrap:wrap; padding:22px 0; }
 .index-row strong { font-size:21px; flex-basis:calc(100% - 57px); }
 .index-row .theme { margin-left:33px; min-width:0; max-width:none; flex:1; font-size:10px; }
 .index-row>span:last-child { font-size:13px; }
 dialog[open] { display:flex; flex-direction:column; width:min(460px,94vw); max-height:94dvh; }
 .reader-stage { min-height:330px; padding:42px 8px 20px; }
 #book3d { height:290px; }
 #largeBook { width:calc(100% - 105px); height:285px; }
 .reader-copy { padding:27px 26px 28px; }
 .reader-copy h2 { font-size:29px; margin:12px 0; }
 .reader-copy>p:not(.eyebrow) { font-size:12px; margin:5px 0; }
 .reader-bottom { padding-top:18px; font-size:9px; }
 .draft-note { margin-top:14px; padding-top:13px; }
 .planning { padding:10px 26px 20px; }
 #planningFields { flex-wrap:wrap; gap:14px; }
 .plan-field { flex:1 1 42%; font-size:12px; }
 .plan-field:last-child { flex-basis:100%; }
 .plan-field select { font-size:13px; padding:11px 6px; }
 #sourceNote { padding:18px; font-size:14px; }
}
@media (max-width:360px) {
 header { margin:0 17px; }
 nav { gap:12px; }
 .identity { font-size:13px; }
 .toolbar { padding:0 17px; }
 .filter { font-size:10px; }
 .publication-section { padding-left:17px; padding-right:17px; }
 .publication-item,.publication-item.is-active { width:calc(100% - 24px); }
}
@media (prefers-reduced-motion:reduce) {
 *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}
/* Consumer edition: a quiet gallery shell that stays useful while browsing. */
header { position:fixed; height:82px; transition:background .25s,box-shadow .25s; }
.page-scrolled header { left:0; right:0; padding:0 40px; background:#f4f6f2ed; backdrop-filter:blur(22px); box-shadow:0 1px #26323616; }
#roomNav { color:#536966; }
.room-controls { position:absolute; bottom:28px; right:36px; display:flex; align-items:center; background:#eef2edc9; border:1px solid #ffffffba; border-radius:40px; backdrop-filter:blur(18px); box-shadow:0 5px 25px #1c28231a; }
.room-controls button { width:45px; height:44px; padding:0; border:0; background:none; font-size:23px; color:#344744; }
.room-controls button:hover { background:#ffffff80; border-radius:40px; }
.room-controls button:disabled { opacity:.28; }
.room-gesture { position:absolute; bottom:33px; left:38px; margin:0; font-size:10px; letter-spacing:.2px; color:#4c5c58; pointer-events:none; }
.object-caption { position:absolute; bottom:92px; left:50%; translate:-50% 0; width:max-content; max-width:calc(100% - 90px); padding:12px 18px; color:#19332d; background:#f2f6f0e8; border:1px solid #ffffffad; border-radius:30px; backdrop-filter:blur(20px); font-size:13px; line-height:1.4; text-align:center; opacity:0; transition:opacity .2s; pointer-events:none; }
.book-focused .object-caption { opacity:1; }
.back-to-room { display:table; margin:55px auto 0; padding:14px 20px; border-bottom:1px solid #607b7350; font-size:12px; color:#405d53; }
.reader-tags { display:flex; flex-wrap:wrap; gap:7px; margin:15px 0 2px; }
.topic-tag { border:1px solid #788c8029; background:#e8ede680; border-radius:20px; padding:6px 10px; font-size:10px; line-height:1.25; color:#506958; }
.reader-copy { padding:58px 36px 28px; }
.reader-copy h2 { font-size:clamp(25px,2.5vw,34px); line-height:1.12; }
.reader-copy #readerDescription { color:#596760; font-size:13px; line-height:1.75; margin:5px 0; }
.interest-panel { margin-top:23px; padding-top:20px; border-top:1px solid #75897e29; }
.release-status { margin:0 0 9px; font-size:9px; letter-spacing:1.5px; text-transform:uppercase; color:#6e8275; }
.interest-intro { margin:0 0 14px; font-size:18px; letter-spacing:-.4px; }
.interest-input-row { display:flex; border:1px solid #78918655; border-radius:5px; overflow:hidden; background:#fff9; }
.interest-input-row input { width:0; min-width:0; flex:1; border:0; outline:0; background:transparent; font:inherit; font-size:12px; padding:14px 11px; color:#263a30; }
.interest-input-row:focus-within { outline:2px solid #77948a; outline-offset:3px; }
.interest-submit { flex-shrink:0; padding:0 12px; border:0; background:#203f35; color:#fff; min-height:46px; font-size:11px; }
.interest-consent { font-size:10px; line-height:1.6; color:#748278; margin:10px 0 0; }
.interest-status { font-size:12px; line-height:1.5; margin:10px 0 0; color:#365b46; }
.interest-status:empty { display:none; }
.is-complete .interest-input-row { border:0; background:none; }
.is-complete input { display:none; }
.is-complete .interest-submit { background:#e3ece3; color:#274c35; opacity:1; border-radius:4px; padding:12px 16px; }
.form-trap { position:absolute!important; width:1px!important; height:1px!important; overflow:hidden; opacity:0; pointer-events:none; }
.publication-row .publication-item { width:60px; }
.publication-spine { text-rendering:optimizeLegibility; }
@media (min-width:701px) and (max-width:1000px) { nav { gap:18px; } .page-scrolled header { padding:0 24px; } .publication-row .publication-item { width:48px; } .publication-row .publication-item.is-active { width:242px; } .room-controls { right:24px; } .room-gesture { left:24px; } }
@media (max-width:700px) {
 header { position:relative; height:87px; }
 .page-scrolled header { left:auto; right:auto; padding:0; background:none; backdrop-filter:none; box-shadow:none; }
 #roomNav,.back-to-room { display:none; }
 .reader-copy { padding:23px 25px 28px; }
 .reader-copy h2 { font-size:28px; }
 .reader-copy #readerDescription { font-size:13px; }
 .reader-stage { min-height:315px; }
 .interest-panel { margin-top:20px; }
 .interest-input-row input { font-size:16px; }
 .publication-row .publication-item,.publication-row .publication-item.is-active { width:min(100% - 38px,365px); }
}

.interest-panel .read-link { margin-top:10px; border-radius:3px; background:#28463d; }

@media(min-width:701px){
 .room-zoomed header { left:0; right:0; padding:0 40px; background:#f4f6f0ed; backdrop-filter:blur(16px); }
 .room-zoomed .filters { width:max-content; margin-left:auto; padding:0 18px; border-radius:28px; background:#f4f6f0eb; backdrop-filter:blur(16px); }
}

.reader-stage { background:#e7ebe7; }
@media(max-width:700px){
 #reader .close { background:#f8faf6; position:fixed; top:calc(3dvh + 10px); right:calc((100vw - min(460px,94vw))/2 + 10px); }
}

@media(max-width:700px){ html { scrollbar-gutter:auto; } }

/* Upcoming v7: proportionate bindings, useful caption controls, clear anchor spacing. */
#upcoming { scroll-margin-top:104px; }
#upcoming #upcomingTitleButton { display:inline-block; max-width:100%; min-height:44px; margin-top:-11px; padding:0; border:0; background:none; font:inherit; line-height:inherit; letter-spacing:inherit; text-align:center; text-wrap:balance; }
#upcoming #exploreUpcoming { justify-self:end; min-height:44px; margin-top:-14px; padding:12px 0 12px 12px; border:0; background:none; font-size:10px; line-height:1.5; letter-spacing:.35px; white-space:nowrap; }
#upcoming #upcomingTitleButton:hover,#upcoming #exploreUpcoming:hover { color:#38624f; text-decoration:underline; text-underline-offset:4px; }
#upcoming .publication-spine { background-repeat:no-repeat; background-position:center; }
@media(min-width:701px) {
 #upcoming .publication-row { --closed-slot-min:44px; --closed-slot-padding:16px; --active-slot-padding:32px; gap:14px; }
 #upcoming .publication-row .publication-item { --book-height:var(--fitted-book-height,var(--natural-book-height))!important; width:max(var(--closed-slot-min),calc(var(--book-depth) + var(--closed-slot-padding))); }
 #upcoming .publication-row .publication-item.is-active { width:calc(var(--book-height) * var(--book-ratio) + var(--active-slot-padding)); }
 #upcoming .publication-object { transform:translateZ(calc(var(--book-height) * var(--book-ratio) * -.5)) rotateY(90deg); }
 #upcoming .is-active .publication-object { transform:translateZ(calc(var(--book-depth) / -2)); }
 #upcoming .publication-item:not(.is-active) .publication-model::after { left:calc(50% - var(--book-depth) / 2 - 8px); right:auto; width:calc(var(--book-depth) + 16px); }
 #upcoming .publication-item:focus-visible { outline-offset:8px; border-radius:3px; }
}
@media(min-width:701px) and (max-width:1000px) {
 #upcoming .publication-row { --closed-slot-min:42px; --closed-slot-padding:10px; gap:9px; }
}
@media(max-width:700px) {
 #upcoming { scroll-margin-top:56px; }
}

/* Fine paper and cover edges follow the native slim binding, without white slabs. */
:is(#upcoming,#mobileCollection) .publication-object {
 --cover-lip:clamp(.6px,calc(var(--book-depth) * .035),1.2px);
 --paper-inset:max(.8px,calc(var(--book-depth) * .045));
 --visible-edge:clamp(1px,calc(var(--book-depth) * .09),3px);
}
:is(#upcoming,#mobileCollection) .publication-front { border-radius:.8px 1.8px 1.8px .8px; box-shadow:inset .7px 0 1px #0000001c; }
:is(#upcoming,#mobileCollection) .publication-front::after { background:linear-gradient(90deg,#00000018,transparent 1%,#ffffff0d 2%,transparent 4%,transparent 98%,#ffffff1a); border:.5px solid #00000012; }
:is(#upcoming,#mobileCollection) .publication-spine { box-shadow:inset .6px 0 1px #ffffff38,inset -.6px 0 1px #00000024; }
:is(#upcoming,#mobileCollection) .publication-spine::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(90deg,#00000013,transparent 13%,#ffffff09 48%,transparent 86%,#00000016); }
:is(#upcoming,#mobileCollection) .publication-pages {
 left:calc(100% - var(--paper-inset)); top:var(--paper-inset); bottom:var(--paper-inset);
 width:calc(var(--book-depth) - var(--cover-lip) * 2);
 transform:rotateY(90deg) translateX(calc(var(--book-depth) / -2 + var(--cover-lip)));
 background:linear-gradient(90deg,#a8ada340,#f1f0e733 35%,#c6cbbf26),repeating-linear-gradient(90deg,#e3e4db 0px,#e3e4db .55px,#c5cabd .7px,#eef0e7 .95px);
 box-shadow:inset 0 .5px 1px #8b958c26;
}
:is(#upcoming,#mobileCollection) .publication-top {
 left:var(--paper-inset); top:var(--paper-inset); width:calc(100% - var(--paper-inset) * 2); height:calc(var(--book-depth) - var(--cover-lip) * 2);
 transform:rotateX(90deg) translateY(calc(var(--book-depth) / -2 + var(--cover-lip)));
 background:linear-gradient(0deg,#a8ada333,#eef0e71a 45%,#bac2b933),repeating-linear-gradient(0deg,#e4e7df 0px,#e4e7df .6px,#c3cabc .75px,#f0f1e9 1px);
}
#reader .publication-reader-cover { border-radius:1px; box-shadow:calc(var(--reader-edge,3px) * .35) 0 #bac3b6,calc(var(--reader-edge,3px) * .7) .5px #e2e7dc,var(--reader-edge,3px) 1px #b6c3b6,9px 16px 24px #25394226; }

/* Front-facing covers retain a fine paper edge without tilting the title plane. */
#upcoming .is-active .publication-front { box-shadow:calc(var(--visible-edge) * .35) 0 #a8b3a6,calc(var(--visible-edge) * .7) .5px #e5e8dd,var(--visible-edge) 1px #b9c3b4,5px 8px 15px #24372b12; }
@media(max-width:700px) {
 :is(#upcoming,#mobileCollection) .publication-front { box-shadow:calc(var(--visible-edge) * .35) 0 #a8b3a6,calc(var(--visible-edge) * .7) .5px #e5e8dd,var(--visible-edge) 1px #b9c3b4,5px 8px 15px #24372b12; }
}

/* The enlarged book can be selected; the surrounding room remains interactive. */
#hoverPreview {
 position:fixed; inset:0; z-index:90; display:grid; place-items:center;
 background:transparent; opacity:1; transition:opacity .15s ease;
}
#hoverPreview { pointer-events:none; }
#hoverBook3d { pointer-events:auto; cursor:pointer; }
#hoverBook3d canvas { pointer-events:none; }
#hoverPreview[hidden] { display:none!important; }
#hoverPreview.is-leaving { opacity:0; }
#hoverBook3d { width:min(64vw,600px); height:min(78vh,760px); background:transparent; }
#hoverBook3d canvas { display:block; width:100%; height:100%; background:transparent; }
@media(max-width:700px) { #hoverPreview { display:none!important; } }

/* On phones the jackets form a vertical record bin, opening out with native scroll. */
@media(max-width:700px) {
 :is(#upcomingBooks,#collectionBooks).record-deck { position:relative; display:block; isolation:isolate; padding:0; margin:0; overflow:visible; }
 :is(#upcoming,#mobileCollection) .record-deck .publication-item {
  --book-height:var(--deck-book-height)!important;
  position:absolute; left:50%; top:0; width:calc(var(--deck-book-height) * var(--book-ratio))!important;
  height:var(--deck-book-height)!important; aspect-ratio:auto; margin:0!important;
  transform:translate3d(-50%,var(--deck-y),0) scale(var(--deck-scale)); transform-origin:50% 0;
  transition:none; touch-action:pan-y; -webkit-tap-highlight-color:transparent;
 }
 .record-deck .publication-label { display:none; }
 .record-deck .publication-model { transform:none; }
 .record-deck .publication-model::before {
  content:""; position:absolute; inset:-7px 1px auto 1px; height:8px; z-index:2;
  background:repeating-linear-gradient(0deg,#d2d5c9 0px,#e9ecdf .6px,#f4f4e9 1.2px,#b4bdb0 1.5px);
  border-top:1.5px solid var(--cover-bg); clip-path:polygon(2% 0,98% 0,100% 100%,0 100%);
 }
 .record-deck .publication-model::after { inset:-2px -2px auto -2px; height:18px; background:#1425213b; filter:blur(8px); transform:translateY(9px); }
 :is(#upcoming,#mobileCollection) .record-deck .publication-front {
  box-shadow:inset 1.5px 0 1px #ffffff24,2px 0 #bcc7bb,5px 8px 16px #15292124,0 -2px 2px #ffffff42;
 }
 .record-deck .publication-item:focus-visible { outline:2px solid #2e584b; outline-offset:5px; }
 .record-deck + .publication-caption { padding-top:12px; }
 .record-deck + .collection-end { margin-top:4px; }
}

/* A recessed joint and fine cover lip, over the unchanged ombré paper stock. */
:is(#upcoming,#mobileCollection) .publication-front::after {
 background:linear-gradient(90deg,#071a2528,transparent 1.2%,#06191b19 2.1%,#ffffff24 2.6%,transparent 4.2%,transparent 98.8%,#ffffff38);
 box-shadow:inset 0 1px .7px #ffffff38,inset -.6px -1px 1px #15232226;
}

/* Recovery stays in context: no surprise navigation when a room fails to load. */
.scene-recovery { position:absolute; z-index:8; left:50%; top:57%; transform:translateX(-50%); width:min(430px,calc(100% - 48px)); padding:20px 24px; border:1px solid #ffffff73; border-radius:12px; background:#f4f6f2f2; color:#34413c; box-shadow:0 15px 50px #16221e16; text-align:center; }
.scene-recovery p { margin:0 0 14px; font-size:13px; line-height:1.6; }
.scene-recovery-actions { display:flex; justify-content:center; gap:10px; flex-wrap:wrap; }
.scene-recovery button { min-height:44px; padding:10px 16px; border:1px solid #5b6e5d52; border-radius:22px; background:transparent; font-size:12px; }
.scene-recovery button:first-child { background:#28463d; color:white; border-color:#28463d; }
@media(max-width:700px) {
 .filters { overflow-x:auto; justify-content:flex-start; scrollbar-width:none; overscroll-behavior-x:contain; }
 .filters::-webkit-scrollbar { display:none; }
 .filter { flex-shrink:0; }
 #upcoming>.scene-recovery { position:relative; top:auto; left:auto; transform:none; width:100%; margin:0 0 28px; }
}

/* Gallery-wide finishing: readable secondary type and consistent navigation. */
.skip-link { position:fixed; z-index:120; top:-100px; left:22px; padding:14px 20px; background:var(--paper); color:var(--ink); font-size:14px; }
.skip-link:focus { top:12px; }
#main-content:focus { outline:none; }
.section-note,.publication-caption>span,.reader-bottom,.eyebrow { color:#626b67; }
#upcoming .publication-caption #upcomingCount,.upcoming-rail-position,#collectionCount { color:#626b67; }
.reader-bottom .browse-touch { display:none; }
@media(max-width:700px) {
 .reader-bottom .browse-keys { display:none; }
 .reader-bottom .browse-touch { display:inline; }
}
@media(max-width:420px) {
 header,.info-mode header { height:auto; min-height:112px; align-items:flex-start; flex-direction:column; gap:6px; padding:20px 0 8px; margin:0 22px; }
 header nav { width:100%; justify-content:space-between; gap:20px; }
 .identity { font-size:14px; }
}
@media(max-width:700px) { #index { scroll-margin-top:56px; } }
