/* ============================================================
   CrescentPath — Ancient Grimoire Theme
   A centuries-old Book of Shadows, candlelit & handcrafted.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Cinzel+Decorative:wght@400;700;900&family=Cinzel:wght@400;500;600;700&family=IM+Fell+English:ital@0;1&family=IM+Fell+DW+Pica:ital@0;1&display=swap');

* { margin: 0; padding: 0; box-sizing: border-box; }

:root {
    /* Grimoire palette */
    --parchment-dark: #1a1410;
    --parchment-deep: #211a13;
    --parchment-mid: #2a2118;
    --parchment-light: #f4e4c1;
    --parchment-cream: #e8d5a3;
    --parchment-warm: #d4c4a0;

    --ink-dark: #1c1410;
    --ink-brown: #3d2b1f;
    --ink-light: #6b5344;

    --gold-ancient: #b8860b;
    --gold-warm: #c4a265;
    --gold-dim: #8b7340;
    --gold-bright: #d4a847;

    --burgundy: #6b1c23;
    --burgundy-light: #8b3a3a;
    --forest: #2d4a2e;
    --forest-light: #4a6b4a;

    --candle-glow: rgba(255, 180, 80, 0.12);
    --candle-warm: #ffb850;
    --candle-dim: rgba(200, 150, 80, 0.08);

    --text-on-dark: #d4c4a0;
    --text-dim: #9a8b72;
    --text-heading: #e8d5a3;
    --text-accent: #c4a265;

    --danger: #a04040;
    --success: #5a8a5a;

    --card-bg: rgba(244, 228, 193, 0.04);
    --card-border: rgba(196, 162, 101, 0.15);
    --card-hover: rgba(196, 162, 101, 0.08);

    --border-ornate: rgba(196, 162, 101, 0.25);
}

/* ===== BASE ===== */
body {
    font-family: 'IM Fell English', 'Cormorant Garamond', Georgia, serif;
    background: var(--parchment-dark);
    color: var(--text-on-dark);
    overflow-x: hidden;
    line-height: 1.8;
    min-height: 100vh;
    font-size: 16px;
}

h1, h2, h3 {
    font-family: 'Cinzel', 'Cinzel Decorative', serif;
    color: var(--text-heading);
    letter-spacing: 0.03em;
}

h4 {
    font-family: 'Cinzel', serif;
    color: var(--text-heading);
}

a { color: var(--gold-warm); text-decoration: none; }
a:hover { text-decoration: underline; color: var(--gold-bright); }

::selection {
    background: rgba(184, 134, 11, 0.3);
    color: var(--parchment-light);
}

/* ===== GRIMOIRE BACKGROUND ===== */
/* REAL aged parchment texture photograph with dark overlay for readability */
.stars {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 0;
    pointer-events: none;
    /* Dark overlay + REAL parchment photograph from 123freevectors */
    background:
        linear-gradient(rgba(26, 20, 16, 0.68), rgba(20, 16, 12, 0.72)),
        url('../../assets/textures/parchment-main.jpg');
    background-size: auto, cover;
    background-position: center, center;
    background-repeat: no-repeat, no-repeat;
}
.stars::before {
    content: '';
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    /* Deep vignette overlay — darkens edges for grimoire feel */
    background:
        radial-gradient(ellipse at 50% 50%, transparent 20%, rgba(10, 8, 5, 0.6) 100%);
    opacity: 0.9;
}
.stars::after {
    content: '';
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    /* Flickering candlelight glow — warm golden light from upper left */
    background:
        radial-gradient(ellipse at 10% 5%, rgba(255, 180, 80, 0.1) 0%, transparent 40%),
        radial-gradient(ellipse at 85% 90%, rgba(255, 160, 60, 0.05) 0%, transparent 35%);
    animation: candleFlicker 4s ease-in-out infinite alternate;
}

@keyframes candleFlicker {
    0% { opacity: 0.6; }
    25% { opacity: 0.9; }
    50% { opacity: 0.5; }
    75% { opacity: 1; }
    100% { opacity: 0.7; }
}

#app {
    position: relative;
    z-index: 1;
    min-height: 100vh;
}

/* ===== SCROLLBAR ===== */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: var(--parchment-dark); }
::-webkit-scrollbar-thumb {
    background: var(--ink-brown);
    border-radius: 4px;
    border: 1px solid rgba(196, 162, 101, 0.1);
}
::-webkit-scrollbar-thumb:hover { background: var(--gold-dim); }

/* ===== AUTH PAGES ===== */
.auth-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    /* Candlelight glow on auth page */
    background:
        radial-gradient(ellipse at 50% 30%, rgba(255, 180, 80, 0.07) 0%, transparent 60%),
        radial-gradient(ellipse at 20% 80%, rgba(196, 162, 101, 0.04) 0%, transparent 50%);
}

.auth-card {
    width: 100%;
    max-width: 440px;
    text-align: center;
    /* REAL parchment photograph — visible aged paper with dark tint */
    background:
        linear-gradient(rgba(42, 33, 24, 0.7), rgba(36, 28, 20, 0.75)),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--border-ornate);
    border-radius: 4px;
    padding: 3rem 2.5rem;
    position: relative;
    box-shadow:
        0 0 40px rgba(0, 0, 0, 0.5),
        inset 0 0 60px rgba(196, 162, 101, 0.05);
}

/* REAL corner ornament illustrations */
.auth-card::before,
.auth-card::after {
    content: '';
    position: absolute;
    width: 60px;
    height: 60px;
    background-image: url('../../assets/decorative/corner-ornament.svg');
    background-size: contain;
    background-repeat: no-repeat;
    opacity: 0.6;
}
.auth-card::before {
    top: 8px;
    left: 8px;
    transform: rotate(0deg);
}
.auth-card::after {
    bottom: 8px;
    right: 8px;
    transform: rotate(180deg);
}

.auth-crescent {
    width: 80px;
    height: 80px;
    position: relative;
    margin: 0 auto 2rem;
    /* REAL moon celestial illustration */
    background-image: url('../../assets/illustrations/moon-celestial.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    filter: drop-shadow(0 0 20px rgba(184, 134, 11, 0.3));
}
.auth-crescent::before,
.auth-crescent::after {
    display: none; /* Remove CSS-generated shapes */
}

.auth-card h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 2rem;
    margin-bottom: 0.5rem;
    font-weight: 400;
    letter-spacing: 0.05em;
}

.auth-card h1 span {
    color: var(--gold-warm);
}

.auth-subtitle {
    color: var(--text-dim);
    font-family: 'IM Fell English', serif;
    font-style: italic;
    font-size: 1.05rem;
    margin-bottom: 2.5rem;
}

