Add Finished Books feature with episode playlists and nav dropdown
Public: - /finished page with ornament heading, intro text, book grid, and styled empty state - /finished/:id episode playlist page filtered by RSS season number - Episodes nav becomes click-toggle dropdown (Current Series / Finished Books) - Finished Books link in footer - Dropdown font fixed to match other nav links Admin: - End Current Series & Start New Book wizard on Current Series tab - Finished Books management tab with add/edit/remove and image asset picker Data: - FinishedBook type + finishedBooks[] field on SiteContent - RSS parser extracts itunes:season per episode Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+65
-9
@@ -190,7 +190,8 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.header-nav a {
|
||||
.header-nav a,
|
||||
.header-nav button {
|
||||
color: var(--brand-muted);
|
||||
text-decoration: none;
|
||||
font-family: var(--brand-font-body);
|
||||
@@ -8701,18 +8702,29 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
color: var(--brand-muted);
|
||||
font-family: inherit;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.06em;
|
||||
text-transform: uppercase;
|
||||
font-size: 0.96rem;
|
||||
line-height: inherit;
|
||||
transition: color 200ms;
|
||||
}
|
||||
|
||||
.nav-dropdown-trigger:hover,
|
||||
.nav-dropdown--open .nav-dropdown-trigger {
|
||||
color: var(--brand-gold);
|
||||
}
|
||||
|
||||
.nav-dropdown-arrow {
|
||||
font-size: 0.7em;
|
||||
opacity: 0.7;
|
||||
transition: transform 200ms;
|
||||
}
|
||||
|
||||
.nav-dropdown-menu {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: calc(100% + 0.5rem);
|
||||
top: calc(100% + 0.75rem);
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background: rgba(15, 15, 12, 0.98);
|
||||
@@ -8724,11 +8736,6 @@
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.nav-dropdown:hover .nav-dropdown-menu,
|
||||
.nav-dropdown:focus-within .nav-dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.nav-dropdown-item {
|
||||
display: block;
|
||||
padding: 0.55rem 1.1rem;
|
||||
@@ -8993,3 +9000,52 @@
|
||||
height: 120px;
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Finished Books page section ── */
|
||||
.section-finished-books {
|
||||
min-height: 60vh;
|
||||
padding: 4rem 0 6rem;
|
||||
}
|
||||
|
||||
.finished-books-header {
|
||||
text-align: center;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.finished-books-intro {
|
||||
color: var(--brand-muted);
|
||||
font-size: 1.05rem;
|
||||
max-width: 540px;
|
||||
margin: -1rem auto 0;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.finished-books-empty-state {
|
||||
text-align: center;
|
||||
padding: 4rem 2rem 5rem;
|
||||
border: 1px solid rgba(201, 168, 76, 0.15);
|
||||
border-radius: 16px;
|
||||
background: rgba(26, 26, 21, 0.5);
|
||||
max-width: 520px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.finished-books-empty-icon {
|
||||
font-size: 3rem;
|
||||
margin-bottom: 1.25rem;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.finished-books-empty-heading {
|
||||
font-family: var(--brand-font-heading);
|
||||
font-size: 1.6rem;
|
||||
color: var(--brand-warm-white);
|
||||
margin: 0 0 0.75rem;
|
||||
}
|
||||
|
||||
.finished-books-empty-text {
|
||||
color: var(--brand-muted);
|
||||
font-size: 0.97rem;
|
||||
line-height: 1.65;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user