/* LDDV_BR 2.9.0 r2 — combate compacto e recuperação rápida (ADR-042).
   Carregada por último: substitui as regras de altura do painel de batalha das
   folhas anteriores (retratos, títulos, blocos abertos) sem tocar no resto do jogo.
   Paleta: verdes escuros do reino, dourado para a ação prioritária, vermelho só
   para perigo, roxo espectral para a alma. */

:root {
  --combat-panel: #101f19;
  --combat-card: #14261d;
  --combat-enemy: #1f1d18;
  --combat-line: #3a5646;
  --combat-gold: #d8b97a;
  --combat-gold-ink: #17211a;
  --combat-danger: #9a5748;
  --combat-danger-bg: #3a231f;
  --combat-soul: #a98cff;
  --combat-soul-deep: #6f56d6;
  --combat-muted: #a4b8a6;
}

/* ---------- moldura ---------- */
/* `overflow: clip` recorta os cantos sem criar um contêiner de rolagem: a barra de comando fixa (sticky) continua presa ao rodapé da janela. */
.lddv-battle { border: 1px solid var(--combat-line); border-radius: 10px; overflow: clip; background: var(--combat-panel); margin: 0 0 12px; box-shadow: 0 8px 22px #0003; }
.ux-combat-layout .lddv-battle { margin: 0; }
.lddv-battle-heading { display: flex; align-items: center; gap: 10px; padding: 6px 12px; background: #172a20; border-bottom: 1px solid var(--combat-line); }
.lddv-battle-heading .lddv-kicker { color: var(--combat-muted); font: 700 10px/1.4 system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase; }
.ux-combat-layout .lddv-battle-heading h2, .lddv-battle-heading h2 { margin: 0; font: 400 17px/1.3 Georgia, serif; color: #f1e7cf; flex: 1 1 auto; min-width: 0; padding: 0; border: 0; }
.lddv-battle--soul .lddv-battle-heading { background: linear-gradient(120deg, #1c1a33, #172a20); }
.lddv-battle--soul .lddv-battle-heading h2 { color: #e2d6ff; }
.ux-log-jump { font-size: 12px; white-space: nowrap; min-height: 32px; display: inline-flex; align-items: center; color: var(--combat-gold); }
@media (min-width: 1150px) { .ux-log-jump { display: none; } }

/* ---------- desfecho compacto ---------- */
.lddv-outcome { padding: 10px 12px; }
.lddv-outcome-head { gap: 10px; }
.lddv-outcome-head > .lddv-art { --art-size: 28px; }
.lddv-outcome-title { font: 400 22px/1.15 Georgia, serif; }
.lddv-outcome-subtitle { margin-top: 2px; font-size: 13px; }
.lddv-outcome-grid { grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); gap: 6px; margin-top: 8px; }
.lddv-outcome-item { padding: 6px 8px; gap: 0 6px; }
.lddv-outcome-item > .lddv-art { --art-size: 20px; }
.lddv-outcome-value { font-size: 17px; }
.lddv-outcome-label { font-size: 11px; }
.lddv-outcome-note { margin-top: 6px; font-size: 12px; }

/* ---------- avisos de desgaste (só o que o painel de recuperação não diz) ---------- */
.lddv-wear-alerts { display: grid; gap: 6px; padding: 8px 12px 0; }
.lddv-wear-alerts .lddv-wear-break, .lddv-wear-alerts .lddv-wear-why { margin: 0; font-size: 13px; }
.lddv-wear-alerts .lddv-wear-why { padding: 6px 10px; border-left: 3px solid #e8c15a; background: #1d2416; color: #e5dfc8; border-radius: 0 6px 6px 0; }

/* ---------- arena: você × adversário, lado a lado ---------- */
.lddv-arena { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 0; background: var(--combat-panel); border-top: 1px solid var(--combat-line); }
.ux-combat-layout .lddv-battle .lddv-combatant, .lddv-combatant { display: grid; grid-template-columns: 64px minmax(0, 1fr); grid-template-rows: auto auto; gap: 2px 10px; padding: 10px 12px; background: var(--combat-card); min-width: 0; align-content: start; }
.ux-combat-layout .lddv-battle .lddv-figure, .lddv-figure { grid-column: 1; grid-row: 1 / span 2; display: flex; align-items: center; justify-content: center; min-height: 0; background: radial-gradient(circle at 50% 60%, #8bcb9d1a, transparent 70%); border-radius: 8px; align-self: start; }
.ux-combat-layout .lddv-battle .lddv-figure > .lddv-art, .lddv-figure > .lddv-art, .lddv-figure .lddv-art { width: 64px; height: 64px; min-width: 0; max-width: 100%; }
.ux-combat-layout .lddv-battle .lddv-combatant-title, .lddv-combatant-title { grid-column: 2; grid-row: 1; min-height: 0; }
.lddv-combatant-title .lddv-kicker { font-size: 9px; letter-spacing: .06em; text-transform: uppercase; }
.ux-combat-layout .lddv-combatant h3, .lddv-combatant h3 { font: 600 15px/1.25 Georgia, serif; margin: 1px 0 0; overflow-wrap: anywhere; color: #f4efe2; }
.lddv-combatant-vitals { grid-column: 2; grid-row: 2; min-width: 0; display: grid; gap: 4px; }
.lddv-enemy { background: var(--combat-enemy); }
.lddv-enemy .lddv-figure { background: radial-gradient(circle at 50% 60%, #d8b97a1a, transparent 70%); }
.lddv-versus { display: flex; align-items: center; justify-content: center; padding: 0 4px; color: var(--combat-gold); font: 700 11px/1 Georgia, serif; letter-spacing: .1em; text-transform: uppercase; background: var(--combat-panel); border-left: 1px solid var(--combat-line); border-right: 1px solid var(--combat-line); }
.lddv-versus span { padding: 4px 3px; border: 1px solid var(--combat-line); border-radius: 999px; background: #0d1815; }
.lddv-opponents { display: grid; gap: 1px; min-width: 0; background: var(--combat-line); }
.is-defeated .lddv-figure { opacity: .45; filter: grayscale(.9); }
.is-defeated h3 { text-decoration: line-through; text-decoration-color: var(--combat-muted); }

/* vida, alma e energia: barras finas com número e percentual */
.ux-combat-layout .lddv-health, .lddv-health { margin: 0; font-size: 12px; grid-column: auto; }
.lddv-health > span { display: flex; align-items: center; gap: 5px; }
.lddv-health > span > .lddv-art { --art-size: 14px; display: inline-grid; }
.lddv-health strong { margin-left: auto; color: #eee5cc; font-variant-numeric: tabular-nums; }
.lddv-health-percent { color: var(--combat-muted); font-variant-numeric: tabular-nums; min-width: 3ch; text-align: right; }
.lddv-health.is-critical strong, .lddv-health.is-critical .lddv-health-percent { color: #f2a68c; }
.ux-combat-layout .lddv-health meter, .lddv-health meter { height: 9px; margin-top: 3px; }
.lddv-health--soul > span { color: #e2d6ff; }
.lddv-energy.is-compact { display: grid; gap: 2px; margin: 0; padding: 4px 8px; border-radius: 6px; font-size: 12px; }
.lddv-energy.is-compact .lddv-energy-label { font-size: 12px; white-space: nowrap; gap: 4px; }
.lddv-energy.is-compact .lddv-energy-label > .lddv-art { --art-size: 14px; }
.lddv-energy.is-compact .lddv-energy-label strong { font-size: 12px; }
.lddv-energy.is-compact .lddv-energy-meter { height: 7px; }
.lddv-battle .lddv-state-chips { margin-top: 2px; gap: 4px; }
.lddv-battle .lddv-state-chip { padding: 1px 6px; font-size: 11px; white-space: nowrap; }
.lddv-battle .lddv-state-more { margin: 2px 0 0; }
.lddv-battle .lddv-state-more > summary { min-height: 44px; padding: 4px 8px; font-size: 11px; }
.lddv-battle .lddv-state-more > summary .lddv-btn-label { white-space: nowrap; }
.lddv-battle .lddv-state-more > summary > .lddv-art { display: none; }
.lddv-battle .lddv-combat-integrity { margin: 2px 0 0; font-size: 12px; gap: 4px 10px; }

/* ---------- estado e barra de comando ---------- */
.ux-combat-layout .lddv-battle-status, .lddv-battle-status { padding: 5px 12px; font-size: 12px; color: var(--combat-muted); border-top: 1px solid var(--combat-line); border-bottom: 0; }
/* Moldura em três irmãos (batalha → barra → painel) que se leem como um só bloco. */
.ux-combat-layout > .lddv-battle { border-radius: 10px 10px 0 0; border-bottom: 0; }
.ux-combat-layout > .lddv-battle.is-terminal { border-radius: 10px 10px 0 0; }
.lddv-command-bar { display: grid; gap: 6px; padding: 8px 12px; background: #13231b; border: 1px solid var(--combat-line); border-bottom: 1px solid var(--combat-line); }
.ux-combat-layout > .lddv-command-panel { border: 1px solid var(--combat-line); border-top: 0; border-radius: 0 0 10px 10px; background: var(--combat-panel); box-shadow: 0 8px 22px #0003; }
.ux-combat-layout > .lddv-battle.is-terminal + .lddv-command-panel { border-top: 1px solid var(--combat-line); }
.lddv-auto-row.is-first-use { margin: 0 0 8px; }
.lddv-command-bar .lddv-primary-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.lddv-command-bar .lddv-primary-actions > .lddv-command:only-child { grid-column: 1 / -1; }
.lddv-command-bar .lddv-command { min-height: 46px; justify-content: center; font-size: 15px; }
.lddv-command-bar .lddv-btn--primary { background: var(--combat-gold); color: var(--combat-gold-ink); border-color: #efd79f; box-shadow: inset 0 -2px 0 #b8975a; }
.lddv-command-bar .lddv-btn--primary:hover { background: #ecd7a4; color: var(--combat-gold-ink); }
.lddv-command-bar .lddv-btn--danger { background: var(--combat-danger-bg); color: #f4c3b6; border-color: var(--combat-danger); }
.lddv-auto-row { margin: 0; }
.lddv-auto-fight .lddv-command, .lddv-auto-command { min-height: 44px; padding: 5px 12px; background: #1a1f18; color: #e0d7bf; border: 1px dashed #8f7a45; box-shadow: none; font: 600 13px/1.25 system-ui, sans-serif; justify-content: flex-start; }
.lddv-auto-command:hover { background: #262b1f; color: #fff; }
.lddv-auto-command > .lddv-art { --art-size: 18px; }
.lddv-auto-text { display: grid; text-align: left; line-height: 1.2; }
.lddv-auto-kicker { font: 500 10px/1.3 system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: #bfae82; }
.lddv-auto-fight.is-first-use .lddv-risk { margin: 0 0 6px; }

/* ---------- painel de comandos: habilidades compactas, poções recolhidas ---------- */
.ux-combat-layout .lddv-command-panel, .lddv-command-panel { display: block; padding: 8px 12px 10px; }
.ux-combat-layout .lddv-action-group, .lddv-action-group { border-top: 0; margin-top: 0; padding-top: 0; }
.lddv-action-group + .lddv-action-group { margin-top: 4px; border-top: 1px solid var(--combat-line); padding-top: 4px; }
.ux-combat-layout .lddv-action-group > summary, .lddv-skills > summary, .lddv-potion-group > summary { min-height: 44px; font-size: 12px; gap: 6px; }
.lddv-skills-energy { padding: 0 7px; font-size: 11px; line-height: 1.5; }
.lddv-toggle-open, .lddv-toggle-closed { font-size: 11px; }
.lddv-skill-list { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 0; padding: 0; list-style: none; }
.lddv-skill { display: block; padding: 0; border: 0; background: none; position: static; flex: 1 1 150px; max-width: 100%; min-width: 0; }
.lddv-skill .lddv-command { position: static; width: 100%; min-height: 44px; padding: 5px 9px; font-size: 13px; gap: 6px; justify-content: flex-start; }
.lddv-skill .lddv-command::after { content: none; }
.lddv-skill .lddv-command > .lddv-art { --art-size: 16px; }
.lddv-skill .lddv-btn-label { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.lddv-skill .lddv-skill-cost { margin-left: auto; padding: 0 6px; border: 1px solid #5a8064; border-radius: 999px; font-size: 11px; line-height: 1.5; color: var(--combat-gold); white-space: nowrap; }
.lddv-skill .lddv-skill-cost > .lddv-art { --art-size: 12px; }
.lddv-skill.is-unavailable .lddv-command { border-style: dashed; opacity: .78; }
.lddv-skill-about { margin: 0; padding-left: 18px; font-size: 12px; color: var(--combat-muted); line-height: 1.5; }
.lddv-skill-about li + li { margin-top: 3px; }
#habilidades-sobre { margin: 6px 0 0; }
#habilidades-sobre > summary { min-height: 44px; padding: 5px 10px; font-size: 12px; }
.lddv-potion-group .lddv-skill-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.lddv-potion-group .lddv-skill { display: grid; gap: 3px; padding: 8px; border: 1px solid var(--combat-line); border-radius: 5px; background: #142219; }
.lddv-potion-group .lddv-skill-head { display: flex; align-items: center; gap: 6px; }
.lddv-potion-group .lddv-skill-summary { font-size: 12px; }
.ux-combat-layout .lddv-command-panel > .lddv-expander { margin: 6px 0 0; }
.lddv-command-panel .lddv-expander > summary { min-height: 44px; padding: 6px 10px; font-size: 13px; }
.ux-combat-layout .lddv-effects, .lddv-effects { margin-top: 6px; gap: 5px; }
.lddv-effect { font-size: 11px; padding: 2px 6px; }

/* ---------- relato ---------- */
.ux-combat-layout .lddv-combat-log, .lddv-combat-log { border-left: 2px solid var(--combat-line); padding: 0 0 0 12px; font-size: 13px; }
.ux-combat-layout .lddv-combat-log h2, .lddv-combat-log h2.lddv-log-title { display: flex; align-items: center; gap: 6px; margin: 0 0 8px; font: 400 17px/1.3 Georgia, serif; color: #f1e7cf; }
.lddv-log-title > .lddv-art { --art-size: 18px; }
.lddv-log-round { margin-left: auto; font: 600 11px/1.4 system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--combat-muted); }
.lddv-round-events { gap: 3px; margin: 0 0 10px; }
.lddv-event { padding: 4px 8px; gap: 3px 7px; font-size: 13px; }
.lddv-event-text { font-size: 13px; line-height: 1.45; }
.lddv-event-tag { font-size: 9px; }
.lddv-event-mark { font-size: 13px; }
.lddv-log-history { margin: 4px 0 8px; border: 1px dashed var(--combat-line); border-radius: 6px; }
.lddv-log-history > summary { display: flex; align-items: center; gap: 6px; min-height: 44px; padding: 6px 10px; color: var(--combat-gold); cursor: pointer; font: 600 13px/1.3 system-ui, sans-serif; }
.lddv-log-history > summary:focus-visible { outline: 3px solid var(--combat-gold); outline-offset: 2px; }
.lddv-log-history-body { padding: 4px 10px 6px; }
.lddv-log-history-body .lddv-round-events::before { content: 'Rodada ' attr(data-round); display: block; margin: 4px 0; font: 600 10px/1.4 system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase; color: var(--combat-muted); }
.lddv-log-history-body .lddv-event { animation: none !important; }
.lddv-auto-summary { margin: 0 0 8px; padding: 8px 10px; }
.lddv-auto-summary ul { margin: 5px 0; }
.lddv-auto-report > summary { min-height: 44px; padding: 6px 0; font-size: 13px; }

/* ---------- recuperação rápida ---------- */
.lddv-recover { margin: 8px 0; padding: 10px 12px; border: 1px solid #5c4b1e; border-radius: 10px; background: linear-gradient(160deg, #22200f, #151a12); min-width: 0; }
.lddv-battle--soul .lddv-recover, .lddv-recover[data-arena="graveyard"] { border-color: #4b3f80; background: linear-gradient(160deg, #1a1830, #14181c); }
.lddv-recover-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 12px; margin: 0 0 6px; }
.lddv-recover-head h2 { display: flex; align-items: center; gap: 6px; margin: 0; font: 400 18px/1.3 Georgia, serif; color: #ffe7a6; }
.lddv-recover[data-arena="graveyard"] .lddv-recover-head h2 { color: #e2d6ff; }
.lddv-recover-head h2 > .lddv-art { --art-size: 20px; }
.lddv-recover-purse { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: #e5dfc8; }
.lddv-recover-purse > .lddv-art { --art-size: 16px; }
.lddv-recover-purse strong { color: #ffe7a6; font-variant-numeric: tabular-nums; }
.lddv-recover[data-arena="graveyard"] .lddv-recover-purse strong { color: #cbb8ff; }
.lddv-recover-notice { display: flex; gap: 6px; align-items: flex-start; margin: 0 0 8px; padding: 7px 10px; border-radius: 6px; font-size: 13px; line-height: 1.45; }
.lddv-recover-notice > .lddv-art { --art-size: 16px; flex: 0 0 auto; margin-top: 1px; }
.lddv-recover-notice.is-success { border: 1px solid #9ad36a; background: #16261a; color: #e2f2d8; }
.lddv-recover-notice.is-error { border: 1px solid #ff9b7a; background: #3a1a12; color: #ffe4da; }
.lddv-recover-notice.is-info { border: 1px solid var(--combat-line); background: #13221a; color: #e5dfc8; }
.lddv-recover-status { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 2px; }
.lddv-recover-row { display: grid; grid-template-columns: minmax(84px, auto) minmax(0, 1fr) auto auto; align-items: center; gap: 4px 10px; padding: 4px 8px; border-radius: 6px; background: #0000001f; font-size: 13px; }
.lddv-recover-label { display: inline-flex; align-items: center; gap: 5px; color: #e5dfc8; }
.lddv-recover-label > .lddv-art { --art-size: 16px; }
.lddv-recover-values { font-variant-numeric: tabular-nums; color: #f4efe2; overflow-wrap: anywhere; }
.lddv-recover-delta { font-variant-numeric: tabular-nums; color: var(--combat-muted); font-size: 12px; min-width: 4ch; text-align: right; }
.lddv-recover-state { justify-self: end; padding: 0 7px; border: 1px solid #9ad36a; border-radius: 999px; font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: #cfe5da; white-space: nowrap; }
.lddv-recover-row.is-worn .lddv-recover-state { border-color: #e8c15a; color: #ffe7a6; }
.lddv-recover-row.is-critical .lddv-recover-state, .lddv-recover-row.is-loss .lddv-recover-state { border-color: #ff9b7a; color: #ffd1c2; }
.lddv-recover-row.is-critical .lddv-recover-delta, .lddv-recover-row.is-loss .lddv-recover-delta { color: #f2a68c; }
.lddv-recover-actions { display: grid; gap: 6px; }
.lddv-recover-action { display: grid; gap: 3px; margin: 0; min-width: 0; }
.lddv-recover-action .lddv-btn { width: 100%; justify-content: flex-start; gap: 8px; min-height: 46px; text-align: left; }
.lddv-recover-action .lddv-btn > .lddv-btn-label { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.lddv-recover-cost { margin-left: auto; white-space: nowrap; font-variant-numeric: tabular-nums; font-weight: 700; }
.lddv-recover-action.is-combined .lddv-btn { min-height: 50px; font-size: 15px; }
.lddv-recover-effect { font-size: 12px; color: #cfe5da; line-height: 1.4; padding: 0 2px; }
.lddv-recover-quick { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 6px; }
.lddv-recover-quick .lddv-btn { min-height: 44px; font-size: 13px; }
.lddv-recover-quick .lddv-recover-effect { font-size: 11px; color: var(--combat-muted); }
.lddv-recover-action.is-blocked .lddv-btn { opacity: .6; }
.lddv-recover-action .lddv-btn-reason { margin: 0; font-size: 12px; }
.lddv-recover-done { display: flex; gap: 6px; align-items: center; margin: 0; padding: 6px 0; font-size: 13px; color: #9ad36a; }
.lddv-recover-note { display: flex; gap: 6px; align-items: flex-start; margin: 8px 0 0; font-size: 12px; color: var(--combat-muted); line-height: 1.45; }
.lddv-recover-note > .lddv-art { --art-size: 14px; flex: 0 0 auto; margin-top: 2px; }
.lddv-recover-more { margin: 8px 0 0; }
.lddv-recover-more > summary { min-height: 44px; padding: 5px 10px; font-size: 12px; }
.lddv-recover-more .lddv-expander-body { padding: 8px 10px 10px; }
.lddv-recover-more .lddv-recover { margin: 0 0 8px; padding: 8px 10px; }
.lddv-recover-more .lddv-action-row { gap: 6px; }
.lddv-recover-more .lddv-action-row > .lddv-btn { flex: 1 1 160px; min-height: 44px; font-size: 12px; }

/* ---------- continuar ---------- */
.lddv-continue { margin: 8px 0 0; }
.lddv-continue-title { margin: 0 0 4px; font: 600 11px/1.4 system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--combat-muted); }
.lddv-continue-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 6px; }
.lddv-continue-actions > .lddv-btn, .lddv-continue-actions > .lddv-action-form { min-width: 0; margin: 0; }
.lddv-continue-actions .lddv-action-form .lddv-btn { width: 100%; }
.lddv-continue-actions .lddv-action-form .lddv-action-row { margin: 0; }
.lddv-continue-actions .lddv-risk-hint { grid-column: 1 / -1; margin: 0 0 2px; font-size: 12px; }
.lddv-continue-actions .lddv-btn { min-height: 44px; justify-content: center; }
.lddv-continue-note { display: flex; gap: 5px; align-items: center; margin: 6px 0 0; font-size: 12px; color: var(--combat-muted); }
.lddv-continue-note > .lddv-art { --art-size: 14px; }
.lddv-after-combat { margin-top: 8px; }
.lddv-loadout { margin-top: 6px; font-size: 12px; gap: 8px; }

/* Em combate, a moldura da página cede espaço: faixa das Eras, indicadores (Passes, Banco, Correio), relógio e
   linha de estado saem de cena; o cabeçalho, as abas, o caminho e os atalhos ficam. A ficha lateral continua. */
.lddv-has-combat .ux-eras-band, .lddv-has-combat .ux-indicators, .lddv-has-combat .ux-realm-clock, .lddv-has-combat .ux-state { display: none; }
.lddv-has-combat .ux-title-row { margin: 0; min-height: 0; }
.lddv-has-combat .ux-title-row:not(:has(> :not(h1))) { display: none; }
@media (max-width: 850px) {
  .lddv-has-combat .ux-title-row { display: none; }
  .lddv-has-combat .masthead { padding: 8px 12px; }
  .lddv-has-combat .ux-global { padding: 0 12px; }
  .lddv-has-combat .ux-tabs a, .lddv-has-combat .ux-tabs .ux-tab-here { min-height: 44px; padding: 6px 0; font-size: 13px; }
  .lddv-has-combat .realm { margin-top: 4px; }
  .lddv-has-combat #rotas { margin: 0 0 6px; }
}
/* `.story` rola horizontalmente em páginas com tabelas largas; em combate isso viraria o contêiner da barra fixa. */
.lddv-has-combat .story, .lddv-has-combat main, .lddv-has-combat .realm { overflow: visible; }

/* ---------- layout de duas colunas no desktop ---------- */
.ux-combat-layout { row-gap: 0; }
.ux-combat-layout > .lddv-combat-log { margin-top: 12px; }
@media (min-width: 1150px) {
  .ux-combat-layout { grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); grid-auto-rows: auto; column-gap: 14px; }
  .ux-combat-layout > .lddv-battle, .ux-combat-layout > .lddv-command-bar, .ux-combat-layout > .lddv-command-panel { grid-column: 1; }
  .ux-combat-layout > .lddv-combat-log { grid-column: 2; grid-row: 1 / span 3; margin-top: 0; max-height: calc(100dvh - 200px); min-height: 200px; overflow: auto; padding-right: 6px; }
}
.lddv-has-combat .realm main { padding-top: 12px; }
.lddv-has-combat .realm { margin-top: 8px; }

/* ---------- celular: coluna única, barra de ações fixa na base, sem rolagem horizontal ---------- */
@media (max-width: 850px) {
  .lddv-has-combat .realm main, .lddv-has-combat .realm main { padding: 10px; }
  .lddv-battle-heading { padding: 5px 10px; }
  .lddv-arena { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .lddv-versus { display: none; }
  .ux-combat-layout .lddv-battle .lddv-combatant, .lddv-combatant { grid-template-columns: 48px minmax(0, 1fr); gap: 2px 8px; padding: 8px; }
  .ux-combat-layout .lddv-battle .lddv-figure > .lddv-art, .lddv-figure > .lddv-art, .lddv-figure .lddv-art { width: 48px; height: 48px; }
  .ux-combat-layout .lddv-combatant h3, .lddv-combatant h3 { font-size: 14px; }
  .lddv-health { font-size: 12px; }
  .lddv-health > span > .lddv-art { display: none; }
  .lddv-energy.is-compact { padding: 3px 6px; }
  .lddv-opponents:has(> :nth-child(2)) { grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* Fixa na base da janela enquanto o combate durar: empurrada para cima quando ficaria abaixo da janela e para
     baixo quando já rolou para fora; nunca sai do fluxo (o espaço dela fica reservado) e o relato ganha um respiro
     no fim para nunca ficar escondido. */
  .lddv-command-bar { position: sticky; bottom: 0; top: calc(100dvh - var(--bar-h, 118px)); z-index: 4; box-shadow: 0 -6px 18px #000a; padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)); }
  .ux-combat-layout:has(> .lddv-command-bar) > .lddv-combat-log { padding-bottom: calc(var(--bar-h, 118px) + 12px); }
  .lddv-command-bar .lddv-command { min-height: 48px; }
  .lddv-skill { flex-basis: 100%; }
  .lddv-recover-row { grid-template-columns: minmax(70px, auto) minmax(0, 1fr) auto; }
  .lddv-recover-row .lddv-recover-state { grid-column: 1 / -1; justify-self: start; }
  .lddv-recover-quick { grid-template-columns: minmax(0, 1fr); }
  .lddv-continue-actions { grid-template-columns: minmax(0, 1fr); }
  .ux-combat-layout .lddv-combat-log, .lddv-combat-log { padding-left: 8px; }
  /* Sem barra flutuante da ficha por cima da barra de comando. */
  .lddv-has-combat .ux-character.is-enhanced:not([open]) { position: static; }
}
@media (max-width: 430px) {
  .lddv-arena { grid-template-columns: minmax(0, 1fr); }
  .lddv-enemy { border-top: 1px solid var(--combat-line); }
  .ux-combat-layout .lddv-battle .lddv-combatant, .lddv-combatant { grid-template-columns: 44px minmax(0, 1fr); }
  .ux-combat-layout .lddv-battle .lddv-figure > .lddv-art, .lddv-figure > .lddv-art, .lddv-figure .lddv-art { width: 44px; height: 44px; }
  .lddv-command-bar .lddv-command { font-size: 14px; padding: 6px; }
  .lddv-outcome-title { font-size: 19px; }
  .lddv-recover-head h2 { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) { .lddv-battle *, .lddv-recover * { animation: none !important; transition: none !important; } }