/* ===== FORMS ===== */
.form-group {
    margin-bottom: 1.25rem;
    text-align: left;
}

.form-group label {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: 0.75rem;
    color: var(--gold-dim);
    margin-bottom: 0.4rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.form-group input, .form-group textarea {
    width: 100%;
    padding: 0.85rem 1rem;
    background: rgba(244, 228, 193, 0.04);
    border: 1px solid var(--card-border);
    border-radius: 2px;
    color: var(--text-heading);
    font-family: 'IM Fell English', Georgia, serif;
    font-size: 1rem;
    transition: border-color 0.3s, box-shadow 0.3s;
}

.form-group input:focus, .form-group textarea:focus {
    outline: none;
    border-color: var(--gold-ancient);
    box-shadow: 0 0 15px rgba(184, 134, 11, 0.15);
    background: rgba(244, 228, 193, 0.06);
}

.form-group textarea {
    min-height: 120px;
    resize: vertical;
    line-height: 1.7;
}

.form-group input::placeholder,
.form-group textarea::placeholder {
    color: var(--text-dim);
    opacity: 0.6;
    font-style: italic;
}

/* ===== BUTTONS ===== */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.85rem 2rem;
    border-radius: 2px;
    font-family: 'Cinzel', serif;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s;
    border: none;
    text-decoration: none;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.btn-primary {
    width: 100%;
    background: linear-gradient(135deg, var(--burgundy), #4a1515);
    color: var(--parchment-cream);
    border: 1px solid rgba(139, 58, 58, 0.4);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
.btn-primary:hover {
    background: linear-gradient(135deg, #7b2529, var(--burgundy));
    box-shadow: 0 4px 20px rgba(107, 28, 35, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.08);
    transform: translateY(-1px);
}

.btn-gold {
    background: linear-gradient(135deg, var(--gold-ancient), #8b6914);
    color: var(--parchment-dark);
    border: 1px solid rgba(184, 134, 11, 0.4);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.btn-gold:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 20px rgba(184, 134, 11, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.btn-ghost {
    background: transparent;
    color: var(--text-dim);
    border: 1px solid var(--card-border);
}
.btn-ghost:hover {
    border-color: var(--gold-warm);
    color: var(--gold-warm);
}

.btn-sm {
    padding: 0.5rem 1.2rem;
    font-size: 0.8rem;
}

.btn-danger {
    background: rgba(160, 64, 64, 0.15);
    color: var(--danger);
    border: 1px solid rgba(160, 64, 64, 0.25);
}
.btn-danger:hover {
    background: rgba(160, 64, 64, 0.25);
}

.btn-outline {
    background: transparent;
    color: var(--gold-warm);
    border: 1px solid var(--gold-dim);
}
.btn-outline:hover {
    background: rgba(184, 134, 11, 0.1);
}

.auth-switch {
    margin-top: 1.5rem;
    font-size: 0.9rem;
    color: var(--text-dim);
}

.auth-switch a {
    color: var(--gold-warm);
    cursor: pointer;
}

.error-message {
    background: rgba(160, 64, 64, 0.1);
    border: 1px solid rgba(160, 64, 64, 0.25);
    border-radius: 2px;
    padding: 0.75rem;
    color: var(--danger);
    font-size: 0.9rem;
    margin-bottom: 1rem;
}

/* ===== APP LAYOUT ===== */
.app-layout {
    display: flex;
    min-height: 100vh;
}

/* ===== SIDEBAR — Grimoire Chapter Navigation ===== */
.sidebar {
    width: 260px;
    /* REAL leather texture photograph — like a grimoire's leather binding */
    background:
        linear-gradient(180deg, rgba(33, 26, 19, 0.88) 0%, rgba(26, 20, 16, 0.92) 100%),
        url('../../assets/textures/leather-dark.jpg');
    background-size: auto, cover;
    background-position: center, center;
    backdrop-filter: blur(10px);
    border-right: 1px solid var(--border-ornate);
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    z-index: 10;
    transition: transform 0.3s;
    /* Leather binding shadow effect */
    box-shadow:
        inset -8px 0 15px -8px rgba(0, 0, 0, 0.4),
        2px 0 15px rgba(0, 0, 0, 0.3);
}

/* REAL ornate divider illustration */
.sidebar::before {
    content: '';
    display: block;
    width: 180px;
    height: 20px;
    margin: 0 auto 0.5rem auto;
    background-image: url('../../assets/decorative/ornate-divider.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.5;
}

.sidebar-logo {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 2rem;
    text-decoration: none;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(196, 162, 101, 0.12);
}

.sidebar-logo .mini-crescent {
    width: 32px;
    height: 32px;
    position: relative;
    flex-shrink: 0;
    /* REAL moon celestial illustration */
    background-image: url('../../assets/illustrations/moon-celestial.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    filter: drop-shadow(0 0 10px rgba(184, 134, 11, 0.3));
}
.mini-crescent::before,
.mini-crescent::after {
    display: none; /* Remove CSS-generated shapes */
}

.sidebar-logo h2 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 1.15rem;
    color: var(--gold-warm);
    font-weight: 400;
    letter-spacing: 0.05em;
}

.sidebar-nav {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.nav-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.7rem 1rem;
    border-radius: 2px;
    color: var(--text-dim);
    font-family: 'Cinzel', serif;
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.25s;
    text-decoration: none;
    border: 1px solid transparent;
    background: none;
    width: 100%;
    text-align: left;
    letter-spacing: 0.03em;
}
.nav-item:hover {
    color: var(--text-heading);
    background: rgba(196, 162, 101, 0.05);
    border-color: rgba(196, 162, 101, 0.08);
    text-decoration: none;
}
.nav-item.active {
    background: rgba(184, 134, 11, 0.1);
    color: var(--gold-warm);
    border: 1px solid rgba(184, 134, 11, 0.2);
    box-shadow: inset 0 0 15px rgba(184, 134, 11, 0.05);
}
.nav-item .nav-icon {
    font-size: 1.1rem;
    width: 24px;
    text-align: center;
}

.sidebar-footer {
    padding-top: 1rem;
    border-top: 1px solid rgba(196, 162, 101, 0.12);
    margin-top: 1rem;
}

/* REAL ornate divider illustration */
.sidebar-footer::before {
    content: '';
    display: block;
    width: 180px;
    height: 20px;
    margin: 0 auto 0.75rem auto;
    background-image: url('../../assets/decorative/ornate-divider.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.4;
}

.user-info {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem;
    font-size: 0.85rem;
    color: var(--text-dim);
    font-family: 'IM Fell English', serif;
}

.user-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--burgundy), var(--ink-brown));
    border: 1px solid var(--gold-dim);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    color: var(--parchment-cream);
    flex-shrink: 0;
}

.main-content {
    flex: 1;
    margin-left: 260px;
    padding: 2.5rem;
    max-width: 920px;
}

/* Mobile hamburger */
.mobile-header {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 20;
    /* REAL leather texture for mobile header */
    background:
        linear-gradient(rgba(26, 20, 16, 0.92), rgba(26, 20, 16, 0.92)),
        url('../../assets/textures/leather-dark.jpg');
    background-size: auto, cover;
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--border-ornate);
    padding: 0.75rem 1rem;
    align-items: center;
    justify-content: space-between;
}

.hamburger {
    background: none;
    border: none;
    color: var(--gold-warm);
    font-size: 1.5rem;
    cursor: pointer;
    padding: 0.25rem;
}

.mobile-logo {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 1.1rem;
    color: var(--gold-warm);
    font-weight: 400;
    letter-spacing: 0.05em;
}

.sidebar-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.6);
    z-index: 9;
}

/* ===== DASHBOARD ===== */
.page-header {
    margin-bottom: 2rem;
}
.page-header h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 2rem;
    margin-bottom: 0.25rem;
    font-weight: 400;
    letter-spacing: 0.04em;
}
.page-header p {
    color: var(--text-dim);
    font-size: 1rem;
    font-style: italic;
}

/* ===== MOON WIDGET — Ancient Astronomical Chart ===== */
.moon-widget {
    /* REAL parchment photograph — warm aged paper for moon chart */
    background:
        linear-gradient(135deg, rgba(42, 33, 24, 0.65) 0%, rgba(26, 20, 16, 0.75) 100%),
        url('../../assets/textures/parchment-light.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--border-ornate);
    border-radius: 2px;
    padding: 1.5rem 2rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin-bottom: 2rem;
    position: relative;
    box-shadow:
        inset 0 0 30px rgba(184, 134, 11, 0.04),
        0 2px 10px rgba(0, 0, 0, 0.2);
}

/* REAL corner ornament illustrations */
.moon-widget::before,
.moon-widget::after {
    content: '';
    position: absolute;
    width: 40px;
    height: 40px;
    background-image: url('../../assets/decorative/corner-ornament.svg');
    background-size: contain;
    background-repeat: no-repeat;
    opacity: 0.5;
}
.moon-widget::before {
    top: 6px;
    left: 8px;
    transform: rotate(0deg);
}
.moon-widget::after {
    bottom: 6px;
    right: 8px;
    transform: rotate(180deg);
}

.moon-icon-large {
    font-size: 3.5rem;
    line-height: 1;
    filter: drop-shadow(0 0 10px rgba(184, 134, 11, 0.3));
}

.moon-details h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.3rem;
    margin-bottom: 0.25rem;
    letter-spacing: 0.03em;
}

.moon-energy {
    color: var(--gold-warm);
    font-size: 0.95rem;
    font-style: italic;
    font-family: 'IM Fell English', serif;
}

.moon-action {
    color: var(--text-dim);
    font-size: 0.85rem;
    margin-top: 0.5rem;
}

.moon-meta {
    display: flex;
    gap: 1.5rem;
    margin-top: 0.5rem;
    font-size: 0.8rem;
    color: var(--text-dim);
}

.illumination-bar {
    width: 100px;
    height: 4px;
    background: rgba(196, 162, 101, 0.1);
    border-radius: 2px;
    overflow: hidden;
    display: inline-block;
    vertical-align: middle;
    margin-left: 0.4rem;
}
.illumination-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--gold-dim), var(--gold-ancient));
    border-radius: 2px;
    transition: width 0.5s;
}

