:root {
  --verdigris:      #4a8b7a;
  --verdigris-dark: #2a5a48;
  --verdigris-pale: #8abfae;
  --verdigris-dim:  #3a6a58;
  --gold:           #c8a84a;
  --gold-dark:      #8a6820;
  --room-dark:      #1e2e22;
  --text-main:      #c8d4cc;
  --spine-color:    black;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

img.feather { display: none; }

body {
  background-color: var(--room-dark);
  background-image:
    repeating-linear-gradient(90deg,  transparent 0px, rgba(255,255,255,0.005) 1px, transparent 3px, transparent 80px),
    repeating-linear-gradient(180deg, transparent 0px, rgba(0,0,0,0.06) 1px, transparent 3px, transparent 50px),
    radial-gradient(ellipse 100% 60% at 50% 105%, rgba(160,80,15,0.18) 0%, transparent 65%),
    radial-gradient(ellipse 40% 80% at  8% 50%,  rgba(160,80,15,0.07) 0%, transparent 70%),
    radial-gradient(ellipse 40% 80% at 92% 50%,  rgba(160,80,15,0.07) 0%, transparent 70%),
    linear-gradient(to bottom, #182818 0%, #1e3020 50%, #223424 100%);
  min-height: 100vh;
  font-family: 'IM Fell English', Georgia, serif;
  color: var(--text-main);
  overflow-x: hidden;
  background-attachment: fixed;
  cursor: default;
}


/* ── Atmosphere ─────────────────────────────────────────────── */
.room-atmosphere {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}

.atmosphere-window {
  position: absolute;
  top: 0; left: 4%;
  width: 110px;
  height: 52vh;
  clip-path: polygon(12% 0%, 88% 0%, 100% 9%, 100% 82%, 50% 100%, 0% 82%, 0% 9%);
  background: linear-gradient(to bottom,
    rgba(180,225,248,0.28) 0%,
    rgba(170,218,245,0.14) 55%,
    transparent 100%
  );
}

.atmosphere-window::before {
  content: '';
  position: absolute;
  left: 50%; top: 4%;
  width: 1px; height: 72%;
  background: rgba(176,210,230,0.14);
  transform: translateX(-50%);
}

.atmosphere-window::after {
  content: '';
  position: absolute;
  left: 10%; top: 38%;
  right: 10%; height: 1px;
  background: rgba(176,210,230,0.14);
}

.atmosphere-moon-area {
  position: absolute;
  top: 14px; left: 1.5%;
  width: 140px;
  text-align: center;
  user-select: none;
}

.moon-crescent {
  display: block;
  font-size: 28px;
  color: rgba(220,240,255,0.80);
  text-shadow: 0 0 18px rgba(180,225,248,0.75), 0 0 42px rgba(160,215,245,0.38);
  animation: moon-glow 5s ease-in-out infinite alternate;
}

@keyframes moon-glow {
  0%   { text-shadow: 0 0 14px rgba(180,225,248,0.65), 0 0 36px rgba(160,215,245,0.30); }
  100% { text-shadow: 0 0 24px rgba(200,240,255,0.95), 0 0 58px rgba(180,225,248,0.50); }
}

.atmosphere-fireplace {
  position: absolute;
  bottom: 0; left: 50%;
  transform: translateX(-50%);
  width: 700px; height: 300px;
  background: radial-gradient(ellipse at 50% 100%,
    rgba(210,100,16,0.24) 0%,
    rgba(165,72,8,0.12) 45%,
    transparent 70%
  );
  animation: fire-breathe 3.5s ease-in-out infinite alternate;
}

@keyframes fire-breathe {
  0%   { opacity: 0.70; transform: translateX(-50%) scaleX(1.00); }
  30%  { opacity: 1.00; transform: translateX(-50%) scaleX(1.05); }
  65%  { opacity: 0.82; transform: translateX(-50%) scaleX(0.97); }
  100% { opacity: 0.92; transform: translateX(-50%) scaleX(1.03); }
}


/* ── Page Layout ────────────────────────────────────────────── */
.page-body {
  position: relative;
  z-index: 1;
  max-width: 900px;
  margin: 0 auto;
  padding: 60px 50px 0;
  opacity: 0;
  animation: content-arrive 0.6s 0.3s ease forwards;
}

@keyframes content-arrive {
  0%   { opacity: 0; transform: translateY(14px); }
  100% { opacity: 1; transform: translateY(0); }
}


.book-header {
  margin-bottom: 44px;
  position: relative;
}
.book-header-shelf {
  height: 20px;
  background: linear-gradient(to bottom, #c49060 0%, #9b6535 28%, #7a4a22 60%, #6b3e1a 100%);
  box-shadow:
    0 8px 22px rgba(0,0,0,0.70),
    0 2px 5px  rgba(0,0,0,0.40),
    inset 0 2px 4px rgba(255,200,120,0.12);
  border-radius: 1px;
}

.spine-banner {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between; /* title left, ornament right */
  padding: 22px 40px;
  background-color: var(--spine-color);
  background-image:
    repeating-linear-gradient(87deg,  transparent 0px, rgba(0,0,0,0.25) 1px, transparent 3px, transparent 6px),
    repeating-linear-gradient(93deg,  transparent 0px, rgba(255,255,255,0.12) 1px, transparent 3px, transparent 9px),
    repeating-linear-gradient(45deg,  transparent 0px, rgba(0,0,0,0.20) 1px, transparent 2px, transparent 7px),
    repeating-linear-gradient(135deg, transparent 0px, rgba(0,0,0,0.15) 1px, transparent 2px, transparent 9px),
    linear-gradient(to bottom, rgba(0,0,0,0.25) 0%, rgba(255,255,255,0.12) 50%, rgba(0,0,0,0.20) 100%),
    linear-gradient(to right,
      rgba(200,160,48,0.9)  0px,  rgba(200,160,48,0.9)  8px, transparent 8px,
      transparent 22px, rgba(200,160,48,0.5) 22px, rgba(200,160,48,0.5) 26px,
      transparent 26px, transparent calc(100% - 26px),
      rgba(200,160,48,0.5) calc(100% - 26px), rgba(200,160,48,0.5) calc(100% - 22px),
      transparent calc(100% - 22px), transparent calc(100% - 8px),
      rgba(200,160,48,0.9) calc(100% - 8px), rgba(200,160,48,0.9) 100%
    );
  box-shadow:
    0 6px 28px rgba(0,0,0,0.85),
    0 2px 6px rgba(0,0,0,0.5),
    inset 0 -6px 16px rgba(0,0,0,0.45),
    inset 0 2px 4px rgba(255,255,255,0.06);
}

.spine-title {
  font-family: 'IM Fell English', serif;
  font-variant: small-caps;
  font-size: clamp(22px, 4vw, 42px);
  letter-spacing: 0.14em;
  color: #e8c84a;
}

.spine-ornament {
  color: #e8c84a;
  opacity: 0.55;
  font-size: 1.4em;
  flex-shrink: 0;
}


.corkboard-wrap {
  display: flex;
  flex-direction: row;
  gap: 32px;
  align-items: flex-start;
  margin-bottom: 90px;
  max-width: 100vw;
}

.corkboard {
  flex: 1;
  position: relative;
  background-color: #c8916a;
  border: 14px solid #3e2208;
  border-radius: 3px;
  padding: 36px 36px 64px;
  overflow: visible;
  background-image:
    repeating-radial-gradient(ellipse 6px 4px at 18% 22%, rgba(180,110,55,0.45) 0px, transparent 5px),
    repeating-radial-gradient(ellipse 5px 7px at 55% 63%, rgba(140,80,30,0.30) 0px, transparent 6px),
    repeating-radial-gradient(ellipse 8px 4px at 80% 35%, rgba(200,140,70,0.25) 0px, transparent 7px),
    repeating-radial-gradient(ellipse 4px 8px at 40% 80%, rgba(160,95,40,0.35) 0px, transparent 5px),
    repeating-linear-gradient(19deg,  transparent 0px, rgba(0,0,0,0.06) 1px, transparent 2px, transparent 8px),
    repeating-linear-gradient(-11deg, transparent 0px, rgba(255,255,255,0.04) 1px, transparent 2px, transparent 14px),
    repeating-linear-gradient(78deg,  transparent 0px, rgba(0,0,0,0.04) 1px, transparent 2px, transparent 9px),
    linear-gradient(130deg, #d4996a 0%, #c07848 30%, #b86838 55%, #c88555 80%, #cfa070 100%);
}


.arc-sticky-wrap {
  position: absolute;
  bottom: -14px;
  right: 16px;
  width: 130px;
  z-index: 6;
  filter: drop-shadow(0 3px 6px rgba(0,0,0,0.3));
}
.arc-sticky {
  position: relative;
  width: 100%;
  bottom: auto; right: auto;
  filter: none;
  z-index: auto;
  padding: 10px 12px 12px;
  background: #eece50;
  background-image: linear-gradient(to bottom, rgba(0,0,0,0.05) 0%, transparent 25%);
  font-family: 'IM Fell English', serif;
  font-style: italic;
  font-size: 11px;
  color: #2a1800;
  line-height: 1.55;
  transform: rotate(2.5deg);
  box-shadow: 2px 4px 10px rgba(0,0,0,0.4), inset 0 -1px 0 rgba(0,0,0,0.08);
  clip-path: polygon(
    0% 0%, 100% 0%, 100% calc(100% - 14px),
    calc(100% - 14px) 100%, 0% 100%
  );
}

/* sticky top strip */
.arc-sticky::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 5px;
  background: rgba(0,0,0,0.07);
}

.arc-sticky-wrap::after {
  content: '';
  position: absolute;
  bottom: 0; right: 3px;
  width: 0; height: 0;
  border-style: solid;
  border-width: 7px;
  border-color: #c8a830 transparent transparent #c8a830;
  transform: rotate(2.5deg); /* match sticky's rotation */
  transform-origin: bottom right;
  filter: drop-shadow(-1px -1px 2px rgba(0,0,0,0.2));
}

.meta-card-wrap {
  position: relative;
  margin-bottom: 22px; 
}
.meta-card {
  background:
    repeating-linear-gradient(17deg, transparent 0px, rgba(160,140,100,0.04) 1px, transparent 2px, transparent 7px),
    radial-gradient(ellipse at 30% 15%, rgba(255,252,228,0.5) 0%, transparent 55%),
    #cfc09a;
  clip-path: polygon(
    0% 0%, 4% 1.8%, 9% 0.4%, 15% 2.2%, 22% 0.6%, 30% 1.9%,
    38% 0.3%, 47% 1.7%, 55% 0.5%, 63% 1.8%, 71% 0.4%,
    80% 2.0%, 88% 0.7%, 95% 1.5%, 100% 0.8%,
    100% 100%, 0% 100%
  );
  padding: 26px 28px 22px;
  color: #2a1808;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 0px;
  transform: rotate(-1deg);
  box-shadow:
    2px 4px 10px rgba(0,0,0,0.4),
    0 10px 24px rgba(0,0,0,0.22),
    inset 0 1px 0 rgba(255,255,255,0.25);
  position: relative;
  z-index: 2;
  filter: drop-shadow(0px 5px 4px rgba(0,0,0,0.4));
}
.meta-card-wrap::before {
  content: '';
  position: absolute;
  top: -11px; left: 50%;
  transform: translateX(-50%);
  width: 13px; height: 13px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 32%, #f0cc55 0%, #9b1c1c 55%, #5a3c00 100%);
  box-shadow:
    0 2px 7px rgba(0,0,0,0.50),
    0 0 0 1.5px rgba(0,0,0,0.22),
    inset 0 1px 2px rgba(255,240,150,0.45);
  z-index: 5;
  filter: drop-shadow(0 2px 3px rgba(0,0,0,0.4));
}
.meta-card-wrap::after {
  content: '';
  position: absolute;
  top: 0; left: 50%;
  transform: translateX(-50%);
  width: 2px; height: 14px;
  background: linear-gradient(to bottom,
    transparent 0%, rgba(113,112,110,1) 25%, rgba(113,112,110,1) 65%, transparent 100%
  );
  border-radius: 1px;
  z-index: 4;
}

.meta-row {
  display: flex;
  flex-direction: row;
  gap: 14px;
  align-items: baseline;
  font-family: Georgia, serif;
  font-size: 13.5px;
  line-height: 1.6;
}

.meta-label {
  font-family: 'Cinzel', serif;
  font-variant: small-caps;
  font-size: 10px;
  letter-spacing: 0.22em;
  color: var(--verdigris-dark);
  min-width: 62px;
  flex-shrink: 0;
  padding-top: 2px;
}

.meta-note {
  font-size: 12px;
  color: #5a3818;
  opacity: 0.8;
  margin-left: 4px;
}

/* rating emoji — idle float animation */
.rating-emoji {
  font-size: 26px;
  text-decoration: none;
  display: inline-block;
  filter: drop-shadow(0 3px 5px rgba(0,0,0,0.55));
  animation: rating-float 3s ease-in-out infinite;
  transform-origin: center bottom;
}

@keyframes rating-float {
  0%   { transform: translateY(0)   rotate(-4deg) scale(1.00); }
  30%  { transform: translateY(-5px) rotate( 3deg) scale(1.08); }
  60%  { transform: translateY(-2px) rotate(-2deg) scale(1.04); }
  100% { transform: translateY(0)   rotate(-4deg) scale(1.00); }
}

.rating-emoji:hover {
  animation: rating-excited 0.4s ease-in-out infinite alternate;
  filter: drop-shadow(0 0 14px rgba(200,168,74,0.8)) drop-shadow(0 3px 5px rgba(0,0,0,0.55));
}

@keyframes rating-excited {
  0%   { transform: scale(1.18) rotate(-6deg); }
  100% { transform: scale(1.28) rotate( 6deg); }
}


/* ── Review Paper ───────────────────────────────────────────── */
.review-paper {
  position: relative;
  padding: 30px 36px 30px 58px;
  font-family: 'IM Fell English', Georgia, serif;
  font-size: 16px;
  line-height: 1.85;
  color: #2a1608;
  background-color: #f6eed8;
  background-image:
    repeating-linear-gradient(to bottom,
      transparent 0px, transparent 27px,
      rgba(90,120,190,0.15) 27px, rgba(90,120,190,0.15) 28px
    ),
    linear-gradient(to right,
      transparent 0px, transparent 45px,
      rgba(200,70,60,0.18) 45px, rgba(200,70,60,0.18) 47px,
      transparent 47px
    ),
    radial-gradient(ellipse at 8% 50%, rgba(200,165,90,0.08) 0%, transparent 55%);
  border-radius: 1px;
  transform: rotate(0.4deg);
  box-shadow:
    2px 5px 14px rgba(0,0,0,0.38),
    -1px 2px 6px rgba(0,0,0,0.18),
    inset 0 0 0 0.5px rgba(0,0,0,0.06);
  filter: drop-shadow(0px 8px 10px rgba(0,0,0,0.35));
}

.review-paper p {
  margin-bottom: 1.5em;
}

.review-paper p:last-child {
  margin-bottom: 0;
}

/* pushpin head */
.review-paper::before {
  content: '';
  position: absolute;
  top: -11px; left: 50%;
  transform: translateX(-50%);
  width: 13px; height: 13px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 32%, #f0cc55 0%, #9b1c1c 55%, #5a3c00 100%);
  box-shadow:
    0 2px 7px rgba(0,0,0,0.50),
    0 0 0 1.5px rgba(0,0,0,0.22),
    inset 0 1px 2px rgba(255,240,150,0.45);
  z-index: 5;
}

/* pushpin needle */
.review-paper::after {
  content: '';
  position: absolute;
  top: 0; left: 50%;
  transform: translateX(-50%);
  width: 2px; height: 14px;
  background: linear-gradient(to bottom,
    transparent 0%, rgba(113,112,110,1) 25%, rgba(113,112,110,1) 65%, transparent 100%
  );
  border-radius: 1px;
  z-index: 4;
}


.taped-links {
  position: absolute;
  bottom: -60px;
  left: 36px;
  display: flex;
  gap: 22px;
  z-index: 10;
}

.taped-links a {
  position: relative;
  display: inline-block;
  padding: 16px 18px 14px;
  font-family: 'IM Fell English', serif;
  font-size: 13px;
  color: #3a2010;
  text-decoration: none;
  background-color: #f6eed8;
  box-shadow:
    0 3px 8px rgba(0,0,0,0.40),
    0 8px 16px rgba(0,0,0,0.20);
  transition: transform 0.2s ease, color 0.2s ease;
}

.taped-links a:first-child {
  transform: rotate(-2.5deg);
  transform-origin: bottom left;
}

.taped-links a:last-child {
  transform: rotate(1.8deg);
  transform-origin: bottom right;
}

/* tape strip */
.taped-links a::before {
  content: '';
  position: absolute;
  top: -8px; left: 50%;
  transform: translateX(-50%);
  width: 40px; height: 14px;
  background: rgba(210,230,255,0.45);
  border-left:  1px solid rgba(180,200,230,0.3);
  border-right: 1px solid rgba(180,200,230,0.3);
  z-index: 2;
}

.taped-links a:hover { color: #8b1a1a; }
.taped-links a:first-child:hover { transform: rotate(-6deg); }
.taped-links a:last-child:hover  { transform: rotate(5deg); }

.lib-return-wrap {
  display: flex;
  justify-content: flex-start;
  margin: 25px 0 50px; 
}

.lib-return {
  display: inline-block;
  clip-path: polygon(18px 0%, 100% 0%, 100% 100%, 18px 100%, 0% 50%);
  margin-left: -18px;      
  text-indent: 6px;        
  font-family: 'Cinzel', serif;
  font-size: 13px;
  font-variant: small-caps;
  letter-spacing: 0.15em;
  color: #d4ede0;
  text-decoration: none;
  text-shadow:
    0 1px 3px rgba(0,0,0,0.8),
    0 0 8px rgba(160,220,190,0.2);
  padding: 10px 40px 10px 10px;
  white-space: nowrap;
  background:
    repeating-linear-gradient(
      90deg,
      transparent 0px, rgba(255,255,255,0.03) 1px,
      transparent 2px, transparent 14px
    ),
    linear-gradient(to bottom, #244f42, #2e6650, #244f42);
  border-top: 1px solid #5aab88;
  border-bottom: 1px solid #5aab88;
  box-shadow:
    inset 0 2px 5px rgba(180,240,210,0.10),
    inset 0 -2px 5px rgba(0,0,0,0.50),
    inset -4px 0 8px rgba(0,0,0,0.25);   
  filter:
    drop-shadow(0px 0px 1.5px rgba(0,0,0,0.95))
    drop-shadow(-2px 0 5px rgba(0,0,0,0.5)); 
  transition: transform 0.25s ease, color 0.25s ease, background 0.25s ease;
}

.lib-return:hover {
  transform: translateX(-8px);   
  color: #eef8f2;
  background:
    repeating-linear-gradient(
      90deg,
      transparent 0px, rgba(255,255,255,0.03) 1px,
      transparent 2px, transparent 14px
    ),
    linear-gradient(to bottom, #2e6650, #448a70, #2e6650);
}

.lib-return:hover {
  background: linear-gradient(
    to bottom,
    var(--verdigris) 0%,
    var(--verdigris-dim) 100%
  );
  transform: translateX(-8px);
  box-shadow: -6px 4px 14px rgba(0,0,0,0.5);
}


.cover-display {
  flex-shrink: 0;
  width: 180px;
  margin-top: 0;
  position: sticky;
  top: 24px;
}

.cover-display img {
  width: 100%;
  display: block;
  transform: rotate(1.5deg);
  box-shadow:
    4px 8px 28px rgba(0,0,0,0.8),
    -2px 4px 12px rgba(0,0,0,0.4),
    0 0 0 1px rgba(0,0,0,0.3);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.cover-display img:hover {
  transform: rotate(0deg) scale(1.02);
  box-shadow:
    6px 12px 36px rgba(0,0,0,0.85),
    -2px 4px 14px rgba(0,0,0,0.45),
    0 0 0 1px rgba(0,0,0,0.3);
}

.recommendations {
  margin-bottom: 80px;
}

.recs-bookshelf-container {
  position: relative;
  padding-left: 60px;
}

ol.recs-bookshelf {
  list-style: none;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  position: relative;
  padding-bottom: 40px;
}

/* shelf plank */
ol.recs-bookshelf::after {
  content: '';
  display: block;
  position: absolute;
  left: -70px; right: -20px;
  bottom: 5px;
  height: 36px;
  background:
    repeating-linear-gradient(181deg,
      transparent 0px, transparent 18px,
      rgba(0,0,0,0.07) 18px, rgba(0,0,0,0.07) 20px,
      transparent 20px, transparent 44px,
      rgba(255,200,120,0.08) 44px, rgba(255,200,120,0.08) 46px
    ),
    linear-gradient(to bottom, #c49060 0%, #9b6535 28%, #7a4a22 60%, #6b3e1a 100%);
  box-shadow:
    0 8px 22px rgba(0,0,0,0.70),
    0 2px 5px  rgba(0,0,0,0.40),
    inset 0 2px 4px rgba(255,200,120,0.12);
  border-radius: 2px;
  z-index: 0;
}

ol.recs-bookshelf li {
  display: flex;
  flex-direction: row;
  align-items: center;
  position: relative;
  z-index: 1;
}

ol.recs-bookshelf li:hover { z-index: 100; }

/* rec book spine */
div.rec-title {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 12px;
  border-radius: 4px;
  font-variant: small-caps;
  font-size: 16px;
  letter-spacing: 0.1em;
  color: #e8c84a;
  padding: 10px 32px;
  font-family: 'IM Fell English', serif;
  min-width: 120px;
  width: max-content;
  white-space: nowrap;
  cursor: pointer;
  margin-left: -48px;
  background-image:
    repeating-linear-gradient(87deg,  transparent 0px, rgba(0,0,0,0.25) 1px, transparent 3px, transparent 6px),
    repeating-linear-gradient(93deg,  transparent 0px, rgba(255,255,255,0.12) 1px, transparent 3px, transparent 9px),
    repeating-linear-gradient(45deg,  transparent 0px, rgba(0,0,0,0.20) 1px, transparent 2px, transparent 7px),
    repeating-linear-gradient(135deg, transparent 0px, rgba(0,0,0,0.15) 1px, transparent 2px, transparent 9px),
    linear-gradient(to bottom, rgba(0,0,0,0.25) 0%, rgba(255,255,255,0.12) 50%, rgba(0,0,0,0.20) 100%),
    linear-gradient(to right,
      rgba(200,160,48,0.9)  0px,  rgba(200,160,48,0.9)  6px, transparent 6px,
      transparent 18px, rgba(200,160,48,0.5) 18px, rgba(200,160,48,0.5) 22px,
      transparent 22px, transparent calc(100% - 22px),
      rgba(200,160,48,0.5) calc(100% - 22px), rgba(200,160,48,0.5) calc(100% - 18px),
      transparent calc(100% - 18px), transparent calc(100% - 6px),
      rgba(200,160,48,0.9) calc(100% - 6px), rgba(200,160,48,0.9) 100%
    );
  box-shadow:
    0 3px 0px rgba(0,0,0,0.75),
    0 -2px 0px rgba(0,0,0,0.45),
    inset 0 -5px 10px rgba(0,0,0,0.40);
  transform-style: preserve-3d;
  transition: transform 0.35s ease, box-shadow 0.35s ease;
  cursor: default;
}

/* page edges */
div.rec-title::before {
  content: '';
  position: absolute;
  top: 0;
  left: calc(100% - 4px);
  width: 34px;
  height: 100%;
  clip-path: polygon(0 0, 0% 8%, 0% 25%, 0% 50%, 0% 75%, 0% 92%, 0 100%);
  background-image:
    repeating-linear-gradient(45deg, transparent 0px, rgba(255,255,255,0.08) 1px, transparent 2px, transparent 7px),
    repeating-linear-gradient(87deg, transparent 0px, rgba(255,255,255,0.06) 1px, transparent 3px, transparent 6px),
    linear-gradient(to right, transparent 0%, rgba(0,0,0,0.42) 100%),
    linear-gradient(to bottom,
      #1a0608 0%, #1a0608 14%, transparent 22%, transparent 78%, #1a0608 86%, #1a0608 100%
    ),
    repeating-linear-gradient(to bottom,
      #f8f3e6 0px, #f8f3e6 1.5px, #ddd4bc 2px, #ddd4bc 2.5px,
      #f0e8d4 3px, #f0e8d4 4.5px, #e4dbc6 5px
    );
  transition: clip-path 0.35s ease;
}

/* spine colors */
ol.recs-bookshelf li:nth-child(6n+1) div.rec-title { background-color: #3c1212; }
ol.recs-bookshelf li:nth-child(6n+2) div.rec-title { background-color: #0e2820; }
ol.recs-bookshelf li:nth-child(6n+3) div.rec-title { background-color: #181830; }
ol.recs-bookshelf li:nth-child(6n+4) div.rec-title { background-color: #281c08; }
ol.recs-bookshelf li:nth-child(6n+5) div.rec-title { background-color: #28101e; }
ol.recs-bookshelf li:nth-child(6n+6) div.rec-title { background-color: #0e2424; }

/* hover: odd tilt left */
ol.recs-bookshelf li:hover div.rec-title {
  transform: perspective(1200px) rotateY(-20deg);
  box-shadow:
    6px 6px 18px rgba(0,0,0,0.65),
    -1px 0 4px rgba(0,0,0,0.4),
    inset 0 -5px 10px rgba(0,0,0,0.40),
    8px 0 24px rgba(74,139,122,0.18),
    inset 42px 0 30px -14px rgba(0,0,0,0.58);
}

ol.recs-bookshelf li:hover div.rec-title::before {
  clip-path: polygon(0 0, 100% 8%, 88% 25%, 82% 50%, 88% 75%, 100% 92%, 0 100%);
}

/* hover: even tilt right */
ol.recs-bookshelf li:nth-child(even):hover div.rec-title {
  transform: perspective(1200px) rotateY(20deg);
  box-shadow:
    -6px 6px 18px rgba(0,0,0,0.65),
    1px 0 4px rgba(0,0,0,0.4),
    inset 0 -5px 10px rgba(0,0,0,0.40),
    -8px 0 24px rgba(74,139,122,0.18),
    inset -42px 0 30px -14px rgba(0,0,0,0.58);
}

/* even: pages on left side */
ol.recs-bookshelf li:nth-child(even) div.rec-title::before {
  left: auto;
  right: calc(100% - 4px);
  clip-path: polygon(100% 0, 100% 8%, 100% 25%, 100% 50%, 100% 75%, 100% 92%, 100% 100%);
}

ol.recs-bookshelf li:nth-child(even):hover div.rec-title::before {
  clip-path: polygon(100% 0, 0% 8%, 12% 25%, 18% 50%, 12% 75%, 0% 92%, 100% 100%);
}

/* metadata card on hover */
.rec-meta-container {
  position: absolute;
  left: calc(100% + 14px);
  top: 50%;
  transform: translateX(18px) translateY(-50%);
  transform-style: flat;
  transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
  pointer-events: none;
  z-index: 10;
}

ol.recs-bookshelf li:hover .rec-meta-container {
  transform: translateX(0) translateY(-50%) rotateY(20deg);
}

ol.recs-bookshelf li:nth-child(even):hover .rec-meta-container {
  transform: translateX(0) translateY(-50%) rotateY(-20deg);
}

div.rec-meta {
  padding: 14px 13px 12px;
  font-family: Georgia, serif;
  font-size: 13px;
  line-height: 1.75;
  color: #2a1808;
  background:
    repeating-linear-gradient(17deg, transparent 0px, rgba(160,140,100,0.04) 1px, transparent 2px, transparent 7px),
    radial-gradient(ellipse at 30% 15%, rgba(255,252,228,0.5) 0%, transparent 55%),
    #cfc09a;
  width: 190px;
  max-width: 45vw;
  box-shadow:
    0 5px 16px rgba(0,0,0,0.5),
    0 14px 34px rgba(0,0,0,0.25),
    inset 0 1px 0 rgba(255,255,255,0.25);
  opacity: 0;
  pointer-events: none;
  clip-path: polygon(
    0% 0%, 4% 1.8%, 9% 0.4%, 15% 2.2%, 22% 0.6%, 30% 1.9%,
    38% 0.3%, 47% 1.7%, 55% 0.5%, 63% 1.8%, 71% 0.4%,
    80% 2.0%, 88% 0.7%, 95% 1.5%, 100% 0.8%,
    100% 100%, 0% 100%
  );
  transition: opacity 0.18s ease;
  rotate: -1.8deg;
}

.rec-meta-author {
  display: block;
  font-size: 12px;
  color: #3a2010;
  margin-bottom: 6px;
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(100,70,30,0.28);
}

.rec-meta-rating {
  display: block;
  font-size: 15px;
  margin-top: 4px;
}

.rec-meta-genre {
  display: block;
  font-size: 11px;
  color: var(--verdigris-dark);
  font-variant: small-caps;
  letter-spacing: 0.12em;
  font-style: normal;
  margin-top: 2px;
}

ol.recs-bookshelf li:hover div.rec-meta {
  opacity: 1;
}

/* "you may also enjoy" plaque on shelf face */
.recs-plaque {
  position: absolute;
  bottom: 10px; 
  left: -10px;
  display: flex;
  align-items: center;
  gap: 10px;
  height: 26px;
  padding: 0 22px 0 18px;
  background:
    repeating-linear-gradient(
      90deg, transparent 0px, rgba(255,255,255,0.03) 1px,
      transparent 2px, transparent 14px
    ),
    linear-gradient(to bottom, #326858 0%, #2a5a48 50%, #244f42 100%);
  border-top: 1px solid #5aab88;
  border-bottom: 1px solid #1e3a30;
  box-shadow:
    inset 0 1px 3px rgba(180,240,210,0.10),
    inset 0 -1px 3px rgba(0,0,0,0.40),
    0 2px 6px rgba(0,0,0,0.55);
  z-index: 5;
}

/* nail left */
.recs-plaque::before {
  content: '';
  position: absolute;
  left: 10px; top: 50%;
  transform: translateY(-50%);
  width: 5px; height: 5px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #c8b060 0%, #5a4010 100%);
  box-shadow: 0 1px 2px rgba(0,0,0,0.7);
}

/* nail right */
.recs-plaque::after {
  content: '';
  position: absolute;
  right: 10px; top: 50%;
  transform: translateY(-50%);
  width: 5px; height: 5px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #c8b060 0%, #5a4010 100%);
  box-shadow: 0 1px 2px rgba(0,0,0,0.7);
}

.plaque-arrow {
  font-size: 14px;
  color: var(--gold);
  opacity: 0.8;
  padding: 0 6px; /* clear of nail */
}

.plaque-text {
  font-family: 'Cinzel', serif;
  font-size: 10px;
  font-variant: small-caps;
  letter-spacing: 0.22em;
  color: var(--gold);
  opacity: 0.75;
  padding-right: 10px; /* clear of nail */
}


hr {
  border: none;
  position: relative;
  height: 1px;
  background: linear-gradient(to right,
    transparent 0%, var(--verdigris-dark) 20%,
    var(--verdigris) 50%,
    var(--verdigris-dark) 80%, transparent 100%
  );
  width: 55%;
  margin: 34px auto;
}

hr::before {
  content: '✦';
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  color: var(--verdigris);
  font-size: 11px;
  background: var(--room-dark);
  padding: 0 10px;
}


blockquote {
  position: relative;
  margin: 32px 12px 32px 20px;
  padding: 28px 32px 22px 36px;
  border-left: 3px solid var(--verdigris-dim);
  border-right: 1px solid rgba(74,139,122,0.2);
  color: #1e0e04;
  background:
    linear-gradient(to right,
      rgba(74,139,122,0.07) 0%, transparent 40%
    ),
    rgba(220, 200, 150, 0.18);
  box-shadow:
    inset 3px 0 12px rgba(74,139,122,0.08),
    1px 2px 8px rgba(0,0,0,0.10);
  border-radius: 0 2px 2px 0;
}
blockquote::before {
  content: '\201C';
  position: absolute;
  top: -18px;
  left: 10px;
  font-size: 90px;
  line-height: 1;
  color: var(--verdigris-dim);
  opacity: 0.45;
  font-family: Georgia, serif;
  pointer-events: none;
}
blockquote::after {
  content: '\201D';
  position: absolute;
  bottom: -52px;
  right: 12px;
  font-size: 90px;
  line-height: 1;
  color: var(--verdigris-dim);
  opacity: 0.30;
  font-family: Georgia, serif;
  pointer-events: none;
}
blockquote p {
  font-style: italic;
  font-size: 15.5px;
  line-height: 1.9;
  color: #1e0e04;
  margin-bottom: 0;
}
blockquote cite {
  display: block;
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px solid rgba(74,139,122,0.22);
  font-family: 'Cinzel', serif;
  font-style: normal;
  font-size: 9.5px;
  font-variant: small-caps;
  letter-spacing: 0.18em;
  color: var(--verdigris-dark);
  text-align: right;
}
blockquote cite::before {
  content: '— ';
  color: var(--verdigris-dim);
  opacity: 0.7;
}
blockquote .quote-ornament {
  position: absolute;
  left: -9px;
  top: 50%;
  transform: translateY(-50%);
  width: 15px;
  height: 15px;
  background: var(--verdigris-dim);
  border-radius: 50%;
  box-shadow: 0 0 0 2px #f6eed8, 0 0 0 3px var(--verdigris-dim);
  opacity: 0.55;
}

.lib-mantle {
  margin: 80px auto 0;
  width: 560px;
  max-width: 100%;
  position: relative;
  animation: card-arrive 0.6s 0.8s ease both;
}

@keyframes card-arrive {
  0%   { opacity: 0; transform: translateY(12px); }
  100% { opacity: 1; transform: translateY(0); }
}

.mantle-shelf {
  position: relative;
  height: 28px;
  background: linear-gradient(to bottom, #545848 0%, #42463a 40%, #32362e 100%);
  box-shadow:
    0 8px 22px rgba(0,0,0,0.8),
    0 3px 6px rgba(0,0,0,0.5),
    inset 0 2px 3px rgba(255,255,255,0.07),
    inset 0 -1px 2px rgba(0,0,0,0.4);
  border-radius: 2px 2px 0 0;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
  z-index: 2;
}

.mantle-shelf-links {
  position: absolute;
  bottom: 100%;
  left: 0; right: 0;
  text-align: center;
  padding: 0 0 8px;
}

.mantle-shelf-links a {
  font-family: 'Cinzel', serif;
  font-size: 11px;
  font-variant: small-caps;
  letter-spacing: 0.18em;
  color: var(--verdigris-dim);
  text-decoration: none;
  transition: color 0.2s ease;
  opacity: 0.7;
}

.mantle-shelf-links a:hover { color: var(--verdigris-pale); opacity: 1; }

.mantle-shelf-links a + a::before {
  content: ' 📜 ';
  font-size: 10px;
  vertical-align: middle;
}

.mantle-shelf-links .library-wrap { display: none; }

.mantle-surround {
  display: flex;
  flex-direction: row;
}

.mantle-pilaster {
  width: 36px;
  background: linear-gradient(to right, #282e26 0%, #363c30 50%, #2a3028 100%);
  box-shadow: inset -3px 0 8px rgba(0,0,0,0.4);
}

.mantle-center {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  background: #2e342c;
  padding: 20px 24px 0;
  gap: 18px;
}

.mantle-crest {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.mantle-crest div.wax-seal-container {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 110px; height: 110px;
  border-radius: 50%;
  background: #2a1e1e;
  box-shadow:
    inset 0 4px 14px rgba(0,0,0,0.85),
    inset 0 0 30px rgba(0,0,0,0.6),
    0 0 0 2px rgba(0,0,0,0.6),
    0 0 0 4px rgba(255,255,255,0.04),
    0 0 0 6px rgba(0,0,0,0.5);
  clip-path: none;
}

.mantle-crest a.wax-seal {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%; height: 100%;
  border-radius: 50%;
  background: none;
  text-decoration: none;
}

.mantle-crest span.seal-text {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 54px; height: 54px;
  z-index: 2;
}

.mantle-crest span.seal-letter {
  position: absolute;
  font-style: italic;
  font-weight: bold;
  color: #5a2a2a;
  text-shadow: 0 -1px 1px rgba(255,255,255,0.06), 0 2px 3px rgba(0,0,0,0.95);
}

.mantle-crest span.seal-letter:nth-child(1) { font-size: 1.75rem; transform: translate(-11px, -11px); z-index: 4; }
.mantle-crest span.seal-letter:nth-child(2) { font-size: 1.75rem; transform: translate( 7px, -10px);  z-index: 3; }
.mantle-crest span.seal-letter:nth-child(3) { font-size: 1.75rem; transform: translate(-11px,  11px); z-index: 2; }
.mantle-crest span.seal-letter:nth-child(4) { font-size: 1.60rem; transform: translate(  9px,  11px); z-index: 1; }

.mantle-firebox {
  width: 75%;
  height: 180px;
  background:
    radial-gradient(ellipse at 50% 100%, rgba(220,95,10,0.50) 0%, rgba(140,50,5,0.28) 38%, transparent 68%),
    repeating-linear-gradient(93deg,  transparent 0px, rgba(0,0,0,0.08) 1px, transparent 2px, transparent 7px),
    repeating-linear-gradient(183deg, transparent 0px, rgba(0,0,0,0.10) 1px, transparent 2px, transparent 9px),
    repeating-linear-gradient(180deg,
      rgba(0,0,0,0.55) 0px,   rgba(0,0,0,0.55) 2px,   transparent 2px,   transparent 38px,
      rgba(0,0,0,0.55) 38px,  rgba(0,0,0,0.55) 40px,  transparent 40px,  transparent 74px,
      rgba(0,0,0,0.55) 74px,  rgba(0,0,0,0.55) 76px,  transparent 76px,  transparent 118px,
      rgba(0,0,0,0.55) 118px, rgba(0,0,0,0.55) 120px, transparent 120px, transparent 156px,
      rgba(0,0,0,0.55) 156px, rgba(0,0,0,0.55) 158px, transparent 158px, transparent 180px
    ),
    repeating-linear-gradient(90deg,
      rgba(0,0,0,0.45) 0px,   rgba(0,0,0,0.45) 2px,   transparent 2px,   transparent 52px,
      rgba(0,0,0,0.45) 52px,  rgba(0,0,0,0.45) 54px,  transparent 54px,  transparent 110px,
      rgba(0,0,0,0.45) 110px, rgba(0,0,0,0.45) 112px, transparent 112px, transparent 160px
    ),
    repeating-linear-gradient(90deg,
      transparent 0px,         transparent 26px,
      rgba(0,0,0,0.45) 26px,  rgba(0,0,0,0.45) 28px,  transparent 28px,  transparent 80px,
      rgba(0,0,0,0.45) 80px,  rgba(0,0,0,0.45) 82px,  transparent 82px,  transparent 136px,
      rgba(0,0,0,0.45) 136px, rgba(0,0,0,0.45) 138px, transparent 138px, transparent 180px
    ),
    #0c0e0a;
  border-radius: 6px 6px 0 0;
  box-shadow:
    inset 0 6px 24px rgba(0,0,0,0.97),
    inset 0 0 50px rgba(0,0,0,0.9),
    0 0 40px rgba(180,70,5,0.12);
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  overflow: hidden;
  padding-bottom: 10px;
}

.fire-logs {
  position: relative;
  width: 80px; height: 24px;
  z-index: 2;
}

.log {
  position: absolute;
  font-size: 26px;
  line-height: 1;
}

.log-back  { transform: rotate(-30deg); bottom: 6px; left: 6px; opacity: 0.9; }
.log-front { transform: rotate( 30deg); bottom: 2px; right: 6px; opacity: 0.95; }

.fire-flames {
  position: absolute;
  bottom: 30px;
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  z-index: 3;
}

.flame { display: inline-block; line-height: 1; filter: drop-shadow(0 0 8px rgba(255,120,20,0.6)); }

.flame-c { font-size: 70px; animation: flicker-c 2.1s ease-in-out infinite alternate; }

@keyframes flicker-c {
  0%   { transform: scaleX(1)    scaleY(1)    translateX(0);    opacity: 1; }
  40%  { transform: scaleX(0.92) scaleY(1.08) translateX(1px);  opacity: 0.95; }
  100% { transform: scaleX(1.06) scaleY(0.96) translateX(-1px); opacity: 1; }
}


@media (max-width: 700px) {
  .page-body { padding: 40px 20px 0; }

  .corkboard-wrap {
    flex-direction: column;
  }

  .cover-display {
    width: 140px;
    position: static;
    align-self: center;
  }

  .recs-bookshelf-container { padding-left: 30px; }
  ol.recs-bookshelf::after { left: -40px; }
  div.rec-title { margin-left: -24px; }
  .lib-mantle { width: 100%; }
  
  .rec-meta-container {
    position: fixed;
    left: 25%; width: 0; top: auto;
    width: auto;
    transform: translateY(100%);
    transition: transform 0.35s cubic-bezier(0.34, 1.3, 0.64, 1);
    z-index: 10;
    opacity: 0;
  }

  ol.recs-bookshelf li:hover .rec-meta-container {
    opacity: 1;
  }

  div.rec-meta {
    opacity: 1 !important;
    width: 240px;
    max-width: 80vw;
    rotate: 0deg;
  }
}