/* ==========================================
   layer-2.wiki — Digital Encyclopedic Codex
   Terracotta Warm Palette | Humanist Typography
   ========================================== */

/* CSS Custom Properties */
:root {
    --parchment-cream: #f2e6d0;
    --travertine-light: #e8dac4;
    --burnt-umber: #3d2b1f;
    --terracotta: #c46a3a;
    --raw-sienna: #a67b4f;
    --ochre-gold: #d4a24e;
    --walnut-brown: #2a1f14;
    --warm-gray: #b8a89a;

    --font-display: 'Cormorant Garamond', 'Georgia', serif;
    --font-body: 'Source Serif 4', 'Georgia', serif;
    --font-accent: 'Alegreya Sans', 'Helvetica Neue', sans-serif;

    --max-content-width: 1200px;
    --primary-column: 660px;
    --margin-zone: 240px;
    --baseline: 28px;
}

/* Reset & Base */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    font-size: 18px;
    line-height: 1.556;
}

body {
    font-family: var(--font-body);
    color: var(--burnt-umber);
    background-color: var(--parchment-cream);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
}

/* Marble Veining Overlay */
.marble-filter-svg {
    position: absolute;
    width: 0;
    height: 0;
}

.marble-vein-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 0;
    opacity: 0.3;
    background:
        repeating-linear-gradient(
            105deg,
            transparent,
            transparent 80px,
            rgba(184, 168, 154, 0.08) 80px,
            rgba(184, 168, 154, 0.08) 82px,
            transparent 82px,
            transparent 200px
        ),
        repeating-linear-gradient(
            75deg,
            transparent,
            transparent 120px,
            rgba(232, 218, 196, 0.12) 120px,
            rgba(232, 218, 196, 0.12) 123px,
            transparent 123px,
            transparent 300px
        ),
        repeating-linear-gradient(
            95deg,
            transparent,
            transparent 180px,
            rgba(184, 168, 154, 0.06) 180px,
            rgba(184, 168, 154, 0.06) 181px,
            transparent 181px,
            transparent 400px
        );
}

/* Folio Base Styles */
.folio {
    position: relative;
    z-index: 1;
    max-width: var(--max-content-width);
    margin: 0 auto;
    padding: 0 24px;
}

/* ==========================================
   FOLIO I — FRONTISPIECE
   ========================================== */
.folio-frontispiece {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 24px;
}

.frontispiece-frame {
    position: relative;
    text-align: center;
    padding: 80px 60px;
    max-width: 700px;
}

/* Egg-and-Dart Borders */
.egg-dart-border {
    position: absolute;
    background-color: transparent;
}

.egg-dart-top, .egg-dart-bottom {
    left: 0;
    right: 0;
    height: 16px;
    background: repeating-linear-gradient(
        90deg,
        transparent 0px,
        transparent 6px,
        var(--terracotta) 6px,
        var(--terracotta) 8px,
        transparent 8px,
        transparent 14px,
        var(--terracotta) 14px,
        var(--terracotta) 20px,
        transparent 20px,
        transparent 24px
    );
    opacity: 0;
    clip-path: inset(0 100% 0 0);
}

.egg-dart-top {
    top: 0;
}

.egg-dart-bottom {
    bottom: 0;
}

.egg-dart-left, .egg-dart-right {
    top: 16px;
    bottom: 16px;
    width: 16px;
    background: repeating-linear-gradient(
        180deg,
        transparent 0px,
        transparent 6px,
        var(--terracotta) 6px,
        var(--terracotta) 8px,
        transparent 8px,
        transparent 14px,
        var(--terracotta) 14px,
        var(--terracotta) 20px,
        transparent 20px,
        transparent 24px
    );
    opacity: 0;
    clip-path: inset(0 0 100% 0);
}

.egg-dart-left {
    left: 0;
}

.egg-dart-right {
    right: 0;
}