/* Progress section */
.progress-section {
    margin-bottom: 2rem;
}
.progress-section h3 {
    font-family: 'Cinzel', serif;
}

.progress-bar-container {
    background: rgba(196, 162, 101, 0.08);
    border-radius: 2px;
    height: 6px;
    overflow: hidden;
    margin: 0.75rem 0;
    border: 1px solid rgba(196, 162, 101, 0.1);
}

.progress-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--gold-dim), var(--gold-ancient), var(--gold-warm));
    border-radius: 2px;
    transition: width 0.8s ease;
}

.progress-text {
    font-size: 0.85rem;
    color: var(--text-dim);
}

/* ===== LESSON LIST — Chapter Index ===== */
.lesson-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.lesson-card {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.2rem 1.5rem;
    /* REAL parchment photograph — subtle page texture */
    background:
        linear-gradient(rgba(42, 33, 24, 0.8), rgba(36, 28, 20, 0.85)),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--card-border);
    border-radius: 2px;
    cursor: pointer;
    transition: all 0.3s;
    text-decoration: none;
    position: relative;
}

/* Aged paper left accent */
.lesson-card::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: var(--gold-dim);
    opacity: 0;
    transition: opacity 0.3s;
}

.lesson-card:hover {
    border-color: var(--border-ornate);
    background: var(--card-hover);
    text-decoration: none;
}
.lesson-card:hover::before {
    opacity: 1;
}

.lesson-card.completed {
    border-color: rgba(90, 138, 90, 0.2);
}
.lesson-card.completed::before {
    background: var(--forest-light);
    opacity: 0.6;
}
.lesson-card.locked {
    opacity: 0.45;
    cursor: not-allowed;
}
.lesson-card.locked:hover {
    transform: none;
    background: var(--card-bg);
    border-color: var(--card-border);
}
.lesson-card.locked:hover::before { opacity: 0; }

.lesson-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    background: rgba(184, 134, 11, 0.08);
    border: 1px solid rgba(184, 134, 11, 0.15);
    flex-shrink: 0;
}
.lesson-card.completed .lesson-icon {
    background: rgba(90, 138, 90, 0.12);
    border-color: rgba(90, 138, 90, 0.25);
}

.lesson-info {
    flex: 1;
}
.lesson-info h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.1rem;
    margin-bottom: 0.15rem;
    font-weight: 500;
    letter-spacing: 0.02em;
}
.lesson-info p {
    font-size: 0.85rem;
    color: var(--text-dim);
    font-style: italic;
}

.lesson-status {
    font-family: 'Cinzel', serif;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    flex-shrink: 0;
}
.lesson-status.done { color: var(--success); }
.lesson-status.next { color: var(--gold-warm); }
.lesson-status.locked-text { color: var(--text-dim); opacity: 0.5; }

