/* --- START OF FILE style.css --- */
/* --- Import Font --- */
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700&display=swap');

/* --- Base Styles --- */
:root {
    /* Keeping color variables for potential overrides or custom elements */
    --bg-color: #f8f9fa; /* Light grey background */
    --card-bg-color: #ffffff;
    --primary-text-color: #212529; /* Bootstrap default text */
    --secondary-text-color: #6c757d; /* Bootstrap secondary text */
    --border-color: #dee2e6; /* Bootstrap border color */
    --shadow-color: rgba(0, 0, 0, 0.1); /* Adjusted shadow */
    --color-plus: #198754; /* Bootstrap success */
    --color-minus: #dc3545; /* Bootstrap danger */
    --primary-accent-color: #0d6efd; /* Bootstrap primary */
    --primary-accent-hover: #0b5ed7;
    --delete-button-color: #dc3545; /* Bootstrap danger */
    --delete-button-hover: #bb2d3b;
    --edit-button-color: #ffc107; /* Bootstrap warning */
    --edit-button-hover: #ffca2c;
    --info-button-color: #0dcaf0; /* Bootstrap info */
    --info-button-hover: #31d2f2;
    --success-color: #198754; /* Bootstrap success */
    --warning-color: #ffc107; /* Bootstrap warning */
    --danger-color: var(--delete-button-color); /* Bootstrap danger */
    --border-radius: 0.375rem; /* Bootstrap default */
    --button-border-radius: 0.375rem; /* Bootstrap default */

    /* Custom Game Specific Styles (for index.html) */
    --ticket-ready-bg: #d1e7dd; /* Bootstrap success-subtle */
    --ticket-ready-border: #a3cfbb;
    --one-tg-bar-bg: #cfe2ff; /* Bootstrap primary-subtle */
    --one-tg-bar-border: #9ec5fe;
    /* Feature 3: Update 1TG variables (using warning color) */
    --one-tg-num-bg: var(--warning-color);
    --one-tg-num-color: #000; /* Black text on yellow */
    --one-tg-bingo-bg: var(--success-color);
    --one-tg-bingo-color: white;
    /* --missed-bingo-bg: #e9ecef; */ /* REMOVED for Operation: REMOVE MISSED STATUS */
    /* --missed-bingo-border: #ced4da; */ /* REMOVED for Operation: REMOVE MISSED STATUS */
    /* --missed-bingo-opacity: 0.7; */ /* REMOVED for Operation: REMOVE MISSED STATUS */
    --round-invalid-bg: #fff3cd; /* Bootstrap warning-subtle */
    --round-invalid-border: var(--warning-color);
    --round-invalid-text: #664d03; /* Darker yellow text */
    --selection-disabled-bg: #e9ecef;
    --selection-disabled-border: #ced4da;
    --selection-disabled-opacity: 0.5;
    --static-card-display-bg: #cfe2ff; /* Bootstrap primary-subtle */
    --static-card-display-border: #9ec5fe;
    --admin-mute-color: var(--danger-color);
    --player-mute-color: var(--warning-color);
    --audio-on-color: var(--success-color);
    /* --- OPERATION CASH MODE - Phase 8: Rename --fun-mode variables to --cash-mode --- START --- */
    --cash-mode-bg: #cfe2ff; /* Bootstrap primary-subtle (kept same style for now) */
    --cash-mode-text: #052c65; /* Darker blue (kept same style for now) */
    --cash-mode-border: #9ec5fe; /* (kept same style for now) */
    /* --- OPERATION CASH MODE - Phase 8: Rename --fun-mode variables to --cash-mode --- END --- */

    /* Player Ticket Dab Style (Blue) */
    --dabbed-cell-bg: #0d6efd; /* Bootstrap primary blue */
    --dabbed-cell-text: white;
    --dabbed-cell-shadow: rgba(13, 110, 253, 0.4); /* Blue shadow */

    /* NEW: Last Called Highlight Style */
    --last-called-highlight-border-color: #ffc107; /* Bootstrap warning yellow */
    --last-called-highlight-border-width: 3px;

    /* Initial View Card Specifics */
    --initial-view-card-bg: #ffffff;
    --initial-view-card-border: #e9ecef; /* Slightly lighter border */
    --initial-view-card-border-hover: #0d6efd; /* Primary blue for hover */
    --initial-view-card-shadow: rgba(0, 0, 0, 0.06);
    --initial-view-card-shadow-hover: rgba(0, 0, 0, 0.12);
    --initial-view-bg: #f4f7f9; /* Very light blue/grey background */
    --initial-view-title-color: #2c3e50; /* Dark blue-grey for title */

    /* Admin Landing View Specifics */
    --admin-landing-card-bg: #ffffff;
    --admin-landing-card-border: #e9ecef;
    --admin-landing-card-border-hover: #0d6efd;
    --admin-landing-card-shadow: rgba(0, 0, 0, 0.06);
    --admin-landing-card-shadow-hover: rgba(0, 0, 0, 0.12);
    --admin-landing-bg: #f4f7f9;
    --admin-landing-title-color: #2c3e50;

    /* OPERATION ACTIVE GAME VIEW (VISUAL ONLY) - Phase 1, 2, 3 & 4: Variables */
    --admin-header-bar-bg: #ffffff;
    --admin-header-bar-border: #dee2e6;
    --admin-header-bar-shadow: 0 .125rem .25rem rgba(0,0,0,.075);
    --admin-tab-active-bg: #f8f9fa; /* Slightly off-white for active tab content */
    --admin-tab-active-border: #dee2e6;
    --admin-tab-hover-bg: #e9ecef; /* Light grey for tab hover */
    --admin-panel-card-bg: #ffffff; /* White for cards within tabs */
    --admin-panel-card-border: #dee2e6;
    --admin-panel-card-header-bg: #f8f9fa; /* Slightly off-white for card headers */
    --admin-panel-card-header-border: #dee2e6;

    /* --- OPERATION SESSION LOBBY ADMIN NAME - Phase 4 Part 2: Add Lobby CSS Variables --- START --- */
    --lobby-bg-color: #f0f2f5; /* Slightly different background for lobby view */
    --lobby-card-bg: #ffffff;
    --lobby-card-border: #e0e0e0;
    --lobby-card-shadow: rgba(0, 0, 0, 0.05);
    --lobby-card-hover-shadow: rgba(0, 0, 0, 0.1);
    --lobby-card-hover-border: var(--primary-accent-color);
    --status-lobby-color: var(--success-color);
    --status-requesting-tickets-color: var(--warning-color);
    --status-game-in-progress-color: var(--info-button-color);
    --status-between-games-color: #6c757d; /* Bootstrap secondary */
    /* --- OPERATION SESSION LOBBY ADMIN NAME - Phase 4 Part 2: Add Lobby CSS Variables --- END --- */
}

