/* =============================================
   MOBILE-OPTIMIZED BELOTE CSS
   Unified adaptive engine — all sizes from JS via --a* vars
   ============================================= */

/* ===== MOBILE PORTRAIT MODE ===== */
@media (max-width: 900px) {

    /* --- LOBBY SCREEN MOBILE FIXES --- */
    #lobby-screen {
        --lobby-header-h: var(--al-header-h, 52px) !important;
    }

    #lobby-header {
        height: var(--lobby-header-h) !important;
    }

    #lobby-center {
        margin-top: var(--lobby-header-h) !important;
        height: calc(100% - var(--lobby-header-h)) !important;
        padding: var(--al-pad, 0 8px) !important;
        overflow-y: auto !important;
        overscroll-behavior: contain !important;
    }

    .lobby-menu-grid,
    .menu-grid {
        grid-template-columns: var(--al-grid-tpl, 1fr) !important;
        gap: var(--al-tile-gap, 10px) !important;
        width: 100% !important;
        max-width: var(--al-tile-max-w, 520px) !important;
        margin: 0 auto !important;
        height: auto !important;
        align-content: start !important;
        grid-auto-rows: auto !important;
        padding-bottom: 10px !important;
        margin-top: 0 !important;
    }

    .menu-grid .premium-tile,
    #lobby-view-menu .premium-tile {
        width: min(100%, var(--al-tile-w, 240px)) !important;
        height: var(--al-tile-h, 340px) !important;
        min-width: 0 !important;
        justify-self: center !important;
        box-sizing: border-box !important;
        aspect-ratio: var(--al-tile-ratio, 11 / 16) !important;
        min-height: 0 !important;
        padding: 0 !important;
    }

    #lobby-view-menu .premium-tile.disabled,
    #lobby-view-menu .premium-tile:disabled {
        width: min(100%, var(--al-tile-w, 240px)) !important;
        height: var(--al-tile-h, 340px) !important;
        min-width: 0 !important;
        justify-self: center !important;
    }

    #lobby-view-menu .tile-art {
        height: 100% !important;
        min-height: 0 !important;
    }

    #lobby-view-menu .menu-card-title {
        font-size: var(--al-title-fs, 18px) !important;
    }

    .lobby-view-header {
        width: 100% !important;
        gap: 6px !important;
        min-height: var(--aq-header-h, 34px) !important;
    }

    .lobby-view-title {
        font-size: 12px !important;
        letter-spacing: 0.5px !important;
    }

    .lobby-back {
        padding: 4px 8px !important;
        font-size: 10px !important;
    }

    .tile-art {
        flex: 1 1 auto !important;
    }

    .quickplay-grid {
        height: auto !important;
        gap: var(--aq-gap, 10px) !important;
        padding: 0 !important;
        grid-template-columns: var(--aq-grid-tpl, 1fr) !important;
        width: 100% !important;
        max-width: var(--aq-tile-max-w, 520px) !important;
        margin: 0 auto !important;
    }

    .quickplay-grid .premium-tile,
    #lobby-view-quickplay .premium-tile {
        aspect-ratio: var(--aq-tile-ratio, 16 / 11) !important;
        height: auto !important;
        min-height: 0 !important;
        padding: 0 !important;
    }

    #lobby-view-quickplay .tile-art {
        height: 100% !important;
        min-height: 0 !important;
    }

    #lobby-view-quickplay .stake-amount {
        font-size: var(--aq-stake-fs, 28px) !important;
    }

    .stake-chip {
        width: 14px !important;
        height: 14px !important;
    }

    .stake-top {
        gap: 4px !important;
        margin-bottom: 4px !important;
    }

    #lobby-view-menu,
    #lobby-view-quickplay {
        justify-content: flex-start !important;
        padding-top: 0 !important;
        margin-top: 0 !important;
    }

    .lobby-title {
        font-family: 'Playfair Display', serif !important;
        font-weight: 900 !important;
        font-size: 24px !important;
        margin-bottom: 15px !important;
        text-align: center !important;
        letter-spacing: 2px !important;
        color: #d4af37 !important;
    }

    .chip-row {
        font-size: 9px !important;
        gap: 4px !important;
    }

    .chip-icon {
        width: 14px !important;
        height: 14px !important;
    }

    .lobby-cards {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        gap: 12px !important;
        width: 100% !important;
        padding: 0 10px !important;
        box-sizing: border-box !important;
    }

    .lobby-card {
        width: 100% !important;
        max-width: 340px !important;
        padding: 14px 18px !important;
        margin: 0 auto !important;
        border-radius: 14px !important;
    }

    .lobby-card-title {
        font-size: 15px !important;
        margin-bottom: 6px !important;
    }

    .lobby-card-sub {
        font-size: 10px !important;
        margin-bottom: 10px !important;
    }

    .lobby-input {
        font-size: 14px !important;
        padding: 10px !important;
    }

    .lobby-btn {
        padding: 12px 16px !important;
        font-size: 13px !important;
        border-radius: 20px !important;
        margin-top: 6px !important;
    }

    #rooms-list {
        max-height: 100px !important;
        font-size: 11px !important;
        text-align: center !important;
    }

    #lobby-view-rooms .rooms-layout {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 10px !important;
        height: auto !important;
        max-height: none !important;
    }

    #lobby-view-rooms .rooms-create-panel,
    #lobby-view-rooms .rooms-list-panel {
        flex: none !important;
        width: 100% !important;
    }

    #lobby-view-rooms #rooms-list {
        max-height: 180px !important;
    }

    /* --- SEARCH SCREEN ADAPTIVE --- */
    .search-screen {
        max-width: var(--as-card-w, 92vw) !important;
        padding: 16px !important;
    }

    .search-card {
        padding: var(--as-card-pad, 14px 12px) !important;
    }

    .search-title {
        font-size: var(--as-title-fs, 14px) !important;
    }

    .search-avatar {
        width: var(--as-slot-size, 56px) !important;
        height: var(--as-slot-size, 56px) !important;
    }

    .search-name {
        font-size: var(--as-name-fs, 11px) !important;
    }

    /* --- GAME SCREEN MOBILE FIXES --- */
    .card-wrapper {
        transition: transform 0.15s cubic-bezier(0.34, 1.2, 0.64, 1) !important;
    }

    .card-vector {
        transition: all 0.15s ease-out !important;
        transform-style: preserve-3d !important;
        perspective: 800px !important;
    }

    .played-card {
        transition: all 0.2s cubic-bezier(0.34, 1.2, 0.64, 1) !important;
    }

    @keyframes cardLand {
        0% {
            transform: scale(1.15) rotate(-3deg);
            opacity: 0.6;
        }
        60% {
            transform: scale(1.05) rotate(1deg);
        }
        100% {
            transform: scale(1) rotate(0deg);
            opacity: 1;
        }
    }

    .played-card img {
        animation: cardLand 0.2s ease-out !important;
    }

    #game-log {
        display: none !important;
    }

    #last-trick-container {
        top: 10px !important;
        left: 10px !important;
        width: 180px !important;
        height: 130px !important;
        transform: scale(0.8) !important;
        transform-origin: top left !important;
    }

    .last-trick-label {
        font-size: 12px !important;
    }

    .last-trick-card {
        width: 70px !important;
    }

    #contract-indicator {
        padding: 0.8vmin 1.5vmin !important;
        font-size: 2.5vmin !important;
    }

    .speech-bubble {
        transition: all 0.15s ease-out !important;
        font-size: 2.5vmin !important;
        padding: 1vmin 2vmin !important;
    }
}

