/**
 * Estilos comunes para temas basados en capas de imagen.
 * Los assets concretos llegan por variables CSS desde theme.json.
 */

body.image-theme-active {
    background-color: #04111f;
    background-image: var(--image-theme-background);
    background-size: cover;
    background-position: center;
    background-attachment: fixed;
    color: var(--image-theme-title-color);
    font-family: var(--image-theme-font), 'Russo One', sans-serif;
}

body.image-theme-active::before {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    background: var(--image-theme-ambient-overlay);
    z-index: 0;
}

body.image-theme-active.image-theme-background-haunted-smoke::before {
    background:
        radial-gradient(ellipse at 18% 72%, rgba(8, 2, 13, 0.72) 0%, rgba(41, 14, 57, 0.28) 28%, transparent 62%),
        radial-gradient(ellipse at 76% 28%, rgba(20, 6, 32, 0.66) 0%, rgba(82, 31, 108, 0.24) 30%, transparent 64%),
        radial-gradient(ellipse at 48% 48%, rgba(2, 0, 6, 0.54) 0%, rgba(50, 18, 78, 0.2) 34%, transparent 70%),
        linear-gradient(180deg, rgba(4, 1, 8, 0.2), rgba(2, 0, 5, 0.64));
    background-size: 150% 130%, 145% 145%, 170% 150%, 100% 100%;
    opacity: 0.86;
    filter: blur(18px);
    transform: translate3d(-3%, 2%, 0) scale(1.08);
    animation: imageThemeHauntedSmokeDrift 24s ease-in-out infinite;
}

body.image-theme-active.image-theme-background-haunted-smoke::after {
    content: '';
    position: fixed;
    inset: -8%;
    pointer-events: none;
    z-index: 0;
    background:
        radial-gradient(ellipse at 24% 42%, rgba(0, 0, 0, 0.46) 0%, rgba(60, 22, 88, 0.18) 32%, transparent 66%),
        radial-gradient(ellipse at 82% 74%, rgba(12, 2, 18, 0.58) 0%, rgba(88, 31, 120, 0.16) 30%, transparent 68%),
        linear-gradient(90deg, transparent 0%, rgba(3, 0, 8, 0.28) 48%, transparent 100%);
    background-size: 160% 140%, 150% 150%, 120% 100%;
    opacity: 0.62;
    filter: blur(26px);
    transform: translate3d(4%, -2%, 0) scale(1.12);
    animation: imageThemeHauntedSmokeCurl 31s ease-in-out infinite;
}

body.image-theme-active.image-theme-background-ocean-shimmer::before {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.14), rgba(255, 250, 240, 0.2)),
        radial-gradient(circle at 12% 12%, rgba(23, 191, 208, 0.14), transparent 24%),
        radial-gradient(circle at 88% 10%, rgba(255, 190, 56, 0.13), transparent 22%);
    opacity: 0.86;
}

body.image-theme-active.image-theme-background-ocean-shimmer::after {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
        linear-gradient(100deg, transparent 0%, rgba(255, 255, 255, 0.22) 48%, transparent 56%),
        radial-gradient(ellipse at 48% 76%, rgba(255, 255, 255, 0.2), transparent 46%);
    background-size: 180% 100%, 100% 100%;
    opacity: 0.42;
    animation: imageThemeOceanShimmer 14s ease-in-out infinite;
}

.image-theme-active .game-view,
.image-theme-active .bingo-container,
.image-theme-active .intro-overlay,
.image-theme-active .outro-overlay,
.image-theme-active .pausa-overlay {
    position: relative;
    z-index: 1;
}

.image-theme-active .bingo-container {
    background: rgba(2, 8, 18, 0.16);
    border-radius: 0;
}

.image-theme-active .board {
    position: relative;
    overflow: hidden;
    background-color: rgba(2, 10, 25, 0.7);
    background-image: var(--image-theme-board);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    border: 0;
    border-radius: 22px;
    padding: clamp(10px, 1.2vw, 22px);
    box-shadow: var(--image-theme-board-shadow);
}

.image-theme-azteca-solar .board.mode-90 {
    gap: clamp(4px, 0.48vw, 8px);
    overflow: visible;
    padding: clamp(22px, 2.15vw, 36px);
}