html {
    height: 100%;
}

body {
    font-family: 'Nunito', sans-serif;
    background-color: var(--initial-view-bg);
    color: var(--primary-text-color);
    line-height: 1.5;
    min-height: 100%;
    display: flex;
    flex-direction: column;
}

body.body-with-banner {
    padding-top: 60px;
}


.app-container {
    margin: 0 auto 2rem auto;
    width: 100%;
    padding: 0;
    max-width: 1100px;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
}

.app-container > .view {
    padding: 1.5rem;
}

/* Styles for the Initial View */
#initial-view {
    padding-top: clamp(2rem, 5vh, 4rem);
    padding-bottom: clamp(2rem, 5vh, 4rem);
    background-color: var(--initial-view-bg);
    flex-grow: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.initial-view-title {
    color: var(--initial-view-title-color);
    text-shadow: 0px 1px 1px rgba(0,0,0,0.05);
}

.initial-view-content {
    max-width: 900px;
    width: 100%;
}

.initial-view-card {
    background-color: var(--initial-view-card-bg);
    border: 1px solid var(--initial-view-card-border);
    border-radius: var(--border-radius);
    box-shadow: 0 0.25rem 0.75rem var(--initial-view-card-shadow);
    transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out;
}

.initial-view-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.5rem 1.5rem var(--initial-view-card-shadow-hover);
    border-color: var(--initial-view-card-border-hover);
}

.initial-view-card .card-title {
    color: var(--primary-text-color);
    font-weight: 600;
}
.initial-view-card .card-title i {
    transition: color 0.2s ease-in-out;
}
.initial-view-card:hover .card-title i {
    color: var(--primary-accent-hover) !important;
}

.initial-view-card .card-text {
    color: var(--secondary-text-color);
    font-size: 1rem; 
}


.initial-view-card .card-body {
    padding: 1.75rem;
}

.initial-view-btn {
    font-weight: 500;
    padding: 0.75rem 1rem;
    font-size: 1.05rem;
    border-width: 1px;
    color: #212529 !important;
    transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, transform 0.1s ease-in-out;
}
.initial-view-btn:hover:not(:disabled) {
    transform: scale(1.03);
}
.initial-view-btn:active:not(:disabled) {
    transform: scale(0.98);
}

/* Styles for Player Initial View Cards (after login) */
.player-initial-view-card .card-text {
    font-size: 1rem; 
}


/* Styles for the Admin Landing View */
#admin-landing-view {
    padding-top: clamp(2rem, 5vh, 4rem);
    padding-bottom: clamp(2rem, 5vh, 4rem);
    background-color: var(--admin-landing-bg);
    flex-grow: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.admin-landing-title {
    color: var(--admin-landing-title-color);
    text-shadow: 0px 1px 1px rgba(0,0,0,0.05);
}

.admin-landing-content {
    max-width: 900px;
    width: 100%;
}

.admin-landing-card {
    background-color: var(--admin-landing-card-bg);
    border: 1px solid var(--admin-landing-card-border);
    border-radius: var(--border-radius);
    box-shadow: 0 0.25rem 0.75rem var(--admin-landing-card-shadow);
    transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out;
}

.admin-landing-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.5rem 1.5rem var(--admin-landing-card-shadow-hover);
    border-color: var(--admin-landing-card-border-hover);
}

.admin-landing-card .card-title {
    color: var(--primary-text-color);
    font-weight: 600;
}

.admin-landing-card .card-title i {
    transition: color 0.2s ease-in-out;
}
.admin-landing-card:hover .card-title i {
    color: var(--primary-accent-hover) !important;
}

.admin-landing-card .card-text {
    color: var(--secondary-text-color);
    font-size: 1rem; 
}

.admin-landing-card .card-body {
    padding: 1.75rem;
}

