/* Reino 2.0.3: identidade pública, Jornal do Reino, Ranking dos Heróis, Cemitério e Mausoléu. */

.visually-hidden { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ---------- Identidade: título estilizado + nome-base ---------- */
.lddv-identity { display: inline; overflow-wrap: anywhere; }
.lddv-identity-title { display: inline-block; font-size: .82em; line-height: 1.3; vertical-align: baseline; padding: .05em .4em; margin-right: .15em; }
.lddv-identity-title--custom { --era-color: #f0d9a8; font-style: italic; }
.lddv-identity-name { font-weight: 600; color: #eee5cc; }
.lddv-identity--journal .lddv-identity-name, .lddv-identity--ranking .lddv-identity-name { color: inherit; }
.lddv-identity--profile .lddv-identity-title, .lddv-identity--promotion .lddv-identity-title { font-size: .9em; }
.ux-character-mini .lddv-identity-title { font-size: .78em; }
.ux-social .lddv-identity-title { font-size: 11px; padding: 0 .35em; }

/* ---------- Jornal do Reino / Acontecimentos ---------- */
.lddv-journal-head h2 { margin: 0 0 6px; }
.lddv-journal-lead, .lddv-ranking-lead { color: var(--muted); font-size: 14px; line-height: 1.55; margin: 0 0 12px; }
.lddv-journal-highlights { margin: 10px 0 16px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: linear-gradient(140deg, #1d3326, #13241e); }
.lddv-journal-highlights h3 { margin: 0 0 8px; font-size: 18px; }
.lddv-journal-highlights ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 10px; }
.lddv-journal-card { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; background: var(--paper); min-width: 0; }
.lddv-journal-card--epica { border-color: var(--gold); box-shadow: inset 0 0 0 1px #d8b97a40; }
.lddv-journal-card p { margin: 0; }
.lddv-journal-filters, .lddv-ranking-tabs { margin: 10px 0 8px; }
.lddv-journal-filters a, .lddv-ranking-tabs a { border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px !important; min-height: 44px !important; display: inline-flex; align-items: center; }
.lddv-journal-filters a.is-current, .lddv-ranking-tabs a.is-current { border-color: var(--gold); color: #eee5cc; background: #294031; }
.lddv-journal-filters a.is-current::before, .lddv-ranking-tabs a.is-current::before { content: '✓ '; color: var(--gold); }
.lddv-journal-status, .lddv-ranking-status { color: var(--muted); font-size: 13px; margin: 6px 0 10px; }
.lddv-journal-day { margin: 14px 0 0; }
.lddv-journal-day h3 { font-size: 16px; color: var(--gold); margin: 0 0 6px; border-bottom: 1px solid var(--line); padding-bottom: 6px; }
.lddv-journal-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.lddv-journal-item { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; background: var(--paper); min-width: 0; }
.lddv-journal-item--relevante { border-left: 4px solid var(--green); }
.lddv-journal-item--epica { border-left: 4px solid var(--gold); background: linear-gradient(90deg, #2a3a22, var(--paper)); }
.lddv-journal-icon { display: flex; align-items: flex-start; justify-content: center; padding-top: 2px; }
.lddv-journal-body { min-width: 0; }
.lddv-journal-headline { margin: 0; font-size: 15px; line-height: 1.5; }
.lddv-journal-summary { margin: 2px 0 0; font-size: 13px; color: var(--muted); }
.lddv-journal-meta { margin: 4px 0 0; display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; font-size: 12px; color: var(--muted); }
.lddv-journal-chip { border: 1px solid var(--line); border-radius: 999px; padding: 1px 8px; }
.lddv-journal-importance { font-size: 11px; letter-spacing: .05em; text-transform: uppercase; }
.lddv-journal-enemy { color: #eee5cc; font-weight: 600; }
.lddv-journal-empty, .lddv-ranking-empty { display: flex; gap: 10px; align-items: flex-start; padding: 14px; border: 1px dashed var(--line); border-radius: 6px; margin: 8px 0; }
.lddv-journal-empty p, .lddv-ranking-empty p { margin: 0; line-height: 1.55; }
.lddv-journal-pagination, .lddv-ranking-pagination { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; margin-top: 12px; }
.lddv-journal-pagination a, .lddv-ranking-pagination a { border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; min-height: 44px; display: inline-flex; align-items: center; }

/* ---------- Ranking dos Heróis ---------- */
.lddv-ranking-criteria { font-size: 13px; margin: 0 0 8px; }
.lddv-ranking-filters { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-end; margin: 6px 0 12px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; background: var(--panel); }
.lddv-ranking-filters label { display: grid; gap: 4px; font-size: 12px; color: var(--muted); min-width: 0; }
.lddv-ranking-filters select, .lddv-ranking-filters input { min-height: 44px; min-width: 0; max-width: 100%; }
.lddv-ranking-scroll { max-width: 100%; overflow-x: auto; }
.lddv-ranking-table { width: 100%; border-collapse: collapse; font-size: 14px; table-layout: fixed; }
/* Larguras fixas: a tabela ocupa exatamente a coluna principal; palavras só quebram em espaços. */
.lddv-ranking-table th:nth-child(1) { width: 7%; }
.lddv-ranking-table th:nth-child(2) { width: 21%; }
.lddv-ranking-table th:nth-child(3) { width: 8%; }
.lddv-ranking-table th:nth-child(4) { width: 12%; }
.lddv-ranking-table th:nth-child(5), .lddv-ranking-table th:nth-child(8), .lddv-ranking-table th:nth-child(11) { width: 7%; }
.lddv-ranking-table th:nth-child(6), .lddv-ranking-table th:nth-child(7), .lddv-ranking-table th:nth-child(9), .lddv-ranking-table th:nth-child(10) { width: 8%; }
.lddv-ranking-table .lddv-ranking-hero { overflow-wrap: anywhere; }
.lddv-ranking-table th, .lddv-ranking-table td { padding: 8px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
/* Quebra só em espaços: nada de "Hum ano"; a tabela rola na própria caixa se precisar. */
.lddv-ranking-table th, .lddv-ranking-table td { overflow-wrap: normal; word-break: normal; hyphens: none; }
.lddv-ranking-table th { position: sticky; top: 0; background: #13241e; color: var(--gold); font-size: 12px; letter-spacing: .04em; text-transform: uppercase; z-index: 1; }
.lddv-ranking-table td:nth-child(n+5) { font-variant-numeric: tabular-nums; }
.lddv-ranking-sort { color: inherit; text-decoration: none; display: inline-flex; min-height: 32px; align-items: center; gap: 4px; }
.lddv-ranking-sort.is-sorted { border-bottom: 2px solid var(--gold); }
.lddv-ranking-sort-state { font-size: 10px; text-transform: none; letter-spacing: 0; color: var(--muted); }
.lddv-ranking-row--top { background: #1d3326; }
.lddv-ranking-hero { min-width: 0; }
.lddv-ranking-era { font-size: 12px; }
.lddv-ranking-position { display: inline-block; min-width: 2.6em; text-align: center; font-variant-numeric: tabular-nums; }
.lddv-medal { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: #eee5cc; }
.lddv-medal-shape { width: 18px; height: 18px; border: 2px solid currentColor; display: inline-block; }
.lddv-medal--1 { color: #ffd75a; }
.lddv-medal--1 .lddv-medal-shape { border-radius: 50%; background: #ffd75a55; }
.lddv-medal--2 { color: #cfd6dd; }
.lddv-medal--2 .lddv-medal-shape { border-radius: 3px; background: #cfd6dd55; }
.lddv-medal--3 { color: #d69a63; }
.lddv-medal--3 .lddv-medal-shape { border-radius: 3px; transform: rotate(45deg); width: 14px; height: 14px; background: #d69a6355; }
/* Abaixo de 1100 px (inclui zoom 200 %) a tabela vira cartões: onze colunas não cabem ao lado da ficha. */
@media (max-width: 1100px) {
  .lddv-ranking-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .lddv-ranking-table, .lddv-ranking-table tbody, .lddv-ranking-table tr, .lddv-ranking-table td { display: block; }
  .lddv-ranking-table tr { border: 1px solid var(--line); border-radius: 6px; margin: 0 0 10px; padding: 8px 10px; background: var(--paper); }
  .lddv-ranking-table td { display: flex; justify-content: space-between; gap: 10px; padding: 4px 0; border: 0; font-size: 14px; }
  .lddv-ranking-table td::before { content: attr(data-label); color: var(--muted); font-size: 12px; }
  .lddv-ranking-table td:first-child, .lddv-ranking-table td:nth-child(2) { justify-content: flex-start; }
  .lddv-ranking-hero { min-width: 0; font-size: 16px; }
}

/* ---------- Cemitério e Mausoléu ---------- */
.lddv-grave { display: grid; grid-template-columns: minmax(0, 42%) minmax(0, 1fr); gap: 22px; align-items: start; margin: 6px 0 4px; --grave-blue: #7fd7ff; --grave-violet: #a98cff; --grave-stone: #22263a; --grave-line: #3c4666; }
.lddv-grave-scene { margin: 0; min-width: 0; }
.lddv-grave-scene .lddv-scene img, .lddv-grave-scene img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; max-width: 100%; object-fit: cover; border: 1px solid var(--grave-line); border-radius: 8px; box-shadow: 0 0 30px #7fd7ff22; }
.lddv-grave-scene--portrait .lddv-scene img, .lddv-grave-scene--portrait img { aspect-ratio: 1 / 1; max-width: 280px; }
.lddv-grave-scene figcaption { margin-top: 8px; color: var(--muted); font-size: 13px; line-height: 1.5; }
.lddv-grave-main { min-width: 0; }
.lddv-grave-main h2 { margin: 0 0 10px; color: #dbe9ff; text-shadow: 0 0 14px #7fd7ff44; }
.lddv-grave-state { margin: 0 0 12px; font-size: 14px; line-height: 1.55; }
.lddv-grave-soul { background: linear-gradient(140deg, #1a1f3a, #121628); border-color: var(--grave-line); }
.lddv-grave-soul strong { color: #dbe9ff; }
.lddv-grave-soul meter { border-color: #4a5680; background: #0a0d1c; }
.lddv-grave-say { font: italic 17px/1.5 Georgia, serif; color: #c9d8ff; margin: 8px 0 12px; }
.lddv-grave-note { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; color: var(--muted); margin: 8px 0; line-height: 1.5; }
.lddv-grave-error { display: flex; gap: 8px; align-items: flex-start; margin: 10px 0; padding: 10px 12px; border: 1px solid #8a4a4a; border-radius: 6px; background: #2c1a1f; color: #f2d7d7; }
.lddv-grave-receipt { display: flex; gap: 9px; align-items: center; margin: 12px 0; padding: 10px 12px; border: 1px solid #5a6a9a; border-radius: 6px; background: #1a2140; color: #dbe9ff; font-weight: 600; }
.lddv-grave-destinations { list-style: none; margin: 14px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(216px, 1fr)); gap: 12px; }
.lddv-grave-card { border: 1px solid var(--grave-line); border-radius: 7px; background: linear-gradient(160deg, #1b2038, #141829); padding: 14px; min-width: 0; display: grid; gap: 6px; align-content: start; }
.lddv-grave-card.is-main { border-color: var(--grave-violet); box-shadow: inset 0 0 0 1px #a98cff40, 0 0 24px #a98cff22; }
.lddv-grave-card p { margin: 0; font-size: 14px; line-height: 1.5; }
.lddv-grave-card .lddv-action-form { margin: 0; }
.lddv-grave-card .lddv-btn { width: 100%; justify-content: center; }
.lddv-grave-card-title { display: flex; align-items: center; gap: 8px; margin: 0; font: 400 19px/1.25 Georgia, serif; color: #dbe9ff; }
.lddv-grave-facts { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 6px; }
.lddv-grave-facts li { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; line-height: 1.5; }
.lddv-grave-rules { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.55; }
.lddv-grave-rules li + li { margin-top: 6px; }
.lddv-grave-offers .lddv-healer-offer { background: linear-gradient(160deg, #1b2038, #141829); border-color: var(--grave-line); }
.lddv-grave-offers .lddv-healer-offer.is-best { border-color: var(--grave-violet); }
.lddv-grave-requirements { margin: 10px 0 14px; }
.lddv-ramius { margin: 8px 0 14px; padding: 12px 14px; border: 1px solid var(--grave-line); border-radius: 8px; background: linear-gradient(140deg, #1a1f3a, #0f1224); }
.lddv-ramius-head { display: flex; gap: 12px; align-items: center; margin-bottom: 8px; }
.lddv-ramius-head .lddv-scene img { width: 64px; height: 64px; border-radius: 50%; border: 2px solid var(--grave-blue); box-shadow: 0 0 16px #7fd7ff55; }
.lddv-ramius-name { display: block; font: 400 20px/1.2 Georgia, serif; color: #dbe9ff; }
.lddv-ramius-role { display: block; font-size: 12px; color: var(--muted); letter-spacing: .05em; text-transform: uppercase; }
.lddv-ramius-lines { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.lddv-ramius-lines li { position: relative; padding: 8px 12px 8px 26px; border-left: 3px solid var(--grave-violet); background: #ffffff08; border-radius: 0 6px 6px 0; font: italic 15px/1.5 Georgia, serif; color: #e6edff; }
.lddv-ramius-lines li::before { content: '"'; position: absolute; left: 10px; top: 4px; color: var(--grave-violet); font-size: 20px; }
@media (max-width: 850px) {
  .lddv-grave { grid-template-columns: minmax(0, 1fr); }
  .lddv-grave-scene--portrait .lddv-scene img, .lddv-grave-scene--portrait img { max-width: 200px; }
}
@media (max-width: 430px) {
  .lddv-journal-item { grid-template-columns: 26px minmax(0, 1fr); padding: 8px 10px; }
  .lddv-grave-destinations { grid-template-columns: minmax(0, 1fr); }
  .lddv-ranking-filters { padding: 8px; }
  .lddv-ranking-filters label { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .lddv-grave *, .lddv-journal *, .lddv-ranking * { animation: none !important; transition: none !important; }
}

/* ---------- Banco Vivo (ADR-024) ---------- */
.lddv-bank { display: grid; grid-template-columns: minmax(0, 42%) minmax(0, 1fr); gap: 22px; align-items: start; margin: 6px 0 4px; --bank-gold: #e0b458; --bank-wood: #3a2a16; --bank-line: #6b5330; }
.lddv-bank-scene { margin: 0; min-width: 0; }
.lddv-bank-scene .lddv-scene img, .lddv-bank-scene img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; max-width: 100%; object-fit: cover; border: 1px solid var(--bank-line); border-radius: 8px; box-shadow: 0 0 30px #e0b45822; }
.lddv-bank-scene figcaption { margin-top: 8px; color: var(--muted); font-size: 13px; line-height: 1.5; }
.lddv-bank-main { min-width: 0; }
.lddv-bank-main h2 { margin: 0 0 10px; color: #f3e2b8; text-shadow: 0 0 14px #e0b45844; }
.lddv-elessa { background: linear-gradient(140deg, #3a2a16, #1c140a); border-color: var(--bank-line); }
.lddv-elessa .lddv-ramius-head .lddv-scene img { border-color: var(--bank-gold); box-shadow: 0 0 16px #e0b45855; }
.lddv-elessa .lddv-ramius-name { color: #f3e2b8; }
.lddv-elessa .lddv-ramius-lines li { border-left-color: var(--bank-gold); color: #f6ecd6; }
.lddv-elessa .lddv-ramius-lines li::before { color: var(--bank-gold); }
.lddv-bank-vitals { background: linear-gradient(140deg, #2d2113, #1a1208); border-color: var(--bank-line); }
.lddv-bank-vitals strong { color: #f3e2b8; }
.lddv-bank-institution { margin: 10px 0 14px; border: 1px solid var(--bank-line); border-radius: 8px; padding: 10px 12px; background: #ffffff05; }
.lddv-bank-wanted { display: flex; gap: 9px; align-items: flex-start; margin: 10px 0; padding: 10px 12px; border: 1px solid #a04a2a; border-radius: 6px; background: #3a1c12; color: #f6d9c8; line-height: 1.5; }
.lddv-bank.is-wanted .lddv-bank-main h2 { color: #f6c9b0; }
.lddv-bank-cards { list-style: none; margin: 14px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.lddv-bank-card { background: linear-gradient(160deg, #2a1f10, #1a1208); border-color: var(--bank-line); }
.lddv-bank-card.is-main { border-color: var(--bank-gold); box-shadow: inset 0 0 0 1px #e0b45840, 0 0 24px #e0b45822; }
.lddv-bank-card .lddv-grave-card-title { color: #f3e2b8; }
.lddv-bank-card--heist { background: linear-gradient(160deg, #2c1414, #170a0a); border-color: #7a3a3a; }
.lddv-bank-form { display: grid; gap: 8px; margin: 4px 0 0; }
.lddv-bank-form label { display: grid; gap: 4px; font-size: 13px; color: var(--muted); }
.lddv-bank-form input { min-height: 44px; padding: 8px 10px; font-size: 16px; border: 1px solid var(--bank-line); border-radius: 6px; background: #120c06; color: #f6ecd6; width: 100%; box-sizing: border-box; }
.lddv-bank-form input:focus-visible { outline: 2px solid var(--bank-gold); outline-offset: 2px; }
.lddv-bank-review { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--bank-gold); border-radius: 8px; background: linear-gradient(140deg, #2d2113, #1a1208); }
.lddv-bank-review .lddv-action-row { flex-wrap: wrap; gap: 8px; }
.lddv-bank-custody { margin: 0; }
.lddv-store-surcharge dt, .lddv-store-surcharge { color: #f0a070; }
.lddv-store-surcharge { font-size: 13px; }
.ux-bank-equity { display: inline-flex; align-items: center; gap: 6px; margin-right: 10px; padding: 4px 10px; border: 1px solid #6b5330; border-radius: 999px; background: #1a1208; color: #f3e2b8; font-size: 13px; white-space: nowrap; }
.ux-bank-equity strong { color: #e0b458; }
/* ---------- Promessa a Ramius, Novo Dia e presença ---------- */
.lddv-promise { margin: 10px 0; padding: 10px 12px; border: 1px solid #5a4a9a; border-radius: 8px; background: linear-gradient(140deg, #221c3a, #141026); }
.lddv-promise-title { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; font: 400 17px/1.25 Georgia, serif; color: #dbe9ff; }
.lddv-promise-text { margin: 0 0 8px; font-size: 13px; line-height: 1.5; }
.lddv-promise .lddv-btn { width: 100%; justify-content: center; min-height: 44px; }
.lddv-promise-link { margin: 6px 0 0; font-size: 13px; }
.lddv-newday { margin: 6px 0; }
.lddv-newday-steps { margin: 8px 0 0; padding-left: 22px; display: grid; gap: 8px; font-size: 14px; line-height: 1.5; }
.lddv-newday-steps li { padding-left: 4px; }
.lddv-newday-collection { padding: 8px 10px; border: 1px solid #5a4a9a; border-radius: 6px; background: #221c3a; }
.lddv-grave-torments meter { border-color: #4a5680; }
.lddv-grave-exhausted { padding: 8px 10px; border: 1px solid #8a4a4a; border-radius: 6px; background: #2c1a1f; color: #f2d7d7; }
.lddv-grave-drained { padding: 8px 10px; border: 1px solid #6b5aa8; border-radius: 6px; background: #221d33; color: #e3dcf7; }
.ux-presence-dead { color: var(--muted); }
@media (max-width: 850px) {
  .lddv-bank { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 430px) {
  .lddv-bank-cards { grid-template-columns: minmax(0, 1fr); }
  .ux-bank-equity { margin: 0 0 6px; }
}
@media (prefers-reduced-motion: reduce) {
  .lddv-bank * { animation: none !important; transition: none !important; }
}
/* ---------- Identidade do Banco do Reino, Trilha das Eras e atalho de viagem (2.2.0) ---------- */
.ux-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ux-indicators { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0; }
.ux-bank { display: inline-flex; align-items: center; gap: 9px; box-sizing: border-box; min-height: var(--btn-min, 44px); padding: 6px 12px; border: 1px solid #6b5330; border-radius: var(--btn-radius, 6px); background: linear-gradient(140deg, #22180c, #15100a); color: #f3e2b8; font: 600 12px/1.25 system-ui, sans-serif; text-decoration: none; max-width: 100%; }
a.ux-bank:hover { background: #2d2113; color: #fff; }
a.ux-bank:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.ux-bank .lddv-art { --art-size: 20px !important; flex-shrink: 0; }
.ux-bank-body { display: grid; gap: 1px; min-width: 0; }
.ux-bank-name { color: #f2e6c6; font-size: 12px; letter-spacing: .03em; text-transform: uppercase; }
.ux-bank-line { color: #d9c9a4; font-weight: 500; white-space: nowrap; }
.ux-bank-key { color: var(--muted); }
.ux-bank-value { color: #e0b458; font-variant-numeric: tabular-nums; }
.ux-bank-value--pending { color: var(--muted); font-style: italic; }
.ux-bank-state { color: var(--muted); font-size: 11px; font-weight: 500; }
a.ux-bank .ux-bank-state { color: var(--green); text-decoration: underline; text-underline-offset: 3px; }
.ux-bank--static { border-style: dashed; }
/* Trilha das Eras: prestígio entre o título e o menu, mais sutil que o nome do jogo. */
.ux-eras-band { max-width: 1240px; margin: 0 auto; padding: 8px 24px 2px; }
.ux-eras-band:empty, .ux-eras-band:has(> :empty) { display: none; }
.ux-eras { text-align: center; }
.ux-eras-track { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 10px; margin: 0; padding: 0; list-style: none; }
.ux-era { min-width: 0; }
.ux-era-link { display: inline-flex; align-items: center; gap: 8px; box-sizing: border-box; min-height: 44px; padding: 4px 12px 4px 6px; border: 1px solid var(--line); border-radius: 999px; background: #11201a; color: var(--text); text-decoration: none; max-width: 100%; }
.ux-era-link:hover { background: #1a2f24; }
.ux-era-link:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.ux-era-emblem { width: 30px; height: 30px; flex-shrink: 0; }
.ux-era-text { display: grid; text-align: left; line-height: 1.2; min-width: 0; }
.ux-era-name { font: 700 13px/1.2 system-ui, sans-serif; color: var(--era-color, var(--text)); overflow-wrap: anywhere; }
.ux-era-range { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }
.ux-era-state { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ux-era--locked .ux-era-link { border-style: dashed; color: var(--muted); }
.ux-era--locked .ux-era-emblem { filter: grayscale(1) opacity(.55); }
.ux-era--locked .ux-era-name { color: var(--muted); }
.ux-era--locked .lddv-art { --art-size: 16px !important; }
.ux-era--done .ux-era-link { border-color: var(--era-color); background: #101c16; }
.ux-era--done .ux-era-emblem { opacity: .85; }
.ux-era-mark--done { color: var(--era-color); font-weight: 700; font-size: 14px; }
.ux-era--current .ux-era-link { border-color: var(--era-color); background: #15261d; box-shadow: 0 0 0 1px var(--era-color), 0 0 12px color-mix(in srgb, var(--era-color) 45%, transparent); animation: ux-era-breathe 4.5s ease-in-out infinite; }
.ux-era-here { display: inline-block; justify-self: start; margin-top: 3px; padding: 1px 7px; border-radius: 999px; background: var(--era-color); color: #14200f; font: 700 10px/1.5 system-ui, sans-serif; letter-spacing: .04em; text-transform: uppercase; white-space: nowrap; }
.ux-era--public .ux-era-link { cursor: pointer; }
.ux-eras-progress { margin: 6px 0 0; font-size: 12px; color: var(--muted); }
.ux-eras--public { margin: 12px 0; }
@keyframes ux-era-breathe { 0%, 100% { box-shadow: 0 0 0 1px var(--era-color), 0 0 8px color-mix(in srgb, var(--era-color) 35%, transparent); } 50% { box-shadow: 0 0 0 1px var(--era-color), 0 0 18px color-mix(in srgb, var(--era-color) 60%, transparent); } }
/* Título da área com as ações contextuais da cidade (Explorar a floresta, Viajar) ao lado do nome. */
.ux-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; position: relative; }
.ux-title-row > h1 { flex: 1 1 320px; min-width: 0; }
.ux-city-actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 8px 10px; flex: 0 0 auto; max-width: 100%; margin-top: 12px; }
.ux-forest { display: grid; gap: 3px; justify-items: start; min-width: 0; }
.ux-forest .lddv-btn { min-height: 44px; }
.ux-forest-link:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.ux-forest-meta { font-size: 12px; color: var(--muted); line-height: 1.3; }
.ux-forest.is-blocked .lddv-btn { opacity: .55; cursor: not-allowed; }
.ux-travel { position: relative; flex: 0 0 auto; }
.ux-travel-summary { list-style: none; cursor: pointer; display: inline-block; border-radius: var(--btn-radius, 6px); }
.ux-travel-summary::-webkit-details-marker { display: none; }
.ux-travel-summary:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.ux-travel-summary .lddv-btn { pointer-events: none; }
.ux-travel[open] .ux-travel-summary .lddv-btn { border-color: var(--gold); }
.ux-travel-panel { position: absolute; right: 0; top: calc(100% + 6px); z-index: 6; width: min(440px, calc(100vw - 40px)); box-sizing: border-box; padding: 12px 14px; border: 1px solid var(--gold); border-radius: 8px; background: var(--panel); box-shadow: 0 12px 36px #000a; text-align: left; }
.ux-travel-here, .ux-travel-note, .ux-travel-hub { margin: 0 0 8px; font-size: 13px; color: var(--muted); }
.ux-travel-note { margin-top: 8px; }
.ux-travel-hub { margin: 0; }
.ux-travel-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.ux-travel-dest { display: flex; flex-direction: column; gap: 2px; box-sizing: border-box; min-height: 44px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 6px; background: #11201a; text-decoration: none; color: var(--text); }
.ux-travel-dest:hover { background: #1a2f24; border-color: var(--green); }
.ux-travel-dest:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
.ux-travel-item.is-blocked { display: flex; flex-direction: column; gap: 2px; min-height: 44px; padding: 8px 10px; border: 1px dashed var(--line); border-radius: 6px; color: var(--muted); }
.ux-travel-name { font-weight: 700; color: #f2e6c6; }
.ux-travel-item.is-blocked .ux-travel-name { color: var(--muted); }
.ux-travel-meta { font-size: 12px; color: var(--muted); }
.lddv-bank-agency { margin: -6px 0 10px; font-size: 13px; color: var(--muted); letter-spacing: .02em; }
@media (max-width: 850px) {
  .ux-eras-band { padding: 6px 16px 0; }
  .ux-title-row > h1 { flex-basis: 100%; }
  .ux-city-actions { flex: 1 1 100%; width: 100%; min-width: 0; margin-top: 0; margin-bottom: 12px; }
  .ux-forest, .ux-travel { flex: 1 1 100%; width: 100%; min-width: 0; }
  .ux-forest .lddv-btn, .ux-travel-summary, .ux-travel-summary .lddv-btn { width: 100%; box-sizing: border-box; }
  .ux-travel-panel { position: static; width: auto; max-width: 100%; margin-top: 8px; }
}
@media (max-width: 600px) {
  .ux-eras-track { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
  .ux-era-link { width: 100%; justify-content: flex-start; border-radius: 10px; }
  .ux-era:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .ux-era-name { font-size: 12px; }
}
@media (max-width: 430px) {
  .ux-eras-band { padding: 6px 12px 0; }
  .ux-indicators, .ux-bank, .ux-mail, .ux-mail a { width: 100%; }
  .ux-bank-line { white-space: normal; }
}
@media (prefers-reduced-motion: reduce) {
  .ux-era--current .ux-era-link { animation: none; }
}
.reduce-effects .ux-era--current .ux-era-link { animation: none; }
/* ---------- Home pública: o Dragão Verde guarda o portal ---------- */
.ux-home-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px 28px; align-items: center; }
.ux-home-entry { min-width: 0; }
.ux-home-entry .login-panel { padding-top: 8px; }
.ux-home-art { position: relative; width: 100%; min-width: 0; border-radius: 10px; overflow: hidden; border: 1px solid var(--line); background: #07110c; aspect-ratio: 4 / 3; }
.ux-home-art .lddv-scene, .ux-home-art img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 72% 40%; }
.ux-home-art .lddv-scene { position: absolute; inset: 0; }
.ux-home-mist { position: absolute; inset: auto 0 0 0; height: 45%; pointer-events: none; background: linear-gradient(180deg, transparent, rgba(79, 143, 106, .28) 60%, rgba(79, 143, 106, .38)); opacity: .7; animation: ux-home-mist 14s ease-in-out infinite alternate; }
.ux-home-eras { margin-top: 6px; }
@keyframes ux-home-mist { from { transform: translateX(-2%); opacity: .55; } to { transform: translateX(2%); opacity: .8; } }
@media (max-width: 850px) {
  .ux-home-hero { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .ux-home-art { aspect-ratio: 2 / 1; order: -1; }
  .ux-home-art img { object-position: 78% 45%; }
}
@media (prefers-reduced-motion: reduce) { .ux-home-mist { animation: none; } }
.reduce-effects .ux-home-mist { animation: none; }
.knowledge-era h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 8px; font-size: 1.15rem; }
.knowledge-era-titles, .knowledge-era-status { font-size: 14px; color: var(--muted); }
.knowledge-era-status { color: var(--gold); }
.knowledge .ux-era-link { text-decoration: none; }
/* ---------- Estábulos de Merick (2.3.0): loja viva e comparável ---------- */
.lddv-stables { --stable-straw: #e0c46a; --stable-wood: #3d2a14; --stable-line: #7a5a2c; }
.lddv-stables-scene .lddv-scene img, .lddv-stables-scene img { border-color: var(--stable-line); box-shadow: 0 0 30px #e0c46a22; }
.lddv-merick { background: linear-gradient(140deg, #3d2a14, #1a1208); border-color: var(--stable-line); }
.lddv-merick .lddv-ramius-head .lddv-scene img { border-color: var(--stable-straw); box-shadow: 0 0 16px #e0c46a55; }
.lddv-merick .lddv-ramius-name { color: #f6e7b8; }
.lddv-merick .lddv-ramius-lines li { border-left-color: var(--stable-straw); color: #f6ecd6; }
.lddv-merick .lddv-ramius-lines li::before { color: var(--stable-straw); }
.lddv-stables-vitals { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); background: linear-gradient(140deg, #2f2210, #1a1208); border-color: var(--stable-line); }
.lddv-stables-vitals strong { color: #f6e7b8; font-size: 18px; }
.lddv-stables-heading { margin: 16px 0 4px; font: 400 21px/1.25 Georgia, serif; color: #f6e7b8; }
.lddv-stables-lead { margin: 0 0 6px; font-size: 13px; color: var(--muted); }
.lddv-stables-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lddv-stables-card .lddv-healer-facts > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1px; padding: 5px 0; }
.lddv-stables-card .lddv-healer-facts dt { font-size: 11px; letter-spacing: .04em; text-transform: uppercase; }
.lddv-stables-card .lddv-healer-facts dd { text-align: left; font-weight: 600; color: #f6e7b8; }
.lddv-stables-card { background: linear-gradient(160deg, #2c2010, #1a1208); border-color: var(--stable-line); gap: 8px; }
.lddv-stables-card.is-owned { border-color: var(--stable-straw); box-shadow: inset 0 0 0 1px #e0c46a40, 0 0 24px #e0c46a22; }
.lddv-stables-card.is-blocked { border-style: dashed; }
.lddv-stables-card .lddv-grave-card-title { color: #f6e7b8; font-size: 20px; }
.lddv-stables-art { display: flex; justify-content: center; padding: 4px 0; }
.lddv-stables-art .lddv-art { --art-size: 120px !important; }
.lddv-stables-art .lddv-art img { border-radius: 8px; border: 1px solid var(--stable-line); background: #120c06; width: 160px; height: 120px; object-fit: cover; }
.lddv-stables-card.is-blocked .lddv-stables-art img { filter: grayscale(.7) opacity(.75); }
.lddv-stables-desc { font: italic 14px/1.5 Georgia, serif; color: #e8dcc0; }
.lddv-stables-compare { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.lddv-stables-compare li { display: flex; gap: 6px; align-items: flex-start; font-size: 13px; line-height: 1.4; padding: 4px 8px; border-radius: 6px; background: #ffffff08; }
.lddv-stables-compare li.is-better { color: #b9e3a8; border-left: 3px solid #8bcb9d; }
.lddv-stables-compare li.is-worse { color: #f2c3b0; border-left: 3px solid #d98b6f; }
.lddv-stables-compare li.is-equal { color: #d9d1bd; border-left: 3px solid #a4b8a6; }
.lddv-stables-flag { display: flex; gap: 6px; align-items: center; margin: 0; color: var(--stable-straw); font: 600 12px/1.5 system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; }
.lddv-stables-owned { margin: 12px 0 0; }
.lddv-stables-owned-head { display: flex; gap: 14px; align-items: flex-start; }
.lddv-stables-owned-head .lddv-art { --art-size: 96px !important; flex-shrink: 0; }
.lddv-stables-owned-head .lddv-art img { border-radius: 8px; border: 1px solid var(--stable-straw); width: 128px; height: 96px; object-fit: cover; }
.lddv-stables-owned-head h3 { margin-bottom: 4px; }
.lddv-stables-review { border-color: var(--stable-straw); background: linear-gradient(140deg, #2f2210, #1a1208); }
.lddv-stables-review .lddv-grave-card-title { color: #f6e7b8; margin-bottom: 8px; }
.lddv-stables-review p { margin: 0 0 8px; font-size: 14px; line-height: 1.5; }
.lddv-stables-rules { margin: 14px 0 0; }
.lddv-stables-rules summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; padding: 6px 10px; border: 1px solid var(--stable-line); border-radius: 6px; color: #f6e7b8; font-weight: 600; }
.lddv-stables-rules summary:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.lddv-stables-rules .lddv-grave-rules { margin: 10px 0 0 4px; }
@media (max-width: 1100px) { .lddv-stables-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 850px) { .lddv-stables-place { grid-template-columns: minmax(0, 1fr); } .lddv-stables-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .lddv-stables-cards { grid-template-columns: minmax(0, 1fr); } .lddv-stables-owned-head { flex-direction: column; } }
@media (prefers-reduced-motion: reduce) { .lddv-stables * { animation: none !important; transition: none !important; } }
/* ---------- Tenda da Vidente (2.3.0): Selene, Leitura, Presságio e Sessão dos Ecos ---------- */
.lddv-seer { --seer-violet: #a98cff; --seer-blue: #7fd7ff; --seer-gold: #d8b97a; --seer-line: #4a3f7a; }
.lddv-seer-scene { position: relative; }
.lddv-seer-scene .lddv-scene img, .lddv-seer-scene img { border-color: var(--seer-line); box-shadow: 0 0 30px #a98cff33; }
.lddv-seer-mist { position: absolute; left: 0; right: 0; top: 0; aspect-ratio: 3 / 2; border-radius: 8px; pointer-events: none; background: radial-gradient(ellipse at 50% 55%, rgba(169, 140, 255, .28), transparent 60%); opacity: .7; animation: lddv-seer-mist 12s ease-in-out infinite alternate; }
@keyframes lddv-seer-mist { from { transform: translateX(-1.5%); opacity: .5; } to { transform: translateX(1.5%); opacity: .8; } }
.lddv-selene { background: linear-gradient(140deg, #2a1e4a, #120d24); border-color: var(--seer-line); }
.lddv-selene .lddv-ramius-head .lddv-scene img { border-color: var(--seer-violet); box-shadow: 0 0 16px #a98cff66; }
.lddv-selene .lddv-ramius-name { color: #e9dcff; }
.lddv-selene .lddv-ramius-lines li { border-left-color: var(--seer-violet); color: #eee7ff; }
.lddv-selene .lddv-ramius-lines li::before { color: var(--seer-violet); }
.lddv-seer-vitals { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.lddv-seer-vitals strong { color: #e9dcff; font-size: 17px; }
.lddv-seer-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 14px; }
.lddv-seer-card { background: linear-gradient(160deg, #1f1838, #120d24); border-color: var(--seer-line); gap: 8px; }
.lddv-seer-card.is-main { border-color: var(--seer-violet); box-shadow: inset 0 0 0 1px #a98cff40, 0 0 24px #a98cff22; }
.lddv-seer-card .lddv-grave-card-title { color: #e9dcff; }
.lddv-seer-card-meta { margin: 0; font-size: 12px; color: var(--seer-gold); letter-spacing: .02em; }
.lddv-seer-reading { margin: 0; display: grid; gap: 6px; }
.lddv-seer-reading > div { display: grid; gap: 2px; padding: 6px 8px; border-radius: 6px; background: #ffffff08; border-left: 3px solid var(--seer-line); }
.lddv-seer-reading dt { display: flex; align-items: center; gap: 6px; font-size: 11px; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.lddv-seer-reading dd { margin: 0; font-size: 14px; line-height: 1.5; color: #eee7ff; }
.lddv-seer-omen { padding: 10px 12px; border: 1px solid var(--seer-violet); border-radius: 8px; background: linear-gradient(140deg, #2a1e4a, #1a1230); }
.lddv-seer-omen strong { display: block; margin-bottom: 4px; color: #e9dcff; font: 400 18px/1.25 Georgia, serif; }
.lddv-seer-omen p { margin: 0 0 6px; }
.lddv-seer-omen-done { display: flex; gap: 8px; align-items: flex-start; margin: 0; font-size: 13px; color: var(--muted); }
.lddv-seer-timer { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0; padding: 8px 10px; border: 1px solid var(--seer-blue); border-radius: 6px; background: #12203a; color: #dbe9ff; font-size: 14px; }
.lddv-seer-timer strong { color: #7fd7ff; font-variant-numeric: tabular-nums; }
.lddv-seer-talk { margin: 6px 0 12px; }
@media (max-width: 1100px) { .lddv-seer-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } .lddv-seer-card--reading { grid-column: 1 / -1; } }
@media (max-width: 850px) { .lddv-seer { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px) { .lddv-seer-cards { grid-template-columns: minmax(0, 1fr); } }
@media (prefers-reduced-motion: reduce) { .lddv-seer-mist { animation: none; } .lddv-seer * { animation: none !important; transition: none !important; } }
.reduce-effects .lddv-seer-mist { animation: none; }

/* ---- Integridade de equipamentos e preparação rápida (2.4.0, ADR-028) ---- */
.lddv-integrity { --integ-line: #65d6c0; display: grid; gap: 4px; margin: 6px 0 0; min-width: 0; }
.lddv-integrity.is-preserved { --integ-line: #9ad36a; }
.lddv-integrity.is-worn { --integ-line: #e8c15a; }
.lddv-integrity.is-critical, .lddv-integrity.is-improvised { --integ-line: #ff9b7a; }
.lddv-integrity.is-broken { --integ-line: #ff7a7a; }
.lddv-integrity-line { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; font-size: 13px; }
.lddv-integrity-value { font-weight: 700; color: #f4efe2; font-variant-numeric: tabular-nums; }
.lddv-integrity-state { padding: 1px 8px; border: 1px solid var(--integ-line); border-radius: 999px; font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--integ-line); }
.lddv-integrity-meter { position: relative; height: 8px; border-radius: 999px; background: #1c2a24; border: 1px solid #2f4a3e; overflow: hidden; }
.lddv-integrity-fill { position: absolute; inset: 0 auto 0 0; background: var(--integ-line); border-radius: 999px; }
.lddv-integrity.is-compact .lddv-integrity-line { font-size: 12px; }
.lddv-integrity-more { margin-top: 4px; font-size: 12px; color: var(--muted); }
.lddv-integrity-more summary { cursor: pointer; min-height: 44px; display: inline-flex; align-items: center; padding: 0 6px; color: #cfe5da; }
.lddv-integrity-more summary:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
.lddv-integrity-more p { margin: 2px 0 0; }
.lddv-integrity-alert { display: flex; gap: 6px; align-items: center; margin: 6px 0 0; padding: 6px 10px; border-radius: 6px; font-size: 13px; font-weight: 700; border: 1px dashed #e8c15a; color: #ffe7a6; background: #2b2410; }
.lddv-integrity-alert.is-critical { border: 2px solid #ff9b7a; color: #ffd1c2; background: #3a1a12; }
.lddv-sheet-item { grid-column: 1 / -1; }
.lddv-sheet-item dd { display: grid; gap: 4px; min-width: 0; }
.lddv-sheet-item-head { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; }
.lddv-sheet-item-name { font-weight: 700; color: #f4efe2; overflow-wrap: anywhere; }
.lddv-sheet-item-meta { font-size: 12px; color: var(--muted); }
.lddv-combat-integrity { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 6px 0 0; font-size: 13px; color: #dfe9e3; }
.lddv-combat-integrity-item { display: inline-flex; gap: 5px; align-items: center; font-variant-numeric: tabular-nums; }
.lddv-combat-integrity-item.is-critical, .lddv-combat-integrity-item.is-improvised, .lddv-combat-integrity-item.is-broken { color: #ffd1c2; }
.lddv-combat-integrity-flag { padding: 0 6px; border: 1px solid #ff9b7a; border-radius: 999px; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.lddv-wear { margin: 10px 0; padding: 10px 12px; border: 1px solid #3a5a4c; border-radius: 10px; background: #14211c; }
.lddv-wear h3 { display: flex; gap: 8px; align-items: center; margin: 0 0 6px; font-size: 16px; color: #f4efe2; }
.lddv-wear-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.lddv-wear-item { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; font-size: 14px; }
.lddv-wear-item strong { min-width: 5.5em; }
.lddv-wear-values { font-variant-numeric: tabular-nums; }
.lddv-wear-lost { color: var(--muted); font-variant-numeric: tabular-nums; }
.lddv-wear-state { padding: 1px 8px; border: 1px solid #9ad36a; border-radius: 999px; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: #cfe5da; }
.lddv-wear-item.is-worn .lddv-wear-state { border-color: #e8c15a; color: #ffe7a6; }
.lddv-wear-item.is-critical .lddv-wear-state, .lddv-wear-item.is-improvised .lddv-wear-state, .lddv-wear-item.is-broken .lddv-wear-state { border-color: #ff9b7a; color: #ffd1c2; }
.lddv-wear-item .lddv-integrity-alert { flex-basis: 100%; }
.lddv-wear-break { flex-basis: 100%; margin: 4px 0 0; padding: 8px 10px; border: 2px solid #ff9b7a; border-radius: 8px; background: #3a1a12; color: #ffe4da; line-height: 1.45; }
.lddv-wear-note { margin: 6px 0 0; font-size: 13px; color: var(--muted); }
.lddv-wear-note a { color: var(--gold); }
.lddv-prepare { margin: 12px 0; padding: 12px 14px; border: 1px solid #5c4b1e; border-radius: 12px; background: linear-gradient(160deg, #23200f, #151a12); }
.lddv-prepare-head { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 8px; }
.lddv-prepare-head h2 { margin: 0 0 4px; font-size: 20px; color: #ffe7a6; }
.lddv-prepare-head p { margin: 0; font-size: 14px; color: #e5dfc8; line-height: 1.45; }
.lddv-prepare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin: 0 0 10px; padding: 0; }
.lddv-prepare-grid > div { padding: 8px 10px; border: 1px solid #3f3a22; border-radius: 8px; background: #1a1c14; min-width: 0; }
.lddv-prepare-grid dt { display: flex; gap: 6px; align-items: center; font-size: 11px; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); }
.lddv-prepare-grid dd { margin: 2px 0 0; font-size: 15px; font-weight: 700; color: #f4efe2; overflow-wrap: anywhere; }
.lddv-prepare-actions { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; }
.lddv-prepare-action { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border: 1px solid #3f3a22; border-radius: 10px; background: #1a1c14; min-width: 0; }
.lddv-prepare-action.is-combined { grid-column: 1 / -1; border-color: var(--gold); }
.lddv-prepare-action-title { display: flex; gap: 8px; align-items: center; }
.lddv-prepare-action-title h3, .lddv-workshop-option-title h4 { margin: 0; font-size: 15px; color: #f4efe2; }
.lddv-prepare-prices { display: grid; gap: 3px; margin: 0; padding: 0; font-size: 13px; }
.lddv-prepare-prices > div { display: flex; justify-content: space-between; gap: 10px; }
.lddv-prepare-prices dt { color: var(--muted); }
.lddv-prepare-prices dd { margin: 0; font-variant-numeric: tabular-nums; text-align: right; }
.lddv-prepare-total dt, .lddv-prepare-total dd { font-weight: 700; color: #ffe7a6; }
.lddv-prepare-result { margin: 0; font-size: 13px; color: #cfe5da; }
.lddv-prepare-done { display: flex; gap: 6px; align-items: center; margin: 0; padding: 8px 0; font-size: 14px; color: #9ad36a; }
.lddv-prepare-form, .lddv-prepare-buy { width: 100%; }
.lddv-prepare-form .lddv-btn { width: 100%; justify-content: center; }
.lddv-prepare-links { margin-top: 10px; }
.lddv-prepare-links p { margin: 0 0 6px; font-size: 13px; color: var(--muted); }
.lddv-prepare-receipt { display: flex; gap: 8px; align-items: flex-start; margin: 0 0 10px; padding: 8px 10px; border: 1px solid #9ad36a; border-radius: 8px; background: #16261a; color: #e2f2d8; font-size: 14px; }
.lddv-workshop { margin: 14px 0; padding: 12px 14px; border: 1px solid #5a4a2e; border-radius: 12px; background: #1d1912; }
.lddv-workshop-head { display: flex; gap: 10px; align-items: flex-start; }
.lddv-workshop-head h3 { margin: 0 0 4px; font-size: 20px; color: #ffe7a6; }
.lddv-workshop-head p { margin: 0 0 8px; font-size: 14px; color: #e5dfc8; line-height: 1.45; }
.lddv-workshop-current { display: flex; gap: 10px; align-items: flex-start; margin: 8px 0 10px; padding: 8px 10px; border: 1px solid #3f3a22; border-radius: 8px; background: #16140e; }
.lddv-workshop-current > div { display: grid; gap: 2px; min-width: 0; flex: 1 1 auto; }
.lddv-workshop-current strong { color: #f4efe2; overflow-wrap: anywhere; }
.lddv-workshop-current span { font-size: 12px; color: var(--muted); }
.lddv-workshop-options { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 10px; }
.lddv-workshop-option { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border: 1px solid #3f3a22; border-radius: 10px; background: #16140e; min-width: 0; }
.lddv-workshop-option.is-reforge { border-color: #b38cff; }
.lddv-workshop-option.is-quiet { opacity: .85; }
.lddv-workshop-compare { margin: 10px 0 0; font-size: 13px; color: #cfe5da; line-height: 1.45; }
.lddv-workshop-empty { margin: 0; font-size: 14px; color: var(--muted); }
.lddv-workshop-history { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 13px; }
.lddv-workshop-history li { display: flex; flex-wrap: wrap; gap: 4px 8px; }
.lddv-workshop-history li > span:first-child { color: var(--muted); font-variant-numeric: tabular-nums; }
@media (max-width: 600px) { .lddv-prepare-actions, .lddv-workshop-options { grid-template-columns: minmax(0, 1fr); } .lddv-prepare-head, .lddv-workshop-head { flex-direction: column; } }
@media (prefers-reduced-motion: reduce) { .lddv-integrity-fill, .lddv-prepare *, .lddv-wear * { transition: none !important; animation: none !important; } }
.lddv-wear-why { flex-basis: 100%; margin: 2px 0 0; font-size: 13px; color: #cfe5da; line-height: 1.45; }

/* ---- 2.5.0: Favor sem teto, Bolsa de Poções e Energia de Combate (ADR-029, ADR-030) ---- */
.lddv-grave-favor strong { color: #ffe08a; }
.lddv-grave-favor meter { --grave-favor: #e6c15a; }
.lddv-grave-favor-after { display: block; margin-top: 2px; color: #dbe9ff; }
.lddv-grave-soul-bar meter::-webkit-meter-optimum-value { background: #a98cff; }
.lddv-grave-soul-bar meter::-moz-meter-bar { background: #a98cff; }
.lddv-soul-note { margin: 4px 0 8px; font-size: 12px; color: #c9b8ff; }
.lddv-health--soul span { color: #e2d6ff; }
.lddv-health--soul meter::-webkit-meter-optimum-value, .lddv-health--soul meter::-webkit-meter-suboptimum-value, .lddv-health--soul meter::-webkit-meter-even-less-good-value { background: linear-gradient(90deg, #7c5cff, #a98cff); }
.lddv-health--soul meter::-moz-meter-bar { background: #a98cff; }
.lddv-energy { display: grid; gap: 4px; margin: 6px 0 8px; padding: 8px 10px; border: 1px solid #2f4a6a; border-radius: 8px; background: linear-gradient(140deg, #10213a, #0d1a2c); }
.lddv-energy-label { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #cfe6ff; }
.lddv-energy-label strong { color: #ffffff; margin-left: auto; font-variant-numeric: tabular-nums; }
.lddv-energy-meter { width: 100%; height: 12px; border: 1px solid #2f4a6a; border-radius: 6px; background: #0a1522; }
.lddv-energy-meter::-webkit-meter-bar { background: #0a1522; border-radius: 6px; }
.lddv-energy-meter::-webkit-meter-optimum-value, .lddv-energy-meter::-webkit-meter-suboptimum-value, .lddv-energy-meter::-webkit-meter-even-less-good-value { background: linear-gradient(90deg, #2f7fd8, #5fb3ff); border-radius: 6px; }
.lddv-energy-meter::-moz-meter-bar { background: #4aa3ff; border-radius: 6px; }
.lddv-energy-help { font-size: 12px; line-height: 1.45; color: #a9c4e0; }
.lddv-potions { margin: 18px 0 6px; padding: 14px; border: 1px solid #3b4a3f; border-radius: 10px; background: linear-gradient(140deg, #16211b, #101915); }
.lddv-potions--page { margin-top: 6px; }
.lddv-potions-head { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 10px; }
.lddv-potions-head h2, .lddv-potions-head h3 { margin: 0 0 4px; }
.lddv-potions-head p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.5; }
.lddv-potion-bag { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 8px 14px; margin: 0 0 10px; padding: 10px 12px; border: 1px solid #3b4a3f; border-radius: 8px; background: #0f1713; }
.lddv-potion-bag div { display: grid; gap: 2px; min-width: 0; }
.lddv-potion-bag dt { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); }
.lddv-potion-bag dd { margin: 0; font-size: 14px; }
.lddv-potion-bag strong { color: #f2f7f2; font-variant-numeric: tabular-nums; }
.lddv-potion-split { display: block; font-size: 12px; color: var(--muted); }
.lddv-potion-bag--compact { grid-template-columns: 1fr; gap: 4px; padding: 8px 10px; }
.lddv-potion-countdown dd strong { color: #ffd27f; }
.lddv-potion-note { margin: 8px 0 0; font-size: 13px; line-height: 1.5; color: var(--muted); }
.lddv-potion-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
.lddv-potion-card { position: relative; display: grid; gap: 8px; padding: 12px 12px 12px 72px; min-width: 0; border: 1px solid #3b4a3f; border-radius: 10px; background: #121c17; }
.lddv-potion-card--life { border-color: #6b3541; }
.lddv-potion-card--energy { border-color: #2f4a6a; }
.lddv-potion-art { position: absolute; left: 12px; top: 12px; width: 48px; height: 64px; }
.lddv-potion-art svg { width: 48px; height: 64px; display: block; }
.lddv-potion-title { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 16px; }
.lddv-potion-effect { margin: 0; font-size: 13px; line-height: 1.5; color: #d9e4d9; }
.lddv-potion-form { display: grid; gap: 8px; }
.lddv-potion-quantity { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.lddv-potion-quantity select { min-height: 44px; min-width: 72px; padding: 6px 10px; border-radius: 8px; border: 1px solid #55665a; background: #0f1713; color: #f2f7f2; font-size: 15px; }
.lddv-potion-hint { font-size: 12px; color: var(--muted); }
.lddv-potion-review { margin: 0 0 12px; padding: 12px; border: 1px solid #c9a86a; border-radius: 10px; background: #1a1a12; }
.lddv-potion-review h4 { display: flex; align-items: center; gap: 6px; margin: 0 0 8px; }
.lddv-potion-group summary .lddv-skills-energy { color: #ffd27f; }
.lddv-prepare-bag { display: block; margin: 0 0 8px; font-size: 13px; color: var(--muted); }
.ux-stat-link { margin-left: 6px; font-size: 12px; min-height: 44px; display: inline-flex; align-items: center; }
@media (max-width: 640px) {
  .lddv-potion-cards { grid-template-columns: 1fr; }
  .lddv-potion-bag { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  .lddv-energy-meter, .lddv-potion-card, .lddv-potion-review { transition: none; }
}

/* ---------- 2.6.0: transferências sem limite e ouro marcado transmissível (ADR-032) ---------- */
.lddv-bank-sources { margin: 8px 0; }
.lddv-bank-marked-note { display: flex; gap: 9px; align-items: flex-start; margin: 10px 0; padding: 10px 12px; border: 1px solid #b8862a; border-left-width: 4px; border-radius: 6px; background: #2e2208; color: #f6e6bf; line-height: 1.5; font-size: 13px; }
.lddv-bank-pending { margin: 12px 0; padding: 12px; border: 1px solid #b8862a; border-radius: 8px; background: #241a0a; }
.lddv-bank-pending-list, .lddv-bank-candidates { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 10px; }
.lddv-bank-candidates li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; background: #142219; }
.lddv-bank-recipient { display: inline-flex; flex-direction: column; gap: 2px; min-width: 0; }
.lddv-bank-recipient small { color: var(--muted); }
.lddv-bank-revenues { margin: 4px 0 0; }
.lddv-bank-pending .lddv-action-row { flex-wrap: wrap; }
@media (max-width: 560px) {
  .lddv-bank-candidates li { flex-direction: column; align-items: stretch; }
}

/* ---- 2.7.0 Comunidade Viva: Taverna do Reino e página Discord ---- */
.lddv-tavern{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}
.lddv-tavern-head h2{font-size:20px;margin:0 0 4px}
.lddv-tavern-sub{margin:0 0 10px;font-size:13px;color:var(--muted);max-width:70ch}
.lddv-tavern-list{list-style:none;margin:0;padding:8px;border:1px solid var(--line);border-radius:6px;max-height:min(50vh,420px);overflow-y:auto;overflow-x:hidden;background:color-mix(in srgb,var(--paper,#fff) 92%,transparent);display:flex;flex-direction:column;gap:6px;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){.lddv-tavern-list{scroll-behavior:auto}}
.lddv-tavern-item{display:block;line-height:1.45;overflow-wrap:anywhere;padding:4px 6px;border-radius:4px;border-left:3px solid transparent}
.lddv-tavern-item--discord{border-left-color:#5865f2;background:rgba(88,101,242,.08)}
.lddv-tavern-item--game{border-left-color:#238636}
.lddv-tavern-item.is-removed{opacity:.7}
.lddv-tavern-origin{margin-right:4px}
.lddv-tavern-author{font-weight:600}
.lddv-tavern-edited,.lddv-tavern-time{color:var(--muted);font-size:12px}
.lddv-tavern-time{margin-left:6px;white-space:nowrap}
.lddv-tavern-removed{color:var(--muted)}
.lddv-tavern-empty{color:var(--muted);text-align:center;padding:12px}
.lddv-tavern-status{min-height:1.2em;font-size:13px;color:var(--muted);margin:6px 0}
.lddv-tavern-form label{display:block;font-size:13px;margin-bottom:4px}
.lddv-tavern-form label small{color:var(--muted);float:right}
.lddv-tavern-form textarea{width:100%;box-sizing:border-box;min-height:56px;padding:10px;border:1px solid var(--line);border-radius:6px;font:inherit;resize:vertical}
.lddv-tavern-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:8px}
.lddv-tavern-actions .lddv-btn{min-height:44px;min-width:120px}
.lddv-tavern-hint{font-size:12px;color:var(--muted);max-width:52ch}
.lddv-tavern-locked{margin:10px 0}
.lddv-tavern-toggle{margin-top:8px}
.lddv-tavern-toggle .lddv-btn{min-height:44px}
.lddv-tavern-ok{color:#1b6b2e;font-weight:600}
.lddv-tavern-legacy{margin-top:14px}
.lddv-tavern-legacy summary{cursor:pointer;min-height:44px;display:flex;align-items:center}
.lddv-tavern-legacy-body{opacity:.85}
.lddv-discord-card{border:1px solid var(--line);border-radius:6px;padding:14px;margin:12px 0}
.lddv-discord-card h3{margin:0 0 8px;font-size:18px}
.lddv-discord-facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:10px 0}
.lddv-discord-facts dt{color:var(--muted);font-size:13px}
.lddv-discord-facts dd{margin:0}
.lddv-discord-actions,.lddv-discord-unlink{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0}
.lddv-discord-actions .lddv-btn,.lddv-discord-unlink .lddv-btn,.lddv-discord-prefs .lddv-btn{min-height:44px}
.lddv-discord-unlink input[type=password]{min-height:44px;padding:0 10px;border:1px solid var(--line);border-radius:6px}
.lddv-discord-prefs fieldset{border:1px solid var(--line);border-radius:6px;padding:10px 14px;margin:0 0 10px}
.lddv-discord-prefs label{display:flex;gap:8px;align-items:flex-start;min-height:44px;padding:4px 0}
.lddv-discord-prefs input[type=checkbox]{width:22px;height:22px;flex:none;margin-top:6px}
.lddv-discord-notice{color:#1b6b2e;font-weight:600}
@media (max-width:600px){.lddv-discord-facts{grid-template-columns:1fr}.lddv-tavern-form label small{float:none;margin-left:6px}}
/* ---------- 2.8.0 Passes do Reino: loja, revisão, retorno, ficha e cabeçalho ---------- */
.lddv-passes { --pass-bg: #0f2a1c; --pass-panel: #143726; --pass-line: #2f7a4d; --pass-gold: #e0c27a; --pass-text: #ecf5ea; --pass-muted: #b7cdb9; color: var(--pass-text); }
.lddv-passes h2, .lddv-passes h3 { color: var(--pass-gold); }
.lddv-passes-head { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 12px; }
.lddv-passes-head .lddv-art { --art-size: 40px !important; margin-top: 4px; }
.lddv-passes-head h2 { margin: 0 0 6px; }
.lddv-passes-intro { margin: 0; max-width: 62ch; font-size: 15px; line-height: 1.5; }
.lddv-passes-rules { margin: 10px 0 16px; padding-left: 20px; display: grid; gap: 4px; font-size: 13px; line-height: 1.5; color: var(--pass-muted); max-width: 78ch; }
.lddv-pass-preparing, .lddv-pass-notice, .lddv-pass-testmode, .lddv-pass-dead { display: flex; gap: 8px; align-items: flex-start; margin: 10px 0; padding: 10px 12px; border: 1px solid var(--pass-line); border-radius: 6px; background: var(--pass-panel); font-size: 14px; line-height: 1.5; }
.lddv-pass-testmode { border-style: dashed; border-color: var(--pass-gold); color: var(--pass-gold); }
.lddv-pass-notice { color: #cdf2d4; }
.lddv-pass-dead { border-color: #4a5680; background: #1a1f33; color: #dbe9ff; }
.lddv-passes-grid { list-style: none; margin: 8px 0 16px; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.lddv-pass-card { position: relative; display: flex; flex-direction: column; min-width: 0; border: 1px solid var(--pass-line); border-radius: 10px; overflow: hidden; background: linear-gradient(160deg, #143726, #0d2418); box-shadow: 0 2px 10px #0004; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.lddv-pass-card:hover, .lddv-pass-card:focus-within { transform: translateY(-3px); border-color: var(--pass-gold); box-shadow: 0 10px 26px #0006, 0 0 22px #8bcb9d33; }
.lddv-pass-card--max { border-color: #b8963f; background: linear-gradient(160deg, #1a3f2a, #12301f 60%, #2a2412); }
.lddv-pass-art { display: block; margin: 0; }
.lddv-pass-art img { display: block; width: 100%; max-width: 100%; height: auto; aspect-ratio: 5 / 3; object-fit: cover; border-bottom: 1px solid var(--pass-line); }
.lddv-pass-card-body { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px 14px; flex: 1 1 auto; }
.lddv-pass-tag { align-self: flex-start; padding: 2px 8px; border: 1px solid var(--pass-gold); border-radius: 999px; font: 700 10px/1.6 system-ui, sans-serif; letter-spacing: .1em; text-transform: uppercase; color: var(--pass-gold); }
.lddv-pass-name { margin: 0; font: 400 20px/1.2 Georgia, serif; color: var(--pass-gold); }
.lddv-pass-price-row { margin: 0; display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.lddv-pass-price { font: 700 22px/1.2 system-ui, sans-serif; color: #fff4d6; font-variant-numeric: tabular-nums; }
.lddv-pass-price--table { font-weight: 700; color: #fff4d6; }
.lddv-pass-period { font-size: 13px; color: var(--pass-muted); }
.lddv-pass-facts { margin: 0; padding: 0; list-style: none; display: grid; gap: 3px; font-size: 13px; line-height: 1.45; }
.lddv-pass-facts li { display: flex; gap: 6px; align-items: center; }
.lddv-pass-facts .lddv-art { --art-size: 16px !important; }
.lddv-pass-example { display: grid; gap: 4px; font-size: 12px; color: var(--pass-muted); }
.lddv-pass-meter { appearance: none; width: 100%; height: 10px; display: block; background: #08120d; border: 1px solid var(--pass-line); border-radius: 999px; overflow: hidden; }
.lddv-pass-meter::-webkit-meter-bar { background: #08120d; border: 0; border-radius: 0; }
.lddv-pass-meter::-webkit-meter-optimum-value, .lddv-pass-meter::-webkit-meter-suboptimum-value, .lddv-pass-meter::-webkit-meter-even-less-good-value { background: linear-gradient(90deg, #2f9a55, #8bcb9d); }
.lddv-pass-meter::-moz-meter-bar { background: linear-gradient(90deg, #2f9a55, #8bcb9d); }
.lddv-pass-reset { margin: 0; font-size: 12px; color: var(--pass-muted); }
.lddv-pass-action { margin-top: auto; padding-top: 6px; }
.lddv-pass-action .lddv-btn, .lddv-pass-form .lddv-btn { width: 100%; justify-content: center; min-height: 44px; }
.lddv-pass-form { margin: 0; }
.lddv-pass-state { display: flex; gap: 6px; align-items: center; margin: 0 0 6px; font-size: 13px; font-weight: 700; color: #cdf2d4; }
.lddv-pass-card .lddv-btn:focus-visible, .lddv-passes .lddv-btn:focus-visible, .lddv-passes a:focus-visible { outline: 3px solid var(--pass-gold); outline-offset: 3px; }
.lddv-passes-links { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; }
.lddv-passes-links .lddv-btn { min-height: 44px; }
.lddv-pass-tab-here { border-color: var(--pass-gold); color: var(--pass-gold); }
.lddv-pass-current { display: flex; gap: 12px; align-items: flex-start; margin: 10px 0 14px; padding: 12px 14px; border: 1px solid var(--pass-gold); border-radius: 10px; background: var(--pass-panel); font-size: 14px; line-height: 1.5; }
.lddv-pass-current h3 { margin: 0 0 4px; font-size: 18px; }
.lddv-pass-current p { margin: 4px 0; }
.lddv-pass-thumb { display: inline-block; height: auto; border-radius: 4px; border: 1px solid var(--pass-line, #2f7a4d); vertical-align: middle; flex-shrink: 0; }
.lddv-pass-pending { color: #dbe9ff; }
.lddv-pass-queued, .lddv-pass-renewal { color: #cdf2d4; }
/* Revisão */
.lddv-pass-review { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 18px; align-items: start; margin: 10px 0; padding: 14px; border: 1px solid var(--pass-line); border-radius: 10px; background: var(--pass-panel); }
.lddv-pass-review .lddv-pass-art img { border: 1px solid var(--pass-line); border-radius: 8px; }
.lddv-pass-review-body { min-width: 0; }
.lddv-pass-review-facts { margin: 8px 0 12px; display: grid; gap: 8px; }
.lddv-pass-review-facts > div { display: grid; grid-template-columns: minmax(120px, 1fr) minmax(0, 3fr); gap: 4px 12px; font-size: 14px; line-height: 1.5; }
.lddv-pass-review-facts dt { color: var(--pass-muted); }
.lddv-pass-review-facts dd { margin: 0; }
.lddv-pass-review-form { display: grid; gap: 12px; margin-top: 8px; }
.lddv-pass-accept { display: flex; gap: 10px; align-items: flex-start; min-height: 44px; padding: 8px 10px; border: 1px solid var(--pass-line); border-radius: 6px; background: #0f2a1c; font-size: 14px; line-height: 1.5; cursor: pointer; }
.lddv-pass-accept input { width: 22px; height: 22px; flex: none; margin: 2px 0 0; accent-color: #8bcb9d; }
.lddv-pass-accept a { color: var(--pass-gold); }
.lddv-pass-secure { margin: 0; font-size: 12px; color: var(--pass-muted); }
/* Retorno do pagamento */
.lddv-pass-order-id { font-size: 13px; color: var(--pass-muted); }
.lddv-pass-order-id code, .lddv-pass-history code { font-size: 12px; overflow-wrap: anywhere; }
.lddv-pass-status { display: grid; gap: 8px; margin: 10px 0; padding: 14px 16px; border: 1px solid var(--pass-line); border-radius: 10px; background: var(--pass-panel); font-size: 15px; line-height: 1.5; }
.lddv-pass-status p { margin: 0; }
.lddv-pass-status-title { font: 400 20px/1.3 Georgia, serif; color: var(--pass-gold); }
.lddv-pass-status--done { border-color: var(--pass-gold); box-shadow: 0 0 24px #8bcb9d33; animation: lddv-pass-glow 2.4s ease-in-out 1; }
.lddv-pass-status--wait .lddv-art { animation: lddv-pass-breathe 2s ease-in-out infinite; }
.lddv-pass-status--fail { border-color: #8a4a4a; }
.lddv-pass-status--review { border-color: var(--pass-gold); border-style: dashed; }
.lddv-pass-scene { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 16px; align-items: center; }
.lddv-pass-scene .lddv-pass-art img { border: 1px solid var(--pass-gold); border-radius: 8px; }
.lddv-pass-scene .lddv-action-row { margin-top: 10px; }
@keyframes lddv-pass-glow { 0% { box-shadow: 0 0 0 #8bcb9d00; } 40% { box-shadow: 0 0 34px #8bcb9d66; } 100% { box-shadow: 0 0 24px #8bcb9d33; } }
@keyframes lddv-pass-breathe { 0%, 100% { opacity: .55; } 50% { opacity: 1; } }
/* Histórico e documentos */
.lddv-pass-history { width: 100%; border-collapse: collapse; font-size: 13px; }
.lddv-pass-receipt { display: inline-flex; align-items: center; min-height: 44px; padding: 0 8px; }
.lddv-pass-history caption { text-align: left; padding: 6px 0; color: var(--pass-muted); }
.lddv-pass-history th, .lddv-pass-history td { padding: 8px 10px; border-bottom: 1px solid var(--pass-line); text-align: left; vertical-align: top; }
.lddv-pass-history th { color: var(--pass-gold); font-weight: 600; }
.lddv-pass-version { margin: -6px 0 10px; font-size: 13px; color: var(--pass-muted); }
.lddv-pass-legal-list { margin: 10px 0; padding-left: 22px; display: grid; gap: 8px; font-size: 14px; line-height: 1.55; max-width: 80ch; }
.lddv-pass-legal-note { margin: 16px 0 0; padding: 8px 12px; border-left: 3px solid var(--pass-gold); color: var(--pass-muted); font-size: 12px; }
/* Ficha do personagem */
.lddv-pass { margin: 10px 0; padding: 10px 12px; border: 1px solid #2f7a4d; border-radius: 8px; background: linear-gradient(140deg, #143726, #0d2418); font-size: 13px; line-height: 1.4; }
.lddv-pass-title { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0 0 6px; font: 400 16px/1.25 Georgia, serif; color: #e0c27a; }
.lddv-pass-title small { font: 600 10px/1.4 system-ui, sans-serif; letter-spacing: .1em; text-transform: uppercase; color: #b7cdb9; }
.lddv-pass-line { margin: 3px 0; }
.lddv-pass .lddv-pass-meter { height: 8px; margin: 4px 0 6px; }
.lddv-pass-retention { display: block; height: 4px; margin: 2px 0 6px; border-radius: 999px; background: linear-gradient(90deg, #d8b97a var(--pass-retention, 0%), #1c2a24 var(--pass-retention, 0%)); border: 1px solid #2f4a3e; }
.lddv-pass-link { margin: 6px 0 0; }
.lddv-pass .lddv-btn { min-height: 36px; }
/* Cabeçalho */
.ux-passes { display: inline-flex; align-items: center; gap: 9px; box-sizing: border-box; min-height: var(--btn-min, 44px); padding: 6px 12px; border: 1px solid #2f7a4d; border-radius: var(--btn-radius, 6px); background: linear-gradient(140deg, #143726, #0d2418); color: #ecf5ea; font: 600 12px/1.25 system-ui, sans-serif; text-decoration: none; max-width: 100%; }
a.ux-passes:hover { background: #1b4a32; color: #fff; border-color: #e0c27a; }
a.ux-passes:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.ux-passes .lddv-art { --art-size: 20px !important; flex-shrink: 0; }
.ux-passes .lddv-pass-thumb { flex-shrink: 0; }
.ux-passes-body { display: grid; gap: 1px; min-width: 0; }
.ux-passes-name { color: #e0c27a; font-size: 12px; letter-spacing: .03em; text-transform: uppercase; }
.ux-passes-line { color: #d3e6d3; font-weight: 500; white-space: nowrap; }
.ux-passes-key { color: var(--muted); }
.ux-passes-value { color: #e0c27a; font-variant-numeric: tabular-nums; }
.ux-passes-queued { color: #cdf2d4; }
.ux-passes-state { color: var(--green); font-size: 11px; font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.lddv-newday-pass { padding: 8px 10px; border: 1px solid #2f7a4d; border-radius: 6px; background: #143726; }
@media (max-width: 1024px) {
  .lddv-passes-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 850px) {
  .lddv-pass-review, .lddv-pass-scene { grid-template-columns: minmax(0, 1fr); }
  .ux-passes-line { white-space: normal; }
}
@media (max-width: 600px) {
  .lddv-passes-grid { grid-template-columns: minmax(0, 1fr); }
  .lddv-pass-review-facts > div { grid-template-columns: minmax(0, 1fr); }
  .lddv-passes-head { flex-direction: column; }
}
@media (max-width: 430px) {
  .ux-passes { width: 100%; }
  .lddv-passes-links .lddv-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .lddv-passes *, .lddv-pass-card, .ux-passes, .lddv-pass * { transition: none !important; animation: none !important; }
  .lddv-pass-card:hover, .lddv-pass-card:focus-within { transform: none; }
}
.reduce-effects .lddv-pass-status--done, .reduce-effects .lddv-pass-status--wait .lddv-art { animation: none; }

/* Comunidade Viva — convite na home (Discord oficial; sem script, widget ou imagem remota) */
.ux-home-community { position: relative; margin: 26px 0 8px; padding: 22px 24px 20px; border: 1px solid var(--gold); border-radius: 10px; min-width: 0; overflow: hidden;
  background: linear-gradient(150deg, #1f3527 0%, #172a20 55%, #13241e 100%); box-shadow: inset 0 0 0 1px #d8b97a33, 0 16px 40px #0004; }
.ux-home-community::before { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .55;
  background: repeating-linear-gradient(0deg, transparent 0 3px, #d8b97a08 3px 4px), radial-gradient(ellipse at 100% 0, #d8b97a1f, transparent 55%); }
.ux-home-community::after { content: ''; position: absolute; inset: 6px; pointer-events: none; border: 1px solid #d8b97a4d; border-radius: 7px; }
.ux-home-community > * { position: relative; z-index: 1; }
.ux-home-community-eyebrow { display: block; font-size: 11px; letter-spacing: .19em; text-transform: uppercase; color: var(--gold); font-weight: 700; }
.ux-home-community h2 { margin: 6px 0 8px; font-size: 26px; color: #f1e7cc; }
.ux-home-community-lead { margin: 0; color: #dedccd; font-size: 15px; line-height: 1.6; max-width: 70ch; }
.ux-home-community-list { list-style: none; margin: 16px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 8px 14px; }
.ux-home-community-list li { display: flex; gap: 8px; align-items: center; min-width: 0; padding: 8px 10px; border: 1px solid var(--line); border-radius: 6px; background: #0f1c1699; color: #e6e1cd; font-size: 14px; line-height: 1.4; }
.ux-home-community-list li span:last-child { min-width: 0; overflow-wrap: anywhere; }
.ux-home-community-actions { margin-top: 18px; display: flex; flex-wrap: wrap; gap: 10px 18px; align-items: center; }
.ux-home-community-button { min-height: 48px; padding: 12px 22px; font-size: 16px; }
.ux-home-community-button .lddv-btn-label { overflow-wrap: normal; hyphens: manual; }
.ux-home-community-button:focus-visible { outline: 3px solid #fff3d0; outline-offset: 4px; box-shadow: 0 0 0 7px #d8b97a66; }
.ux-home-community-safety { margin: 0; display: flex; gap: 6px; align-items: center; color: #c9c3ad; font-size: 13px; }
@media (max-width: 600px) {
  .ux-home-community { padding: 18px 16px 16px; }
  .ux-home-community h2 { font-size: 22px; }
  .ux-home-community-list { grid-template-columns: minmax(0, 1fr); }
  .ux-home-community-actions { flex-direction: column; align-items: stretch; }
  .ux-home-community-button { justify-content: center; }
}

/* Comunidade Viva 2.9.0 — estado da ponte na Taverna e eco do Cemitério */
.lddv-tavern-bridge { display: inline-flex; align-items: center; gap: 8px; margin: 4px 0 0; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--line); font-size: 13px; color: var(--muted, #b9c8bf); }
.lddv-tavern-bridge::before { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #7d8a83; box-shadow: 0 0 0 2px rgba(0, 0, 0, .25); }
.lddv-tavern-bridge.is-connected { color: #cfeadb; border-color: rgba(79, 143, 106, .8); }
.lddv-tavern-bridge.is-connected::before { background: #4fd18a; }
.lddv-tavern-bridge.is-unavailable, .lddv-tavern-bridge.is-partial { color: #f1dfb0; border-color: rgba(212, 175, 55, .7); }
.lddv-tavern-bridge.is-unavailable::before, .lddv-tavern-bridge.is-partial::before { background: #d4af37; }
.lddv-grave-echo { display: flex; gap: 8px; align-items: flex-start; margin: 12px 0; padding: 10px 12px; border: 1px solid rgba(120, 160, 200, .35); border-radius: 8px; background: rgba(40, 60, 90, .25); color: #d5e2f0; line-height: 1.45; }
.lddv-grave-echo img { flex: none; margin-top: 2px; }
.lddv-grave-echo a { color: #f1dfb0; text-decoration: underline; }
.lddv-grave-echo a:focus-visible { outline: 3px solid #d4af37; outline-offset: 2px; }
