/*
 * Every card style redefines the same token contract, so the card markup never
 * changes and each theme stays print-legible with a generous safe margin.
 */

[data-card-style] {
    --card-surface: #ede0c2;
    --card-surface-image: var(--parchment-image);
    --card-surface-blend: var(--parchment-blend);
    --card-overlay: none;
    --card-overlay-blend: multiply;
    --card-overlay-opacity: 1;

    --card-ink: #2b2016;
    --card-ink-soft: #5a4632;
    --card-ink-faint: #856a4d;
    --card-accent: #7b5a1f;
    --card-accent-soft: rgba(123, 90, 31, 0.16);
    --card-rule: rgba(80, 58, 34, 0.42);

    --card-edge-width: 0.4mm;
    --card-edge-colour: #7b5a1f;
    --card-edge-style: solid;
    --card-radius: 0;
    --card-inner-shadow: inset 0 0 5mm rgba(120, 88, 48, 0.26);

    --card-frame-inset: 2.2mm;
    --card-frame-width: 0.22mm;
    --card-frame-colour: rgba(80, 58, 34, 0.45);
    --card-frame-style: solid;
    --card-frame-radius: 0;

    --card-title-font: "Cinzel", Georgia, serif;
    --card-title-weight: 700;
    --card-title-transform: none;
    --card-title-spacing: 0.02em;
    --card-subtitle-font: "IM Fell English", Georgia, serif;
    --card-subtitle-style: italic;
    --card-body-font: "EB Garamond", Georgia, serif;
    --card-label-font: "IM Fell English", Georgia, serif;
    --card-label-transform: uppercase;
    --card-label-spacing: 0.08em;
}

/* ---------- 1. Parchment & Ink ---------- */

[data-card-style="parchment"] {
    --card-surface: #ede0c2;
}

/* ---------- 2. Illuminated Manuscript ---------- */

[data-card-style="illuminated"] {
    --card-surface: #f6efdc;
    --card-surface-image:
        radial-gradient(ellipse at 50% 0%, rgba(255, 252, 242, 0.9), transparent 60%),
        var(--grain);
    --card-surface-blend: screen, multiply;
    --card-ink: #2a2118;
    --card-ink-soft: #6a4a2c;
    --card-ink-faint: #96733f;
    --card-accent: #9d2226;
    --card-accent-soft: rgba(157, 34, 38, 0.12);
    --card-rule: rgba(157, 34, 38, 0.4);
    --card-edge-width: 0.8mm;
    --card-edge-colour: #9d2226;
    --card-frame-inset: 2.6mm;
    --card-frame-width: 0.5mm;
    --card-frame-colour: #1c4f86;
    --card-title-font: "Uncial Antiqua", "Cinzel", Georgia, serif;
    --card-title-weight: 400;
    --card-title-spacing: 0.01em;
    --card-subtitle-font: "EB Garamond", Georgia, serif;
    --card-label-font: "Cormorant Unicase", Georgia, serif;
    --card-label-spacing: 0.12em;
    --card-inner-shadow: inset 0 0 4mm rgba(157, 34, 38, 0.1);
}

/* ---------- 3. Arcane Grimoire ---------- */

[data-card-style="grimoire"] {
    --card-surface: #171a33;
    --card-surface-image:
        radial-gradient(circle at 22% 18%, rgba(126, 116, 214, 0.32), transparent 46%),
        radial-gradient(circle at 78% 82%, rgba(72, 62, 158, 0.34), transparent 44%),
        radial-gradient(circle at 12% 72%, rgba(214, 214, 255, 0.5) 0.4px, transparent 0.9px),
        radial-gradient(circle at 61% 24%, rgba(214, 214, 255, 0.45) 0.4px, transparent 0.9px),
        radial-gradient(circle at 86% 41%, rgba(214, 214, 255, 0.4) 0.4px, transparent 0.9px),
        radial-gradient(circle at 34% 88%, rgba(214, 214, 255, 0.4) 0.4px, transparent 0.9px);
    --card-surface-blend: screen, screen, normal, normal, normal, normal;
    --card-ink: #e6e4ff;
    --card-ink-soft: #b5b2e2;
    --card-ink-faint: #8b88bd;
    --card-accent: #b9a6ff;
    --card-accent-soft: rgba(185, 166, 255, 0.16);
    --card-rule: rgba(185, 166, 255, 0.4);
    --card-edge-width: 0.5mm;
    --card-edge-colour: #6f63c9;
    --card-frame-inset: 2.4mm;
    --card-frame-width: 0.2mm;
    --card-frame-colour: rgba(185, 166, 255, 0.4);
    --card-title-font: "Cinzel", Georgia, serif;
    --card-title-transform: uppercase;
    --card-title-spacing: 0.09em;
    --card-inner-shadow: inset 0 0 7mm rgba(9, 8, 26, 0.7);
}