.admin-landing-btn {
    font-weight: 500;
    padding: 0.75rem 1rem;
    font-size: 1.05rem;
    border-width: 1px;
    transition: transform 0.1s ease-in-out;
}

.admin-landing-btn:hover:not(:disabled) {
    transform: scale(1.03);
}
.admin-landing-btn:active:not(:disabled) {
    transform: scale(0.98);
}
.admin-landing-btn i {
    transition: transform 0.3s ease-in-out;
}


/* OPERATION ACTIVE GAME VIEW (VISUAL ONLY) - Phase 1, 2, 3 & 4: CSS Styles */
.admin-game-header-bar {
    background-color: var(--admin-header-bar-bg);
    border-bottom: 1px solid var(--admin-header-bar-border);
    box-shadow: var(--admin-header-bar-shadow);
}

.admin-game-header-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--primary-text-color);
}

.admin-game-header-title .badge {
    font-size: 0.9em;
    vertical-align: middle;
    padding: 0.4em 0.65em;
}

.admin-game-header-actions .btn {
    margin-left: 0.5rem;
    padding: 0.375rem 0.75rem;
}
.admin-game-header-actions .btn i {
    margin-right: 0.35rem;
}

.admin-game-tabs.nav-tabs,
.admin-general-tabs.nav-tabs { 
    border-bottom-color: var(--admin-tab-active-border);
    margin-bottom: 0 !important;
}

.admin-game-tabs .nav-link,
.admin-general-tabs .nav-link { 
    color: var(--secondary-text-color);
    border-width: 1px;
    border-bottom-width: 1px;
    border-bottom-color: var(--admin-tab-active-border);
    padding: 0.65rem 1.15rem;
    font-weight: 500;
    transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out, border-color 0.15s ease-in-out;
    border-radius: var(--border-radius) var(--border-radius) 0 0;
}
.admin-game-tabs .nav-link i,
.admin-general-tabs .nav-link i { 
    margin-right: 0.4rem;
}

.admin-game-tabs .nav-link:hover:not(.active),
.admin-general-tabs .nav-link:hover:not(.active) { 
    background-color: var(--admin-tab-hover-bg);
    border-color: var(--admin-tab-active-border) var(--admin-tab-active-border) var(--admin-tab-active-border);
    color: var(--primary-text-color);
}

.admin-game-tabs .nav-link.active,
.admin-general-tabs .nav-link.active { 
    color: var(--primary-text-color);
    background-color: var(--admin-tab-active-bg);
    border-color: var(--admin-tab-active-border) var(--admin-tab-active-border) var(--admin-tab-active-bg);
    font-weight: 600;
}

.admin-game-tab-content-wrapper,
.admin-general-tab-content-wrapper { 
    background-color: var(--admin-tab-active-bg);
    padding: 1.25rem;
    border: 1px solid var(--admin-tab-active-border);
    border-top: none;
    border-radius: 0 0 var(--border-radius) var(--border-radius);
    margin-bottom: 1.5rem;
}

.admin-panel-card {
    background-color: var(--admin-panel-card-bg);
    border: 1px solid var(--admin-panel-card-border);
    margin-bottom: 1.25rem;
}
.admin-panel-card:last-child {
    margin-bottom: 0;
}

.admin-panel-card .card-header {
    background-color: var(--admin-panel-card-header-bg);
    border-bottom: 1px solid var(--admin-panel-card-header-border);
    padding: 0.65rem 1.15rem;
}
.admin-panel-card .card-header h5 {
    font-weight: 600;
    font-size: 1rem;
    color: var(--primary-text-color);
}
.admin-panel-card .card-header h5 i {
    margin-right: 0.5rem;
    color: var(--secondary-text-color);
}

.admin-panel-card .card-body {
    padding: 1.15rem;
}
.admin-panel-card .list-group-flush .list-group-item {
    background-color: transparent;
    padding: 0.65rem 1.15rem;
}
.admin-panel-card .form-label {
    font-size: 0.9rem;
    margin-bottom: 0.3rem;
}
.admin-panel-card .btn-sm {
    font-size: 0.8rem;
    padding: 0.25rem 0.6rem;
}
.admin-panel-card .btn-lg {
    font-size: 1.1rem;
}


/* Phase 3: Enhancing Key Data Displays */
#active-called-balls-display-admin.called-balls-list {
    padding: 0.5rem;
}
#active-called-balls-display-admin.called-balls-list .badge {
    padding: 0.4em 0.65em;
    font-size: 0.9em;
    margin: 3px;
    min-width: 2.75ch;
    text-align: center;
    font-weight: 600;
}

#active-player-list-admin .list-group-item {
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
}
#active-player-list-admin .admin-player-info {
    font-weight: 500;
}
#active-player-list-admin .admin-player-mute-status {
    font-size: 0.8em;
}

/* NEW: Active Claim Verification Grid styles */
#active-bingo-verify-grid {
    max-height: 450px;
    overflow-y: auto;
    padding: 5px;
}
.admin-verification-card {
    border: 1px solid #ddd;
    transition: box-shadow 0.2s ease-in-out;
}
.admin-verification-card:hover {
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
}
.admin-verification-card-header {
    background-color: #f8f9fa;
    padding: 0.5rem 0.75rem;
    font-size: 0.9rem;
}
.admin-verification-card-header .card-title-sm {
    font-weight: 600;
}
.admin-claim-ticket-preview .ticket-grid-modal {
    gap: 2px;
}
.admin-claim-ticket-preview .ticket-cell {
    min-height: 25px;
    font-size: 0.8rem;
}