.lesson-duration {
    font-size: 0.75rem;
    color: var(--text-dim);
    opacity: 0.6;
}

/* ===== LESSON DETAIL — Spell Book Page ===== */
.lesson-detail {
    max-width: 720px;
}

.lesson-back {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--text-dim);
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    margin-bottom: 1.5rem;
    cursor: pointer;
    transition: color 0.2s;
    background: none;
    border: none;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.lesson-back:hover { color: var(--gold-warm); }

.lesson-hero {
    text-align: center;
    margin-bottom: 3rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--card-border);
    position: relative;
}
/* Decorative rule below hero */
.lesson-hero::after {
    content: '\2726 \2726 \2726';
    position: absolute;
    bottom: -10px;
    left: 50%;
    transform: translateX(-50%);
    color: var(--gold-dim);
    font-size: 0.7rem;
    letter-spacing: 0.8em;
    background: var(--parchment-dark);
    padding: 0 1rem;
}

.lesson-hero .big-icon {
    font-size: 3rem;
    margin-bottom: 1rem;
    filter: drop-shadow(0 0 8px rgba(184, 134, 11, 0.3));
}
.lesson-hero h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 2rem;
    margin-bottom: 0.5rem;
    font-weight: 400;
    letter-spacing: 0.04em;
}
.lesson-hero .subtitle {
    color: var(--gold-warm);
    font-family: 'IM Fell English', serif;
    font-style: italic;
    font-size: 1.15rem;
}
.lesson-hero .meta {
    font-family: 'Cinzel', serif;
    font-size: 0.75rem;
    color: var(--text-dim);
    margin-top: 0.5rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

/* ===== LESSON CONTENT — Handwritten Manuscript ===== */
.lesson-content {
    font-size: 1.05rem;
    line-height: 1.9;
}
.lesson-content h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 1.6rem;
    margin: 2rem 0 1rem;
    font-weight: 400;
    letter-spacing: 0.03em;
}
.lesson-content h2 {
    font-family: 'Cinzel', serif;
    font-size: 1.35rem;
    margin: 2rem 0 0.75rem;
    color: var(--gold-warm);
    letter-spacing: 0.03em;
    position: relative;
    padding-bottom: 0.5rem;
}
.lesson-content h2::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 60px;
    height: 1px;
    background: linear-gradient(90deg, var(--gold-dim), transparent);
}
.lesson-content h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.2rem;
    margin: 1.5rem 0 0.5rem;
}
.lesson-content p { margin-bottom: 1rem; }
.lesson-content strong { color: var(--text-heading); }
.lesson-content em { color: var(--gold-warm); font-style: italic; }
.lesson-content ul, .lesson-content ol { padding-left: 1.5rem; margin-bottom: 1rem; }
.lesson-content li { margin-bottom: 0.4rem; }

.lesson-content blockquote {
    border-left: 3px solid var(--gold-ancient);
    padding: 1rem 1.25rem;
    margin: 1.5rem 0;
    color: var(--text-dim);
    font-style: italic;
    background: rgba(184, 134, 11, 0.04);
    border-radius: 0 2px 2px 0;
}

.lesson-content table {
    width: 100%;
    border-collapse: collapse;
    margin: 1.5rem 0;
    font-size: 0.9rem;
}
.lesson-content th, .lesson-content td {
    padding: 0.6rem 0.8rem;
    text-align: left;
    border-bottom: 1px solid var(--card-border);
}
.lesson-content th {
    font-family: 'Cinzel', serif;
    color: var(--gold-warm);
    font-weight: 600;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.lesson-content hr {
    border: none;
    text-align: center;
    margin: 2.5rem 0;
}
.lesson-content hr::after {
    content: '\2726 \2726 \2726';
    color: var(--gold-dim);
    font-size: 0.7rem;
    letter-spacing: 0.8em;
}

/* Practice & Reflection boxes — Aged parchment inserts */
.lesson-box {
    border-radius: 2px;
    padding: 1.5rem;
    margin: 2rem 0;
    position: relative;
}
.lesson-box h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.05rem;
    margin-bottom: 0.75rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    letter-spacing: 0.03em;
}
.lesson-box p {
    font-size: 0.95rem;
    line-height: 1.7;
}