.image-theme-azteca-solar .board.mode-90::after {
    content: '';
    position: absolute;
    inset: clamp(-11px, -0.62vw, -7px);
    z-index: 2;
    pointer-events: none;
    border-radius: inherit;
    background-image: var(--image-theme-board);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    padding: clamp(28px, 2.55vw, 44px) clamp(28px, 2.55vw, 44px) clamp(30px, 2.7vw, 46px);
    box-sizing: border-box;
    -webkit-mask:
        linear-gradient(#000 0 0) content-box,
        linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask:
        linear-gradient(#000 0 0) content-box,
        linear-gradient(#000 0 0);
    mask-composite: exclude;
}

.image-theme-azteca-solar .board.mode-90 .number-cell {
    z-index: 1;
}

.image-theme-active .side-panel,
.image-theme-active .controls-panel {
    position: relative;
    overflow: hidden;
    background-color: rgba(4, 11, 26, 0.62);
    background-image: var(--image-theme-side-panel);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    border: 0;
    border-radius: 24px;
    box-shadow: var(--image-theme-panel-shadow);
}

.image-theme-active .bingo-container.mode-75 .side-panel {
    background-image: var(--image-theme-side-panel-75);
    background-color: transparent;
    box-shadow: none;
}

.image-theme-active .logo {
    color: #f9fbff;
    text-shadow: var(--image-theme-logo-shadow);
    letter-spacing: 0;
}

.image-theme-active .number-cell,
.image-theme-active .last-ball,
.image-theme-active .current-number {
    font-family: var(--image-theme-font), 'Russo One', sans-serif;
    font-weight: 900;
    letter-spacing: 0;
    font-synthesis-weight: auto;
}

.image-theme-active .board::before,
.image-theme-active .side-panel::before,
.image-theme-active .controls-panel::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    opacity: 0;
}

.image-theme-active.image-theme-ambient-solar-panel-breathe .board,
.image-theme-active.image-theme-ambient-solar-panel-breathe .side-panel,
.image-theme-active.image-theme-ambient-solar-panel-breathe .controls-panel {
    animation: imageThemeSolarPanelBreathe 5.8s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-neon-panel-breathe .board,
.image-theme-active.image-theme-ambient-neon-panel-breathe .side-panel,
.image-theme-active.image-theme-ambient-neon-panel-breathe .controls-panel {
    animation: imageThemeNeonPanelBreathe 4.8s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-haunted-panel-breathe .board,
.image-theme-active.image-theme-ambient-haunted-panel-breathe .side-panel,
.image-theme-active.image-theme-ambient-haunted-panel-breathe .controls-panel {
    animation: imageThemeHauntedPanelBreathe 6.2s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-summer-breeze .board,
.image-theme-active.image-theme-ambient-summer-breeze .side-panel,
.image-theme-active.image-theme-ambient-summer-breeze .controls-panel {
    animation: imageThemeSummerBreeze 5.4s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-solar-panel-breathe .board::before,
.image-theme-active.image-theme-ambient-solar-panel-breathe .side-panel::before,
.image-theme-active.image-theme-ambient-solar-panel-breathe .controls-panel::before {
    background:
        radial-gradient(circle at 50% 12%, rgba(255, 218, 101, 0.24), transparent 30%),
        linear-gradient(115deg, transparent 0%, rgba(0, 169, 157, 0.18) 46%, rgba(255, 214, 92, 0.2) 50%, transparent 56%);
    mix-blend-mode: screen;
    animation: imageThemeSolarPanelSweep 6.4s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-neon-panel-breathe .board::before,
.image-theme-active.image-theme-ambient-neon-panel-breathe .side-panel::before,
.image-theme-active.image-theme-ambient-neon-panel-breathe .controls-panel::before {
    background:
        radial-gradient(circle at 20% 14%, rgba(0, 229, 255, 0.24), transparent 30%),
        radial-gradient(circle at 82% 18%, rgba(255, 0, 212, 0.22), transparent 28%),
        linear-gradient(105deg, transparent 0%, rgba(0, 229, 255, 0.18) 44%, rgba(255, 0, 212, 0.2) 50%, rgba(255, 230, 0, 0.12) 55%, transparent 64%);
    mix-blend-mode: screen;
    animation: imageThemeNeonPanelSweep 5.6s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-haunted-panel-breathe .board::before,
.image-theme-active.image-theme-ambient-haunted-panel-breathe .side-panel::before,
.image-theme-active.image-theme-ambient-haunted-panel-breathe .controls-panel::before {
    background:
        radial-gradient(circle at 24% 18%, rgba(255, 122, 19, 0.22), transparent 30%),
        radial-gradient(circle at 76% 20%, rgba(139, 92, 246, 0.18), transparent 28%),
        linear-gradient(110deg, transparent 0%, rgba(255, 122, 19, 0.12) 42%, rgba(114, 255, 205, 0.16) 49%, transparent 58%);
    mix-blend-mode: screen;
    animation: imageThemeHauntedPanelMist 7s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-summer-breeze .board::before,
.image-theme-active.image-theme-ambient-summer-breeze .side-panel::before,
.image-theme-active.image-theme-ambient-summer-breeze .controls-panel::before {
    background:
        radial-gradient(circle at 18% 12%, rgba(255, 190, 56, 0.2), transparent 25%),
        linear-gradient(105deg, transparent 0%, rgba(255, 255, 255, 0.34) 42%, rgba(23, 191, 208, 0.16) 50%, transparent 62%);
    mix-blend-mode: screen;
    animation: imageThemeSummerPanelSweep 6s ease-in-out infinite;
}

.image-theme-playa-paraiso .board {
    gap: clamp(5px, 0.55vw, 10px);
    padding: clamp(9px, 0.9vw, 16px);
    background-color: rgba(255, 253, 246, 0.94);
}

.image-theme-playa-paraiso .side-panel,
.image-theme-playa-paraiso .controls-panel {
    background-color: transparent;
    box-shadow: none;
}

body.image-theme-playa-paraiso .number-cell {
    font-size: clamp(34px, 3.32vw, 60px);
    background-size: 108% 108%;
}

body.image-theme-playa-paraiso .board.mode-75 .number-cell {
    font-size: clamp(35px, 3.18vw, 54px);
}

body.image-theme-playa-paraiso .board.mode-75 .row-letter {
    min-width: clamp(58px, 5.1vw, 88px);
    padding: 0 clamp(8px, 0.9vw, 16px);
    font-size: clamp(54px, 5.2vw, 86px);
    line-height: 1;
    text-shadow:
        0 3px 0 rgba(255, 255, 255, 0.85),
        0 6px 10px rgba(12, 68, 98, 0.32);
    filter: drop-shadow(0 3px 0 rgba(255, 255, 255, 0.52));
}

body.image-theme-playa-paraiso .number-cell.called {
    font-size: clamp(38px, 3.64vw, 65px);
    background-size: 110% 110%;
}

body.image-theme-playa-paraiso .board.mode-75 .number-cell.called {
    font-size: clamp(39px, 3.45vw, 58px);
}

.image-theme-playa-paraiso .logo {
    color: #17bfd0;
    background: linear-gradient(90deg, #16bfd3 0%, #10bdd0 34%, #ff943f 66%, #ff4f67 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: drop-shadow(0 3px 0 rgba(255, 255, 255, 0.96)) drop-shadow(0 6px 8px rgba(18, 92, 126, 0.16));
}

body.image-theme-playa-paraiso .current-number {
    font-size: clamp(66px, 8.8vw, 165px);
    background-size: 118% 118%;
}

body.image-theme-playa-paraiso .bingo-container:not(.mode-75) .number-cell {
    font-size: clamp(40px, 3.15vw, 72px);
    background-size: 112% 112%;
}

body.image-theme-playa-paraiso .bingo-container:not(.mode-75) .number-cell.called {
    font-size: clamp(46px, 3.55vw, 80px);
    background-size: 114% 114%;
}

body.image-theme-playa-paraiso .bingo-container:not(.mode-75) .current-number {
    font-size: clamp(118px, 13.6vw, 270px);
    background-size: 128% 128%;
}

body.image-theme-playa-paraiso .bingo-container.mode-75 .current-number {
    font-size: clamp(156px, 20.5vh, 235px);
    background-size: 128% 128%;
}

body.image-theme-playa-paraiso .last-ball {
    font-size: clamp(34px, 3.9vw, 64px);
}

.image-theme-playa-paraiso #last2 {
    background-image: var(--image-theme-last-frame-2);
    text-shadow: 0 2px 0 rgba(174, 48, 58, 0.8), 0 5px 10px rgba(174, 48, 58, 0.26);
}

.image-theme-playa-paraiso #last3 {
    background-image: var(--image-theme-last-frame-3);
    text-shadow: 0 2px 0 rgba(178, 108, 8, 0.8), 0 5px 10px rgba(178, 108, 8, 0.26);
}

body.image-theme-playa-paraiso .last-numbers {
    background-image: var(--image-theme-last-panel);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    padding: clamp(14px, 1.2vw, 22px) clamp(10px, 1vw, 18px);
}

body.image-theme-playa-paraiso .last-numbers h3 {
    margin-bottom: clamp(7px, 0.8vw, 14px);
}

body.image-theme-playa-paraiso .stats {
    min-height: clamp(54px, 4.6vw, 84px);
    display: block;
    background-image: var(--image-theme-counter-frame);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    padding: 0 7% 0 28%;
    line-height: clamp(54px, 4.6vw, 84px);
    white-space: nowrap;
    color: #173b63;
}

.image-theme-sol-de-verano .board {
    gap: clamp(5px, 0.55vw, 10px);
    padding: clamp(9px, 0.9vw, 16px);
    background-color: rgba(255, 252, 241, 0.94);
}

.image-theme-sol-de-verano .side-panel,
.image-theme-sol-de-verano .controls-panel,
.image-theme-sol-de-verano .bingo-container.mode-75 .side-panel {
    background-color: transparent;
}

body.image-theme-sol-de-verano .number-cell {
    font-size: clamp(34px, 3.32vw, 60px);
    background-size: 108% 108%;
}

body.image-theme-sol-de-verano .board.mode-75 .number-cell {
    font-size: clamp(35px, 3.18vw, 54px);
}

body.image-theme-sol-de-verano .board.mode-75 .row-letter {
    min-width: clamp(58px, 5.1vw, 88px);
    padding: 0 clamp(8px, 0.9vw, 16px);
    font-size: clamp(54px, 5.2vw, 86px);
    line-height: 1;
    text-shadow:
        0 3px 0 rgba(255, 255, 255, 0.92),
        0 6px 10px rgba(12, 68, 98, 0.26);
    filter: drop-shadow(0 3px 0 rgba(255, 255, 255, 0.52));
}

body.image-theme-sol-de-verano .number-cell.called {
    font-size: clamp(38px, 3.64vw, 65px);
    background-size: 110% 110%;
}

body.image-theme-sol-de-verano .board.mode-75 .number-cell.called {
    font-size: clamp(39px, 3.45vw, 58px);
}

.image-theme-sol-de-verano .logo {
    color: #17bfd0;
    background: linear-gradient(90deg, #16bfd3 0%, #10bdd0 34%, #ff943f 66%, #ff4f67 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: drop-shadow(0 3px 0 rgba(255, 255, 255, 0.96)) drop-shadow(0 6px 8px rgba(18, 92, 126, 0.16));
}

body.image-theme-sol-de-verano .current-number {
    font-size: clamp(66px, 8.8vw, 165px);
    background-size: 118% 118%;
}

body.image-theme-sol-de-verano .bingo-container:not(.mode-75) .number-cell {
    font-size: clamp(40px, 3.15vw, 72px);
    background-size: 112% 112%;
}

body.image-theme-sol-de-verano .bingo-container:not(.mode-75) .number-cell.called {
    font-size: clamp(46px, 3.55vw, 80px);
    background-size: 114% 114%;
}

body.image-theme-sol-de-verano .bingo-container:not(.mode-75) .current-number {
    font-size: clamp(118px, 13.6vw, 270px);
    background-size: 128% 128%;
}

body.image-theme-sol-de-verano .bingo-container.mode-75 .current-number {
    font-size: clamp(156px, 20.5vh, 235px);
    background-size: 128% 128%;
}

body.image-theme-sol-de-verano .last-ball {
    color: #ffffff;
    font-size: clamp(34px, 3.9vw, 64px);
    -webkit-text-stroke: 0.55px rgba(255, 255, 255, 0.95);
    text-shadow: 0 2px 0 rgba(0, 0, 0, 0.82), 0 5px 10px rgba(0, 0, 0, 0.24);
}

body.image-theme-sol-de-verano .last-numbers {
    padding: clamp(13px, 1.1vw, 20px) clamp(10px, 1vw, 18px);
    border: 1px solid rgba(255, 190, 56, 0.42);
    border-radius: clamp(18px, 1.4vw, 28px);
    background: rgba(255, 251, 239, 0.56);
    box-shadow: inset 0 0 18px rgba(255, 255, 255, 0.34), 0 8px 18px rgba(255, 190, 56, 0.12);
}

body.image-theme-sol-de-verano .last-numbers h3 {
    margin-bottom: clamp(7px, 0.8vw, 14px);
}

body.image-theme-sol-de-verano .stats {
    min-height: clamp(54px, 4.6vw, 84px);
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: 0.28em;
    border: 1px solid rgba(255, 190, 56, 0.42);
    border-radius: 999px;
    background: rgba(255, 251, 239, 0.66);
    color: #63574b;
    box-shadow: inset 0 0 14px rgba(255, 255, 255, 0.36);
    white-space: nowrap;
}

.image-theme-sol-de-verano .demo-btn-pause {
    background: linear-gradient(180deg, #ffd66b, #ff9f1c);
    border-color: rgba(255, 255, 255, 0.88);
    box-shadow: 0 7px 14px rgba(255, 159, 28, 0.22);
    color: #12365f;
}

.image-theme-sol-de-verano .demo-btn-exit {
    background: linear-gradient(180deg, #ff8776, #ff4f5f);
    border-color: rgba(255, 255, 255, 0.88);
    box-shadow: 0 7px 14px rgba(255, 79, 95, 0.22);
    color: #ffffff;
}

.image-theme-playa-paraiso .demo-btn-pause {
    background: linear-gradient(180deg, #ffd66b, #ff9f1c);
    border-color: rgba(255, 255, 255, 0.88);
    box-shadow: 0 7px 14px rgba(255, 159, 28, 0.22);
    color: #12365f;
}

.image-theme-playa-paraiso .demo-btn-exit {
    background: linear-gradient(180deg, #ff8776, #ff4f5f);
    border-color: rgba(255, 255, 255, 0.88);
    box-shadow: 0 7px 14px rgba(255, 79, 95, 0.22);
    color: #ffffff;
}

.image-theme-active .number-cell {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--image-theme-number-color);
    background-image: var(--image-theme-cell-normal);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    background-color: transparent;
    border: 0;
    border-radius: 10px;
    font-size: clamp(22px, 2.35vw, 42px);
    line-height: 1;
    -webkit-text-stroke: var(--image-theme-number-stroke);
    text-shadow: var(--image-theme-number-shadow);
    transition: transform 0.24s ease, filter 0.24s ease, color 0.24s ease;
    isolation: isolate;
}

.image-theme-halloween-horror .board {
    gap: clamp(2px, 0.24vw, 5px);
    padding: clamp(5px, 0.55vw, 10px);
}

.image-theme-halloween-horror .board.mode-75 {
    gap: 0.75% 0.18%;
}

.image-theme-halloween-horror .number-cell {
    background-size: 116% 116%;
    font-size: clamp(33px, 3.52vw, 62px);
}

.image-theme-halloween-horror .board.mode-75 .number-cell {
    font-size: clamp(35px, 3.36vw, 55px);
}

.image-theme-active .number-cell.called {
    color: var(--image-theme-called-number-color);
    background-image: var(--image-theme-cell-called);
    filter: var(--image-theme-called-filter);
    font-size: clamp(24px, 2.5vw, 44px);
    -webkit-text-stroke: var(--image-theme-called-number-stroke);
    text-shadow: var(--image-theme-called-number-shadow);
}

.image-theme-halloween-horror .number-cell.called {
    font-size: clamp(37px, 3.8vw, 66px);
    filter: brightness(1.18) saturate(1.22) drop-shadow(0 0 14px rgba(255, 122, 24, 0.82));
    box-shadow: inset 0 0 0 2px rgba(255, 188, 86, 0.78), 0 0 16px rgba(255, 122, 24, 0.55);
}

.image-theme-halloween-horror .board.mode-75 .number-cell.called {
    font-size: clamp(39px, 3.69vw, 59px);
}

.image-theme-active .number-cell.image-theme-just-called {
    z-index: 3;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-pop {
    animation: imageThemeCellPop 0.7s cubic-bezier(.2,.9,.2,1.2);
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-solar-stamp {
    animation: imageThemeSolarStamp 0.86s cubic-bezier(.18,.95,.24,1.2);
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-solar-stamp::before,
.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-solar-stamp::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: inherit;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-solar-stamp::before {
    inset: -12%;
    z-index: -1;
    background:
        linear-gradient(135deg, rgba(255, 228, 119, 0.88), rgba(0, 169, 157, 0.52)),
        var(--image-theme-cell-called);
    background-size: 100% 100%;
    filter: blur(1px) drop-shadow(0 0 12px rgba(255, 189, 65, 0.75));
    animation: imageThemeSolarStampGlow 0.86s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-solar-stamp::after {
    inset: -44%;
    z-index: -2;
    border-radius: 50%;
    background:
        repeating-conic-gradient(
            from 0deg,
            rgba(255, 215, 103, 0) 0deg 12deg,
            rgba(255, 215, 103, 0.8) 13deg 18deg,
            rgba(0, 169, 157, 0.48) 19deg 24deg,
            rgba(255, 215, 103, 0) 25deg 36deg
        );
    filter: blur(0.3px) drop-shadow(0 0 10px rgba(255, 197, 76, 0.62));
    animation: imageThemeSolarStampHalo 0.86s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-neon-spark {
    animation: imageThemeNeonSpark 0.78s cubic-bezier(.16,.95,.28,1.18);
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-neon-spark::before,
.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-neon-spark::after {
    content: '';
    position: absolute;
    pointer-events: none;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-neon-spark::before {
    inset: -16%;
    z-index: -1;
    border-radius: 14px;
    background:
        linear-gradient(90deg, rgba(0, 229, 255, 0.9), rgba(255, 0, 212, 0.86), rgba(255, 230, 0, 0.72)),
        var(--image-theme-cell-called);
    background-size: 220% 100%;
    filter: blur(2px) drop-shadow(0 0 15px rgba(0, 229, 255, 0.82));
    animation: imageThemeNeonSparkGlow 0.78s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-neon-spark::after {
    inset: -38%;
    z-index: -2;
    border-radius: 50%;
    background:
        radial-gradient(circle, rgba(255, 255, 255, 0.92) 0 8%, transparent 9%),
        conic-gradient(
            from 12deg,
            transparent 0deg 18deg,
            rgba(0, 229, 255, 0.9) 19deg 25deg,
            transparent 26deg 58deg,
            rgba(255, 0, 212, 0.82) 59deg 66deg,
            transparent 67deg 108deg,
            rgba(255, 230, 0, 0.76) 109deg 116deg,
            transparent 117deg 360deg
        );
    filter: drop-shadow(0 0 12px rgba(255, 0, 212, 0.7));
    animation: imageThemeNeonSparkBurst 0.78s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-shadow-veil {
    animation: imageThemeShadowVeil 0.96s cubic-bezier(.16,.88,.24,1.04);
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-shadow-veil::before,
.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-shadow-veil::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: inherit;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-shadow-veil::before {
    inset: -18%;
    z-index: -1;
    background:
        radial-gradient(circle at 50% 46%, rgba(255, 124, 24, 0.42), rgba(42, 11, 54, 0.34) 44%, transparent 70%),
        linear-gradient(130deg, rgba(0, 0, 0, 0.3), transparent 46%, rgba(0, 0, 0, 0.24));
    filter: blur(1.2px);
    animation: imageThemeShadowVeilMist 0.96s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-shadow-veil::after {
    inset: -34%;
    z-index: -2;
    border-radius: 50%;
    background:
        radial-gradient(ellipse at 50% 70%, rgba(3, 0, 8, 0.55), transparent 54%),
        repeating-conic-gradient(from 8deg, transparent 0deg 24deg, rgba(35, 9, 48, 0.44) 25deg 31deg, transparent 32deg 72deg);
    filter: blur(1px);
    animation: imageThemeShadowVeilCurl 0.96s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-summer-splash {
    animation: imageThemeSummerSplash 0.82s cubic-bezier(.18,.95,.24,1.14);
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-summer-splash::before,
.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-summer-splash::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: inherit;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-summer-splash::before {
    inset: -13%;
    z-index: -1;
    background:
        radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.52), transparent 58%),
        linear-gradient(135deg, rgba(23, 191, 208, 0.72), rgba(255, 190, 56, 0.46));
    filter: blur(1.2px) drop-shadow(0 0 12px rgba(23, 191, 208, 0.52));
    animation: imageThemeSummerSplashGlow 0.82s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-summer-splash::after {
    inset: -36%;
    z-index: -2;
    border-radius: 50%;
    background:
        conic-gradient(
            from 8deg,
            transparent 0deg 18deg,
            rgba(255, 190, 56, 0.72) 19deg 26deg,
            transparent 27deg 64deg,
            rgba(23, 191, 208, 0.62) 65deg 72deg,
            transparent 73deg 118deg,
            rgba(255, 107, 107, 0.44) 119deg 126deg,
            transparent 127deg 360deg
        );
    filter: blur(0.2px) drop-shadow(0 0 10px rgba(255, 190, 56, 0.44));
    animation: imageThemeSummerSplashBurst 0.82s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-ripple {
    animation: imageThemeCellRipple 0.72s ease-out;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-spark {
    animation: imageThemeCellSpark 0.68s ease-out;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-flip {
    animation: imageThemeCellFlip 0.74s cubic-bezier(.2,.9,.2,1.05);
}

.image-theme-active .number-cell.random-bounce {
    animation: imageThemeSoftPulse 0.65s ease;
}

.image-theme-active .bingo-container.image-theme-mounting {
    animation: imageThemeMountContainer 0.82s both cubic-bezier(.16,.88,.22,1);
}

.image-theme-active .board.image-theme-mount-board {
    animation: imageThemeMountBoard 1.05s both cubic-bezier(.16,.88,.22,1);
}

.image-theme-active .side-panel.image-theme-mount-panel {
    animation: imageThemeMountPanel 1.05s 0.46s both cubic-bezier(.16,.88,.22,1);
}

.image-theme-active .number-cell.image-theme-mount-cell {
    animation: imageThemeMountCell 0.82s both cubic-bezier(.18,.94,.24,1.08);
}

.image-theme-active .side-panel .image-theme-mount-item {
    animation: imageThemeMountItem 0.78s both cubic-bezier(.18,.94,.24,1.08);
}

.image-theme-active .current-number {
    position: relative;
    isolation: isolate;
    color: var(--image-theme-current-number-color);
    background-color: transparent;
    background-image: var(--image-theme-current-frame);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    border: 0;
    border-radius: 50%;
    font-size: clamp(56px, 8vw, 150px);
    line-height: 1;
    text-shadow: var(--image-theme-current-number-shadow);
    box-shadow: none;
}

.image-theme-halloween-horror .current-number {
    font-size: clamp(62px, 8.8vw, 165px);
}

.image-theme-active .current-number.empty {
    color: rgba(255, 255, 255, 0.7);
}

.image-theme-active .current-number.image-theme-pop,
.image-theme-active .current-number.image-theme-current-bounce {
    animation: imageThemeCurrentPop 0.52s cubic-bezier(.2,.9,.2,1.2);
}

.image-theme-active .current-number.image-theme-current-solar-orbit {
    animation: imageThemeCurrentSolarOrbit 0.82s cubic-bezier(.16,.95,.28,1.18);
}

.image-theme-active .current-number.image-theme-current-neon-orbit {
    animation: imageThemeCurrentNeonOrbit 0.78s cubic-bezier(.16,.95,.28,1.18);
}

.image-theme-active .current-number.image-theme-current-phantom-rise {
    animation: imageThemeCurrentPhantomRise 1.02s cubic-bezier(.16,.88,.24,1.04);
}

.image-theme-active .current-number.image-theme-current-beach-pop {
    animation: imageThemeCurrentBeachPop 0.78s cubic-bezier(.16,.95,.28,1.18);
}

.image-theme-active .current-number.image-theme-current-solar-orbit::before,
.image-theme-active .current-number.image-theme-current-solar-orbit::after,
.image-theme-active .current-number.image-theme-current-neon-orbit::before,
.image-theme-active .current-number.image-theme-current-neon-orbit::after,
.image-theme-active .current-number.image-theme-current-phantom-rise::before,
.image-theme-active .current-number.image-theme-current-phantom-rise::after,
.image-theme-active .current-number.image-theme-current-beach-pop::before,
.image-theme-active .current-number.image-theme-current-beach-pop::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
}

.image-theme-active .current-number.image-theme-current-solar-orbit::before {
    inset: 8%;
    z-index: -1;
    border: clamp(3px, 0.35vw, 7px) solid rgba(255, 219, 105, 0.7);
    border-left-color: rgba(0, 169, 157, 0.72);
    border-bottom-color: rgba(255, 219, 105, 0.18);
    filter: drop-shadow(0 0 16px rgba(255, 191, 74, 0.62));
    animation: imageThemeCurrentSolarRing 0.82s ease-out both;
}

.image-theme-active .current-number.image-theme-current-solar-orbit::after {
    inset: -8%;
    z-index: -2;
    background:
        repeating-conic-gradient(
            from 0deg,
            rgba(255, 218, 101, 0) 0deg 9deg,
            rgba(255, 218, 101, 0.58) 10deg 14deg,
            rgba(0, 169, 157, 0.24) 15deg 18deg,
            rgba(255, 218, 101, 0) 19deg 30deg
        );
    filter: blur(1px) drop-shadow(0 0 18px rgba(255, 184, 58, 0.52));
    animation: imageThemeCurrentSolarRays 0.82s ease-out both;
}

.image-theme-active .current-number.image-theme-current-neon-orbit::before {
    inset: 7%;
    z-index: -1;
    border: clamp(3px, 0.35vw, 7px) solid rgba(0, 229, 255, 0.76);
    border-top-color: rgba(255, 0, 212, 0.78);
    border-right-color: rgba(255, 230, 0, 0.42);
    filter: drop-shadow(0 0 18px rgba(0, 229, 255, 0.72));
    animation: imageThemeCurrentNeonRing 0.78s ease-out both;
}

.image-theme-active .current-number.image-theme-current-neon-orbit::after {
    inset: -10%;
    z-index: -2;
    background:
        conic-gradient(
            from 0deg,
            transparent 0deg 24deg,
            rgba(0, 229, 255, 0.72) 25deg 31deg,
            transparent 32deg 84deg,
            rgba(255, 0, 212, 0.7) 85deg 92deg,
            transparent 93deg 152deg,
            rgba(255, 230, 0, 0.48) 153deg 160deg,
            transparent 161deg 360deg
        );
    filter: blur(1px) drop-shadow(0 0 20px rgba(255, 0, 212, 0.58));
    animation: imageThemeCurrentNeonRays 0.78s ease-out both;
}

.image-theme-active .current-number.image-theme-current-phantom-rise::before {
    inset: 3%;
    z-index: -1;
    border: clamp(3px, 0.35vw, 7px) solid rgba(37, 13, 49, 0.76);
    border-top-color: rgba(255, 183, 83, 0.28);
    border-left-color: rgba(125, 255, 207, 0.22);
    filter: blur(0.2px);
    animation: imageThemeCurrentPhantomRing 1.02s ease-out both;
}

.image-theme-active .current-number.image-theme-current-phantom-rise::after {
    inset: -16%;
    z-index: -2;
    background:
        radial-gradient(ellipse at 50% 72%, rgba(0, 0, 0, 0.44), transparent 52%),
        linear-gradient(180deg, transparent 0%, rgba(42, 11, 54, 0.42) 72%, transparent 100%);
    filter: blur(1.4px);
    animation: imageThemeCurrentPhantomMist 1.02s ease-out both;
}

.image-theme-active .current-number.image-theme-current-beach-pop::before {
    inset: 9%;
    z-index: -1;
    border: clamp(3px, 0.35vw, 7px) solid rgba(255, 190, 56, 0.56);
    border-right-color: rgba(23, 191, 208, 0.66);
    border-bottom-color: rgba(255, 255, 255, 0.24);
    filter: drop-shadow(0 0 14px rgba(23, 191, 208, 0.34));
    animation: imageThemeCurrentBeachRing 0.78s ease-out both;
}

.image-theme-active .current-number.image-theme-current-beach-pop::after {
    inset: -9%;
    z-index: -2;
    background:
        radial-gradient(circle at 50% 50%, rgba(255, 190, 56, 0.2), transparent 52%),
        conic-gradient(from 0deg, transparent 0deg 28deg, rgba(255, 190, 56, 0.38) 29deg 34deg, transparent 35deg 82deg, rgba(23, 191, 208, 0.28) 83deg 90deg, transparent 91deg 360deg);
    filter: blur(0.8px);
    animation: imageThemeCurrentBeachRays 0.78s ease-out both;
}

.image-theme-active .last-numbers h3,
.image-theme-active .stats,
.image-theme-active .game-counter {
    color: var(--image-theme-label-color);
    text-shadow: var(--image-theme-label-shadow);
}

.image-theme-active .last-numbers h3 {
    width: 100%;
    max-width: 100%;
    margin: 0 auto clamp(8px, 1vw, 18px);
    font-family: var(--image-theme-font), 'Russo One', sans-serif;
    font-size: var(--image-theme-last-label-size);
    font-weight: 900;
    line-height: 1.05;
    text-align: center;
    text-wrap: balance;
}

.image-theme-active .stats,
.image-theme-active .game-counter {
    width: 100%;
    max-width: 100%;
    font-family: var(--image-theme-font), 'Russo One', sans-serif;
    font-size: var(--image-theme-counter-size);
    font-weight: 900;
    line-height: 1.08;
    text-align: center;
}

.image-theme-active .last-balls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(8px, 0.8vw, 18px);
}

.image-theme-active .last-ball {
    position: relative;
    flex: 0 0 auto;
    isolation: isolate;
    width: clamp(66px, 5.4vw, 112px);
    height: clamp(66px, 5.4vw, 112px);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--image-theme-current-number-color);
    background-color: transparent;
    background-image: var(--image-theme-last-frame);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    border: 0;
    font-size: clamp(30px, 3.6vw, 58px);
    line-height: 1;
    -webkit-text-stroke: var(--image-theme-last-ball-stroke);
    text-shadow: var(--image-theme-last-ball-shadow);
}

.image-theme-playa-paraiso .last-ball {
    color: #ffffff;
    -webkit-text-stroke: 0.4px rgba(255, 255, 255, 0.95);
    text-shadow: 0 2px 0 rgba(9, 111, 140, 0.78), 0 5px 10px rgba(8, 103, 130, 0.26);
}

.image-theme-playa-paraiso #last2 {
    background-image: var(--image-theme-last-frame-2);
    text-shadow: 0 2px 0 rgba(174, 48, 58, 0.8), 0 5px 10px rgba(174, 48, 58, 0.26);
}

.image-theme-playa-paraiso #last3 {
    background-image: var(--image-theme-last-frame-3);
    text-shadow: 0 2px 0 rgba(178, 108, 8, 0.8), 0 5px 10px rgba(178, 108, 8, 0.26);
}

.image-theme-halloween-horror .last-ball {
    font-size: clamp(33px, 3.96vw, 64px);
}

.image-theme-active .last-ball.image-theme-last-solar-trail {
    animation: imageThemeLastBallSolarTrail 0.72s cubic-bezier(.18,.95,.24,1.1) both;
}

.image-theme-active .last-ball.image-theme-last-neon-trail {
    animation: imageThemeLastBallNeonTrail 0.7s cubic-bezier(.18,.95,.24,1.1) both;
}

.image-theme-active .last-ball.image-theme-last-spectral-drift {
    animation: imageThemeLastBallSpectralDrift 0.9s cubic-bezier(.18,.88,.24,1.04) both;
}

.image-theme-active .last-ball.image-theme-last-wave-trail {
    animation: imageThemeLastBallWaveTrail 0.72s cubic-bezier(.18,.95,.24,1.1) both;
}

.image-theme-active .last-ball.image-theme-last-solar-trail::before,
.image-theme-active .last-ball.image-theme-last-solar-trail::after,
.image-theme-active .last-ball.image-theme-last-neon-trail::before,
.image-theme-active .last-ball.image-theme-last-neon-trail::after,
.image-theme-active .last-ball.image-theme-last-spectral-drift::before,
.image-theme-active .last-ball.image-theme-last-spectral-drift::after,
.image-theme-active .last-ball.image-theme-last-wave-trail::before,
.image-theme-active .last-ball.image-theme-last-wave-trail::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
}

.image-theme-active .last-ball.image-theme-last-solar-trail::before {
    inset: 10%;
    z-index: -1;
    border: clamp(2px, 0.22vw, 4px) solid rgba(255, 218, 101, 0.58);
    border-right-color: rgba(0, 169, 157, 0.62);
    border-bottom-color: rgba(255, 218, 101, 0.16);
    filter: drop-shadow(0 0 10px rgba(255, 190, 64, 0.56));
    animation: imageThemeLastBallSolarTrailRing 0.72s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-solar-trail::after {
    inset: -20%;
    z-index: -2;
    background:
        linear-gradient(115deg, transparent 4%, rgba(0, 169, 157, 0.42) 28%, rgba(255, 218, 101, 0.68) 48%, transparent 72%),
        radial-gradient(circle, rgba(255, 229, 135, 0.42), transparent 62%);
    filter: blur(1px) drop-shadow(0 0 12px rgba(255, 190, 64, 0.5));
    animation: imageThemeLastBallSolarTrailGlow 0.72s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-neon-trail::before {
    inset: 8%;
    z-index: -1;
    border: clamp(2px, 0.22vw, 4px) solid rgba(0, 229, 255, 0.68);
    border-left-color: rgba(255, 0, 212, 0.72);
    border-bottom-color: rgba(255, 230, 0, 0.32);
    filter: drop-shadow(0 0 11px rgba(0, 229, 255, 0.68));
    animation: imageThemeLastBallNeonTrailRing 0.7s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-wave-trail::before {
    inset: 8%;
    z-index: -1;
    border: clamp(2px, 0.22vw, 4px) solid rgba(255, 255, 255, 0.74);
    border-left-color: rgba(255, 190, 56, 0.55);
    border-bottom-color: rgba(23, 191, 208, 0.72);
    filter: drop-shadow(0 0 10px rgba(23, 191, 208, 0.44));
    animation: imageThemeLastBallWaveRing 0.72s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-wave-trail::after {
    inset: -18%;
    z-index: -2;
    background:
        linear-gradient(110deg, transparent 4%, rgba(255, 255, 255, 0.46) 30%, rgba(23, 191, 208, 0.42) 48%, transparent 70%),
        radial-gradient(circle, rgba(255, 190, 56, 0.18), transparent 64%);
    filter: blur(1px);
    animation: imageThemeLastBallWaveGlow 0.72s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-neon-trail::after {
    inset: -22%;
    z-index: -2;
    background:
        linear-gradient(100deg, transparent 6%, rgba(0, 229, 255, 0.56) 26%, rgba(255, 0, 212, 0.62) 48%, rgba(255, 230, 0, 0.36) 62%, transparent 78%),
        radial-gradient(circle, rgba(255, 255, 255, 0.34), transparent 62%);
    filter: blur(1px) drop-shadow(0 0 13px rgba(255, 0, 212, 0.58));
    animation: imageThemeLastBallNeonTrailGlow 0.7s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-spectral-drift::before {
    inset: 6%;
    z-index: -1;
    border: clamp(2px, 0.22vw, 4px) solid rgba(38, 12, 52, 0.72);
    border-right-color: rgba(255, 164, 59, 0.26);
    border-bottom-color: rgba(125, 255, 207, 0.18);
    filter: blur(0.2px);
    animation: imageThemeLastBallSpectralRing 0.9s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-spectral-drift::after {
    inset: -28%;
    z-index: -2;
    background:
        linear-gradient(100deg, transparent 6%, rgba(10, 0, 16, 0.5) 28%, rgba(78, 25, 92, 0.35) 50%, transparent 76%),
        radial-gradient(circle, rgba(125, 255, 207, 0.12), transparent 64%);
    filter: blur(1.2px);
    animation: imageThemeLastBallSpectralMist 0.9s ease-out both;
}

.image-theme-active .last-ball.empty {
    color: rgba(255, 255, 255, 0.42);
}

.image-theme-active .intro-overlay,
.image-theme-active .outro-overlay,
.image-theme-active .pausa-overlay {
    background:
        linear-gradient(180deg, rgba(2, 8, 18, 0.92), rgba(2, 8, 18, 0.72)),
        var(--image-theme-background);
    background-size: cover;
    background-position: center;
}

.image-theme-active .intro-loader {
    bottom: clamp(18px, 4vh, 52px);
    height: auto;
    min-height: clamp(150px, 22vh, 260px);
    padding: clamp(18px, 3vw, 48px);
    gap: clamp(18px, 2.2vw, 34px);
}

.image-theme-active .intro-loader-bar-container {
    width: min(82vw, 980px);
    height: clamp(34px, 4.2vw, 62px);
    overflow: hidden;
    border: var(--image-theme-loader-border);
    border-radius: 999px;
    background: var(--image-theme-loader-track);
    box-shadow: var(--image-theme-loader-frame-shadow);
}

.image-theme-active .intro-loader-bar {
    position: relative;
    background: var(--image-theme-loader-gradient);
    box-shadow: var(--image-theme-loader-shadow);
    background-size: 220% 100%;
    border-radius: inherit;
    transform-origin: left center;
    will-change: transform;
    animation: imageThemeLoaderFlow 1.15s linear infinite;
}

.image-theme-active .intro-loader-bar::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.46) 50%, transparent 100%);
    transform: translateX(-110%);
    animation: imageThemeLoaderShine 1.4s ease-in-out infinite;
}

.image-theme-active .intro-loader-text,
.image-theme-active .outro-phrase,
.image-theme-active .pausa-phrase {
    color: var(--image-theme-title-color);
    text-shadow: var(--image-theme-label-shadow);
}

.image-theme-active .intro-loader-text {
    max-width: min(92vw, 1180px);
    padding: 0 clamp(12px, 2vw, 28px);
    color: var(--image-theme-intro-text-color);
    font-family: var(--image-theme-font), 'Russo One', sans-serif;
    font-size: var(--image-theme-intro-text-size);
    font-weight: 900;
    line-height: 1.08;
    text-align: center;
    text-shadow: var(--image-theme-intro-text-shadow);
    text-wrap: balance;
}

.image-theme-active .pausa-progress-bar {
    background: var(--image-theme-loader-gradient);
}

.image-theme-active .phrase-url {
    color: #ffe600;
}

.image-theme-active .image-theme-ended .current-number {
    animation: imageThemeVictory 1.3s ease-in-out infinite;
}

@keyframes imageThemeCellPop {
    0% { transform: scale(1); }
    42% { transform: scale(1.22) rotate(-2deg); }
    100% { transform: scale(1); }
}

@keyframes imageThemeSolarStamp {
    0% { transform: translateY(-12px) scale(1.18) rotate(-3deg); filter: brightness(1); }
    34% { transform: translateY(2px) scale(0.92) rotate(1deg); filter: brightness(1.38) saturate(1.18); }
    58% { transform: translateY(-3px) scale(1.08) rotate(-1deg); filter: brightness(1.22) saturate(1.1); }
    100% { transform: translateY(0) scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeSolarStampGlow {
    0% { opacity: 0; transform: scale(0.72); }
    35% { opacity: 0.88; transform: scale(1.1); }
    100% { opacity: 0; transform: scale(1.28); }
}

@keyframes imageThemeSolarStampHalo {
    0% { opacity: 0; transform: scale(0.42) rotate(0deg); }
    32% { opacity: 0.72; transform: scale(0.92) rotate(18deg); }
    100% { opacity: 0; transform: scale(1.3) rotate(44deg); }
}

@keyframes imageThemeNeonSpark {
    0% { transform: scale(0.82) rotate(0deg); filter: brightness(1); }
    22% { transform: scale(1.2) rotate(-4deg); filter: brightness(1.48) saturate(1.35); }
    48% { transform: scale(0.96) rotate(2deg); filter: brightness(1.22) saturate(1.18); }
    100% { transform: scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeNeonSparkGlow {
    0% { opacity: 0; transform: scale(0.72); background-position: 0% 50%; }
    30% { opacity: 0.86; transform: scale(1.12); background-position: 100% 50%; }
    100% { opacity: 0; transform: scale(1.3); background-position: 220% 50%; }
}

@keyframes imageThemeNeonSparkBurst {
    0% { opacity: 0; transform: scale(0.34) rotate(-18deg); }
    28% { opacity: 0.78; transform: scale(0.98) rotate(14deg); }
    100% { opacity: 0; transform: scale(1.36) rotate(38deg); }
}

@keyframes imageThemeShadowVeil {
    0% { transform: translateY(8px) scale(0.9) rotate(1.5deg); filter: brightness(0.78) saturate(0.9); }
    34% { transform: translateY(-3px) scale(1.08) rotate(-1.2deg); filter: brightness(1.08) saturate(1.04); }
    62% { transform: translateY(2px) scale(0.98) rotate(0.8deg); filter: brightness(0.94) saturate(0.98); }
    100% { transform: translateY(0) scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeShadowVeilMist {
    0% { opacity: 0; transform: translateY(12px) scale(0.78); }
    34% { opacity: 0.76; transform: translateY(0) scale(1.04); }
    100% { opacity: 0; transform: translateY(-12px) scale(1.2); }
}

@keyframes imageThemeShadowVeilCurl {
    0% { opacity: 0; transform: scale(0.56) rotate(-8deg); }
    38% { opacity: 0.52; transform: scale(0.98) rotate(11deg); }
    100% { opacity: 0; transform: scale(1.24) rotate(28deg); }
}

@keyframes imageThemeCellRipple {
    0% { transform: scale(0.94); filter: brightness(1); }
    45% { transform: scale(1.13); filter: brightness(1.2); }
    100% { transform: scale(1); filter: brightness(1); }
}

@keyframes imageThemeCellSpark {
    0% { transform: scale(0.9) rotate(-2deg); filter: brightness(1); }
    28% { transform: scale(1.18) rotate(2deg); filter: brightness(1.42) saturate(1.25); }
    100% { transform: scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeCellFlip {
    0% { transform: perspective(500px) rotateY(-72deg) scale(0.96); filter: brightness(1); }
    55% { transform: perspective(500px) rotateY(12deg) scale(1.08); filter: brightness(1.24); }
    100% { transform: perspective(500px) rotateY(0) scale(1); filter: brightness(1); }
}

@keyframes imageThemeCurrentPop {
    0% { transform: scale(0.86) rotate(-4deg); filter: brightness(1); }
    55% { transform: scale(1.1) rotate(2deg); filter: brightness(1.25); }
    100% { transform: scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeCurrentSolarOrbit {
    0% { transform: scale(0.78) rotate(-5deg); filter: brightness(1); }
    38% { transform: scale(1.14) rotate(2deg); filter: brightness(1.42) saturate(1.16); }
    68% { transform: scale(0.98) rotate(-1deg); filter: brightness(1.18) saturate(1.08); }
    100% { transform: scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeCurrentSolarRing {
    0% { opacity: 0; transform: rotate(-80deg) scale(0.62); }
    38% { opacity: 0.92; transform: rotate(32deg) scale(1.04); }
    100% { opacity: 0; transform: rotate(130deg) scale(1.22); }
}

@keyframes imageThemeCurrentSolarRays {
    0% { opacity: 0; transform: rotate(-18deg) scale(0.54); }
    34% { opacity: 0.62; transform: rotate(12deg) scale(1); }
    100% { opacity: 0; transform: rotate(42deg) scale(1.2); }
}

@keyframes imageThemeCurrentNeonOrbit {
    0% { transform: scale(0.76) rotate(5deg); filter: brightness(1); }
    34% { transform: scale(1.16) rotate(-3deg); filter: brightness(1.46) saturate(1.28); }
    66% { transform: scale(0.98) rotate(2deg); filter: brightness(1.2) saturate(1.16); }
    100% { transform: scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeCurrentNeonRing {
    0% { opacity: 0; transform: rotate(70deg) scale(0.58); }
    36% { opacity: 0.94; transform: rotate(-30deg) scale(1.05); }
    100% { opacity: 0; transform: rotate(-150deg) scale(1.24); }
}

@keyframes imageThemeCurrentNeonRays {
    0% { opacity: 0; transform: rotate(18deg) scale(0.52); }
    32% { opacity: 0.72; transform: rotate(-18deg) scale(1.02); }
    100% { opacity: 0; transform: rotate(-48deg) scale(1.22); }
}

@keyframes imageThemeCurrentPhantomRise {
    0% { opacity: 0.92; transform: translateY(22px) scale(0.82) rotate(2deg); filter: brightness(0.72) saturate(0.86); }
    42% { opacity: 1; transform: translateY(-5px) scale(1.08) rotate(-1.5deg); filter: brightness(1.08) saturate(1.04); }
    70% { transform: translateY(2px) scale(0.99) rotate(0.8deg); filter: brightness(0.94) saturate(0.96); }
    100% { opacity: 1; transform: translateY(0) scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeCurrentPhantomRing {
    0% { opacity: 0; transform: rotate(-44deg) scale(0.68); }
    42% { opacity: 0.58; transform: rotate(18deg) scale(1.04); }
    100% { opacity: 0; transform: rotate(72deg) scale(1.18); }
}

@keyframes imageThemeCurrentPhantomMist {
    0% { opacity: 0; transform: translateY(22px) scale(0.62); }
    42% { opacity: 0.56; transform: translateY(0) scale(1.02); }
    100% { opacity: 0; transform: translateY(-18px) scale(1.22); }
}

@keyframes imageThemeLastBallSolarTrail {
    0% { transform: translateX(10px) scale(0.86); filter: brightness(1); }
    38% { transform: translateX(-2px) scale(1.12); filter: brightness(1.3) saturate(1.12); }
    100% { transform: translateX(0) scale(1); filter: brightness(1); }
}

@keyframes imageThemeLastBallSolarTrailRing {
    0% { opacity: 0; transform: rotate(-70deg) scale(0.62); }
    44% { opacity: 0.78; transform: rotate(18deg) scale(1.06); }
    100% { opacity: 0; transform: rotate(98deg) scale(1.18); }
}

@keyframes imageThemeLastBallSolarTrailGlow {
    0% { opacity: 0; transform: translateX(16px) scale(0.72); }
    34% { opacity: 0.66; transform: translateX(0) scale(1.03); }
    100% { opacity: 0; transform: translateX(-10px) scale(1.18); }
}

@keyframes imageThemeLastBallNeonTrail {
    0% { transform: translateX(12px) scale(0.84) rotate(2deg); filter: brightness(1); }
    36% { transform: translateX(-2px) scale(1.14) rotate(-2deg); filter: brightness(1.36) saturate(1.24); }
    100% { transform: translateX(0) scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeLastBallNeonTrailRing {
    0% { opacity: 0; transform: rotate(72deg) scale(0.6); }
    42% { opacity: 0.82; transform: rotate(-22deg) scale(1.08); }
    100% { opacity: 0; transform: rotate(-104deg) scale(1.2); }
}

@keyframes imageThemeLastBallNeonTrailGlow {
    0% { opacity: 0; transform: translateX(18px) scale(0.7); }
    34% { opacity: 0.72; transform: translateX(0) scale(1.04); }
    100% { opacity: 0; transform: translateX(-12px) scale(1.2); }
}

@keyframes imageThemeLastBallSpectralDrift {
    0% { transform: translateX(18px) translateY(8px) scale(0.86) rotate(3deg); filter: brightness(0.78) saturate(0.88); }
    40% { transform: translateX(-4px) translateY(-4px) scale(1.08) rotate(-2deg); filter: brightness(1.06) saturate(1.02); }
    100% { transform: translateX(0) translateY(0) scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeLastBallSpectralRing {
    0% { opacity: 0; transform: rotate(54deg) scale(0.64); }
    42% { opacity: 0.52; transform: rotate(-16deg) scale(1.06); }
    100% { opacity: 0; transform: rotate(-78deg) scale(1.18); }
}

@keyframes imageThemeLastBallSpectralMist {
    0% { opacity: 0; transform: translateX(18px) translateY(10px) scale(0.7); }
    38% { opacity: 0.54; transform: translateX(0) translateY(0) scale(1.04); }
    100% { opacity: 0; transform: translateX(-16px) translateY(-10px) scale(1.18); }
}

@keyframes imageThemeSummerSplash {
    0% { transform: translateY(6px) scale(0.84); filter: brightness(0.96) saturate(0.94); }
    42% { transform: translateY(-5px) scale(1.12); filter: brightness(1.18) saturate(1.14); }
    72% { transform: translateY(2px) scale(0.98); filter: brightness(1.04) saturate(1.05); }
    100% { transform: translateY(0) scale(1); filter: brightness(1) saturate(1); }
}

@keyframes imageThemeSummerSplashGlow {
    0% { opacity: 0; transform: scale(0.68); }
    38% { opacity: 0.7; transform: scale(1.05); }
    100% { opacity: 0; transform: scale(1.2); }
}

@keyframes imageThemeSummerSplashBurst {
    0% { opacity: 0; transform: rotate(-24deg) scale(0.62); }
    42% { opacity: 0.78; transform: rotate(12deg) scale(1.06); }
    100% { opacity: 0; transform: rotate(58deg) scale(1.22); }
}

@keyframes imageThemeCurrentBeachPop {
    0% { opacity: 0.82; transform: scale(0.82) rotate(-1.5deg); filter: brightness(0.95); }
    42% { opacity: 1; transform: scale(1.08) rotate(1deg); filter: brightness(1.16) saturate(1.08); }
    72% { transform: scale(0.985) rotate(-0.4deg); filter: brightness(1.03); }
    100% { opacity: 1; transform: scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeCurrentBeachRing {
    0% { opacity: 0; transform: rotate(-48deg) scale(0.66); }
    44% { opacity: 0.76; transform: rotate(20deg) scale(1.06); }
    100% { opacity: 0; transform: rotate(86deg) scale(1.18); }
}

@keyframes imageThemeCurrentBeachRays {
    0% { opacity: 0; transform: rotate(-10deg) scale(0.72); }
    42% { opacity: 0.58; transform: rotate(8deg) scale(1.04); }
    100% { opacity: 0; transform: rotate(28deg) scale(1.18); }
}

@keyframes imageThemeLastBallWaveTrail {
    0% { transform: translateX(12px) translateY(4px) scale(0.86); filter: brightness(0.96); }
    38% { transform: translateX(-3px) translateY(-2px) scale(1.12); filter: brightness(1.18) saturate(1.12); }
    100% { transform: translateX(0) translateY(0) scale(1); filter: brightness(1); }
}

@keyframes imageThemeLastBallWaveRing {
    0% { opacity: 0; transform: rotate(64deg) scale(0.62); }
    44% { opacity: 0.74; transform: rotate(-18deg) scale(1.06); }
    100% { opacity: 0; transform: rotate(-78deg) scale(1.18); }
}

@keyframes imageThemeLastBallWaveGlow {
    0% { opacity: 0; transform: translateX(16px) scale(0.7); }
    34% { opacity: 0.68; transform: translateX(0) scale(1.04); }
    100% { opacity: 0; transform: translateX(-12px) scale(1.2); }
}

@keyframes imageThemeSoftPulse {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-4px); }
}

@keyframes imageThemeMountContainer {
    0% { opacity: 0; transform: scale(0.965); filter: saturate(0.92) brightness(0.9); }
    100% { opacity: 1; transform: scale(1); filter: saturate(1) brightness(1); }
}

@keyframes imageThemeMountBoard {
    0% { opacity: 0; transform: translateY(22px) scale(0.965); filter: blur(2px) brightness(0.86); }
    58% { opacity: 1; transform: translateY(-3px) scale(1.008); filter: blur(0) brightness(1.06); }
    100% { opacity: 1; transform: translateY(0) scale(1); filter: blur(0) brightness(1); }
}

@keyframes imageThemeMountPanel {
    0% { opacity: 0; transform: translateX(28px) scale(0.975); filter: blur(2px) brightness(0.86); }
    62% { opacity: 1; transform: translateX(-3px) scale(1.006); filter: blur(0) brightness(1.08); }
    100% { opacity: 1; transform: translateX(0) scale(1); filter: blur(0) brightness(1); }
}

@keyframes imageThemeMountCell {
    0% { opacity: 0; transform: translateY(18px) scale(0.78) rotate(-1.5deg); filter: brightness(0.78) saturate(0.9); }
    48% { opacity: 1; transform: translateY(-3px) scale(1.045) rotate(0.8deg); filter: brightness(1.18) saturate(1.12); }
    100% { opacity: 1; transform: translateY(0) scale(1) rotate(0); filter: brightness(1) saturate(1); }
}

@keyframes imageThemeMountItem {
    0% { opacity: 0; transform: translateX(22px) translateY(8px) scale(0.9); filter: brightness(0.82); }
    55% { opacity: 1; transform: translateX(-3px) translateY(-2px) scale(1.035); filter: brightness(1.16); }
    100% { opacity: 1; transform: translateX(0) translateY(0) scale(1); filter: brightness(1); }
}

@keyframes imageThemeVictory {
    0%, 100% { filter: drop-shadow(0 0 12px rgba(255, 230, 0, 0.55)); }
    50% { filter: drop-shadow(0 0 30px rgba(255, 230, 0, 0.95)); }
}

@keyframes imageThemeSolarPanelBreathe {
    0%, 100% {
        filter: brightness(1) saturate(1);
    }
    50% {
        filter: brightness(1.06) saturate(1.08);
    }
}

@keyframes imageThemeNeonPanelBreathe {
    0%, 100% {
        filter: brightness(1) saturate(1);
    }
    50% {
        filter: brightness(1.08) saturate(1.16);
    }
}

@keyframes imageThemeHauntedPanelBreathe {
    0%, 100% {
        filter: brightness(0.98) saturate(1);
    }
    48% {
        filter: brightness(1.08) saturate(1.14);
    }
    62% {
        filter: brightness(1.02) saturate(1.05);
    }
}

@keyframes imageThemeSummerBreeze {
    0%, 100% {
        filter: brightness(1) saturate(1);
    }
    50% {
        filter: brightness(1.045) saturate(1.06);
    }
}

@keyframes imageThemeSolarPanelSweep {
    0%, 100% {
        opacity: 0;
        transform: translateX(-18%) scale(1.02);
    }
    45% {
        opacity: 0.62;
        transform: translateX(0) scale(1.02);
    }
    70% {
        opacity: 0.28;
        transform: translateX(16%) scale(1.02);
    }
}

@keyframes imageThemeNeonPanelSweep {
    0%, 100% {
        opacity: 0;
        transform: translateX(-22%) scale(1.02);
    }
    42% {
        opacity: 0.64;
        transform: translateX(0) scale(1.02);
    }
    72% {
        opacity: 0.24;
        transform: translateX(20%) scale(1.02);
    }
}

@keyframes imageThemeHauntedPanelMist {
    0%, 100% {
        opacity: 0;
        transform: translateX(-16%) translateY(4%) scale(1.02);
    }
    44% {
        opacity: 0.58;
        transform: translateX(2%) translateY(0) scale(1.02);
    }
    74% {
        opacity: 0.22;
        transform: translateX(18%) translateY(-3%) scale(1.02);
    }
}

@keyframes imageThemeSummerPanelSweep {
    0%, 100% {
        opacity: 0;
        transform: translateX(-16%) scale(1.02);
    }
    45% {
        opacity: 0.58;
        transform: translateX(0) scale(1.02);
    }
    72% {
        opacity: 0.18;
        transform: translateX(18%) scale(1.02);
    }
}

@keyframes imageThemeOceanShimmer {
    0%, 100% {
        background-position: -30% 0, 50% 76%;
        opacity: 0.28;
    }
    48% {
        background-position: 120% 0, 52% 74%;
        opacity: 0.48;
    }
}

@keyframes imageThemeHauntedSmokeDrift {
    0%, 100% {
        background-position: 0% 50%, 100% 28%, 48% 78%, 0 0;
        opacity: 0.74;
        transform: translate3d(-3%, 2%, 0) scale(1.08);
    }
    38% {
        background-position: 38% 56%, 66% 34%, 58% 46%, 0 0;
        opacity: 0.9;
        transform: translate3d(2%, -1%, 0) scale(1.12);
    }
    72% {
        background-position: 74% 44%, 30% 54%, 34% 58%, 0 0;
        opacity: 0.8;
        transform: translate3d(5%, 2%, 0) scale(1.1);
    }
}

@keyframes imageThemeHauntedSmokeCurl {
    0%, 100% {
        background-position: 18% 36%, 84% 70%, 0% 50%;
        opacity: 0.48;
        transform: translate3d(4%, -2%, 0) scale(1.12) rotate(0deg);
    }
    45% {
        background-position: 46% 58%, 54% 44%, 70% 50%;
        opacity: 0.66;
        transform: translate3d(-2%, 3%, 0) scale(1.16) rotate(1deg);
    }
    78% {
        background-position: 74% 42%, 22% 62%, 100% 50%;
        opacity: 0.54;
        transform: translate3d(-5%, -1%, 0) scale(1.14) rotate(-0.6deg);
    }
}


@keyframes imageThemeLoaderFlow {
    0% { background-position: 0% 50%; }
    100% { background-position: 220% 50%; }
}

body.image-theme-active.image-theme-background-enchanted-torchlight::before {
    background:
        radial-gradient(circle at 10% 62%, rgba(255, 183, 80, 0.24), transparent 24%),
        radial-gradient(circle at 87% 54%, rgba(255, 214, 122, 0.18), transparent 22%),
        radial-gradient(circle at 50% 12%, rgba(83, 143, 225, 0.12), transparent 24%),
        linear-gradient(180deg, rgba(40, 20, 7, 0.08), rgba(23, 12, 6, 0.48));
    opacity: 0.86;
    animation: imageThemeEnchantedTorchlight 8.5s ease-in-out infinite;
}

body.image-theme-active.image-theme-background-enchanted-torchlight::after {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
        radial-gradient(circle at 22% 22%, rgba(255, 243, 196, 0.18) 0 1.4px, transparent 2px),
        radial-gradient(circle at 72% 30%, rgba(109, 168, 255, 0.14) 0 1.2px, transparent 2px),
        radial-gradient(circle at 58% 74%, rgba(255, 214, 116, 0.13) 0 1.2px, transparent 2px);
    background-size: 110px 130px, 150px 160px, 180px 150px;
    opacity: 0.5;
    animation: imageThemeEnchantedDust 16s linear infinite;
}

.image-theme-active.image-theme-ambient-castle-glow .board,
.image-theme-active.image-theme-ambient-castle-glow .side-panel,
.image-theme-active.image-theme-ambient-castle-glow .controls-panel {
    animation: imageThemeCastleGlow 6.4s ease-in-out infinite;
}

.image-theme-active.image-theme-ambient-castle-glow .board::before,
.image-theme-active.image-theme-ambient-castle-glow .side-panel::before,
.image-theme-active.image-theme-ambient-castle-glow .controls-panel::before {
    background:
        radial-gradient(circle at 50% 9%, rgba(255, 218, 104, 0.24), transparent 28%),
        radial-gradient(circle at 82% 18%, rgba(82, 142, 218, 0.16), transparent 24%),
        linear-gradient(108deg, transparent 0%, rgba(255, 235, 160, 0.16) 43%, rgba(83, 143, 225, 0.17) 50%, transparent 62%);
    mix-blend-mode: screen;
    animation: imageThemeCastlePanelSweep 7s ease-in-out infinite;
}

.image-theme-magia-medieval .board {
    gap: clamp(4px, 0.42vw, 8px);
    padding: clamp(7px, 0.7vw, 13px);
    background-color: rgba(255, 245, 218, 0.92);
}

body.image-theme-magia-medieval .number-cell {
    font-size: clamp(35px, 3.34vw, 64px);
    background-size: 108% 108%;
}

body.image-theme-magia-medieval .number-cell.called {
    font-size: clamp(39px, 3.68vw, 68px);
    background-size: 112% 112%;
}

body.image-theme-magia-medieval .board.mode-75 .number-cell {
    font-size: clamp(35px, 3.18vw, 56px);
}

body.image-theme-magia-medieval .board.mode-75 .number-cell.called {
    font-size: clamp(39px, 3.48vw, 60px);
}

body.image-theme-magia-medieval .board.mode-75 .row-letter {
    position: relative;
    min-width: clamp(62px, 4.8vw, 86px);
    height: 92%;
    align-self: center;
    margin-right: clamp(2px, 0.25vw, 6px);
    padding: 0 clamp(8px, 0.8vw, 14px);
    border: 2px solid rgba(228, 179, 75, 0.92);
    border-radius: 10px 10px 16px 16px;
    box-shadow: inset 0 0 14px rgba(255, 244, 190, 0.28), 0 4px 0 rgba(88, 48, 16, 0.55);
    color: #fff8dc;
    font-size: clamp(44px, 4.2vw, 76px);
    line-height: 1;
    text-shadow: 0 2px 0 rgba(42, 25, 9, 0.8), 0 0 10px rgba(255, 218, 104, 0.36);
}

body.image-theme-magia-medieval .board.mode-75 .row-letter::before {
    content: '';
    position: absolute;
    top: -9px;
    left: 50%;
    width: 18px;
    height: 18px;
    transform: translateX(-50%) rotate(45deg);
    border: 2px solid rgba(228, 179, 75, 0.94);
    background: #2f63a3;
    box-shadow: 0 0 8px rgba(255, 218, 104, 0.44);
}

body.image-theme-magia-medieval .board.mode-75 .row-letter::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -14px;
    width: 32px;
    height: 18px;
    transform: translateX(-50%);
    background: inherit;
    clip-path: polygon(0 0, 50% 100%, 100% 0);
    border-left: 2px solid rgba(228, 179, 75, 0.68);
    border-right: 2px solid rgba(228, 179, 75, 0.68);
}

body.image-theme-magia-medieval .board.mode-75 .letter-B { background: linear-gradient(180deg, #428bd1, #15538f); }
body.image-theme-magia-medieval .board.mode-75 .letter-I { background: linear-gradient(180deg, #f1c44e, #ba7619); }
body.image-theme-magia-medieval .board.mode-75 .letter-N { background: linear-gradient(180deg, #d85145, #8d1f22); }
body.image-theme-magia-medieval .board.mode-75 .letter-G { background: linear-gradient(180deg, #4f9d43, #246b2f); }
body.image-theme-magia-medieval .board.mode-75 .letter-O { background: linear-gradient(180deg, #e59a2f, #a55312); }

body.image-theme-magia-medieval .bingo-container.mode-75 .logo {
    height: 49%;
    max-width: 28vw;
    justify-self: center;
}

body.image-theme-magia-medieval .bingo-container.mode-75 .current-number {
    height: 90%;
    margin-left: clamp(38px, 3vw, 64px);
}

body.image-theme-magia-medieval .bingo-container.mode-75 .last-numbers {
    transform: translateY(-4px);
}

body.image-theme-magia-medieval .current-number {
    background-image: none;
}

body.image-theme-magia-medieval .current-number {
    width: min(78%, 34vh);
    aspect-ratio: 1;
    font-size: clamp(84px, 11.6vw, 220px);
}

body.image-theme-magia-medieval .last-ball {
    width: clamp(68px, 6vw, 123px);
    height: clamp(68px, 6vw, 123px);
    color: #fff8dc;
    background-size: 108% 108%;
    font-size: clamp(35px, 3.85vw, 68px);
    -webkit-text-stroke: 0.8px rgba(12, 25, 58, 0.96);
    text-shadow: 0 2px 0 #172246, 0 4px 0 rgba(44, 21, 8, 0.74), 0 0 11px rgba(108, 168, 255, 0.42);
}

body.image-theme-magia-medieval .last-balls {
    gap: clamp(6px, 0.75vw, 15px);
}

body.image-theme-magia-medieval .last-numbers h3 {
    margin-bottom: clamp(10px, 1.15vw, 20px);
}

body.image-theme-magia-medieval .stats {
    min-height: clamp(40px, 3.3vw, 66px);
    display: block;
    padding: 0 clamp(8px, 1vw, 18px);
    line-height: clamp(40px, 3.3vw, 66px);
    text-wrap: balance;
    white-space: nowrap;
}

body.image-theme-magia-medieval .bingo-container.mode-75 .stats {
    margin-top: clamp(-38px, -4.2vh, -22px);
}

body.image-theme-magia-medieval .bingo-container.mode-75 .current-number {
    width: auto;
    font-size: clamp(124px, 19.6vh, 232px);
}

body.image-theme-magia-medieval .bingo-container.mode-75 .last-balls {
    gap: clamp(6px, 0.8vw, 16px);
}

body.image-theme-magia-medieval .bingo-container.mode-75 .last-ball {
    width: clamp(90px, 12.4vh, 176px);
    height: clamp(90px, 12.4vh, 176px);
    font-size: clamp(42px, 8.6vh, 92px);
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-royal-spell {
    animation: imageThemeRoyalSpell 0.88s cubic-bezier(.16,.95,.26,1.12);
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-royal-spell::before,
.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-royal-spell::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: inherit;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-royal-spell::before {
    inset: -13%;
    z-index: -1;
    background:
        radial-gradient(circle at 50% 50%, rgba(255, 244, 190, 0.62), transparent 58%),
        linear-gradient(135deg, rgba(217, 166, 74, 0.76), rgba(47, 99, 163, 0.5), rgba(123, 63, 180, 0.38));
    filter: blur(1.1px) drop-shadow(0 0 12px rgba(255, 218, 104, 0.58));
    animation: imageThemeRoyalSpellGlow 0.88s ease-out both;
}

.image-theme-active .number-cell.image-theme-just-called.image-theme-effect-royal-spell::after {
    inset: -40%;
    z-index: -2;
    border-radius: 50%;
    background:
        repeating-conic-gradient(
            from 12deg,
            transparent 0deg 22deg,
            rgba(255, 218, 104, 0.72) 23deg 29deg,
            transparent 30deg 64deg,
            rgba(82, 142, 218, 0.58) 65deg 72deg,
            transparent 73deg 118deg,
            rgba(123, 63, 180, 0.42) 119deg 126deg,
            transparent 127deg 360deg
        );
    filter: blur(0.4px) drop-shadow(0 0 12px rgba(47, 99, 163, 0.52));
    animation: imageThemeRoyalSpellSigil 0.88s ease-out both;
}

.image-theme-active .current-number.image-theme-current-gem-orbit {
    animation: imageThemeCurrentGemOrbit 0.86s cubic-bezier(.16,.95,.28,1.18);
}

.image-theme-active .current-number.image-theme-current-gem-orbit::before,
.image-theme-active .current-number.image-theme-current-gem-orbit::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
}

.image-theme-active .current-number.image-theme-current-gem-orbit::before {
    inset: 8%;
    z-index: -1;
    border: clamp(3px, 0.35vw, 7px) solid rgba(217, 166, 74, 0.66);
    border-top-color: rgba(83, 143, 225, 0.74);
    border-right-color: rgba(123, 63, 180, 0.58);
    filter: drop-shadow(0 0 16px rgba(255, 218, 104, 0.56));
    animation: imageThemeCurrentGemRing 0.86s ease-out both;
}

.image-theme-active .current-number.image-theme-current-gem-orbit::after {
    inset: -10%;
    z-index: -2;
    background:
        radial-gradient(circle at 50% 50%, rgba(255, 232, 150, 0.2), transparent 52%),
        conic-gradient(from 0deg, transparent 0deg 24deg, rgba(217, 166, 74, 0.62) 25deg 32deg, transparent 33deg 88deg, rgba(83, 143, 225, 0.56) 89deg 96deg, transparent 97deg 160deg, rgba(123, 63, 180, 0.44) 161deg 168deg, transparent 169deg 360deg);
    filter: blur(0.8px) drop-shadow(0 0 18px rgba(47, 99, 163, 0.38));
    animation: imageThemeCurrentGemRays 0.86s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-scroll-trail {
    animation: imageThemeLastBallScrollTrail 0.78s cubic-bezier(.18,.95,.24,1.1) both;
}

.image-theme-active .last-ball.image-theme-last-scroll-trail::before,
.image-theme-active .last-ball.image-theme-last-scroll-trail::after {
    content: '';
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
}

.image-theme-active .last-ball.image-theme-last-scroll-trail::before {
    inset: 9%;
    z-index: -1;
    border: clamp(2px, 0.22vw, 4px) solid rgba(217, 166, 74, 0.62);
    border-left-color: rgba(83, 143, 225, 0.62);
    border-bottom-color: rgba(123, 63, 180, 0.34);
    filter: drop-shadow(0 0 10px rgba(255, 218, 104, 0.46));
    animation: imageThemeLastBallScrollRing 0.78s ease-out both;
}

.image-theme-active .last-ball.image-theme-last-scroll-trail::after {
    inset: -20%;
    z-index: -2;
    background:
        linear-gradient(110deg, transparent 4%, rgba(255, 232, 150, 0.48) 30%, rgba(83, 143, 225, 0.38) 50%, transparent 72%),
        radial-gradient(circle, rgba(123, 63, 180, 0.18), transparent 64%);
    filter: blur(1px);
    animation: imageThemeLastBallScrollGlow 0.78s ease-out both;
}

@keyframes imageThemeRoyalSpell {
    0% { transform: translateY(7px) scale(0.88) rotate(2deg); filter: brightness(0.94); }
    34% { transform: translateY(-3px) scale(1.14) rotate(-2deg); filter: brightness(1.36) saturate(1.18); }
    62% { transform: translateY(1px) scale(0.98) rotate(1deg); filter: brightness(1.12) saturate(1.08); }
    100% { transform: translateY(0) scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeRoyalSpellGlow {
    0% { opacity: 0; transform: scale(0.7); }
    34% { opacity: 0.84; transform: scale(1.1); }
    100% { opacity: 0; transform: scale(1.28); }
}

@keyframes imageThemeRoyalSpellSigil {
    0% { opacity: 0; transform: scale(0.46) rotate(-18deg); }
    36% { opacity: 0.7; transform: scale(0.98) rotate(16deg); }
    100% { opacity: 0; transform: scale(1.32) rotate(42deg); }
}

@keyframes imageThemeCurrentGemOrbit {
    0% { transform: scale(0.78) rotate(-4deg); filter: brightness(1); }
    38% { transform: scale(1.13) rotate(2deg); filter: brightness(1.38) saturate(1.14); }
    68% { transform: scale(0.98) rotate(-1deg); filter: brightness(1.16) saturate(1.06); }
    100% { transform: scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeCurrentGemRing {
    0% { opacity: 0; transform: rotate(-72deg) scale(0.62); }
    38% { opacity: 0.88; transform: rotate(28deg) scale(1.04); }
    100% { opacity: 0; transform: rotate(124deg) scale(1.22); }
}

@keyframes imageThemeCurrentGemRays {
    0% { opacity: 0; transform: rotate(-20deg) scale(0.54); }
    34% { opacity: 0.62; transform: rotate(12deg) scale(1); }
    100% { opacity: 0; transform: rotate(44deg) scale(1.2); }
}

@keyframes imageThemeLastBallScrollTrail {
    0% { transform: translateX(12px) scale(0.86) rotate(2deg); filter: brightness(1); }
    38% { transform: translateX(-2px) scale(1.12) rotate(-1.5deg); filter: brightness(1.28) saturate(1.12); }
    100% { transform: translateX(0) scale(1) rotate(0); filter: brightness(1); }
}

@keyframes imageThemeLastBallScrollRing {
    0% { opacity: 0; transform: rotate(70deg) scale(0.62); }
    42% { opacity: 0.78; transform: rotate(-18deg) scale(1.06); }
    100% { opacity: 0; transform: rotate(-96deg) scale(1.18); }
}

@keyframes imageThemeLastBallScrollGlow {
    0% { opacity: 0; transform: translateX(16px) scale(0.72); }
    34% { opacity: 0.66; transform: translateX(0) scale(1.03); }
    100% { opacity: 0; transform: translateX(-10px) scale(1.18); }
}

@keyframes imageThemeCastleGlow {
    0%, 100% { filter: brightness(1) saturate(1); }
    50% { filter: brightness(1.06) saturate(1.04); }
}

@keyframes imageThemeCastlePanelSweep {
    0%, 100% { opacity: 0.12; transform: translateX(-18%) scale(1.04); }
    48% { opacity: 0.5; transform: translateX(18%) scale(1.04); }
}

@keyframes imageThemeEnchantedTorchlight {
    0%, 100% { opacity: 0.78; filter: brightness(1); }
    48% { opacity: 0.92; filter: brightness(1.07); }
}

@keyframes imageThemeEnchantedDust {
    0% { background-position: 0 0, 20px 0, -10px 0; }
    100% { background-position: 110px -130px, 170px -160px, 170px -150px; }
}

@keyframes imageThemeLoaderShine {
    0% { transform: translateX(-120%); opacity: 0; }
    30% { opacity: 0.9; }
    100% { transform: translateX(120%); opacity: 0; }
}

@media (orientation: portrait) and (max-aspect-ratio: 3/4) {
    .image-theme-active .last-numbers h3 {
        font-size: clamp(24px, 6.2vw, 42px);
    }

    .image-theme-active .stats,
    .image-theme-active .game-counter {
        font-size: clamp(22px, 5.4vw, 36px);
    }

    .image-theme-active .intro-loader {
        bottom: 6vh;
        min-height: clamp(170px, 26vh, 300px);
        padding-inline: 6vw;
    }

    .image-theme-active .intro-loader-text {
        max-width: 92vw;
        font-size: clamp(28px, 7vw, 52px) !important;
        line-height: 1.1;
    }

    .image-theme-active .intro-loader-bar-container {
        width: min(88vw, 760px);
        height: clamp(34px, 7vw, 58px);
    }
}