/* NEW: Pending Claim Queue item states */
.pending-claim-item .claim-action-area {
    min-width: 160px; /* Give space for spinner text */
    text-align: right;
}
.pending-claim-item.processing .claim-action-area,
.pending-claim-item.completed .claim-action-area {
    font-weight: 600;
    font-size: 0.9em;
}
.pending-claim-item.processing .claim-action-area {
    color: var(--bs-info-text-emphasis);
}
.pending-claim-item.completed .claim-action-area {
    color: var(--bs-success-text-emphasis);
}


.prize-display-area.admin-prize-summary {
    padding: 0.75rem 1rem;
}
.prize-display-area.admin-prize-summary strong {
    font-size: 1em;
    font-weight: 600;
}
.prize-display-area.admin-prize-summary .prize-pool strong {
    font-size: 1.15em;
    font-weight: 700;
}

#active-start-game-now-btn,
#active-start-session-game-btn {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    font-size: 1.05rem;
}

#active-call-ball-btn {
    font-size: 1.05rem;
}


/* Last Ball Banner (for index.html) */
#last-ball-banner {
    color: var(--bs-dark);
    background-color: #e9ecef;
    font-size: 1.1em;
    font-weight: 500;
    z-index: 1030;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    line-height: 1.4;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 50px;
    padding: 0.5rem 1rem;
}
#last-ball-banner .ball-number {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-width: 1.8em;
    min-height: 1.8em;
    padding: 0.2em 0.5em;
    background-color: rgba(0, 0, 0, 0.1);
    color: var(--bs-dark);
    border-radius: 50%;
    margin-left: 0.5em;
    font-size: 1.4em;
    line-height: 1;
    font-weight: 700;
}
#last-ball-banner small { font-size: 0.8em; display: block; margin-top: 3px; font-weight: normal; opacity: 0.9; }
#last-ball-banner div { margin-bottom: 4px; }
#last-ball-banner div:last-child { margin-bottom: 0; }

/* --- Bingo Ticket Specific Styles (for index.html) --- */
.ticket-area {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    justify-content: center;
    align-items: start;
}
.bingo-ticket {
    border: 1px solid var(--border-color);
    padding: 0.75rem;
    background-color: var(--card-bg-color);
    border-radius: var(--border-radius);
    box-shadow: 0 2px 5px var(--shadow-color);
    transition: outline 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.3s ease, order 0.3s ease, opacity 0.3s ease;
    flex: 1 1 300px;
    max-width: 450px;
    opacity: 1;
}
.bingo-ticket:hover {
    box-shadow: 0 4px 10px var(--shadow-color);
}
.ticket-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--border-color);
    font-size: 0.9em;
}
.ticket-to-go {
    font-size: 0.9em;
    color: var(--secondary-text-color);
    font-weight: 600;
}
.ticket-to-go .count {
    font-weight: 700;
    color: var(--primary-text-color);
    margin-left: 4px;
    display: inline-block;
    min-width: 1.5em;
    text-align: center;
}
.ticket-to-go .call-bingo-text {
    color: var(--success-color);
    font-weight: 700;
    font-size: 1.1em;
}
.ticket-sn {
    font-size: 0.85em;
    color: #6c757d;
    text-align: right;
    font-weight: 600;
}
.ticket-grid {
    display: grid;
    grid-template-columns: repeat(9, 1fr);
    gap: 5px;
}
.ticket-cell {
    border: 1px solid #e0e0e0;
    min-height: 40px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight: 600;
    font-size: 1.1rem;
    cursor: default;
    background-color: #fff;
    border-radius: 4px;
    transition: opacity 0.3s ease, background-color 0.2s ease, transform 0.1s ease, color 0.3s ease, border-color 0.3s ease, border-width 0.3s ease;
}
.ticket-cell.number {
    background-color: #f0f0f0;
    cursor: pointer;
    opacity: 1;
}
.ticket-cell.number:hover:not(.dabbed) {
    background-color: #e0e0e0;
}
.ticket-cell.empty {
    background-color: #fdfdfd;
    border-color: #f0f0f0;
}

.ticket-cell.number.dabbed {
    background-color: var(--dabbed-cell-bg);
    color: var(--dabbed-cell-text);
    border-color: var(--dabbed-cell-bg);
    transform: scale(1.05);
    box-shadow: 0 2px 4px var(--dabbed-cell-shadow);
}

.ticket-cell.last-called-highlight {
    border-width: var(--last-called-highlight-border-width) !important;
    border-color: var(--last-called-highlight-border-color) !important;
    z-index: 1;
    position: relative;
}
.ticket-cell.number.dabbed.last-called-highlight {
    border-width: var(--last-called-highlight-border-width);
    border-color: var(--last-called-highlight-border-color);
    transform: scale(1.1);
}

.bingo-ticket.round-invalid { border-color: var(--round-invalid-border); background-color: var(--round-invalid-bg); opacity: 0.8; }
.bingo-ticket.round-invalid .ticket-to-go { color: var(--round-invalid-text); }
.bingo-ticket.round-invalid .ticket-grid .ticket-cell.number { opacity: 0.8; }
.bingo-ticket.round-invalid .ticket-cell.last-called-highlight {
    border-width: 1px !important;
    border-color: #e0e0e0 !important;
}