/* ===== EXTRA SMALL MOBILE ===== */
@media (max-width: 400px) {
    .lobby-title {
        font-size: 20px !important;
    }

    .lobby-card {
        max-width: 290px !important;
        padding: 12px !important;
    }

    .lobby-card-title {
        font-size: 14px !important;
    }

    .lobby-btn {
        padding: 10px 12px !important;
        font-size: 12px !important;
    }
}

/* ===== MOBILE LANDSCAPE ===== */
@media (max-height: 500px) and (orientation: landscape) {
    .card-wrapper {
        transition: transform 0.12s cubic-bezier(0.34, 1.2, 0.64, 1) !important;
    }

    .card-vector {
        transition: all 0.08s ease-out !important;
    }

    .played-card {
        transition: all 0.15s cubic-bezier(0.34, 1.2, 0.64, 1) !important;
    }

    #last-trick-container {
        display: none !important;
    }

    .premium-panel {
        transform: scale(0.7) !important;
        max-width: 300px !important;
    }
}

/* ===== QUICKPLAY MODAL MOBILE ===== */
@media (max-width: 900px) {
    .quickplay-content {
        padding: 18px 20px !important;
        border-radius: 16px !important;
        max-width: 320px !important;
    }

    .stake-grid {
        gap: 8px !important;
    }

    .stake-btn {
        padding: 12px 8px !important;
    }

    .stake-amount {
        font-size: var(--aq-stake-fs, 20px) !important;
    }

    .stake-win {
        font-size: 12px !important;
    }
}