.reflection-box {
    /* REAL vintage paper texture for reflection sections */
    background:
        linear-gradient(rgba(107, 28, 35, 0.12), rgba(80, 20, 25, 0.15)),
        url('../../assets/textures/vintage-paper.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid rgba(107, 28, 35, 0.25);
    border-left: 3px solid var(--burgundy);
}
.reflection-box h3 { color: var(--burgundy-light); }

.practice-box {
    /* REAL paper cream texture for practice sections */
    background:
        linear-gradient(rgba(184, 134, 11, 0.08), rgba(160, 120, 10, 0.1)),
        url('../../assets/textures/paper-cream.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid rgba(184, 134, 11, 0.2);
    border-left: 3px solid var(--gold-ancient);
}
.practice-box h3 { color: var(--gold-warm); }

.complete-section {
    text-align: center;
    padding: 2rem 0;
    margin-top: 2rem;
    border-top: 1px solid var(--card-border);
    position: relative;
}
.complete-section::before {
    content: '';
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    width: 40px;
    height: 20px;
    /* REAL wax seal illustration */
    background-image: url('../../assets/seals/wax-seal-crescent.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}
.complete-section p {
    color: var(--text-dim);
    margin-bottom: 1rem;
    font-family: 'IM Fell English', serif;
    font-size: 1.1rem;
    font-style: italic;
}

.already-completed {
    text-align: center;
    padding: 1rem;
    color: var(--success);
    font-family: 'Cinzel', serif;
    font-size: 0.85rem;
    background: rgba(90, 138, 90, 0.06);
    border-radius: 2px;
    border: 1px solid rgba(90, 138, 90, 0.15);
    margin-top: 2rem;
    letter-spacing: 0.03em;
}

/* ===== BOOK OF SHADOWS (Journal) — Leather-bound Journal ===== */
.journal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
    gap: 1rem;
}

.journal-entries {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.journal-card {
    padding: 1.2rem 1.5rem;
    /* REAL parchment photograph — Book of Shadows page */
    background:
        linear-gradient(rgba(42, 33, 24, 0.78), rgba(36, 28, 20, 0.82)),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--card-border);
    border-radius: 2px;
    cursor: pointer;
    transition: all 0.3s;
    position: relative;
}
/* Aged paper edge accent */
.journal-card::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: var(--burgundy);
    opacity: 0.4;
    transition: opacity 0.3s;
}
.journal-card:hover {
    border-color: var(--border-ornate);
    background: rgba(107, 28, 35, 0.04);
}
.journal-card:hover::before { opacity: 0.8; }

.journal-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.4rem;
}
.journal-card h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.05rem;
    font-weight: 500;
    letter-spacing: 0.02em;
}
.journal-card .journal-date {
    font-family: 'Cinzel', serif;
    font-size: 0.7rem;
    color: var(--text-dim);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.journal-card .journal-preview {
    font-size: 0.9rem;
    color: var(--text-dim);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-style: italic;
}
.journal-card .journal-tags {
    display: flex;
    gap: 0.4rem;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}
.tag {
    font-family: 'Cinzel', serif;
    font-size: 0.65rem;
    padding: 0.2rem 0.6rem;
    border-radius: 1px;
    background: rgba(107, 28, 35, 0.12);
    color: var(--burgundy-light);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.tag.moon-tag {
    background: rgba(184, 134, 11, 0.1);
    color: var(--gold-warm);
}

.empty-state {
    text-align: center;
    padding: 4rem 2rem;
    color: var(--text-dim);
}
.empty-state .empty-icon {
    font-size: 3rem;
    margin-bottom: 1rem;
    opacity: 0.4;
    filter: grayscale(0.3);
}
.empty-state h3 {
    font-family: 'Cinzel', serif;
    color: var(--text-heading);
    margin-bottom: 0.5rem;
    letter-spacing: 0.03em;
}
.empty-state p {
    font-size: 0.95rem;
    max-width: 400px;
    margin: 0 auto 1.5rem;
    font-style: italic;
}

/* Journal editor */
.journal-editor {
    max-width: 720px;
}

.editor-actions {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.5rem;
    flex-wrap: wrap;
}

/* ===== MOON PAGE — Ancient Astronomical Chart ===== */
.moon-page-hero {
    text-align: center;
    margin-bottom: 3rem;
}
.moon-page-hero .mega-moon {
    font-size: 5rem;
    line-height: 1;
    margin-bottom: 1rem;
    filter: drop-shadow(0 0 15px rgba(184, 134, 11, 0.4));
}
.moon-page-hero h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 2rem;
    margin-bottom: 0.5rem;
    font-weight: 400;
    letter-spacing: 0.04em;
}
.moon-phase-name {
    color: var(--gold-warm);
    font-family: 'IM Fell English', serif;
    font-size: 1.35rem;
    font-style: italic;
}

.moon-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
    margin: 2rem 0;
}

.moon-stat {
    background: rgba(42, 33, 24, 0.5);
    border: 1px solid var(--card-border);
    border-radius: 2px;
    padding: 1.2rem;
    text-align: center;
    position: relative;
}
/* Corner ornament */
.moon-stat::before {
    content: '\00B7';
    position: absolute;
    top: 4px; left: 8px;
    color: var(--gold-dim);
    opacity: 0.4;
}
.moon-stat::after {
    content: '\00B7';
    position: absolute;
    bottom: 4px; right: 8px;
    color: var(--gold-dim);
    opacity: 0.4;
}
.moon-stat .label {
    font-family: 'Cinzel', serif;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--text-dim);
    margin-bottom: 0.3rem;
}
.moon-stat .value {
    font-family: 'Cinzel', serif;
    font-size: 1.3rem;
    color: var(--text-heading);
}

.moon-guidance {
    /* REAL parchment texture for guidance sections */
    background:
        linear-gradient(135deg, rgba(42, 33, 24, 0.6), rgba(184, 134, 11, 0.06)),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--border-ornate);
    border-radius: 2px;
    padding: 2rem;
    margin: 2rem 0;
    position: relative;
}
.moon-guidance::before {
    content: '\2726';
    position: absolute;
    top: -8px;
    left: 50%;
    transform: translateX(-50%);
    color: var(--gold-dim);
    font-size: 0.7rem;
    background: var(--parchment-dark);
    padding: 0 0.75rem;
}
.moon-guidance h3 {
    font-family: 'Cinzel', serif;
    color: var(--gold-warm);
    margin-bottom: 0.75rem;
    font-size: 1.15rem;
    letter-spacing: 0.03em;
}
.moon-guidance p {
    font-size: 1.05rem;
    line-height: 1.7;
}

/* ===== MOON CALENDAR — Ancient Chart Grid ===== */
.moon-calendar {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 3px;
    margin-top: 2rem;
    border: 1px solid var(--card-border);
    padding: 0.5rem;
    /* REAL parchment texture for the astronomical chart grid */
    background:
        linear-gradient(rgba(42, 33, 24, 0.75), rgba(36, 28, 20, 0.8)),
        url('../../assets/textures/parchment-dark2.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border-radius: 2px;
}

.moon-cal-header {
    text-align: center;
    font-family: 'Cinzel', serif;
    font-size: 0.6rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--gold-dim);
    padding: 0.5rem 0;
}

.moon-cal-day {
    text-align: center;
    padding: 0.5rem 0.25rem;
    border-radius: 1px;
    font-size: 0.75rem;
    color: var(--text-dim);
    background: rgba(244, 228, 193, 0.02);
    border: 1px solid transparent;
    transition: all 0.2s;
}
.moon-cal-day.today {
    border-color: var(--gold-ancient);
    background: rgba(184, 134, 11, 0.1);
    box-shadow: 0 0 10px rgba(184, 134, 11, 0.15);
}
.moon-cal-day .cal-icon {
    font-size: 1rem;
    display: block;
    margin-bottom: 0.1rem;
}
.moon-cal-day .cal-num {
    font-family: 'Cinzel', serif;
    font-size: 0.6rem;
    opacity: 0.6;
}
.moon-cal-day.empty {
    background: none;
}

/* ===== LOADING ===== */
.loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4rem;
}

