/* =============================================================
   lordly.dev v2 — Renaissance Codex
   Vertical leaf-by-leaf procession in velvet, wine, sapphire,
   forest, and parchment. Foliate marginalia, banderoles, seals.
   ============================================================= */

/* ---------- Tokens ---------- */
:root {
    /* Palette — jewel tones with parchment counterpoint */
    --velvet:        #1a0a2a;
    --wine:          #3a0a1a;
    --sapphire:      #0a1a3a;
    --forest:        #0a2a1a;
    --parchment:     #e8d8b0;

    --gold:          #c89b3c;
    --gilt:          #f0d070;
    --gold-deep:     #8a6920;

    --carmine:       #8a1a2a;
    --carmine-bright:#b03050;
    --iris:          #4a2a6a;
    --foliate:       #2a5a3a;

    --aged-ink:      #2a1a0a;
    --text-cream:    #e8d8b0;
    --text-cream-dim:#b8a880;

    /* Type */
    --font-display: "Cinzel", "Playfair Display", Georgia, serif;
    --font-body:    "Playfair Display", Georgia, serif;
    --font-italic:  "Cormorant Garamond", "Playfair Display", Georgia, serif;
    --font-mono:    "JetBrains Mono", "Fira Mono", Consolas, monospace;

    --pad-leaf: clamp(32px, 5vw, 96px);
}

/* ---------- Reset & base ---------- */
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html, body {
    background: var(--velvet);
    color: var(--text-cream);
    font-family: var(--font-body);
    font-size: clamp(15px, 1.4vw, 18px);
    line-height: 1.75;
    overflow-x: hidden;
    scroll-behavior: smooth;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    min-height: 100vh;
}

/* ---------- Progress ribbon (right edge) ---------- */
#progress-ribbon {
    position: fixed;
    top: 0;
    right: 6px;
    width: 2px;
    height: 100vh;
    background: rgba(200, 155, 60, 0.12);
    z-index: 100;
    pointer-events: none;
}

#progress-fill {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 0;
    background: linear-gradient(180deg, var(--gilt), var(--gold), var(--gold-deep));
    box-shadow: 0 0 6px rgba(240, 208, 112, 0.45);
    transform: translateZ(0);
    will-change: height;
}

/* ---------- Marginalia (foliate vines) ---------- */
.marginalia {
    position: fixed;
    top: 0;
    width: 70px;
    height: 100vh;
    pointer-events: none;
    z-index: 5;
    opacity: 0;
    transition: opacity 1200ms ease;
}

.marginalia.visible {
    opacity: 0.55;
}

.marginalia-left  { left: 0; }
.marginalia-right { right: 18px; transform: scaleX(-1); }

.vine-svg {
    width: 100%;
    height: 100%;
    will-change: transform;
}

.vine-stem {
    fill: none;
    stroke: var(--gold);
    stroke-width: 1.4;
    stroke-linecap: round;
    opacity: 0.85;
}

.vine-leaves .leaf {
    fill: var(--foliate);
    stroke: var(--gold);
    stroke-width: 0.6;
    opacity: 0.9;
}

.vine-leaves .berry {
    fill: var(--carmine);
    stroke: var(--gold);
    stroke-width: 0.5;
}

/* ---------- Codex container ---------- */
#codex {
    position: relative;
    width: 100%;
    z-index: 1;
}

/* ---------- Leaf base ---------- */
.leaf {
    position: relative;
    min-height: 100vh;
    width: 100%;
    padding: var(--pad-leaf);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    transform: translateZ(0);
    backface-visibility: hidden;
}

.leaf-velvet     { background: var(--velvet);    color: var(--text-cream); }
.leaf-wine       { background: var(--wine);      color: var(--text-cream); }
.leaf-sapphire   { background: var(--sapphire);  color: var(--text-cream); }
.leaf-forest     { background: var(--forest);    color: var(--text-cream); }
.leaf-parchment  { background: var(--parchment); color: var(--aged-ink); }

.leaf-inner {
    position: relative;
    width: 100%;
    max-width: 1200px;
    z-index: 3;
}

