/* ════════════════════════════════════════════════════════════
   md-pager — shared paginator for games.html + map.html
   Liquid-glass treatment matching .pop-up-button (map.html) and
   .game-card-tag (games.html). Active page = crimson; inactive =
   white-glass with conic-rainbow border + small-hex shimmer on
   hover.

   Selectors are prefixed with body.polish + double-classed and use
   !important because polish.css applies a high-specificity
   body.polish button:not(...) rule to every <button> on the page.
   ════════════════════════════════════════════════════════════ */

@property --md-pager-edge-angle {
    syntax: '<angle>'; initial-value: 0deg; inherits: false;
}
@keyframes md-pager-edge-spin {
    to { --md-pager-edge-angle: 360deg; }
}
@keyframes md-pager-hex-sweep {
    from { background-position: 0% 50%; }
    to   { background-position: 200% 50%; }
}
@keyframes md-pager-hex-hue {
    from { filter: saturate(1.25) brightness(1.05) hue-rotate(  0deg); }
    to   { filter: saturate(1.25) brightness(1.05) hue-rotate(360deg); }
}
@keyframes md-pager-active-shimmer {
    0%, 100% { filter: saturate(1.30) brightness(0.95) hue-rotate(-15deg); }
    50%      { filter: saturate(1.90) brightness(1.30) hue-rotate( 15deg); }
}

/* Outer pager container -------------------------------------- */
.md-pager,
body.polish .md-pager {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    margin: 14px auto !important;
    padding: 4px !important;
    user-select: none !important;
}
.md-pager:empty,
body.polish .md-pager:empty {
    display: none !important;
}

/* Individual buttons ----------------------------------------- */
body.polish .md-pager .md-pager-btn,
.md-pager .md-pager-btn {
    --md-pager-edge-angle: 0deg;
    --hex-size: 3px;
    position: relative !important;
    isolation: isolate !important;
    overflow: hidden !important;
    min-width: 36px !important;
    height: 36px !important;
    padding: 0 12px !important;
    border: 1.5px solid transparent !important;
    border-radius: 8px !important;
    font-family: "georgia", sans-serif !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    color: #1f2937 !important;
    cursor: pointer !important;
    pointer-events: auto !important;
    touch-action: manipulation !important;
    background:
        linear-gradient(135deg,
            rgba(255, 255, 255, 0.94) 0%,
            rgba(248, 250, 255, 0.90) 100%) padding-box,
        linear-gradient(135deg,
            rgba(255, 209, 168, 0.45) 0%,
            rgba(196, 242, 197, 0.45) 50%,
            rgba(184, 217, 255, 0.45) 100%) border-box !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.85),
        0 1px 3px rgba(15, 20, 40, 0.10) !important;
    transition: transform 0.15s ease, box-shadow 0.20s ease, color 0.20s ease !important;
    text-shadow: none !important;
    /* No always-on animation. Spinning conic gradients on every button
       force constant repaints and can starve the main thread of input
       events on slower devices. Only the active button animates. */
}

/* Hex mesh layer — small hexagons (3px) so many fit per button.
   Hidden at rest, fades in on hover with a sweeping pastel-rainbow
   gradient through the hex mask. Mirrors .game-card-tag::before
   from games.html but with a smaller --hex-size. */
body.polish .md-pager .md-pager-btn::before,
.md-pager .md-pager-btn::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    z-index: -1 !important;
    pointer-events: none !important;
    border-radius: inherit !important;
    background: linear-gradient(90deg,
        #ffb3c6 0%, #ffd1a8 14%, #fff0a8 28%, #c4f2c5 42%,
        #b8d9ff 56%, #d4c1ff 70%, #ffc1e5 85%, #ffb3c6 100%) !important;
    background-size: 300% 100% !important;
    background-position: 0% 50% !important;
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 32'><polygon points='14,1.5 26,8 26,24 14,30.5 2,24 2,8' fill='none' stroke='%23000' stroke-width='3.5'/></svg>") !important;
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 32'><polygon points='14,1.5 26,8 26,24 14,30.5 2,24 2,8' fill='none' stroke='%23000' stroke-width='3.5'/></svg>") !important;
    -webkit-mask-size: var(--hex-size) calc(var(--hex-size) * 1.14) !important;
            mask-size: var(--hex-size) calc(var(--hex-size) * 1.14) !important;
    -webkit-mask-repeat: repeat !important;
            mask-repeat: repeat !important;
    opacity: 0 !important;
    transition: opacity 0.25s ease !important;
}
body.polish .md-pager .md-pager-btn > *,
.md-pager .md-pager-btn > * {
    position: relative;
    z-index: 2;
}

