From 6eb20fbcb85d9944c03ad10ed78205d45ce92483 Mon Sep 17 00:00:00 2001 From: Peter Lord Date: Wed, 29 Jul 2026 21:12:40 -0700 Subject: [PATCH] Restyle the section submenu as a labeled table of contents --- .../app/achievements/[id]/AchievementDetail.tsx | 1 + frontend/app/acts/[id]/ActDetail.tsx | 1 + frontend/app/ascensions/[id]/AscensionDetail.tsx | 1 + frontend/app/badges/[id]/page.tsx | 1 + frontend/app/card-revamp.css | 16 +++++++++++----- frontend/app/cards/[id]/CardDetail.tsx | 1 + frontend/app/characters/[id]/CharacterDetail.tsx | 1 + .../app/enchantments/[id]/EnchantmentDetail.tsx | 1 + frontend/app/encounters/[id]/EncounterDetail.tsx | 1 + frontend/app/events/[id]/EventDetail.tsx | 1 + frontend/app/merchant/MerchantToc.tsx | 1 + frontend/app/monsters/[id]/MonsterDetail.tsx | 1 + frontend/app/potions/[id]/PotionDetail.tsx | 1 + frontend/app/powers/[id]/PowerDetail.tsx | 1 + frontend/app/relics/[id]/RelicDetail.tsx | 1 + frontend/app/timeline/[id]/EpochDetail.tsx | 1 + 16 files changed, 26 insertions(+), 5 deletions(-) diff --git a/frontend/app/achievements/[id]/AchievementDetail.tsx b/frontend/app/achievements/[id]/AchievementDetail.tsx index 2cddaf3f..12b2dc00 100644 --- a/frontend/app/achievements/[id]/AchievementDetail.tsx +++ b/frontend/app/achievements/[id]/AchievementDetail.tsx @@ -109,6 +109,7 @@ export default function AchievementDetail({ initialAchievement }: { initialAchie {/* Sticky ToC */} diff --git a/frontend/app/card-revamp.css b/frontend/app/card-revamp.css index 29030124..699fb439 100644 --- a/frontend/app/card-revamp.css +++ b/frontend/app/card-revamp.css @@ -64,14 +64,20 @@ .card-rvmp .entity-lead p { margin: 0 0 10px; } .card-rvmp .entity-lead p:last-child { margin-bottom: 0; } -/* ── sticky ToC ── */ +/* ── sticky ToC ── + Styled as a labeled table of contents (plain anchor links, underlined when + active) rather than tab pills: clicking one only scrolls, and the old tab + look promised a view switch it never delivered. */ .card-rvmp .toc { position: sticky; top: 64px; z-index: 20; margin: 28px 0 0; padding: 10px 0; background: color-mix(in srgb, var(--bg) 90%, transparent); backdrop-filter: blur(6px); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); - display: flex; gap: 4px; flex-wrap: wrap; } -.card-rvmp .toc a { color: var(--text-2); font-size: 13px; padding: 5px 11px; border-radius: 4px; } -.card-rvmp .toc a:hover { color: var(--text); background: var(--surface); } -.card-rvmp .toc a.on { color: var(--spine); background: var(--spine-soft); } + display: flex; gap: 4px 16px; flex-wrap: wrap; align-items: baseline; } +.card-rvmp .toc-label { font-family: var(--mono); font-size: 11px; letter-spacing: .07em; + text-transform: uppercase; color: var(--text-3); } +.card-rvmp .toc a { color: var(--text-2); font-size: 13px; padding: 2px 0; } +.card-rvmp .toc a:hover { color: var(--text); text-decoration: underline; text-underline-offset: 5px; } +.card-rvmp .toc a.on { color: var(--spine); text-decoration: underline; text-underline-offset: 5px; + text-decoration-thickness: 2px; } /* ── sections ── */ .card-rvmp section { padding-top: 40px; scroll-margin-top: 128px; } diff --git a/frontend/app/cards/[id]/CardDetail.tsx b/frontend/app/cards/[id]/CardDetail.tsx index ea509fc4..a94d290e 100644 --- a/frontend/app/cards/[id]/CardDetail.tsx +++ b/frontend/app/cards/[id]/CardDetail.tsx @@ -431,6 +431,7 @@ export default function CardDetail({ initialCard, initialEnchantments, initialSt {/* Sticky ToC */}