/* ---------- 4. Celestial Radiance ---------- */

[data-card-style="celestial"] {
    --card-surface: #fdf8ea;
    --card-surface-image:
        repeating-conic-gradient(
            from 0deg at 50% -14%,
            rgba(214, 170, 74, 0.16) 0deg 3deg,
            transparent 3deg 9deg
        ),
        radial-gradient(ellipse at 50% -8%, rgba(255, 226, 158, 0.75), transparent 58%);
    --card-surface-blend: normal, screen;
    --card-ink: #3b2f1c;
    --card-ink-soft: #6e5730;
    --card-ink-faint: #9c8149;
    --card-accent: #b8860b;
    --card-accent-soft: rgba(184, 134, 11, 0.14);
    --card-rule: rgba(184, 134, 11, 0.44);
    --card-edge-width: 0.5mm;
    --card-edge-colour: #c79a2e;
    --card-frame-inset: 2.6mm;
    --card-frame-width: 0.2mm;
    --card-frame-colour: rgba(184, 134, 11, 0.5);
    --card-title-font: "Uncial Antiqua", "Cinzel", Georgia, serif;
    --card-title-weight: 400;
    --card-inner-shadow: inset 0 0 6mm rgba(214, 170, 74, 0.2);
}

/* ---------- 5. Elven Reverie ---------- */

[data-card-style="elven"] {
    --card-surface: #f2f6ee;
    --card-surface-image:
        radial-gradient(ellipse at 78% 8%, rgba(176, 208, 176, 0.4), transparent 52%),
        radial-gradient(ellipse at 14% 92%, rgba(198, 220, 198, 0.42), transparent 48%);
    --card-surface-blend: multiply, multiply;
    --card-ink: #26362a;
    --card-ink-soft: #4d6553;
    --card-ink-faint: #7e9484;
    --card-accent: #3f7a5c;
    --card-accent-soft: rgba(63, 122, 92, 0.12);
    --card-rule: rgba(63, 122, 92, 0.34);
    --card-edge-width: 0.25mm;
    --card-edge-colour: #7fae90;
    --card-radius: 4mm;
    --card-frame-inset: 2.4mm;
    --card-frame-width: 0.18mm;
    --card-frame-colour: rgba(63, 122, 92, 0.34);
    --card-frame-radius: 3mm;
    --card-title-font: "Cormorant Unicase", "EB Garamond", Georgia, serif;
    --card-title-weight: 600;
    --card-title-spacing: 0.07em;
    --card-subtitle-font: "EB Garamond", Georgia, serif;
    --card-label-spacing: 0.14em;
    --card-inner-shadow: inset 0 0 6mm rgba(126, 168, 138, 0.22);
}

/* ---------- 6. Feywild Dusk ---------- */

[data-card-style="feywild"] {
    --card-surface: #241d3d;
    --card-surface-image:
        radial-gradient(ellipse at 12% 4%, rgba(96, 214, 208, 0.42), transparent 52%),
        radial-gradient(ellipse at 88% 96%, rgba(232, 128, 190, 0.4), transparent 50%),
        radial-gradient(ellipse at 62% 42%, rgba(255, 214, 138, 0.22), transparent 44%);
    --card-surface-blend: screen, screen, screen;
    --card-ink: #f6ecff;
    --card-ink-soft: #cfc0e6;
    --card-ink-faint: #a294c2;
    --card-accent: #74e2d4;
    --card-accent-soft: rgba(116, 226, 212, 0.16);
    --card-rule: rgba(232, 160, 208, 0.44);
    --card-edge-width: 0.4mm;
    --card-edge-colour: #8f7bc4;
    --card-radius: 5mm;
    --card-frame-inset: 2.5mm;
    --card-frame-width: 0.2mm;
    --card-frame-colour: rgba(116, 226, 212, 0.4);
    --card-frame-radius: 3.5mm;
    --card-title-font: "Cormorant Unicase", Georgia, serif;
    --card-title-weight: 600;
    --card-title-spacing: 0.08em;
    --card-inner-shadow: inset 0 0 8mm rgba(20, 12, 40, 0.6);
}

/* ---------- 7. Dwarven Forge ---------- */