/* ===== BIDDING PANEL MOBILE ===== */
@media (max-width: 900px) {
    .premium-panel {
        width: min(95vw, 560px) !important;
        transform: none !important;
        padding: 16px 16px !important;
        border-radius: 14px !important;
    }

    .suit-bubble {
        width: 54px !important;
        height: 54px !important;
        min-width: 54px !important;
        min-height: 54px !important;
        border-radius: 10px !important;
    }

    .btn-main {
        font-size: 12px !important;
        letter-spacing: 0.6px !important;
        padding: 12px 0 !important;
    }

    .bid-val {
        font-size: 38px !important;
    }

    .btn-adjust {
        width: 46px !important;
        height: 46px !important;
        font-size: 24px !important;
    }
}

@media (max-width: 400px) {
    .premium-panel {
        width: min(96vw, 460px) !important;
        padding: 14px 12px !important;
    }
}

/* ===== TOUCH OPTIMIZATION ===== */
@media (pointer: coarse) {
    .card-vector {
        min-width: 50px !important;
        cursor: pointer !important;
        -webkit-tap-highlight-color: transparent !important;
        touch-action: manipulation !important;
        user-select: none !important;
        -webkit-user-select: none !important;
    }

    .lobby-btn,
    .stake-btn,
    .btn-main,
    .suit-bubble,
    .premium-btn,
    .btn-adjust {
        min-height: 44px !important;
        min-width: 44px !important;
        -webkit-tap-highlight-color: transparent !important;
        touch-action: manipulation !important;
        cursor: pointer !important;
    }

    .card-vector:hover {
        transform: none !important;
    }

    .card-vector:active {
        transform: translateY(-25px) scale(1.05) !important;
        transition: transform 0.05s ease-out !important;
    }

    .card-vector.selected {
        transform: translateY(-40px) scale(1.1) !important;
    }

    @media (hover: none) {
        .card-vector:hover,
        .lobby-btn:hover,
        .stake-btn:hover,
        .btn-main:hover,
        .premium-tile:hover {
            transform: none !important;
            box-shadow: inherit !important;
        }
    }

    #game-container,
    #my-hand,
    .player-slot,
    .card-wrapper,
    #lobby-screen,
    .lobby-view {
        user-select: none !important;
        -webkit-user-select: none !important;
        -webkit-touch-callout: none !important;
    }
}

/* ===== iOS SPECIFIC FIXES ===== */
@supports (-webkit-touch-callout: none) {
    body, #game-container, #lobby-screen, #welcome-screen {
        min-height: -webkit-fill-available;
    }

    html {
        overflow: hidden;
        position: fixed;
        width: 100%;
        height: 100%;
    }
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    20% { transform: translateX(-8px); }
    40% { transform: translateX(8px); }
    60% { transform: translateX(-6px); }
    80% { transform: translateX(6px); }
}

/* ===== FINAL GAME SCREEN MOBILE STABILIZER ===== */
@media (max-width: 900px) {
    :root {
        --avatar-size: var(--ag-avatar-size, clamp(46px, 10.5vw, 58px)) !important;
        --card-width: var(--ag-card-width, clamp(68px, 18.5vw, 98px)) !important;
        --font-size-name: clamp(10px, 2.8vw, 12px) !important;
    }

    #table-center {
        width: var(--ag-table-w, clamp(150px, 42vw, 220px)) !important;
        height: var(--ag-table-h, clamp(190px, 52vw, 280px)) !important;
        max-width: 280px !important;
        max-height: 320px !important;
    }

    .played-card {
        width: var(--ag-played-card-w, clamp(52px, 14vw, 78px)) !important;
    }

    .player-slot {
        width: var(--ag-player-slot-w, clamp(82px, 22vw, 120px)) !important;
    }

    #p1 {
        top: var(--ag-p1-top, 8px) !important;
        left: 50% !important;
        transform: translateX(-50%) !important;
    }

    #p2 {
        left: var(--ag-p2-left, 4px) !important;
        top: 46% !important;
        transform: translateY(-50%) !important;
    }

    #p3 {
        right: var(--ag-p3-right, 4px) !important;
        top: 46% !important;
        transform: translateY(-50%) !important;
    }

    .my-slot {
        left: var(--ag-my-left, 8px) !important;
        bottom: var(--ag-my-bottom, 82px) !important;
    }

    #my-hand {
        height: var(--ag-hand-h, clamp(126px, 23vh, 180px)) !important;
        bottom: var(--ag-hand-bottom, -18px) !important;
    }

    .card-image {
        width: var(--ag-card-img-w, clamp(76px, 19.5vw, 116px)) !important;
    }

    .opp-card-back {
        width: var(--ag-opp-card-w, 32px) !important;
    }

    .card-vector:active {
        transform: translateY(-14px) scale(1.03) !important;
    }

    .card-vector.selected {
        transform: translateY(-22px) scale(1.05) !important;
    }

    .opponent-cards {
        z-index: 120 !important;
    }

    #p1 .opponent-cards {
        margin-top: 4px !important;
    }

    #p2 .opponent-cards {
        margin-left: 8px !important;
    }

    #p3 .opponent-cards {
        margin-right: 8px !important;
    }

    #scoreboard {
        top: 4px !important;
        right: 4px !important;
        transform: scale(var(--ag-score-scale, 0.66)) !important;
        transform-origin: top right !important;
    }
}

