:root{--night:#090b19;--ink:#211526;--paper:#f5ead2;--gold:#f1cc79;--gold-dark:#9d6d30;--plum:#4c284e;--violet:#7e5aa8;--moss:#43684e;--cream:#fff4d7;--muted:#bdb3c5;--panel:rgba(12,10,24,.86);--line:rgba(241,204,121,.36);--shadow:0 30px 90px rgba(0,0,0,.48)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--night);color:var(--cream);font-family:"DM Sans",sans-serif}.skip-link{position:fixed;left:10px;top:-60px;z-index:99;background:var(--cream);color:var(--ink);padding:10px}.skip-link:focus{top:10px}button,input,select{font:inherit}.scene{position:relative;min-height:100svh;overflow:hidden;background:#090b19 url('library-scene.png') center 38%/cover no-repeat;isolation:isolate}.scene:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(6,6,17,.9) 0 21%,rgba(6,6,17,.1) 50%,rgba(6,6,17,.62) 100%),linear-gradient(0deg,rgba(6,6,17,.75),transparent 35%)}.scene-wash{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 49% 32%,transparent 0 17%,rgba(17,10,37,.18) 47%,rgba(4,4,13,.3) 100%)}.topbar{position:relative;z-index:20;display:flex;align-items:center;gap:28px;padding:22px 34px;border-bottom:1px solid rgba(255,255,255,.08);background:linear-gradient(rgba(7,7,18,.82),rgba(7,7,18,.25));backdrop-filter:blur(7px)}.brand{font:600 1.25rem "Cormorant Garamond",serif;color:var(--cream);text-decoration:none;letter-spacing:.03em}.brand span{color:var(--gold)}nav{display:flex;gap:6px;margin-left:auto}nav button,.round-button{border:0;background:transparent;color:#eee3ca;cursor:pointer;padding:9px 12px}nav button:hover{color:var(--gold)}.round-button{width:42px;height:42px;border:1px solid var(--line);border-radius:50%}.welcome-card{position:relative;z-index:5;width:min(430px,calc(100% - 38px));margin:11vh 0 0 5vw;padding:28px 32px 32px;background:linear-gradient(135deg,rgba(14,10,28,.92),rgba(31,19,48,.8));border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(12px);clip-path:polygon(0 0,97% 0,100% 8%,100% 100%,3% 100%,0 92%)}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:.68rem;color:var(--gold);margin:0 0 10px}.welcome-card h1{font:600 clamp(4rem,8vw,6.8rem)/.72 "Cormorant Garamond",serif;margin:0 0 24px;text-shadow:0 4px 26px rgba(0,0,0,.6)}.welcome-card h1 em{font-style:italic;color:#dec8f1}.welcome-card>p:not(.eyebrow){font:1.15rem/1.65 "Cormorant Garamond",serif;color:#e7dfd0}.actions{display:flex;gap:10px;flex-wrap:wrap}.button{border:1px solid var(--line);padding:12px 16px;border-radius:4px;cursor:pointer}.primary{background:var(--gold);color:#261827;border-color:var(--gold)}.secondary{background:rgba(18,13,33,.68);color:var(--cream)}.scene-stats{display:flex;gap:22px;margin-top:22px;color:#cfc3d2;font-size:.75rem}.scene-stats strong{color:var(--gold);font-size:1.05rem}.door-hotspot{position:absolute;z-index:8;left:49%;top:49%;width:8.8%;height:20%;border:0;background:transparent;cursor:pointer}.door-hotspot span{position:absolute;left:50%;bottom:-34px;translate:-50% 0;opacity:0;padding:7px 11px;border:1px solid var(--line);background:rgba(8,6,20,.88);color:var(--gold);font:600 .7rem "Pixelify Sans",sans-serif;transition:.2s}.door-hotspot:hover span,.door-hotspot:focus span{opacity:1;bottom:-24px}.pixel{position:absolute;z-index:9;border:0;cursor:pointer;image-rendering:pixelated;filter:drop-shadow(0 7px 6px rgba(0,0,0,.6));transition:transform .18s}.pixel:hover{transform:translateY(-4px) scale(1.04)}.pixel .eye{position:absolute;background:#f6efc3;box-shadow:inset 2px 0 #10121b}.frog{left:21%;bottom:12%;width:52px;height:35px;background:#80b34e;box-shadow:-8px -6px #6d9b43,8px -6px #6d9b43,-12px 8px #4b6e35,12px 8px #4b6e35}.frog .eye{width:10px;height:10px;top:-6px}.frog .one{left:7px}.frog .two{right:7px}.cat{right:17%;bottom:16%;width:56px;height:36px;background:#171322;box-shadow:-11px -17px #171322,11px -17px #171322,-18px -22px #171322,18px -22px #171322}.cat .eye{width:8px;height:5px;top:-10px;background:#d7ee72}.cat .one{left:12px}.cat .two{right:12px}.cat .tail{position:absolute;width:30px;height:9px;background:#171322;right:-23px;bottom:3px;transform-origin:left;animation:tail 2.1s ease-in-out infinite}.owl{right:14%;top:17%;width:42px;height:52px;background:#8d714d;box-shadow:-7px 9px #6c5438,7px 9px #6c5438}.owl .eye{width:13px;height:13px;border-radius:50%;top:12px}.owl .one{left:6px}.owl .two{right:6px}.floating-book{position:absolute;z-index:6;width:35px;height:46px;border:3px solid #c29654;border-radius:2px 7px 7px 2px;background:#5d315f;display:grid;place-items:center;color:var(--gold);box-shadow:0 7px 13px rgba(0,0,0,.35);animation:floatBook 4s ease-in-out infinite}.book-a{left:57%;top:28%}.book-b{left:67%;top:41%;animation-delay:-1.3s}.book-c{left:43%;top:22%;animation-delay:-2.4s}.librarian-note{position:absolute;z-index:7;right:3.5vw;top:18%;width:220px;padding:24px 20px;color:#3a2832;background:#e6ce9f;box-shadow:0 18px 30px rgba(0,0,0,.4);rotate:1.2deg;font:1.02rem/1.5 "Cormorant Garamond",serif}.librarian-note:before,.librarian-note:after{content:"";position:absolute;width:13px;height:13px;border-radius:50%;top:-7px;background:#8e4560}.librarian-note:before{left:38px}.librarian-note:after{right:38px}.librarian-note .eyebrow{color:#704734}.scene-dock{position:absolute;z-index:10;left:50%;bottom:24px;translate:-50% 0;width:min(860px,calc(100% - 36px));display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:rgba(9,7,20,.88);backdrop-filter:blur(12px);box-shadow:var(--shadow)}.scene-dock button{display:grid;grid-template-columns:auto 1fr;column-gap:10px;text-align:left;border:0;border-right:1px solid var(--line);background:transparent;color:var(--cream);padding:17px;cursor:pointer}.scene-dock button:last-child{border-right:0}.scene-dock button:hover{background:rgba(126,90,168,.2)}.scene-dock span{grid-row:1/3;color:var(--gold);font-size:1.5rem}.scene-dock strong{font-family:"Cormorant Garamond",serif;font-size:1.08rem}.scene-dock small{color:#bfb3c0}.collection{background:linear-gradient(#110f20,#21152a);padding:100px max(5vw,22px);min-height:100vh}.section-heading{display:flex;justify-content:space-between;gap:30px;align-items:end;max-width:1250px;margin:auto}.section-heading h2{font:600 clamp(3rem,6vw,5rem)/1 "Cormorant Garamond",serif;margin:0}.section-heading>p{color:#c8bec8}.catalog-controls{max-width:1250px;margin:35px auto 25px;display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}.catalog-controls label{display:grid;gap:7px;font-size:.72rem;color:#cfc4d0}.catalog-controls input,.catalog-controls select{width:100%;border:1px solid var(--line);background:#171124;color:var(--cream);padding:12px;border-radius:4px}.result-status{max-width:1250px;margin:0 auto 20px;color:#bcb1c0}.shelf-grid{max-width:1250px;margin:auto;display:grid;grid-template-columns:repeat(6,1fr);gap:36px 18px}.review-card{border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;padding:0}.book-cover{height:260px;border-radius:3px 11px 11px 3px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;box-shadow:-5px 8px 0 rgba(0,0,0,.23),0 16px 27px rgba(0,0,0,.32),inset 5px 0 rgba(255,255,255,.1);border:2px solid rgba(241,204,121,.45);transition:.25s}.review-card:hover .book-cover{translate:0 -8px;rotate:-1deg}.cover-sigil{font-size:1.7rem;color:var(--gold);margin-bottom:20px}.cover-title{font:600 1.35rem/1.05 "Cormorant Garamond",serif}.cover-author{font-size:.64rem;margin-top:12px;opacity:.75}.card-meta{display:grid;margin-top:10px;gap:3px;font-size:.7rem;color:#bfb3c1}.card-meta strong{color:var(--gold)}.amethyst{background:linear-gradient(135deg,#8664aa,#3a294e)}.moss{background:linear-gradient(135deg,#5f8059,#263c2f)}.rose{background:linear-gradient(135deg,#9a526e,#482333)}.midnight{background:linear-gradient(135deg,#4e507e,#202037)}.gold{background:linear-gradient(135deg,#b98944,#554226)}.plum{background:linear-gradient(135deg,#7b4775,#35213a)}.load-more{display:block;margin:45px auto 0}.room-dialog,.review-dialog{border:0;padding:0;background:transparent;max-width:min(920px,calc(100% - 24px));width:100%;color:var(--ink)}dialog::backdrop{background:rgba(4,4,12,.85);backdrop-filter:blur(8px)}.dialog-close{position:absolute;right:10px;top:10px;z-index:3;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:#171122;color:var(--cream);font-size:1.5rem;cursor:pointer}.room-dialog section{background:var(--paper);padding:55px;border-radius:8px;box-shadow:var(--shadow);min-height:420px}.room-dialog h2{font:600 3.8rem/1 "Cormorant Garamond",serif;margin:0 0 15px}.room-dialog p{font:1.14rem/1.65 "Cormorant Garamond",serif}.room-list{display:grid;gap:8px;margin-top:25px}.room-list button{border:1px solid #c3a979;background:#fff7e7;color:#342437;padding:12px;text-align:left;cursor:pointer}.oracle-box{display:grid;grid-template-columns:1fr auto;gap:12px;margin-top:25px}.oracle-box select{padding:12px;border:1px solid #c5ae82;background:#fff8e8}.oracle-result{margin-top:25px;padding:20px;border-left:4px solid #795486;background:#eadcf0}.open-book{display:grid;grid-template-columns:.82fr 1.18fr;max-height:82vh;background:var(--paper);border-radius:8px;overflow:hidden;box-shadow:var(--shadow)}.review-cover{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:45px;color:var(--cream);background:linear-gradient(135deg,#634774,#30233d);border-right:10px solid #d3b87c}.review-cover>span{font-size:3rem;color:var(--gold)}.review-cover h2{font:600 3rem/1 "Cormorant Garamond",serif}.review-cover p{opacity:.8}.review-page{position:relative;padding:50px;overflow:auto;background:linear-gradient(90deg,#e8d7b4,#f7edd7 8%)}.stars-row{color:#9c6b32;letter-spacing:.1em;margin:10px 0}.tag-list{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:26px}.tag-list span{border:1px solid #bda77d;border-radius:999px;padding:5px 8px;font-size:.65rem}.review-text{white-space:pre-line;font:1.12rem/1.8 "Cormorant Garamond",serif}.wax-seal{margin:30px 0 0 auto;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:#823d50;color:#ebc986;font:1.5rem "Cormorant Garamond",serif}.toast{position:fixed;z-index:100;left:50%;bottom:25px;translate:-50% 25px;opacity:0;background:var(--cream);color:var(--ink);padding:11px 16px;border-radius:999px;transition:.25s}.toast.show{opacity:1;translate:-50% 0}.firefly{position:absolute;z-index:4;width:4px;height:4px;border-radius:50%;background:#ffec8c;box-shadow:0 0 9px 4px rgba(255,236,140,.42);animation:firefly var(--d) ease-in-out infinite alternate}.reduce-motion *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@keyframes firefly{to{translate:var(--x) var(--y);opacity:.2}}@keyframes floatBook{50%{translate:0 -14px;rotate:3deg}}@keyframes tail{50%{rotate:24deg}}
@media(max-width:950px){.scene{background-position:58% center}.welcome-card{margin-top:7vh}.librarian-note{display:none}.scene-dock{grid-template-columns:repeat(2,1fr)}.scene-dock button:nth-child(2){border-right:0}.scene-dock button:nth-child(-n+2){border-bottom:1px solid var(--line)}.door-hotspot{left:54%;width:12%}.shelf-grid{grid-template-columns:repeat(4,1fr)}.catalog-controls{grid-template-columns:1fr 1fr}.catalog-controls label:first-child{grid-column:1/-1}}
@media(max-width:650px){.topbar{padding:16px}nav{display:none}.scene{min-height:900px;background-position:55% center}.welcome-card{margin:50px auto 0;width:calc(100% - 30px);padding:24px}.welcome-card h1{font-size:4.4rem}.door-hotspot{display:none}.pixel{scale:.78}.frog{left:12%;bottom:27%}.cat{right:8%;bottom:31%}.owl{right:8%;top:12%}.scene-dock{bottom:15px}.scene-dock button{padding:12px}.scene-dock small{font-size:.62rem}.collection{padding-top:70px}.section-heading{display:block}.catalog-controls{grid-template-columns:1fr}.catalog-controls label:first-child{grid-column:auto}.shelf-grid{grid-template-columns:repeat(2,1fr);gap:28px 12px}.book-cover{height:230px}.open-book{grid-template-columns:1fr;max-height:90vh;overflow:auto}.review-cover{min-height:300px;border-right:0;border-bottom:8px solid #d3b87c}.review-page{overflow:visible;padding:34px}.room-dialog section{padding:48px 25px}.room-dialog h2{font-size:3rem}.oracle-box{grid-template-columns:1fr}}


/* Reference-mockup shelf rebuild */
.library-catalog-layout{max-width:1450px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:26px;align-items:start}
.shelf-column{min-width:0}
.bookshelf{position:relative;margin:0;width:100%;padding:26px 24px 38px;border:14px solid #26130e;border-radius:6px;background:linear-gradient(90deg,#1b0d0a,#422219 4%,#2c1711 50%,#45251a 96%,#1b0d0a);box-shadow:inset 0 0 0 3px #8c5a32,inset 0 0 38px #080403,0 28px 65px rgba(0,0,0,.42);display:flex;flex-direction:column;gap:24px;min-height:0}
.shelf-row{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:16px;min-height:260px;padding:16px 12px 38px;border:2px solid #2a1610;background:linear-gradient(90deg,rgba(255,255,255,.025),transparent 16%,rgba(0,0,0,.08) 75%),linear-gradient(#25130f,#3b2118);box-shadow:inset 0 0 24px rgba(0,0,0,.42)}
.shelf-row:after{content:"";position:absolute;z-index:0;left:-10px;right:-10px;bottom:0;height:28px;border-top:3px solid #c58a4d;border-bottom:7px solid #160b08;background:linear-gradient(#a76d3d 0 14%,#74452a 18% 48%,#3a2118 52% 74%,#1c0e0c 78%);box-shadow:0 12px 18px rgba(0,0,0,.55)}
.review-card,.review-card:nth-child(n){position:relative;z-index:2;width:100%;height:218px!important;padding:0;border:0;background:transparent;cursor:pointer;transform:none;filter:none;align-self:end;perspective:800px}
.review-card:hover,.review-card:focus-visible{transform:translateY(-8px);z-index:5;outline:2px solid var(--gold);outline-offset:4px}
.review-card.selected{transform:translateY(-12px);z-index:7}
.book-cover{position:relative;width:100%;height:100%!important;display:flex!important;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;padding:18px 12px!important;border:3px solid rgba(242,207,133,.74)!important;border-radius:3px 9px 9px 3px!important;opacity:1!important;mix-blend-mode:normal!important;backdrop-filter:none!important;box-shadow:-7px 8px 0 rgba(0,0,0,.32),0 15px 24px rgba(0,0,0,.35),inset 7px 0 rgba(255,255,255,.08),inset 0 0 0 2px rgba(0,0,0,.24);transition:transform .18s ease,filter .18s ease}
.book-cover:before{content:"";position:absolute;inset:10px;border:1px solid rgba(244,211,146,.52);border-radius:2px 6px 6px 2px;pointer-events:none}
.book-cover:after{content:"";position:absolute;left:14px;right:14px;top:44px;height:1px;background:rgba(244,211,146,.45);box-shadow:0 112px rgba(244,211,146,.35)}
.review-card:hover .book-cover,.review-card:focus-visible .book-cover{transform:rotateY(-4deg);filter:brightness(1.08)}
.cover-sigil{position:relative;z-index:1;margin:0 0 18px;font-size:1.5rem;color:var(--gold)}
.cover-title{position:relative!important;inset:auto!important;z-index:1;writing-mode:horizontal-tb!important;transform:none!important;font:600 clamp(.86rem,1.15vw,1.08rem)/1.05 "Cormorant Garamond",serif!important;text-align:center;overflow-wrap:anywhere;color:#fff4d7;text-shadow:0 2px 5px rgba(0,0,0,.6)}
.cover-author{position:absolute!important;z-index:1;left:10px!important;right:10px!important;bottom:18px!important;translate:0!important;writing-mode:horizontal-tb!important;transform:none!important;text-align:center;font-size:.53rem!important;letter-spacing:.04em;text-transform:uppercase;color:#f0dfbd;opacity:.9}
.card-meta{display:none!important}
.amethyst{background:linear-gradient(145deg,#9a79bb,#4d315f 68%,#29172f)!important}.moss{background:linear-gradient(145deg,#718966,#38513a 68%,#1f2c22)!important}.rose{background:linear-gradient(145deg,#ae6981,#653246 68%,#351c28)!important}.midnight{background:linear-gradient(145deg,#686c9a,#343655 68%,#1a1c31)!important}.gold{background:linear-gradient(145deg,#c99a51,#72522c 68%,#3b2b19)!important}.plum{background:linear-gradient(145deg,#925c8e,#573153 68%,#2c1a2e)!important}
.indigo{background:linear-gradient(145deg,#6a76c4,#31356b 68%,#181933)!important}.berry{background:linear-gradient(145deg,#c85e88,#661d3f 68%,#320f22)!important}.teal{background:linear-gradient(145deg,#4bafab,#1e4c49 68%,#0e2726)!important}.lavender{background:linear-gradient(145deg,#c1a8e6,#5f4a86 68%,#2f2444)!important}

/* Cursed reads: a hexed edge instead of the usual gilt */
.review-card.cursed .book-cover{border-color:rgba(196,74,84,.75)!important;box-shadow:-7px 8px 0 rgba(0,0,0,.32),0 15px 24px rgba(0,0,0,.35),inset 7px 0 rgba(255,255,255,.06),inset 0 0 0 2px rgba(0,0,0,.24),0 0 22px rgba(178,42,58,.35)}
.review-card.cursed .book-cover:before{border-color:rgba(196,74,84,.55);border-style:dashed}
.review-card.cursed .cover-sigil{color:#e07d84;text-shadow:0 0 10px rgba(224,60,70,.6)}
.review-card.cursed:hover .book-cover,.review-card.cursed:focus-visible .book-cover{filter:brightness(1.05) saturate(1.15)}

/* Sabrina-esque black cat familiar: collar, moon charm, greener glowing eyes */
.cat .eye{background:#a8f06a;box-shadow:0 0 6px 2px rgba(168,240,106,.55),inset 2px 0 #10121b}
.cat:before{content:"";position:absolute;left:9px;right:9px;bottom:9px;height:4px;border-radius:2px;background:#7e5aa8;box-shadow:0 1px 2px rgba(0,0,0,.4)}
.cat:after{content:"";position:absolute;left:50%;bottom:5px;translate:-50% 0;width:8px;height:8px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#f6e6b8,#c99a44 70%,#8a6425);box-shadow:0 0 5px rgba(241,204,121,.7)}
.cat:hover .eye{box-shadow:0 0 9px 3px rgba(168,240,106,.75),inset 2px 0 #10121b}

/* Witchy oracle: candlelit alcove + tarot-style reveal */
.oracle-box{position:relative;padding:22px;border:1px solid rgba(141,84,134,.35);border-radius:6px;background:radial-gradient(circle at 15% 20%,rgba(255,196,120,.14),transparent 55%),linear-gradient(180deg,#2a1a33,#1c1226)}
.oracle-box select{background:#241730;color:var(--cream);border:1px solid rgba(241,204,121,.4)}
.oracle-result{background:linear-gradient(180deg,#2a1a33,#1c1226);border-left:4px solid #b98944;color:var(--cream);display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.tarot-card{flex:0 0 auto;width:96px;height:150px;border-radius:4px 10px 10px 4px;border:2px solid rgba(242,207,133,.75);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10px;box-shadow:0 12px 22px rgba(0,0,0,.4),inset 0 0 0 2px rgba(0,0,0,.2);animation:tarotFlip .5s ease}
.tarot-card span{font-size:1.3rem;color:var(--gold);margin-bottom:8px}
.tarot-card strong{font:600 .82rem/1.15 "Cormorant Garamond",serif;color:#fff4d7}
.tarot-card small{margin-top:6px;font-size:.55rem;opacity:.8}
.oracle-result>p{margin:0;flex:1 1 160px}
@keyframes tarotFlip{from{transform:rotateY(90deg);opacity:0}to{transform:rotateY(0);opacity:1}}
.shelf-preview{position:sticky;top:22px;display:grid;grid-template-columns:120px 1fr;gap:20px;padding:26px;background:linear-gradient(90deg,#dec79e,#f5e8cc 8%,#ecd9b7);color:#2a1a25;border:7px double #8f6336;border-radius:4px;box-shadow:0 26px 60px rgba(0,0,0,.43),inset 0 0 0 1px #f8edda;min-height:525px}
.shelf-preview:before{content:"";position:absolute;inset:10px;border:1px solid rgba(111,72,38,.25);pointer-events:none}
.preview-book{position:relative;height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px 12px;border:2px solid #a7783f;border-radius:3px 8px 8px 3px;background:linear-gradient(145deg,#75578a,#3d294e);color:#fff3d5;box-shadow:-6px 7px 0 rgba(72,43,25,.25),inset 5px 0 rgba(255,255,255,.1)}
.preview-book:before{content:"";position:absolute;inset:9px;border:1px solid rgba(244,213,155,.55)}
.preview-book span,.preview-book strong,.preview-book small{position:relative;z-index:1}.preview-book span{font-size:1.5rem;color:#f1cc79;margin-bottom:14px}.preview-book strong{font:600 1.05rem/1.05 "Cormorant Garamond",serif}.preview-book small{margin-top:12px;font-size:.58rem;text-transform:uppercase}.preview-copy{position:relative;z-index:1}.preview-copy h3{font:600 2rem/1 "Cormorant Garamond",serif;margin:0 0 6px}.preview-author{font:1rem "Cormorant Garamond",serif;margin:0 0 10px}.preview-excerpt{font:1.03rem/1.55 "Cormorant Garamond",serif;display:-webkit-box;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden}.preview-copy .tag-list{margin-bottom:12px}.preview-copy .tag-list span{font-size:.58rem}.preview-copy .button{width:100%;margin-top:10px}.preview-copy .button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1100px){.library-catalog-layout{grid-template-columns:1fr}.shelf-preview{position:relative;top:auto;grid-template-columns:140px 1fr;min-height:0}.shelf-row{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:720px){.shelf-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0}.review-card,.review-card:nth-child(n){height:210px!important}.shelf-preview{grid-template-columns:1fr}.preview-book{width:150px;margin:auto}.bookshelf{padding:18px 14px 28px;border-width:9px}.library-catalog-layout{gap:18px}}

/* Real cover art (fetched live from Open Library) with a scrim so title/author stay legible */
.cover-scrim{position:absolute;inset:0;z-index:0;pointer-events:none}
.preview-book .cover-scrim,.review-cover .cover-scrim{position:absolute;inset:0;z-index:0}
.has-art .cover-scrim{background:linear-gradient(180deg,rgba(0,0,0,.05) 0%,rgba(0,0,0,.2) 55%,rgba(0,0,0,.8) 100%)}
.book-cover.has-art,.preview-book.has-art,.review-cover.has-art{background-size:cover!important;background-position:center!important;background-repeat:no-repeat}
.book-cover.has-art .cover-title,.book-cover.has-art .cover-author{color:#fff}
.preview-book.has-art strong,.preview-book.has-art small{color:#fff4d7}
.review-cover.has-art h2,.review-cover.has-art p{color:#fff4d7}

/* Homecoming pass: bring the homepage panels into the same physical-object language as the rest of the site */
.welcome-card{background:linear-gradient(160deg,var(--paper) 0%,#e9d3a0 55%,#dfc48c 100%)!important;border:1px solid rgba(90,60,30,.35)!important;backdrop-filter:none!important;box-shadow:var(--shadow),inset 0 2px 0 rgba(255,255,255,.5)!important;rotate:-.6deg}
.welcome-card .eyebrow{color:#8f5a2a!important}
.welcome-card h1{color:var(--ink)!important;text-shadow:none!important}
.welcome-card h1 em{color:#6a3f76!important}
.welcome-card>p:not(.eyebrow){color:#463040!important}
.welcome-card .scene-stats{color:#6b5644!important}
.welcome-card .scene-stats strong{color:#8f5a2a!important}
.welcome-card .secondary{background:rgba(38,24,39,.85)!important;color:var(--cream)!important;border-color:rgba(90,60,30,.4)!important}
.scene-dock{background:linear-gradient(90deg,#2a1712,#4b2a1e 8%,#352018 50%,#4b2a1e 92%,#25130f)!important;backdrop-filter:none!important;border:1px solid rgba(197,138,77,.4)!important;box-shadow:var(--shadow),inset 0 0 0 3px #8c5a32!important}
.scene-dock button{border-right-color:rgba(197,138,77,.35)!important}
.scene-dock button:hover{background:rgba(255,205,120,.1)!important}

/* Five-star reads get a ribbon and a warmer glow instead of just a gold border */
.review-card.beloved .book-cover{box-shadow:-7px 8px 0 rgba(0,0,0,.32),0 15px 24px rgba(0,0,0,.35),inset 7px 0 rgba(255,255,255,.08),inset 0 0 0 2px rgba(0,0,0,.24),0 0 20px 2px rgba(241,204,121,.5)!important}
.ribbon{position:absolute;top:-3px;right:16px;width:15px;height:32px;z-index:3;background:linear-gradient(180deg,#f1cc79,#9d6d30);clip-path:polygon(0 0,100% 0,100% 100%,50% 76%,0 100%);box-shadow:0 3px 7px rgba(0,0,0,.4)}

/* A candle every third shelf, to break up the repetition of identical rows */
.shelf-row:nth-of-type(3n){padding-right:52px}
.shelf-row:nth-of-type(3n):before{content:"";position:absolute;z-index:3;right:14px;bottom:26px;width:12px;height:30px;border-radius:2px 2px 1px 1px;background:linear-gradient(180deg,#f3e2b0,#c9a63e 70%,#8a6425);box-shadow:0 0 14px 4px rgba(255,214,120,.45)}
.shelf-row:nth-of-type(3n):after{box-shadow:0 12px 18px rgba(0,0,0,.55),16px -34px 14px -6px rgba(255,200,110,.25)}
@media(max-width:650px){.shelf-row:nth-of-type(3n){padding-right:12px}.shelf-row:nth-of-type(3n):before{display:none}}

/* A soft idle pulse on the door so first-time visitors notice it's clickable before they hover */
.door-hotspot:before{content:"";position:absolute;inset:-16px;border-radius:50%;background:radial-gradient(circle,rgba(241,204,121,.28),transparent 70%);animation:doorPulse 3.2s ease-in-out infinite;pointer-events:none}
@keyframes doorPulse{0%,100%{opacity:.3;scale:1}50%{opacity:.8;scale:1.15}}

/* Standalone review pages (one per review, for direct/shareable links) */
.standalone-wrap{max-width:920px;margin:0 auto;padding:60px 20px 80px}
.standalone-brand{display:inline-block;margin-bottom:34px;font-size:1.4rem}
.standalone-wrap .open-book{max-height:none;box-shadow:var(--shadow)}
.open-book{color:var(--ink)}
.review-page .eyebrow{color:#8f5a2a}
.standalone-wrap .review-page{overflow:visible}
.back-link{display:inline-block;margin-top:30px}
@media(max-width:720px){.standalone-wrap{padding:34px 16px 60px}.standalone-wrap .open-book{grid-template-columns:1fr}.standalone-wrap .review-cover{border-right:0;border-bottom:8px solid #d3b87c}}
.all-reviews-list{list-style:none;margin:0 0 30px;padding:0;display:flex;flex-direction:column;gap:2px}
.all-reviews-list li{padding:14px 4px;border-bottom:1px solid rgba(241,204,121,.18);color:var(--cream)}
.all-reviews-list a{color:var(--gold);text-decoration:none;font:600 1.05rem "Cormorant Garamond",serif}
.all-reviews-list a:hover{text-decoration:underline}
.all-reviews-list span{opacity:.7;font-size:.85rem;margin-left:8px}
