mirror of
https://github.com/kennethreitz/kjvstudy.org.git
synced 2026-10-24 14:29:14 +00:00
- bronze "The Canon of Scripture" kicker over the title - canon stats strip in old-style numerals: 66 books, 1,189 chapters (computed from the book data), 31,102 verses, 2 testaments - testament headers carry their book counts - every card names its genre in the genre's own ink above the title, with chapter counts in bronze small caps - the color legend is gone — with genres printed on the cards it was pure duplication (dead CSS removed with it) All 976 tests pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
286 lines
7.5 KiB
HTML
286 lines
7.5 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Books of the Bible - KJV Study{% endblock %}
|
|
{% block description %}Browse all 66 books of the Authorized King James Version Bible{% endblock %}
|
|
|
|
{% block head %}
|
|
<style>
|
|
.book-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
|
gap: 1rem;
|
|
max-width: 90%;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.book-card {
|
|
display: block;
|
|
padding: 1rem 1.1rem;
|
|
background: var(--bg-elevated);
|
|
border: 1px solid var(--border-color-dark);
|
|
border-left: 3px solid var(--border-color-darker);
|
|
border-radius: 6px;
|
|
transition: all 0.2s ease;
|
|
text-decoration: none;
|
|
color: var(--text-color);
|
|
}
|
|
|
|
.book-card:hover {
|
|
border-top-color: var(--accent);
|
|
border-right-color: var(--accent);
|
|
border-bottom-color: var(--accent);
|
|
transform: translateY(-2px);
|
|
box-shadow: var(--shadow-soft);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.book-card.selected {
|
|
border-top-color: var(--accent);
|
|
border-right-color: var(--accent);
|
|
border-bottom-color: var(--accent);
|
|
box-shadow: 0 0 0 2px var(--accent-soft);
|
|
outline: none;
|
|
}
|
|
|
|
.book-card.selected .book-name {
|
|
color: var(--accent-strong);
|
|
}
|
|
|
|
.book-name {
|
|
font-size: 1.2rem;
|
|
font-weight: 600;
|
|
margin-bottom: 0.25rem;
|
|
color: var(--text-strong);
|
|
transition: color 0.15s ease;
|
|
}
|
|
|
|
.book-card:hover .book-name {
|
|
color: var(--accent-strong);
|
|
}
|
|
|
|
.book-info {
|
|
font-size: 0.68rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.14em;
|
|
color: var(--bronze);
|
|
margin-top: 0.4rem;
|
|
}
|
|
|
|
/* Genre name printed in its own ink */
|
|
.book-genre {
|
|
font-size: 0.62rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.16em;
|
|
margin-bottom: 0.3rem;
|
|
}
|
|
|
|
.book-genre.law { color: var(--cat-law); }
|
|
.book-genre.historical { color: var(--cat-historical); }
|
|
.book-genre.wisdom { color: var(--cat-wisdom); }
|
|
.book-genre.major-prophets { color: var(--cat-major-prophets); }
|
|
.book-genre.minor-prophets { color: var(--cat-minor-prophets); }
|
|
.book-genre.gospels { color: var(--cat-gospels); }
|
|
.book-genre.acts { color: var(--cat-acts); }
|
|
.book-genre.pauline { color: var(--cat-pauline); }
|
|
.book-genre.general { color: var(--cat-general); }
|
|
.book-genre.apocalyptic { color: var(--cat-apocalyptic); }
|
|
|
|
/* Canon stats strip */
|
|
.canon-stats {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
gap: 1rem;
|
|
max-width: 90%;
|
|
margin: 2rem 0 1rem;
|
|
}
|
|
|
|
.canon-stat {
|
|
background: var(--bg-elevated);
|
|
border: 1px solid var(--border-color-dark);
|
|
border-radius: 8px;
|
|
padding: 1.1rem 1.25rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.canon-stat .number {
|
|
font-family: et-book-roman-old-style, et-book, Georgia, serif;
|
|
font-size: 1.9rem;
|
|
color: var(--text-strong);
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.canon-stat .label {
|
|
font-size: 0.66rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.16em;
|
|
color: var(--bronze);
|
|
margin-top: 0.3rem;
|
|
}
|
|
|
|
.testament-section {
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.testament-header {
|
|
position: relative;
|
|
font-size: 1rem !important;
|
|
font-weight: 600;
|
|
font-style: normal !important;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.2em;
|
|
color: var(--text-secondary) !important;
|
|
margin-bottom: 1rem;
|
|
padding-bottom: 0.6rem;
|
|
border-bottom: 1px solid var(--border-color);
|
|
}
|
|
|
|
.testament-header::after {
|
|
content: '';
|
|
position: absolute;
|
|
left: 0;
|
|
bottom: -1px;
|
|
width: 2.75rem;
|
|
height: 1px;
|
|
background: var(--gold);
|
|
}
|
|
|
|
.testament-count {
|
|
float: right;
|
|
font-size: 0.7rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.12em;
|
|
color: var(--bronze);
|
|
}
|
|
|
|
/* Book type color coding — genre inks on the spine edge */
|
|
.book-card.law { border-left-color: var(--cat-law); }
|
|
.book-card.historical { border-left-color: var(--cat-historical); }
|
|
.book-card.wisdom { border-left-color: var(--cat-wisdom); }
|
|
.book-card.major-prophets { border-left-color: var(--cat-major-prophets); }
|
|
.book-card.minor-prophets { border-left-color: var(--cat-minor-prophets); }
|
|
.book-card.gospels { border-left-color: var(--cat-gospels); }
|
|
.book-card.acts { border-left-color: var(--cat-acts); }
|
|
.book-card.pauline { border-left-color: var(--cat-pauline); }
|
|
.book-card.general { border-left-color: var(--cat-general); }
|
|
.book-card.apocalyptic { border-left-color: var(--cat-apocalyptic); }
|
|
|
|
/* Mobile optimizations */
|
|
@media (max-width: 768px) {
|
|
.book-grid {
|
|
max-width: 100%;
|
|
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.book-card {
|
|
padding: 0.9rem;
|
|
min-height: 70px;
|
|
}
|
|
|
|
.book-name {
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.book-info {
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.testament-header {
|
|
font-size: 1.3rem;
|
|
}
|
|
|
|
.intro-text {
|
|
max-width: 100%;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.book-grid {
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.book-card {
|
|
padding: 0.75rem;
|
|
}
|
|
|
|
.book-name {
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<span class="page-kicker">The Canon of Scripture</span>
|
|
<h1>Books of the Bible</h1>
|
|
<p class="subtitle">The Authorized King James Version</p>
|
|
|
|
{% set all_books = old_testament + new_testament %}
|
|
<div class="canon-stats">
|
|
<div class="canon-stat">
|
|
<div class="number">{{ all_books | length }}</div>
|
|
<div class="label">Books</div>
|
|
</div>
|
|
<div class="canon-stat">
|
|
<div class="number">{{ "{:,}".format(all_books | sum(attribute="chapters")) }}</div>
|
|
<div class="label">Chapters</div>
|
|
</div>
|
|
<div class="canon-stat">
|
|
{# 1769 Oxford Standard text of the Authorized Version #}
|
|
<div class="number">31,102</div>
|
|
<div class="label">Verses</div>
|
|
</div>
|
|
<div class="canon-stat">
|
|
<div class="number">2</div>
|
|
<div class="label">Testaments</div>
|
|
</div>
|
|
</div>
|
|
|
|
<section id="old-testament" class="testament-section">
|
|
<h2 class="testament-header">Old Testament <span class="testament-count">{{ old_testament | length }} BOOKS</span></h2>
|
|
<div class="book-grid">
|
|
{% for book in old_testament %}
|
|
{% if book.available %}
|
|
<a href="/book/{{ book.name }}" class="book-card {{ book.type }}">
|
|
<div class="book-genre {{ book.type }}">{{ book.type.replace('-', ' ') }}</div>
|
|
<div class="book-name">{{ book.name }}</div>
|
|
<div class="book-info">{{ book.chapters }} {% if book.chapters == 1 %}chapter{% else %}chapters{% endif %}</div>
|
|
</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
</section>
|
|
|
|
<section id="new-testament" class="testament-section">
|
|
<h2 class="testament-header">New Testament <span class="testament-count">{{ new_testament | length }} BOOKS</span></h2>
|
|
<div class="book-grid">
|
|
{% for book in new_testament %}
|
|
{% if book.available %}
|
|
<a href="/book/{{ book.name }}" class="book-card {{ book.type }}">
|
|
<div class="book-genre {{ book.type }}">{{ book.type.replace('-', ' ') }}</div>
|
|
<div class="book-name">{{ book.name }}</div>
|
|
<div class="book-info">{{ book.chapters }} {% if book.chapters == 1 %}chapter{% else %}chapters{% endif %}</div>
|
|
</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
</section>
|
|
|
|
|
|
<script>
|
|
// Use standardized grid navigation from base.js
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
if (window.KJVNav && KJVNav.initGridNav) {
|
|
KJVNav.initGridNav('.book-card', { gridSelector: '.book-grid' });
|
|
}
|
|
});
|
|
</script>
|
|
{% endblock %}
|