/* BaptistMilitia.com — reverent museum system
   Breakpoints: XS≤380 · SM≤480 · MD≤640 · LG≤900 · XL≤1200 · XXL≤1600 · XXXL>1600 */
:root{
  --night:#141b26; --night-2:#1d2735; --parchment:#f5efe3; --vellum:#ebe2cf;
  --ink:#1f1b16; --ink-soft:#4a4238; --gold:#b8924a; --gold-deep:#7a5c26; --gold-soft:#d8c08a; --oxblood:#6e2020;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --gutter:clamp(1rem,4vw,4rem); --maxw:1440px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--parchment);color:var(--ink);font-family:var(--serif);font-size:clamp(1.02rem,.95rem + .35vw,1.25rem);line-height:1.65;text-rendering:optimizeLegibility}
a{color:var(--oxblood);text-underline-offset:.18em}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--gold);color:var(--night);padding:.6rem 1rem;z-index:10}
.skip:focus{left:1rem;top:1rem}
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
.eyebrow{font-family:var(--sans);font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 .8rem;font-weight:600}

/* Masthead */
.masthead{position:absolute;inset:0 0 auto 0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem var(--gutter);color:var(--vellum)}
.brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--vellum);text-decoration:none;font-size:1.05rem;letter-spacing:.14em;text-transform:uppercase}
.brand:hover{color:#fff}
.masthead-note{font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft);opacity:.85}

/* Hero */
.hero{position:relative;min-height:min(92vh,960px);display:grid;place-items:center;text-align:center;color:var(--vellum);
  background:radial-gradient(ellipse at 50% 38%,rgba(184,146,74,.22),transparent 60%),linear-gradient(180deg,var(--night) 0%,var(--night-2) 100%);
  padding:7rem var(--gutter) 5rem;overflow:hidden}
.hero::after{content:"";position:absolute;left:50%;bottom:0;width:1px;height:4.5rem;background:linear-gradient(var(--gold),transparent);transform:translateX(-50%)}
.hero-inner{max-width:62rem}
.hero h1{font-weight:400;font-size:clamp(2.3rem,1.2rem + 5.4vw,6.2rem);line-height:1.04;margin:0 0 1.6rem;letter-spacing:-.01em;color:#fbf6ea}
.hero-sub{font-size:clamp(1.05rem,.95rem + .6vw,1.45rem);max-width:44rem;margin:0 auto 1.4rem;color:var(--vellum)}
.hero-note{font-family:var(--sans);font-size:.9rem;max-width:40rem;margin:0 auto;color:var(--gold-soft);opacity:.9}

/* Sections */
section{padding:clamp(4rem,8vw,8rem) 0}
.section-head{text-align:center;margin:0 auto clamp(2.2rem,4vw,3.6rem);max-width:48rem}
.section-head h2{font-weight:400;font-size:clamp(1.8rem,1.2rem + 2.4vw,3.4rem);line-height:1.12;margin:0}
.lede{color:var(--ink-soft);margin:1rem 0 0}

/* Scripture */
.scripture{background:var(--parchment)}
.kjv{margin:0 auto;max-width:52rem;font-size:clamp(1.15rem,1rem + .7vw,1.6rem);line-height:1.8;text-align:justify;hyphens:auto;border:0;padding:0}
.kjv .verse sup{font-family:var(--sans);font-size:.55em;color:var(--gold);font-weight:700;margin-right:.2em;vertical-align:.6em}
.kjv::first-letter{float:left;font-size:4.4em;line-height:.82;padding:.08em .12em 0 0;color:var(--oxblood)}
.cite{text-align:center;font-family:var(--sans);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-top:2rem}

/* Exhibits */
.pieces{background:var(--vellum);border-top:1px solid rgba(184,146,74,.35);border-bottom:1px solid rgba(184,146,74,.35)}
.piece-grid{list-style:none;margin:0;padding:0;display:grid;gap:clamp(1rem,2vw,1.6rem);grid-template-columns:repeat(4,minmax(0,1fr))}
.piece{position:relative;background:var(--parchment);border:1px solid rgba(110,32,32,.14);padding:2rem 1.5rem 1.6rem;text-align:center;box-shadow:0 1px 0 rgba(0,0,0,.03),0 18px 40px -28px rgba(20,27,38,.45);transition:transform .25s ease,box-shadow .25s ease}
.piece:hover{transform:translateY(-3px);box-shadow:0 1px 0 rgba(0,0,0,.03),0 26px 50px -28px rgba(20,27,38,.55)}
.piece-num{display:block;font-size:.9rem;letter-spacing:.24em;color:var(--gold);margin-bottom:.6rem}
.piece h3{font-weight:400;font-size:clamp(1.2rem,1rem + .5vw,1.5rem);margin:0 0 .8rem;line-height:1.2}
.piece-words{font-style:italic;color:var(--ink-soft);margin:0 0 1rem}
.piece-ref{font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--oxblood);margin:0}
.piece:last-child{grid-column:span 1}

