/* Binding colours are computed once by PHP and shared with the live catalogue. */
.book-cover{color:var(--cover-ink,#efdfbc);overflow:hidden}
.book-cover::before{border-color:var(--cover-foil,#e8ce93);opacity:.55}
.book-cover::after,.cover-part{color:var(--cover-foil,#d7b46a)}
.book-card[data-look=pearl]{border-color:#d9c49b50;background:radial-gradient(ellipse at 50% 15%,#eee2c713,transparent 65%),linear-gradient(145deg,#20252e,#121a27)}
.book-card[data-look=pearl] .book-cover{background:linear-gradient(90deg,#8a765c30,transparent 9%,#fff9 10%,transparent 13%),linear-gradient(140deg,#fffdf5,#ede3d1 65%,#e0d3bc);border-color:#d7c49d;border-left-color:#b99d6c;color:#403126;box-shadow:5px 5px 0 #ded5c2,7px 6px 0 #99826388,10px 10px 18px #0006}
.book-card[data-look=pearl] .cover-year{letter-spacing:.015em}
.shelf-caption{font-size:10px;line-height:1.65;margin:8px 0 11px;color:var(--book-accent,#c7c8cb)}
.book-card[data-look=pearl] .shelf-caption{color:#e7d6b0}
.paper-group[data-year] .group-cover{--cover:inherit;--book-accent:inherit;--cover-ink:inherit;--cover-foil:inherit}
.paper-group[data-year]{border-color:color-mix(in srgb,var(--book-accent) 30%,transparent)}
.paper-group[data-year] .eyebrow,.paper-group[data-year] .paper-part svg{color:var(--book-accent)}
.paper-group[data-year] .paper-part:hover strong{color:var(--book-accent)}
.shelf-key{display:flex;gap:9px 15px;flex-wrap:wrap;align-items:center;margin:-4px 0 24px;font-size:10px;line-height:1.7;color:#c6c6cd}
.shelf-key[hidden]{display:none}.shelf-key-title{color:#aeb5c2;letter-spacing:.08em;text-transform:uppercase;font-size:9px}.shelf-key-chip{display:inline-flex;gap:7px;align-items:center}
.shelf-key-chip i{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--key-colour);border:1px solid var(--key-edge);flex:none}
.shelf-levels{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px}.level-shelf-link{display:inline-flex!important;align-items:center;gap:9px;min-height:44px;padding:8px 12px;border:1px solid #8dced244;border-radius:5px;font-size:11px;color:#afdae0!important;background:#8dced207}.level-shelf-link i{width:11px;height:11px;border-radius:50%;background:#294861;border:1px solid #8dced2}.level-shelf-link.pearl-shelf{border-color:#e2c89155;color:#eedfc1!important;background:#e2c89109}.pearl-shelf i{background:#f1e9da;border-color:#e2c891}
.wing-preview[data-wing-preview=ebooks]{grid-template-columns:repeat(2,minmax(0,1fr))}
/* One-shot scroll reveals; no extra frame loop, canvas, video or animated blur. */
.wing-panel{isolation:isolate}.wing-panel::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 8% 5%,var(--spell-colour,#d7b46a22),transparent 58%);opacity:0}
#ol-past-papers{--spell-colour:#b9a3e32b}#al-past-papers{--spell-colour:#75c2ad2b}#ebooks{--spell-colour:#f1e9da25}#model-papers{--spell-colour:#d7986c2d}
.wing-emblem{position:relative}.wing-emblem::before{content:'';position:absolute;inset:-7px;border:1px dashed var(--accent);border-radius:50%;opacity:.28;pointer-events:none}
.book-card.spell-enter,.paper-group.spell-enter{animation:binding-arrive .62s cubic-bezier(.2,.65,.3,1) var(--spell-delay,0ms) backwards}
.wing-panel.spell-enter::after{animation:lantern-wash 4.5s ease-out var(--spell-delay,0ms)}
.wing-panel.spell-enter .wing-emblem::before{animation:sigil-orbit 4.5s ease-out}
#ol-past-papers .spell-enter .wing-emblem svg{animation:page-flutter 1.1s ease-in-out 2}
#al-past-papers .spell-enter .wing-emblem svg{animation:scholar-sigil 3.6s ease-in-out}
#ebooks .spell-enter .wing-emblem svg{animation:moon-levitate 2.4s ease-in-out 2}
#model-papers .spell-enter .wing-emblem svg{animation:ink-awakens 3.2s ease-out}
.binding-glint{position:absolute;inset:-15% -50%;pointer-events:none;background:linear-gradient(105deg,transparent 43%,#fff9 50%,transparent 57%);transform:translateX(-100%);opacity:0}
.spell-enter .binding-glint{animation:binding-glint .9s ease-out calc(var(--spell-delay,0ms) + .18s)}
.book-card.opening .book-cover,.paper-group.opening .group-cover{transform-origin:left center;animation:binding-open .28s ease-in both}
@media(hover:hover) and (pointer:fine){.book-card:hover .book-cover,.book-card:focus-visible .book-cover{transform:perspective(600px) rotateY(-12deg) rotateZ(-2deg) translateY(-4px)}.book-card:hover .binding-glint,.book-card:focus-visible .binding-glint{animation:binding-glint-hover .8s ease-out}}
@keyframes binding-arrive{from{opacity:.45;transform:translateY(17px)}to{opacity:1;transform:translateY(0)}}
@keyframes binding-glint{0%{opacity:0;transform:translateX(-65%)}25%{opacity:.6}100%{opacity:0;transform:translateX(65%)}}
@keyframes binding-glint-hover{0%{opacity:0;transform:translateX(-65%)}25%{opacity:.6}100%{opacity:0;transform:translateX(65%)}}
@keyframes binding-open{to{transform:perspective(600px) rotateY(-48deg) translateY(-5px);opacity:.45}}
@keyframes lantern-wash{0%,100%{opacity:0;transform:translateX(-3%)}35%{opacity:.8;transform:translateX(2%)}}
@keyframes sigil-orbit{from{transform:rotate(-70deg);opacity:0}35%{opacity:.55}to{transform:rotate(35deg);opacity:.28}}
@keyframes page-flutter{0%,100%{transform:rotateY(0)}50%{transform:rotateY(-25deg) translateY(-2px)}}
@keyframes scholar-sigil{0%,100%{transform:rotate(0)}35%{transform:rotate(-14deg) scale(1.12)}70%{transform:rotate(8deg)}}
@keyframes moon-levitate{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(-7deg)}}
@keyframes ink-awakens{0%{transform:rotate(-50deg) scale(.6);opacity:.5}55%{transform:rotate(12deg) scale(1.14);opacity:1}100%{transform:rotate(0) scale(1)}}
.ict-chamber[data-paused=true] .spell-enter,.ict-chamber[data-paused=true] .spell-enter *,.ict-chamber[data-paused=true] .spell-enter::after,.ict-chamber[data-paused=true] .spell-enter *::before{animation:none!important}
.ict-chamber[data-mode=still] .book-cover,.ict-chamber[data-mode=still] .book-card,.ict-chamber[data-mode=still] .paper-group{transition:none!important}
@media(max-width:767px){.shelf-caption{font-size:9px;line-height:1.6}.shelf-key{font-size:10px;gap:7px 12px;margin-bottom:20px}.shelf-key-title{width:100%}.shelf-levels{gap:7px}.level-shelf-link{font-size:10px;padding:7px 9px}.book-card.spell-enter,.paper-group.spell-enter{animation-duration:.4s}}
@media(prefers-reduced-motion:reduce){.book-card,.book-cover,.paper-group,.wing-panel,.wing-panel::after,.wing-emblem svg,.wing-emblem::before,.binding-glint{animation:none!important;transition:none!important}.binding-glint{display:none}.wing-panel::after{opacity:0}}