.ticket-area.selecting .bingo-ticket { cursor: pointer; border-color: var(--primary-accent-color); outline: 3px dashed var(--primary-accent-color); opacity: 0.8; }
.ticket-area.selecting .bingo-ticket:hover:not(.selection-disabled) { opacity: 1; border-color: var(--primary-accent-hover); outline-color: var(--primary-accent-hover); box-shadow: 0 4px 10px var(--shadow-color); }
.ticket-area.selecting .bingo-ticket.selection-disabled { background-color: var(--selection-disabled-bg); border-color: var(--selection-disabled-border); opacity: var(--selection-disabled-opacity); cursor: not-allowed; pointer-events: none; outline: none; }

/* Operation: Highlight Winning Ticket on Claim */
.bingo-ticket.potential-winning-claim {
    outline: 3px solid var(--success-color, #198754) !important;
    box-shadow: 0 0 12px rgba(25, 135, 84, 0.7); 
    transform: scale(1.03);
    z-index: 10; 
    background-color: #e6ffed !important; /* Light green background */
}
.ticket-area.selecting .bingo-ticket.potential-winning-claim {
    opacity: 1; 
}


.ticket-area.view-mode-simplified .ticket-grid { display: none; }
.ticket-area:not(.view-mode-simplified) .simplified-line-view { display: none; }

.simplified-line-view {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 8px 0;
    justify-content: center;
    align-items: center;
    min-height: 40px;
}

.simplified-number-cell { border: 1px solid var(--border-color); background-color: #f8f9fa; color: var(--primary-text-color); font-weight: 600; font-size: 0.9rem; border-radius: 4px; padding: 5px; min-width: 30px; flex: 0 0 auto; text-align: center; line-height: 1.2; display: inline-flex; justify-content: center; align-items: center; }
.simplified-bingo-text { font-weight: 700; color: var(--success-color); font-size: 1em; text-align: center; width: 100%; }
.simplified-missed-text { font-weight: 700; font-style: italic; font-size: 1em; text-align: center; width: 100%; }
.bingo-ticket.round-invalid .simplified-missed-text { color: var(--round-invalid-text); font-style: normal; }

.one-tg-bar { background-color: var(--one-tg-bar-bg); border: 1px solid var(--one-tg-bar-border); border-radius: var(--border-radius); padding: 1rem; align-self: flex-start; max-height: calc(100vh - 300px); overflow-y: auto; display: flex; flex-direction: column; gap: 0.5rem; }

#one-tg-list {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 6px 8px;
    justify-content: center;
    align-items: center;
    padding: 0;
    margin: 0;
    min-height: 40px;
}

#one-tg-list > div.list-group-item {
    border: none;
    padding: 0;
    background-color: transparent;
    margin-bottom: 0;
}
#one-tg-list > div.list-group-item.text-muted.text-center {
    width: 100%;
    padding: 0.5rem;
}


.one-tg-number-badge {
    background-color: var(--one-tg-num-bg);
    color: var(--one-tg-num-color);
    font-size: 1.2rem;
    font-weight: 700;
    padding: 0.4em 0.6em;
    border-radius: 50%;
    min-width: 40px;
    min-height: 40px;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    line-height: 1;
    box-shadow: 0 2px 4px rgba(0,0,0,0.15);
}

#one-tg-list > .one-tg-bingo-text {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--one-tg-bingo-color);
    background-color: var(--one-tg-bingo-bg);
    padding: 0.5rem 1rem;
    border-radius: var(--border-radius);
    text-align: center;
    width: auto;
    flex-grow: 1;
}


.static-card-display { background-color: var(--static-card-display-bg); border-color: var(--static-card-display-border); }
#assigned-static-cards-list li { background-color: #fff; padding: 0.375rem 0.75rem; border-radius: 0.25rem; font-weight: 600; box-shadow: 0 .125rem .25rem rgba(0,0,0,.075); font-size: 1.05em; }

.mute-button { 
    width: 40px; 
    height: 40px; 
    border-radius: 50%; 
    padding: 0; 
    display: inline-flex; 
    justify-content: center; 
    align-items: center; 
}
.mute-button.active:not(:disabled) { 
    background-color: var(--bs-secondary-active-bg); 
}
.mute-button i.fa-volume-mute { 
    color: var(--danger-color); 
}
.mute-button i.fa-volume-up { 
    color: var(--primary-text-color); /* Changed from inherit to a dark color */
}
/* Ensure admin mute button also gets this if it's on a light background */
#active-admin-mute-button i.fa-volume-up {
    color: var(--primary-text-color); /* Or specific dark color */
}


