/* Progress uses existing header/nav controls without changing their geometry. */
#side-menu-button .tower-auto-rank-feedback { position: absolute; inset: 0; z-index: 20; pointer-events: none; }
#side-menu-button .tower-auto-rank-feedback[hidden] { display: none; }
#side-menu-button .tower-auto-rank-feedback svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: hidden; fill: none; }
#side-menu-button .tower-auto-rank-feedback rect { stroke: var(--gold-strong); stroke-width: 2; }
#side-menu-button[data-auto-recovery="working"] .tower-auto-rank-feedback rect { stroke-dasharray: 26 74; animation: tower-auto-rank-trace 1.3s linear infinite; }
#side-menu-button .tower-auto-rank-label { position: absolute; top: 2px; left: 1px; right: 1px; text-align: center; font-size: .625rem; font-weight: 700; line-height: 1.1; color: var(--text); background: var(--surface-2); }
#side-menu-button .tower-auto-rank-symbol { position: absolute; inset: 12px 2px 1px; display: grid; place-items: center; color: var(--gold-strong); font-size: 1.125rem; font-weight: 800; line-height: 1; text-shadow: 0 1px 2px var(--surface-2); }
#side-menu-button[data-auto-recovery] .rank-menu-glyph > :is(small, i) { visibility: hidden; }
#side-menu-button[data-auto-recovery]:not([data-auto-recovery="working"]) #header-rank-value { visibility: hidden; }
@keyframes tower-auto-rank-trace { to { stroke-dashoffset: -100; } }
html[data-combat-motion="short"] #side-menu-button[data-auto-recovery="working"] .tower-auto-rank-feedback rect { animation: none; stroke-dasharray: none; }
@media (prefers-reduced-motion: reduce) {
  #side-menu-button[data-auto-recovery="working"] .tower-auto-rank-feedback rect { animation: none; stroke-dasharray: none; }
}
#navigation [data-tab="explore"] { position: relative; }
#navigation [data-tab="explore"][data-auto-working="true"]::before,
#navigation [data-tab="explore"][data-auto-ready="true"]::before,
#navigation [data-tab="explore"][data-auto-failed="true"]::before { content: ""; display: inline-block; width: 12px; height: 12px; margin-right: 4px; border: 2px solid var(--gold); border-radius: 50%; vertical-align: middle; pointer-events: none; }
#navigation [data-tab="explore"][data-auto-working="true"]::before { border-right-color: transparent; animation: tower-auto-status-spin 1s linear infinite; }
#navigation [data-tab="explore"][data-auto-ready="true"]::before { content: "✓"; width: 16px; height: 16px; line-height: 16px; border: 0; color: var(--gold-strong); }
#navigation [data-tab="explore"][data-auto-failed="true"]::before { content: "!"; line-height: 12px; text-align: center; }
@media (max-width: 759px) {
  #navigation [data-tab="explore"][data-auto-working="true"]::before,
  #navigation [data-tab="explore"][data-auto-ready="true"]::before,
  #navigation [data-tab="explore"][data-auto-failed="true"]::before { position: absolute; top: 6px; right: calc(50% - 22px); margin: 0; background-color: var(--surface); }
}
.tower-auto-recovery-panel { display: grid; justify-items: center; align-content: center; gap: 12px; min-height: 300px; padding: 16px; text-align: center; }
.tower-auto-recovery-panel h2 { margin: 0; font: inherit; font-weight: 700; font-size: var(--ga-font-page, 1.125rem); }
.tower-auto-recovery-panel p { margin: 0; overflow-wrap: anywhere; font-size: var(--ga-font-body, .875rem); }
.tower-auto-recovery-panel .small { font-size: var(--ga-font-note, .75rem); color: var(--muted); }
.tower-auto-recovery-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.tower-auto-recovery-actions button { min-height: 44px; }
.tower-auto-battle { position: relative; width: min(280px, 100%); height: 156px; contain: layout paint; overflow: hidden; border-bottom: 1px solid var(--line); background: radial-gradient(ellipse at 50% 100%, rgb(var(--accent-rgb) / 15%), transparent 65%); }
.tower-auto-duelist { position: absolute; bottom: 10px; width: 88px; height: 88px; transform-origin: center bottom; }
.tower-auto-duelist-ally { left: 5%; animation: tower-auto-ally-duel 2.6s ease-in-out infinite; }
.tower-auto-duelist-enemy { right: 5%; animation: tower-auto-enemy-duel 2.6s ease-in-out infinite; }
.tower-auto-portrait-frame { position: absolute; inset: 0; opacity: 0; animation-duration: calc(var(--turn-count) * 2.6s); animation-delay: calc(var(--turn) * -2.6s); animation-timing-function: steps(1, end); animation-iteration-count: infinite; }
.tower-auto-portrait-frame:first-child { opacity: 1; }
.tower-auto-portrait-frame[data-frames="2"] { animation-name: tower-auto-turn-two; }
.tower-auto-portrait-frame[data-frames="3"] { animation-name: tower-auto-turn-three; }
.tower-auto-portrait-frame img { position: relative; display: block; width: 100%; height: 100%; object-fit: contain; object-position: center bottom; }
.tower-auto-fallback { position: absolute; inset: 20px; display: grid; place-items: center; color: var(--gold); font-size: 1.5rem; }
.tower-auto-portrait-frame:has(img[data-ready="true"]) .tower-auto-fallback { visibility: hidden; }
.tower-auto-portrait-frame img[hidden] { display: none; }
.tower-auto-cheer { position: absolute; top: 12px; color: var(--text); font-size: var(--ga-font-note, .75rem); opacity: 0; animation: tower-auto-cheer 2.6s ease-out infinite; }
.tower-auto-cheer-ally { left: 10%; }
.tower-auto-cheer-enemy { right: 10%; animation-delay: -1.3s; }
.tower-auto-spark { position: absolute; left: calc(50% - 10px); top: 76px; color: var(--gold-strong); font-size: 1.5rem; opacity: 0; animation: tower-auto-impact 1.3s ease-out infinite; }
#tower-auto-recovery-panel[data-stopping="true"] :is(.tower-auto-duelist, .tower-auto-portrait-frame, .tower-auto-cheer, .tower-auto-spark) { animation-play-state: paused; }
@keyframes tower-auto-status-spin { to { transform: rotate(360deg); } }
@keyframes tower-auto-ally-duel { 0%, 8%, 38%, 55%, 100% { transform: none; } 18%, 25% { transform: translate(14px, -8px) rotate(8deg); } 68% { transform: translate(-4px, 2px) rotate(-6deg); } }
@keyframes tower-auto-enemy-duel { 0%, 38%, 55%, 88%, 100% { transform: none; } 18%, 25% { transform: translate(4px, 2px) rotate(6deg); } 68%, 75% { transform: translate(-14px, -8px) rotate(-8deg); } }
@keyframes tower-auto-cheer { 0%, 10%, 40%, 100% { opacity: 0; } 15%, 30% { opacity: 1; } }
@keyframes tower-auto-impact { 0%, 36%, 70%, 100% { opacity: 0; transform: scale(.7); } 45% { opacity: 1; transform: scale(1.2); } }
@keyframes tower-auto-turn-two { 0%, 49.99% { opacity: 1; } 50%, 100% { opacity: 0; } }
@keyframes tower-auto-turn-three { 0%, 33.32% { opacity: 1; } 33.33%, 100% { opacity: 0; } }
html[data-combat-motion="short"] #tower-auto-recovery-panel *,
html[data-combat-motion="short"] #navigation [data-tab="explore"]::before { animation: none; }
@media (prefers-reduced-motion: reduce) {
  #tower-auto-recovery-panel *, #navigation [data-tab="explore"]::before { animation: none; }
}
#tower-auto-recap { padding: max(16px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)); backdrop-filter: none; }
#tower-auto-recap .tower-auto-recap-dialog { display: flex; flex-direction: column; align-items: stretch; gap: 0; width: min(480px, 100%); max-height: calc(100dvh - max(16px, env(safe-area-inset-top)) - max(16px, env(safe-area-inset-bottom))); padding: 0; overflow: hidden; text-align: left; border: 1px solid var(--line); border-top: 2px solid var(--accent-border-strong); border-radius: var(--ga-radius-panel, 4px); outline: none; background: var(--dialog); font-variant-numeric: tabular-nums; --ga-font-page: 1rem; --ga-font-section: .875rem; --ga-font-body: .8125rem; --ga-font-control: .8125rem; --ga-font-note: .6875rem; --ga-font-caption: .625rem; }
#tower-auto-recap :is(h2, h3, p, dl, dd) { margin: 0; }
#tower-auto-recap :is(h2, h3) { font-family: inherit; font-weight: 700; line-height: 1.5; }
#tower-auto-recap h2 { font-size: var(--ga-font-page, 1.125rem); }
#tower-auto-recap h3 { font-size: var(--ga-font-section, .9375rem); }
#tower-auto-recap :is(p, dl) { font-size: var(--ga-font-body, .875rem); overflow-wrap: anywhere; }
#tower-auto-recap .small { font-size: var(--ga-font-note, .75rem); }
#tower-auto-recap .tower-auto-recap-heading { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; padding: 16px 20px; border-bottom: 1px solid var(--line); background: linear-gradient(115deg, rgb(var(--accent-rgb) / 9%), transparent 75%); }
#tower-auto-recap .tower-auto-recap-heading > div { min-width: 0; }
#tower-auto-recap .tower-auto-recap-eyebrow { color: var(--muted); font-size: var(--ga-font-caption, .6875rem); letter-spacing: .12em; line-height: 1.5; }
#tower-auto-recap .tower-auto-recap-emblem { display: grid; flex: 0 0 40px; width: 40px; height: 40px; place-items: center; }
#tower-auto-recap .tower-auto-recap-emblem img { display: block; width: 40px; height: 40px; object-fit: contain; }
#tower-auto-recap .tower-auto-recap-body { min-height: 0; padding: 0 20px 16px; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
#tower-auto-recap .tower-auto-recap-progress { padding-block: 16px; }
#tower-auto-recap .tower-auto-recap-range { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 12px; }
#tower-auto-recap .tower-auto-recap-range > div { display: grid; min-width: 0; gap: 0; }
#tower-auto-recap .tower-auto-recap-range > div:last-child { text-align: right; }
#tower-auto-recap .tower-auto-recap-range span { color: var(--muted); font-size: var(--ga-font-note, .75rem); overflow-wrap: anywhere; }
#tower-auto-recap .tower-auto-recap-range strong { color: var(--text); font-size: 1.5rem; font-weight: 700; line-height: 1.3; letter-spacing: -.03em; overflow-wrap: anywhere; }
#tower-auto-recap .tower-auto-recap-range > div:last-child strong { color: var(--gold-strong); }
#tower-auto-recap .tower-auto-recap-range small { margin-left: 3px; color: var(--muted); font-size: var(--ga-font-section, .9375rem); font-weight: 500; }
#tower-auto-recap .tower-auto-recap-route-arrow { padding: 4px 12px; border-bottom: 1px solid var(--line); font-size: 1.125rem; }
#tower-auto-recap .tower-auto-recap-summary { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 12px; margin-top: 16px; padding: 12px; border: 1px solid var(--line); border-radius: var(--ga-radius-panel, 4px); background: var(--inset); }
#tower-auto-recap .tower-auto-recap-summary > div { min-width: 0; }
#tower-auto-recap .tower-auto-recap-summary > div + div { padding-left: 12px; border-left: 1px solid var(--line); }
#tower-auto-recap .tower-auto-recap-summary dt { color: var(--muted); font-size: var(--ga-font-note, .75rem); overflow-wrap: anywhere; }
#tower-auto-recap .tower-auto-recap-summary dd { color: var(--text); font-size: .875rem; font-weight: 700; overflow-wrap: anywhere; }
#tower-auto-recap .tower-auto-recap-rewards { display: grid; gap: 12px; padding-block: 16px; border-top: 1px solid var(--line); }
#tower-auto-recap .tower-auto-recap-section-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
#tower-auto-recap .tower-auto-recap-section-heading > span { padding: 1px 6px; border: 1px solid color-mix(in srgb, var(--green), transparent 65%); border-radius: var(--ga-radius-choice, 2px); color: var(--green); font-size: var(--ga-font-caption, .6875rem); }
#tower-auto-recap .tower-auto-recap-reward-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
#tower-auto-recap .tower-auto-recap-reward-grid > div { display: flex; grid-column: 1 / -1; justify-content: space-between; align-items: baseline; gap: 12px; padding: 6px 0; border-bottom: 1px solid color-mix(in srgb, var(--line), transparent 45%); }
#tower-auto-recap .tower-auto-recap-reward-grid dt { min-width: 0; color: var(--muted); overflow-wrap: anywhere; }
#tower-auto-recap .tower-auto-recap-reward-grid dd { min-width: 0; text-align: right; font-weight: 600; overflow-wrap: anywhere; }
#tower-auto-recap .tower-auto-recap-reward-grid > div:not(.tower-auto-recap-currency) dd { flex: 0 0 auto; max-width: 70%; }
#tower-auto-recap .tower-auto-recap-reward-grid > .tower-auto-recap-currency { display: grid; grid-column: auto; align-content: start; gap: 4px; padding: 12px; border: 1px solid var(--line); border-radius: var(--ga-radius-panel, 4px); background: linear-gradient(135deg, rgb(var(--accent-rgb) / 6%), var(--surface)); }
#tower-auto-recap .tower-auto-recap-currency dt { font-size: var(--ga-font-note, .75rem); }
#tower-auto-recap .tower-auto-recap-currency dd { color: var(--gold-strong); text-align: left; font-size: 1rem; font-weight: 700; line-height: 1.5; }
#tower-auto-recap .tower-auto-recap-reward-grid > .tower-auto-recap-currency-wide { grid-column: 1 / -1; }
#tower-auto-recap [data-recap-sale]:empty { display: none; }
#tower-auto-recap .tower-auto-recap-empty { padding: 12px; border: 1px dashed var(--line); color: var(--muted); }
#tower-auto-recap .tower-auto-recap-pending { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--line); border-radius: var(--ga-radius-panel, 4px); background: var(--inset); }
#tower-auto-recap .tower-auto-recap-pending[hidden] { display: none; }
#tower-auto-recap .tower-auto-recap-pending h3 { font-size: var(--ga-font-body, .875rem); }
#tower-auto-recap .tower-auto-recap-outcome { margin-top: 16px; padding-left: 10px; border-left: 2px solid var(--accent-border); color: var(--muted); font-size: var(--ga-font-note, .75rem); }
#tower-auto-recap[data-outcome="defeated"] .tower-auto-recap-outcome { border-color: var(--red); color: var(--text); }
#tower-auto-recap[data-outcome="defeated"] .tower-auto-recap-range > div:last-child > span:last-child { color: var(--red); }
#tower-auto-recap .tower-auto-recap-footer { display: grid; flex: 0 0 auto; gap: 8px; padding: 12px 20px 16px; border-top: 1px solid var(--line); background: var(--surface); }
#tower-auto-recap [data-recap-auto-status] { display: flex; align-items: baseline; justify-content: center; gap: 6px; text-align: center; }
#tower-auto-recap [data-recap-auto-status]::before { content: ""; width: 6px; height: 6px; flex: 0 0 6px; align-self: center; border-radius: 50%; background: var(--muted); }
#tower-auto-recap [data-recap-auto-status][data-running="true"]::before { background: var(--green); }
#tower-auto-recap .tower-auto-recap-footer button { width: 100%; min-height: 48px; }
@media (max-width: 359px) {
  #tower-auto-recap .tower-auto-recap-heading { padding: 12px 16px; }
  #tower-auto-recap .tower-auto-recap-body { padding-inline: 16px; }
  #tower-auto-recap .tower-auto-recap-footer { padding-inline: 16px; }
  #tower-auto-recap .tower-auto-recap-summary { gap: 8px; padding: 8px; }
  #tower-auto-recap .tower-auto-recap-currency { padding: 8px; }
}