/* ---------- Guilloche background (faint interlaced curves) ---------- */
.guilloche-bg {
    position: absolute;
    inset: 0;
    z-index: 1;
    opacity: 0.06;
    pointer-events: none;
    background-image:
        repeating-radial-gradient(circle at 25% 30%, transparent 0 18px, var(--gold) 18px 19px, transparent 19px 38px),
        repeating-radial-gradient(circle at 75% 70%, transparent 0 22px, var(--gold) 22px 23px, transparent 23px 46px),
        repeating-linear-gradient(45deg, transparent 0 28px, rgba(200, 155, 60, 0.5) 28px 29px, transparent 29px 56px);
}

/* ---------- Folio marker ---------- */
.folio-marker {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 0.78em;
    letter-spacing: 0.32em;
    color: var(--gold);
    text-transform: uppercase;
    margin-bottom: clamp(20px, 3vh, 48px);
    border-top: 1px solid var(--gold-deep);
    border-bottom: 1px solid var(--gold-deep);
    padding: 6px 0;
    width: fit-content;
}

.folio-marker-light {
    color: var(--carmine);
    border-color: var(--carmine);
}

/* =============================================================
   LEAF I — Frontispiece
   ============================================================= */
.frontispiece {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(14px, 2.4vh, 28px);
}

.compass-rose {
    position: absolute;
    top: 50%;
    left: 50%;
    width: min(86vmin, 720px);
    height: min(86vmin, 720px);
    transform: translate(-50%, -50%) rotate(0deg);
    z-index: 2;
    opacity: 0;
    pointer-events: none;
    will-change: transform, opacity;
}

.compass-rose.lit {
    opacity: 0.1;
    transition: opacity 700ms ease-out;
}

.compass-svg {
    width: 100%;
    height: 100%;
}

.rose-petals path,
.rose-points polygon,
.rose-points-diag polygon {
    fill: var(--gold);
    stroke: var(--gilt);
    stroke-width: 0.6;
    opacity: 0.85;
}

.rose-points-diag polygon { opacity: 0.6; }

.rose-ring {
    fill: none;
    stroke: var(--gold);
    stroke-width: 0.8;
    opacity: 0.5;
}

.rose-center circle {
    fill: var(--carmine);
    stroke: var(--gilt);
    stroke-width: 0.6;
    opacity: 0.85;
}

.rose-center .rose-pip {
    fill: var(--gilt);
    opacity: 1;
}

.title-stack {
    position: relative;
    z-index: 4;
}

.hero-title {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: clamp(54px, 11vw, 148px);
    letter-spacing: 0.18em;
    color: var(--gold);
    text-shadow:
        0 0 24px rgba(240, 208, 112, 0.18),
        0 2px 0 rgba(0, 0, 0, 0.4);
    line-height: 1;
    margin: 0;
}

.hero-letter {
    display: inline-block;
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 600ms ease, transform 600ms cubic-bezier(0.2, 0.9, 0.3, 1.2);
}

.hero-letter.lit {
    opacity: 1;
    transform: translateY(0);
}

.banderole-hero {
    margin: clamp(10px, 1.6vh, 22px) auto 0;
    max-width: 520px;
    height: 90px;
    position: relative;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 700ms ease 600ms, transform 700ms ease 600ms;
}

.banderole-hero.lit {
    opacity: 1;
    transform: translateY(0);
}

.banderole-svg {
    width: 100%;
    height: 100%;
    display: block;
}

.banderole-path {
    fill: var(--gold);
    fill-opacity: 0.18;
    stroke: var(--gold);
    stroke-width: 1.3;
}

.banderole-secondary {
    fill: none;
    stroke: var(--gilt);
    stroke-width: 1;
    stroke-dasharray: 1600;
    stroke-dashoffset: 1600;
    transition: stroke-dashoffset 1100ms ease 700ms;
}

.banderole-hero.lit .banderole-secondary {
    stroke-dashoffset: 0;
}

.banderole-text {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-italic);
    font-style: italic;
    font-size: clamp(22px, 3.4vw, 38px);
    color: var(--gilt);
    letter-spacing: 0.06em;
}

