diff --git a/css/contraband.css b/css/contraband.css index cfba481..1b5b9da 100644 --- a/css/contraband.css +++ b/css/contraband.css @@ -268,66 +268,125 @@ letter-spacing: 1px; } -/* ─── Subcategory Sections ───────────────────────────── */ -.crt-subcategory { +/* ─── Subcategory Grid (4-col cards) ─────────────────── */ +.crt-sub-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 0.75rem; margin-bottom: 1.5rem; } -.crt-sub-header { +.crt-sub-card { + background: rgba(20, 20, 20, 0.9); + border: 1px solid var(--border); + border-left: 3px solid var(--status-amber); + padding: 1rem 1.2rem; + cursor: pointer; + transition: all 0.2s ease; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.crt-sub-card:hover { + background: rgba(30, 30, 30, 0.95); + border-left-color: var(--mil-red); + transform: translateY(-1px); +} + +.crt-sub-card.active { + background: rgba(35, 35, 35, 0.95); + border-color: var(--status-amber); + border-left-color: var(--status-amber); + box-shadow: 0 0 12px rgba(201, 162, 39, 0.15); +} + +.crt-sub-card-name { + font-family: var(--font-display); + font-size: 0.85rem; + font-weight: 600; + color: var(--text-primary); + letter-spacing: 0.5px; + line-height: 1.3; +} + +.crt-sub-card-stats { + display: flex; + gap: 0.75rem; + font-family: var(--font-mono); + font-size: 0.75rem; + color: var(--text-secondary); + letter-spacing: 0.5px; +} + +.crt-sub-card-stats .amber { + color: var(--warning); +} + +/* ─── Subcategory Detail Panel ───────────────────────── */ +.crt-sub-detail { + margin-bottom: 2rem; + border: 1px solid var(--border); + border-top: 2px solid var(--status-amber); + background: rgba(16, 16, 16, 0.95); +} + +.crt-sub-detail-header { display: flex; align-items: center; gap: 0.75rem; - padding: 0.6rem 1rem; + padding: 0.8rem 1.2rem; background: rgba(20, 20, 20, 0.9); - border: 1px solid var(--border); - border-left: 2px solid var(--status-amber); - margin-bottom: 0.5rem; - cursor: pointer; - transition: all 0.2s ease; + border-bottom: 1px solid var(--border); } -.crt-sub-header:hover { - background: rgba(25, 25, 25, 0.9); - border-left-color: var(--mil-red); -} - -.crt-sub-toggle { - color: var(--text-muted); - font-size: 1rem; - transition: transform 0.3s ease; -} - -.crt-sub-header.collapsed .crt-sub-toggle { - transform: rotate(-90deg); -} - -.crt-sub-name { +.crt-sub-detail-name { font-family: var(--font-display); - font-size: 0.95rem; + font-size: 1rem; font-weight: 600; color: var(--text-primary); letter-spacing: 1px; flex: 1; } +.crt-sub-toggle { + color: var(--text-muted); + font-size: 1rem; +} + .crt-sub-count { font-family: var(--font-mono); - font-size: 0.95rem; + font-size: 0.85rem; color: var(--text-muted); letter-spacing: 1px; } -.crt-sub-notes { - padding: 0.5rem 1rem; - margin-bottom: 0.5rem; +.crt-sub-detail-notes { + padding: 0.6rem 1.2rem; font-family: var(--font-mono); - font-size: 1rem; + font-size: 0.9rem; color: var(--status-amber); line-height: 1.5; - border-left: 2px solid var(--status-amber); + border-bottom: 1px solid var(--border); background: rgba(201, 162, 39, 0.05); } +.crt-sub-detail-entries { + /* entries rendered inside here */ +} + +/* ─── Responsive subcategory grid ────────────────────── */ +@media (max-width: 1200px) { + .crt-sub-grid { grid-template-columns: repeat(3, 1fr); } +} +@media (max-width: 900px) { + .crt-sub-grid { grid-template-columns: repeat(2, 1fr); } +} +@media (max-width: 600px) { + .crt-sub-grid { grid-template-columns: 1fr; } +} + + /* ─── Entry List ─────────────────────────────────────── */ .crt-entries { border: 1px solid var(--border); diff --git a/js/contraband.js b/js/contraband.js index eb014b9..1c62a6f 100644 --- a/js/contraband.js +++ b/js/contraband.js @@ -108,37 +108,29 @@ `; - // Subcategories - html += `