.admin-player-mute-status { font-size: 0.85em; font-style: italic; font-weight: 600; padding: 2px 6px; border-radius: 4px; margin: 0 5px; flex-shrink: 0; }
.status-admin-muted { color: white; background-color: var(--admin-mute-color); }
.status-player-muted { color: #664d03; background-color: var(--warning-color); }
.status-audio-on { color: white; background-color: var(--audio-on-color); }

.pending-transaction-item .tx-type { font-weight: 500; padding: 2px 6px; border-radius: 4px; font-size: 0.85em; text-transform: uppercase; }
.pending-transaction-item.deposit .tx-type { background-color: var(--success-color); color: white; }
.pending-transaction-item.withdraw .tx-type { background-color: var(--warning-color); color: #000; }
.pending-transaction-item .tx-amount { font-weight: 700; color: var(--primary-accent-color); }
.pending-transaction-item .tx-time { font-size: 0.85em; color: var(--secondary-text-color); margin-left: auto; }

.history-container ul { padding-left: 0; }
#history-list li.transaction-item,
#modal-history-list li.transaction-item { font-size: 0.9em; padding: 0.5rem 0.75rem; }
.transaction-item .tx-timestamp { font-size: 0.85em; color: var(--secondary-text-color); }
.transaction-item .tx-desc { font-weight: 500; }
.transaction-item .tx-amount { font-weight: 700; min-width: 70px; text-align: right; }
.transaction-item .tx-amount.text-success { color: var(--color-plus) !important; }
.transaction-item .tx-amount.text-danger { color: var(--color-minus) !important; }
.transaction-item .tx-balance { font-size: 0.9em; color: var(--secondary-text-color); min-width: 80px; text-align: right; margin-left: 1rem; }

.cash-mode-indicator {
    background-color: var(--cash-mode-bg);
    color: var(--cash-mode-text);
    border: 1px solid var(--cash-mode-border);
    border-radius: var(--border-radius);
    padding: 0.375rem 0.75rem;
    font-weight: 700;
    font-size: 1em;
}


@keyframes flashYellow { from { background-color: yellow; } to { background-color: #f1c40f; } }
@keyframes fa-bounce {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(-4px); }
  60% { transform: translateY(-2px); }
}
.initial-view-btn:hover:not(:disabled) i,
.admin-landing-btn:hover:not(:disabled) i {
    animation: fa-bounce 0.6s ease-in-out 1;
}


.initial-view-btn {
}

#show-admin-btn.initial-view-btn {
    background-color: #FFB6C1;
    border-color: #FFB6C1;
}
#show-admin-btn.initial-view-btn:hover:not(:disabled),
#show-admin-btn.initial-view-btn:active:not(:disabled) {
    background-color: #fcaeae;
    border-color: #fcaeae;
}

#show-login-btn.initial-view-btn {
    background-color: #98FB98; /* PaleGreen */
    border-color: #98FB98;
}
#show-login-btn.initial-view-btn:hover:not(:disabled),
#show-login-btn.initial-view-btn:active:not(:disabled) {
    background-color: #88e788; /* Slightly darker PaleGreen */
    border-color: #88e788;
}


#show-join-btn.initial-view-btn { 
    background-color: #98FB98;
    border-color: #98FB98;
}
#show-join-btn.initial-view-btn:hover:not(:disabled),
#show-join-btn.initial-view-btn:active:not(:disabled) {
    background-color: #88e788;
    border-color: #88e788;
}

#show-join-session-btn.initial-view-btn {
    background-color: #ADD8E6;
    border-color: #ADD8E6;
}
#show-join-session-btn.initial-view-btn:hover:not(:disabled),
#show-join-session-btn.initial-view-btn:active:not(:disabled) {
    background-color: #9cc7d9;
    border-color: #9cc7d9;
}

#show-signup-btn.initial-view-btn {
    background-color: #E6E6FA;
    border-color: #E6E6FA;
}
#show-signup-btn.initial-view-btn:hover:not(:disabled),
#show-signup-btn.initial-view-btn:active:not(:disabled) {
    background-color: #d9d9ed;
    border-color: #d9d9ed;
}

#show-account-btn.initial-view-btn {
    background-color: #FFFACD;
    border-color: #FFFACD;
}
#show-account-btn.initial-view-btn:hover:not(:disabled),
#show-account-btn.initial-view-btn:active:not(:disabled) {
    background-color: #ede6bb;
    border-color: #ede6bb;
}

.initial-view-btn:disabled {
    color: #6c757d !important;
    background-color: #e9ecef !important;
    border-color: #dee2e6 !important;
    transform: none !important;
}

.player-status-admin {
    font-size: 0.8em;
    font-weight: 600;
    padding: 0.25em 0.5em;
    vertical-align: middle;
}
.player-status-admin.status-in-lobby { background-color: var(--bs-secondary); color: var(--bs-light); }
.player-status-admin.status-tickets-requested { background-color: var(--bs-warning); color: var(--bs-dark); }
.player-status-admin.status-in-game { background-color: var(--bs-success); color: var(--bs-light); }

.player-ticket-count-admin {
    font-size: 0.85em;
    color: var(--secondary-text-color);
    margin-left: 0.5em;
}

.admin-last-ball-prominent {
    font-size: 3rem;
    font-weight: 700;
    color: var(--primary-text-color);
    padding: 0.5rem 0;
    line-height: 1.2;
}

.admin-mini-board {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    gap: 3px;
    padding: 5px;
    background-color: #e9ecef;
    border-radius: var(--border-radius);
}

.admin-mini-board .mini-board-cell {
    font-size: 0.75rem;
    font-weight: 500;
    width: 100%;
    aspect-ratio: 1 / 1;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 3px;
    background-color: #fff;
    color: var(--secondary-text-color);
    transition: background-color 0.3s ease, color 0.3s ease;
    border: 1px solid #ced4da;
}