/* Halls */
.halls{background:var(--night);color:var(--vellum)}
.halls .section-head h2{color:#fbf6ea}
.halls .lede{color:var(--gold-soft)}
.hall-grid{display:grid;gap:clamp(1rem,2vw,2rem);grid-template-columns:repeat(3,minmax(0,1fr))}
.hall{border:1px solid rgba(184,146,74,.35);padding:2rem;background:rgba(255,255,255,.02)}
.hall h3{font-weight:400;font-size:1.5rem;margin:0 0 .6rem;color:#fbf6ea}
.hall p{margin:0 0 1.2rem;color:var(--vellum);opacity:.9}
.status{font-family:var(--sans);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}

/* Plain pages */
.plain{max-width:44rem;margin:0 auto;padding:9rem var(--gutter) 6rem;min-height:70vh}
.plain h1{font-weight:400;font-size:clamp(2rem,1.4rem + 2.4vw,3.2rem);margin:0 0 1rem}
body:has(.plain) .masthead{position:static;background:var(--night)}
body:has(.plain) .plain{padding-top:4rem}
.btn{display:inline-block;border:1px solid var(--oxblood);padding:.7rem 1.3rem;font-family:var(--sans);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;text-decoration:none}
.btn:hover{background:var(--oxblood);color:var(--parchment)}

/* Colophon */
.colophon{background:#0e131b;color:var(--vellum);text-align:center;padding:3.5rem var(--gutter)}
.colophon-motto{font-style:italic;max-width:44rem;margin:0 auto 1.4rem;color:var(--gold-soft)}
.colophon-small{font-family:var(--sans);font-size:.78rem;max-width:44rem;margin:.4rem auto;opacity:.75}
.colophon a{color:var(--gold-soft)}

/* Open halls (home) */
.hall-open{border-color:var(--gold);background:rgba(184,146,74,.08);position:relative}
.hall-open h3 a{color:#fbf6ea;text-decoration:none}
.hall-open h3 a::after{content:"";position:absolute;inset:0}
.hall-open:hover{background:rgba(184,146,74,.14)}
.hall-open .status{color:var(--gold-soft)}

/* Bible Catalogue */
.cat-hero{text-align:center;color:var(--vellum);padding:clamp(8rem,12vw,11rem) 0 clamp(3.5rem,6vw,5.5rem);
  background:radial-gradient(ellipse at 50% 30%,rgba(184,146,74,.2),transparent 62%),linear-gradient(180deg,var(--night),var(--night-2))}
.cat-hero h1{font-weight:400;font-size:clamp(2.3rem,1.3rem + 4.4vw,5.4rem);line-height:1.05;margin:0 0 1.4rem;color:#fbf6ea}
.cat-verse{font-style:italic;max-width:46rem;margin:0 auto 2.6rem;color:var(--vellum);font-size:clamp(1.02rem,.95rem + .5vw,1.35rem)}
.cat-verse-ref{display:block;margin-top:.7rem;font-style:normal;font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft)}
.cat-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));max-width:52rem;margin:0 auto 2.2rem;border-top:1px solid rgba(184,146,74,.35);border-bottom:1px solid rgba(184,146,74,.35)}
.cat-stats div{padding:1.1rem .5rem}
.cat-stats div+div{border-left:1px solid rgba(184,146,74,.25)}
.cat-stats dt{font-family:var(--sans);font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:.3rem}
.cat-stats dd{margin:0;font-size:clamp(1.6rem,1.2rem + 1.6vw,2.6rem);line-height:1;color:#fbf6ea}
.testament{scroll-margin-top:1rem}
.testament-nt{background:var(--vellum);border-top:1px solid rgba(184,146,74,.35)}
.division{margin:0 0 clamp(2.4rem,4vw,3.6rem)}
.division:last-child{margin-bottom:0}
.division-name{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-weight:400;font-size:clamp(1.25rem,1.05rem + .7vw,1.7rem);margin:0 0 1.1rem;padding-bottom:.6rem;border-bottom:1px solid rgba(110,32,32,.25)}
.division-name small{font-family:var(--sans);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.book-shelf{list-style:none;margin:0;padding:0;display:grid;gap:clamp(.6rem,1.2vw,1rem);grid-template-columns:repeat(6,minmax(0,1fr))}
.book{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:8.5rem;padding:1rem 1rem .9rem 1.25rem;background:var(--parchment);border:1px solid rgba(110,32,32,.14);
  box-shadow:0 14px 30px -24px rgba(20,27,38,.5);scroll-margin-top:1rem}
.book::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(var(--oxblood),#4d1616)}
.testament-nt .book::before{background:linear-gradient(var(--gold),#8c6c2f)}
.book:target{outline:2px solid var(--gold);outline-offset:2px}
.book-order{font-family:var(--sans);font-size:.68rem;letter-spacing:.14em;color:var(--gold);font-weight:700}
.book-name{font-size:clamp(1.05rem,.98rem + .3vw,1.25rem);line-height:1.2;margin:.35rem 0 .6rem}
.book-ch{font-family:var(--sans);font-size:.72rem;letter-spacing:.08em;color:var(--ink-soft)}
.cat-empty{text-align:center}
.cat-empty h2{font-weight:400}
.cat-source{background:var(--night);color:var(--vellum);padding:clamp(3rem,6vw,5rem) 0}
.cat-source .wrap{max-width:52rem}
.cat-source p{font-family:var(--sans);font-size:.88rem;opacity:.85}
.cat-source a{color:var(--gold-soft)}

/* XXXL >1600 */
@media (min-width:1601px){:root{--maxw:1600px}.piece-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.piece{padding:2.2rem 1.2rem}.book-shelf{grid-template-columns:repeat(8,minmax(0,1fr))}}
/* Catalogue ranges */
@media (max-width:1200px){.book-shelf{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media (max-width:900px){.book-shelf{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:640px){.book-shelf{grid-template-columns:repeat(3,minmax(0,1fr))}.cat-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.cat-stats div:nth-child(3){border-left:0}.cat-stats div:nth-child(n+3){border-top:1px solid rgba(184,146,74,.25)}}
@media (max-width:480px){.book-shelf{grid-template-columns:repeat(2,minmax(0,1fr))}.book{min-height:7rem}}
@media (max-width:380px){.book{padding:.8rem .8rem .8rem 1.05rem}}
/* Catalogue incipits (011): each book introduced by its opening KJV verse; wider cards so Scripture is never truncated */
.cat-stats.cat-stats-5{grid-template-columns:repeat(5,minmax(0,1fr));max-width:62rem}
.book-shelf.book-shelf-incipit{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(.8rem,1.4vw,1.25rem)}
.book-shelf-incipit .book{justify-content:flex-start;min-height:0;padding:1.15rem 1.2rem 1rem 1.45rem}
.book-shelf-incipit .book-name{margin:.3rem 0 .75rem}
.book-incipit{flex:1;margin:0 0 1rem;padding:0}
.book-incipit p{margin:0;font-style:italic;font-size:clamp(.92rem,.88rem + .15vw,1rem);line-height:1.55;color:var(--ink)}
.book-incipit footer{margin-top:.55rem}
.book-incipit a{font-family:var(--sans);font-style:normal;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--oxblood);text-decoration:none;border-bottom:1px solid rgba(110,32,32,.3)}
.book-incipit a:hover,.book-incipit a:focus-visible{color:var(--ink);border-bottom-color:var(--gold)}
.book-shelf-incipit .book-ch{padding-top:.7rem;border-top:1px solid rgba(110,32,32,.12)}
@media (min-width:1601px){.book-shelf.book-shelf-incipit{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media (max-width:1200px){.book-shelf.book-shelf-incipit{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.book-shelf.book-shelf-incipit{grid-template-columns:repeat(2,minmax(0,1fr))}.cat-stats.cat-stats-5{grid-template-columns:repeat(3,minmax(0,1fr))}.cat-stats-5 div:nth-child(4){border-left:0}.cat-stats-5 div:nth-child(n+4){border-top:1px solid rgba(184,146,74,.25)}}
@media (max-width:640px){.cat-stats.cat-stats-5{grid-template-columns:repeat(2,minmax(0,1fr))}.cat-stats-5 div:nth-child(4){border-left:1px solid rgba(184,146,74,.25)}.cat-stats-5 div:nth-child(5){grid-column:1/-1;border-left:0}}
@media (max-width:480px){.book-shelf.book-shelf-incipit{grid-template-columns:minmax(0,1fr)}}
@media (max-width:380px){.book-shelf-incipit .book{padding:.95rem .9rem .9rem 1.15rem}.book-incipit p{font-size:.9rem}}
/* XXL ≤1600 */
@media (max-width:1600px){.piece-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* XL ≤1200 */
@media (max-width:1200px){.piece-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.piece:last-child{grid-column:2 / span 1}}
/* LG ≤900 */
@media (max-width:900px){.masthead-note{display:none}.hall-grid{grid-template-columns:1fr}.piece-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.piece:last-child{grid-column:1 / -1}}
/* MD ≤640 */
@media (max-width:640px){.kjv{text-align:left}.hero{min-height:88vh;padding-top:6rem}}
/* SM ≤480 */
@media (max-width:480px){.piece-grid{grid-template-columns:1fr}.piece:last-child{grid-column:auto}.brand span{font-size:.9rem}.kjv::first-letter{font-size:3.4em}}
/* XS ≤380 */
@media (max-width:380px){.brand span{letter-spacing:.08em}.hall{padding:1.4rem}.piece{padding:1.6rem 1.1rem}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
/* Home — piece cards link into the Armoury */
.piece-link h3 a{color:inherit;text-decoration:none}
.piece-link h3 a::after{content:"";position:absolute;inset:0}
.piece-link:hover h3 a{color:var(--oxblood)}

/* The Armoury (Hall I) */
.arm-hero{text-align:center;color:var(--vellum);padding:clamp(8rem,12vw,11rem) 0 clamp(3.5rem,6vw,5.5rem);
  background:radial-gradient(ellipse at 50% 30%,rgba(184,146,74,.22),transparent 62%),linear-gradient(180deg,var(--night),var(--night-2))}
.arm-hero h1{font-weight:400;font-size:clamp(2.3rem,1.3rem + 4.4vw,5.4rem);line-height:1.05;margin:0 0 1.4rem;color:#fbf6ea}
.arm-verse{font-style:italic;max-width:46rem;margin:0 auto 1.6rem;color:var(--vellum);font-size:clamp(1.02rem,.95rem + .5vw,1.35rem)}
.arm-verse-ref{display:block;margin-top:.7rem;font-style:normal;font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft)}
.arm-intro{max-width:40rem;margin:0 auto 2.4rem;font-family:var(--sans);font-size:.95rem;color:var(--gold-soft);opacity:.92}
.arm-exhibits{padding:clamp(3rem,6vw,6rem) 0}
.exhibit{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(1.5rem,4vw,4.5rem);align-items:start;padding:clamp(2.6rem,5vw,4.6rem) 0;border-top:1px solid rgba(184,146,74,.35);scroll-margin-top:1rem}
.exhibit:first-child{border-top:0;padding-top:0}
.exhibit:target .exhibit-plate{outline:2px solid var(--gold);outline-offset:4px}
.exhibit-plate{position:sticky;top:1.5rem;background:var(--night);color:var(--vellum);padding:clamp(1.8rem,3vw,2.8rem);text-align:center;border:1px solid rgba(184,146,74,.45);box-shadow:0 26px 50px -30px rgba(20,27,38,.8);overflow:hidden}
.exhibit-alt .exhibit-plate{background:var(--oxblood);border-color:rgba(216,192,138,.5)}
.exhibit-num{position:absolute;right:-.05em;bottom:-.28em;font-size:clamp(6rem,4rem + 6vw,11rem);line-height:1;color:rgba(216,192,138,.09);pointer-events:none}
.exhibit-plate .eyebrow{color:var(--gold-soft)}
.exhibit-plate h2{position:relative;font-weight:400;font-size:clamp(1.7rem,1.2rem + 1.8vw,2.8rem);line-height:1.1;margin:0 0 1.1rem;color:#fbf6ea}
.exhibit-words{position:relative;font-style:italic;font-size:clamp(1.05rem,.98rem + .4vw,1.3rem);margin:0 0 1.2rem}
.exhibit-ref{position:relative;margin:0;font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase}
.exhibit-ref a{color:var(--gold-soft)}
.exhibit-sub{font-family:var(--sans);font-weight:600;font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--oxblood);margin:0 0 1.2rem}
.xrefs{list-style:none;margin:0 0 1.6rem;padding:0;display:grid;gap:1.3rem}
.xrefs li{background:#fbf7ee;border:1px solid rgba(110,32,32,.14);border-left:3px solid var(--gold);padding:1.3rem 1.5rem 1.1rem;box-shadow:0 14px 30px -26px rgba(20,27,38,.5)}
.xrefs blockquote{margin:0}
.xrefs blockquote p{margin:0;font-size:clamp(1.05rem,.98rem + .35vw,1.28rem);line-height:1.7}
.xref-cite{margin:.7rem 0 0;font-family:var(--sans);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase}
.exposition{margin:0 0 2rem}
.exposition blockquote{margin:0;padding:1.4rem 1.6rem 1.2rem 1.8rem;background:linear-gradient(180deg,#fffdf7,#f7f0e1);border:1px solid rgba(110,32,32,.12);border-left:4px solid var(--oxblood);position:relative}
.exposition blockquote::before{content:"\201C";position:absolute;top:-.35rem;left:.55rem;font-size:3.2rem;line-height:1;color:var(--gold);opacity:.55;font-family:var(--serif,Georgia,serif)}
.exposition blockquote p{margin:0 0 .9rem;font-size:clamp(1rem,.95rem + .3vw,1.18rem);line-height:1.75;font-style:italic;color:var(--ink,#1c1a17)}
.exposition blockquote p:last-child{margin-bottom:0}
.exposition-cite{margin:.75rem 0 0;font-family:var(--sans);font-size:.72rem;letter-spacing:.08em;line-height:1.6;color:var(--ink-soft)}
.exhibit-pending{font-family:var(--sans);font-size:.85rem;color:var(--ink-soft);border-top:1px dashed rgba(110,32,32,.25);padding-top:1rem;margin:0}
.arm-close{background:var(--vellum);text-align:center;border-top:1px solid rgba(184,146,74,.35)}
.arm-close .wrap{max-width:48rem}
.arm-close h2{font-weight:400;font-size:clamp(1.7rem,1.2rem + 2vw,3rem);line-height:1.15;margin:0 0 1rem}
.arm-close p{color:var(--ink-soft)}
.arm-close-links{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:1.8rem}
/* Armoury ranges */
@media (min-width:1601px){.exhibit{grid-template-columns:minmax(0,4fr) minmax(0,8fr)}.xrefs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){.exhibit{grid-template-columns:1fr}.exhibit-plate{position:relative;top:auto}}
@media (max-width:640px){.xrefs li{padding:1.1rem 1.1rem 1rem}}
@media (max-width:480px){.exhibit-plate{padding:1.6rem 1.2rem}}
@media (max-width:380px){.xrefs li{padding:1rem .9rem .9rem}.xrefs blockquote p{font-size:1rem}}

/* The Timeline (Hall II) */
.timeline{--tl-gap:clamp(3rem,6vw,6rem)}
.tl-legend{list-style:none;margin:0 auto;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 1.4rem;font-family:var(--sans);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--vellum)}
.tl-legend li{display:inline-flex;align-items:center;gap:.5rem}
.tl-count{color:var(--gold-soft);letter-spacing:.06em}
.tl-cat-scripture-canon,.tl-cat-the-english-bible{--cat:var(--gold)}
.tl-cat-baptist-witness{--cat:#a8453f}
.tl-dot{display:inline-block;width:.62rem;height:.62rem;border-radius:50%;background:var(--cat,var(--gold));box-shadow:0 0 0 3px rgba(184,146,74,.18)}
.tl-cat-the-english-bible .tl-dot{background:transparent;border:2px solid var(--gold)}
.tl-hall{padding:clamp(3rem,6vw,6rem) 0}
.tl{position:relative;list-style:none;margin:0 auto;padding:0;max-width:74rem}
.tl::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background:linear-gradient(180deg,transparent,var(--gold) 3rem,var(--gold) calc(100% - 3rem),transparent)}
.tl-item{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:var(--tl-gap);scroll-margin-top:1rem}
.tl-era{grid-column:1 / -1;justify-self:center;position:relative;z-index:1;margin:clamp(1.6rem,3vw,2.6rem) 0 clamp(1.4rem,2.5vw,2.2rem);padding:.5rem 1.2rem;background:var(--night);color:var(--gold-soft);border:1px solid rgba(184,146,74,.55);font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;text-align:center}
.tl-item:first-child .tl-era{margin-top:0}
.tl-card{grid-column:1;position:relative;margin:0 0 clamp(1.6rem,3vw,2.6rem);background:#fbf7ee;border:1px solid rgba(110,32,32,.14);border-top:3px solid var(--cat,var(--gold));padding:clamp(1.4rem,2.4vw,2.2rem);box-shadow:0 18px 40px -30px rgba(20,27,38,.55)}
.tl-right .tl-card{grid-column:2}
.tl-card::after{content:"";position:absolute;top:2.1rem;right:calc(var(--tl-gap) / -2 - 8px);width:16px;height:16px;border-radius:50%;background:var(--parchment);border:3px solid var(--cat,var(--gold));box-sizing:border-box}
.tl-right .tl-card::after{right:auto;left:calc(var(--tl-gap) / -2 - 8px)}
.tl-item:target .tl-card{outline:2px solid var(--gold);outline-offset:4px}
.tl-date{margin:0 0 .4rem;font-size:clamp(1.9rem,1.4rem + 1.8vw,3rem);line-height:1;color:var(--oxblood);font-variant-numeric:oldstyle-nums}
.tl-kind{display:flex;align-items:center;gap:.5rem;color:var(--ink-soft);margin-bottom:.7rem}
.tl-card h2{font-weight:400;font-size:clamp(1.3rem,1.1rem + .8vw,1.85rem);line-height:1.2;margin:0 0 .9rem}
.tl-summary{margin:0 0 1.1rem;font-size:clamp(1rem,.96rem + .2vw,1.12rem);line-height:1.7}
.tl-source{margin:0;padding-top:.9rem;border-top:1px dashed rgba(110,32,32,.22);font-family:var(--sans);font-size:.78rem;line-height:1.55;color:var(--ink-soft)}
.tl-source span{font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--oxblood);margin-right:.25rem}
.tl-pending{max-width:48rem;margin:clamp(1rem,2vw,2rem) auto 0;text-align:center}
.arm-close .eyebrow a{color:inherit;text-decoration:none}
/* Timeline plates (migration 005) — licensed images, framed like a museum mount */
.tl-plate{margin:0 0 1.2rem;padding:0}
.tl-plate-frame{background:linear-gradient(#efe6d2,#e6dbc2);border:1px solid rgba(184,146,74,.55);box-shadow:inset 0 0 0 6px #f7f1e4,inset 0 0 0 7px rgba(184,146,74,.35);padding:clamp(.8rem,1.6vw,1.2rem);display:flex;align-items:center;justify-content:center;min-height:8rem}
.tl-plate-frame{--plate-max:clamp(16rem,34vw,26rem)}
.tl-plate img{display:block;max-width:100%;height:auto;max-height:var(--plate-max);object-fit:contain;box-shadow:0 10px 24px -14px rgba(20,27,38,.6);background:#e9dfc9}
/* 🎨 17: a measured plate reserves its exact fitted box before the image arrives: the link is sized to the least of
   the frame, the file, and max-height x ratio; the image fills it at its own ratio (width/height attributes). */
.tl-plate .plate-open[style*="--r"],.arm-plate .tl-plate-frame>a[style*="--r"],.gal-frame>.gal-zoom[style*="--r"]{flex:0 0 auto;width:min(100%,var(--w),calc(var(--plate-max) * var(--r)))}
.tl-plate .plate-open[style*="--r"] img,.arm-plate .tl-plate-frame>a[style*="--r"] img,.gal-frame>.gal-zoom[style*="--r"] img{width:100%}
.tl-plate figcaption{margin-top:.55rem;font-family:var(--sans);font-size:.72rem;line-height:1.5;color:var(--ink-soft);font-style:italic}
.tl-plate figcaption a{color:var(--oxblood);font-style:normal;font-weight:600;letter-spacing:.04em}
/* Timeline ranges */
@media (min-width:1601px){.tl{max-width:84rem}}
@media (max-width:1200px){.timeline{--tl-gap:clamp(2.4rem,5vw,4rem)}}
@media (max-width:900px){
  .tl::before{left:.55rem;transform:none}
  .tl-item{grid-template-columns:minmax(0,1fr);padding-left:2.4rem}
  .tl-card,.tl-right .tl-card{grid-column:1}
  .tl-card::after,.tl-right .tl-card::after{right:auto;left:calc(-2.4rem + .55rem - 8px)}
  .tl-era{justify-self:start;margin-left:-2.4rem}
}
@media (max-width:640px){.tl-legend{gap:.5rem 1rem;font-size:.7rem}.tl-card{padding:1.3rem 1.2rem}.tl-plate-frame{--plate-max:20rem}}
@media (max-width:480px){.tl-item{padding-left:1.9rem}.tl-card::after,.tl-right .tl-card::after{left:calc(-1.9rem + .55rem - 8px)}.tl-era{margin-left:-1.9rem;letter-spacing:.14em}.tl-legend{flex-direction:column;align-items:center}}
@media (max-width:380px){.tl-plate-frame{padding:.6rem;box-shadow:inset 0 0 0 4px #f7f1e4,inset 0 0 0 5px rgba(184,146,74,.35)}.tl-plate-frame{--plate-max:16rem}.tl-plate figcaption{font-size:.68rem}.tl-card{padding:1.1rem .95rem}.tl-source{font-size:.74rem}.tl-era{font-size:.66rem;padding:.45rem .8rem}}

/* Masthead nav (all pages) */
.masthead-nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.2rem 1.4rem;font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase}
.masthead-nav a{color:var(--vellum);text-decoration:none;padding:.35rem 0;border-bottom:1px solid transparent}
.masthead-nav a:hover{color:#fff;border-bottom-color:var(--gold)}
.masthead-nav a[aria-current="page"]{color:var(--gold-soft);border-bottom-color:var(--gold)}
@media (max-width:1200px){.masthead-note{display:none}}
@media (max-width:640px){.masthead{flex-wrap:wrap;justify-content:center;row-gap:.5rem}.masthead-nav{justify-content:center;gap:.2rem 1.1rem}}
@media (max-width:380px){.masthead-nav{gap:.1rem .8rem;font-size:.66rem;letter-spacing:.12em}}

/* About / What We Believe */
.ab-narrow{max-width:52rem}
.ab-name h2,.ab-word h2{font-weight:400;font-size:clamp(1.8rem,1.2rem + 2.2vw,3.2rem);line-height:1.12;margin:0 0 1.4rem}
.ab-lead{font-size:clamp(1.1rem,1rem + .45vw,1.4rem);line-height:1.7;margin:0 0 2rem}
.ab-xrefs{margin-bottom:2rem}
.ab-plain{font-family:var(--sans);font-size:.95rem;background:var(--night);color:var(--vellum);padding:1.3rem 1.5rem;border-left:3px solid var(--gold);margin:0}
.ab-plain strong{color:var(--gold-soft)}
.ab-beliefs{background:var(--vellum);border-top:1px solid rgba(184,146,74,.35);border-bottom:1px solid rgba(184,146,74,.35)}
.ab-beliefs .lede a{color:var(--oxblood)}
.ab-grid{list-style:none;margin:0;padding:0;display:grid;gap:clamp(1rem,2vw,1.8rem);grid-template-columns:repeat(3,minmax(0,1fr))}
.ab-card{position:relative;display:flex;flex-direction:column;background:var(--parchment);border:1px solid rgba(110,32,32,.14);border-top:3px solid var(--gold);padding:clamp(1.5rem,2.4vw,2.2rem);box-shadow:0 18px 40px -30px rgba(20,27,38,.5);overflow:hidden}
.ab-num{position:absolute;right:.6rem;top:.2rem;font-size:clamp(3rem,2rem + 2.4vw,4.6rem);line-height:1;color:rgba(184,146,74,.16);pointer-events:none}
.ab-card h3{position:relative;font-weight:400;font-size:clamp(1.3rem,1.1rem + .6vw,1.7rem);line-height:1.2;margin:0 0 .9rem}
.ab-body{margin:0 0 1.2rem;color:var(--ink-soft)}
.ab-text{margin:auto 0 0;padding:1rem 0 0;border-top:1px dashed rgba(110,32,32,.25)}
.ab-text p{margin:0;font-style:italic;line-height:1.65}
.ab-srcnote{font-family:var(--sans);font-size:.8rem;color:var(--ink-soft);text-align:center;margin:2rem 0 0}
.ab-confession{margin:1.6rem 0 2rem;padding:clamp(1.4rem,3vw,2.2rem);background:var(--night);color:#fbf6ea;border:1px solid rgba(184,146,74,.45)}
.ab-confession p{margin:0 0 1rem;font-size:clamp(1.2rem,1rem + .8vw,1.7rem);line-height:1.5;font-style:italic}
.ab-confession footer{font-family:var(--sans);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-soft)}
.ab-confession a{color:var(--gold-soft)}
/* About ranges */
@media (min-width:1601px){.ab-grid{gap:2.2rem}}
@media (max-width:1200px){.ab-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.ab-grid{grid-template-columns:1fr}.ab-plain{padding:1.1rem 1.1rem}}
@media (max-width:480px){.ab-card{padding:1.3rem 1.15rem}.ab-confession{padding:1.2rem 1.1rem}}
@media (max-width:380px){.ab-plain{font-size:.88rem}.ab-confession p{font-size:1.1rem}}

/* The Sources — reading room / bibliography (sprint 2026-09-28-timeline-batch-and-sources-hall) */
.src-hall{padding:clamp(3rem,6vw,6rem) 0}
.src-wrap{max-width:68rem}
.src-sec{scroll-margin-top:1rem;margin:0 0 clamp(3rem,6vw,5.5rem)}
.src-sec:last-child{margin-bottom:0}
.src-head{border-bottom:1px solid rgba(184,146,74,.55);padding-bottom:1.1rem;margin-bottom:1.4rem}
.src-head h2{font-weight:400;font-size:clamp(1.7rem,1.2rem + 2vw,2.9rem);line-height:1.12;margin:0 0 .8rem}
.src-head p:last-child{margin:0;max-width:46rem;font-size:clamp(1rem,.96rem + .2vw,1.12rem);color:var(--ink-soft)}
.src-list{list-style:none;margin:0;padding:0;counter-reset:src}
.src-list > li{counter-increment:src;position:relative;padding:1.1rem 0 1.1rem 3.2rem;border-bottom:1px dashed rgba(110,32,32,.2)}
.src-list > li::before{content:counter(src);position:absolute;left:0;top:1.15rem;width:2.2rem;text-align:right;font-family:var(--sans);font-size:.78rem;font-weight:700;letter-spacing:.06em;color:var(--gold);font-variant-numeric:lining-nums tabular-nums}
.src-list p{margin:0}
.src-host{font-family:var(--sans);font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--oxblood);margin-bottom:.25rem!important}
.src-title{font-size:clamp(1.02rem,.98rem + .25vw,1.18rem);line-height:1.5}
.src-title a{color:var(--ink);text-decoration-color:rgba(110,32,32,.35)}
.src-title a:hover{color:var(--oxblood)}
.src-uses,.src-lic,.src-where{font-family:var(--sans);font-size:.8rem;line-height:1.55;color:var(--ink-soft);margin-top:.35rem!important}
.src-lic a{font-weight:600;letter-spacing:.04em}
.src-scripture{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2.4rem}
.src-scripture > li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .7rem}
.src-scripture > li a{font-size:1.05rem}
.src-scripture .src-where{margin-top:0!important}
/* Sources ranges */
@media (min-width:1601px){.src-wrap{max-width:76rem}.src-scripture{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.src-scripture{grid-template-columns:1fr}}
@media (max-width:640px){.src-list > li{padding-left:2.6rem}.src-list > li::before{width:1.8rem}}
@media (max-width:480px){.src-list > li{padding:1rem 0 1rem 2.2rem}.src-list > li::before{width:1.5rem;font-size:.72rem}.src-uses,.src-lic,.src-where{font-size:.76rem}}
@media (max-width:380px){.src-list > li{padding-left:1.9rem}.src-list > li::before{width:1.3rem}.src-title{font-size:.98rem}}

/* The Gallery (sprint 2026-09-28-gallery-hall) — museum cases: framed plate + label card */
.gal-room{padding:clamp(3.5rem,7vw,7rem) 0;border-top:1px solid rgba(184,146,74,.35)}
.gal-room--armour{background:linear-gradient(180deg,var(--vellum),var(--parchment) 18rem)}
.gal-room-head{text-align:center;max-width:52rem;margin:0 auto clamp(2.4rem,5vw,4.4rem)}
.gal-room-head h2{font-weight:400;font-size:clamp(1.9rem,1.2rem + 2.6vw,3.6rem);line-height:1.1;margin:0 0 1.4rem}
.gal-room-verse{margin:0 auto 1.3rem;max-width:44rem}
.gal-room-verse p{margin:0;font-style:italic;font-size:clamp(1.05rem,.98rem + .45vw,1.35rem);color:var(--ink)}
.gal-room-verse footer{margin-top:.6rem;font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase}
p.gal-room-text{font-family:var(--sans);font-size:.95rem;line-height:1.7;color:var(--ink-soft);margin:0 auto;max-width:44rem}
.gal-note{font-size:.8rem;white-space:nowrap}
.gal-cases{display:grid;gap:clamp(3rem,6vw,6rem)}
.gal-case{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(1.6rem,4vw,4.5rem);align-items:start;scroll-margin-top:1rem}
.gal-case-alt{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.gal-case-alt .gal-plate{order:2}
.gal-case:target .gal-label{outline:2px solid var(--gold);outline-offset:6px}
.gal-plate{margin:0;position:sticky;top:1.5rem}
.gal-frame{background:radial-gradient(ellipse at 50% 40%,#2a3547,var(--night) 75%);border:1px solid rgba(184,146,74,.6);box-shadow:inset 0 0 0 8px var(--night-2),inset 0 0 0 9px rgba(184,146,74,.45),0 30px 60px -34px rgba(20,27,38,.85);padding:clamp(1.2rem,3vw,2.6rem);display:flex;align-items:center;justify-content:center;min-height:clamp(16rem,34vw,34rem);--plate-max:clamp(20rem,52vw,40rem)}
.gal-zoom{display:block;line-height:0}
.gal-frame img{display:block;max-width:100%;height:auto;max-height:var(--plate-max);object-fit:contain;box-shadow:0 18px 40px -18px rgba(0,0,0,.8);background:#20293a}
.gal-plate figcaption{margin-top:.7rem;font-family:var(--sans);font-size:.72rem;line-height:1.5;color:var(--ink-soft);font-style:italic}
.gal-plate figcaption a{color:var(--oxblood);font-style:normal;font-weight:600;letter-spacing:.04em}
.gal-label{background:#fbf7ee;border:1px solid rgba(110,32,32,.14);border-top:3px solid var(--gold);padding:clamp(1.5rem,3vw,2.6rem);box-shadow:0 20px 40px -32px rgba(20,27,38,.55)}
.gal-kind{color:var(--oxblood)}
.gal-label h3{font-weight:400;font-size:clamp(1.5rem,1.1rem + 1.4vw,2.4rem);line-height:1.12;margin:0 0 1.1rem}
.gal-facts{display:grid;gap:.35rem;margin:0 0 1.2rem;padding:0 0 1.1rem;border-bottom:1px solid rgba(184,146,74,.35);font-family:var(--sans);font-size:.82rem}
.gal-facts div{display:grid;grid-template-columns:5.2rem minmax(0,1fr);gap:.6rem}
.gal-facts dt{letter-spacing:.16em;text-transform:uppercase;font-size:.68rem;color:var(--gold);font-weight:700;padding-top:.12rem}
.gal-facts dd{margin:0;color:var(--ink)}
.gal-caption{font-size:clamp(1.05rem,1rem + .3vw,1.25rem);line-height:1.6;margin:0 0 1rem;font-style:italic}
.gal-body{margin:0 0 1.4rem;font-size:1rem;line-height:1.72;color:var(--ink)}
.gal-verse{margin:0 0 1.3rem;padding:1.1rem 1.3rem;background:var(--night);color:var(--vellum);border-left:3px solid var(--gold)}
.gal-verse p{margin:0;font-style:italic;font-size:clamp(1rem,.96rem + .25vw,1.18rem);line-height:1.65}
.gal-verse footer{margin-top:.6rem;font-family:var(--sans);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}
.gal-verse a{color:var(--gold-soft)}
.gal-label .tl-source{margin:0}
.arm-plate{margin:0 0 1.8rem}
.arm-plate figcaption strong{font-style:normal;color:var(--ink)}
/* Home: the hall directory (six halls; see 🎨 16 below) */
.hall-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
/* Gallery ranges XS≤380 · SM≤480 · MD≤640 · LG≤900 · XL≤1200 · XXL≤1600 · XXXL>1600 */
@media (min-width:1601px){.gal-cases{gap:7rem}.gal-label{padding:2.8rem 3rem}}
@media (max-width:1600px){.gal-frame{--plate-max:36rem}}
@media (max-width:1200px){.hall-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gal-case,.gal-case-alt{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:900px){.hall-grid{grid-template-columns:1fr}.gal-case,.gal-case-alt{grid-template-columns:1fr}.gal-case-alt .gal-plate{order:0}.gal-plate{position:relative;top:auto}.gal-frame{min-height:0;--plate-max:32rem}}
@media (max-width:640px){.gal-frame{padding:1rem;box-shadow:inset 0 0 0 5px var(--night-2),inset 0 0 0 6px rgba(184,146,74,.45),0 20px 40px -28px rgba(20,27,38,.85);--plate-max:26rem}.gal-label{padding:1.4rem 1.25rem}}
@media (max-width:480px){.gal-facts div{grid-template-columns:1fr;gap:.1rem}.gal-verse{padding:1rem}p.gal-room-text{font-size:.9rem}}
@media (max-width:380px){.gal-frame{padding:.7rem;--plate-max:21rem}.gal-label{padding:1.15rem 1rem}.gal-label h3{font-size:1.4rem}.gal-plate figcaption{font-size:.68rem}}

/* Armoury exposition (Gill) — small ranges */
@media (max-width:640px){.exposition blockquote{padding:1.2rem 1.1rem 1rem 1.3rem}}
@media (max-width:380px){.exposition blockquote{padding:1rem .9rem .9rem 1.1rem}.exposition blockquote p{font-size:.98rem;line-height:1.7}.exposition-cite{letter-spacing:.04em}}
/* Catalogue notes (019): Easton's Bible Dictionary (1897, PD), verbatim, collapsed by default */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.book-note{margin:0 0 .85rem;border-top:1px dashed rgba(110,32,32,.18)}
.book-note summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.45rem;padding:.6rem 0 .1rem;font-family:var(--sans);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--oxblood);font-weight:700}
.book-note summary::-webkit-details-marker{display:none}
.book-note summary::before{content:"";width:.45rem;height:.45rem;border-right:1.5px solid var(--gold);border-bottom:1.5px solid var(--gold);transform:rotate(-45deg);transition:transform .2s ease;flex:none}
.book-note[open] summary::before{transform:rotate(45deg)}
.book-note summary:hover,.book-note summary:focus-visible{color:var(--ink)}
.book-note summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.book-note blockquote{margin:.55rem 0 0;padding:0 0 0 .8rem;border-left:2px solid rgba(184,146,74,.55)}
.book-note p{margin:0;font-size:clamp(.86rem,.83rem + .12vw,.95rem);line-height:1.6;color:var(--ink);overflow-wrap:anywhere}
.book-note footer{margin-top:.55rem;font-family:var(--sans);font-size:.64rem;letter-spacing:.06em;line-height:1.6;color:var(--ink-soft)}
.book-note footer a{color:var(--oxblood);text-decoration:none;border-bottom:1px solid rgba(110,32,32,.3);text-transform:uppercase;letter-spacing:.12em}
.book-note footer a:hover,.book-note footer a:focus-visible{color:var(--ink);border-bottom-color:var(--gold)}
@media (prefers-reduced-motion:reduce){.book-note summary::before{transition:none}}
@media (max-width:380px){.book-note p{font-size:.86rem}.book-note blockquote{padding-left:.65rem}}

/* ── Accessibility pass (sprint 2026-09-28-a11y-responsive-pass) ──────────────
   Burnished gold (--gold-deep, ≥4.5:1 on every parchment tone) for small text on light grounds;
   bright --gold stays for rules, borders and dark grounds, where it already passes (5.2–6:1). */
.eyebrow,.kjv .verse sup,.piece-num,.book-order,.gal-facts dt{color:var(--gold-deep)}
.hero .eyebrow,.arm-hero .eyebrow,.cat-hero .eyebrow,.halls .eyebrow,.halls .piece-num,.cat-source .eyebrow,.ab-plain .eyebrow,.ab-confession .eyebrow,.gal-verse .eyebrow{color:var(--gold)}
/* Decorative About numerals: drawn by CSS from data-n so they stay out of the reading order */
.ab-num::before{content:attr(data-n)}
/* Long citations and URLs must wrap, never push the page sideways (XS/SM) */
p,li,dd,dt,figcaption,blockquote,.src-title a,.tl-source a{overflow-wrap:anywhere}
/* Focus ring that holds 3:1 on parchment and on night */
:focus-visible{outline:3px solid var(--oxblood);outline-offset:3px;box-shadow:0 0 0 6px rgba(251,246,234,.9)}
.masthead :focus-visible,.colophon :focus-visible,.hero :focus-visible,.arm-hero :focus-visible,.cat-hero :focus-visible,.halls :focus-visible,.cat-source :focus-visible,.exhibit-plate :focus-visible,.ab-plain :focus-visible,.ab-confession :focus-visible,.gal-verse :focus-visible,.gal-frame :focus-visible{outline-color:var(--gold-soft);box-shadow:none}
.skip:focus{outline:3px solid var(--night);outline-offset:2px}

/* Armoury witness (Chrysostom, migration 034) — the history of reading, set a step below Gill */
.witness{margin:0 0 2rem}
.witness-lede{margin:-.35rem 0 .8rem;font-size:.95rem;line-height:1.6;color:var(--ink-soft);font-style:italic}
.witness blockquote{margin:0;padding:1.2rem 1.5rem 1.05rem 1.6rem;background:#fbf8f1;border:1px solid rgba(28,26,23,.1);border-left:4px solid var(--gold-deep,#8a6a1f);position:relative}
.witness blockquote p{margin:0 0 .85rem;font-size:clamp(.98rem,.94rem + .25vw,1.1rem);line-height:1.75;color:var(--ink,#1c1a17)}
.witness blockquote p:last-child{margin-bottom:0}
.witness-aside{margin:.9rem 0 0;padding:.85rem 1rem;background:rgba(110,32,32,.045);border-radius:2px;font-size:.93rem;line-height:1.65;color:var(--ink,#1c1a17)}
.witness-aside span{display:block;margin-bottom:.25rem;font-family:var(--sans);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--oxblood)}
@media (max-width:640px){.witness blockquote{padding:1.05rem 1rem .95rem 1.15rem}}
@media (max-width:380px){.witness blockquote{padding:.95rem .85rem .85rem 1rem}.witness blockquote p{font-size:.96rem;line-height:1.7}.witness-aside{padding:.75rem .8rem;font-size:.9rem}}

/* Catalogue: John Gill's introduction, sprint 2026-09-28-catalogue-gill-introductions */
.book-note+.book-note{border-top-style:dotted}
.book-note-gill blockquote{border-left-color:rgba(110,32,32,.4)}

/* Timeline periods: chronological band headers + period index (sprint 2026-09-28-timeline-periods-nav) */
.tl-periods{margin-top:1.6rem}
.tl-era{scroll-margin-top:1rem}
.tl-era-span{display:block;margin-top:.3rem;font-size:.62rem;font-weight:500;letter-spacing:.16em;color:var(--vellum)}
.tl-kind{flex-wrap:wrap;row-gap:.2rem}
.tl-strand{color:var(--oxblood);letter-spacing:.12em}
.tl-strand span{color:var(--ink-soft);margin-right:.1rem}
@media (max-width:380px){.tl-era-span{font-size:.58rem;letter-spacing:.1em}}

/* ── Typographic identity + masthead (sprint 2026-09-28-typography-and-masthead) ─────────────
   Self-hosted, SIL Open Font License 1.1 (licences in /static/fonts/OFL-*.txt), no third-party requests.
   EB Garamond = reading text (after Claude Garamond's 16th-c. types); Cormorant Garamond = display. */
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/eb-garamond-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/eb-garamond-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"EB Garamond";font-style:italic;font-weight:400;font-display:swap;src:url(/static/fonts/eb-garamond-latin-ext-400-italic.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"EB Garamond";font-style:italic;font-weight:400;font-display:swap;src:url(/static/fonts/eb-garamond-latin-400-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/eb-garamond-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/eb-garamond-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/cormorant-garamond-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:500;font-display:swap;src:url(/static/fonts/cormorant-garamond-latin-ext-500-italic.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:500;font-display:swap;src:url(/static/fonts/cormorant-garamond-latin-500-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* 🎨 35 One family: labels, eyebrows, nav, citations and fine print are set in EB Garamond
   (same cached woff2 files, aliased with size-adjust so Garamond capitals match the old optical size).
   --sans is kept as an alias of --label so no selector changes. */
@font-face{font-family:"BM Label";font-style:normal;font-weight:400;font-display:swap;size-adjust:110%;src:url(/static/fonts/eb-garamond-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"BM Label";font-style:normal;font-weight:400;font-display:swap;size-adjust:110%;src:url(/static/fonts/eb-garamond-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"BM Label";font-style:normal;font-weight:600;font-display:swap;size-adjust:110%;src:url(/static/fonts/eb-garamond-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"BM Label";font-style:normal;font-weight:600;font-display:swap;size-adjust:110%;src:url(/static/fonts/eb-garamond-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"BM Label";font-style:italic;font-weight:400;font-display:swap;size-adjust:110%;src:url(/static/fonts/eb-garamond-latin-ext-400-italic.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"BM Label";font-style:italic;font-weight:400;font-display:swap;size-adjust:110%;src:url(/static/fonts/eb-garamond-latin-400-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{
  --serif:"EB Garamond","Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
  --display:"Cormorant Garamond","EB Garamond","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --label:"BM Label","EB Garamond","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans:var(--label);
}
body{font-family:var(--serif);font-kerning:normal;font-variant-ligatures:common-ligatures;font-variant-numeric:oldstyle-nums proportional-nums}
h1,h2,h3{text-wrap:balance}
p,blockquote p,figcaption,dd{text-wrap:pretty}
/* Display face: titles, great numerals and the drop capital */
.hero h1,.cat-hero h1,.arm-hero h1,.plain h1,.section-head h2,.exhibit-plate h2,.arm-close h2,.ab-name h2,.ab-word h2,
.src-head h2,.gal-room-head h2,.gal-label h3,.tl-date,.exhibit-num,.ab-num,.cat-stats dd{font-family:var(--display);font-weight:500}
.hero h1{letter-spacing:-.005em;line-height:1}
.cat-hero h1,.arm-hero h1{line-height:1.02}
.cat-stats dd{font-variant-numeric:lining-nums tabular-nums}
.tl-date{letter-spacing:.01em}
/* The old drop cap caught the verse number "10" (::first-letter counts digits), not the F of "Finally".
   Neutralised until the markup gives the first word its own element. */
.kjv::first-letter{float:none;font-size:inherit;line-height:inherit;padding:0;color:inherit;font-family:inherit;font-weight:inherit}
/* Section ornament: a gold hairline with a lozenge (decorative, CSS only) */
.section-head h2::after,.gal-room-head h2::after{content:"";display:block;width:7rem;height:10px;margin:1.15rem auto 0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='112' height='10' viewBox='0 0 112 10'%3E%3Cpath d='M0 5h46M66 5h46' stroke='%23b8924a' stroke-width='1'/%3E%3Cpath d='M56 1l4 4-4 4-4-4z' fill='%23b8924a'/%3E%3C/svg%3E") center/contain no-repeat;opacity:.9}

/* Masthead: the brand never breaks; the tagline only where there is room; nav on one line */
.brand,.brand span{white-space:nowrap}
.brand{flex:none}
.masthead-note{white-space:nowrap}
.masthead-nav{flex-wrap:nowrap}
.masthead-nav a{white-space:nowrap}
@media (max-width:1699px){.masthead-note{display:none}} /* POLISH-C9: was 1440 — the note crowded the hall bar out (folded) at 1441–1550 */
@media (min-width:1025px) and (max-width:1249px){.masthead-nav{letter-spacing:.14em;column-gap:1.05rem}} /* POLISH-C9: room for "Beliefs" + "Reading Room" on the one-row bar */
@media (max-width:1024px){.masthead{flex-wrap:wrap;justify-content:center;row-gap:.45rem}.masthead-nav{justify-content:center;gap:.2rem 1.25rem}}
@media (max-width:640px){.masthead-nav{display:grid;grid-template-columns:repeat(3,auto);justify-content:center;justify-items:center;gap:.05rem 1.5rem}}
@media (max-width:380px){.masthead-nav{gap:0 1rem}}

/* ── Wayfinding chips (sprint 2026-09-28-wayfinding-chips-and-drop-cap) ──────────────────────
   One component for every hall's jump-nav: Armoury + Gallery (.arm-index), Timeline (.tl-periods),
   Reading Room (.src-index), Catalogue (.cat-jump). 44px touch targets; hover, pressed and focus states. */
.arm-index ol,.src-index ol,.cat-jump{list-style:none;margin:0 auto;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;max-width:72rem}
.arm-index a,.src-index a,.cat-jump a{display:inline-flex;align-items:center;gap:.7rem;min-height:44px;padding:.5rem 1.1rem;
  color:var(--vellum);background:rgba(235,226,207,.035);border:1px solid rgba(184,146,74,.5);border-radius:2px;
  box-shadow:inset 0 0 0 1px rgba(20,27,38,.35);font-family:var(--sans);font-size:.74rem;font-weight:500;line-height:1.25;
  letter-spacing:.14em;text-transform:uppercase;text-decoration:none;text-align:left;
  transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}
.arm-index a span,.src-index a span{display:inline-flex;flex:none;white-space:nowrap;align-items:center;align-self:stretch;padding-right:.7rem;margin:-.1rem 0;
  border-right:1px solid rgba(184,146,74,.4);color:var(--gold-soft);font-weight:700;letter-spacing:.06em;font-variant-numeric:lining-nums tabular-nums;
  transition:color .2s ease,border-color .2s ease}
.arm-index a:hover,.src-index a:hover,.cat-jump a:hover{background:var(--gold);border-color:var(--gold);color:var(--night)}
.arm-index a:hover span,.src-index a:hover span{color:var(--night);border-right-color:rgba(20,27,38,.35)}
.arm-index a:active,.src-index a:active,.cat-jump a:active{transform:translateY(1px);background:var(--gold-soft);border-color:var(--gold-soft)}
.arm-index a:focus-visible,.src-index a:focus-visible,.cat-jump a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:3px;border-color:var(--gold-soft)}
@media (prefers-reduced-motion:reduce){.arm-index a,.src-index a,.cat-jump a,.arm-index a span,.src-index a span{transition:none}.arm-index a:active,.src-index a:active,.cat-jump a:active{transform:none}}
@media (max-width:640px){.arm-index a,.src-index a,.cat-jump a{padding:.45rem .85rem;font-size:.7rem;gap:.55rem}.arm-index a span,.src-index a span{padding-right:.55rem}}
@media (max-width:480px){.arm-index ol,.src-index ol,.cat-jump{gap:.45rem}.arm-index a,.src-index a,.cat-jump a{letter-spacing:.09em}
  .arm-index ol,.src-index ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.arm-index li,.src-index li{display:flex}
  .arm-index a,.src-index a{width:100%}.arm-index li:last-child:nth-child(odd),.src-index li:last-child:nth-child(odd){grid-column:1/-1;justify-content:center}
  .arm-index li:last-child:nth-child(odd) a,.src-index li:last-child:nth-child(odd) a{width:auto}}
@media (max-width:380px){.arm-index a,.src-index a,.cat-jump a{font-size:.66rem;padding:.4rem .7rem;gap:.45rem}.arm-index a span,.src-index a span{padding-right:.45rem}}

/* Scripture drop capital: the first letter of verse 10 gets its own element (home.ejs), so the verse
   number no longer steals ::first-letter. The numeral sits beside the initial, as in printed Bibles. */
.kjv .dropcap{float:left;font-family:var(--display);font-weight:500;font-size:4.35em;line-height:.8;margin:.03em .07em -.05em 0;color:var(--oxblood);font-variant-numeric:normal}
.kjv .verse-first sup{float:left;margin:.35em .18em 0 0;vertical-align:baseline;line-height:1}
@media (max-width:480px){.kjv .dropcap{font-size:3.5em}}
/* The plate viewer (sprint 2026-09-28-plate-viewer). Timeline + Gallery plates open, larger, in a native
   <dialog> on the Gallery's night ground, with credit and licence kept beside the image. */
.plate-open{position:relative;display:block;max-width:100%;line-height:0;cursor:zoom-in;text-decoration:none}
.plate-open::after{content:"Enlarge";position:absolute;right:.5rem;bottom:.5rem;font-family:var(--sans);font-size:.62rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;line-height:1;padding:.45rem .6rem .42rem;background:rgba(20,27,38,.82);color:var(--gold-soft);border:1px solid rgba(184,146,74,.6);opacity:0;transform:translateY(3px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}
.plate-open:hover::after,.plate-open:focus-visible::after{opacity:1;transform:none}
.plate-open img{transition:box-shadow .25s ease}
.plate-open:hover img{box-shadow:0 16px 34px -14px rgba(20,27,38,.75)}
@media (hover:none){.plate-open::after{opacity:.92;transform:none}}
html.plate-viewing{overflow:hidden}
.plate-viewer{border:0;padding:0;margin:0;background:radial-gradient(ellipse at 50% 42%,#1d2735,#0a0e14 70%) fixed;color:var(--vellum);width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;overflow:auto;overscroll-behavior:contain}
.plate-viewer[open]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(3.8rem,6vw,4.6rem) clamp(.9rem,3vw,2.5rem) clamp(1rem,3vw,2rem);animation:plate-in .28s ease-out}
.plate-viewer::backdrop{background:rgba(10,14,20,.9)}
@keyframes plate-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
.plate-viewer-figure{margin:0;display:flex;flex-direction:column;align-items:center;max-width:min(100%,86rem)}
.plate-viewer-frame{border:1px solid rgba(184,146,74,.6);box-shadow:inset 0 0 0 6px var(--night-2),inset 0 0 0 7px rgba(184,146,74,.4),0 40px 80px -40px rgba(0,0,0,.9);background:radial-gradient(ellipse at 50% 40%,#2a3547,var(--night) 75%);padding:clamp(.7rem,1.8vw,1.4rem);line-height:0;max-width:100%}
.plate-viewer-frame img{display:block;max-width:100%;width:auto;height:auto;max-height:calc(100vh - 12.5rem);max-height:calc(100dvh - 12.5rem);object-fit:contain;background:#20293a;cursor:zoom-out}
.plate-viewer figcaption{margin:1rem auto 0;max-width:52rem;text-align:center;font-family:var(--sans);font-size:.78rem;line-height:1.55;font-style:italic;color:var(--vellum)}
.plate-viewer figcaption a{color:var(--gold-soft);font-style:normal;font-weight:600;letter-spacing:.04em}
.plate-viewer-hint{margin:.6rem 0 0;font-family:var(--sans);font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft);opacity:.75;text-align:center}
.plate-viewer-close{position:fixed;top:clamp(.6rem,1.6vw,1.2rem);right:clamp(.6rem,1.6vw,1.2rem);min-height:44px;min-width:44px;display:inline-flex;align-items:center;gap:.45rem;padding:.5rem 1rem;font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft);background:rgba(20,27,38,.85);border:1px solid rgba(184,146,74,.65);cursor:pointer;transition:background .2s ease,color .2s ease}
.plate-viewer-close span{font-size:1.35rem;line-height:1;font-weight:400;letter-spacing:0}
.plate-viewer-close:hover{background:var(--gold);color:var(--night)}
.plate-viewer :focus-visible{outline:3px solid var(--gold-soft);outline-offset:3px;box-shadow:none}
@media (max-width:640px){.plate-viewer figcaption{font-size:.72rem}.plate-viewer-hint{display:none}.plate-viewer-frame img{max-height:calc(100dvh - 10rem)}}
@media (max-width:380px){.plate-viewer-frame{padding:.45rem;box-shadow:inset 0 0 0 4px var(--night-2),inset 0 0 0 5px rgba(184,146,74,.4)}.plate-viewer figcaption{font-size:.68rem}}
@media (prefers-reduced-motion:reduce){.plate-viewer[open]{animation:none}.plate-open::after{transform:none}}

/* 🎨 4 (sprint 2026-09-28-viewer-sequence-and-colophon): walk the plates in sequence; a colophon worthy of the halls. */
.plate-viewer-nav{display:flex;align-items:center;justify-content:center;gap:clamp(.6rem,2vw,1.4rem);margin-top:.9rem}
.plate-viewer-nav[hidden]{display:none}
.plate-viewer-step{min-height:44px;min-width:44px;display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1.1rem;font-family:var(--sans);font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft);background:rgba(20,27,38,.85);border:1px solid rgba(184,146,74,.65);cursor:pointer;transition:background .2s ease,color .2s ease}
.plate-viewer-step span{font-size:1.4rem;line-height:1;font-weight:400;letter-spacing:0}
.plate-viewer-step:hover{background:var(--gold);color:var(--night)}
.plate-viewer-count{margin:0;min-width:9.5em;text-align:center;font-family:var(--display);font-size:1.02rem;font-style:italic;font-variant-numeric:oldstyle-nums;color:var(--vellum);letter-spacing:.02em}
@media (max-width:640px){.plate-viewer-step{padding:.5rem .8rem;font-size:.64rem;letter-spacing:.12em}.plate-viewer-count{min-width:0;font-size:.95rem}}
@media (max-width:380px){.plate-viewer-step{padding:.5rem .7rem;font-size:0;gap:0}.plate-viewer-step span{font-size:1.5rem}.plate-viewer-count{font-size:.88rem}}
@media (prefers-reduced-motion:reduce){.plate-viewer-step{transition:none}}

.colophon{position:relative;padding:clamp(3.2rem,6vw,4.8rem) var(--gutter) clamp(2.4rem,4vw,3.2rem);background:radial-gradient(ellipse at 50% 0,#1a2230,#0e131b 62%);border-top:1px solid rgba(184,146,74,.35)}
.colophon::before{content:"";position:absolute;top:-5px;left:50%;width:9px;height:9px;background:var(--gold);transform:translateX(-50%) rotate(45deg);box-shadow:0 0 0 4px #0e131b}
.colophon-mark{display:inline-flex;flex-direction:column;align-items:center;gap:.7rem;margin:0 auto 1.3rem;color:var(--vellum);text-decoration:none;font-family:var(--display);font-size:1.15rem;letter-spacing:.24em;text-transform:uppercase}
.colophon-mark:hover{color:#fff}
.colophon-mark img{display:block;opacity:.95}
.colophon .colophon-motto{font-family:var(--display);font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.5;max-width:40rem;margin:0 auto 1.8rem}
.colophon-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:.2rem 1.6rem;margin:0 auto 1.8rem;font-family:var(--sans);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase}
.colophon .colophon-nav a{display:inline-flex;align-items:center;min-height:44px;color:var(--vellum);text-decoration:none;border-bottom:1px solid transparent}
.colophon .colophon-nav a:hover{color:#fff;border-bottom-color:var(--gold)}
.colophon .colophon-nav a[aria-current="page"]{color:var(--gold-soft);border-bottom-color:var(--gold)}
.colophon-rule{width:min(12rem,40%);height:1px;margin:0 auto 1.4rem;background:linear-gradient(90deg,transparent,rgba(184,146,74,.7),transparent)}
.colophon .colophon-small{line-height:1.65;opacity:.8}
@media (max-width:640px){.colophon-nav{display:grid;grid-template-columns:repeat(3,auto);justify-content:center;gap:0 1.2rem}}
@media (max-width:380px){.colophon-nav{grid-template-columns:repeat(2,auto);letter-spacing:.14em}.colophon-mark{font-size:1rem;letter-spacing:.18em}}

/* ── Timeline running head (sprint 2026-09-28-timeline-running-head) ─────────────
   A quiet running head, as in a printed book: the period being read + a way back to the period index. */
#periods{scroll-margin-top:1.5rem}
.tl-runner{position:fixed;left:50%;bottom:max(1rem,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:5;
  display:flex;align-items:center;gap:1rem;max-width:calc(100vw - 2rem);padding:.3rem .35rem .3rem 1.2rem;
  background:var(--night);color:var(--vellum);border:1px solid rgba(184,146,74,.6);
  box-shadow:0 18px 36px -18px rgba(20,27,38,.75),inset 0 0 0 3px var(--night),inset 0 0 0 4px rgba(184,146,74,.22);
  font-family:var(--sans);animation:tl-runner-in .35s ease-out}
.tl-runner[hidden]{display:none}
.tl-runner-now{margin:0;min-width:0;display:flex;align-items:baseline;gap:.6rem;white-space:nowrap;overflow:hidden}
.tl-runner-label{flex:none;font-size:.6rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.tl-runner-title{overflow:hidden;text-overflow:ellipsis;font-family:"Cormorant Garamond",var(--serif);font-size:1.12rem;font-weight:500;letter-spacing:.01em;color:var(--gold-soft)}
.tl-runner-span{flex:none;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--vellum);opacity:.9}
.tl-runner a{flex:none;display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 1rem;border:1px solid rgba(184,146,74,.55);
  color:var(--vellum);text-decoration:none;font-size:.66rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;transition:background .2s,color .2s,border-color .2s}
.tl-runner a:hover{background:var(--gold);border-color:var(--gold);color:var(--night)}
.tl-runner a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:3px;box-shadow:none}
@keyframes tl-runner-in{from{opacity:0;transform:translate(-50%,.5rem)}to{opacity:1;transform:translate(-50%,0)}}
@media (prefers-reduced-motion:reduce){.tl-runner{animation:none}.tl-runner a{transition:none}}
@media (max-width:900px){.tl-runner-span{display:none}}
@media (max-width:640px){.tl-runner{left:0;right:0;bottom:0;transform:none;max-width:none;padding:.25rem .35rem .25rem var(--gutter);padding-bottom:max(.25rem,env(safe-area-inset-bottom));justify-content:space-between;border-width:1px 0 0;box-shadow:0 -12px 28px -18px rgba(20,27,38,.7)}
  @keyframes tl-runner-in{from{opacity:0}to{opacity:1}}
  .tl-runner-title{font-size:1.02rem}.tl-runner a{padding:0 .8rem}}
@media (max-width:380px){.tl-runner-label{display:none}.tl-runner a{letter-spacing:.12em;font-size:.62rem}}

/* 🎨 6 — The seven emblems (views/partials/armour-emblem.ejs): original engraved hairline set, decorative only */
.emblem{display:block;flex:none;overflow:visible}
.emblem .em-fill circle{fill:currentColor;stroke:none}
.emblem .em-flame{fill:currentColor;fill-opacity:.18}
.piece .emblem{width:clamp(3.4rem,2.8rem + 1.6vw,4.4rem);height:auto;aspect-ratio:1;margin:0 auto .9rem;color:var(--gold-deep);transition:color .25s ease,transform .35s ease}
.piece-link:hover .emblem,.piece-link:focus-within .emblem{color:var(--oxblood);transform:translateY(-2px)}
.exhibit-plate .emblem{position:relative;width:clamp(4.2rem,3.4rem + 2.2vw,5.6rem);height:auto;aspect-ratio:1;margin:0 auto 1.1rem;color:var(--gold-soft);stroke-width:1.35}
.exhibit .exhibit-plate{background-image:radial-gradient(circle at 50% clamp(3.6rem,3rem + 2vw,4.8rem),rgba(216,192,138,.14),transparent clamp(4.5rem,4rem + 2vw,6rem))}
@media (max-width:640px){.exhibit-plate .emblem{width:4rem;margin-bottom:.9rem}.piece .emblem{width:3.6rem}}
@media (max-width:380px){.exhibit-plate .emblem{width:3.5rem}.piece .emblem{width:3.2rem;margin-bottom:.7rem}}
@media (min-width:1601px){.piece .emblem{width:4.2rem}}
@media (prefers-reduced-motion:reduce){.piece .emblem{transition:none}.piece-link:hover .emblem,.piece-link:focus-within .emblem{transform:none}}
/* 🎨 6 — Armoury reading rhythm: the global section padding (4–8rem) was leaking into the nested Gill/Chrysostom sections */
.exhibit-body > section{padding:0}
.exhibit-body > .exposition,.exhibit-body > .witness{margin:0 0 clamp(2rem,1.6rem + 1.4vw,2.8rem)}

/* 🎨 7 — The Armoury panoply (sprint 2026-09-29-armoury-panoply): the 🎨 6 emblems in the index chips,
   and a closing band of the seven graces, each emblem over its word, linking back to its exhibit. */
.arm-index a .emblem{width:1.45rem;height:auto;aspect-ratio:1;margin:-.2rem 0;color:var(--gold-soft);stroke-width:1.9;transition:color .2s ease}
.arm-index a:hover .emblem{color:var(--night)}
.panoply{list-style:none;--pw:min(58rem,calc(100vw - 2.5rem));width:var(--pw);margin:2.2rem 0 0 calc(50% - var(--pw) / 2);padding:1.7rem 0 0;display:flex;flex-wrap:wrap;justify-content:center;row-gap:.5rem;border-top:1px solid rgba(184,146,74,.4);position:relative;box-sizing:border-box}
.panoply::before{content:"";position:absolute;top:-4.5px;left:50%;width:8px;height:8px;background:var(--gold);transform:translateX(-50%) rotate(45deg);box-shadow:0 0 0 4px var(--vellum)}
.panoply li{flex:0 0 calc(100% / 7);display:flex;justify-content:center}
.panoply a{display:flex;flex-direction:column;align-items:center;gap:.3rem;width:100%;min-height:44px;padding:.85rem .35rem .8rem;color:var(--ink);text-decoration:none;border:1px solid transparent;border-radius:2px;transition:background-color .25s ease,border-color .25s ease}
.panoply .emblem{width:clamp(2.7rem,2.3rem + 1vw,3.3rem);height:auto;aspect-ratio:1;color:var(--gold-deep);transition:color .25s ease,transform .35s ease}
.panoply-num{font-family:var(--sans);font-size:.62rem;font-weight:700;letter-spacing:.16em;color:var(--gold-deep);font-variant-numeric:lining-nums}
.panoply li,.panoply-word{overflow-wrap:normal;hyphens:none}
.panoply-word{font-family:var(--display,var(--serif));font-style:italic;font-size:1.08rem;line-height:1.2;color:var(--ink);text-wrap:balance}
.panoply a:hover{background:rgba(255,253,247,.65);border-color:rgba(184,146,74,.55)}
.panoply a:hover .emblem,.panoply a:focus-visible .emblem{color:var(--oxblood);transform:translateY(-2px)}
@media (max-width:900px){.panoply li{flex-basis:25%}}
@media (max-width:480px){.panoply li{flex-basis:33.333%}.panoply-word{font-size:1rem}.arm-index a .emblem{width:1.25rem}}
@media (max-width:380px){.arm-index a .emblem{display:none}.panoply a{padding:.7rem .2rem}}
@media (prefers-reduced-motion:reduce){.arm-index a .emblem,.panoply a,.panoply .emblem{transition:none}.panoply a:hover .emblem,.panoply a:focus-visible .emblem{transform:none}}
/* 🎨 8 — The headroom masthead (sprint 2026-09-29-headroom-masthead). /static/js/masthead.js pins the same masthead
   just above the viewport once it has scrolled away, and slides it back on scroll-up. Night ground, gold hairline. */
html.mast-pinned .masthead{position:fixed;inset:0 0 auto 0;z-index:6;padding-top:.55rem;padding-bottom:.55rem;
  background:rgba(20,27,38,.97);border-bottom:1px solid rgba(184,146,74,.5);box-shadow:0 14px 30px -22px rgba(10,14,20,.85);
  transform:translateY(-110%);visibility:hidden}
html.mast-pinned.mast-shown .masthead{transform:none;visibility:visible}
html.mast-anim .masthead{transition:transform .32s cubic-bezier(.2,.7,.2,1),visibility 0s linear .32s}
html.mast-anim.mast-shown .masthead{transition:transform .32s cubic-bezier(.2,.7,.2,1),visibility 0s}
html.mast-pinned .masthead::after{content:"";position:absolute;left:50%;bottom:-4px;width:7px;height:7px;background:var(--night);
  border:1px solid rgba(184,146,74,.7);transform:translateX(-50%) rotate(45deg)}
html.mast-pinned .masthead:focus-within{transform:none;visibility:visible}
/* The Armoury's sticky plates step down beneath the bar while it is shown. */
.exhibit-plate{transition:top .32s cubic-bezier(.2,.7,.2,1)}
html.mast-shown .exhibit-plate{top:calc(var(--mast-h,4rem) + 1.25rem)}
/* Phones: one compact band — the mark alone (its name is kept for screen readers) beside the 3×2 hall index. */
@media (max-width:640px){
  html.mast-pinned .masthead{flex-wrap:nowrap;justify-content:space-between;gap:.75rem;padding-top:.35rem;padding-bottom:.35rem}
  html.mast-pinned .brand span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  html.mast-pinned .brand{min-width:44px;min-height:44px;justify-content:center}
  html.mast-pinned .masthead-nav{gap:0 1.1rem}
  html.mast-pinned .masthead-nav a{padding:.3rem 0}
}
@media (max-width:380px){html.mast-pinned .masthead-nav{gap:0 .8rem}}
@media (prefers-reduced-motion:reduce){html.mast-anim .masthead,html.mast-anim.mast-shown .masthead,.exhibit-plate{transition:none}}
@media print{html.mast-pinned .masthead{position:absolute;transform:none;visibility:visible;background:none;box-shadow:none;border:0}}

/* 🎨 9 — The viewer's fine image and magnifier (sprint 2026-09-29-viewer-fine-image-and-magnify).
   A larger standard Commons rendition swaps in once loaded; Magnify shows the plate at full size to pan and read. */
.plate-viewer-frame img{cursor:zoom-in;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.plate-viewer-magnify{position:fixed;top:clamp(.6rem,1.6vw,1.2rem);left:clamp(.6rem,1.6vw,1.2rem);min-height:44px;min-width:44px;display:inline-flex;align-items:center;gap:.45rem;padding:.5rem 1rem;font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft);background:rgba(20,27,38,.85);border:1px solid rgba(184,146,74,.65);cursor:pointer;transition:background .2s ease,color .2s ease}
.plate-viewer-magnify span{display:inline-block;width:1em;font-size:1.35rem;line-height:1;font-weight:400;letter-spacing:0;text-align:center}
.plate-viewer-magnify:hover,.plate-viewer-magnify[aria-pressed="true"]{background:var(--gold);color:var(--night)}
.plate-viewer-frame{position:relative}
.plate-viewer.is-refining .plate-viewer-frame::after{content:"";position:absolute;left:18%;right:18%;bottom:3px;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft),transparent);opacity:.8;animation:plate-refine 1.4s ease-in-out infinite}
@keyframes plate-refine{0%,100%{opacity:.2}50%{opacity:.9}}
.plate-viewer.is-magnified[open]{justify-content:flex-start}
.plate-viewer.is-magnified .plate-viewer-figure{width:100%}
.plate-viewer.is-magnified .plate-viewer-frame{width:100%;height:calc(100vh - 12.5rem);height:calc(100dvh - 12.5rem);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0;scrollbar-color:rgba(184,146,74,.6) var(--night)}
.plate-viewer.is-magnified .plate-viewer-frame img{max-width:none;max-height:none;height:auto;cursor:grab}
.plate-viewer.is-panning .plate-viewer-frame img{cursor:grabbing}
@media (max-width:640px){.plate-viewer.is-magnified .plate-viewer-frame{height:calc(100vh - 15rem);height:calc(100dvh - 15rem)}.plate-viewer-magnify{padding:.5rem .8rem;font-size:.64rem;letter-spacing:.12em}}
@media (max-width:380px){.plate-viewer-magnify{font-size:0;gap:0;padding:.5rem .7rem}.plate-viewer-magnify span{font-size:1.5rem}}
@media (prefers-reduced-motion:reduce){.plate-viewer-magnify{transition:none}.plate-viewer.is-refining .plate-viewer-frame::after{animation:none}}

/* 🎨 10 — The hall frontispieces (2026-09-29). Each inner hall's door is marked by its own engraved headpiece
   (views/partials/hall-emblem.ejs), the intro is set in the house serif, and a tailpiece leads down into the parchment. */
.hall-headpiece{display:flex;align-items:center;justify-content:center;gap:clamp(.8rem,.6rem + .8vw,1.3rem);margin:0 auto clamp(1rem,.8rem + .8vw,1.5rem);color:var(--gold)}
.hall-emblem{display:block;flex:none;width:clamp(3rem,2.6rem + 1.3vw,4rem);height:auto;aspect-ratio:1;overflow:visible;filter:drop-shadow(0 0 14px rgba(184,146,74,.28))}
.hall-emblem .em-fill{fill:currentColor;stroke:none}
.hall-emblem .em-fill path{fill-opacity:.55}
.hp-rule{position:relative;flex:0 1 clamp(3rem,2rem + 5vw,7.5rem);height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,.85))}
.hp-rule:last-child{background:linear-gradient(270deg,transparent,rgba(184,146,74,.85))}
.hp-rule::after{content:"";position:absolute;top:-3px;right:-4px;width:6px;height:6px;background:var(--gold);transform:rotate(45deg)}
.hp-rule:last-child::after{right:auto;left:-4px}
.arm-intro{font-family:var(--serif);font-size:clamp(1rem,.96rem + .28vw,1.16rem);line-height:1.7;color:var(--vellum);opacity:.88;max-width:42rem}
.arm-hero,.cat-hero{position:relative}
.arm-hero::after,.cat-hero::after{content:"";position:absolute;left:50%;bottom:0;width:1px;height:clamp(2.4rem,1.8rem + 1.6vw,3.4rem);transform:translateX(-50%);pointer-events:none;background:linear-gradient(transparent,rgba(184,146,74,.9))}
.arm-hero::before,.cat-hero::before{content:"";position:absolute;left:50%;bottom:-4px;width:8px;height:8px;margin-left:-4px;background:var(--gold);transform:rotate(45deg);z-index:1;pointer-events:none}
@media (max-width:480px){.hall-headpiece{gap:.7rem}.hp-rule{flex-basis:2.6rem}}
@media (max-width:380px){.hall-emblem{width:2.7rem}.hp-rule{flex-basis:1.8rem}}

/* 🎨 11 — The bound volumes (sprint 2026-09-29-catalogue-bound-volumes). Each of the 66 books is shown as a volume:
   a spine with raised gold bands, a tooled inset frame, the title in the display face and a shelf-mark numeral. */
.book{scroll-margin-top:5.5rem;transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s ease,border-color .3s ease;
  background:linear-gradient(180deg,rgba(255,253,247,.7),rgba(255,253,247,0) 40%),var(--parchment)}
.book::before{width:7px;background:
  linear-gradient(rgba(216,192,138,.85),rgba(216,192,138,.85)) 0 14px/100% 1px no-repeat,
  linear-gradient(rgba(216,192,138,.85),rgba(216,192,138,.85)) 0 18px/100% 1px no-repeat,
  linear-gradient(rgba(216,192,138,.85),rgba(216,192,138,.85)) 0 calc(100% - 14px)/100% 1px no-repeat,
  linear-gradient(rgba(216,192,138,.85),rgba(216,192,138,.85)) 0 calc(100% - 18px)/100% 1px no-repeat,
  linear-gradient(90deg,rgba(0,0,0,.18),rgba(255,255,255,.08) 55%,rgba(0,0,0,.12)),
  linear-gradient(var(--oxblood),#4d1616)}
.testament-nt .book::before{background:
  linear-gradient(rgba(110,32,32,.55),rgba(110,32,32,.55)) 0 14px/100% 1px no-repeat,
  linear-gradient(rgba(110,32,32,.55),rgba(110,32,32,.55)) 0 18px/100% 1px no-repeat,
  linear-gradient(rgba(110,32,32,.55),rgba(110,32,32,.55)) 0 calc(100% - 14px)/100% 1px no-repeat,
  linear-gradient(rgba(110,32,32,.55),rgba(110,32,32,.55)) 0 calc(100% - 18px)/100% 1px no-repeat,
  linear-gradient(90deg,rgba(0,0,0,.14),rgba(255,255,255,.12) 55%,rgba(0,0,0,.1)),
  linear-gradient(var(--gold),#8c6c2f)}
.book::after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:13px;border:1px solid rgba(184,146,74,.32);pointer-events:none}
.book-shelf-incipit .book{padding:1.3rem 1.35rem 1.1rem 1.75rem}
.book-order{display:flex;align-items:center;gap:.55rem;font-family:var(--display);font-style:italic;font-weight:500;font-size:1.02rem;letter-spacing:.02em;line-height:1;color:var(--gold-deep);font-variant-numeric:lining-nums}
.book-order::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(184,146,74,.6),rgba(184,146,74,0))}
.book-name,.book-shelf-incipit .book-name{font-family:var(--display);font-weight:500;font-size:clamp(1.4rem,1.25rem + .45vw,1.7rem);line-height:1.08;letter-spacing:.005em;color:var(--ink);margin:.45rem 0 .7rem;text-wrap:balance}
.book-ch{font-variant-numeric:lining-nums tabular-nums}
.book:hover,.book:focus-within{transform:translateY(-3px);border-color:rgba(184,146,74,.5);box-shadow:0 22px 36px -24px rgba(20,27,38,.6)}
.book:target{outline:0;border-color:var(--gold);box-shadow:0 0 0 2px var(--gold),0 22px 36px -24px rgba(20,27,38,.6)}
@media (max-width:480px){.book-shelf-incipit .book{padding:1.1rem 1.1rem 1rem 1.55rem}.book-name,.book-shelf-incipit .book-name{font-size:1.45rem}}
@media (max-width:380px){.book::after{top:5px;right:5px;bottom:5px;left:12px}.book-shelf-incipit .book{padding:1rem .95rem .95rem 1.4rem}.book-name,.book-shelf-incipit .book-name{font-size:1.35rem}}
@media (prefers-reduced-motion:reduce){.book{transition:none}.book:hover,.book:focus-within{transform:none}}
@media print{.book::after{display:none}}
/* 🎨 12 — The museum labels (sprint 2026-09-29-gallery-museum-labels). Each Gallery label is mounted in the language of
   the bound volumes: a tooled inset hairline, a lozenge riding the gold rule, a display shelf-mark and a ruled tombstone. */
.gal-case{scroll-margin-top:5.5rem}
.gal-label{position:relative;background:linear-gradient(180deg,rgba(255,253,247,.9),rgba(255,253,247,0) 10rem),#fbf7ee}
.gal-label::after{content:"";position:absolute;inset:8px;border:1px solid rgba(184,146,74,.3);pointer-events:none}
.gal-label::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px #fbf7ee;pointer-events:none}
.gal-kind{display:flex;align-items:center;gap:.6rem;margin:0 0 .6rem;font-family:var(--display);font-style:italic;font-weight:500;
  font-size:1.1rem;line-height:1.2;letter-spacing:.02em;text-transform:none;color:var(--gold-deep);font-variant-numeric:lining-nums}
.gal-kind::after{content:"";flex:1 1 1.5rem;min-width:1.5rem;height:1px;background:linear-gradient(90deg,rgba(184,146,74,.6),rgba(184,146,74,0))}
.gal-label h3{text-wrap:balance}
.gal-facts{gap:0;margin:0 0 1.3rem;padding:0;border-top:3px double rgba(184,146,74,.5);border-bottom:0;font-variant-numeric:lining-nums}
.gal-facts div{align-items:baseline;padding:.55rem 0;border-bottom:1px solid rgba(184,146,74,.35)}
.gal-case:target .gal-label{outline:0;box-shadow:0 0 0 2px var(--gold),0 20px 40px -32px rgba(20,27,38,.55)}
/* The sticky plates step down beneath the headroom masthead while it is shown (desktop only; ≤900 they are not sticky). */
@media (min-width:901px){.gal-plate{transition:top .32s cubic-bezier(.2,.7,.2,1)}html.mast-shown .gal-plate{top:calc(var(--mast-h,4rem) + 1.25rem)}}
/* ≤900 the Armoury plates are not sticky either: keep the 🎨 8 step-down from nudging them out of flow. */
@media (max-width:900px){html.mast-shown .exhibit-plate{top:auto}}
@media (max-width:640px){.gal-label::after{inset:6px}}
@media (max-width:380px){.gal-label::after{inset:5px}.gal-kind{font-size:1rem}}
@media (prefers-reduced-motion:reduce){.gal-plate{transition:none}}
@media print{.gal-label::after,.gal-label::before{display:none}}
/* 🎨 13 — The dated leaves (sprint 2026-09-29-timeline-dated-leaves). Each Timeline card is mounted like the Gallery
   labels and the bound volumes: a tooled inset hairline, a lozenge riding the category rule, the date as a display
   figure with a fading hairline, the source ruled beneath a double gold rule, and a lozenge node on the spine. */
.tl-card{--leaf:#fbf7ee;background:linear-gradient(180deg,rgba(255,253,247,.9),rgba(255,253,247,0) 10rem),var(--leaf);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
.tl-card::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--cat,var(--gold));
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--leaf);pointer-events:none}
.tl-card::after{top:2.35rem;width:14px;height:14px;border-radius:0;border-width:2.5px;transform:rotate(45deg);
  right:calc(var(--tl-gap) / -2 - 7px);box-shadow:0 0 0 4px var(--parchment)}
.tl-right .tl-card::after{right:auto;left:calc(var(--tl-gap) / -2 - 7px)}
.tl-date{display:flex;align-items:center;gap:.8rem}
.tl-date::after{content:"";flex:1 1 1.5rem;min-width:1.5rem;height:1px;align-self:center;background:linear-gradient(90deg,rgba(184,146,74,.65),rgba(184,146,74,0))}
.tl-source{border-top:3px double rgba(184,146,74,.5);padding-top:.85rem}
.tl-item:target .tl-card{outline:0;box-shadow:0 0 0 2px var(--gold),inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.3),0 20px 40px -32px rgba(20,27,38,.55)}
@media (max-width:900px){.tl-card::after,.tl-right .tl-card::after{right:auto;left:calc(-2.4rem + .55rem - 7px)}}
@media (max-width:640px){.tl-card{box-shadow:inset 0 0 0 6px var(--leaf),inset 0 0 0 7px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}}
@media (max-width:480px){.tl-card::after,.tl-right .tl-card::after{left:calc(-1.9rem + .55rem - 7px)}}
@media (max-width:380px){.tl-card{box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}.tl-date{gap:.6rem}}
@media print{.tl-card::before,.tl-date::after{display:none}.tl-card{box-shadow:none}}
/* 🎨 14 — The Reading Room register (sprint 2026-09-29-reading-room-register). Each bibliography section is a ruled
   register mounted as a leaf, in the language of the volumes, labels and dated leaves: the head closed by a double gold
   rule, the list on a tooled inset hairline with a lozenge riding it, italic display numerals and gold hairline rules. */
.src-sec{padding:0;scroll-margin-top:5.5rem;margin-bottom:clamp(3.5rem,7vw,6rem)}
.src-head{position:relative;border-bottom:3px double rgba(184,146,74,.55);padding-bottom:1.2rem;margin-bottom:0}
.src-head .eyebrow{color:var(--gold-deep)}
.src-list:not(.src-scripture),.src-scripture{--leaf:#fbf7ee;position:relative;margin-top:clamp(1.4rem,2.5vw,2rem);
  padding:clamp(.6rem,1.4vw,1.1rem) clamp(1.2rem,3vw,2.4rem);
  background:linear-gradient(180deg,rgba(255,253,247,.9),rgba(255,253,247,0) 10rem),var(--leaf);
  border:1px solid rgba(110,32,32,.14);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
.src-list:not(.src-scripture)::after,.src-scripture::after{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--leaf);pointer-events:none}
.src-list > li{padding:1.15rem .4rem 1.15rem 3.5rem;border-bottom:1px solid rgba(184,146,74,.32);transition:background-color .25s ease}
.src-list > li:last-child{border-bottom:0}
.src-list > li::before{top:1.05rem;width:2.5rem;font-family:var(--display);font-style:italic;font-weight:500;font-size:1.08rem;
  letter-spacing:.01em;color:var(--gold-deep);font-variant-numeric:lining-nums tabular-nums}
.src-list > li:hover,.src-list > li:focus-within{background:linear-gradient(90deg,rgba(184,146,74,.09),rgba(184,146,74,0) 70%)}
.src-host{display:flex;align-items:center;gap:.6rem}
.src-host::after{content:"";flex:1 1 1.5rem;min-width:1.5rem;height:1px;background:linear-gradient(90deg,rgba(110,32,32,.28),rgba(110,32,32,0))}
.src-title{font-size:clamp(1.04rem,.99rem + .28vw,1.2rem)}
.src-scripture{column-gap:2.4rem}
.src-scripture > li{padding-top:.95rem;padding-bottom:.95rem}
.src-scripture > li::before{top:.9rem}
.src-sec:target .src-list:not(.src-scripture),.src-sec:target .src-scripture{box-shadow:0 0 0 2px var(--gold),inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
.cat-empty .src-list{margin-top:1rem}
@media (max-width:640px){.src-list:not(.src-scripture),.src-scripture{padding:.4rem 1rem;box-shadow:inset 0 0 0 6px var(--leaf),inset 0 0 0 7px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
  .src-list > li{padding-left:2.7rem;padding-right:.2rem}.src-list > li::before{width:1.95rem;font-size:1rem}}
@media (max-width:480px){.src-list:not(.src-scripture),.src-scripture{padding:.3rem .8rem}.src-list > li{padding:1rem .1rem 1rem 2.3rem}.src-list > li::before{width:1.6rem;font-size:.95rem;top:.95rem}}
@media (max-width:380px){.src-list:not(.src-scripture),.src-scripture{padding:.25rem .65rem;box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
  .src-list > li{padding-left:2rem}.src-list > li::before{width:1.35rem;font-size:.9rem}}
@media (prefers-reduced-motion:reduce){.src-list > li{transition:none}}
@media print{.src-list:not(.src-scripture)::after,.src-scripture::after,.src-host::after{display:none}.src-list:not(.src-scripture),.src-scripture{box-shadow:none;background:none}}
/* 🎨 15 — The About hall in the label language (sprint 2026-09-29-about-hall-leaves). Each conviction is mounted as a
   leaf like the volumes, labels, dated leaves and registers: a tooled inset hairline, a lozenge riding the gold rule,
   the Roman numeral as an italic display shelf-mark (no longer a ghost that could sit under the heading), and its
   Scripture beneath a double gold rule. The Scripture slips (About + Armoury), the Confession and the plain statement
   are mounted in the same tooled hairline. No copy changed. */
.ab-card{--leaf:var(--parchment);overflow:visible;border-top-width:3px;
  background:linear-gradient(180deg,rgba(255,253,247,.9),rgba(255,253,247,0) 10rem),var(--leaf);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55);
  transition:transform .3s ease,box-shadow .3s ease}
.ab-card::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--leaf);pointer-events:none}
.ab-card:hover,.ab-card:focus-within{transform:translateY(-3px);box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.45),0 22px 36px -24px rgba(20,27,38,.6)}
.ab-num{position:static;display:flex;align-items:center;gap:.6rem;margin:0 0 .55rem;font-style:italic;font-size:1.12rem;line-height:1.2;
  letter-spacing:.04em;color:var(--gold-deep);font-variant-numeric:lining-nums}
.ab-num::after{content:"";flex:1 1 1.5rem;min-width:1.5rem;height:1px;background:linear-gradient(90deg,rgba(184,146,74,.6),rgba(184,146,74,0))}
.ab-card h3{text-wrap:balance}
.ab-text{border-top:3px double rgba(184,146,74,.5);padding-top:1.05rem}
.xrefs li{--leaf:#fbf7ee;position:relative;border-left:1px solid rgba(110,32,32,.14);border-top:3px solid var(--gold);
  background:linear-gradient(180deg,rgba(255,253,247,.9),rgba(255,253,247,0) 8rem),var(--leaf);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.3),0 14px 30px -26px rgba(20,27,38,.5)}
.xrefs li::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--leaf);pointer-events:none}
.xrefs .xref-cite{display:flex;align-items:center;gap:.6rem}
.xrefs .xref-cite::after{content:"";flex:1 1 1.5rem;min-width:1.5rem;height:1px;background:linear-gradient(90deg,rgba(110,32,32,.28),rgba(110,32,32,0))}
.ab-confession{position:relative;border-color:rgba(184,146,74,.55);box-shadow:inset 0 0 0 7px var(--night),inset 0 0 0 8px rgba(184,146,74,.35),0 22px 44px -30px rgba(20,27,38,.7)}
.ab-confession::before{content:"";position:absolute;left:50%;top:-.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--parchment);pointer-events:none}
.ab-confession footer{border-top:3px double rgba(184,146,74,.45);padding-top:.85rem}
.ab-plain{box-shadow:inset 0 0 0 6px var(--night),inset 0 0 0 7px rgba(184,146,74,.3)}
@media (max-width:640px){.ab-card,.xrefs li{box-shadow:inset 0 0 0 6px var(--leaf),inset 0 0 0 7px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
  .ab-confession{box-shadow:inset 0 0 0 6px var(--night),inset 0 0 0 7px rgba(184,146,74,.35),0 22px 44px -30px rgba(20,27,38,.7)}}
@media (max-width:380px){.ab-card,.xrefs li{box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
  .ab-num{font-size:1rem}.ab-plain{box-shadow:inset 0 0 0 5px var(--night),inset 0 0 0 6px rgba(184,146,74,.3)}}
@media (prefers-reduced-motion:reduce){.ab-card{transition:none}.ab-card:hover,.ab-card:focus-within{transform:none}}
@media print{.ab-card::before,.xrefs li::before,.ab-confession::before,.ab-num::after,.xrefs .xref-cite::after{display:none}.ab-card,.xrefs li,.ab-confession,.ab-plain{box-shadow:none}}

/* 🎨 16 — The Entrance directory (sprint 2026-09-29-entrance-directory). Home now lists all six halls in masthead order,
   each mounted as a night leaf in the same language as the inner halls: the hall's own engraved headpiece, a tooled
   inset gold hairline, a lozenge riding the gold top rule, an italic Roman shelf-mark and a ruled "enter" line.
   The whole leaf stays one link (the existing stretched h3 link). */
.hall-directory{list-style:none;margin:0;padding:0;counter-reset:none}
.hall-directory .hall{--leaf:#18202c;position:relative;display:flex;flex-direction:column;text-align:center;
  padding:clamp(1.7rem,1.3rem + 1.2vw,2.4rem) clamp(1.3rem,1rem + 1vw,2rem) clamp(1.4rem,1.2rem + .8vw,1.9rem);
  border:1px solid rgba(184,146,74,.4);border-top:3px solid var(--gold);
  background:radial-gradient(120% 60% at 50% 0,rgba(184,146,74,.13),rgba(184,146,74,0) 70%),var(--leaf);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.28),0 22px 44px -30px rgba(0,0,0,.85);
  transition:transform .3s ease,box-shadow .3s ease,background-color .3s ease}
.hall-directory .hall::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--night);pointer-events:none}
.hall-directory .hall:hover,.hall-directory .hall:focus-within{transform:translateY(-3px);background-color:#1b2431;
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.5),0 26px 40px -24px rgba(0,0,0,.9)}
.hall-directory .hall-headpiece{margin:0 auto .85rem;color:var(--gold-soft)}
.hall-directory .hall-emblem{width:clamp(2.6rem,2.3rem + .9vw,3.3rem);transition:filter .3s ease}
.hall-directory .hall:hover .hall-emblem,.hall-directory .hall:focus-within .hall-emblem{filter:drop-shadow(0 0 18px rgba(216,192,138,.45))}
.hall-directory .hall-num{display:flex;align-items:center;justify-content:center;gap:.6rem;margin:0 0 .35rem;opacity:1;
  font-family:"Cormorant Garamond",var(--serif);font-weight:500;font-style:italic;font-size:1.2rem;letter-spacing:.06em;color:var(--gold);font-variant-numeric:lining-nums}
.hall-directory .hall-num::before,.hall-directory .hall-num::after{content:"";flex:0 1 2.2rem;height:1px}
.hall-directory .hall-num::before{background:linear-gradient(270deg,rgba(184,146,74,.6),rgba(184,146,74,0))}
.hall-directory .hall-num::after{background:linear-gradient(90deg,rgba(184,146,74,.6),rgba(184,146,74,0))}
.hall-directory .hall h3{font-size:clamp(1.35rem,1.2rem + .5vw,1.7rem);text-wrap:balance;margin:0 0 .7rem}
.hall-directory .hall h3 a:focus-visible{outline:none}
.hall-directory .hall:has(h3 a:focus-visible){outline:3px solid var(--gold);outline-offset:4px}
.hall-directory .hall > p:not(.hall-num){flex:1 0 auto;margin:0 0 1.3rem;font-size:.98em;line-height:1.6;text-wrap:pretty}
.hall-directory .status{display:block;border-top:3px double rgba(184,146,74,.4);padding-top:.95rem;color:var(--gold-soft);transition:letter-spacing .3s ease,color .3s ease}
.hall-directory .hall:hover .status,.hall-directory .hall:focus-within .status{color:#fbf6ea;letter-spacing:.26em}
/* Ranges XS≤380 · SM≤480 · MD≤640 · LG≤900 · XL≤1200 · XXL≤1600 · XXXL>1600 */
@media (min-width:1601px){.hall-directory{gap:2.4rem}}
@media (max-width:900px){.hall-directory{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.hall-directory{grid-template-columns:1fr;gap:1.4rem}
  .hall-directory .hall{box-shadow:inset 0 0 0 6px var(--leaf),inset 0 0 0 7px rgba(184,146,74,.28),0 18px 36px -28px rgba(0,0,0,.85)}}
@media (max-width:380px){.hall-directory .hall{padding:1.5rem 1.05rem 1.25rem;box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.28),0 18px 36px -28px rgba(0,0,0,.85)}}
@media (prefers-reduced-motion:reduce){.hall-directory .hall,.hall-directory .status,.hall-directory .hall-emblem{transition:none}.hall-directory .hall:hover,.hall-directory .hall:focus-within{transform:none}}
@media print{.hall-directory .hall::before,.hall-directory .hall-num::before,.hall-directory .hall-num::after{display:none}.hall-directory .hall{box-shadow:none;background:none}}

/* 🎨 18 — The closed room (sprint 2026-09-29-closed-room). The 404 and error pages become a night room in the house
   language: an engraved closed door between gold hairlines, the unchanged notice in the display face, Psalm 119:105 as
   a lamp line, a gold return button and a small register of the six open halls as door-plates.
   The masthead stays static here (as on .plain), so masthead.js leaves these pages alone. */
body:has(.closed-room) .masthead{position:static;background:var(--night)}
.closed-room{background:radial-gradient(ellipse at 50% 18%,rgba(184,146,74,.16),transparent 58%),linear-gradient(180deg,var(--night),var(--night-2));color:var(--vellum)}
.closed-door{position:relative;text-align:center;padding:clamp(2.6rem,2rem + 3vw,5rem) 0 clamp(3rem,2.4rem + 3vw,5rem)}
.closed-door .hall-headpiece{color:var(--gold-soft)}
.closed-door .eyebrow{color:var(--gold)}
.closed-door h1{font-family:var(--display);font-weight:500;font-size:clamp(2.1rem,1.4rem + 3vw,4.2rem);line-height:1.04;margin:0 auto 1.1rem;max-width:18ch;color:#fbf6ea}
.closed-note{max-width:36rem;margin:0 auto 2.2rem;font-size:clamp(1rem,.96rem + .25vw,1.14rem);line-height:1.7;color:var(--vellum);opacity:.9}
.closed-lamp{max-width:34rem;margin:0 auto 2.4rem;padding:1.3rem 0 1.1rem;border-top:1px solid rgba(184,146,74,.4);border-bottom:1px solid rgba(184,146,74,.4);position:relative}
.closed-lamp::before{content:"";position:absolute;left:50%;top:-4px;width:7px;height:7px;margin-left:-3.5px;background:var(--gold);transform:rotate(45deg);box-shadow:0 0 0 3px var(--night)}
.closed-lamp blockquote{margin:0}
.closed-lamp blockquote p{margin:0;font-family:var(--display);font-style:italic;font-size:clamp(1.2rem,1.05rem + .7vw,1.6rem);line-height:1.4;color:#fbf6ea}
.closed-lamp figcaption{margin-top:.7rem;font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-soft)}
.closed-lamp figcaption a{color:var(--gold-soft);text-decoration-color:rgba(216,192,138,.5)}
.closed-lamp figcaption a:hover{color:#fbf6ea}
.closed-return{margin:0}
.closed-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border-color:var(--gold);color:#fbf6ea;background:rgba(184,146,74,.08);transition:background-color .25s ease,color .25s ease}
.closed-btn:hover,.closed-btn:focus-visible{background:var(--gold);color:var(--night)}
.closed-more{margin:1.1rem auto 0;max-width:36rem;font-family:var(--sans);font-size:.92rem;line-height:1.7;color:var(--vellum);opacity:.88}
.closed-more a{display:inline-block;padding:.35rem 0;color:var(--gold-soft);text-decoration-color:rgba(216,192,138,.5);text-underline-offset:.2em}
.closed-more a:hover,.closed-more a:focus-visible{color:#fbf6ea}
.closed-tell{white-space:nowrap}
@media (max-width:36rem){.closed-more .closed-tell{display:block}.closed-sep{display:none}}
.closed-room :focus-visible{outline-color:var(--gold-soft);box-shadow:none}
.closed-halls{position:relative;padding:clamp(2.4rem,2rem + 2vw,4rem) 0 clamp(3rem,2.4rem + 3vw,5rem);border-top:1px solid rgba(184,146,74,.3);background:rgba(0,0,0,.12)}
.closed-halls::before{content:"";position:absolute;left:50%;top:-4px;width:7px;height:7px;margin-left:-3.5px;background:var(--gold);transform:rotate(45deg)}
.closed-halls h2{text-align:center;margin:0 0 clamp(1.4rem,1.1rem + 1vw,2.2rem);font-family:var(--sans);font-weight:600;font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.closed-register{list-style:none;margin:0 auto;padding:0;max-width:72rem;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:clamp(.7rem,.5rem + .8vw,1.3rem)}
.closed-register a{--leaf:#18202c;position:relative;display:flex;flex-direction:column;align-items:center;gap:.35rem;height:100%;box-sizing:border-box;min-height:44px;
  padding:1.2rem .7rem 1.05rem;text-align:center;text-decoration:none;color:#fbf6ea;border:1px solid rgba(184,146,74,.4);border-top:2px solid var(--gold);
  background:radial-gradient(120% 60% at 50% 0,rgba(184,146,74,.12),rgba(184,146,74,0) 70%),var(--leaf);
  box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.24);transition:transform .3s ease,box-shadow .3s ease,background-color .3s ease}
.closed-register a:hover,.closed-register a:focus-visible{transform:translateY(-3px);background-color:#1b2431;box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.5)}
.closed-register a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.closed-register .hall-headpiece{margin:0 0 .2rem;color:var(--gold-soft)}
.closed-register .hp-rule{display:none}
.closed-register .hall-emblem{width:2.4rem;filter:none;transition:filter .3s ease}
.closed-register a:hover .hall-emblem,.closed-register a:focus-visible .hall-emblem{filter:drop-shadow(0 0 12px rgba(216,192,138,.45))}
.closed-num{font-family:var(--display);font-style:italic;font-weight:500;font-size:1.02rem;color:var(--gold);font-variant-numeric:lining-nums}
.closed-name{font-family:var(--display);font-weight:500;font-size:clamp(1.05rem,1rem + .2vw,1.18rem);line-height:1.2;text-wrap:balance}
/* Ranges XS≤380 · SM≤480 · MD≤640 · LG≤900 · XL≤1200 · XXL≤1600 · XXXL>1600 */
@media (min-width:1601px){.closed-register{max-width:84rem}.closed-register .hall-emblem{width:2.7rem}}
@media (max-width:1200px){.closed-register{grid-template-columns:repeat(3,minmax(0,1fr));max-width:48rem}}
@media (max-width:640px){.closed-register{grid-template-columns:repeat(2,minmax(0,1fr))}.closed-lamp{padding:1.1rem .2rem .95rem}}
@media (max-width:380px){.closed-register{gap:.55rem}.closed-register a{padding:1rem .45rem .9rem}.closed-name{font-size:.98rem}.closed-register .hall-emblem{width:2.1rem}}
@media (prefers-reduced-motion:reduce){.closed-register a,.closed-register .hall-emblem,.closed-btn{transition:none}.closed-register a:hover,.closed-register a:focus-visible{transform:none}}
@media print{.closed-room{background:none;color:var(--ink)}.closed-door h1,.closed-lamp blockquote p,.closed-register a{color:var(--ink)}.closed-register a{box-shadow:none;background:none}.closed-lamp::before,.closed-halls::before{display:none}}

/* 🎨 20 — The Home frontispiece (sprint 2026-09-29-home-frontispiece). The entrance hero becomes an engraved title page:
   a tooled double-rule frame with corner lozenges, the house mark as headpiece (hall-emblem 'mark'), an ornamental rule,
   two ways in, and a frieze of the seven emblems. The wording of the hero is unchanged. */
.hero{padding-top:clamp(5.5rem,4.5rem + 3vw,7rem);padding-bottom:clamp(4.5rem,3.5rem + 3vw,6rem)}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-conic-gradient(from 0deg at 50% 30%,rgba(216,192,138,.07) 0deg .6deg,transparent .6deg 5deg);
  -webkit-mask-image:radial-gradient(circle at 50% 30%,#000 0,rgba(0,0,0,.55) 22%,transparent 52%);
          mask-image:radial-gradient(circle at 50% 30%,#000 0,rgba(0,0,0,.55) 22%,transparent 52%)}
.hero-frontispiece{position:relative;z-index:1;width:100%;max-width:64rem;
  padding:clamp(2.2rem,1.4rem + 2.6vw,3.8rem) clamp(1.1rem,.2rem + 4.4vw,5rem) clamp(2rem,1.3rem + 2.4vw,3.4rem)}
.fp-frame{position:absolute;inset:0;border:3px double rgba(184,146,74,.5);pointer-events:none}
.fp-frame::before{content:"";position:absolute;inset:7px;border:1px solid rgba(184,146,74,.2);pointer-events:none}
.fp-frame::after{content:"";position:absolute;inset:-7px;pointer-events:none;
  background-repeat:no-repeat;background-size:11px 11px;background-position:left top,right top,left bottom,right bottom;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 0L12 6L6 12L0 6Z' fill='%23b8924a'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 0L12 6L6 12L0 6Z' fill='%23b8924a'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 0L12 6L6 12L0 6Z' fill='%23b8924a'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 0L12 6L6 12L0 6Z' fill='%23b8924a'/%3E%3C/svg%3E")}
.hero-frontispiece .hall-headpiece{color:var(--gold-soft);margin-bottom:clamp(.9rem,.7rem + .7vw,1.4rem)}
.hero-frontispiece .hall-emblem{width:clamp(3.6rem,3rem + 1.8vw,5rem);filter:drop-shadow(0 0 18px rgba(184,146,74,.35))}
.hero-frontispiece h1{margin-bottom:1.1rem}
.fp-rule{display:flex;align-items:center;justify-content:center;margin:0 auto clamp(1.2rem,1rem + .6vw,1.6rem);max-width:22rem}
.fp-rule::before,.fp-rule::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,.85))}
.fp-rule::after{background:linear-gradient(270deg,transparent,rgba(184,146,74,.85))}
.fp-rule span{flex:none;width:7px;height:7px;margin:0 .8rem;background:var(--gold);transform:rotate(45deg)}
.fp-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem 1rem;margin:clamp(1.6rem,1.3rem + 1vw,2.3rem) 0 0}
.fp-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border-color:rgba(184,146,74,.7);color:#fbf6ea;background:transparent;
  transition:background-color .25s ease,color .25s ease,border-color .25s ease}
.fp-btn:hover,.fp-btn:focus-visible{background:rgba(184,146,74,.16);border-color:var(--gold-soft);color:#fff}
.fp-btn-gold{background:var(--gold);border-color:var(--gold);color:var(--night);font-weight:600}
.fp-btn-gold:hover,.fp-btn-gold:focus-visible{background:var(--gold-soft);border-color:var(--gold-soft);color:var(--night)}
.fp-frieze{display:flex;align-items:center;justify-content:center;gap:clamp(.7rem,.5rem + .8vw,1.2rem);margin:clamp(1.8rem,1.4rem + 1.4vw,2.8rem) auto 0;color:var(--gold-soft)}
.fp-frieze-rule{flex:1 1 3rem;max-width:8rem;height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,.7))}
.fp-frieze-rule:last-child{background:linear-gradient(270deg,transparent,rgba(184,146,74,.7))}
.fp-frieze-set{display:flex;align-items:center;gap:clamp(.45rem,.25rem + .8vw,1rem)}
.fp-frieze .emblem{width:clamp(1.7rem,1.4rem + .9vw,2.4rem);height:auto;aspect-ratio:1;opacity:.82;stroke-width:1.7}
/* the load: a slow, quiet unveiling (none under reduced-motion) */
@keyframes fp-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes fp-fade{from{opacity:0}to{opacity:1}}
.fp-frame{animation:fp-fade 1.2s ease both}
.hero-frontispiece>:not(.fp-frame){animation:fp-rise .9s cubic-bezier(.2,.7,.2,1) both}
.hero-frontispiece>.hall-headpiece{animation-delay:.05s}.hero-frontispiece>.eyebrow{animation-delay:.15s}.hero-frontispiece>h1{animation-delay:.25s}
.hero-frontispiece>.fp-rule{animation-delay:.4s}.hero-frontispiece>.hero-sub{animation-delay:.5s}.hero-frontispiece>.hero-note{animation-delay:.6s}
.hero-frontispiece>.fp-actions{animation-delay:.7s}.hero-frontispiece>.fp-frieze{animation-delay:.85s}
/* Ranges XS≤380 · SM≤480 · MD≤640 · LG≤900 · XL≤1200 · XXL≤1600 · XXXL>1600 */
@media (min-width:1601px){.hero-frontispiece{max-width:70rem}}
@media (max-width:640px){.hero{padding-top:9.4rem}.fp-frame::before{inset:5px}
  .fp-actions{flex-direction:column;align-items:stretch;max-width:18rem;margin-left:auto;margin-right:auto}}
@media (max-width:480px){.hero{padding-left:.75rem;padding-right:.75rem}.fp-frieze-rule{flex-basis:1rem}}
@media (max-width:480px){.hero-frontispiece .eyebrow{letter-spacing:.14em}}
@media (max-width:380px){.hero-frontispiece{padding-left:.85rem;padding-right:.85rem}.hero-frontispiece .eyebrow{font-size:.68rem;letter-spacing:.1em}.fp-frieze-set{gap:.35rem}.fp-frieze .emblem{width:1.45rem}.fp-frieze-rule{display:none}}
@media (prefers-reduced-motion:reduce){.fp-frame,.hero-frontispiece>:not(.fp-frame){animation:none}}
@media print{.hero::before,.fp-frieze,.fp-actions{display:none}.fp-frame{border-color:#999}.fp-frame::before,.fp-frame::after{display:none}}
/* 🎨 21 — The Catalogue's shelf labels, register and colophon (sprint 2026-09-29-catalogue-shelf-labels).
   Hero statistics as a ruled register; testament heads and divisions as a library's shelf labels, each shelf of
   volumes standing on a gilt ledge; the Provenance note as a colophon leaf set in the reading serif. No copy changed. */
.cat-stats{position:relative;border-top:3px double rgba(184,146,74,.55);border-bottom:3px double rgba(184,146,74,.55)}
.cat-stats::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--night-2);pointer-events:none}
.cat-stats div{padding:1.15rem .6rem 1.2rem}
.cat-stats dt{font-family:var(--display);font-style:italic;font-weight:500;font-size:1.05rem;letter-spacing:.02em;text-transform:none;line-height:1.2;margin-bottom:.45rem}
.testament{scroll-margin-top:4.5rem}
.testament .section-head .eyebrow{display:inline-block;margin-bottom:1rem;padding:.5rem 1.2rem;border-top:1px solid rgba(184,146,74,.5);border-bottom:1px solid rgba(184,146,74,.5);font-variant-numeric:lining-nums}
.division-name{align-items:center;justify-content:flex-start;gap:.5rem 1rem;margin:0 0 clamp(1.2rem,2vw,1.6rem);padding-bottom:.75rem;border-bottom:3px double rgba(184,146,74,.5)}
.division-name span{display:inline-flex;align-items:center;gap:.75rem;font-family:var(--display);font-weight:500;font-size:clamp(1.55rem,1.3rem + .8vw,2.1rem);line-height:1.1;letter-spacing:.005em;color:var(--ink)}
.division-name span::before{content:"";flex:none;width:8px;height:8px;background:var(--gold);transform:rotate(45deg)}
.division-name small{display:flex;align-items:center;gap:.6rem;margin-left:auto;font-family:var(--display);font-style:italic;font-weight:500;font-size:1.08rem;letter-spacing:.02em;text-transform:none;color:var(--gold-deep);font-variant-numeric:lining-nums}
.division-name small::before{content:"";width:2.4rem;height:1px;background:linear-gradient(90deg,rgba(184,146,74,0),rgba(184,146,74,.6))}
.book-shelf{position:relative;padding-bottom:clamp(1.1rem,1.8vw,1.5rem)}
.book-shelf::after{content:"";position:absolute;left:0;right:0;bottom:0;height:7px;pointer-events:none;
  background:linear-gradient(rgba(184,146,74,.6),rgba(184,146,74,.6)) 0 0/100% 1px no-repeat,
             linear-gradient(rgba(20,27,38,.13),rgba(20,27,38,0)) 0 1px/100% 6px no-repeat}
.cat-source .wrap{position:relative;max-width:min(52rem,calc(100% - 2 * var(--gutter)));padding:clamp(2.2rem,4vw,3.2rem) clamp(1.15rem,4vw,3.2rem) clamp(1.6rem,3vw,2.4rem);border:1px solid rgba(184,146,74,.45)}
.cat-source .wrap::before{content:"";position:absolute;left:50%;top:-.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--night);pointer-events:none}
.cat-source .wrap::after{content:"";position:absolute;inset:7px;border:1px solid rgba(184,146,74,.2);pointer-events:none}
.cat-source .eyebrow{text-align:center;margin-bottom:1.4rem;opacity:1}
.cat-source p:not(.eyebrow){font-family:var(--serif);font-size:clamp(.98rem,.94rem + .2vw,1.08rem);line-height:1.72;opacity:1;color:var(--vellum);hyphens:auto}
.cat-source p:not(.eyebrow)+p{margin-top:1.05rem;padding-top:1.05rem;border-top:1px solid rgba(184,146,74,.2)}
.cat-source a{text-decoration-color:rgba(216,192,138,.45);text-underline-offset:.18em}
.cat-source a:hover,.cat-source a:focus-visible{color:#fbf6ea;text-decoration-color:var(--gold-soft)}
@media (max-width:480px){.division-name small{margin-left:1.3rem;flex-basis:calc(100% - 1.3rem);font-size:1rem}.division-name small::before{display:none}.cat-stats dt{font-size:.98rem}}
@media (max-width:380px){.cat-source .wrap::after{inset:5px}.division-name span{gap:.6rem}}
@media print{.book-shelf::after,.cat-stats::before,.cat-source .wrap::before,.cat-source .wrap::after{display:none}}
/* 🎨 22 — The lectern leaf (Home) and the period labels (Timeline) (sprint 2026-09-29-lectern-leaf-and-period-labels).
   Ephesians 6:10–18 mounted as the open page on a lectern: a vellum leaf with a gold frame, tooled inset hairline,
   a lozenge riding the top rule and a gilt ledge beneath; the citation as a colophon line. The Timeline's period
   headings become shelf labels in the Catalogue's language. No words, Scripture, dates or markup changed. */
.scripture .section-head .eyebrow{display:inline-block;margin-bottom:1rem;padding:.5rem 1.2rem;border-top:1px solid rgba(184,146,74,.5);border-bottom:1px solid rgba(184,146,74,.5)}
.scripture .kjv{--leaf:#fbf7ee;position:relative;max-width:54rem;
  padding:clamp(1.9rem,4vw,3.4rem) clamp(1.25rem,5vw,4rem) clamp(1.8rem,3.6vw,3rem);
  background:radial-gradient(ellipse at 50% 0,rgba(255,253,247,.95),rgba(255,253,247,0) 70%) 0 0/100% 14rem no-repeat,var(--leaf);
  border:1px solid rgba(184,146,74,.5);
  box-shadow:inset 0 0 0 8px var(--leaf),inset 0 0 0 9px rgba(184,146,74,.3),0 26px 48px -34px rgba(20,27,38,.6)}
.scripture .kjv::after{content:"";position:absolute;left:50%;top:-.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--parchment);pointer-events:none}
.scripture .kjv::before{content:"";position:absolute;left:-1.5rem;right:-1.5rem;bottom:-1.1rem;height:8px;pointer-events:none;
  background:linear-gradient(rgba(184,146,74,.65),rgba(184,146,74,.65)) 0 0/100% 1px no-repeat,
             linear-gradient(rgba(20,27,38,.14),rgba(20,27,38,0)) 0 1px/100% 7px no-repeat}
.scripture .cite{display:flex;align-items:center;justify-content:center;gap:1rem;max-width:34rem;margin:clamp(2.4rem,4vw,3rem) auto 0;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(1.08rem,1rem + .3vw,1.3rem);letter-spacing:.02em;text-transform:none;
  color:var(--gold-deep);font-variant-numeric:lining-nums}
.scripture .cite::before,.scripture .cite::after{content:"";flex:1 1 3rem;max-width:7rem;height:1px;background:linear-gradient(90deg,rgba(184,146,74,0),rgba(184,146,74,.6))}
.scripture .cite::after{background:linear-gradient(270deg,rgba(184,146,74,0),rgba(184,146,74,.6))}
/* Timeline period headings as shelf labels */
.tl-era{padding:.75rem clamp(1.1rem,2.4vw,1.8rem) .8rem;background:var(--parchment);color:var(--ink);border:0;
  border-top:3px double rgba(184,146,74,.6);border-bottom:3px double rgba(184,146,74,.6);
  font-family:var(--display);font-size:clamp(1.3rem,1.12rem + .75vw,1.9rem);font-weight:500;line-height:1.15;letter-spacing:.005em;text-transform:none;
  scroll-margin-top:4.5rem}
.tl-era::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--parchment);pointer-events:none}
.tl-era-span{margin-top:.3rem;font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(.98rem,.94rem + .2vw,1.1rem);
  letter-spacing:.02em;text-transform:none;color:var(--gold-deep);font-variant-numeric:lining-nums}
@media (max-width:900px){.tl-era{text-align:left;padding-left:1.1rem}.tl-era::before{left:1.1rem;transform:translate(0,-50%) rotate(45deg)}}
@media (max-width:640px){.scripture .kjv::before{left:-.6rem;right:-.6rem}.scripture .kjv{box-shadow:inset 0 0 0 6px var(--leaf),inset 0 0 0 7px rgba(184,146,74,.3),0 22px 40px -30px rgba(20,27,38,.6)}}
@media (max-width:480px){.tl-era{letter-spacing:.005em;padding-right:.9rem}.scripture .cite{gap:.7rem}}
@media (max-width:380px){.scripture .kjv{padding-left:1rem;padding-right:1rem;box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.3),0 20px 36px -28px rgba(20,27,38,.6)}
  .scripture .kjv::before{left:-.3rem;right:-.3rem}.tl-era-span{font-size:.95rem;letter-spacing:.01em}}
@media print{.scripture .kjv{box-shadow:none;background:none}.scripture .kjv::before,.scripture .kjv::after,.tl-era::before,.scripture .cite::before,.scripture .cite::after{display:none}}
/* 🎨 23 — The seven exhibit labels (Home) (sprint 2026-09-29-home-exhibit-labels). Each piece card is mounted as a
   museum label in the house language: a vellum-white leaf on a gold top rule with a lozenge riding it, a tooled inset
   hairline and head-light; the numeral as an italic shelf-mark between hairlines; the KJV words as the inscription;
   the reference as a colophon under a double gold rule. The short last row is centred as in a display case. No copy changed. */
.pieces .section-head .eyebrow{display:inline-block;margin-bottom:1rem;padding:.5rem 1.2rem;border-top:1px solid rgba(184,146,74,.5);border-bottom:1px solid rgba(184,146,74,.5)}
.pieces .piece{--leaf:#fbf7ee;display:flex;flex-direction:column;align-items:center;
  padding:clamp(1.9rem,1.5rem + 1vw,2.4rem) clamp(1.1rem,.9rem + .8vw,1.6rem) clamp(1.3rem,1.1rem + .6vw,1.7rem);
  background:radial-gradient(120% 55% at 50% 0,rgba(255,253,247,.95),rgba(255,253,247,0) 70%),var(--leaf);
  border:1px solid rgba(184,146,74,.45);border-top:3px solid var(--gold);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.28),0 22px 42px -30px rgba(20,27,38,.55);
  transition:transform .3s ease,box-shadow .3s ease}
.pieces .piece::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--vellum);pointer-events:none}
.pieces .piece:hover,.pieces .piece:focus-within{transform:translateY(-3px);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.55),0 28px 44px -26px rgba(20,27,38,.6)}
.pieces .piece .emblem{margin-bottom:.75rem}
.pieces .piece-num{display:flex;align-items:center;justify-content:center;gap:.6rem;width:100%;margin:0 0 .45rem;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:1.15rem;letter-spacing:.06em;color:var(--gold-deep);font-variant-numeric:lining-nums}
.pieces .piece-num::before,.pieces .piece-num::after{content:"";flex:0 1 2rem;height:1px}
.pieces .piece-num::before{background:linear-gradient(270deg,rgba(184,146,74,.65),rgba(184,146,74,0))}
.pieces .piece-num::after{background:linear-gradient(90deg,rgba(184,146,74,.65),rgba(184,146,74,0))}
.pieces .piece h3{font-family:var(--display);font-weight:500;font-size:clamp(1.3rem,1.15rem + .5vw,1.6rem);line-height:1.15;text-wrap:balance;margin:0 0 .75rem}
.pieces .piece h3 a:focus-visible{outline:none}
.pieces .piece:has(h3 a:focus-visible){outline:3px solid var(--gold);outline-offset:4px}
.pieces .piece-words{flex:1 0 auto;margin:0 0 1.1rem;font-size:1.02em;line-height:1.5;text-wrap:pretty;color:var(--ink-soft)}
.pieces .piece-ref{align-self:stretch;border-top:3px double rgba(184,146,74,.5);padding-top:.8rem;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:1.08rem;letter-spacing:.02em;text-transform:none;color:var(--oxblood);font-variant-numeric:lining-nums}
/* The display case: centre the short last row at every width. Ranges XS≤380 · SM≤480 · MD≤640 · LG≤900 · XL≤1200 · XXL≤1600 · XXXL>1600 */
@media (min-width:1201px) and (max-width:1600px){.pieces .piece-grid{grid-template-columns:repeat(8,minmax(0,1fr))}
  .pieces .piece,.pieces .piece:last-child{grid-column:span 2}.pieces .piece:nth-child(5){grid-column:2 / span 2}}
@media (min-width:901px) and (max-width:1200px){.pieces .piece:last-child{grid-column:2 / span 1}}
@media (min-width:481px) and (max-width:900px){.pieces .piece-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .pieces .piece{grid-column:span 2}.pieces .piece:last-child{grid-column:2 / span 2}}
@media (max-width:640px){.pieces .piece{box-shadow:inset 0 0 0 6px var(--leaf),inset 0 0 0 7px rgba(184,146,74,.28),0 18px 36px -28px rgba(20,27,38,.55)}}
@media (max-width:480px){.pieces .piece-grid{gap:1.3rem}}
@media (max-width:380px){.pieces .piece{padding:1.6rem 1rem 1.2rem;box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.28),0 18px 36px -28px rgba(20,27,38,.55)}}
@media (min-width:1601px){.pieces .piece{padding-left:1rem;padding-right:1rem}.pieces .piece-num::before,.pieces .piece-num::after{flex-basis:1.4rem}}
@media (prefers-reduced-motion:reduce){.pieces .piece{transition:none}.pieces .piece:hover,.pieces .piece:focus-within{transform:none}}
@media print{.pieces .piece::before,.pieces .piece-num::before,.pieces .piece-num::after{display:none}.pieces .piece{box-shadow:none;background:none}}
/* 🎨 24 — The Armoury exhibit plates in the label language (sprint 2026-09-29-armoury-exhibit-plates). Each night/oxblood
   plate is mounted as a label: a gold top rule with a lozenge riding it, a tooled inset hairline, the "Exhibit N of VII"
   eyebrow as an italic shelf-mark between fading hairlines, the KJV reference as a colophon under a double gold rule.
   The ghost numeral (which sat behind the verse) is retired. Section sub-heads get a lozenge + fading hairline. No copy changed. */
.exhibit .exhibit-plate{--plate:var(--night);overflow:visible;border-top:3px solid var(--gold);
  padding:clamp(2.1rem,3.2vw,3rem) clamp(1.6rem,2.8vw,2.6rem) clamp(1.6rem,2.6vw,2.3rem);
  box-shadow:inset 0 0 0 8px var(--plate),inset 0 0 0 9px rgba(216,192,138,.3),0 26px 50px -30px rgba(20,27,38,.8)}
.exhibit.exhibit-alt .exhibit-plate{--plate:var(--oxblood)}
.exhibit .exhibit-plate::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--parchment);pointer-events:none;z-index:1}
.exhibit .exhibit-num{display:none}
.exhibit-plate .eyebrow{display:flex;align-items:center;justify-content:center;gap:.7rem;margin:0 0 .7rem;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(1.05rem,1rem + .25vw,1.25rem);letter-spacing:.05em;text-transform:none;
  color:var(--gold-soft);font-variant-numeric:lining-nums}
.exhibit-plate .eyebrow::before,.exhibit-plate .eyebrow::after{content:"";flex:0 1 2.6rem;height:1px}
.exhibit-plate .eyebrow::before{background:linear-gradient(270deg,rgba(216,192,138,.7),rgba(216,192,138,0))}
.exhibit-plate .eyebrow::after{background:linear-gradient(90deg,rgba(216,192,138,.7),rgba(216,192,138,0))}
.exhibit-plate h2{text-wrap:balance}
.exhibit-words{text-wrap:pretty;margin-bottom:1.35rem}
.exhibit-ref{border-top:3px double rgba(216,192,138,.5);padding-top:.85rem;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(1.02rem,.98rem + .2vw,1.18rem);letter-spacing:.02em;text-transform:none;font-variant-numeric:lining-nums}
.exhibit-ref a{text-decoration-thickness:1px;text-underline-offset:.2em}
.exhibit-sub{display:flex;align-items:center;gap:.75rem}
.exhibit-sub::before{content:"";flex:0 0 7px;width:7px;height:7px;background:var(--gold);transform:rotate(45deg)}
.exhibit-sub::after{content:"";flex:1 1 2rem;max-width:9rem;height:1px;background:linear-gradient(90deg,rgba(184,146,74,.65),rgba(184,146,74,0))}
@media (max-width:640px){.exhibit .exhibit-plate{box-shadow:inset 0 0 0 6px var(--plate),inset 0 0 0 7px rgba(216,192,138,.3),0 22px 40px -28px rgba(20,27,38,.75)}}
@media (max-width:480px){.exhibit .exhibit-plate{padding:1.9rem 1.2rem 1.4rem}.exhibit-plate .eyebrow::before,.exhibit-plate .eyebrow::after{flex-basis:1.6rem}
  .exhibit-sub::after{display:none}}
@media (max-width:380px){.exhibit .exhibit-plate{padding:1.7rem 1rem 1.3rem;box-shadow:inset 0 0 0 5px var(--plate),inset 0 0 0 6px rgba(216,192,138,.3),0 20px 36px -28px rgba(20,27,38,.75)}
  .exhibit-plate .eyebrow{gap:.5rem}}
@media print{.exhibit .exhibit-plate::before,.exhibit-plate .eyebrow::before,.exhibit-plate .eyebrow::after,.exhibit-sub::before,.exhibit-sub::after{display:none}
  .exhibit .exhibit-plate{box-shadow:none}}

/* 🎨 25 — The hero index as a ruled register (sprint 2026-09-29-hero-index-register).
   Armoury + Gallery heroes only: the boxed spaced-caps chips become one register under double gold rules with a
   riding lozenge (the Catalogue's 🎨 21 language). Each cell: italic Cormorant numeral, emblem, name in the display serif.
   Scoped to .arm-hero so .src-index, .cat-jump and the Timeline chips are unchanged. No copy changed. */
.arm-hero .arm-index{position:relative;max-width:72rem;margin:clamp(.4rem,1vw,.9rem) auto 0;
  border-top:3px double rgba(184,146,74,.55);border-bottom:3px double rgba(184,146,74,.55)}
.arm-hero .arm-index::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--night-2);pointer-events:none;z-index:1}
.arm-hero .arm-index ol{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;max-width:none;margin:0;padding:0;overflow:hidden}
.gallery .arm-hero .arm-index{max-width:52rem}
.gallery .arm-hero .arm-index ol{grid-template-columns:repeat(3,minmax(0,1fr))}
.arm-hero .arm-index li{display:flex;min-width:0;grid-column:auto;justify-content:stretch;box-shadow:-1px 0 0 rgba(184,146,74,.28),0 -1px 0 rgba(184,146,74,.28)}
.arm-hero .arm-index a,.arm-hero .arm-index li:last-child:nth-child(odd) a{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.45rem;
  width:100%;min-height:44px;padding:1.05rem .55rem 1.1rem;margin:0;background:transparent;border:0;border-radius:0;box-shadow:none;
  font-family:var(--display);font-style:normal;font-weight:500;font-size:clamp(1rem,.94rem + .22vw,1.14rem);line-height:1.18;letter-spacing:.01em;
  text-transform:none;text-align:center;color:#fbf6ea;text-wrap:balance;overflow-wrap:normal;hyphens:none;
  transition:background-color .25s ease,color .25s ease}
.arm-hero .arm-index a span{display:block;align-self:auto;padding:0;margin:0;border:0;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:1.02rem;letter-spacing:.06em;line-height:1;color:var(--gold-soft);
  font-variant-numeric:lining-nums}
.arm-hero .arm-index a .emblem{display:block;width:clamp(2.1rem,1.9rem + .6vw,2.7rem);margin:.05rem 0 .1rem;color:var(--gold-soft);transition:color .25s ease,transform .35s ease}
.arm-hero .arm-index a:hover{background:rgba(184,146,74,.1);border:0;color:#fff}
.arm-hero .arm-index a:hover span{color:var(--gold-soft)}
.arm-hero .arm-index a:hover .emblem,.arm-hero .arm-index a:focus-visible .emblem{color:var(--gold);transform:translateY(-2px)}
.arm-hero .arm-index a:active{transform:none;background:rgba(184,146,74,.16)}
.arm-hero .arm-index a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:-5px;background:rgba(184,146,74,.1)}
@media (max-width:900px){.armoury .arm-hero .arm-index ol{grid-template-columns:repeat(3,minmax(0,1fr))}
  .armoury .arm-hero .arm-index li:last-child:nth-child(7){grid-column:1/-1}}
@media (max-width:640px){.armoury .arm-hero .arm-index ol{grid-template-columns:repeat(2,minmax(0,1fr))}
  .arm-hero .arm-index a,.arm-hero .arm-index li:last-child:nth-child(odd) a{padding:.9rem .45rem .95rem;gap:.35rem}}
@media (max-width:480px){.arm-hero .arm-index a,.arm-hero .arm-index li:last-child:nth-child(odd) a{font-size:.98rem}.arm-hero .arm-index a .emblem{width:1.9rem}}
@media (max-width:380px){.arm-hero .arm-index a .emblem{display:block;width:1.75rem}
  .gallery .arm-hero .arm-index ol{grid-template-columns:1fr}
  .arm-hero .arm-index a,.arm-hero .arm-index li:last-child:nth-child(odd) a{padding:.8rem .35rem .85rem}}
@media (prefers-reduced-motion:reduce){.arm-hero .arm-index a,.arm-hero .arm-index a .emblem{transition:none}.arm-hero .arm-index a:hover .emblem,.arm-hero .arm-index a:focus-visible .emblem{transform:none}}
@media print{.arm-hero .arm-index::before{display:none}.arm-hero .arm-index li{box-shadow:none}}

/* 🎨 26 — The verse colophon + the Reading Room register (sprint 2026-09-29-verse-colophon-and-reading-room-register).
   (a) Every hall hero's verse reference becomes an italic Cormorant colophon between two gold hairlines (was sans spaced caps).
   (b) The Reading Room hero index joins the Armoury/Gallery register (🎨 25). CSS only; no words, links or markup changed. */
.arm-verse-ref,.cat-verse-ref{display:flex;align-items:center;justify-content:center;gap:.85rem;width:fit-content;max-width:100%;margin:.95rem auto 0;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(1rem,.95rem + .25vw,1.16rem);line-height:1.3;letter-spacing:.02em;
  text-transform:none;text-align:center;color:var(--gold-soft);text-decoration:none;font-variant-numeric:lining-nums;transition:color .25s ease}
.arm-verse-ref::before,.arm-verse-ref::after,.cat-verse-ref::before,.cat-verse-ref::after{content:"";flex:none;width:clamp(1.3rem,1rem + 1.6vw,2.6rem);height:1px;
  background:linear-gradient(90deg,transparent,rgba(184,146,74,.85))}
.arm-verse-ref::after,.cat-verse-ref::after{background:linear-gradient(90deg,rgba(184,146,74,.85),transparent)}
.arm-verse-ref:hover,.cat-verse-ref:hover{color:#fbf6ea;text-decoration:underline;text-decoration-color:rgba(216,192,138,.6);text-decoration-thickness:1px;text-underline-offset:.2em}
.arm-verse-ref:focus-visible,.cat-verse-ref:focus-visible{outline:2px solid var(--gold-soft);outline-offset:4px;color:#fbf6ea}
@media (max-width:380px){.arm-verse-ref,.cat-verse-ref{gap:.55rem}.arm-verse-ref::before,.arm-verse-ref::after,.cat-verse-ref::before,.cat-verse-ref::after{width:1rem}}

.arm-hero .src-index{position:relative;max-width:72rem;margin:clamp(.4rem,1vw,.9rem) auto 0;
  border-top:3px double rgba(184,146,74,.55);border-bottom:3px double rgba(184,146,74,.55)}
.arm-hero .src-index::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--night-2);pointer-events:none;z-index:1}
.arm-hero .src-index ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;max-width:none;margin:0;padding:0;overflow:hidden}
.arm-hero .src-index li,.arm-hero .src-index li:last-child:nth-child(odd){display:flex;min-width:0;grid-column:auto;justify-content:stretch;
  box-shadow:-1px 0 0 rgba(184,146,74,.28),0 -1px 0 rgba(184,146,74,.28)}
.arm-hero .src-index a,.arm-hero .src-index li:last-child:nth-child(odd) a{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.4rem;
  width:100%;min-height:44px;padding:1.05rem .55rem 1.1rem;margin:0;background:transparent;border:0;border-radius:0;box-shadow:none;
  font-family:var(--display);font-style:normal;font-weight:500;font-size:clamp(1rem,.94rem + .22vw,1.14rem);line-height:1.18;letter-spacing:.01em;
  text-transform:none;text-align:center;color:#fbf6ea;text-wrap:balance;overflow-wrap:normal;hyphens:none;transition:background-color .25s ease,color .25s ease}
.arm-hero .src-index a span{display:block;align-self:auto;padding:0;margin:0;border:0;
  font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(1.35rem,1.2rem + .5vw,1.7rem);letter-spacing:.02em;line-height:1;color:var(--gold-soft);
  font-variant-numeric:lining-nums}
.arm-hero .src-index a:hover{background:rgba(184,146,74,.1);border:0;color:#fff}
.arm-hero .src-index a:hover span{color:var(--gold)}
.arm-hero .src-index a:active{transform:none;background:rgba(184,146,74,.16)}
.arm-hero .src-index a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:-5px;background:rgba(184,146,74,.1)}
@media (max-width:900px){.arm-hero .src-index ol{grid-template-columns:repeat(6,minmax(0,1fr))}
  .arm-hero .src-index li,.arm-hero .src-index li:last-child:nth-child(odd){grid-column:span 2}
  .arm-hero .src-index li:nth-child(n+4),.arm-hero .src-index li:last-child:nth-child(odd):nth-child(n+4){grid-column:span 3}}
@media (max-width:640px){.arm-hero .src-index ol{grid-template-columns:repeat(2,minmax(0,1fr))}
  .arm-hero .src-index li,.arm-hero .src-index li:nth-child(n+4){grid-column:span 1}
  .arm-hero .src-index li:last-child:nth-child(odd),.arm-hero .src-index li:last-child:nth-child(odd):nth-child(n+4){grid-column:1/-1}
  .arm-hero .src-index a,.arm-hero .src-index li:last-child:nth-child(odd) a{padding:.9rem .45rem .95rem;gap:.3rem}}
@media (max-width:480px){.arm-hero .src-index a,.arm-hero .src-index li:last-child:nth-child(odd) a{font-size:.98rem}}
@media (max-width:380px){.arm-hero .src-index a,.arm-hero .src-index li:last-child:nth-child(odd) a{padding:.8rem .35rem .85rem}}
@media (prefers-reduced-motion:reduce){.arm-verse-ref,.cat-verse-ref,.arm-hero .src-index a{transition:none}}
@media print{.arm-hero .src-index::before,.arm-verse-ref::before,.arm-verse-ref::after,.cat-verse-ref::before,.cat-verse-ref::after{display:none}.arm-hero .src-index li{box-shadow:none}}

/* 🎨 27 The testament register (Catalogue .cat-jump) — the last boxed chips become the house register:
   double gold rules, riding lozenge, hairline divider, italic numeral, display-serif name, italic range line from the records. */
.cat-hero .cat-jump{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;max-width:40rem;margin:0 auto;padding:0;
  border-top:3px double rgba(184,146,74,.55);border-bottom:3px double rgba(184,146,74,.55)}
.cat-hero .cat-jump::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--night-2);pointer-events:none;z-index:1}
.cat-hero .cat-jump a{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.35rem;min-width:0;
  width:100%;min-height:44px;padding:1.05rem .6rem 1.1rem;margin:0;background:transparent;border:0;border-radius:0;box-shadow:none;
  font-family:var(--display);font-style:normal;font-weight:500;font-size:clamp(1.05rem,.98rem + .25vw,1.22rem);line-height:1.18;letter-spacing:.01em;
  text-transform:none;text-align:center;color:#fbf6ea;text-wrap:balance;overflow-wrap:normal;hyphens:none;transition:background-color .25s ease,color .25s ease}
.cat-hero .cat-jump a+a{box-shadow:-1px 0 0 rgba(184,146,74,.28)}
.cat-hero .cat-jump .cj-num{display:block;font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(1.35rem,1.2rem + .5vw,1.7rem);
  line-height:1;letter-spacing:.04em;color:var(--gold-soft);font-variant-numeric:lining-nums}
.cat-hero .cat-jump .cj-name{display:block}
.cat-hero .cat-jump .cj-range{display:flex;align-items:center;gap:.5rem;font-family:var(--display);font-style:italic;font-weight:400;
  font-size:clamp(.92rem,.88rem + .15vw,1.02rem);letter-spacing:.01em;color:var(--vellum);opacity:.92}
.cat-hero .cat-jump .cj-range::before,.cat-hero .cat-jump .cj-range::after{content:"";width:.9rem;height:1px;background:rgba(184,146,74,.6);flex:none}
.cat-hero .cat-jump a:hover{background:rgba(184,146,74,.1);border:0;color:#fff}
.cat-hero .cat-jump a:hover .cj-num{color:var(--gold)}
.cat-hero .cat-jump a:active{transform:none;background:rgba(184,146,74,.16)}
.cat-hero .cat-jump a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:-5px;background:rgba(184,146,74,.1)}
@media (max-width:640px){.cat-hero .cat-jump a{padding:.9rem .45rem .95rem;gap:.3rem;font-size:1rem;letter-spacing:.01em}}
@media (max-width:380px){.cat-hero .cat-jump a{padding:.8rem .3rem .85rem;font-size:.95rem}.cat-hero .cat-jump .cj-range{font-size:.86rem;gap:.35rem}
  .cat-hero .cat-jump .cj-range::before,.cat-hero .cat-jump .cj-range::after{width:.45rem}}
@media (prefers-reduced-motion:reduce){.cat-hero .cat-jump a{transition:none}}
@media print{.cat-hero .cat-jump::before,.cat-hero .cat-jump .cj-range::before,.cat-hero .cat-jump .cj-range::after{display:none}}

/* 🎨 28 The period register (Timeline .tl-periods; sprint 2026-09-29-timeline-period-register).
   Was inheriting the 7-column Armoury register (🎨 25 leak), which overprinted names on phones. Now its own register:
   double gold rules, riding lozenge, hairline cells — name in the display serif, span as an italic line, entry count. */
.tl-periods{position:relative;max-width:66rem;margin:clamp(1.2rem,2.4vw,1.8rem) auto 0;
  border-top:3px double rgba(184,146,74,.55);border-bottom:3px double rgba(184,146,74,.55)}
.tl-periods::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--night-2);pointer-events:none;z-index:1}
.tl-periods ol{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:0;padding:0;overflow:hidden}
.tl-periods li{display:flex;min-width:0;box-shadow:-1px 0 0 rgba(184,146,74,.28),0 -1px 0 rgba(184,146,74,.28)}
.tl-periods a{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.32rem;width:100%;min-width:0;min-height:44px;
  padding:.95rem .5rem 1rem;text-align:center;text-decoration:none;color:#fbf6ea;transition:background-color .25s ease,color .25s ease}
.tl-periods .tp-name{display:block;font-family:var(--display);font-weight:500;font-size:clamp(1rem,.95rem + .2vw,1.14rem);line-height:1.18;
  letter-spacing:.01em;text-wrap:balance;overflow-wrap:normal;hyphens:none}
.tl-periods .tp-span{display:flex;align-items:center;gap:.45rem;font-family:var(--display);font-style:italic;font-weight:500;
  font-size:clamp(.9rem,.86rem + .15vw,1rem);line-height:1.2;color:var(--gold-soft);font-variant-numeric:lining-nums;white-space:nowrap}
.tl-periods .tp-span::before,.tl-periods .tp-span::after{content:"";flex:none;width:.7rem;height:1px;background:rgba(184,146,74,.6)}
.tl-periods .tp-count{display:block;font-family:var(--display);font-style:italic;font-size:.9rem;line-height:1.2;color:var(--vellum);opacity:.85;
  font-variant-numeric:lining-nums}
.tl-periods a:hover{background:rgba(184,146,74,.1);color:#fff}
.tl-periods a:hover .tp-span{color:var(--gold)}
.tl-periods a:active{background:rgba(184,146,74,.16)}
.tl-periods a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:-5px;background:rgba(184,146,74,.1)}
@media (max-width:900px){.tl-periods ol{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tl-periods li:last-child:nth-child(odd){grid-column:1/-1}
  .tl-periods a{padding:.8rem .45rem .85rem;gap:.25rem}}
@media (max-width:380px){.tl-periods a{padding:.7rem .3rem .75rem}.tl-periods .tp-name{font-size:.96rem}
  .tl-periods .tp-span{font-size:.86rem;gap:.3rem}.tl-periods .tp-span::before,.tl-periods .tp-span::after{width:.4rem}.tl-periods .tp-count{font-size:.84rem}}
@media (prefers-reduced-motion:reduce){.tl-periods a{transition:none}}
@media print{.tl-periods::before,.tl-periods .tp-span::before,.tl-periods .tp-span::after{display:none}.tl-periods li{box-shadow:none}}

/* 🎨 29 The printed leaf — site-wide print pass (print media only; screen untouched).
   Paper drops the night grounds, so their pale type is re-inked; oxblood heads + gold-deep eyebrows keep the house voice;
   controls that cannot work on paper are hidden; every external citation prints its full address as proof. */
@media print{
  @page{margin:16mm 15mm 18mm}
  html,body{background:#fff!important}
  body{color:var(--ink);font-size:11pt;line-height:1.5}
  /* Night grounds → ink on paper */
  .hero,.arm-hero,.cat-hero,.halls,.cat-source,.exhibit-plate,.tl-era,.ab-plain,.ab-confession,.gal-verse,.closed-room,.colophon,.masthead,.hall-directory,
  .hero *,.arm-hero *,.cat-hero *,.halls *,.cat-source *,.exhibit-plate *,.tl-era *,.ab-plain *,.ab-confession *,.gal-verse *,.closed-room *,.colophon *,.masthead *,.hall-directory *{
    color:var(--ink)!important;background:transparent!important;text-shadow:none!important;box-shadow:none!important}
  .hero h1,.arm-hero h1,.cat-hero h1,.exhibit-plate h2,.closed-room h1{color:var(--oxblood)!important}
  .hero .eyebrow,.arm-hero .eyebrow,.cat-hero .eyebrow,.exhibit-plate .eyebrow,.cat-source .eyebrow,.halls .eyebrow,.tl-era{color:var(--gold-deep)!important}
  .hero a,.arm-hero a,.cat-hero a,.cat-source a,.exhibit-plate a,.colophon a,.ab-confession a,.gal-verse a{color:var(--oxblood)!important}
  .exhibit-plate,.ab-plain,.ab-confession,.gal-verse,.tl-era{border-color:var(--gold)!important}
  /* Controls that do nothing on paper */
  .skip,.masthead-nav,.colophon-nav,.tl-runner,.plate-viewer,.arm-index,.tl-periods,.cat-jump,.src-index,.fp-actions{display:none!important}
  /* Screen heights and pins released */
  .masthead{position:static!important;transform:none!important;padding:0 0 6mm;justify-content:center;border-bottom:.5pt solid var(--gold)!important}
  .hero{min-height:0!important;padding:8mm 0!important}
  .arm-hero,.cat-hero{padding:6mm 0 8mm!important}
  section{padding-top:6mm!important;padding-bottom:6mm!important}
  .exhibit-plate{position:static!important}
  .colophon{padding:8mm 0 0!important;border-top:.5pt solid var(--gold)!important;break-inside:avoid}
  /* Plates sized for the page */
  .tl-plate-frame,.gal-frame,.arm-plate .tl-plate-frame{--plate-max:62mm;background:none!important;box-shadow:none!important}
  .tl-plate img,.gal-frame img,.arm-plate img{box-shadow:none!important;max-height:62mm!important}
  /* Proof on paper: an external citation prints its address */
  main a[href^="http"]:not(:has(img))::after{content:" \2039" attr(href) "\203A";font-family:var(--sans);font-size:.78em;font-weight:400;font-style:normal;letter-spacing:0;text-transform:none;color:var(--ink-soft);overflow-wrap:anywhere;word-break:break-all}
  /* Pagination */
  h1,h2,h3,.eyebrow,.exhibit-sub,.tl-date{break-after:avoid}
  .xrefs li,.ab-card,.hall,.piece,figure,blockquote,.exhibit-plate,.tl-source,.gal-label>header{break-inside:avoid}
  /* Timeline on paper: one full-width column, the plate set beside the text like a book illustration */
  .tl::before,.tl-card::after{display:none!important}
  .tl-item{display:block!important;padding-left:0!important}
  .tl-era{margin:4mm 0 3mm!important}
  .tl-card{margin:0 0 5mm!important;padding:4mm 5mm!important;background:none!important}
  .tl-date{font-size:18pt}
  .tl-card h2{font-size:14pt;margin-bottom:2mm}
  .tl-card .tl-plate{float:right;width:44%;margin:0 0 3mm 5mm!important}
  .tl-plate-frame{--plate-max:52mm;padding:2mm!important;min-height:0!important}
  .tl-source{clear:both}
  p{orphans:3;widows:3}
}

/* 🎨 30 "Printed from" + the period register three-across (sprint 2026-09-29-printed-from-and-period-register-three).
   The printed colophon closes with the page's own address, so a leaf handed round can be traced back and tested.
   On tablets (641–900) the Timeline period register sets 3 across; a lone last cell spans the row. */
.colophon-printed{display:none}
@media (min-width:641px) and (max-width:900px){
  .tl-periods ol{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tl-periods li:last-child:nth-child(odd){grid-column:auto}
  .tl-periods li:last-child:nth-child(3n+1){grid-column:1/-1}}
@media print{
  .colophon .colophon-printed{display:block!important;margin:4mm auto 0;padding-top:2.5mm;max-width:none;border-top:.5pt solid var(--gold)!important;
    font-family:var(--display);font-style:italic;font-size:10pt;letter-spacing:.01em;color:var(--ink-soft)!important;overflow-wrap:anywhere}}

/* 🎨 31 The printed panels (sprint 2026-09-29-printed-panels).
   On paper every <details> prints open, so the Catalogue's Easton and Gill notes, and their sources, go with the leaf.
   Engines with ::details-content open them here; public/js/print-open.js opens them in the rest.
   The disclosure label prints as a small italic caption; the chevron is dropped. Screen unchanged. */
@media print{
  details:not([open])::details-content{content-visibility:visible;display:block}
  .book-note{break-inside:avoid;border-top:.5pt solid rgba(184,146,74,.6)!important}
  .book-note summary{display:block;padding:1.6mm 0 0;font-family:var(--display);font-style:italic;font-size:9.5pt;letter-spacing:.01em;text-transform:none;color:var(--gold-deep)!important}
  .book-note summary::before,.book-note summary::marker{display:none;content:none}
  .book-note blockquote{margin-top:1.2mm}
  /* Opened notes make cards taller than a grid row fragments cleanly, so the shelf prints as two columns of whole cards */
  .book-shelf,.book-shelf.book-shelf-incipit{display:block!important;columns:2;column-gap:5mm}
  .book,.book-shelf-incipit .book{display:block!important;min-height:0!important;margin:0 0 4mm!important;break-inside:avoid;transform:none!important}}

/* 🎨 32 Room II's type + the Armoury/Gallery/About print pass (sprint 2026-09-29-gallery-room-two-type-and-print-pass).
   The intro rule is scoped to its paragraph (Room II's section carries the same class name, gal-room-text).
   On paper: the colophon lozenge no longer straddles a page break; a witness keeps its citation and aside;
   a Gallery plate keeps to its label. */
@media print{
  .colophon::before{display:none!important}
  .exposition-cite,.witness-aside{break-before:avoid}
  .witness-lede,.gal-plate{break-after:avoid}
  .witness-aside{break-inside:avoid}
  .gal-plate{position:static!important}}

/* 🎨 33 Room-key namespace + the printed Timeline and Reading Room (sprint 2026-09-29-class-namespace-and-printed-sources).
   Gallery rooms now carry their key as a BEM modifier (gal-room--<key>), so a room key can never borrow a component's
   styling (gal-room-head / -text / -verse). On paper, every proof stays with its claim: a Timeline entry keeps its
   Source line, and a Reading Room work keeps its "Cited for" line. Screen unchanged. */
@media print{
  .tl-source,.src-uses{break-before:avoid}
  .src-host{break-after:avoid}
  .src-list li,.tl-plate figcaption,.tl-date{break-inside:avoid}}

/* 🎨 34 The Reading Room on paper (sprint 2026-09-29-reading-room-on-paper).
   The long registers (histories, plate licences, canon and doctrine sources) print as two ruled columns of whole
   entries, and the Scripture register three across, so the bibliography stays complete in about half the paper.
   Every source, licence and printed address still prints. Screen unchanged. */
@media print{
  .src-wrap{max-width:none!important}
  .src-sec{margin-bottom:8mm!important}
  .src-head{padding-bottom:3mm!important}
  .src-head h2{font-size:17pt;margin-bottom:2mm}
  .src-head p:last-child{font-size:10pt}
  .src-list:not(.src-scripture){columns:2;column-gap:8mm;column-rule:.5pt solid rgba(184,146,74,.55);padding:0!important;border:0!important;margin-top:4mm!important}
  .src-list > li{padding:2.2mm 0 2.2mm 7.5mm!important;border-bottom:.5pt solid rgba(184,146,74,.35)!important;break-inside:avoid;background:none!important}
  .src-list > li::before{top:2.1mm!important;width:5.5mm!important;font-size:9pt!important}
  .src-host{font-size:6.5pt!important;margin-bottom:.6mm!important}
  .src-title{font-size:9.5pt!important;line-height:1.35}
  .src-uses,.src-lic,.src-where{font-size:7.5pt!important;line-height:1.4;margin-top:.8mm!important}
  .src-scripture{grid-template-columns:repeat(3,minmax(0,1fr))!important;column-gap:6mm!important;padding:0!important;border:0!important;margin-top:4mm!important}
  .src-scripture > li a{font-size:9.5pt}}
/* 🎨 35 Capital labels set lining figures, so counts sit on the capital line; prose labels keep old-style. */
.eyebrow,
.masthead-note,
.cite,
.piece-ref,
.status,
.btn,
.cat-verse-ref,
.cat-stats dt,
.division-name small,
.book-incipit a,
.arm-verse-ref,
.exhibit-ref,
.exhibit-sub,
.xref-cite,
.tl-legend,
.tl-era,
.masthead-nav,
.ab-confession footer,
.src-host,
.gal-room-verse footer,
.gal-verse footer,
.book-note summary,
.witness-aside span,
.arm-index a,.src-index a,.cat-jump a,
.plate-open::after,
.plate-viewer-hint,
.plate-viewer-close,
.plate-viewer-step,
.colophon-nav,
.plate-viewer-magnify,
.closed-lamp figcaption,
.closed-halls h2{font-variant-numeric:lining-nums}

/* 🎨 36 — The legibility floor (screen only). Mixed-case proof lines (credits, licences, sources, citations)
   set in Garamond need more size than tracked capitals; uppercase labels, nav and chips are untouched. Print keeps 🎨 29–34. */
@media screen{
  .tl-plate figcaption,.gal-plate figcaption{font-size:.82rem;line-height:1.55}
  .tl-source{font-size:.86rem}
  .src-uses,.src-lic,.src-where{font-size:.86rem}
  .exposition-cite{font-size:.82rem}
  .book-note footer{font-size:.8rem;letter-spacing:.03em}
  .book-note footer a{font-size:.72rem}
  .book-ch{font-size:.78rem}
  .colophon-small{font-size:.86rem}
  .plate-viewer figcaption{font-size:.86rem}
}
@media screen and (max-width:640px){
  .tl-plate figcaption,.gal-plate figcaption{font-size:.8rem}
  .tl-source,.src-uses,.src-lic,.src-where{font-size:.82rem}
  .plate-viewer figcaption{font-size:.8rem}
}

/* 🎨 37 — The capitals floor (screen only). Tracked Garamond capitals (nav, chips, numerals, runner, panel labels)
   never fall below .7rem; tracking eases where width is tight. Print keeps 🎨 29–34.
   🎨 44: .book-order and .cat-stats dt removed — they became italic Cormorant in 🎨 11/21 (audit: _brain/tools/floor-audit.py). */
@media screen{
  .panoply-num{font-size:.7rem}
  .book-note summary,.book-incipit a{font-size:.7rem}
  .tl-runner-label,.tl-runner-span{font-size:.7rem}
  .tl-runner a{font-size:.7rem}
  .plate-open::after{font-size:.7rem}
  .plate-viewer-hint,.plate-viewer-step,.plate-viewer-magnify{font-size:.7rem}
  .witness-aside span,.gal-facts dt{font-size:.7rem}
}
@media screen and (max-width:380px){
  .masthead-nav{font-size:.7rem;letter-spacing:.1em}
  .masthead-nav{column-gap:1.2rem}
  .tl-runner a{font-size:.7rem;letter-spacing:.08em;padding:0 .7rem}
  .arm-index a,.src-index a,.cat-jump a{font-size:.7rem}
  .hero-frontispiece .eyebrow{font-size:.7rem}
}

/* 🎨 38 — The finger's reach (screen only; sprint 2026-09-29-tap-targets). WCAG 2.5.8: the Gallery verse
   footers wrap on phones and stacked two 16px links — each is now a ≥24px block. On touch screens the
   shared wayfinding (hall index, mark, Catalogue panels, "Read" links) opens to a 44px reach; the look is unchanged. */
@media screen{
  .gal-verse footer a{display:inline-block;padding:.25rem 0}
}
@media screen and (pointer:coarse){
  .masthead-nav a{display:inline-flex;align-items:center;min-height:44px;padding-top:0;padding-bottom:0}
  .brand{min-height:46px;margin-top:-9px;margin-bottom:-9px}
  html.mast-pinned .brand{margin-top:0;margin-bottom:0}
  .book-note summary{min-height:44px;padding-top:0;padding-bottom:0}
  .book-incipit a{display:inline-flex;align-items:center;min-height:44px;margin:-13px 0}
  html.mast-pinned .masthead{padding-top:0;padding-bottom:0}
  html.mast-pinned .masthead-nav a{padding:0}
  .book,.gal-case{scroll-margin-top:7rem}
  /* The rules stay where the eye expects them: drawn just beneath the words, not at the foot of the taller box. */
  .masthead-nav a,.masthead-nav a:hover,.masthead-nav a[aria-current="page"]{border-bottom-color:transparent}
  .masthead-nav a[aria-current="page"]{background:linear-gradient(var(--gold),var(--gold)) 0 calc(50% + .95em)/100% 1px no-repeat}
  .book-incipit a{border-bottom:0;background:linear-gradient(rgba(110,32,32,.3),rgba(110,32,32,.3)) 0 calc(50% + .7em)/100% 1px no-repeat}
  .book-incipit a:focus-visible{background-image:linear-gradient(var(--gold),var(--gold))}
}

/* 🎨 39 — The Reading Room's finding aid (sprint 2026-09-29-reading-room-finding-aid). A ruled leaf at the head
   of the registers, set like them: Garamond capitals, a gold double rule, an oxblood focus. The form ships hidden
   and appears only when sources-find.js runs. Hidden entries and sections are truly removed from the page. */
.src-find[hidden],.src-find-none[hidden],.src-find-clear[hidden],.src-list > li[hidden],.src-sec[hidden]{display:none!important}
.src-find{--leaf:#fbf7ee;position:relative;margin:0 0 clamp(2.6rem,5vw,4rem);padding:clamp(1.1rem,2.4vw,1.7rem) clamp(1.2rem,3vw,2.4rem) clamp(1rem,2vw,1.4rem);
  background:linear-gradient(180deg,rgba(255,253,247,.9),rgba(255,253,247,0) 8rem),var(--leaf);border:1px solid rgba(110,32,32,.14);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
.src-find::after{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--leaf);pointer-events:none}
.src-find .eyebrow{color:var(--gold-deep);margin:0 0 .35rem;text-align:center}
.src-find-label{display:block;text-align:center;font-family:var(--display);font-weight:500;font-size:clamp(1.25rem,1.05rem + .9vw,1.7rem);line-height:1.2;color:var(--ink);margin:0 0 .9rem;text-wrap:balance}
.src-find-field{display:flex;align-items:stretch;gap:.6rem;max-width:40rem;margin:0 auto;border-bottom:3px double rgba(184,146,74,.7);transition:border-color .2s ease}
.src-find-field:focus-within{border-bottom-color:var(--oxblood)}
.src-find input{flex:1 1 auto;min-width:0;min-height:48px;margin:0;padding:.35rem .2rem;border:0;border-radius:0;background:transparent;
  font-family:var(--serif);font-size:clamp(1.08rem,1rem + .3vw,1.22rem);color:var(--ink);-webkit-appearance:none;appearance:none}
.src-find input::placeholder{color:var(--ink-soft);font-style:italic;opacity:1}
.src-find input:focus,.src-find input:focus-visible{outline:none}
.src-find input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.src-find-clear{flex:none;align-self:center;min-height:44px;padding:0 .9rem;border:1px solid rgba(110,32,32,.35);background:transparent;cursor:pointer;
  font-family:var(--label);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--oxblood)}
.src-find-clear:hover{background:var(--oxblood);border-color:var(--oxblood);color:var(--leaf)}
.src-find-clear:focus-visible{outline:2px solid var(--oxblood);outline-offset:3px}
.src-find-status{text-align:center;margin:.8rem 0 0;font-style:italic;font-size:clamp(.95rem,.92rem + .15vw,1.05rem);color:var(--ink-soft)}
.src-find-none{text-align:center;margin:0 auto clamp(2.6rem,5vw,4rem);max-width:34rem;font-family:var(--display);font-style:italic;font-size:clamp(1.2rem,1.05rem + .6vw,1.5rem);line-height:1.35;color:var(--ink)}
::highlight(bm-find){background-color:rgba(184,146,74,.34);color:inherit}
.src-index a[aria-disabled="true"]{opacity:.42;cursor:default;pointer-events:none}
@media (max-width:480px){.src-find{padding:1rem .9rem .9rem;box-shadow:inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.3),0 18px 40px -30px rgba(20,27,38,.55)}
  .src-find-field{gap:.4rem}.src-find-clear{padding:0 .65rem;letter-spacing:.1em}}
@media (prefers-reduced-motion:reduce){.src-find-field{transition:none}}
/* On paper the finder itself is not printed; if a filter is active, the status line prints so the leaf says it is a selection. */
@media print{.src-find{box-shadow:none;background:none;border:0;padding:0;margin:0 0 1rem}.src-find::after,.src-find .eyebrow,.src-find-label,.src-find-field{display:none}
  html:not(.src-filtered) .src-find{display:none!important}}

/* 🎨 40 — The Timeline's finding aid (sprint 2026-09-29-timeline-finding-aid). The Reading Room's leaf (🎨 39), hung
   at the head of the dated entries. A period whose first entry does not match keeps its heading alone (.tl-head-only);
   period cells with no match dim and are skipped. The form ships hidden and appears only when timeline-find.js runs. */
.tl > .tl-item[hidden],.tl-find-none[hidden]{display:none!important}
.tl-find{max-width:52rem;margin-left:auto;margin-right:auto}
.tl-find-none{margin-top:0}
.tl-head-only > .tl-card{display:none!important}
.tl-head-only .tl-era{margin-bottom:clamp(.8rem,1.6vw,1.2rem)}
.tl-periods a[aria-disabled="true"]{opacity:.42;cursor:default;pointer-events:none}
@media print{html.tl-filtered .src-find.tl-find{display:block!important}}

/* 🎨 41 — The category seals (sprint 2026-09-29-timeline-category-seals). timeline-find.js turns the hero legend into
   pressable seals: one strand at a time, pressed again to release. The legend keeps its dot, capitals and count;
   the pressed seal takes a tooled gold frame and a filled dot, the others step back. Without JS it stays a legend. */
.tl-legend.tl-seals{gap:.35rem .5rem}
.tl-seal{display:inline-flex;align-items:center;gap:.5rem;margin:0;padding:.5rem .85rem;min-height:36px;cursor:pointer;
  font:inherit;letter-spacing:inherit;text-transform:inherit;color:var(--vellum);background:transparent;
  border:1px solid transparent;border-radius:0;transition:border-color .2s ease,background-color .2s ease,color .2s ease}
.tl-seal:hover{border-color:rgba(184,146,74,.5)}
.tl-seal:focus-visible{outline:2px solid var(--gold-soft);outline-offset:3px}
.tl-seal[aria-pressed="true"]{border-color:var(--gold);background:rgba(184,146,74,.14);color:#fbf7ee;
  box-shadow:inset 0 0 0 3px rgba(20,27,38,.55),inset 0 0 0 4px rgba(216,192,138,.45)}
.tl-seal[aria-pressed="true"] .tl-dot{box-shadow:0 0 0 3px rgba(216,192,138,.55)}
.tl-seal[aria-pressed="true"] .tl-count{color:#fbf7ee}
html.tl-sealed .tl-seal[aria-pressed="false"]{color:#bfb39b}
html.tl-sealed .tl-seal[aria-pressed="false"] .tl-dot{opacity:.55}
html.tl-sealed .tl-seal[aria-pressed="false"]:hover{color:var(--vellum)}
@media screen and (pointer:coarse){.tl-seal{min-height:44px}}
@media (max-width:480px){.tl-legend.tl-seals{gap:.25rem}}
@media (prefers-reduced-motion:reduce){.tl-seal{transition:none}}
@media print{.tl-seal{padding:0;border:0;background:none;box-shadow:none;min-height:0}}

/* 🎨 42 — The Catalogue's finding aid (sprint 2026-09-29-catalogue-finding-aid). The Reading Room's leaf (🎨 39), hung
   between the hall's entrance and its shelves. Unmatched books, shelves left empty and an empty testament are removed;
   a testament register cell with no match dims. The wrapper ships hidden and appears only when catalogue-find.js runs. */
.cat-find-hall[hidden],.cat-find-none[hidden],.book-shelf > .book[hidden],.division[hidden],section.testament[hidden]{display:none!important}
.cat-find-hall{padding:clamp(2.8rem,5vw,4.2rem) 0 0}
.cat-find{max-width:52rem;margin-left:auto;margin-right:auto}
.cat-find-none{margin-top:0}
.cat-find-hall:not([hidden]) + .testament,.cat-find-hall:not([hidden]) + .testament[hidden] + .testament{padding-top:clamp(.5rem,1.5vw,1.2rem)}
.cat-find-hall:not([hidden]) + .testament[hidden] + .testament{border-top:0;background:transparent}
.cat-hero .cat-jump a[aria-disabled="true"]{opacity:.42;cursor:default;pointer-events:none}
@media print{.cat-find-hall{padding:0}html.cat-filtered .src-find.cat-find{display:block!important}}

/* 🎨 43 — The period labels restored. 🎨 37's capitals floor had caught .tl-era/.tl-era-span after 🎨 22 made them
   Cormorant shelf labels (title 11.2px at ≤380; the italic span 11.2px and tracked at every width). Screen only. */
@media screen{
  .tl-era-span{font-size:clamp(.98rem,.94rem + .2vw,1.1rem);letter-spacing:.02em}
}
@media screen and (max-width:480px){
  .tl-era-span{font-size:1rem;letter-spacing:.01em}
}
@media screen and (max-width:380px){
  .tl-era-span{font-size:.96rem}
}
/* 🎨 45 The onward doors (sprint 2026-09-29-onward-doors). The closing bands of the Armoury, Gallery, Timeline and About
   halls hang their existing links as the house register (🎨 18/25/27 vocabulary): double gold rules, a riding lozenge,
   hairline cells, each door under its hall's own headpiece, the unchanged words in the display serif. Vellum ground. */
.acl-register{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;max-width:36rem;margin:2.2rem auto 0;padding:0;
  border-top:3px double rgba(184,146,74,.7);border-bottom:3px double rgba(184,146,74,.7)}
.acl-register.acl-3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:46rem}
.acl-register::before{content:"";position:absolute;left:50%;top:-6px;width:8px;height:8px;margin-left:-4px;background:var(--gold);transform:rotate(45deg);box-shadow:0 0 0 3px var(--vellum)}
.acl-door{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.5rem;min-width:0;min-height:44px;box-sizing:border-box;
  padding:1.25rem .8rem 1.2rem;text-decoration:none;color:var(--ink);background:transparent;transition:background-color .3s ease,color .3s ease}
.acl-door+.acl-door{box-shadow:-1px 0 0 rgba(184,146,74,.35)}
.acl-door .hall-headpiece{margin:0;color:var(--gold-deep)}
.acl-door .hp-rule{display:none}
.acl-door .hall-emblem{width:clamp(2.3rem,2.1rem + .6vw,2.8rem);filter:none;transition:color .3s ease,transform .35s ease}
.acl-name{display:block;font-family:var(--display);font-weight:500;font-size:clamp(1.1rem,1.02rem + .3vw,1.3rem);line-height:1.2;letter-spacing:.01em;text-wrap:balance;overflow-wrap:normal}
.acl-name::after{content:"";display:block;width:1.6rem;height:1px;margin:.55rem auto 0;background:rgba(184,146,74,.6);transition:width .3s ease,background-color .3s ease}
.acl-door:hover{background:radial-gradient(120% 70% at 50% 0,rgba(184,146,74,.16),rgba(184,146,74,0) 72%);color:var(--oxblood)}
.acl-door:hover .hall-headpiece{color:var(--oxblood)}
.acl-door:hover .acl-name::after{width:3rem;background:var(--oxblood)}
.acl-door:active{background-color:rgba(184,146,74,.12)}
.acl-door:focus-visible{outline:2px solid var(--oxblood);outline-offset:-4px;color:var(--oxblood)}
@media (max-width:640px){
  .acl-register,.acl-register.acl-3{grid-template-columns:1fr;max-width:26rem}
  .acl-door{flex-direction:row;justify-content:flex-start;gap:1rem;padding:.8rem 1rem;text-align:left}
  .acl-door+.acl-door{box-shadow:0 -1px 0 rgba(184,146,74,.35)}
  .acl-door .hall-emblem{width:2.2rem}
  .acl-name::after{display:none}
  .acl-name{flex:1}
  .acl-door::after{content:"\2192";font-family:var(--display);font-size:1.2rem;color:var(--gold-deep)}
  .acl-door:hover::after{color:var(--oxblood)}}
@media (max-width:380px){.acl-door{gap:.8rem;padding:.75rem .7rem}.acl-name{font-size:1.05rem}.acl-door .hall-emblem{width:2rem}}
@media (prefers-reduced-motion:reduce){.acl-door,.acl-door .hall-emblem,.acl-name::after{transition:none}}
@media print{.acl-register{display:none!important}}
/* 🎨 47 The closed leaf (sprint 2026-09-29-closed-leaf). The "Temporarily closed" state of Armoury, Gallery, Timeline,
   Catalogue and Reading Room, mounted as a leaf in the house language: vellum-white, gold top rule with a riding lozenge,
   tooled inset hairline (🎨 23), the closed-door headpiece (🎨 18), and the way back as a one-door register (🎨 45)
   carrying the house mark. Words unchanged. Eyebrow in gold-deep for AA on the light leaf. */
.cat-empty{padding:clamp(3rem,2.4rem + 3vw,6rem) 0}
.ce-leaf{--leaf:#fbf7ee;position:relative;max-width:40rem;margin:0 auto;text-align:center;
  padding:clamp(2rem,1.6rem + 1.6vw,3rem) clamp(1.2rem,.9rem + 2vw,3rem) clamp(1.8rem,1.5rem + 1.2vw,2.6rem);
  background:radial-gradient(120% 50% at 50% 0,rgba(255,253,247,.95),rgba(255,253,247,0) 70%),var(--leaf);
  border:1px solid rgba(184,146,74,.45);border-top:3px solid var(--gold);
  box-shadow:inset 0 0 0 7px var(--leaf),inset 0 0 0 8px rgba(184,146,74,.28),0 24px 46px -32px rgba(20,27,38,.55)}
.ce-leaf::before{content:"";position:absolute;left:50%;top:-1.5px;width:9px;height:9px;background:var(--gold);
  transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 0 3px var(--parchment);pointer-events:none}
.ce-leaf .hall-headpiece{color:var(--gold-deep);margin-bottom:1rem}
.ce-leaf .hall-emblem{filter:none}
.ce-leaf .eyebrow{color:var(--gold-deep)}
.cat-empty .ce-leaf h2{font-family:var(--display);font-weight:500;font-size:clamp(1.55rem,1.25rem + 1.3vw,2.35rem);line-height:1.12;
  text-wrap:balance;margin:0 auto .9rem;max-width:26ch;color:var(--ink)}
.ce-leaf > p:not(.eyebrow){max-width:32rem;margin:0 auto;line-height:1.65;color:var(--ink-soft);text-wrap:pretty}
.cat-empty .ce-leaf .src-list{max-width:34rem;margin:1.5rem auto 0;padding:0;text-align:left;background:none;border:0;box-shadow:none;
  border-top:1px solid rgba(184,146,74,.45);border-bottom:1px solid rgba(184,146,74,.45)}
.cat-empty .ce-leaf .src-list::after{display:none}
.ce-return.acl-register{grid-template-columns:1fr;max-width:18rem;margin-top:1.9rem}
.ce-return.acl-register::before{box-shadow:0 0 0 3px var(--leaf)}
@media (max-width:640px){.ce-return.acl-register{max-width:20rem}}
@media (max-width:380px){.ce-leaf{padding-left:1rem;padding-right:1rem}.ce-leaf .hall-emblem{width:2.5rem}}
@media print{.ce-leaf{box-shadow:none;background:none}.ce-leaf::before{display:none}}

/* 🎨 48 — The colophon as a directory (sprint 2026-09-29-colophon-directory).
   The footer lays out the whole museum in three ruled shelves (Exhibits · Library · House); each door carries its hall's
   headpiece emblem, its name in Cormorant and a one-line italic description. Then the terms of the house, then a base line.
   Stacks to one column of emblem rows on phones; identity sits beside the shelves on wide screens. Print keeps the colophon
   text and drops the directory, like the old nav. */
.colophon{text-align:left}
.colophon-inner{max-width:76rem;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(2rem,1.4rem + 2vw,3rem)}
.colophon-id{text-align:center}
.colophon-id .colophon-mark{margin:0 auto .9rem}
.colophon-tag{margin:0 auto 1rem;font-family:var(--label);font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-soft);font-variant-numeric:lining-nums}
.colophon .colophon-id .colophon-motto{margin:0 auto;max-width:34rem}
.cd-head{position:relative;margin:0 0 1rem;padding-bottom:.7rem;font-family:var(--label);font-weight:400;font-size:.76rem;line-height:1.4;
  letter-spacing:.22em;text-transform:uppercase;color:var(--gold-soft);font-variant-numeric:lining-nums}
.cd-head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,rgba(184,146,74,.75),rgba(184,146,74,.12))}
.cd-head::before{content:"";position:absolute;left:0;bottom:-3px;width:7px;height:7px;background:var(--gold);transform:rotate(45deg)}
.colophon-dir{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.4rem,1rem + 1.6vw,2.6rem)}
.colophon-dir ul{list-style:none;margin:0;padding:0}
.colophon-dir li+li{border-top:1px solid rgba(184,146,74,.16)}
.cd-door{display:flex;align-items:flex-start;gap:.85rem;min-height:44px;padding:.7rem .2rem .75rem;color:var(--vellum);text-decoration:none;border-radius:2px}
.cd-door .hall-headpiece{margin:.1rem 0 0;color:rgba(216,192,138,.78);flex:none}
.cd-door .hp-rule{display:none}
.cd-door .hall-emblem{width:2.1rem;filter:none;transition:color .3s ease,transform .35s ease}
.cd-text{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.cd-name{font-family:var(--display);font-weight:500;font-size:clamp(1.12rem,1.02rem + .35vw,1.3rem);line-height:1.2;color:#f3ecdc;
  background:linear-gradient(var(--gold),var(--gold)) 0 100%/0 1px no-repeat;padding-bottom:2px;align-self:flex-start;transition:background-size .3s ease,color .3s ease}
.cd-desc{font-style:italic;font-size:.9rem;line-height:1.45;color:rgba(235,226,207,.78);overflow-wrap:break-word}
.cd-door:hover .cd-name,.cd-door:focus-visible .cd-name{color:#fff;background-size:100% 1px}
.cd-door:hover .hall-headpiece,.cd-door:focus-visible .hall-headpiece{color:var(--gold-soft)}
.cd-door:hover .hall-emblem{transform:translateY(-1px)}
.cd-door[aria-current="page"] .cd-name{color:var(--gold-soft);background-size:100% 1px}
.cd-door[aria-current="page"] .hall-headpiece{color:var(--gold)}
.cd-door[aria-current="page"] .cd-desc::before{content:"You are here";display:block;margin:.05rem 0 .1rem;font-style:normal;font-family:var(--label);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-soft)}
.colophon-terms{border-top:1px solid rgba(184,146,74,.3);padding-top:clamp(1.4rem,1rem + 1vw,2rem);display:grid;grid-template-columns:minmax(0,1fr);gap:.2rem 2rem}
.colophon-terms .cd-head{grid-column:1/-1}
.colophon .colophon-terms .colophon-small{margin:0 0 .6rem;max-width:none;opacity:1;color:rgba(235,226,207,.8);line-height:1.6}
.colophon-base{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem 1.5rem;border-top:1px solid rgba(184,146,74,.2);padding-top:1rem;margin-top:-1rem}
.colophon .colophon-base .colophon-small{margin:0;max-width:none;opacity:1;color:rgba(235,226,207,.72)}
.colophon .colophon-top{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;font-family:var(--label);font-size:.74rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--vellum);text-decoration:none;font-variant-numeric:lining-nums}
.colophon .colophon-top:hover{color:#fff}
.colophon .colophon-top span{color:var(--gold);font-size:1.1em;transition:transform .3s ease}
.colophon .colophon-top:hover span{transform:translateY(-2px)}
@media (min-width:900px){.colophon-terms{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1100px){
  .colophon-inner{grid-template-columns:minmax(15rem,.8fr) minmax(0,3fr);column-gap:clamp(2.5rem,1rem + 3vw,5rem)}
  .colophon-id{text-align:left;padding-top:.2rem}
  .colophon-id .colophon-mark{flex-direction:row;margin:0 0 1rem;gap:.8rem}
  .colophon-tag,.colophon .colophon-id .colophon-motto{margin-left:0}
  .colophon-terms,.colophon-base,.colophon-printed{grid-column:1/-1}}
@media (max-width:900px){.colophon-dir{grid-template-columns:repeat(2,minmax(0,1fr))}.cd-shelf:first-child{grid-column:1/-1}
  .cd-shelf:first-child ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:1.4rem}
  .cd-shelf:first-child li+li{border-top:0}}
@media (max-width:640px){.colophon-dir{grid-template-columns:minmax(0,1fr)}.cd-shelf:first-child ul{display:block}
  .cd-shelf:first-child li+li{border-top:1px solid rgba(184,146,74,.16)}
  .colophon-base{justify-content:center;text-align:center;flex-direction:column-reverse}}
@media (max-width:380px){.cd-door{gap:.7rem}.cd-door .hall-emblem{width:1.85rem}.cd-desc{font-size:.86rem}}
@media (prefers-reduced-motion:reduce){.cd-name,.cd-door .hall-emblem,.colophon .colophon-top span{transition:none}.cd-door:hover .hall-emblem,.colophon .colophon-top:hover span{transform:none}}
@media print{.colophon-dir,.colophon-base .colophon-top{display:none!important}.colophon-inner{display:block}
  .colophon-id,.colophon-terms,.colophon-base{text-align:center}.colophon-terms,.colophon-base{border:0!important;padding-top:2mm;margin:0;display:block}
  .colophon-terms .cd-head{display:none}.colophon-tag{color:var(--ink-soft)!important}}

/* 🎨 49 — The hall menu (sprint 2026-09-29-masthead-hall-menu). Above 640px nothing changes: the emblem and the
   one-line description inside each hall link stay hidden and the button is never shown. On phones, once masthead.js
   is running (html.mast-menu-ready), the 3×2 grid folds behind a "Halls" button. It opens as a night leaf of doors,
   in the colophon's language (🎨 48): emblem · Cormorant name · italic line · "You are here" · a gold arrow.
   The leaf hangs from the bar over the page, so nothing beneath it moves. Without JS, the nav is shown as before. */
.mast-menu{display:none}
.masthead-nav .hall-headpiece,.masthead-nav .mn-desc{display:none}
@media screen{ /* 🎨 54: keyed on html.mast-fold (masthead.js: ≤767px, or wherever the one-row bar no longer fits) */
  html.mast-fold .masthead{flex-wrap:nowrap;justify-content:space-between;gap:.75rem;row-gap:0}
  html.mast-fold body:has(.plain) .masthead,html.mast-fold body:has(.closed-room) .masthead{position:relative;z-index:6}
  html.mast-fold .mast-menu{display:inline-flex;align-items:center;gap:.55rem;flex:none;min-width:44px;min-height:44px;margin:0 -.2rem 0 0;padding:0 .85rem;
    font-family:var(--label);font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;line-height:1;color:var(--vellum);
    background:rgba(20,27,38,.35);border:1px solid rgba(184,146,74,.55);border-radius:2px;cursor:pointer;
    transition:color .2s ease,border-color .2s ease,background-color .2s ease}
  html.mast-fold .mast-menu span{padding-top:.08em}
  html.mast-fold .mast-menu:hover{color:#fff;border-color:var(--gold)}
  html.mast-fold .mast-menu:focus-visible{outline:3px solid var(--gold-soft);outline-offset:2px}
  .mast-menu-icon{width:1.15rem;height:1.15rem;color:var(--gold-soft);overflow:visible}
  .mast-menu-icon .mm-t,.mast-menu-icon .mm-b{transform-origin:10px 10px;transition:transform .28s cubic-bezier(.2,.7,.2,1)}
  .mast-menu-icon .mm-m{transition:opacity .2s ease}
  html.mast-fold.mast-menu-open .mast-menu{color:var(--gold-soft);border-color:var(--gold);background:rgba(20,27,38,.85)}
  html.mast-fold.mast-menu-open .mast-menu-icon .mm-t{transform:rotate(45deg) translateY(5px)}
  html.mast-fold.mast-menu-open .mast-menu-icon .mm-b{transform:rotate(-45deg) translateY(-5px)}
  html.mast-fold.mast-menu-open .mast-menu-icon .mm-m{opacity:0}

  /* Closed: the leaf is folded away (and out of the reading order). */
  html.mast-fold .masthead-nav{display:none}
  /* Open: the bar takes the night ground so bar and leaf read as one piece. */
  html.mast-fold.mast-menu-open .masthead{z-index:7;background:var(--night);box-shadow:0 1px 0 rgba(184,146,74,.35)}
  html.mast-fold.mast-menu-open .masthead-nav{display:block;justify-items:stretch;position:absolute;top:100%;left:0;right:0;z-index:1;
    max-height:calc(100vh - 5rem);max-height:calc(100dvh - 5rem);overflow-y:auto;overscroll-behavior:contain;
    margin:0;padding:.35rem var(--gutter) 1.1rem;background:var(--night);
    border-top:1px solid rgba(184,146,74,.55);border-bottom:1px solid rgba(184,146,74,.55);
    box-shadow:0 22px 40px -18px rgba(10,14,20,.9);
    font-family:var(--serif);font-size:1rem;letter-spacing:0;text-transform:none;
    animation:mn-open .26s cubic-bezier(.2,.7,.2,1) both}
  /* A tooled inner hairline, as on the leaves and labels. */
  html.mast-fold.mast-menu-open .masthead-nav::before{content:"";position:absolute;inset:.45rem calc(var(--gutter) - .55rem) .45rem;border:1px solid rgba(184,146,74,.18);pointer-events:none}
  html.mast-fold .masthead-nav a{position:relative;display:grid;justify-self:stretch;width:auto;grid-template-columns:2.1rem minmax(0,1fr) auto;align-items:center;column-gap:.9rem;
    min-height:56px;padding:.7rem .35rem;margin:0;color:var(--vellum);white-space:normal;text-transform:none;letter-spacing:0;
    border:0;border-bottom:1px solid rgba(184,146,74,.2);background:none;border-radius:0}
  html.mast-fold .masthead-nav a:last-child{border-bottom:0}
  html.mast-fold .masthead-nav a::after{content:"\2192";content:"\2192" / "";font-family:var(--display);font-size:1.15rem;line-height:1;color:rgba(216,192,138,.55);transition:transform .25s ease,color .25s ease}
  html.mast-fold .masthead-nav .hall-headpiece{display:flex;margin:0;color:rgba(216,192,138,.78)}
  html.mast-fold .masthead-nav .hp-rule{display:none}
  html.mast-fold .masthead-nav .hall-emblem{width:2.1rem;height:auto;filter:none}
  html.mast-fold .masthead-nav .mn-text{display:flex;flex-direction:column;gap:.1rem;min-width:0}
  html.mast-fold .masthead-nav .mn-name{font-family:var(--display);font-weight:500;font-size:1.3rem;line-height:1.15;color:#f3ecdc}
  html.mast-fold .masthead-nav .mn-desc{display:block;font-style:italic;font-size:.9rem;line-height:1.4;color:rgba(235,226,207,.8);overflow-wrap:break-word}
  html.mast-fold .masthead-nav a:hover,html.mast-fold .masthead-nav a:focus-visible{background:rgba(235,226,207,.045);color:#fff}
  html.mast-fold .masthead-nav a:hover::after,html.mast-fold .masthead-nav a:focus-visible::after{color:var(--gold-soft);transform:translateX(3px)}
  html.mast-fold .masthead-nav a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:-2px}
  /* The hall you are in: gold name, gold emblem, a gold rule at the margin and the colophon's "You are here". */
  html.mast-fold .masthead-nav a[aria-current="page"]{background:linear-gradient(90deg,rgba(184,146,74,.12),rgba(184,146,74,0) 70%);box-shadow:inset 2px 0 0 var(--gold)}
  html.mast-fold .masthead-nav a[aria-current="page"] .mn-name{color:var(--gold-soft)}
  html.mast-fold .masthead-nav a[aria-current="page"] .hall-headpiece{color:var(--gold)}
  html.mast-fold .masthead-nav a[aria-current="page"] .mn-desc::before{content:"You are here";display:block;margin:.05rem 0 .1rem;font-style:normal;font-family:var(--label);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-soft)}
  html.mast-fold .masthead-nav a[aria-current="page"]::after{content:"\25C6";content:"\25C6" / "";font-size:.7rem;color:var(--gold)}
}
@media screen and (max-width:380px){
  html.mast-menu-ready .mast-menu{padding:0 .7rem;letter-spacing:.16em}
  html.mast-menu-ready .masthead-nav a{column-gap:.75rem;grid-template-columns:1.85rem minmax(0,1fr) auto}
  html.mast-menu-ready .masthead-nav .hall-emblem{width:1.85rem}
  html.mast-menu-ready .masthead-nav .mn-name{font-size:1.2rem}
  html.mast-menu-ready .masthead-nav .mn-desc{font-size:.86rem}
}
@keyframes mn-open{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.mast-menu-icon .mm-t,.mast-menu-icon .mm-b,.mast-menu-icon .mm-m,html.mast-menu-ready .masthead-nav a::after{transition:none}html.mast-menu-open .masthead-nav{animation:none}}
@media print{.mast-menu{display:none!important}}

/* 🎨 50 — The hall register (sprint 2026-09-29-masthead-hall-register). Above 640px only; the phone hall menu (🎨 49)
   and its no-JS grid are untouched. The hall you stand in carries the house mark (a gold rule broken by a riding
   lozenge); other halls draw a quiet hairline out from the centre on hover or keyboard focus. Tablets: one row where it fits. */
@media (min-width:641px){
  .masthead-nav a{--mn-y:100%;position:relative;border-bottom-color:transparent;
    background:linear-gradient(var(--gold-soft),var(--gold-soft)) 50% var(--mn-y)/0 1px no-repeat;transition:color .25s ease,background-size .3s cubic-bezier(.2,.7,.2,1)}
  .masthead-nav a:hover,.masthead-nav a:focus-visible{color:#fff;border-bottom-color:transparent;background-size:100% 1px}
  .masthead-nav a[aria-current="page"],.masthead-nav a[aria-current="page"]:hover{color:var(--gold-soft);border-bottom-color:transparent;
    background:linear-gradient(var(--gold),var(--gold)) 0 var(--mn-y)/calc(50% - 6px) 1px no-repeat,linear-gradient(var(--gold),var(--gold)) 100% var(--mn-y)/calc(50% - 6px) 1px no-repeat}
  .masthead-nav a[aria-current="page"]:hover{color:#fff}
  .masthead-nav a[aria-current="page"]::after{content:"";position:absolute;left:50%;top:calc(var(--mn-y) - 3px);width:5px;height:5px;
    background:var(--gold);transform:translateX(-50%) rotate(45deg);pointer-events:none}
  .masthead-nav a:focus-visible{outline:2px solid var(--gold-soft);outline-offset:4px}
}
@media screen and (min-width:641px) and (pointer:coarse){
  .masthead-nav a{--mn-y:calc(50% + 1.2em)}
  .masthead-nav a,.masthead-nav a:hover,.masthead-nav a[aria-current="page"]{border-bottom-color:transparent}
}
@media (min-width:641px) and (max-width:1024px){
  .masthead{column-gap:1.4rem}
  .masthead-nav{gap:.2rem .95rem;letter-spacing:.13em}
}
/* From 768px (a tablet held upright) the mark and the six halls share one row where they fit: mark at the left, halls at the right.
   Since POLISH-C9's fuller names the one-row bar needs ~880px; below that masthead.js folds it behind "Halls" (POLISH-C10). */
@media (min-width:768px) and (max-width:900px){
  .brand{letter-spacing:.1em}
  .masthead{column-gap:1rem}
  .masthead-nav{gap:.2rem .8rem;letter-spacing:.11em}
}
@media (min-width:768px) and (max-width:1024px){.masthead{justify-content:space-between}}
@media (prefers-reduced-motion:reduce){.masthead-nav a{transition:none}}
@media print{.masthead-nav a[aria-current="page"]::after{display:none}}

/* 🎨 51 — The finding door (sprint 2026-09-29-masthead-find). One "Find" control in the masthead, at every width. It is a
   native <details>, so it opens without JS, and its leaf is one search form whose three doors send the same words to
   the existing finders (Timeline, Catalogue, Reading Room ?q=). The leaf is a night leaf in the hall menu's language (🎨 49):
   a gold rule with a riding lozenge, a tooled inner hairline, and doors of emblem · Cormorant name · italic line · arrow. */
.mast-find{position:relative;flex:none;font-family:var(--label);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase}
.mast-find-btn{display:inline-flex;align-items:center;gap:.5rem;min-height:31px;padding:.35rem 0 .35rem 1.1rem;
  border-left:1px solid rgba(184,146,74,.4);color:var(--vellum);cursor:pointer;list-style:none;white-space:nowrap;
  -webkit-user-select:none;user-select:none;transition:color .25s ease}
.mast-find-btn::-webkit-details-marker{display:none}
.mast-find-btn::marker{content:""}
.mast-find-icon{flex:none;width:1.1rem;height:1.1rem;color:var(--gold-soft);overflow:visible;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.mast-find-btn:hover{color:#fff}
.mast-find-btn:hover .mast-find-icon{transform:rotate(-8deg) scale(1.06)}
.mast-find-btn:focus-visible{outline:2px solid var(--gold-soft);outline-offset:4px}
.mast-find[open] .mast-find-btn{color:var(--gold-soft)}
.mast-find[open] .mast-find-icon{color:var(--gold)}
.mf-word{padding-top:.08em}

.mast-find-leaf{position:absolute;top:calc(100% + .7rem);right:0;z-index:1;width:min(26rem,calc(100vw - 2 * var(--gutter)));
  max-height:calc(100vh - 6rem);max-height:calc(100dvh - 6rem);overflow-y:auto;overscroll-behavior:contain;
  margin:0;padding:1.35rem 1.35rem .9rem;background:var(--night);color:var(--vellum);
  border:1px solid rgba(184,146,74,.55);box-shadow:0 22px 40px -18px rgba(10,14,20,.9);
  font-family:var(--serif);font-size:1rem;line-height:1.45;letter-spacing:0;text-transform:none;text-align:left;
  animation:mf-open .26s cubic-bezier(.2,.7,.2,1) both}
@keyframes mf-open{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
/* The tooled inner hairline, with a lozenge riding it (drawn inside the leaf, so the scroll box never clips it). */
.mast-find-leaf::before{content:"";position:absolute;inset:.45rem;border:1px solid rgba(184,146,74,.18);pointer-events:none}
.mf-eyebrow{position:relative;margin:0 0 .3rem;text-align:center;font-family:var(--label);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-soft)}
.mf-eyebrow::before{content:"";position:absolute;left:50%;top:-.9rem;width:8px;height:8px;margin:-4.5px 0 0 -4px;background:var(--gold);transform:rotate(45deg)}
.mf-label{display:block;margin:0 0 .55rem;text-align:center;font-family:var(--display);font-weight:500;font-size:1.4rem;line-height:1.2;color:#f3ecdc}
.mf-field{display:flex;border-bottom:3px double rgba(184,146,74,.75);transition:border-color .2s ease}
.mf-field:focus-within{border-bottom-color:var(--gold-soft);outline:2px solid var(--gold-soft);outline-offset:4px}
.mf-field input{flex:1 1 auto;min-width:0;min-height:48px;margin:0;padding:.3rem .15rem;border:0;border-radius:0;background:transparent;
  color:#f3ecdc;font-family:var(--serif);font-size:1.15rem;line-height:1.3;-webkit-appearance:none;appearance:none}
.mf-field input::placeholder{color:rgba(235,226,207,.62);font-style:italic;opacity:1}
.mf-field input:focus,.mf-field input:focus-visible{outline:none}
.mf-field input::-webkit-search-cancel-button{filter:invert(.8) sepia(.4)}
.mf-note{margin:.55rem 0 .7rem;text-align:center;font-style:italic;font-size:.9rem;line-height:1.4;color:rgba(235,226,207,.82)}
.mf-rooms{border-top:1px solid rgba(184,146,74,.45)}
.mf-room{position:relative;display:grid;grid-template-columns:2rem minmax(0,1fr) auto;align-items:center;column-gap:.85rem;width:100%;
  min-height:56px;margin:0;padding:.6rem .35rem;border:0;border-bottom:1px solid rgba(184,146,74,.2);border-radius:0;background:none;
  color:var(--vellum);font:inherit;text-align:left;cursor:pointer;transition:background-color .2s ease,color .2s ease}
.mf-room:last-child{border-bottom:0}
.mf-room::after{content:"\2192";content:"\2192" / "";font-family:var(--display);font-size:1.15rem;line-height:1;color:rgba(216,192,138,.55);transition:transform .25s ease,color .25s ease}
.mf-room .hall-headpiece{display:flex;margin:0;gap:0;color:rgba(216,192,138,.78)}
.mf-room .hp-rule{display:none}
.mf-room .hall-emblem{width:2rem;height:auto;filter:none}
.mf-text{display:flex;flex-direction:column;gap:.05rem;min-width:0}
.mf-name{font-family:var(--display);font-weight:500;font-size:1.22rem;line-height:1.15;color:#f3ecdc}
.mf-line{font-style:italic;font-size:.88rem;line-height:1.35;color:rgba(235,226,207,.8);overflow-wrap:break-word}
.mf-room:hover,.mf-room:focus-visible{background:rgba(235,226,207,.045);color:#fff}
.mf-room:hover::after,.mf-room:focus-visible::after{color:var(--gold-soft);transform:translateX(3px)}
.mf-room:hover .hall-headpiece,.mf-room:focus-visible .hall-headpiece{color:var(--gold-soft)}
.mf-room:focus-visible{outline:2px solid var(--gold-soft);outline-offset:-2px}

/* With JS: the leaf hangs from the bar itself (not from the button), and the bar stays above the page while it is open.
   On the closed room and plain pages the masthead is lifted to relative only now, after the headroom has passed them by. */
html.mast-find-open .masthead{z-index:7}
html.mast-find-ready body:has(.plain) .masthead,html.mast-find-ready body:has(.closed-room) .masthead{position:relative;z-index:6}
html.mast-find-open body:has(.plain) .masthead,html.mast-find-open body:has(.closed-room) .masthead{z-index:7}
@media (min-width:768px){
  .masthead-nav{margin-left:auto}
  .masthead-note{margin-left:auto}
  html.mast-find-ready .mast-find{position:static}
  html.mast-find-ready .mast-find-leaf{top:100%;right:var(--gutter)}
  html.mast-pinned.mast-find-ready .mast-find-leaf{top:calc(100% + 1px)}
}
@media screen and (min-width:641px) and (pointer:coarse){.mast-find-btn{min-height:44px}}
/* Tablets held upright: the word "Find" is kept for screen readers and the glass alone shows, so the bar stays one row. */
@media (min-width:768px) and (max-width:900px){
  .masthead{column-gap:.8rem}
  .masthead-nav{gap:.2rem .55rem;letter-spacing:.09em}
  .brand{letter-spacing:.07em}
  .mast-find-btn{padding-left:.8rem;min-width:44px;justify-content:center}
  .mast-find-btn .mf-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
/* Phones (≤640) without JS: the leaf opens in the flow beneath the hall grid. */
@media (max-width:640px){
  .mast-find{flex-basis:100%;display:flex;flex-direction:column;align-items:center}
  .mast-find-btn{border-left:0;padding-left:0;min-height:44px}
  .mast-find-leaf{position:static;width:100%;margin:.3rem 0 .6rem}
}
/* Phones with JS: a 44px glass beside the Halls button; the leaf spans the bar, as the hall menu does. */
@media screen{ /* 🎨 54: html.mast-fold, as above */
  html.mast-fold .masthead{gap:.5rem}
  html.mast-fold .mast-menu{margin-left:auto}
  html.mast-fold .mast-find{position:static;flex-basis:auto;display:block}
  html.mast-fold .mast-find-btn{justify-content:center;width:44px;height:44px;min-height:44px;padding:0;
    background:rgba(20,27,38,.35);border:1px solid rgba(184,146,74,.55);border-radius:2px;transition:color .2s ease,border-color .2s ease,background-color .2s ease}
  html.mast-fold .mast-find-btn:hover{border-color:var(--gold)}
  html.mast-fold .mast-find-btn:focus-visible{outline:3px solid var(--gold-soft);outline-offset:2px}
  html.mast-fold .mast-find-btn .mf-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  html.mast-fold .mast-find[open] .mast-find-btn{border-color:var(--gold);background:rgba(20,27,38,.85)}
  html.mast-fold.mast-find-open .masthead{background:var(--night);box-shadow:0 1px 0 rgba(184,146,74,.35)}
  html.mast-fold .mast-find-leaf{position:absolute;top:100%;left:0;right:0;width:auto;margin:0;padding:1.5rem calc(var(--gutter) + .55rem) 1rem;
    border-left:0;border-right:0;max-height:calc(100vh - 5rem);max-height:calc(100dvh - 5rem)}
  html.mast-fold .mast-find-leaf::before{inset:.45rem calc(var(--gutter) - .55rem)}
  html.mast-fold .mf-eyebrow::before{top:-1.05rem}
}
/* The smallest phones: the wordmark stacks in two lines so the mark, the glass and the Halls button share one bar. */
@media screen and (max-width:380px){
  html.mast-find-ready:not(.mast-pinned) .brand span{white-space:normal;width:min-content;font-size:.84rem;line-height:1.08;letter-spacing:.12em}
}
/* A landing from the Find leaf (#tl-q, #cat-q, #src-q) sets the finder's heading and field clear of the top. */
#tl-q,#cat-q,#src-q{scroll-margin-top:clamp(7rem,16vh,10rem)}
@media (prefers-reduced-motion:reduce){.mast-find-leaf{animation:none}.mast-find-icon,.mast-find-btn,.mf-room,.mf-room::after{transition:none}.mast-find-btn:hover .mast-find-icon{transform:none}}
@media print{.mast-find{display:none!important}}

/* 🎨 52 — The last two-row bar folds into the hall menu (sprint 2026-09-29-masthead-small-tablet-menu).
   With JS, the 🎨 49 Halls menu and the 🎨 51 phone Find glass now reach 767px (sideways phones, small tablets), so the
   masthead is one bar at every width. Without JS, 641–767 keeps its two-row register exactly. Here the 🎨 50 register marks
   (the current hall's riding lozenge) are set aside inside the leaf, so its rows read as they do on phones. */
@media screen and (min-width:641px){ /* 🎨 54: a folded bar at any width ≥641 */
  html.mast-fold .masthead-nav a[aria-current="page"]::after{position:static;left:auto;top:auto;width:auto;height:auto;background:none;transform:none}
  html.mast-fold .masthead-nav a[aria-current="page"]:hover::after,html.mast-fold .masthead-nav a[aria-current="page"]:focus-visible::after{transform:translateX(3px)}
}
@media (prefers-reduced-motion:reduce){html.mast-menu-ready .masthead-nav a[aria-current="page"]:hover::after,html.mast-menu-ready .masthead-nav a[aria-current="page"]:focus-visible::after{transform:none}}

/* 🎨 53 — The finding shelf (sprint 2026-09-29-colophon-finding-shelf). The masthead's finding door (🎨 51) laid open in the
   colophon: a ruled shelf with the display label, one field on a double gold rule, and the three finders as doors in the
   colophon's own language (emblem · Cormorant name · italic line · arrow). Native form; no JS. Hidden on paper. */
.colophon-find{display:grid;grid-template-columns:minmax(0,1fr);gap:.4rem clamp(2rem,1rem + 3vw,4rem);margin:0;
  border-top:1px solid rgba(184,146,74,.3);padding-top:clamp(1.4rem,1rem + 1vw,2rem)}
.colophon-find .cd-head{grid-column:1/-1}
.cf-ask{min-width:0;text-align:center}
.cf-label{display:block;margin:0 0 .55rem;font-family:var(--display);font-weight:500;font-size:clamp(1.3rem,1.15rem + .6vw,1.6rem);line-height:1.2;color:#f3ecdc;text-wrap:balance}
.cf-field{display:flex;max-width:34rem;margin:0 auto;border-bottom:3px double rgba(184,146,74,.75);transition:border-color .2s ease}
.cf-field:focus-within{border-bottom-color:var(--gold-soft);outline:2px solid var(--gold-soft);outline-offset:4px}
.cf-field input{flex:1 1 auto;min-width:0;min-height:48px;margin:0;padding:.3rem .15rem;border:0;border-radius:0;background:transparent;
  color:#f3ecdc;font-family:var(--serif);font-size:1.15rem;line-height:1.3;-webkit-appearance:none;appearance:none}
.cf-field input::placeholder{color:rgba(235,226,207,.62);font-style:italic;opacity:1}
.cf-field input:focus,.cf-field input:focus-visible{outline:none;box-shadow:none}
.cf-field input::-webkit-search-cancel-button{filter:invert(.8) sepia(.4)}
.cf-note{margin:.55rem auto .9rem;max-width:34rem;font-style:italic;font-size:.9rem;line-height:1.4;color:rgba(235,226,207,.82)}
.cf-rooms{display:grid;grid-template-columns:minmax(0,1fr);border-top:1px solid rgba(184,146,74,.45);align-self:start}
.cf-room{position:relative;display:grid;grid-template-columns:2.1rem minmax(0,1fr) auto;align-items:center;column-gap:.85rem;width:100%;
  min-height:56px;margin:0;padding:.65rem .35rem;border:0;border-bottom:1px solid rgba(184,146,74,.2);border-radius:0;background:none;
  color:var(--vellum);font:inherit;text-align:left;cursor:pointer;transition:background-color .2s ease,color .2s ease}
.cf-room::after{content:"\2192";content:"\2192" / "";font-family:var(--display);font-size:1.15rem;line-height:1;color:rgba(216,192,138,.55);transition:transform .25s ease,color .25s ease}
.cf-room .hall-headpiece{display:flex;margin:0;gap:0;color:rgba(216,192,138,.78)}
.cf-room .hp-rule{display:none}
.cf-room .hall-emblem{width:2.1rem;height:auto;filter:none}
.cf-text{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.cf-name{font-family:var(--display);font-weight:500;font-size:clamp(1.12rem,1.02rem + .35vw,1.3rem);line-height:1.15;color:#f3ecdc}
.cf-line{font-style:italic;font-size:.88rem;line-height:1.4;color:rgba(235,226,207,.8);overflow-wrap:break-word}
.cf-room:hover,.cf-room:focus-visible{background:rgba(235,226,207,.045);color:#fff}
.cf-room:hover .cf-name,.cf-room:focus-visible .cf-name{color:#fff}
.cf-room:hover::after,.cf-room:focus-visible::after{color:var(--gold-soft);transform:translateX(3px)}
.cf-room:hover .hall-headpiece,.cf-room:focus-visible .hall-headpiece{color:var(--gold-soft)}
.colophon .cf-room:focus-visible{outline:2px solid var(--gold-soft);outline-offset:-2px}
@media (min-width:641px){
  .cf-rooms{grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid rgba(184,146,74,.2)}
  .cf-room{border-bottom:0;padding:.75rem .9rem}
  .cf-room+.cf-room{border-left:1px solid rgba(184,146,74,.2)}}
@media (min-width:1000px){
  .colophon-find{grid-template-columns:minmax(0,.85fr) minmax(0,2fr);align-items:start}
  .cf-ask{text-align:left}
  .cf-field,.cf-note{margin-left:0}
  .cf-rooms{margin-top:.2rem}}
@media (min-width:1100px){.colophon-find{grid-column:1/-1}}
@media (max-width:380px){.cf-room{column-gap:.7rem}.cf-room .hall-emblem{width:1.85rem}.cf-line{font-size:.86rem}}
@media (prefers-reduced-motion:reduce){.cf-field,.cf-room,.cf-room::after{transition:none}.cf-room:hover::after,.cf-room:focus-visible::after{transform:none}}
@media print{.colophon-find{display:none!important}}

/* 🎨 54 — The masthead holds at large text (sprint 2026-09-29-masthead-holds-at-large-text). WCAG 1.4.4 / 1.4.10.
   masthead.js folds the halls into the 🎨 49 Halls leaf (html.mast-fold) at ≤767px as before, and also at any width where
   the one-row bar would no longer fit — a reader who sets large text gets the same doors, not a bar running off the page.
   If the folded bar is still too wide, the wordmark wraps and the word "Halls" is kept for screen readers only (mast-tight);
   past that the wordmark itself is kept for screen readers only (mast-tighter; the mark keeps its "home" label).
   At normal text sizes nothing here applies above 767px. */
@media screen{
  html.mast-fold .masthead-note{display:none}
  /* A closed Find leaf takes no room at all (Chromium still counts its box in the page width). */
  .mast-find:not([open]) .mast-find-leaf{display:none}
  html.mast-tight .brand span{white-space:normal;width:min-content;line-height:1.08}
  html.mast-tight .mast-menu{padding:0 .6rem}
  html.mast-tight .mast-menu span,html.mast-tighter .brand span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  /* In a tight bar the leaf's doors give their emblem column to the words, so no description breaks mid-word. */
  html.mast-tight .masthead-nav a,html.mast-tight .mf-room{grid-template-columns:minmax(0,1fr) auto}
  html.mast-tight .masthead-nav .hall-headpiece,html.mast-tight .mf-room .hall-headpiece{display:none}
  /* Without JS, a bar that no longer fits lets its halls wrap onto a second line rather than run off the page. */
  .masthead{flex-wrap:wrap}
  .masthead-nav{min-width:0;flex-wrap:wrap}
}
/* The colophon's three shelves hold three across only while each keeps a readable measure; at large text they step down. */
@media (min-width:901px){.colophon-dir{grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr))}}

/* 🎨 55 — The no-JS hall grid holds at large text (sprint 2026-09-29-no-js-hall-grid-large-text). Without JS the ≤640
   halls are a 3×2 grid of single words; at 150–200% text its third column ran off the page. Media-query ems follow the
   reader's own default font size, so the grid re-flows to two columns, then one, only when their text demands it
   (at 16px these steps fall below 325/286px and 235/208px: no normal-text phone changes). Keyed on (scripting:none), so with JS
   nothing changes even before masthead.js runs (no shift); browsers without that query keep the old grid.
   Once re-flowed the bar is taller than any hero's head-room, so it takes its own place in the flow (as on plain pages)
   instead of lying over the page. */
@media screen and (scripting:none) and (min-width:381px) and (max-width:640px) and (max-width:20.3em){html:not(.mast-fold) .masthead-nav{grid-template-columns:repeat(2,auto)}html:not(.mast-fold) .masthead{position:relative;background:var(--night)}}
@media screen and (scripting:none) and (max-width:380px) and (max-width:17.9em){html:not(.mast-fold) .masthead-nav{grid-template-columns:repeat(2,auto)}html:not(.mast-fold) .masthead{position:relative;background:var(--night)}}
@media screen and (scripting:none) and (min-width:381px) and (max-width:640px) and (max-width:14.7em){html:not(.mast-fold) .masthead-nav{grid-template-columns:auto}}
@media screen and (scripting:none) and (max-width:380px) and (max-width:13em){html:not(.mast-fold) .masthead-nav{grid-template-columns:auto}}
/* 🎨 56 The leaf's hairline rides with its pages: the tooled inner frame of the Halls and Find leaves was an absolute ::before
   sized to the visible box, so when a leaf scrolls (large text) it scrolled away with the first screen. It is now painted as four
   background-attachment:local lines on the leaf itself, framing the whole scrolled leaf, same colour and insets. */
@media screen{
  .mast-find-leaf,html.mast-fold.mast-menu-open .masthead-nav{--lf-x:.45rem;--lf-y:.45rem;--lf-c:rgba(184,146,74,.18);
    background-image:linear-gradient(var(--lf-c),var(--lf-c)),linear-gradient(var(--lf-c),var(--lf-c)),linear-gradient(var(--lf-c),var(--lf-c)),linear-gradient(var(--lf-c),var(--lf-c)),linear-gradient(var(--night),var(--night));
    background-repeat:no-repeat;background-attachment:local,local,local,local,scroll;background-origin:padding-box,padding-box,padding-box,padding-box,border-box;
    background-size:calc(100% - 2 * var(--lf-x)) 1px,calc(100% - 2 * var(--lf-x)) 1px,1px calc(100% - 2 * var(--lf-y)),1px calc(100% - 2 * var(--lf-y)),100% 100%;
    background-position:var(--lf-x) var(--lf-y),var(--lf-x) calc(100% - var(--lf-y)),var(--lf-x) var(--lf-y),calc(100% - var(--lf-x)) var(--lf-y),0 0}
  html.mast-fold .mast-find-leaf,html.mast-fold.mast-menu-open .masthead-nav{--lf-x:calc(var(--gutter) - .55rem)}
  .mast-find-leaf::before,html.mast-fold.mast-menu-open .masthead-nav::before{content:none}
}

/* 🏛 H1 — The Treasures (Home). Five real Gallery plates, oldest first, on a night vitrine: gold-hairline windows,
   each plate drifting slowly (a museum-film Ken Burns, 28–34s, ≤12% zoom), still under reduced motion.
   Credit + licence under every plate; the title opens its case in the Gallery. Sprint 2026-09-29-home-treasures-strip. */
.treasures{position:relative;color:var(--vellum);
  background:radial-gradient(ellipse at 50% 0,rgba(184,146,74,.16),transparent 58%),linear-gradient(180deg,var(--night-2) 0%,var(--night) 100%);
  border-top:1px solid rgba(184,146,74,.45);border-bottom:1px solid rgba(184,146,74,.45)}
.treasures .section-head{margin-bottom:clamp(2.4rem,4.5vw,4rem)}
.treasures .section-head h2{color:#fbf6ea}
.treasures .lede{color:var(--gold-soft);max-width:40rem;margin:1.1rem auto 0}
.tr-row{list-style:none;margin:0 auto;padding:0;display:flex;flex-wrap:wrap;justify-content:center;--tr-gap:clamp(1rem,.6rem + 1.6vw,2.2rem);--tr-n:5;gap:clamp(1.8rem,1.2rem + 2vw,3rem) var(--tr-gap)}
.tr-item{flex:0 0 calc((100% - (var(--tr-n) - 1) * var(--tr-gap)) / var(--tr-n));min-width:0}
.tr-plate{position:relative;margin:0;display:flex;flex-direction:column;height:100%}
.tr-window{position:relative;aspect-ratio:3/4;overflow:hidden;border:1px solid rgba(184,146,74,.6);
  background:radial-gradient(ellipse at 50% 40%,#2a3547,var(--night) 75%);box-shadow:0 30px 50px -30px rgba(0,0,0,.8);transition:border-color .4s ease,box-shadow .4s ease}
.tr-window::after{content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 0 6px var(--night-2),inset 0 0 0 7px rgba(184,146,74,.5),inset 0 0 40px 8px rgba(10,14,20,.55)}
.tr-plate::before{content:"";position:absolute;z-index:1;left:50%;top:-3px;width:7px;height:7px;margin-left:-3.5px;background:var(--gold);transform:rotate(45deg);box-shadow:0 0 0 3px var(--night-2)}
.tr-window img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 35%;
  transform:scale(1.04);transform-origin:50% 40%;will-change:transform;
  animation:tr-drift 30s ease-in-out infinite alternate}
.tr-item:nth-child(2) .tr-window img{animation-duration:34s;animation-delay:-9s;animation-direction:alternate-reverse;transform-origin:40% 30%}
.tr-item:nth-child(3) .tr-window img{animation-duration:28s;animation-delay:-17s;transform-origin:60% 45%}
.tr-item:nth-child(4) .tr-window img{animation-duration:32s;animation-delay:-5s;animation-direction:alternate-reverse;transform-origin:45% 55%}
.tr-item:nth-child(5) .tr-window img{animation-duration:31s;animation-delay:-13s;transform-origin:55% 35%}
@keyframes tr-drift{0%{transform:scale(1.04) translate3d(-1.6%,-1.2%,0)}100%{transform:scale(1.13) translate3d(1.6%,1.4%,0)}}
.tr-plate figcaption{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.3rem;padding:1.1rem .2rem 0}
.tr-date{font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(1rem,.95rem + .25vw,1.15rem);color:var(--gold-soft);letter-spacing:.02em}
.tr-date::after{content:"";display:block;width:1.6rem;height:1px;margin:.45rem auto 0;background:rgba(184,146,74,.6);transition:width .35s ease}
.tr-title{font-family:var(--display);font-weight:500;font-size:clamp(1.05rem,.98rem + .3vw,1.3rem);line-height:1.22;color:#fbf6ea;text-decoration:none;text-wrap:balance;overflow-wrap:break-word}
.tr-title::before{content:"";position:absolute;inset:0;z-index:2}
.tr-title:focus-visible{outline:none}
.tr-title:focus-visible::before{outline:2px solid var(--gold);outline-offset:6px}
.tr-lic{position:relative;z-index:3;margin-top:.2rem;font-family:var(--sans);font-size:.7rem;letter-spacing:.06em;color:var(--gold-soft)}
.tr-lic a{color:var(--gold-soft);text-decoration-color:rgba(216,192,138,.45);display:inline-block;padding:.35rem 0}
.tr-lic a:hover{color:#fbf6ea}
.tr-item:hover .tr-window,.tr-item:focus-within .tr-window{border-color:var(--gold);box-shadow:0 34px 60px -28px rgba(0,0,0,.9),0 0 0 1px rgba(184,146,74,.35)}
.tr-item:hover .tr-title{color:#fff;text-decoration:underline;text-decoration-color:rgba(184,146,74,.8);text-underline-offset:.2em}
.tr-item:hover .tr-date::after{width:3rem}
/* The door onward, on the night ground */
.tr-door{margin-top:clamp(2.6rem,4vw,3.6rem);grid-template-columns:1fr;max-width:18rem}
.tr-door::before{box-shadow:0 0 0 3px var(--night)}
.tr-door .acl-door{color:#fbf6ea}
.tr-door .acl-door .hall-headpiece{color:var(--gold-soft)}
.tr-door .acl-door:hover{color:#fff;background:radial-gradient(120% 70% at 50% 0,rgba(184,146,74,.22),rgba(184,146,74,0) 72%)}
.tr-door .acl-door:hover .hall-headpiece{color:var(--gold)}
.tr-door .acl-door:hover .acl-name::after{background:var(--gold)}
.tr-door .acl-door:focus-visible{outline-color:var(--gold);color:#fff}
@media (max-width:1200px){.tr-row{--tr-n:3}}
@media (max-width:640px){.tr-row{--tr-n:2}.tr-door{max-width:20rem}.tr-plate figcaption{padding-top:.85rem}.tr-lic{font-size:.66rem;letter-spacing:.03em}}
@media (max-width:380px){.tr-window::after{box-shadow:inset 0 0 0 4px var(--night-2),inset 0 0 0 5px rgba(184,146,74,.5),inset 0 0 28px 6px rgba(10,14,20,.55)}.tr-title{font-size:1rem}}
@media (prefers-reduced-motion:reduce){.tr-window img{animation:none!important;transform:none;will-change:auto}.tr-date::after{transition:none}}
@media print{.treasures{background:none;color:var(--ink);border:0}.treasures .section-head h2,.tr-title{color:var(--ink)}.treasures .lede,.tr-date,.tr-lic,.tr-lic a{color:var(--ink-soft)}
  .tr-window img{animation:none!important;transform:none}.tr-window::after,.tr-plate::before{display:none}.tr-item{break-inside:avoid}}
/* 🏛 H2 — The papyrus ground (Home hero). P46 fol. 157v (Eph 6:8–18), the Gallery's own vetted PD record, lies faint
   behind the frontispiece: grayscale + sepia, low opacity, feathered, a 70 s transform-only drift (still under reduced motion).
   Credit line at the hero's foot. Sprint 2026-09-29-home-papyrus-ground. */
.hero.has-ground{align-content:center}
.hero-ground{position:absolute;inset:0;z-index:0;display:flex;justify-content:center;align-items:center;pointer-events:none;overflow:hidden}
.hero-ground img{display:block;height:100%;width:min(100%,46rem);max-width:none;object-fit:cover;object-position:50% 40%;
  opacity:.14;mix-blend-mode:screen;filter:grayscale(1) sepia(.55) contrast(1.15) brightness(.95);
  -webkit-mask-image:radial-gradient(ellipse 58% 62% at 50% 46%,#000 0,rgba(0,0,0,.6) 45%,transparent 78%);
          mask-image:radial-gradient(ellipse 58% 62% at 50% 46%,#000 0,rgba(0,0,0,.6) 45%,transparent 78%);
  transform:scale(1.04);will-change:transform;animation:hero-ground-drift 70s ease-in-out infinite alternate}
@keyframes hero-ground-drift{0%{transform:scale(1.04) translate3d(0,-.6%,0)}100%{transform:scale(1.09) translate3d(0,.8%,0)}}
.hero-credit{position:relative;z-index:1;margin:clamp(1.2rem,.9rem + 1vw,1.8rem) auto 0;max-width:40rem;
  font-family:var(--sans);font-size:.74rem;letter-spacing:.04em;line-height:1.5;color:var(--gold-soft);text-wrap:balance}
.hero-credit a{color:var(--gold-soft);text-decoration:underline;text-decoration-color:rgba(216,192,138,.45);text-underline-offset:.18em;
  display:inline-block;padding:.35rem 0}
.hero-credit a:hover{color:#fbf6ea;text-decoration-color:currentColor}
.hero-credit a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (max-width:640px){.hero-ground img{width:100%;opacity:.12}.hero-credit{font-size:.7rem;letter-spacing:.02em}}
@media (max-width:380px){.hero-ground img{opacity:.1}}
@media (min-width:1920px){.hero-ground img{width:min(100%,52rem)}}
@media (prefers-reduced-motion:reduce){.hero-ground img{animation:none!important;will-change:auto;transform:scale(1.04)}}
@media print{.hero-ground,.hero-credit{display:none!important}}

/* 🏛 H3 — The Timeline reel (Home). A slow drift of dated Timeline leaves along a gold time-rule, on parchment between
   The Exhibits (vellum) and The Halls (night). Motion starts only when home-reel.js clones the row and adds .is-live;
   no-JS and reduced-motion get a still, scroll-snapped row. Pause/Play button + pause on hover/focus (WCAG 2.2.2).
   Sprint 2026-09-29-home-timeline-reel. */
.reel{background:radial-gradient(ellipse at 50% 0,rgba(184,146,74,.1),transparent 60%),var(--parchment);overflow:hidden}
.reel .section-head .eyebrow{color:var(--gold-deep)}
.reel .lede{color:var(--ink-soft);max-width:40rem;margin:1.1rem auto 0}
.reel-stage{--reel-w:clamp(12.5rem,10rem + 7vw,17rem);--reel-g:clamp(1.4rem,1rem + 1.6vw,2.6rem);
  position:relative;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scroll-padding-inline:var(--gutter);
  padding:.4rem 0 1.4rem var(--gutter);scrollbar-width:thin;scrollbar-color:rgba(184,146,74,.6) transparent;overscroll-behavior-x:contain}
.reel-track{list-style:none;margin:0;padding:0;display:flex;width:max-content;will-change:auto}
.reel-leaf{position:relative;flex:0 0 var(--reel-w);margin-inline-end:var(--reel-g);scroll-snap-align:start;
  display:flex;flex-direction:column;align-items:center;text-align:center}
.reel-date{display:flex;align-items:flex-end;justify-content:center;min-height:2.6em;font-family:var(--display);font-style:italic;font-weight:500;
  font-size:clamp(.98rem,.94rem + .2vw,1.1rem);line-height:1.25;color:var(--gold-deep);letter-spacing:.01em;text-wrap:balance}
/* The time-rule: a gold double hairline that runs unbroken from leaf to leaf, with a lozenge at each date. */
.reel-tick{position:relative;display:block;align-self:stretch;height:11px;margin:.55rem 0 1.05rem}
.reel-tick::before{content:"";position:absolute;top:3px;left:calc(var(--reel-g) / -2);right:calc(var(--reel-g) / -2);height:3px;
  border-top:1px solid rgba(184,146,74,.75);border-bottom:1px solid rgba(184,146,74,.4)}
.reel-tick::after{content:"";position:absolute;left:50%;top:0;width:9px;height:9px;margin-left:-4.5px;background:var(--gold);transform:rotate(45deg);
  box-shadow:0 0 0 3px var(--parchment);transition:background-color .3s ease,transform .35s ease}
.reel-plate{position:relative;margin:0;width:100%;display:flex;flex-direction:column;flex:1}
.reel-window{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--vellum);border:1px solid rgba(184,146,74,.6);
  box-shadow:0 22px 40px -26px rgba(31,27,22,.55);transition:border-color .3s ease,box-shadow .35s ease}
.reel-window::after{content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 0 5px #fbf7ee,inset 0 0 0 6px rgba(184,146,74,.5),inset 0 0 24px 4px rgba(31,27,22,.18)}
.reel-window img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 30%;transition:transform 1.2s cubic-bezier(.2,.6,.2,1)}
.reel-plate figcaption{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:1rem .15rem 0}
.reel-title{font-family:var(--display);font-weight:500;font-size:clamp(1.02rem,.97rem + .22vw,1.18rem);line-height:1.24;color:var(--ink);
  text-decoration:none;text-wrap:balance;overflow-wrap:break-word}
.reel-title::before{content:"";position:absolute;inset:0;z-index:2}
.reel-title:focus-visible{outline:none}
.reel-title:focus-visible::before{outline:3px solid var(--gold);outline-offset:5px}
.reel-lic{position:relative;z-index:3;font-family:var(--sans);font-size:.7rem;letter-spacing:.06em;color:var(--ink-soft)}
.reel-lic a{color:var(--ink-soft);text-decoration-color:rgba(74,66,56,.4);display:inline-block;padding:.35rem 0}
.reel-lic a:hover{color:var(--oxblood)}
.reel-leaf:hover .reel-window,.reel-leaf:focus-within .reel-window{border-color:var(--gold);box-shadow:0 30px 48px -26px rgba(31,27,22,.6),0 0 0 1px rgba(184,146,74,.35)}
.reel-leaf:hover .reel-window img{transform:scale(1.045)}
.reel-leaf:hover .reel-title{color:var(--oxblood);text-decoration:underline;text-decoration-color:rgba(184,146,74,.8);text-underline-offset:.2em}
.reel-leaf:hover .reel-tick::after,.reel-leaf:focus-within .reel-tick::after{background:var(--oxblood);transform:rotate(45deg) scale(1.2)}
.reel-clone{display:none}
/* Live: the row drifts one set-width in --reel-dur (set by the script, ~15 s a leaf), edges feathered into the parchment. */
.reel-stage.is-live{overflow:hidden;padding-left:0;scroll-snap-type:none;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%)}
.reel-stage.is-live .reel-clone{display:flex}
.reel-stage.is-live .reel-track{animation:reel-drift var(--reel-dur,180s) linear infinite;will-change:transform}
.reel-stage.is-live:hover .reel-track,.reel-stage.is-live:focus-within .reel-track,.reel-stage.is-paused .reel-track{animation-play-state:paused}
@keyframes reel-drift{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
.reel-foot{display:flex;flex-direction:column;align-items:center;gap:clamp(1.6rem,1.2rem + 1.2vw,2.4rem);margin-top:clamp(1.4rem,1rem + 1.2vw,2.2rem)}
.reel-toggle{display:inline-flex;align-items:center;gap:.6rem;min-height:44px;padding:.5rem 1.2rem;background:transparent;color:var(--ink-soft);cursor:pointer;
  border:0;border-top:1px solid rgba(184,146,74,.55);border-bottom:1px solid rgba(184,146,74,.55);
  font-family:var(--sans);font-size:.74rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;transition:color .25s ease,border-color .25s ease}
.reel-toggle[hidden]{display:none}
.reel-toggle:hover{color:var(--oxblood);border-color:var(--gold)}
.reel-toggle:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.reel-toggle-icon{position:relative;display:inline-block;width:10px;height:12px}
.reel-toggle-icon::before,.reel-toggle-icon::after{content:"";position:absolute;top:0;width:3px;height:12px;background:currentColor}
.reel-toggle-icon::before{left:1px}.reel-toggle-icon::after{right:1px}
.reel-toggle[aria-pressed="true"] .reel-toggle-icon::before{left:1px;width:0;height:0;background:none;border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent currentColor}
.reel-toggle[aria-pressed="true"] .reel-toggle-icon::after{display:none}
.reel-door{margin:0 auto;grid-template-columns:1fr;max-width:18rem}
.reel-door::before{box-shadow:0 0 0 3px var(--parchment)}
@media (max-width:640px){.reel-lic{font-size:.66rem;letter-spacing:.03em}.reel-plate figcaption{padding-top:.8rem}.reel-door{max-width:20rem}
  .reel-stage.is-live{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%)}}
@media (max-width:380px){.reel-stage{--reel-w:11.5rem}.reel-title{font-size:1rem}}
@media (min-width:1920px){.reel-stage{--reel-w:18.5rem;--reel-g:3rem}}
@media (prefers-reduced-motion:reduce){.reel-stage .reel-track{animation:none!important;will-change:auto}.reel-stage .reel-clone{display:none!important}
  .reel-window img,.reel-leaf:hover .reel-window img{transition:none;transform:none}}
@media print{.reel-stage{overflow:visible;padding:0;-webkit-mask-image:none;mask-image:none}.reel-track{width:auto;flex-wrap:wrap;animation:none!important;transform:none!important}
  .reel-clone,.reel-toggle{display:none!important}.reel-leaf{break-inside:avoid;margin-bottom:1.5rem}}
/* 🏛 H4 — The exhibit vitrines (Home) (sprint 2026-09-29-home-exhibit-vitrines). Each of the seven labels now opens on a
   small vitrine: the licensed museum object its piece hangs in the Armoury (same Gallery record, same rule), shown on a
   night ground behind a gold hairline, with the piece's engraved emblem as a seal riding the vitrine's foot. Where no
   object hangs, the vitrine holds the emblem itself, engraved in gold — nothing is invented to fill the case. Tall
   objects are shown whole, mounted as prints (contain, never cropped); a slow ≤5% lift on hover only; still under reduced motion. No copy changed. */
.pieces .pc-vitrines .piece{--pc-px:clamp(1.1rem,.9rem + .8vw,1.6rem);--pc-in:12px;padding:var(--pc-in) var(--pc-px) clamp(1.3rem,1.1rem + .6vw,1.7rem)}
.pc-window{position:relative;align-self:stretch;margin:0 calc(var(--pc-in) - var(--pc-px));aspect-ratio:4/3;overflow:hidden;
  background:radial-gradient(ellipse at 50% 42%,#2c384b,var(--night) 78%);border:1px solid rgba(184,146,74,.55)}
.pc-window::after{content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 0 4px rgba(20,27,38,.55),inset 0 0 0 5px rgba(184,146,74,.45),inset 0 0 34px 6px rgba(10,14,20,.5)}
.pc-window img{display:block;width:100%;height:100%;box-sizing:border-box;padding:.7rem .7rem 1.1rem;object-fit:contain;object-position:50% 50%;
  transform:scale(1.005);transition:transform 1.4s cubic-bezier(.2,.7,.2,1),filter .6s ease;filter:saturate(.92) contrast(1.02) drop-shadow(0 10px 14px rgba(0,0,0,.45))}
.pc-window.pc-tall img{padding:.6rem 0 1.2rem}
.piece-link:hover .pc-window img,.piece-link:focus-within .pc-window img{transform:scale(1.05);filter:saturate(1) contrast(1.04)}
/* The seal: the piece's emblem in a vellum roundel riding the vitrine's foot. */
.pieces .pc-window+.emblem{position:relative;z-index:1;box-sizing:border-box;width:3.5rem;height:3.5rem;padding:.55rem;margin:-1.75rem auto .55rem;
  background:var(--leaf);border:1px solid rgba(184,146,74,.65);border-radius:50%;
  box-shadow:0 0 0 3px var(--leaf),0 0 0 4px rgba(184,146,74,.3),0 8px 16px -10px rgba(20,27,38,.6)}
.piece-link:hover .pc-window+.emblem,.piece-link:focus-within .pc-window+.emblem{transform:none}
/* The engraved case: no object hangs, so the emblem is the exhibit. Faint engraved rays; gold on night. */
.pc-seal{display:grid;place-items:center;margin-bottom:2.3rem;
  background:repeating-conic-gradient(from 0deg at 50% 50%,rgba(184,146,74,.07) 0 1deg,transparent 1deg 7.5deg),radial-gradient(ellipse at 50% 50%,#2c384b,var(--night) 74%)}
.pieces .pc-seal .emblem{width:40%;max-width:6.2rem;height:auto;margin:0;color:var(--gold-soft);filter:drop-shadow(0 0 14px rgba(184,146,74,.4))}
.piece-link:hover .pc-seal .emblem,.piece-link:focus-within .pc-seal .emblem{color:var(--gold);transform:scale(1.04)}
.pc-lic{position:relative;z-index:1;align-self:stretch;margin:.75rem 0 0;font-family:var(--sans);font-size:.7rem;line-height:1.45;letter-spacing:.03em;color:var(--ink-soft);text-wrap:balance}
.pc-obj{font-style:italic}
.pc-lic a{color:var(--gold-deep);text-underline-offset:2px}
.pc-lic a:hover{color:var(--oxblood)}
.pc-door{margin-top:clamp(2.4rem,4vw,3.4rem);grid-template-columns:1fr;max-width:18rem}
@media (max-width:640px){.pc-door{max-width:20rem}}
@media (max-width:480px){.pc-window{aspect-ratio:3/2}.pieces .pc-seal .emblem{width:30%}}
@media (max-width:380px){.pieces .pc-vitrines .piece{--pc-px:1rem;--pc-in:10px;padding-bottom:1.2rem}.pieces .pc-window+.emblem{width:3.2rem;height:3.2rem;margin-top:-1.6rem}.pc-seal{margin-bottom:2.15rem}}
@media (min-width:1601px){.pieces .pc-vitrines .piece{--pc-px:1rem}}
@media (prefers-reduced-motion:reduce){.pc-window img,.pc-seal .emblem{transition:none}
  .piece-link:hover .pc-window img,.piece-link:focus-within .pc-window img,.piece-link:hover .pc-seal .emblem,.piece-link:focus-within .pc-seal .emblem{transform:none}}
@media print{.pc-window::after,.pc-door{display:none}.pc-window{background:none}.pieces .pc-window+.emblem{box-shadow:none}}

/* 🏛 H5 The rule is drawn (Home) — sprint 2026-09-29-home-rule-drawn.
   Only under html.rv-on (set by home-reveal.js when motion is allowed); transform/opacity only, so no layout shift. */
html.rv-on .home-rv{transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
html.rv-on .home-rv h2::after{transform-origin:50% 50%;transition:transform 1.5s cubic-bezier(.2,.7,.2,1) .3s,opacity 1.2s ease .3s}
html.rv-on .home-rv .lede{transition:opacity 1.2s ease .45s}
html.rv-on .home-rv.rv-wait{opacity:0;transform:translateY(10px)}
html.rv-on .home-rv.rv-wait h2::after{transform:scaleX(.06);opacity:0}
html.rv-on .home-rv.rv-wait .lede{opacity:0}
@media (prefers-reduced-motion:reduce){html.rv-on .home-rv,html.rv-on .home-rv h2::after,html.rv-on .home-rv .lede{transition:none}html.rv-on .home-rv.rv-wait,html.rv-on .home-rv.rv-wait h2::after,html.rv-on .home-rv.rv-wait .lede{opacity:1;transform:none}}
@media print{html.rv-on .home-rv.rv-wait,html.rv-on .home-rv.rv-wait h2::after,html.rv-on .home-rv.rv-wait .lede{opacity:1;transform:none}}

/* 🏛 H7 The hall windows (Home). Each hall leaf opens on a small window holding one published Gallery plate — a detail
   of the page or object, mounted under a tooled inset hairline — with the hall's engraved emblem riding the window's foot
   as the leaf's seal, and the plate's title + licence (linked to its Commons record) above the "enter" rule. What We Believe
   keeps an engraved case: no plate is a conviction. Still under reduced motion; the whole leaf stays one link.
   (sprint 2026-09-29-home-hall-windows) */
.hall-directory.hw-on .hall{--hw-px:clamp(1.3rem,1rem + 1vw,2rem);--hw-in:12px;padding-top:var(--hw-in);padding-left:var(--hw-px);padding-right:var(--hw-px)}
.hw-window{position:relative;align-self:stretch;margin:0 calc(var(--hw-in) - var(--hw-px));aspect-ratio:16/10;overflow:hidden;
  background:radial-gradient(ellipse at 50% 42%,#2c384b,var(--night) 78%);border:1px solid rgba(184,146,74,.55)}
.hw-window::after{content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 0 4px rgba(20,27,38,.55),inset 0 0 0 5px rgba(184,146,74,.45),inset 0 0 38px 8px rgba(10,14,20,.55);
  background:linear-gradient(180deg,rgba(20,27,38,0) 55%,rgba(20,27,38,.5))}
/* A vellum wash (multiply) so a scan's white studio ground reads as warm mount-board against the night leaf. */
.hw-window:not(.hw-seal)::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:#e6d6b4;mix-blend-mode:multiply;opacity:.6}
.hw-window::after{z-index:1}
.hw-window img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.01);
  filter:sepia(.18) saturate(.85) contrast(1.03) brightness(.9);transition:transform 1.6s cubic-bezier(.2,.7,.2,1),filter .6s ease}
.hall-directory .hall:hover .hw-window img,.hall-directory .hall:focus-within .hw-window img{transform:scale(1.045);filter:sepia(.08) saturate(1) contrast(1.04) brightness(.98)}
/* The seal: the emblem in a leaf-dark roundel riding the window's foot; the side rules give way to the picture. */
.hall-directory .hw-window+.hall-headpiece{position:relative;z-index:1;gap:0;margin:-1.75rem auto .75rem}
.hall-directory .hw-window+.hall-headpiece .hp-rule{display:none}
.hall-directory .hw-window+.hall-headpiece .hall-emblem{box-sizing:border-box;width:3.5rem;height:3.5rem;padding:.55rem;
  background:var(--leaf);border:1px solid rgba(184,146,74,.65);border-radius:50%;
  box-shadow:0 0 0 3px var(--leaf),0 0 0 4px rgba(184,146,74,.3),0 10px 18px -10px rgba(0,0,0,.8)}
/* The engraved case: no plate hangs, so the emblem is the window — gold on night, on faint engraved rays. */
.hw-seal{display:grid;place-items:center;margin-bottom:2.5rem;
  background:repeating-conic-gradient(from 0deg at 50% 50%,rgba(184,146,74,.07) 0 1deg,transparent 1deg 7.5deg),radial-gradient(ellipse at 50% 50%,#2c384b,var(--night) 74%)}
.hw-seal::after{background:none}
.hall-directory .hw-seal .hall-headpiece{margin:0}
.hall-directory .hw-seal .hp-rule{display:none}
.hall-directory .hw-seal .hall-emblem{width:clamp(3.6rem,3rem + 2vw,5.2rem);height:auto;color:var(--gold-soft);filter:drop-shadow(0 0 16px rgba(184,146,74,.45))}
.hall-directory .hall.has-seal:hover .hw-seal .hall-emblem,.hall-directory .hall.has-seal:focus-within .hw-seal .hall-emblem{color:var(--gold);filter:drop-shadow(0 0 22px rgba(216,192,138,.55))}
/* The plate's line: title + licence, above the stretched link so the licence stays its own link. */
.hall-directory .hall>p.hw-lic{flex:0 0 auto;position:relative;z-index:1;margin:0 0 .95rem;font-family:var(--sans);font-size:.72rem;line-height:1.45;
  letter-spacing:.03em;color:#c9bfa9;opacity:1;text-wrap:balance}
.hw-obj{font-style:italic}
.hw-lic a{color:var(--gold-soft);text-underline-offset:2px}
.hw-lic a:hover{color:#fbf6ea}
@media (max-width:640px){.hw-window{aspect-ratio:16/9}}
@media (max-width:380px){.hall-directory.hw-on .hall{--hw-px:1.05rem;--hw-in:10px}
  .hall-directory .hw-window+.hall-headpiece .hall-emblem{width:3.2rem;height:3.2rem}.hall-directory .hw-window+.hall-headpiece{margin-top:-1.6rem}.hw-seal{margin-bottom:2.3rem}}
@media (prefers-reduced-motion:reduce){.hw-window img{transition:none}
  .hall-directory .hall:hover .hw-window img,.hall-directory .hall:focus-within .hw-window img{transform:scale(1.01)}}
@media print{.hw-window::after{display:none}.hw-window{background:none}.hall-directory .hw-window+.hall-headpiece .hall-emblem{box-shadow:none}}

/* 🏛 H8 The leaves are laid out (Home) — sprint 2026-09-29-home-leaves-laid.
   Held leaves (treasure plates, exhibit labels, hall leaves) wait until seen, then are set down one after another.
   An animation of opacity + the individual `translate` property, so each leaf's own transform/transition (hover lift) is untouched. */
@keyframes rvLeafIn{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
html.rv-on .rv-i-wait{opacity:0;translate:0 14px}
html.rv-on .rv-i-in{animation:rvLeafIn .9s cubic-bezier(.2,.7,.2,1) both}
@media (prefers-reduced-motion:reduce){html.rv-on .rv-i-wait{opacity:1;translate:none}html.rv-on .rv-i-in{animation:none}}
@media print{html.rv-on .rv-i-wait{opacity:1;translate:none}html.rv-on .rv-i-in{animation:none}}

/* 🏛 H10 — The colophons stand level (2026-09-29). Each exhibit label is a body (vitrine, numeral, title, words) over a
   colophon (double rule + reference + licence). Fallback: the body is a flex column that grows, exactly as before.
   Where subgrid is supported, every label in a row shares one body row and one colophon row, so the double rule and
   the reference run level across the whole case even when a licence line is 0, 2 or 3 lines long. No copy changed. */
.pieces .pc-vitrines .pc-body{display:flex;flex-direction:column;align-items:center;flex:1 0 auto;align-self:stretch}
.pieces .pc-vitrines .pc-colophon{align-self:stretch}
@supports (grid-template-rows:subgrid){
  .pieces .pc-vitrines{row-gap:0;margin-bottom:calc(-1 * clamp(1rem,2vw,1.6rem))}
  .pieces .pc-vitrines .piece{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0;align-items:stretch;
    margin-bottom:clamp(1rem,2vw,1.6rem)}
  .pieces .pc-vitrines .pc-colophon{align-self:start}
}
@media (max-width:480px){@supports (grid-template-rows:subgrid){.pieces .pc-vitrines{margin-bottom:-1.3rem}.pieces .pc-vitrines .piece{margin-bottom:1.3rem}}}

/* 🏛 H11 — The Treasures captions stand level (Home). Titles run 1–2 lines, so each licence line wandered 20–25px
   within a row. The caption now fills its plate and the licence rides its foot, so the credits run as one level line.
   No markup, wording or height change. Sprint 2026-09-29-home-treasures-captions-level. */
.tr-plate figcaption{flex:1 1 auto}
.tr-lic{margin-top:auto;padding-top:.2rem}
/* 🏛 H12 The reel credits ride level (Home). Each leaf's licence line sat under a 1–3-line title, so the credits stepped 21–45px along the reel. The caption fills its plate and the licence rides its foot, so every credit runs on one line of the time-rule's rhythm. CSS only; leaf heights unchanged. (sprint 2026-09-29-home-reel-credits-level) */
.reel-plate figcaption{flex:1 1 auto}
.reel-lic{margin-top:auto}

/* 🏛 H14 — The exhibit slips (Home, phones ≤480px) (sprint 2026-09-29-home-exhibit-slips). In one column the seven
   labels each stood a screen tall (vitrine stacked over centred text; the band ran ~3,900px at 390). On phones each
   label is now a catalogue slip: the vitrine beside its label, as a wall label sits beside its case. The object (square,
   shown whole) holds the left column with its emblem seal riding its foot; the numeral, name and words sit to the right;
   the double rule, reference and credit stay full-width beneath. Every element kept; CSS only; >480px untouched. */
@media (max-width:480px){
  .pieces .pc-vitrines .pc-body{display:grid;grid-template-columns:minmax(0,41%) minmax(0,1fr);
    grid-template-rows:1fr auto auto auto 1fr auto;column-gap:clamp(.85rem,.5rem + 1.6vw,1.15rem);align-items:center;text-align:left}
  .pieces .pc-vitrines .pc-window{grid-column:1;grid-row:1 / 6;align-self:start;aspect-ratio:1;margin:0 0 0 calc(var(--pc-in) - var(--pc-px))}
  .pieces .pc-vitrines .pc-window img{padding:.55rem .55rem .95rem}
  .pieces .pc-vitrines .pc-window.pc-tall img{padding:.5rem 0 .95rem}
  .pieces .pc-vitrines .pc-window+.emblem{grid-column:1;grid-row:6;align-self:start;width:3rem;height:3rem;padding:.45rem;margin:-1.5rem auto 0;
    transform:translateX(calc((var(--pc-in) - var(--pc-px)) / 2))}
  .pieces .pc-vitrines .pc-seal{grid-row:1 / 7;margin-bottom:0}
  .pieces .pc-vitrines .pc-seal .emblem{width:52%}
  .pieces .pc-vitrines .piece-num{grid-column:2;grid-row:2;justify-content:flex-start;margin:0 0 .35rem;letter-spacing:.2em}
  .pieces .pc-vitrines .piece-num::before{display:none}
  .pieces .pc-vitrines .piece-num::after{flex-basis:1.8rem}
  .pieces .pc-vitrines .piece h3{grid-column:2;grid-row:3;font-size:clamp(1.14rem,.95rem + 1vw,1.32rem);line-height:1.18;text-wrap:pretty;margin:0 0 .45rem}
  .pieces .pc-vitrines .piece-words{grid-column:2;grid-row:4;margin:0;font-size:.95em;line-height:1.42}
  .pieces .pc-vitrines .pc-colophon{margin-top:1.05rem}
  .pieces .pc-vitrines .pc-seal+.piece-num{margin-top:0}
}
/* 🏛 H15 — The hall slips (Home, phones ≤480px) (sprint 2026-09-29-home-hall-slips). As with the exhibit slips (H14),
   each hall leaf on a phone is a catalogue slip: the plate (square) holds the left column with the hall's seal riding
   its foot; the numeral and name sit beside it; the description, credit and door run full-width beneath. The engraved
   case (What We Believe) fills the left column. Every element kept; the whole leaf stays one link; CSS only; windows-on
   leaves only; >480px untouched. */
@media (max-width:480px){
  .hall-directory.hw-on{gap:1.15rem}
  .hall-directory.hw-on .hall{display:grid;grid-template-columns:minmax(0,40%) minmax(0,1fr);
    grid-template-rows:1fr auto auto 1fr auto;column-gap:clamp(.85rem,.5rem + 1.6vw,1.15rem);align-items:center;text-align:left}
  .hall-directory.hw-on .hw-window{grid-column:1;grid-row:1 / 5;align-self:start;aspect-ratio:1;margin:0 0 0 calc(var(--hw-in) - var(--hw-px))}
  .hall-directory.hw-on .hw-window+.hall-headpiece{grid-column:1;grid-row:5;align-self:start;margin:-1.45rem auto 0;
    transform:translateX(calc((var(--hw-in) - var(--hw-px)) / 2))}
  .hall-directory.hw-on .hw-window+.hall-headpiece .hall-emblem{width:2.9rem;height:2.9rem;padding:.45rem}
  .hall-directory.hw-on .hw-seal{grid-row:1 / 6;align-self:stretch;margin-bottom:0}
  .hall-directory.hw-on .hw-seal .hall-emblem{width:52%}
  .hall-directory.hw-on .hall-num{grid-column:2;grid-row:2;justify-content:flex-start;margin:0 0 .3rem;letter-spacing:.2em}
  .hall-directory.hw-on .hall-num::before{display:none}
  .hall-directory.hw-on .hall-num::after{flex-basis:1.8rem}
  .hall-directory.hw-on .hall h3{grid-column:2;grid-row:3;font-size:clamp(1.2rem,1rem + 1vw,1.4rem);line-height:1.18;text-wrap:pretty;margin:0}
  .hall-directory.hw-on .hall>p:not(.hall-num){grid-column:1 / -1;margin:1rem 0 .9rem;font-size:.95em;line-height:1.55}
  .hall-directory.hw-on .hall>p.hw-lic{grid-column:1 / -1;margin:-.35rem 0 .85rem;font-size:.7rem}
  .hall-directory.hw-on .status{grid-column:1 / -1;text-align:center;padding-top:.8rem}
}
/* 🏛 H16 The section labels are one family (Home). The Treasures label was gold-deep on night (2.8:1); it now takes the night-band gold (≈6:1).
   Treasures, Reel and Halls labels take the same cartouche as The Text and The Exhibits: a label between two gold hairlines. */
.treasures .section-head .eyebrow{color:var(--gold)}
.treasures .section-head .eyebrow,.reel .section-head .eyebrow,.halls .section-head .eyebrow{display:inline-block;margin-bottom:1rem;padding:.5rem 1.2rem;border-top:1px solid rgba(184,146,74,.5);border-bottom:1px solid rgba(184,146,74,.5)}
.treasures .section-head .eyebrow,.halls .section-head .eyebrow{border-color:rgba(184,146,74,.55)}
@media (max-width:380px){.treasures .section-head .eyebrow,.reel .section-head .eyebrow{padding-left:.6rem;padding-right:.6rem;letter-spacing:.14em}}
@media print{.treasures .section-head .eyebrow,.reel .section-head .eyebrow,.halls .section-head .eyebrow{color:var(--gold-deep)!important;border-color:rgba(122,92,38,.5)}}

/* 🏛 H17 The lit gold (Home). Two small labels sit on lighter grounds than flat night: the hero eyebrow over the P46 papyrus (≈4.0:1) and the Treasures
   eyebrow on the night gradient (≈4.4:1). Pixel-sampled, both fell under AA. They take a lit gold between --gold and --gold-soft (≥5:1 at p10). */
.hero.has-ground .hero-frontispiece .eyebrow,.treasures .section-head .eyebrow{color:#cfb06e}
@media print{.hero.has-ground .hero-frontispiece .eyebrow,.treasures .section-head .eyebrow{color:var(--gold-deep)!important}}

/* 🏛 H18 The keeper's ring (Home) — keyboard focus in one family per ground.
   Night band (Treasures): the gold-soft ring, no parchment halo, as the hero, halls and colophon.
   Vellum/parchment bands (Seven pieces, Timeline reel): the same gold, one step deeper (≥4.8:1). */
.treasures :focus-visible{outline-color:var(--gold-soft);box-shadow:none}
.treasures .tr-title:focus-visible::before{outline-color:var(--gold-soft)}
.pieces .piece:has(h3 a:focus-visible){outline-color:var(--gold-deep)}
.reel .reel-title:focus-visible::before{outline-color:var(--gold-deep)}

/* 🏛 H19 The labels break at the point: a two-part home label may wrap only after its middle dot, never inside a phrase (sprint 2026-09-29-home-eyebrow-phrases) */
.hero .eyebrow .ey-ph,.section-head .eyebrow .ey-ph{white-space:nowrap}
/* 🎨 D1 — The depth system (sprint 2026-09-29-depth-system-d1). One lamp, stated once: the light falls from above.
   Every leaf in the museum now sits on the case floor the same way — a tight contact shadow where it meets the
   surface, a soft penumbra, a long ambient shadow beneath — with its top edge catching the lamp. The lozenges that
   ride the rules are gilt (lit from above) rather than flat gold. Tokens here are the shared language for later runs. */
:root{
  --elev-1:0 1px 1px rgba(31,27,22,.08),0 3px 6px -3px rgba(31,27,22,.14),0 20px 40px -28px rgba(20,27,38,.55);
  --elev-2:0 2px 2px rgba(31,27,22,.06),0 10px 18px -10px rgba(31,27,22,.2),0 32px 52px -28px rgba(20,27,38,.6);
  --elev-night-1:0 1px 1px rgba(0,0,0,.35),0 4px 8px -4px rgba(0,0,0,.4),0 24px 44px -28px rgba(0,0,0,.85);
  --elev-night-2:0 2px 2px rgba(0,0,0,.3),0 12px 20px -10px rgba(0,0,0,.45),0 34px 52px -26px rgba(0,0,0,.9);
  --edge-lit:inset 0 1px 0 rgba(255,255,255,.7),inset 0 -1px 0 rgba(31,27,22,.06);
  --edge-lit-night:inset 0 1px 0 rgba(216,192,138,.16),inset 0 -1px 0 rgba(0,0,0,.25);
  --tool:7px;--tool-line:rgba(184,146,74,.3);--tool-line-lit:rgba(184,146,74,.5);
  --gilt:linear-gradient(135deg,#f0dfb0 0%,#d2b06a 32%,#b8924a 56%,#8a672b 100%);
  --lift:translateY(-3px);--ease-lift:cubic-bezier(.2,.7,.2,1)}
@media (max-width:640px){:root{--tool:6px}}
@media (max-width:380px){:root{--tool:5px}}
.scripture .kjv,.exhibit .exhibit-plate{--tool:8px}
@media (max-width:640px){.scripture .kjv,.exhibit .exhibit-plate{--tool:6px}}
@media (max-width:380px){.scripture .kjv,.exhibit .exhibit-plate{--tool:5px}}
.exhibit .exhibit-plate{--tool-line:rgba(216,192,138,.3)}
.ab-confession{--tool-line:rgba(184,146,74,.35)}
/* Leaves on parchment/vellum: lit edge, tooled frame, resting elevation. */
.tl-card,.src-list:not(.src-scripture),.src-scripture,.src-find,.ab-card,.xrefs li,.scripture .kjv,.pieces .piece,.ce-leaf{
  box-shadow:var(--edge-lit),inset 0 0 0 var(--tool) var(--leaf),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line),var(--elev-1)}
.book,.gal-label{box-shadow:var(--edge-lit),var(--elev-1)}
/* Dark plates standing on a light floor: the shadow belongs to the floor, so they take the parchment elevation. */
.exhibit .exhibit-plate{box-shadow:var(--edge-lit-night),inset 0 0 0 var(--tool) var(--plate),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line),var(--elev-1)}
.ab-confession{box-shadow:var(--edge-lit-night),inset 0 0 0 var(--tool) var(--night),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line),var(--elev-1)}
/* Leaves in the night halls. */
.hall-directory .hall{box-shadow:var(--edge-lit-night),inset 0 0 0 var(--tool) var(--leaf),inset 0 0 0 calc(var(--tool) + 1px) rgba(184,146,74,.28),var(--elev-night-1)}
/* Lifted (hover / keyboard within): same 3px, a longer shadow, the tooled line brightens. */
.ab-card:hover,.ab-card:focus-within,.pieces .piece:hover,.pieces .piece:focus-within{transform:var(--lift);
  box-shadow:var(--edge-lit),inset 0 0 0 var(--tool) var(--leaf),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line-lit),var(--elev-2)}
.book:hover,.book:focus-within{transform:var(--lift);box-shadow:var(--edge-lit),var(--elev-2)}
.hall-directory .hall:hover,.hall-directory .hall:focus-within{transform:var(--lift);
  box-shadow:var(--edge-lit-night),inset 0 0 0 var(--tool) var(--leaf),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line-lit),var(--elev-night-2)}
/* Arrived at by link (#target): the gold ring, then the lifted elevation. */
.tl-item:target .tl-card,.src-sec:target .src-list:not(.src-scripture),.src-sec:target .src-scripture{
  box-shadow:0 0 0 2px var(--gold),var(--edge-lit),inset 0 0 0 var(--tool) var(--leaf),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line),var(--elev-2)}
.book:target,.gal-case:target .gal-label{box-shadow:0 0 0 2px var(--gold),var(--edge-lit),var(--elev-2)}
/* The gilt lozenge (category lozenges on the Timeline keep their own colour). */
.src-list:not(.src-scripture)::after,.src-scripture::after,.src-find::after,.ab-card::before,.xrefs li::before,.scripture .kjv::after,
.pieces .piece::before,.ce-leaf::before,.gal-label::before,.hall-directory .hall::before,.exhibit .exhibit-plate::before,.ab-confession::before,
.tl-era::before,.colophon::before,.panoply::before,.acl-register::before,.arm-hero::before,.cat-hero::before,.division-name span::before,
.exhibit-sub::before,.tr-plate::before,.closed-lamp::before{background:var(--gilt)}
@media (prefers-reduced-motion:reduce){.ab-card:hover,.ab-card:focus-within,.pieces .piece:hover,.pieces .piece:focus-within,.book:hover,.book:focus-within,
  .hall-directory .hall:hover,.hall-directory .hall:focus-within{transform:none}}
@media print{.tl-card,.src-list:not(.src-scripture),.src-scripture,.src-find,.ab-card,.xrefs li,.scripture .kjv,.pieces .piece,.ce-leaf,.book,.gal-label,
  .exhibit .exhibit-plate,.ab-confession,.hall-directory .hall{box-shadow:none!important}}
/* 🎨 D2 — The vitrines (sprint 2026-09-30-vitrines-d2). Every plate frame (Timeline, Armoury, Gallery) becomes a case:
   it stands on the floor with the D1 elevation, its lip casts a recess shadow down onto the backing, the lamp above
   leaves a soft pool of light at the top of the backing, the plate sits on the mount with a contact shadow, and a
   faint pane of glass lies over the whole (never catching clicks, never shown in print or forced colours). */
:root{
  --recess:inset 0 12px 16px -12px rgba(31,27,22,.34),inset 0 -6px 12px -10px rgba(31,27,22,.12);
  --recess-night:inset 0 14px 20px -12px rgba(0,0,0,.7),inset 0 -8px 14px -10px rgba(0,0,0,.4);
  --mount-shadow:0 1px 2px rgba(20,27,38,.22),0 12px 24px -14px rgba(20,27,38,.62);
  --mount-shadow-lift:0 1px 2px rgba(20,27,38,.22),0 18px 34px -14px rgba(20,27,38,.75);
  --mount-shadow-night:0 1px 2px rgba(0,0,0,.55),0 18px 40px -18px rgba(0,0,0,.85);
  --mount-shadow-night-lift:0 1px 2px rgba(0,0,0,.55),0 24px 48px -18px rgba(0,0,0,.9);
  --glass:linear-gradient(118deg,rgba(255,255,255,0) 26%,rgba(255,255,255,.07) 34%,rgba(255,255,255,.02) 42%,rgba(255,255,255,0) 50%);
  --lamp:radial-gradient(ellipse 72% 58% at 50% 0%,rgba(255,250,236,.62),rgba(255,250,236,0) 72%);
  --lamp-night:radial-gradient(ellipse 70% 60% at 50% 0%,rgba(216,192,138,.13),rgba(216,192,138,0) 70%)}
.tl-plate-frame,.gal-frame{position:relative;isolation:isolate}
.tl-plate-frame{background:var(--lamp),linear-gradient(#efe6d2,#e6dbc2);
  box-shadow:var(--edge-lit),var(--recess),inset 0 0 0 6px #f7f1e4,inset 0 0 0 7px rgba(184,146,74,.35),var(--elev-1)}
@media (max-width:380px){.tl-plate-frame{box-shadow:var(--edge-lit),var(--recess),inset 0 0 0 4px #f7f1e4,inset 0 0 0 5px rgba(184,146,74,.35),var(--elev-1)}}
.gal-frame{background:var(--lamp-night),radial-gradient(ellipse at 50% 40%,#2a3547,var(--night) 75%);
  box-shadow:var(--edge-lit-night),var(--recess-night),inset 0 0 0 8px var(--night-2),inset 0 0 0 9px rgba(184,146,74,.45),var(--elev-night-1)}
@media (max-width:640px){.gal-frame{box-shadow:var(--edge-lit-night),var(--recess-night),inset 0 0 0 5px var(--night-2),inset 0 0 0 6px rgba(184,146,74,.45),var(--elev-night-1)}}
/* The pane of glass: a faint diagonal reflection and a hairline glint where the lamp catches its top edge. */
.tl-plate-frame::after,.gal-frame::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:var(--glass);box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
.gal-frame::after{box-shadow:inset 0 1px 0 rgba(216,192,138,.22)}
.tl-plate-frame>a,.gal-frame>a{position:relative;z-index:0}
/* The plate on its mount. */
.tl-plate img,.arm-plate img{box-shadow:var(--mount-shadow)}
.tl-plate .plate-open:hover img{box-shadow:var(--mount-shadow-lift)}
.gal-frame img{box-shadow:var(--mount-shadow-night)}
.gal-frame .plate-open:hover img{box-shadow:var(--mount-shadow-night-lift)}
@media (forced-colors:active){.tl-plate-frame::after,.gal-frame::after{display:none}}
@media print{.tl-plate-frame::after,.gal-frame::after{display:none!important}
  .tl-plate-frame,.gal-frame{box-shadow:none!important;background:none!important}}

/* 🎨 D3 — The windows & the reading desk (sprint 2026-09-30-windows-and-reading-desk-d3). The Home treasures and the
   Timeline reel windows join the D1/D2 language: lit top edge, the shared elevation, a recess under the lip where the
   old even vignette was (so the shadow falls from the one lamp above), and the faint pane of glass. The plate viewer is
   the reading desk: the leaf is out of its case, lifted on its mount under the lamp, with no glass between reader and page. */
.tr-window{box-shadow:var(--edge-lit-night),var(--elev-night-1)}
.tr-item:hover .tr-window,.tr-item:focus-within .tr-window{box-shadow:var(--edge-lit-night),0 0 0 1px rgba(184,146,74,.35),var(--elev-night-2)}
.tr-window::after{background:var(--glass);
  box-shadow:inset 0 1px 0 rgba(216,192,138,.22),inset 0 0 0 6px var(--night-2),inset 0 0 0 7px rgba(184,146,74,.5),var(--recess-night),inset 0 -18px 28px -22px rgba(10,14,20,.5)}
@media (max-width:380px){.tr-window::after{
  box-shadow:inset 0 1px 0 rgba(216,192,138,.22),inset 0 0 0 4px var(--night-2),inset 0 0 0 5px rgba(184,146,74,.5),var(--recess-night),inset 0 -14px 22px -18px rgba(10,14,20,.5)}}
.reel-window{box-shadow:var(--edge-lit),var(--elev-1)}
.reel-leaf:hover .reel-window,.reel-leaf:focus-within .reel-window{box-shadow:var(--edge-lit),0 0 0 1px rgba(184,146,74,.35),var(--elev-2)}
.reel-window::after{background:var(--glass);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 0 0 5px #fbf7ee,inset 0 0 0 6px rgba(184,146,74,.5),var(--recess),inset 0 -12px 20px -16px rgba(31,27,22,.16)}
/* The reading desk. */
.plate-viewer-frame{background:var(--lamp-night),radial-gradient(ellipse at 50% 40%,#2a3547,var(--night) 75%);
  box-shadow:var(--edge-lit-night),var(--recess-night),inset 0 0 0 6px var(--night-2),inset 0 0 0 7px rgba(184,146,74,.4),var(--elev-night-2)}
@media (max-width:380px){.plate-viewer-frame{box-shadow:var(--edge-lit-night),var(--recess-night),inset 0 0 0 4px var(--night-2),inset 0 0 0 5px rgba(184,146,74,.4)}}
.plate-viewer-frame img{box-shadow:var(--mount-shadow-night)}
.plate-viewer.is-magnified .plate-viewer-frame img{box-shadow:none}
@media (forced-colors:active){.tr-window::after,.reel-window::after{display:none}}
@media print{.tr-window,.reel-window{box-shadow:none!important}.tr-window::after,.reel-window::after{display:none!important}}
/* 🎨 D4 — The hall entrances (sprint 2026-09-30-hall-entrances-d4). Each hall opens on a lit room, not a flat banner:
   the one lamp hangs above the doorway and leaves a warm pool at the top, the side walls fall softly into shade, the
   existing glow behind the title stays where it was, and the room's floor meets the parchment with a gold hairline and a
   short threshold shadow. The index-rail lozenges are gilt like every other lozenge; the closing alcove takes the lamp. */
:root{
  --hall-lamp:radial-gradient(ellipse 40rem 7.5rem at 50% 0%,rgba(216,192,138,.12),rgba(216,192,138,0) 100%);
  --hall-wall:radial-gradient(ellipse 110% 95% at 50% 32%,rgba(10,14,20,0) 52%,rgba(10,14,20,.34) 100%);
  --hall-floor:0 1px 0 rgba(184,146,74,.32),0 16px 26px -20px rgba(20,27,38,.55)}
.arm-hero{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 30%,rgba(184,146,74,.22),transparent 62%),linear-gradient(180deg,var(--night),var(--night-2));
  box-shadow:var(--hall-floor)}
.cat-hero{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 30%,rgba(184,146,74,.2),transparent 62%),linear-gradient(180deg,var(--night),var(--night-2));
  box-shadow:var(--hall-floor)}
.arm-hero .arm-index::before,.arm-hero .src-index::before,.cat-hero .cat-jump::before{background:var(--gilt)}
.arm-close{background:var(--lamp),var(--vellum)}
@media print{.arm-close{background:var(--vellum)}}
/* 🎨 D5 — The parchment rooms (sprint 2026-09-30-parchment-rooms-d5). Below the lit entrances, each Gallery room and each
   Catalogue testament is a room of its own under the one lamp: a wide, shallow pool of lamplight at the top of the room,
   and where one room opens from the last, the doorway's lintel leaves a soft shade just under the gold hairline. The
   rooms' own grounds (the armour room's vellum wash, the New Testament's vellum) are kept beneath the lamp. */
:root{
  --room-lamp:radial-gradient(ellipse 64rem 24rem at 50% 0%,rgba(255,251,240,.55),rgba(255,251,240,0) 100%);
  --room-lintel:inset 0 1px 0 rgba(255,255,255,.45),inset 0 20px 24px -20px rgba(31,27,22,.17)}
.gal-room{background:var(--room-lamp)}
.gal-room--armour{background:var(--room-lamp),linear-gradient(180deg,var(--vellum),var(--parchment) 18rem)}
.testament{background:var(--room-lamp)}
.testament-nt{background:var(--room-lamp),var(--vellum)}
.gal-room + .gal-room,.testament + .testament{box-shadow:var(--room-lintel)}
@media print{.gal-room,.testament{background:none!important;box-shadow:none!important}}
/* 🎨 D6 — The last rooms (sprint 2026-09-30-last-rooms-d6). The lamp that D5 hung over the Gallery rooms and the
   Catalogue testaments now hangs over every remaining room: the Armoury's exhibit hall, the Timeline, the Reading Room
   and the three rooms of About (the vellum band keeps its vellum). Where one full-width room opens into the next, the
   doorway has its lintel. Inside the Armoury, the rule between exhibit bays catches the lamp; on the Timeline, each period
   plaque now rests on the wall with the same lit edge and elevation as the cards it labels. Shared tokens only. */
.arm-exhibits,.tl-hall,.src-hall,.ab-name,.ab-word{background:var(--room-lamp)}
.ab-beliefs{background:var(--room-lamp),var(--vellum)}
.ab-name + .ab-beliefs,.ab-beliefs + .ab-word{box-shadow:var(--room-lintel)}
.exhibit + .exhibit{box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
.tl-era{box-shadow:var(--edge-lit),var(--elev-1)}
@media print{.arm-exhibits,.tl-hall,.src-hall,.ab-name,.ab-word{background:none!important}.ab-beliefs{background:var(--vellum)!important}
  .ab-name + .ab-beliefs,.ab-beliefs + .ab-word,.exhibit + .exhibit,.tl-era{box-shadow:none!important}}
/* 🎨 D7 — The closed room under the lamp (sprint 2026-09-30-closed-room-lamp-d7). The 404/error room was the last public
   room still flat: it now opens like every hall entrance — the one lamp pools at the top, the walls fall into shade, and the
   door meets the lower band with the threshold. The six hall doors in its register rest on the floor with a lit top edge
   and the shared night elevation, and lift on the shared token; the band below has a lintel and a gilt lozenge. The hall
   eyebrows over the title glow take --gold-soft so the small caps clear 4.5:1 against the glow. Shared tokens only. */
.closed-room{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 18%,rgba(184,146,74,.16),transparent 58%),linear-gradient(180deg,var(--night),var(--night-2))}
.closed-door{box-shadow:var(--hall-floor)}
.closed-register a{box-shadow:var(--edge-lit-night),inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.24),var(--elev-night-1);
  transition:transform .3s var(--ease-lift),box-shadow .3s ease,background-color .3s ease}
.closed-register a:hover,.closed-register a:focus-visible{transform:var(--lift);
  box-shadow:var(--edge-lit-night),inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.5),var(--elev-night-2)}
.closed-halls{box-shadow:inset 0 1px 0 rgba(216,192,138,.1),inset 0 20px 24px -20px rgba(0,0,0,.4)}
.closed-halls::before{background:var(--gilt)}
.arm-hero .eyebrow,.cat-hero .eyebrow,.closed-door .eyebrow{color:var(--gold-soft)}
@media print{.closed-door,.closed-halls,.closed-register a{box-shadow:none!important}.closed-register a{transform:none!important}}
/* 🎨 D8 — The Home rooms under the one lamp (sprint 2026-09-30-home-under-the-lamp-d8). Home was the last walk in the
   building still lit flat: its leaves were on the tokens, but the rooms they stand in were not. The front entrance now
   opens like every hall (lamp pool, shaded walls, threshold onto the parchment); the parchment and vellum rooms take the
   room lamp and a lintel at each doorway; the two night rooms (which keep their own glow, or none) take the shaded walls and a night lintel — the
   hall lamp was tried there and read as haze under the lintel, so it stays on the entrances. The night
   lintel (first cut on the closed room in D7) is named once here and shared. Existing grounds kept beneath. Tokens only. */
:root{--room-lintel-night:inset 0 1px 0 rgba(216,192,138,.1),inset 0 20px 24px -20px rgba(0,0,0,.4)}
.closed-halls{box-shadow:var(--room-lintel-night)}
.hero{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 38%,rgba(184,146,74,.22),transparent 60%),linear-gradient(180deg,var(--night) 0%,var(--night-2) 100%);
  box-shadow:var(--hall-floor)}
.scripture{background:var(--room-lamp),var(--parchment)}
.treasures{background:var(--hall-wall),radial-gradient(ellipse at 50% 0,rgba(184,146,74,.16),transparent 58%),linear-gradient(180deg,var(--night-2) 0%,var(--night) 100%);
  box-shadow:var(--room-lintel-night)}
.pieces{background:var(--room-lamp),var(--vellum);box-shadow:var(--room-lintel)}
.reel{background:var(--room-lamp),radial-gradient(ellipse at 50% 0,rgba(184,146,74,.1),transparent 60%),var(--parchment);box-shadow:var(--room-lintel)}
.halls{background:var(--hall-wall),var(--night);box-shadow:var(--room-lintel-night)}
/* As D7 did for the hall entrances: the small-caps labels under the lamp in the two night rooms take --gold-soft. */
.treasures .section-head .eyebrow,.halls .section-head .eyebrow{color:var(--gold-soft)}
@media print{.hero,.scripture,.pieces,.reel,.halls,.treasures,.closed-halls{box-shadow:none!important}
  .scripture,.reel{background:var(--parchment)}.pieces{background:var(--vellum)}.treasures{background:none}}
/* 🎨 D9 — The last windows & the floating leaves (sprint 2026-09-30-last-windows-d9). The walk-through for one-off shadows
   found two windows still lit evenly from every side — the Home Exhibits vitrines and the Home hall windows — and the three
   night leaves that float over the page (the pinned masthead, the folded menu, the find leaf) still casting their own
   shadows. The windows now take what D3 gave their siblings: the lamp glints on the top of the frame, the shade falls from
   the lip above (recess) with a little gathering at the foot, and the faint pane of glass lies over them; the hall windows
   keep their darkening at the foot beneath the glass. The floating leaves take the shared night elevation and lit edge.
   Existing tokens only; nothing new named. */
.pc-window::after{background:var(--glass);
  box-shadow:inset 0 1px 0 rgba(216,192,138,.22),inset 0 0 0 4px rgba(20,27,38,.55),inset 0 0 0 5px rgba(184,146,74,.45),var(--recess-night),inset 0 -18px 28px -22px rgba(10,14,20,.5)}
.hw-window::after{background:var(--glass),linear-gradient(180deg,rgba(20,27,38,0) 55%,rgba(20,27,38,.5));
  box-shadow:inset 0 1px 0 rgba(216,192,138,.22),inset 0 0 0 4px rgba(20,27,38,.55),inset 0 0 0 5px rgba(184,146,74,.45),var(--recess-night),inset 0 -18px 28px -22px rgba(10,14,20,.5)}
.plate-open:hover img{box-shadow:var(--mount-shadow-lift)}
html.mast-pinned .masthead{box-shadow:var(--elev-night-1)}
@media screen{html.mast-fold.mast-menu-open .masthead-nav{box-shadow:var(--edge-lit-night),var(--elev-night-2)}}
.mast-find-leaf{box-shadow:var(--edge-lit-night),var(--elev-night-2)}
@media (forced-colors:active){.pc-window::after{background:none}.hw-window::after{background:none}}
@media print{html.mast-pinned .masthead,.mast-find-leaf{box-shadow:none!important}}
/* 🎨 D10 — The grain of the paper (sprint 2026-09-30-paper-grain-d10). The one D1 token never built: the walls of the
   parchment and vellum rooms now carry a very faint grain, so the lamp falls on a material rather than a flat colour — "the
   books, but especially the parchments" (2 Tim. 4:13). A tiny inline SVG noise (no request, no library), warm ink at a
   few percent. Only the walls take it: the leaves, labels, plaques and cases stay smooth, so they stand forward of a
   textured wall. Layer order everywhere: lamp, grain, ground. Dropped under prefers-contrast:more and in print. */
:root{--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='g' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .33 0 0 0 0 .25 0 0 0 0 .15 .05 0 0 0 -.016'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E")}
@media (prefers-contrast:more){:root{--grain:none}}
body{background-image:var(--grain)}
.scripture{background:var(--room-lamp),var(--grain),var(--parchment)}
.pieces{background:var(--room-lamp),var(--grain),var(--vellum)}
.reel{background:var(--room-lamp),radial-gradient(ellipse at 50% 0,rgba(184,146,74,.1),transparent 60%),var(--grain),var(--parchment)}
.testament-nt{background:var(--room-lamp),var(--grain),var(--vellum)}
.ab-beliefs{background:var(--room-lamp),var(--grain),var(--vellum)}
.gal-room--armour{background:var(--room-lamp),var(--grain),linear-gradient(180deg,var(--vellum),var(--parchment) 18rem)}
.arm-close{background:var(--lamp),var(--grain),var(--vellum)}
@media print{body{background-image:none}
  .scripture,.reel{background:var(--parchment)}.pieces,.testament-nt,.ab-beliefs,.arm-close{background:var(--vellum)}
  .gal-room--armour{background:linear-gradient(180deg,var(--vellum),var(--parchment) 18rem)}}

/* 🏛 D11 The leaves settle into place (the halls) — sprint 2026-09-30-leaves-settle-d11.
   As a leaf comes into view it rises the last few pixels and draws level with the glass, tied to the visitor's own scroll
   (CSS scroll-driven, no JS). Individual `translate`/`scale` only — no opacity, so text is never faded or held back, and each
   leaf's own hover `transform:var(--lift)` is untouched. Home keeps H8. Unsupported browsers, reduced motion, no-JS and print
   see the page exactly as before. */
:root{--settle-rise:14px;--settle-scale:.985;--ease-settle:cubic-bezier(.2,.7,.2,1)}
@keyframes leafSettle{from{translate:0 var(--settle-rise);scale:var(--settle-scale)}to{translate:none;scale:none}}
@media screen and (prefers-reduced-motion:no-preference){
  @supports (animation-timeline:view()){
    .tl-card,.book,.gal-frame,.gal-label,.exhibit .exhibit-plate,.xrefs li,.ab-card,.ab-confession,.src-list,.ce-leaf{
      animation:leafSettle var(--ease-settle) both;animation-timeline:view();animation-range:entry 0% entry 90%}
  }
}

/* 🏛 D12 — The grain of the night walls (sprint 2026-09-30-night-grain-d12). D10 gave the parchment and vellum walls a
   material; the night walls — the hall entrances, Home's two night rooms, the source band that closes each hall, and the
   colophon — were still pure gradient. They now carry the same kind of grain, as a pale warm fleck at a few percent, laid
   just above each wall's ground and beneath its lamp, shade and glow, so the lit leaves standing in these rooms (hall
   doors, exhibit plates, frames) stand forward of a dark-panelled wall rather than a screen colour. Walls only; the night
   leaves stay smooth. Same fallbacks as D10: none under prefers-contrast:more, none in print. */
:root{--grain-night:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='g' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' seed='11' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .92 0 0 0 0 .85 0 0 0 0 .7 .05 0 0 0 -.016'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E")}
@media (prefers-contrast:more){:root{--grain-night:none}}
.hero{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 38%,rgba(184,146,74,.22),transparent 60%),var(--grain-night),linear-gradient(180deg,var(--night) 0%,var(--night-2) 100%)}
.arm-hero{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 30%,rgba(184,146,74,.22),transparent 62%),var(--grain-night),linear-gradient(180deg,var(--night),var(--night-2))}
.cat-hero{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 30%,rgba(184,146,74,.2),transparent 62%),var(--grain-night),linear-gradient(180deg,var(--night),var(--night-2))}
.closed-room{background:var(--hall-lamp),var(--hall-wall),radial-gradient(ellipse at 50% 18%,rgba(184,146,74,.16),transparent 58%),var(--grain-night),linear-gradient(180deg,var(--night),var(--night-2))}
.treasures{background:var(--hall-wall),radial-gradient(ellipse at 50% 0,rgba(184,146,74,.16),transparent 58%),var(--grain-night),linear-gradient(180deg,var(--night-2) 0%,var(--night) 100%)}
.halls{background:var(--hall-wall),var(--grain-night),var(--night)}
.cat-source{background:var(--grain-night),var(--night)}
.colophon{background:var(--grain-night),radial-gradient(ellipse at 50% 0,#1a2230,#0e131b 62%)}
@media print{.treasures,.closed-room{background:none}}

/* 🏛 D13 — In the hand (sprint 2026-09-30-in-the-hand-d13). The depth language now answers the keyboard and the press,
   not only the pointer. A plate in its case comes up off its mount when it is hovered OR reached by keyboard, and settles
   back onto the mount while it is pressed. A lifted leaf (Home pieces and hall doors, Catalogue books, About cards, the
   404 hall doors) settles back toward the wall while a control inside it is pressed — the one depth cue a touch screen
   (no hover) gets. Movement is tiny and only under prefers-reduced-motion:no-preference; the shadow cue stays for
   everyone. No tilt, no parallax, no new animation. */
:root{--rise-plate:translateY(-2px);--press:translateY(-1px)}
/* Plates: keyboard parity with hover, then the press back onto the mount. */
.plate-open:focus-visible img,.tl-plate .plate-open:focus-visible img{box-shadow:var(--mount-shadow-lift)}
.gal-frame .plate-open:focus-visible img{box-shadow:var(--mount-shadow-night-lift)}
.plate-open:active img,.tl-plate .plate-open:active img{box-shadow:var(--mount-shadow)}
.gal-frame .plate-open:active img{box-shadow:var(--mount-shadow-night)}
/* Leaves: pressed back toward the wall (resting elevation; the tooled line stays lit). */
.ab-card:has(:is(a,summary,button):active),.pieces .piece:has(:is(a,summary,button):active){
  box-shadow:var(--edge-lit),inset 0 0 0 var(--tool) var(--leaf),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line-lit),var(--elev-1)}
.book:has(:is(a,summary,button):active){box-shadow:var(--edge-lit),var(--elev-1)}
.hall-directory .hall:has(:is(a,summary,button):active){
  box-shadow:var(--edge-lit-night),inset 0 0 0 var(--tool) var(--leaf),inset 0 0 0 calc(var(--tool) + 1px) var(--tool-line-lit),var(--elev-night-1)}
.closed-register a:active{box-shadow:var(--edge-lit-night),inset 0 0 0 5px var(--leaf),inset 0 0 0 6px rgba(184,146,74,.5),var(--elev-night-1)}
@media screen and (prefers-reduced-motion:no-preference){
  .plate-open img{transition:box-shadow .25s ease,transform .25s var(--ease-lift)}
  .plate-open:hover img,.plate-open:focus-visible img{transform:var(--rise-plate)}
  .plate-open:active img{transform:none;transition-duration:.08s}
  .ab-card:has(:is(a,summary,button):active),.pieces .piece:has(:is(a,summary,button):active),.book:has(:is(a,summary,button):active),
  .hall-directory .hall:has(:is(a,summary,button):active),.closed-register a:active{transform:var(--press);transition-duration:.08s}
}
/* D13 amendment: D7's lift on the 404 hall doors came after their reduced-motion reset and overrode it; restore it. */
@media (prefers-reduced-motion:reduce){.closed-register a:hover,.closed-register a:focus-visible,.closed-register a:active{transform:none}}

/* 🏛 D14 — The windows in the hand (sprint 2026-09-30-windows-in-the-hand-d14). D13's answer to the keyboard and the press,
   carried to the two Home window rows (Treasures on the night band, the Timeline reel on parchment). A window rises off the
   wall by --rise-plate when hovered or when its title is reached by keyboard, and settles back to its resting elevation
   while the title is pressed. The Treasures image keeps its own slow drift, so the frame moves, never the image; the gilt
   lozenge above it moves in step. Movement only under prefers-reduced-motion:no-preference; the shadow cue stays for all. */
.tr-item:has(.tr-title:focus-visible) .tr-title{color:#fff;text-decoration:underline;text-decoration-color:rgba(184,146,74,.8);text-underline-offset:.2em}
.tr-item:has(.tr-title:focus-visible) .tr-date::after{width:3rem}
.reel-leaf:has(.reel-title:focus-visible) .reel-title{color:var(--oxblood);text-decoration:underline;text-decoration-color:rgba(184,146,74,.8);text-underline-offset:.2em}
.tr-item:has(.tr-title:active) .tr-window{box-shadow:var(--edge-lit-night),0 0 0 1px rgba(184,146,74,.35),var(--elev-night-1)}
.reel-leaf:has(.reel-title:active) .reel-window{box-shadow:var(--edge-lit),0 0 0 1px rgba(184,146,74,.35),var(--elev-1)}
@media screen and (prefers-reduced-motion:no-preference){
  .tr-window,.tr-plate::before{transition:border-color .4s ease,box-shadow .4s ease,transform .3s var(--ease-lift)}
  .reel-window{transition:border-color .3s ease,box-shadow .35s ease,transform .3s var(--ease-lift)}
  .tr-item:hover .tr-window,.tr-item:has(.tr-title:focus-visible) .tr-window{transform:var(--rise-plate)}
  .tr-item:hover .tr-plate::before,.tr-item:has(.tr-title:focus-visible) .tr-plate::before{transform:var(--rise-plate) rotate(45deg)}
  .reel-leaf:hover .reel-window,.reel-leaf:has(.reel-title:focus-visible) .reel-window{transform:var(--rise-plate)}
  .reel-leaf:has(.reel-title:focus-visible) .reel-window img{transform:scale(1.045)}
  .tr-item:has(.tr-title:active) .tr-window,.reel-leaf:has(.reel-title:active) .reel-window{transform:none;transition-duration:.08s}
  .tr-item:has(.tr-title:active) .tr-plate::before{transform:rotate(45deg);transition-duration:.08s}
}

/* 🏛 D15 — The plate brought to the desk (sprint 2026-09-30-plate-to-the-desk-d15). Opening a plate now reads in depth:
   the reading room darkens (opacity only), the plate in its frame rises forward onto the desk a beat later, and its label
   and the plate count are laid beneath it last. Walking to the next or previous plate lays the new plate down with a small
   settle instead of a flat swap (plates.js alternates .is-step-a / .is-step-b so each step restarts cleanly). Translate
   and a whisper of scale only, on the shared settle curve: no tilt, no parallax, no rotation, the image never fades.
   Only under screen + prefers-reduced-motion:no-preference; reduce keeps today's instant, static viewer. */
:root{--desk-rise:18px;--desk-scale:.96;--step-rise:8px;--step-scale:.985}
@keyframes roomDim{from{opacity:0}to{opacity:1}}
@keyframes plateToDesk{from{translate:0 var(--desk-rise);scale:var(--desk-scale)}to{translate:none;scale:none}}
@keyframes plateLabel{from{opacity:0;translate:0 6px}to{opacity:1;translate:none}}
@keyframes plateStepA{from{translate:0 var(--step-rise);scale:var(--step-scale)}to{translate:none;scale:none}}
@keyframes plateStepB{from{translate:0 var(--step-rise);scale:var(--step-scale)}to{translate:none;scale:none}}
@media screen and (prefers-reduced-motion:no-preference){
  .plate-viewer[open]{animation:roomDim .24s ease-out}
  .plate-viewer[open] .plate-viewer-frame{animation:plateToDesk .42s var(--ease-settle) .06s both}
  .plate-viewer[open] .plate-viewer-figure>figcaption,.plate-viewer[open] .plate-viewer-nav{animation:plateLabel .32s ease-out .16s both}
  .plate-viewer[open] .plate-viewer-frame.is-step-a{animation:plateStepA .3s var(--ease-settle) both}
  .plate-viewer[open] .plate-viewer-frame.is-step-b{animation:plateStepB .3s var(--ease-settle) both}
}
@media (prefers-reduced-motion:reduce){.plate-viewer-frame,.plate-viewer figcaption,.plate-viewer-nav{animation:none!important}}

/* 🏛 D17 — The note laid in the leaf (sprint 2026-09-30-note-laid-in-the-leaf-d17). The Catalogue's book notes (Easton,
   Gill and the other commentaries) were flat text dropped under a hairline. Opened, each quotation is now a slip laid
   within the leaf: a slightly lighter paper set a hair below the leaf's face (the one lamp from above leaves a soft shade
   under the upper lip, a lit lower edge), the gilt rule kept as its edge. Commentary sits in the leaf, never above it.
   Opening draws the slip down from under its label on the shared settle curve (translate + a top-down reveal; the
   animation has no fill, so nothing lingers to clip a focus ring). Screen only; print keeps its own notes. Motion only
   under prefers-reduced-motion:no-preference. Closed notes are unchanged. */
:root{
  --slip:linear-gradient(180deg,rgba(255,253,246,.78),rgba(255,253,246,.5));
  --slip-recess:inset 0 7px 9px -8px rgba(31,27,22,.24),inset 0 -1px 0 rgba(255,255,255,.7);
  --slip-rise:6px;
}
@keyframes noteLaid{from{translate:0 calc(-1 * var(--slip-rise));clip-path:inset(0 0 100% 0)}to{translate:none;clip-path:inset(0 0 0 0)}}
@media screen{
  .book-note blockquote{padding:.6rem .8rem .65rem .85rem;background:var(--slip);box-shadow:var(--slip-recess);border-radius:0 2px 2px 0}
}
@media screen and (max-width:380px){.book-note blockquote{padding:.5rem .6rem .55rem .7rem}}
@media screen and (prefers-reduced-motion:no-preference){
  .book-note[open]>blockquote{animation:noteLaid .34s var(--ease-settle)}
}
@media screen and (prefers-contrast:more){.book-note blockquote{background:#fff;box-shadow:none}}

/* 🏛 D18 — The seals and the desk controls in the hand (sprint 2026-09-30-controls-in-the-hand-d18). The last flat things a
   visitor touches: the Timeline's category seals and the plate viewer's desk controls (Close, Magnify, Previous, Next).
   Under the one lamp: a control at rest carries a lit upper edge and a small cast shadow; a seal that is set (or Magnify
   when on) is pressed into the desk — shade under its upper lip, a lit lower edge, gilt border kept; pressing any of them
   sinks it 1px into that same recess. Colours and wording unchanged. Shadows on screen only; the 1px sink only under
   prefers-reduced-motion:no-preference; prefers-contrast:more keeps the plain rings; print unchanged. */
:root{
  --seal-set:inset 0 3px 5px -2px rgba(0,0,0,.62),inset 0 -1px 0 rgba(216,192,138,.3);
  --seal-set-gilt:inset 0 3px 5px -2px rgba(20,27,38,.5),inset 0 -1px 0 rgba(255,255,255,.32);
  --control-rest:inset 0 1px 0 rgba(216,192,138,.2),inset 0 -1px 0 rgba(0,0,0,.3),0 6px 12px -8px rgba(0,0,0,.75);
  --control-gilt:inset 0 1px 0 rgba(255,255,255,.38),inset 0 -1px 0 rgba(20,27,38,.22),0 8px 14px -8px rgba(0,0,0,.8);
  --sink:0 1px;
}
@media screen{
  .tl-seal:hover{box-shadow:var(--edge-lit-night)}
  .tl-seal[aria-pressed="true"],.tl-seal[aria-pressed="true"]:hover{box-shadow:var(--seal-set),inset 0 0 0 3px rgba(20,27,38,.3),inset 0 0 0 4px rgba(216,192,138,.34)}
  .tl-seal:active{box-shadow:var(--seal-set)}
  .plate-viewer .plate-viewer-close,.plate-viewer .plate-viewer-magnify,.plate-viewer .plate-viewer-step{box-shadow:var(--control-rest)}
  .plate-viewer .plate-viewer-close:hover,.plate-viewer .plate-viewer-magnify:hover,.plate-viewer .plate-viewer-step:hover{box-shadow:var(--control-gilt)}
  .plate-viewer .plate-viewer-magnify[aria-pressed="true"]{box-shadow:var(--seal-set-gilt)}
  .plate-viewer .plate-viewer-close:active,.plate-viewer .plate-viewer-step:active{box-shadow:var(--seal-set)}
  .plate-viewer .plate-viewer-close:hover:active,.plate-viewer .plate-viewer-step:hover:active,.plate-viewer .plate-viewer-magnify:active{box-shadow:var(--seal-set-gilt)}
}
@media screen and (prefers-reduced-motion:no-preference){
  .tl-seal{transition:border-color .2s ease,background-color .2s ease,color .2s ease,box-shadow .2s ease,translate .12s ease}
  .plate-viewer-close,.plate-viewer-magnify,.plate-viewer-step{transition:background .2s ease,color .2s ease,box-shadow .2s ease,translate .12s ease}
  .tl-seal:active,.plate-viewer-close:active,.plate-viewer-magnify:active,.plate-viewer-step:active{translate:var(--sink)}
}
@media screen and (prefers-contrast:more){
  .tl-seal:hover,.tl-seal:active,.plate-viewer .plate-viewer-close,.plate-viewer .plate-viewer-magnify,.plate-viewer .plate-viewer-step{box-shadow:none!important}
  .tl-seal[aria-pressed="true"],.tl-seal[aria-pressed="true"]:hover{box-shadow:inset 0 0 0 3px rgba(20,27,38,.55),inset 0 0 0 4px rgba(216,192,138,.45)!important}
}

/* 🏛 D19 — The desk kept clear of its controls (sprint 2026-09-30-desk-clear-of-controls-d19).
   When plate + caption + nav are taller than the room, plain centring spilled the desk upward over the fixed
   Magnify/Close controls. Now: auto margins centre the desk only when it fits (overflow runs down, never up);
   the room's top padding is taken from the controls themselves; the controls sit on their own plane; and the
   plate's height budget matches what actually sits beneath it. Layout only — no motion, colour or wording. */
.plate-viewer[open]{justify-content:flex-start;padding-top:calc(clamp(.6rem,1.6vw,1.2rem) + 44px + .75rem)}
.plate-viewer-figure{margin-block:auto}
.plate-viewer-close,.plate-viewer-magnify{z-index:2}
.plate-viewer-frame img{max-height:max(12rem,calc(100vh - 18rem));max-height:max(12rem,calc(100dvh - 18rem))}
@media (max-width:640px){.plate-viewer-frame img{max-height:max(10rem,calc(100dvh - 15rem))}}

/* 🏛 D20 — The desk fits the room (sprint 2026-09-30-desk-fits-the-room-d20). plates.js measures everything on
   the desk except the plate (padding, mat, caption, nav, hint) as --desk-tail; the plate takes exactly what is
   left, so long captions (Armoury) no longer push the desk past the room. Unmeasured → D19's budget. */
.plate-viewer:not(.is-magnified) .plate-viewer-frame img{max-height:max(12rem,calc(100vh - var(--desk-tail,18rem) - .5rem));max-height:max(12rem,calc(100dvh - var(--desk-tail,18rem) - .5rem))}
@media (max-width:640px){.plate-viewer:not(.is-magnified) .plate-viewer-frame img{max-height:max(10rem,calc(100dvh - var(--desk-tail,15rem) - .5rem))}}
/* 063 — the King James title of each book, set as a title-page line under the short name, and the Pauline
   subscription as a small ruled colophon at the foot of the card (printed after the last verse; not a verse). */
.book-kjv-title{margin:-.35rem 0 .8rem;font-family:var(--display);font-variant:small-caps;letter-spacing:.04em;font-size:clamp(.92rem,.88rem + .15vw,1.02rem);line-height:1.3;color:var(--ink-soft);text-wrap:balance}
.book-sub{margin:0 0 .9rem;padding-top:.6rem;border-top:1px solid rgba(184,146,74,.45);font-style:italic;font-size:.88rem;line-height:1.5;color:var(--ink-soft)}
.book-sub-label{display:block;font-family:var(--sans);font-style:normal;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:.2rem}
@media (max-width:380px){.book-kjv-title{font-size:.9rem}.book-sub{font-size:.84rem}}
@media print{.book-sub{border-top-color:#999}}

/* Catalogue · "Seen in the Gallery" (sprint 2026-10-01-catalogue-seen-in-the-gallery): the note slip, holding a list of plates. */
.book-plates{list-style:none;margin:.55rem 0 0;padding:0 0 0 .8rem;border-left:2px solid rgba(184,146,74,.55)}
.book-plates li{margin:0;padding:.3rem 0;font-size:clamp(.86rem,.83rem + .12vw,.95rem);line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.book-plates li+li{border-top:1px dotted rgba(110,32,32,.18)}
.book-plates a{color:var(--oxblood);text-decoration:none;border-bottom:1px solid rgba(110,32,32,.3)}
.book-plates a:hover,.book-plates a:focus-visible{color:var(--ink);border-bottom-color:var(--gold)}
.book-plates a:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.book-plates-shows{display:block;font-style:italic;font-size:.9em;color:var(--ink-soft)}
@media screen{.book-plates{padding:.45rem .8rem .5rem .85rem;background:var(--slip);box-shadow:var(--slip-recess);border-radius:0 2px 2px 0}}
@media screen and (max-width:380px){.book-plates{padding:.4rem .6rem .45rem .7rem}}
@media screen and (prefers-reduced-motion:no-preference){.book-note[open]>.book-plates{animation:noteLaid .34s var(--ease-settle)}}
@media screen and (prefers-contrast:more){.book-plates{background:#fff;box-shadow:none}}
@media (pointer:coarse){.book-plates a{display:inline-block;min-height:24px;padding:.1rem 0}}

/* 🎬 C2 The cinematic hero — scaffold (sprint 2026-10-06-cinematic-hero-c2-scaffold; plan: _brain/CINEMATIC-HERO-STORYBOARD.md).
   Everything here applies only while hero-film.js has added .film-on to <html>; without it the frontispiece is untouched. */
.film{position:absolute;inset:0;z-index:1;overflow:hidden;background:#080b11;contain:strict}
.film-stage{position:absolute;inset:0;transform-origin:50% 46%;will-change:transform}
.film-canvas{display:block;width:100%;height:100%}
.film-veil{position:absolute;inset:0;background:#000;pointer-events:none}
.hero.film-playing .hero-frontispiece,.hero.film-playing .hero-credit,.hero.film-playing .hero-ground{opacity:0}
/* C6 (sprint 2026-10-06-cinematic-hero-c6-seamless-handoff): the handoff must NOT re-animate the real hero.
   At resolve the hero is pinned to its final rest state with no animation (this also snaps any in-flight fp-rise,
   e.g. the short-cut repeat visit where resolve lands at t≈1s), so the only motion is the film overlay dissolving
   away over a hero already laid out in place — no second fade, no rise, no vertical shift. */
.hero.film-resolving .hero-ground,
.hero.film-resolving .hero-credit,
.hero.film-resolving .hero-frontispiece>*{animation:none!important;opacity:1!important;transform:none!important}
.film-controls{position:fixed;z-index:5;right:max(var(--gutter,1rem),env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));
  display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}
.film-btn{font-family:var(--sans);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;line-height:1;
  min-height:44px;min-width:44px;padding:.75rem 1.05rem;border:1px solid rgba(216,192,138,.55);border-radius:0;
  background:rgba(8,11,17,.85);color:#efe3c4;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  transition:background-color .2s,border-color .2s,color .2s}
.film-btn:hover{background:rgba(47,41,30,.92);border-color:#d8c08a;color:#fbf6ea}
.film-btn:focus-visible{outline:2px solid #d8c08a;outline-offset:3px}
.film-btn[hidden]{display:none}
.film-controls-away{visibility:hidden}
@media (max-width:480px){.film-controls{left:var(--gutter,1rem);justify-content:center}.film-btn{flex:1 1 auto;padding:.75rem .7rem;letter-spacing:.12em}}
@media (prefers-reduced-motion:reduce){.film,.film-controls{display:none}.hero.film-playing .hero-frontispiece,.hero.film-playing .hero-credit,.hero.film-playing .hero-ground{opacity:1}}
@media print{.film,.film-controls{display:none!important}.hero.film-playing .hero-frontispiece,.hero.film-playing .hero-credit,.hero.film-playing .hero-ground{opacity:1!important}}

/* 🎬 C3 WebGL atmosphere: the GL canvas sits under the transparent 2D overlay (ember). Sprint 2026-10-06-cinematic-hero-c3-webgl. */
.film-stage>.film-canvas{position:absolute;inset:0}

/* 🎬 C5 Scene 1: papyrus ghost + kinetic type (Eph 6:12). Sprint 2026-10-06-cinematic-hero-c5-scene1. Film-only; aria-hidden. */
.film-papyrus{position:absolute;left:50%;top:0;width:auto;max-width:none;opacity:0;mix-blend-mode:screen;pointer-events:none;
  will-change:transform,opacity,filter;transform:translateX(-50%);
  -webkit-mask-image:radial-gradient(ellipse 58% 62% at 50% 46%,#000 0,rgba(0,0,0,.6) 45%,transparent 78%);
          mask-image:radial-gradient(ellipse 58% 62% at 50% 46%,#000 0,rgba(0,0,0,.6) 45%,transparent 78%)}
.film-type{position:absolute;left:0;right:0;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;
  padding:0 max(var(--gutter,1rem),6vw);text-align:center;pointer-events:none;will-change:transform}
.film-line{margin:0;max-width:38ch;font-family:var(--display);font-style:italic;font-weight:500;
  font-size:clamp(1.35rem,1rem + 2.2vw,2.75rem);line-height:1.22;color:#efe3c4;text-wrap:balance;
  text-shadow:0 0 18px rgba(8,11,17,.85),0 1px 2px rgba(0,0,0,.6)}
.film-ln{display:block}
.film-w{display:inline-block;opacity:0;will-change:opacity,filter}
.film-ref{margin:1.1rem 0 0;font-family:var(--serif);font-size:clamp(.78rem,.7rem + .3vw,.95rem);letter-spacing:.22em;text-transform:uppercase;
  color:#cfb06e;opacity:0}
@media (max-width:480px){.film-ln{display:inline}.film-line{line-height:1.28}}

/* 🎬 C7 Scene 3a: the armour given (I–IV). Sprint 2026-10-06-cinematic-hero-c7-scene3a. Film-only; aria-hidden.
   The emblem is a clone of the frieze line-art, drawn on and gilded by hero-film.js; numeral + phrase resolve beneath. */
.film-defs{position:absolute;width:0;height:0;overflow:hidden}
.film-piece{display:flex;flex-direction:column;align-items:center;margin:0 0 clamp(.8rem,.5rem + 1.2vh,1.4rem);opacity:0;will-change:transform,opacity}
.film-emblem{width:clamp(84px,17vh,172px);height:auto;aspect-ratio:1;color:#d8c08a}
.film-num{margin-top:clamp(.5rem,.3rem + .8vh,.9rem);padding-left:.34em;font-family:var(--display);font-weight:500;
  font-size:clamp(.95rem,.85rem + .4vw,1.2rem);letter-spacing:.34em;color:#cfb06e;opacity:0}
@media (max-height:520px){.film-emblem{width:clamp(64px,22vh,110px)}}

/* 🎬 C9 Scenes 4–5: "Stand" (the ring) + the title card. Sprint 2026-10-06-cinematic-hero-c9-stand-title. Film-only; aria-hidden.
   The ring/mark/orbs are clones of SVGs already on the page; the title ghost is laid by JS at the real heading's measured rects. */
.film-ring{position:absolute;left:0;top:0;right:0;pointer-events:none;opacity:0;will-change:transform}
.film-mark,.film-orb{position:absolute;left:0;top:0;display:block;overflow:visible;opacity:0;transform-origin:50% 50%;will-change:transform,opacity}
.film-mark{color:#d8c08a}
.film-orb{color:#d8c08a;filter:drop-shadow(0 0 6px rgba(216,192,138,.35))}
.film-bloom{position:absolute;left:0;top:0;border-radius:50%;opacity:0;pointer-events:none;mix-blend-mode:screen;
  background:radial-gradient(closest-side,rgba(240,212,150,.40),rgba(216,170,100,.15) 48%,rgba(184,146,74,0) 100%)}
.film-type.film-type-low{justify-content:flex-end}
.film-title{position:absolute;inset:0;pointer-events:none;opacity:0}
.film-t-h1,.film-t-ey{position:absolute;margin:0;box-sizing:border-box;opacity:0;transform-origin:50% 50%;will-change:transform,opacity}
.film-t-ey .ey-ph{white-space:nowrap}
.film-t-rule{position:absolute;display:flex;align-items:center;justify-content:center;opacity:0;transform-origin:50% 50%}
.film-t-rule::before,.film-t-rule::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,.85))}
.film-t-rule::after{background:linear-gradient(270deg,transparent,rgba(184,146,74,.85))}
.film-t-rule span{flex:none;width:7px;height:7px;margin:0 .8rem;background:var(--gold);transform:rotate(45deg)}

/* 🎬 C10b — "♪ Watch with music": the pressed (sound on) state is lit gold, so it reads at a glance; the label stays the same (aria-pressed carries the state). */
.film-btn.film-music{border-color:#d8c08a;color:#fbf6ea}
.film-btn.film-music[aria-pressed="true"]{background:rgba(216,192,138,.9);border-color:#fbf6ea;color:#14100a}
.film-btn.film-music[aria-pressed="true"]:hover{background:#e6d3a3;color:#14100a}

/* 🎬 C11a — after the end (or a Skip): "Replay" and "♪ With music", a quiet pair in the hero's bottom padding,
   either side of the gold scroll-cue line (absolute, so nothing shifts). Hidden for reduced motion and print. */
.film-again{position:absolute;z-index:2;left:0;right:0;bottom:clamp(.7rem,.5rem + .6vw,1.2rem);display:grid;grid-template-columns:1fr 1fr;
  column-gap:clamp(2.4rem,1.8rem + 2vw,3.8rem);padding:0 var(--gutter,1rem);pointer-events:none;animation:film-again-in .9s ease-out both}
.film-again .film-btn{pointer-events:auto;font-size:.68rem;justify-self:start}
.film-again .film-replay{justify-self:end} /* equal columns: the gap is centred on the cue line whatever the label widths */
@keyframes film-again-in{from{opacity:0}to{opacity:1}}
@media (max-width:480px){.film-again{column-gap:2rem}.film-again .film-btn{padding:.75rem .8rem;letter-spacing:.12em}}
@media (prefers-reduced-motion:reduce){.film-again{display:none}}
@media print{.film-again{display:none!important}}

/* 🎬 C12a — the light wipe between the armour beats + the emblem a little larger on desktop. Sprint 2026-10-06-cinematic-hero-c12a-light-wipes. Film-only; aria-hidden. */
.film-wipe{position:absolute;left:0;top:0;bottom:0;width:30%;pointer-events:none;opacity:0;mix-blend-mode:screen;will-change:transform,opacity;
  background:linear-gradient(90deg,rgba(240,212,150,0) 0%,rgba(240,212,150,.35) 32%,rgba(251,246,234,.75) 50%,rgba(240,212,150,.35) 68%,rgba(240,212,150,0) 100%)}
@media (min-width:900px) and (min-height:521px){.film-emblem{width:clamp(96px,19.5vh,198px)}}

/* 🎬 C12b — the lens: letterbox bars on wide screens + a slowly breathing vignette edge. Sprint 2026-10-07-cinematic-hero-c12b-letterbox-lens. Film-only; aria-hidden. */
.film-lens{position:absolute;inset:0;pointer-events:none}
.film-vig{position:absolute;left:0;right:0;top:0;height:100%;transform-origin:50% 46%;will-change:transform,opacity;
  background:radial-gradient(ellipse 78% 72% at 50% 46%,rgba(0,0,0,0) 62%,rgba(3,5,9,.38) 88%,rgba(3,5,9,.6) 100%)}
.film-lb{position:absolute;left:0;right:0;top:0;height:0;background:#030509;transform:scaleY(0);will-change:transform}
.film-lb-t{transform-origin:50% 0}
.film-lb-b{transform-origin:50% 100%}
@media (max-width:899px){.film-lb{display:none!important}}

/* VC-10 — The Visitors' Center (/visit; sprint 2026-10-07-vc10-visitors-center). Built from the house's own pieces
   (arm-hero, ab-card leaves, cat-source plate, the onward-door register); this layer adds only the walk-card link,
   the three doors as a list with a line beneath each name, and the plain-questions disclosures. */
.vc-walk .ab-body{margin-bottom:1rem}
.vc-go{margin:auto 0 0;padding-top:.95rem;border-top:3px double rgba(184,146,74,.5);font-family:var(--sans);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase}
.vc-go a{display:inline-flex;align-items:center;min-height:44px;color:var(--oxblood);text-decoration-color:rgba(110,32,32,.35);text-underline-offset:.22em}
.vc-go a:hover,.vc-go a:focus-visible{text-decoration-color:currentColor}
.vc-doors{list-style:none}
.visit .ab-plain a{color:var(--gold-soft);text-decoration-color:rgba(216,192,138,.45);text-underline-offset:.18em}
.vc-doors>li{display:flex;min-width:0;margin:0}
.vc-doors>li>.acl-door{flex:1 1 auto;width:100%}
.vc-doors>li+li{box-shadow:-1px 0 0 rgba(184,146,74,.35)}
.vc-door-line{display:block;max-width:15rem;margin:0 auto;font-size:.95rem;line-height:1.5;color:var(--ink-soft);text-wrap:pretty}
.acl-door:hover .vc-door-line{color:var(--ink)}
.vc-qa details{border-top:1px solid rgba(184,146,74,.35)}
.vc-qa details:last-of-type{border-bottom:1px solid rgba(184,146,74,.35)}
.vc-qa summary{display:flex;align-items:center;gap:.9rem;min-height:44px;padding:1rem .25rem;cursor:pointer;list-style:none;
  font-family:var(--display);font-weight:500;font-size:clamp(1.15rem,1.05rem + .45vw,1.45rem);line-height:1.3;text-wrap:balance}
.vc-qa summary::-webkit-details-marker{display:none}
.vc-qa summary::before{content:"";flex:none;width:8px;height:8px;background:var(--gold);transform:rotate(45deg);transition:transform .25s ease}
.vc-qa details[open]>summary::before{transform:rotate(45deg) scale(.6);box-shadow:0 0 0 3px rgba(184,146,74,.35)}
.vc-qa summary:hover{color:var(--oxblood)}
.vc-qa summary:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.vc-qa details>p{margin:0 0 1.2rem;padding:0 .25rem 0 calc(8px + 1.15rem);color:var(--ink-soft);line-height:1.7;text-wrap:pretty}
.vc-qa details>p a{color:var(--oxblood)}
@media (max-width:640px){
  .vc-doors>li+li{box-shadow:0 -1px 0 rgba(184,146,74,.35)}
  .vc-doors .acl-door{display:grid;grid-template-columns:2.2rem minmax(0,1fr) auto;column-gap:1rem;row-gap:.2rem;align-items:center}
  .vc-doors .acl-door .hall-headpiece{grid-column:1;grid-row:1}
  .vc-doors .acl-name{grid-column:2;grid-row:1}
  .vc-doors .acl-door::after{grid-column:3;grid-row:1}
  .vc-door-line{grid-column:2/4;grid-row:2;max-width:none;margin:0;font-size:.92rem}
}
@media (prefers-reduced-motion:reduce){.vc-qa summary::before{transition:none}}
@media print{.vc-qa details>p{display:block}.vc-qa summary::before{display:none}}

/* VC-11 — Doors into the Visitors' Center (sprints/2026-10-07-vc11-doors-into-visitors-center.md; D-2).
   Desktop/tablet: a "Visit" door beside Find, in Find's own language (label face, gold glyph, a ruled left edge); it is
   not a seventh hall. Folded bar (phones, or wherever one row will not fit): the door hides, and the Visitors' Center is
   the first leaf of doors in the hall menu (.mn-visit), set off by a gilt rule. Without JS the door stays in the bar. */
.masthead-nav .mn-visit{display:none}
.mast-visit{display:inline-flex;align-items:center;gap:.5rem;flex:none;min-height:31px;padding:.35rem 0 .35rem 1.1rem;
  border-left:1px solid rgba(184,146,74,.4);color:var(--vellum);text-decoration:none;white-space:nowrap;
  font-family:var(--label);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;font-variant-numeric:lining-nums;transition:color .25s ease}
.mast-visit-icon{flex:none;width:1.1rem;height:1.1rem;color:var(--gold-soft);overflow:visible;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.mv-word{padding-top:.08em}
.mast-visit:hover{color:#fff}
.mast-visit:hover .mast-visit-icon{transform:translateY(-1px) scale(1.06)}
.mast-visit:focus-visible{outline:2px solid var(--gold-soft);outline-offset:4px}
.mast-visit[aria-current="page"]{color:var(--gold-soft)}
.mast-visit[aria-current="page"] .mast-visit-icon{color:var(--gold)}
@media screen and (min-width:641px) and (pointer:coarse){.mast-visit{min-height:44px}}
@media (min-width:768px) and (max-width:900px){
  .mast-visit{padding-left:.8rem;min-width:44px;justify-content:center}
  .mast-visit .mv-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
/* POLISH-C10: the hall bar holds from 880px up. Between the tablet register (≤900) and the full bar (≥1075) it used to
   fold behind "Halls" (905–1070) though it fits: 901–1019 keep the tablet register (glass and door alone, words kept
   for screen readers); 1020–1074 keep the words and ease the tracking. masthead.js still folds wherever it would not fit. */
@media (min-width:901px) and (max-width:1019px){
  .masthead{column-gap:.8rem}
  .masthead-nav{gap:.2rem .55rem;letter-spacing:.09em}
  .brand{letter-spacing:.07em}
  .mast-find-btn,.mast-visit{padding-left:.8rem;min-width:44px;justify-content:center}
  .mast-find-btn .mf-word,.mast-visit .mv-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
@media (min-width:1020px) and (max-width:1074px){
  .masthead{column-gap:1rem}
  .masthead-nav{gap:.2rem .8rem;letter-spacing:.11em}
  .brand{letter-spacing:.1em}
}
@media (max-width:640px){.mast-visit{flex-basis:100%;justify-content:center;border-left:0;padding-left:0;min-height:44px}}
@media screen{
  html.mast-fold .mast-visit{display:none}
  html.mast-fold .masthead-nav .mn-visit{border-bottom-color:rgba(184,146,74,.5)}
}
@media print{.mast-visit{display:none!important}}
/* 🎬 Polish B — each passage between the armour beats has its own shape of light (falling band, opening ring, thin blade, warm glow) on the one .film-wipe element; the plain band is C12a's. Sprint 2026-10-07-polish-b-varied-hero-transitions. Film-only; aria-hidden. */
.film-wipe.fw-fall{width:100%;bottom:auto;
  background:linear-gradient(180deg,rgba(240,212,150,0) 0%,rgba(240,212,150,.32) 34%,rgba(251,246,234,.7) 50%,rgba(240,212,150,.32) 66%,rgba(240,212,150,0) 100%)}
.film-wipe.fw-iris{bottom:auto;border-radius:50%;transform-origin:50% 50%;
  background:radial-gradient(circle closest-side,rgba(251,246,234,0) 0%,rgba(251,246,234,0) 54%,rgba(240,212,150,.42) 74%,rgba(251,246,234,.72) 84%,rgba(240,212,150,0) 100%)}
.film-wipe.fw-blade{width:7%;
  background:linear-gradient(90deg,rgba(240,212,150,0) 0%,rgba(240,212,150,.42) 38%,rgba(255,250,238,.92) 50%,rgba(240,212,150,.42) 62%,rgba(240,212,150,0) 100%)}
.film-wipe.fw-glow{bottom:auto;transform-origin:50% 46%;
  background:radial-gradient(ellipse 60% 55% at 50% 46%,rgba(255,226,170,.6) 0%,rgba(240,200,140,.24) 45%,rgba(240,200,140,0) 75%)}