.dropcap {
    font-family: var(--font-display);
    font-weight: 800;
    font-style: normal;
    color: var(--carmine-bright);
    font-size: 1.4em;
    line-height: 1;
    margin-right: 0.04em;
    padding: 0.04em 0.08em;
    background:
        linear-gradient(135deg, rgba(240, 208, 112, 0.18), rgba(200, 155, 60, 0));
    border: 1px solid var(--gold);
    border-radius: 2px;
    display: inline-block;
    text-shadow: 0 0 8px rgba(176, 48, 80, 0.5);
}

.dropcap-cream {
    color: var(--carmine);
    background: linear-gradient(135deg, rgba(200, 155, 60, 0.22), rgba(200, 155, 60, 0));
    border-color: var(--carmine);
    text-shadow: none;
}

.banderole-rest {
    margin-left: 4px;
}

.subtitle {
    font-family: var(--font-italic);
    font-style: italic;
    font-size: clamp(17px, 1.7vw, 22px);
    color: var(--text-cream);
    margin-top: clamp(8px, 1.2vh, 16px);
    letter-spacing: 0.04em;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 700ms ease 1200ms, transform 700ms ease 1200ms;
}

.subtitle.lit {
    opacity: 0.85;
    transform: translateY(0);
}

.hero-rule {
    width: clamp(220px, 32vw, 360px);
    height: 24px;
    margin: clamp(8px, 1.6vh, 18px) auto 0;
    opacity: 0;
    transition: opacity 700ms ease 1500ms;
}

.hero-rule.lit { opacity: 0.9; }

.rule-svg {
    width: 100%;
    height: 100%;
}

.rule-svg line {
    stroke: var(--gold);
    stroke-width: 1.2;
}

.rule-svg path {
    stroke: var(--gold);
    stroke-width: 1.2;
    fill: none;
}

.hero-meta {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 0.78em;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--gold-deep);
    margin-top: clamp(4px, 1vh, 12px);
    opacity: 0;
    transition: opacity 700ms ease 1700ms;
}

.hero-meta.lit { opacity: 0.9; }

.scroll-cue {
    position: absolute;
    bottom: clamp(24px, 5vh, 56px);
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    opacity: 0;
    z-index: 5;
    transition: opacity 800ms ease 1900ms;
}

.scroll-cue.lit {
    opacity: 0.85;
    animation: pulseCue 1.6s ease-in-out 2300ms infinite;
}

@keyframes pulseCue {
    0%, 100% { transform: translate(-50%, 0); opacity: 0.85; }
    50%      { transform: translate(-50%, 6px); opacity: 1; }
}

.fleur-cue {
    width: 30px;
    height: 44px;
}

.fleur-path {
    fill: var(--gold);
    stroke: var(--gilt);
    stroke-width: 0.6;
    opacity: 0.95;
}

.fleur-pip {
    fill: var(--carmine);
}

.cue-text {
    font-family: var(--font-display);
    font-size: 0.72em;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--gold);
}

/* =============================================================
   Common Leaf head (II–IV)
   ============================================================= */
.leaf-head {
    margin-bottom: clamp(28px, 4vh, 60px);
    text-align: left;
}

.leaf-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(36px, 5.6vw, 78px);
    letter-spacing: 0.10em;
    color: var(--gold);
    line-height: 1.05;
    display: flex;
    align-items: flex-start;
    gap: clamp(8px, 1.2vw, 16px);
    flex-wrap: wrap;
}

.title-cartouche {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: clamp(56px, 7vw, 96px);
    height: clamp(56px, 7vw, 96px);
    border: 2px solid var(--gold);
    background:
        radial-gradient(circle at 30% 30%, rgba(240, 208, 112, 0.22), rgba(200, 155, 60, 0) 70%),
        linear-gradient(135deg, rgba(200, 155, 60, 0.16), rgba(0, 0, 0, 0.2));
    box-shadow:
        inset 0 0 0 6px rgba(200, 155, 60, 0.18),
        0 0 0 6px rgba(200, 155, 60, 0.06);
    position: relative;
    transform: rotate(-2deg);
}