/* Border Animations */
.frontispiece-frame.revealed .egg-dart-top {
    opacity: 1;
    clip-path: inset(0 0% 0 0);
    transition: clip-path 2.4s cubic-bezier(0.25, 0.1, 0.25, 1.0) 0.6s, opacity 0.3s ease 0.6s;
}

.frontispiece-frame.revealed .egg-dart-right {
    opacity: 1;
    clip-path: inset(0 0 0% 0);
    transition: clip-path 2.4s cubic-bezier(0.25, 0.1, 0.25, 1.0) 1.2s, opacity 0.3s ease 1.2s;
}

.frontispiece-frame.revealed .egg-dart-bottom {
    opacity: 1;
    clip-path: inset(0 0% 0 0);
    transition: clip-path 2.4s cubic-bezier(0.25, 0.1, 0.25, 1.0) 1.8s, opacity 0.3s ease 1.8s;
}

.frontispiece-frame.revealed .egg-dart-left {
    opacity: 1;
    clip-path: inset(0% 0 0 0);
    transition: clip-path 2.4s cubic-bezier(0.25, 0.1, 0.25, 1.0) 2.4s, opacity 0.3s ease 2.4s;
}

.frontispiece-title {
    font-family: var(--font-display);
    font-size: clamp(36px, 8vw, 64px);
    font-weight: 600;
    font-variant: small-caps;
    letter-spacing: 0.08em;
    color: var(--burnt-umber);
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity 1.8s ease, transform 1.8s ease;
}

.frontispiece-frame.revealed .frontispiece-title {
    opacity: 1;
    transform: translateY(0);
}

.dot-separator {
    color: var(--terracotta);
    margin: 0 0.05em;
}

.frontispiece-inscription {
    font-family: var(--font-display);
    font-size: clamp(16px, 2.5vw, 22px);
    font-style: italic;
    font-weight: 400;
    color: var(--raw-sienna);
    margin-top: 20px;
    letter-spacing: 0.04em;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 1.2s ease 1.2s, transform 1.2s ease 1.2s;
}

.frontispiece-frame.revealed .frontispiece-inscription {
    opacity: 1;
    transform: translateY(0);
}

.frontispiece-ornament {
    font-size: 28px;
    color: var(--terracotta);
    margin-top: 32px;
    opacity: 0;
    transition: opacity 1.5s ease 1.8s;
}

.frontispiece-frame.revealed .frontispiece-ornament {
    opacity: 1;
}

/* ==========================================
   FOLIO SEPARATORS
   ========================================== */
.folio-separator {
    max-width: var(--max-content-width);
    margin: 0 auto;
    padding: 40px 24px;
    position: relative;
    z-index: 1;
}

.meander-separator {
    width: 100%;
    height: 12px;
    opacity: 0.6;
}

/* ==========================================
   FOLIO II — THE ARCHITECTURE OF LAYERS
   ========================================== */
.folio-architecture {
    padding-top: 40px;
    padding-bottom: 60px;
}

.three-column-layout {
    display: grid;
    grid-template-columns: var(--margin-zone) 1fr var(--margin-zone);
    gap: 32px;
    max-width: var(--max-content-width);
    margin: 0 auto;
}

/* Folio Titles */
.folio-title {
    font-family: var(--font-display);
    font-size: clamp(28px, 4vw, 40px);
    font-weight: 600;
    font-variant: small-caps;
    letter-spacing: 0.08em;
    color: var(--burnt-umber);
    margin-bottom: var(--baseline);
    padding-bottom: 12px;
    border-bottom: 1px solid var(--warm-gray);
}

.centered-title {
    text-align: center;
    max-width: var(--max-content-width);
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 48px;
}

/* Primary Text Column */
.primary-text-column {
    grid-column: 2;
}

.body-text {
    font-family: var(--font-body);
    font-size: 18px;
    line-height: var(--baseline);
    color: var(--burnt-umber);
    margin-bottom: var(--baseline);
    text-align: justify;
    hyphens: auto;
}