[data-card-style="forge"] {
    --card-surface: #2f2c29;
    --card-surface-image:
        linear-gradient(160deg, rgba(140, 132, 122, 0.34), transparent 42%),
        linear-gradient(20deg, rgba(196, 122, 46, 0.24), transparent 38%),
        var(--grain);
    --card-surface-blend: screen, screen, overlay;
    --card-ink: #ede4d6;
    --card-ink-soft: #bfae95;
    --card-ink-faint: #948671;
    --card-accent: #d59544;
    --card-accent-soft: rgba(213, 149, 68, 0.16);
    --card-rule: rgba(213, 149, 68, 0.42);
    --card-edge-width: 0.9mm;
    --card-edge-colour: #8a6a37;
    --card-frame-inset: 2.8mm;
    --card-frame-width: 0.3mm;
    --card-frame-colour: rgba(213, 149, 68, 0.42);
    --card-title-font: "Cinzel", Georgia, serif;
    --card-title-transform: uppercase;
    --card-title-spacing: 0.1em;
    --card-label-spacing: 0.16em;
    --card-inner-shadow: inset 0 0 6mm rgba(0, 0, 0, 0.55);
}

/* ---------- 8. Necromancer's Ledger ---------- */

[data-card-style="necromancer"] {
    --card-surface: #dcd8cd;
    --card-surface-image:
        radial-gradient(ellipse at 24% 12%, rgba(88, 92, 84, 0.3), transparent 44%),
        radial-gradient(ellipse at 84% 88%, rgba(72, 76, 70, 0.32), transparent 46%),
        var(--fibres);
    --card-surface-blend: multiply, multiply, multiply;
    --card-ink: #1f2220;
    --card-ink-soft: #4a4f4a;
    --card-ink-faint: #74796f;
    --card-accent: #4a5a4c;
    --card-accent-soft: rgba(74, 90, 76, 0.14);
    --card-rule: rgba(40, 46, 42, 0.46);
    --card-edge-width: 0.6mm;
    --card-edge-colour: #3a403a;
    --card-frame-inset: 2.4mm;
    --card-frame-width: 0.2mm;
    --card-frame-colour: rgba(40, 46, 42, 0.5);
    --card-frame-style: dashed;
    --card-title-font: "Pirata One", "IM Fell English", Georgia, serif;
    --card-title-weight: 400;
    --card-title-spacing: 0.03em;
    --card-subtitle-font: "IM Fell English", Georgia, serif;
    --card-inner-shadow: inset 0 0 8mm rgba(30, 34, 30, 0.35);
}

/* ---------- 9. Infernal Pact ---------- */

[data-card-style="infernal"] {
    --card-surface: #1b0f0d;
    --card-surface-image:
        radial-gradient(ellipse at 50% 108%, rgba(226, 88, 34, 0.55), transparent 56%),
        radial-gradient(ellipse at 18% 12%, rgba(150, 36, 24, 0.42), transparent 48%),
        var(--grain);
    --card-surface-blend: screen, screen, overlay;
    --card-ink: #f6ded0;
    --card-ink-soft: #d0a08a;
    --card-ink-faint: #a97a66;
    --card-accent: #ef7a3a;
    --card-accent-soft: rgba(239, 122, 58, 0.16);
    --card-rule: rgba(239, 122, 58, 0.44);
    --card-edge-width: 0.6mm;
    --card-edge-colour: #8f2f18;
    --card-frame-inset: 2.4mm;
    --card-frame-width: 0.25mm;
    --card-frame-colour: rgba(239, 122, 58, 0.44);
    --card-title-font: "Pirata One", "Cinzel", Georgia, serif;
    --card-title-weight: 400;
    --card-title-spacing: 0.04em;
    --card-inner-shadow: inset 0 0 8mm rgba(0, 0, 0, 0.66);
}

/* ---------- 10. Artificer's Schematic ---------- */

[data-card-style="schematic"] {
    --card-surface: #14395e;
    --card-surface-image:
        repeating-linear-gradient(
            0deg,
            rgba(198, 226, 255, 0.16) 0 0.18mm,
            transparent 0.18mm 4mm
        ),
        repeating-linear-gradient(
            90deg,
            rgba(198, 226, 255, 0.16) 0 0.18mm,
            transparent 0.18mm 4mm
        );
    --card-surface-blend: normal, normal;
    --card-ink: #eaf3ff;
    --card-ink-soft: #b9d3ef;
    --card-ink-faint: #8fb2d6;
    --card-accent: #ffd67a;
    --card-accent-soft: rgba(255, 214, 122, 0.14);
    --card-rule: rgba(198, 226, 255, 0.44);
    --card-edge-width: 0.3mm;
    --card-edge-colour: #9cc2e8;
    --card-frame-inset: 2.6mm;
    --card-frame-width: 0.18mm;
    --card-frame-colour: rgba(198, 226, 255, 0.6);
    --card-title-font: "Cinzel", Georgia, serif;
    --card-title-transform: uppercase;
    --card-title-spacing: 0.12em;
    --card-body-font: "EB Garamond", Georgia, serif;
    --card-label-font: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;
    --card-label-spacing: 0.1em;
    --card-inner-shadow: inset 0 0 6mm rgba(6, 26, 46, 0.6);
}