.title-cartouche::before,
.title-cartouche::after {
    content: "";
    position: absolute;
    width: 14px;
    height: 14px;
    border: 1.5px solid var(--gold);
    transform: rotate(45deg);
    background: rgba(200, 155, 60, 0.16);
}

.title-cartouche::before { top: -8px;    left: -8px; }
.title-cartouche::after  { bottom: -8px; right: -8px; }

.cartouche-letter {
    font-family: var(--font-display);
    font-weight: 900;
    font-size: clamp(34px, 4.4vw, 58px);
    color: var(--carmine-bright);
    line-height: 1;
}

.title-rest {
    color: var(--gold);
    align-self: center;
}

.leaf-lede {
    font-family: var(--font-italic);
    font-style: italic;
    font-size: clamp(16px, 1.6vw, 21px);
    color: var(--text-cream-dim);
    margin-top: clamp(10px, 1.4vh, 18px);
    letter-spacing: 0.02em;
}

/* =============================================================
   LEAF II — Atelier (cards)
   ============================================================= */
.atelier-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: clamp(20px, 2.4vw, 36px);
}

.manifest-card {
    position: relative;
    background:
        linear-gradient(160deg, #f0e0b8 0%, #e8d8a8 60%, #d8c890 100%);
    color: var(--aged-ink);
    padding: clamp(28px, 3vw, 44px) clamp(24px, 2.4vw, 36px) clamp(28px, 3vw, 40px);
    border: 2px solid var(--gold);
    box-shadow:
        inset 0 0 0 4px rgba(200, 155, 60, 0.18),
        0 8px 24px rgba(0, 0, 0, 0.45),
        0 2px 0 var(--gold-deep);
    transform: translateY(20px);
    opacity: 0;
    transition: transform 700ms cubic-bezier(0.2, 0.8, 0.3, 1.1), opacity 700ms ease, box-shadow 350ms ease, border-color 350ms ease;
    will-change: transform, opacity;
}

.manifest-card.lit {
    transform: translateY(0);
    opacity: 1;
}

.manifest-card:hover {
    border-color: var(--gilt);
    box-shadow:
        inset 0 0 0 4px rgba(240, 208, 112, 0.32),
        0 12px 30px rgba(0, 0, 0, 0.55),
        0 2px 0 var(--gold);
}

.manifest-card[data-card="1"] { transition-delay: 0ms; }
.manifest-card[data-card="2"] { transition-delay: 120ms; }
.manifest-card[data-card="3"] { transition-delay: 240ms; }

.card-corner {
    position: absolute;
    width: 22px;
    height: 22px;
    border: 2px solid var(--gold-deep);
}

.card-corner-tl { top: 6px;    left: 6px;    border-right: none;  border-bottom: none; }
.card-corner-tr { top: 6px;    right: 6px;   border-left: none;   border-bottom: none; }
.card-corner-bl { bottom: 6px; left: 6px;    border-right: none;  border-top: none;    }
.card-corner-br { bottom: 6px; right: 6px;   border-left: none;   border-top: none;    }

.wax-seal {
    position: absolute;
    top: -22px;
    right: -22px;
    width: 70px;
    height: 70px;
    transform: rotate(-12deg);
    transition: transform 350ms ease;
    filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.4));
}

.manifest-card:hover .wax-seal {
    transform: rotate(-8deg) scale(1.05);
}

.seal-svg {
    width: 100%;
    height: 100%;
}

.seal-outer {
    fill: var(--carmine);
    stroke: var(--gold);
    stroke-width: 2;
}

.seal-inner {
    fill: var(--carmine-bright);
    stroke: var(--gilt);
    stroke-width: 1;
    stroke-dasharray: 3 2;
}

.seal-rays line {
    stroke: var(--gilt);
    stroke-width: 1.4;
}

.seal-text {
    fill: var(--gilt);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 22px;
    letter-spacing: 0.08em;
}

.card-medallion {
    position: absolute;
    color: var(--carmine);
    font-size: 14px;
    line-height: 1;
    transition: transform 350ms ease, color 350ms ease;
}