.spinner {
    width: 32px;
    height: 32px;
    border: 2px solid var(--card-border);
    border-top-color: var(--gold-ancient);
    border-radius: 50%;
    animation: spin 1.2s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* ===== RESPONSIVE ===== */
@media (max-width: 768px) {
    .sidebar {
        transform: translateX(-100%);
        width: 280px;
    }
    .sidebar.open {
        transform: translateX(0);
    }
    .sidebar-overlay.show {
        display: block;
    }
    .mobile-header {
        display: flex;
    }
    .main-content {
        margin-left: 0;
        padding: 1rem;
        padding-top: 4rem;
    }
    .moon-widget {
        flex-direction: column;
        text-align: center;
    }
    .moon-meta {
        justify-content: center;
    }
    .journal-header {
        flex-direction: column;
        align-items: flex-start;
    }
    .moon-page-hero .mega-moon {
        font-size: 4rem;
    }
}

@media (max-width: 480px) {
    .page-header h1 {
        font-size: 1.5rem;
    }
    .lesson-card {
        padding: 1rem;
    }
    .lesson-hero h1 {
        font-size: 1.6rem;
    }
    .moon-stats {
        grid-template-columns: 1fr 1fr;
    }
}

/* ===== PATH MAP — Ancient Illustrated Map ===== */
.path-page {
    max-width: 800px;
    margin: 0 auto;
}

.path-header {
    text-align: center;
    margin-bottom: 3rem;
}
.path-header h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 2rem;
    margin-bottom: 0.5rem;
    font-weight: 400;
    letter-spacing: 0.04em;
}
.path-header p {
    color: var(--text-dim);
    font-family: 'IM Fell English', serif;
    font-style: italic;
    font-size: 1.05rem;
}

.path-map {
    position: relative;
    padding: 2rem 0;
}

/* The winding trail line — ink path on old map */
.path-trail {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 2px;
    background: linear-gradient(
        to bottom,
        var(--gold-ancient) 0%,
        var(--gold-dim) 20%,
        var(--burgundy) 50%,
        var(--gold-dim) 80%,
        rgba(184, 134, 11, 0.2) 100%
    );
    transform: translateX(-50%);
    z-index: 0;
    /* Dotted/dashed ink effect */
    background-image: repeating-linear-gradient(
        to bottom,
        var(--gold-dim) 0px,
        var(--gold-dim) 8px,
        transparent 8px,
        transparent 12px
    );
}

/* Path nodes — REAL photographed parchment waypoints */
.path-node {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 3rem;
    padding: 1.5rem;
    /* REAL parchment photograph — aged map waypoint */
    background:
        linear-gradient(rgba(42, 33, 24, 0.75), rgba(36, 28, 20, 0.8)),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--card-border);
    border-radius: 2px;
    max-width: 350px;
    cursor: pointer;
    transition: all 0.3s ease;
}

.path-node.left {
    margin-right: auto;
    margin-left: 0;
}

.path-node.right {
    margin-left: auto;
    margin-right: 0;
}

/* Completed state — inked waypoint */
.path-node.completed {
    border-color: rgba(90, 138, 90, 0.25);
    background: rgba(45, 74, 46, 0.06);
}
.path-node.completed:hover {
    border-color: rgba(90, 138, 90, 0.4);
    background: rgba(45, 74, 46, 0.1);
    transform: translateY(-2px);
}
.path-node.completed .path-node-icon {
    background: rgba(45, 74, 46, 0.15);
    border-color: rgba(90, 138, 90, 0.3);
}

/* Current position - candlelit glow */
.path-node.current {
    border-color: var(--gold-ancient);
    background: rgba(184, 134, 11, 0.08);
    box-shadow: 0 0 25px rgba(184, 134, 11, 0.2), 0 0 50px rgba(184, 134, 11, 0.08);
    animation: grimGlow 3s ease-in-out infinite;
}
.path-node.current:hover {
    border-color: var(--gold-bright);
    background: rgba(184, 134, 11, 0.12);
    transform: translateY(-2px);
}
.path-node.current .path-node-icon {
    background: linear-gradient(135deg, var(--gold-ancient), rgba(184, 134, 11, 0.3));
    border-color: var(--gold-ancient);
    box-shadow: 0 0 15px rgba(184, 134, 11, 0.4);
}

@keyframes grimGlow {
    0%, 100% { box-shadow: 0 0 20px rgba(184, 134, 11, 0.15), 0 0 40px rgba(184, 134, 11, 0.05); }
    50% { box-shadow: 0 0 30px rgba(184, 134, 11, 0.25), 0 0 60px rgba(184, 134, 11, 0.1); }
}

/* Locked state */
.path-node.locked {
    opacity: 0.4;
    cursor: not-allowed;
}
.path-node.locked:hover {
    transform: none;
    background: rgba(42, 33, 24, 0.5);
}

/* Future phases — faded ink */
.path-node.future {
    opacity: 0.35;
    cursor: not-allowed;
    border-style: dashed;
    border-color: rgba(196, 162, 101, 0.12);
}
.path-node.future:hover {
    transform: none;
}

.path-node-icon {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.8rem;
    background: rgba(184, 134, 11, 0.06);
    border: 2px solid rgba(184, 134, 11, 0.15);
    flex-shrink: 0;
}

.path-node-content {
    flex: 1;
}
.path-node-content h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.05rem;
    margin-bottom: 0.25rem;
    font-weight: 500;
    letter-spacing: 0.02em;
}
.path-node-content p {
    font-size: 0.85rem;
    color: var(--text-dim);
    margin-bottom: 0.5rem;
    font-style: italic;
}

.path-node-status {
    font-family: 'Cinzel', serif;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--text-dim);
    opacity: 0.7;
}
.path-node.completed .path-node-status {
    color: var(--success);
}
.path-node.current .path-node-status {
    color: var(--gold-warm);
    opacity: 1;
}

/* Path milestone — Wax seal checkpoint */
.path-milestone {
    position: relative;
    z-index: 1;
    text-align: center;
    padding: 2rem;
    margin: 3rem auto;
    max-width: 400px;
    background: rgba(42, 33, 24, 0.4);
    border: 2px dashed rgba(184, 134, 11, 0.2);
    border-radius: 2px;
}

.path-milestone.unlocked {
    border-style: solid;
    border-color: var(--gold-ancient);
    /* REAL parchment for unlocked milestones */
    background:
        linear-gradient(135deg, rgba(42, 33, 24, 0.5), rgba(184, 134, 11, 0.08)),
        url('../../assets/textures/parchment-light.jpg');
    background-size: auto, cover;
    background-position: center, center;
    box-shadow: 0 0 25px rgba(184, 134, 11, 0.15);
}

.milestone-icon {
    font-size: 3rem;
    margin-bottom: 0.75rem;
}

.path-milestone h3 {
    font-family: 'Cinzel', serif;
    color: var(--gold-warm);
    font-size: 1.2rem;
    margin-bottom: 0.5rem;
    letter-spacing: 0.05em;
}

.path-milestone p {
    color: var(--text-dim);
    font-family: 'IM Fell English', serif;
    font-style: italic;
    font-size: 1.05rem;
}

