/* The modal top layer stays at viewport size, independent of battle UI scaling. */
dialog.v3-loading {
    position: fixed; inset: 0; width: 100vw; height: 100vh; height: 100dvh;
    max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
    overflow: hidden; color: #eef8ff; background: #071422;
    font-family: "Outfit", Arial, sans-serif; box-sizing: border-box;
}
.v3-loading::backdrop { background: #071422; }
.v3-loading-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 35%; }
.v3-loading-shade { position: absolute; inset: 0; background: linear-gradient(180deg, #03101c66, transparent 25%, #03101c22 55%, #020811ee 100%), linear-gradient(90deg, #03101c44, transparent 45%); }
.v3-loading-brand { position: absolute; top: max(30px, env(safe-area-inset-top)); left: 4.5%; font-size: clamp(11px, 1.1vw, 18px); letter-spacing: .23em; font-weight: 600; text-shadow: 0 2px 12px #000; }
.v3-loading-footer { position: absolute; bottom: max(4.5%, env(safe-area-inset-bottom)); left: 4.5%; right: 4.5%; }
.v3-loading-footer h1 { margin: 0 0 18px; font-size: clamp(16px, 1.5vw, 25px); font-weight: 500; letter-spacing: .08em; text-shadow: 0 2px 10px #000; }
.v3-loading-progress-row { display: flex; align-items: center; gap: 20px; }
.v3-loading-track { flex: 1; height: 7px; background: #010813d9; box-shadow: 0 1px 0 #89cfff44; }
#v3-loading-fill { height: 100%; width: 0; background: linear-gradient(90deg, #1268c9, #23caff 85%, #e4fbff); box-shadow: 0 0 13px #26c9ff88; transition: width .15s ease-out; }
#v3-loading-percent { min-width: 3.5ch; font-size: clamp(25px, 3vw, 48px); font-weight: 600; line-height: 1; text-align: right; text-shadow: 0 2px 12px #000; }
#v3-loading-status { margin: 18px 0 0; padding-top: 15px; border-top: 1px solid #b1dcff24; text-align: center; color: #c1d5e5; font-size: clamp(13px, 1.1vw, 18px); }
#v3-loading-retry { display: block; margin: 16px auto 0; padding: 10px 24px; border: 1px solid #6bceff; border-radius: 4px; background: #102c43; color: #eef8ff; font: inherit; cursor: pointer; }
#v3-loading-retry[hidden] { display: none; }
@media (max-width: 600px) { .v3-loading-brand { letter-spacing: .12em; } .v3-loading-footer { bottom: max(28px, env(safe-area-inset-bottom)); } .v3-loading-progress-row { gap: 12px; } }
@media (prefers-reduced-motion: reduce) { #v3-loading-fill { transition: none; } }