.card-medallion-tl { top: 14px;    left: 14px;  }
.card-medallion-tr { top: 14px;    left: 50px;  }

.manifest-card:hover .card-medallion {
    transform: scale(1.18);
    color: var(--carmine-bright);
}

.card-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(22px, 2.4vw, 30px);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--carmine);
    margin: 18px 0 6px;
}

.card-rule {
    font-family: var(--font-italic);
    font-style: italic;
    font-size: 0.95em;
    color: var(--gold-deep);
    margin-bottom: 14px;
    border-bottom: 1px dashed var(--gold-deep);
    padding-bottom: 10px;
}

.card-body {
    color: var(--aged-ink);
    margin-bottom: 14px;
    font-size: 0.98em;
}

.card-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.card-list li {
    position: relative;
    padding-left: 22px;
    margin: 6px 0;
    color: var(--aged-ink);
    font-family: var(--font-italic);
    font-style: italic;
}

.card-list li::before {
    content: "\2766";
    position: absolute;
    left: 0;
    top: 0;
    color: var(--carmine);
    font-size: 1em;
}

/* =============================================================
   LEAF III — Cartulary (deed + tenets)
   ============================================================= */
.cartulary-row {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    gap: clamp(24px, 2.6vw, 44px);
    align-items: start;
}

@media (max-width: 920px) {
    .cartulary-row {
        grid-template-columns: 1fr;
    }
}

.deed-of-writ {
    position: relative;
}

.deed-frame {
    position: relative;
    background:
        linear-gradient(180deg, #f0e0b8 0%, #e0cca0 100%);
    border: 2px solid var(--gold);
    padding: clamp(20px, 2.4vw, 32px);
    box-shadow:
        inset 0 0 0 5px rgba(200, 155, 60, 0.18),
        0 6px 22px rgba(0, 0, 0, 0.45);
    color: var(--aged-ink);
    transform: translateY(16px);
    opacity: 0;
    transition: transform 800ms ease, opacity 800ms ease;
}

.deed-frame.lit {
    transform: translateY(0);
    opacity: 1;
}

.deed-corner {
    position: absolute;
    width: 18px;
    height: 18px;
    border: 2px solid var(--carmine);
}

.deed-corner-tl { top: 4px;    left: 4px;    border-right: none;  border-bottom: none; }
.deed-corner-tr { top: 4px;    right: 4px;   border-left: none;   border-bottom: none; }
.deed-corner-bl { bottom: 4px; left: 4px;    border-right: none;  border-top: none;    }
.deed-corner-br { bottom: 4px; right: 4px;   border-left: none;   border-top: none;    }

.deed-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    border-bottom: 1px solid var(--gold-deep);
    padding-bottom: 12px;
    margin-bottom: 16px;
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    font-size: 0.82em;
    color: var(--carmine);
}

.deed-marker {
    color: var(--carmine);
    font-size: 1.1em;
}

.deed-label em {
    color: var(--gold-deep);
    font-style: italic;
    text-transform: none;
    letter-spacing: 0.04em;
}

.deed-code {
    font-family: var(--font-mono);
    font-size: clamp(12px, 1.05vw, 14px);
    line-height: 1.7;
    color: var(--aged-ink);
    background: rgba(255, 245, 220, 0.4);
    border-left: 3px solid var(--gold);
    padding: 14px 16px;
    margin: 0;
    overflow-x: auto;
    white-space: pre;
}

.code-dropcap {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 2.4em;
    color: var(--carmine);
    line-height: 1;
    float: left;
    padding: 0 8px 0 0;
    margin: 6px 0 0 0;
}

.code-comment { color: var(--foliate); font-style: italic; }
.code-keyword { color: var(--carmine); font-weight: 700; }
.code-fn      { color: var(--iris);    font-weight: 600; }
.code-arg     { color: var(--gold-deep); }
.code-string  { color: var(--gold-deep); }

.deed-footer {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px dashed var(--gold-deep);
    font-family: var(--font-italic);
    font-style: italic;
    color: var(--gold-deep);
    font-size: 0.92em;
    display: flex;
    align-items: center;
    gap: 10px;
}

