/*
 * Bestiarium - Stredoveka Vyprava
 * Iluminacie (c) Nikola Heger Schwammelova
 * Hra (c) Vladimir Heger
 */

.bestiarium-shell {
    --bestiarium-height: 760px;
    --bestiarium-parchment: #f0e1bd;
    --bestiarium-parchment-dark: #d8c094;
    --bestiarium-ink: #3a2412;
    --bestiarium-ink-soft: #6b4a2a;
    --bestiarium-gold: #b8862c;
    --bestiarium-gold-bright: #e0b94e;
    --bestiarium-red: #9b1e1e;
    --bestiarium-blue: #1c3a78;
    --bestiarium-blue-soft: #34589a;
    --bestiarium-shadow: 0 12px 32px rgba(58, 36, 18, 0.25);

    box-sizing: border-box;
    width: 100%;
    min-height: var(--bestiarium-height);
    padding: clamp(16px, 2vw, 28px);
    margin: 0 auto;
    font-family: 'EB Garamond', Garamond, 'Times New Roman', serif;
    color: var(--bestiarium-ink);
    background:
        radial-gradient(circle at 20% 15%, rgba(184, 134, 44, 0.20), transparent 55%),
        radial-gradient(circle at 80% 85%, rgba(155, 30, 30, 0.18), transparent 60%),
        linear-gradient(180deg, #efddb4 0%, #e6cf9b 40%, #d9bd80 100%);
    background-color: var(--bestiarium-parchment);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 4px;
    box-shadow: var(--bestiarium-shadow);
    position: relative;
    overflow: hidden;
}

.bestiarium-shell *,
.bestiarium-shell *::before,
.bestiarium-shell *::after {
    box-sizing: border-box;
}

.bestiarium-shell [hidden] {
    display: none !important;
}

.bestiarium-shell::before,
.bestiarium-shell::after {
    content: "";
    position: absolute;
    pointer-events: none;
    background-repeat: no-repeat;
}

.bestiarium-shell::before {
    inset: 8px;
    border: 1px solid rgba(155, 30, 30, 0.45);
    border-radius: 2px;
}

.bestiarium-shell::after {
    inset: 14px;
    border: 1px dashed rgba(28, 58, 120, 0.35);
    border-radius: 2px;
}

/* HERO */
.bestiarium-hero {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 18px;
    padding: 18px 22px;
    background: linear-gradient(180deg, rgba(255, 245, 215, 0.85), rgba(232, 200, 140, 0.55));
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
}

.bestiarium-hero-mark {
    width: 56px;
    height: 56px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 30px;
    color: var(--bestiarium-red);
    background: radial-gradient(circle, #fbe9b0 0%, #d9b66e 80%);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 50%;
    box-shadow: inset 0 0 8px rgba(155, 30, 30, 0.25);
}

.bestiarium-hero-copy {
    min-width: 0;
}

.bestiarium-hero-eyebrow {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 4px;
    text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}

.bestiarium-hero-title {
    margin: 4px 0 4px;
    font-family: 'UnifrakturMaguntia', 'Cinzel', serif;
    font-size: clamp(26px, 3.4vw, 42px);
    color: var(--bestiarium-red);
    text-shadow: 0 1px 0 rgba(255, 240, 200, 0.6);
}

.bestiarium-hero-text {
    margin: 0;
    font-size: 15px;
    color: var(--bestiarium-ink);
    max-width: 64ch;
}

.bestiarium-hero-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 10px;
}

.bestiarium-version-pill {
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 2px;
    padding: 4px 10px;
    background: var(--bestiarium-blue);
    color: #fff7d9;
    border-radius: 999px;
}

.bestiarium-language-switcher {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 2px;
    color: var(--bestiarium-ink-soft);
}

.bestiarium-language-select {
    font-family: inherit;
    font-size: 13px;
    background: #fff7d9;
    border: 1px solid var(--bestiarium-gold);
    color: var(--bestiarium-ink);
    padding: 4px 8px;
    border-radius: 3px;
}

/* Intro tutorial panel - first-visit guide */
.bestiarium-intro-panel {
    position: relative;
    z-index: 1;
    margin: 14px 0 0;
    padding: 18px 22px 22px;
    background:
        radial-gradient(circle at 90% 0%, rgba(216,173,54,0.2), transparent 50%),
        rgba(255, 247, 217, 0.92);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 3px;
    box-shadow: inset 0 0 0 1px rgba(255,250,220,0.6);
}
.bestiarium-intro-close {
    position: absolute;
    top: 6px;
    right: 12px;
    background: transparent;
    border: none;
    cursor: pointer;
    font-size: 26px;
    color: var(--bestiarium-ink-soft);
    line-height: 1;
}
.bestiarium-intro-close:hover { color: var(--bestiarium-red); }
.bestiarium-intro-h2 {
    margin: 0 0 4px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-red);
}
.bestiarium-intro-lead {
    margin: 0 0 12px;
    font-style: italic;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-intro-story {
    margin: 0 0 16px;
    font-size: 15px;
    line-height: 1.55;
    color: var(--bestiarium-ink);
    padding: 10px 14px;
    background: rgba(184, 134, 44, 0.12);
    border-left: 3px solid var(--bestiarium-gold);
}
.bestiarium-intro-grid {
    list-style: none;
    margin: 0 0 14px;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}
.bestiarium-intro-card {
    padding: 12px 14px;
    background: rgba(255, 247, 217, 0.95);
    border: 1px solid rgba(184, 134, 44, 0.5);
    border-radius: 2px;
    counter-increment: bestiarium-intro;
    position: relative;
}
.bestiarium-intro-grid { counter-reset: bestiarium-intro; }
.bestiarium-intro-card::before {
    content: counter(bestiarium-intro);
    position: absolute;
    top: -10px;
    left: 10px;
    width: 22px;
    height: 22px;
    background: var(--bestiarium-red);
    color: #fff7d9;
    border: 2px solid var(--bestiarium-gold);
    border-radius: 50%;
    font-family: 'Cinzel', serif;
    font-weight: 700;
    font-size: 12px;
    display: flex; align-items: center; justify-content: center;
}
.bestiarium-intro-icon {
    display: inline-block;
    font-size: 28px;
    color: var(--bestiarium-gold);
    line-height: 1;
}
.bestiarium-intro-card h3 {
    margin: 4px 0 6px;
    font-family: 'Cinzel', serif;
    font-size: 14px;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--bestiarium-red);
}
.bestiarium-intro-card p {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--bestiarium-ink);
}
.bestiarium-intro-tip {
    margin: 0;
    padding: 8px 12px;
    background: rgba(28, 58, 120, 0.12);
    border-left: 3px solid var(--bestiarium-blue);
    font-size: 13px;
    font-style: italic;
    color: var(--bestiarium-ink);
}
.bestiarium-intro-toggle {
    margin: 12px 0 0;
    padding: 6px 14px;
    background: linear-gradient(180deg, #fff5cb, #e7c97a);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    cursor: pointer;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--bestiarium-ink);
}
.bestiarium-intro-toggle:hover { background: linear-gradient(180deg, #fff7d9, #efd590); border-color: var(--bestiarium-red); }

/* STATUSBAR */
.bestiarium-statusbar {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 10px;
    margin: 16px 0;
    padding: 12px 16px;
    background: rgba(255, 247, 217, 0.55);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
}

.bestiarium-stat {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    align-items: baseline;
    gap: 6px;
    min-width: 0;
    padding: 6px 8px;
    background: rgba(255, 247, 217, 0.7);
    border: 1px solid rgba(184, 134, 44, 0.5);
    border-radius: 2px;
}

.bestiarium-stat-icon {
    font-size: 16px;
    color: var(--bestiarium-red);
}

.bestiarium-stat[data-stat="faith"] .bestiarium-stat-icon { color: var(--bestiarium-blue); }
.bestiarium-stat[data-stat="wisdom"] .bestiarium-stat-icon { color: var(--bestiarium-gold); }
.bestiarium-stat[data-stat="valour"] .bestiarium-stat-icon { color: var(--bestiarium-ink); }

.bestiarium-stat-label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}

.bestiarium-stat-value {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    font-family: 'Cinzel', serif;
    font-weight: 700;
    font-size: 16px;
    color: var(--bestiarium-ink);
}

.bestiarium-stat-max {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
}

.bestiarium-stat.is-pulse {
    animation: bestiarium-pulse 600ms ease-out;
}

@keyframes bestiarium-pulse {
    0%   { background: #fff7d9; }
    50%  { background: #f3d989; }
    100% { background: rgba(255, 247, 217, 0.7); }
}

.bestiarium-chapter-stat .bestiarium-stat-value {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 20px;
    color: var(--bestiarium-red);
}

.bestiarium-stat.is-coins {
    background: linear-gradient(180deg, rgba(216,173,54,0.55), rgba(216,173,54,0.2));
    border-color: var(--bestiarium-gold-bright);
    position: relative;
    overflow: visible;
}
.bestiarium-stat.is-coins .bestiarium-stat-icon { color: var(--bestiarium-gold); }
.bestiarium-stat.is-coins .bestiarium-stat-value {
    color: #5a3a05;
    font-family: 'Cinzel', serif;
    font-weight: 700;
}

/* v2.1.10: small elegant sale badge on the coins pill.
 * Visible only when WC has at least one variant on sale. */
.bestiarium-stat.is-on-sale {
    box-shadow: 0 0 0 1px rgba(155,30,30,0.35), 0 6px 14px rgba(155,30,30,0.18);
    animation: bestiarium-coins-glow 2.4s ease-in-out infinite alternate;
}
@keyframes bestiarium-coins-glow {
    from { box-shadow: 0 0 0 1px rgba(155,30,30,0.30), 0 4px 10px rgba(155,30,30,0.15); }
    to   { box-shadow: 0 0 0 2px rgba(155,30,30,0.55), 0 8px 18px rgba(224,185,78,0.45); }
}
.bestiarium-stat-sale {
    position: absolute;
    top: -10px;
    right: -12px;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 3px 9px 3px 7px;
    background: linear-gradient(135deg, #d33 0%, #9b1e1e 60%, #5c0c0c 100%);
    color: #fff7d9;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    line-height: 1;
    border: 1.5px solid var(--bestiarium-gold-bright, #e0b94e);
    border-radius: 999px;
    box-shadow: 0 3px 7px rgba(155,30,30,0.55),
                0 0 12px rgba(224,185,78,0.5);
    transform: rotate(7deg);
    pointer-events: none;       /* click goes through to the pill */
    z-index: 4;
    animation: bestiarium-stat-sale-pulse 1.4s ease-in-out infinite;
    white-space: nowrap;
}
.bestiarium-stat-sale-spark {
    color: var(--bestiarium-gold-bright, #e0b94e);
    font-size: 11px;
    text-shadow: 0 0 4px rgba(255,255,200,0.9);
    animation: bestiarium-sale-spark-spin 2.6s linear infinite;
}
@keyframes bestiarium-stat-sale-pulse {
    0%, 100% { transform: rotate(7deg) scale(1); }
    50%      { transform: rotate(7deg) scale(1.10); }
}
@keyframes bestiarium-sale-spark-spin {
    0%   { transform: rotate(0deg);   opacity: 1; }
    50%  { transform: rotate(180deg); opacity: 0.6; }
    100% { transform: rotate(360deg); opacity: 1; }
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
    .bestiarium-stat.is-on-sale,
    .bestiarium-stat-sale,
    .bestiarium-stat-sale-spark { animation: none; }
}
.bestiarium-stat.is-level {
    background: linear-gradient(180deg, rgba(155,30,30,0.18), transparent);
}
.bestiarium-stat.is-level .bestiarium-stat-icon { color: var(--bestiarium-red); }
.bestiarium-stat.is-speed {
    background: linear-gradient(180deg, rgba(44,76,32,0.18), transparent);
}
.bestiarium-stat.is-speed .bestiarium-stat-icon { color: #2c4c20; }

/* STAGE */
.bestiarium-stage {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.8fr) minmax(240px, 1fr);
    gap: 18px;
    align-items: flex-start;
}

.bestiarium-scene,
.bestiarium-side > .bestiarium-panel {
    background: rgba(255, 247, 217, 0.78);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    padding: 18px 22px;
    box-shadow: inset 0 0 0 1px rgba(255, 250, 220, 0.6);
}

.bestiarium-scene-head {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 14px;
    row-gap: 4px;
    align-items: baseline;
    margin-bottom: 12px;
    border-bottom: 1px solid rgba(184, 134, 44, 0.5);
    padding-bottom: 10px;
}

.bestiarium-chapter-roman {
    grid-row: span 2;
    align-self: center;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 48px;
    line-height: 1;
    color: var(--bestiarium-red);
    background: radial-gradient(circle, #fbe9b0 0%, #d9b66e 80%);
    border: 2px solid var(--bestiarium-gold);
    width: 64px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    box-shadow: inset 0 0 6px rgba(155, 30, 30, 0.3);
}

.bestiarium-scene-title {
    margin: 0;
    font-family: 'Cinzel', serif;
    font-weight: 800;
    font-size: 22px;
    color: var(--bestiarium-ink);
    letter-spacing: 1px;
}

.bestiarium-scene-sub {
    margin: 0;
    font-style: italic;
    font-size: 14px;
    color: var(--bestiarium-ink-soft);
}

.bestiarium-scene-body {
    font-size: 16px;
    line-height: 1.6;
    margin: 12px 0 16px;
    white-space: pre-line;
}

.bestiarium-scene-body p {
    margin: 0 0 0.8em;
}

.bestiarium-scene-body p:first-letter {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 2.6em;
    line-height: 0.9;
    float: left;
    margin: 4px 8px 0 0;
    color: var(--bestiarium-red);
}

/* ILUMINATION FRAME (ramik podla manzelinych obrazkov) */
.bestiarium-illumination {
    margin: 0 0 14px;
    text-align: center;
}

.bestiarium-illumination-frame {
    display: inline-block;
    padding: 8px;
    background:
        repeating-linear-gradient(
            45deg,
            var(--bestiarium-blue) 0 8px,
            #fff7d9 8px 12px,
            var(--bestiarium-blue) 12px 20px,
            #fff7d9 20px 24px
        );
    border: 2px solid var(--bestiarium-red);
    border-radius: 2px;
    box-shadow: 0 6px 18px rgba(58, 36, 18, 0.3);
    max-width: 100%;
}

.bestiarium-illumination-frame img {
    display: block;
    max-width: 100%;
    height: auto;
    max-height: 360px;
    border: 1px solid var(--bestiarium-gold);
    background: #fff;
}

.bestiarium-illumination figcaption {
    margin-top: 6px;
    font-style: italic;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
}

/* CHOICES */
.bestiarium-choices {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
    margin-top: 6px;
}

.bestiarium-choice {
    appearance: none;
    text-align: left;
    font-family: inherit;
    font-size: 15px;
    color: var(--bestiarium-ink);
    background: linear-gradient(180deg, #fff5cb, #ecd596);
    border: 1px solid var(--bestiarium-gold);
    padding: 10px 14px;
    border-radius: 3px;
    cursor: pointer;
    transition: transform 0.08s ease, background 0.15s ease, border-color 0.15s ease;
    line-height: 1.4;
    position: relative;
    padding-left: 38px;
}

.bestiarium-choice::before {
    content: "\271D";
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--bestiarium-red);
    font-size: 16px;
}

.bestiarium-choice:hover {
    background: linear-gradient(180deg, #fff7d9, #f0d68a);
    border-color: var(--bestiarium-red);
    transform: translateY(-1px);
}

.bestiarium-choice:disabled,
.bestiarium-choice.is-locked {
    opacity: 0.55;
    cursor: not-allowed;
    transform: none;
}

.bestiarium-choice-hint {
    display: block;
    margin-top: 2px;
    font-size: 12px;
    font-style: italic;
    color: var(--bestiarium-ink-soft);
}

/* COMBAT */
.bestiarium-combat {
    margin: 0 0 14px;
    padding: 12px 14px;
    background: rgba(155, 30, 30, 0.08);
    border: 1px solid var(--bestiarium-red);
    border-radius: 3px;
}

.bestiarium-combat-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    font-family: 'Cinzel', serif;
    margin-bottom: 8px;
}

.bestiarium-combat-head strong {
    font-size: 16px;
    letter-spacing: 1px;
    color: var(--bestiarium-red);
}

.bestiarium-combat-hp {
    font-size: 13px;
    color: var(--bestiarium-ink-soft);
}

.bestiarium-combat-log {
    background: rgba(255, 247, 217, 0.7);
    border: 1px dashed var(--bestiarium-gold);
    padding: 8px 10px;
    font-size: 13px;
    line-height: 1.4;
    max-height: 140px;
    overflow-y: auto;
    margin-bottom: 10px;
}

.bestiarium-combat-log p {
    margin: 0 0 4px;
}

.bestiarium-combat-actions {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
}

/* BUTTONS */
.bestiarium-btn {
    appearance: none;
    cursor: pointer;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
    padding: 8px 12px;
    border-radius: 3px;
    /* v2.4.2: feedback fix — secondary buttons used to melt into the light
       parchment modals (1px gold border on cream). Dark border + shadow +
       darker bottom gradient make them clearly read as buttons. */
    border: 2px solid #6a3a0c;
    background: linear-gradient(180deg, #fff5cb, #ddb964);
    color: var(--bestiarium-ink);
    font-weight: 600;
    box-shadow: 0 2px 5px rgba(58,36,18,0.35), inset 0 1px 0 rgba(255,255,255,0.65);
    transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
}

.bestiarium-btn:hover {
    background: linear-gradient(180deg, #fff7d9, #efd590);
    border-color: var(--bestiarium-red);
    transform: translateY(-1px);
}

.bestiarium-btn-primary {
    background: linear-gradient(180deg, #cf4242, var(--bestiarium-red));
    color: #fff7d9;
    border-color: #4a0808;
}

.bestiarium-btn-primary:hover {
    background: linear-gradient(180deg, #dd5050, #ad2828);
    border-color: var(--bestiarium-ink);
}

.bestiarium-btn-danger {
    background: linear-gradient(180deg, #fff5cb, #d9bd80);
    color: var(--bestiarium-red);
    border-color: var(--bestiarium-red);
}

/* SIDE PANEL */
.bestiarium-side {
    display: grid;
    gap: 16px;
}

.bestiarium-panel-title {
    margin: 0 0 10px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 22px;
    color: var(--bestiarium-red);
    border-bottom: 1px solid rgba(184, 134, 44, 0.5);
    padding-bottom: 4px;
}

.bestiarium-inventory,
.bestiarium-journal {
    list-style: none;
    padding: 0;
    margin: 0;
    font-size: 14px;
    line-height: 1.45;
}

.bestiarium-inventory li {
    padding: 6px 8px;
    margin-bottom: 4px;
    background: rgba(255, 247, 217, 0.85);
    border: 1px solid rgba(184, 134, 44, 0.4);
    border-radius: 2px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.bestiarium-inventory li::before {
    content: "\2756";
    color: var(--bestiarium-gold);
}

.bestiarium-inventory-empty {
    font-style: italic;
    color: var(--bestiarium-ink-soft);
    background: transparent !important;
    border: none !important;
}

.bestiarium-inventory-empty::before { content: "" !important; }

.bestiarium-journal {
    list-style-position: inside;
    counter-reset: bestiarium-journal;
}

.bestiarium-journal li {
    counter-increment: bestiarium-journal;
    padding: 4px 0;
    border-bottom: 1px dashed rgba(184, 134, 44, 0.45);
}

.bestiarium-journal li:last-child { border-bottom: none; }

.bestiarium-journal li::before {
    content: counter(bestiarium-journal, upper-roman) ". ";
    font-family: 'Cinzel', serif;
    font-weight: 700;
    color: var(--bestiarium-red);
    margin-right: 4px;
}

.bestiarium-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
}

.bestiarium-actions-note {
    margin: 8px 0 0;
    font-size: 12px;
    font-style: italic;
    color: var(--bestiarium-ink-soft);
    min-height: 1em;
}

/* FOOTER */
.bestiarium-footer {
    position: relative;
    z-index: 1;
    margin-top: 18px;
    padding-top: 12px;
    text-align: center;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 2px;
    color: var(--bestiarium-ink-soft);
    border-top: 1px dashed var(--bestiarium-gold);
}

/* END SCREEN */
.bestiarium-ending {
    text-align: center;
    padding: 12px 0;
}

.bestiarium-ending-title {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 36px;
    color: var(--bestiarium-red);
    margin: 0 0 6px;
}

.bestiarium-ending-text {
    font-size: 16px;
    font-style: italic;
    color: var(--bestiarium-ink);
    margin: 0 auto 14px;
    max-width: 56ch;
}

/* ============================================================
 * AMBIENT - dychajuca iluminacia, listy / popol v pozadi
 * ============================================================ */

@keyframes bestiarium-breath {
    0%, 100% { transform: scale(1.0); }
    50%      { transform: scale(1.02); }
}

@keyframes bestiarium-shake {
    0%, 100% { transform: translate(0, 0); }
    20%      { transform: translate(-6px, 2px); }
    40%      { transform: translate(5px, -3px); }
    60%      { transform: translate(-4px, 4px); }
    80%      { transform: translate(3px, -2px); }
}

@keyframes bestiarium-flash-red {
    0%, 100% { box-shadow: inset 0 0 0 0 rgba(155, 30, 30, 0); }
    50%      { box-shadow: inset 0 0 60px 8px rgba(220, 50, 50, 0.55); }
}

@keyframes bestiarium-flash-gold {
    0%, 100% { box-shadow: 0 0 0 0 rgba(224, 185, 78, 0); }
    50%      { box-shadow: 0 0 30px 10px rgba(255, 215, 105, 0.9); }
}

@keyframes bestiarium-card-flip {
    0%   { transform: rotateY(0deg); opacity: 1; }
    50%  { transform: rotateY(90deg); opacity: 0.2; }
    100% { transform: rotateY(0deg); opacity: 1; }
}

.bestiarium-shell.is-shaking .bestiarium-stage {
    animation: bestiarium-shake 0.35s ease-out;
}

.bestiarium-shell.is-flash-red .bestiarium-scene {
    animation: bestiarium-flash-red 0.4s ease-out;
}

.bestiarium-illumination-frame img {
    transform-origin: center;
    animation: bestiarium-breath 8s ease-in-out infinite;
}

.bestiarium-scene.is-turning {
    animation: bestiarium-card-flip 0.5s ease-in-out;
}

/* corner ornaments on parchment */
.bestiarium-scene {
    position: relative;
}
.bestiarium-scene::before,
.bestiarium-scene::after {
    content: "";
    position: absolute;
    width: 36px;
    height: 36px;
    pointer-events: none;
    background:
        radial-gradient(circle at center, var(--bestiarium-gold-bright) 0 3px, transparent 4px),
        linear-gradient(135deg, transparent 45%, var(--bestiarium-red) 46% 50%, transparent 51%);
    opacity: 0.45;
}
.bestiarium-scene::before { top: 6px; left: 6px; }
.bestiarium-scene::after  { bottom: 6px; right: 6px; transform: rotate(180deg); }

/* ============================================================
 * COMBAT ARENA - akcny boj
 * ============================================================ */

.bestiarium-combat-hpbar {
    display: inline-block;
    vertical-align: middle;
    width: 140px;
    height: 10px;
    margin: 0 6px;
    background: rgba(58, 36, 18, 0.25);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 2px;
    overflow: hidden;
}
.bestiarium-combat-hpbar-fill {
    display: block;
    height: 100%;
    width: 100%;
    background: linear-gradient(90deg, var(--bestiarium-red), #d54f4f, var(--bestiarium-red));
    transition: width 0.4s ease-out;
}

.bestiarium-arena {
    position: relative;
    margin: 10px 0 14px;
    background:
        radial-gradient(ellipse at center, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0) 70%),
        repeating-linear-gradient(45deg, rgba(184,134,44,0.08) 0 8px, transparent 8px 16px);
    border: 2px solid var(--bestiarium-red);
    border-radius: 3px;
    box-shadow: inset 0 0 24px rgba(58, 36, 18, 0.35), 0 4px 14px rgba(58, 36, 18, 0.25);
    overflow: hidden;
    user-select: none;
    height: 260px;
}

.bestiarium-arena-foe {
    position: absolute;
    inset: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.bestiarium-arena-foe img {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    filter: drop-shadow(0 6px 14px rgba(0,0,0,0.5));
    transform-origin: center;
    transition: transform 0.18s ease-out, filter 0.18s ease-out;
}

.bestiarium-arena.is-hit .bestiarium-arena-foe img {
    filter: drop-shadow(0 6px 14px rgba(0,0,0,0.5)) brightness(2.0) saturate(0.6);
    transform: scale(0.96) translateX(8px);
}

.bestiarium-arena.is-critical .bestiarium-arena-foe img {
    filter: drop-shadow(0 6px 22px rgba(255,180,0,0.9)) brightness(2.4);
    transform: scale(0.94);
}

.bestiarium-arena-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.bestiarium-arena-prompt {
    position: absolute;
    top: 8px;
    left: 8px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--bestiarium-parchment);
    background: rgba(28, 58, 120, 0.78);
    padding: 4px 10px;
    border-radius: 2px;
    pointer-events: none;
}

/* WEAK POINT (attack mode) */
.bestiarium-weakpoint {
    position: absolute;
    width: 90px;
    height: 90px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255,180,0,0.85) 0%, rgba(255,140,0,0.55) 40%, rgba(155,30,30,0.0) 70%);
    border: 2px dashed rgba(255, 240, 200, 0.85);
    cursor: crosshair;
    transition: transform 0.1s ease-out;
    animation: bestiarium-pulse-ring 1.2s ease-in-out infinite;
    pointer-events: auto;
}
@keyframes bestiarium-pulse-ring {
    0%, 100% { box-shadow: 0 0 0 0 rgba(255,200,80,0.5); }
    50%      { box-shadow: 0 0 0 14px rgba(255,200,80,0); }
}
.bestiarium-weakpoint::after {
    content: "";
    position: absolute;
    top: 50%; left: 50%;
    width: 18px; height: 18px;
    margin: -9px 0 0 -9px;
    border-radius: 50%;
    background: radial-gradient(circle, #fff 0%, #ffe69a 60%, transparent 100%);
    box-shadow: 0 0 16px rgba(255,255,255,0.9);
}

.bestiarium-arena.is-attacking {
    cursor: crosshair;
}
.bestiarium-arena.is-attacking::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(transparent calc(50% - 1px), rgba(155,30,30,0.35) 50%, transparent calc(50% + 1px)),
        linear-gradient(90deg, transparent calc(50% - 1px), rgba(155,30,30,0.35) 50%, transparent calc(50% + 1px));
    pointer-events: none;
    opacity: 0.0;
    animation: bestiarium-crosshair-fade 0.18s ease-in;
    animation-fill-mode: forwards;
}
@keyframes bestiarium-crosshair-fade {
    to { opacity: 0.18; }
}

/* DEFEND markers - red impact markers falling onto the shield */
.bestiarium-defend-shield {
    position: absolute;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
    width: 110px;
    height: 110px;
    border-radius: 50% 50% 45% 45%;
    background:
        radial-gradient(circle at 35% 30%, #fff5cb 0%, var(--bestiarium-gold) 50%, var(--bestiarium-red) 80%);
    border: 3px solid var(--bestiarium-ink);
    box-shadow: 0 0 0 3px var(--bestiarium-gold), 0 8px 18px rgba(0,0,0,0.4);
    cursor: pointer;
    pointer-events: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--bestiarium-parchment);
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 42px;
}
.bestiarium-defend-shield::before { content: "\271D"; }
.bestiarium-defend-shield.is-blocked {
    animation: bestiarium-flash-gold 0.3s ease-out;
}

.bestiarium-defend-marker {
    position: absolute;
    top: -60px;
    left: 50%;
    width: 60px;
    height: 60px;
    margin-left: -30px;
    background: radial-gradient(circle, #ff6060 0%, #b80000 60%, transparent 100%);
    border-radius: 50%;
    border: 2px solid #ffd28a;
    box-shadow: 0 0 20px rgba(255,60,60,0.7);
    pointer-events: none;
    transition: transform 0.05s linear;
}
.bestiarium-defend-marker::after {
    content: "\2694";
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    color: #fff7d9;
    font-size: 28px;
}

/* PRAY sigils */
.bestiarium-pray-sigil {
    position: absolute;
    width: 86px;
    height: 86px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255,247,217,0.95) 0%, rgba(184,134,44,0.6) 70%, transparent 100%);
    border: 3px solid var(--bestiarium-gold);
    box-shadow: 0 0 24px rgba(255, 220, 130, 0.8);
    color: var(--bestiarium-red);
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    pointer-events: auto;
    animation: bestiarium-sigil-grow 0.25s ease-out;
}
@keyframes bestiarium-sigil-grow {
    from { transform: scale(0.4); opacity: 0; }
    to   { transform: scale(1.0); opacity: 1; }
}
.bestiarium-pray-sigil.is-tapped {
    animation: bestiarium-flash-gold 0.35s ease-out;
    opacity: 0.3;
}

/* FLEE door - rapid clicking */
.bestiarium-flee-door {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 120px;
    height: 170px;
    background:
        linear-gradient(180deg, #5a3818 0%, #2a1808 100%);
    border: 4px solid var(--bestiarium-gold);
    border-radius: 8px 8px 4px 4px;
    cursor: pointer;
    box-shadow: 0 0 28px rgba(0,0,0,0.6), inset 0 0 0 3px #3a2010;
    pointer-events: auto;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding-bottom: 16px;
    color: var(--bestiarium-gold-bright);
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
}
.bestiarium-flee-door::before {
    content: "";
    position: absolute;
    top: 38%; right: 14px;
    width: 16px; height: 16px;
    background: radial-gradient(circle, var(--bestiarium-gold-bright) 0%, var(--bestiarium-gold) 80%);
    border-radius: 50%;
    box-shadow: 0 0 8px rgba(255,200,80,0.7);
}
.bestiarium-flee-door.is-mashing {
    transform: translate(-50%, -50%) scale(0.96);
}

.bestiarium-flee-progress {
    position: absolute;
    bottom: 12px;
    left: 12px;
    right: 12px;
    height: 12px;
    background: rgba(0,0,0,0.4);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 4px;
    overflow: hidden;
    pointer-events: none;
}
.bestiarium-flee-progress-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, var(--bestiarium-red), var(--bestiarium-gold-bright));
    transition: width 0.08s linear;
}

.bestiarium-combat-hint {
    margin: 6px 0 0;
    font-style: italic;
    font-size: 13px;
    color: var(--bestiarium-ink-soft);
    text-align: center;
}

/* combat float-up damage numbers */
.bestiarium-floater {
    position: absolute;
    pointer-events: none;
    font-family: 'Cinzel', serif;
    font-weight: 800;
    font-size: 28px;
    color: var(--bestiarium-red);
    text-shadow: 0 2px 0 #fff7d9, 0 0 12px rgba(155,30,30,0.6);
    animation: bestiarium-floater 0.9s ease-out forwards;
}
.bestiarium-floater.is-critical {
    font-size: 38px;
    color: #ffae00;
    text-shadow: 0 2px 0 #fff7d9, 0 0 18px rgba(255,180,0,0.9);
}
.bestiarium-floater.is-miss {
    font-size: 20px;
    color: var(--bestiarium-ink-soft);
}
@keyframes bestiarium-floater {
    0%   { transform: translate(-50%, 0) scale(0.6); opacity: 0; }
    20%  { transform: translate(-50%, -10px) scale(1.1); opacity: 1; }
    100% { transform: translate(-50%, -60px) scale(1.0); opacity: 0; }
}

/* ============================================================
 * INTRO - full screen takeover before a chapter
 * ============================================================ */
.bestiarium-intro {
    position: absolute;
    inset: 0;
    z-index: 50;
    display: flex;
    align-items: center;
    justify-content: center;
    background:
        radial-gradient(circle at center, rgba(58, 36, 18, 0.55) 0%, rgba(20, 10, 4, 0.92) 80%),
        linear-gradient(180deg, #2c1a08 0%, #0e0703 100%);
    opacity: 0;
    transition: opacity 0.5s ease;
    pointer-events: none;
}
.bestiarium-intro.is-visible {
    opacity: 1;
    pointer-events: auto;
}

.bestiarium-intro-bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    filter: blur(14px) brightness(0.5) saturate(1.1);
    opacity: 0;
    transform: scale(1.1);
    animation: bestiarium-intro-bg 9s ease-out forwards;
}
@keyframes bestiarium-intro-bg {
    0%   { opacity: 0; transform: scale(1.1); }
    20%  { opacity: 0.7; }
    100% { opacity: 0.5; transform: scale(1.22); }
}

.bestiarium-intro-particles {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
}
.bestiarium-particle {
    position: absolute;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--bestiarium-gold-bright);
    box-shadow: 0 0 6px rgba(255, 220, 130, 0.9);
    opacity: 0.0;
    animation: bestiarium-particle 8s linear infinite;
}
@keyframes bestiarium-particle {
    0%   { transform: translateY(-20px) translateX(0px); opacity: 0; }
    10%  { opacity: 0.9; }
    100% { transform: translateY(110vh) translateX(40px); opacity: 0; }
}

.bestiarium-intro-frame {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px;
    max-width: 90%;
    max-height: 90%;
    padding: 28px;
    background:
        linear-gradient(180deg, rgba(240, 220, 170, 0.96), rgba(220, 195, 140, 0.96));
    border: 3px double var(--bestiarium-gold);
    border-radius: 4px;
    box-shadow: 0 0 0 4px rgba(155,30,30,0.6), 0 30px 60px rgba(0,0,0,0.6);
    transform: scale(0.92);
    animation: bestiarium-intro-pop 0.6s ease-out forwards;
}
@keyframes bestiarium-intro-pop {
    to { transform: scale(1.0); }
}

.bestiarium-intro-image-wrap {
    overflow: hidden;
    border: 2px solid var(--bestiarium-red);
    box-shadow: 0 0 0 4px var(--bestiarium-gold), 0 0 22px rgba(0,0,0,0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    background: #000;
    aspect-ratio: 1 / 1.4;
}
.bestiarium-intro-image-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform-origin: 50% 30%;
    animation: bestiarium-kenburns 9s ease-out forwards;
}
@keyframes bestiarium-kenburns {
    0%   { transform: scale(1.0) translate(0, 0); }
    100% { transform: scale(1.18) translate(-4%, -3%); }
}

.bestiarium-intro-text {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 14px;
    color: var(--bestiarium-ink);
}

.bestiarium-intro-chapter {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 70px;
    line-height: 1;
    color: var(--bestiarium-red);
    text-shadow: 0 2px 0 #fff7d9, 0 0 22px rgba(155,30,30,0.4);
}
.bestiarium-intro-title {
    font-family: 'Cinzel', serif;
    font-size: 28px;
    margin: 0;
    letter-spacing: 2px;
    color: var(--bestiarium-ink);
    border-bottom: 2px solid var(--bestiarium-gold);
    padding-bottom: 6px;
    min-height: 1.2em;
}
.bestiarium-intro-sub {
    font-family: 'EB Garamond', serif;
    font-style: italic;
    font-size: 16px;
    color: var(--bestiarium-ink-soft);
    margin: 0;
    min-height: 4em;
}

.bestiarium-intro-enter, .bestiarium-intro-skip {
    appearance: none;
    cursor: pointer;
    font-family: 'Cinzel', serif;
    letter-spacing: 3px;
    padding: 12px 20px;
    border-radius: 3px;
    border: 1px solid var(--bestiarium-gold);
    background: linear-gradient(180deg, #cf4242, var(--bestiarium-red));
    color: #fff7d9;
    text-transform: uppercase;
    font-size: 14px;
    align-self: flex-start;
    opacity: 0;
    transform: translateY(8px);
    transition: background 0.15s ease;
}
.bestiarium-intro-enter:hover { background: #ad2828; }
.bestiarium-intro-skip {
    background: transparent;
    border: 1px solid var(--bestiarium-ink-soft);
    color: var(--bestiarium-ink-soft);
    font-size: 11px;
    padding: 6px 12px;
    margin-top: 4px;
}
.bestiarium-intro.is-revealed .bestiarium-intro-enter,
.bestiarium-intro.is-revealed .bestiarium-intro-skip {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.5s ease, transform 0.5s ease, background 0.15s ease;
}

/* WAX SEAL on choices */
.bestiarium-choice {
    overflow: hidden;
}
.bestiarium-choice:hover::after {
    content: "";
    position: absolute;
    right: 10px;
    top: 50%;
    width: 22px;
    height: 22px;
    margin-top: -11px;
    background: radial-gradient(circle at 35% 35%, #d54f4f 0%, var(--bestiarium-red) 50%, #5a0e0e 100%);
    border-radius: 50%;
    box-shadow: 0 0 0 1px var(--bestiarium-ink), 0 2px 6px rgba(0,0,0,0.4);
    animation: bestiarium-flash-gold 0.6s ease-out;
}

/* MOBILE */
@media (max-width: 880px) {
    .bestiarium-hero {
        grid-template-columns: 1fr;
        text-align: center;
    }
    .bestiarium-hero-meta {
        align-items: center;
    }
    .bestiarium-stage {
        grid-template-columns: 1fr;
    }
    .bestiarium-combat-actions {
        grid-template-columns: 1fr;
    }
    .bestiarium-intro-frame {
        grid-template-columns: 1fr;
        max-height: 95%;
        overflow: auto;
    }
    .bestiarium-arena { height: 220px; }
}

/* ============================================================
 * MAIN NAV (Story / Map)
 * ============================================================ */
.bestiarium-mainnav {
    position: relative;
    z-index: 1;
    display: flex;
    gap: 8px;
    margin: 14px 0 0;
}
.bestiarium-mainnav-btn {
    appearance: none;
    cursor: pointer;
    flex: 1;
    padding: 12px 16px;
    font-family: 'Cinzel', serif;
    letter-spacing: 2px;
    text-transform: uppercase;
    font-size: 13px;
    color: var(--bestiarium-ink);
    background: linear-gradient(180deg, #fff5cb, #e7c97a);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px 3px 0 0;
    transition: background 0.15s, transform 0.1s;
}
.bestiarium-mainnav-btn:hover { background: linear-gradient(180deg, #fff7d9, #efd590); }
.bestiarium-mainnav-btn.is-active {
    background: linear-gradient(180deg, #fff7d9, #d9bd80);
    border-bottom-color: transparent;
    box-shadow: inset 0 -3px 0 var(--bestiarium-red);
    transform: translateY(-1px);
}

/* ============================================================
 * MAP VIEW
 * ============================================================ */
.bestiarium-mapview {
    position: relative;
    z-index: 1;
    margin-top: 12px;
    padding: 14px 18px 18px;
    background: rgba(255, 247, 217, 0.78);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
    gap: 18px;
}
.bestiarium-mapview .bestiarium-map-head {
    grid-column: 1 / -1;
    border-bottom: 1px solid rgba(184,134,44,0.5);
    padding-bottom: 8px;
    margin-bottom: 4px;
}
.bestiarium-section-title {
    margin: 0;
    font-family: 'Cinzel', serif;
    font-weight: 800;
    font-size: 20px;
    color: var(--bestiarium-ink);
    letter-spacing: 1px;
}
.bestiarium-section-text {
    margin: 4px 0 0;
    font-size: 14px;
    color: var(--bestiarium-ink-soft);
    font-style: italic;
}
.bestiarium-map-status {
    margin: 4px 0 0;
    font-size: 12px;
    color: var(--bestiarium-red);
    min-height: 1em;
}

.bestiarium-map-wrap {
    position: relative;
    background:
        radial-gradient(circle at 75% 70%, rgba(28,58,120,0.12), transparent 50%),
        repeating-linear-gradient(45deg, rgba(184,134,44,0.06) 0 8px, transparent 8px 16px),
        #efddb4;
    border: 2px solid var(--bestiarium-gold);
    border-radius: 3px;
    box-shadow: inset 0 0 18px rgba(58,36,18,0.3), 0 4px 12px rgba(58,36,18,0.2);
    min-height: 360px;
    overflow: hidden;
}
.bestiarium-map-svg {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 360px;
}
.bestiarium-map-land  { fill: #eecc88; stroke: #9b6b30; stroke-width: 0.4; }
.bestiarium-map-sea   { fill: #6f8fb8; stroke: #2c4c7a; stroke-width: 0.4; }
.bestiarium-map-wave  { fill: none; stroke: #c4d6ec; stroke-width: 0.4; opacity: 0.55; }

.bestiarium-map-loc { cursor: pointer; }
.bestiarium-map-halo {
    fill: rgba(155, 30, 30, 0.0);
    stroke: rgba(155, 30, 30, 0.4);
    stroke-width: 0.3;
    transition: fill 0.2s ease, stroke 0.2s ease;
}
.bestiarium-map-loc:hover .bestiarium-map-halo,
.bestiarium-map-loc.is-selected .bestiarium-map-halo {
    fill: rgba(155, 30, 30, 0.15);
    stroke: var(--bestiarium-red);
}
.bestiarium-map-dot {
    fill: #58210e;
    stroke: var(--bestiarium-gold-bright);
    stroke-width: 0.3;
}
.bestiarium-map-loc.is-me .bestiarium-map-dot {
    fill: var(--bestiarium-red);
    stroke: #fff;
    stroke-width: 0.5;
    animation: bestiarium-map-me 1.4s ease-in-out infinite;
}
@keyframes bestiarium-map-me {
    0%, 100% { r: 1.8; }
    50%      { r: 2.6; }
}
.bestiarium-map-label {
    font-family: 'Cinzel', serif;
    font-size: 2.4px;
    fill: #3a2412;
    pointer-events: none;
}

.bestiarium-map-marker { pointer-events: none; }
.bestiarium-map-marker circle { stroke: #3a2412; stroke-width: 0.25; }
.bestiarium-map-marker text   { font-family: 'Cinzel', serif; font-size: 1.8px; fill: #fff7d9; }
.bestiarium-map-marker.is-relic   circle { fill: var(--bestiarium-gold-bright); }
.bestiarium-map-marker.is-beast   circle { fill: #6a1818; }
.bestiarium-map-marker.is-player  circle { fill: #1c3a78; }
.bestiarium-map-marker.is-ability circle { fill: #2d6e40; }
.bestiarium-map-abilities { margin: 4px 0 0; padding: 0; list-style: none; }
.bestiarium-map-abilities li { font-size: 13px; padding: 4px 0; border-bottom: 1px solid rgba(45,110,64,0.15); color: #2d6e40; line-height: 1.4; }
.bestiarium-map-abilities li:last-child { border-bottom: none; }

.bestiarium-map-panel {
    background: rgba(255,247,217,0.85);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    padding: 12px 14px;
    max-height: 480px;
    overflow-y: auto;
}
.bestiarium-map-panel-empty { font-style: italic; color: var(--bestiarium-ink-soft); }
.bestiarium-map-panel-head h3 {
    margin: 0 0 4px;
    font-family: 'Cinzel', serif;
    font-size: 16px;
    color: var(--bestiarium-ink);
}
.bestiarium-map-lore { margin: 0 0 8px; font-style: italic; color: var(--bestiarium-ink-soft); font-size: 13px; }
.bestiarium-map-here {
    display: inline-block;
    margin: 4px 0;
    padding: 3px 8px;
    background: var(--bestiarium-blue);
    color: #fff7d9;
    border-radius: 2px;
    font-family: 'Cinzel', serif;
    letter-spacing: 1px;
    font-size: 11px;
    text-transform: uppercase;
}
.bestiarium-map-section {
    margin-top: 12px;
    padding-top: 8px;
    border-top: 1px dashed rgba(184,134,44,0.4);
}
.bestiarium-map-section > strong {
    display: block;
    font-family: 'Cinzel', serif;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-size: 11px;
    color: var(--bestiarium-red);
    margin-bottom: 6px;
}
.bestiarium-map-empty { margin: 0; font-style: italic; font-size: 13px; color: var(--bestiarium-ink-soft); }
.bestiarium-map-players, .bestiarium-map-relics, .bestiarium-map-beasts, .bestiarium-map-messages {
    list-style: none; padding: 0; margin: 0;
}
.bestiarium-map-players li, .bestiarium-map-relics li, .bestiarium-map-beasts li, .bestiarium-map-messages li {
    padding: 6px 8px;
    background: rgba(255,247,217,0.7);
    border: 1px solid rgba(184,134,44,0.35);
    border-radius: 2px;
    margin-bottom: 4px;
    font-size: 13px;
    line-height: 1.4;
}
.bestiarium-map-players li {
    display: flex; justify-content: space-between; align-items: baseline;
}
.bestiarium-pl-clickable {
    cursor: pointer;
    transition: background 0.15s ease, transform 0.1s ease;
}
.bestiarium-pl-clickable:hover {
    background: rgba(184, 134, 44, 0.18);
    transform: translateX(2px);
}

/* Peer profile modal */
.bestiarium-peer-modal {
    position: fixed; inset: 0; z-index: 9993;
    background: rgba(20, 10, 4, 0.86);
    backdrop-filter: blur(4px);
    display: flex; align-items: flex-start; justify-content: center;
    padding: 4vh 12px; overflow-y: auto;
}
.bestiarium-peer-body {
    position: relative;
    width: min(640px, 100%);
    background: rgba(255, 247, 217, 0.92);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.45), 0 20px 50px rgba(0,0,0,0.6);
    padding: 22px 26px;
}
.bestiarium-peer-loading,
.bestiarium-peer-error {
    text-align: center;
    font-style: italic;
    color: var(--bestiarium-ink-soft);
    padding: 28px;
}
.bestiarium-peer-close {
    position: absolute; top: 6px; right: 10px;
    background: transparent; border: none; cursor: pointer;
    font-size: 28px; color: var(--bestiarium-ink-soft);
    z-index: 2;
}
.bestiarium-peer-head {
    display: flex; gap: 14px; align-items: center;
    padding-bottom: 12px; margin-bottom: 14px;
    border-bottom: 1px solid rgba(184,134,44,0.5);
}
.bestiarium-peer-avatar {
    width: 80px; height: 80px;
    border-radius: 50%;
    overflow: hidden;
    background: linear-gradient(180deg, #3a2010, #2a1808);
    border: 3px solid var(--bestiarium-gold);
    box-shadow: 0 0 0 2px var(--bestiarium-red);
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
}
.bestiarium-peer-avatar img { width: 100%; height: 100%; object-fit: cover; }
.bestiarium-peer-avatar-empty {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 32px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-peer-head-text { flex: 1 1 auto; min-width: 0; }
.bestiarium-peer-head-text h2 {
    margin: 0 0 4px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 28px;
    color: var(--bestiarium-red);
}
.bestiarium-peer-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.bestiarium-peer-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
    margin-bottom: 14px;
}
.bestiarium-peer-section { margin-top: 16px; }
.bestiarium-peer-section h3 {
    margin: 0 0 8px;
    font-family: 'Cinzel', serif;
    font-size: 14px;
    letter-spacing: 1px;
    text-transform: uppercase;
    border-bottom: 1px dashed rgba(184,134,44,0.5);
    padding-bottom: 4px;
    color: var(--bestiarium-ink);
}
.bestiarium-peer-equipment-slot {
    display: block;
    margin-top: 3px;
    color: var(--bestiarium-ink-soft);
    font-size: 11px;
    line-height: 1.25;
}
@media (max-width: 720px) {
    .bestiarium-peer-grid { grid-template-columns: repeat(2, 1fr); }
}
.bestiarium-pl-level {
    font-family: 'Cinzel', serif;
    font-size: 11px;
    color: var(--bestiarium-blue);
    letter-spacing: 1px;
}
.bestiarium-map-relics .bestiarium-relic-head {
    display: flex; justify-content: space-between; align-items: center; gap: 8px;
}
.bestiarium-relic-lore { margin: 4px 0 0; font-size: 12px; font-style: italic; color: var(--bestiarium-ink-soft); }
.bestiarium-msg-author { font-weight: 700; color: var(--bestiarium-red); margin-right: 6px; font-family: 'Cinzel', serif; font-size: 12px; }
.bestiarium-map-postform { display: flex; gap: 6px; margin-top: 8px; }
.bestiarium-map-postform input {
    flex: 1; padding: 6px 8px; border: 1px solid var(--bestiarium-gold); background: #fff7d9; font-family: inherit; font-size: 13px;
}
.bestiarium-map-locked {
    padding: 24px;
    font-family: 'Cinzel', serif;
    font-size: 14px;
    text-align: center;
    color: var(--bestiarium-ink);
}
.bestiarium-map-locked a { margin-left: 10px; }

/* ============================================================
 * AI DIALOG MODAL
 * ============================================================ */
.bestiarium-dialog {
    position: absolute;
    inset: 0;
    z-index: 60;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(20, 10, 4, 0.78);
    backdrop-filter: blur(4px);
}
.bestiarium-dialog-body {
    position: relative;
    width: min(560px, 92%);
    max-height: 88%;
    display: flex;
    flex-direction: column;
    background: linear-gradient(180deg, rgba(240,220,170,0.97), rgba(220,195,140,0.97));
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 20px 50px rgba(0,0,0,0.6);
    padding: 18px 20px 16px;
}
.bestiarium-dialog-close {
    position: absolute; top: 8px; right: 10px;
    background: transparent; border: none; cursor: pointer;
    font-size: 26px; color: var(--bestiarium-ink-soft);
}
.bestiarium-dialog-eyebrow {
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 3px;
    text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-dialog-title {
    margin: 2px 0 8px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-red);
}
.bestiarium-dialog-log {
    flex: 1;
    overflow-y: auto;
    background: rgba(255,247,217,0.7);
    border: 1px dashed var(--bestiarium-gold);
    padding: 10px;
    margin-bottom: 10px;
    min-height: 200px;
}
.bestiarium-dialog-turn {
    margin: 0 0 8px;
    padding: 6px 10px;
    border-radius: 2px;
    font-size: 14px;
    line-height: 1.4;
}
.bestiarium-dialog-turn.is-user {
    background: rgba(28, 58, 120, 0.1);
    border-left: 3px solid var(--bestiarium-blue);
}
.bestiarium-dialog-turn.is-assistant {
    background: rgba(155, 30, 30, 0.07);
    border-left: 3px solid var(--bestiarium-red);
    font-family: 'EB Garamond', serif;
    font-style: normal;
}
.bestiarium-dialog-turn-body { white-space: pre-wrap; }
.bestiarium-dialog-stage-direction {
    font-style: italic;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-dialog-turn.is-thinking { opacity: 0.7; }
.bestiarium-dialog-form { display: flex; gap: 6px; }
.bestiarium-dialog-form input {
    flex: 1; padding: 8px 10px; border: 1px solid var(--bestiarium-gold); background: #fff7d9; font-family: inherit; font-size: 14px;
}
.bestiarium-dialog-hint { margin: 8px 0 0; font-size: 12px; font-style: italic; color: var(--bestiarium-ink-soft); }

/* Combat stats row (above attack/pray buttons) */
.bestiarium-beast-stats-row {
    display: flex; justify-content: center; gap: 12px;
    margin: 6px 0 10px;
    font-family: 'Cinzel', serif;
    font-size: 13px;
    color: var(--bestiarium-ink);
}
.bestiarium-beast-stats-row span {
    padding: 2px 8px;
    background: rgba(255,247,217,0.8);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
}

/* Prayer gesture overlay */
.bestiarium-gesture-hint {
    position: absolute;
    top: 8px; left: 50%;
    transform: translateX(-50%);
    background: rgba(20,10,4,0.85);
    color: var(--bestiarium-gold-bright);
    padding: 4px 10px;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 2px;
    z-index: 2;
}

/* v2.1.22: Death overlay is scoped to the map view container so the player
 * can still navigate to Profile / Shop / About / Forum while dead. Anchored
 * by inline `position:relative` set on the host by death.js. */
.bestiarium-death-modal {
    position: absolute; inset: 0; z-index: 100;
    background: radial-gradient(circle at center, rgba(50, 10, 8, 0.92) 0%, #000 90%);
    display: flex; align-items: center; justify-content: center;
    backdrop-filter: blur(6px);
    color: #f5e2b0;
    border-radius: 8px;
}
.bestiarium-death-body {
    width: min(540px, 92%);
    max-height: calc(100% - 24px);
    overflow-y: auto;
    overscroll-behavior: contain;
    box-sizing: border-box;
    text-align: center;
    padding: 30px 32px;
    background:
        radial-gradient(circle at 30% 20%, rgba(155, 30, 30, 0.2), transparent 60%),
        linear-gradient(180deg, #2a1010, #150707);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.6), 0 30px 80px rgba(0,0,0,0.8);
}
.bestiarium-death-skull {
    font-size: 80px;
    color: var(--bestiarium-gold-bright);
    text-shadow: 0 0 20px rgba(255, 200, 80, 0.4);
    animation: bestiarium-death-pulse 3s ease-in-out infinite;
}
@keyframes bestiarium-death-pulse {
    0%, 100% { opacity: 0.85; transform: scale(1); }
    50%      { opacity: 1; transform: scale(1.06); }
}
.bestiarium-death-body h2 {
    margin: 8px 0 12px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 36px;
    color: var(--bestiarium-gold-bright);
    text-shadow: 0 0 18px rgba(255, 180, 50, 0.5);
}
.bestiarium-death-story {
    margin: 0 0 18px;
    font-style: italic;
    color: #f5e2b0;
    line-height: 1.55;
}
.bestiarium-death-beginner-warning {
    margin: 0 auto 18px;
    padding: 10px 12px;
    max-width: 460px;
    border: 1px solid rgba(246, 200, 79, 0.72);
    border-left: 4px solid var(--bestiarium-gold-bright);
    border-radius: 4px;
    background: rgba(106, 24, 24, 0.48);
    color: #fff1c4;
    font-weight: 700;
    line-height: 1.45;
}
.bestiarium-death-timer {
    font-family: 'Cinzel', serif;
    font-size: 36px;
    letter-spacing: 4px;
    color: var(--bestiarium-gold-bright);
    margin: 18px 0;
    padding: 10px 18px;
    border: 2px solid var(--bestiarium-gold);
    display: inline-block;
    border-radius: 4px;
    background: rgba(0, 0, 0, 0.4);
}
.bestiarium-death-pay {
    display: flex; gap: 8px; align-items: center; justify-content: center; flex-wrap: wrap;
    margin: 16px 0 12px;
}
.bestiarium-death-pay label {
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 1px;
    color: #d8c094;
}
.bestiarium-death-pay input {
    width: 80px;
    font-family: inherit; font-size: 16px;
    padding: 6px 8px;
    background: #fff7d9;
    color: var(--bestiarium-ink);
    border: 1px solid var(--bestiarium-gold);
}
.bestiarium-death-note {
    margin: 6px 0 0;
    font-size: 12px;
    color: #b89060;
    font-style: italic;
}

/* Life stat clickable hint */
.bestiarium-stat.is-clickable {
    cursor: pointer;
    transition: background 0.15s ease, transform 0.1s ease;
}
.bestiarium-stat.is-clickable:hover {
    background: rgba(155,30,30,0.12);
    transform: translateY(-1px);
}

/* Meditation modal */
.bestiarium-meditation-modal {
    position: fixed; inset: 0; z-index: 9999;
    background: rgba(20,10,4,0.85);
    backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 12px;
}
.bestiarium-meditation-body {
    width: min(440px, 100%);
    background:
        radial-gradient(circle at 30% 20%, rgba(184,134,44,0.2), transparent 60%),
        linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold);
    padding: 22px 26px;
    box-shadow: 0 0 0 4px rgba(155,30,30,0.45), 0 20px 50px rgba(0,0,0,0.6);
    text-align: center;
}
/* v3.87.0: plague banner + countdown inside the Life popup. */
.bestiarium-plague-banner {
    margin: 0 0 14px;
    padding: 10px 12px;
    border: 2px solid #5c6b2c;
    border-radius: 8px;
    background: linear-gradient(180deg, #d7e2b0, #b9c98a);
    color: #2c350f;
    font-size: 14px;
    line-height: 1.5;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.4);
}
.bestiarium-plague-banner .bestiarium-plague-clock {
    font-variant-numeric: tabular-nums;
    letter-spacing: 1px;
    font-size: 16px;
}
.bestiarium-meditation-body header {
    position: relative;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--bestiarium-gold);
}
.bestiarium-med-eyebrow {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 3px;
    text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-meditation-body h3 {
    margin: 4px 0 0;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 28px;
    color: var(--bestiarium-red);
}
.bestiarium-meditation-close {
    position: absolute; top: -4px; right: -4px;
    background: transparent; border: none; cursor: pointer;
    font-size: 24px; color: var(--bestiarium-ink-soft);
}
.bestiarium-med-story {
    margin: 0 0 12px;
    font-style: italic;
    font-size: 14px;
    line-height: 1.5;
    color: var(--bestiarium-ink);
}
.bestiarium-med-info, .bestiarium-med-stat {
    font-family: 'Cinzel', serif;
    font-size: 14px;
    letter-spacing: 1px;
    color: var(--bestiarium-red);
    margin: 8px 0;
}
.bestiarium-med-full {
    color: var(--bestiarium-ink-soft);
    font-style: italic;
}
.bestiarium-med-slider {
    display: block;
    margin: 16px 0;
    font-family: 'Cinzel', serif;
    font-size: 13px;
    text-align: center;
}
.bestiarium-med-slider input {
    width: 100%;
    margin-top: 8px;
}
.bestiarium-meditation-actions {
    display: flex; gap: 8px; justify-content: center; margin-top: 12px;
}
.bestiarium-med-pulse {
    font-size: 48px;
    color: var(--bestiarium-red);
    animation: bestiarium-med-beat 1.6s ease-in-out infinite;
    margin: 8px 0;
}
@keyframes bestiarium-med-beat {
    0%, 100% { transform: scale(1.0); opacity: 0.6; }
    50%      { transform: scale(1.18); opacity: 1; }
}
.bestiarium-med-timer {
    font-family: 'Cinzel', serif;
    font-size: 13px;
    letter-spacing: 2px;
    color: var(--bestiarium-ink-soft);
    margin-bottom: 8px;
}

/* v1.7 admin tools */
.bestiarium-map-admin {
    background: rgba(28,58,120,0.08);
    border: 1px dashed var(--bestiarium-blue);
    padding: 8px 10px;
}
.bestiarium-map-admin-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.bestiarium-loc-modal {
    position: fixed; inset: 0; z-index: 9999;
    background: rgba(20,10,4,0.85);
    backdrop-filter: blur(4px);
    display: flex; align-items: flex-start; justify-content: center;
    padding: 4vh 12px; overflow-y: auto;
}
.bestiarium-loc-modal-body {
    width: min(640px, 100%);
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold);
    padding: 18px 22px;
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 20px 50px rgba(0,0,0,0.6);
}
.bestiarium-loc-modal-body header {
    display: flex; justify-content: space-between; align-items: center;
    margin-bottom: 12px; border-bottom: 1px solid var(--bestiarium-gold); padding-bottom: 6px;
}
.bestiarium-loc-modal-body h3 {
    margin: 0;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 24px; color: var(--bestiarium-red);
}
.bestiarium-loc-modal-close {
    background: transparent; border: none; cursor: pointer; font-size: 24px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-loc-modal-body form {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
.bestiarium-loc-modal-body label {
    display: flex; flex-direction: column; gap: 4px;
    font-family: 'Cinzel', serif; font-size: 11px;
    letter-spacing: 1px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-loc-modal-body label input,
.bestiarium-loc-modal-body label textarea,
.bestiarium-loc-modal-body label select {
    font-family: inherit; font-size: 14px;
    padding: 6px 8px;
    background: #fff7d9;
    border: 1px solid var(--bestiarium-gold);
    color: var(--bestiarium-ink);
}
.bestiarium-loc-modal-body textarea { min-height: 60px; resize: vertical; }
.bestiarium-loc-modal-body fieldset {
    grid-column: 1 / -1;
    border: 1px solid rgba(184,134,44,0.5);
    padding: 8px 12px;
    display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.bestiarium-loc-modal-body fieldset legend {
    font-family: 'Cinzel', serif; font-size: 12px;
    letter-spacing: 2px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft); padding: 0 6px;
}
.bestiarium-loc-modal-body fieldset label[for], .bestiarium-loc-modal-body fieldset label {
    grid-column: span 1;
}
.bestiarium-loc-modal-body fieldset label textarea { grid-column: 1 / -1; }
.bestiarium-loc-modal-body .bestiarium-location-services {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-height: 240px;
    overflow-y: auto;
    align-content: start;
}
.bestiarium-loc-modal-body .bestiarium-location-service-option {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 7px;
    min-width: 0;
    padding: 5px 6px;
    background: rgba(255,247,217,0.65);
    border: 1px solid rgba(184,134,44,0.35);
    text-transform: none;
    letter-spacing: 0;
    font-size: 12px;
    cursor: pointer;
}
.bestiarium-loc-modal-body .bestiarium-location-service-option input {
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    margin: 0;
    padding: 0;
}
.bestiarium-loc-modal-body .bestiarium-location-service-option span {
    min-width: 0;
    overflow-wrap: anywhere;
}
@media (max-width: 600px) {
    .bestiarium-loc-modal-body .bestiarium-location-services { grid-template-columns: minmax(0, 1fr); }
}
.bestiarium-loc-modal-image { grid-column: 1 / -1; }
.bestiarium-loc-modal-image img {
    max-width: 100%; max-height: 240px; object-fit: cover;
    border: 2px solid var(--bestiarium-gold);
}
.bestiarium-loc-modal-actions { grid-column: 1 / -1; display: flex; gap: 8px; justify-content: flex-end; }
.bestiarium-ai-spawn-modal-body { width: min(700px, 100%); }
.bestiarium-loc-modal-body .bestiarium-ai-spawn-form {
    grid-template-columns: minmax(0, 1fr);
}
.bestiarium-ai-spawn-form > * { grid-column: 1 / -1; }
.bestiarium-ai-spawn-location {
    margin: 0;
    font-family: 'Cinzel', serif;
    font-size: 15px;
    font-weight: 700;
    color: var(--bestiarium-ink);
}
.bestiarium-ai-spawn-context {
    margin: 0;
    line-height: 1.5;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-loc-modal-body .bestiarium-ai-spawn-form textarea {
    width: 100%;
    min-height: 170px;
    box-sizing: border-box;
    line-height: 1.45;
}
.bestiarium-ai-spawn-status {
    min-height: 22px;
    margin: 0;
    color: var(--bestiarium-red);
    font-weight: 700;
}

/* Live illumination card on each location */
.bestiarium-loc-illum {
    position: relative;
    width: 100%;
    aspect-ratio: 3 / 2;
    overflow: hidden;
    background: #2a1808;
    border: 2px solid var(--bestiarium-gold);
    box-shadow: inset 0 0 18px rgba(0,0,0,0.5);
    margin-bottom: 10px;
}
.bestiarium-loc-illum img {
    width: 100%; height: 100%; object-fit: cover;
    transform-origin: 50% 50%;
    animation: bestiarium-illum-ken 12s ease-in-out infinite alternate;
}
@keyframes bestiarium-illum-ken {
    0%   { transform: scale(1.0) translate(0, 0); }
    100% { transform: scale(1.12) translate(-3%, -2%); }
}
.bestiarium-loc-illum:hover img { animation-play-state: paused; transform: scale(1.16) translate(-3%, -2%); transition: transform 0.4s ease; }
.bestiarium-loc-illum-sea,
.bestiarium-loc-illum-land,
.bestiarium-loc-illum-cave {
    display: flex; align-items: center; justify-content: center;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 80px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-loc-illum-sea { background: linear-gradient(180deg, #2c4c7a, #15263e); }
.bestiarium-loc-illum-cave { background: linear-gradient(180deg, #3a2010, #150a05); }
.bestiarium-loc-illum-land { background: linear-gradient(180deg, #57311a, #2a1808); }

.bestiarium-purchase-modal {
    position: fixed; inset: 0; z-index: 9994;
    background: rgba(20, 10, 4, 0.86);
    backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 12px;
}
.bestiarium-purchase-body {
    position: relative;
    width: min(440px, 100%);
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.45), 0 20px 50px rgba(0,0,0,0.6);
    overflow: hidden;
}
.bestiarium-purchase-modal.is-success .bestiarium-purchase-body {
    box-shadow: 0 0 0 4px rgba(44,76,32,0.55), 0 20px 50px rgba(0,0,0,0.6);
}
.bestiarium-purchase-close {
    position: absolute; top: 6px; right: 10px;
    background: transparent; border: none; cursor: pointer;
    font-size: 28px; color: var(--bestiarium-ink-soft);
    z-index: 2;
}
.bestiarium-purchase-image {
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: linear-gradient(180deg, #3a2010, #2a1808);
    border-bottom: 2px solid var(--bestiarium-gold);
}
.bestiarium-purchase-image img { width: 100%; height: 100%; object-fit: cover; }
.bestiarium-purchase-image-empty {
    display: flex; align-items: center; justify-content: center;
    color: var(--bestiarium-gold-bright);
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 80px;
}
.bestiarium-purchase-text {
    padding: 14px 22px 18px;
    text-align: center;
}
.bestiarium-purchase-text h3 {
    margin: 0 0 8px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-red);
}
.bestiarium-purchase-upgrade {
    display: inline-block;
    margin: 4px 0;
    padding: 2px 10px;
    background: #2c4c20; color: #fff7d9;
    border-radius: 999px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
}
.bestiarium-purchase-lore {
    margin: 6px 0;
    font-style: italic;
    font-size: 14px;
    color: var(--bestiarium-ink);
    line-height: 1.45;
}
.bestiarium-purchase-price {
    margin: 8px 0 4px;
    font-family: 'Cinzel', serif;
    font-size: 18px;
    color: #8a6a18;
    letter-spacing: 2px;
}
.bestiarium-purchase-bag, .bestiarium-purchase-meta {
    margin: 4px 0;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
    letter-spacing: 1px;
}
.bestiarium-purchase-actions {
    display: flex; gap: 8px; justify-content: center; margin-top: 12px;
}
.bestiarium-purchase-warn {
    margin: 6px 0 0;
    font-size: 12px;
    color: var(--bestiarium-red);
    font-style: italic;
}
.bestiarium-heal-slider {
    margin: 14px 0;
}
.bestiarium-heal-slider label {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
    margin-bottom: 6px;
}
.bestiarium-heal-slider input[type="range"] {
    width: 100%;
}
.bestiarium-heal-stats {
    display: flex; justify-content: space-around; gap: 10px;
    margin-top: 8px;
    font-family: 'Cinzel', serif;
}
.bestiarium-heal-stats strong {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-red);
}

/* Service portrait above heal button */
.bestiarium-service-portrait {
    width: 96px; height: 96px;
    margin: 0 auto 8px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid var(--bestiarium-gold);
    box-shadow: 0 0 0 2px var(--bestiarium-red), 0 4px 10px rgba(0,0,0,0.3);
}
.bestiarium-service-portrait img { width: 100%; height: 100%; object-fit: cover; }
.bestiarium-btn-small {
    font-size: 10px;
    padding: 4px 8px;
    margin-top: 6px;
    letter-spacing: 1px;
}

.bestiarium-market-grid {
    list-style: none; padding: 0; margin: 6px 0 0;
    display: grid; gap: 8px;
}
.bestiarium-market-card {
    display: grid; grid-template-columns: 56px 1fr; gap: 10px;
    background: rgba(255, 247, 217, 0.85);
    border: 1px solid var(--bestiarium-gold);
    padding: 8px; border-radius: 3px;
    cursor: pointer;
    transition: transform 0.1s ease, box-shadow 0.1s ease, border-color 0.15s ease;
}
.bestiarium-market-card:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(58, 36, 18, 0.3);
    border-color: var(--bestiarium-red);
}
.bestiarium-market-card img {
    width: 56px; height: 56px; object-fit: cover;
    border: 1px solid var(--bestiarium-gold);
}
.bestiarium-market-card-fallback {
    width: 56px; height: 56px;
    background: linear-gradient(180deg, #3a2010, #2a1808);
    color: var(--bestiarium-gold-bright);
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 32px;
    display: flex; align-items: center; justify-content: center;
}
.bestiarium-market-body {
    display: flex; flex-direction: column; gap: 2px;
    font-family: 'Cinzel', serif; font-size: 12px;
    color: var(--bestiarium-ink);
}
.bestiarium-market-body strong { font-size: 13px; color: var(--bestiarium-red); }
.bestiarium-market-body small { color: var(--bestiarium-ink-soft); font-style: italic; font-size: 11px; }
.bestiarium-market-effect {
    align-self: flex-start;
    background: #2c4c20; color: #fff7d9;
    padding: 1px 6px; border-radius: 999px; font-size: 10px;
    letter-spacing: 1px;
}
.bestiarium-market-price {
    align-self: flex-end;
    color: #8a6a18; font-weight: 700; font-size: 13px;
}
.bestiarium-market-sell {
    margin-top: 14px;
    padding-top: 10px;
    border-top: 1px dashed rgba(184,134,44,0.45);
}
.bestiarium-market-sell > strong {
    display: block;
    font-family: 'Cinzel', serif;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-size: 11px;
    color: #2c4c20;
    margin-bottom: 6px;
}
.bestiarium-market-card.is-sell {
    background: rgba(255,247,217,0.7);
    border-color: #2c4c20;
}
.bestiarium-market-card.is-sell:hover {
    border-color: #1d3415;
    box-shadow: 0 6px 14px rgba(44,76,32,0.35);
}
.bestiarium-market-card.is-sell .bestiarium-market-price {
    color: #2c4c20;
}

.bestiarium-map-banned {
    margin: 4px 0 0;
    padding: 6px 8px;
    font-size: 13px;
    background: rgba(155,30,30,0.12);
    border: 1px dashed var(--bestiarium-red);
    color: var(--bestiarium-red);
    font-style: italic;
}

/* Zoom controls */
.bestiarium-map-controls {
    position: absolute; top: 10px; right: 10px;
    display: flex; gap: 4px; z-index: 4;
}
.bestiarium-map-controls button {
    width: 30px; height: 30px;
    border-radius: 4px; border: 1px solid var(--bestiarium-gold);
    background: rgba(255,247,217,0.92);
    cursor: pointer;
    font-family: 'Cinzel', serif; font-size: 16px;
}
/* v3.71.0: the 🔄 manual-refresh button spins while a fetch is in flight. */
.bestiarium-map-controls button[data-map-refresh] { font-size: 15px; }
.bestiarium-map-controls button.bestiarium-map-refreshing {
    animation: bestiarium-map-spin 0.8s linear infinite;
    opacity: 0.7; cursor: progress;
}
@keyframes bestiarium-map-spin { to { transform: rotate(360deg); } }

/* Lightweight live-map heartbeat; it never captures map gestures. */
.bestiarium-map-live-indicator {
    position: absolute;
    left: 10px;
    bottom: 10px;
    z-index: 5;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-width: 42px;
    padding: 3px 7px;
    border: 1px solid rgba(246, 200, 79, 0.65);
    border-radius: 4px;
    background: rgba(20, 12, 4, 0.72);
    color: #fff1c7;
    font-size: 10px;
    line-height: 1;
    letter-spacing: 0;
    font-variant-numeric: tabular-nums;
    pointer-events: none;
    opacity: 0.78;
}
.bestiarium-map-live-dot {
    width: 7px;
    height: 7px;
    flex: 0 0 7px;
    border-radius: 50%;
    background: #67c878;
    box-shadow: 0 0 0 2px rgba(103, 200, 120, 0.18);
}
.bestiarium-map-live-indicator.is-beating .bestiarium-map-live-dot {
    animation: bestiarium-map-live-beat 0.6s ease-out;
}
.bestiarium-map-live-indicator.is-stale .bestiarium-map-live-dot {
    background: #b88b58;
    box-shadow: none;
}
.bestiarium-map-live-indicator.is-paused { opacity: 0.5; }
@keyframes bestiarium-map-live-beat {
    0% { transform: scale(1); box-shadow: 0 0 0 2px rgba(103, 200, 120, 0.18); }
    45% { transform: scale(1.35); box-shadow: 0 0 0 6px rgba(103, 200, 120, 0.18); }
    100% { transform: scale(1); box-shadow: 0 0 0 2px rgba(103, 200, 120, 0.08); }
}
@keyframes bestiarium-map-live-location {
    0%, 100% { fill: rgba(255, 200, 80, 0); stroke-width: 0.25; }
    45% { fill: rgba(255, 200, 80, 0.38); stroke: #fff1a6; stroke-width: 0.75; }
}
.bestiarium-map-loc.is-live-pulse .bestiarium-map-halo {
    animation: bestiarium-map-live-location 0.9s ease-in-out 2;
}
@media (prefers-reduced-motion: reduce) {
    .bestiarium-map-live-indicator.is-beating .bestiarium-map-live-dot,
    .bestiarium-map-loc.is-live-pulse .bestiarium-map-halo { animation: none; }
}

/* Map glyph */
.bestiarium-map-glyph {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 2.6px;
    fill: var(--bestiarium-parchment);
    pointer-events: none;
}

/* Inventory list */
.bestiarium-map-inventory { list-style: none; padding: 0; margin: 0; }
.bestiarium-map-inventory li {
    display: flex; justify-content: space-between; align-items: center; gap: 8px;
    padding: 6px 8px; margin-bottom: 4px;
    background: rgba(255,247,217,0.85);
    border: 1px solid rgba(184,134,44,0.4);
    font-size: 13px;
}

/* Create-location form */
.bestiarium-map-create summary { cursor: pointer; padding: 6px 0; }
.bestiarium-map-create form { display: grid; gap: 8px; padding-top: 8px; }
.bestiarium-map-create label {
    display: grid; gap: 4px;
    font-family: 'Cinzel', serif; font-size: 11px;
    letter-spacing: 1px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-map-create input,
.bestiarium-map-create textarea {
    font-family: inherit; font-size: 14px;
    padding: 6px 8px;
    background: #fff7d9;
    border: 1px solid var(--bestiarium-gold);
    color: var(--bestiarium-ink);
}
.bestiarium-map-create textarea { min-height: 60px; resize: vertical; }

/* Dialog action pills */
.bestiarium-dialog-actions { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }
.bestiarium-dialog-action {
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1px;
    padding: 3px 8px;
    border-radius: 999px;
    background: var(--bestiarium-blue);
    color: #fff7d9;
}
.bestiarium-dialog-action.is-kick_from_chat { background: var(--bestiarium-red); }
.bestiarium-dialog-action.is-give_relic    { background: var(--bestiarium-gold); color: var(--bestiarium-ink); }
.bestiarium-dialog-action.is-start_combat  { background: #6a1818; }
.bestiarium-dialog-action.is-bless         { background: #2a6a4a; }

/* Beast arena (map combat) */
.bestiarium-beast-arena-overlay {
    position: fixed; inset: 0; z-index: 9999;
    display: flex; align-items: center; justify-content: center;
    background: rgba(20,10,4,0.82);
    backdrop-filter: blur(4px);
    padding: 12px;
    overflow-y: auto;
}
.bestiarium-beast-arena {
    width: min(560px, 100%);
    max-height: calc(100vh - 24px);
    display: flex;
    flex-direction: column;
    background: linear-gradient(180deg, rgba(240,220,170,0.98), rgba(220,195,140,0.98));
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 20px 50px rgba(0,0,0,0.6);
    padding: 12px 14px;
    color: var(--bestiarium-ink);
    /* v3.76.6: scroll instead of clipping — a long lore used to push the
       Attack/Pray/Flee buttons off the bottom and they were lost. */
    overflow-y: auto;
}
.bestiarium-beast-arena-head {
    flex: 0 0 auto;
    display: flex; justify-content: space-between;
    font-family: 'Cinzel', serif; letter-spacing: 2px;
    margin-bottom: 8px;
    padding-bottom: 6px;
    border-bottom: 1px solid rgba(184,134,44,0.5);
}
.bestiarium-beast-portrait {
    flex: 0 0 auto;
    max-height: 150px;
}
.bestiarium-beast-lore {
    /* v3.76.6: long lore no longer pushes the action buttons off-screen — it
       caps its own height and scrolls. */
    flex: 0 1 auto;
    max-height: 84px;
    overflow-y: auto;
}
.bestiarium-beast-arena-stage {
    flex: 0 0 auto;
    position: relative;
    height: 180px;
    background:
        radial-gradient(ellipse at center, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0) 70%),
        repeating-linear-gradient(45deg, rgba(184,134,44,0.08) 0 8px, transparent 8px 16px);
    border: 2px solid var(--bestiarium-red);
    border-radius: 3px;
    cursor: crosshair;
    overflow: hidden;
    margin-bottom: 8px;
}
.bestiarium-beast-arena-log {
    flex: 1 1 auto;
    background: rgba(255,247,217,0.7);
    border: 1px dashed var(--bestiarium-gold);
    padding: 8px;
    font-size: 13px;
    min-height: 60px;
    max-height: 140px;
    overflow-y: auto;
    margin-bottom: 8px;
}
.bestiarium-beast-arena-log p { margin: 0 0 4px; }
.bestiarium-beast-arena-actions {
    flex: 0 0 auto;
    display: flex; gap: 6px;
    flex-wrap: wrap;
    padding: 8px 0 2px;
    border-top: 1px solid rgba(184,134,44,0.5);
    /* v3.76.6: sticky + opaque so the Attack/Pray/Flee buttons stay pinned to
       the bottom and are always reachable, even if the arena has to scroll. */
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: rgba(228,205,150,0.99);
}
.bestiarium-beast-stats-row {
    flex: 0 0 auto;
}

/* Tighter layout on short screens */
@media (max-height: 720px) {
    .bestiarium-beast-portrait { max-height: 120px; }
    .bestiarium-beast-arena-stage { height: 160px; }
    .bestiarium-beast-arena-log { max-height: 90px; }
    .bestiarium-beast-lore { font-size: 12px; margin: 0 0 6px; }
}
@media (max-height: 560px) {
    .bestiarium-beast-portrait { display: none; }
    .bestiarium-beast-lore { display: none; }
    .bestiarium-beast-arena-stage { height: 140px; }
}

/* ============================================================
 * PROFILE / DASHBOARD VIEW
 * ============================================================ */
.bestiarium-profile {
    position: relative;
    z-index: 1;
    margin-top: 12px;
    padding: 18px 22px;
    background:
        radial-gradient(circle at top right, rgba(184,134,44,0.18), transparent 60%),
        rgba(255, 247, 217, 0.85);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
}
.bestiarium-profile-head {
    display: flex; justify-content: flex-start; align-items: center;
    flex-wrap: wrap; gap: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(184,134,44,0.5);
    margin-bottom: 14px;
}
.bestiarium-profile-avatar {
    width: 96px; height: 96px;
    border-radius: 50%;
    overflow: hidden;
    background: linear-gradient(180deg, #3a2010, #2a1808);
    border: 3px solid var(--bestiarium-gold);
    box-shadow: 0 0 0 3px var(--bestiarium-red), 0 0 18px rgba(0,0,0,0.5);
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
}
.bestiarium-profile-avatar img { width: 100%; height: 100%; object-fit: cover; }
.bestiarium-profile-avatar-empty {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 42px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-profile-head-text { flex: 1 1 220px; }
.bestiarium-avatar-form textarea {
    width: 100%;
    font-family: inherit; font-size: 14px;
    padding: 8px 10px;
    background: #fff7d9;
    border: 1px solid var(--bestiarium-gold);
    color: var(--bestiarium-ink);
    box-sizing: border-box;
}
.bestiarium-avatar-actions {
    display: flex; align-items: center; gap: 10px; margin-top: 6px;
}
.bestiarium-avatar-status {
    font-style: italic; color: var(--bestiarium-ink-soft); font-size: 12px;
}
.bestiarium-profile-badges { display: flex; gap: 6px; flex-wrap: wrap; }
.bestiarium-badge {
    font-family: 'Cinzel', serif;
    letter-spacing: 1px;
    font-size: 12px;
    text-transform: uppercase;
    padding: 5px 10px;
    border-radius: 3px;
    background: var(--bestiarium-blue);
    color: #fff7d9;
    border: 1px solid var(--bestiarium-gold);
}
.bestiarium-badge.is-coins  { background: linear-gradient(180deg, #d8ad36, #8a6a18); color: #1a0e04; }
.bestiarium-badge.is-speed  { background: #2c4c20; }
.bestiarium-badge.is-level  { background: var(--bestiarium-red); }

.bestiarium-profile-xp {
    position: relative;
    height: 16px;
    background: rgba(58,36,18,0.2);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    margin: 10px 0 16px;
    overflow: hidden;
}
.bestiarium-profile-xp-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--bestiarium-gold-bright), var(--bestiarium-gold));
}
.bestiarium-profile-xp span {
    position: absolute;
    inset: 0;
    display: flex; align-items: center; justify-content: center;
    font-family: 'Cinzel', serif; font-size: 11px;
    color: var(--bestiarium-ink);
    text-shadow: 0 1px 0 rgba(255,247,217,0.7);
}

.bestiarium-profile-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
}
.bestiarium-stat-card {
    background: rgba(255,247,217,0.85);
    border: 1px solid var(--bestiarium-gold);
    padding: 12px;
    text-align: center;
    border-radius: 3px;
}
.bestiarium-stat-card-label {
    display: block;
    font-family: 'Cinzel', serif; font-size: 11px;
    letter-spacing: 2px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-stat-card-value {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 36px;
    color: var(--bestiarium-red);
}
.bestiarium-stat-card-max {
    font-size: 13px; color: var(--bestiarium-ink-soft);
}
.bestiarium-stat-card-bonus {
    display: block;
    margin-top: -6px;
    margin-bottom: 4px;
    font-family: 'Cinzel', serif;
    font-size: 14px;
    letter-spacing: 1px;
    color: #2c4c20;
}

/* Coin shop modal */
.bestiarium-shop-modal {
    position: fixed; inset: 0; z-index: 9994;
    background: rgba(20, 10, 4, 0.86);
    backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 12px;
}
.bestiarium-shop-body {
    width: min(520px, 100%);
    background:
        radial-gradient(circle at 30% 20%, rgba(216,173,54,0.25), transparent 60%),
        linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(216,173,54,0.55), 0 20px 50px rgba(0,0,0,0.6);
    padding: 22px 26px;
}
.bestiarium-shop-body header {
    position: relative; text-align: center;
    border-bottom: 1px solid var(--bestiarium-gold);
    padding-bottom: 8px; margin-bottom: 12px;
}
.bestiarium-shop-eyebrow {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: 11px; letter-spacing: 3px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-shop-body h3 {
    margin: 4px 0 0;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 28px;
    color: var(--bestiarium-red);
}
.bestiarium-shop-close {
    position: absolute; top: -4px; right: -4px;
    background: transparent; border: none; cursor: pointer;
    font-size: 24px; color: var(--bestiarium-ink-soft);
}
.bestiarium-shop-intro {
    margin: 0 0 6px;
    text-align: center;
    font-style: italic;
    font-size: 14px;
    color: var(--bestiarium-ink);
}
.bestiarium-shop-test {
    margin: 0 0 10px;
    text-align: center;
    font-size: 11px;
    background: rgba(216,173,54,0.3);
    border-left: 3px solid var(--bestiarium-gold);
    padding: 4px 8px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-shop-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 10px;
}
.bestiarium-shop-pack {
    appearance: none;
    cursor: pointer;
    padding: 14px 12px;
    background: linear-gradient(180deg, #fff5cb, #ecd596);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 4px;
    color: var(--bestiarium-ink);
    transition: transform 0.1s ease-out;
    display: flex; flex-direction: column; align-items: center; gap: 4px;
}
.bestiarium-shop-pack:hover { transform: translateY(-2px); border-color: var(--bestiarium-red); }
.bestiarium-shop-pack-coins {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 28px;
    color: var(--bestiarium-red);
}
.bestiarium-shop-pack-price {
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 1px;
    color: var(--bestiarium-ink-soft);
}
/* v2.1.8/v2.1.9: WooCommerce sale styling - eye-catching to attract buyers */
.bestiarium-shop-pack { text-decoration: none; position: relative; overflow: hidden; }

.bestiarium-shop-pack.is-on-sale {
    border-color: var(--bestiarium-red, #9b1e1e);
    /* Animated pulsing red glow */
    box-shadow: 0 0 0 2px rgba(155,30,30,0.40),
                0 6px 18px rgba(0,0,0,0.18),
                0 0 28px rgba(155,30,30,0.45);
    animation: bestiarium-sale-glow 1.8s ease-in-out infinite alternate;
}
@keyframes bestiarium-sale-glow {
    from {
        box-shadow: 0 0 0 2px rgba(155,30,30,0.30),
                    0 6px 18px rgba(0,0,0,0.18),
                    0 0 14px rgba(155,30,30,0.30);
    }
    to {
        box-shadow: 0 0 0 4px rgba(224,185,78,0.50),
                    0 8px 22px rgba(155,30,30,0.40),
                    0 0 36px rgba(224,185,78,0.65);
    }
}
.bestiarium-shop-pack.is-on-sale:hover {
    transform: translateY(-3px) scale(1.03);
    animation-play-state: paused;
}

/* Animated shimmer sliding diagonally across the card */
.bestiarium-shop-pack-shimmer {
    position: absolute;
    top: -50%; left: -60%;
    width: 60%; height: 200%;
    background: linear-gradient(115deg,
        transparent 0%,
        rgba(255,247,217,0.0) 30%,
        rgba(255,247,217,0.55) 50%,
        rgba(255,247,217,0.0) 70%,
        transparent 100%);
    transform: rotate(15deg);
    animation: bestiarium-sale-shimmer 2.6s linear infinite;
    pointer-events: none;
    z-index: 1;
}
@keyframes bestiarium-sale-shimmer {
    0%   { left: -60%; }
    60%  { left: 130%; }
    100% { left: 130%; }
}

.bestiarium-shop-pack-strike {
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
    color: #888;
    text-decoration: line-through;
    position: relative;
    z-index: 2;
}

/* Big prominent "-30%" chip in the top-right with pulse */
.bestiarium-shop-pack-discount {
    position: absolute;
    top: -10px; right: -10px;
    background: linear-gradient(180deg, #d33, #9b1e1e);
    color: #fff7d9;
    font-family: 'Cinzel', serif;
    font-weight: 800;
    font-size: 16px;
    letter-spacing: 1px;
    padding: 8px 14px;
    border-radius: 999px;
    border: 2px solid #e0b94e;
    box-shadow: 0 6px 16px rgba(155,30,30,0.65),
                0 0 18px rgba(224,185,78,0.55);
    transform: rotate(8deg);
    z-index: 3;
    animation: bestiarium-sale-pulse 1.1s ease-in-out infinite;
}
@keyframes bestiarium-sale-pulse {
    0%, 100% { transform: rotate(8deg) scale(1); }
    50%      { transform: rotate(8deg) scale(1.12); }
}

/* "Save €1.50" line under price */
.bestiarium-shop-pack-saving {
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
    color: #2c4c20;
    background: rgba(44,76,32,0.12);
    padding: 3px 8px;
    border-radius: 3px;
    margin-top: 2px;
    position: relative;
    z-index: 2;
}

/* "🔥 Buy now!" CTA banner at the bottom of the pack */
.bestiarium-shop-pack-cta {
    display: block;
    margin-top: 8px;
    padding: 6px 10px;
    background: linear-gradient(180deg, #b8862c, #7a5616);
    color: #fff7d9;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    border-radius: 3px;
    text-align: center;
    box-shadow: 0 4px 10px rgba(184,134,44,0.4);
    position: relative;
    z-index: 2;
    animation: bestiarium-sale-cta 1.6s ease-in-out infinite alternate;
}
@keyframes bestiarium-sale-cta {
    from { background: linear-gradient(180deg, #b8862c, #7a5616); }
    to   { background: linear-gradient(180deg, #e0b94e, #b8862c); }
}

.bestiarium-shop-foot {
    margin-top: 12px;
    padding: 8px 12px;
    background: rgba(58,36,18,0.08);
    border-left: 3px solid var(--bestiarium-gold);
    font-style: italic;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
}

/* Respect reduced-motion users */
@media (prefers-reduced-motion: reduce) {
    .bestiarium-shop-pack.is-on-sale,
    .bestiarium-shop-pack-shimmer,
    .bestiarium-shop-pack-discount,
    .bestiarium-shop-pack-cta { animation: none; }
}

/* ===== v3.77.0: "Akcie" boost shop ===== */
.bestiarium-boosts-body { width: min(560px, 100%); max-height: 92vh; overflow-y: auto; }
.bestiarium-boost-card {
    margin-top: 14px;
    padding: 12px 14px;
    background: linear-gradient(180deg, rgba(255,245,203,0.7), rgba(236,213,150,0.7));
    border: 2px solid var(--bestiarium-gold);
    border-radius: 6px;
}
.bestiarium-boost-card.is-active {
    border-color: #2c4c20;
    box-shadow: 0 0 0 2px rgba(44,76,32,0.35), 0 6px 16px rgba(0,0,0,0.18);
}
.bestiarium-boost-head { display: flex; align-items: center; gap: 12px; }
.bestiarium-boost-icon { font-size: 30px; line-height: 1; flex: 0 0 auto; }
.bestiarium-boost-meta { display: flex; flex-direction: column; gap: 2px; flex: 1 1 auto; min-width: 0; }
.bestiarium-boost-name {
    font-family: 'Cinzel', serif;
    font-size: 16px; letter-spacing: 0.5px;
    color: var(--bestiarium-red);
}
.bestiarium-boost-desc { font-size: 12.5px; color: var(--bestiarium-ink); }
.bestiarium-boost-status {
    flex: 0 0 auto;
    font-family: 'Cinzel', serif;
    font-size: 11px; letter-spacing: 0.5px;
    padding: 4px 9px; border-radius: 999px;
    background: rgba(58,36,18,0.12);
    color: var(--bestiarium-ink-soft);
    white-space: nowrap;
}
.bestiarium-boost-status.is-active {
    background: linear-gradient(180deg, #3a6a26, #244c14);
    color: #fff7d9;
    box-shadow: 0 0 10px rgba(44,76,32,0.5);
}
.bestiarium-boost-empty {
    margin: 10px 0 0; font-style: italic; font-size: 12px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-boost-packs {
    margin-top: 10px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 8px;
}
.bestiarium-boost-pack {
    position: relative; overflow: hidden;
    text-decoration: none;
    padding: 10px 8px;
    background: linear-gradient(180deg, #fff5cb, #ecd596);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 4px;
    color: var(--bestiarium-ink);
    display: flex; flex-direction: column; align-items: center; gap: 3px;
    transition: transform 0.1s ease-out;
}
.bestiarium-boost-pack:hover { transform: translateY(-2px); border-color: var(--bestiarium-red); }
.bestiarium-boost-pack-hours {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 24px; color: var(--bestiarium-red);
}
.bestiarium-boost-pack-strike {
    font-family: 'Cinzel', serif; font-size: 11px;
    color: #888; text-decoration: line-through;
}
.bestiarium-boost-pack-price {
    font-family: 'Cinzel', serif; font-size: 12px;
    letter-spacing: 1px; color: var(--bestiarium-ink-soft);
}
.bestiarium-boost-pack-cta {
    margin-top: 4px; padding: 5px 8px;
    background: linear-gradient(180deg, #b8862c, #7a5616);
    color: #fff7d9;
    font-family: 'Cinzel', serif; font-size: 10.5px;
    letter-spacing: 1px; text-transform: uppercase;
    border-radius: 3px; text-align: center; width: 100%;
}
.bestiarium-boost-pack.is-on-sale { border-color: var(--bestiarium-red); }
.bestiarium-boost-pack-discount {
    position: absolute; top: -8px; right: -8px;
    background: linear-gradient(180deg, #d33, #9b1e1e);
    color: #fff7d9;
    font-family: 'Cinzel', serif; font-weight: 800; font-size: 12px;
    padding: 5px 9px; border-radius: 999px;
    border: 2px solid #e0b94e; transform: rotate(8deg); z-index: 3;
}
/* AKCIE pill glow while a boost is running */
.bestiarium-stat.is-boosts.bestiarium-boosts-on {
    box-shadow: 0 0 0 1px rgba(44,76,32,0.6), 0 0 14px rgba(64,120,40,0.7);
}
.bestiarium-stat.is-boosts.bestiarium-boosts-on .bestiarium-stat-icon {
    animation: bestiarium-boost-spark 1.4s ease-in-out infinite;
}
@keyframes bestiarium-boost-spark {
    0%, 100% { transform: scale(1); filter: none; }
    50%      { transform: scale(1.18); filter: drop-shadow(0 0 5px rgba(224,185,78,0.9)); }
}
@media (prefers-reduced-motion: reduce) {
    .bestiarium-stat.is-boosts.bestiarium-boosts-on .bestiarium-stat-icon { animation: none; }
}

.bestiarium-profile-section { margin-top: 18px; }
.bestiarium-profile-section h3 {
    margin: 0 0 8px;
    font-family: 'Cinzel', serif;
    font-size: 16px;
    letter-spacing: 1px;
    border-bottom: 1px dashed rgba(184,134,44,0.5);
    padding-bottom: 4px;
}
.bestiarium-profile-count { color: var(--bestiarium-ink-soft); font-weight: normal; font-size: 13px; }
/* v4.80.0: compact profile launcher and reusable section dialog. */
.bestiarium-profile-hub {
    margin: 4px 0 8px;
}
.bestiarium-profile-hub-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.bestiarium-profile-hub-button {
    width: 100%;
    min-width: 0;
    min-height: 76px;
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    align-items: center;
    gap: 11px;
    padding: 11px 13px;
    border: 2px solid #a87829;
    border-radius: 5px;
    background: linear-gradient(180deg, #fff5ce, #e5c878);
    color: #35200f;
    box-shadow: 0 3px 0 #704315, 0 7px 14px rgba(58, 36, 18, 0.16);
    cursor: pointer;
    text-align: left;
    transition: border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
}
.bestiarium-profile-hub-button:hover,
.bestiarium-profile-hub-button:focus-visible {
    border-color: #9b1e1e;
    box-shadow: 0 3px 0 #7c1d1d, 0 9px 18px rgba(58, 36, 18, 0.24);
    transform: translateY(-1px);
    outline: none;
}
.bestiarium-profile-hub-button[aria-expanded="true"] {
    border-color: #1c3a78;
    box-shadow: 0 3px 0 #1c3a78, 0 9px 18px rgba(28, 58, 120, 0.2);
}
.bestiarium-profile-hub-icon {
    width: 42px;
    height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(28, 58, 120, 0.45);
    border-radius: 4px;
    background: #f7e7b4;
    color: #8f1f1f;
    font-family: 'Cinzel', Georgia, serif;
    font-size: 25px;
    line-height: 1;
}
.bestiarium-profile-hub-copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.bestiarium-profile-hub-copy strong {
    min-width: 0;
    font-family: 'Cinzel', Georgia, serif;
    font-size: 13px;
    line-height: 1.22;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bestiarium-profile-hub-copy small {
    min-width: 0;
    color: #6b4a2a;
    font-size: 11px;
    line-height: 1.2;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bestiarium-profile-panel-storage[hidden],
.bestiarium-profile-panel-overlay[hidden] {
    display: none !important;
}
body.bestiarium-profile-panel-open {
    overflow: hidden;
}
.bestiarium-profile-panel-overlay {
    --bestiarium-parchment: #f0e1bd;
    --bestiarium-parchment-dark: #d8c094;
    --bestiarium-ink: #3a2412;
    --bestiarium-ink-soft: #6b4a2a;
    --bestiarium-gold: #b8862c;
    --bestiarium-gold-bright: #e0b94e;
    --bestiarium-red: #9b1e1e;
    --bestiarium-blue: #1c3a78;
    position: fixed;
    inset: 0;
    z-index: 9994;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(20, 10, 4, 0.82);
    backdrop-filter: blur(4px);
    color: var(--bestiarium-ink);
    font-family: 'EB Garamond', Garamond, 'Times New Roman', serif;
}
.bestiarium-profile-panel-overlay *,
.bestiarium-profile-panel-overlay *::before,
.bestiarium-profile-panel-overlay *::after {
    box-sizing: border-box;
}
.bestiarium-profile-panel-dialog {
    width: min(1080px, 100%);
    max-height: min(92dvh, 920px);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 3px double var(--bestiarium-gold);
    border-radius: 6px;
    background: #f4e5bd;
    box-shadow: 0 0 0 4px rgba(155, 30, 30, 0.5), 0 24px 60px rgba(0, 0, 0, 0.62);
}
.bestiarium-profile-panel-head {
    flex: 0 0 auto;
    min-height: 62px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 16px 11px 20px;
    border-bottom: 3px solid #b8862c;
    background: #3a2412;
    color: #f7e7b4;
}
.bestiarium-profile-panel-head h2 {
    min-width: 0;
    margin: 0;
    font-family: 'Cinzel', Georgia, serif;
    font-size: 20px;
    line-height: 1.25;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bestiarium-profile-panel-close {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid rgba(247, 231, 180, 0.7);
    border-radius: 4px;
    background: transparent;
    color: #fff5ce;
    font: 32px/1 Arial, sans-serif;
    cursor: pointer;
}
.bestiarium-profile-panel-close:hover,
.bestiarium-profile-panel-close:focus-visible {
    border-color: #fff5ce;
    background: #9b1e1e;
    outline: none;
}
.bestiarium-profile-panel-body {
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 18px 20px 24px;
    -webkit-overflow-scrolling: touch;
}
.bestiarium-profile-panel-body > .bestiarium-profile-section {
    margin-top: 18px;
}
.bestiarium-profile-panel-body > .bestiarium-profile-section:first-child {
    margin-top: 0;
}
.bestiarium-profile-panel-dialog.has-single-section .bestiarium-profile-panel-body > .bestiarium-profile-section > h3:first-child {
    display: none;
}
.bestiarium-profile-bag, .bestiarium-profile-coinlog { list-style: none; padding: 0; margin: 0; }
.bestiarium-profile-bag li, .bestiarium-profile-coinlog li {
    padding: 8px 10px; margin-bottom: 6px;
    background: rgba(255,247,217,0.7);
    border: 1px solid rgba(184,134,44,0.4);
    border-radius: 2px;
    font-size: 14px;
}
.bestiarium-profile-bag-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.bestiarium-effect {
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1px;
    padding: 2px 8px;
    border-radius: 999px;
    background: #2c4c20;
    color: #fff7d9;
}
.bestiarium-effect.is-speed   { background: #2c4c20; }
.bestiarium-effect.is-sight   { background: var(--bestiarium-blue); }
.bestiarium-effect.is-wisdom  { background: var(--bestiarium-gold); color: #1a0e04; }
.bestiarium-effect.is-faith   { background: var(--bestiarium-red); }

.bestiarium-profile-kills,
.bestiarium-profile-bag-grid,
.bestiarium-profile-spells {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
}
.bestiarium-bag-card {
    margin: 0;
    background: rgba(255,247,217,0.7);
    border: 1px solid rgba(184,134,44,0.5);
    border-radius: 3px;
    overflow: hidden;
    text-align: center;
    cursor: pointer;
    transition: transform 0.15s ease-out, box-shadow 0.15s ease-out;
}
.bestiarium-bag-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 18px rgba(58, 36, 18, 0.35);
}
.bestiarium-bag-card img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    display: block;
}
.bestiarium-bag-card-fallback {
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 56px;
    color: var(--bestiarium-gold-bright);
    background: linear-gradient(180deg, #3a2010, #2a1808);
}
.bestiarium-bag-card figcaption {
    padding: 6px 8px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
}
.bestiarium-bag-card figcaption strong {
    display: block;
    font-size: 12px;
    color: var(--bestiarium-ink);
    margin-bottom: 4px;
}
.bestiarium-spell-card {
    margin: 0;
    background: linear-gradient(180deg, rgba(47, 30, 84, 0.18), rgba(43, 20, 8, 0.35));
    border: 1px solid rgba(126, 92, 184, 0.45);
    border-radius: 6px;
    overflow: hidden;
    text-align: center;
    cursor: pointer;
    transition: transform 0.15s ease-out, box-shadow 0.15s ease-out;
}
.bestiarium-spell-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 18px rgba(47, 30, 84, 0.32);
}
.bestiarium-spell-loadout-note {
    margin: -4px 0 12px;
    font-size: 12px;
    color: #5f3d1d;
}
.bestiarium-spell-loadout-note strong {
    color: #9b1e1e;
}
.bestiarium-profile-mana {
    margin: -4px 0 12px;
    padding: 9px 0;
    border-top: 1px solid rgba(47, 92, 110, 0.28);
    border-bottom: 1px solid rgba(47, 92, 110, 0.28);
    color: #304f5c;
}
.bestiarium-profile-mana > div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    font-family: 'Cinzel', serif;
}
.bestiarium-profile-mana-bar {
    display: block;
    height: 8px;
    margin: 6px 0 4px;
    overflow: hidden;
    border: 1px solid rgba(47, 92, 110, 0.45);
    border-radius: 2px;
    background: rgba(47, 92, 110, 0.12);
}
.bestiarium-profile-mana-bar i {
    display: block;
    height: 100%;
    background: #2f6b83;
    transition: width 180ms ease;
}
.bestiarium-profile-mana small { display: block; font-size: 11px; }
.bestiarium-spell-card.is-prepared {
    border-color: rgba(155, 30, 30, 0.82);
    box-shadow: inset 0 0 0 2px rgba(244, 212, 106, 0.48), 0 8px 18px rgba(47, 30, 84, 0.22);
}
.bestiarium-spell-card.is-unusable {
    opacity: 0.72;
}
.bestiarium-spell-card img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    display: block;
}
.bestiarium-spell-card-fallback {
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Cinzel', serif;
    font-size: 48px;
    color: #f4d46a;
    background: radial-gradient(circle at center, rgba(126,92,184,0.36), rgba(31,18,9,0.95));
}
.bestiarium-spell-card figcaption {
    padding: 7px 8px 8px;
    font-family: 'Cinzel', serif;
    color: var(--bestiarium-ink);
}
.bestiarium-spell-card figcaption strong,
.bestiarium-spell-card figcaption small {
    display: block;
}
.bestiarium-spell-card figcaption strong {
    font-size: 12px;
    margin-bottom: 3px;
}
.bestiarium-spell-card figcaption small {
    font-size: 10px;
    color: #6a4420;
    line-height: 1.3;
}
.bestiarium-spell-equip {
    margin-top: 7px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-height: 28px;
    padding: 4px 8px;
    border: 1px solid rgba(111, 68, 32, 0.38);
    border-radius: 6px;
    background: rgba(255, 244, 204, 0.72);
    color: #3b2410;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    line-height: 1.1;
    cursor: pointer;
}
.bestiarium-spell-equip input {
    width: 15px;
    height: 15px;
    accent-color: #9b1e1e;
}
.bestiarium-spell-equip input:disabled + span {
    opacity: 0.6;
}
.bestiarium-kill-card { cursor: pointer; transition: transform 0.15s ease-out, box-shadow 0.15s ease-out; }
.bestiarium-kill-card:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(58, 36, 18, 0.35); }

/* Item popup (relic/beast detail) */
.bestiarium-item-popup {
    position: fixed; inset: 0; z-index: 9995;
    background: rgba(20, 10, 4, 0.84);
    backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 12px;
}
.bestiarium-item-popup-body {
    position: relative;
    width: min(520px, 100%);
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 20px 50px rgba(0,0,0,0.6);
    /* v3.79.2: never grow taller than the screen — scroll inside so the bottom
       (e.g. the card's "buy" button) is always reachable, even on desktop. */
    max-height: 92vh;
    overflow-x: hidden;
    overflow-y: auto;
}
.bestiarium-item-popup-close {
    position: absolute; top: 6px; right: 10px;
    background: transparent; border: none; cursor: pointer;
    font-size: 28px; color: #5a3a05;
    z-index: 2;
}
.bestiarium-item-popup-image {
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: #2a1808 center/cover no-repeat;
    border-bottom: 2px solid var(--bestiarium-gold);
    position: relative;
}
.bestiarium-item-popup-image img {
    width: 100%; height: 100%;
    object-fit: cover;
}
/* v2.0.14: anti-download protection on AI images.
 * The whole game frame disables right-click/save on images. Valuable assets
 * (popup previews) are rendered as background-image divs with a transparent
 * overlay layer so "Save image as" simply does not see an <img> to save.
 * Not bulletproof against determined devtools users, but it stops the
 * casual right-click-save abuse the user reported. */
.bestiarium-shell img {
    -webkit-user-drag: none;
    -khtml-user-drag: none;
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
    pointer-events: auto;
}
.bestiarium-noimg-save {
    position: relative;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
}
.bestiarium-noimg-overlay {
    position: absolute; inset: 0;
    background: transparent;
    z-index: 5;
    pointer-events: auto;
    cursor: default;
}
.bestiarium-noimg-watermark {
    position: absolute;
    right: 8px; bottom: 8px;
    z-index: 6;
    padding: 3px 8px;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: rgba(255, 247, 217, 0.78);
    background: rgba(20, 10, 4, 0.55);
    border: 1px solid rgba(255, 247, 217, 0.45);
    border-radius: 2px;
    pointer-events: none;
    user-select: none;
}
.bestiarium-item-popup-empty {
    display: flex; align-items: center; justify-content: center;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 80px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-item-popup-text {
    padding: 16px 22px 20px;
    text-align: center;
}
.bestiarium-item-popup-text h3 {
    margin: 0 0 8px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-red);
}
.bestiarium-item-popup-effect {
    margin: 6px 0 8px;
}
.bestiarium-item-popup-lore {
    margin: 0;
    font-style: italic;
    color: var(--bestiarium-ink);
    line-height: 1.5;
}
.bestiarium-item-popup-stats {
    display: flex;
    justify-content: center;
    gap: 14px;
    margin: 10px 0;
    flex-wrap: wrap;
}
.bestiarium-item-popup-stats span {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    padding: 6px 12px;
    background: rgba(255,247,217,0.7);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-item-popup-stats strong {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 22px;
    color: var(--bestiarium-red);
}
.bestiarium-item-popup-meta {
    margin: 8px 0 0;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
    font-style: italic;
}
.bestiarium-item-popup-actions {
    margin-top: 14px;
    display: flex;
    justify-content: center;
}
.bestiarium-spell-practice-body {
    width: min(760px, calc(100vw - 24px));
    max-height: 92vh;
    padding: 20px 22px 22px;
    overflow-y: auto;
    box-sizing: border-box;
}
.bestiarium-spell-practice-head {
    text-align: center;
    padding: 0 28px 10px;
}
.bestiarium-spell-practice-head h3 {
    margin: 0 0 8px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 28px;
    color: var(--bestiarium-red);
}
.bestiarium-spell-practice-head p {
    margin: 0;
    color: var(--bestiarium-ink);
    font-size: 13px;
    line-height: 1.45;
}
.bestiarium-spell-practice-result {
    margin: 0 0 10px;
    padding: 8px 10px;
    border: 1px solid rgba(153, 108, 30, 0.4);
    border-radius: 4px;
    background: rgba(255,247,217,0.62);
    color: var(--bestiarium-ink-soft);
    text-align: center;
    font-family: 'Cinzel', serif;
    font-size: 13px;
}
.bestiarium-spell-practice-result.is-good {
    border-color: rgba(31,122,58,0.55);
    color: #1f6f38;
    background: rgba(224,247,218,0.72);
}
.bestiarium-spell-practice-result.is-mid {
    border-color: rgba(184,134,44,0.68);
    color: #6c4a0b;
    background: rgba(255,237,172,0.72);
}
.bestiarium-spell-practice-result.is-low {
    border-color: rgba(155,30,30,0.5);
    color: #7c1d13;
    background: rgba(255,219,202,0.72);
}
.bestiarium-spell-practice-canvas {
    display: block;
    width: 100%;
    height: clamp(320px, 52vh, 520px);
    border: 1px solid rgba(153, 108, 30, 0.58);
    border-radius: 6px;
    background: radial-gradient(circle at center, rgba(244,212,106,0.12), rgba(42,24,8,0.18));
    touch-action: none;
    cursor: crosshair;
}
.bestiarium-spell-practice-actions {
    margin-top: 12px;
    text-align: right;
}
.bestiarium-image-buy {
    margin-top: 14px;
    padding: 10px 12px;
    background: rgba(184, 134, 44, 0.12);
    border-top: 2px solid var(--bestiarium-gold);
    text-align: center;
}
.bestiarium-tier-badge {
    display: inline-block;
    padding: 3px 12px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: #fff7d9;
    border-radius: 999px;
    margin-bottom: 6px;
}
.bestiarium-tier-badge.is-common  { background: var(--bestiarium-ink-soft); }
.bestiarium-tier-badge.is-special { background: var(--bestiarium-blue); }
.bestiarium-tier-badge.is-original {
    background: linear-gradient(90deg, var(--bestiarium-red), var(--bestiarium-gold-bright));
    color: #1a0e04;
}
.bestiarium-tier-info {
    margin: 0 0 6px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-tier-owned {
    margin: 0;
    color: #2c4c20;
    font-weight: 700;
    font-style: italic;
}
.bestiarium-tier-soldout {
    margin: 0;
    color: var(--bestiarium-red);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
}
.bestiarium-kill-card {
    margin: 0;
    background: rgba(255,247,217,0.7);
    border: 1px solid rgba(184,134,44,0.5);
    border-radius: 3px;
    overflow: hidden;
    text-align: center;
}
.bestiarium-kill-card img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    display: block;
}
.bestiarium-kill-card-fallback {
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 56px;
    color: var(--bestiarium-gold);
    background: linear-gradient(180deg, #3a2010, #2a1808);
}
.bestiarium-kill-card figcaption {
    padding: 6px 8px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
}
.bestiarium-kill-card figcaption strong {
    display: block;
    font-size: 12px;
    color: var(--bestiarium-ink);
}
.bestiarium-kill-times {
    display: inline-block;
    margin-top: 2px;
    padding: 1px 6px;
    background: var(--bestiarium-red);
    color: #fff7d9;
    border-radius: 999px;
    font-size: 10px;
}
.bestiarium-kill-card figcaption small {
    display: block;
    margin-top: 2px;
    color: var(--bestiarium-ink-soft);
}

.bestiarium-coin-pos { color: #2c4c20; font-weight: 700; font-family: 'Cinzel', serif; }
.bestiarium-coin-neg { color: var(--bestiarium-red); font-weight: 700; font-family: 'Cinzel', serif; }

.bestiarium-daily-bonus {
    margin-top: 12px;
    padding: 8px 12px;
    background: linear-gradient(90deg, rgba(216,173,54,0.4), transparent);
    border-left: 4px solid var(--bestiarium-gold-bright);
    font-style: italic;
    font-family: 'Cinzel', serif;
}

.bestiarium-profile-locked {
    text-align: center;
    padding: 32px;
    font-family: 'Cinzel', serif;
}

/* ============================================================
 * TRAVEL MODAL with rider, road, progress bar
 * ============================================================ */
.bestiarium-travel-modal {
    position: fixed; inset: 0; z-index: 9999;
    display: flex; align-items: center; justify-content: center;
    background: rgba(20,10,4,0.85);
    backdrop-filter: blur(4px);
}
.bestiarium-travel-body {
    width: min(560px, 92%);
    background:
        radial-gradient(circle at 30% 20%, rgba(184,134,44,0.2), transparent 60%),
        linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 20px 50px rgba(0,0,0,0.6);
    padding: 22px 24px;
}
.bestiarium-travel-eyebrow {
    font-family: 'Cinzel', serif;
    font-size: 11px; letter-spacing: 3px;
    text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-travel-title {
    margin: 4px 0 4px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-red);
}
.bestiarium-travel-sub {
    margin: 0 0 14px;
    font-style: italic;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-travel-road {
    position: relative; height: 60px; margin-bottom: 6px;
}
.bestiarium-travel-trail {
    position: absolute; left: 0; right: 0; top: 50%;
    height: 4px;
    background:
        repeating-linear-gradient(90deg, var(--bestiarium-ink) 0 6px, transparent 6px 14px);
    transform: translateY(-50%);
}
.bestiarium-travel-rider {
    position: absolute;
    top: 50%; left: 0%;
    transform: translate(-50%, -50%);
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 36px;
    color: var(--bestiarium-red);
    text-shadow: 0 0 8px rgba(255,200,80,0.6);
    transition: left 0.2s linear;
    z-index: 2;
}
.bestiarium-travel-flag {
    position: absolute; top: 50%;
    transform: translateY(-50%);
    width: 28px; height: 28px;
    background: var(--bestiarium-red);
    border: 2px solid var(--bestiarium-gold);
    display: flex; align-items: center; justify-content: center;
    color: #fff7d9;
    font-family: 'Cinzel', serif; font-size: 10px;
    letter-spacing: 1px;
    text-align: center;
    border-radius: 50%;
    overflow: hidden;
}
.bestiarium-travel-flag-start { left: -2px; }
.bestiarium-travel-flag-end   { right: -2px; background: var(--bestiarium-blue); }
.bestiarium-travel-progress {
    position: relative; height: 12px;
    background: rgba(58,36,18,0.25);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    overflow: hidden;
}
.bestiarium-travel-progress-fill {
    height: 100%; width: 0%;
    background: linear-gradient(90deg, var(--bestiarium-gold-bright), var(--bestiarium-red));
    transition: width 0.2s linear;
}
.bestiarium-travel-timer {
    text-align: center;
    margin: 8px 0 14px;
    font-family: 'Cinzel', serif;
    letter-spacing: 2px;
    color: var(--bestiarium-ink);
}
.bestiarium-travel-actions { display: flex; gap: 8px; justify-content: center; }

/* ============================================================
 * BEAST PORTRAIT + HP BAR in combat arena (v1.4)
 * ============================================================ */
.bestiarium-beast-portrait {
    position: relative;
    width: 100%;
    /* v2.2.10: square portrait matches the 1024×1024 source so the full beast
       is visible. Earlier 4/3 + object-fit:cover cropped head/feet off. */
    aspect-ratio: 1 / 1;
    overflow: hidden;
    margin: 8px 0 10px;
    background: #1a0e04;
    border: 2px solid var(--bestiarium-gold);
    box-shadow: 0 0 0 3px rgba(155,30,30,0.7);
}
.bestiarium-beast-portrait img {
    width: 100%; height: 100%;
    /* contain so admin-uploaded non-square images letterbox cleanly
       instead of being center-cropped. */
    object-fit: contain;
    animation: bestiarium-illum-ken 12s ease-in-out infinite alternate;
}
.bestiarium-beast-portrait-fallback {
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 96px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-beast-lore {
    margin: 0 0 10px;
    font-style: italic; font-size: 13px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-beast-hpbar {
    flex: 1;
    height: 12px;
    margin: 0 10px;
    background: rgba(58,36,18,0.3);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    overflow: hidden;
    align-self: center;
}
.bestiarium-beast-hpbar-fill {
    height: 100%; width: 100%;
    background: linear-gradient(90deg, #ad2828, var(--bestiarium-red), #ad2828);
    transition: width 0.3s ease-out;
}
.bestiarium-beast-arena-head { align-items: center; }

/* ============================================================
 * Medieval-cartography upgrades for the SVG map
 * ============================================================ */
.bestiarium-map-wrap {
    aspect-ratio: 3 / 2;
    min-height: 460px;
    background:
        radial-gradient(circle at 75% 70%, rgba(28,58,120,0.16), transparent 50%),
        repeating-linear-gradient(45deg, rgba(58,36,18,0.05) 0 6px, transparent 6px 14px),
        radial-gradient(circle at 30% 30%, #f0d99a 0%, #d9b66e 80%);
    box-shadow:
        inset 0 0 28px rgba(58,36,18,0.4),
        inset 0 0 80px rgba(184,134,44,0.3),
        0 4px 12px rgba(58,36,18,0.3);
    border: 3px double var(--bestiarium-gold);
}
.bestiarium-map-land  { fill: #d2a86a; stroke: #6f3f12; stroke-width: 0.5; }
.bestiarium-map-sea   { fill: #4f7396; stroke: #1f3a5a; stroke-width: 0.5; }
.bestiarium-map-wave  { fill: none; stroke: #a8c4dc; stroke-width: 0.5; opacity: 0.65; }
.bestiarium-map-label { display: none; }
.bestiarium-map-glyph { display: none; }
.bestiarium-map-loc { cursor: pointer; }
.bestiarium-map-dot {
    fill: #b3261e;
    stroke: #fff5cb;
    stroke-width: 0.35;
    filter: drop-shadow(0 0 1.2px rgba(0,0,0,0.55));
    transition: r 0.15s ease-out;
}
.bestiarium-map-loc:hover .bestiarium-map-dot { r: 2.4; fill: #ffae00; }
.bestiarium-map-halo {
    fill: rgba(255, 200, 80, 0);
    stroke: rgba(255, 245, 203, 0.8);
    stroke-width: 0.25;
    transition: fill 0.2s ease, stroke 0.2s ease, r 0.2s ease;
}
.bestiarium-map-loc:hover .bestiarium-map-halo,
.bestiarium-map-loc.is-selected .bestiarium-map-halo {
    fill: rgba(255, 200, 80, 0.22);
    stroke: var(--bestiarium-gold-bright);
    r: 4.5;
}
.bestiarium-map-loc.is-me .bestiarium-map-dot {
    fill: var(--bestiarium-red);
    stroke: var(--bestiarium-gold-bright);
    stroke-width: 0.5;
    animation: bestiarium-map-me 1.4s ease-in-out infinite;
}

/* Hover tooltip - quick summary of the location */
.bestiarium-map-tooltip {
    width: 280px;
    max-width: 92vw;
    background: linear-gradient(180deg, rgba(243,224,178,0.98), rgba(217,189,128,0.98));
    border: 2px double var(--bestiarium-gold);
    box-shadow: 0 0 0 3px rgba(155,30,30,0.45), 0 14px 30px rgba(0,0,0,0.55);
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity 0.12s ease-out, transform 0.12s ease-out;
    font-family: 'EB Garamond', Garamond, serif;
    color: var(--bestiarium-ink);
    overflow: hidden;
}
.bestiarium-map-tooltip.is-visible {
    opacity: 1;
    transform: translateY(0);
}
.bestiarium-tt-image {
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: #2a1808;
    border-bottom: 1px solid var(--bestiarium-gold);
}
.bestiarium-tt-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bestiarium-tt-body { padding: 8px 10px 10px; }
.bestiarium-tt-body h4 {
    margin: 0 0 4px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 18px;
    color: var(--bestiarium-red);
    line-height: 1.1;
}
.bestiarium-tt-terrain {
    display: inline-block;
    margin-right: 6px;
    padding: 1px 7px;
    font-family: 'Cinzel', serif;
    font-size: 9px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: #fff7d9;
    background: var(--bestiarium-ink-soft);
    border-radius: 999px;
}
.bestiarium-tt-terrain-sea { background: var(--bestiarium-blue); }
.bestiarium-tt-terrain-cave { background: #3a2010; }
.bestiarium-tt-terrain-mountain { background: #4a4a4a; }
.bestiarium-tt-here {
    display: inline-block;
    padding: 1px 7px;
    font-family: 'Cinzel', serif;
    font-size: 9px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    background: var(--bestiarium-red);
    color: #fff7d9;
    border-radius: 999px;
}
.bestiarium-tt-lore {
    margin: 6px 0 4px;
    font-style: italic;
    font-size: 13px;
    color: var(--bestiarium-ink);
    line-height: 1.35;
}
.bestiarium-tt-character,
.bestiarium-tt-service {
    margin: 4px 0 0;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
    font-family: 'Cinzel', serif;
    letter-spacing: 1px;
    text-transform: uppercase;
}
.bestiarium-tt-chips {
    margin: 6px 0 0;
    padding-top: 4px;
    border-top: 1px dashed rgba(184,134,44,0.5);
    font-family: 'Cinzel', serif;
    font-size: 12px;
    color: var(--bestiarium-red);
    letter-spacing: 1px;
}

@media (max-width: 880px) {
    .bestiarium-mapview { grid-template-columns: 1fr; }
    .bestiarium-profile-grid { grid-template-columns: repeat(2, 1fr); }
}

/* v2.0.15: Narrator / Rozprávač - floating chat assistant.
 * z-index pinned to 2147483000 (just below max int) so themes with sticky
 * headers / fixed footers can't park anything on top. pointer-events forced
 * on so a parent's transparent overlay can't swallow the click. */
.bestiarium-narrator-fab {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 2147483000;
    display: inline-flex !important;
    align-items: center;
    gap: 10px;
    padding: 11px 18px 11px 14px;
    background: linear-gradient(180deg, #4b1e09, #2b0f04);
    color: #f8eccb;
    border: 2px solid var(--bestiarium-gold, #b8862c);
    border-radius: 999px;
    font-family: 'Cinzel', serif;
    font-size: 13px;
    letter-spacing: 2px;
    text-transform: uppercase;
    cursor: pointer;
    pointer-events: auto !important;
    box-shadow: 0 10px 28px rgba(0,0,0,0.45), inset 0 0 18px rgba(184,134,44,0.25);
    transition: transform 0.12s ease;
}
.bestiarium-narrator-fab:hover { transform: translateY(-2px); }
.bestiarium-narrator-fab[hidden] { display: none !important; }
.bestiarium-narrator[hidden] { display: none !important; }
.bestiarium-narrator-fab-mark {
    width: 26px; height: 26px;
    display: inline-flex; align-items: center; justify-content: center;
    background: radial-gradient(circle, #f8eccb 0%, #b8862c 70%);
    color: #2b0f04;
    border-radius: 50%;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 18px;
}
.bestiarium-narrator {
    position: fixed;
    right: 22px;
    bottom: 88px;
    z-index: 2147483001;
    pointer-events: auto !important;
    width: min(420px, 92vw);
    max-height: 70vh;
    display: flex;
    flex-direction: column;
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold, #b8862c);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 24px 50px rgba(0,0,0,0.55);
    border-radius: 6px;
    overflow: hidden;
}
.bestiarium-narrator-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    background: linear-gradient(180deg, #4b1e09, #2b0f04);
    color: #f8eccb;
}
.bestiarium-narrator-eyebrow {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 3px;
    text-transform: uppercase;
    color: rgba(248,236,203,0.7);
}
.bestiarium-narrator-title {
    margin: 2px 0 0;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 22px;
    color: #f8eccb;
}
.bestiarium-narrator-close {
    background: transparent;
    border: none;
    color: #f8eccb;
    font-size: 26px;
    cursor: pointer;
    line-height: 1;
}
.bestiarium-narrator-log {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    background: rgba(255,247,217,0.55);
}
.bestiarium-narrator-bubble {
    max-width: 92%;
    padding: 9px 12px;
    border-radius: 6px;
    font-family: 'EB Garamond', serif;
    font-size: 15px;
    line-height: 1.45;
    color: var(--bestiarium-ink, #2b0f04);
    white-space: pre-wrap;
}
.bestiarium-narrator-bubble p { margin: 0; }
.bestiarium-narrator-bubble.is-user {
    align-self: flex-end;
    background: rgba(75, 30, 9, 0.92);
    color: #f8eccb;
}
.bestiarium-narrator-bubble.is-assistant {
    align-self: flex-start;
    background: rgba(248,236,203,0.95);
    border: 1px solid var(--bestiarium-gold, #b8862c);
    font-style: italic;
}
.bestiarium-narrator-chips {
    margin-top: 8px;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.bestiarium-narrator-chip {
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: 6px 12px !important;
}
.bestiarium-narrator-status {
    margin: 0;
    padding: 4px 16px;
    font-size: 12px;
    color: var(--bestiarium-ink-soft, #5a3a05);
    font-style: italic;
    min-height: 18px;
}
.bestiarium-narrator-form {
    display: flex;
    gap: 8px;
    padding: 10px 12px;
    border-top: 1px solid rgba(184,134,44,0.4);
}
.bestiarium-narrator-form input {
    flex: 1 1 auto;
    padding: 8px 12px;
    font-family: 'EB Garamond', serif;
    font-size: 14px;
    background: rgba(255,247,217,0.9);
    border: 1px solid var(--bestiarium-gold, #b8862c);
    border-radius: 4px;
    color: var(--bestiarium-ink, #2b0f04);
}
.bestiarium-narrator-hint {
    margin: 0;
    padding: 6px 16px 12px;
    font-size: 11px;
    color: var(--bestiarium-ink-soft, #5a3a05);
    font-style: italic;
    text-align: center;
}
@media (max-width: 540px) {
    .bestiarium-narrator-fab-label { display: none; }
    .bestiarium-narrator { right: 8px; left: 8px; width: auto; bottom: 80px; }
}

/* ============================================================
 * v2.0.19: Bestiary Book - gallery of purchased cards
 * ============================================================ */
.bestiarium-profile-book-btn,
.bestiarium-profile-pc-btn {
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
}
.bestiarium-profile-action-row {
    margin-top: 12px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.bestiarium-profile-action-row .bestiarium-btn {
    min-width: 0;
    width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
}
.bestiarium-profile-pc-btn {
    background: linear-gradient(180deg, #4a2a0e, #2a1408);
    color: #f8eccb;
    border: 2px solid var(--bestiarium-gold, #b8862c);
}
.bestiarium-profile-pc-btn:hover {
    background: linear-gradient(180deg, #5a350e, #3a1c0c);
}
.bestiarium-book-overlay {
    position: fixed; inset: 0; z-index: 2147480000;
    background: rgba(20,10,4,0.86);
    backdrop-filter: blur(6px);
    overflow-y: auto;
    padding: 4vh 12px;
    display: flex;
    align-items: flex-start;
    justify-content: center;
}
.bestiarium-book-frame {
    position: relative;
    width: min(1100px, 100%);
    background:
        radial-gradient(circle at 20% 15%, rgba(184,134,44,0.20), transparent 55%),
        radial-gradient(circle at 80% 85%, rgba(155,30,30,0.18), transparent 60%),
        linear-gradient(180deg, #efddb4 0%, #e6cf9b 40%, #d9bd80 100%);
    border: 3px double var(--bestiarium-gold, #b8862c);
    box-shadow: 0 0 0 6px rgba(155,30,30,0.45), 0 30px 80px rgba(0,0,0,0.6);
    border-radius: 6px;
    padding: 28px 32px 40px;
}
.bestiarium-book-close {
    position: absolute; top: 8px; right: 14px;
    background: transparent; border: none; cursor: pointer;
    font-size: 32px; color: var(--bestiarium-ink, #3a2412);
    line-height: 1;
}
.bestiarium-book-head { text-align: center; margin-bottom: 22px; }
.bestiarium-book-eyebrow {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: 11px; letter-spacing: 3px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft, #6b4a2a);
}
.bestiarium-book-title {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 36px;
    margin: 4px 0 8px;
    color: var(--bestiarium-red, #9b1e1e);
}
.bestiarium-book-sub {
    margin: 0 auto;
    max-width: 600px;
    font-style: italic;
    color: var(--bestiarium-ink, #3a2412);
    font-size: 14px;
}
.bestiarium-book-count {
    text-align: center;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 2px;
    color: var(--bestiarium-ink-soft, #6b4a2a);
    margin: 0 0 18px;
}
.bestiarium-book-loading,
.bestiarium-book-empty {
    text-align: center;
    padding: 40px 20px;
    color: var(--bestiarium-ink-soft);
    font-style: italic;
}
.bestiarium-book-empty h3 {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 24px;
    margin: 0 0 8px;
    color: var(--bestiarium-red);
}
.bestiarium-book-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 18px;
}
.bestiarium-book-card {
    background: linear-gradient(180deg, #f8edc9, #e1c787);
    border: 2px double var(--bestiarium-gold, #b8862c);
    border-radius: 4px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.25);
    padding: 10px 10px 12px;
    display: flex;
    flex-direction: column;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.bestiarium-book-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(0,0,0,0.35);
}
.bestiarium-book-card.is-special { box-shadow: 0 6px 18px rgba(184,134,44,0.45); }
.bestiarium-book-card.is-original { box-shadow: 0 8px 22px rgba(155,30,30,0.55); }
.bestiarium-book-card-head {
    display: flex; justify-content: space-between; align-items: center;
    gap: 6px;
    margin-bottom: 6px;
}
.bestiarium-book-card-head h3 {
    margin: 0;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 18px;
    color: var(--bestiarium-red);
    flex: 1 1 auto;
    line-height: 1.1;
}
.bestiarium-book-tier {
    font-family: 'Cinzel', serif;
    font-size: 9px;
    letter-spacing: 1.5px;
    padding: 3px 6px;
    border-radius: 2px;
    background: rgba(58,36,18,0.7);
    color: #f8eccb;
    white-space: nowrap;
}
.bestiarium-book-tier.is-special { background: linear-gradient(180deg,#b8862c,#7a5616); }
.bestiarium-book-tier.is-original { background: linear-gradient(180deg,#9b1e1e,#5c0c0c); }
.bestiarium-book-card-img {
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: #2a1808 center/cover no-repeat;
    border: 2px solid var(--bestiarium-gold);
    box-shadow: inset 0 0 0 1px var(--bestiarium-gold-bright);
    position: relative;
    margin-bottom: 8px;
}
.bestiarium-book-card-empty {
    display: flex; align-items: center; justify-content: center;
    font-size: 48px; color: var(--bestiarium-gold-bright);
}
.bestiarium-book-card-ribbon {
    background: var(--bestiarium-ink);
    color: var(--bestiarium-gold-bright);
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 2px;
    text-align: center;
    padding: 5px 6px;
    border: 1px solid var(--bestiarium-gold);
    margin-bottom: 6px;
}
.bestiarium-book-card-lore {
    margin: 6px 0;
    font-style: italic;
    font-size: 12.5px;
    line-height: 1.4;
    color: var(--bestiarium-ink);
    flex: 1 1 auto;
}
.bestiarium-book-card-stats {
    display: flex;
    justify-content: space-around;
    gap: 4px;
    padding: 6px 4px;
    background: rgba(58,36,18,0.85);
    border: 1px solid var(--bestiarium-gold);
}
.bestiarium-book-card-stats span {
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1px;
    color: var(--bestiarium-gold-bright);
    display: flex; align-items: baseline; gap: 4px;
}
.bestiarium-book-card-stats b {
    font-size: 16px;
    color: #f8eccb;
}
/* v2.0.25: download buttons in book cards (only for purchased) */
.bestiarium-book-card-dl {
    display: flex;
    gap: 6px;
    margin-top: 8px;
    flex-wrap: wrap;
}
.bestiarium-book-dl-btn {
    flex: 1 1 auto;
    text-align: center;
    text-decoration: none;
    padding: 6px 8px;
    background: linear-gradient(180deg, #4a2a0e, #2a1408);
    color: #f8eccb !important;
    border: 1px solid var(--bestiarium-gold, #b8862c);
    border-radius: 3px;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1px;
    text-transform: uppercase;
    transition: background 0.15s ease, transform 0.1s ease;
    cursor: pointer;
}
.bestiarium-book-dl-btn:hover {
    background: linear-gradient(180deg, #5a350e, #3a1c0c);
    transform: translateY(-1px);
    color: #f8eccb !important;
}
/* v2.0.26: deck builder + archery + admin move mode */
.bestiarium-book-deckbar {
    margin: 0 0 18px;
    padding: 10px 12px;
    background: rgba(58,36,18,0.85);
    border: 2px solid var(--bestiarium-gold, #b8862c);
    border-radius: 4px;
    color: var(--bestiarium-gold-bright, #e0b94e);
}
.bestiarium-deckbar-info {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.bestiarium-deckbar-label {
    flex: 1 1 auto;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
}
.bestiarium-deckbar-hint {
    margin: 8px 0 0;
    font-size: 11px;
    color: rgba(248,236,203,0.7);
    font-style: italic;
}
.bestiarium-book-deck-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    padding: 6px 8px;
    border: 1px dashed rgba(184,134,44,0.5);
    border-radius: 3px;
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
    color: var(--bestiarium-ink, #3a2412);
    cursor: pointer;
    background: rgba(255,247,217,0.4);
}
.bestiarium-book-card.is-in-deck {
    box-shadow: 0 0 0 3px var(--bestiarium-red, #9b1e1e), 0 6px 18px rgba(0,0,0,0.35);
}
.bestiarium-book-card.is-in-deck .bestiarium-book-deck-toggle {
    background: rgba(155,30,30,0.18);
    border-style: solid;
}

/* Archery */
.bestiarium-archery-overlay {
    position: fixed; inset: 0; z-index: 2147481600;
    background: rgba(15,8,3,0.92);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 12px;
}
.bestiarium-archery-box {
    width: min(720px, 100%);
    background: linear-gradient(180deg, #2b0f04, #140601);
    border: 3px double var(--bestiarium-gold, #b8862c);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 24px 60px rgba(0,0,0,0.7);
    padding: 18px 20px 22px;
    color: #f8eccb;
    position: relative;
}
.bestiarium-archery-close {
    position: absolute; top: 6px; right: 12px;
    background: transparent; border: none; color: #f8eccb;
    font-size: 30px; cursor: pointer; line-height: 1;
}
.bestiarium-archery-box header h3 {
    margin: 0 0 4px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-gold-bright, #e0b94e);
    text-align: center;
}
.bestiarium-archery-box header p {
    margin: 0 0 10px;
    font-style: italic;
    color: rgba(248,236,203,0.8);
    font-size: 13px;
    text-align: center;
}
.bestiarium-archery-stage svg { width: 100%; height: auto; cursor: crosshair; border: 2px solid var(--bestiarium-gold); }
.bestiarium-archery-hud {
    display: flex; gap: 18px; justify-content: center;
    margin-top: 10px;
    font-family: 'Cinzel', serif; letter-spacing: 1.5px; font-size: 13px;
}
.bestiarium-archery-hud b { color: var(--bestiarium-gold-bright); font-size: 18px; }
.bestiarium-archery-result {
    text-align: center;
    margin-top: 14px;
    padding: 12px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 22px;
    color: var(--bestiarium-gold-bright);
    border: 2px solid var(--bestiarium-gold);
    background: rgba(0,0,0,0.4);
}

/* Admin move-mode cursor */
.is-loc-move-mode, .is-loc-move-mode svg { cursor: crosshair !important; }
.bestiarium-map-archery,
.bestiarium-map-minigame {
    border: 1px solid var(--bestiarium-gold, #b8862c);
    border-radius: 3px;
    padding: 8px 10px;
    background: rgba(155,30,30,0.08);
    margin-top: 8px;
}
.bestiarium-map-minigame.is-dice { background: rgba(184,134,44,0.12); }
.bestiarium-map-minigame.is-memory { background: rgba(28,58,120,0.10); }
.bestiarium-map-minigame.is-archery { background: rgba(155,30,30,0.08); }

/* v2.1.3: Dice minigame */
.bestiarium-dice-overlay {
    position: fixed; inset: 0; z-index: 2147481650;
    background: rgba(15,8,3,0.92);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 12px;
}
.bestiarium-dice-box {
    width: min(540px, 100%);
    background: linear-gradient(180deg, #2b0f04, #140601);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 24px 60px rgba(0,0,0,0.7);
    padding: 20px 22px 22px;
    color: #f8eccb;
    position: relative;
}
.bestiarium-dice-close,
.bestiarium-memory-close {
    position: absolute; top: 6px; right: 12px;
    background: transparent; border: none; color: #f8eccb;
    font-size: 30px; cursor: pointer; line-height: 1;
}
.bestiarium-dice-box header h3,
.bestiarium-memory-box header h3 {
    margin: 0 0 4px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-gold-bright, #e0b94e);
    text-align: center;
}
.bestiarium-dice-box header p,
.bestiarium-memory-box header p {
    margin: 0 0 14px;
    font-style: italic;
    font-size: 13px;
    text-align: center;
    color: rgba(248,236,203,0.8);
}
.bestiarium-dice-rows {
    display: flex; flex-direction: column; gap: 12px;
    margin: 18px 0;
}
.bestiarium-dice-row {
    display: flex; align-items: center; gap: 10px;
    padding: 12px;
    background: rgba(0,0,0,0.4);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 4px;
}
.bestiarium-dice-row[data-row="me"] { border-color: var(--bestiarium-gold-bright); }
.bestiarium-dice-label {
    flex: 0 0 100px;
    font-family: 'Cinzel', serif;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    font-size: 12px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-die {
    width: 54px; height: 54px;
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 6px;
    color: var(--bestiarium-ink);
    font-size: 40px;
    display: inline-flex; align-items: center; justify-content: center;
    text-align: center;
    box-shadow: inset 0 -3px 6px rgba(0,0,0,0.3);
}
.bestiarium-dice-sum {
    flex: 0 0 60px; text-align: center;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 22px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-dice-actions { text-align: center; }
.bestiarium-dice-result,
.bestiarium-memory-result {
    text-align: center;
    margin-top: 16px;
    padding: 12px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 22px;
    color: var(--bestiarium-gold-bright);
    border: 2px solid var(--bestiarium-gold);
    background: rgba(0,0,0,0.45);
}

/* v2.1.3: Memory minigame */
.bestiarium-memory-overlay {
    position: fixed; inset: 0; z-index: 2147481700;
    background: rgba(15,8,3,0.92);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 12px;
    overflow-y: auto;
}
.bestiarium-memory-box {
    width: min(640px, 100%);
    background: linear-gradient(180deg, #2b0f04, #140601);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 24px 60px rgba(0,0,0,0.7);
    padding: 20px 22px 22px;
    color: #f8eccb;
    position: relative;
}
.bestiarium-memory-hud {
    display: flex; gap: 22px; justify-content: center;
    margin: 8px 0 14px;
    font-family: 'Cinzel', serif; letter-spacing: 1.5px; font-size: 13px;
}
.bestiarium-memory-hud b { color: var(--bestiarium-gold-bright); font-size: 18px; }
.bestiarium-memory-board {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}
.bestiarium-mem-card {
    aspect-ratio: 3 / 4;
    position: relative;
    background: linear-gradient(180deg, #4a2a0e, #2a1408);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 4px;
    cursor: pointer;
    transition: transform 0.18s ease;
    perspective: 600px;
    color: var(--bestiarium-gold-bright);
    font-size: 38px;
    display: flex; align-items: center; justify-content: center;
}
.bestiarium-mem-card .bestiarium-mem-front { display: none; }
.bestiarium-mem-card .bestiarium-mem-back { display: inline; }
.bestiarium-mem-card.is-flipped {
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    color: var(--bestiarium-red);
}
.bestiarium-mem-card.is-flipped .bestiarium-mem-front { display: inline; }
.bestiarium-mem-card.is-flipped .bestiarium-mem-back { display: none; }
.bestiarium-mem-card.is-matched {
    box-shadow: 0 0 0 3px var(--bestiarium-gold-bright);
    cursor: default;
}

/* ============================================================
 * v2.1.6: [bestiarium_about] - About + Forum + Support page
 * ============================================================ */
.bestiarium-about .bestiarium-mainnav { margin: 12px 0 18px; }

/* v2.1.11: cinematic teaser video framed like an illuminated medallion */
.bestiarium-about-teaser {
    margin: 18px auto 24px;
    max-width: min(900px, 100%);
    text-align: center;
}
.bestiarium-about-teaser-frame {
    position: relative;
    padding: 14px;
    background:
        radial-gradient(circle at 30% 20%, rgba(224,185,78,0.25), transparent 60%),
        linear-gradient(180deg, #4b1e09, #2b0f04);
    border: 3px double var(--bestiarium-gold, #b8862c);
    box-shadow:
        0 0 0 4px rgba(155,30,30,0.55),
        0 24px 50px rgba(0,0,0,0.45),
        inset 0 0 22px rgba(0,0,0,0.4);
    border-radius: 6px;
    overflow: hidden;
}
.bestiarium-about-teaser-frame::before,
.bestiarium-about-teaser-frame::after {
    content: '';
    position: absolute;
    width: 14px; height: 14px;
    border: 2px solid var(--bestiarium-gold-bright, #e0b94e);
    border-radius: 50%;
    z-index: 2;
    pointer-events: none;
}
.bestiarium-about-teaser-frame::before { top: 18px; left: 18px; }
.bestiarium-about-teaser-frame::after  { top: 18px; right: 18px; }
.bestiarium-about-teaser-video {
    display: block;
    width: 100%;
    height: auto;
    border: 2px solid var(--bestiarium-gold-bright, #e0b94e);
    border-radius: 3px;
    background: #000;
}
.bestiarium-about-teaser-sound {
    position: absolute;
    bottom: 22px; right: 22px;
    width: 40px; height: 40px;
    border-radius: 50%;
    background: rgba(20, 10, 4, 0.78);
    color: #f8eccb;
    border: 2px solid var(--bestiarium-gold-bright, #e0b94e);
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    z-index: 3;
    transition: transform 0.12s ease, background 0.12s ease;
    box-shadow: 0 4px 10px rgba(0,0,0,0.5);
}
.bestiarium-about-teaser-sound:hover {
    transform: translateY(-1px) scale(1.06);
    background: rgba(75, 30, 9, 0.92);
}
.bestiarium-about-teaser-caption {
    margin: 10px 0 0;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 3px;
    text-transform: uppercase;
    color: var(--bestiarium-ink-soft, #6b4a2a);
}
@media (max-width: 540px) {
    .bestiarium-about-teaser-frame { padding: 8px; }
    .bestiarium-about-teaser-sound { bottom: 14px; right: 14px; width: 34px; height: 34px; font-size: 16px; }
}
.bestiarium-about-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 16px;
    margin: 12px 0;
}
.bestiarium-about-card {
    background: linear-gradient(180deg, #f8edc9, #d9bd80);
    border: 2px double var(--bestiarium-gold);
    border-radius: 4px;
    padding: 16px;
    box-shadow: 0 6px 16px rgba(0,0,0,0.22);
}
.bestiarium-about-icon {
    display: inline-block;
    font-size: 32px;
    color: var(--bestiarium-red);
    margin-bottom: 6px;
}
.bestiarium-about-card h3 {
    margin: 4px 0 6px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 20px;
    color: var(--bestiarium-red);
}
.bestiarium-about-card p {
    margin: 0;
    font-family: 'EB Garamond', serif;
    font-style: italic;
    color: var(--bestiarium-ink);
    line-height: 1.5;
}
.bestiarium-about-cta {
    margin-top: 20px;
    padding: 18px 22px;
    background: rgba(58,36,18,0.08);
    border-left: 4px solid var(--bestiarium-red);
    border-radius: 3px;
}
.bestiarium-about-test-note {
    margin: 10px 0 0;
    color: var(--bestiarium-ink-soft);
    font-style: italic;
    font-size: 14px;
}

/* Forum */
.bestiarium-forum-controls {
    display: flex; justify-content: space-between; align-items: center;
    gap: 10px; flex-wrap: wrap;
    margin-bottom: 16px;
}
.bestiarium-forum-cats { display: flex; gap: 6px; flex-wrap: wrap; }
.bestiarium-forum-cat {
    padding: 5px 12px;
    background: transparent;
    border: 1px solid var(--bestiarium-gold);
    color: var(--bestiarium-ink);
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1px;
    text-transform: uppercase;
    cursor: pointer;
    border-radius: 3px;
}
.bestiarium-forum-cat.is-active {
    background: var(--bestiarium-red);
    color: #f8eccb;
    border-color: var(--bestiarium-red);
}
.bestiarium-forum-list { display: flex; flex-direction: column; gap: 8px; }
.bestiarium-forum-loading,
.bestiarium-forum-empty {
    text-align: center;
    padding: 28px 12px;
    font-style: italic;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-forum-topic {
    display: flex;
    gap: 14px;
    padding: 12px 14px;
    background: rgba(255,247,217,0.55);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.1s ease;
}
.bestiarium-forum-topic:hover { background: rgba(255,247,217,0.85); transform: translateY(-1px); }
.bestiarium-forum-topic.is-pinned { border-left: 4px solid var(--bestiarium-red); }
.bestiarium-forum-topic-cat {
    flex: 0 0 70px;
    align-self: center;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1px;
    color: var(--bestiarium-ink-soft);
    text-align: center;
    padding: 4px 6px;
    background: rgba(58,36,18,0.08);
    border-radius: 2px;
}
.bestiarium-forum-topic.is-bug .bestiarium-forum-topic-cat { background: rgba(155,30,30,0.18); color: var(--bestiarium-red); }
.bestiarium-forum-topic.is-help .bestiarium-forum-topic-cat { background: rgba(28,58,120,0.18); color: var(--bestiarium-blue); }
.bestiarium-forum-topic.is-idea .bestiarium-forum-topic-cat { background: rgba(184,134,44,0.22); color: #5a3a05; }
.bestiarium-forum-topic-main { flex: 1 1 auto; }
.bestiarium-forum-topic h3 {
    margin: 0 0 4px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 18px;
    color: var(--bestiarium-red);
}
.bestiarium-forum-topic-meta {
    margin: 0;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-forum-modal {
    position: fixed; inset: 0; z-index: 2147481800;
    background: rgba(20,10,4,0.84);
    backdrop-filter: blur(4px);
    align-items: flex-start; justify-content: center;
    padding: 4vh 12px;
    overflow-y: auto;
}
.bestiarium-forum-modal-body {
    width: min(680px, 100%);
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 24px 60px rgba(0,0,0,0.7);
    padding: 22px 26px 22px;
    position: relative;
    border-radius: 6px;
}
.bestiarium-forum-modal-close {
    position: absolute; top: 6px; right: 12px;
    background: transparent; border: none;
    color: var(--bestiarium-ink);
    font-size: 28px; cursor: pointer; line-height: 1;
}
.bestiarium-forum-modal-body h3 {
    margin: 0 0 12px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-red);
}
.bestiarium-forum-modal-body label {
    display: block;
    margin: 10px 0;
}
.bestiarium-forum-modal-body label span { display:block; font-size: 12px; color: var(--bestiarium-ink-soft); margin-bottom: 4px; letter-spacing: 1px; text-transform: uppercase; }
.bestiarium-forum-modal-body input,
.bestiarium-forum-modal-body select,
.bestiarium-forum-modal-body textarea {
    width: 100%;
    padding: 8px 10px;
    background: rgba(255,247,217,0.9);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    font-family: 'EB Garamond', serif;
    font-size: 14px;
}
.bestiarium-forum-modal-actions { display: flex; gap: 8px; margin-top: 12px; }
.bestiarium-forum-modal-status,
.bestiarium-support-status {
    margin: 8px 0 0; font-style: italic; font-size: 12px;
    color: var(--bestiarium-ink-soft); min-height: 16px;
}
.bestiarium-forum-detail-body-text {
    padding: 12px;
    background: rgba(255,247,217,0.5);
    border-left: 3px solid var(--bestiarium-gold);
    margin: 10px 0;
    font-family: 'EB Garamond', serif;
    font-size: 15px;
    line-height: 1.55;
}
.bestiarium-forum-replies { margin-top: 14px; }
.bestiarium-forum-reply {
    padding: 10px 12px;
    background: rgba(184,134,44,0.10);
    border: 1px solid rgba(184,134,44,0.4);
    border-radius: 3px;
    margin-bottom: 6px;
}
.bestiarium-forum-reply-meta {
    margin: 0 0 4px;
    font-size: 11px;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-forum-reply-body { font-family: 'EB Garamond', serif; line-height: 1.5; }
.bestiarium-forum-replyform {
    margin-top: 14px;
    padding: 12px;
    background: rgba(58,36,18,0.08);
    border-radius: 4px;
}
.bestiarium-forum-replyform textarea {
    width: 100%; min-height: 80px;
    background: rgba(255,247,217,0.9);
    border: 1px solid var(--bestiarium-gold);
    padding: 8px;
    font-family: 'EB Garamond', serif;
}
.bestiarium-forum-pin, .bestiarium-forum-lock { font-size: 12px; }

/* Support */
.bestiarium-support {
    background: rgba(255,247,217,0.55);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 4px;
    padding: 22px 26px;
}
.bestiarium-support-intro h2 {
    margin: 0 0 6px;
    font-family: 'UnifrakturMaguntia', serif;
    color: var(--bestiarium-red);
    font-size: 26px;
}
.bestiarium-support-form label {
    display: block;
}
.bestiarium-support-form label span {
    display: block;
    font-size: 12px; letter-spacing: 1px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
    margin-bottom: 4px;
}
.bestiarium-support-form textarea {
    width: 100%;
    background: rgba(255,247,217,0.9);
    border: 1px solid var(--bestiarium-gold);
    padding: 10px;
    font-family: 'EB Garamond', serif;
    font-size: 14px;
}
.bestiarium-support-actions { margin-top: 12px; }
.bestiarium-support-points {
    margin: 18px 0 0;
    padding: 0;
    list-style: none;
    font-size: 12px;
    color: var(--bestiarium-ink-soft);
    font-style: italic;
}
.bestiarium-support-points li { padding: 2px 0; }
.bestiarium-support-locked { text-align: center; margin: 18px 0; }

/* ============================================================
 * v2.0.19: Card Duel arena + challenge popup
 * ============================================================ */
.bestiarium-duel-challenge {
    position: fixed; inset: 0; z-index: 2147481000;
    background: rgba(20,10,4,0.7);
    display: flex; align-items: center; justify-content: center;
    padding: 12px;
}
.bestiarium-duel-challenge-box {
    width: min(420px, 100%);
    padding: 24px 28px 22px;
    background: linear-gradient(180deg, #4b1e09, #2b0f04);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 24px 60px rgba(0,0,0,0.7);
    text-align: center;
    color: #f8eccb;
}
.bestiarium-duel-challenge-box h3 {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    margin: 0 0 10px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-duel-challenge-actions {
    display: flex; gap: 10px; margin-top: 18px; justify-content: center;
}
.bestiarium-duel-arena {
    position: fixed; inset: 0; z-index: 2147481500;
    background: rgba(15,8,3,0.94);
    backdrop-filter: blur(4px);
    overflow-y: auto;
    padding: 2vh 12px;
    display: flex; align-items: flex-start; justify-content: center;
}
.bestiarium-duel-box {
    width: min(1100px, 100%);
    background:
        radial-gradient(circle at 50% 0%, rgba(184,134,44,0.15), transparent 70%),
        linear-gradient(180deg, #2b0f04, #140601);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.4), 0 30px 60px rgba(0,0,0,0.7);
    padding: 24px 24px 28px;
    color: #f8eccb;
    position: relative;
}
.bestiarium-duel-close {
    position: absolute; top: 6px; right: 12px;
    background: transparent; border: none; color: #f8eccb;
    font-size: 30px; cursor: pointer; line-height: 1;
}
.bestiarium-duel-banner {
    display: flex; justify-content: space-between; align-items: center;
    border-bottom: 1px solid var(--bestiarium-gold);
    padding-bottom: 10px; margin-bottom: 14px;
    font-family: 'Cinzel', serif;
    text-transform: uppercase;
    letter-spacing: 2px;
}
.bestiarium-duel-turn-no { color: var(--bestiarium-gold-bright); font-size: 12px; }
.bestiarium-duel-turn-who { color: #f8eccb; font-size: 14px; }
.bestiarium-duel-side {
    border: 1px solid rgba(184,134,44,0.55);
    padding: 10px 12px;
    margin-bottom: 12px;
    background: rgba(0,0,0,0.35);
    border-radius: 4px;
}
.bestiarium-duel-side.is-me { border-color: var(--bestiarium-gold-bright); background: rgba(75,30,9,0.5); }
.bestiarium-duel-side-head {
    display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
    font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: 1px;
    margin-bottom: 8px;
}
.bestiarium-duel-side-head strong {
    font-family: 'UnifrakturMaguntia', serif; font-size: 20px;
    color: var(--bestiarium-gold-bright);
}
.bestiarium-duel-hpbar {
    flex: 1 1 200px; min-width: 160px; max-width: 320px;
    height: 14px;
    background: rgba(0,0,0,0.6);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 7px;
    overflow: hidden;
}
.bestiarium-duel-hpbar span {
    display: block; height: 100%;
    background: linear-gradient(90deg, #9b1e1e, #d44b4b);
    transition: width 0.4s ease;
}
.bestiarium-duel-hp-num { font-size: 12px; color: #f8eccb; }
.bestiarium-duel-deck, .bestiarium-duel-hand { color: var(--bestiarium-gold-bright); font-size: 11px; }
.bestiarium-duel-field {
    display: flex; gap: 8px; flex-wrap: wrap;
    min-height: 130px;
    padding: 6px;
    background: rgba(0,0,0,0.3);
    border: 1px dashed rgba(184,134,44,0.4);
    border-radius: 4px;
}
.bestiarium-duel-empty {
    width: 100%; text-align: center;
    font-style: italic; color: rgba(248,236,203,0.5);
    padding: 18px 0;
}
.bestiarium-duel-middle { text-align: center; margin: 6px 0; }
.bestiarium-duel-vs {
    display: inline-block;
    padding: 4px 14px;
    background: linear-gradient(180deg, #9b1e1e, #5c0c0c);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 50%;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 18px;
    color: #f8eccb;
}
.bestiarium-duel-hand-row {
    display: flex; gap: 10px; flex-wrap: wrap; justify-content: center;
    padding: 14px 8px;
    background: rgba(75,30,9,0.3);
    border-top: 1px solid var(--bestiarium-gold);
    border-bottom: 1px solid var(--bestiarium-gold);
    margin: 12px 0;
}
.bestiarium-duel-hand-card { display: flex; flex-direction: column; gap: 4px; align-items: center; }
.bestiarium-duel-card {
    width: 110px;
    background: linear-gradient(180deg, #f8edc9, #d9bd80);
    color: var(--bestiarium-ink);
    border: 2px double var(--bestiarium-gold-bright);
    border-radius: 3px;
    padding: 5px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.5);
    text-align: center;
}
.bestiarium-duel-card.is-special { box-shadow: 0 4px 18px rgba(184,134,44,0.6); }
.bestiarium-duel-card.is-original { box-shadow: 0 4px 18px rgba(155,30,30,0.7); }
.bestiarium-duel-card-img {
    width: 100%;
    aspect-ratio: 4 / 3;
    background: #2a1808 center/cover no-repeat;
    border: 1px solid var(--bestiarium-gold);
    position: relative;
    margin-bottom: 4px;
}
.bestiarium-duel-card-empty {
    display: flex; align-items: center; justify-content: center;
    font-size: 28px; color: var(--bestiarium-gold-bright);
}
.bestiarium-duel-card-name {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 13px;
    color: var(--bestiarium-red);
    line-height: 1.1;
    min-height: 26px;
}
.bestiarium-duel-card-stats {
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1px;
    color: var(--bestiarium-ink);
    background: rgba(58,36,18,0.12);
    padding: 2px;
}
.bestiarium-duel-card-stats b { color: var(--bestiarium-red); font-size: 13px; }
.bestiarium-duel-play {
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    padding: 4px 10px;
    background: var(--bestiarium-red);
    color: #f8eccb;
    border: 1px solid var(--bestiarium-gold);
    cursor: pointer;
    border-radius: 2px;
}
.bestiarium-duel-actions { display: flex; gap: 12px; justify-content: center; padding-top: 10px; }
.bestiarium-duel-wait { font-style: italic; color: var(--bestiarium-gold-bright); padding: 8px 14px; }
.bestiarium-duel-victory {
    text-align: center;
    margin-top: 18px;
    padding: 16px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 26px;
    color: var(--bestiarium-gold-bright);
    border: 2px solid var(--bestiarium-gold);
    background: rgba(0,0,0,0.5);
}
.bestiarium-duel-log {
    margin-top: 14px;
    padding: 8px 12px;
    font-size: 11px;
    color: rgba(248,236,203,0.65);
    font-style: italic;
    border-top: 1px solid rgba(184,134,44,0.4);
}
.bestiarium-peer-duel { margin-top: 8px; }

/* ============================================================
 * v2.0.22: Feedback button + modal + starter tier styling
 * ============================================================ */
.bestiarium-narrator-foot {
    padding: 8px 12px 14px;
    text-align: center;
    border-top: 1px dashed rgba(184,134,44,0.5);
}
.bestiarium-narrator-feedback-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: transparent;
    border: 1px dashed var(--bestiarium-gold, #b8862c);
    color: var(--bestiarium-ink, #3a2412);
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    padding: 6px 14px;
    border-radius: 3px;
    cursor: pointer;
    transition: background 0.15s ease;
}
.bestiarium-narrator-feedback-btn:hover {
    background: rgba(184,134,44,0.18);
}
.bestiarium-feedback-modal {
    /* inline styles set by JS for z-index/position safety */
}
.bestiarium-feedback-box {
    position: relative;
    width: min(520px, 100%);
    background: linear-gradient(180deg, #f3e0b2, #d9bd80);
    border: 3px double var(--bestiarium-gold, #b8862c);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.55), 0 24px 60px rgba(0,0,0,0.7);
    padding: 22px 26px 18px;
    border-radius: 6px;
}
.bestiarium-feedback-box h3 {
    margin: 0 0 6px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 28px;
    color: var(--bestiarium-red, #9b1e1e);
    text-align: center;
}
.bestiarium-feedback-box p {
    margin: 0 0 12px;
    font-style: italic;
    color: var(--bestiarium-ink, #3a2412);
    font-size: 14px;
    text-align: center;
}
.bestiarium-feedback-box textarea {
    width: 100%;
    padding: 10px 12px;
    font-family: 'EB Garamond', serif;
    font-size: 14px;
    background: rgba(255,247,217,0.9);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 3px;
    color: var(--bestiarium-ink);
    resize: vertical;
    min-height: 110px;
}
.bestiarium-feedback-close {
    position: absolute; top: 6px; right: 12px;
    background: transparent; border: none;
    color: var(--bestiarium-ink);
    font-size: 28px; cursor: pointer; line-height: 1;
}
.bestiarium-feedback-actions {
    display: flex; gap: 10px; justify-content: center; margin-top: 12px;
}
.bestiarium-feedback-status {
    text-align: center;
    margin: 8px 0 0;
    font-style: italic;
    color: var(--bestiarium-ink-soft, #6b4a2a);
    min-height: 18px;
    font-size: 12px;
}

/* Starter tier badge for the Bestiary Book */
.bestiarium-book-tier.is-starter {
    background: linear-gradient(180deg,#3a5b3a,#1f3a1f);
    color: #cfe7c8;
}
.bestiarium-book-card.is-starter {
    box-shadow: 0 4px 14px rgba(58,91,58,0.45);
}
.bestiarium-duel-card.is-starter {
    box-shadow: 0 4px 14px rgba(58,91,58,0.6);
}


/* ============================================================
 * v2.1.20: Random map events (banditi etc.)
 * ============================================================ */

/* v2.2.1: much louder, distinctly-not-a-location event pin. */
.bestiarium-map-event { cursor: pointer; }
.bestiarium-map-event-aura {
    fill: rgba(214, 54, 56, 0.20);
    stroke: rgba(214, 54, 56, 0.55);
    stroke-width: 0.4;
    animation: bestiarium-event-aura 2.2s ease-in-out infinite;
    transform-origin: center;
}
.bestiarium-map-event-halo {
    fill: #d63638;
    stroke: #5a1010;
    stroke-width: 0.5;
    animation: bestiarium-event-pulse 1.6s ease-in-out infinite;
    transform-origin: center;
}
.bestiarium-map-event-disc {
    fill: #f6ecc8;
    stroke: #8a5a20;
    stroke-width: 0.35;
}
.bestiarium-map-event-icon {
    font-size: 3.6px;
    fill: #5a1010;
    font-weight: bold;
}
.bestiarium-map-event-hit { cursor: pointer; }
.bestiarium-map-event.is-claimed .bestiarium-map-event-aura,
.bestiarium-map-event.is-claimed .bestiarium-map-event-halo {
    fill: rgba(140, 140, 140, 0.35);
    stroke: #666;
    animation: none;
}
.bestiarium-map-event.is-claimed .bestiarium-map-event-disc { fill: #e0e0e0; }
.bestiarium-map-event.is-claimed .bestiarium-map-event-icon { fill: #555; }
@keyframes bestiarium-event-aura {
    0%, 100% { transform: scale(1);    stroke-opacity: 0.6; }
    50%      { transform: scale(1.18); stroke-opacity: 1.0; }
}
@keyframes bestiarium-event-pulse {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.08); }
}
@media (prefers-reduced-motion: reduce) {
    .bestiarium-map-event-aura, .bestiarium-map-event-halo { animation: none; }
}

/* Modal */
.bestiarium-event-modal {
    position: fixed; inset: 0;
    background: rgba(0, 0, 0, 0.78);
    display: flex; align-items: center; justify-content: center;
    z-index: 10000;
    padding: 16px;
}
.bestiarium-event-modal .bestiarium-modal-body {
    background: linear-gradient(180deg, #f6ecc8 0%, #e8d6a5 100%);
    color: #2a1a08;
    padding: 24px;
    border-radius: 8px;
    border: 3px solid #8a6420;
    box-shadow: 0 12px 40px rgba(0,0,0,.6), inset 0 0 24px rgba(184,134,44,.25);
    max-width: 480px; width: 100%;
    max-height: 90vh; overflow-y: auto;
    position: relative;
    font-family: "EB Garamond", Georgia, serif;
}
.bestiarium-event-modal .bestiarium-modal-close {
    position: absolute; top: 8px; right: 12px;
    background: transparent; border: 0;
    font-size: 24px; cursor: pointer;
    color: #5a3008;
}
.bestiarium-event-illum {
    margin: -8px -8px 16px -8px;
    border-radius: 4px;
    overflow: hidden;
    border: 2px solid #8a6420;
    box-shadow: 0 2px 8px rgba(0,0,0,.3);
}
.bestiarium-event-illum img { width: 100%; height: auto; display: block; }
.bestiarium-event-title {
    margin: 0 0 6px 0;
    font-size: 22px;
    color: #5a1010;
    font-weight: bold;
}
.bestiarium-event-difficulty {
    margin: 0 0 14px 0;
    font-size: 13px;
    color: #b8862c;
    letter-spacing: 1px;
}
.bestiarium-event-difficulty span {
    margin-left: 6px;
    text-transform: uppercase;
    font-size: 11px;
    color: #6a4818;
    letter-spacing: 2px;
}
.bestiarium-event-story {
    margin: 0 0 16px 0;
    font-size: 15px;
    line-height: 1.6;
    color: #3a2510;
}
.bestiarium-event-reward {
    background: rgba(184, 134, 44, 0.15);
    border: 1px solid rgba(184, 134, 44, 0.4);
    padding: 10px 14px;
    border-radius: 4px;
    margin-bottom: 16px;
    display: flex; gap: 16px;
    font-size: 14px;
}
.bestiarium-event-reward strong { color: #5a1010; font-size: 16px; }
.bestiarium-event-actions {
    display: flex; gap: 12px; flex-wrap: wrap;
}
.bestiarium-event-claimed {
    background: rgba(120,120,120,.15);
    padding: 10px;
    border-radius: 4px;
    font-style: italic;
    color: #555;
}
.bestiarium-event-status .is-win {
    background: rgba(0, 130, 60, 0.15);
    border-left: 3px solid #008240;
    padding: 12px;
    margin-top: 14px;
    color: #0a4a20;
}
.bestiarium-event-status .is-loss {
    background: rgba(165, 30, 30, 0.15);
    border-left: 3px solid #a51e1e;
    padding: 12px;
    margin-top: 14px;
    color: #5a1010;
}
.bestiarium-event-status .is-error {
    background: rgba(165, 30, 30, 0.15);
    border-left: 3px solid #a51e1e;
    padding: 12px;
    margin-top: 14px;
    color: #5a1010;
}
.bestiarium-event-roll {
    font-family: monospace;
    font-size: 12px;
    color: #888;
    margin: 6px 0 0 0;
}

/* v2.2.0: random event tooltip badge */
.bestiarium-tt-terrain-event {
    background: linear-gradient(135deg, #a01a1a, #d63638);
    color: #fff8e1;
    font-weight: bold;
    letter-spacing: 1px;
}

/* ============================================================
 * v2.2.2: Travel marker on map + clickable countdown chip
 * ============================================================ */

/* v2.2.5: bigger + brighter traveller, plus an outer halo so the player
 * actually sees themselves move across the map. */
.bestiarium-map-traveller-outer-aura {
    fill: rgba(246, 200, 79, 0.22);
    stroke: rgba(246, 200, 79, 0.55);
    stroke-width: 0.4;
    animation: bestiarium-traveller-outer 2.6s ease-in-out infinite;
    transform-origin: center;
}
.bestiarium-map-traveller-aura {
    fill: rgba(184, 134, 44, 0.55);
    stroke: rgba(255, 215, 100, 1.0);
    stroke-width: 0.6;
    animation: bestiarium-traveller-pulse 1.6s ease-in-out infinite;
    transform-origin: center;
}
.bestiarium-map-traveller-disc {
    fill: #fff4c8;
    stroke: #6a3a0c;
    stroke-width: 0.5;
}
.bestiarium-map-traveller-ring {
    fill: #fff4c8;
    stroke: #b8862c;
    stroke-width: 0.6;
}
.bestiarium-map-traveller-glyph {
    font-size: 4.2px;
    fill: #2a1408;
    font-weight: bold;
}
@keyframes bestiarium-traveller-outer {
    0%, 100% { transform: scale(1);    stroke-opacity: 0.4; }
    50%      { transform: scale(1.25); stroke-opacity: 0.9; }
}
@keyframes bestiarium-traveller-pulse {
    0%, 100% { transform: scale(1);    stroke-opacity: 0.65; }
    50%      { transform: scale(1.14); stroke-opacity: 1.0;  }
}

.bestiarium-travel-chip {
    position: absolute;
    /* v3.17.0: below the map-level breadcrumb so it no longer covers it */
    top: 64px; left: 14px;
    background: linear-gradient(135deg, rgba(40, 22, 8, 0.94), rgba(64, 40, 16, 0.94));
    color: #f4e4b7;
    border: 2px solid #b8862c;
    border-radius: 999px;
    padding: 8px 14px 8px 10px;
    display: flex; align-items: center; gap: 10px;
    font-family: "EB Garamond", Georgia, serif;
    cursor: pointer;
    z-index: 60;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.bestiarium-travel-chip:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
    background: linear-gradient(135deg, rgba(48, 26, 8, 0.96), rgba(76, 48, 18, 0.96));
}
.bestiarium-travel-chip-icon {
    font-size: 22px;
    color: #f6c84f;
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px;
    background: #2a1808;
    border-radius: 50%;
    border: 1px solid #8a5a20;
    animation: bestiarium-travel-chip-icon 2s ease-in-out infinite;
}
@keyframes bestiarium-travel-chip-icon {
    0%, 100% { transform: rotate(-6deg); }
    50%      { transform: rotate(6deg); }
}
.bestiarium-travel-chip-body {
    display: flex; flex-direction: column; line-height: 1.1;
}
.bestiarium-travel-chip-to {
    font-size: 12px;
    color: rgba(244, 228, 183, 0.75);
    letter-spacing: 0.4px;
}
.bestiarium-travel-chip-time {
    font-size: 18px;
    font-weight: bold;
    color: #f6c84f;
    font-variant-numeric: tabular-nums;
    letter-spacing: 1px;
}
@media (prefers-reduced-motion: reduce) {
    .bestiarium-map-traveller-aura,
    .bestiarium-travel-chip-icon { animation: none; }
}

/* v2.2.7: Adventures gallery (completed random events) in profile */
.bestiarium-profile-adventures { margin-top: 24px; }
.bestiarium-adventures-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
    gap: 14px;
}
.bestiarium-adv-card {
    background: linear-gradient(180deg, rgba(170,32,32,0.15) 0%, rgba(40,20,8,0.4) 100%);
    border: 2px solid #8a4012;
    border-radius: 6px;
    overflow: hidden;
    cursor: pointer;
    margin: 0;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.bestiarium-adv-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(170,32,32,0.35);
}
.bestiarium-adv-card:focus-visible {
    outline: 3px solid #f6c84f;
    outline-offset: 3px;
}
.bestiarium-adv-card img {
    width: 100%; height: 140px; object-fit: cover; display: block;
}
.bestiarium-adv-fallback {
    width: 100%; height: 140px;
    background: rgba(0,0,0,0.4);
    color: #f4e4b7;
    display: flex; align-items: center; justify-content: center;
    font-size: 42px;
}
.bestiarium-adv-card figcaption {
    padding: 10px;
    display: flex; flex-direction: column; gap: 4px;
    color: #f4e4b7;
    font-family: "EB Garamond", Georgia, serif;
}
.bestiarium-adv-card strong {
    font-size: 14px;
    color: #f6c84f;
    line-height: 1.2;
}
.bestiarium-adv-stars {
    color: #f6c84f;
    letter-spacing: 1px;
    font-size: 12px;
}
.bestiarium-adv-badge {
    align-self: flex-start;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: bold;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.bestiarium-adv-badge.is-won {
    background: #0a4a20;
    color: #d4edda;
}
.bestiarium-adv-badge.is-loss {
    background: #5a1010;
    color: #fde7e9;
}
.bestiarium-adv-card small {
    font-size: 11px;
    color: rgba(244, 228, 183, 0.7);
}
.bestiarium-adv-card-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 5px;
    margin-top: 4px;
}
.bestiarium-adv-card-stats > span {
    min-width: 0;
    padding: 5px 3px;
    border: 1px solid rgba(246, 200, 79, 0.3);
    background: rgba(24, 13, 7, 0.45);
    text-align: center;
}
.bestiarium-adv-card-stats b,
.bestiarium-adv-card-stats small {
    display: block;
}
.bestiarium-adv-card-stats b {
    color: #fff0bd;
    font-size: 16px;
    line-height: 1;
}
.bestiarium-adv-card-stats small {
    margin-top: 3px;
    overflow-wrap: anywhere;
}
.bestiarium-adventure-popup .bestiarium-item-popup-body {
    max-width: 600px;
}
.bestiarium-adv-popup-meta {
    color: #b8862c;
    font-size: 13px;
    margin: 4px 0 16px 0;
    letter-spacing: 0.4px;
}
.bestiarium-adv-popup-story {
    font-size: 16px;
    line-height: 1.6;
    color: #2a1408;
    text-align: justify;
    margin-bottom: 20px;
}
.bestiarium-adv-popup-stats {
    padding-top: 14px;
    border-top: 1px solid rgba(138, 64, 18, 0.4);
}
.bestiarium-adv-popup-stats h4 {
    margin: 0 0 10px;
    color: #6d241a;
    font-family: Cinzel, Georgia, serif;
    font-size: 15px;
    letter-spacing: 0;
}
.bestiarium-adv-popup-stat-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
}
.bestiarium-adv-popup-stat-grid > div {
    min-width: 0;
    padding: 10px 6px;
    border: 1px solid #c49345;
    background: rgba(196, 147, 69, 0.1);
    text-align: center;
}
.bestiarium-adv-popup-stat-grid strong,
.bestiarium-adv-popup-stat-grid span {
    display: block;
}
.bestiarium-adv-popup-stat-grid strong {
    color: #3b1d0e;
    font-size: 24px;
    line-height: 1;
}
.bestiarium-adv-popup-stat-grid span {
    margin-top: 5px;
    color: #674324;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
}
.bestiarium-adv-popup-stat-grid .is-won strong { color: #17612f; }
.bestiarium-adv-popup-stat-grid .is-loss strong { color: #8b2721; }
.bestiarium-adv-popup-last {
    margin: 10px 0 0;
    color: #6d4a2e;
    font-size: 13px;
}
@media (max-width: 520px) {
    .bestiarium-adventures-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .bestiarium-adv-card img,
    .bestiarium-adv-fallback { height: 112px; }
    .bestiarium-adv-popup-stat-grid { gap: 5px; }
    .bestiarium-adv-popup-stat-grid > div { padding: 9px 3px; }
}
.bestiarium-adv-popup-owned {
    background: rgba(0, 130, 60, 0.15);
    border-left: 3px solid #008240;
    padding: 10px 14px;
    color: #0a4a20;
    font-style: italic;
}

/* v2.2.8: other pilgrims travelling on the map (smaller, blue accent) */
.bestiarium-map-othertravel { pointer-events: auto; cursor: help; }
.bestiarium-map-othertravel-aura {
    fill: rgba(80, 140, 220, 0.22);
    stroke: rgba(80, 140, 220, 0.65);
    stroke-width: 0.3;
    animation: bestiarium-othertravel-pulse 2s ease-in-out infinite;
    transform-origin: center;
}
.bestiarium-map-othertravel-ring {
    fill: #f0e6c8;
    stroke: #3a5a8c;
    stroke-width: 0.4;
}
.bestiarium-map-othertravel-glyph {
    font-size: 2.4px;
    fill: #1a2a4a;
    font-weight: bold;
}
@keyframes bestiarium-othertravel-pulse {
    0%, 100% { transform: scale(1);    stroke-opacity: 0.5; }
    50%      { transform: scale(1.15); stroke-opacity: 0.9; }
}
@media (prefers-reduced-motion: reduce) {
    .bestiarium-map-othertravel-aura { animation: none; }
}

/* v2.2.9: chat action buttons for sell_item and gift chips */
.bestiarium-dialog-sell {
    background: linear-gradient(180deg, #f6c84f, #b8862c);
    color: #2a1408;
    border: 2px solid #6a3a0c;
    border-radius: 6px;
    padding: 8px 14px;
    margin: 6px 4px 6px 0;
    font-family: "EB Garamond", Georgia, serif;
    font-weight: bold;
    cursor: pointer;
    transition: transform 0.1s ease, box-shadow 0.15s ease;
}
.bestiarium-dialog-sell:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(184, 134, 44, 0.5);
    background: linear-gradient(180deg, #ffd766, #c89630);
}
.bestiarium-dialog-sell:disabled {
    opacity: 0.7; cursor: not-allowed;
    transform: none;
}
.bestiarium-dialog-action.is-gift {
    background: linear-gradient(135deg, #d4edda, #82c352);
    color: #0a4a20;
    border: 1px solid #008240;
    padding: 4px 10px;
    border-radius: 999px;
    font-weight: bold;
    font-size: 13px;
}
.bestiarium-dialog-action.is-cooldown {
    background: rgba(140,140,140,0.18);
    color: #555;
    font-style: italic;
    border: 1px dashed #999;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 12px;
}

/* ============================================================
 * v2.3.0: LEVEL-UP REWARD POPUP
 * ============================================================ */
.bestiarium-levelup-overlay {
    position: fixed; inset: 0;
    background: rgba(8,4,2,0.85);
    z-index: 99000;
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
    animation: bestiarium-levelup-fadein 0.3s ease-out;
}
@keyframes bestiarium-levelup-fadein {
    from { opacity: 0; }
    to { opacity: 1; }
}
@keyframes bestiarium-levelup-rise {
    from { transform: translateY(40px) scale(0.92); opacity: 0; }
    to   { transform: translateY(0) scale(1); opacity: 1; }
}
@keyframes bestiarium-levelup-glow {
    0%, 100% { box-shadow: 0 0 30px rgba(246,200,79,0.6), 0 0 60px rgba(246,200,79,0.3); }
    50%      { box-shadow: 0 0 50px rgba(246,200,79,0.9), 0 0 100px rgba(246,200,79,0.5); }
}
.bestiarium-levelup-card {
    background: linear-gradient(180deg, #fff7d9 0%, #f0dca8 100%);
    border: 4px double #6a3a0c;
    border-radius: 8px;
    padding: 30px 32px 24px;
    max-width: 460px;
    width: 100%;
    text-align: center;
    font-family: "EB Garamond", Georgia, serif;
    color: #2a1408;
    position: relative;
    animation: bestiarium-levelup-rise 0.45s cubic-bezier(0.2,0.9,0.3,1.2) both,
               bestiarium-levelup-glow 2.4s ease-in-out infinite;
    max-height: 90vh;
    overflow-y: auto;
}
.bestiarium-levelup-ribbon {
    font-family: 'UnifrakturMaguntia', 'EB Garamond', serif;
    font-size: 18px;
    color: #b8862c;
    text-transform: uppercase;
    letter-spacing: 2px;
    margin-bottom: 8px;
}
.bestiarium-levelup-level {
    font-family: 'UnifrakturMaguntia', 'Cinzel', serif;
    font-size: 44px;
    color: #6a1818;
    font-weight: bold;
    margin: 4px 0 18px;
    text-shadow: 0 2px 0 rgba(255,247,217,0.8);
}
.bestiarium-levelup-coins {
    display: flex; align-items: center; justify-content: center; gap: 10px;
    background: linear-gradient(180deg, rgba(246,200,79,0.4), rgba(184,134,44,0.25));
    border: 1px solid #b8862c;
    border-radius: 4px;
    padding: 12px;
    margin-bottom: 14px;
    font-size: 17px;
}
.bestiarium-levelup-coin-icon { font-size: 28px; }
.bestiarium-levelup-item {
    background: rgba(58,36,18,0.06);
    border: 2px solid #b8862c;
    border-radius: 6px;
    padding: 14px;
    margin-bottom: 14px;
}
.bestiarium-levelup-item-label {
    font-size: 13px;
    color: #6a3a0c;
    font-style: italic;
    margin-bottom: 8px;
}
.bestiarium-levelup-item-img {
    width: 110px; height: 110px;
    object-fit: contain;
    border: 2px solid #b8862c;
    border-radius: 4px;
    margin: 0 auto 8px;
    display: block;
    background: #1a0e04;
}
.bestiarium-levelup-item-name {
    font-family: 'UnifrakturMaguntia', 'EB Garamond', serif;
    font-size: 22px;
    color: #6a1818;
    font-weight: bold;
}
.bestiarium-levelup-item-bonus {
    background: #2a4a18;
    color: #d4edda;
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: bold;
    margin-top: 6px;
}
.bestiarium-levelup-item-lore {
    font-style: italic;
    font-size: 13px;
    color: #5a3a18;
    margin-top: 8px;
    padding: 0 4px;
}
.bestiarium-levelup-bagfull {
    margin-top: 8px;
    color: #8a3a0c;
    font-size: 12px;
    font-style: italic;
}
.bestiarium-levelup-noitem {
    font-style: italic;
    color: #5a3a18;
    padding: 12px;
    margin-bottom: 14px;
}
.bestiarium-levelup-xp {
    background: rgba(106,58,12,0.08);
    border-top: 1px dashed #b8862c;
    border-bottom: 1px dashed #b8862c;
    padding: 12px 8px;
    margin-bottom: 18px;
    font-size: 15px;
}
.bestiarium-levelup-xp strong { color: #6a1818; font-size: 17px; }
.bestiarium-levelup-close {
    background: linear-gradient(180deg, #6a1818, #4a0808);
    color: #f6c84f;
    border: 2px solid #f6c84f;
    border-radius: 4px;
    padding: 10px 30px;
    font-family: 'Cinzel', 'EB Garamond', serif;
    font-size: 16px;
    font-weight: bold;
    letter-spacing: 1px;
    cursor: pointer;
    text-transform: uppercase;
    transition: transform 0.1s ease, box-shadow 0.15s ease;
}
.bestiarium-levelup-close:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(106,24,24,0.5);
}

/* v2.3.1: XP progress bar inside the statusbar XP pill, plus level-up pulse */
.bestiarium-stat.is-xp {
    position: relative;
    padding-bottom: 8px;
}
.bestiarium-xp-progress {
    position: absolute;
    left: 6px; right: 6px; bottom: 3px;
    height: 4px;
    background: rgba(106,58,12,0.25);
    border-radius: 2px;
    overflow: hidden;
    display: block;
}
.bestiarium-xp-progress-fill {
    display: block;
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, #f6c84f, #b8862c, #f6c84f);
    background-size: 200% 100%;
    animation: bestiarium-xp-shimmer 2.5s linear infinite;
    transition: width 0.5s cubic-bezier(0.2, 0.9, 0.3, 1);
    box-shadow: 0 0 6px rgba(246,200,79,0.6);
}
@keyframes bestiarium-xp-shimmer {
    from { background-position: 0% 50%; }
    to   { background-position: 200% 50%; }
}
@keyframes bestiarium-level-pulse {
    0%   { transform: scale(1);    box-shadow: 0 0 0 rgba(246,200,79,0); }
    30%  { transform: scale(1.25); box-shadow: 0 0 24px rgba(246,200,79,0.95); }
    100% { transform: scale(1);    box-shadow: 0 0 0 rgba(246,200,79,0); }
}
.bestiarium-stat.is-level.is-leveled {
    animation: bestiarium-level-pulse 1.2s ease-out;
}

/* v2.3.3: quest navigator chip in dialog + pulsing map marker */
.bestiarium-dialog-quest {
    background: linear-gradient(180deg, #d4c089, #b8862c);
    color: #2a1408;
    border: 2px solid #6a3a0c;
    border-radius: 6px;
    padding: 8px 14px;
    margin: 6px 4px 6px 0;
    font-family: "EB Garamond", Georgia, serif;
    font-weight: bold;
    cursor: pointer;
    transition: transform 0.1s ease, box-shadow 0.15s ease;
}
.bestiarium-dialog-quest:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(184, 134, 44, 0.5);
}
@keyframes bestiarium-map-pulse {
    0%, 100% { filter: drop-shadow(0 0 0 rgba(246,200,79,0)); transform: scale(1); }
    50%      { filter: drop-shadow(0 0 14px rgba(246,200,79,0.95)); transform: scale(1.55); }
}
.bestiarium-map-loc.is-pulsing > circle,
.bestiarium-map-loc.is-pulsing > image,
.bestiarium-map-loc.is-pulsing > rect,
.bestiarium-map-loc.is-pulsing > polygon {
    transform-origin: center;
    transform-box: fill-box;
    animation: bestiarium-map-pulse 1.4s ease-in-out 4;
}

/* v2.4.0: Cloister Riddles minigame modal */
.bestiarium-riddle-overlay {
    position: fixed; inset: 0;
    background: rgba(8,4,2,0.82);
    z-index: 98000;
    display: flex; align-items: center; justify-content: center;
    padding: 16px;
}
.bestiarium-riddle-box {
    background: linear-gradient(180deg, #fff7d9 0%, #ecd9a4 100%);
    border: 3px double #6a3a0c;
    border-radius: 6px;
    padding: 22px 26px;
    max-width: 480px;
    width: 100%;
    font-family: "EB Garamond", Georgia, serif;
    color: #2a1408;
    position: relative;
}
.bestiarium-riddle-close {
    position: absolute; top: 6px; right: 8px;
    background: none; border: none; font-size: 22px; cursor: pointer; color: #6a3a0c;
}
.bestiarium-riddle-box h3 {
    font-family: 'UnifrakturMaguntia', 'EB Garamond', serif;
    font-size: 22px; color: #6a1818; margin: 0 0 12px;
}
.bestiarium-riddle-progress { font-size: 13px; color: #888; font-family: serif; }
.bestiarium-riddle-question {
    font-size: 16px; line-height: 1.55; font-style: italic;
    background: rgba(58,36,18,0.06); border-left: 3px solid #b8862c;
    padding: 10px 12px; margin: 0 0 14px;
}
.bestiarium-riddle-choices { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.bestiarium-riddle-choice {
    background: linear-gradient(180deg, #f6e3a7, #d4b876);
    border: 2px solid #6a3a0c;
    color: #2a1408;
    padding: 10px 14px;
    font-family: "EB Garamond", Georgia, serif;
    font-size: 15px;
    text-align: left;
    cursor: pointer;
    border-radius: 4px;
    transition: transform 0.1s ease, background 0.15s ease;
}
.bestiarium-riddle-choice:hover:not(:disabled) {
    background: linear-gradient(180deg, #ffeebf, #e8c87f);
    transform: translateY(-1px);
}
.bestiarium-riddle-choice.is-correct { background: linear-gradient(180deg, #aedf90, #6ab057); border-color: #2c4c20; color: #102808; }
.bestiarium-riddle-choice.is-wrong   { background: linear-gradient(180deg, #f29a9a, #c54e4e); border-color: #6a1818; color: #4a0808; }
.bestiarium-riddle-choice:disabled { cursor: default; opacity: 0.92; }
.bestiarium-riddle-feedback { font-weight: bold; text-align: center; margin: 6px 0; }
.bestiarium-riddle-feedback.is-good { color: #2c4c20; }
.bestiarium-riddle-feedback.is-bad  { color: #6a1818; }
.bestiarium-riddle-summary { font-size: 17px; text-align: center; }
.bestiarium-riddle-reward {
    text-align: center; font-size: 17px; font-weight: bold; color: #6a3a0c;
    margin: 10px 0 14px;
}
.bestiarium-riddle-reward.is-cooldown { color: #888; font-style: italic; font-weight: normal; }

/* ============================================================
 * v2.5.0: community gathering + hall of fame + rename + charge
 * ============================================================ */
.bestiarium-event-gather {
    margin-top: 12px;
    padding: 10px 12px;
    background: rgba(58,36,18,0.07);
    border: 2px dashed var(--bestiarium-gold);
    border-radius: 4px;
}
.bestiarium-event-gather h4 {
    margin: 0 0 6px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 17px;
    color: var(--bestiarium-red);
}
.bestiarium-event-gather-cd { font-size: 14px; margin: 4px 0; }
.bestiarium-event-gather-cd strong { font-size: 17px; color: #6a1818; font-variant-numeric: tabular-nums; }
.bestiarium-event-gather-hint { font-size: 12px; font-style: italic; color: var(--bestiarium-ink-soft); margin: 4px 0 8px; }
.bestiarium-event-gather-open {
    font-weight: bold; color: #6a1818; font-size: 15px;
    animation: bestiarium-level-pulse 1.4s ease-in-out infinite;
    display: inline-block; padding: 2px 6px;
}
.bestiarium-event-gather-party { font-size: 12px; margin: 6px 0; }
.bestiarium-event-gather-joined { color: #2c4c20; font-weight: 600; font-size: 13px; margin: 6px 0; }

.bestiarium-fame-list { list-style: none; margin: 0; padding: 0; }
.bestiarium-fame-row {
    display: flex; align-items: center; gap: 10px;
    padding: 6px 8px;
    border-bottom: 1px dashed rgba(184,134,44,0.4);
}
.bestiarium-fame-row.is-me { background: rgba(246,200,79,0.22); border-radius: 4px; }
.bestiarium-fame-rank { width: 34px; text-align: center; font-size: 16px; flex: 0 0 auto; }
.bestiarium-fame-avatar {
    width: 32px; height: 32px; border-radius: 50%;
    object-fit: cover; border: 2px solid var(--bestiarium-gold);
    flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
    background: #1a0e04; color: var(--bestiarium-gold);
}
.bestiarium-fame-name { flex: 1 1 auto; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bestiarium-fame-level { flex: 0 0 auto; font-size: 13px; }
.bestiarium-fame-xp { flex: 0 0 auto; font-size: 12px; color: var(--bestiarium-ink-soft); min-width: 70px; text-align: right; }

.bestiarium-map-minigame-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
}
.bestiarium-map-minigame-actions .bestiarium-btn { margin: 0; }
.bestiarium-minigame-rank-overlay {
    position: fixed;
    inset: 0;
    z-index: 100020;
    display: grid;
    place-items: center;
    padding: max(14px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right))
        max(14px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
    background: rgba(24, 13, 6, .78);
}
.bestiarium-minigame-rank-dialog {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    width: min(620px, 100%);
    max-height: min(760px, calc(100dvh - 28px));
    overflow: hidden;
    color: #382311;
    background: #f7e8b9;
    border: 3px double #a67520;
    border-radius: 8px;
    box-shadow: 0 18px 55px rgba(0, 0, 0, .58), inset 0 0 0 3px rgba(255, 250, 222, .7);
}
.bestiarium-minigame-rank-dialog > header {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr) 44px;
    align-items: center;
    gap: 12px;
    min-height: 76px;
    padding: 10px 12px;
    color: #f5e7bd;
    background: #352010;
    border-bottom: 2px solid #b8862c;
}
.bestiarium-minigame-rank-dialog header small {
    display: block;
    color: #dcb85c;
    font: 700 11px/1.2 Cinzel, Georgia, serif;
    letter-spacing: 0;
}
.bestiarium-minigame-rank-dialog h3 {
    margin: 2px 0 0;
    overflow-wrap: anywhere;
    color: inherit;
    font: 600 20px/1.2 Cinzel, Georgia, serif;
    letter-spacing: 0;
}
.bestiarium-minigame-rank-icon {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border: 1px solid #d2ad61;
    border-radius: 50%;
    color: #f4cf65;
    font-size: 22px;
}
.bestiarium-minigame-rank-dialog [data-minigame-rank-close] {
    width: 44px;
    height: 44px;
    min-width: 44px;
    padding: 0;
    color: #f5e7bd;
    background: transparent;
    border: 0;
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
}
.bestiarium-minigame-rank-body {
    min-height: 160px;
    overflow: auto;
    overscroll-behavior: contain;
    padding: 14px 18px 18px;
}
.bestiarium-minigame-rank-list {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}
.bestiarium-minigame-rank-list li {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    min-height: 48px;
    padding: 7px 9px;
    border-bottom: 1px solid rgba(126, 77, 20, .25);
}
.bestiarium-minigame-rank-list li:nth-child(1) { background: rgba(211, 164, 42, .18); }
.bestiarium-minigame-rank-list li.is-current { box-shadow: inset 4px 0 #9b1e1e; }
.bestiarium-minigame-rank-position { color: #8f641f; text-align: center; }
.bestiarium-minigame-rank-list span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
}
.bestiarium-minigame-rank-list strong { color: #701a19; font-variant-numeric: tabular-nums; }
.bestiarium-minigame-rank-body > footer {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-top: 13px;
    padding: 10px 9px 0;
    border-top: 2px solid rgba(126, 77, 20, .3);
}
.bestiarium-minigame-rank-private-note {
    display: grid;
    gap: 5px;
    margin: 12px 0 0;
    padding: 12px 14px;
    border: 1px solid rgba(126, 77, 20, .35);
    background: rgba(211, 164, 42, .12);
    color: #5f3d25;
}
.bestiarium-minigame-rank-private-note small,
.bestiarium-minigame-rank-private-caption {
    display: block;
    color: #745942;
    font-size: 13px;
    line-height: 1.4;
}
.bestiarium-minigame-rank-private-caption { margin: 8px 9px 0; }
.bestiarium-minigame-result-rank {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 10px 5px 0;
}

.bestiarium-fame-minigames {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
}
.bestiarium-fame-minigame {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr);
    gap: 1px 9px;
    align-items: center;
    min-height: 56px;
    padding: 7px 9px;
    border: 1px solid rgba(184, 134, 44, .42);
    background: rgba(255, 247, 217, .45);
}
.bestiarium-fame-minigame-icon {
    grid-row: 1 / span 2;
    text-align: center;
    font-size: 20px;
}
.bestiarium-fame-minigame-copy { display: grid; gap: 2px; min-width: 0; }
.bestiarium-fame-minigame-name,
.bestiarium-fame-minigame-champion {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bestiarium-fame-minigame-name { color: var(--bestiarium-ink-soft); font-size: 12px; }
.bestiarium-fame-minigame-champion { color: #6a1818; font-weight: 700; }

@media (max-width: 600px) {
    .bestiarium-minigame-rank-overlay { place-items: end center; padding: 8px 8px max(8px, env(safe-area-inset-bottom)); }
    .bestiarium-minigame-rank-dialog { max-height: min(88dvh, 760px); }
    .bestiarium-minigame-rank-body { padding-right: 10px; padding-left: 10px; }
    .bestiarium-fame-minigames { grid-template-columns: 1fr; }
}

.bestiarium-name-edit {
    background: none; border: none; cursor: pointer;
    font-size: 16px; color: var(--bestiarium-gold);
    vertical-align: middle; padding: 0 4px;
}
.bestiarium-name-edit:hover { color: var(--bestiarium-red); }

.bestiarium-dialog-action.is-charge {
    background: linear-gradient(135deg, #f8d7da, #e8a0a6);
    color: #6a1818;
    border: 1px solid #9b1e1e;
    padding: 4px 10px;
    border-radius: 999px;
    font-weight: bold;
    font-size: 13px;
}

/* v3.0.0: hierarchical map level chip (top-left over the map) */
.bestiarium-map-level-chip {
    position: absolute;
    top: 10px; left: 10px;
    z-index: 30;
    display: flex; align-items: center; gap: 8px;
    background: linear-gradient(180deg, rgba(255,247,217,0.95), rgba(231,201,122,0.95));
    border: 2px solid #6a3a0c;
    border-radius: 4px;
    padding: 6px 10px;
    box-shadow: 0 3px 8px rgba(0,0,0,0.35);
}
.bestiarium-map-level-name {
    font-family: 'Cinzel', serif;
    font-size: 12px;
    font-weight: bold;
    letter-spacing: 1px;
    color: #3a2412;
}


/* v3.1.0: folder-style map breadcrumb */
.bestiarium-map-crumb {
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 1px;
    color: #3a2412;
    background: none;
    border: none;
    padding: 0 2px;
}
.bestiarium-map-crumb.is-link {
    cursor: pointer;
    text-decoration: underline;
    color: #6a1818;
    font-weight: 600;
}
.bestiarium-map-crumb.is-link:hover { color: #9b1e1e; }
.bestiarium-map-crumb.is-current {
    font-weight: bold;
    background: rgba(246,200,79,0.45);
    border: 1px solid #b8862c;
    border-radius: 3px;
    padding: 2px 8px;
}
.bestiarium-map-crumb-sep { color: #6a3a0c; padding: 0 2px; font-weight: bold; }


/* v3.2.0: child-map down-link in breadcrumb */
.bestiarium-map-crumb.is-child { font-style: italic; }


/* ============================================================
 * v3.4.0: EQUIPMENT PAPER-DOLL
 * ============================================================ */
.bestiarium-equipment { position: relative; }
.bestiarium-doll {
    display: grid;
    grid-template-areas:
        "eye head guild"
        "shoulders avatar back"
        "handl avatar handr"
        "wristl avatar wristr"
        "ringl neck ringr"
        "body belt legs"
        "mount house feet"
        "pack house .";
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    max-width: 720px;
    margin: 0 auto;
    padding: 16px;
    background:
        radial-gradient(ellipse at center, rgba(184,134,44,0.10) 0%, rgba(0,0,0,0) 75%),
        repeating-linear-gradient(45deg, rgba(184,134,44,0.05) 0 10px, transparent 10px 20px);
    border: 3px double var(--bestiarium-gold);
    border-radius: 8px;
}
.bestiarium-doll-cell { min-width: 0; }
.bestiarium-doll-cell.is-eye      { grid-area: eye; }
.bestiarium-doll-cell.is-guild    { grid-area: guild; }
.bestiarium-doll-cell.is-head     { grid-area: head; }
.bestiarium-doll-cell.is-body     { grid-area: body; }
.bestiarium-doll-cell.is-neck     { grid-area: neck; }
.bestiarium-doll-cell.is-handl    { grid-area: handl; }
.bestiarium-doll-cell.is-handr    { grid-area: handr; }
.bestiarium-doll-cell.is-wristl   { grid-area: wristl; }
.bestiarium-doll-cell.is-wristr   { grid-area: wristr; }
.bestiarium-doll-cell.is-ringl    { grid-area: ringl; }
.bestiarium-doll-cell.is-ringr    { grid-area: ringr; }
.bestiarium-doll-cell.is-shoulders { grid-area: shoulders; }
.bestiarium-doll-cell.is-back     { grid-area: back; }
.bestiarium-doll-cell.is-legs     { grid-area: legs; }
.bestiarium-doll-cell.is-feet     { grid-area: feet; }
.bestiarium-doll-cell.is-avatar   { grid-area: avatar; display: flex; align-items: center; justify-content: center; }
.bestiarium-doll-cell.is-mount    { grid-area: mount; }
.bestiarium-doll-cell.is-belt     { grid-area: belt; }
.bestiarium-doll-cell.is-pack     { grid-area: pack; }
.bestiarium-doll-avatar {
    width: 120px; height: 120px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid var(--bestiarium-gold);
    box-shadow: 0 0 0 3px rgba(155,30,30,0.55), 0 6px 18px rgba(0,0,0,0.4);
    background: #1a0e04;
}
.bestiarium-doll-avatar-empty {
    display: flex; align-items: center; justify-content: center;
    font-size: 56px; color: var(--bestiarium-gold);
}
.bestiarium-equip-slot {
    position: relative;
    background: rgba(255,247,217,0.75);
    border: 2px dashed rgba(106,58,12,0.5);
    border-radius: 6px;
    min-height: 100px;
    padding: 6px;
    overflow-wrap: anywhere;
    display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
    gap: 3px;
    text-align: center;
}
.bestiarium-equip-slot.is-filled {
    border-style: solid;
    border-color: var(--bestiarium-gold);
    background: linear-gradient(180deg, #fff7d9, #f0dca8);
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(58,36,18,0.25);
}
.bestiarium-equip-slot.is-filled:hover { border-color: var(--bestiarium-red); }
.bestiarium-equip-slot.is-secondary {
    border-style: dotted;
    background: rgba(224, 185, 100, 0.28);
}
.bestiarium-equip-slot.is-secondary .bestiarium-equip-slot-img { opacity: 0.62; }
.bestiarium-equip-slot.is-invalid { border-color: #a51d1d; }
.bestiarium-equip-occupied,
.bestiarium-equip-invalid-note {
    display: block;
    font-size: 9px;
    line-height: 1.2;
    color: #7b4b16;
}
.bestiarium-equip-invalid-note { color: #9b1e1e; font-weight: 700; }
.bestiarium-equip-slot-label {
    font-family: 'Cinzel', serif;
    font-size: 10px; letter-spacing: 1px; text-transform: uppercase;
    color: var(--bestiarium-ink-soft);
}
.bestiarium-equip-slot-img {
    width: 52px; height: 52px; object-fit: cover;
    border-radius: 4px; border: 1px solid var(--bestiarium-gold);
}
.bestiarium-equip-slot-glyph { font-size: 36px; line-height: 52px; }
.bestiarium-equip-slot-name { font-size: 11px; font-weight: bold; color: var(--bestiarium-ink); }
.bestiarium-equip-slot-bonus {
    font-size: 10px; font-weight: bold;
    background: #2a4a18; color: #d4edda;
    padding: 1px 7px; border-radius: 999px;
}
.bestiarium-equip-slot-empty { font-size: 24px; color: rgba(106,58,12,0.35); line-height: 60px; }

.bestiarium-bag-card.is-equipped { outline: 2px solid var(--bestiarium-gold); outline-offset: 2px; }
.bestiarium-equip-badge {
    display: inline-block;
    font-size: 10px; font-weight: bold;
    background: rgba(246,200,79,0.55); color: #5a3a05;
    border: 1px solid var(--bestiarium-gold);
    padding: 1px 6px; border-radius: 999px;
    margin-top: 3px;
}
.bestiarium-equip-btn {
    display: block;
    margin: 4px auto 0;
    font-size: 10px;
    padding: 3px 10px;
    cursor: pointer;
    border: 1px solid #6a3a0c;
    border-radius: 3px;
    background: linear-gradient(180deg, #fff5cb, #ddb964);
    font-family: 'Cinzel', serif;
    letter-spacing: 1px;
}
.bestiarium-equip-btn:hover { border-color: var(--bestiarium-red); }


/* v3.4.2: stacked pack-slot counter */
.bestiarium-equip-count {
    display: inline-block;
    background: var(--bestiarium-red);
    color: #fff7d9;
    font-weight: bold;
    font-size: 11px;
    padding: 0 7px;
    border-radius: 999px;
    margin-left: 3px;
}


/* v3.5.0: armour total line */
.bestiarium-armour-total {
    text-align: center;
    font-size: 13px;
    margin: 0 0 10px;
    color: var(--bestiarium-ink);
}
.bestiarium-armour-total strong { color: #2a4a18; font-size: 15px; }


/* v3.5.1: move/unequip popover on equipment slots */
.bestiarium-slot-menu {
    position: absolute;
    top: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 60;
    display: flex;
    flex-direction: column;
    gap: 4px;
    background: linear-gradient(180deg, #fff7d9, #f0dca8);
    border: 2px solid #6a3a0c;
    border-radius: 6px;
    padding: 6px;
    box-shadow: 0 8px 22px rgba(0,0,0,0.45);
    min-width: 150px;
}
.bestiarium-slot-menu button {
    border: 1px solid #6a3a0c;
    border-radius: 4px;
    background: linear-gradient(180deg, #fff5cb, #ddb964);
    font-family: 'Cinzel', serif;
    font-size: 11px;
    letter-spacing: 0.5px;
    padding: 6px 8px;
    cursor: pointer;
    white-space: nowrap;
    text-align: left;
}
.bestiarium-slot-menu button:hover { border-color: var(--bestiarium-red); }
.bestiarium-slot-menu button.is-unequip {
    background: rgba(140,140,140,0.15);
    color: #5a3a18;
    border-style: dashed;
}



/* v4.54.0: explicit slot picker for items that fit more than one position. */
.bestiarium-equip-choice-overlay {
    position: fixed;
    inset: 0;
    z-index: 100120;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(30, 18, 8, 0.72);
}
.bestiarium-equip-choice {
    width: min(520px, 96vw);
    max-height: 88vh;
    overflow-y: auto;
    padding: 18px;
    border: 3px double var(--bestiarium-gold);
    border-radius: 8px;
    background: #fff3c9;
    color: var(--bestiarium-ink);
    box-shadow: 0 18px 50px rgba(0,0,0,0.55);
}
.bestiarium-equip-choice h3 { margin: 0 0 8px; text-align: center; }
.bestiarium-equip-choice-item { margin: 0 0 12px; text-align: center; font-weight: 700; }
.bestiarium-equip-choice-note {
    margin: 0 0 12px;
    padding: 8px;
    border-left: 3px solid var(--bestiarium-red);
    background: rgba(155,30,30,0.08);
}
.bestiarium-equip-choice-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.bestiarium-equip-choice-btn {
    min-height: 62px;
    padding: 9px;
    border: 1px solid #6a3a0c;
    border-radius: 5px;
    background: linear-gradient(180deg, #fff8dd, #e1bd68);
    color: var(--bestiarium-ink);
    cursor: pointer;
    text-align: left;
}
.bestiarium-equip-choice-btn strong,
.bestiarium-equip-choice-btn span { display: block; }
.bestiarium-equip-choice-btn span { margin-top: 4px; font-size: 11px; }
.bestiarium-equip-choice-btn:hover { border-color: var(--bestiarium-red); }
.bestiarium-equip-choice-cancel {
    display: block;
    margin: 14px auto 0;
    padding: 7px 18px;
    border: 1px solid #6a3a0c;
    border-radius: 4px;
    background: #ead9ae;
    cursor: pointer;
}
/* v3.5.2: defense stat card + collapsible profile sections */
.bestiarium-stat-card.is-defense .bestiarium-stat-card-value { color: #2a4a18; }

.bestiarium-collapse-btn {
    float: right;
    width: 26px; height: 26px;
    line-height: 1;
    font-size: 18px;
    font-weight: bold;
    color: #6a3a0c;
    background: linear-gradient(180deg, #fff5cb, #ddb964);
    border: 2px solid #6a3a0c;
    border-radius: 4px;
    cursor: pointer;
    margin-left: 8px;
}
.bestiarium-collapse-btn:hover { border-color: var(--bestiarium-red); color: var(--bestiarium-red); }
.bestiarium-profile-section h3.is-collapsible { cursor: pointer; user-select: none; }
.bestiarium-profile-section.is-collapsed > *:not(h3) { display: none !important; }
.bestiarium-profile-section.is-collapsed h3 { margin-bottom: 0; opacity: 0.85; }


/* v3.6.0: stack badge + prayer choice overlay */
.bestiarium-bag-card { position: relative; }
.bestiarium-stack-badge {
    position: absolute;
    top: 4px; right: 4px;
    z-index: 3;
    background: var(--bestiarium-red);
    color: #fff7d9;
    font-weight: bold;
    font-size: 12px;
    padding: 1px 8px;
    border-radius: 999px;
    border: 1px solid #fff7d9;
    box-shadow: 0 2px 5px rgba(0,0,0,0.4);
}
.bestiarium-pray-choice {
    position: absolute; inset: 0;
    z-index: 20;
    display: flex; align-items: center; justify-content: center;
    background: rgba(10,5,2,0.82);
    padding: 12px;
    box-sizing: border-box;
}
.bestiarium-pray-box {
    display: flex; flex-direction: column; gap: 10px;
    background: linear-gradient(180deg, #fff7d9, #ecd9a4);
    border: 3px double var(--bestiarium-gold);
    border-radius: 8px;
    padding: 18px 22px;
    width: min(340px, 100%);
    max-width: 340px;
    max-height: calc(100% - 8px);
    max-height: min(82vh, calc(100% - 8px));
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    box-sizing: border-box;
    text-align: center;
}
.bestiarium-pray-box h4 {
    margin: 0;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 22px;
    color: var(--bestiarium-red);
}
.bestiarium-pray-box p {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--bestiarium-ink);
}
.bestiarium-pray-box .bestiarium-btn { width: 100%; }
.bestiarium-spell-box {
    width: 100%;
    width: min(420px, 100%);
    max-width: 420px;
    overflow-y: auto;
}
.bestiarium-spell-choice-list {
    flex: 0 0 auto;
    min-height: 44px;
    max-height: min(280px, 42vh);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 2px 4px 2px 0;
}
.bestiarium-spell-choice-item {
    flex: 0 0 auto;
    display: grid;
    gap: 5px;
}
.bestiarium-spell-box .bestiarium-btn small {
    display: block;
    margin-top: 3px;
    font-size: 11px;
    opacity: 0.78;
}
.bestiarium-spell-lore {
    display: block;
    margin: -5px 0 4px;
    font-size: 12px;
    line-height: 1.35;
    color: #5b3216;
}
.bestiarium-spell-draw {
    align-items: flex-start;
    overflow-y: auto;
    overscroll-behavior: contain;
}
.bestiarium-spell-draw-box {
    width: min(760px, calc(100% - 24px));
    max-height: min(92vh, calc(100% - 24px));
    overflow-y: auto;
    background: linear-gradient(180deg, #2a160b, #120905);
    border: 3px double var(--bestiarium-gold);
    border-radius: 8px;
    padding: 16px;
    color: #fff7d9;
    box-shadow: 0 12px 34px rgba(0,0,0,0.55);
    box-sizing: border-box;
}
.bestiarium-spell-draw-box header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-family: 'Cinzel', serif;
}
.bestiarium-spell-draw-box p { margin: 8px 0 10px; color: #f1d994; }
.bestiarium-spell-draw-box canvas {
    display: block;
    width: 100%;
    height: clamp(320px, 50vh, 500px);
    border: 1px solid rgba(224,185,78,0.65);
    border-radius: 6px;
    background: radial-gradient(circle at center, rgba(224,185,78,0.12), rgba(0,0,0,0.2));
    touch-action: none;
    cursor: crosshair;
}
.bestiarium-spell-guide-meter {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content 36px;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    margin: 8px 0 6px;
    padding: 7px 8px 7px 10px;
    border: 1px solid rgba(224,185,78,0.38);
    border-radius: 6px;
    background: rgba(0,0,0,0.2);
    box-sizing: border-box;
}
.bestiarium-spell-guide-status {
    min-width: 0;
    color: #f7e3a6;
    font-size: 12px;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.bestiarium-spell-guide-clock {
    min-width: 68px;
    padding: 5px 7px;
    border: 1px solid rgba(255,225,112,0.42);
    border-radius: 4px;
    background: rgba(255,225,112,0.08);
    color: #ffe170;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    text-align: center;
    box-sizing: border-box;
}
.bestiarium-spell-guide-clock.is-running {
    border-color: rgba(128,241,211,0.62);
    color: #b9ffea;
}
.bestiarium-spell-guide-clock.is-warning {
    border-color: #ef725e;
    background: rgba(155,30,30,0.28);
    color: #ffd6c9;
}
.bestiarium-spell-guide-replay {
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid rgba(255,225,112,0.55);
    border-radius: 4px;
    background: rgba(255,225,112,0.1);
    color: #ffe170;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}
.bestiarium-spell-guide-replay:hover,
.bestiarium-spell-guide-replay:focus-visible {
    background: rgba(255,225,112,0.22);
    outline: 2px solid rgba(128,241,211,0.75);
    outline-offset: 1px;
}
.bestiarium-spell-guide-progress {
    width: 100%;
    height: 6px;
    margin: 0 0 9px;
    overflow: hidden;
    border-radius: 3px;
    background: rgba(0,0,0,0.34);
}
.bestiarium-spell-guide-progress > i {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: #80f1d3;
    box-shadow: 0 0 8px rgba(128,241,211,0.65);
    transition: width 60ms linear, background-color 120ms ease;
}
.bestiarium-spell-guide-progress > i.is-warning {
    background: #ef725e;
    box-shadow: 0 0 8px rgba(239,114,94,0.7);
}
.bestiarium-spell-draw-box canvas.is-demonstrating,
.bestiarium-spell-practice-canvas.is-demonstrating {
    cursor: wait;
}
.bestiarium-spell-practice-body .bestiarium-spell-guide-meter {
    border-color: rgba(153,108,30,0.38);
    background: rgba(255,247,217,0.72);
}
.bestiarium-spell-practice-body .bestiarium-spell-guide-status {
    color: var(--bestiarium-ink-soft);
}
.bestiarium-spell-practice-body .bestiarium-spell-guide-clock {
    border-color: rgba(153,108,30,0.42);
    background: rgba(153,108,30,0.08);
    color: #6c4a0b;
}
.bestiarium-spell-practice-body .bestiarium-spell-guide-clock.is-running {
    border-color: rgba(31,122,58,0.52);
    color: #1f6f38;
}
.bestiarium-spell-practice-body .bestiarium-spell-guide-clock.is-warning {
    border-color: rgba(155,30,30,0.62);
    background: rgba(155,30,30,0.12);
    color: #7c1d13;
}
.bestiarium-spell-practice-body .bestiarium-spell-guide-replay {
    border-color: rgba(153,108,30,0.5);
    background: rgba(153,108,30,0.08);
    color: #6c4a0b;
}
.bestiarium-spell-practice-body .bestiarium-spell-guide-progress {
    background: rgba(109,67,17,0.16);
}
.bestiarium-spell-draw-actions { margin-top: 10px; text-align: right; }
.bestiarium-spell-combat-modal {
    --bestiarium-parchment: #f0e1bd;
    --bestiarium-ink: #3a2412;
    --bestiarium-ink-soft: #6b4a2a;
    --bestiarium-gold: #b8862c;
    --bestiarium-red: #9b1e1e;
    position: fixed;
    inset: 0;
    z-index: 10020;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(12, 6, 3, 0.82);
    backdrop-filter: blur(5px);
    box-sizing: border-box;
}
.bestiarium-spell-combat-box {
    width: min(860px, calc(100vw - 28px));
    max-height: min(92vh, 760px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    background: linear-gradient(180deg, #fff7d9, #dec27f);
    border: 3px double var(--bestiarium-gold, #b8862c);
    box-shadow: 0 0 0 4px rgba(155,30,30,0.45), 0 24px 70px rgba(0,0,0,0.62);
    border-radius: 8px;
    padding: 22px;
    box-sizing: border-box;
    text-align: center;
    color: var(--bestiarium-ink, #3a2412);
}
.bestiarium-spell-combat-box h4 {
    margin: 0 0 8px;
    font-family: 'UnifrakturMaguntia', 'Cinzel', serif;
    font-size: 30px;
    color: var(--bestiarium-red, #9b1e1e);
}
.bestiarium-spell-combat-box > p {
    margin: 0 0 14px;
    color: var(--bestiarium-ink-soft, #6b4a2a);
    font-size: 16px;
    line-height: 1.45;
}
.bestiarium-spell-combat-box .bestiarium-spell-choice-list {
    max-height: min(46vh, 360px);
    margin: 8px 0 14px;
    padding-right: 6px;
}
.bestiarium-spell-combat-box .bestiarium-spell-pick-btn {
    width: 100%;
    text-align: left;
}
.bestiarium-spell-combat-box .bestiarium-spell-pick-btn small {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    opacity: 0.78;
}
.bestiarium-spell-combat-box .bestiarium-spell-lore {
    text-align: left;
}
.bestiarium-spell-mana-summary {
    margin: 4px 0 12px;
    padding: 10px 0;
    border-top: 1px solid rgba(47, 107, 131, 0.42);
    border-bottom: 1px solid rgba(47, 107, 131, 0.42);
    color: #284c5d;
    text-align: left;
}
.bestiarium-spell-mana-head {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    font-family: 'Cinzel', serif;
}
.bestiarium-spell-mana-bar {
    display: block;
    height: 9px;
    margin: 6px 0 4px;
    overflow: hidden;
    border: 1px solid rgba(47, 107, 131, 0.5);
    border-radius: 2px;
    background: rgba(47, 107, 131, 0.12);
}
.bestiarium-spell-mana-bar span {
    display: block;
    height: 100%;
    background: #2f6b83;
    transition: width 180ms ease;
}
.bestiarium-spell-mana-summary small { font-size: 11px; }
.bestiarium-spell-choice-item.is-unaffordable { opacity: 0.58; }
.bestiarium-spell-choice-item.is-unaffordable .bestiarium-spell-pick-btn { cursor: not-allowed; }
.bestiarium-spell-mana-warning {
    margin: 0 0 12px !important;
    color: #8b2f1f !important;
    font-size: 13px !important;
}
.bestiarium-spell-result-mana {
    display: block;
    padding-top: 8px;
    border-top: 1px solid rgba(47, 107, 131, 0.32);
    color: #284c5d;
    font-family: 'Cinzel', serif;
    font-size: 13px;
}
.bestiarium-spell-combat-draw {
    padding: 16px;
}
.bestiarium-spell-combat-box .bestiarium-spell-draw-box {
    width: 100%;
    max-height: none;
    margin: 0;
    box-shadow: inset 0 0 18px rgba(0,0,0,0.22);
}
.bestiarium-spell-combat-box .bestiarium-spell-draw-box canvas {
    height: clamp(360px, 52vh, 560px);
}
.bestiarium-spell-combat-box .bestiarium-spell-draw-actions .bestiarium-btn {
    min-width: 180px;
}
.bestiarium-spell-combat-result {
    display: grid;
    gap: 10px;
    justify-items: center;
    margin: 12px auto;
    padding: 18px;
    border: 2px solid rgba(184,134,44,0.55);
    border-radius: 8px;
    background: rgba(255,247,217,0.72);
    box-shadow: inset 0 0 18px rgba(184,134,44,0.16);
}
.bestiarium-spell-combat-result strong {
    font-family: 'Cinzel', serif;
    font-size: 18px;
    letter-spacing: 1px;
}
.bestiarium-spell-combat-result span {
    font-size: 18px;
    line-height: 1.4;
}
.bestiarium-spell-combat-result.is-good { border-color: rgba(54,130,72,0.65); }
.bestiarium-spell-combat-result.is-low { border-color: rgba(184,134,44,0.82); }
.bestiarium-spell-combat-result.is-error { border-color: rgba(155,30,30,0.75); }
.bestiarium-spell-result-percent {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 118px;
    height: 118px;
    border-radius: 50%;
    background: radial-gradient(circle, #fff7d9 0%, #e0b94e 72%, #9b1e1e 100%);
    color: #3a2412;
    font-family: 'Cinzel', serif;
    font-size: 34px;
    font-weight: 800;
    box-shadow: 0 8px 24px rgba(58,36,18,0.28);
}
.bestiarium-spell-result-note {
    margin: 8px 0 0;
    font-size: 13px;
    color: var(--bestiarium-ink-soft, #6b4a2a);
}
.bestiarium-prayer-choice-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 12px;
    margin: 12px 0 14px;
}
.bestiarium-prayer-choice-btn {
    display: flex;
    flex-direction: column;
    gap: 6px;
    justify-content: center;
    min-height: 104px;
    text-align: left;
    white-space: normal;
    line-height: 1.35;
}
.bestiarium-prayer-choice-btn strong {
    font-size: 14px;
    letter-spacing: 1.4px;
}
.bestiarium-prayer-choice-btn small {
    display: block;
    font-family: 'EB Garamond', Garamond, 'Times New Roman', serif;
    font-size: 14px;
    letter-spacing: 0;
    text-transform: none;
    opacity: 0.92;
}
.bestiarium-prayer-result-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    width: min(520px, 100%);
}
.bestiarium-prayer-result-stats span {
    display: grid;
    gap: 2px;
    padding: 10px 8px;
    border: 1px solid rgba(184,134,44,0.45);
    border-radius: 6px;
    background: rgba(255,247,217,0.68);
}
.bestiarium-prayer-result-stats small {
    font-size: 12px;
    color: var(--bestiarium-ink-soft, #6b4a2a);
}
.bestiarium-prayer-result-stats strong {
    font-family: 'Cinzel', serif;
    font-size: 24px;
    color: var(--bestiarium-red, #9b1e1e);
}
@media (max-width: 560px) {
    .bestiarium-spell-combat-modal { padding: 10px; align-items: flex-start; overflow-y: auto; }
    .bestiarium-spell-combat-box { width: min(100%, calc(100vw - 20px)); padding: 14px; max-height: none; }
    .bestiarium-spell-combat-box h4 { font-size: 25px; }
    .bestiarium-spell-combat-box .bestiarium-spell-choice-list { max-height: 42vh; }
    .bestiarium-spell-combat-box .bestiarium-spell-draw-box canvas { height: min(46vh, 380px); }
    .bestiarium-spell-result-percent { width: 96px; height: 96px; font-size: 28px; }
    .bestiarium-prayer-choice-grid,
    .bestiarium-prayer-result-stats { grid-template-columns: 1fr; }
}
.bestiarium-spell-school-list {
    display: grid;
    gap: 10px;
    margin-top: 10px;
}
.bestiarium-spell-school-note {
    margin: 0;
    padding: 8px 10px;
    border: 1px solid rgba(153, 108, 30, 0.28);
    border-radius: 6px;
    background: rgba(255, 248, 219, 0.65);
    color: #5b3216;
    font-size: 13px;
}
.bestiarium-spell-learn-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
    padding: 10px;
    border: 1px solid rgba(153, 108, 30, 0.24);
    border-radius: 6px;
    background: rgba(255,255,255,0.56);
}
.bestiarium-spell-learn-card strong,
.bestiarium-spell-learn-card small,
.bestiarium-spell-learn-card em {
    display: block;
}
.bestiarium-spell-learn-card small {
    margin-top: 2px;
    color: #7b4b1e;
    font-size: 12px;
}
.bestiarium-spell-learn-card p {
    margin: 6px 0 0;
    color: #5b3216;
    font-size: 12px;
    line-height: 1.35;
}
.bestiarium-spell-learn-card em {
    margin-top: 5px;
    color: #8b2f1f;
    font-size: 12px;
    font-style: normal;
}
.bestiarium-spell-attempts {
    margin: 8px 0;
    color: #f1d994;
    font-family: 'Cinzel', serif;
}
.bestiarium-spell-school-modal {
    align-items: flex-start;
    overflow-y: auto;
}
.bestiarium-spell-school-modal .bestiarium-purchase-body {
    width: min(820px, calc(100vw - 24px));
    max-width: min(820px, calc(100vw - 24px));
    max-height: 92vh;
    overflow-y: auto;
}
.bestiarium-spell-school-modal .bestiarium-spell-draw-box {
    width: min(760px, calc(100vw - 48px));
    margin-top: 8px;
}
@media (max-width: 560px) {
    .bestiarium-spell-learn-card { grid-template-columns: 1fr; }
    .bestiarium-spell-learn-card .bestiarium-btn { width: 100%; }
    .bestiarium-spell-guide-meter { grid-template-columns: minmax(0, 1fr) 62px 34px; gap: 5px; padding: 6px; }
    .bestiarium-spell-guide-status { font-size: 11px; }
    .bestiarium-spell-guide-clock { min-width: 62px; padding-inline: 4px; font-size: 11px; }
    .bestiarium-spell-guide-replay { width: 34px; height: 34px; }
    .bestiarium-spell-practice-body {
        padding: 14px 12px 16px;
    }
    .bestiarium-spell-draw-box canvas,
    .bestiarium-spell-practice-canvas { height: min(46vh, 360px); }
}


/* v3.7.0: bag group headings + floating combat numbers */
.bestiarium-bag-group {
    grid-column: 1 / -1;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--bestiarium-red);
    border-bottom: 1px dashed var(--bestiarium-gold);
    padding: 8px 0 3px;
    margin-top: 4px;
}
@keyframes bestiarium-float-up {
    0%   { transform: translate(-50%, 0); opacity: 0; }
    15%  { opacity: 1; }
    100% { transform: translate(-50%, -46px); opacity: 0; }
}
.bestiarium-float-dmg {
    position: absolute;
    left: 50%; top: 38%;
    transform: translate(-50%, 0);
    z-index: 15;
    font-family: 'Cinzel', serif;
    font-size: 30px;
    font-weight: bold;
    pointer-events: none;
    animation: bestiarium-float-up 1.4s ease-out forwards;
    text-shadow: 0 2px 6px rgba(0,0,0,0.8);
}
.bestiarium-float-dmg.is-taken { color: #ff6a5e; }
.bestiarium-float-dmg.is-heal  { color: #8be08a; }


/* v3.8.0: PvP dice wager modal */
.bestiarium-wager-modal {
    position: fixed; inset: 0; z-index: 100000;
    display: flex; align-items: center; justify-content: center;
    background: rgba(10,5,2,0.7);
}
.bestiarium-wager-body {
    background: linear-gradient(180deg, #fff7d9, #ecd9a4);
    border: 3px double var(--bestiarium-gold);
    border-radius: 8px;
    padding: 22px 26px;
    max-width: 380px;
    width: calc(100% - 40px);
    text-align: center;
    font-family: 'EB Garamond', serif;
    color: var(--bestiarium-ink);
}
.bestiarium-wager-body h3 {
    margin: 0 0 10px;
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 24px;
    color: var(--bestiarium-red);
}
.bestiarium-wager-stake { display: block; margin: 12px 0; font-size: 14px; }
.bestiarium-wager-stake input {
    display: block; margin: 6px auto 0; width: 110px;
    text-align: center; font-size: 18px; padding: 4px;
    border: 1px solid var(--bestiarium-gold); border-radius: 4px;
}
.bestiarium-wager-actions { display: flex; gap: 10px; justify-content: center; margin-top: 12px; }
.bestiarium-wager-note { min-height: 18px; margin: 8px 0 0; font-size: 13px; color: var(--bestiarium-red); }
.bestiarium-wager-rolls { display: flex; flex-direction: column; gap: 6px; margin: 10px 0; }
.bestiarium-wager-rolls > div {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    background: rgba(255,247,217,0.7);
    border: 1px solid var(--bestiarium-gold); border-radius: 6px;
    padding: 4px 10px;
}
.bestiarium-wager-rolls span { font-size: 13px; }
.bestiarium-wager-die { font-size: 34px; line-height: 1; color: var(--bestiarium-ink); }
.bestiarium-wager-headline { font-weight: bold; font-size: 16px; margin: 10px 0 4px; }
.bestiarium-peer-wager { margin-left: 6px; }


/* v3.9.0: level-up permanent stat point */
.bestiarium-levelup-stat {
    margin: 10px auto;
    padding: 8px 16px;
    max-width: 300px;
    background: rgba(255,247,217,0.85);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 8px;
    font-family: 'Cinzel', serif;
    font-size: 17px;
    color: var(--bestiarium-red);
}
.bestiarium-levelup-stat small {
    font-family: 'EB Garamond', serif;
    font-size: 12px;
    color: var(--bestiarium-ink);
}

/* v3.9.0: night expeditions */
.bestiarium-exped-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 10px;
}
.bestiarium-exped-card {
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    padding: 14px 10px;
    background: rgba(255,247,217,0.75);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 8px;
    cursor: pointer;
    font-family: 'EB Garamond', serif;
    color: var(--bestiarium-ink);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.bestiarium-exped-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(0,0,0,0.25);
}
.bestiarium-exped-card:disabled { opacity: 0.5; cursor: wait; }
.bestiarium-exped-icon { font-size: 30px; line-height: 1; }
.bestiarium-exped-card strong { font-family: 'Cinzel', serif; font-size: 13px; }
.bestiarium-exped-card small { font-size: 11px; opacity: 0.75; }
.bestiarium-exped-professions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.bestiarium-exped-professions .bestiarium-exped-card {
    min-height: 152px;
    justify-content: flex-start;
    text-align: center;
}
.bestiarium-exped-profession-name,
.bestiarium-exped-choice-profession {
    color: var(--bestiarium-red);
    font-family: 'Cinzel', serif;
    font-size: 12px;
    font-weight: 700;
}
.bestiarium-exped-active small {
    display: block;
    color: var(--bestiarium-red);
}
.bestiarium-exped-warning {
    padding: 12px;
    border-left: 4px solid var(--bestiarium-red);
    background: rgba(138, 25, 25, 0.08);
}
.bestiarium-exped-finds {
    margin-top: 16px;
    padding-top: 12px;
    border-top: 1px solid var(--bestiarium-gold);
}
.bestiarium-exped-finds h4 { margin: 0 0 8px; }
.bestiarium-exped-find {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid rgba(151, 105, 24, 0.28);
}
.bestiarium-exped-find div,
.bestiarium-exped-find small { display: block; }
.bestiarium-exped-find-auto {
    color: #49613a;
    font-size: 12px;
    font-style: italic;
}
.bestiarium-exped-confirm-rules { text-align: left; }
.bestiarium-exped-result-story {
    padding: 12px;
    border: 1px solid rgba(151, 105, 24, 0.45);
    background: rgba(255, 247, 217, 0.62);
    font-style: italic;
}
.bestiarium-exped-active {
    background: rgba(40,24,8,0.06);
    border: 1px dashed var(--bestiarium-gold);
    border-radius: 6px;
    padding: 10px 14px;
    line-height: 1.6;
}

@media (max-width: 640px) {
    .bestiarium-exped-professions { grid-template-columns: 1fr; }
    .bestiarium-exped-professions .bestiarium-exped-card { min-height: 0; }
    .bestiarium-exped-find { grid-template-columns: 1fr; }
    .bestiarium-exped-find .bestiarium-btn { width: 100%; }
}


/* v3.9.1: expedition overlay — the map is veiled while the character is away */
.bestiarium-exped-overlay {
    position: absolute; inset: 0; z-index: 90;
    background: radial-gradient(circle at center, rgba(10, 18, 42, 0.90) 0%, rgba(2, 4, 12, 0.97) 90%);
    display: flex; align-items: center; justify-content: center;
    backdrop-filter: blur(5px);
    color: #e8e2c8;
    border-radius: 8px;
}
.bestiarium-exped-overlay-box {
    width: min(480px, 92%);
    text-align: center;
    padding: 28px 30px;
    border: 3px double var(--bestiarium-gold);
    border-radius: 10px;
    background: rgba(8, 12, 28, 0.55);
}
.bestiarium-exped-overlay-moon {
    font-size: 52px;
    line-height: 1;
    animation: bestiarium-moon-bob 4s ease-in-out infinite;
}
@keyframes bestiarium-moon-bob {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-8px); }
}
.bestiarium-exped-overlay-box h3 {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 24px;
    margin: 10px 0 6px;
    color: #f6c84f;
}
.bestiarium-exped-overlay-box p { margin: 4px 0; font-size: 15px; }
.bestiarium-exped-overlay-timer {
    font-family: 'Cinzel', serif;
    font-size: 34px;
    letter-spacing: 3px;
    margin: 10px 0;
    color: #fff7d9;
    text-shadow: 0 0 14px rgba(246, 200, 79, 0.5);
}
.bestiarium-exped-overlay-note { font-size: 12px !important; opacity: 0.75; font-style: italic; }


/* v3.9.2: peer-profile challenge buttons must be clearly readable */
.bestiarium-peer-duel, .bestiarium-peer-wager {
    display: inline-block;
    margin: 8px 8px 0 0;
    font-family: 'Cinzel', serif;
    font-weight: bold;
    font-size: 13px;
    padding: 7px 14px;
}
.bestiarium-peer-duel {
    background: var(--bestiarium-red) !important;
    color: #fff7d9 !important;
    border: 2px solid var(--bestiarium-gold) !important;
}
.bestiarium-peer-wager {
    background: #fff7d9 !important;
    color: #6a1818 !important;
    border: 2px solid var(--bestiarium-gold) !important;
}

/* v3.9.2: VÝZVY statusbar pill */
.bestiarium-stat.is-challenges { cursor: pointer; }
@keyframes bestiarium-challenge-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(246, 200, 79, 0.0); }
    50%      { box-shadow: 0 0 12px 3px rgba(246, 200, 79, 0.75); }
}
.bestiarium-stat.is-challenges.has-challenges {
    animation: bestiarium-challenge-pulse 1.6s ease-in-out infinite;
    border-color: var(--bestiarium-gold);
}
.bestiarium-stat.is-challenges.has-challenges .bestiarium-stat-value {
    color: var(--bestiarium-red);
    font-weight: bold;
}

/* v3.74.0: blink the QUESTY pill until the welcome (auto-start) quest is done. */
@keyframes bestiarium-quests-blink {
    0%, 100% { box-shadow: 0 0 0 0 rgba(246, 200, 79, 0.0); border-color: var(--bestiarium-gold); }
    50%      { box-shadow: 0 0 16px 5px rgba(246, 200, 79, 0.9); border-color: #fff3c4; }
}
@keyframes bestiarium-quests-blink-icon {
    0%, 100% { transform: scale(1); opacity: 0.85; }
    50%      { transform: scale(1.28); opacity: 1; }
}
.bestiarium-stat.is-quests.bestiarium-quests-blink {
    animation: bestiarium-quests-blink 1.1s ease-in-out infinite;
    border-color: var(--bestiarium-gold);
}
.bestiarium-stat.is-quests.bestiarium-quests-blink .bestiarium-stat-icon {
    display: inline-block;
    animation: bestiarium-quests-blink-icon 1.1s ease-in-out infinite;
}
.bestiarium-stat.is-quests.bestiarium-quests-blink .bestiarium-stat-label {
    color: var(--bestiarium-red);
    font-weight: bold;
}
@media (prefers-reduced-motion: reduce) {
    .bestiarium-stat.is-quests.bestiarium-quests-blink,
    .bestiarium-stat.is-quests.bestiarium-quests-blink .bestiarium-stat-icon {
        animation: none;
    }
}

/* v3.9.2: challenge inbox rows */
.bestiarium-inbox-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    background: rgba(255,247,217,0.7);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 6px;
    padding: 8px 12px;
    margin: 8px 0;
    font-size: 14px;
    text-align: left;
}
.bestiarium-inbox-actions { display: flex; gap: 6px; }


/* v3.9.3: peer profile must be readable on every theme — force ink colour
   (dark themes made the text inherit near-white on the parchment). */
.bestiarium-peer-body,
.bestiarium-peer-body p,
.bestiarium-peer-body span,
.bestiarium-peer-body small,
.bestiarium-peer-body strong,
.bestiarium-peer-body figcaption,
.bestiarium-peer-body li {
    color: var(--bestiarium-ink);
}
.bestiarium-peer-body .bestiarium-peer-head-text h2 { color: var(--bestiarium-red); }
.bestiarium-peer-body .bestiarium-stat-card {
    background: rgba(255,247,217,0.85);
    border: 1px solid var(--bestiarium-gold);
    color: var(--bestiarium-ink);
}
.bestiarium-peer-body .bestiarium-stat-card-label,
.bestiarium-peer-body .bestiarium-stat-card-value,
.bestiarium-peer-body .bestiarium-stat-card-max {
    color: var(--bestiarium-ink);
}
.bestiarium-peer-body .bestiarium-badge {
    background: var(--bestiarium-red);
    color: #fff7d9;
}

/* v3.9.3: outgoing challenge rows */
.bestiarium-inbox-row.is-outgoing { opacity: 0.92; background: rgba(232,222,190,0.55); }


/* v3.9.4 ROOT-CAUSE FIX: modals mount on <body>, OUTSIDE .bestiarium-shell,
   so every var(--bestiarium-*) resolved to nothing there — invisible duel
   buttons, ghost badges, missing borders. Define the palette globally. */
:root {
    --bestiarium-parchment: #f0e1bd;
    --bestiarium-parchment-dark: #d8c094;
    --bestiarium-ink: #3a2412;
    --bestiarium-ink-soft: #6b4a2a;
    --bestiarium-gold: #b8862c;
    --bestiarium-gold-bright: #e0b94e;
    --bestiarium-red: #9b1e1e;
    --bestiarium-blue: #1c3a78;
    --bestiarium-blue-soft: #34589a;
    --bestiarium-shadow: 0 12px 32px rgba(58, 36, 18, 0.25);
}

/* v3.9.4: peer-profile sections fold like the own profile */
.bestiarium-peer-section.is-collapsed > *:not(h3) { display: none; }

/* v3.91.1: NPC lore story box */
.bestiarium-npc-lore {
    margin: 12px 0 4px;
    padding: 12px 16px;
    background: rgba(120, 80, 20, 0.08);
    border-left: 3px solid var(--color-gold, #c9a84c);
    border-radius: 0 6px 6px 0;
}
.bestiarium-npc-lore p {
    margin: 0;
    font-style: italic;
    font-size: 13px;
    line-height: 1.6;
    color: var(--color-text, inherit);
    opacity: 0.9;
}

/* v3.92.0: location abilities popup */
.bestiarium-abilities-popup {
    position: fixed; inset: 0; z-index: 9999;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,0.5);
}
.bestiarium-abilities-box {
    background: var(--color-bg, #f8f2e4);
    border: 2px solid #2d6e40;
    border-radius: 8px;
    padding: 18px 20px;
    max-width: 340px; width: 90%;
    position: relative;
}
.bestiarium-abilities-title {
    font-weight: bold; margin: 0 0 10px; font-size: 14px;
    color: #2d6e40;
}
.bestiarium-abilities-box ul {
    margin: 0; padding: 0 0 0 16px; list-style: none;
}
.bestiarium-abilities-box ul li {
    font-size: 13px; padding: 5px 0;
    border-bottom: 1px solid rgba(45,110,64,0.15);
    line-height: 1.5;
}
.bestiarium-abilities-box ul li:last-child { border-bottom: none; }
.bestiarium-abilities-close {
    position: absolute; top: 8px; right: 10px;
    background: none; border: none; cursor: pointer; font-size: 16px;
    color: #666; line-height: 1;
}

/* v3.9.4: tavern common room */
.bestiarium-tavern { margin-top: 8px; }
.bestiarium-tavern-log {
    max-height: 220px;
    overflow-y: auto;
    background: rgba(255,247,217,0.6);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 6px;
    padding: 8px;
    margin-bottom: 8px;
}
.bestiarium-tavern-msg {
    display: flex; align-items: flex-start; gap: 8px;
    padding: 3px 0;
    font-size: 13px;
    color: var(--bestiarium-ink);
}
.bestiarium-tavern-ava {
    flex: 0 0 26px;
    width: 26px; height: 26px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid var(--bestiarium-gold);
    background: var(--bestiarium-parchment-dark);
    display: flex; align-items: center; justify-content: center;
    cursor: help;
}
.bestiarium-tavern-ava img { width: 100%; height: 100%; object-fit: cover; }
.bestiarium-tavern-ava-letter {
    font-family: 'Cinzel', serif;
    font-weight: bold;
    font-size: 13px;
    color: var(--bestiarium-red);
}
.bestiarium-tavern-text { flex: 1 1 auto; line-height: 1.5; word-break: break-word; }
.bestiarium-tavern-form { display: flex; gap: 6px; margin-bottom: 6px; }
.bestiarium-tavern-form input {
    flex: 1 1 auto;
    padding: 6px 10px;
    border: 1px solid var(--bestiarium-gold);
    border-radius: 4px;
    font-family: 'EB Garamond', serif;
    font-size: 13px;
    color: var(--bestiarium-ink);
    background: #fff7d9;
}
.bestiarium-tavern-drunk {
    margin: 6px 0 0;
    font-size: 12px;
    font-style: italic;
    color: var(--bestiarium-red);
}


/* v3.9.6: equipped items in the merchant sell-back list */
.bestiarium-market-card.is-sell { position: relative; }
.bestiarium-market-card.is-worn { outline: 2px solid var(--bestiarium-red); }
.bestiarium-worn-badge {
    position: absolute;
    top: 6px; left: 6px;
    z-index: 2;
    background: var(--bestiarium-red);
    color: #fff7d9;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    font-weight: bold;
    letter-spacing: 1px;
    padding: 2px 7px;
    border-radius: 999px;
    border: 1px solid #fff7d9;
}
.bestiarium-wager-rolls em { font-style: normal; font-family: 'Cinzel', serif; font-size: 14px; }


/* v3.10.0: tavern popup room with AI interior */
.bestiarium-tavernroom-modal {
    position: fixed; inset: 0; z-index: 100001;
    background: rgba(10, 5, 2, 0.8);
    backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 3vh 12px;
}
.bestiarium-tavernroom-body {
    position: relative;
    width: min(680px, 100%);
    max-height: 88vh;
    display: flex; flex-direction: column;
    border: 4px double var(--bestiarium-gold);
    border-radius: 10px;
    padding: 48px 22px 18px;
    background-color: #2a1808;
    background-size: cover;
    background-position: center;
    box-shadow: 0 24px 60px rgba(0,0,0,0.7);
}
.bestiarium-tavernroom-body.has-interior::before {
    content: '';
    position: absolute; inset: 0;
    background: rgba(15, 8, 3, 0.45);
    border-radius: 6px;
    pointer-events: none;
}
.bestiarium-tavernroom-body > * { position: relative; z-index: 1; }
.bestiarium-tavernroom-close {
    position: absolute; top: 8px; right: 12px; z-index: 3;
    background: none; border: none;
    font-size: 30px; line-height: 1;
    color: #fff7d9; cursor: pointer;
}
.bestiarium-tavernroom-online {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    margin-bottom: 10px;
}
.bestiarium-tavernroom-online-label,
.bestiarium-tavernroom-empty {
    font-family: 'Cinzel', serif;
    font-size: 12px;
    color: #f6c84f;
    text-shadow: 0 1px 3px rgba(0,0,0,0.8);
}
.bestiarium-tavernroom-log {
    flex: 1 1 auto;
    min-height: 200px;
    max-height: 46vh;
    background: rgba(255,247,217,0.88);
}
.bestiarium-tavernroom-foot {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin-top: 6px;
}
.bestiarium-tavernroom-foot .bestiarium-tavern-drunk { color: #ffd9a0; }
.bestiarium-tavernroom-note {
    margin: 8px 0 0;
    font-style: italic;
    color: #f0e1bd;
    text-shadow: 0 1px 3px rgba(0,0,0,0.8);
}

/* v3.10.0: brawl replay */
.bestiarium-brawl-side { margin: 6px 0; text-align: left; }
.bestiarium-brawl-side strong { font-family: 'Cinzel', serif; font-size: 13px; }
.bestiarium-brawl-side em { font-style: normal; font-size: 12px; margin-left: 6px; }
.bestiarium-brawl-bar {
    display: inline-block; vertical-align: middle;
    width: 60%; height: 10px; margin-left: 8px;
    background: rgba(58,36,18,0.25);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 999px;
    overflow: hidden;
}
.bestiarium-brawl-bar span {
    display: block; height: 100%;
    background: linear-gradient(90deg, #9b1e1e, #d04545);
    transition: width 0.35s ease;
}
.bestiarium-brawl-log {
    max-height: 160px; overflow-y: auto;
    text-align: left;
    background: rgba(255,247,217,0.7);
    border: 1px solid var(--bestiarium-gold);
    border-radius: 6px;
    padding: 6px 10px;
    margin: 10px 0;
    font-size: 13px;
}
.bestiarium-brawl-log p { margin: 2px 0; }
.bestiarium-brawl-log p.is-crit { color: var(--bestiarium-red); font-weight: bold; }
.bestiarium-peer-brawl {
    display: inline-block; margin: 8px 8px 0 0;
    font-family: 'Cinzel', serif; font-weight: bold; font-size: 13px;
    padding: 7px 14px;
    background: #3a2412 !important;
    color: #f6c84f !important;
    border: 2px solid var(--bestiarium-gold) !important;
}


/* v3.12.0: housing districts + player houses on the map */
.bestiarium-house-zone {
    fill: rgba(155, 30, 30, 0.05);
    stroke: var(--bestiarium-red);
    stroke-width: 0.35;
    stroke-dasharray: 1.6 1.2;
}
.bestiarium-house-plot {
    fill: none;
    stroke: var(--bestiarium-red);
    stroke-width: 0.25;
    opacity: 0.7;
}
.bestiarium-house-dot {
    fill: var(--bestiarium-red);
    stroke: #fff7d9;
    stroke-width: 0.25;
    cursor: pointer;
}
.bestiarium-house.is-mine .bestiarium-house-dot {
    fill: #2a5a1a;
}
.bestiarium-house:hover .bestiarium-house-dot { r: 1.4; }

/* house modal */
.bestiarium-house-body { width: min(860px, calc(100vw - 32px)); max-width: 860px; text-align: left; max-height: 86vh; overflow-y: auto; }
.bestiarium-house-body h4 {
    font-family: 'Cinzel', serif;
    font-size: 13px;
    letter-spacing: 1px;
    text-transform: uppercase;
    border-bottom: 1px dashed var(--bestiarium-gold);
    margin: 14px 0 6px;
    padding-bottom: 3px;
}
.bestiarium-house-log { max-height: 160px; overflow-y: auto; font-size: 13px; }
.bestiarium-house-log p { margin: 3px 0; }
.bestiarium-house-log p.is-new { background: rgba(246, 200, 79, 0.35); border-radius: 4px; padding: 2px 6px; }
.bestiarium-house-log small { opacity: 0.6; font-size: 11px; }
.bestiarium-house-resource-storage {
    margin: 10px 0;
    padding: 9px 11px;
    border: 1px solid #c5a464;
    border-left: 4px solid #58743a;
    border-radius: 5px;
    background: rgba(255, 248, 220, 0.72);
}
.bestiarium-house-resource-storage h4 { margin-top: 0; }
.bestiarium-house-resource-storage p { margin: 5px 0; line-height: 1.35; }
.bestiarium-house-storage { max-height: 200px; overflow-y: auto; }
.bestiarium-house-storeform { display: flex; gap: 6px; margin: 8px 0; }
.bestiarium-house-storeform select {
    flex: 1 1 auto;
    border: 1px solid var(--bestiarium-gold);
    border-radius: 4px;
    background: #fff7d9;
    color: var(--bestiarium-ink);
    padding: 5px;
}
.bestiarium-house-body textarea {
    width: 100%;
    border: 1px solid var(--bestiarium-gold);
    border-radius: 4px;
    background: #fff7d9;
    color: var(--bestiarium-ink);
    font-family: 'EB Garamond', serif;
    padding: 6px;
    margin: 4px 0;
}
.bestiarium-house-body .bestiarium-btn { margin: 4px 4px 4px 0; }
.bestiarium-house-rest { color: var(--bestiarium-blue); font-style: italic; }
/* v4.66.0: licensed player shops inside houses. */
.bestiarium-house-shop {
    margin: 12px 0 16px;
    padding: 12px;
    border: 2px solid #9d7425;
    background: rgba(255, 247, 217, 0.88);
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.45);
}
.bestiarium-house-shop-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}
.bestiarium-house-shop-heading h4 { margin-top: 0; }
.bestiarium-house-shop-heading p { margin: 0 0 8px; }
.bestiarium-house-shop-open {
    flex: 0 0 auto;
    padding: 4px 8px;
    border: 1px solid #426128;
    color: #2d4c1c;
    background: #e6edcb;
    font: 700 10px/1.2 'Cinzel', serif;
    letter-spacing: 1px;
}
.bestiarium-house-shop-license { max-width: 680px; }
.bestiarium-house-shop-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 10px;
    margin: 8px 0 12px;
}
.bestiarium-house-shop-card {
    display: grid;
    grid-template-columns: 82px minmax(0, 1fr);
    gap: 10px;
    min-width: 0;
    padding: 9px;
    border: 1px solid #bd9344;
    border-radius: 6px;
    background: #fff6d7;
}
.bestiarium-house-shop-card > img,
.bestiarium-house-shop-fallback {
    width: 82px;
    height: 82px;
    object-fit: cover;
    border: 1px solid #8d6522;
    background: #e4d19a;
}
.bestiarium-house-shop-fallback {
    display: grid;
    place-items: center;
    font-size: 34px;
}
.bestiarium-house-shop-card-main { min-width: 0; }
.bestiarium-house-shop-card-main > strong {
    display: block;
    overflow-wrap: anywhere;
    font-family: 'Cinzel', serif;
}
.bestiarium-house-shop-card-main small { display: block; margin-top: 2px; }
.bestiarium-house-shop-card-main p {
    display: -webkit-box;
    margin: 5px 0;
    overflow: hidden;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
.bestiarium-house-shop-expiry { color: #8b2d23; }
.bestiarium-house-shop-price {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 2px 8px;
    margin: 7px 0;
    padding-top: 6px;
    border-top: 1px dashed #bd9344;
    font-size: 12px;
}
.bestiarium-house-shop-price strong { grid-column: 1 / -1; font-size: 14px; color: #7d1e19; }
.bestiarium-house-shop-create { border-top: 1px solid #bd9344; padding-top: 4px; }
.bestiarium-house-shop-form {
    display: grid;
    grid-template-columns: minmax(180px, 1.5fr) minmax(120px, .8fr) auto;
    align-items: end;
    gap: 8px;
    margin: 8px 0 12px;
}
.bestiarium-house-shop-form-resource {
    grid-template-columns: minmax(170px, 1.3fr) minmax(100px, .6fr) minmax(140px, .8fr) auto;
}
.bestiarium-house-shop-form label { min-width: 0; }
.bestiarium-house-shop-form label > span { display: block; margin-bottom: 3px; font-weight: 700; }
.bestiarium-house-shop-form select,
.bestiarium-house-shop-form input {
    width: 100%;
    min-height: 38px;
    border: 1px solid #9d7425;
    border-radius: 4px;
    background: #fffaf0;
    color: var(--bestiarium-ink);
    padding: 6px 8px;
}
.bestiarium-house-shop-history { margin-top: 8px; border-top: 1px dashed #bd9344; padding-top: 7px; }
.bestiarium-house-shop-history summary { cursor: pointer; font-family: 'Cinzel', serif; font-weight: 700; }
.bestiarium-house-shop-history p { margin: 4px 0; }
.bestiarium-house-shop-badge { pointer-events: none; }
.bestiarium-house-shop-badge circle { fill: #f1c44d; stroke: #3a2412; stroke-width: .18; }
.bestiarium-house-shop-badge text {
    fill: #3a2412;
    font: 700 1.05px/1 sans-serif;
    text-anchor: middle;
    dominant-baseline: central;
}

@media (max-width: 700px) {
    .bestiarium-house-shop { padding: 9px; }
    .bestiarium-house-shop-grid,
    .bestiarium-house-shop-form,
    .bestiarium-house-shop-form-resource { grid-template-columns: 1fr; }
    .bestiarium-house-shop-card { grid-template-columns: 68px minmax(0, 1fr); }
    .bestiarium-house-shop-card > img,
    .bestiarium-house-shop-fallback { width: 68px; height: 68px; }
    .bestiarium-house-shop-form .bestiarium-btn { width: 100%; }
}


/* v4.92.0: inactivity decay, repairs and public 24-hour house ruins. */
.bestiarium-house.is-decaying .bestiarium-house-plot {
    stroke: #c27818;
    stroke-width: .42;
    stroke-dasharray: .7 .45;
}
.bestiarium-house.is-decaying .bestiarium-house-dot { fill: #a85c17; }
.bestiarium-house.is-ruin .bestiarium-house-plot {
    fill: rgba(54, 45, 36, .2);
    stroke: #332b25;
    stroke-width: .48;
    stroke-dasharray: .55 .45;
}
.bestiarium-house.is-ruin .bestiarium-house-dot {
    fill: #4a3d32;
    stroke: #e7c978;
    stroke-width: .32;
}
.bestiarium-house-ruin-symbol {
    fill: #fff1b8;
    font: 800 1.45px/1 sans-serif;
    text-anchor: middle;
    dominant-baseline: central;
}
.bestiarium-house-decay {
    margin: 12px 0;
    padding: 10px 12px;
    border: 1px solid #b99a58;
    border-left: 4px solid #58743a;
    background: rgba(255, 248, 220, .76);
}
.bestiarium-house-decay.is-damaged {
    border-left-color: #a83227;
    background: rgba(244, 219, 170, .82);
}
.bestiarium-house-decay-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-family: 'Cinzel', serif;
}
.bestiarium-house-decay-heading span { color: #8b1e1e; font-weight: 800; }
.bestiarium-house-decay-track {
    height: 10px;
    margin: 7px 0;
    overflow: hidden;
    border: 1px solid #8f6b2b;
    background: #e8dfbf;
}
.bestiarium-house-decay-track span {
    display: block;
    height: 100%;
    background: #a83227;
}
.bestiarium-house-decay p { margin: 6px 0; }
.bestiarium-house-ruin-image {
    position: relative;
    max-height: 280px;
    overflow: hidden;
    border: 2px solid #5d4931;
    background: #272019;
}
.bestiarium-house-ruin-image::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(32, 25, 19, .32);
    pointer-events: none;
}
.bestiarium-house-ruin-image img {
    display: block;
    width: 100%;
    max-height: 280px;
    object-fit: cover;
    filter: grayscale(.7) sepia(.25) brightness(.72);
}
.bestiarium-house-ruin-hero {
    margin: 12px 0;
    padding: 13px 15px;
    border: 2px solid #6b5031;
    background: #3b2c20;
    color: #fff1c8;
}
.bestiarium-house-ruin-hero > strong {
    display: block;
    font: 700 17px/1.35 'Cinzel', serif;
}
.bestiarium-house-ruin-hero p { margin: 7px 0; }
.bestiarium-house-ruin-countdown {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-top: 10px;
    padding-top: 9px;
    border-top: 1px solid #9d7a47;
}
.bestiarium-house-ruin-countdown strong {
    color: #f6c84f;
    font: 800 21px/1.1 'Cinzel', serif;
    font-variant-numeric: tabular-nums;
}
.bestiarium-house-ruin-loot { margin-top: 14px; }
.bestiarium-house-ruin-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 10px;
}
.bestiarium-house-ruin-card {
    display: grid;
    grid-template-columns: 78px minmax(0, 1fr);
    gap: 10px;
    min-width: 0;
    padding: 9px;
    border: 1px solid #a57d36;
    border-radius: 6px;
    background: #fff4cf;
}
.bestiarium-house-ruin-card > img,
.bestiarium-house-ruin-fallback {
    width: 78px;
    height: 78px;
    object-fit: cover;
    border: 1px solid #7c5c2c;
    background: #d8c18b;
}
.bestiarium-house-ruin-fallback {
    display: grid;
    place-items: center;
    font-size: 30px;
}
.bestiarium-house-ruin-card > div { min-width: 0; }
.bestiarium-house-ruin-card strong,
.bestiarium-house-ruin-card small { display: block; overflow-wrap: anywhere; }
.bestiarium-house-ruin-card p {
    display: -webkit-box;
    margin: 5px 0;
    overflow: hidden;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
.bestiarium-house-ruin-take {
    display: grid;
    grid-template-columns: minmax(72px, 1fr) auto;
    gap: 6px;
    align-items: end;
    margin-top: 7px;
}
.bestiarium-house-ruin-take input {
    width: 100%;
    min-height: 38px;
    border: 1px solid #9d7425;
    background: #fffaf0;
    color: var(--bestiarium-ink);
    padding: 6px 8px;
}
.bestiarium-house-ruin-empty {
    padding: 18px;
    border: 1px dashed #8c714c;
    text-align: center;
    font-style: italic;
}
@media (max-width: 600px) {
    .bestiarium-house-body { width: calc(100vw - 12px); max-height: 94vh; padding: 16px 12px; }
    .bestiarium-house-ruin-grid { grid-template-columns: 1fr; }
    .bestiarium-house-ruin-card { grid-template-columns: 62px minmax(0, 1fr); }
    .bestiarium-house-ruin-card > img,
    .bestiarium-house-ruin-fallback { width: 62px; height: 62px; }
    .bestiarium-house-ruin-countdown { align-items: flex-start; flex-direction: column; }
    .bestiarium-house-ruin-take { grid-template-columns: 1fr; }
    .bestiarium-house-ruin-take .bestiarium-btn { width: 100%; }
}
/* v3.12.2: the house dot must take clicks (markers default to none) */
.bestiarium-map-marker.bestiarium-house {
    pointer-events: all;
    cursor: pointer;
}
/* the house tile in the equipment doll */
.bestiarium-doll-cell.is-house { grid-area: house; }


/* v3.13.1: co-op kill report */
.bestiarium-killfeed-table { margin: 8px 0; }
.bestiarium-inbox-row.is-me-row {
    outline: 2px solid var(--bestiarium-gold);
    background: rgba(246, 200, 79, 0.25);
}

/* v3.61.0: random-event outcome (auction recap) popup */
.bestiarium-eventnews-title { margin: 2px 0 8px; font-size: 17px; }
.bestiarium-eventnews-body {
    text-align: left;
    line-height: 1.6;
    font-size: 14px;
    background: rgba(58, 36, 18, 0.06);
    border: 1px solid rgba(122, 79, 28, 0.3);
    border-radius: 6px;
    padding: 10px 12px;
    margin: 6px 0;
}
.bestiarium-eventnews-coins {
    margin: 8px 0 2px;
    font-weight: 700;
    color: #7a4f1c;
}


/* v3.13.2: trophy sale at the town hall */
.bestiarium-trophy-sale { margin-top: 10px; border-top: 1px dashed var(--bestiarium-gold); padding-top: 8px; }
.bestiarium-trophy-sale .bestiarium-btn[disabled] { opacity: 0.55; cursor: not-allowed; }


/* Trophy buyer: complete inventory and batch actions load only when opened. */
.bestiarium-trophyshop-body {
    width: min(920px, calc(100vw - 32px));
    max-width: 920px;
    max-height: min(88vh, 920px);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    text-align: left;
}
.bestiarium-trophyshop-head,
.bestiarium-trophyshop-summary,
.bestiarium-trophyshop-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.bestiarium-trophyshop-head h3 { margin: 0; }
.bestiarium-trophyshop-x {
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    border: 1px solid rgba(111, 66, 21, .45);
    background: transparent;
    color: var(--bestiarium-ink);
    font-size: 28px;
    line-height: 1;
    cursor: pointer;
}
.bestiarium-trophyshop-lead { margin: 14px 0 6px; }
.bestiarium-trophyshop-craft {
    margin: 0 0 12px;
    padding: 8px 10px;
    border-left: 3px solid #58713e;
    background: rgba(88, 113, 62, .09);
    color: #4c3a24;
}
.bestiarium-trophyshop-status {
    margin: 0 0 10px;
    padding: 9px 11px;
    border: 1px solid #66834b;
    background: rgba(102, 131, 75, .12);
    color: #355326;
    font-weight: 700;
}
.bestiarium-trophyshop-status.is-error {
    border-color: #a82a25;
    background: rgba(168, 42, 37, .1);
    color: #8c1f1b;
}
.bestiarium-trophyshop-summary {
    padding: 9px 0;
    border-top: 1px solid rgba(145, 99, 34, .35);
    border-bottom: 1px solid rgba(145, 99, 34, .35);
    font-weight: 700;
}
.bestiarium-trophyshop-summary label { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.bestiarium-trophyshop-summary input,
.bestiarium-trophy-check input { width: 20px; height: 20px; margin: 0; }
.bestiarium-trophyshop-list {
    min-height: 120px;
    max-height: 52vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding-right: 5px;
}
.bestiarium-trophy-row {
    display: grid;
    grid-template-columns: 30px 64px minmax(190px, 1fr) minmax(250px, auto);
    gap: 12px;
    align-items: center;
    min-height: 86px;
    padding: 10px 4px;
    border-bottom: 1px solid rgba(145, 99, 34, .28);
}
.bestiarium-trophy-row.is-unavailable { opacity: .66; }
.bestiarium-trophy-check { display: grid; place-items: center; }
.bestiarium-trophy-thumb {
    width: 64px;
    height: 64px;
    object-fit: cover;
    border: 2px solid #b98832;
    background: #2f1c0f;
}
.bestiarium-trophy-thumb.is-empty { display: grid; place-items: center; font-size: 28px; }
.bestiarium-trophy-info { min-width: 0; display: grid; gap: 4px; }
.bestiarium-trophy-info strong { overflow-wrap: anywhere; }
.bestiarium-trophy-info small { color: #725a3e; }
.bestiarium-trophy-crafting {
    width: fit-content;
    max-width: 100%;
    padding: 3px 7px;
    border: 1px solid #6f854c;
    background: #edf2df;
    color: #3d5424;
    font-size: 12px;
}
.bestiarium-trophy-controls {
    display: grid;
    grid-template-columns: minmax(76px, auto) minmax(74px, auto) auto;
    gap: 9px;
    align-items: end;
}
.bestiarium-trophy-controls label { display: grid; gap: 3px; font-size: 11px; text-transform: uppercase; }
.bestiarium-trophy-controls input { width: 76px; min-height: 38px; }
.bestiarium-trophy-price {
    font-family: 'Cinzel', serif;
    font-weight: bold;
    align-self: center;
    white-space: nowrap;
}
.bestiarium-trophy-no-price { grid-column: 1 / -1; color: #7d332d; font-style: italic; }
.bestiarium-trophyshop-actions {
    justify-content: flex-end;
    flex-wrap: wrap;
    padding-top: 12px;
    border-top: 1px solid rgba(145, 99, 34, .35);
}
.bestiarium-trophyshop-loading {
    min-height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}
.bestiarium-trophyshop-body [disabled] { opacity: .55; cursor: not-allowed; }
@media (max-width: 680px) {
    .bestiarium-trophyshop-body { width: calc(100vw - 16px); max-height: calc(100dvh - 24px); padding: 16px 12px; }
    .bestiarium-trophyshop-head { align-items: flex-start; }
    .bestiarium-trophyshop-summary { align-items: flex-start; flex-direction: column; gap: 6px; }
    .bestiarium-trophyshop-list { max-height: 56vh; }
    .bestiarium-trophy-row { grid-template-columns: 26px 54px minmax(0, 1fr); gap: 8px; }
    .bestiarium-trophy-thumb { width: 54px; height: 54px; }
    .bestiarium-trophy-controls {
        grid-column: 2 / -1;
        grid-template-columns: minmax(70px, auto) minmax(72px, 1fr) auto;
        width: 100%;
    }
    .bestiarium-trophy-controls .bestiarium-btn { min-height: 40px; padding: 8px 10px; }
    .bestiarium-trophyshop-actions { display: grid; grid-template-columns: 1fr 1fr; }
    .bestiarium-trophyshop-actions .bestiarium-btn:last-child { grid-column: 1 / -1; }
}

/* v3.14.0: road encounters + level locks */
.bestiarium-encounter-icon { font-size: 52px; line-height: 1; margin-bottom: 4px; }
.bestiarium-encounter-modal .bestiarium-wager-actions { flex-direction: column; }
.bestiarium-encounter-modal .bestiarium-wager-actions .bestiarium-btn { width: 100%; }
.bestiarium-lock-badge {
    display: inline-block;
    background: var(--bestiarium-ink);
    color: #fff7d9;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 1px;
    padding: 2px 8px;
    border-radius: 999px;
    margin: 2px 0;
}


/* v3.16.2: tavern music + peek */
.bestiarium-tavern-music-row {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin-bottom: 8px;
    color: #f6c84f;
    text-shadow: 0 1px 3px rgba(0,0,0,0.8);
}
.bestiarium-tavern-music-row audio { height: 30px; max-width: 260px; }
.bestiarium-tavern-music-by { font-size: 12px; font-style: italic; }
.bestiarium-tavern-music-btn { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; }


/* v3.16.3: layers that must float ABOVE the tavern room window (100001) */
.bestiarium-overtavern { z-index: 100002; }

/* v3.16.3: tavern jukebox */
.bestiarium-tavern-sound { margin-left: 8px; }
.bestiarium-jukebox-body { max-width: 520px; width: min(520px, 94vw); max-height: 82vh; overflow-y: auto; }
.bestiarium-jukebox-now, .bestiarium-jukebox-queue { margin: 4px 0; }
.bestiarium-jukebox-upload { display: flex; gap: 8px; align-items: center; margin: 10px 0; flex-wrap: wrap; }
.bestiarium-jukebox-upload input[type="text"] {
    flex: 1 1 180px; min-width: 0; padding: 6px 8px;
    background: rgba(0, 0, 0, 0.25); color: inherit;
    border: 1px solid var(--bestiarium-gold); border-radius: 4px;
}
.bestiarium-jukebox-table { width: 100%; border-collapse: collapse; margin: 8px 0; font-size: 13px; }
.bestiarium-jukebox-table th, .bestiarium-jukebox-table td {
    padding: 5px 6px; text-align: left; vertical-align: top;
    border-bottom: 1px dashed rgba(199, 160, 89, 0.45);
}
.bestiarium-jukebox-table em { opacity: 0.85; }
.bestiarium-jukebox-table small { opacity: 0.65; }
.bestiarium-jukebox-note { font-size: 12px; opacity: 0.75; }


/* v3.17.0: tavern icon toggles (music note + microphone) */
.bestiarium-tavern-music-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.bestiarium-tavern-icon {
    width: 34px; height: 34px; border-radius: 50%;
    border: 2px solid var(--bestiarium-gold);
    background: rgba(20, 12, 4, 0.55);
    color: #f6c84f; font-size: 17px; line-height: 1;
    cursor: pointer; flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
}
.bestiarium-tavern-icon:hover { background: rgba(60, 36, 10, 0.75); }
.bestiarium-tavern-icon.is-off { opacity: 0.35; filter: grayscale(1); }

/* v3.17.0: cathedral reliquary window */
.bestiarium-cathedral-body { max-width: 480px; width: min(480px, 94vw); max-height: 80vh; overflow-y: auto; }
.bestiarium-cathedral-note { font-size: 12px; opacity: 0.7; align-self: center; }


/* v3.17.1: attribute breakdown window */
.bestiarium-statbreak-body { max-width: 460px; width: min(460px, 94vw); max-height: 84vh; overflow-y: auto; }
.bestiarium-statbreak-stat {
    margin: 10px 0; padding: 8px 10px;
    border: 1px solid rgba(199, 160, 89, 0.4); border-radius: 6px;
}
.bestiarium-statbreak-head {
    display: flex; justify-content: space-between; align-items: center;
    font-family: 'Cinzel', serif; font-size: 15px; margin-bottom: 4px;
}
.bestiarium-statbreak-head strong { font-size: 18px; }
.bestiarium-statbreak-row {
    display: flex; justify-content: space-between; gap: 10px;
    font-size: 13px; padding: 2px 0; opacity: 0.9;
}
.bestiarium-statbreak-row.is-total {
    border-top: 1px dashed rgba(199, 160, 89, 0.45);
    margin-top: 3px; padding-top: 4px; font-weight: bold;
}
.bestiarium-statbreak-note { font-size: 12px; opacity: 0.7; }
.bestiarium-faith-mana {
    margin: 10px 0 12px;
    padding: 10px 0;
    border-top: 1px solid rgba(47, 107, 131, 0.38);
    border-bottom: 1px solid rgba(47, 107, 131, 0.38);
    color: #284c5d;
}
.bestiarium-faith-mana-head,
.bestiarium-faith-mana-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
}
.bestiarium-faith-mana-head { font-family: 'Cinzel', serif; font-size: 14px; }
.bestiarium-faith-mana-head strong { font-size: 17px; }
.bestiarium-faith-mana-bar {
    height: 10px;
    margin: 7px 0 6px;
    overflow: hidden;
    border: 1px solid rgba(47, 107, 131, 0.48);
    border-radius: 2px;
    background: rgba(47, 107, 131, 0.12);
}
.bestiarium-faith-mana-bar span {
    display: block;
    height: 100%;
    background: #2f6b83;
    transition: width 180ms ease;
}
.bestiarium-faith-mana-meta { font-size: 11px; opacity: 0.82; }
.bestiarium-faith-mana p { margin: 6px 0 0; font-size: 11px; }


/* ============================================================
 * v3.18.0: card duel — tavern-table atmosphere + rarity frames
 * ============================================================ */
.bestiarium-duel-arena {
    background:
        radial-gradient(circle at 10% 14%, rgba(255, 166, 0, 0.10), transparent 32%),
        radial-gradient(circle at 90% 18%, rgba(255, 166, 0, 0.08), transparent 32%),
        rgba(13, 7, 2, 0.95);
}
.bestiarium-duel-box {
    background:
        radial-gradient(ellipse at 16% 0%, rgba(255, 180, 70, 0.14), transparent 46%),
        radial-gradient(ellipse at 84% 0%, rgba(255, 180, 70, 0.12), transparent 46%),
        repeating-linear-gradient(90deg, rgba(0, 0, 0, 0.20) 0 3px, transparent 3px 10px),
        repeating-linear-gradient(0deg, #3a1c0a 0 84px, #2b1206 84px 90px),
        linear-gradient(180deg, #34180a, #1b0a03);
}
.bestiarium-duel-box::before,
.bestiarium-duel-box::after {
    position: absolute; top: -14px; font-size: 30px; pointer-events: none;
    filter: drop-shadow(0 0 8px rgba(255, 170, 40, 0.8));
}
.bestiarium-duel-box::before { content: '\1F56F'; left: 10px; }
.bestiarium-duel-box::after { content: '\1F37A'; right: 12px; }
.bestiarium-duel-field {
    background:
        linear-gradient(180deg, rgba(244, 228, 183, 0.10), rgba(0, 0, 0, 0.32));
    border: 1px solid rgba(199, 160, 89, 0.5);
    border-radius: 6px;
}
.bestiarium-duel-prop {
    position: absolute; width: 76px; opacity: 0.92; pointer-events: none;
    filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.6));
}
.bestiarium-duel-prop.is-left { left: -8px; top: -22px; transform: rotate(-8deg); }
.bestiarium-duel-prop.is-right { right: -8px; top: -22px; transform: rotate(8deg); }

/* turn timer */
.bestiarium-duel-timer {
    font-family: 'Cinzel', serif; font-size: 13px; letter-spacing: 1px;
    color: var(--bestiarium-gold-bright);
    border: 1px solid var(--bestiarium-gold); border-radius: 999px;
    padding: 2px 10px; background: rgba(0, 0, 0, 0.4);
    font-variant-numeric: tabular-nums;
}
.bestiarium-duel-timer.is-low {
    color: #ff7a6b; border-color: #ff7a6b;
    animation: bestiarium-timer-pulse 1s ease-in-out infinite;
}
@keyframes bestiarium-timer-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.12); }
}

/* battle totals + synergy chips (bonuses shown apart from card values) */
.bestiarium-duel-power {
    display: flex; gap: 10px; flex-wrap: wrap; align-items: center;
    margin-top: 6px; font-family: 'Cinzel', serif; font-size: 12px;
    color: #f8eccb;
}
.bestiarium-duel-power em {
    font-style: normal; color: #7be07b; font-weight: bold;
}
.bestiarium-duel-syn {
    font-size: 11px; padding: 2px 8px; border-radius: 999px;
    background: linear-gradient(180deg, rgba(184, 134, 44, 0.35), rgba(110, 75, 20, 0.35));
    border: 1px solid var(--bestiarium-gold);
    color: #ffe9b0;
}

/* card readability above custom frames + rarity looks */
.bestiarium-duel-card { position: relative; }
.bestiarium-duel-card-name,
.bestiarium-duel-card-stats { background: rgba(248, 237, 201, 0.88); border-radius: 2px; }
.bestiarium-duel-card-tier {
    position: absolute; top: -7px; left: 50%; transform: translateX(-50%);
    font-family: 'Cinzel', serif; font-size: 8px; letter-spacing: 1px;
    padding: 1px 7px; border-radius: 999px; z-index: 2; white-space: nowrap;
    background: linear-gradient(180deg, #8a8a7a, #5c5c50); color: #fff;
    border: 1px solid rgba(0, 0, 0, 0.4);
}
.bestiarium-duel-card-tier.is-common { background: linear-gradient(180deg, #b8862c, #7a5616); }
.bestiarium-duel-card-tier.is-special { background: linear-gradient(180deg, #2e62b8, #16356e); }
.bestiarium-duel-card-tier.is-original { background: linear-gradient(180deg, #9b1e1e, #5c0c0c); }
.bestiarium-duel-card.is-starter { border: 2px solid #8a8a7a; }
.bestiarium-duel-card.is-common { border: 2px double var(--bestiarium-gold-bright); }
.bestiarium-duel-card.is-special {
    border: 3px solid #2e62b8;
    background: linear-gradient(180deg, #eef2fb, #c9d4ee);
    animation: bestiarium-card-glow-special 2.6s ease-in-out infinite;
}
.bestiarium-duel-card.is-original {
    border: 3px solid #9b1e1e;
    background: linear-gradient(180deg, #fbeeee, #eccaca);
    animation: bestiarium-card-glow-original 2.6s ease-in-out infinite;
}
@keyframes bestiarium-card-glow-special {
    0%, 100% { box-shadow: 0 4px 14px rgba(46, 98, 184, 0.45); }
    50% { box-shadow: 0 4px 24px rgba(46, 98, 184, 0.85); }
}
@keyframes bestiarium-card-glow-original {
    0%, 100% { box-shadow: 0 4px 14px rgba(155, 30, 30, 0.5); }
    50% { box-shadow: 0 4px 26px rgba(212, 75, 75, 0.9); }
}
.bestiarium-duel-card-fresh {
    position: absolute; top: 2px; right: 4px; z-index: 2; font-size: 15px;
    filter: drop-shadow(0 0 4px rgba(0, 0, 0, 0.8));
}
.bestiarium-duel-card.is-fresh .bestiarium-duel-card-img { filter: saturate(0.45) brightness(0.85); }
.bestiarium-duel-card-stats span { white-space: nowrap; }

/* book mirrors the rarity frames */
.bestiarium-book-card.is-special { border: 2px solid #2e62b8; }
.bestiarium-book-card.is-original { border: 2px solid #9b1e1e; }

@media (max-width: 640px) {
    .bestiarium-duel-box::before,
    .bestiarium-duel-box::after,
    .bestiarium-duel-prop { display: none; }
}


/* ============================================================
 * v3.19.0: full card stats, location line, rules window
 * ============================================================ */
.bestiarium-duel-card-stats-grid,
.bestiarium-book-card-stats-grid {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px 4px;
    font-size: 10px; letter-spacing: 0;
}
.bestiarium-duel-card-stats-grid span,
.bestiarium-book-card-stats-grid span { white-space: nowrap; }
.bestiarium-duel-card-loc,
.bestiarium-book-card-loc {
    font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: 0.5px;
    color: var(--bestiarium-ink); opacity: 0.85;
    background: rgba(199, 160, 89, 0.22);
    border-radius: 2px; padding: 1px 3px; margin-top: 2px;
    text-align: center;
}
.bestiarium-book-card-loc { font-size: 11px; opacity: 0.8; margin-top: 4px; }
.bestiarium-duel-power span { display: inline-flex; align-items: center; gap: 2px; }

/* ============================================================
 * v3.56.0: card collection — filters, compact grid, bold rarity
 * ============================================================ */
.bestiarium-book-toolbar { display: flex; flex-direction: column; gap: 8px; margin: 4px 0 14px; }
.bestiarium-book-toolrow { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.bestiarium-book-toollabel { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: 1px; color: var(--bestiarium-gold-bright); min-width: 74px; opacity: 0.9; }
.bestiarium-book-chip { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: 0.4px; padding: 5px 10px; border-radius: 999px; border: 1px solid var(--bestiarium-gold); background: rgba(0,0,0,0.30); color: var(--bestiarium-gold-bright); cursor: pointer; transition: background 0.12s, color 0.12s; }
.bestiarium-book-chip:hover { background: rgba(184,134,44,0.25); }
.bestiarium-book-chip.is-active { background: var(--bestiarium-gold); color: #1b120a; font-weight: 700; }
.bestiarium-book-chip-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; vertical-align: middle; border: 1px solid rgba(0,0,0,0.35); }
.bestiarium-book-search { flex: 1 1 150px; min-width: 110px; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--bestiarium-gold); background: rgba(0,0,0,0.30); color: #f3e6c8; font-size: 13px; }
.bestiarium-book-count { font-family: 'Cinzel', serif; font-size: 12px; color: var(--bestiarium-gold-bright); margin: 0 0 10px; opacity: 0.9; }
/* compact grid: more cards per row, no stray gaps */
.bestiarium-book-grid { grid-template-columns: repeat(auto-fill, minmax(178px, 1fr)); gap: 12px; }
.bestiarium-book-card { position: relative; padding: 8px 8px 10px; cursor: pointer; }
.bestiarium-book-card-head h3 { font-size: 15px; }
.bestiarium-book-card-img { aspect-ratio: 1 / 1; margin-bottom: 6px; }
/* lore appears as a hover tooltip over the card (no reflow) */
.bestiarium-book-card-tip { position: absolute; left: 6px; right: 6px; bottom: 6px; background: rgba(20,12,6,0.96); color: #f3e6c8; border: 1px solid var(--bestiarium-gold); border-radius: 6px; padding: 8px 9px; font-size: 12px; font-style: italic; line-height: 1.4; opacity: 0; pointer-events: none; transition: opacity 0.14s; z-index: 6; max-height: 72%; overflow: auto; }
.bestiarium-book-card:hover .bestiarium-book-card-tip { opacity: 1; }
.bestiarium-book-card-hint { position: absolute; top: 7px; right: 8px; font-size: 12px; opacity: 0.5; pointer-events: none; }
/* BOLD rarity frames — visible at a glance */
.bestiarium-book-card.is-common  { border: 3px solid #9a9a9a; box-shadow: 0 4px 14px rgba(0,0,0,0.3); }
.bestiarium-book-card.is-starter { border: 3px solid #4f8c79; box-shadow: 0 4px 14px rgba(0,0,0,0.3); }
.bestiarium-book-card.is-rare    { border: 3px solid #2e74d6; box-shadow: 0 0 0 1px #2e74d6, 0 6px 18px rgba(46,116,214,0.5); }
.bestiarium-book-card.is-special { border: 3px solid #e0a52a; box-shadow: 0 0 0 1px #e0a52a, 0 6px 20px rgba(224,165,42,0.6); }
.bestiarium-book-card.is-epic    { border: 3px solid #8a3fc0; box-shadow: 0 0 0 1px #8a3fc0, 0 6px 20px rgba(138,63,192,0.55); }
.bestiarium-book-card.is-original{ border: 3px solid #9b1e1e; box-shadow: 0 0 0 1px #9b1e1e, 0 6px 20px rgba(155,30,30,0.55); }
.bestiarium-book-tier.is-common  { background: #9a9a9a; color: #1a1a1a; }
.bestiarium-book-tier.is-starter { background: linear-gradient(180deg,#5aa08c,#356b5c); }
.bestiarium-book-tier.is-rare    { background: linear-gradient(180deg,#3a82e6,#1c4f9e); }
.bestiarium-book-tier.is-special { background: linear-gradient(180deg,#e8b13a,#a8761a); color: #1b120a; }
.bestiarium-book-tier.is-epic    { background: linear-gradient(180deg,#9b54cf,#5e2b86); }
.bestiarium-book-tier.is-original{ background: linear-gradient(180deg,#9b1e1e,#5c0c0c); }
/* Card detail must sit directly above the open Bestiary Book overlay. */
.bestiarium-bookcard-overlay { position: fixed; inset: 0; z-index: 2147480100; background: rgba(8,5,2,0.8); display: flex; align-items: center; justify-content: center; padding: 16px; }
.bestiarium-bookcard-box { background: linear-gradient(180deg,#f8edc9,#e1c787); border: 3px solid var(--bestiarium-gold); border-radius: 6px; max-width: 380px; width: 100%; max-height: 92vh; overflow: auto; padding: 14px 14px 16px; position: relative; box-shadow: 0 14px 50px rgba(0,0,0,0.6); }
.bestiarium-bookcard-close { position: absolute; top: 6px; right: 9px; background: none; border: none; font-size: 26px; line-height: 1; color: var(--bestiarium-red); cursor: pointer; }
.bestiarium-bookcard-box .bestiarium-book-card-lore { display: block; }
@media (max-width: 600px) { .bestiarium-book-grid { grid-template-columns: 1fr 1fr !important; gap: 10px; } }

.bestiarium-duel-rules-btn {
    background: rgba(0, 0, 0, 0.35); color: var(--bestiarium-gold-bright);
    border: 1px solid var(--bestiarium-gold); border-radius: 999px;
    font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: 1px;
    padding: 2px 10px; cursor: pointer;
}
.bestiarium-duel-rules-btn:hover { background: rgba(60, 36, 10, 0.7); }
.bestiarium-book-rules { margin-top: 8px; }

.bestiarium-duel-rules {
    position: fixed; inset: 0; z-index: 2147481900;
    background: rgba(10, 5, 2, 0.9); backdrop-filter: blur(4px);
    overflow-y: auto; padding: 4vh 12px;
    display: flex; align-items: flex-start; justify-content: center;
}
.bestiarium-duel-rules-box {
    width: min(640px, 100%);
    background: linear-gradient(180deg, #2b140a, #160a03);
    border: 3px double var(--bestiarium-gold);
    box-shadow: 0 0 0 4px rgba(155, 30, 30, 0.4), 0 30px 60px rgba(0, 0, 0, 0.7);
    padding: 22px 26px 30px; position: relative;
    color: #f4e4b7; line-height: 1.5;
}
.bestiarium-duel-rules-box h2 {
    font-family: 'UnifrakturMaguntia', serif; color: var(--bestiarium-gold-bright);
    margin-top: 0; font-size: 26px; text-align: center;
}
.bestiarium-duel-rules-box h3 {
    font-family: 'Cinzel', serif; color: var(--bestiarium-gold-bright);
    font-size: 15px; letter-spacing: 1px; margin: 16px 0 6px;
    border-bottom: 1px solid rgba(199, 160, 89, 0.4); padding-bottom: 3px;
}
.bestiarium-duel-rules-box ul { margin: 4px 0 4px 18px; padding: 0; }
.bestiarium-duel-rules-box li { margin: 3px 0; }
.bestiarium-duel-rules-box p { margin: 5px 0; }
.bestiarium-duel-rules-close {
    position: absolute; top: 6px; right: 12px;
    background: transparent; border: none; color: #f4e4b7;
    font-size: 30px; cursor: pointer; line-height: 1;
}
@media (max-width: 640px) {
    .bestiarium-duel-card-stats-grid { font-size: 9px; }
    .bestiarium-duel-rules-box { padding: 18px 16px 24px; }
}


/* ============================================================
 * v3.19.1: round-labelled duel log + one-time update popup
 * ============================================================ */
.bestiarium-duel-log { display: block; text-align: left; }
.bestiarium-duel-log-round {
    font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: 1px;
    color: var(--bestiarium-gold-bright); text-transform: uppercase;
    margin: 10px 0 2px; padding-top: 6px;
    border-top: 1px dashed rgba(199, 160, 89, 0.4);
}
.bestiarium-duel-log-round:first-child { border-top: none; padding-top: 0; margin-top: 0; }
/* v3.97.0: colour-coded round headers — green = my turn, orange = opp turn */
.bestiarium-duel-log-round[data-who="me"]  { color: #7fb85a; border-top-color: rgba(127,184,90,0.4); }
.bestiarium-duel-log-round[data-who="opp"] { color: #c08050; border-top-color: rgba(192,128,80,0.4); }
.bestiarium-duel-log-line { font-size: 12px; line-height: 1.5; opacity: 0.92; padding-left: 6px; }
/* v4.3.0: card library ID badge (bottom of duel card, book card head) */
.bestiarium-duel-card-id {
    display: block; font-size: 9px; color: rgba(255,255,255,0.45);
    text-align: right; padding: 1px 4px 0; letter-spacing: 0.3px;
    font-family: monospace; pointer-events: none;
}
.bestiarium-book-card-id {
    font-size: 10px; color: #aaa; font-family: monospace;
    margin-left: 6px; vertical-align: middle; white-space: nowrap;
}
/* v4.4.0: curse card zone shown on affected side's field */
.bestiarium-duel-curse-zone {
    display: flex; align-items: center; gap: 6px;
    padding: 4px 8px 2px;
    background: rgba(74,29,110,0.18); border-bottom: 1px solid rgba(138,92,192,0.35);
    border-radius: 6px 6px 0 0;
}
.bestiarium-duel-curse-zone::before {
    content: '🔮'; font-size: 14px; flex-shrink: 0;
}
.bestiarium-duel-curse-card {
    position: relative; opacity: 0.88; filter: saturate(0.55) brightness(0.7) hue-rotate(240deg);
    transform: scale(0.85); transform-origin: top left;
    border: 2px solid #8a5cc0 !important; box-shadow: 0 0 12px 2px rgba(138,92,192,0.55);
    pointer-events: none;
}
.bestiarium-duel-curse-card-overlay {
    position: absolute; top: 0; left: 0; right: 0; bottom: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 28px; z-index: 2; pointer-events: none;
    background: rgba(20,0,40,0.45);
}
/* v3.97.0: card ability badge */
.bestiarium-duel-card-ability {
    position: absolute; top: 22px; right: 4px;
    font-size: 14px; line-height: 1;
    filter: drop-shadow(0 0 3px rgba(0,0,0,0.8));
    pointer-events: none;
}
/* v3.97.0: field-card wrapper + discard button */
.bestiarium-duel-field-card { position: relative; display: inline-block; }
.bestiarium-duel-discard-btn {
    display: block; width: 100%; margin-top: 3px;
    padding: 2px 4px; font-size: 11px;
    background: #5a1a1a; color: #ffaaaa; border: 1px solid #aa3333;
    border-radius: 4px; cursor: pointer; white-space: nowrap;
}
.bestiarium-duel-discard-btn:hover { background: #7a2020; }

.bestiarium-update-modal {
    position: fixed; inset: 0; z-index: 2147482000;
    background: rgba(8, 4, 1, 0.9); backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 14px; overflow-y: auto;
}
.bestiarium-update-box {
    width: min(560px, 100%); position: relative;
    background:
        radial-gradient(circle at 50% 0%, rgba(255, 200, 90, 0.16), transparent 60%),
        linear-gradient(180deg, #f6e9c6, #e3c98a);
    color: #3a2412;
    border: 3px double #6a3a0c;
    box-shadow: 0 0 0 4px rgba(106, 58, 12, 0.35), 0 30px 60px rgba(0, 0, 0, 0.7);
    border-radius: 6px;
    padding: 30px 28px 26px; text-align: center;
}
.bestiarium-update-seal {
    position: absolute; top: -20px; left: 50%; transform: translateX(-50%);
    width: 42px; height: 42px; line-height: 42px;
    background: radial-gradient(circle at 40% 35%, #c0392b, #7a1d12);
    color: #f6e9c6; border-radius: 50%; font-size: 20px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.5);
}
.bestiarium-update-ver {
    font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: 2px;
    text-transform: uppercase; color: #8a5a20; margin-top: 6px;
}
.bestiarium-update-title {
    font-family: 'UnifrakturMaguntia', serif; font-size: 30px;
    color: #6a1d12; margin: 4px 0 14px;
}
.bestiarium-update-list {
    text-align: left; margin: 0 auto 18px; max-width: 460px;
    padding-left: 4px; list-style: none;
}
.bestiarium-update-list li {
    font-family: 'EB Garamond', Georgia, serif; font-size: 15px;
    line-height: 1.5; margin: 9px 0; padding-left: 4px;
    border-bottom: 1px dashed rgba(106, 58, 12, 0.25); padding-bottom: 9px;
}
.bestiarium-update-list li:last-child { border-bottom: none; }
.bestiarium-update-ok { font-size: 15px; padding: 8px 28px; }
.bestiarium-deckbar-btn.is-active { background: var(--bestiarium-gold); color: #2a1808; }
@media (max-width: 640px) {
    .bestiarium-update-title { font-size: 24px; }
    .bestiarium-update-box { padding: 26px 16px 22px; }
}


/* ============================================================
 * v3.20.0: social share + level-scaled stat maxima
 * ============================================================ */
.bestiarium-share-btn {
    display: inline-flex; align-items: center; gap: 4px;
    margin-top: 6px; padding: 4px 12px;
    font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: 1px;
    background: linear-gradient(180deg, #2e62b8, #16356e);
    color: #f4e4b7; border: 1px solid var(--bestiarium-gold);
    border-radius: 999px; cursor: pointer;
}
.bestiarium-share-btn:hover { filter: brightness(1.15); }
/* v3.20.1: clicking the photo itself opens share; the badge lives OUTSIDE the
   circular (overflow:hidden) avatar in a wrapper, so it is never clipped. */
.bestiarium-profile-avatar-wrap { position: relative; flex-shrink: 0; display: inline-block; }
.bestiarium-profile-avatar.is-shareable { cursor: pointer; transition: box-shadow 0.15s ease, transform 0.15s ease; }
.bestiarium-profile-avatar.is-shareable:hover {
    transform: translateY(-1px);
    box-shadow: 0 0 0 3px var(--bestiarium-red), 0 0 22px rgba(246, 200, 79, 0.65);
}
.bestiarium-avatar-share-badge {
    position: absolute; bottom: -2px; right: -2px;
    width: 28px; height: 28px; line-height: 28px; text-align: center;
    border-radius: 50%; font-size: 14px;
    background: linear-gradient(180deg, #2e62b8, #16356e);
    color: #f4e4b7; border: 2px solid var(--bestiarium-gold);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5); pointer-events: none;
}

.bestiarium-share-modal {
    position: fixed; inset: 0; z-index: 2147482050;
    background: rgba(8, 4, 1, 0.9); backdrop-filter: blur(4px);
    display: flex; align-items: center; justify-content: center;
    padding: 4vh 14px; overflow-y: auto;
}
.bestiarium-share-box {
    width: min(480px, 100%); position: relative;
    background: linear-gradient(180deg, #f6e9c6, #e3c98a);
    color: #3a2412; border: 3px double #6a3a0c; border-radius: 6px;
    box-shadow: 0 0 0 4px rgba(106, 58, 12, 0.35), 0 30px 60px rgba(0, 0, 0, 0.7);
    padding: 24px 22px 20px; text-align: center;
}
.bestiarium-share-box h3 {
    font-family: 'UnifrakturMaguntia', serif; color: #6a1d12;
    margin: 0 0 8px; font-size: 26px;
}
.bestiarium-share-intro { font-size: 13px; margin: 0 0 12px; opacity: 0.85; }
.bestiarium-share-img {
    /* v3.20.1: show the WHOLE image (contain), never crop it. */
    width: 100%; height: 240px;
    background-position: center; background-repeat: no-repeat; background-size: contain;
    background-color: #2a1808;
    border: 2px solid var(--bestiarium-gold); border-radius: 6px; margin-bottom: 10px;
}
.bestiarium-share-text {
    width: 100%; box-sizing: border-box; resize: vertical;
    font-family: 'EB Garamond', Georgia, serif; font-size: 14px;
    padding: 8px 10px; border: 1px solid #6a3a0c; border-radius: 4px;
    background: rgba(255, 255, 255, 0.6); color: #3a2412; margin-bottom: 12px;
}
.bestiarium-share-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.bestiarium-share-actions .bestiarium-btn { text-decoration: none; }
/* v3.21.0: native share + per-network buttons */
.bestiarium-share-native { flex: 1 1 100%; font-size: 15px; padding: 10px; }
.bestiarium-share-fb { background: linear-gradient(180deg, #3b5998, #2d4373); color: #fff; border-color: #2d4373; }
.bestiarium-share-ig { background: linear-gradient(120deg, #f09433, #dc2743 45%, #bc1888); color: #fff; border-color: #bc1888; }
.bestiarium-share-tt { background: linear-gradient(180deg, #111, #000); color: #fff; border-color: #25F4EE; }
.bestiarium-share-fb:hover, .bestiarium-share-ig:hover, .bestiarium-share-tt:hover { filter: brightness(1.12); }
.bestiarium-share-note { font-size: 12px; margin: 10px 0 0; min-height: 16px; color: #5c3a14; font-weight: 600; }
.bestiarium-share-close {
    position: absolute; top: 6px; right: 12px;
    background: transparent; border: none; color: #6a3a0c;
    font-size: 28px; cursor: pointer; line-height: 1;
}
.bestiarium-stat-max[data-status-valour-max]:empty,
.bestiarium-stat-max[data-status-faith-max]:empty,
.bestiarium-stat-max[data-status-wisdom-max]:empty { display: none; }
@media (max-width: 640px) {
    .bestiarium-share-box h3 { font-size: 22px; }
}


/* ============================================================
 * v3.22.0: merchant wear-level + quantity, sight pill, map fullscreen
 * ============================================================ */
.bestiarium-market-req {
    display: inline-block; margin: 2px 0; font-size: 11px;
    font-family: 'Cinzel', serif; letter-spacing: 0.5px;
    color: #6a3a0c; background: rgba(199, 160, 89, 0.3);
    border: 1px solid var(--bestiarium-gold); border-radius: 999px; padding: 1px 8px;
}
.bestiarium-purchase-req { font-family: 'Cinzel', serif; font-size: 13px; margin: 6px 0; }
.bestiarium-purchase-req.is-locked { color: var(--bestiarium-red); font-weight: bold; }
.bestiarium-purchase-qty {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    margin: 10px 0; font-family: 'Cinzel', serif; font-size: 13px;
}
.bestiarium-purchase-qty input {
    width: 60px; text-align: center; padding: 5px; font-size: 15px;
    border: 1px solid var(--bestiarium-gold); border-radius: 4px;
    background: rgba(0, 0, 0, 0.15); color: inherit;
}
.bestiarium-purchase-qty .bestiarium-btn { padding: 4px 12px; font-size: 16px; line-height: 1; }

.bestiarium-stat.is-sight .bestiarium-stat-icon { color: #6fb6ff; }

.bestiarium-map-fs {
    position: absolute; top: 10px; right: 10px; z-index: 40;
    width: 36px; height: 36px; border-radius: 6px; cursor: pointer;
    background: rgba(20, 12, 4, 0.7); color: var(--bestiarium-gold-bright);
    border: 1px solid var(--bestiarium-gold); font-size: 18px; line-height: 1;
}
.bestiarium-map-fs:hover { background: rgba(60, 36, 10, 0.85); }
/* ============================================================
 * v3.23.2: "big map" mode via CSS overlay (NOT the native Fullscreen API),
 * so body-level popups — the travel "Riding from / skip" window, the combat
 * arena, item popups — keep appearing ON TOP. The location panel floats as a
 * right-hand drawer that can be hidden/shown with a button.
 * z-index 9000 sits ABOVE the page but BELOW the modals (9990+).
 * ============================================================ */
.bestiarium-mapview.is-maximized {
    position: fixed; inset: 0; z-index: 9000; margin: 0; padding: 0;
    background: #140c05; overflow: hidden; display: block;
}
.bestiarium-mapview.is-maximized .bestiarium-map-head { display: none; }
.bestiarium-mapview.is-maximized .bestiarium-map-wrap {
    position: absolute; inset: 0; width: 100%; height: 100%;
    aspect-ratio: auto; min-height: 0; margin: 0; border: none; border-radius: 0;
}
.bestiarium-mapview.is-maximized .bestiarium-map-svg { width: 100%; height: 100%; }
.bestiarium-mapview.is-maximized .bestiarium-map-panel {
    position: absolute; top: 0; right: 0; z-index: 30;
    width: min(440px, 92vw); height: 100%; max-height: 100%; overflow-y: auto; margin: 0;
    /* v3.59.0: same parchment background as the normal (non-fullscreen) panel,
       just a touch more opaque so it stays readable over the map. */
    background: rgba(255, 247, 217, 0.97);
    border-left: 2px solid var(--bestiarium-gold); border-radius: 0;
    box-shadow: -10px 0 30px rgba(0, 0, 0, 0.65);
    transition: transform 0.25s ease;
}
.bestiarium-mapview.is-maximized.is-panel-hidden .bestiarium-map-panel { transform: translateX(100%); }
.bestiarium-mapview.is-maximized .bestiarium-map-fs { top: 10px; right: auto; left: 10px; z-index: 40; }
/* v3.64.0: fullscreen TOP bar (stats + profile). Hidden by default; shown only
   on phones in fullscreen (mobile @media block) so the desktop big-map is
   unchanged. */
.bestiarium-map-fstop { display: none; }
/* the drawer hide/show tab — only visible in big-map mode */
.bestiarium-map-panel-toggle { display: none; }
.bestiarium-mapview.is-maximized .bestiarium-map-panel-toggle {
    display: flex; align-items: center; justify-content: center;
    position: absolute; top: 50%; transform: translateY(-50%);
    right: min(440px, 92vw); z-index: 40;
    width: 28px; height: 64px; cursor: pointer;
    background: rgba(20, 12, 5, 0.92); color: var(--bestiarium-gold-bright);
    border: 1px solid var(--bestiarium-gold); border-right: none;
    border-radius: 8px 0 0 8px; font-size: 18px; line-height: 1;
    transition: right 0.25s ease;
}
.bestiarium-mapview.is-maximized.is-panel-hidden .bestiarium-map-panel-toggle { right: 0; }


/* ============================================================
 * v3.24.0: MOBILE OPTIMISATION — applies ONLY to narrow (phone) screens
 * via this media query, so the desktop layout is completely untouched.
 * ============================================================ */
@media (max-width: 600px) {
    .bestiarium-shell {
        padding: 10px;
        min-height: 0;
        --bestiarium-height: auto;
        overflow-x: hidden;
    }

    /* --- status bar: dense, readable pills (icon+value on top, label below) --- */
    .bestiarium-statusbar {
        grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
        gap: 5px; padding: 8px; margin: 10px 0;
    }
    .bestiarium-stat {
        display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
        gap: 3px; padding: 5px 4px;
    }
    .bestiarium-stat-icon  { font-size: 13px; }
    .bestiarium-stat-value { font-size: 14px; }
    .bestiarium-stat-max   { font-size: 10px; }
    .bestiarium-stat-label { font-size: 8px; letter-spacing: 0.4px; width: 100%; text-align: center; order: 3; }
    .bestiarium-xpbar { width: 100%; order: 4; }

    /* --- main nav: full-width, finger-sized --- */
    .bestiarium-mainnav { gap: 6px; }
    .bestiarium-mainnav-btn { padding: 13px 6px; font-size: 12px; letter-spacing: 1px; }

    /* --- headings smaller so they don't eat the screen --- */
    .bestiarium-section-title { font-size: 20px; }
    .bestiarium-map-head { padding: 0 0 6px; }
    .bestiarium-section-text, .bestiarium-map-status { font-size: 12px; }

    /* --- the map: a touch taller for breathing room + smooth touch panning --- */
    .bestiarium-map-wrap { min-height: 340px; }
    .bestiarium-map-svg { min-height: 340px; }
    /* v3.60.0: ONLY the SVG owns touch gestures (1:1 drag-pan + pinch-zoom).
       v3.62.0: must NOT be on the wrap — that swallowed taps on the buttons
       inside it (the fullscreen toggle wouldn't react). Keep the buttons
       explicitly tappable. */
    .bestiarium-map-svg { touch-action: none; }
    .bestiarium-map-fs,
    .bestiarium-map-controls,
    .bestiarium-map-controls button,
    .bestiarium-map-panel-toggle { touch-action: manipulation; }
    /* v3.62.0: move the fullscreen toggle to the BOTTOM-right so it no longer
       sits under the (now bigger) zoom controls — both are reachable. */
    .bestiarium-map-fs {
        width: 46px; height: 46px; font-size: 22px;
        top: auto; bottom: 12px; right: 12px; z-index: 50;
    }
    .bestiarium-map-level-chip { font-size: 11px; padding: 5px 8px; gap: 5px; flex-wrap: wrap; max-width: 70%; }
    /* finger-sized zoom controls (the +/−/reset cluster) */
    .bestiarium-map-controls { gap: 6px; top: 8px; right: 8px; }
    .bestiarium-map-controls button { width: 44px; height: 44px; font-size: 22px; }

    /* --- finger-sized buttons everywhere --- */
    .bestiarium-btn { min-height: 42px; padding: 9px 13px; }

    /* --- every popup/modal fits the screen and scrolls --- */
    .bestiarium-wager-body,
    .bestiarium-tavernroom-body,
    .bestiarium-purchase-body,
    .bestiarium-item-popup-body,
    .bestiarium-book-frame,
    .bestiarium-duel-box,
    .bestiarium-share-box,
    .bestiarium-update-box,
    .bestiarium-duel-rules-box,
    .bestiarium-statbreak-body,
    .bestiarium-jukebox-body,
    .bestiarium-cathedral-body,
    .bestiarium-heal-body,
    .bestiarium-meditation-body,
    .bestiarium-coinshop-body {
        width: 96vw !important;
        max-width: 96vw !important;
        max-height: 92vh !important;
        overflow-y: auto;
        padding: 16px 14px;
    }

    /* --- profile: single column, compact equipment doll --- */
    .bestiarium-profile-grid { grid-template-columns: 1fr !important; }
    .bestiarium-doll { gap: 5px; padding: 7px; max-width: 100%; }
    .bestiarium-doll-avatar { width: 78px; height: 78px; }
    .bestiarium-equip-slot { min-height: 82px; padding: 4px 3px; }
    .bestiarium-equip-slot-label { font-size: 8px; }
    .bestiarium-equip-slot-img { width: 40px; height: 40px; }
    .bestiarium-equip-slot-glyph { font-size: 28px; line-height: 40px; }
    .bestiarium-equip-slot-name { font-size: 9px; line-height: 1.1; }
    .bestiarium-equip-slot-bonus { font-size: 8px; padding: 1px 4px; }
    .bestiarium-equip-choice-list { grid-template-columns: 1fr; }
    .bestiarium-profile-avatar { width: 78px; height: 78px; }
    .bestiarium-profile { padding: 12px 10px; }
    .bestiarium-profile-head { gap: 11px; }
    .bestiarium-profile-hub-grid { gap: 8px; }
    .bestiarium-profile-hub-button {
        min-height: 72px;
        grid-template-columns: 31px minmax(0, 1fr);
        gap: 7px;
        padding: 8px 7px;
        box-shadow: 0 2px 0 #704315, 0 5px 10px rgba(58, 36, 18, 0.14);
    }
    .bestiarium-profile-hub-icon {
        width: 31px;
        height: 31px;
        font-size: 20px;
    }
    .bestiarium-profile-hub-copy strong { font-size: 10px; line-height: 1.25; }
    .bestiarium-profile-hub-copy small { font-size: 9px; }
    .bestiarium-profile-action-row { gap: 7px; }
    .bestiarium-profile-action-row .bestiarium-btn {
        padding-left: 7px;
        padding-right: 7px;
        font-size: 10px;
        letter-spacing: 0;
    }
    .bestiarium-profile-panel-overlay {
        align-items: stretch;
        padding: 0;
    }
    .bestiarium-profile-panel-dialog {
        width: 100%;
        height: 100dvh;
        max-height: 100dvh;
        border: 0;
        border-radius: 0;
        box-shadow: none;
    }
    .bestiarium-profile-panel-head {
        min-height: 56px;
        padding: max(8px, env(safe-area-inset-top)) 8px 8px 12px;
    }
    .bestiarium-profile-panel-head h2 { font-size: 16px; }
    .bestiarium-profile-panel-close {
        width: 42px;
        height: 42px;
        flex-basis: 42px;
    }
    .bestiarium-profile-panel-body {
        padding: 12px 10px max(18px, env(safe-area-inset-bottom));
    }

    /* --- bestiary book: two cards per row --- */
    .bestiarium-book-grid { grid-template-columns: 1fr 1fr !important; }

    /* --- card duel: cards + hand fit, hand scrolls if needed --- */
    .bestiarium-duel-box { padding: 14px 10px; }
    .bestiarium-duel-card { width: 86px; }
    .bestiarium-duel-hand-row { gap: 6px; padding: 8px 4px; flex-wrap: wrap; }
    .bestiarium-duel-side-head { gap: 6px; font-size: 11px; }

    /* --- combat arena: v3.62.0 — make Útok / Modliť sa / Utiecť ALWAYS visible.
       The box was overflow:hidden and content taller than the phone, so the
       action buttons got clipped below the fold. Now the box scrolls, the
       portrait/lore hide to save room, and the actions stick to the bottom. --- */
    .bestiarium-beast-arena {
        max-height: calc(100vh - 12px);
        overflow-y: auto;
    }
    .bestiarium-beast-portrait,
    .bestiarium-beast-lore { display: none; }
    .bestiarium-beast-arena-stage { height: 150px; min-height: 0; }
    .bestiarium-beast-arena-log { max-height: 64px; }
    .bestiarium-beast-arena-actions {
        position: sticky; bottom: 0; z-index: 5;
        flex-wrap: wrap;
        background: rgba(220, 195, 140, 0.99);
        margin: 0 -14px -12px; padding: 8px 14px 10px;
    }
    .bestiarium-beast-arena-actions button { flex: 1 1 30%; min-height: 46px; }

    /* --- big-map drawer covers most of the width on a phone --- */
    .bestiarium-mapview.is-maximized .bestiarium-map-panel { width: 86vw; }

    /* v3.64.0: mobile fullscreen TOP bar — mirrors the right location drawer,
       but laid along the top: compact stats (coins / life / level) + a
       jump-to-profile button + a close button. It only shows on phones inside
       the big map; the desktop big-map stays exactly as before (the global
       `.bestiarium-map-fstop { display: none; }` rule keeps it hidden there). */
    .bestiarium-mapview.is-maximized .bestiarium-map-fstop {
        display: flex; align-items: center; justify-content: space-between; gap: 8px;
        position: absolute; top: 0; left: 0; right: 0; z-index: 42;
        height: 46px; padding: 0 10px; box-sizing: border-box;
        background: rgba(255, 247, 217, 0.97);
        border-bottom: 2px solid var(--bestiarium-gold);
        box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
    }
    .bestiarium-fstop-stats {
        display: flex; align-items: center; gap: 8px;
        flex: 1 1 auto; min-width: 0; overflow-x: auto; -webkit-overflow-scrolling: touch;
    }
    .bestiarium-fstop-stat {
        font-family: 'Cinzel', serif; font-size: 13px; font-weight: 700;
        color: #2a1c06; white-space: nowrap;
        padding: 3px 8px; border-radius: 7px;
        background: rgba(199, 160, 89, 0.28);
        border: 1px solid rgba(199, 160, 89, 0.6);
    }
    .bestiarium-fstop-actions { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; }
    .bestiarium-fstop-btn {
        width: 40px; height: 40px; line-height: 1; padding: 0;
        display: flex; align-items: center; justify-content: center;
        border-radius: 8px; cursor: pointer; font-size: 19px;
        background: rgba(20, 12, 4, 0.86); color: var(--bestiarium-gold-bright);
        border: 2px solid var(--bestiarium-gold);
        touch-action: manipulation;
    }
    /* make room for the bar: push the map AND the right drawer below it */
    .bestiarium-mapview.is-maximized .bestiarium-map-wrap { top: 46px; height: calc(100% - 46px); }
    .bestiarium-mapview.is-maximized .bestiarium-map-panel { top: 46px; height: calc(100% - 46px); }
    /* the standalone fullscreen toggle is redundant in mobile fullscreen — the
       top bar's ✕ closes it; hide it so it doesn't float over the map. */
    .bestiarium-mapview.is-maximized .bestiarium-map-fs { display: none; }

    /* v3.62.0: auto-injected close "X" on every popup (mobilefix.js) */
    .bestiarium-mclose {
        position: fixed; top: 10px; right: 10px; z-index: 100000;
        width: 40px; height: 40px; line-height: 1;
        border-radius: 50%; cursor: pointer;
        background: rgba(20, 12, 4, 0.86); color: var(--bestiarium-gold-bright);
        border: 2px solid var(--bestiarium-gold); font-size: 20px;
        display: flex; align-items: center; justify-content: center;
        touch-action: manipulation;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
    }

    /* --- narrator chat fits the phone --- */
    .bestiarium-narrator-panel { width: 94vw !important; max-width: 94vw !important; right: 3vw !important; }
}


/* ============================================================
 * v3.25.0: clear post-event / raid result summary
 * ============================================================ */
.bestiarium-eventresult-body { max-width: 460px; width: min(460px, 94vw); text-align: center; }
.bestiarium-eventresult-banner {
    font-family: 'UnifrakturMaguntia', serif; font-size: 30px; letter-spacing: 1px;
    margin-bottom: 8px; color: var(--bestiarium-gold-bright);
}
.bestiarium-eventresult-body.is-loss .bestiarium-eventresult-banner { color: #d97a6b; }
.bestiarium-eventresult-story { font-size: 14px; opacity: 0.9; margin: 0 0 12px; }
.bestiarium-eventresult-party { font-family: 'Cinzel', serif; font-size: 13px; margin: 0 0 12px; }
.bestiarium-eventresult-rewards {
    display: flex; flex-direction: column; gap: 6px; margin: 0 auto 12px; max-width: 320px;
}
.bestiarium-eventresult-row {
    display: flex; justify-content: space-between; align-items: center;
    padding: 8px 12px; border: 1px solid rgba(199, 160, 89, 0.55); border-radius: 8px;
    background: rgba(18, 11, 5, 0.55); font-size: 14px;
}
/* v3.57.0: the GAINED VALUE is the loudest element — a bold, dark-on-bright
 * pill, colour-coded by reward type. The label stays muted on the left. */
.bestiarium-eventresult-row > span { color: #efe2c4; opacity: 0.82; font-family: 'Cinzel', serif; font-size: 13px; }
.bestiarium-eventresult-row strong {
    font-family: 'Cinzel', serif; font-weight: 800; font-size: 20px; line-height: 1;
    padding: 4px 11px; border-radius: 7px; white-space: nowrap;
    color: #1b1208; text-shadow: 0 1px 0 rgba(255,255,255,0.25);
    box-shadow: 0 2px 6px rgba(0,0,0,0.45);
}
.bestiarium-eventresult-row.is-xp strong     { background: linear-gradient(180deg, #c4a6ee, #8a64cc); color: #160a26; }
.bestiarium-eventresult-row.is-coins strong  { background: linear-gradient(180deg, #ffd95e, #e0a52a); color: #2a1c06; }
.bestiarium-eventresult-row.is-roll strong   { background: linear-gradient(180deg, #8fe69a, #3aa85a); color: #07210f; }
.bestiarium-eventresult-row.is-loss strong   { background: linear-gradient(180deg, #e8746a, #b22a20); color: #2a0907; text-shadow: 0 1px 0 rgba(255,255,255,0.2); }
.bestiarium-eventresult-drop {
    margin: 6px auto 14px; max-width: 340px; padding: 14px 12px;
    border: 2px solid #e0b94e; border-radius: 10px;
    background: radial-gradient(circle at 50% 0%, rgba(224, 185, 78, 0.3), rgba(0, 0, 0, 0.25));
    box-shadow: 0 0 22px rgba(224, 185, 78, 0.5);
    animation: bestiarium-drop-glow 1.6s ease-in-out infinite;
}
@keyframes bestiarium-drop-glow {
    0%, 100% { box-shadow: 0 0 14px rgba(224, 185, 78, 0.4); }
    50% { box-shadow: 0 0 30px rgba(224, 185, 78, 0.85); }
}
.bestiarium-eventresult-drop-spark { font-size: 26px; color: #ffe9b0; }
.bestiarium-eventresult-drop-title {
    font-family: 'Cinzel', serif; letter-spacing: 2px; font-size: 13px; color: #ffe9b0; margin: 2px 0 6px;
}
.bestiarium-eventresult-drop-name { font-family: 'UnifrakturMaguntia', serif; font-size: 20px; color: var(--bestiarium-gold-bright); }
.bestiarium-eventresult-drop-eff { font-family: 'Cinzel', serif; font-size: 13px; margin-top: 4px; }
.bestiarium-eventresult-drop-where { font-size: 12px; opacity: 0.8; margin-top: 6px; }
.bestiarium-eventresult-body .bestiarium-btn { margin-top: 4px; }


/* v3.26.0: house defences + robbery */
.bestiarium-house-defenses { display: flex; flex-direction: column; gap: 6px; margin: 6px 0 10px; }
.bestiarium-house-defenses p { margin: 0 0 2px; font-size: 14px; }
.bestiarium-house-helper-guards { display: grid; gap: 6px; margin: 4px 0 8px; }
.bestiarium-house-helper-guard {
    display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 8px;
    align-items: center; padding: 6px; border: 1px solid rgba(108, 69, 26, .3);
    background: rgba(255, 248, 225, .52);
}
.bestiarium-house-helper-guard img,
.bestiarium-house-helper-guard-fallback {
    width: 44px; height: 44px; border: 1px solid #9f7a3b; background: #e2c98d;
}
.bestiarium-house-helper-guard img { display: block; object-fit: cover; }
.bestiarium-house-helper-guard-fallback {
    display: flex; align-items: center; justify-content: center; font-size: 22px;
}
.bestiarium-house-helper-guard span { min-width: 0; }
.bestiarium-house-helper-guard span strong,
.bestiarium-house-helper-guard span small { display: block; overflow-wrap: anywhere; }
.bestiarium-house-helper-guard span small { margin-top: 3px; color: #6d542f; }
.bestiarium-house-helper-guard .bestiarium-btn { margin: 0; white-space: nowrap; }
.bestiarium-house-helper-picker {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px;
    align-items: end; padding: 9px; border: 1px solid rgba(108, 69, 26, .3);
    background: rgba(246, 229, 190, .72);
}
.bestiarium-house-helper-picker label { display: grid; gap: 4px; min-width: 0; font-weight: 700; }
.bestiarium-house-helper-picker select { width: 100%; min-width: 0; }
.bestiarium-house-helper-picker .bestiarium-wager-note { grid-column: 1 / -1; margin: 0; }
@media (max-width: 600px) {
    .bestiarium-house-helper-guard { grid-template-columns: 44px minmax(0, 1fr); }
    .bestiarium-house-helper-guard .bestiarium-btn { grid-column: 2; width: 100%; }
    .bestiarium-house-helper-picker { grid-template-columns: 1fr; }
    .bestiarium-house-helper-picker .bestiarium-btn { width: 100%; }
}
.bestiarium-house-defense-secret { border-left: 4px solid #772b25; padding-left: 9px; }
.bestiarium-house-guard-sequence {
    flex: 0 0 auto; padding: 5px 8px; border-left: 4px solid #772b25;
    background: rgba(231, 207, 151, .72); color: #5f321d; font-weight: 700;
}
.bestiarium-house-guard-note {
    flex: 0 0 auto; margin: 7px 0; padding: 7px 9px; border-left: 4px solid #876522;
    background: rgba(238, 221, 178, .86); color: #51371f; line-height: 1.35;
}

/* v3.27.0: PvP "Fight for coins" record card. */
.bestiarium-pvp-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.bestiarium-pvp-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:12px 6px;border-radius:8px;background:rgba(20,12,4,.28);border:1px solid rgba(122,90,50,.7)}
.bestiarium-pvp-tile.is-win{border-color:#3f7d3f;box-shadow:inset 0 0 14px rgba(63,125,63,.18)}
.bestiarium-pvp-tile.is-loss{border-color:#9c3b3b;box-shadow:inset 0 0 14px rgba(156,59,59,.18)}
.bestiarium-pvp-tile.is-rate{border-color:#c19a33;box-shadow:inset 0 0 14px rgba(193,154,51,.18)}
.bestiarium-pvp-val{font-size:1.4rem;font-weight:700;line-height:1;color:#f3e7cf}
.bestiarium-pvp-lbl{font-size:.72rem;opacity:.82;text-align:center;letter-spacing:.02em}
.bestiarium-pvp-draws{margin:8px 0 0;font-size:.82rem;opacity:.75}
.bestiarium-badge.is-pvp{background:rgba(122,40,40,.35);border-color:#9c3b3b}
@media (max-width:600px){.bestiarium-pvp-tiles{grid-template-columns:repeat(2,1fr)}}

/* v3.28.0: Trade Day (auction) panel. */
.bestiarium-auction{margin-top:10px}
.bestiarium-auction-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:700;margin-bottom:8px;color:#f3e7cf}
.bestiarium-auction-clock b{color:#ffd98a}
.bestiarium-auction-clock.is-closed{color:#c98;font-weight:600}
.bestiarium-auction-sell{background:rgba(20,12,4,.28);border:1px solid rgba(122,90,50,.6);border-radius:8px;padding:10px;margin-bottom:10px}
.bestiarium-auction-sell label{display:block;font-size:.82rem;opacity:.85;margin-bottom:4px}
.bestiarium-auction-sellrow{display:flex;gap:6px;flex-wrap:wrap}
.bestiarium-auction-sellrow select{flex:1 1 120px;min-width:0}
.bestiarium-auction-hint,.bestiarium-auction-empty{font-size:.78rem;opacity:.72;margin:6px 0 0}
.bestiarium-auction-list{display:flex;flex-direction:column;gap:8px}
.bestiarium-auction-item{display:flex;gap:8px;align-items:center;background:rgba(0,0,0,.18);border:1px solid rgba(122,90,50,.55);border-radius:8px;padding:8px}
.bestiarium-auction-item.is-leading{border-color:#3f7d3f}
.bestiarium-auction-item.is-mine{border-color:#b8902f}
.bestiarium-auction-thumb{width:44px;height:44px;flex:0 0 44px;border-radius:6px;overflow:hidden;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;font-size:1.3rem}
.bestiarium-auction-thumb img{width:100%;height:100%;object-fit:cover}
.bestiarium-auction-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.bestiarium-auction-info strong{color:#f3e7cf;font-size:.9rem}
.bestiarium-auction-price b{color:#ffd98a}
.bestiarium-auction-price,.bestiarium-auction-meta{font-size:.76rem;opacity:.85}
.bestiarium-auction-actions{flex:0 0 auto;display:flex;flex-direction:column;gap:4px;align-items:flex-end}
.bestiarium-auction-note{font-size:.72rem;opacity:.8}
.bestiarium-auction-results{margin-top:10px;font-size:.82rem}
.bestiarium-auction-results summary{cursor:pointer;font-weight:600;opacity:.85}
.bestiarium-auction-result{margin:6px 0 0;opacity:.85}
@media (max-width:600px){.bestiarium-auction-item{flex-wrap:wrap}.bestiarium-auction-actions{flex-direction:row;width:100%;justify-content:flex-end}}

/* v3.29.0: Guild hall popup. */
.bestiarium-guild-box{max-width:560px;width:94%;max-height:88vh;overflow:auto;text-align:left}
.bestiarium-guild-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.bestiarium-guild-head h3{margin:0;color:#f3e7cf}
.bestiarium-guild-x{background:none;border:none;color:#caa;font-size:1.2rem;cursor:pointer;line-height:1}
.bestiarium-guild-coins{font-weight:700;color:#ffd98a;margin:0 0 8px}
.bestiarium-guild-meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.84rem;opacity:.9;margin-bottom:8px}
.bestiarium-guild-box h4{margin:14px 0 6px;font-size:.96rem;color:#e8d8b8}
.bestiarium-guild-empty,.bestiarium-guild-hint,.bestiarium-guild-note{font-size:.8rem;opacity:.72}
.bestiarium-guild-hint{margin-top:6px}
.bestiarium-guild-invite,.bestiarium-guild-house,.bestiarium-guild-listing{display:flex;align-items:center;gap:8px;justify-content:space-between;background:rgba(0,0,0,.18);border:1px solid rgba(122,90,50,.55);border-radius:8px;padding:8px;margin-bottom:6px}
.bestiarium-guild-invite-actions{display:flex;gap:6px;flex:0 0 auto}
.bestiarium-guild-house-info,.bestiarium-guild-listing-info{display:flex;flex-direction:column;min-width:0}
.bestiarium-guild-house-info span,.bestiarium-guild-listing-info span{font-size:.78rem;opacity:.85}
.bestiarium-guild-listing-info b,.bestiarium-guild-house-info b{color:#ffd98a}
.bestiarium-guild-memberlist{display:flex;flex-wrap:wrap;gap:6px}
.bestiarium-guild-member{background:rgba(20,12,4,.3);border:1px solid rgba(122,90,50,.5);border-radius:12px;padding:3px 10px;font-size:.82rem}
.bestiarium-guild-member.is-master{border-color:#c19a33;color:#ffd98a}
.bestiarium-guild-invrow,.bestiarium-guild-sellrow{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.bestiarium-guild-invrow input,.bestiarium-guild-sellrow select{flex:1 1 120px;min-width:0}
.bestiarium-guild-tax{font-size:.78rem;opacity:.8;margin:2px 0 6px}
.bestiarium-guild-foot{margin-top:14px;text-align:right}
@media (max-width:600px){.bestiarium-guild-invite,.bestiarium-guild-house,.bestiarium-guild-listing{flex-wrap:wrap}}

/* v4.84.5: discoverable guild directory and membership applications. */
.bestiarium-guild-directory{margin:10px 0 16px;padding-bottom:10px;border-bottom:1px solid rgba(122,90,50,.45)}
.bestiarium-guild-directory-row{align-items:stretch}
.bestiarium-guild-directory-emblem{width:46px;height:46px;flex:0 0 46px;border:1px solid rgba(193,154,51,.75);background:rgba(20,12,4,.35);overflow:hidden}
.bestiarium-guild-directory-emblem img{display:block;width:100%;height:100%;object-fit:cover}
.bestiarium-guild-directory-row .bestiarium-guild-house-info{flex:1 1 180px;justify-content:center}
.bestiarium-guild-request-status{font-size:.8rem;color:#f0cc72;align-self:center}
.bestiarium-guild-requests{margin:8px 0 12px;padding:1px 8px 7px;border-left:3px solid #c19a33;background:rgba(193,154,51,.08)}
@media (max-width:600px){
  .bestiarium-guild-directory-row .bestiarium-btn,.bestiarium-guild-directory-row .bestiarium-guild-note,.bestiarium-guild-directory-row .bestiarium-guild-request-status{width:100%;text-align:center}
  .bestiarium-guild-invite-actions{width:100%;justify-content:flex-end}
}

/* v3.29.1: in-game admin guild-house manager rows. */
.bestiarium-guildadmin-list{margin-top:6px;display:flex;flex-direction:column;gap:4px}
.bestiarium-guildadmin-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.78rem;background:rgba(0,0,0,.14);border:1px solid rgba(122,90,50,.4);border-radius:6px;padding:4px 8px}
.bestiarium-guildadmin-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* v3.29.2: guild-house map marker + overview. */
.bestiarium-guildhouse-disc{fill:#3a2a12;stroke:#c19a33;stroke-width:.5}
.bestiarium-guildhouse.is-forsale .bestiarium-guildhouse-disc{stroke:#7fae5a;stroke-dasharray:1 0.8}
.bestiarium-guildhouse-icon{font-size:2.6px;dominant-baseline:middle}
.bestiarium-guildhouse:hover .bestiarium-guildhouse-disc{stroke-width:.9}
.bestiarium-guild-overview p{margin:4px 0;font-size:.9rem}
.bestiarium-guild-forsale{font-size:1rem}
.bestiarium-guild-forsale strong{color:#ffd98a}

/* v3.30.0: brighter guild-house marker + guild image/relic/invite UI. */
.bestiarium-guildhouse-disc{fill:#d8a72a;stroke:#fff1c0;stroke-width:.6}
.bestiarium-guildhouse.is-forsale .bestiarium-guildhouse-disc{fill:#b8902f;stroke:#cfeac0;stroke-dasharray:1 0.6}
.bestiarium-guildhouse-icon{font-size:3px;dominant-baseline:middle}
.bestiarium-guildhouse{filter:drop-shadow(0 0 1.4px rgba(0,0,0,.6))}
.bestiarium-guildhouse:hover .bestiarium-guildhouse-disc{stroke-width:1}
.bestiarium-guild-emblem{margin:8px 0;border-radius:8px;overflow:hidden;border:1px solid rgba(193,154,51,.5)}
.bestiarium-guild-emblem img{display:block;width:100%;max-height:240px;object-fit:cover}
.bestiarium-guild-emblem-actions{margin:0 0 6px}
.bestiarium-guild-relic{margin-top:6px;background:rgba(40,24,60,.22);border:1px solid rgba(140,110,170,.5);border-radius:8px;padding:8px}
.bestiarium-guild-relic-info{font-size:.84rem;margin:2px 0 6px;opacity:.92}
.bestiarium-guild-relic-info strong{color:#d7b8ff}
.bestiarium-guild-invitepop{max-width:420px;text-align:center}
.bestiarium-guild-invitepop p{font-size:.96rem;margin:8px 0 14px}

/* v3.30.2: guild invite-from-present label. */
.bestiarium-guild-invlabel{display:block;font-size:.8rem;opacity:.85;margin:8px 0 4px}
.bestiarium-guild-invite-box{margin-top:6px}

/* v3.31.0: guild image uncropped, transparent guild marker, guild desc. */
.bestiarium-guild-emblem img{object-fit:contain;max-height:300px;background:rgba(0,0,0,.25)}
.bestiarium-guildhouse-disc{fill:transparent;stroke:#ffe9a8;stroke-width:.5}
.bestiarium-guildhouse.is-forsale .bestiarium-guildhouse-disc{fill:transparent;stroke:#bfe6a0;stroke-dasharray:1 0.6}
.bestiarium-guild-desc{font-size:.86rem;opacity:.9;font-style:italic;margin:4px 0}

/* v3.32.0: lasso (polygon) housing districts. */
.bestiarium-house-zone-poly{fill:rgba(184,134,44,0.10);stroke:var(--bestiarium-gold,#b8862c);stroke-width:0.4;stroke-dasharray:1.5 1}
.bestiarium-house-zone-temp{fill:rgba(255,217,138,0.10);stroke:#ffd98a;stroke-width:0.4;stroke-dasharray:1 0.8}
.bestiarium-house-zone-temp-dot{fill:#ffd98a;stroke:#3a2a12;stroke-width:0.2}
.bestiarium-zonepoly-ctrl{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:10001;display:flex;gap:8px;align-items:center;background:rgba(20,12,4,.94);border:1px solid var(--bestiarium-gold,#b8862c);border-radius:10px;padding:8px 12px;color:#f3e7cf;font-size:.85rem;box-shadow:0 4px 18px rgba(0,0,0,.5)}
.bestiarium-zonepoly-ctrl button{cursor:pointer;border:1px solid var(--bestiarium-gold,#b8862c);background:#3a2a12;color:#f3e7cf;border-radius:6px;padding:5px 12px;font-size:.85rem}
.bestiarium-zonepoly-ctrl button[data-zonepoly-finish]{background:#3f6d2f;border-color:#6fae5a}

/* v3.33.0: guild switcher tabs + bag slot hint. */
.bestiarium-guild-switch{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.bestiarium-guild-tab{cursor:pointer;border:1px solid rgba(122,90,50,.6);background:rgba(0,0,0,.18);color:#e8d8b8;border-radius:14px;padding:4px 12px;font-size:.82rem}
.bestiarium-guild-tab.is-active{border-color:#c19a33;background:rgba(193,154,51,.22);color:#ffd98a}
.bestiarium-slot-hint{display:block;font-size:.72rem;opacity:.78;margin-top:2px}

/* v3.34.0: guild forge. */
.bestiarium-guild-forge-craft{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0}
.bestiarium-guild-forge-craft select,.bestiarium-guild-forge-craft input{padding:3px 6px}
.bestiarium-guild-forge-tools{display:flex;flex-wrap:wrap;gap:4px;align-items:center}

/* v3.35.0: choose your level-up stat point. */
.bestiarium-levelup-alloc-title,.bestiarium-statbreak-alloc-title{font-weight:700;margin:6px 0 4px}
.bestiarium-levelup-alloc-btns,.bestiarium-statbreak-alloc-btns{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.bestiarium-statbreak-alloc{margin:4px 0 10px;padding:8px;border:1px solid rgba(193,154,51,.5);border-radius:8px;background:rgba(193,154,51,.12)}
.bestiarium-levelup-allocbtn{cursor:pointer;border:1px solid rgba(122,90,50,.7);background:rgba(0,0,0,.18);color:#f0e2c0;border-radius:14px;padding:5px 12px;font-size:.85rem}
.bestiarium-levelup-allocbtn:hover{border-color:#c19a33;background:rgba(193,154,51,.25);color:#ffd98a}
.bestiarium-levelup-allocbtn:disabled{opacity:.5;cursor:default}
.bestiarium-levelup-alloc-msg{font-size:.78rem;color:#e7b75a;margin-top:4px;min-height:1em}

/* v3.37.0: green damage-dealt float + solo/co-op victory modal. */
.bestiarium-float-dmg.is-dealt { color: #7fe07f; top: 28%; }
.bestiarium-cv-modal { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; background: rgba(8,5,2,.72); padding: 16px; }
.bestiarium-cv-card { max-width: 380px; width: 100%; background: linear-gradient(180deg,#2a1c0e,#1b1208); border: 2px solid #c19a33; border-radius: 14px; box-shadow: 0 18px 50px rgba(0,0,0,.6); padding: 18px; text-align: center; color: #f0e2c0; font-family: 'Cinzel', serif; animation: bestiarium-cv-pop .28s ease-out; }
@keyframes bestiarium-cv-pop { from { transform: scale(.86); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.bestiarium-cv-ribbon { font-size: 1.35rem; font-weight: 700; color: #ffd98a; letter-spacing: 1px; margin-bottom: 6px; }
.bestiarium-cv-foe { margin: 4px 0 12px; opacity: .9; }
.bestiarium-cv-rewards { display: flex; gap: 12px; justify-content: center; margin: 10px 0; }
.bestiarium-cv-reward { flex: 1; max-width: 130px; background: rgba(193,154,51,.14); border: 1px solid rgba(193,154,51,.5); border-radius: 10px; padding: 10px 6px; }
.bestiarium-cv-num { display: block; font-size: 1.7rem; font-weight: 700; color: #ffe6a3; }
.bestiarium-cv-lbl { display: block; font-size: .78rem; opacity: .85; }
.bestiarium-cv-level { margin: 6px 0; font-size: .9rem; }
.bestiarium-cv-drop { margin: 10px 0; font-size: .9rem; }
.bestiarium-cv-party { margin: 10px 0; text-align: left; border-top: 1px solid rgba(193,154,51,.3); padding-top: 8px; }
.bestiarium-cv-party-title { font-size: .85rem; margin-bottom: 4px; }
.bestiarium-cv-party-row { display: flex; justify-content: space-between; font-size: .8rem; opacity: .9; padding: 2px 0; }
.bestiarium-cv-btn { margin-top: 12px; width: 100%; }

/* v3.38.0: victory trophy-coins hint. */
.bestiarium-cv-hint { margin: 4px 0 0; font-size: .82rem; opacity: .85; }

/* v3.41.0: per-beast suitability dot + status line. */
.bestiarium-beast-dot { font-size: .9em; }
.bestiarium-beast-status { font-size: .78rem; opacity: .85; margin: 2px 0 4px; }

/* v3.70.0: world-map curse popups (received a babica relic / curse lifted). */
.bestiarium-curse-overlay {
    position: fixed; inset: 0;
    background: rgba(8,4,2,0.85);
    z-index: 99000;
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
    animation: bestiarium-levelup-fadein 0.3s ease-out;
}
.bestiarium-curse-card {
    border-radius: 10px;
    padding: 28px 30px 22px;
    max-width: 440px;
    width: 100%;
    text-align: center;
    font-family: "EB Garamond", Georgia, serif;
    position: relative;
    animation: bestiarium-levelup-rise 0.45s cubic-bezier(0.2,0.9,0.3,1.2) both;
    max-height: 90vh;
    overflow-y: auto;
}
.bestiarium-curse-bad .bestiarium-curse-card {
    background: linear-gradient(180deg, #2a0d12 0%, #4a141c 100%);
    border: 4px double #8a1f2c;
    color: #f5dcdc;
    box-shadow: 0 0 38px rgba(160,30,46,0.55), 0 0 80px rgba(160,30,46,0.3);
}
.bestiarium-curse-good .bestiarium-curse-card {
    background: linear-gradient(180deg, #fff7d9 0%, #f0dca8 100%);
    border: 4px double #6a3a0c;
    color: #2a1408;
    box-shadow: 0 0 38px rgba(246,200,79,0.6), 0 0 80px rgba(246,200,79,0.3);
}
.bestiarium-curse-icon { font-size: 52px; line-height: 1; margin-bottom: 6px; }
.bestiarium-curse-title {
    font-family: 'UnifrakturMaguntia', 'Cinzel', serif;
    font-size: 30px;
    font-weight: bold;
    margin: 4px 0 14px;
}
.bestiarium-curse-bad .bestiarium-curse-title { color: #ffb3b3; }
.bestiarium-curse-good .bestiarium-curse-title { color: #6a1818; text-shadow: 0 2px 0 rgba(255,247,217,0.8); }
.bestiarium-curse-body { font-size: 16px; line-height: 1.5; margin: 0 0 18px; }
.bestiarium-curse-close {
    display: inline-block;
    border: none; cursor: pointer;
    font-family: "EB Garamond", Georgia, serif;
    font-size: 17px; font-weight: bold;
    padding: 10px 30px; border-radius: 6px;
}
.bestiarium-curse-bad .bestiarium-curse-close {
    background: linear-gradient(180deg, #c1394a, #8a1f2c);
    color: #fff7d9;
}
.bestiarium-curse-good .bestiarium-curse-close {
    background: linear-gradient(180deg, #b8862c, #6a3a0c);
    color: #fff7d9;
}
@media (max-width: 600px) {
    .bestiarium-curse-card { padding: 22px 18px 18px; }
    .bestiarium-curse-icon { font-size: 44px; }
    .bestiarium-curse-title { font-size: 25px; }
    .bestiarium-curse-body { font-size: 15px; }
}

/* v3.98.0 — expedition badge in event panel */
.bestiarium-expedition-badge {
    display: inline-block;
    background: linear-gradient(135deg, #3a1a05 0%, #7a3a10 100%);
    color: #f5d98e;
    border: 1px solid #b87a2a;
    border-radius: 20px;
    padding: 3px 12px;
    font-size: 13px;
    font-weight: bold;
    margin: 6px 0 10px;
    letter-spacing: .03em;
}

/* v3.98.0 — community expedition battle popup */
.bestiarium-expbattle-overlay {
    position: fixed; inset: 0;
    background: rgba(10, 5, 0, .82);
    z-index: 9500;
    display: flex; align-items: center; justify-content: center;
    padding: 12px;
}
.bestiarium-expbattle-modal {
    position: relative;
    background: linear-gradient(170deg, #1e0f02 0%, #2e1808 60%, #1a0e03 100%);
    border: 2px solid #7a4a18;
    border-radius: 12px;
    box-shadow: 0 8px 48px rgba(0,0,0,.8), inset 0 0 60px rgba(120,60,10,.12);
    max-width: 880px; width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    color: #f0d9a0;
    font-family: "EB Garamond", Georgia, serif;
}
.bestiarium-expbattle-topbar {
    display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
    padding: 14px 18px 10px;
    border-bottom: 1px solid #5a3010;
    min-height: 72px;
}
.bestiarium-expbattle-avatar {
    position: relative;
    width: 52px; height: 52px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid #8a5a22;
    box-shadow: 0 0 8px rgba(200,140,40,.3);
    flex-shrink: 0;
    transition: box-shadow .2s;
}
.bestiarium-expbattle-avatar.is-speaking {
    border-color: #f0c040;
    box-shadow: 0 0 16px rgba(240,192,64,.7);
}
.bestiarium-expbattle-avatar img { width: 100%; height: 100%; object-fit: cover; }
.bestiarium-expbattle-initials {
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%;
    background: #4a2808;
    font-size: 22px; font-weight: bold; color: #f5d98e;
}
.bestiarium-expbattle-dot {
    position: absolute; bottom: 3px; right: 3px;
    width: 11px; height: 11px;
    border-radius: 50%;
    border: 2px solid #1e0f02;
    background: #5a5a5a;
}
.bestiarium-expbattle-dot.is-online { background: #4caf50; }
.bestiarium-expbattle-waiting { color: #b89060; font-size: 14px; }
.bestiarium-expbattle-main {
    display: grid;
    grid-template-columns: 1fr 260px;
    gap: 0;
    min-height: 340px;
}
.bestiarium-expbattle-beast {
    padding: 18px 16px 18px 20px;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    border-right: 1px solid #4a2808;
}
.bestiarium-expbattle-beast img {
    max-width: 100%; max-height: 280px;
    object-fit: contain;
    border-radius: 8px;
    box-shadow: 0 4px 24px rgba(0,0,0,.6);
}
.bestiarium-expbattle-beast-placeholder {
    font-size: 80px;
    opacity: .35;
}
.bestiarium-expbattle-beast h2 {
    margin: 14px 0 0;
    font-size: 22px;
    text-align: center;
    color: #f5d98e;
    text-shadow: 0 2px 6px rgba(0,0,0,.7);
}
.bestiarium-expbattle-sidebar {
    padding: 16px 16px 16px 14px;
    display: flex; flex-direction: column; gap: 8px;
}
.bestiarium-expbattle-sidebar h3 {
    margin: 0 0 6px;
    font-size: 16px;
    color: #c8a060;
    text-transform: uppercase;
    letter-spacing: .08em;
}
.bestiarium-expbattle-sidebar dl {
    margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 4px 10px;
    font-size: 14px;
}
.bestiarium-expbattle-sidebar dt { color: #a08060; }
.bestiarium-expbattle-sidebar dd { margin: 0; font-weight: bold; color: #f5d98e; }
.bestiarium-expbattle-miclist {
    display: flex; flex-direction: column; gap: 3px;
    font-size: 13px; margin-top: 4px;
}
.bestiarium-expbattle-mic { color: #b89060; }
.bestiarium-expbattle-mic.is-active { color: #f0c040; }
.bestiarium-expbattle-micbtn {
    margin-top: auto;
    background: #3a1f08;
    border: 1px solid #6a3a14;
    color: #f0d9a0;
    border-radius: 6px;
    padding: 7px 12px;
    cursor: pointer;
    font-family: "EB Garamond", Georgia, serif;
    font-size: 14px;
}
.bestiarium-expbattle-micbtn:hover { background: #4a2a0c; }
.bestiarium-expbattle-attackbtn {
    font-size: 17px;
    padding: 10px 0;
    width: 100%;
    letter-spacing: .05em;
}
.bestiarium-expbattle-status {
    font-size: 13px; color: #c8a060; min-height: 18px; margin: 0;
    text-align: center;
}
.bestiarium-expbattle-close {
    position: absolute; top: 10px; right: 14px;
    background: none; border: none;
    color: #a08060; font-size: 20px;
    cursor: pointer; line-height: 1; padding: 2px 6px;
}
.bestiarium-expbattle-close:hover { color: #f0d9a0; }
@media (max-width: 600px) {
    .bestiarium-expbattle-main { grid-template-columns: 1fr; }
    .bestiarium-expbattle-beast { border-right: none; border-bottom: 1px solid #4a2808; }
    .bestiarium-expbattle-modal { max-height: 95vh; }
}

/* =====================================================================
   v3.99.0 — Gambler NPC (Hazardérka Rózalka)
   ===================================================================== */
.bestiarium-gambler-overlay {
    position: fixed; inset: 0; z-index: 9600;
    background: rgba(0, 0, 0, 0.72);
    display: flex; align-items: center; justify-content: center;
    padding: 16px;
}
.bestiarium-gambler-box {
    background: linear-gradient(160deg, #1e1208 0%, #2c1a06 60%, #1e1208 100%);
    border: 2px solid #b8862c;
    border-radius: 10px;
    max-width: 420px; width: 100%;
    padding: 28px 28px 24px;
    text-align: center;
    font-family: "EB Garamond", Georgia, serif;
    box-shadow: 0 8px 40px rgba(0,0,0,.7), inset 0 1px 0 rgba(255,220,100,.15);
    position: relative;
}
.bestiarium-gambler-npc {
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    margin-bottom: 10px;
}
.bestiarium-gambler-npc-name {
    font-size: 13px; color: #c8a060; letter-spacing: .08em; text-transform: uppercase;
}
.bestiarium-gambler-icon {
    font-size: 2.8rem; line-height: 1; margin-bottom: 2px;
}
.bestiarium-gambler-title {
    font-size: 1.35rem; color: #f0d9a0; margin: 0 0 10px; font-weight: 600;
}
.bestiarium-gambler-desc {
    color: #c8a060; font-size: 1rem; line-height: 1.55; margin: 0 0 8px;
}
.bestiarium-gambler-wager {
    font-size: 1.2rem; color: #f0d9a0; margin: 10px 0 6px;
}
.bestiarium-gambler-hint {
    font-size: 0.88rem; color: #a08060; margin: 0 0 4px; font-style: italic;
}
.bestiarium-gambler-result {
    border-color: #555;
}
.bestiarium-gambler-win { border-color: #4caf50; box-shadow: 0 0 24px rgba(76,175,80,.3); }
.bestiarium-gambler-loss { border-color: #c62828; }
@media (max-width: 600px) {
    .bestiarium-gambler-box { padding: 20px 16px; }
}

/* ===== v4.14.0: Batch C (traces, Mecenáš flair, gift button) ===== */
/* Faded map traces (graves, footprints, level-up stars). Non-interactive. */
.bestiarium-map-trace { pointer-events: none; user-select: none; }
/* Mecenáš cosmetic tier — golden name + crown (identity only, no gameplay effect). */
.is-mecenas-name { color: #d4af37 !important; text-shadow: 0 0 4px rgba(212,175,55,.55); font-weight: 700; }
.bestiarium-mecenas-crown { color: #e6b422; }
/* Per-peer gift button in the location panel's pilgrim list. */
.bestiarium-pl-right { display: inline-flex; align-items: center; gap: 6px; }
.bestiarium-pl-gift {
    background: none; border: none; cursor: pointer; font-size: 15px; line-height: 1;
    padding: 2px 4px; border-radius: 5px; opacity: .8;
}
.bestiarium-pl-gift:hover { opacity: 1; background: rgba(212,175,55,.18); }
/* Shadow-duel button gets a faint ghostly tint to set it apart. */
.bestiarium-peer-shadow { filter: grayscale(.15); }

/* v4.19.0: tavern beer-drinking duel */
.bestiarium-beerduel-body { max-width: 560px; }
.bestiarium-beerduel-scene {
    display: block; width: 100%; max-height: 240px; object-fit: cover;
    border: 3px double var(--bestiarium-gold, #b8862c); border-radius: 6px; margin-bottom: 8px;
}
.bestiarium-beerduel-painting { font-style: italic; opacity: 0.85; }
.bestiarium-beerduel-heads { display: flex; gap: 10px; justify-content: space-between; margin: 8px 0; }
.bestiarium-beerduel-head {
    flex: 1; text-align: center; padding: 6px; border: 1px solid rgba(184,134,44,0.5);
    border-radius: 4px; background: rgba(255,247,217,0.7);
}
.bestiarium-beerduel-head.is-you { box-shadow: 0 0 0 2px rgba(155,30,30,0.45); }
.bestiarium-beerduel-head img {
    width: 56px; height: 56px; object-fit: cover; border-radius: 50%;
    border: 2px solid var(--bestiarium-gold, #b8862c); display: block; margin: 0 auto 4px;
}
.bestiarium-beerduel-head strong { display: block; font-size: 13px; }
.bestiarium-beerduel-mugs { display: block; font-size: 12px; letter-spacing: 1px; word-break: break-all; }
.bestiarium-beerduel-stage {
    position: relative; height: 180px; overflow: hidden; cursor: crosshair;
    border: 2px solid rgba(184,134,44,0.6); border-radius: 6px;
    background: radial-gradient(ellipse at center, rgba(255,236,180,0.55), rgba(120,80,30,0.35));
    margin: 8px 0;
}
.bestiarium-beerduel-mug {
    position: absolute; width: 70px; height: 70px; font-size: 44px; line-height: 70px;
    text-align: center; user-select: none; pointer-events: none;
    filter: drop-shadow(0 3px 4px rgba(0,0,0,0.35));
}
.bestiarium-beerduel-flash {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    font-size: 52px; color: #2c7a2c;
}
.bestiarium-beerduel-flash.is-miss { color: #9b1e1e; }
.bestiarium-beerduel-actions { display: flex; gap: 8px; align-items: center; }
.bestiarium-beerduel-note { font-size: 12px; opacity: 0.9; }
.bestiarium-beerduel-result { font-size: 16px; font-weight: 700; margin: 8px 0; }
.bestiarium-beerduel-banner {
    display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap;
    padding: 3px 8px; margin-left: 6px; border-radius: 4px;
    background: rgba(155,30,30,0.12); border: 1px solid rgba(155,30,30,0.4);
}
.bestiarium-beerduel-entry {
    border-top: 1px dashed rgba(184,134,44,0.5); padding-top: 6px; margin-top: 6px;
}
.bestiarium-beerduel-entry img {
    width: 100%; max-height: 200px; object-fit: cover; border-radius: 4px;
    border: 2px solid rgba(184,134,44,0.6);
}
@media (max-width: 600px) {
    .bestiarium-beerduel-heads { flex-direction: row; }
    .bestiarium-beerduel-stage { height: 150px; }
}

/* v4.20.0: beer-duel turns + hard-liquor shot */
.bestiarium-beerduel-turn {
    text-align: center; font-weight: 700; padding: 6px 8px; margin: 6px 0;
    border-radius: 4px; background: rgba(120,80,30,0.14); border: 1px solid rgba(184,134,44,0.5);
}
.bestiarium-beerduel-turn.is-you {
    background: rgba(44,122,44,0.16); border-color: rgba(44,122,44,0.5); color: #2c7a2c;
    animation: bestiarium-beerduel-yourturn 1.2s ease-in-out infinite alternate;
}
@keyframes bestiarium-beerduel-yourturn {
    from { box-shadow: 0 0 0 0 rgba(44,122,44,0.0); }
    to   { box-shadow: 0 0 0 3px rgba(44,122,44,0.35); }
}
.bestiarium-beerduel-wait { font-style: italic; opacity: 0.85; align-self: center; }
.bestiarium-beerduel-warn {
    position: absolute; top: 4px; left: 0; right: 0; text-align: center;
    font-weight: 800; font-size: 13px; color: #fff; pointer-events: none; z-index: 3;
    text-shadow: 0 1px 3px #000, 0 0 6px #9b1e1e; letter-spacing: 0.3px;
}
.bestiarium-beerduel-mug.is-shot {
    filter: drop-shadow(0 0 6px #d33) drop-shadow(0 3px 4px rgba(0,0,0,0.4));
}
.bestiarium-beerduel-stage.is-shot,
.bestiarium-beerduel-mug.is-shot { }
@media (prefers-reduced-motion: reduce) {
    .bestiarium-beerduel-turn.is-you { animation: none; }
}

/* v4.21.0: Hall of Fame sub-headings (all-time vs this month) + month-XP badge */
.bestiarium-fame-subhead {
    margin: 12px 0 4px; font-size: 13px; letter-spacing: 0.4px;
    text-transform: uppercase; opacity: 0.85;
    border-bottom: 1px solid rgba(184, 134, 44, 0.4); padding-bottom: 3px;
}
.bestiarium-fame-subhead:first-of-type { margin-top: 2px; }
.bestiarium-fame-monthxp {
    color: var(--bestiarium-red, #9b1e1e); font-weight: 700;
}

/* v4.22.0: beer chronicle — scrollable history + per-player filter */
.bestiarium-beerduel-chron-filter { margin: 6px 0 8px; font-size: 13px; }
.bestiarium-beerduel-chron-filter select {
    margin-left: 4px; padding: 3px 6px; max-width: 60%;
    border: 1px solid rgba(184, 134, 44, 0.6); border-radius: 3px;
    background: rgba(255, 247, 217, 0.85); font: inherit;
}
.bestiarium-beerduel-chron-list {
    max-height: 48vh; overflow-y: auto; -webkit-overflow-scrolling: touch;
    padding-right: 4px; margin-bottom: 8px;
    border-top: 1px solid rgba(184, 134, 44, 0.4);
    border-bottom: 1px solid rgba(184, 134, 44, 0.4);
}
.bestiarium-beerduel-chron-list .bestiarium-beerduel-entry:first-child { border-top: none; margin-top: 0; padding-top: 4px; }
@media (max-width: 600px) {
    .bestiarium-beerduel-chron-list { max-height: 56vh; }
    .bestiarium-beerduel-chron-filter select { max-width: 100%; }
}

/* v4.135.0: the coach owns progression and visibly performs each guided action. */
.bestiarium-level-one-coach {
    position: fixed;
    inset: 0;
    z-index: 2147483200;
    background: rgba(25, 16, 9, 0.18);
    pointer-events: auto;
    overscroll-behavior: contain;
}
.bestiarium-level-one-card {
    position: absolute;
    left: 50%;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    width: min(620px, calc(100vw - 24px));
    max-height: min(430px, 46vh);
    overflow: hidden;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    padding: 18px 20px;
    border: 2px solid #9b6a20;
    border-radius: 6px;
    background: #fff2c9;
    color: #352313;
    box-shadow: 0 16px 48px rgba(20, 12, 6, 0.48), inset 0 0 0 3px rgba(255,255,255,0.48);
    font-family: "EB Garamond", Garamond, serif;
    text-align: center;
    pointer-events: auto;
    touch-action: manipulation;
}
.bestiarium-level-one-copy {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
}
.bestiarium-level-one-card h2 {
    margin: 7px 0 8px;
    font-family: Cinzel, serif;
    font-size: 23px;
    line-height: 1.2;
    letter-spacing: 0;
    color: #7b1d1d;
}
.bestiarium-level-one-card p {
    margin: 0 auto 13px;
    max-width: 550px;
    font-size: 17px;
    line-height: 1.4;
}
.bestiarium-level-one-kicker {
    color: #76501f;
    font-family: Cinzel, serif;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0;
}
.bestiarium-level-one-progress {
    width: min(320px, 82%);
    height: 5px;
    margin: 7px auto 0;
    overflow: hidden;
    border-radius: 3px;
    background: rgba(118, 80, 31, 0.2);
}
.bestiarium-level-one-progress span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: #a71919;
    transition: width 0.25s ease;
}
.bestiarium-level-one-safety {
    width: fit-content;
    max-width: 100%;
    margin: 8px auto 0;
    padding: 3px 8px;
    border: 1px solid #4c7638;
    border-radius: 3px;
    background: #edf4df;
    color: #315523;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.25;
}
.bestiarium-level-one-card .bestiarium-btn { min-height: 42px; }
.bestiarium-level-one-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;
    flex: 0 0 auto;
    gap: 9px;
    padding-top: 1px;
}
.bestiarium-level-one-primary-action {
    display: flex;
    align-items: stretch;
}
.bestiarium-level-one-primary-action .bestiarium-btn {
    min-width: 190px;
    box-shadow: 0 4px 12px rgba(123, 23, 23, 0.28);
}
.is-tutorial-target {
    outline: 4px solid #e6a629 !important;
    outline-offset: 5px;
    filter: drop-shadow(0 0 9px rgba(255, 204, 65, 0.95));
    animation: bestiariumTutorialGlow 1s ease-in-out infinite alternate;
}
.bestiarium-map-loc.is-tutorial-target { outline: none !important; }
[data-map-wrap].is-tutorial-target {
    filter: none;
    animation: none;
    box-shadow: inset 0 0 0 5px rgba(230,166,41,0.95), 0 0 18px rgba(255,204,65,0.85);
}
.bestiarium-beast-arena-overlay.is-tutorial-practice .bestiarium-beast-portrait { display: none; }
@keyframes bestiariumTutorialGlow {
    from { filter: drop-shadow(0 0 5px rgba(255, 204, 65, 0.72)); }
    to { filter: drop-shadow(0 0 13px rgba(255, 224, 116, 1)); }
}
.bestiarium-tutorial-cursor {
    position: fixed;
    z-index: 2147483400;
    width: 50px;
    height: 58px;
    display: block !important;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    will-change: left, top, opacity;
    transition: left 0.65s ease, top 0.65s ease, opacity 0.12s ease;
}
.bestiarium-tutorial-cursor.is-visible {
    visibility: visible !important;
    opacity: 1 !important;
}
.bestiarium-tutorial-cursor.is-clicking {
    transform: translate3d(2px, 3px, 0) scale(0.84);
    filter: brightness(1.18);
}
.bestiarium-tutorial-cursor::before {
    content: "";
    position: absolute;
    left: -9px;
    top: -9px;
    width: 18px;
    height: 18px;
    border: 3px solid rgba(255, 218, 77, 0.95);
    border-radius: 50%;
    animation: bestiariumTutorialCursorPulse 1.15s ease-out infinite;
}
.bestiarium-tutorial-pointer {
    position: absolute;
    inset: 0;
    display: block;
    background: #a71919;
    clip-path: polygon(0 0, 0 82%, 28% 61%, 48% 100%, 73% 87%, 54% 52%, 100% 50%);
    filter: drop-shadow(0 0 2px #ffe07a) drop-shadow(0 4px 5px rgba(0,0,0,0.55));
    animation: bestiariumTutorialPointerFloat 1.1s ease-in-out infinite alternate;
}
@keyframes bestiariumTutorialCursorPulse {
    0% { transform: scale(0.55); opacity: 1; }
    100% { transform: scale(1.65); opacity: 0; }
}
@keyframes bestiariumTutorialPointerFloat {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(3px, 3px, 0); }
}
.bestiarium-beast-arena-overlay.is-tutorial-autoplay {
    z-index: 2147483500;
}
.bestiarium-tutorial-auto-stage {
    position: relative;
    min-height: 230px;
    overflow: hidden;
    border: 2px solid #9b6a20;
    border-radius: 6px;
    background:
        radial-gradient(circle at 50% 44%, rgba(255, 225, 124, 0.2), transparent 36%),
        linear-gradient(180deg, #20150e 0%, #382315 100%);
    box-shadow: inset 0 0 28px rgba(0, 0, 0, 0.58);
}
.bestiarium-tutorial-rune {
    display: block;
    width: min(260px, 78%);
    height: 210px;
    margin: 8px auto;
    overflow: visible;
    filter: drop-shadow(0 0 8px rgba(255, 220, 96, 0.85));
}
.bestiarium-tutorial-rune-path {
    fill: none;
    stroke: #fff0a4;
    stroke-width: 5;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: stroke-dashoffset 1.5s ease-in-out;
    animation: bestiariumTutorialRuneGlow 0.8s ease-in-out infinite alternate;
}
.bestiarium-tutorial-moving-target {
    position: absolute !important;
    width: 74px !important;
    height: 74px !important;
    min-width: 74px;
    min-height: 74px;
    margin: 0 !important;
    transform: none !important;
}
@keyframes bestiariumTutorialRuneGlow {
    from { stroke: #ffd659; filter: drop-shadow(0 0 3px #e2a722); }
    to { stroke: #fff8c7; filter: drop-shadow(0 0 10px #fff1a0); }
}
.bestiarium-market-card.is-tutorial-free {
    border-color: #27915b;
    box-shadow: inset 0 0 0 2px rgba(39,145,91,0.18);
}
.bestiarium-tutorial-free-badge {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin: 2px 0 4px;
    padding: 3px 7px;
    border: 1px solid #267c50;
    border-radius: 4px;
    background: #e5f4df;
    color: #185b3a;
    font-size: 12px;
    font-weight: 700;
}
@media (max-width: 600px) {
    .bestiarium-level-one-card {
        bottom: calc(5px + env(safe-area-inset-bottom, 0px));
        width: calc(100vw - 10px);
        max-height: min(430px, 48vh);
        max-height: min(430px, 48dvh);
        padding: 13px 11px 11px;
    }
    .bestiarium-level-one-card h2 { margin: 5px 0 6px; font-size: 19px; }
    .bestiarium-level-one-card p { margin-bottom: 10px; font-size: 15px; line-height: 1.35; }
    .bestiarium-level-one-kicker { font-size: 10px; }
    .bestiarium-level-one-progress { margin-top: 5px; }
    .bestiarium-level-one-safety { margin-top: 6px; padding: 2px 6px; font-size: 11px; }
    .bestiarium-level-one-actions {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        width: 100%;
        gap: 6px;
    }
    .bestiarium-level-one-primary-action,
    .bestiarium-level-one-actions .bestiarium-btn { width: 100%; }
    .bestiarium-level-one-primary-action .bestiarium-btn { min-width: 0; }
    .bestiarium-level-one-card .bestiarium-btn { min-height: 44px; padding: 8px 10px; }
    .bestiarium-tutorial-cursor { width: 38px; height: 46px; }
    .bestiarium-tutorial-auto-stage { min-height: 190px; }
    .bestiarium-tutorial-rune { width: min(220px, 82%); height: 170px; }
    .bestiarium-tutorial-moving-target {
        width: 62px !important;
        height: 62px !important;
        min-width: 62px;
        min-height: 62px;
    }
}
@media (max-height: 600px) and (max-width: 900px) {
    .bestiarium-level-one-card {
        bottom: calc(3px + env(safe-area-inset-bottom, 0px));
        max-height: min(340px, 56dvh);
        padding-top: 9px;
        padding-bottom: 8px;
    }
    .bestiarium-level-one-safety { display: none; }
    .bestiarium-level-one-card h2 { font-size: 17px; }
    .bestiarium-level-one-card p { font-size: 14px; }
}
@media (prefers-reduced-motion: reduce) {
    .is-tutorial-target,
    .bestiarium-tutorial-cursor::before,
    .bestiarium-tutorial-pointer,
    .bestiarium-tutorial-rune-path { animation: none; }
    .bestiarium-tutorial-cursor { transition-duration: 0.12s; }
}

/* v4.36.0: phone-only usability pass. Desktop rules above are unchanged. */
@media (max-width: 600px) {
    .bestiarium-shell {
        width: calc(100vw - 16px);
        max-width: calc(100vw - 16px);
        margin-left: calc(50% - 50vw + 8px);
        margin-right: 0;
        padding: 8px;
    }

    /* One swipeable row keeps the important state visible without seven rows. */
    .bestiarium-statusbar {
        display: flex;
        flex-wrap: nowrap;
        gap: 6px;
        padding: 6px;
        overflow-x: auto;
        overflow-y: hidden;
        overscroll-behavior-x: contain;
        scroll-snap-type: x proximity;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .bestiarium-statusbar::-webkit-scrollbar { display: none; }
    .bestiarium-stat {
        flex: 0 0 78px;
        min-width: 78px;
        min-height: 52px;
        padding: 5px 3px;
        scroll-snap-align: start;
        order: 20;
        touch-action: manipulation;
    }
    .bestiarium-stat[data-stat="coins"] { order: 1; }
    .bestiarium-stat[data-stat="life"] { order: 2; }
    .bestiarium-stat[data-stat="level"] { order: 3; }
    .bestiarium-stat[data-stat="xp"] { order: 4; }
    .bestiarium-stat[data-stat="quests"] { order: 5; }
    .bestiarium-stat[data-stat="challenges"] { order: 6; }

    /* Raid, quests and narrator live in normal flow, never above game icons. */
    .bestiarium-mobile-tools {
        position: relative;
        z-index: 2;
        display: flex;
        align-items: stretch;
        flex-wrap: wrap;
        gap: 6px;
        margin: 8px 0 0;
    }
    .bestiarium-mobile-tools #bst-raid-pill,
    .bestiarium-mobile-tools .bst-task-nudge,
    .bestiarium-mobile-tools .bsq-launch,
    .bestiarium-mobile-tools #bestiarium-demo-map-banner {
        position: static !important;
        inset: auto !important;
        transform: none !important;
        max-width: 100% !important;
        margin: 0 !important;
    }
    .bestiarium-mobile-tools #bst-raid-pill,
    .bestiarium-mobile-tools .bst-task-nudge,
    .bestiarium-mobile-tools #bestiarium-demo-map-banner { flex: 1 1 100%; }
    .bestiarium-mobile-tools #bst-raid-pill {
        min-height: 44px;
        justify-content: center;
        border-radius: 6px;
        width: 100%;
    }
    .bestiarium-mobile-tools .bst-task-nudge,
    .bestiarium-mobile-tools #bestiarium-demo-map-banner {
        width: 100%;
        padding: 8px !important;
        border-radius: 6px;
        flex-wrap: wrap;
        justify-content: center;
    }
    .bestiarium-mobile-tools .bsq-launch {
        flex: 1 1 145px;
        min-height: 44px;
        border-radius: 6px;
    }
    .bestiarium-mobile-tools .bestiarium-narrator-fab {
        position: relative !important;
        inset: auto !important;
        right: auto !important;
        bottom: auto !important;
        transform: none !important;
        flex: 1 1 145px;
        min-height: 44px;
        justify-content: center;
        margin: 0 !important;
        padding: 7px 12px;
        border-radius: 6px;
    }
    .bestiarium-mobile-tools .bestiarium-narrator-fab-label { display: inline !important; }

    /* The old 3:2 minimum height forced a 510 px map into a narrow column. */
    .bestiarium-mapview {
        min-width: 0;
        gap: 10px;
        padding: 10px;
    }
    .bestiarium-mapview > * { min-width: 0; }
    .bestiarium-map-wrap {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        min-height: 0 !important;
        height: clamp(240px, 72vw, 320px);
        aspect-ratio: auto;
    }
    .bestiarium-map-svg {
        width: 100%;
        height: 100%;
        min-height: 0;
    }
    .bestiarium-map-controls {
        display: grid;
        grid-template-columns: repeat(2, 44px);
        width: 94px;
        gap: 6px;
    }
    .bestiarium-map-level-chip {
        right: 112px;
        max-width: none;
        min-height: 44px;
    }
    .bestiarium-map-live-indicator { left: 8px; bottom: 8px; }
    .bestiarium-map-fs { right: 8px; bottom: 8px; }
    .bestiarium-mapview.is-maximized .bestiarium-map-wrap {
        height: calc(100vh - 46px);
        height: calc(100dvh - 46px);
    }

    /* Large, safe-area-aware modals with one internal scroll surface. */
    .bestiarium-peer-modal,
    .bestiarium-meditation-modal,
    .bestiarium-loc-modal,
    .bestiarium-purchase-modal,
    .bestiarium-shop-modal,
    .bestiarium-beast-arena-overlay,
    .bestiarium-travel-modal,
    .bestiarium-book-overlay,
    .bestiarium-archery-overlay,
    .bestiarium-dice-overlay,
    .bestiarium-memory-overlay,
    .bestiarium-forum-modal,
    .bestiarium-event-modal,
    .bestiarium-levelup-overlay,
    .bestiarium-riddle-overlay,
    .bestiarium-spell-combat-modal,
    .bestiarium-spell-school-modal,
    .bestiarium-wager-modal,
    .bestiarium-tavernroom-modal,
    .bestiarium-update-modal,
    .bestiarium-share-modal,
    .bestiarium-expbattle-overlay,
    .bestiarium-gambler-overlay,
    .bst-res-ov,
    .bst-sh-ov,
    .bsq-overlay {
        padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)) !important;
        align-items: flex-start !important;
        overflow-y: auto !important;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
    .bestiarium-peer-body,
    .bestiarium-meditation-body,
    .bestiarium-loc-modal-body,
    .bestiarium-purchase-body,
    .bestiarium-market-body,
    .bestiarium-shop-body,
    .bestiarium-item-popup-body,
    .bestiarium-spell-practice-body,
    .bestiarium-travel-body,
    .bestiarium-book-frame,
    .bestiarium-archery-box,
    .bestiarium-dice-box,
    .bestiarium-memory-box,
    .bestiarium-forum-modal-body,
    .bestiarium-duel-box,
    .bestiarium-feedback-box,
    .bestiarium-event-modal .bestiarium-modal-body,
    .bestiarium-levelup-card,
    .bestiarium-riddle-box,
    .bestiarium-spell-combat-box,
    .bestiarium-wager-body,
    .bestiarium-tavernroom-body,
    .bestiarium-update-box,
    .bestiarium-share-box,
    .bestiarium-expbattle-modal,
    .bestiarium-gambler-box,
    .bst-res-box,
    .bst-sh-box,
    .bsq-box {
        width: 100% !important;
        max-width: 100% !important;
        max-height: calc(100vh - 16px) !important;
        max-height: calc(100dvh - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom)) !important;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }

    .bestiarium-shell input,
    .bestiarium-shell select,
    .bestiarium-shell textarea,
    .bestiarium-narrator input,
    .bestiarium-feedback-modal textarea,
    .bst-res-box input,
    .bst-res-box select,
    .bst-sh-box input,
    .bst-sh-box select { font-size: 16px !important; max-width: 100%; }
    .bestiarium-btn,
    .bsq-btn,
    .bst-res-btn,
    .bst-sh-btn { min-height: 44px; touch-action: manipulation; }
    .bestiarium-pl-gift { width: 44px; height: 44px; padding: 0; }
    .bestiarium-mclose {
        top: max(8px, env(safe-area-inset-top));
        right: max(8px, env(safe-area-inset-right));
        width: 44px;
        height: 44px;
    }
    .bsq-toast,
    .bestiarium-demo-toast { pointer-events: none; }

    /* Disambiguation sheet for markers whose enlarged touch areas overlap. */
    .bestiarium-mobile-map-choice-overlay {
        position: fixed;
        inset: 0;
        z-index: 2147483100;
        display: flex;
        align-items: flex-end;
        justify-content: center;
        padding: 8px max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
        background: rgba(12, 7, 3, 0.62);
    }
    .bestiarium-mobile-map-choice-sheet {
        width: 100%;
        max-height: min(70vh, 70dvh);
        overflow-y: auto;
        border: 2px solid var(--bestiarium-gold, #b8862c);
        border-radius: 8px 8px 4px 4px;
        background: #f5e7bf;
        color: #352313;
        box-shadow: 0 -10px 34px rgba(0, 0, 0, 0.46);
    }
    .bestiarium-mobile-map-choice-head {
        position: sticky;
        top: 0;
        z-index: 1;
        display: flex;
        align-items: center;
        justify-content: space-between;
        min-height: 48px;
        padding: 6px 8px 6px 14px;
        background: #3a2717;
        color: #fff1cd;
    }
    .bestiarium-mobile-map-choice-head h3 { margin: 0; font: 700 17px Cinzel, serif; letter-spacing: 0; }
    .bestiarium-mobile-map-choice-close {
        width: 44px;
        height: 44px;
        border: 0;
        background: transparent;
        color: inherit;
        font-size: 30px;
    }
    .bestiarium-mobile-map-choice-list { display: grid; gap: 1px; padding: 6px; }
    .bestiarium-mobile-map-choice-option {
        display: grid;
        grid-template-columns: 38px minmax(0, 1fr);
        align-items: center;
        gap: 8px;
        width: 100%;
        min-height: 52px;
        padding: 7px 10px;
        border: 1px solid rgba(120, 79, 28, 0.35);
        border-radius: 5px;
        background: #fff8e4;
        color: #352313;
        text-align: left;
        font: 600 16px 'EB Garamond', Garamond, serif;
    }
    .bestiarium-mobile-map-choice-icon { font-size: 23px; text-align: center; }
}

@media (max-width: 600px) and (hover: none) {
    .bestiarium-map-tooltip { display: none !important; }
}
/* v4.36.1: native browser fullscreen for the map, with the existing CSS
   overlay retained as a fallback. The class also neutralizes WordPress admin
   bar spacing while the map owns the viewport. */
html.bestiarium-map-fullscreen-root {
    width: 100%;
    height: 100%;
    margin-top: 0 !important;
    overflow: hidden !important;
    background: #140c05;
}
html.bestiarium-map-fullscreen-root body {
    width: 100%;
    height: 100%;
    margin: 0 !important;
    overflow: hidden !important;
    overscroll-behavior: none;
}
html.bestiarium-map-fullscreen-root #wpadminbar { display: none !important; }
:fullscreen .bestiarium-mapview.is-maximized {
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
}
:-webkit-full-screen .bestiarium-mapview.is-maximized {
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
}
.bestiarium-mapview[data-native-fullscreen="1"] [data-fstop-native] { display: none !important; }

@media (max-width: 600px) {
    .bestiarium-mapview.is-maximized .bestiarium-map-fstop {
        height: calc(46px + env(safe-area-inset-top));
        padding: env(safe-area-inset-top) max(10px, env(safe-area-inset-right)) 0 max(10px, env(safe-area-inset-left));
    }
    .bestiarium-mapview.is-maximized .bestiarium-map-wrap,
    .bestiarium-mapview.is-maximized .bestiarium-map-panel {
        top: calc(46px + env(safe-area-inset-top));
        height: calc(100vh - 46px - env(safe-area-inset-top));
        height: calc(100dvh - 46px - env(safe-area-inset-top));
    }
    .bestiarium-mapview.is-maximized .bestiarium-map-live-indicator {
        bottom: max(8px, env(safe-area-inset-bottom));
    }
}
/* v4.40.0: party-PvP history entry and Hall-of-Fame record. */
.bestiarium-profile-pvp-history .bestiarium-btn { width: 100%; }
.bestiarium-fame-battle-record { display: grid; flex: 0 0 auto; min-width: 92px; color: var(--bestiarium-ink-soft); font-size: 12px; text-align: right; }
.bestiarium-fame-battle-record small { font-size: 10px; }
.bestiarium-fame-battle-points { color: #7b241f; font-weight: 700; }
@media (max-width:560px) {
    .bestiarium-fame-row.is-battle { flex-wrap: wrap; }
    .bestiarium-fame-row.is-battle .bestiarium-fame-name { min-width: calc(100% - 96px); }
    .bestiarium-fame-battle-record { margin-left: 76px; text-align: left; }
}
/* v4.43.0: guild-war entry points. */
.bestiarium-guild-wars,.bestiarium-guild-war-declare{margin-top:10px;padding:9px;border:1px solid rgba(156,74,58,.62);border-radius:7px;background:rgba(82,24,20,.2)}
.bestiarium-guild-wars h4,.bestiarium-guild-war-declare h4{margin-top:0;color:#f0c7a4}
.bestiarium-guild-war-declare p{margin:3px 0 9px;font-size:.82rem;line-height:1.35;opacity:.9}

/* v4.55.0: one-time supporter tiers. Cosmetic only. */
.is-supporter-milodarca-name {
    color: #765b2a !important;
    text-shadow: 0 1px 0 rgba(255,255,255,.45);
    font-weight: 650;
}
.is-supporter-mecenas-name,
.is-supporter-crown-name {
    color: #b8860b !important;
    text-shadow: 0 0 5px rgba(212,175,55,.55);
    font-weight: 700;
}
.is-supporter-crown-name { color: #9a6700 !important; text-shadow: 0 0 7px rgba(255,205,72,.75); }
/* v4.55.1: the medieval display font does not contain every chess symbol. */
.bestiarium-supporter-name-icon,
.bestiarium-supporter-map-icon,
.bestiarium-supporter-glyph,
.bestiarium-supporter-honorary-title,
.bestiarium-supporter-current-icon,
.bestiarium-supporter-card-icon,
.bestiarium-supporter-chronicle li > span,
.bestiarium-map-traveller .bestiarium-map-traveller-supporter,
.bestiarium-map-marker .bestiarium-map-othertravel-supporter {
    font-family: "Segoe UI Symbol", "Noto Sans Symbols 2", "DejaVu Sans", sans-serif;
    font-style: normal;
}
.bestiarium-supporter-name-icon,
.bestiarium-supporter-map-icon { display: inline-block; line-height: 1; color: #b8860b; }
.bestiarium-supporter-map-icon.is-milodarca { color: #8b6d2f; font-size: .88em; }
.bestiarium-supporter-map-icon.is-korunny_patron { color: #9a6700; transform: scale(1.08); }
.bestiarium-badge.is-supporter {
    border-color: rgba(184,134,44,.62);
    background: rgba(255,244,200,.78);
    color: #6a4300;
}
.bestiarium-profile-head-text h2,
.bestiarium-peer-head-text h2 {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}
.bestiarium-profile-player-name,
.bestiarium-peer-player-name,
.bestiarium-pl-display-name { min-width: 0; }
.bestiarium-supporter-honorary-title {
    display: inline-flex;
    max-width: 100%;
    flex: 0 1 auto;
    align-items: center;
    gap: 4px;
    padding: 3px 7px;
    border: 1px solid rgba(139,109,47,.62);
    border-radius: 3px;
    background: rgba(255,247,217,.82);
    color: #74551f;
    font-family: Cinzel, Georgia, serif;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.25;
    text-shadow: none;
    overflow-wrap: anywhere;
}
.bestiarium-supporter-honorary-title.is-mecenas {
    border-color: rgba(184,134,44,.76);
    background: rgba(255,239,174,.9);
    color: #7c5100;
}
.bestiarium-supporter-honorary-title.is-korunny_patron {
    border-color: #b8860b;
    background: linear-gradient(180deg, #fff1a8, #e9bd50);
    color: #563400;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.55), 0 1px 3px rgba(90,55,0,.24);
}
.bestiarium-supporter-honorary-title.is-map-title {
    margin-left: 6px;
    padding: 1px 5px;
    font-size: 10px;
    vertical-align: 1px;
}
.bestiarium-supporter-achievement {
    border-color: #b8862c;
    background: linear-gradient(135deg, #fff8df, #f3dfaa);
    box-shadow: inset 4px 0 0 #b8862c;
}
.bestiarium-supporter-achievement.is-korunny_patron {
    border-color: #976300;
    background: linear-gradient(135deg, #fff5c8, #e9c15e);
    box-shadow: inset 4px 0 0 #976300, 0 3px 10px rgba(79,45,13,.12);
}
.bestiarium-supporter-achievement > .bestiarium-supporter-glyph {
    color: #f4d675;
}
.bestiarium-achievement-choice.is-honorary {
    border-color: #b8862c;
    background: rgba(255,249,220,.68);
    color: #704d1d;
}
.bestiarium-profile.is-supporter-crown-profile {
    box-shadow: inset 0 0 0 3px #c89624, inset 0 0 0 6px rgba(255,235,157,.68);
}
.bestiarium-peer-body.is-supporter-crown-profile {
    border-color: #c89624;
    box-shadow: 0 8px 40px rgba(0,0,0,.72), inset 0 0 0 3px rgba(230,180,52,.72);
}
.bestiarium-profile-support-btn { border-color: #9a6700; color: #6d4500; }
.bestiarium-supporter-section {
    padding: 16px 0 4px;
    border-top: 2px solid rgba(184,134,44,.48);
    border-bottom: 1px solid rgba(184,134,44,.32);
}
.bestiarium-supporter-principle {
    max-width: 820px;
    margin: 0 0 14px;
    line-height: 1.55;
    color: var(--bestiarium-ink-soft, #5f472d);
}
.bestiarium-supporter-current {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin: 0 0 14px;
    padding: 7px 10px;
    border-left: 3px solid #b8860b;
    background: rgba(255,241,190,.58);
}
.bestiarium-supporter-current-icon { font-size: 1.15em; }
.bestiarium-supporter-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}
.bestiarium-supporter-card {
    display: flex;
    min-width: 0;
    min-height: 205px;
    flex-direction: column;
    align-items: flex-start;
    padding: 14px;
    border: 1px solid rgba(120,82,25,.34);
    border-radius: 6px;
    background: rgba(255,250,226,.62);
}
.bestiarium-supporter-card.is-mecenas { border-color: rgba(184,134,44,.62); }
.bestiarium-supporter-card.is-korunny_patron {
    border-color: #b8860b;
    box-shadow: inset 0 0 0 2px rgba(230,180,52,.2);
}
.bestiarium-supporter-card-icon { min-height: 30px; font-size: 1.65rem; line-height: 1; color: #9a6700; }
.bestiarium-supporter-card h4 { margin: 7px 0 5px; font-size: 1.02rem; }
.bestiarium-supporter-card p { flex: 1; margin: 0 0 12px; line-height: 1.4; }
.bestiarium-supporter-buy {
    width: 100%;
    white-space: normal;
    text-align: center;
}
.bestiarium-supporter-owned,
.bestiarium-supporter-unavailable {
    display: block;
    width: 100%;
    min-height: 38px;
    padding: 9px 7px;
    text-align: center;
}
.bestiarium-supporter-owned { color: #2f6b2c; font-weight: 700; }
.bestiarium-supporter-unavailable { color: #756b58; font-style: italic; }
.bestiarium-supporter-thanks {
    padding: 14px;
    border: 2px solid #c89624;
    border-radius: 6px;
    background: rgba(255,242,188,.62);
    line-height: 1.5;
}
.bestiarium-supporter-chronicle {
    margin-top: 16px;
    padding-top: 12px;
    border-top: 1px solid rgba(184,134,44,.38);
}
.bestiarium-supporter-chronicle h4 { margin: 0 0 8px; color: #7c5200; }
.bestiarium-supporter-chronicle ul {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}
.bestiarium-supporter-chronicle li { color: #6a4300; font-weight: 650; }
.bestiarium-map-traveller-supporter,
.bestiarium-map-othertravel-supporter {
    fill: #f6ca4f;
    stroke: #3a2105;
    stroke-width: .28px;
    paint-order: stroke fill;
    font-size: 3.1px;
    font-weight: 700;
}
.bestiarium-map-othertravel-supporter { font-size: 2.35px; stroke-width: .2px; }
.bestiarium-map-traveller.is-supporter-milodarca .bestiarium-map-traveller-ring,
.bestiarium-map-othertravel.is-supporter-milodarca .bestiarium-map-othertravel-ring { stroke: #8b6d2f; }
.bestiarium-map-traveller.is-supporter-mecenas .bestiarium-map-traveller-ring,
.bestiarium-map-othertravel.is-supporter-mecenas .bestiarium-map-othertravel-ring { stroke: #d4af37; stroke-width: .65px; }
.bestiarium-map-traveller.is-supporter-korunny_patron .bestiarium-map-traveller-ring,
.bestiarium-map-othertravel.is-supporter-korunny_patron .bestiarium-map-othertravel-ring {
    stroke: #f2c94c;
    stroke-width: .85px;
}

@media (max-width: 760px) {
    .bestiarium-supporter-grid { grid-template-columns: 1fr; }
    .bestiarium-supporter-card { min-height: 0; }
    .bestiarium-profile.is-supporter-crown-profile {
        box-shadow: inset 0 0 0 2px #c89624, inset 0 0 0 4px rgba(255,235,157,.68);
    }
}

/* v4.56.0: dynamic paper-doll — only unlocked slots render; the centre
   column carries the avatar over a faint character silhouette. */
.bestiarium-doll.is-dynamic {
    grid-template-areas: none;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr) minmax(0, 1fr);
    align-items: start;
}
.bestiarium-doll-col { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.bestiarium-doll-col.is-center { align-items: center; gap: 12px; }
.bestiarium-doll-col.is-center .bestiarium-equip-slot { width: 100%; }
.bestiarium-doll-figure {
    width: 100%;
    min-height: 200px;
    display: flex; align-items: flex-start; justify-content: center;
    padding-top: 16px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 250'%3E%3Cg fill='%236a3a0c' fill-opacity='0.12'%3E%3Ccircle cx='60' cy='30' r='20'/%3E%3Cpath d='M60 54 C40 54 30 66 28 84 L20 130 L32 132 L40 96 L40 170 L34 240 L50 240 L56 178 L64 178 L70 240 L86 240 L80 170 L80 96 L88 132 L100 130 L92 84 C90 66 80 54 60 54 Z'/%3E%3C/g%3E%3C/svg%3E") no-repeat center top / auto 100%;
}
.bestiarium-doll-unlock-note {
    max-width: 720px; margin: 8px auto 0; text-align: center;
    font-size: 12px; font-style: italic; color: var(--bestiarium-ink-soft);
}
@media (max-width: 600px) {
    .bestiarium-doll-col { gap: 5px; }
    .bestiarium-doll-col.is-center { gap: 6px; }
    .bestiarium-doll-figure { min-height: 120px; padding-top: 8px; }
    .bestiarium-doll-unlock-note { font-size: 11px; }
}

/* v4.57.0: one-screen trade window (Mount & Blade style) ------------------ */
body.bst-trade-open { overflow: hidden !important; }
.bst-trade-overlay {
    position: fixed; inset: 0;
    /* Below the equip-choice picker (100120), above tavern/wager windows. */
    z-index: 100100;
    background: rgba(20, 10, 2, 0.72);
    backdrop-filter: blur(4px);
    display: grid; place-items: center;
    padding: max(10px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));
}
.bst-trade-shell {
    width: min(1380px, 97vw);
    height: min(92vh, 940px);
    height: min(92dvh, 940px);
    display: flex; flex-direction: column;
    background: linear-gradient(180deg, #fdf3d7, #f3e2b3);
    color: var(--bestiarium-ink);
    font-family: 'EB Garamond', Garamond, 'Times New Roman', serif;
    border: 3px double var(--bestiarium-gold);
    border-radius: 10px;
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.55);
    overflow: hidden;
}
.bst-trade-head {
    display: flex; align-items: center; gap: 14px;
    padding: 10px 14px;
    background: linear-gradient(180deg, #3a2412, #2a1a0c);
    color: #f6e7bd;
    font-family: 'Cinzel', serif;
}
.bst-trade-head strong { font-size: 17px; letter-spacing: 1px; }
.bst-trade-coins { font-weight: bold; color: #ffd76a; }
.bst-trade-bagmeta { color: #d9c391; font-size: 13px; }
.bst-trade-close {
    margin-left: auto;
    width: 38px; height: 38px;
    border: 1px solid rgba(246, 200, 79, 0.5); border-radius: 6px;
    background: rgba(0, 0, 0, 0.25); color: #f6e7bd;
    font-size: 17px; cursor: pointer;
}
.bst-trade-close:hover { background: rgba(155, 30, 30, 0.6); }
.bst-trade-tabs { display: none; }
.bst-trade-cols {
    flex: 1 1 auto; min-height: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 0.95fr) minmax(0, 1fr);
    gap: 0;
}
.bst-trade-cols.is-tutorial-focus {
    grid-template-columns: minmax(0, 1fr);
}
.bst-trade-cols.is-tutorial-focus .bst-trade-col.is-merchant {
    display: block;
}
.bst-trade-col {
    min-width: 0; min-height: 0;
    overflow-y: auto; overscroll-behavior: contain;
    padding: 10px 12px 16px;
}
.bst-trade-col + .bst-trade-col { border-left: 1px solid rgba(106, 58, 12, 0.35); }
.bst-trade-col h4 {
    margin: 2px 0 8px;
    font-family: 'Cinzel', serif; font-size: 14px;
    text-transform: uppercase; letter-spacing: 1px;
    color: var(--bestiarium-ink-soft);
    border-bottom: 2px solid var(--bestiarium-gold);
    padding-bottom: 4px;
}
.bst-trade-col.is-doll .bestiarium-profile-section { margin: 0; padding: 0; border: none; background: none; box-shadow: none; }
.bst-trade-col.is-doll .bestiarium-doll { max-width: 100%; }
.bst-trade-hint, .bst-trade-subnote {
    font-size: 11px; font-style: italic; color: var(--bestiarium-ink-soft);
    margin: 8px 0 6px;
}
.bst-trade-sellbar {
    position: sticky;
    top: -10px;
    z-index: 4;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin: 0 0 10px;
    padding: 8px 9px;
    border: 1px solid rgba(106, 58, 12, 0.42);
    border-left: 4px solid #2a5a18;
    background: #f1e0ad;
    box-shadow: 0 3px 8px rgba(58, 36, 18, 0.16);
}
.bst-trade-sellbar span { font-size: 12px; color: var(--bestiarium-ink-soft); }
.bst-trade-sellbar span b { color: var(--bestiarium-ink); }
.bst-trade-sellbar span strong { margin-left: 6px; color: #2a5a18; white-space: nowrap; }
.bst-trade-sellbar .bestiarium-btn { min-height: 34px; padding: 6px 10px; font-size: 11px; }
.bst-trade-sellbar .bestiarium-btn:disabled { cursor: not-allowed; opacity: 0.48; filter: grayscale(0.55); }
.bst-trade-empty { font-style: italic; color: var(--bestiarium-ink-soft); }
.bst-trade-card {
    background: rgba(255, 247, 217, 0.8);
    border: 1px solid rgba(106, 58, 12, 0.35);
    border-radius: 6px;
    margin-bottom: 8px;
    cursor: pointer;
}
.bst-trade-card:hover { border-color: var(--bestiarium-gold); }
.bst-trade-card.is-open { border-color: var(--bestiarium-gold); box-shadow: 0 2px 8px rgba(58, 36, 18, 0.25); }
.bst-trade-card.is-sale-selected { border-color: #4f7a2e; box-shadow: inset 4px 0 0 #4f7a2e; }
.bst-trade-card-row {
    display: grid; grid-template-columns: 48px minmax(0, 1fr) auto;
    gap: 8px; align-items: center;
    padding: 7px 9px;
}
.bst-trade-card-row.has-selector { grid-template-columns: 24px 48px minmax(0, 1fr) auto; }
.bst-trade-select {
    width: 24px; height: 48px;
    display: grid; place-items: center;
    cursor: pointer;
}
.bst-trade-select input {
    width: 19px; height: 19px;
    margin: 0;
    accent-color: #4f7a2e;
    cursor: pointer;
}
.bst-trade-thumb {
    width: 48px; height: 48px; object-fit: cover;
    border-radius: 4px; border: 1px solid var(--bestiarium-gold);
}
.bst-trade-thumb-empty {
    display: flex; align-items: center; justify-content: center;
    font-size: 22px; color: rgba(106, 58, 12, 0.5);
    background: rgba(106, 58, 12, 0.08);
}
.bst-trade-card-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bst-trade-card-body strong { font-size: 13px; color: var(--bestiarium-ink); overflow-wrap: anywhere; }
.bst-trade-count { font-weight: bold; color: #7b4b16; }
.bst-trade-effect {
    align-self: flex-start;
    font-size: 10px; font-weight: bold;
    background: #2a4a18; color: #d4edda;
    padding: 1px 7px; border-radius: 999px;
}
.bst-trade-req { color: #9b1e1e; font-weight: 600; font-size: 10px; }
.bst-trade-stock { color: #5a4a2a; font-size: 10px; }
.bst-trade-lore { color: var(--bestiarium-ink-soft); font-size: 10px; }
.bst-trade-price { font-weight: bold; color: #7b4b16; white-space: nowrap; }
.bst-trade-price.is-sell { color: #2a5a18; }
.bst-trade-price.is-poor { color: #9b1e1e; }
.bst-trade-strip {
    display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
    padding: 8px 9px;
    border-top: 1px dashed rgba(106, 58, 12, 0.35);
    background: rgba(246, 200, 79, 0.14);
    cursor: default;
}
.bst-trade-qty { display: inline-flex; align-items: center; gap: 6px; }
.bst-trade-qty button {
    width: 28px; height: 28px;
    border: 1px solid var(--bestiarium-gold); border-radius: 4px;
    background: #fff7d9; cursor: pointer; font-size: 15px;
}
.bst-trade-total { font-weight: bold; color: var(--bestiarium-ink); font-size: 12px; }
.bst-trade-compare { flex-basis: 100%; color: var(--bestiarium-ink-soft); font-size: 10px; }
.bst-trade-strip-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-left: auto; }
.bst-trade-strip-btns .bestiarium-btn { font-size: 11px; padding: 5px 10px; min-height: 0; }
@media (max-width: 900px) {
    /* The overlay's grid area is already safe-area padded, so 100% keeps
       the header/close button out of the notch and home-indicator zones. */
    .bst-trade-shell { width: 100%; height: 100%; max-height: 100%; }
    .bst-trade-tabs {
        display: flex; gap: 0;
        background: #efdcae; border-bottom: 2px solid var(--bestiarium-gold);
    }
    .bst-trade-tab {
        flex: 1 1 0; padding: 9px 4px;
        border: none; background: none; cursor: pointer;
        font-family: 'Cinzel', serif; font-size: 12px; font-weight: 700;
        color: var(--bestiarium-ink-soft);
        border-bottom: 3px solid transparent;
        min-height: 44px; touch-action: manipulation;
    }
    .bst-trade-tab.is-active { color: var(--bestiarium-ink); border-bottom-color: var(--bestiarium-red); background: rgba(255, 247, 217, 0.6); }
    .bst-trade-cols { display: block; overflow: hidden; height: 100%; }
    .bst-trade-col { display: none; height: 100%; }
    .bst-trade-col.is-active { display: block; }
    .bst-trade-col + .bst-trade-col { border-left: none; }
}
@media (max-width: 600px) {
    .bst-trade-head { padding: 8px 10px; gap: 8px; }
    .bst-trade-head strong { font-size: 14px; }
    .bst-trade-strip-btns { margin-left: 0; }
}

/* v4.57.0 review fixes: sold-out cards, cursed-item note, inert house tile */
.bst-trade-card.is-soldout { opacity: 0.55; cursor: default; }
.bst-trade-stock.is-out { color: #9b1e1e; font-weight: 700; }
.bst-trade-note { font-size: 11px; font-style: italic; color: #7b4b16; }
.bst-trade-col.is-doll [data-house-tile] { display: none; }

/* v4.85.0: compact merchant grid + click-through item detail ----------- */
.bst-trade-shell { position: relative; }
.bst-trade-merchant-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(138px, 1fr));
    gap: 8px;
    align-items: stretch;
}
.bst-trade-item-card {
    appearance: none;
    width: 100%;
    height: 178px;
    min-width: 0;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-rows: 80px minmax(0, 1fr);
    overflow: hidden;
    text-align: left;
    color: var(--bestiarium-ink);
    font: inherit;
    background: rgba(255, 247, 217, 0.92);
    border: 1px solid rgba(106, 58, 12, 0.38);
    border-radius: 6px;
    cursor: pointer;
    transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
}
.bst-trade-item-card:hover,
.bst-trade-item-card:focus-visible,
.bst-trade-item-card.is-selected {
    border-color: var(--bestiarium-gold);
    background: #fff7d9;
    box-shadow: 0 3px 10px rgba(58, 36, 18, 0.22);
    outline: none;
}
.bst-trade-item-card:focus-visible { box-shadow: 0 0 0 3px rgba(155, 30, 30, 0.28), 0 3px 10px rgba(58, 36, 18, 0.22); }
.bst-trade-item-card.is-soldout { cursor: pointer; }
.bst-trade-item-visual {
    position: relative;
    display: block;
    min-width: 0;
    overflow: hidden;
    background: rgba(106, 58, 12, 0.09);
    border-bottom: 1px solid rgba(106, 58, 12, 0.25);
}
.bst-trade-item-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}
.bst-trade-item-image-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(106, 58, 12, 0.5);
    font-size: 28px;
}
.bst-trade-item-badge {
    position: absolute;
    top: 5px;
    left: 5px;
    max-width: calc(100% - 10px);
    padding: 2px 6px;
    border: 1px solid rgba(255, 247, 217, 0.72);
    border-radius: 4px;
    background: #3d641f;
    color: #fff8da;
    font: 700 9px/1.25 'Cinzel', serif;
    text-transform: uppercase;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bst-trade-item-badge.is-out { background: #8b2424; }
.bst-trade-item-copy {
    min-width: 0;
    padding: 7px 8px 8px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.bst-trade-item-copy > strong {
    min-height: 2.4em;
    color: var(--bestiarium-ink);
    font-size: 12px;
    line-height: 1.2;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    overflow-wrap: anywhere;
}
.bst-trade-item-stats {
    min-width: 0;
    min-height: 18px;
    display: flex;
    align-items: center;
}
.bst-trade-item-stats .bst-trade-effect {
    align-self: auto;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bst-trade-effect.is-none { background: #6a5b42; }
.bst-trade-item-footer {
    min-width: 0;
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 5px;
}
.bst-trade-item-footer .bst-trade-price {
    min-width: 0;
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.bst-trade-item-more { flex: 0 0 auto; color: #7b4b16; font-size: 15px; }

.bst-trade-detail-backdrop {
    position: absolute;
    inset: 0;
    z-index: 20;
    display: grid;
    place-items: center;
    padding: 14px;
    background: rgba(25, 13, 4, 0.75);
    backdrop-filter: blur(3px);
}
.bst-trade-detail {
    width: min(720px, 100%);
    max-height: calc(100% - 12px);
    overflow: auto;
    overscroll-behavior: contain;
    background: #f9edca;
    border: 3px double var(--bestiarium-gold);
    border-radius: 8px;
    box-shadow: 0 16px 46px rgba(0, 0, 0, 0.48);
    color: var(--bestiarium-ink);
}
.bst-trade-detail-head {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 13px;
    background: #34200f;
    color: #f6e7bd;
    border-bottom: 2px solid var(--bestiarium-gold);
}
.bst-trade-detail-head > div { min-width: 0; }
.bst-trade-detail-head small {
    display: block;
    color: #d9c391;
    font: 700 10px/1.2 'Cinzel', serif;
    text-transform: uppercase;
}
.bst-trade-detail-head h3 {
    margin: 2px 0 0;
    color: #f6e7bd;
    font: 700 20px/1.2 'Cinzel', serif;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bst-trade-detail-close {
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    margin-left: auto;
    border: 1px solid rgba(246, 200, 79, 0.55);
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.22);
    color: #f6e7bd;
    cursor: pointer;
    font-size: 16px;
}
.bst-trade-detail-close:hover,
.bst-trade-detail-close:focus-visible { background: #8b2424; outline: 2px solid #f6c84f; }
.bst-trade-detail-body {
    display: grid;
    grid-template-columns: minmax(150px, 210px) minmax(0, 1fr);
    gap: 18px;
    padding: 16px;
}
.bst-trade-detail-visual {
    position: relative;
    align-self: start;
    aspect-ratio: 1;
    margin: 0;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: rgba(106, 58, 12, 0.1);
    border: 2px solid var(--bestiarium-gold);
    border-radius: 6px;
}
.bst-trade-detail-visual img { width: 100%; height: 100%; object-fit: contain; }
.bst-trade-detail-image-empty { color: rgba(106, 58, 12, 0.5); font-size: 54px; }
.bst-trade-detail-visual figcaption {
    position: absolute;
    right: 6px;
    bottom: 6px;
    left: 6px;
    padding: 4px 6px;
    background: #3d641f;
    color: #fff8da;
    border-radius: 4px;
    text-align: center;
    font: 700 10px/1.25 'Cinzel', serif;
}
.bst-trade-detail-info { min-width: 0; }
.bst-trade-detail-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 14px;
    border-top: 1px solid rgba(106, 58, 12, 0.28);
}
.bst-trade-detail-meta > div {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 7px 0;
    border-bottom: 1px solid rgba(106, 58, 12, 0.22);
}
.bst-trade-detail-meta > div.is-wide { grid-column: 1 / -1; }
.bst-trade-detail-meta span { color: var(--bestiarium-ink-soft); font-size: 11px; }
.bst-trade-detail-meta strong { min-width: 0; text-align: right; overflow-wrap: anywhere; }
.bst-trade-detail-meta strong.is-out { color: #9b1e1e; }
.bst-trade-detail-meta .bst-trade-effect { display: inline-flex; }
.bst-trade-detail-lore {
    margin: 14px 0 8px;
    color: var(--bestiarium-ink-soft);
    font-size: 14px;
    line-height: 1.45;
    overflow-wrap: anywhere;
}
.bst-trade-detail .bst-trade-compare { display: block; margin-top: 8px; font-size: 11px; }
.bst-trade-detail-actions {
    position: sticky;
    bottom: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 11px 16px;
    background: #ead39c;
    border-top: 2px solid var(--bestiarium-gold);
}
.bst-trade-detail-actions .bst-trade-total { margin-right: auto; font-size: 14px; }
.bst-trade-detail-actions .bestiarium-btn { min-width: 120px; }
.bst-trade-detail-soldout { width: 100%; color: #9b1e1e; text-align: center; }

@media (max-width: 600px) {
    .bst-trade-col { padding: 9px 9px 14px; }
    .bst-trade-merchant-grid { grid-template-columns: repeat(auto-fill, minmax(136px, 1fr)); gap: 7px; }
    .bst-trade-item-card { height: 172px; grid-template-rows: 76px minmax(0, 1fr); }
    .bst-trade-detail-backdrop { padding: 0; place-items: stretch; }
    .bst-trade-detail { width: 100%; max-height: 100%; border-width: 0; border-radius: 0; }
    .bst-trade-detail-head h3 { font-size: 17px; }
    .bst-trade-detail-body { grid-template-columns: 1fr; gap: 12px; padding: 12px; }
    .bst-trade-detail-visual { width: min(210px, 72vw); justify-self: center; }
    .bst-trade-detail-meta { grid-template-columns: 1fr; }
    .bst-trade-detail-meta > div.is-wide { grid-column: auto; }
    .bst-trade-detail-actions { padding: 10px 12px max(10px, env(safe-area-inset-bottom)); }
    .bst-trade-detail-actions .bestiarium-btn { flex: 1 1 130px; }
}
/* v4.58.0: meditation rest overlay — covers only the map view */
.bestiarium-med-overlay {
    position: absolute; inset: 0; z-index: 90;
    background: radial-gradient(circle at center, rgba(26, 22, 8, 0.90) 0%, rgba(10, 8, 2, 0.97) 90%);
    display: flex; align-items: center; justify-content: center;
    backdrop-filter: blur(5px);
    color: #e8e2c8;
    border-radius: 8px;
}
.bestiarium-med-overlay-box {
    width: min(480px, 92%);
    text-align: center;
    padding: 26px 28px;
    border: 3px double var(--bestiarium-gold);
    border-radius: 10px;
    background: rgba(24, 18, 6, 0.55);
}
.bestiarium-med-overlay-lotus {
    font-size: 52px;
    line-height: 1;
    animation: bestiarium-med-breathe 5s ease-in-out infinite;
}
@keyframes bestiarium-med-breathe {
    0%, 100% { transform: scale(1); opacity: 0.85; }
    50%      { transform: scale(1.12); opacity: 1; }
}
.bestiarium-med-overlay-box h3 {
    font-family: 'UnifrakturMaguntia', serif;
    font-size: 24px;
    margin: 10px 0 6px;
    color: #f6c84f;
}
.bestiarium-med-overlay-box p { margin: 4px 0; font-size: 15px; }
.bestiarium-med-overlay-timer {
    font-family: 'Cinzel', serif;
    font-size: 34px;
    letter-spacing: 3px;
    color: #f6e7bd;
    margin: 8px 0 !important;
}
.bestiarium-med-overlay-note {
    font-size: 12px !important;
    font-style: italic;
    color: #bdb28e;
    margin-bottom: 12px !important;
}
@media (max-width: 600px) {
    .bestiarium-med-overlay-box { padding: 16px 14px; }
    .bestiarium-med-overlay-timer { font-size: 26px; }
}

/* v4.58.0: keep fullscreen-exit controls clickable above the rest overlay */
.bestiarium-mapview.is-maximized .bestiarium-map-fs { z-index: 95; }
@media (max-width: 600px) {
    .bestiarium-mapview.is-maximized .bestiarium-map-fstop { z-index: 95; }
}
/* v4.60.0: compact location action bar and Profile bag actions. */
.bestiarium-location-actions {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 8px;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px dashed rgba(184, 134, 44, 0.48);
}
.bestiarium-location-actions .bestiarium-location-action {
    width: 100%;
    min-width: 0;
    min-height: 44px;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    white-space: normal;
    overflow-wrap: anywhere;
    letter-spacing: 0;
    line-height: 1.25;
}
.bestiarium-location-action-icon { flex: 0 0 auto; font-size: 17px; }
.bestiarium-location-action-count {
    flex: 0 0 auto;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(106, 58, 12, 0.42);
    border-radius: 999px;
    background: rgba(255, 247, 217, 0.72);
    font: 700 11px/1 Arial, sans-serif;
}
.bestiarium-location-action-modal {
    position: fixed;
    inset: 0;
    z-index: 10040;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
    background: rgba(20, 10, 4, 0.84);
    backdrop-filter: blur(4px);
}
.bestiarium-location-action-body {
    width: min(820px, 100%);
    max-height: min(90vh, 900px);
    max-height: min(90dvh, 900px);
    overflow: auto;
    border: 3px double var(--bestiarium-gold);
    border-radius: 6px;
    background: #f5e3b7;
    box-shadow: 0 0 0 4px rgba(155, 30, 30, 0.45), 0 22px 55px rgba(0, 0, 0, 0.62);
}
.bestiarium-location-action-body > header {
    position: sticky;
    top: 0;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 13px 16px;
    border-bottom: 1px solid var(--bestiarium-gold);
    background: #ead29a;
}
.bestiarium-location-action-body > header h3 {
    min-width: 0;
    margin: 0;
    font-family: 'Cinzel', serif;
    font-size: 20px;
    letter-spacing: 0;
    color: var(--bestiarium-red);
    overflow-wrap: anywhere;
}
.bestiarium-location-action-close {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    border: 1px solid rgba(106, 58, 12, 0.5);
    border-radius: 4px;
    background: #fff2c8;
    color: var(--bestiarium-ink);
    font-size: 27px;
    line-height: 1;
    cursor: pointer;
}
.bestiarium-location-action-content { padding: 16px; }
.bestiarium-location-action-content > .bestiarium-map-section {
    margin: 0;
    padding: 0;
    border: 0;
}
.bestiarium-location-action-content .bestiarium-map-postform {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
}
body.bestiarium-location-dialog-open { overflow: hidden; }
.bestiarium-bag-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 5px;
    margin-top: 4px;
}
.bestiarium-bag-actions .bestiarium-equip-btn,
.bestiarium-bag-drop-btn {
    flex: 1 1 76px;
    min-height: 30px;
    margin: 0;
    padding: 4px 7px;
    border-radius: 3px;
    font-family: 'Cinzel', serif;
    font-size: 10px;
    letter-spacing: 0;
    cursor: pointer;
}
.bestiarium-bag-drop-btn {
    border: 1px solid #8f2927;
    background: #f1d4c1;
    color: #741f1d;
}
.bestiarium-bag-drop-btn:hover { background: #e8bca8; }
.bestiarium-bag-drop-btn:disabled { opacity: 0.55; cursor: wait; }

@media (max-width: 620px) {
    .bestiarium-location-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .bestiarium-location-actions .bestiarium-location-action { min-height: 48px; padding: 8px 6px; font-size: 11px; }
    .bestiarium-location-action-modal { align-items: stretch; padding: 8px; }
    .bestiarium-location-action-body { width: 100%; max-height: 100%; }
    .bestiarium-location-action-body > header { padding: 10px 12px; }
    .bestiarium-location-action-body > header h3 { font-size: 17px; }
    .bestiarium-location-action-content { padding: 12px; }
    .bestiarium-location-action-content .bestiarium-map-postform { grid-template-columns: 1fr; }
    .bestiarium-location-action-content .bestiarium-map-postform .bestiarium-btn { width: 100%; min-height: 44px; }
}

/* v4.98.0: one-piece illuminated manuscript beast card. */
.bestiarium-beast-card {
    --bst-card-accent: #8a733f;
    --bst-card-accent-deep: #26364a;
    position: relative;
    isolation: isolate;
    width: 100%;
    min-width: 0;
    aspect-ratio: 5 / 7;
    overflow: hidden;
    border: 0;
    border-radius: 3px;
    color: #30251c;
    background: #101a28;
    box-shadow: 0 15px 30px rgba(25, 14, 8, 0.42);
}
.bestiarium-beast-card::after {
    content: '';
    position: absolute;
    z-index: 2;
    inset: 0;
    background: url('../img/beast-card-frame-v2.png?ver=4.98.0') center / 100% 100% no-repeat;
    pointer-events: none;
}
.bestiarium-beast-card.is-starter { --bst-card-accent: #668873; --bst-card-accent-deep: #294c40; }
.bestiarium-beast-card.is-common { --bst-card-accent: #8a733f; --bst-card-accent-deep: #3e3123; }
.bestiarium-beast-card.is-uncommon { --bst-card-accent: #5e8763; --bst-card-accent-deep: #2f5037; }
.bestiarium-beast-card.is-rare { --bst-card-accent: #477da2; --bst-card-accent-deep: #253f5a; }
.bestiarium-beast-card.is-special { --bst-card-accent: #bc8a31; --bst-card-accent-deep: #654714; }
.bestiarium-beast-card.is-epic { --bst-card-accent: #96526e; --bst-card-accent-deep: #55283a; }
.bestiarium-beast-card.is-legendary { --bst-card-accent: #c28a25; --bst-card-accent-deep: #743e13; }
.bestiarium-beast-card.is-original { --bst-card-accent: #a93435; --bst-card-accent-deep: #621f1d; }
.bestiarium-beast-card.is-curse { --bst-card-accent: #64744e; --bst-card-accent-deep: #344027; }
.bestiarium-beast-card.is-relic-card { --bst-card-accent: #7e6a9a; --bst-card-accent-deep: #3f3159; }

.bestiarium-beast-card-head {
    position: absolute;
    z-index: 4;
    inset: 0;
    pointer-events: none;
}
.bestiarium-beast-card-title {
    position: absolute;
    top: 3.2%;
    right: 18.5%;
    left: 18.5%;
    height: 6.2%;
    display: grid;
    margin: 0;
    place-items: center;
    overflow: hidden;
    color: #43231d;
    font: 700 15px/1.05 'Cinzel', serif;
    letter-spacing: 0;
    text-align: center;
    text-wrap: balance;
    overflow-wrap: anywhere;
}
.bestiarium-beast-card-tier {
    position: absolute;
    top: 4.8%;
    right: 5%;
    width: 9.7%;
    aspect-ratio: 1;
    display: grid;
    place-items: center;
    overflow: hidden;
    padding: 3px;
    border: 1px solid rgba(249, 223, 144, 0.72);
    border-radius: 50%;
    color: #fff1bd;
    background: var(--bst-card-accent-deep);
    box-shadow: inset 0 0 0 2px rgba(205, 165, 72, 0.72);
    font: 700 7px/1 'Cinzel', serif;
    letter-spacing: 0;
    text-align: center;
    text-overflow: ellipsis;
}

.bestiarium-beast-card-art {
    position: absolute;
    z-index: 1;
    top: 11.7%;
    left: 17.1%;
    width: 65.8%;
    height: 35.8%;
    display: grid;
    place-items: center;
    overflow: hidden;
    background:
        linear-gradient(180deg, rgba(31, 47, 67, 0.78), rgba(10, 17, 27, 0.94)),
        repeating-linear-gradient(0deg, rgba(204, 160, 70, 0.08) 0 1px, transparent 1px 12px);
}
.bestiarium-beast-card-art-main {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}
.bestiarium-beast-card-fallback {
    z-index: 1;
    display: grid;
    width: 72px;
    height: 72px;
    place-items: center;
    border: 2px solid #cba449;
    border-radius: 50%;
    color: #e5c778;
    background: #1d3047;
    font: 700 34px/1 'Cinzel', serif;
}
.bestiarium-beast-card-power {
    position: absolute;
    z-index: 4;
    top: 4.75%;
    left: 5%;
    width: 9.7%;
    aspect-ratio: 1;
    display: grid;
    grid-template-rows: 1fr 1.15fr;
    place-items: center;
    overflow: hidden;
    padding: 4px;
    border: 1px solid rgba(255, 225, 150, 0.8);
    border-radius: 50%;
    color: #fff1c4;
    background: #8a202d;
    box-shadow: inset 0 0 0 2px rgba(211, 166, 73, 0.75), 0 2px 5px rgba(0, 0, 0, 0.34);
    text-align: center;
}
.bestiarium-beast-card-power small {
    align-self: end;
    font: 700 7px/1 'Cinzel', serif;
    letter-spacing: 0;
}
.bestiarium-beast-card-power strong {
    align-self: start;
    font: 700 17px/1 'EB Garamond', Georgia, serif;
    font-variant-numeric: tabular-nums;
}
.bestiarium-beast-card-status-dot {
    position: absolute;
    z-index: 5;
    right: 3%;
    bottom: 3%;
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border: 2px solid #e0be69;
    border-radius: 50%;
    color: #fff1c4;
    background: #24364b;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.42);
    font-size: 12px;
}

.bestiarium-beast-card-body {
    position: absolute;
    z-index: 4;
    inset: 0;
    min-width: 0;
    pointer-events: none;
}
.bestiarium-beast-card-nameplate {
    position: absolute;
    top: 48%;
    right: 18.4%;
    left: 18.4%;
    height: 6.2%;
    display: grid;
    align-content: center;
    justify-items: center;
    min-width: 0;
    padding: 0 18px;
    text-align: center;
}
.bestiarium-beast-card-nameplate h3 {
    width: 100%;
    max-height: 100%;
    max-width: 100%;
    margin: 0;
    overflow: hidden;
    color: #3e3027;
    font: italic 16px/1.05 'EB Garamond', Georgia, serif;
    letter-spacing: 0;
    overflow-wrap: anywhere;
    text-wrap: balance;
}
.bestiarium-beast-card-nameplate.has-epithet {
    grid-template-rows: minmax(0, 68%) minmax(0, 30%);
    gap: 1px;
}
.bestiarium-beast-card-nameplate.has-epithet h3 {
    height: 100%;
    max-height: none;
    display: grid;
    place-items: center;
}
.bestiarium-beast-card-epithet {
    width: 100%;
    height: 100%;
    max-height: none;
    max-width: 100%;
    display: grid;
    place-items: center;
    margin: 1px 0 0;
    overflow: hidden;
    color: #7e2931;
    font: 700 7px/1.05 'Cinzel', serif;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bestiarium-beast-card-id {
    position: absolute;
    top: 2px;
    right: -9%;
    color: #765f48;
    font: 700 7px/1.1 'Cinzel', serif;
}
.bestiarium-beast-card-status {
    position: absolute;
    top: 45.2%;
    right: 22%;
    left: 22%;
    z-index: 5;
    max-height: 24px;
    margin: 0;
    overflow: hidden;
    padding: 3px 7px;
    border: 1px solid rgba(210, 173, 83, 0.72);
    color: #f6e3ad;
    background: rgba(24, 37, 55, 0.92);
    font: 600 9px/1.15 'EB Garamond', Georgia, serif;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bestiarium-beast-card-stats {
    position: absolute;
    top: 54.6%;
    right: 10.9%;
    left: 10.9%;
    height: 16.1%;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-template-rows: repeat(2, minmax(0, 1fr));
    gap: 3.9% 5.4%;
}
.bestiarium-beast-card-stat {
    min-width: 0;
    display: grid;
    grid-template-rows: 17px minmax(17px, 1fr) 14px;
    align-items: center;
    overflow: hidden;
    padding: 1px 6px;
    border: 0;
    color: #30251c;
    background: transparent;
    box-shadow: none;
    text-align: center;
}
.bestiarium-beast-card-stat::before { content: none; }
.bestiarium-beast-card-stat small {
    display: block;
    min-width: 0;
    margin: 0;
    overflow: hidden;
    color: #7b2831;
    background: transparent;
    font: 700 8px/17px 'Cinzel', serif;
    letter-spacing: 0;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bestiarium-beast-card-stat strong {
    min-width: 0;
    overflow: hidden;
    color: #29231e;
    font: 700 20px/1 'EB Garamond', Georgia, serif;
    font-variant-numeric: tabular-nums;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bestiarium-beast-card.is-relic-card .bestiarium-beast-card-stat strong {
    font-size: 14px;
    white-space: normal;
    overflow-wrap: anywhere;
}
.bestiarium-beast-card-stat span {
    min-width: 0;
    overflow: hidden;
    color: #29405b;
    font: 600 8px/14px 'Cinzel', serif;
    letter-spacing: 0;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bestiarium-beast-card-meta {
    position: absolute;
    top: 72%;
    right: 10.5%;
    left: 10.5%;
    height: 5.5%;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6.4%;
    color: #30251c;
}
.bestiarium-beast-card-meta span {
    min-width: 0;
    display: grid;
    align-content: center;
    padding: 0 5px;
    border: 0;
    text-align: center;
}
.bestiarium-beast-card-meta small,
.bestiarium-beast-card-ability small {
    display: block;
    min-width: 0;
    overflow: hidden;
    color: #7b2831;
    font: 700 7px/1.05 'Cinzel', serif;
    letter-spacing: 0;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bestiarium-beast-card-meta strong {
    display: block;
    min-width: 0;
    margin-top: 2px;
    overflow: hidden;
    color: #29231e;
    font: 700 10px/1.1 'EB Garamond', Georgia, serif;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* v4.60.0: long homeland names — smaller font, two lines, no "..." cut */
.bestiarium-beast-card-meta strong.is-long {
    display: -webkit-box;
    font-size: 7.5px;
    line-height: 1.08;
    letter-spacing: 0;
    white-space: normal;
    text-overflow: clip;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    margin-top: 1px;
}
.bestiarium-beast-card-ability {
    position: absolute;
    top: 79%;
    right: 13%;
    left: 13%;
    height: 4%;
    margin: 0;
    overflow: hidden;
    padding: 1px 8px;
    border: 0;
    color: #243a55;
    background: transparent;
    text-align: center;
}
.bestiarium-beast-card-ability small { color: #7b2831; }
.bestiarium-beast-card-ability strong {
    display: block;
    margin-top: 2px;
    overflow: hidden;
    color: #243a55;
    font: 700 9px/1.1 'EB Garamond', Georgia, serif;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bestiarium-beast-card-lore {
    position: absolute;
    /* v4.60.0: tighter insets so the text never touches the painted scroll */
    top: 79.8%;
    right: 14.6%;
    bottom: 8.4%;
    left: 14.6%;
    display: block;
    margin: 0;
    overflow: hidden;
    padding: 10px 6px 4px;
    border: 0;
    color: #382d24;
    background: transparent;
    font: italic 10.5px/1.22 'EB Garamond', Georgia, serif;
    overflow-wrap: anywhere;
    text-wrap: pretty;
}
.bestiarium-beast-card-body.has-ability .bestiarium-beast-card-lore {
    top: 83.1%;
    padding-top: 3px;
}
.bestiarium-beast-card-footer {
    position: absolute;
    z-index: 4;
    right: 18%;
    bottom: 1.7%;
    left: 18%;
    height: 2.9%;
    display: grid;
    place-items: center;
    overflow: hidden;
    color: #3b2a20;
    font: 700 8px/1 'Cinzel', serif;
    letter-spacing: 0;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bestiarium-beast-card.is-detail .bestiarium-beast-card-title { font-size: 25px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-tier { font-size: 10px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-power small { font-size: 10px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-power strong { font-size: 29px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-nameplate h3 { font-size: 25px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-epithet { font-size: 10px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-id { font-size: 10px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-stat {
    grid-template-rows: 23px minmax(24px, 1fr) 20px;
    padding-inline: 9px;
}
.bestiarium-beast-card.is-detail .bestiarium-beast-card-stat small { font-size: 11px; line-height: 23px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-stat strong { font-size: 32px; }
.bestiarium-beast-card.is-detail.is-relic-card .bestiarium-beast-card-stat strong { font-size: 22px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-stat span { font-size: 11px; line-height: 20px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-meta small { font-size: 10px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-meta strong { font-size: 15px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-ability small { font-size: 10px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-ability strong { font-size: 14px; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-lore { font-size: 16px; line-height: 1.25; }
.bestiarium-beast-card.is-detail .bestiarium-beast-card-footer { font-size: 12px; }

.bestiarium-map-beasts {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 370px));
    justify-content: center;
    align-items: start;
    gap: 18px;
}
.bestiarium-map-beasts > li.bestiarium-map-beast-entry {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 0;
    border: 0;
    background: transparent;
}
.bestiarium-location-action-body.is-beast-dialog { width: min(1180px, 100%); }
.bestiarium-beast-card-actions {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 8px;
}
.bestiarium-beast-card-actions .bestiarium-btn {
    width: 100%;
    min-width: 0;
    min-height: 46px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    white-space: normal;
    text-align: center;
    letter-spacing: 0;
}
.bestiarium-beast-card-actions .bestiarium-beast-card-fight { border-width: 2px; }
.bestiarium-beast-card-actions .bestiarium-beast-card-download { text-decoration: none; }
.bestiarium-beast-card-soldout,
.bestiarium-beast-card-locked {
    display: grid;
    min-height: 46px;
    align-content: center;
    justify-items: center;
    gap: 2px;
    padding: 7px 9px;
    border: 1px solid rgba(116, 49, 39, 0.48);
    color: #752d25;
    background: #f0ddd0;
    text-align: center;
}
.bestiarium-beast-card-locked { border-color: #796f57; color: #3f392c; background: #e7e1d1; }
.bestiarium-beast-card-locked strong { font: 700 12px/1.2 'Cinzel', serif; }
.bestiarium-beast-card-locked small { font-size: 11px; line-height: 1.25; }
.bestiarium-book-grid { grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); align-items: start; }
.bestiarium-book-beast-entry {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
    cursor: pointer;
}
.bestiarium-book-beast-entry > .bestiarium-book-deck-toggle { margin: 0 6px; }
.bestiarium-book-beast-entry.is-in-deck > .bestiarium-beast-card {
    outline: 3px solid #9b1e1e;
    outline-offset: 2px;
}
.bestiarium-bookcard-box.is-beast-card-detail {
    width: min(720px, 100%);
    max-width: 720px;
    padding: 42px 16px 16px;
}
.bestiarium-bookcard-box.is-beast-card-detail .bestiarium-book-card-dl { justify-content: center; }

@media (max-width: 620px) {
    .bestiarium-map-beasts { grid-template-columns: minmax(0, 1fr); }
    .bestiarium-book-grid { grid-template-columns: minmax(0, 1fr) !important; }
    .bestiarium-bookcard-box.is-beast-card-detail { padding: 42px 8px 10px; }
}

@media (max-width: 420px) {
    .bestiarium-beast-card-title { font-size: 13px; }
    .bestiarium-beast-card-stat { grid-template-rows: 16px minmax(17px, 1fr) 7px; }
    .bestiarium-beast-card-stat span { display: none; }
    .bestiarium-beast-card-meta small { font-size: 6px; }
    .bestiarium-beast-card-meta strong { font-size: 9px; }
    .bestiarium-beast-card-lore { font-size: 10px; }
    .bestiarium-beast-card-status { right: 15%; left: 15%; }
}
/* v4.68.0: illustrated relic cards in the location activity dialog. */
.bestiarium-map-relics {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(290px, 370px));
    justify-content: center;
    align-items: start;
    gap: 18px;
}
.bestiarium-map-relics > li.bestiarium-map-relic-entry {
    min-width: 0;
    padding: 0;
    margin: 0;
    border: 0;
    background: transparent;
}
.bestiarium-location-action-body.is-relic-dialog { width: min(1180px, 100%); }
.bestiarium-relic-card {
    --bst-relic-accent: #9a671d;
    --bst-relic-deep: #4d2914;
    --bst-relic-soft: #edd79b;
    min-width: 0;
    overflow: hidden;
    border: 2px solid var(--bst-relic-deep);
    border-radius: 4px;
    background: #f5e7bd;
    color: #2d1b10;
    box-shadow: 0 12px 26px rgba(32, 21, 12, 0.3), inset 0 0 0 1px rgba(255, 250, 226, 0.72);
}
.bestiarium-relic-card.is-boon { --bst-relic-accent: #9b7321; --bst-relic-deep: #604315; --bst-relic-soft: #f0dfad; }
.bestiarium-relic-card.is-curse { --bst-relic-accent: #6d7840; --bst-relic-deep: #303a22; --bst-relic-soft: #dce3c4; }
.bestiarium-relic-card.is-mystery { --bst-relic-accent: #687a7d; --bst-relic-deep: #344447; --bst-relic-soft: #d8e2df; }
.bestiarium-relic-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 36px;
    padding: 8px 11px;
    background: var(--bst-relic-deep);
    color: #fff0bd;
    font: 800 10px/1.2 'Cinzel', serif;
    letter-spacing: 0;
}
.bestiarium-relic-card-head small { color: #d9bd6d; font: 700 10px/1.2 monospace; }
.bestiarium-relic-card-art {
    position: relative;
    isolation: isolate;
    aspect-ratio: 4 / 3;
    display: grid;
    place-items: center;
    overflow: hidden;
    border-bottom: 2px solid var(--bst-relic-deep);
    background: #1f2725;
}
.bestiarium-relic-card-art::after {
    content: '';
    position: absolute;
    z-index: 3;
    inset: 8px;
    border: 1px solid rgba(246, 220, 149, 0.72);
    box-shadow: inset 0 0 0 1px rgba(20, 23, 20, 0.48);
    pointer-events: none;
}
.bestiarium-relic-card-art-backdrop,
.bestiarium-relic-card-art-main { position: absolute; display: block; }
.bestiarium-relic-card-art-backdrop {
    z-index: 0;
    inset: -20px;
    width: calc(100% + 40px);
    height: calc(100% + 40px);
    object-fit: cover;
    filter: blur(15px) saturate(0.7) brightness(0.56);
    transform: scale(1.08);
}
.bestiarium-relic-card-art-main {
    z-index: 1;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    filter: drop-shadow(0 5px 9px rgba(0, 0, 0, 0.48));
}
.bestiarium-relic-card-fallback {
    z-index: 1;
    display: grid;
    place-items: center;
    width: 92px;
    height: 92px;
    border: 2px solid #d9bd6d;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(238, 212, 141, 0.26), rgba(29, 39, 36, 0.94));
    color: #edcf78;
    font: 700 42px/1 'Cinzel', serif;
}
.bestiarium-relic-card-sigil {
    position: absolute;
    z-index: 4;
    right: 14px;
    bottom: 14px;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border: 2px solid #efd68d;
    border-radius: 50%;
    background: var(--bst-relic-deep);
    color: #fff1c1;
    font-size: 20px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.45);
}
.bestiarium-relic-card-body { min-width: 0; padding: 12px; }
.bestiarium-relic-card-nameplate {
    min-width: 0;
    padding: 0 0 9px 10px;
    border-left: 4px solid var(--bst-relic-accent);
    border-bottom: 1px solid rgba(72, 49, 25, 0.28);
}
.bestiarium-relic-card-nameplate h3 {
    margin: 0;
    color: #7e2020;
    font: 400 27px/1.08 'UnifrakturMaguntia', serif;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bestiarium-relic-card-nameplate p {
    margin: 3px 0 0;
    color: #5b4730;
    font: italic 14px/1.2 'EB Garamond', Georgia, serif;
    overflow-wrap: anywhere;
}
.bestiarium-relic-card-effect {
    margin-top: 10px;
    padding: 9px 10px;
    border: 1px solid var(--bst-relic-accent);
    border-left: 4px solid var(--bst-relic-accent);
    border-radius: 3px;
    background: var(--bst-relic-soft);
}
.bestiarium-relic-card-effect small,
.bestiarium-relic-card-meta small {
    display: block;
    color: var(--bst-relic-deep);
    font: 800 9px/1.1 'Cinzel', serif;
    letter-spacing: 0;
}
.bestiarium-relic-card-effect strong {
    display: block;
    margin-top: 4px;
    color: #6f1d22;
    font-size: 14px;
    line-height: 1.3;
    overflow-wrap: anywhere;
}
.bestiarium-relic-card-meta {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 9px;
    border: 1px solid var(--bst-relic-deep);
    background: #24302d;
    color: #fff2cb;
}
.bestiarium-relic-card-meta span {
    min-width: 0;
    padding: 8px;
    border-right: 1px solid rgba(225, 191, 105, 0.36);
}
.bestiarium-relic-card-meta span:last-child { border-right: 0; }
.bestiarium-relic-card-meta small { color: #d7bd73; }
.bestiarium-relic-card-meta strong {
    display: block;
    margin-top: 3px;
    color: #fff5d9;
    font: 700 12px/1.25 'Cinzel', serif;
    overflow-wrap: anywhere;
}
.bestiarium-relic-card-lore {
    display: -webkit-box;
    margin: 10px 0 0;
    padding-top: 9px;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 5;
    border-top: 1px solid rgba(67, 49, 30, 0.25);
    color: #3e3021;
    font: italic 14px/1.42 'EB Garamond', Georgia, serif;
    overflow-wrap: anywhere;
}
.bestiarium-relic-card-pickup {
    width: 100%;
    min-height: 46px;
    margin-top: 11px;
    white-space: normal;
    text-align: center;
    letter-spacing: 0;
}
@media (max-width: 620px) {
    .bestiarium-map-relics { grid-template-columns: minmax(0, 1fr); }
    .bestiarium-relic-card-nameplate h3 { font-size: 24px; }
}
@media (max-width: 420px) {
    .bestiarium-relic-card-meta { grid-template-columns: minmax(0, 1fr); }
    .bestiarium-relic-card-meta span { border-right: 0; border-bottom: 1px solid rgba(225, 191, 105, 0.3); }
    .bestiarium-relic-card-meta span:last-child { border-bottom: 0; }
}
/* v4.85.4: keep the trophy list as the only scrollable region on small screens. */
@media (max-width: 680px) {
    .bestiarium-wager-body.bestiarium-trophyshop-body {
        width: calc(100vw - 16px) !important;
        max-width: calc(100vw - 16px) !important;
        max-height: calc(100dvh - 24px) !important;
        overflow: hidden;
    }
}
@media (max-width: 420px) {
    .bestiarium-trophy-controls {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }
    .bestiarium-trophy-controls input { width: 100%; }
    .bestiarium-trophy-controls .bestiarium-btn {
        grid-column: 1 / -1;
        width: 100%;
    }
}
/* v4.94.0: one responsive whole-game fullscreen with collapsible UI panels. */
.bestiarium-hero-tools,
.bestiarium-app-fullscreen-controls {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}
.bestiarium-app-fullscreen,
.bestiarium-app-layout-toggle {
    display: inline-grid;
    place-items: center;
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    min-width: 40px;
    margin: 0;
    padding: 0;
    border: 1px solid var(--bestiarium-gold);
    border-radius: 6px;
    background: linear-gradient(180deg, #fff7d9, #e2c474);
    color: var(--bestiarium-ink);
    font: 700 20px/1 'Cinzel', serif;
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(58, 36, 18, 0.24);
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
}
.bestiarium-app-layout-toggle {
    display: none;
    font-size: 16px;
}
.bestiarium-app-fullscreen:hover,
.bestiarium-app-layout-toggle:hover {
    border-color: var(--bestiarium-red);
    background: linear-gradient(180deg, #fffbe8, #edcf7f);
}
.bestiarium-app-fullscreen:focus-visible,
.bestiarium-app-layout-toggle:focus-visible {
    outline: 3px solid rgba(28, 58, 120, 0.45);
    outline-offset: 2px;
}
.bestiarium-app-fullscreen.is-active,
.bestiarium-app-layout-toggle.is-collapsed {
    border-color: #f2d47c;
    background: #3b2412;
    color: #fff2c4;
}
.bestiarium-visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* The old map-only controls are retired; app.js is the sole fullscreen owner. */
.bestiarium-map-fs,
.bestiarium-map-panel-toggle,
.bestiarium-map-fstop {
    display: none !important;
}

html.bestiarium-app-fullscreen-root {
    width: 100%;
    height: 100%;
    margin-top: 0 !important;
    overflow: hidden !important;
    background: #140c05;
}
html.bestiarium-app-fullscreen-root body.bestiarium-app-fullscreen-body {
    width: 100%;
    height: 100%;
    margin: 0 !important;
    overflow: hidden !important;
    overscroll-behavior: none;
}
html.bestiarium-app-fullscreen-root #wpadminbar {
    display: none !important;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] {
    position: fixed !important;
    inset: 0 !important;
    z-index: 9000 !important;
    display: flex !important;
    flex-direction: column;
    box-sizing: border-box !important;
    width: 100vw !important;
    max-width: none !important;
    height: 100vh !important;
    height: 100dvh !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding:
        max(8px, env(safe-area-inset-top))
        max(8px, env(safe-area-inset-right))
        max(8px, env(safe-area-inset-bottom))
        max(8px, env(safe-area-inset-left)) !important;
    border-radius: 0 !important;
    overflow: hidden !important;
    overscroll-behavior: none;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-hero {
    z-index: 10000;
    flex: 0 0 auto;
    min-height: 0;
    padding: 10px 170px 10px 12px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-hero-mark {
    width: 42px;
    height: 42px;
    font-size: 23px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-hero-title {
    margin: 0 0 2px;
    font-size: 25px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-hero-eyebrow {
    display: none;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-hero-text {
    font-size: 12px;
    line-height: 1.25;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-fullscreen-controls {
    position: fixed;
    top: max(10px, env(safe-area-inset-top));
    right: max(10px, env(safe-area-inset-right));
    z-index: 10020;
    gap: 6px;
    padding: 4px;
    border: 1px solid rgba(224, 185, 78, 0.72);
    border-radius: 8px;
    background: rgba(35, 20, 8, 0.88);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.48);
    backdrop-filter: blur(3px);
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-fullscreen,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-layout-toggle {
    display: inline-grid;
    width: 44px;
    height: 44px;
    min-width: 44px;
    flex-basis: 44px;
}
/* Keep the live raid pill below the fullscreen controls instead of over them. */
html.bestiarium-app-fullscreen-root #bst-raid-pill {
    top: calc(max(10px, env(safe-area-inset-top)) + 58px) !important;
    right: max(10px, env(safe-area-inset-right)) !important;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-intro-panel {
    flex: 0 1 auto;
    max-height: 38vh;
    overflow-y: auto;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-intro-toggle {
    flex: 0 0 auto;
    align-self: flex-start;
    margin-top: 5px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-statusbar {
    flex: 0 0 auto;
    grid-template-columns: repeat(14, minmax(86px, 1fr));
    gap: 5px;
    margin: 5px 0;
    padding: 5px;
    overflow-x: auto;
    scrollbar-width: thin;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-statusbar .bestiarium-stat {
    min-height: 40px;
    padding: 4px 6px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-mainnav {
    flex: 0 0 auto;
    margin: 3px 0 0;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-mainnav .bestiarium-mainnav-btn {
    padding-top: 8px;
    padding-bottom: 8px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-profile:not([hidden]),
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-stage:not([hidden]) {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-mapview:not([hidden]) {
    flex: 1 1 0;
    min-width: 0;
    min-height: 0;
    height: auto;
    margin-top: 6px;
    padding: 7px;
    overflow: hidden;
    grid-template-columns: minmax(0, 1fr) clamp(300px, 32vw, 520px);
    grid-template-rows: auto minmax(0, 1fr);
    align-items: stretch;
    gap: 7px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-head {
    min-width: 0;
    margin: 0;
    padding: 0 0 5px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-head .bestiarium-section-title {
    font-size: 17px;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-head .bestiarium-section-text {
    display: none;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-wrap {
    grid-column: 1;
    grid-row: 2;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    aspect-ratio: auto;
    margin: 0;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-svg {
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-panel {
    grid-column: 2;
    grid-row: 2;
    align-self: stretch;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    max-height: none;
    margin: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-sidebar-hidden="1"] > .bestiarium-mapview {
    grid-template-columns: minmax(0, 1fr);
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-sidebar-hidden="1"] .bestiarium-map-panel {
    display: none !important;
}

/* Collapsing the top bar leaves only the persistent three-button controller. */
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-hero {
    position: relative;
    height: 0;
    min-height: 0;
    padding: 0 !important;
    border: 0;
    background: transparent;
    overflow: visible;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-hero > .bestiarium-hero-mark,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-hero > .bestiarium-hero-copy,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-language-switcher,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-version-pill,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-intro-panel,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-intro-toggle,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-statusbar,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-mobile-tools,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-mainnav,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-map-head {
    display: none !important;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-hero-meta,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-hero-tools {
    display: block;
    position: static;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-mapview {
    margin-top: 0;
    grid-template-rows: minmax(0, 1fr);
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-map-wrap,
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-map-panel {
    grid-row: 1;
}
html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-map-controls {
    top: 116px;
}

:fullscreen .bestiarium-shell[data-app-fullscreen-active="1"],
:-webkit-full-screen .bestiarium-shell[data-app-fullscreen-active="1"] {
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
}

@media (max-width: 760px) {
    .bestiarium-hero-tools {
        justify-content: center;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] {
        padding:
            max(4px, env(safe-area-inset-top))
            max(4px, env(safe-area-inset-right))
            max(4px, env(safe-area-inset-bottom))
            max(4px, env(safe-area-inset-left)) !important;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-fullscreen-controls {
        top: max(5px, env(safe-area-inset-top));
        right: max(5px, env(safe-area-inset-right));
        gap: 4px;
        padding: 3px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-fullscreen,
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-layout-toggle {
        width: 42px;
        height: 42px;
        min-width: 42px;
        flex-basis: 42px;
    }
    html.bestiarium-app-fullscreen-root #bst-raid-pill {
        top: calc(max(5px, env(safe-area-inset-top)) + 52px) !important;
        right: max(5px, env(safe-area-inset-right)) !important;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-hero {
        grid-template-columns: minmax(0, 1fr);
        min-height: 52px;
        padding: 7px 146px 7px 9px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-hero-mark,
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-hero-text,
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-language-switcher,
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-version-pill {
        display: none;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-hero-title {
        overflow-wrap: anywhere;
        font-size: 20px;
        line-height: 1.05;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-intro-toggle {
        min-height: 38px;
        margin-top: 3px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-statusbar {
        display: flex;
        flex-wrap: nowrap;
        gap: 4px;
        margin: 3px 0;
        padding: 4px;
        overflow-x: auto;
        scroll-snap-type: x proximity;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-statusbar .bestiarium-stat {
        flex: 0 0 84px;
        min-height: 46px;
        scroll-snap-align: start;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-mainnav {
        gap: 4px;
        margin-top: 2px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-mainnav .bestiarium-mainnav-btn {
        min-height: 40px;
        padding: 7px 5px;
        font-size: 10px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-mapview:not([hidden]) {
        position: relative;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto minmax(0, 1fr);
        gap: 4px;
        margin-top: 3px;
        padding: 4px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-head {
        padding: 0 2px 3px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-head .bestiarium-section-title {
        font-size: 14px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-wrap {
        grid-column: 1;
        grid-row: 2;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-map-panel {
        position: absolute;
        top: 50px;
        right: 4px;
        bottom: 4px;
        z-index: 70;
        display: block;
        width: min(88vw, 420px);
        height: auto;
        max-height: none;
        padding: 10px;
        border: 2px solid var(--bestiarium-gold);
        box-shadow: -8px 0 24px rgba(20, 12, 5, 0.55);
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-sidebar-hidden="1"] .bestiarium-map-panel {
        display: none !important;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] > .bestiarium-mapview:not([hidden]) {
        grid-template-rows: minmax(0, 1fr);
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-map-wrap {
        grid-row: 1;
        height: 100%;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-map-panel {
        top: 4px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"][data-app-topbar-hidden="1"] .bestiarium-map-controls {
        top: 108px;
    }
}

@media (max-width: 390px) {
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] > .bestiarium-hero {
        padding-right: 138px;
    }
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-fullscreen,
    html.bestiarium-app-fullscreen-root .bestiarium-shell[data-app-fullscreen-active="1"] .bestiarium-app-layout-toggle {
        width: 38px;
        height: 38px;
        min-width: 38px;
        flex-basis: 38px;
    }
}

/* v4.95.0: player chronicle and Story Quest achievements. */
.bestiarium-badge.is-achievement {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
    border-color: #9d7527;
    background: #fff4cf;
    color: #633b12;
    overflow-wrap: anywhere;
}
.bestiarium-badge.is-achievement > span { color: #9b241f; font-size: 18px; }
.bestiarium-achievement-map-icon { display: inline-grid; place-items: center; min-width: 20px; color: #9b241f; font-size: 17px; line-height: 1; }
.bestiarium-player-chronicle-story {
    margin: 0 0 18px;
    padding-left: 14px;
    border-left: 3px solid #b58732;
    color: #3d2c1c;
    font-size: 17px;
    line-height: 1.6;
    white-space: pre-wrap;
}
.bestiarium-player-chronicle h4 {
    margin: 16px 0 9px;
    color: #6d4a1e;
    font-family: Cinzel, serif;
    font-size: 15px;
}
.bestiarium-achievement-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.bestiarium-achievement-item {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 10px;
    align-items: start;
    min-width: 0;
    padding: 11px;
    border: 1px solid #cfb16d;
    border-radius: 6px;
    background: #fff9e9;
}
.bestiarium-achievement-item > span {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #3b2918;
    color: #efca6c;
    font-size: 23px;
}
.bestiarium-achievement-item strong {
    display: block;
    color: #74251f;
    font-family: Cinzel, serif;
    font-size: 14px;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.bestiarium-achievement-item p {
    margin: 5px 0 0;
    color: #57432d;
    font-size: 14px;
    line-height: 1.4;
}
.bestiarium-player-chronicle.is-public { margin-top: 14px; }
@media (max-width: 620px) {
    .bestiarium-achievement-list { grid-template-columns: 1fr; }
    .bestiarium-player-chronicle-story { font-size: 15px; }
}
/* v4.99.1: player-selected primary Story Quest title. */
.bestiarium-achievement-help {
    margin: -2px 0 11px;
    color: #6a5234;
    font-size: 14px;
    line-height: 1.45;
}
button.bestiarium-achievement-item {
    width: 100%;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
button.bestiarium-achievement-item:hover {
    border-color: #9b6a21;
    background: #fff4d2;
    transform: translateY(-1px);
}
button.bestiarium-achievement-item:focus-visible {
    outline: 3px solid rgba(155, 36, 31, 0.32);
    outline-offset: 2px;
}
button.bestiarium-achievement-item.is-primary {
    border-color: #8f2721;
    background: #fff0c4;
    box-shadow: inset 4px 0 0 #8f2721, 0 3px 10px rgba(79, 45, 13, 0.12);
}
button.bestiarium-achievement-item:disabled {
    cursor: wait;
    opacity: 0.72;
    transform: none;
}
.bestiarium-achievement-choice {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    margin-top: 8px;
    padding: 3px 8px;
    border: 1px solid #b78a3a;
    border-radius: 3px;
    color: #704d1d;
    font-family: Cinzel, serif;
    font-size: 11px;
    font-weight: 700;
}
.is-primary .bestiarium-achievement-choice {
    border-color: #8f2721;
    background: #8f2721;
    color: #fff4cf;
}
.bestiarium-pl-name {
    min-width: 0;
    padding-right: 8px;
    overflow-wrap: anywhere;
}
.bestiarium-map-players .bestiarium-pl-right {
    flex: 0 0 auto;
}
.bestiarium-achievement-map-title {
    display: inline;
    color: #8f2721;
    font-family: Cinzel, serif;
    font-size: 0.92em;
    font-weight: 700;
}
.bestiarium-achievement-map-title .bestiarium-achievement-map-icon {
    display: inline-grid;
    margin-right: 3px;
    vertical-align: -1px;
}
.bestiarium-achievement-map-divider {
    color: #a77b32;
    font-weight: 700;
}
/* v4.99.0: real-player friendship party */
body.bst-player-party-open { overflow: hidden; }
.bst-player-party-overlay {
    --bst-party-ink: #332214;
    --bst-party-soft: #6b5032;
    --bst-party-paper: #f4e5bd;
    --bst-party-paper-light: #fff8e5;
    --bst-party-gold: #b8862c;
    --bst-party-red: #8f2823;
    --bst-party-green: #315f43;
    position: fixed;
    inset: 0;
    z-index: 100020;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(20, 10, 4, 0.84);
    backdrop-filter: blur(4px);
    color: var(--bst-party-ink);
    font-family: 'EB Garamond', Garamond, 'Times New Roman', serif;
}
.bst-player-party-overlay *,
.bst-player-party-overlay *::before,
.bst-player-party-overlay *::after { box-sizing: border-box; }
.bst-player-party-dialog {
    width: min(1080px, 100%);
    max-height: min(92dvh, 900px);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 3px double var(--bst-party-gold);
    border-radius: 6px;
    background: var(--bst-party-paper);
    box-shadow: 0 0 0 4px rgba(143, 40, 35, 0.48), 0 24px 60px rgba(0, 0, 0, 0.62);
}
.bst-player-party-head {
    flex: 0 0 auto;
    min-height: 72px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 12px 15px 12px 20px;
    border-bottom: 3px solid var(--bst-party-gold);
    background: #372416;
    color: #f8e7b5;
}
.bst-player-party-head small {
    display: block;
    margin-bottom: 2px;
    color: #d7bd7d;
    font: 600 10px/1.2 Cinzel, serif;
    letter-spacing: 0;
    text-transform: uppercase;
}
.bst-player-party-head h2 {
    margin: 0;
    font: 600 22px/1.2 Cinzel, serif;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bst-player-party-close,
.bst-player-party-icon-button {
    display: inline-grid;
    place-items: center;
    padding: 0;
    border: 1px solid currentColor;
    border-radius: 4px;
    background: transparent;
    cursor: pointer;
}
.bst-player-party-close {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    color: #fff5d2;
    font: 30px/1 Arial, sans-serif;
}
.bst-player-party-close:hover,
.bst-player-party-close:focus-visible { background: var(--bst-party-red); outline: none; }
.bst-player-party-body {
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 20px;
    -webkit-overflow-scrolling: touch;
}
.bst-player-party-loading,
.bst-player-party-fatal {
    min-height: 340px;
    display: grid;
    place-content: center;
    justify-items: center;
    gap: 12px;
    padding: 30px;
    text-align: center;
}
.bst-player-party-loading > span { color: var(--bst-party-red); font-size: 34px; animation: bst-party-heartbeat 1.4s ease-in-out infinite; }
.bst-player-party-loading p,
.bst-player-party-fatal p { margin: 0; font-size: 17px; }
@keyframes bst-party-heartbeat { 0%, 100% { transform: scale(0.9); opacity: 0.55; } 50% { transform: scale(1.08); opacity: 1; } }
.bst-player-party-intro { max-width: 760px; margin: 0 auto 18px; text-align: center; }
.bst-player-party-intro h3,
.bst-player-party-block h3,
.bst-player-party-banner h3,
.bst-player-party-subblock h4 { margin: 0; font-family: Cinzel, serif; letter-spacing: 0; }
.bst-player-party-intro h3 { color: var(--bst-party-red); font-size: 24px; }
.bst-player-party-intro p { margin: 8px 0 0; color: var(--bst-party-soft); font-size: 17px; line-height: 1.5; }
.bst-player-party-balance {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 9px;
    margin: 0 0 18px;
}
.bst-player-party-balance article {
    min-width: 0;
    min-height: 104px;
    display: grid;
    grid-template-columns: auto 1fr;
    align-content: center;
    gap: 2px 12px;
    padding: 13px 15px;
    border: 1px solid #c7a663;
    border-radius: 6px;
    background: #fff4d5;
}
.bst-player-party-balance span { align-self: center; color: var(--bst-party-red); font: 700 12px Cinzel, serif; }
.bst-player-party-balance strong { justify-self: end; font: 700 25px Cinzel, serif; }
.bst-player-party-balance small { grid-column: 1 / -1; color: var(--bst-party-soft); font-size: 13px; line-height: 1.25; }
.bst-player-party-block,
.bst-player-party-subblock { padding: 15px; border-top: 1px solid #caa65e; }
.bst-player-party-block { margin-top: 14px; background: rgba(255, 248, 229, 0.48); }
.bst-player-party-block h3,
.bst-player-party-subblock h4 { margin-bottom: 11px; color: #61401f; font-size: 16px; }
.bst-player-party-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 9px; align-items: end; }
.bst-player-party-form label,
.bst-player-party-transfer label { min-width: 0; }
.bst-player-party-form label > span,
.bst-player-party-transfer label > span,
.bst-player-party-transfer legend {
    display: block;
    margin-bottom: 5px;
    color: #654620;
    font: 700 11px Cinzel, serif;
    letter-spacing: 0;
    text-transform: uppercase;
}
.bst-player-party-form input,
.bst-player-party-transfer input,
.bst-player-party-transfer select,
.bst-player-party-chat-form textarea {
    width: 100%;
    min-height: 44px;
    padding: 9px 11px;
    border: 1px solid #a77c34;
    border-radius: 4px;
    background: #fffaf0;
    color: var(--bst-party-ink);
    font: 16px/1.3 'EB Garamond', serif;
}
.bst-party-description-form textarea {
    width: 100%;
    min-height: 92px;
    padding: 10px 12px;
    resize: vertical;
    border: 1px solid #a77c34;
    border-radius: 4px;
    background: #fffaf0;
    color: var(--bst-party-ink);
    font: 16px/1.4 'EB Garamond', serif;
}
.bst-player-party-overlay .bestiarium-btn { min-height: 44px; border-radius: 4px; letter-spacing: 0; }
.bst-player-party-invites { display: grid; gap: 8px; }
.bst-player-party-invite {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 11px 12px;
    border-left: 4px solid var(--bst-party-green);
    background: var(--bst-party-paper-light);
}
.bst-player-party-invite strong,
.bst-player-party-invite small { display: block; }
.bst-player-party-invite small { margin-top: 3px; color: var(--bst-party-soft); }
.bst-player-party-inline-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.bst-player-party-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: -20px -20px 15px;
    padding: 15px 20px;
    border-bottom: 1px solid #b78b3e;
    background: #ead39c;
}
.bst-player-party-banner small { display: block; color: #70502b; font: 700 10px Cinzel, serif; text-transform: uppercase; }
.bst-player-party-banner h3 { margin-top: 3px; color: #6f211d; font-size: 21px; overflow-wrap: anywhere; }
.bst-player-party-banner > strong { white-space: nowrap; color: #345940; font: 700 18px Cinzel, serif; }
.bst-player-party-tabs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    border: 1px solid #9f7634;
    background: #e5cc93;
}
.bst-player-party-tabs button {
    min-width: 0;
    min-height: 48px;
    padding: 8px;
    border: 0;
    border-right: 1px solid #9f7634;
    background: transparent;
    color: #563a20;
    font: 700 13px Cinzel, serif;
    letter-spacing: 0;
    overflow-wrap: anywhere;
    cursor: pointer;
}
.bst-player-party-tabs button:last-child { border-right: 0; }
.bst-player-party-tabs button.is-active { background: #3a2818; color: #f6df9e; }
.bst-player-party-tabs button:focus-visible { outline: 3px solid #1f5672; outline-offset: -3px; }
.bst-player-party-tab-content { min-height: 310px; padding: 16px 0 0; }
.bst-player-party-members { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.bst-player-party-member {
    min-width: 0;
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
    padding: 10px;
    border: 1px solid #cfb170;
    border-radius: 6px;
    background: var(--bst-party-paper-light);
}
.bst-player-party-avatar { position: relative; width: 54px; height: 54px; }
.bst-player-party-avatar img,
.bst-player-party-avatar > span { width: 54px; height: 54px; border: 2px solid #8b672e; border-radius: 50%; background: #e2c98d; object-fit: cover; }
.bst-player-party-avatar > span { display: grid; place-items: center; color: #5b3c1d; font: 700 21px Cinzel, serif; }
.bst-player-party-avatar i { position: absolute; right: 0; bottom: 1px; width: 13px; height: 13px; border: 2px solid #fff8e5; border-radius: 50%; background: #8d8270; }
.bst-player-party-member.is-online .bst-player-party-avatar i { background: #2d8a50; }
.bst-player-party-member-copy { min-width: 0; }
.bst-player-party-member-copy strong,
.bst-player-party-member-copy small { display: block; overflow-wrap: anywhere; }
.bst-player-party-member-copy strong { font: 700 15px Cinzel, serif; }
.bst-player-party-member-copy small { margin-top: 3px; color: var(--bst-party-soft); }
.bst-player-party-icon-button { width: 36px; height: 36px; color: var(--bst-party-red); font: 23px Arial, sans-serif; }
.bst-player-party-icon-button:hover { background: #efd3cb; }
.bst-player-party-nearby { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.bst-player-party-nearby > small { flex-basis: 100%; color: var(--bst-party-soft); }
.bst-player-party-nearby button {
    min-height: 43px;
    display: grid;
    padding: 6px 9px;
    border: 1px solid #9a783c;
    border-radius: 4px;
    background: #fff8e5;
    color: var(--bst-party-ink);
    text-align: left;
    cursor: pointer;
}
.bst-player-party-nearby button small { color: var(--bst-party-soft); }
.bst-player-party-history { display: grid; gap: 5px; }
.bst-player-party-history p { display: flex; justify-content: space-between; gap: 12px; margin: 0; padding: 7px 9px; border-bottom: 1px dotted #b79a62; }
.bst-player-party-history p span { min-width: 0; overflow-wrap: anywhere; }
.bst-player-party-history p b { white-space: nowrap; color: var(--bst-party-green); }
.bst-player-party-danger { display: flex; justify-content: flex-end; margin-top: 14px; }
.bst-player-party-chat-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.bst-player-party-chat-head span { font: 700 14px Cinzel, serif; }
.bst-player-party-chat-head i { display: inline-block; width: 9px; height: 9px; margin-right: 7px; border-radius: 50%; background: #2d8a50; box-shadow: 0 0 0 4px rgba(45, 138, 80, 0.15); }
.bst-player-party-chat-head small { color: var(--bst-party-soft); }
.bst-player-party-chat-log {
    height: min(390px, 45dvh);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 10px;
    border: 1px solid #b79556;
    background: #f8edcf;
    -webkit-overflow-scrolling: touch;
}
.bst-player-party-message { width: min(78%, 570px); margin: 0 0 8px; padding: 8px 10px; border-left: 3px solid #6b7c6e; background: #fffaf0; }
.bst-player-party-message.is-mine { margin-left: auto; border-left-color: #9e2e27; background: #f2dfbd; }
.bst-player-party-message header { display: flex; justify-content: space-between; gap: 10px; color: #684a2b; font-size: 12px; }
.bst-player-party-message p { margin: 4px 0 0; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 15px; line-height: 1.35; }
.bst-player-party-chat-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: end; margin-top: 9px; }
.bst-player-party-chat-form textarea { min-height: 62px; resize: vertical; }
.bst-player-party-transfer { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; padding: 14px; border: 1px solid #c6a460; background: #f8edcf; }
.bst-player-party-transfer > fieldset { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; margin: 0; padding: 0; border: 0; }
.bst-player-party-transfer > fieldset legend { grid-column: 1 / -1; }
.bst-player-party-transfer > fieldset label { display: block; }
.bst-player-party-transfer > fieldset input { position: absolute; opacity: 0; pointer-events: none; }
.bst-player-party-transfer > fieldset span { min-height: 44px; display: grid; place-items: center; padding: 7px; border: 1px solid #9f7634; background: #fff8e5; cursor: pointer; }
.bst-player-party-transfer > fieldset input:checked + span { background: #3a2818; color: #f6df9e; }
.bst-player-party-transfer > fieldset input:focus-visible + span { outline: 3px solid #1f5672; }
.bst-player-party-transfer [data-transfer-kind] { display: grid; grid-template-columns: minmax(0, 1fr) 140px; gap: 9px; }
.bst-player-party-transfer [data-transfer-kind][hidden] { display: none; }
.bst-player-party-transfer > button,
.bst-player-party-transfer > small { grid-column: 1 / -1; }
.bst-player-party-transfer > small { color: var(--bst-party-soft); }
.bst-player-party-empty { margin: 12px 0; color: var(--bst-party-soft); font-style: italic; }
.bst-player-party-empty.is-large { min-height: 230px; display: grid; place-items: center; text-align: center; }
.bst-player-party-status { position: sticky; bottom: 0; margin: 12px 0 0; padding: 9px 11px; border-left: 4px solid #765a32; background: #efe2c4; }
.bst-player-party-status.is-success { border-color: #2f7a4c; background: #deecd9; color: #285533; }
.bst-player-party-status.is-error { border-color: #9b332f; background: #f2d7ce; color: #74231f; }
.bst-player-party-status.is-working { border-color: #1f5672; background: #dce8ec; color: #244e61; }
.bst-player-party-loading.is-inline { min-height: 300px; }
.bst-party-chronicle-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(270px, 0.65fr);
    gap: 12px;
    margin-bottom: 14px;
}
.bst-party-description-form,
.bst-party-description-read,
.bst-party-chronicle-create {
    min-width: 0;
    padding: 13px;
    border: 1px solid #ba9651;
    background: #f7e9c5;
}
.bst-party-description-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 9px; }
.bst-party-description-form label { min-width: 0; }
.bst-party-description-form label > span,
.bst-party-description-read > span,
.bst-party-chronicle-create span {
    display: block;
    margin-bottom: 5px;
    color: #7c5527;
    font: 700 11px Cinzel, serif;
    text-transform: uppercase;
}
.bst-party-description-read p { margin: 4px 0 0; line-height: 1.42; white-space: pre-wrap; overflow-wrap: anywhere; }
.bst-party-chronicle-create { display: flex; flex-direction: column; justify-content: space-between; gap: 12px; }
.bst-party-chronicle-create strong { display: block; color: #6f211d; font: 700 16px/1.25 Cinzel, serif; }
.bst-party-chronicle-create .bestiarium-btn { width: 100%; }
.bst-party-chronicle-progress,
.bst-party-chronicle-failure {
    display: flex;
    align-items: center;
    gap: 11px;
    margin: 0 0 12px;
    padding: 10px 12px;
    border-left: 4px solid #2b667b;
    background: #dce8e8;
}
.bst-party-chronicle-progress i { flex: 0 0 16px; width: 16px; height: 16px; border: 2px solid #7da1ad; border-top-color: #234f60; border-radius: 50%; animation: bst-party-spin 0.9s linear infinite; }
.bst-party-chronicle-progress strong,
.bst-party-chronicle-progress small,
.bst-party-chronicle-failure strong,
.bst-party-chronicle-failure span { display: block; }
.bst-party-chronicle-progress small { margin-top: 2px; color: #4c6670; }
.bst-party-chronicle-failure { align-items: flex-start; flex-direction: column; gap: 2px; border-left-color: #96322b; background: #efd9ce; color: #6f231e; }
@keyframes bst-party-spin { to { transform: rotate(360deg); } }
.bst-party-book {
    margin-top: 4px;
    padding: 12px;
    border: 2px solid #6e451f;
    background: #312013;
    box-shadow: 0 8px 22px rgba(38, 21, 8, 0.28);
}
.bst-party-book-stage {
    position: relative;
    height: clamp(410px, 52dvh, 520px);
    display: grid;
    grid-template-columns: minmax(0, 1fr) 12px minmax(0, 1fr);
    perspective: 1600px;
    overflow: hidden;
    border: 1px solid #c69a48;
    background: #efe0b6;
}
.bst-party-book-page { min-width: 0; min-height: 0; overflow: hidden; background: #f8edcc; }
.bst-party-book-page.is-left { border-right: 1px solid #c4a367; }
.bst-party-book-page.is-right { border-left: 1px solid #c4a367; }
.bst-party-book-spine {
    position: relative;
    z-index: 3;
    background: #5d3a1d;
    box-shadow: inset 3px 0 5px rgba(255,255,255,0.2), inset -3px 0 5px rgba(0,0,0,0.45);
}
.bst-party-book-cover-art,
.bst-party-book-illumination {
    position: relative;
    width: 100%;
    height: 100%;
    margin: 0;
    overflow: hidden;
    background: #2f2016;
}
.bst-party-book-cover-art > img,
.bst-party-book-illumination > img { width: 100%; height: 100%; display: block; object-fit: cover; }
.bst-party-book-cover-art > .bst-party-book-sigil,
.bst-party-book-illumination > .bst-party-book-sigil { width: 100%; height: 100%; display: grid; place-items: center; color: #d9b35d; font-size: 78px; }
.bst-party-book-cover-art > div,
.bst-party-book-illumination figcaption {
    position: absolute;
    right: 18px;
    bottom: 18px;
    left: 18px;
    padding: 12px 14px;
    border: 1px solid #e0bd6d;
    background: rgba(43, 27, 15, 0.9);
    color: #f8e6b4;
    text-align: center;
}
.bst-party-book-cover-art small,
.bst-party-book-illumination small { display: block; color: #d6b469; font: 700 10px Cinzel, serif; text-transform: uppercase; }
.bst-party-book-cover-art h4,
.bst-party-book-illumination strong { display: block; margin: 5px 0 0; font: 700 19px/1.25 Cinzel, serif; overflow-wrap: anywhere; }
.bst-party-book-contents,
.bst-party-book-story { height: 100%; min-height: 0; overflow-y: auto; padding: 24px; scrollbar-width: thin; }
.bst-party-book-kicker,
.bst-party-book-story header > span { color: #8b2c25; font: 700 10px Cinzel, serif; text-transform: uppercase; }
.bst-party-book-contents h4,
.bst-party-book-story h4 { margin: 5px 0 16px; color: #5d3a1c; font: 700 19px/1.3 Cinzel, serif; overflow-wrap: anywhere; }
.bst-party-book-contents ol { margin: 0; padding: 0; list-style: none; border-top: 1px solid #c7a35d; }
.bst-party-book-contents li { border-bottom: 1px solid #d8bd82; }
.bst-party-book-contents button {
    width: 100%; min-height: 48px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center;
    padding: 8px 3px; border: 0; background: transparent; color: #402b18; text-align: left; cursor: pointer;
}
.bst-party-book-contents button span { overflow-wrap: anywhere; font-weight: 700; }
.bst-party-book-contents button small { color: #765b37; white-space: nowrap; }
.bst-party-book-story header { padding-bottom: 12px; border-bottom: 1px solid #c7a35d; }
.bst-party-book-story header small { color: #765b37; }
.bst-party-book-story > div { padding-top: 10px; }
.bst-party-book-story p { margin: 0 0 0.72em; font-size: 16px; line-height: 1.5; text-align: left; }
.bst-party-book-leaf {
    position: absolute;
    z-index: 6;
    top: 0;
    right: 0;
    bottom: 0;
    width: calc((100% - 12px) / 2);
    opacity: 0;
    pointer-events: none;
    transform-style: preserve-3d;
    transform-origin: left center;
}
.bst-party-book-leaf-front,
.bst-party-book-leaf-back { position: absolute; inset: 0; overflow: hidden; backface-visibility: hidden; background: #f8edcc; }
.bst-party-book-leaf-back { transform: rotateY(180deg); }
.bst-party-book-stage.is-turning-next .bst-party-book-leaf { opacity: 1; animation: bst-party-page-next 0.42s ease-in-out forwards; }
.bst-party-book-stage.is-turning-prev .bst-party-book-leaf { opacity: 1; animation: bst-party-page-next 0.42s ease-in-out reverse; }
@keyframes bst-party-page-next { from { transform: rotateY(0deg); } to { transform: rotateY(-180deg); } }
.bst-party-book-nav { display: grid; grid-template-columns: 46px 1fr 46px; align-items: center; gap: 8px; margin-top: 10px; }
.bst-party-book-nav button { width: 46px; height: 42px; border: 1px solid #c79d4a; border-radius: 4px; background: #f3dfaa; color: #4d3019; font: 31px/1 Georgia, serif; cursor: pointer; }
.bst-party-book-nav button:disabled { opacity: 0.35; cursor: default; }
.bst-party-book-nav span { color: #f4dfaa; text-align: center; font: 700 12px Cinzel, serif; }
.bst-party-chronicle-more { display: flex; justify-content: center; margin-top: 12px; }
@media (max-width: 700px) {
    .bst-player-party-overlay { align-items: stretch; padding: 0; }
    .bst-player-party-dialog { width: 100%; max-height: 100dvh; border-width: 0; border-radius: 0; box-shadow: none; }
    .bst-player-party-head { min-height: 64px; padding: 9px 10px 9px 14px; }
    .bst-player-party-head h2 { font-size: 18px; }
    .bst-player-party-body { padding: 13px; }
    .bst-player-party-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .bst-player-party-tabs button:nth-child(2) { border-right: 0; }
    .bst-player-party-tabs button:nth-child(-n + 2) { border-bottom: 1px solid #9f7634; }
    .bst-player-party-banner { margin: -13px -13px 12px; padding: 12px 13px; }
    .bst-player-party-balance { grid-template-columns: 1fr; gap: 6px; }
    .bst-player-party-balance article { min-height: 76px; }
    .bst-player-party-members { grid-template-columns: 1fr; }
    .bst-player-party-form,
    .bst-player-party-chat-form,
    .bst-player-party-transfer { grid-template-columns: 1fr; }
    .bst-player-party-form .bestiarium-btn,
    .bst-player-party-chat-form .bestiarium-btn { width: 100%; }
    .bst-player-party-transfer > fieldset,
    .bst-player-party-transfer > button,
    .bst-player-party-transfer > small { grid-column: 1; }
    .bst-player-party-transfer [data-transfer-kind] { grid-template-columns: 1fr; }
    .bst-player-party-invite { grid-template-columns: 1fr; }
    .bst-player-party-inline-actions .bestiarium-btn { flex: 1 1 120px; }
    .bst-player-party-message { width: 91%; }
    .bst-player-party-history p { align-items: flex-start; flex-direction: column; gap: 2px; }
    .bst-player-party-history p b { white-space: normal; }
    .bst-party-description-form,
    .bst-party-chronicle-toolbar { grid-template-columns: 1fr; }
    .bst-party-description-form .bestiarium-btn { width: 100%; }
    .bst-party-book { margin-inline: -7px; padding: 7px; }
    .bst-party-book-stage {
        height: auto;
        display: grid;
        grid-template-columns: 1fr;
        overflow: visible;
        perspective: none;
    }
    .bst-party-book-page { min-height: 300px; }
    .bst-party-book-page.is-left,
    .bst-party-book-page.is-right { border: 0; }
    .bst-party-book-spine,
    .bst-party-book-leaf { display: none; }
    .bst-party-book-contents,
    .bst-party-book-story { height: auto; max-height: 440px; padding: 18px; }
    .bst-party-book-cover-art,
    .bst-party-book-illumination { min-height: 300px; max-height: 390px; }
    .bst-party-book-cover-art > div,
    .bst-party-book-illumination figcaption { right: 10px; bottom: 10px; left: 10px; }
}
@media (max-width: 390px) {
    .bst-player-party-tabs button { font-size: 11px; padding-inline: 4px; }
    .bst-player-party-member { grid-template-columns: 48px minmax(0, 1fr) auto; }
    .bst-player-party-avatar,
    .bst-player-party-avatar img,
    .bst-player-party-avatar > span { width: 48px; height: 48px; }
}
/* v4.99.2: transparent combat calculations from the authoritative server roll. */
.bestiarium-beast-arena-log {
    max-height: 220px;
    scroll-behavior: smooth;
}
.bestiarium-combat-calculation {
    display: grid;
    gap: 5px;
    margin: 7px 0;
    padding: 8px;
    border: 1px solid rgba(91, 61, 25, 0.42);
    border-left: 4px solid #2f6b83;
    border-radius: 4px;
    background: rgba(255, 250, 226, 0.92);
    box-shadow: 0 2px 7px rgba(58, 36, 18, 0.1);
}
.bestiarium-combat-calculation.is-foe {
    border-left-color: var(--bestiarium-red, #9b1e1e);
    background: rgba(255, 238, 218, 0.94);
}
.bestiarium-combat-calculation.is-spell,
.bestiarium-combat-calculation.is-prayer {
    border-left-color: #6d4b9a;
}
.bestiarium-combat-calculation.is-heal {
    border-left-color: #397b45;
}
.bestiarium-combat-calculation-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    padding-bottom: 4px;
    border-bottom: 1px solid rgba(184, 134, 44, 0.35);
}
.bestiarium-combat-calculation-head strong {
    min-width: 0;
    font-family: 'Cinzel', serif;
    font-size: 12px;
    color: #4a2f16;
}
.bestiarium-combat-calculation-head b {
    flex: 0 0 auto;
    font-family: 'Cinzel', serif;
    font-size: 14px;
    color: var(--bestiarium-red, #9b1e1e);
}
.bestiarium-combat-calculation.is-player .bestiarium-combat-calculation-head b,
.bestiarium-combat-calculation.is-heal .bestiarium-combat-calculation-head b {
    color: #2f6d3c;
}
.bestiarium-combat-calculation-row {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 7px;
}
.bestiarium-combat-calculation-row > span {
    font-weight: 700;
    color: #624421;
}
.bestiarium-combat-calculation-row code {
    min-width: 0;
    overflow-wrap: anywhere;
    white-space: normal;
    font-family: Consolas, 'Courier New', monospace;
    font-size: 11px;
    color: #352515;
}
.bestiarium-combat-calculation-row > b {
    white-space: nowrap;
    color: #3d2815;
}
.bestiarium-combat-calculation-note {
    display: block;
    padding-top: 3px;
    color: #725431;
    line-height: 1.25;
}
@media (max-width: 700px) {
    .bestiarium-beast-arena-stage {
        height: 132px;
    }
    .bestiarium-beast-arena-log {
        min-height: 118px;
        max-height: min(30vh, 170px);
    }
    .bestiarium-combat-calculation {
        padding: 7px 6px;
    }
    .bestiarium-combat-calculation-head {
        align-items: flex-start;
    }
    .bestiarium-combat-calculation-row {
        grid-template-columns: 48px minmax(0, 1fr) auto;
        gap: 5px;
    }
    .bestiarium-combat-calculation-row code {
        font-size: 10px;
    }
}
@media (max-width: 700px) and (max-height: 620px) {
    .bestiarium-beast-arena-stage {
        height: 110px;
    }
    .bestiarium-beast-arena-log {
        min-height: 88px;
        max-height: 118px;
    }
}
/* v4.100.0: bard music pill + party voice pill + party voice bar */
.bestiarium-bard-pill,
.bst-party-voice-pill {
    position: fixed;
    left: 12px;
    z-index: 99500;
    display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
    max-width: min(420px, 90vw);
    padding: 7px 11px;
    background: linear-gradient(180deg, #3a2412, #2a1a0c);
    color: #f6e7bd;
    border: 1px solid rgba(246, 200, 79, 0.55);
    border-radius: 999px;
    font: 600 12px/1.3 'Cinzel', serif;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45);
}
.bestiarium-bard-pill { bottom: 12px; }
.bst-party-voice-pill { bottom: 56px; }
.bestiarium-bard-pill button,
.bst-party-voice-pill button {
    border: 1px solid rgba(246, 200, 79, 0.5);
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.3);
    color: #f6e7bd;
    padding: 2px 8px;
    cursor: pointer;
    font: inherit;
}
.bst-party-voice-roster {
    flex-basis: 100%;
    font: 400 10px/1.3 'EB Garamond', Georgia, serif;
    color: #d9c391;
}
.bst-party-voicebar {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin: 0 0 10px;
    padding: 9px 12px;
    border: 1px solid rgba(184, 134, 44, 0.5);
    border-radius: 6px;
    background: rgba(246, 200, 79, 0.12);
}
.bst-party-voicebar small { color: #6d542f; }
.bst-party-voicebar [data-party-voice-roster] { font-size: 11px; color: #4c3a1e; }
@media (max-width: 600px) {
    .bestiarium-bard-pill, .bst-party-voice-pill { left: 8px; max-width: 92vw; font-size: 11px; }
}
/* v4.101.0: party conquest — target list + attack lobby (reuses .bst-sh-* modal styles) */
.bst-shp-title { margin: 0 0 6px; font: 600 18px 'Cinzel', serif; }
.bst-shp-count { margin: 0 0 12px; color: #7d211d; font-weight: 700; }
.bst-shp-count strong { font: 700 20px 'Cinzel', serif; font-variant-numeric: tabular-nums; }
.bst-shp-targets { display: grid; gap: 8px; margin-top: 10px; }
.bst-shp-row {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center;
    padding: 9px 11px; border: 1px solid #c2a36a; background: #fff5db;
}
.bst-shp-row .bst-shp-copy strong, .bst-shp-row .bst-shp-copy small { display: block; overflow-wrap: anywhere; }
.bst-shp-row .bst-shp-copy small { color: #745934; }
.bst-shp-roster { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 7px; margin: 0 0 10px; }
.bst-shp-member {
    display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 8px; align-items: center;
    padding: 7px 9px; border: 1px solid #c2a36a; background: #fff5db;
}
.bst-shp-member strong, .bst-shp-member small { display: block; overflow-wrap: anywhere; }
.bst-shp-member small { color: #745934; }
.bst-shp-dot {
    display: flex; align-items: center; justify-content: center;
    width: 24px; height: 24px; border-radius: 50%;
    border: 1px solid #8f6d35; background: #e6d3a4; color: #6d542f; font-weight: 700;
}
.bst-shp-member.is-ready { border-color: #4b752f; background: #e1e5bd; }
.bst-shp-member.is-ready .bst-shp-dot { border-color: #4b752f; background: #4b752f; color: #f2f5da; }
@media (max-width: 600px) {
    .bst-shp-row { grid-template-columns: 1fr; }
    .bst-shp-row .bst-sh-btn { width: 100%; }
}

/* v4.127.0: paid house advertising and the separate player-sales catalogue. */
.bestiarium-house-market-ad {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 14px;
    margin: 14px 0;
    padding: 12px;
    border: 1px solid #b78a3b;
    border-left: 4px solid #8e251f;
    border-radius: 6px;
    background: #fff2cb;
}
.bestiarium-house-market-ad strong,
.bestiarium-house-market-ad small { display: block; }
.bestiarium-house-market-ad p { margin: 4px 0; color: #654923; }
.bestiarium-house-market-ad small { color: #765a32; }
.bestiarium-house-market-ad small.is-active { color: #2f692e; font-weight: 700; }

.bst-player-market-overlay {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(8px, 2vw, 24px);
    background: rgba(28, 18, 10, 0.76);
    overflow: hidden;
}
.bst-player-market-panel {
    position: relative;
    width: min(1180px, 100%);
    max-height: min(900px, calc(100dvh - 24px));
    overflow: auto;
    overscroll-behavior: contain;
    border: 3px double #ba8730;
    border-radius: 6px;
    background: #f8e8bd;
    color: #3a2615;
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.52);
}
.bst-player-market-head {
    position: sticky;
    top: 0;
    z-index: 3;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto 42px;
    align-items: center;
    gap: 16px;
    padding: 16px 18px;
    border-bottom: 2px solid #b78634;
    background: #392313;
    color: #f6df9e;
}
.bst-player-market-head small,
.bst-player-market-head p { display: block; margin: 0; color: #d9c48c; }
.bst-player-market-head h2 {
    margin: 2px 0 4px;
    color: #f6df9e;
    font: 700 clamp(20px, 2.2vw, 30px)/1.1 'Cinzel', serif;
    letter-spacing: 0;
}
.bst-player-market-balance {
    min-width: 126px;
    padding: 7px 11px;
    border: 1px solid rgba(245, 217, 139, 0.48);
    text-align: right;
}
.bst-player-market-balance span,
.bst-player-market-balance strong { display: block; }
.bst-player-market-balance span { font-size: 11px; color: #d9c48c; }
.bst-player-market-balance strong { font: 700 18px 'Cinzel', serif; color: #ffd465; }
.bst-player-market-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    padding: 0;
    border: 1px solid #cfa74f;
    border-radius: 4px;
    background: #6f201c;
    color: #fff1cc;
    font: 700 27px/1 Arial, sans-serif;
    cursor: pointer;
}
.bst-player-market-panel > .bst-player-market-close {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 2;
}
.bst-player-market-tools {
    display: grid;
    grid-template-columns: minmax(240px, 1.4fr) minmax(190px, .6fr) minmax(190px, .6fr);
    gap: 12px;
    padding: 16px 18px 10px;
}
.bst-player-market-tools label { display: grid; gap: 5px; min-width: 0; }
.bst-player-market-tools label > span {
    color: #65451f;
    font: 700 11px 'Cinzel', serif;
}
.bst-player-market-tools input,
.bst-player-market-tools select {
    width: 100%;
    min-width: 0;
    height: 42px;
    padding: 7px 10px;
    border: 1px solid #aa7b31;
    border-radius: 4px;
    background: #fff8df;
    color: #342313;
}
.bst-player-market-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 0 18px 12px;
}
.bst-player-market-tabs button {
    min-height: 38px;
    padding: 7px 12px;
    border: 1px solid #9d722d;
    border-radius: 4px;
    background: #ebd49b;
    color: #493014;
    font: 700 11px 'Cinzel', serif;
    cursor: pointer;
}
.bst-player-market-tabs button.is-active {
    border-color: #7b211e;
    background: #7b211e;
    color: #fff1cb;
}
.bst-player-market-status {
    min-height: 0;
    margin: 0 18px;
    padding: 0;
    color: #5e4727;
}
.bst-player-market-status:not(:empty) { min-height: 38px; padding: 8px 10px; border: 1px solid #bb9147; background: #fff3ce; }
.bst-player-market-status.is-success { border-color: #56804a; color: #31582e; }
.bst-player-market-status.is-error { border-color: #9d322d; color: #81251f; }
.bst-player-market-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    align-items: stretch;
    gap: 12px;
    padding: 14px 18px 20px;
}
.bst-player-market-card {
    display: grid;
    grid-template-rows: 160px minmax(0, 1fr);
    min-width: 0;
    border: 1px solid #a87930;
    border-radius: 6px;
    overflow: hidden;
    background: #fff5d8;
    box-shadow: 0 4px 12px rgba(76, 48, 17, 0.14);
}
.bst-player-market-card[hidden] { display: none; }
.bst-player-market-image { position: relative; overflow: hidden; background: #281b11; }
.bst-player-market-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.bst-player-market-image > span:last-child {
    position: absolute;
    right: 6px;
    bottom: 6px;
    left: 6px;
    padding: 5px 7px;
    background: rgba(38, 24, 12, 0.88);
    color: #f6df9e;
    font: 700 10px 'Cinzel', serif;
    text-align: center;
}
.bst-player-market-image-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: #d4a94b;
    font-size: 56px;
}
.bst-player-market-copy { display: flex; flex-direction: column; min-width: 0; padding: 11px; }
.bst-player-market-copy > small { color: #7b211e; font-weight: 700; overflow-wrap: anywhere; }
.bst-player-market-copy h4 {
    margin: 4px 0 7px;
    color: #352313;
    font: 700 15px/1.25 'Cinzel', serif;
    letter-spacing: 0;
    overflow-wrap: anywhere;
}
.bst-player-market-copy > p {
    display: -webkit-box;
    margin: 7px 0 10px;
    overflow: hidden;
    color: #674c2b;
    font-size: 13px;
    line-height: 1.35;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}
.bst-player-market-pills { display: flex; flex-wrap: wrap; gap: 5px; }
.bst-player-market-pill {
    padding: 3px 6px;
    border: 1px solid #c5a264;
    border-radius: 3px;
    background: #f1dfb2;
    color: #59401e;
    font-size: 11px;
}
.bst-player-market-price {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 8px;
    margin-top: auto;
    padding: 9px 0;
    border-top: 1px solid #d6b774;
    color: #755a34;
    font-size: 11px;
}
.bst-player-market-price strong { grid-column: 1 / -1; color: #71301d; font: 700 17px 'Cinzel', serif; }
.bst-player-market-copy > .bestiarium-btn { width: 100%; min-height: 42px; }
.bst-player-market-empty,
.bst-player-market-loading {
    margin: 18px;
    padding: 32px 18px;
    border: 1px dashed #b48b47;
    text-align: center;
    color: #654923;
}
.bst-player-market-empty.is-error { color: #842a24; }
.bst-player-market-loading { display: grid; justify-items: center; gap: 10px; }
.bst-player-market-loading span {
    width: 30px;
    height: 30px;
    border: 3px solid #d7b66f;
    border-top-color: #7b211e;
    border-radius: 50%;
    animation: bst-player-market-spin .8s linear infinite;
}
@keyframes bst-player-market-spin { to { transform: rotate(360deg); } }

@media (max-width: 700px) {
    .bestiarium-house-market-ad { grid-template-columns: 1fr; }
    .bestiarium-house-market-ad .bestiarium-btn { width: 100%; }
    .bst-player-market-overlay { align-items: stretch; padding: 0; }
    .bst-player-market-panel { width: 100%; max-height: 100dvh; border-width: 0; border-radius: 0; }
    .bst-player-market-head { grid-template-columns: minmax(0, 1fr) 42px; gap: 8px; padding: 12px; }
    .bst-player-market-head p { display: none; }
    .bst-player-market-balance { grid-column: 1 / -1; grid-row: 2; min-width: 0; padding: 5px 8px; text-align: left; }
    .bst-player-market-balance span,
    .bst-player-market-balance strong { display: inline; margin-right: 8px; }
    .bst-player-market-tools { grid-template-columns: 1fr; padding: 12px 12px 8px; }
    .bst-player-market-tabs { flex-wrap: nowrap; padding: 0 12px 10px; overflow-x: auto; }
    .bst-player-market-tabs button { flex: 0 0 auto; white-space: nowrap; }
    .bst-player-market-status { margin-inline: 12px; }
    .bst-player-market-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 10px 12px 18px; }
    .bst-player-market-card { grid-template-rows: 118px minmax(0, 1fr); }
    .bst-player-market-copy { padding: 8px; }
    .bst-player-market-copy h4 { font-size: 12px; }
    .bst-player-market-copy > p { display: none; }
    .bst-player-market-price { grid-template-columns: 1fr; }
    .bst-player-market-price strong { grid-column: 1; font-size: 14px; }
}
@media (max-width: 390px) {
    .bst-player-market-grid { grid-template-columns: 1fr; }
    .bst-player-market-card { grid-template-columns: 105px minmax(0, 1fr); grid-template-rows: auto; }
    .bst-player-market-image { min-height: 150px; }
}