/*
 * Decoration. Palette alone does not separate ten themes at card size, so each
 * one also changes the card's structure: its header treatment, its corners and
 * what the body sits on.
 */

.print-card::after,
.codex-sheet[data-card-style]::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background-image: var(--card-decoration, none);
    background-position: var(--card-decoration-position, 0 0);
    background-size: var(--card-decoration-size, auto);
    background-repeat: no-repeat;
    border-radius: inherit;
}

.print-card-header {
    position: relative;
}

/* Illuminated: a gilded title band between two rules, with gold corner blocks */

[data-card-style="illuminated"] .print-card-header,
[data-card-style="illuminated"] .sheet-title-block {
    padding: 0.6mm 1.4mm 1.2mm;
    background: linear-gradient(180deg, rgba(214, 170, 74, 0.32), rgba(214, 170, 74, 0.06));
    border-bottom: 0.7mm double var(--card-accent);
}

[data-card-style="illuminated"] {
    --card-decoration:
        linear-gradient(135deg, #c8a132 0 2.6mm, transparent 2.6mm),
        linear-gradient(225deg, #c8a132 0 2.6mm, transparent 2.6mm),
        linear-gradient(45deg, #c8a132 0 2.6mm, transparent 2.6mm),
        linear-gradient(315deg, #c8a132 0 2.6mm, transparent 2.6mm);
    --card-decoration-position: top left, top right, bottom left, bottom right;
    --card-decoration-size: 6mm 6mm, 6mm 6mm, 6mm 6mm, 6mm 6mm;
}

/* Arcane Grimoire: a conjuring glow rising behind the title */

[data-card-style="grimoire"] {
    --card-decoration: radial-gradient(
        ellipse 60% 22% at 50% 6%,
        rgba(185, 166, 255, 0.36),
        transparent 70%
    );
}

[data-card-style="grimoire"] .print-card-header,
[data-card-style="grimoire"] .sheet-title-block {
    border-bottom-width: 0.5mm;
    border-bottom-style: double;
}

/* Celestial: a halo arc above the title */

[data-card-style="celestial"] {
    --card-decoration: radial-gradient(
        circle 15mm at 50% -6mm,
        transparent 0 11.4mm,
        rgba(184, 134, 11, 0.55) 11.4mm 11.9mm,
        transparent 11.9mm
    );
}

[data-card-style="celestial"] .print-card-title,
[data-card-style="celestial"] .sheet-title {
    text-align: center;
}

[data-card-style="celestial"] .print-card-subtitle,
[data-card-style="celestial"] .sheet-subtitle {
    text-align: center;
}

[data-card-style="celestial"] .print-card-header,
[data-card-style="celestial"] .sheet-title-block {
    border-bottom: none;
    box-shadow: 0 0.35mm 0 -0.1mm var(--card-accent), 0 0.9mm 0 -0.1mm rgba(184, 134, 11, 0.35);
}

/* Elven: no box at all, a single living stem down the left edge */

[data-card-style="elven"] {
    --card-edge-width: 0;
    --card-frame-width: 0;
    --card-decoration:
        linear-gradient(180deg, transparent 0 4mm, var(--card-accent) 4mm calc(100% - 4mm), transparent calc(100% - 4mm)),
        radial-gradient(circle 1.2mm at 50% 50%, var(--card-accent) 0 0.9mm, transparent 1mm),
        radial-gradient(circle 1.2mm at 50% 50%, var(--card-accent) 0 0.9mm, transparent 1mm);
    --card-decoration-position: 3.4mm 0, 2.2mm 2.6mm, 2.2mm calc(100% - 5mm);
    --card-decoration-size: 0.3mm 100%, 2.4mm 2.4mm, 2.4mm 2.4mm;
}

[data-card-style="elven"] .print-card {
    padding-left: 8mm;
}

[data-card-style="elven"] .print-card-header,
[data-card-style="elven"] .sheet-title-block {
    border-bottom: none;
}

[data-card-style="elven"] .print-card-stats {
    border-bottom-style: solid;
    border-bottom-width: 0.15mm;
}

/* Feywild: luminous motes gathering in the corners */

[data-card-style="feywild"] {
    --card-decoration:
        radial-gradient(circle 9mm at 4% 4%, rgba(116, 226, 212, 0.34), transparent 70%),
        radial-gradient(circle 9mm at 96% 96%, rgba(232, 128, 190, 0.34), transparent 70%),
        radial-gradient(circle 5mm at 92% 10%, rgba(255, 214, 138, 0.26), transparent 70%);
}

[data-card-style="feywild"] .print-card-header,
[data-card-style="feywild"] .sheet-title-block {
    border-bottom: none;
    box-shadow: 0 0.3mm 0 var(--card-rule);
}

/* Forge: hammered plate with four rivets */

[data-card-style="forge"] {
    --card-decoration:
        radial-gradient(circle 1.1mm at 4.4mm 4.4mm, rgba(233, 191, 122, 0.85), rgba(90, 62, 28, 0.9) 1mm, transparent 1.15mm),
        radial-gradient(circle 1.1mm at calc(100% - 4.4mm) 4.4mm, rgba(233, 191, 122, 0.85), rgba(90, 62, 28, 0.9) 1mm, transparent 1.15mm),
        radial-gradient(circle 1.1mm at 4.4mm calc(100% - 4.4mm), rgba(233, 191, 122, 0.85), rgba(90, 62, 28, 0.9) 1mm, transparent 1.15mm),
        radial-gradient(circle 1.1mm at calc(100% - 4.4mm) calc(100% - 4.4mm), rgba(233, 191, 122, 0.85), rgba(90, 62, 28, 0.9) 1mm, transparent 1.15mm);
}

[data-card-style="forge"] .print-card-header,
[data-card-style="forge"] .sheet-title-block {
    padding: 1mm 1.6mm 1.4mm;
    background: linear-gradient(180deg, rgba(213, 149, 68, 0.26), rgba(213, 149, 68, 0.04));
    border-bottom: 0.6mm solid var(--card-accent);
}

/* Necromancer: an accountant's ruled ledger for the restless dead */

[data-card-style="necromancer"] {
    --card-decoration: repeating-linear-gradient(
        180deg,
        transparent 0 3.6mm,
        rgba(40, 46, 42, 0.16) 3.6mm 3.75mm
    );
}

[data-card-style="necromancer"] .print-card-header,
[data-card-style="necromancer"] .sheet-title-block {
    padding: 0.8mm 1.4mm 1mm;
    background: rgba(31, 34, 32, 0.9);
    border-bottom: none;
}

[data-card-style="necromancer"] .print-card-title,
[data-card-style="necromancer"] .sheet-title {
    color: #e6e2d6;
}

[data-card-style="necromancer"] .print-card-subtitle,
[data-card-style="necromancer"] .sheet-subtitle {
    color: #b0aa9a;
}

/* Infernal: embers banked at the foot of the card */

[data-card-style="infernal"] {
    --card-decoration:
        radial-gradient(ellipse 80% 26% at 50% 104%, rgba(255, 132, 48, 0.45), transparent 72%),
        radial-gradient(circle 1.4mm at 4.6mm 4.6mm, rgba(239, 122, 58, 0.5), transparent 1.5mm),
        radial-gradient(circle 1.4mm at calc(100% - 4.6mm) 4.6mm, rgba(239, 122, 58, 0.5), transparent 1.5mm);
}

[data-card-style="infernal"] .print-card-header,
[data-card-style="infernal"] .sheet-title-block {
    border-bottom: 0.5mm double var(--card-accent);
}

/* Schematic: drafting ticks and a boxed title block */

[data-card-style="schematic"] {
    --card-decoration:
        linear-gradient(var(--card-accent), var(--card-accent)),
        linear-gradient(var(--card-accent), var(--card-accent)),
        linear-gradient(var(--card-accent), var(--card-accent)),
        linear-gradient(var(--card-accent), var(--card-accent));
    --card-decoration-position: 1.4mm 3.4mm, 3.4mm 1.4mm, calc(100% - 1.4mm) calc(100% - 3.4mm), calc(100% - 3.4mm) calc(100% - 1.4mm);
    --card-decoration-size: 4mm 0.25mm, 0.25mm 4mm, 4mm 0.25mm, 0.25mm 4mm;
}

[data-card-style="schematic"] .print-card-header,
[data-card-style="schematic"] .sheet-title-block {
    padding: 1mm 1.4mm;
    border: 0.2mm solid var(--card-rule);
    background: rgba(6, 26, 46, 0.4);
}

[data-card-style="schematic"] .print-card-stats,
[data-card-style="schematic"] .sheet-stats {
    border-bottom-style: solid;
}
