.archive-year{margin:3rem 0 5rem}.archive-year+.archive-year{border-top:1px solid #cfc7d3;padding-top:4rem}.archive-year-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:5px solid var(--primary)}.archive-year-heading h2{font-size:clamp(2.2rem,5vw,4rem);margin:.1rem 0}.volume-badge{background:var(--primary);color:white;padding:.55rem .9rem;border-radius:999px;font-weight:800}

/* ── Archive view-mode toggle ────────────────────────────────────────────── */
.view-toggle{display:flex;gap:.3rem;align-items:center}
.view-toggle button{width:2.1rem;height:2.1rem;border:1px solid #c8bfd4;border-radius:.3rem;background:transparent;color:#716678;cursor:pointer;display:grid;place-items:center;padding:0;transition:background .12s,color .12s,border-color .12s}
.view-toggle button:hover{background:#ede8f2;border-color:#9e8fb0;color:#4a3860}
.view-toggle button.active{background:var(--primary);color:white;border-color:var(--primary)}
@media(prefers-color-scheme:dark){
  .view-toggle button{border-color:#3d3547;color:#a89cb5}
  .view-toggle button:hover{background:#2e2538;border-color:#5a4d68;color:#e8e0ef}
  .view-toggle button.active{background:var(--dark-primary);border-color:var(--dark-primary);color:#1a171c}
}
body.dark .view-toggle button{border-color:#3d3547;color:#a89cb5}
body.dark .view-toggle button:hover{background:#2e2538;border-color:#5a4d68;color:#e8e0ef}
body.dark .view-toggle button.active{background:var(--dark-primary);border-color:var(--dark-primary);color:#1a171c}

/* ── LIST view ───────────────────────────────────────────────────────────── */
#archive-root.view-list .issue-grid{grid-template-columns:1fr;gap:.55rem}
#archive-root.view-list .issue-card{border-radius:.4rem}
#archive-root.view-list .issue-card:hover{transform:none;box-shadow:0 4px 18px #2d1d3b22}
#archive-root.view-list .issue-card a{display:flex;flex-direction:row;align-items:stretch}
#archive-root.view-list .issue-card img{width:82px;flex-shrink:0;aspect-ratio:8.5/11;object-fit:cover;border-radius:.4rem 0 0 .4rem}
#archive-root.view-list .issue-card>a>div{padding:.7rem 1rem;display:flex;flex-direction:column;justify-content:center;gap:.1rem}
#archive-root.view-list .issue-card h2{font-size:1.05rem;margin:0 0 .1rem}
#archive-root.view-list .issue-card p{font-size:.82rem;margin:0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ── COMPACT view ────────────────────────────────────────────────────────── */
#archive-root.view-compact .issue-grid{grid-template-columns:1fr;gap:.25rem}
#archive-root.view-compact .issue-card{border-radius:.3rem;box-shadow:0 2px 8px #2d1d3b10}
#archive-root.view-compact .issue-card:hover{transform:none;box-shadow:0 2px 14px #2d1d3b20}
#archive-root.view-compact .issue-card a{display:flex;flex-direction:row;align-items:center}
#archive-root.view-compact .issue-card img{width:46px;flex-shrink:0;aspect-ratio:8.5/11;object-fit:cover;border-radius:.3rem 0 0 .3rem}
#archive-root.view-compact .issue-card>a>div{padding:.38rem .8rem;display:flex;flex-direction:column;justify-content:center;gap:.05rem;min-width:0}
#archive-root.view-compact .issue-card h2{font-size:.88rem;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#archive-root.view-compact .issue-card p{display:none}
#archive-root.view-compact .issue-card .search-hit-snippet{display:block}

/* ── Editor note — issue detail page ────────────────────────────────────── */
.editor-note{border-left:4px solid var(--primary);background:#f5f2f9;padding:.75rem 1rem;border-radius:0 .35rem .35rem 0;margin:1rem 0}
.editor-note strong{display:block;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--primary);margin-bottom:.3rem}
.editor-note p{margin:0;font-size:.9rem;line-height:1.55;color:#3a2d45}
@media(prefers-color-scheme:dark){.editor-note{background:#241e29;border-left-color:var(--dark-primary)}.editor-note strong{color:var(--accent)}.editor-note p{color:#c4b8d0}}
body.dark .editor-note{background:#241e29;border-left-color:var(--dark-primary)}body.dark .editor-note strong{color:var(--accent)}body.dark .editor-note p{color:#c4b8d0}
body.light .editor-note{background:#f5f2f9;border-left-color:var(--primary)}body.light .editor-note strong{color:var(--primary)}body.light .editor-note p{color:#3a2d45}

/* ── Editor note — reader banner ─────────────────────────────────────────── */
.reader-editor-note{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;padding:.55rem 1.1rem;background:#1e1828;border-bottom:1px solid #3d3547;font-size:.84rem;color:#c4b8d0;line-height:1.4}
.reader-note-label{font-weight:800;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);white-space:nowrap;flex-shrink:0}
.reader-note-text{flex:1}
.reader-note-close{margin-left:auto;background:none;border:none;color:#716678;cursor:pointer;font-size:1.2rem;line-height:1;padding:0 .1rem;flex-shrink:0}
.reader-note-close:hover{color:#e0d8ee}

/* ── Issue view-count badge (admin only) ─────────────────────────────────── */
.issue-card>a{position:relative}
.issue-view-badge{position:absolute;bottom:.35rem;left:.35rem;background:rgba(20,5,40,.68);color:#f0e8ff;font-size:.65rem;font-weight:700;padding:.1rem .38rem;border-radius:99px;pointer-events:none;line-height:1.5;white-space:nowrap}
#archive-root.view-compact .issue-view-badge{font-size:.6rem;padding:.06rem .28rem;bottom:.2rem;left:.2rem}

/* ── Search hit annotations on issue cards ───────────────────────────────── */
.search-hits{padding:.55rem .8rem .65rem;border-top:1px solid #e8e4ee;display:flex;flex-direction:column;gap:.4rem}
.search-hit{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .5rem}
.search-hit-page{display:inline-block;font-size:.72rem;font-weight:800;padding:.1rem .4rem;background:#ede8f2;color:#4a1942;border-radius:99px;text-decoration:none;white-space:nowrap;flex-shrink:0}
.search-hit-page:hover{background:#4a1942;color:white}
.search-hit-text{display:inline-block;font-size:.72rem;font-weight:700;padding:.1rem .4rem;background:#f0ecf7;color:#5a3d72;border-radius:99px;text-decoration:none;white-space:nowrap;flex-shrink:0;border:1px solid #d8cee8}
.search-hit-text:hover{background:#5a3d72;color:white;border-color:#5a3d72}
.search-hit-headline{font-size:.8rem;font-weight:700;color:#2f1a3d;line-height:1.3}
.search-hit-snippet{margin:.1rem 0 0;width:100%;font-size:.76rem;color:#716678;line-height:1.45}
.search-hit-more{margin:.1rem 0 0;font-size:.72rem;color:#9e8fb0;font-style:italic}
/* List view: hits span full width below the row */
#archive-root.view-list .issue-card.has-hits{flex-direction:column}
#archive-root.view-list .search-hits{padding:.45rem .8rem .55rem}
/* Compact view: show hits below the card row, same as other views */
#archive-root.view-compact .search-hits{padding:.3rem .55rem .45rem}
#archive-root.view-compact .search-hit-more{display:none}
#archive-root.view-list .issue-card.has-hits a{border-radius:.4rem .4rem 0 0}
/* Compact view: just show page badges in a row, no headlines/snippets */
#archive-root.view-compact .search-hits{padding:.25rem .5rem .3rem;flex-direction:row;flex-wrap:wrap;gap:.25rem;border-top-color:#e8e4ee}
#archive-root.view-compact .search-hit{display:contents}
#archive-root.view-compact .search-hit-headline,#archive-root.view-compact .search-hit-snippet,#archive-root.view-compact .search-hit-more{display:none}
/* Dark mode */
@media(prefers-color-scheme:dark){
  .search-hits{border-top-color:#3d3547}
  .search-hit-page{background:#3a2850;color:#d4b8d0}
  .search-hit-page:hover{background:#c4a0e0;color:#1a0f28}
  .search-hit-headline{color:#e2d8ee}
  .search-hit-snippet{color:#a89cb5}
  .search-hit-more{color:#6a5e7a}
  #archive-root.view-compact .search-hits{border-top-color:#3d3547}
}
body.dark .search-hits{border-top-color:#3d3547}
body.dark .search-hit-page{background:#3a2850;color:#d4b8d0}
body.dark .search-hit-page:hover{background:#c4a0e0;color:#1a0f28}
body.dark .search-hit-headline{color:#e2d8ee}
body.dark .search-hit-snippet{color:#a89cb5}
body.dark .search-hit-more{color:#6a5e7a}
body.light .search-hits{border-top-color:#e8e4ee}
body.light .search-hit-page{background:#ede8f2;color:#4a1942}
body.light .search-hit-headline{color:#2f1a3d}
body.light .search-hit-snippet{color:#716678}
body.light .search-hit-more{color:#9e8fb0}

/* Reader stage — images always rendered from full-resolution source via <img> elements */
.reader-stage{perspective:1800px;position:relative}

/* Side-arrow overlays ---------------------------------------------------- */
.stage-arrow{
  position:absolute;top:0;bottom:0;width:3.5rem;
  display:flex;align-items:center;justify-content:center;
  border:none;padding:0;cursor:pointer;z-index:2;
  background:rgba(0,0,0,.08);color:rgba(255,255,255,.22);
  font-size:2.2rem;line-height:1;
  transition:background .18s,color .18s;
  -webkit-tap-highlight-color:transparent;
}
.stage-arrow--prev{left:0;border-radius:0 .3rem .3rem 0}
.stage-arrow--next{right:0;border-radius:.3rem 0 0 .3rem}
/* Desktop: become clearly visible on hover */
.stage-arrow:hover,.stage-arrow:focus-visible{
  background:rgba(0,0,0,.38);color:rgba(255,255,255,.95)
}
/* Touch devices: slightly more prominent at rest (no reliable hover) */
@media(pointer:coarse){
  .stage-arrow{background:rgba(0,0,0,.13);color:rgba(255,255,255,.38)}
  .stage-arrow:active{background:rgba(0,0,0,.45);color:rgba(255,255,255,.95)}
}
/* Hide when zoomed in — they'd block pan drags */
.reader-stage.is-zoomed .stage-arrow{pointer-events:none;opacity:0}
.fallback-renderer{transform-style:preserve-3d}
.fallback-renderer img{backface-visibility:hidden;display:block}

/* Slide animation */
.animation-slide.transition-out-next{animation:slide-out-next .18s ease-in both}
.animation-slide.transition-in-next{animation:slide-in-next .28s ease-out both}
.animation-slide.transition-out-prev{animation:slide-out-prev .18s ease-in both}
.animation-slide.transition-in-prev{animation:slide-in-prev .28s ease-out both}

/* Fade animation */
.animation-fade.transition-out-next,.animation-fade.transition-out-prev{animation:fade-out .18s ease-in both}
.animation-fade.transition-in-next,.animation-fade.transition-in-prev{animation:fade-in .28s ease-out both}

/* Page-flip animation — slide sweep with a slight 3D tilt so it reads like a page turn
   without the "fold over" artefact of a pure rotateY pivot */
.animation-page_flip.transition-out-next{animation:pf-out-next .22s ease-in both}
.animation-page_flip.transition-in-next {animation:pf-in-next  .3s  ease-out both}
.animation-page_flip.transition-out-prev{animation:pf-out-prev .22s ease-in both}
.animation-page_flip.transition-in-prev {animation:pf-in-prev  .3s  ease-out both}

.reader-stage.magnify{cursor:zoom-in}.reader-stage.magnify.shift{cursor:zoom-out}.reader-stage.is-zoomed{cursor:grab}.reader-stage.is-zoomed:active{cursor:grabbing}.reader-toolbar [aria-pressed=true]{background:var(--accent);color:#1a171c}.toolbar-divider{width:1px;height:1.5rem;background:#716779}.reader-toolbar [data-zoom-label]{min-width:3.4rem;text-align:center;font-variant-numeric:tabular-nums}

@keyframes slide-out-next{to{opacity:.15;transform:translateX(-12%)}}
@keyframes slide-in-next{from{opacity:.15;transform:translateX(12%)}to{opacity:1;transform:none}}
@keyframes slide-out-prev{to{opacity:.15;transform:translateX(12%)}}
@keyframes slide-in-prev{from{opacity:.15;transform:translateX(-12%)}to{opacity:1;transform:none}}
@keyframes fade-out{to{opacity:0}}
@keyframes fade-in{from{opacity:0}to{opacity:1}}
/* Pages sweep left/right with a subtle 3D lean — looks like turning, not flipping over */
@keyframes pf-out-next{to  {transform:perspective(1400px) translateX(-104%) rotateY(-8deg);opacity:0}}
@keyframes pf-in-next {from{transform:perspective(1400px) translateX( 104%) rotateY( 8deg);opacity:0}}
@keyframes pf-out-prev{to  {transform:perspective(1400px) translateX( 104%) rotateY( 8deg);opacity:0}}
@keyframes pf-in-prev {from{transform:perspective(1400px) translateX(-104%) rotateY(-8deg);opacity:0}}

.thumb-rail.rail-hidden{display:none}
@media(max-width:700px){.archive-year-heading{align-items:start;flex-direction:column;gap:.75rem}.toolbar-divider{display:none}}
@media(prefers-reduced-motion:reduce){.animation-slide,.animation-fade,.animation-page_flip{animation:none!important}}

/* ── Shortcuts modal ─────────────────────────────────────────────────────── */
.shortcuts-modal{position:fixed;inset:0;z-index:9999;background:rgba(10,5,20,.72);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:1.5rem}
.shortcuts-modal[hidden]{display:none}
.shortcuts-inner{background:#1e1828;color:#e0d8ee;border-radius:.65rem;padding:1.5rem 1.75rem 1.75rem;max-width:26rem;width:100%;position:relative;box-shadow:0 12px 48px rgba(0,0,0,.65)}
.shortcuts-inner h2{margin:0 0 1.1rem;font-size:1.05rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent,#c4a0e0)}
.shortcuts-close{position:absolute;top:.75rem;right:.9rem;background:none;border:none;color:#9e8fb0;font-size:1.4rem;cursor:pointer;line-height:1;padding:.1rem .3rem;border-radius:.25rem}
.shortcuts-close:hover{color:#e0d8ee;background:#2e2538}
.shortcuts-dl{display:grid;grid-template-columns:auto 1fr;gap:.45rem 1.1rem;margin:0}
.shortcuts-dl dt{font-family:monospace;font-size:.85rem;background:#2e2538;color:#c4a0e0;border-radius:.25rem;padding:.15rem .45rem;white-space:nowrap;align-self:start;line-height:1.55}
.shortcuts-dl dd{margin:0;font-size:.88rem;color:#c0b4cc;line-height:1.55;align-self:start}
.shortcuts-dl dd small{font-size:.78rem;color:#8a7e96}