/* Mobile responsiveness for path */
@media (max-width: 768px) {
    .path-map {
        padding: 1rem 0;
    }

    .path-node {
        max-width: 100%;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    .path-trail {
        left: 30px;
    }

    .path-node.left, .path-node.right {
        padding-left: 70px;
    }

    .path-node-icon {
        position: absolute;
        left: 10px;
        top: 50%;
        transform: translateY(-50%);
    }
}

@media (max-width: 480px) {
    .path-header h1 {
        font-size: 1.6rem;
    }

    .path-node {
        padding: 1rem;
        padding-left: 70px;
    }

    .milestone-icon {
        font-size: 2.5rem;
    }
}

/* Fade in animation */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}
.fade-in {
    animation: fadeIn 0.5s ease forwards;
}

/* ===== SPELL BOOK — The Grimoire ===== */
.spell-filters {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 2rem;
    flex-wrap: wrap;
}
.spell-filters select,
.spell-filters input {
    flex: 1;
    min-width: 180px;
    padding: 0.75rem 1rem;
    background: rgba(42, 33, 24, 0.5);
    border: 1px solid var(--card-border);
    border-radius: 2px;
    color: var(--text-on-dark);
    font-family: 'IM Fell English', serif;
    font-size: 0.9rem;
}
.spell-filters select:focus,
.spell-filters input:focus {
    outline: none;
    border-color: var(--gold-ancient);
    box-shadow: 0 0 10px rgba(184, 134, 11, 0.12);
}
.spell-filters select option {
    background: var(--parchment-deep);
    color: var(--text-on-dark);
}

.spells-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1.25rem;
}

/* Spell cards — REAL photographed aged parchment pages */
.spell-card {
    /* REAL parchment photograph + dark overlay for readability */
    background:
        linear-gradient(145deg, rgba(42, 33, 24, 0.65) 0%, rgba(26, 20, 16, 0.72) 100%),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--card-border);
    border-radius: 2px;
    padding: 1.5rem;
    cursor: pointer;
    transition: all 0.3s ease;
    position: relative;
    /* Aged paper shadow */
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

/* REAL corner ornament illustration */
.spell-card::before {
    content: '';
    position: absolute;
    top: 6px;
    right: 8px;
    width: 32px;
    height: 32px;
    background-image: url('../../assets/decorative/corner-ornament.svg');
    background-size: contain;
    background-repeat: no-repeat;
    opacity: 0.4;
    transition: opacity 0.3s;
    transform: rotate(90deg);
}

.spell-card:hover {
    border-color: var(--gold-ancient);
    /* Brighter parchment on hover — less dark overlay */
    background:
        linear-gradient(145deg, rgba(42, 33, 24, 0.55) 0%, rgba(184, 134, 11, 0.06) 100%),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.35), 0 0 15px rgba(184, 134, 11, 0.1);
}
.spell-card:hover::before { opacity: 0.8; }

.spell-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 0.75rem;
    gap: 0.75rem;
}
.spell-card-header h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.1rem;
    line-height: 1.3;
    flex: 1;
    font-weight: 500;
    letter-spacing: 0.02em;
}

.spell-difficulty {
    padding: 0.2rem 0.65rem;
    border-radius: 1px;
    font-family: 'Cinzel', serif;
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    white-space: nowrap;
    border: 1px solid;
}

.spell-meta {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 1rem;
    font-size: 0.85rem;
    color: var(--text-dim);
    flex-wrap: wrap;
}

.spell-ingredients {
    font-size: 0.9rem;
    color: var(--text-dim);
    margin-bottom: 1rem;
}
.spell-ingredients strong {
    color: var(--text-heading);
}

.spell-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 1rem;
    border-top: 1px solid var(--card-border);
    font-size: 0.85rem;
    color: var(--text-dim);
}

.spell-view-btn {
    color: var(--gold-warm);
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    letter-spacing: 0.04em;
    font-weight: 500;
}
.spell-card:hover .spell-view-btn {
    text-decoration: underline;
}

/* Spell Detail Page — Full grimoire page */
.spell-detail {
    max-width: 800px;
    margin: 0 auto;
}

.spell-hero {
    text-align: center;
    margin-bottom: 3rem;
}
.spell-hero h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 2.2rem;
    margin: 1rem 0;
    font-weight: 400;
    letter-spacing: 0.04em;
}

.spell-meta-row {
    display: flex;
    gap: 0.75rem;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 1rem;
}

.spell-badge {
    padding: 0.4rem 0.9rem;
    background: rgba(42, 33, 24, 0.6);
    border: 1px solid var(--card-border);
    border-radius: 1px;
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    letter-spacing: 0.03em;
    color: var(--text-on-dark);
}

/* Spell content area — The actual grimoire page with REAL parchment */
.spell-content {
    background:
        linear-gradient(145deg, rgba(42, 33, 24, 0.6) 0%, rgba(26, 20, 16, 0.65) 100%),
        url('../../assets/textures/parchment-light.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--border-ornate);
    border-radius: 2px;
    padding: 2.5rem;
    position: relative;
    box-shadow:
        0 4px 20px rgba(0, 0, 0, 0.35),
        inset 0 0 40px rgba(184, 134, 11, 0.03);
}

/* Top & bottom ornamental rules */
.spell-content::before,
.spell-content::after {
    content: '\2500\2500 \2726 \2500\2500';
    display: block;
    text-align: center;
    color: var(--gold-dim);
    font-size: 0.65rem;
    opacity: 0.5;
    letter-spacing: 0.2em;
}
.spell-content::before { margin-bottom: 1.5rem; }
.spell-content::after { margin-top: 1.5rem; }

.spell-section {
    margin-bottom: 2.5rem;
}
.spell-section:last-of-type {
    margin-bottom: 2rem;
}
.spell-section h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.2rem;
    margin-bottom: 1rem;
    color: var(--gold-warm);
    letter-spacing: 0.04em;
    position: relative;
    padding-bottom: 0.5rem;
}
.spell-section h3::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 50px;
    height: 1px;
    background: linear-gradient(90deg, var(--gold-dim), transparent);
}

.spell-section ul {
    list-style: none;
    padding: 0;
}
.spell-section ul li {
    padding: 0.5rem 0;
    padding-left: 1.5rem;
    position: relative;
}
.spell-section ul li::before {
    content: '\2726';
    position: absolute;
    left: 0;
    color: var(--gold-dim);
    font-size: 0.7rem;
}

/* Spell intention — calligraphic highlight */
.spell-intention {
    font-family: 'IM Fell English', serif;
    font-style: italic;
    font-size: 1.25rem;
    color: var(--parchment-cream);
    text-align: center;
    padding: 1.5rem;
    background: rgba(184, 134, 11, 0.06);
    border-left: 3px solid var(--gold-ancient);
    border-radius: 0 2px 2px 0;
    margin: 0.5rem 0;
}