/* Drop Cap */
.drop-cap::first-letter {
    font-family: var(--font-display);
    font-size: 72px;
    font-weight: 600;
    color: var(--terracotta);
    float: left;
    line-height: 0.8;
    margin-right: 12px;
    margin-top: 6px;
    padding-right: 4px;
}

/* Margin Columns */
.margin-left {
    grid-column: 1;
    grid-row: 1;
}

.margin-right {
    grid-column: 3;
    grid-row: 1;
}

.margin-note {
    margin-bottom: 24px;
    padding: 16px;
    position: relative;
}

.definition-callout {
    background: var(--travertine-light);
    border: 1px solid var(--terracotta);
    border-radius: 2px;
}

.cross-reference {
    border-left: 2px solid var(--warm-gray);
    padding-left: 14px;
}

.marginal-flourish {
    font-size: 18px;
    color: var(--raw-sienna);
    display: block;
    margin-bottom: 6px;
}

.definition-term {
    font-family: var(--font-accent);
    font-size: 13px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--terracotta);
    margin-bottom: 6px;
}

.definition-text {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 22px;
    color: var(--burnt-umber);
}

.annotation-text {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 22px;
    font-style: italic;
    color: var(--raw-sienna);
}

.annotation-text em {
    font-weight: 600;
    font-style: normal;
    color: var(--terracotta);
}

/* ==========================================
   FOLIO III — THE TAXONOMY
   ========================================== */
.folio-taxonomy {
    padding-top: 40px;
    padding-bottom: 60px;
}

.taxonomy-tree {
    position: relative;
    width: 100%;
    max-width: 1000px;
    height: 520px;
    margin: 0 auto;
}

.tree-connectors {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
}

.tree-line, .tree-line-secondary, .tree-line-tertiary {
    fill: none;
    stroke: var(--terracotta);
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-dasharray: 300;
    stroke-dashoffset: 300;
    transition: stroke-width 0.3s ease;
}

.tree-line-secondary {
    stroke-width: 1.2;
}

.tree-line-tertiary {
    stroke-width: 1;
    stroke: var(--warm-gray);
}

.taxonomy-tree.revealed .tree-line {
    stroke-dashoffset: 0;
    transition: stroke-dashoffset 1.5s cubic-bezier(0.25, 0.1, 0.25, 1.0);
}

.taxonomy-tree.revealed .tree-line-secondary {
    stroke-dashoffset: 0;
    transition: stroke-dashoffset 1.2s cubic-bezier(0.25, 0.1, 0.25, 1.0) 0.5s;
}

.taxonomy-tree.revealed .tree-line-tertiary {
    stroke-dashoffset: 0;
    transition: stroke-dashoffset 1s cubic-bezier(0.25, 0.1, 0.25, 1.0) 1s;
}

/* Tree Nodes */
.tree-node {
    position: absolute;
    transform: translate(-50%, -50%);
    text-align: center;
    z-index: 2;
    opacity: 0;
    transition: opacity 0.6s ease;
}

.taxonomy-tree.revealed .tree-node {
    opacity: 1;
}

.taxonomy-tree.revealed .tree-node[data-tier='0'] {
    transition-delay: 0s;
}

.taxonomy-tree.revealed .tree-node[data-tier='1'] {
    transition-delay: 0.4s;
}

.taxonomy-tree.revealed .tree-node[data-tier='2'] {
    transition-delay: 0.8s;
}

.taxonomy-tree.revealed .tree-node[data-tier='3'] {
    transition-delay: 1.2s;
}

.tree-root {
    left: 50%;
    top: 35px;
}

.tree-node .node-label {
    display: block;
    font-family: var(--font-display);
    font-size: 14px;
    font-weight: 600;
    font-variant: small-caps;
    letter-spacing: 0.06em;
    color: var(--burnt-umber);
    white-space: nowrap;
}