/* Hover state — non-active button lifts + hex shimmer fades in */
body.polish .md-pager .md-pager-btn:hover:not(.is-active):not(.is-disabled),
.md-pager .md-pager-btn:hover:not(.is-active):not(.is-disabled) {
    transform: translateY(-1px) !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.95),
        0 4px 10px rgba(15, 20, 40, 0.16) !important;
    color: #0f172a !important;
}
body.polish .md-pager .md-pager-btn:hover:not(.is-active):not(.is-disabled)::before,
.md-pager .md-pager-btn:hover:not(.is-active):not(.is-disabled)::before {
    opacity: 0.55 !important;
    animation:
        md-pager-hex-sweep 2.4s linear infinite,
        md-pager-hex-hue   4.0s linear infinite !important;
}

/* Active page — solid crimson red. Only the single active button
   animates its conic border, so the per-frame paint cost stays low
   regardless of how many pager buttons are on screen. */
body.polish .md-pager .md-pager-btn.is-active,
.md-pager .md-pager-btn.is-active {
    color: #ffffff !important;
    cursor: default !important;
    background:
        radial-gradient(ellipse 100% 60% at 50% -25%,
            rgba(255, 255, 255, 0.55) 0%,
            rgba(255, 255, 255, 0.20) 35%,
            rgba(255, 255, 255, 0.00) 70%) padding-box,
        linear-gradient(135deg,
            rgba(220, 38, 38, 0.97) 0%,
            rgba(185, 28, 28, 0.96) 50%,
            rgba(239, 68, 68, 0.95) 100%) padding-box,
        conic-gradient(from var(--md-pager-edge-angle),
            #ef4444, #dc2626, #b91c1c, #f87171,
            #c0202a, #ff6b7a, #991b1b, #ef4444) border-box !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.45),
        inset 0 -1px 0 rgba(80, 8, 15, 0.18),
        0 0 12px rgba(255, 80, 100, 0.50),
        0 1px 4px rgba(80, 8, 15, 0.22) !important;
    animation: md-pager-edge-spin 6s linear infinite !important;
}

/* Active button hex mesh — red family, always-on shimmer */
body.polish .md-pager .md-pager-btn.is-active::before,
.md-pager .md-pager-btn.is-active::before {
    background: linear-gradient(90deg,
        #8a0a14 0%, #c0202a 14%, #e04050 28%, #c04020 42%,
        #6a0a14 56%, #a02030 70%, #d83040 85%, #8a0a14 100%) !important;
    opacity: 0.85 !important;
    animation:
        md-pager-hex-sweep        1.6s linear infinite,
        md-pager-active-shimmer   1.2s ease-in-out infinite !important;
}

/* Disabled prev/next */
body.polish .md-pager .md-pager-btn.is-disabled,
body.polish .md-pager .md-pager-btn[disabled],
.md-pager .md-pager-btn.is-disabled,
.md-pager .md-pager-btn[disabled] {
    opacity: 0.4 !important;
    cursor: not-allowed !important;
    animation: none !important;
    transform: none !important;
}
body.polish .md-pager .md-pager-btn.is-disabled::before,
.md-pager .md-pager-btn.is-disabled::before {
    opacity: 0 !important;
    animation: none !important;
}

/* Nav arrows (‹ ›) */
body.polish .md-pager .md-pager-btn.md-pager-nav,
.md-pager .md-pager-btn.md-pager-nav {
    font-size: 16px !important;
    line-height: 1 !important;
}

/* Ellipsis */
.md-pager-ellipsis,
body.polish .md-pager .md-pager-ellipsis {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 24px !important;
    height: 36px !important;
    color: #475569 !important;
    font-size: 14px !important;
}

/* Mobile shrink */
@media (max-width: 640px) {
    body.polish .md-pager .md-pager-btn,
    .md-pager .md-pager-btn {
        min-width: 30px !important;
        height: 30px !important;
        padding: 0 8px !important;
        font-size: 12px !important;
        --hex-size: 2.5px;
    }
    body.polish .md-pager .md-pager-ellipsis,
    .md-pager-ellipsis {
        height: 30px !important;
        min-width: 18px !important;
    }
}