.deed-quill {
    color: var(--carmine);
    font-size: 1.2em;
}

.tenets-stack {
    display: flex;
    flex-direction: column;
    gap: clamp(18px, 2vh, 28px);
}

.tenet {
    position: relative;
    transform: translateX(20px);
    opacity: 0;
    transition: transform 700ms ease, opacity 700ms ease;
}

.tenet.lit {
    transform: translateX(0);
    opacity: 1;
}

.tenet[data-tenet="1"].lit { transition-delay: 0ms; }
.tenet[data-tenet="2"].lit { transition-delay: 140ms; }
.tenet[data-tenet="3"].lit { transition-delay: 280ms; }

.banderole-tenet {
    position: relative;
    width: 100%;
    height: 70px;
    margin-bottom: 8px;
}

.banderole-tenet .banderole-svg {
    width: 100%;
    height: 100%;
}

.banderole-tenet .banderole-path {
    fill: var(--gold);
    fill-opacity: 0.9;
    stroke: var(--gilt);
    stroke-width: 1;
    stroke-dasharray: 2400;
    stroke-dashoffset: 2400;
    transition: stroke-dashoffset 1100ms ease;
}

.tenet.lit .banderole-tenet .banderole-path {
    stroke-dashoffset: 0;
}

.banderole-text-tenet {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-display);
    font-weight: 700;
    color: var(--velvet);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    font-size: clamp(14px, 1.4vw, 18px);
    text-shadow: 0 1px 0 rgba(255, 235, 180, 0.4);
}

.tenet-body {
    display: flex;
    gap: 14px;
    padding: 14px 16px;
    background: rgba(10, 26, 58, 0.45);
    border-left: 3px solid var(--gold);
    border-right: 1px solid rgba(200, 155, 60, 0.3);
    backdrop-filter: blur(2px);
}

.tenet-rosette {
    color: var(--gilt);
    font-size: 1.4em;
    flex-shrink: 0;
    line-height: 1.4;
}

.tenet-body p {
    color: var(--text-cream);
    font-family: var(--font-body);
    font-size: clamp(14px, 1.2vw, 16px);
    line-height: 1.7;
    margin: 0;
}

/* =============================================================
   LEAF IV — Chancery (shields & crown)
   ============================================================= */
.chancery-arms {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    max-width: 980px;
    margin: 0 auto;
    display: grid;
    place-items: center;
}

@media (max-width: 720px) {
    .chancery-arms {
        aspect-ratio: auto;
        height: auto;
        grid-template-columns: repeat(2, 1fr);
        gap: 18px;
    }
}

.crown-center {
    position: absolute;
    width: 32%;
    max-width: 220px;
    aspect-ratio: 5 / 3;
    z-index: 5;
    opacity: 0;
    transform: translateY(8px) scale(0.92);
    transition: opacity 800ms ease, transform 800ms ease;
}

.crown-center.lit {
    opacity: 1;
    transform: translateY(0) scale(1);
}

@media (max-width: 720px) {
    .crown-center {
        position: static;
        grid-column: 1 / -1;
        margin: 0 auto;
    }
}

.crown-svg { width: 100%; height: 100%; }

.crown-base {
    fill: var(--gold);
    stroke: var(--gilt);
    stroke-width: 1;
}

.crown-band {
    fill: var(--gold);
    stroke: var(--gilt);
    stroke-width: 1.4;
    stroke-linejoin: miter;
}

.crown-jewel {
    fill: var(--carmine);
    stroke: var(--gilt);
    stroke-width: 0.8;
}

.crown-jewel-center {
    fill: var(--iris);
    stroke: var(--gilt);
    stroke-width: 1;
}

.shield {
    position: absolute;
    width: 18%;
    max-width: 170px;
    aspect-ratio: 3 / 4;
    transform: translateY(20px);
    opacity: 0;
    transition: transform 700ms ease, opacity 700ms ease;
}

.shield.lit {
    transform: translateY(0);
    opacity: 1;
}