/* ===== LANDSCAPE GAME STABILIZER ===== */
@media (max-height: 500px) and (orientation: landscape) {
    :root {
        --avatar-size: var(--ag-avatar-size, clamp(44px, 10vh, 56px)) !important;
        --card-width: var(--ag-card-width, clamp(64px, 15vh, 92px)) !important;
    }

    #table-center {
        width: var(--ag-table-w, clamp(140px, 32vh, 190px)) !important;
        height: var(--ag-table-h, clamp(170px, 40vh, 240px)) !important;
    }

    .played-card {
        width: var(--ag-played-card-w, clamp(44px, 12vh, 64px)) !important;
    }

    .my-slot {
        left: var(--ag-my-left, 6px) !important;
        bottom: var(--ag-my-bottom, 68px) !important;
    }

    #my-hand {
        height: var(--ag-hand-h, clamp(104px, 28vh, 140px)) !important;
        bottom: var(--ag-hand-bottom, -20px) !important;
    }

    .opp-card-back {
        width: var(--ag-opp-card-w, 24px) !important;
    }

    #scoreboard {
        transform: scale(var(--ag-score-scale, 0.58)) !important;
    }

    .card-vector:active {
        transform: translateY(-10px) scale(1.02) !important;
    }

    .card-vector.selected {
        transform: translateY(-16px) scale(1.04) !important;
    }
}

/* ===== TABLET / SMALL DESKTOP GAME STABILIZER ===== */
@media (min-width: 901px) and (max-width: 1280px) {
    :root {
        --avatar-size: var(--ag-avatar-size, clamp(58px, 6.8vmin, 84px)) !important;
        --card-width: var(--ag-card-width, clamp(82px, 9.8vmin, 126px)) !important;
        --font-size-name: clamp(10px, 1.4vmin, 14px) !important;
    }

    #table-center {
        width: var(--ag-table-w, clamp(190px, 23vmin, 280px)) !important;
        height: var(--ag-table-h, clamp(190px, 23vmin, 280px)) !important;
    }

    .played-card {
        width: var(--ag-played-card-w, clamp(66px, 8vmin, 100px)) !important;
    }

    .player-slot {
        width: var(--ag-player-slot-w, clamp(94px, 11.6vmin, 146px)) !important;
    }

    #p1 {
        top: var(--ag-p1-top, 2vmin) !important;
    }

    #p2 {
        left: var(--ag-p2-left, 1.2vmin) !important;
    }

    #p3 {
        right: var(--ag-p3-right, 1.2vmin) !important;
    }

    #my-hand {
        height: var(--ag-hand-h, clamp(190px, 27vh, 260px)) !important;
        bottom: var(--ag-hand-bottom, -16px) !important;
    }

    .card-image {
        width: var(--ag-card-img-w, clamp(98px, 11vw, 148px)) !important;
    }

    .opp-card-back {
        width: var(--ag-opp-card-w, clamp(42px, 5vmin, 64px)) !important;
    }

    #scoreboard {
        transform: scale(var(--ag-score-scale, 0.82)) !important;
        transform-origin: top right !important;
    }
}

/* ===== LARGE DESKTOP GAME ===== */
@media (min-width: 1281px) {
    :root {
        --avatar-size: var(--ag-avatar-size, 13vmin) !important;
        --card-width: var(--ag-card-width, 18vmin) !important;
    }

    #table-center {
        width: var(--ag-table-w, clamp(260px, 28vmin, 360px)) !important;
        height: var(--ag-table-h, clamp(260px, 28vmin, 360px)) !important;
    }

    .played-card {
        width: var(--ag-played-card-w, clamp(78px, 9.4vmin, 118px)) !important;
    }

    .player-slot {
        width: var(--ag-player-slot-w, clamp(110px, 13vmin, 160px)) !important;
    }

    .card-image {
        width: var(--ag-card-img-w, clamp(110px, 12vmin, 160px)) !important;
    }

    .opp-card-back {
        width: var(--ag-opp-card-w, clamp(52px, 6.3vmin, 80px)) !important;
    }

    #scoreboard {
        transform: scale(var(--ag-score-scale, 0.9)) !important;
        transform-origin: top right !important;
    }
}
