/* Shared-edge sample book: every project is physically the same size. */
.project-fan{position:absolute;inset:0;pointer-events:auto;touch-action:none;perspective-origin:50% 50%;user-select:none}
.project-fan-world{position:absolute;width:0;height:0;transform-style:preserve-3d}
.project-fan .fan-leaf{left:calc(var(--fan-width) / -2);top:calc(-1 * var(--fan-height));width:var(--fan-width);height:var(--fan-height);transform-origin:50% 100%;transform-style:preserve-3d;background:none;border:0;overflow:visible;box-shadow:none;pointer-events:auto}
.fan-face{position:absolute;inset:0;backface-visibility:hidden;border:1px solid #a8aaa5;background:#fff;overflow:hidden;box-shadow:0 2px 5px #1c21180b,0 14px 28px #1c211818}
.fan-front{transform:translateZ(.2px)}.fan-back{transform:rotateY(180deg) translateZ(.2px);display:flex;align-items:center;justify-content:center}
.project-fan .fan-leaf .folder-art{inset:0;width:100%;height:100%;background:#fafaf8}
.project-fan .fan-leaf .folder-art img{pointer-events:none;object-fit:cover}
.fan-back-title{font-size:12px;letter-spacing:.08em;color:#757872;max-width:75%;text-align:center}
.fan-binding{position:absolute;bottom:0;left:0;right:0;height:13px;background:linear-gradient(#ffffffd9,#eceee9);border-top:1px solid #b9bcb3;pointer-events:none}
.fan-binding i{position:absolute;left:24%;top:4px;width:4px;height:4px;background:#50564d;border-radius:50%}.fan-binding i+i{left:auto;right:24%}
.project-fan-shadow{position:absolute;border-radius:50%;background:radial-gradient(ellipse,#20271e17,transparent 68%);filter:blur(16px);pointer-events:none}
.project-fan-index{position:absolute;left:5vw;top:40%;width:23vw;max-width:330px;pointer-events:auto}
.project-fan-heading{font-size:9px;letter-spacing:.19em;color:#9a9d97;margin-bottom:14px}
.project-fan-list{position:relative;height:250px;overflow:hidden;touch-action:none;mask-image:linear-gradient(#0008,#000 5%,#000 95%,#0008)}
.archive-labels .project-fan-title{position:absolute;left:0;top:50%;display:flex;gap:13px;align-items:center;width:100%;height:var(--reel-row,44px);padding:4px 0;white-space:normal;text-align:left;line-height:1.22;font-family:Avenir,"Avenir Next",Arial,sans-serif;font-size:clamp(14px,1.35vw,21px);color:#757970;transform-origin:left center;will-change:transform,opacity}
.project-fan-title .fan-number{font-size:9px;font-weight:400;letter-spacing:.03em;min-width:14px;opacity:.6}
.project-fan-title .fan-name{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:87%}
.archive-labels .project-fan-title[aria-current=true]{color:#1f241d;font-weight:600}
.project-fan-controls{display:flex;align-items:center;gap:18px;margin-top:23px;font-size:10px;letter-spacing:.1em;color:#8b8f85}
.archive-labels .project-fan-controls button{position:static;font-size:18px;padding:7px;min-width:28px}.project-fan-controls button:disabled{opacity:.18;cursor:default}
.fan-leaf:focus-visible .fan-front{outline:2px solid #59604f;outline-offset:4px}
.fan-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
body.project-reading .project-fan{pointer-events:none}
@media(max-width:700px){
 .project-fan-index{left:22px;right:22px;top:auto;bottom:92px;width:auto;max-width:none;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px}
 .project-fan-heading{grid-column:1/-1;margin-bottom:10px;font-size:8px}.project-fan-list{height:128px;mask-image:linear-gradient(#0008,#000 5%,#000 95%,#0008)}
 .archive-labels .project-fan-title{font-size:13px;height:var(--reel-row,28px);padding:4px 0;gap:10px;min-height:28px}.project-fan-title .fan-number{font-size:8px}.project-fan-controls{margin:0;gap:10px;align-self:center;flex-direction:column;font-size:8px}
 .archive-labels .project-fan-controls button{font-size:17px;min-height:22px;padding:2px 8px}.fan-binding{height:9px}.fan-binding i{top:2px;width:3px;height:3px}.fan-back-title{font-size:9px}
}
@media(prefers-reduced-motion:reduce){.archive-labels .project-fan-title{transition:none}}


/* Each plane uses the shared virtual camera, then a stable paint order. */
.project-fan-world{inset:0;width:100%;height:100%;transform-style:flat;pointer-events:none}
.project-fan .fan-leaf{left:0;top:0;transform-origin:0 0;transform-style:flat}
.project-fan .fan-face{transform:none;backface-visibility:visible}
.project-fan .fan-back{display:none}
.project-fan .is-turned-back .fan-front{display:none}
.project-fan .is-turned-back .fan-back{display:flex}

.project-fan .fan-leaf:not(.is-selected) .fan-face{box-shadow:0 2px 4px #1c21180b}
.project-fan .project-backing.is-folded{visibility:hidden}
