/* ============================================
   LineupIQ Base & Layout
   ============================================ */

/* Smooth Theme Transitions */
.lineupiq-container,
.lineupiq-container .slate-tabs-container,
.lineupiq-container .slate-tab,
.lineupiq-container .build-tabs-section,
.lineupiq-container .build-tab,
.lineupiq-container .slate-modal-content,
.lineupiq-container .date-picker-section,
.lineupiq-container .date-nav-btn,
.lineupiq-container .date-display,
.lineupiq-container .date-display-small,
.lineupiq-container .slates-table th,
.lineupiq-container .slates-table td,
.lineupiq-container .build-context-menu,
.lineupiq-container .build-context-menu-item,
.lineupiq-container .empty-state {
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

/* Base Container */
.lineupiq-container {
    background-color: var(--liq-bg-primary);
    color: var(--liq-text-primary);
    min-width: 1200px;
}

#mainContentArea {
    padding: 0;
}

/* Split Panel Workspace */
.build-workspace {
    display: flex;
    height: calc(100vh - 180px);
    overflow: hidden;
}

.workspace-panel {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 400px;
}

.panel-left {
    flex: 1 1 70%;
}

.panel-right {
    flex: 1 1 30%;
}

/* Contest workspace - 50/50 split */
.contest-build-workspace .panel-left {
    flex: 1 1 50%;
}

.contest-build-workspace .panel-right {
    flex: 1 1 50%;
}

.panel-divider {
    width: 8px;
    background: var(--liq-bg-tertiary);
    cursor: col-resize;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s;
    position: relative;
    flex-shrink: 0;
    user-select: none;   /* double-click toggles, never selects */
}

    .panel-divider:hover,
    .panel-divider.dragging {
        background: var(--liq-accent-green);
    }

    .panel-divider::before {
        content: '';
        width: 2px;
        height: 40px;
        background: var(--liq-border-color);
        border-radius: 2px;
    }

    .panel-divider:hover::before,
    .panel-divider.dragging::before {
        background: white;
    }

/* Collapse handle riding the divider */
.panel-collapse-btn {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 22px;
    height: 44px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--liq-bg-secondary);
    border: 1px solid var(--liq-border-color);
    border-radius: 6px;
    color: var(--liq-text-secondary);
    cursor: pointer;
    z-index: 5;
    box-shadow: 0 1px 4px var(--liq-shadow);
    transition: border-color 0.15s ease, color 0.15s ease;
}

    .panel-collapse-btn:hover {
        border-color: var(--liq-accent-green);
        color: var(--liq-accent-green);
    }

    .panel-collapse-btn i {
        font-size: 0.7rem;
        line-height: 1;
    }

/* Collapsed: the lineup pool folds away, the player grid takes the width.
   !important beats the inline flex the resizer/restore writes. */
.build-workspace.right-collapsed .panel-right,
.contest-build-workspace.right-collapsed .panel-right {
    display: none;
}

.build-workspace.right-collapsed .panel-left,
.contest-build-workspace.right-collapsed .panel-left {
    flex: 1 1 auto !important;
}

.build-workspace.right-collapsed .panel-divider,
.contest-build-workspace.right-collapsed .panel-divider {
    cursor: default;
}

    .build-workspace.right-collapsed .panel-divider::before,
    .contest-build-workspace.right-collapsed .panel-divider::before {
        display: none;   /* no grip line when there's nothing to resize */
    }

/* Panel Header */
.panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    background: var(--liq-bg-secondary);
    border-bottom: 1px solid var(--liq-border-color);
    flex-shrink: 0;
    min-height: 48px;
    height: 48px;
}

.panel-header-left,
.panel-header-right {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.panel-title {
    font-weight: 600;
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--liq-text-primary);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

    .panel-title i {
        color: var(--liq-accent-green);
    }

.panel-badge {
    background: transparent;
    border: 1px solid var(--liq-border-color);
    color: var(--liq-text-secondary);
    font-size: 0.75rem;
    padding: 0.2rem 0.5rem;
    border-radius: 10px;
    font-weight: 600;
}

/* Panel Content */
.panel-content {
    flex: 1;
    overflow: hidden;
}

/* Player Grid Header/Subheader */
/* Toolbar bars: single row, ALWAYS. min-height (not fixed height) so
   unusually tall content grows the bar instead of bleeding past its
   edges; at narrow widths controls SHRINK or collapse (position filter
   becomes a dropdown) — never wrap to a second row. */
.player-grid-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 1rem;
    background: var(--liq-bg-secondary);
    border-bottom: 1px solid var(--liq-border-color);
    gap: 0.75rem;
    flex-shrink: 0;
    min-height: 48px;
}

    .player-grid-header.favorites-header {
        background: linear-gradient(135deg, rgba(255, 193, 7, 0.05) 0%, transparent 100%);
        border-bottom: 1px solid rgba(255, 193, 7, 0.2);
    }