.tree-node .node-desc {
    display: block;
    font-family: var(--font-accent);
    font-size: 10px;
    color: var(--raw-sienna);
    white-space: nowrap;
    margin-top: 2px;
}

.tree-root .node-label {
    font-size: 18px;
}

.tree-node::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 48px;
    height: 48px;
    border-radius: 50%;
    border: 2px solid var(--ochre-gold);
    background: var(--travertine-light);
    z-index: -1;
    transition: border-color 0.3s ease, border-width 0.3s ease;
}

.tree-root::before {
    width: 60px;
    height: 60px;
}

.tree-primary::before {
    width: 56px;
    height: 56px;
}

.tree-secondary::before {
    width: 44px;
    height: 44px;
    border-width: 1.5px;
}

.tree-tertiary::before {
    width: 38px;
    height: 38px;
    border-width: 1px;
    border-color: var(--warm-gray);
}

.tree-node:hover::before {
    border-color: var(--terracotta);
    border-width: 2.5px;
}

/* Adjust node padding for circles */
.tree-node {
    padding: 14px 8px;
    min-width: 60px;
}

.tree-root {
    padding: 18px 12px;
}

/* Mobile taxonomy list */
.taxonomy-list-mobile {
    display: none;
    max-width: 600px;
    margin: 0 auto;
}

.taxonomy-item {
    margin-bottom: 16px;
}

.taxonomy-root-item h3 {
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 600;
    font-variant: small-caps;
    letter-spacing: 0.06em;
    color: var(--burnt-umber);
    text-align: center;
    margin-bottom: 24px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--warm-gray);
}

.taxonomy-l1 {
    padding: 16px;
    background: var(--travertine-light);
    border-left: 3px solid var(--terracotta);
    margin-bottom: 20px;
}

.taxonomy-l1 > h4 {
    font-family: var(--font-display);
    font-size: 20px;
    font-weight: 600;
    font-variant: small-caps;
    letter-spacing: 0.06em;
    color: var(--burnt-umber);
    margin-bottom: 4px;
}

.taxonomy-l1 > p {
    font-family: var(--font-body);
    font-size: 15px;
    color: var(--raw-sienna);
    margin-bottom: 12px;
}

.taxonomy-l2 {
    padding: 10px 12px;
    margin-left: 16px;
    border-left: 2px solid var(--ochre-gold);
    margin-bottom: 8px;
}

.taxonomy-l2 h5 {
    font-family: var(--font-accent);
    font-size: 14px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--terracotta);
    margin-bottom: 2px;
}

.taxonomy-l2 p {
    font-family: var(--font-body);
    font-size: 14px;
    color: var(--burnt-umber);
}

/* ==========================================
   FOLIO IV — THE MECHANISM
   ========================================== */
.folio-mechanism {
    padding-top: 40px;
    padding-bottom: 60px;
}

.plates-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
    max-width: 900px;
    margin: 0 auto;
}

.plate {
    background: rgba(232, 218, 196, 0.9);
    border: 1px solid var(--warm-gray);
    padding: 32px 28px;
    position: relative;
    box-shadow: 0 4px 16px rgba(42, 31, 20, 0.08);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.plate:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(42, 31, 20, 0.12);
}

.plate-offset {
    margin-top: 40px;
}

.plate-meander-top, .plate-meander-bottom {
    height: 8px;
    background: repeating-linear-gradient(
        90deg,
        transparent 0px,
        transparent 4px,
        var(--warm-gray) 4px,
        var(--warm-gray) 8px,
        transparent 8px,
        transparent 12px,
        var(--warm-gray) 12px,
        var(--warm-gray) 16px,
        transparent 16px,
        transparent 24px,
        var(--warm-gray) 24px,
        var(--warm-gray) 28px,
        transparent 28px,
        transparent 32px,
        var(--warm-gray) 32px,
        var(--warm-gray) 36px,
        transparent 36px,
        transparent 40px
    );
    opacity: 0.5;
    margin-bottom: 16px;
}