.admin-mini-board .mini-board-cell.called {
    background-color: var(--success-color);
    color: #fff;
    font-weight: 600;
    border-color: var(--success-color);
}

.initial-card-text-group {
    min-height: 60px;
}

#session-lobby-view {
    background-color: var(--lobby-bg-color);
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
}

#session-lobby-view h2 {
    color: var(--initial-view-title-color);
    font-weight: 600;
}

#session-list-container {
    border: none;
}

.session-list-item {
    background-color: transparent !important;
    border: none !important;
    padding: 0 !important;
}

.session-lobby-card {
    background-color: var(--lobby-card-bg);
    border: 1px solid var(--lobby-card-border);
    box-shadow: 0 2px 4px var(--lobby-card-shadow);
    transition: box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out;
    border-radius: var(--border-radius);
}

.session-lobby-card:hover {
    box-shadow: 0 4px 10px var(--lobby-card-hover-shadow);
    border-color: var(--lobby-card-hover-border);
}

.session-lobby-card .card-title {
    color: var(--primary-text-color);
    font-weight: 600;
}
.session-lobby-card .session-code-display {
    font-weight: 700;
    color: var(--primary-accent-color);
}

.session-lobby-card .card-subtitle {
    font-size: 0.9em;
}

.session-lobby-card .session-details {
    color: var(--secondary-text-color);
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
}
.session-lobby-card .session-details i {
    margin-right: 0.3rem;
    opacity: 0.7;
}
.session-lobby-card .session-details strong {
    color: var(--primary-text-color);
    font-weight: 600;
}

.session-status.text-success { color: var(--status-lobby-color) !important; }
.session-status.text-warning { color: var(--status-requesting-tickets-color) !important; }
.session-status.text-info { color: var(--status-game-in-progress-color) !important; }
.session-status.text-secondary { color: var(--status-between-games-color) !important; }

.session-price {
}
.session-price.cash-mode {
    color: var(--cash-mode-text);
    background-color: var(--cash-mode-bg);
    padding: 0.1em 0.4em;
    border-radius: 0.25rem;
    font-weight: 600;
}


.join-session-lobby-btn {
    padding: 0.375rem 0.75rem;
    font-size: 0.9rem;
}
.join-session-lobby-btn .spinner-border-sm {
    width: 0.85rem;
    height: 0.85rem;
    border-width: .15em;
    margin-right: 0.3rem;
}

#lobby-refresh-btn i {
    transition: transform 0.5s ease;
}
#lobby-refresh-btn:active i {
    transform: rotate(360deg);
}

#no-sessions-message {
    border-color: var(--bs-info-border-subtle);
    background-color: var(--bs-info-bg-subtle);
    color: var(--bs-info-text-emphasis);
}
#no-sessions-message h4 {
    color: var(--bs-info-text-emphasis);
}

/* OPERATION CHANGE: Styles for ticket grid inside status-modal */
.ticket-grid-modal {
    display: grid;
    grid-template-columns: repeat(9, 1fr);
    gap: 3px; /* Smaller gap for modal */
    background-color: #e9ecef; /* Lighter background for modal grid */
    padding: 5px;
    border-radius: var(--border-radius);
    margin-bottom: 10px;
}

.ticket-grid-modal .ticket-cell {
    min-height: 30px; /* Smaller min-height */
    font-size: 0.9rem; /* Smaller font size */
    border-radius: 3px;
}

.ticket-grid-modal .ticket-cell.empty {
    background-color: #f8f9fa; /* Lighter empty cells */
    border-color: #e9ecef;
}

.ticket-grid-modal .ticket-cell.called {
    background-color: var(--dabbed-cell-bg); /* Use existing dabbed style */
    color: var(--dabbed-cell-text);
    border-color: var(--dabbed-cell-bg);
}

.ticket-grid-modal .ticket-cell.last-called-highlight {
    border: 2px solid var(--last-called-highlight-border-color); /* Thinner border for modal */
    box-shadow: 0 0 5px var(--last-called-highlight-border-color);
}


@media (max-width: 768px) {
    .session-lobby-card .card-body {
        padding: 1rem;
    }
    .session-lobby-card .session-details {
        font-size: 0.85em;
    }
    .session-lobby-card .card-title {
        font-size: 1.1rem;
    }
}

@media (max-width: 576px) {
    #session-lobby-view .container {
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }
    .session-lobby-card .session-details span {
        flex-basis: 100%;
        margin-right: 0 !important;
    }
    .session-lobby-card .d-flex.justify-content-between {
        flex-direction: column;
        align-items: flex-start !important;
    }
    .session-lobby-card .join-session-lobby-btn {
        margin-top: 0.5rem;
        width: 100%;
    }
}

/* Add this to your style.css, perhaps near .one-tg-number-badge */
.one-tg-number-badge.hit {
    background-color: #98FB98; /* PaleGreen (like login button) */
    color: #212529; /* Dark text for contrast */
    border: 1px solid #78db78; /* Slightly darker green border */
}

/* --- Operation: Balance Display --- */
#player-balance-area {
    /* This element is already a .badge bg-light text-dark fs-6 d-flex align-items-center in the HTML */
    /* We can add minor adjustments if needed, but the base Bootstrap badge styling should apply */
}