.player-grid-subheader {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 1rem;
    background: var(--liq-bg-tertiary);
    border-bottom: 1px solid var(--liq-border-color);
    gap: 0.75rem;
    flex-shrink: 0;
    min-height: 48px;
}

    .player-grid-subheader > .d-flex {
        min-width: 0;   /* allow the search to yield width */
    }

    /* Right-side icon group (refresh / download / import / reset) is fixed
       width — it must never shrink or get overlapped; the left group is the
       one that yields (search shrinks, positions collapse to a dropdown). */
    .player-grid-subheader > .d-flex:last-child {
        flex-shrink: 0;
        min-width: auto;
    }

    .player-grid-subheader .player-search {
        flex-shrink: 1;
        min-width: 120px;
    }

/* Buttons in the workspace bars never wrap their own label — a two-line
   "All Batters" or "Run Sims" is what made the bars look broken */
.panel-header .btn,
.player-grid-header .btn,
.player-grid-subheader .btn,
.lineup-panel-toolbar .btn {
    white-space: nowrap;
}

/* Lineup Panel Toolbar */
.lineup-panel-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 1rem;
    background: var(--liq-bg-tertiary);
    border-bottom: 1px solid var(--liq-border-color);
    gap: 0.75rem;
    flex-shrink: 0;
    min-height: 48px;
}

    .lineup-panel-toolbar-left {
        min-width: 0;
        flex: 1 1 auto;
        overflow: hidden;
    }

    .lineup-panel-toolbar .player-search {
        flex-shrink: 1;
        min-width: 100px;
    }

/* Pool status line — count / showing-of / generated-simulated-when / warnings.
   One quiet line; warnings get colour, everything else stays muted. */
.lineup-status-line {
    font-size: 0.78rem;
    color: var(--liq-text-secondary, #9ca3af);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}
.lineup-status-line .lsl-sep {
    margin: 0 0.45rem;
    opacity: 0.55;
}
.lineup-status-line .lsl-warn {
    color: var(--liq-accent-yellow, #ffc107);
}
.lineup-status-line .lsl-filter {
    color: var(--liq-accent-green, #16a34a);
}
.lineup-status-line:empty {
    display: none;
}

/* State-2 nudge row: simmed pool, no contest targets → point at entries import.
   Sits between the toolbar and the panel content (panel is a flex column). */
.lineup-pool-nudge {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.4rem 1rem;
    font-size: 0.8rem;
    color: var(--liq-text-secondary, #9ca3af);
    background: rgba(16, 185, 129, 0.06);
    border-bottom: 1px solid rgba(16, 185, 129, 0.2);
    flex-shrink: 0;
}
.lineup-pool-nudge > .bi-trophy { color: var(--liq-accent-green, #16a34a); }
.lineup-pool-nudge .lineup-pool-nudge-text { flex: 1 1 auto; min-width: 0; }
.lineup-pool-nudge .lineup-pool-nudge-text strong { color: var(--liq-text-primary, inherit); }
.lineup-pool-nudge .btn-link { text-decoration: none; padding: 0 0.25rem; }

/* Pick-lineups modal: intent segmented control with real contrast in both
   themes (outline-secondary read as disabled on the light modal surface) */
.pick-intent-group .pick-intent-btn {
    color: var(--bs-body-color);
    background: transparent;
    border: 1px solid var(--bs-secondary-color, #6c757d);
    font-weight: 600;
}
.pick-intent-group .pick-intent-btn:hover {
    background: var(--bs-secondary-bg, rgba(108, 117, 125, 0.15));
}
.pick-intent-group .btn-check:checked + .pick-intent-btn {
    color: #fff;
    background: var(--liq-accent-green, #16a34a);
    border-color: var(--liq-accent-green, #16a34a);
}
.pick-intent-group .btn-check:focus-visible + .pick-intent-btn {
    box-shadow: 0 0 0 0.2rem rgba(22, 163, 74, 0.35);
}

/* Lineup-pool overflow (⋯) menu items */
.lineup-pool-more-menu .dropdown-item {
    font-size: 0.85rem;
    display: flex;
    align-items: center;
}
.lineup-pool-more-menu .dropdown-item .btn-text {
    margin-left: 0.5rem;
}

.lineup-panel-toolbar-left,
.lineup-panel-toolbar-right {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Summary Stats */
.lineup-summary-stats {
    display: flex;
    gap: 1rem;
    padding: 0.75rem 1rem;
    background: var(--liq-bg-primary);
    border-bottom: 1px solid var(--liq-border-color);
    flex-shrink: 0;
    overflow-x: auto;
}

.summary-stat {
    display: flex;
    flex-direction: column;
    padding: 0.5rem 1rem;
    background: var(--liq-bg-secondary);
    border-radius: 6px;
    border: 1px solid var(--liq-border-color);
    min-width: 90px;
}

.summary-stat-value {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--liq-text-primary);
}

.summary-stat-label {
    font-size: 0.65rem;
    text-transform: uppercase;
    color: var(--liq-text-secondary);
    letter-spacing: 0.05em;
}