.shield-n { top: 4%;     left: 50%; transform: translate(-50%, 20px); }
.shield-e { top: 50%;    right: 6%; transform: translate(0, -50%) translateX(20px); }
.shield-s { bottom: 4%;  left: 50%; transform: translate(-50%, -20px); }
.shield-w { top: 50%;    left: 6%;  transform: translate(0, -50%) translateX(-20px); }

.shield-n.lit { transform: translate(-50%, 0); }
.shield-e.lit { transform: translate(0, -50%) translateX(0); }
.shield-s.lit { transform: translate(-50%, 0); }
.shield-w.lit { transform: translate(0, -50%) translateX(0); }

@media (max-width: 720px) {
    .shield {
        position: static;
        width: 100%;
        max-width: 220px;
        margin: 0 auto;
        transform: translateY(20px);
    }
    .shield.lit { transform: translateY(0); }
}

.shield-svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    filter: drop-shadow(0 6px 12px rgba(0, 0, 0, 0.45));
}

.shield-shape {
    fill: var(--carmine);
    stroke: var(--gold);
    stroke-width: 2;
}

.shield-inner {
    fill: var(--wine);
    stroke: var(--gilt);
    stroke-width: 0.8;
    stroke-dasharray: 3 2;
}

.shield-content {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 22% 12% 24%;
    text-align: center;
    z-index: 2;
}

.shield-numeral {
    font-family: var(--font-display);
    font-weight: 800;
    color: var(--gilt);
    font-size: clamp(20px, 2.4vw, 32px);
    letter-spacing: 0.04em;
    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
    line-height: 1;
}

.shield-label {
    font-family: var(--font-italic);
    font-style: italic;
    color: var(--text-cream);
    font-size: clamp(11px, 1vw, 13px);
    letter-spacing: 0.06em;
    line-height: 1.2;
}

.shield-flourish {
    color: var(--gilt);
    font-size: 12px;
    margin-top: 4px;
}

.chancery-banderole {
    position: relative;
    margin-top: clamp(28px, 4vh, 56px);
    width: 100%;
    max-width: 720px;
    height: 90px;
    margin-left: auto;
    margin-right: auto;
}

.chancery-banderole .banderole-svg {
    width: 100%;
    height: 100%;
}

.chancery-banderole .banderole-path {
    fill: var(--gold);
    fill-opacity: 0.85;
    stroke: var(--gilt);
    stroke-width: 1;
}

.banderole-text-foot {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-italic);
    font-style: italic;
    color: var(--velvet);
    font-size: clamp(14px, 1.4vw, 18px);
    letter-spacing: 0.04em;
    text-shadow: 0 1px 0 rgba(255, 240, 200, 0.4);
}

/* =============================================================
   LEAF V — Colophon (parchment)
   ============================================================= */
.leaf-parchment {
    background:
        radial-gradient(ellipse at 20% 30%, rgba(200, 155, 60, 0.15) 0%, transparent 60%),
        radial-gradient(ellipse at 80% 70%, rgba(138, 26, 42, 0.10) 0%, transparent 60%),
        var(--parchment);
}

.parchment-fibers {
    position: absolute;
    inset: 0;
    z-index: 1;
    opacity: 0.18;
    pointer-events: none;
    background-image:
        repeating-linear-gradient(95deg, transparent 0 4px, rgba(120, 90, 50, 0.08) 4px 5px, transparent 5px 12px),
        repeating-linear-gradient(75deg, transparent 0 6px, rgba(120, 90, 50, 0.06) 6px 7px, transparent 7px 18px),
        radial-gradient(circle at 30% 30%, rgba(120, 90, 50, 0.08) 0%, transparent 40%),
        radial-gradient(circle at 70% 70%, rgba(120, 90, 50, 0.08) 0%, transparent 40%);
}

.colophon-frame {
    position: relative;
    max-width: 760px;
    margin: 0 auto;
    padding: clamp(40px, 5vw, 80px) clamp(28px, 4vw, 64px);
    border: 3px double var(--gold);
    box-shadow:
        inset 0 0 0 8px rgba(200, 155, 60, 0.12),
        inset 0 0 0 11px rgba(200, 155, 60, 0.05),
        0 6px 24px rgba(80, 60, 30, 0.3);
    text-align: center;
    background: rgba(255, 248, 220, 0.4);
}

