.page-main {
--color-primary: var(--tag-accent);
--color-primary-hover: color-mix(in srgb, var(--tag-accent) 80%, black);
}
body {
--brand-primary: var(--color-primary);
--brand-primary-hover: var(--color-primary-hover);
}
.trv-breadcrumb-row {
--color-primary: var(--brand-primary);
--color-primary-hover: var(--brand-primary-hover);
}
.filter-chip {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 32px;
height: 32px;
padding: 6px 10px;
font-size: var(--font-size-sm);
font-weight: 600;
border-radius: var(--radius-full);
border: 1px solid var(--color-border);
background: var(--color-surface-solid);
cursor: pointer;
text-decoration: none;
color: var(--color-text-muted);
transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), opacity var(--transition-fast);
}
.filter-chip:hover {
border-color: var(--tag-accent);
color: var(--tag-accent-ink);
background: color-mix(in srgb, var(--tag-accent) 8%, var(--color-surface-solid));
}
.filter-chip.active {
background: var(--tag-accent);
color: white;
border-color: var(--tag-accent);
}
.filter-chip.disabled {
opacity: 0.3;
pointer-events: none;
}
.action-pill {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 10px 18px;
border-radius: var(--radius-full);
font-size: var(--font-size-md);
font-weight: 600;
cursor: pointer;
border: 1px solid var(--color-border);
transition: background var(--transition-standard), border-color var(--transition-standard), color var(--transition-standard);
background: var(--color-surface-solid);
color: var(--color-text-muted);
text-decoration: none;
}
.action-pill i {
font-size: var(--font-size-md);
opacity: 0.8;
}
.action-pill:hover {
border-color: var(--tag-accent);
color: var(--tag-accent-ink);
background: color-mix(in srgb, var(--tag-accent) 5%, var(--color-surface-solid));
}
.action-pill:hover i {
opacity: 1;
}
.tag-hero {
margin-bottom: var(--space-lg);
padding: 0 0 var(--space-lg);
border-bottom: 1px solid var(--color-border);
}
.tag-hero h1 {
font-family: var(--font-display);
font-weight: var(--font-weight-bold);
font-size: clamp(var(--font-size-3xl), 5vw, var(--font-size-4xl));
letter-spacing: -0.02em;
margin-bottom: var(--space-sm);
color: var(--color-text);
line-height: var(--leading-tight);
}
.tag-hero .lead {
font-size: var(--font-size-md);
line-height: var(--leading-relaxed);
color: var(--color-text-muted);
max-inline-size: 42em;
font-weight: 400;
margin-bottom: var(--space-md);
}
.tag-hero-meta {
margin: 0;
font-size: var(--font-size-xs);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--tag-accent-ink);
}
.tag-hero-meta span {
color: var(--color-text);
}
.tag-hero-actions {
margin: var(--space-md) 0 0;
}
.tag-search-cta i {
color: var(--tag-accent-ink);
}
.listing-controls {
--toolbar-height: 36px;
display: flex;
align-items: center;
gap: var(--space-sm);
margin-bottom: var(--space-lg);
flex-wrap: wrap;
}
.listing-controls .back-link {
margin: 0;
height: var(--toolbar-height);
padding: 0 var(--space-sm);
}
.listing-controls .random-btn {
height: var(--toolbar-height);
}
.listing-search {
flex: 1;
min-width: 220px;
max-width: 360px;
}
.listing-search .search-input-wrapper {
position: relative;
display: flex;
align-items: center;
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.listing-search .search-input-wrapper:focus-within {
border-color: var(--tag-accent);
box-shadow: 0 0 0 3px color-mix(in srgb, var(--tag-accent) 15%, transparent);
}
.listing-search input {
flex-grow: 1;
padding: 0 var(--space-md) 0 2.4rem;
font-size: var(--font-size-md);
line-height: var(--toolbar-height);
height: var(--toolbar-height);
border: none;
background: transparent;
color: var(--color-text);
font-family: var(--font-sans);
outline: none;
}
.listing-search input::placeholder {
color: var(--color-text-muted);
}
.listing-search i {
position: absolute;
left: 0.9rem;
top: 50%;
transform: translateY(-50%);
color: var(--color-text-muted);
font-size: var(--font-size-sm);
pointer-events: none;
}
.letter-nav {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: var(--space-xl);
}
.tag-container {
display: flex;
flex-direction: column;
gap: var(--space-xl);
}
.letter-section {
scroll-margin-top: var(--scroll-offset);
}
.letter-heading {
font-family: var(--font-display);
font-size: var(--font-size-2xl);
font-weight: var(--font-weight-bold);
color: var(--tag-accent-ink);
margin: 0 0 var(--space-md);
padding-bottom: var(--space-xs);
border-bottom: 1px solid var(--color-border);
display: flex;
align-items: baseline;
gap: var(--space-sm);
}
.letter-count {
font-size: var(--font-size-2xs);
font-weight: 600;
color: var(--color-text-muted);
letter-spacing: 0.05em;
text-transform: uppercase;
}
.tag-grid {
list-style: none;
padding: 0;
margin: 0;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
column-gap: var(--space-lg);
row-gap: 4px;
}
.tag-grid > li { padding: 0; margin: 0; }
.tag-card {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: var(--space-sm);
padding: 8px 10px;
border-radius: var(--radius-md);
text-decoration: none;
color: var(--color-text);
transition: background var(--transition-fast), color var(--transition-fast);
}
.tag-card:hover {
background: color-mix(in srgb, var(--tag-accent) 8%, transparent);
color: var(--tag-accent-ink);
}
.tag-card-name {
font-weight: 500;
font-size: var(--font-size-md);
color: inherit;
line-height: 1.35;
flex: 1;
min-width: 0;
}
.tag-card-count {
font-size: var(--font-size-xs);
color: var(--color-text-muted);
font-weight: 500;
font-variant-numeric: tabular-nums;
flex-shrink: 0;
}
.tag-card:hover .tag-card-count {
color: var(--tag-accent-ink);
}
.no-results {
padding: 60px 20px;
background: var(--color-surface);
border: 1px dashed var(--color-border);
border-radius: var(--radius-lg);
color: var(--color-text-muted);
display: none;
margin: var(--space-xl) 0;
}
.no-results.visible { display: block; }
.no-results h3 {
font-size: var(--font-size-xl);
margin-bottom: var(--space-md);
color: var(--color-text-muted);
}
.back-link {
display: inline-flex;
align-items: center;
gap: var(--space-xs);
color: var(--color-text-muted);
text-decoration: none;
font-size: var(--font-size-sm);
font-weight: 600;
margin-bottom: var(--space-md);
transition: color var(--transition-fast);
}
.back-link:hover { color: var(--tag-accent-ink); }
.back-link i { font-size: 0.8em; opacity: 0.7; }
.back-link:hover i { opacity: 1; }
.tag-content {
display: grid;
grid-template-columns: 1fr;
gap: var(--space-xl);
}
@media (width >= 1024px) {
.tag-content {
grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
gap: var(--space-xxl);
}
}
.tag-main { min-width: 0; }
.tag-sidebar {
display: flex;
flex-direction: column;
gap: var(--space-xl);
}
.aspect-chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: var(--space-xl);
padding-bottom: var(--space-md);
border-bottom: 1px solid var(--color-border);
}
.aspect-chips--collapsible:not(.is-expanded) .aspect-chip--overflow {
display: none;
}
.aspect-chips-toggle {
appearance: none;
background: transparent;
border: 0;
padding: 6px 0;
font: inherit;
font-size: var(--font-size-xs);
font-weight: 600;
color: var(--color-text-muted);
cursor: pointer;
text-decoration: underline;
text-underline-offset: 3px;
text-decoration-color: color-mix(in srgb, var(--color-text-muted) 40%, transparent);
transition: color var(--transition-fast);
}
.aspect-chips-toggle:hover {
color: var(--tag-accent-ink);
text-decoration-color: var(--tag-accent);
}
.aspect-chip {
display: inline-flex;
align-items: baseline;
gap: 6px;
max-inline-size: 16rem;
padding: 6px 12px;
border-radius: var(--radius-full);
border: 1px solid var(--color-border);
background: var(--color-surface-solid);
color: var(--color-text-muted);
text-decoration: none;
font-size: var(--font-size-sm);
font-weight: 500;
white-space: nowrap;
transition: border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast);
}
.aspect-chip-label {
min-inline-size: 0;
overflow: hidden;
text-overflow: ellipsis;
}
.aspect-chip:hover {
border-color: var(--tag-accent);
color: var(--tag-accent-ink);
}
.aspect-chip.is-active {
background: var(--tag-accent);
border-color: var(--tag-accent);
color: var(--color-primary-contrast);
}
.aspect-chip.is-active .aspect-chip-count {
color: var(--color-primary-contrast);
}
.aspect-chip-count {
flex: 0 0 auto;
font-size: var(--font-size-2xs);
color: var(--color-text-muted);
font-variant-numeric: tabular-nums;
font-weight: 600;
}
.aspect-chip--tag-only .aspect-chip-count {
font-size: var(--font-size-sm);
}
.tag-section {
margin-bottom: var(--space-xl);
}
#verses-section {
scroll-margin-block-start: calc(var(--header-height, 64px) + var(--space-md));
}
@media (width <= 768px) {
#verses-section { scroll-margin-block-start: 0; }
.letter-section { scroll-margin-top: 0; }
}
.section-header {
display: flex;
align-items: baseline;
justify-content: space-between;
flex-wrap: wrap;
gap: var(--space-sm);
margin-bottom: var(--space-lg);
padding-bottom: var(--space-sm);
border-bottom: 1px solid var(--color-border);
}
.section-header h2 {
font-family: var(--font-display);
font-size: var(--font-size-2xl);
font-weight: 700;
color: var(--color-text);
margin: 0;
}
.section-body { padding: 0; }
.verse-list {
list-style: none;
padding: 0;
margin: 0;
counter-reset: verse-counter;
}
.verse-item {
padding: var(--space-md) 0;
border-bottom: 1px solid var(--lectern-seam);
}
.verse-item:last-child { border-bottom: 0; }
.verse-ref-row {
display: flex;
align-items: baseline;
gap: var(--space-sm);
margin-bottom: var(--space-xs);
flex-wrap: wrap;
}
.verse-ref {
display: inline-block;
font-family: var(--font-sans);
font-weight: 700;
font-size: var(--font-size-2xs);
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--tag-accent-ink);
text-decoration: none;
transition: opacity var(--transition-fast);
}
.verse-ref:hover { text-decoration: underline; text-underline-offset: 3px; }
.verse-date {
font-family: var(--font-sans);
font-weight: 500;
font-size: var(--font-size-2xs);
letter-spacing: 0.04em;
color: var(--color-text-muted);
font-variant-numeric: tabular-nums;
}
.verse-date::before {
content: '·';
margin-inline-end: var(--space-sm);
opacity: 0.6;
}
.verse-text {
font-family: var(--font-serif);
font-size: var(--font-size-base);
line-height: 1.65;
color: var(--color-text);
max-width: 44em;
margin: 0;
}
.verse-text .red-letter { color: var(--color-red-letter, #b91c1c); }
.no-verses-message {
padding: var(--space-xl);
background: color-mix(in srgb, var(--tag-accent) 4%, var(--color-surface));
border: 1px dashed color-mix(in srgb, var(--tag-accent) 25%, var(--color-border));
border-radius: var(--radius-md);
text-align: center;
}
.no-verses-message p {
margin: 0 0 var(--space-md);
color: var(--color-text-muted);
line-height: 1.6;
}
.no-verses-message p:last-child { margin-bottom: 0; }
.no-verses-message i { color: var(--tag-accent-ink); margin-right: var(--space-xs); }
.pagination {
margin-top: var(--space-lg);
padding: var(--space-md) 0 0;
border-top: 1px solid var(--color-border);
display: flex;
flex-direction: column;
gap: var(--space-sm);
}
.pagination-info {
font-size: var(--font-size-sm);
color: var(--color-text-muted);
}
.pagination-controls {
display: flex;
align-items: center;
gap: 6px;
flex-wrap: wrap;
}
.pagination-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--space-xs);
padding: 8px 14px;
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
color: var(--color-text-muted);
text-decoration: none;
font-size: var(--font-size-sm);
font-weight: 600;
transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
}
.pagination-btn:hover {
border-color: var(--tag-accent);
color: var(--tag-accent-ink);
background: color-mix(in srgb, var(--tag-accent) 5%, var(--color-surface-solid));
}
.pagination-btn.active {
background: var(--tag-accent);
color: var(--color-primary-contrast);
border-color: var(--tag-accent);
}
.pagination-num { min-width: 38px; }
.pagination-ellipsis {
padding: 0 var(--space-xs);
color: var(--color-text-muted);
}
.sidebar-section + .sidebar-section {
padding-top: var(--space-lg);
border-top: 1px solid var(--color-border);
}
.sidebar-section h3 {
font-family: var(--font-sans);
font-size: var(--font-size-2xs);
font-weight: 700;
color: var(--color-text-muted);
text-transform: uppercase;
letter-spacing: 0.08em;
margin: 0 0 var(--space-md);
}
.sidebar-link-list {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 2px;
}
.sidebar-link-list li { padding: 0; }
.sidebar-link-list a {
display: block;
color: var(--color-text);
text-decoration: none;
font-size: var(--font-size-md);
line-height: 1.5;
padding: 6px 0;
transition: color var(--transition-fast);
}
.sidebar-link-list a:hover { color: var(--tag-accent-ink); }
.seealso-group + .seealso-group {
margin-top: var(--space-md);
padding-top: var(--space-md);
border-top: 1px dashed color-mix(in srgb, var(--color-border) 60%, transparent);
}
.seealso-group h4 {
font-family: var(--font-sans);
font-size: var(--font-size-2xs);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--color-text-muted);
margin: 0 0 var(--space-xs);
}
.crosslink-list {
list-style: none;
padding: 0;
margin: 0;
}
.crosslink-item {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: var(--space-sm);
padding: var(--space-xs) 0;
}
.crosslink-item a {
color: var(--color-text);
text-decoration: none;
font-size: var(--font-size-md);
transition: color var(--transition-fast);
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.crosslink-item a:hover { color: var(--tag-accent-ink); }
.crosslink-count {
font-size: var(--font-size-xs);
color: var(--color-text-muted);
white-space: nowrap;
flex-shrink: 0;
font-variant-numeric: tabular-nums;
}
.cta-buttons {
display: flex;
gap: var(--space-md);
flex-wrap: wrap;
}
.cta-btn {
display: inline-flex;
align-items: center;
gap: var(--space-sm);
padding: 10px 20px;
border-radius: var(--radius-full);
text-decoration: none;
font-weight: 600;
font-size: var(--font-size-md);
transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
}
a.cta-btn-primary {
background: var(--tag-accent-ink);
color: var(--color-primary-contrast);
border: 1px solid var(--tag-accent-ink);
}
a.cta-btn-primary:hover,
a.cta-btn-primary:focus {
background: var(--color-primary-hover);
border-color: var(--color-primary-hover);
color: var(--color-primary-contrast);
}
a.cta-btn-secondary {
background: var(--color-surface-solid);
color: var(--tag-accent-ink);
border: 1px solid var(--tag-accent);
}
a.cta-btn-secondary:hover,
a.cta-btn-secondary:focus {
background: color-mix(in srgb, var(--tag-accent) 8%, var(--color-surface-solid));
color: var(--color-primary-hover);
}
.detail-aliases,
.detail-coordinates {
margin-top: var(--space-md);
font-size: var(--font-size-md);
color: var(--color-text-muted);
}
.detail-aliases strong,
.detail-coordinates strong { color: var(--color-text); }
.detail-coordinates {
display: inline-flex;
align-items: center;
gap: var(--space-sm);
padding: 8px var(--space-md);
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
}
.detail-coordinates i { color: var(--tag-accent-ink); }
.detail-coordinates a {
color: var(--tag-accent-ink);
text-decoration: none;
font-weight: 500;
transition: opacity var(--transition-fast);
}
.detail-coordinates a:hover { text-decoration: underline; }
.family-tree {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: var(--space-xs);
}
.family-member {
padding: 6px 8px;
display: flex;
justify-content: space-between;
align-items: center;
border-radius: var(--radius-md);
transition: background var(--transition-fast);
}
.family-member:hover { background: color-mix(in srgb, var(--tag-accent) 8%, transparent); }
.family-member a {
color: var(--color-text);
text-decoration: none;
font-weight: 500;
transition: color var(--transition-fast);
}
.family-member:hover a { color: var(--tag-accent-ink); }
.family-relation {
font-size: var(--font-size-2xs);
font-weight: 600;
color: var(--color-text-muted);
background: var(--color-surface);
padding: 3px 8px;
border-radius: var(--radius-full);
text-transform: uppercase;
letter-spacing: 0.03em;
}
.group-tags,
.alias-tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.group-tag,
.alias-tag {
display: inline-flex;
align-items: center;
padding: 6px 12px;
background: color-mix(in srgb, var(--tag-accent) 8%, transparent);
border: 1px solid color-mix(in srgb, var(--tag-accent) 20%, transparent);
border-radius: var(--radius-full);
font-size: var(--font-size-sm);
font-weight: 500;
color: var(--tag-accent-ink);
}
.book-filter {
display: flex;
align-items: center;
gap: var(--space-sm);
}
.book-filter-label {
font-size: var(--font-size-xs);
font-weight: 600;
color: var(--color-text-muted);
text-transform: uppercase;
letter-spacing: 0.06em;
display: flex;
align-items: center;
gap: var(--space-xs);
}
.book-filter-label i { color: var(--tag-accent-ink); font-size: 0.8em; }
.book-filter-select {
position: relative;
min-width: 180px;
}
.book-filter-select select {
width: 100%;
padding: 6px 32px 6px 10px;
font-size: var(--font-size-sm);
font-weight: 500;
font-family: var(--font-sans);
color: var(--color-text);
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
cursor: pointer;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), outline var(--transition-fast);
}
.book-filter-select select:hover { border-color: var(--tag-accent); }
.book-filter-select select:focus {
outline: none;
border-color: var(--tag-accent);
box-shadow: 0 0 0 3px color-mix(in srgb, var(--tag-accent) 15%, transparent);
}
.book-filter-select::after {
content: '\f078';
font-family: 'Font Awesome 6 Free';
font-weight: 900;
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
pointer-events: none;
color: var(--color-text-muted);
font-size: var(--font-size-2xs);
}
.book-nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: var(--space-md) 0;
margin-top: var(--space-md);
border-top: 1px solid var(--color-border);
}
.book-nav-link {
display: inline-flex;
align-items: center;
gap: var(--space-xs);
color: var(--tag-accent-ink);
text-decoration: none;
font-weight: 600;
font-size: var(--font-size-md);
padding: var(--space-sm) var(--space-md);
border-radius: var(--radius-md);
transition: background-color var(--transition-fast);
}
.book-nav-link:hover { background: color-mix(in srgb, var(--tag-accent) 8%, transparent); }
.random-btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 14px;
background: var(--color-surface-solid);
color: var(--color-text-muted);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
font-size: var(--font-size-sm);
font-weight: 600;
cursor: pointer;
text-decoration: none;
transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
}
.random-btn:hover {
border-color: var(--tag-accent);
color: var(--tag-accent-ink);
background: color-mix(in srgb, var(--tag-accent) 5%, var(--color-surface-solid));
}
.random-btn i { font-size: var(--font-size-sm); }
.map-container {
width: 100%;
height: 200px;
border-radius: var(--radius-md);
overflow: hidden;
background: var(--color-surface);
border: 1px solid var(--color-border);
}
.map-container iframe {
width: 100%;
height: 100%;
border: none;
}
.map-link {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--space-xs);
margin-top: var(--space-sm);
padding: 6px 14px;
font-size: var(--font-size-sm);
font-weight: 600;
color: var(--tag-accent-ink);
text-decoration: none;
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
transition: background var(--transition-fast), border-color var(--transition-fast);
}
.map-link:hover {
border-color: var(--tag-accent);
background: color-mix(in srgb, var(--tag-accent) 5%, var(--color-surface-solid));
}
.biblical-maps-count {
margin: 0 0 var(--space-md);
font-size: var(--font-size-sm);
line-height: 1.5;
color: var(--color-text-muted);
}
.biblical-maps-count strong {
color: var(--color-text);
font-weight: 700;
}
.biblical-maps-reel {
display: flex;
flex-direction: column;
}
.biblical-maps-section .biblical-map-figure {
margin: 0 0 var(--space-md);
padding: 0;
display: none;
}
.biblical-maps-section[data-current-page="1"] .biblical-map-figure[data-reel-page="1"],
.biblical-maps-section[data-current-page="2"] .biblical-map-figure[data-reel-page="2"],
.biblical-maps-section[data-current-page="3"] .biblical-map-figure[data-reel-page="3"],
.biblical-maps-section[data-current-page="4"] .biblical-map-figure[data-reel-page="4"],
.biblical-maps-section[data-current-page="5"] .biblical-map-figure[data-reel-page="5"],
.biblical-maps-section[data-current-page="6"] .biblical-map-figure[data-reel-page="6"],
.biblical-maps-section[data-current-page="7"] .biblical-map-figure[data-reel-page="7"],
.biblical-maps-section[data-current-page="8"] .biblical-map-figure[data-reel-page="8"],
.biblical-maps-section[data-current-page="9"] .biblical-map-figure[data-reel-page="9"],
.biblical-maps-section[data-current-page="10"] .biblical-map-figure[data-reel-page="10"] {
display: block;
}
.biblical-maps-reel-nav {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-sm);
padding: var(--space-xs) 0;
margin-top: var(--space-xs);
}
.biblical-maps-reel-btn {
appearance: none;
width: 36px;
height: 36px;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: 50%;
cursor: pointer;
color: var(--color-text);
font-size: var(--font-size-sm);
display: inline-flex;
align-items: center;
justify-content: center;
transition: border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast);
}
.biblical-maps-reel-btn:hover:not([aria-disabled="true"]),
.biblical-maps-reel-btn:focus-visible {
border-color: var(--tag-accent);
color: var(--tag-accent-ink);
background: color-mix(in srgb, var(--tag-accent) 6%, var(--color-surface));
}
.biblical-maps-reel-btn[aria-disabled="true"] {
opacity: 0.4;
cursor: not-allowed;
}
.biblical-maps-reel-counter {
font-family: var(--font-sans);
font-size: var(--font-size-sm);
font-weight: 600;
color: var(--color-text-muted);
letter-spacing: 0.02em;
}
.biblical-maps-reel-counter .reel-current {
color: var(--color-text);
font-weight: 700;
}
.biblical-map-image-link {
display: block;
border-radius: var(--radius-md);
overflow: hidden;
border: 1px solid var(--color-border);
background: var(--color-surface);
line-height: 0;
transition: border-color var(--transition-fast);
}
.biblical-map-image-link:hover {
border-color: var(--tag-accent);
}
.biblical-map-image-link img {
width: 100%;
height: auto;
display: block;
}
.biblical-map-figure figcaption {
display: flex;
flex-direction: column;
gap: 4px;
padding-top: var(--space-xs);
font-size: var(--font-size-sm);
line-height: 1.4;
}
.biblical-map-title {
color: var(--color-text);
font-weight: 600;
}
.biblical-map-pdf-link {
color: var(--color-text-muted);
text-decoration: none;
font-size: var(--font-size-sm);
display: inline-flex;
align-items: center;
gap: 4px;
}
.biblical-map-pdf-link:hover {
color: var(--tag-accent-ink);
}
.biblical-map-attribution {
margin: var(--space-sm) 0 0;
font-size: var(--font-size-xs);
color: var(--color-text-muted);
line-height: 1.4;
}
.biblical-map-attribution a {
color: inherit;
text-decoration: underline;
text-decoration-color: var(--color-border);
text-underline-offset: 2px;
}
.biblical-map-attribution a:hover {
text-decoration-color: var(--tag-accent);
color: var(--color-text);
}
@media (width <= 768px) {
.tag-hero {
padding-bottom: var(--space-md);
margin-bottom: var(--space-md);
}
.listing-controls {
gap: var(--space-sm);
}
.listing-search {
order: 3;
flex-basis: 100%;
max-width: none;
}
.letter-nav { gap: 4px; }
.filter-chip {
min-width: 36px;
height: 36px;
padding: 6px 8px;
font-size: var(--font-size-sm);
}
.tag-grid {
grid-template-columns: 1fr;
}
.tag-card {
padding: 10px 8px;
}
.tag-card-name { font-size: var(--font-size-base); }
.verse-text {
font-size: var(--font-size-base);
max-width: 100%;
}
.book-filter { flex-wrap: wrap; }
.book-filter-select {
min-width: 0;
flex: 1;
}
.pagination-controls { gap: 4px; }
.pagination-btn {
padding: 8px 12px;
min-height: 40px;
font-size: var(--font-size-sm);
}
.pagination-num { min-width: 40px; }
.aspect-chips {
margin-bottom: var(--space-lg);
}
}
.tags-hero {
margin-bottom: var(--space-xl);
padding: 0 0 var(--space-lg);
border-bottom: 1px solid var(--color-border);
}
.tags-hero h1 {
font-family: var(--font-display);
font-weight: var(--font-weight-bold);
font-size: clamp(var(--font-size-3xl), 5vw, var(--font-size-4xl));
letter-spacing: -0.02em;
margin-bottom: var(--space-sm);
color: var(--color-text);
line-height: var(--leading-tight);
}
.tags-hero .lead {
font-size: var(--font-size-md);
line-height: var(--leading-relaxed);
color: var(--color-text-muted);
max-inline-size: 42em;
font-weight: 400;
margin: 0;
}
.categories-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
column-gap: var(--space-xxl);
row-gap: var(--space-xxl);
margin-bottom: var(--space-xxl);
}
@media (width <= 680px) {
.categories-grid {
grid-template-columns: 1fr;
column-gap: 0;
row-gap: var(--space-xl);
}
}
.category-card {
display: flex;
flex-direction: column;
}
.category-header {
margin-bottom: var(--space-md);
padding-bottom: var(--space-sm);
border-bottom: 1px solid color-mix(in srgb, var(--category-color) 25%, var(--color-border));
}
.category-header h2 {
font-family: var(--font-display);
font-size: var(--font-size-2xl);
font-weight: 700;
color: var(--color-text);
margin: 0 0 4px;
display: flex;
align-items: baseline;
gap: var(--space-sm);
}
.category-header h2 i {
color: var(--category-ink);
font-size: 0.85em;
}
.category-tagline {
color: var(--color-text-muted);
font-size: var(--font-size-md);
margin: 0 0 var(--space-xs);
line-height: 1.4;
}
.category-meta {
margin: 0;
font-size: var(--font-size-2xs);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--category-ink);
font-variant-numeric: tabular-nums;
}
.featured-list {
list-style: none;
padding: 0;
margin: 0 0 var(--space-md);
display: flex;
flex-direction: column;
gap: 1px;
}
.featured-list li { padding: 0; }
.featured-list a {
display: flex;
justify-content: space-between;
align-items: baseline;
gap: var(--space-sm);
color: var(--color-text);
text-decoration: none;
font-size: var(--font-size-md);
font-weight: 500;
padding: 6px 0;
transition: color var(--transition-fast);
}
.featured-list a:hover { color: var(--category-ink); }
.featured-list .count {
font-size: var(--font-size-xs);
color: var(--color-text-muted);
font-weight: 500;
font-variant-numeric: tabular-nums;
flex-shrink: 0;
}
.featured-list a:hover .count { color: var(--category-ink); }
.category-cta {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 0;
background: transparent;
color: var(--category-ink);
font-weight: 600;
font-size: var(--font-size-md);
text-decoration: none;
transition: gap var(--transition-fast);
align-self: flex-start;
}
.category-cta:hover,
.category-cta:focus {
color: color-mix(in srgb, var(--category-ink) 80%, black);
gap: 10px;
}
.category-cta i { font-size: 0.85em; }
.category-card.topics     { --category-color: var(--color-tag-topic);  --category-ink: var(--color-tag-topic); }
.category-card.people     { --category-color: var(--color-tag-person); --category-ink: var(--color-tag-person); }
.category-card.places     { --category-color: var(--color-tag-place);  --category-ink: var(--color-tag-place-ink); }
.category-card.timelines  { --category-color: var(--color-accent);     --category-ink: var(--color-accent-ink); }
@media (width <= 768px) {
.categories-grid { gap: var(--space-xl); }
}
.tag-not-found { text-align: center; padding: var(--space-xxl); }
.tag-not-found h1 { font-size: var(--font-size-4xl); margin-bottom: var(--space-md); }
.tag-not-found p { color: var(--color-text-muted); margin-bottom: var(--space-lg); }
.timeline-listing-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: var(--space-md);
}
.timeline-listing-card {
display: flex;
flex-direction: row;
align-items: flex-start;
gap: var(--space-md);
padding: 16px 20px;
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
text-decoration: none;
color: var(--color-text);
transition: border-color var(--transition-fast);
}
.timeline-listing-card:hover { border-color: var(--tag-accent); }
.timeline-card-icon {
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
background: color-mix(in srgb, var(--tag-accent) 12%, transparent);
color: var(--tag-accent-ink);
border-radius: var(--radius-md);
font-size: var(--font-size-base);
flex-shrink: 0;
}
.timeline-card-body {
display: flex;
flex-direction: column;
gap: 4px;
min-width: 0;
}
.timeline-card-name {
font-family: var(--font-display);
font-weight: 700;
font-size: var(--font-size-base);
color: var(--color-text);
line-height: 1.3;
}
.timeline-listing-card:hover .timeline-card-name { color: var(--tag-accent-ink); }
.timeline-card-count {
font-size: var(--font-size-xs);
color: var(--color-text-muted);
font-weight: 600;
font-variant-numeric: tabular-nums;
margin-top: 4px;
}
.timeline-card-desc {
font-size: var(--font-size-sm);
color: var(--color-text-muted);
line-height: 1.5;
margin: 0;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.timeline-card-date {
font-size: var(--font-size-2xs);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--tag-accent-ink);
}
.timeline-detail-date {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: var(--font-size-xs);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--tag-accent-ink);
margin-bottom: var(--space-sm);
}
.timeline-detail-date i { font-size: var(--font-size-xs); }
.timeline-nav-cards {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--space-md);
margin-top: var(--space-xl);
}
.timeline-nav-card {
display: flex;
align-items: center;
gap: var(--space-md);
padding: 14px 18px;
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
text-decoration: none;
color: var(--color-text);
transition: border-color var(--transition-fast);
}
.timeline-nav-card:hover { border-color: var(--tag-accent); }
.timeline-nav-card i {
color: var(--tag-accent-ink);
font-size: var(--font-size-md);
flex-shrink: 0;
}
.timeline-nav-card div {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}
.timeline-nav-card.next div { text-align: right; }
.timeline-nav-label {
font-size: var(--font-size-2xs);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--color-text-muted);
}
.timeline-nav-name {
font-size: var(--font-size-md);
font-weight: 600;
color: var(--tag-accent-ink);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.timeline-nav-card.empty {
background: transparent;
border-color: transparent;
pointer-events: none;
}
.books-in-period {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 2px;
}
.books-in-period-item a {
display: flex;
justify-content: space-between;
align-items: center;
padding: 6px 8px;
border-radius: var(--radius-md);
color: var(--color-text);
text-decoration: none;
font-size: var(--font-size-md);
transition: background var(--transition-fast), color var(--transition-fast);
}
.books-in-period-item a:hover,
.books-in-period-item.active a {
background: color-mix(in srgb, var(--tag-accent) 8%, transparent);
color: var(--tag-accent-ink);
}
.books-in-period-count {
font-size: var(--font-size-xs);
color: var(--color-text-muted);
font-weight: 500;
font-variant-numeric: tabular-nums;
}
.books-in-period-item.active .books-in-period-count { color: var(--tag-accent-ink); }
@media (width <= 768px) {
.timeline-listing-grid { grid-template-columns: 1fr; }
.timeline-nav-cards { grid-template-columns: 1fr; }
.timeline-nav-card.next div { text-align: left; }
}
.sort-controls {
display: flex;
align-items: center;
gap: 6px;
}
.sort-btn {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 5px 12px;
font-size: var(--font-size-xs);
font-weight: 600;
border-radius: var(--radius-full);
border: 1px solid var(--color-border);
background: var(--color-surface-solid);
color: var(--color-text-muted);
text-decoration: none;
transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
white-space: nowrap;
}
.sort-btn:hover {
border-color: var(--tag-accent);
color: var(--tag-accent-ink);
}
.sort-btn.active {
background: color-mix(in srgb, var(--tag-accent) 12%, var(--color-surface-solid));
border-color: color-mix(in srgb, var(--tag-accent) 40%, var(--color-border));
color: var(--tag-accent-ink);
}
.sort-btn i { font-size: var(--font-size-xs); opacity: 0.8; }
@media (width <= 640px) {
.section-header {
flex-direction: column;
align-items: flex-start;
}
}
.tag-empty {
padding: var(--space-lg);
color: var(--color-text-muted);
font-family: var(--font-sans);
font-size: var(--font-size-md);
font-style: italic;
text-align: center;
}