#player-balance-value {
    font-weight: bold;
    color: var(--bs-success); /* Bootstrap success green for positive balance indication */
    font-size: 1.1em;     /* Make the balance value slightly more prominent */
    margin-left: 0.25rem; /* Small space after "Balance:" text */
}

#player-manage-funds-btn {
    padding: 0.1rem 0.4rem; /* Make the button very small */
    font-size: 0.8em;     /* Ensure icons inside are also scaled if needed */
    line-height: 1;       /* Adjust line height for a tight fit */
    vertical-align: middle; /* Align button nicely with the balance text */
    margin-left: 0.5rem;   /* Space between balance value and this button */
    /* Optional: Match border/text color to the badge's text for subtlety */
    border-color: #6c757d; /* Assuming badge text is secondary color */
    color: #6c757d;
}
#player-manage-funds-btn:hover { /* Optional hover effect */
    background-color: #6c757d;
    color: white;
}

#player-manage-funds-btn .fa-xs { /* If using Font Awesome extra small icons */
    vertical-align: baseline; /* Adjusts icon alignment within the small button */
}

/* Operation: Relocate Player Stage Prize */
#player-current-stage-display {
    /* Inherits .btn .btn-info .w-100 .mb-3 .text-center from HTML */
    white-space: pre-line; 
    line-height: 1.3; 
    /* font-weight: bold; is already in HTML */
    /* font-size: 0.9em; is already in HTML */
    padding-top: .5rem;
    padding-bottom: .5rem;
    min-height: calc(1.5em + .75rem + 2px + .5rem + .5rem); /* Approximate Bootstrap btn-lg height */
    display: flex; 
    flex-direction: column;
    justify-content: center;
    align-items: center; 
    transition: background-color 0.3s ease-in-out, border-color 0.3s ease-in-out;
}

/* NEW: Styles for observer claim banner */
#player-current-stage-display.alert-warning {
    background-color: var(--warning-color) !important;
    border-color: #ffc107 !important;
    color: #000 !important;
}


/* NEW: Claim Panel Styles */
.claim-display-panel {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90vw;
    max-width: 600px;
    background-color: rgba(44, 62, 80, 0.97); /* Dark, semi-transparent */
    color: #ecf0f1;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
    z-index: 1050; /* Above most content */
    padding: 20px;
    border: 1px solid #4a688a;
    transition: opacity 0.3s ease, transform 0.3s ease;
}

.claim-panel-title {
    text-align: center;
    margin-top: 0;
    margin-bottom: 15px;
    padding-bottom: 10px;
    border-bottom: 1px solid #4a688a;
    font-size: 1.5rem;
    font-weight: 600;
}

.claim-panel-body {
    text-align: center;
    font-size: 1.1rem;
}

.claim-panel-ticket-grid {
    display: grid;
    grid-template-columns: repeat(9, 1fr);
    gap: 5px;
    margin: 15px auto;
    background-color: #34495e;
    padding: 8px;
    border-radius: 4px;
}

.claim-panel-ticket-grid .ticket-cell {
    font-size: 1.2rem;
    aspect-ratio: 1 / 1;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 4px;
    min-height: 45px;
    background-color: #ecf0f1;
    color: #2c3e50;
    font-weight: bold;
}

.claim-panel-ticket-grid .ticket-cell.dabbed {
    background-color: #2ecc71; /* Green */
    color: white;
}
.claim-panel-ticket-grid .ticket-cell.empty {
    background-color: transparent;
    border: none;
}
.claim-panel-ticket-grid .ticket-cell.last-called-highlight {
    border: 3px solid yellow;
    box-shadow: 0 0 8px yellow;
}

#claim-panel-results-list {
    list-style: none;
    padding: 0;
    text-align: left;
    max-height: 40vh;
    overflow-y: auto;
}
#claim-panel-results-list li {
    padding: 8px;
    border-bottom: 1px solid #4a688a;
    background: transparent;
}
#claim-panel-results-list li:last-child {
    border-bottom: none;
}

/* NEW: Styles for the submitted bingo button state */
#bingo-btn.claim-submitted {
    background-color: var(--success-color);
    border-color: var(--success-color);
    pointer-events: none; /* Make it unclickable */
}
#bingo-btn.claim-submitted:hover {
    background-color: var(--success-color); /* Prevent hover effect */
    border-color: var(--success-color);
}
#bingo-btn.claim-submitted i {
    animation: fa-bounce 1s ease-in-out infinite; /* Keep bouncing while submitted */
}

/* OPERATION: BANK - Finance View Styles */
.finance-stat-card .card-body {
    padding: 1.25rem;
}
.finance-stat-card .stat-card-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.finance-stat-card .stat-text .text-xs {
    font-size: .7rem;
    font-weight: 700!important;
    text-transform: uppercase!important;
}
.finance-stat-card .stat-icon {
    opacity: 0.3;
}
.finance-stat-card.border-left-primary { border-left: .25rem solid var(--primary-accent-color)!important; }
.finance-stat-card.border-left-success { border-left: .25rem solid var(--success-color)!important; }
.finance-stat-card.border-left-info { border-left: .25rem solid var(--info-button-color)!important; }
.finance-stat-card.border-left-warning { border-left: .25rem solid var(--warning-color)!important; }


#house-history-list .list-group-item {
    padding-left: 0;
    padding-right: 0;
}

/* --- END OF FILE style.css --- */