.plate-meander-bottom {
    margin-bottom: 0;
    margin-top: 16px;
}

.plate-heading {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 600;
    font-variant: small-caps;
    letter-spacing: 0.06em;
    color: var(--burnt-umber);
    text-align: center;
    margin-bottom: 16px;
}

.plate-body {
    font-family: var(--font-body);
    font-size: 16px;
    line-height: 26px;
    color: var(--burnt-umber);
    text-align: justify;
    hyphens: auto;
}

/* ==========================================
   FOLIO V — COLOPHON
   ========================================== */
.folio-colophon {
    padding-top: 60px;
    padding-bottom: 80px;
    min-height: 60vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.colophon-content {
    text-align: center;
    max-width: 500px;
}

.colophon-ornament {
    font-size: 32px;
    color: var(--terracotta);
    margin-bottom: 24px;
}

.colophon-title {
    font-family: var(--font-display);
    font-size: clamp(28px, 5vw, 42px);
    font-weight: 600;
    font-variant: small-caps;
    letter-spacing: 0.08em;
    color: var(--burnt-umber);
    margin-bottom: 16px;
}

.colophon-inscription {
    font-family: var(--font-accent);
    font-size: 14px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--raw-sienna);
    margin-bottom: 16px;
}

.colophon-subtitle {
    font-family: var(--font-display);
    font-size: 18px;
    font-style: italic;
    font-weight: 400;
    color: var(--burnt-umber);
    line-height: 1.6;
    margin-bottom: 32px;
}

.colophon-tailpiece {
    margin-bottom: 24px;
}

.colophon-finis {
    font-family: var(--font-accent);
    font-size: 12px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    color: var(--warm-gray);
}

/* ==========================================
   STAGGER ANIMATION CLASSES
   ========================================== */
.stagger-hidden {
    opacity: 0;
    transform: translateY(16px);
}

.stagger-hidden[data-stagger='gloss-left'] {
    transform: translateX(-20px);
}

.stagger-hidden[data-stagger='gloss-right'] {
    transform: translateX(20px);
}

.stagger-visible {
    opacity: 1;
    transform: translateY(0) translateX(0);
    transition: opacity 0.6s cubic-bezier(0.25, 0.1, 0.25, 1.0),
                transform 0.6s cubic-bezier(0.25, 0.1, 0.25, 1.0);
}

/* Drop Cap Animation */
.drop-cap-animate::first-letter {
    transition: transform 0.5s ease;
}

/* ==========================================
   RESPONSIVE DESIGN
   ========================================== */
@media (max-width: 1200px) {
    .three-column-layout {
        grid-template-columns: 1fr;
        gap: 24px;
        max-width: 90%;
    }

    .margin-left, .margin-right {
        grid-column: 1;
    }

    .margin-left {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
        order: 2;
    }

    .primary-text-column {
        grid-column: 1;
        order: 1;
    }

    .margin-right {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
        order: 3;
    }
}

@media (max-width: 768px) {
    html {
        font-size: 16px;
    }

    .folio {
        padding: 0 16px;
    }

    .three-column-layout {
        max-width: 100%;
    }

    .margin-left, .margin-right {
        grid-template-columns: 1fr;
    }

    .taxonomy-tree {
        display: none;
    }

    .taxonomy-list-mobile {
        display: block;
    }

    .plates-grid {
        grid-template-columns: 1fr;
    }

    .plate-offset {
        margin-top: 0;
    }

    .frontispiece-frame {
        padding: 40px 24px;
    }
}

@media (max-width: 480px) {
    .drop-cap::first-letter {
        font-size: 48px;
    }

    .frontispiece-title {
        font-size: 32px;
    }

    .folio-title {
        font-size: 24px;
    }

    .body-text {
        font-size: 16px;
        line-height: 24px;
        text-align: left;
    }
}