/* Reuse the bottom monitor while another in-game screen stays interactive. */
.background-battle-monitor.tower-auto-mini { border-radius: 4px; backdrop-filter: none; }
.tower-auto-mini .background-battle-monitor-heading { grid-template-columns: 8px minmax(0, 1fr) auto; min-height: 28px; }
.tower-auto-mini .background-battle-monitor-heading strong { font-size: var(--ga-font-note, .75rem); }
.tower-auto-mini .background-battle-monitor-heading > span:last-child { font-size: var(--ga-font-caption, .6875rem); }
.tower-auto-mini .background-battle-monitor-body { grid-template-columns: minmax(0, 1fr) auto; min-height: 56px; gap: 8px; padding: 5px 7px; }
.tower-auto-mini .background-battle-monitor-meters { grid-template-columns: minmax(64px, auto) minmax(22px, 1fr); font-size: var(--ga-font-note, .75rem); }
.tower-auto-mini .background-battle-monitor-meters b { font-size: inherit; }
.tower-auto-mini .background-battle-monitor-actions { gap: 4px; }
.tower-auto-mini .background-battle-monitor-actions button { min-width: 44px; min-height: 44px; padding: 4px 6px; border-radius: 3px; font-size: var(--ga-font-body, .875rem); }
html[data-combat-motion="short"] .tower-auto-mini .background-battle-monitor-signal { animation: none; }

/* Use the existing command dock's area; keep the battlefield's height intact. */
.battle-shell .battle-command-frame { position: relative; }
.battle-shell .tower-auto-action-wait {
  position: absolute; inset: 0; z-index: 3; display: grid; align-content: center;
  justify-items: center; gap: .5rem; padding: .5rem; pointer-events: auto;
  color: var(--text); background: var(--surface, #171c21);
  font-size: var(--ga-font-note, .75rem); text-align: center;
}
.battle-shell .tower-auto-action-wait[hidden] { display: none; }
.battle-shell .tower-auto-action-wait progress {
  width: min(100%, 14rem); height: .25rem; border: 0; border-radius: 2px;
  overflow: hidden; appearance: none; accent-color: var(--gold-strong);
}
.battle-shell .tower-auto-action-wait progress::-webkit-progress-bar { background: #ffffff18; }
.battle-shell .tower-auto-action-wait progress::-webkit-progress-value { background: var(--gold-strong); }
.battle-shell .tower-auto-action-wait progress::-moz-progress-bar { background: var(--gold-strong); }
.battle-shell .tower-auto-action-wait[data-waiting="true"] progress { opacity: .55; }