.col-corner {
    position: absolute;
    color: var(--carmine);
    font-size: 22px;
    line-height: 1;
}

.col-corner-tl { top: 12px;    left: 14px;  }
.col-corner-tr { top: 12px;    right: 14px; }
.col-corner-bl { bottom: 12px; left: 14px;  }
.col-corner-br { bottom: 12px; right: 14px; }

.colophon-quatrefoil {
    width: clamp(120px, 16vw, 200px);
    height: clamp(120px, 16vw, 200px);
    margin: clamp(8px, 2vh, 22px) auto clamp(18px, 3vh, 32px);
    transform: scale(0.86);
    opacity: 0;
    transition: transform 800ms cubic-bezier(0.2, 0.8, 0.3, 1.2), opacity 800ms ease;
}

.colophon-quatrefoil.lit {
    transform: scale(1) rotate(0deg);
    opacity: 1;
}

.quatrefoil-svg {
    width: 100%;
    height: 100%;
}

.quatrefoil-leaves circle {
    fill: var(--gold);
    stroke: var(--gold-deep);
    stroke-width: 1;
    opacity: 0.92;
}

.quatrefoil-ring {
    fill: none;
    stroke: var(--carmine);
    stroke-width: 2;
}

.quatrefoil-ring-inner {
    stroke-dasharray: 4 3;
    stroke-width: 1;
}

.quatrefoil-text {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 22px;
    letter-spacing: 0.18em;
    fill: var(--carmine);
}

.colophon-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(28px, 3.6vw, 44px);
    letter-spacing: 0.08em;
    color: var(--carmine);
    margin-bottom: 16px;
}

.colophon-body {
    font-family: var(--font-body);
    color: var(--aged-ink);
    font-size: clamp(15px, 1.4vw, 18px);
    margin: 0 auto 20px;
    max-width: 60ch;
    text-align: left;
}

.colophon-body em {
    font-family: var(--font-italic);
    color: var(--gold-deep);
}

.colophon-body strong {
    font-family: var(--font-display);
    color: var(--carmine);
    font-weight: 700;
    letter-spacing: 0.06em;
}

.colophon-benediction {
    font-family: var(--font-italic);
    font-style: italic;
    color: var(--carmine);
    font-size: clamp(15px, 1.4vw, 19px);
    margin: 8px 0 18px;
}

.colophon-rule {
    width: 60%;
    height: 24px;
    margin: 6px auto 18px;
}

.colophon-rule .rule-svg line,
.colophon-rule .rule-svg path {
    stroke: var(--carmine);
}

.colophon-sigils {
    display: flex;
    justify-content: center;
    gap: clamp(14px, 2vw, 28px);
    margin: 14px 0 14px;
    color: var(--carmine);
    font-size: clamp(18px, 2vw, 26px);
}

.colophon-sigils .sigil:nth-child(odd) { color: var(--gold-deep); }

.colophon-imprint {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 0.78em;
    letter-spacing: 0.32em;
    color: var(--gold-deep);
    text-transform: uppercase;
    margin-top: 14px;
}

/* =============================================================
   Keyframes
   ============================================================= */
@keyframes vineDrift {
    0%   { transform: translateY(0); }
    50%  { transform: translateY(-8px); }
    100% { transform: translateY(0); }
}

@keyframes shimmer {
    0%, 100% { filter: brightness(1); }
    50%      { filter: brightness(1.2); }
}

@keyframes leafEnter {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes hueWine {
    from { background-color: var(--velvet); }
    to   { background-color: var(--wine); }
}

/* =============================================================
   Active leaf shimmer
   ============================================================= */
.leaf.active .compass-rose,
.leaf.active .quatrefoil-leaves circle {
    animation: shimmer 6s ease-in-out infinite;
}

/* =============================================================
   Reduced motion
   ============================================================= */
@media (prefers-reduced-motion: reduce) {
    * {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}