.spell-instructions {
    line-height: 1.85;
}
.spell-instructions h1 {
    font-family: 'Cinzel Decorative', 'Cinzel', serif;
    font-size: 1.6rem;
    margin-bottom: 0.75rem;
    font-weight: 400;
}
.spell-instructions h2 {
    font-family: 'Cinzel', serif;
    font-size: 1.35rem;
    margin: 1.5rem 0 0.75rem;
    color: var(--gold-warm);
}
.spell-instructions p {
    margin-bottom: 1rem;
}
.spell-instructions strong {
    color: var(--text-heading);
}

.spell-actions {
    display: flex;
    gap: 1rem;
    justify-content: center;
    margin-top: 2rem;
    flex-wrap: wrap;
}

@media (max-width: 768px) {
    .spell-filters {
        flex-direction: column;
    }
    .spell-filters select,
    .spell-filters input {
        min-width: 100%;
    }
    .spells-grid {
        grid-template-columns: 1fr;
    }
    .spell-content {
        padding: 1.5rem;
    }
    .spell-hero h1 {
        font-size: 1.6rem;
    }
    .spell-intention {
        font-size: 1.05rem;
    }
}

/* ===== ATMOSPHERIC EFFECTS ===== */

/* Smoke wisps animation (subtle) */
@keyframes smokeRise {
    0% {
        opacity: 0;
        transform: translateY(0) scaleX(1);
    }
    30% {
        opacity: 0.03;
    }
    70% {
        opacity: 0.015;
    }
    100% {
        opacity: 0;
        transform: translateY(-120px) scaleX(1.5);
    }
}

/* Gentle page-turn feel on view transitions */
@keyframes pageReveal {
    from {
        opacity: 0;
        transform: perspective(800px) rotateY(-2deg);
    }
    to {
        opacity: 1;
        transform: perspective(800px) rotateY(0deg);
    }
}

.fade-in {
    animation: pageReveal 0.6s ease forwards;
}

/* Ornate horizontal rule utility — REAL divider illustration */
.ornate-rule {
    width: 200px;
    height: 30px;
    margin: 2rem auto;
    background-image: url('../../assets/decorative/ornate-divider.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.5;
}

/* Parchment card utility — REAL photographed paper texture */
.parchment-card {
    background:
        linear-gradient(145deg, rgba(42, 33, 24, 0.65) 0%, rgba(26, 20, 16, 0.72) 100%),
        url('../../assets/textures/parchment-card.jpg');
    background-size: auto, cover;
    background-position: center, center;
    border: 1px solid var(--border-ornate);
    border-radius: 2px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.25), inset 0 0 30px rgba(184, 134, 11, 0.03);
}

/* ===== SELECTION STYLES FOR GRIMOIRE ===== */
select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c4a265' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.7rem center;
    background-size: 1rem;
    padding-right: 2.5rem !important;
}

/* ===== DECORATIVE ILLUSTRATION UTILITIES ===== */

/* Botanical herb illustration */
.botanical-herb {
    width: 60px;
    height: 90px;
    background-image: url('../../assets/illustrations/herb-botanical.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.6;
    display: inline-block;
}

/* Pentacle symbol */
.pentacle-symbol {
    width: 50px;
    height: 50px;
    background-image: url('../../assets/illustrations/pentacle.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.5;
    display: inline-block;
}

/* Crystal illustration */
.crystal-illustration {
    width: 40px;
    height: 60px;
    background-image: url('../../assets/illustrations/crystal.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.6;
    display: inline-block;
}

/* Cauldron illustration */
.cauldron-illustration {
    width: 70px;
    height: 70px;
    background-image: url('../../assets/illustrations/cauldron.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.6;
    display: inline-block;
}

/* Candle flame decoration */
.candle-flame {
    width: 30px;
    height: 45px;
    background-image: url('../../assets/decorative/candle-flame.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.7;
    display: inline-block;
    animation: flameFlicker 2s ease-in-out infinite alternate;
}

@keyframes flameFlicker {
    0% { opacity: 0.6; transform: scale(1); }
    50% { opacity: 0.8; transform: scale(1.05); }
    100% { opacity: 0.7; transform: scale(1); }
}

/* Celtic knot decoration */
.celtic-knot {
    width: 40px;
    height: 40px;
    background-image: url('../../assets/decorative/celtic-knot.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.5;
    display: inline-block;
}

/* Wax seal stamp */
.wax-seal {
    width: 60px;
    height: 60px;
    background-image: url('../../assets/seals/wax-seal-crescent.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.8;
    display: inline-block;
}

/* Burnt edge overlays */
.burnt-edge-top {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 80px;
    background-image: url('../../assets/overlays/burnt-edge-top.png');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: top;
    pointer-events: none;
    z-index: 1;
    opacity: 0.3;
}

.burnt-edge-bottom {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 80px;
    background-image: url('../../assets/overlays/burnt-edge-bottom.png');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    pointer-events: none;
    z-index: 1;
    opacity: 0.3;
    transform: rotate(180deg);
}

/* Corner ornament decorations */
.corner-ornaments {
    position: relative;
}

.corner-ornaments::before,
.corner-ornaments::after {
    content: '';
    position: absolute;
    width: 50px;
    height: 50px;
    background-image: url('../../assets/decorative/corner-ornament.svg');
    background-size: contain;
    background-repeat: no-repeat;
    opacity: 0.5;
    pointer-events: none;
}

.corner-ornaments::before {
    top: 10px;
    left: 10px;
    transform: rotate(0deg);
}

.corner-ornaments::after {
    bottom: 10px;
    right: 10px;
    transform: rotate(180deg);
}

/* Page decorative header */
.page-decorative-header {
    text-align: center;
    margin-bottom: 2rem;
}

.page-decorative-header::before {
    content: '';
    display: block;
    width: 250px;
    height: 30px;
    margin: 0 auto 1rem auto;
    background-image: url('../../assets/decorative/ornate-divider.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.6;
}

/* Ingredient illustration accent (for spell pages) */
.spell-ingredient-illustration {
    float: left;
    margin: 0 1rem 1rem 0;
    width: 80px;
    height: 120px;
    background-image: url('../../assets/illustrations/herb-botanical.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.4;
}

/* Moon phase illustration accent */
.moon-phase-decoration {
    display: inline-block;
    width: 120px;
    height: 120px;
    background-image: url('../../assets/illustrations/moon-celestial.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.7;
    filter: drop-shadow(0 0 15px rgba(184, 134, 11, 0.3));
}
