/**
 * BMW Draft Board — Public Stylesheet
 * Ball My Way, LLC © 2026
 */

/* ── Variables ─────────────────────────────────────────────────────────────── */
:root {
    --bmw-primary:     #1a1a2e;
    --bmw-accent:      #f4a261;
    --bmw-accent2:     #2a9d8f;
    --bmw-text:        #1a1a2e;
    --bmw-text-light:  #6b7280;
    --bmw-border:      #e5e7eb;
    --bmw-bg:          #ffffff;
    --bmw-bg-alt:      #f9fafb;
    --bmw-spread-low:  #10b981;
    --bmw-spread-med:  #f97316; /* Mixed → orange (was amber #f59e0b) */
    --bmw-spread-high: #ca8a04; /* Polarizing → gold (was red #ef4444) */
    --bmw-radius:      6px;
    --bmw-shadow:      0 1px 3px rgba(0,0,0,.08);
}

/* ── Board wrapper ─────────────────────────────────────────────────────────── */
.bmw-draft-board {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: var(--bmw-text);
    max-width: 1200px;
    margin: 0 auto;
}

.bmw-board-header { margin-bottom: 1.5rem; }
.bmw-board-header h2 { font-size: 1.75rem; font-weight: 700; margin: 0 0 .25rem; }
.bmw-board-meta { color: var(--bmw-text-light); font-size: .85rem; }
.bmw-vote-cta {
    color: var(--bmw-text-light);
    font-size: .85rem;
    margin: .25rem 0 0;
}

/* ── Sidebar panels ────────────────────────────────────────────────────────── */
.bmw-board-panels {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}
.bmw-panel {
    background: var(--bmw-bg-alt);
    border: 1px solid var(--bmw-border);
    border-radius: var(--bmw-radius);
    padding: 1rem 1.25rem;
}
.bmw-panel h3 { margin: 0 0 .75rem; font-size: 1rem; font-weight: 600; }
.bmw-panel ul { margin: 0; padding: 0; list-style: none; }
.bmw-panel li {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .35rem 0;
    border-bottom: 1px solid var(--bmw-border);
    font-size: .875rem;
}
.bmw-panel li:last-child { border-bottom: none; }
.bmw-panel.bmw-standalone { margin-bottom: 1.5rem; }

/* ── Filters ───────────────────────────────────────────────────────────────── */
.bmw-board-filters {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: 1rem;
}
.bmw-filter {
    padding: .45rem .75rem;
    border: 1px solid var(--bmw-border);
    border-radius: var(--bmw-radius);
    font-size: .875rem;
    background: var(--bmw-bg);
    cursor: pointer;
}

/* ── Main table ────────────────────────────────────────────────────────────── */
.bmw-table-wrap { overflow-x: auto; }
.bmw-draft-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .875rem;
}
.bmw-draft-table th {
    background: var(--bmw-primary);
    color: #fff;
    padding: .6rem .75rem;
    text-align: left;
    font-weight: 600;
    white-space: nowrap;
}
.bmw-draft-table td {
    padding: .6rem .75rem;
    border-bottom: 1px solid var(--bmw-border);
    vertical-align: middle;
}
.bmw-draft-table tbody tr:hover { background: var(--bmw-bg-alt); }
.bmw-draft-table tbody tr:nth-child(even) { background: #fafafa; }
.bmw-draft-table tbody tr:nth-child(even):hover { background: var(--bmw-bg-alt); }
.bmw-prospect-row.hidden { display: none; }

/* ── Prospect cell ─────────────────────────────────────────────────────────── */
.bmw-col-prospect { min-width: 180px; }
.bmw-prospect-name {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-weight: 600;
    color: var(--bmw-text);
    text-decoration: none;
}
.bmw-prospect-name:hover { color: var(--bmw-accent); }
.bmw-prospect-thumb {
    width: 32px; height: 32px;
    border-radius: 50%;
    object-fit: cover;
}
.bmw-prospect-school {
    display: block;
    font-size: .75rem;
    color: var(--bmw-text-light);
}

/* ── Rank number ───────────────────────────────────────────────────────────── */
.bmw-rank-num {
    font-weight: 700;
    color: var(--bmw-primary);
    min-width: 28px;
    display: inline-block;
    text-align: right;
}
.bmw-no-rank { color: var(--bmw-text-light); }

/* ── BMW Score badge ───────────────────────────────────────────────────────── */
.bmw-score-badge, .bmw-score-sm {
    display: inline-block;
    background: var(--bmw-primary);
    color: #fff;
    font-weight: 700;
    font-size: .8rem;
    padding: .2rem .5rem;
    border-radius: 4px;
}
.bmw-score-sm { font-size: .75rem; }

/* v1.13.0: BMW Score column gets visual primacy - it's the headline metric.
   Larger badge, accent border on the column, slightly elevated weight. */
.bmw-col-primary {
    background: linear-gradient(180deg, rgba(26,26,46,.04) 0%, rgba(26,26,46,0) 100%);
    border-left: 3px solid var(--bmw-accent);
}
.bmw-col-primary .bmw-score-badge {
    font-size: 1rem;
    padding: .35rem .7rem;
    box-shadow: 0 1px 3px rgba(26,26,46,.18);
    letter-spacing: .02em;
}
.bmw-col-primary th,
th.bmw-col-primary {
    color: var(--bmw-accent);
    font-weight: 700;
}

/* v1.16.0: BMW Rank — visually tie it to the BMW brand accent so users read
   it as "BMW's rank" rather than just another source column. */
.bmw-col-bmwrank { text-align: center; white-space: nowrap; }
.bmw-rank-badge {
    display: inline-block;
    min-width: 2.1em;
    padding: .2rem .45rem;
    border-radius: 6px;
    background: var(--bmw-accent, #c8102e);
    color: #fff;
    font-weight: 700;
    letter-spacing: .01em;
}
th.bmw-col-bmwrank { color: var(--bmw-accent); font-weight: 700; }

.bmw-score-hero {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-top: .75rem;
}
.bmw-score-label { font-size: .8rem; color: var(--bmw-text-light); }
.bmw-score-value { font-size: 2rem; font-weight: 800; color: var(--bmw-primary); }

/* ── Spread badges ─────────────────────────────────────────────────────────── */
.bmw-spread-badge {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .75rem;
    font-weight: 600;
    padding: .15rem .5rem;
    border-radius: 999px;
}
.bmw-spread-low  { background: #d1fae5; color: #065f46; }
.bmw-spread-medium { background: #ffedd5; color: #9a3412; } /* Mixed → orange */
.bmw-spread-high { background: #fef3c7; color: #854d0e; } /* Polarizing → gold */

/* ── Tier badges ───────────────────────────────────────────────────────────── */
.bmw-tier-badge {
    display: inline-block;
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    padding: .15rem .5rem;
    border-radius: 4px;
}
.bmw-tier-franchise { background: #fef3c7; color: #78350f; }
.bmw-tier-starter   { background: #dbeafe; color: #1e3a8a; }
.bmw-tier-rotation  { background: #f3f4f6; color: #374151; }
.bmw-tier-project   { background: #f3f4f6; color: #6b7280; }
.bmw-tier-undrafted { background: #fee2e2; color: #991b1b; }

/* ── Position badge ────────────────────────────────────────────────────────── */
.bmw-pos-badge {
    font-size: .7rem;
    font-weight: 700;
    color: var(--bmw-text-light);
    text-transform: uppercase;
}

/* ── Attribution ───────────────────────────────────────────────────────────── */
.bmw-attribution {
    font-size: .75rem;
    color: var(--bmw-text-light);
    margin-top: 1.5rem;
    text-align: center;
}
.bmw-attribution a { color: var(--bmw-text-light); }

/* ── Profile page ──────────────────────────────────────────────────────────── */
.bmw-draft-profile { max-width: 900px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
.bmw-breadcrumb { font-size: .85rem; color: var(--bmw-text-light); margin-bottom: 1.5rem; }
.bmw-breadcrumb a { color: var(--bmw-text-light); }
.bmw-profile-hero { display: flex; align-items: flex-start; gap: 1.5rem; margin-bottom: 2rem; }
.bmw-profile-photo { width: 100px; height: 100px; border-radius: 50%; object-fit: cover; border: 3px solid var(--bmw-border); }
.bmw-profile-identity h1 { margin: 0 0 .5rem; font-size: 2rem; }
.bmw-profile-meta { display: flex; gap: 1rem; flex-wrap: wrap; color: var(--bmw-text-light); font-size: .9rem; }
.bmw-profile-section { margin-bottom: 2rem; }
.bmw-profile-section h2 { font-size: 1.2rem; border-bottom: 2px solid var(--bmw-border); padding-bottom: .5rem; margin-bottom: 1rem; }
.bmw-rankings-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: .75rem; }
.bmw-ranking-card { background: var(--bmw-bg-alt); border: 1px solid var(--bmw-border); border-radius: var(--bmw-radius); padding: .75rem; text-align: center; }
.bmw-ranking-source { display: block; font-size: .75rem; color: var(--bmw-text-light); margin-bottom: .25rem; }
.bmw-ranking-source a { color: var(--bmw-text-light); }
.bmw-ranking-position { display: block; font-size: 1.5rem; font-weight: 800; color: var(--bmw-primary); }
.bmw-ranking-date { display: block; font-size: .7rem; color: var(--bmw-text-light); }
.bmw-profile-spread { background: var(--bmw-bg-alt); border-left: 3px solid var(--bmw-accent); padding: .75rem 1rem; margin-top: 1rem; border-radius: 0 var(--bmw-radius) var(--bmw-radius) 0; font-size: .9rem; }

/* ── Recent Movement block (v1.10.0) ──────────────────────────────────────── */
.bmw-movement-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: .5rem;
}
.bmw-movement-card {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    padding: .6rem .75rem;
    border-radius: var(--bmw-radius);
    border: 1px solid var(--bmw-border);
    background: var(--bmw-bg-alt);
}
.bmw-movement-source {
    font-size: .7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bmw-text-light);
}
.bmw-movement-rank {
    font-size: .95rem;
    font-weight: 600;
    color: var(--bmw-text);
    font-variant-numeric: tabular-nums;
}
.bmw-movement-delta {
    font-size: .85rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.bmw-movement-up   { border-left: 3px solid #059669; }
.bmw-movement-up   .bmw-movement-delta { color: #059669; }
.bmw-movement-down { border-left: 3px solid #dc2626; }
.bmw-movement-down .bmw-movement-delta { color: #dc2626; }
.bmw-movement-note {
    font-size: .75rem;
    color: var(--bmw-text-light);
    margin: .5rem 0 0;
}

/* ── Season Stats block (v1.13.0) ─────────────────────────────────────────── */
.bmw-stats-season,
.bmw-stats-games {
    font-size: .75rem;
    font-weight: 500;
    color: var(--bmw-text-light);
    margin-left: .5rem;
    text-transform: none;
}
.bmw-stats-block {
    margin-bottom: 1rem;
}
.bmw-stats-subhead {
    font-size: .75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--bmw-text-light);
    margin: 0 0 .5rem;
}
.bmw-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(64px, 1fr));
    gap: .5rem;
}
.bmw-stat-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: .65rem .35rem;
    background: var(--bmw-bg-alt);
    border-radius: var(--bmw-radius);
    border: 1px solid var(--bmw-border);
}
.bmw-stat-label {
    font-size: .65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bmw-text-light);
    margin-bottom: .2rem;
}
.bmw-combine-value { color: #fff; font-weight: 800; }
.bmw-stat-value {
    font-size: 1.15rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--bmw-text);
}
.bmw-stats-source {
    font-size: .7rem;
    color: var(--bmw-text-light);
    font-style: italic;
    margin: .5rem 0 0;
}

.bmw-profile-notes { line-height: 1.7; }
.bmw-profile-back { margin-top: 2rem; }

/* ── Empty state ───────────────────────────────────────────────────────────── */
.bmw-empty { text-align: center; padding: 2rem; color: var(--bmw-text-light); }

/* ── Responsive: tablet ───────────────────────────────────────────────────── */
@media (max-width: 960px) {
    .bmw-board-panels { grid-template-columns: 1fr; }
    .bmw-board-filters { flex-wrap: wrap; }
}

/* ── Responsive: mobile (≤640px) — table-to-card transform ───────────────── */
/* v1.13.0: Full card mode for narrow viewports. The HTML stays a <table> for
   semantic/SEO reasons, but each row renders as a card. data-label attributes
   on each <td> surface as inline "label: value" pairs. BMW Score gets visual
   primacy at the top of every card. */
@media (max-width: 640px) {
    .bmw-profile-hero { flex-direction: column; }

    /* Filters stack vertically */
    .bmw-board-filters {
        flex-direction: column;
        gap: .5rem;
    }
    .bmw-board-filters .bmw-filter {
        width: 100%;
    }

    /* Hide the table header — labels come from data-label per cell */
    .bmw-draft-table thead { display: none; }

    /* Each row becomes a card */
    .bmw-draft-table,
    .bmw-draft-table tbody,
    .bmw-draft-table tr,
    .bmw-draft-table td {
        display: block;
        width: 100%;
        box-sizing: border-box;
    }
    /* v1.24.1: the display:block above overrides the [hidden] attribute's
       UA display:none, which left the collapsible combine/stats detail row
       (and any JS-hidden prospect row) stuck visually open on mobile. Restore
       the hide. !important is warranted: it must beat the element/class
       display:block rules directly above. */
    .bmw-draft-table tr[hidden],
    .bmw-draft-table td[hidden] {
        display: none !important;
    }
    .bmw-draft-table tbody tr.bmw-prospect-row {
        margin-bottom: 1rem;
        padding: .75rem;
        border: 1px solid var(--bmw-border);
        border-radius: var(--bmw-radius);
        background: #fff;
    }
    .bmw-draft-table tbody tr:nth-child(even) { background: #fff; }

    /* Each cell becomes a row in the card with inline label */
    .bmw-draft-table td {
        padding: .35rem 0;
        border: none;
        position: relative;
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: .5rem;
        font-size: .9rem;
    }
    .bmw-draft-table td::before {
        content: attr(data-label);
        font-weight: 600;
        font-size: .7rem;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--bmw-text-light);
        flex: 0 0 auto;
    }

    /* Combine detail row on mobile: don't flex like a normal cell; let the
       panel fill the card width and sit directly under its prospect row. */
    .bmw-draft-table tbody tr.bmw-combine-row {
        margin-top: -1rem;       /* pull up against the prospect card above */
        margin-bottom: 1rem;
        border: 1px solid var(--bmw-border);
        border-top: none;
        border-radius: 0 0 var(--bmw-radius) var(--bmw-radius);
        background: var(--bmw-panel-bg, #f9fafb);
    }
    .bmw-draft-table tbody tr.bmw-combine-row td.bmw-combine-cell {
        display: block;
        padding: 0;
    }
    .bmw-draft-table tbody tr.bmw-combine-row td.bmw-combine-cell::before {
        content: none; /* no data-label pseudo */
    }
    .bmw-combine-metric { min-width: 80px; }

    /* v1.23.0: on mobile, lay the season-stat chips out as a clean 2-column
       grid (per-game has 5, advanced has 5) so they read as tidy columns
       rather than a ragged wrapped ribbon. Combine keeps its flex flow. */
    .bmw-stats-metrics {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: .4rem;
    }
    .bmw-stats-metrics .bmw-combine-metric {
        min-width: 0;
        flex: none;
    }

    /* Prospect cell: name+school stack at top, no label */
    .bmw-draft-table td.bmw-col-prospect {
        display: block;
        padding-bottom: .5rem;
        border-bottom: 1px solid var(--bmw-border);
        margin-bottom: .5rem;
    }
    .bmw-draft-table td.bmw-col-prospect::before { display: none; }
    .bmw-draft-table td.bmw-col-prospect .bmw-prospect-name {
        font-size: 1.05rem;
        font-weight: 700;
        display: block;
    }
    .bmw-draft-table td.bmw-col-prospect .bmw-prospect-school {
        display: block;
        font-size: .8rem;
        color: var(--bmw-text-light);
        margin-top: 2px;
    }

    /* BMW Score gets primacy on mobile - large, accent-bordered */
    .bmw-draft-table td.bmw-col-primary {
        background: var(--bmw-bg-alt);
        border-left: 3px solid var(--bmw-accent);
        padding: .5rem .65rem;
        margin: 0 -.75rem .5rem;
        border-radius: 0;
    }
    .bmw-draft-table td.bmw-col-primary::before {
        font-size: .75rem;
        color: var(--bmw-accent);
    }
    .bmw-draft-table td.bmw-col-primary .bmw-score-badge {
        font-size: 1.1rem;
        padding: .25rem .6rem;
    }

    /* Source rank cells: collapse to compact horizontal chips instead of 7
       full-width rows per prospect. v1.13.0 stacked them, which meant a 60-
       prospect board was ~720 source-rank rows on a phone — too much
       scrolling. Inline-flex with auto width lets them wrap naturally. */
    .bmw-draft-table td.bmw-col-source {
        display: inline-flex;
        width: auto;
        align-items: baseline;
        gap: .25rem;
        padding: .2rem .5rem;
        margin: 2px 4px 2px 0;
        background: var(--bmw-bg-alt);
        border-radius: 4px;
        font-size: .8rem;
    }
    .bmw-draft-table td.bmw-col-source::before {
        font-size: .65rem;
        margin: 0;
    }

    /* Voting buttons: bump to 44x44 to meet iOS Human Interface minimum.
       v1.13 set 36 which the fat-thumb test failed on a couple of testers. */
    .bmw-vote-btn { min-height: 44px; min-width: 64px; }
    .bmw-vote-cell { display: flex; justify-content: flex-end; }
    .bmw-vote-cell::before { display: none; }

    /* Hide source thumbnails on mobile to save space */
    .bmw-prospect-thumb {
        width: 32px;
        height: 32px;
    }

    /* Header / share */
    .bmw-board-header-row { flex-direction: column; align-items: stretch; }
    .bmw-board-header-row h2 { font-size: 1.4rem; }
    .bmw-share-btn { align-self: flex-end; }
}

/* Touch-friendly tap targets always (not just mobile).
   v1.36.0: raised 36px -> 44px. This rule comes AFTER the 640px block in the
   cascade with equal specificity, so on touch devices in the 641-960px band
   (iPads, landscape phablets) it was the WINNING min-height — undercutting
   the 44px iOS Human Interface minimum the mobile block had set. Phones
   <=640px are unaffected (the later v1.29.0 block sets 52px there). */
@media (hover: none) {
    .bmw-vote-btn { min-height: 44px; }
}

/* ── Voting system ─────────────────────────────────────────────────────────── */

.bmw-vote-widget {
    display: flex;
    flex-direction: row;          /* v1.14.5: horizontal layout. Was column. */
    flex-wrap: nowrap;            /* keep on one line even at smallest viewport */
    align-items: center;
    justify-content: flex-end;    /* right-align within the Fan Vote cell */
    gap: 4px;
}

.bmw-vote-btn {
    display: flex;
    align-items: center;
    gap: 3px;
    background: none;
    border: 1px solid var(--bmw-border);
    border-radius: 4px;
    padding: 3px 5px;             /* v1.14.5: tighter padding for 4-button row */
    font-size: .75rem;
    font-weight: 600;
    cursor: pointer;
    transition: all .15s ease;
    white-space: nowrap;
    min-width: 0;                 /* v1.14.5: was 46px; let count drive width */
    justify-content: center;
}

/* Boost (up) — green */
.bmw-vote-up,
.bmw-vote-boost {
    color: #059669;
    border-color: #d1fae5;
}
.bmw-vote-up:hover:not(:disabled),
.bmw-vote-boost:hover:not(:disabled) {
    background: #d1fae5;
    border-color: #059669;
}
.bmw-vote-up.active,
.bmw-vote-boost.active {
    background: #059669;
    border-color: #059669;
    color: #fff;
}

/* Fire (v1.14.0) — orange/amber */
.bmw-vote-fire {
    color: #ea580c;
    border-color: #fed7aa;
}
.bmw-vote-fire:hover:not(:disabled) {
    background: #ffedd5;
    border-color: #ea580c;
}
.bmw-vote-fire.active {
    background: #ea580c;
    border-color: #ea580c;
    color: #fff;
}

/* Cool (down) — blue (v1.14.0: was red; blue better matches the freezing-face glyph) */
.bmw-vote-down,
.bmw-vote-cool {
    color: #0284c7;
    border-color: #dbeafe;
}
.bmw-vote-down:hover:not(:disabled),
.bmw-vote-cool:hover:not(:disabled) {
    background: #dbeafe;
    border-color: #0284c7;
}
.bmw-vote-down.active,
.bmw-vote-cool.active {
    background: #0284c7;
    border-color: #0284c7;
    color: #fff;
}

/* Lockdown (v1.14.5) — slate/charcoal. Distinct from the other three;
   evokes "locked-down defense" without coloring as positive or negative.
   Stored internally as vote_type='lockdown'; user-facing is just 🔒. */
.bmw-vote-lockdown {
    color: #475569;
    border-color: #cbd5e1;
}
.bmw-vote-lockdown:hover:not(:disabled) {
    background: #e2e8f0;
    border-color: #475569;
}
.bmw-vote-lockdown.active {
    background: #475569;
    border-color: #475569;
    color: #fff;
}

.bmw-vote-btn:disabled {
    opacity: .55;
    cursor: not-allowed;
}

.bmw-vote-btn.bmw-voting .bmw-vote-emoji {
    animation: bmw-spin .6s linear infinite;
    display: inline-block;
}

.bmw-vote-emoji {
    font-size: 1rem;
    line-height: 1;
    margin-right: 1px;
}

@keyframes bmw-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

.bmw-vote-count {
    font-variant-numeric: tabular-nums;
    min-width: 14px;
    text-align: center;
}

.bmw-vote-loading {
    color: var(--bmw-text-light);
    font-size: .75rem;
    text-align: center;
    padding: 4px;
}

.bmw-vote-error {
    position: absolute;
    background: #dc2626;
    color: #fff;
    font-size: .75rem;
    padding: 4px 8px;
    border-radius: 4px;
    white-space: nowrap;
    z-index: 10;
    margin-top: 4px;
}

.bmw-col-vote {
    width: 70px;
    text-align: center;
}

/* ── Register nudge banner ─────────────────────────────────────────────────── */
.bmw-register-nudge {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    background: #fef3c7;
    border: 1px solid #f59e0b;
    border-radius: var(--bmw-radius);
    padding: .6rem 1rem;
    font-size: .875rem;
    margin-bottom: 1rem;
}
.bmw-register-nudge a {
    font-weight: 600;
    color: #92400e;
}
.bmw-nudge-close {
    background: none;
    border: none;
    font-size: 1.2rem;
    cursor: pointer;
    color: #92400e;
    line-height: 1;
    padding: 0 4px;
    flex-shrink: 0;
}

/* ── Registration modal ────────────────────────────────────────────────────── */
.bmw-modal-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.55);
    z-index: 9999;
    align-items: center;
    justify-content: center;
}
.bmw-modal-overlay.active {
    display: flex;
}
.bmw-modal {
    background: #fff;
    border-radius: 12px;
    padding: 2rem;
    max-width: 400px;
    width: calc(100% - 2rem);
    text-align: center;
    position: relative;
    box-shadow: 0 20px 60px rgba(0,0,0,.2);
}
.bmw-modal-close {
    position: absolute;
    top: .75rem;
    right: .75rem;
    background: none;
    border: none;
    font-size: 1.5rem;
    cursor: pointer;
    color: var(--bmw-text-light);
    line-height: 1;
}
.bmw-modal-icon { font-size: 2.5rem; margin-bottom: .5rem; }
.bmw-modal h2   { font-size: 1.3rem; margin: 0 0 .75rem; }
.bmw-modal p    { color: var(--bmw-text-light); font-size: .9rem; margin: 0 0 1.25rem; line-height: 1.6; }
.bmw-modal-primary-btn {
    display: block;
    background: var(--bmw-primary);
    color: #fff;
    text-decoration: none;
    padding: .75rem 1.5rem;
    border-radius: 6px;
    font-weight: 700;
    font-size: 1rem;
    margin-bottom: .75rem;
    transition: opacity .15s;
}
.bmw-modal-primary-btn:hover { opacity: .88; color: #fff; }
.bmw-modal-secondary-btn {
    background: none;
    border: none;
    color: var(--bmw-text-light);
    font-size: .875rem;
    cursor: pointer;
    text-decoration: underline;
    padding: 0;
}
.bmw-modal-fine-print {
    font-size: .75rem;
    color: var(--bmw-text-light);
    margin: .75rem 0 0;
}

/* ── Sentiment display (public profile) ────────────────────────────────────── */
.bmw-sentiment-display { margin-top: .5rem; }
.bmw-sentiment-bar-public-wrap {
    width: 100%;
    max-width: 300px;
    height: 10px;
    background: #e5e7eb;
    border-radius: 5px;
    margin: .75rem 0 .5rem;
    overflow: hidden;
}
.bmw-sentiment-bar-public {
    height: 100%;
    background: linear-gradient(90deg, #ef4444 0%, #f59e0b 40%, #10b981 100%);
    border-radius: 5px;
}
.bmw-sentiment-context {
    font-size: .875rem;
    color: var(--bmw-text-light);
    font-style: italic;
    margin: .25rem 0 0;
}

/* ── Sentiment staleness chip (v1.11.0) ───────────────────────────────────── */
.bmw-staleness {
    display: inline-block;
    font-size: .7rem;
    font-weight: 600;
    padding: .15rem .5rem;
    border-radius: 999px;
    margin-left: .35rem;
    vertical-align: middle;
    font-variant-numeric: tabular-nums;
}
.bmw-staleness-fresh     { background: #f3f4f6; color: #6b7280; }
.bmw-staleness-stale     { background: #fef3c7; color: #92400e; }
.bmw-staleness-cold      { background: #fee2e2; color: #991b1b; }
.bmw-staleness-untracked { background: #f3f4f6; color: #9ca3af; font-style: italic; }

/* ── Share button + modal ──────────────────────────────────────────────────── */
.bmw-board-header-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.bmw-board-header-row h2 { margin: 0; }

.bmw-share-btn {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: var(--bmw-primary);
    color: #fff;
    border: none;
    border-radius: var(--bmw-radius);
    padding: .45rem .9rem;
    font-size: .85rem;
    font-weight: 600;
    cursor: pointer;
    transition: opacity .15s;
    flex-shrink: 0;
}
.bmw-share-btn:hover { opacity: .85; }

/* Share modal overrides */
.bmw-share-modal-inner { text-align: left; max-width: 440px; }
.bmw-share-modal-inner h2 { font-size: 1.15rem; margin: 0 0 1rem; }

.bmw-share-options { display: flex; flex-direction: column; gap: 1rem; }

.bmw-share-copy-row {
    display: flex;
    gap: .5rem;
    align-items: center;
}
.bmw-share-url-input {
    flex: 1;
    padding: .5rem .75rem;
    border: 1px solid var(--bmw-border);
    border-radius: var(--bmw-radius);
    font-size: .85rem;
    color: var(--bmw-text-light);
    background: var(--bmw-bg-alt);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bmw-share-copy-btn {
    background: var(--bmw-accent2);
    color: #fff;
    border: none;
    border-radius: var(--bmw-radius);
    padding: .5rem 1rem;
    font-size: .85rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: opacity .15s;
}
.bmw-share-copy-btn:hover { opacity: .85; }

.bmw-share-divider {
    display: flex;
    align-items: center;
    gap: .75rem;
    color: var(--bmw-text-light);
    font-size: .8rem;
}
.bmw-share-divider::before,
.bmw-share-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--bmw-border);
}

.bmw-share-icons {
    display: flex;
    gap: .75rem;
}
.bmw-share-icon-btn {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .5rem 1rem;
    border-radius: var(--bmw-radius);
    font-size: .875rem;
    font-weight: 600;
    text-decoration: none;
    border: 1px solid var(--bmw-border);
    transition: background .15s, border-color .15s;
    color: var(--bmw-text);
}
.bmw-share-email:hover { background: #fef3c7; border-color: #f59e0b; }
.bmw-share-x          { color: #fff; background: #000; border-color: #000; }
.bmw-share-x:hover    { background: #333; color: #fff; }

.bmw-share-copied-msg {
    color: var(--bmw-accent2);
    font-weight: 600;
    font-size: .875rem;
    margin: .5rem 0 0;
}
.bmw-share-profile-btn {
    margin-left: .75rem;
    background: transparent;
    color: var(--bmw-primary);
    border: 1px solid var(--bmw-primary);
}
.bmw-share-profile-btn:hover { background: var(--bmw-primary); color: #fff; }

/* ── v1.14.0 Trending panel ────────────────────────────────────────────────── */
/* Sits inside .bmw-board-panels alongside Disagreements + Slam-Dunk panels.
   The grid auto-fit (minmax 220px) already handles wrapping to a new row when
   three panels don't fit horizontally, so no separate breakpoint needed. */
.bmw-panel-trending {
    background: var(--bmw-bg-alt);
    border: 1px solid var(--bmw-border);
    border-radius: var(--bmw-radius);
    padding: 1rem 1.25rem;
}
.bmw-panel-trending h3 {
    margin: 0 0 .75rem;
    font-size: 1rem;
    font-weight: 600;
}
.bmw-trending-section {
    margin-bottom: .75rem;
}
.bmw-trending-section:last-child {
    margin-bottom: 0;
}
.bmw-trending-section h4 {
    margin: .5rem 0 .35rem;
    font-size: .8rem;
    font-weight: 600;
    color: var(--bmw-text-light);
    text-transform: uppercase;
    letter-spacing: .03em;
}
.bmw-trending-list {
    margin: 0;
    padding-left: 1.4rem;
    list-style: decimal;
}
.bmw-trending-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding: .25rem 0;
    font-size: .85rem;
    border-bottom: 1px solid var(--bmw-border);
}
.bmw-trending-list li:last-child {
    border-bottom: none;
}
.bmw-trending-list a {
    color: var(--bmw-text);
    text-decoration: none;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bmw-trending-list a:hover {
    text-decoration: underline;
}
.bmw-trending-count {
    color: var(--bmw-text-light);
    font-size: .8rem;
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
}

/* ── v1.14.0 Bottom share button ──────────────────────────────────────────── */
/* Sits between the table and the attribution footer. Centered so it reads as
   a deliberate CTA rather than another control. */
.bmw-share-bottom {
    display: flex;
    justify-content: center;
    margin: 1.5rem 0 1rem;
}
.bmw-share-btn-bottom {
    padding: .6rem 1.25rem;
    font-size: .9rem;
}

/* ── Also Receiving Votes section (v1.19.0) ─────────────────────────────── */
.bmw-receiving-votes {
    margin-top: 1.5rem;
    border-top: 2px solid var(--bmw-border, #e5e7eb);
    padding-top: 1rem;
}
.bmw-rv-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    background: var(--bmw-panel-bg, #f9fafb);
    border: 1px solid var(--bmw-border, #e5e7eb);
    border-radius: 8px;
    padding: .75rem 1rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--bmw-text, #1a1a2e);
    cursor: pointer;
    transition: background .15s ease;
}
.bmw-rv-toggle:hover { background: var(--bmw-border, #eef0f3); }
.bmw-rv-toggle-label { display: inline-flex; align-items: center; gap: .5rem; }
.bmw-rv-count {
    display: inline-block;
    min-width: 1.6em;
    padding: .05rem .45rem;
    border-radius: 999px;
    background: var(--bmw-accent, #c8102e);
    color: #fff;
    font-size: .8rem;
    text-align: center;
}
.bmw-rv-caret { transition: transform .18s ease; font-size: .9rem; }
.bmw-rv-toggle[aria-expanded="true"] .bmw-rv-caret { transform: rotate(90deg); }
.bmw-rv-note {
    margin: .5rem .25rem 0;
    font-size: .8rem;
    color: var(--bmw-muted, #6b7280);
    font-style: italic;
}
.bmw-rv-body { margin-top: .75rem; }
.bmw-rv-table th, .bmw-rv-table td { opacity: .92; }
.bmw-rv-row .bmw-prospect-name { font-weight: 600; }

/* ── Combine expand/collapse (v1.20.0) ──────────────────────────────────── */
.bmw-combine-toggle {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    margin-top: .25rem;
    padding: .12rem .5rem;
    font-size: .72rem;
    font-weight: 600;
    line-height: 1.4;
    color: var(--bmw-accent, #c8102e);
    background: transparent;
    border: 1px solid var(--bmw-border, #e5e7eb);
    border-radius: 999px;
    cursor: pointer;
    transition: background .15s ease, border-color .15s ease;
}
.bmw-combine-toggle:hover {
    background: var(--bmw-panel-bg, #f9fafb);
    border-color: var(--bmw-accent, #c8102e);
}
.bmw-combine-caret { transition: transform .18s ease; font-size: .65rem; }
.bmw-combine-toggle[aria-expanded="true"] .bmw-combine-caret { transform: rotate(90deg); }

.bmw-combine-row > .bmw-combine-cell {
    padding: 0;
    background: var(--bmw-panel-bg, #f9fafb);
    border-bottom: 1px solid var(--bmw-border, #e5e7eb);
}
.bmw-combine-panel { padding: .85rem 1rem; }
.bmw-combine-heading {
    display: block;
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bmw-muted, #6b7280);
    margin-bottom: .55rem;
}
.bmw-combine-metrics {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}
.bmw-combine-metric {
    flex: 1 1 auto;
    min-width: 92px;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: .45rem .6rem;
    background: #fff;
    border: 1px solid var(--bmw-border, #e5e7eb);
    border-radius: 8px;
}
.bmw-combine-label {
    font-size: .65rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bmw-muted, #6b7280);
}
.bmw-combine-value {
    font-size: .95rem;
    font-weight: 700;
    color: var(--bmw-text, #1a1a2e);
    margin-top: .15rem;
}

/* v1.23.0: Season Stats in the same expandable row as Combine.
   Reuses the combine metric chip styling; adds group subheads and a
   divider so the two panels read as distinct sections when both show.
   v1.24.0: divider generalized so the relocated BMW Evaluation panel
   (always first) is separated from any Stats/Combine panels below it. */
.bmw-combine-panel + .bmw-combine-panel {
    border-top: 1px solid var(--bmw-border, #e5e7eb);
}
.bmw-stat-group { margin-bottom: .6rem; }
.bmw-stat-group:last-child { margin-bottom: 0; }
.bmw-stat-subhead {
    display: block;
    font-size: .62rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bmw-muted, #6b7280);
    margin-bottom: .35rem;
    opacity: .85;
}
.bmw-stats-season,
.bmw-stats-games {
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    color: var(--bmw-muted, #6b7280);
}
.bmw-stats-games { margin-left: .4rem; }

/* ════════════════════════════════════════════════════════════════════════════
   v1.27.0 — Dark theme + typography pass (mobile-optimized)
   Appended deliberately at the end so it overrides the token defaults and the
   handful of hardcoded light backgrounds above without editing the original
   rules. The board is retokenized (not rule-by-rule) so dark mode stays DRY.
   ──────────────────────────────────────────────────────────────────────────── */

/* (1)(2)(3) Dark palette — anchored to the existing brand navy (--bmw-primary
   #1a1a2e) so the board reads as part of the site theme, not a bolt-on. */
.bmw-draft-board,
.bmw-draft-profile {
    --bmw-text:        #f1f3f8;  /* primary text — near-white on navy        */
    --bmw-text-light:  #9aa3b8;  /* secondary text — readable, not muddy     */
    --bmw-border:      #2c3350;  /* hairlines on the dark bg                  */
    --bmw-bg:          #14182b;  /* board surface                            */
    --bmw-bg-alt:      #1d2236;  /* panels / alt rows / cards                */
    --bmw-row-even:    #191e30;  /* zebra stripe                             */
    --bmw-card:        #1d2236;  /* mobile prospect card                     */
    --bmw-shadow:      0 1px 3px rgba(0,0,0,.45);
    background: var(--bmw-bg);
}

/* Surface + base text */
.bmw-draft-board { color: var(--bmw-text); }
.bmw-draft-table { color: var(--bmw-text); }
.bmw-draft-table td { border-color: var(--bmw-border); }
.bmw-draft-table tbody tr:nth-child(even)        { background: var(--bmw-row-even); }
.bmw-draft-table tbody tr:nth-child(even):hover  { background: var(--bmw-bg-alt); }
.bmw-draft-table tbody tr:hover                  { background: var(--bmw-bg-alt); }
.bmw-panel { background: var(--bmw-bg-alt); border-color: var(--bmw-border); }
.bmw-panel li { border-color: var(--bmw-border); }

/* Header sits on the dark surface */
.bmw-board-header h2 { color: var(--bmw-text); }

/* (2) Board body text — larger + a touch bolder for legibility, but kept
   clearly below the prospect-name size so hierarchy is obvious. */
.bmw-draft-table { font-size: .95rem; }          /* was .875rem */
.bmw-draft-table td { font-weight: 500; }
.bmw-draft-table th {
    font-size: .8rem;                            /* was .875rem, but UPPERCASE */
    font-weight: 700;                            /* was 600 */
    color: var(--bmw-text-light);
}
/* Source rank cells (#3, #11 …) — slightly bolder so the seven columns read
   cleanly against the dark bg. */
.bmw-col-source { font-weight: 600; color: var(--bmw-text); }

/* (1) Prospect names — the loudest thing on the board. */
.bmw-prospect-name {
    font-size: 1.15rem;                          /* was inherited .875rem */
    font-weight: 800;                            /* was 600 */
    letter-spacing: -.01em;
    color: var(--bmw-text);
}
.bmw-prospect-name:hover { color: var(--bmw-accent); }
/* School/meta under the name stays quiet so the name dominates. */
.bmw-prospect-school { font-size: .8rem; color: var(--bmw-text-light); }

/* BMW Rank badge keeps its accent fill; ensure contrast on dark. */
.bmw-rank-badge { color: #14182b; }              /* dark text on accent chip */

/* (4) Stats + Combine — dark, but engineered to POP for the eye. The cards get
   a brighter inset surface, an accent top edge, and high-contrast values. */
.bmw-stats-block,
.bmw-stats-grid { color: var(--bmw-text); }
.bmw-stats-subhead {
    color: var(--bmw-accent);                    /* section labels in brand orange */
    font-size: .8rem;
}
.bmw-stat-card {
    background: linear-gradient(180deg, #232a44 0%, #1b2034 100%);
    border: 1px solid #343c5e;
    border-top: 2px solid var(--bmw-accent2);    /* teal top edge draws the eye */
    box-shadow: var(--bmw-shadow);
}
.bmw-stat-label { color: var(--bmw-text-light); font-size: .68rem; }
.bmw-combine-value { color: #fff; font-weight: 800; }
.bmw-stat-value {
    color: #ffffff;                              /* max contrast for the number */
    font-size: 1.3rem;                           /* was 1.15rem */
    font-weight: 800;
    text-shadow: 0 0 12px rgba(42,157,143,.18);  /* subtle glow, not gaudy */
}
.bmw-stats-season,
.bmw-stats-games,
.bmw-stats-source { color: var(--bmw-text-light); }

/* Neutralize hardcoded light backgrounds from the mobile card transform so
   the cards are dark instead of white. */
@media (max-width: 640px) {
    .bmw-draft-table tbody tr.bmw-prospect-row {
        background: var(--bmw-card);
        border-color: var(--bmw-border);
    }
    .bmw-draft-table tbody tr:nth-child(even) { background: var(--bmw-card); }

    /* Mobile: names stay the clear focal point; bump once more for thumbs. */
    .bmw-prospect-name { font-size: 1.2rem; }
    /* Inline "label: value" pairs in card mode — label muted, value bright. */
    .bmw-draft-table td::before { color: var(--bmw-text-light); font-weight: 600; }
    .bmw-draft-table td { color: var(--bmw-text); }

    /* Stat cards a hair larger on mobile so values are tap-glanceable. */
    .bmw-stat-value { font-size: 1.35rem; }
    .bmw-stats-grid { grid-template-columns: repeat(auto-fit, minmax(72px, 1fr)); }
}

/* ════════════════════════════════════════════════════════════════════════════
   v1.28.0 — Dark-theme contrast fixes + feature polish
   Fixes from mobile screenshots:
   • Expanded detail panel (BMW Eval / Stats / Combine) was white-on-dark with
     invisible values — those rules use a SEPARATE token set (--bmw-panel-bg,
     --bmw-muted, --bmw-text, hardcoded #fff/#f9fafb/#1a1a2e) that the v1.27.0
     theme never redefined, so they fell back to light. Define them here.
   • Profile BMW Score (72.5) and source ranks used var(--bmw-primary) (#1a1a2e
     navy) on the dark bg — navy-on-navy. Re-point to a light value color.
   • Larger/bolder "BMW · Stats · Combine" toggle so it pops as a feature.
   • Desktop side gutters → navy/black instead of theme gray.
   ──────────────────────────────────────────────────────────────────────────── */

/* Define the alternate token names the detail-panel rules consume, plus the
   primary, so EVERYTHING in the board + profile resolves to the dark scheme. */
.bmw-draft-board,
.bmw-draft-profile {
    --bmw-primary:   #f1f3f8;  /* was navy #1a1a2e — used as a TEXT color on
                                  score/rank values, so on dark it must be light */
    --bmw-panel-bg:  #1d2236;  /* detail-row + toggle-hover surface  */
    --bmw-muted:     #9aa3b8;  /* labels/subheads inside detail panel */
    --bmw-text:      #f1f3f8;  /* fallback consumed by .bmw-combine-value */
}

/* ── (3 + blank-panel fix) Expanded detail panel ─────────────────────────── */
.bmw-combine-row > .bmw-combine-cell {
    background: #14182b;                 /* match board surface, not white */
    border-bottom-color: var(--bmw-border);
}
.bmw-combine-heading {
    color: var(--bmw-accent);            /* section labels in brand orange */
    font-size: .82rem;                   /* was .72rem */
}
.bmw-combine-label { color: var(--bmw-text-light); }
.bmw-stat-subhead  { color: var(--bmw-accent2); opacity: 1; font-size: .7rem; }
.bmw-combine-panel + .bmw-combine-panel { border-top-color: var(--bmw-border); }

/* The metric chips — were white bg w/ navy text (invisible here). Give them a
   raised dark surface with a teal top edge and bright values so they POP. */
.bmw-combine-metric {
    background: linear-gradient(180deg, #232a44 0%, #1b2034 100%);
    border: 1px solid #343c5e;
    border-top: 2px solid var(--bmw-accent2);
    border-radius: 8px;
}
.bmw-combine-value {
    color: #ffffff !important;           /* beat the two earlier value rules */
    font-size: 1.15rem;                  /* was .95rem */
    font-weight: 800;
}
.bmw-no-rank { color: var(--bmw-text-light); }

/* ── (1) Toggle: larger + bolder feature affordance ──────────────────────── */
.bmw-combine-toggle {
    font-size: .92rem;                   /* was .72rem */
    font-weight: 800;                    /* was 600 */
    padding: .35rem .85rem;              /* bigger tap target */
    color: var(--bmw-accent);
    border: 1.5px solid var(--bmw-accent);
    background: rgba(244,162,97,.08);
    margin-top: .4rem;
}
.bmw-combine-toggle:hover {
    background: rgba(244,162,97,.18);
    border-color: var(--bmw-accent);
}
.bmw-combine-caret { font-size: .8rem; }

/* ── (player page) Profile contrast + sizing ─────────────────────────────── */
.bmw-score-value      { color: #ffffff; }              /* was navy 72.5 */
.bmw-ranking-position { color: #ffffff; }              /* source #ranks */
.bmw-ranking-card     { background: #1d2236; border-color: var(--bmw-border); }
.bmw-ranking-source,
.bmw-ranking-source a { color: var(--bmw-text-light); }
.bmw-ranking-date     { color: var(--bmw-text-light); }
.bmw-profile-identity h1 { color: var(--bmw-text); font-size: 2.1rem; }
.bmw-profile-meta     { color: var(--bmw-text-light); font-size: .95rem; }
.bmw-profile-section h2 {
    color: var(--bmw-text);
    font-size: 1.3rem;                                  /* slightly larger */
    border-bottom-color: var(--bmw-border);
}
.bmw-score-label      { color: var(--bmw-text-light); }
.bmw-profile-spread   { background: #1d2236; color: var(--bmw-text); }
.bmw-breadcrumb,
.bmw-breadcrumb a     { color: var(--bmw-text-light); }
.bmw-stats-source     { color: var(--bmw-text-light); }

/* ── (4) Desktop: kill the gray gutters → navy/black ─────────────────────── */
/* The board is a max-width:1200px centered div inside the theme's content area;
   the GRAY gutter on wide screens is the theme's page background showing beside
   it. We make the board full-bleed: it keeps its centered 1200px content via
   padding, but its navy background now spans the full viewport width, so no
   gray shows. This stays inside the plugin's own element — it does NOT touch
   the theme header/footer (unlike a fixed full-page layer, which risked
   painting behind those). */
.bmw-draft-board {
    background: #14182b;
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(50% - 50vw);       /* break out of the centered column */
    margin-right: calc(50% - 50vw);
    padding-left: max(1rem, calc(50vw - 600px));   /* re-center content at 1200 */
    padding-right: max(1rem, calc(50vw - 600px));
    padding-top: 1.5rem;
    padding-bottom: 2.5rem;
    box-sizing: border-box;
}
.bmw-draft-profile { background: #14182b; }

/* ════════════════════════════════════════════════════════════════════════════
   v1.29.0 — Larger vote emojis
   The reaction glyphs (🚀 🔥 🥶 🔒) were 1rem and lost in their boxes. Bump the
   glyph substantially; keep the count readable but secondary so the emoji is
   the focal point of each box.
   ──────────────────────────────────────────────────────────────────────────── */
.bmw-vote-emoji {
    font-size: 1.65rem;          /* was 1rem */
    line-height: 1;
    margin-right: 2px;
}
.bmw-vote-btn {
    padding: 6px 8px;            /* a little more room around the bigger glyph */
    gap: 5px;
}
.bmw-vote-count {
    font-size: .9rem;
    font-weight: 700;
    min-width: 16px;
}
@media (max-width: 640px) {
    .bmw-vote-emoji { font-size: 1.85rem; }   /* boxes are largest on mobile */
    .bmw-vote-btn   { min-height: 52px; }
    .bmw-vote-count { font-size: .95rem; }
}
/* =====================================================================
   BMW Draft Board — v1.30.0 styling pass
   APPEND THIS TO THE END OF: public/css/bmw-draft-board.css
   ---------------------------------------------------------------------
   Goals (Chris, this session):
     1. True black / red / white dark theme to mirror ballmyway.com.
        ALL accents recolored to red (teal stat-edges + orange rank/BMW
        badges retired). Pastel Consensus/tier badges left as-is per the
        standing "leave them for now" note.
     2. Prospect names = loudest element on the card (largest + boldest).
     3. Style the new bio meta line under each name
        ("PF Duke Freshman 6'9.5" 253 lbs Age 18").
   This block is appended (not edited inline) to keep the original
   stylesheet intact — same DRY/low-risk pattern as v1.27–v1.29.
   It is intentionally last so its rules win the cascade.
   ===================================================================== */

/* ---- 1. Palette: black / red / white ------------------------------- */
/* Re-point the existing CSS variables. Anything that read a teal/orange
   accent now reads red; surfaces go to near-black; text to white. */
.bmw-draft-board,
.bmw-prospect-profile {
  --bmw-primary:        #f3f4f6;   /* light text where -primary was used as fg */
  --bmw-accent:         #d11f2a;   /* BMW red */
  --bmw-accent-strong:  #e23744;
  --bmw-red:            #d11f2a;

  --bmw-bg:             #000000;   /* page surface — true black */
  --bmw-surface:        #0a0a0c;   /* board surface */
  --bmw-panel-bg:       #141416;   /* cards / panels */
  --bmw-card:           #141416;
  --bmw-card-raised:    #1b1b1f;
  --bmw-border:         #2a2a2e;

  --bmw-text:           #ffffff;
  --bmw-text-strong:    #ffffff;
  --bmw-muted:          #b3b3ba;
}

/* Board + profile base surfaces to black */
.bmw-draft-board,
.bmw-prospect-profile { background: var(--bmw-bg); color: var(--bmw-text); }

.bmw-prospect-row,
.bmw-rv-row,
.bmw-combine-detail,
.bmw-panel,
.bmw-card { background: var(--bmw-panel-bg); border-color: var(--bmw-border); }

/* Retire teal stat-card top edge -> red */
.bmw-stat-card,
.bmw-combine-item,
.bmw-metric-chip {
  border-top: 2px solid var(--bmw-red) !important;
  background: var(--bmw-card-raised);
}
.bmw-stat-label,
.bmw-combine-label { color: var(--bmw-muted); }
.bmw-stat-value,
.bmw-combine-value { color: #ffffff !important; }

/* Retire orange rank / BMW badges -> red */
.bmw-rank-badge,
.bmw-rank-num,
.bmw-col-bmwrank .bmw-rank-badge {
  background: var(--bmw-red) !important;
  color: #ffffff !important;
  border-color: var(--bmw-red) !important;
}

/* BMW pill / toggle accent -> red outline+tint (kept legible as a feature) */
.bmw-combine-toggle {
  color: #ffffff !important;
  border: 1px solid var(--bmw-red) !important;
  background: rgba(209, 31, 42, 0.12) !important;
  font-weight: 800;
}
.bmw-combine-toggle:hover { background: rgba(209, 31, 42, 0.22) !important; }
.bmw-combine-caret { color: var(--bmw-red); }

/* Section headers / labels in red where they were orange */
.bmw-section-title,
.bmw-eval-title,
.bmw-board-title,
.bmw-stats-heading,
.bmw-combine-heading { color: #ffffff; }
.bmw-board-title { letter-spacing: .02em; }

/* Source-rank cells: white text on black, bold */
.bmw-col-source { color: #ffffff; font-weight: 700; }
.bmw-col-source a { color: #ffffff; }

/* Share button + links accent red */
.bmw-share-btn { background: var(--bmw-red) !important; color:#fff !important; }
.bmw-draft-board a:not(.bmw-prospect-name):hover { color: var(--bmw-red); }

/* ---- 2. Prospect names: loudest element --------------------------- */
.bmw-prospect-name {
  display: block;
  color: #ffffff !important;
  font-size: 1.5rem;          /* was ~1.15rem */
  font-weight: 900;           /* heaviest */
  line-height: 1.15;
  letter-spacing: -0.01em;
  text-decoration: none;
}
.bmw-prospect-name:hover { color: #ffffff !important; text-decoration: underline; text-decoration-color: var(--bmw-red); }

/* Top-5 / polarizing list names also bumped */
.bmw-top5-list li,
.bmw-polarizing-list li { font-size: 1.05rem; font-weight: 700; color:#fff; }

/* ---- 3. Bio meta line under the name ------------------------------ */
/* "PF Duke Freshman 6'9.5" 253 lbs Age 18" */
.bmw-prospect-school {
  display: block;
  margin-top: 0.25rem;
  color: var(--bmw-muted);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1.3;
}

/* ---- Mobile sizing ------------------------------------------------- */
@media (max-width: 600px) {
  .bmw-prospect-name { font-size: 1.6rem; }
  .bmw-prospect-school { font-size: 0.95rem; }
}

/* =====================================================================
   BMW Draft Board — v1.31.0 styling + bugfix pass
   Appended last so it wins the cascade (same low-risk pattern as v1.27+).
   Fixes this session:
     1. v1.30.0 themed the WRONG profile class (.bmw-prospect-profile,
        which is not in the markup). The real profile root is
        .bmw-draft-profile — so the whole profile page + its combine/stats
        cards stayed navy/teal. Re-target the correct class and push the
        black/red/white theme through the profile, Season Stats, Combine
        Measurements, and BMW Evaluation surfaces.
     2. Table header row: same background as the page (black) with bold,
        larger text (Chris's request).
     3. Prospect names even larger (largest element on the card), mobile-safe.
     4. Hide the redundant standalone "Pos" cell on the mobile card view —
        position already lives in the bio meta line under the name.
   ===================================================================== */

/* ---- 1. Profile page: correct class + black/red/white -------------- */
.bmw-draft-profile {
  --bmw-accent:        #d11f2a;
  --bmw-red:           #d11f2a;
  --bmw-bg:            #000000;
  --bmw-panel-bg:      #141416;
  --bmw-card:          #141416;
  --bmw-card-raised:   #1b1b1f;
  --bmw-border:        #2a2a2e;
  --bmw-text:          #ffffff;
  --bmw-text-light:    #b3b3ba;
  --bmw-muted:         #b3b3ba;
  background: #000000;
  color: #ffffff;
}

.bmw-draft-profile .bmw-profile-hero,
.bmw-draft-profile .bmw-profile-section,
.bmw-draft-profile .bmw-stats-block { background: #000000; }

.bmw-draft-profile .bmw-profile-identity h1 { color: #ffffff; }
.bmw-draft-profile .bmw-profile-meta,
.bmw-draft-profile .bmw-profile-class,
.bmw-draft-profile .bmw-stats-source,
.bmw-draft-profile .bmw-stats-subhead,
.bmw-draft-profile .bmw-ranking-source,
.bmw-draft-profile .bmw-ranking-date { color: #b3b3ba; }

/* Section headings white */
.bmw-draft-profile .bmw-profile-section h2,
.bmw-draft-profile h2,
.bmw-draft-profile h3 { color: #ffffff; }

/* Score hero -> red-edged black card */
.bmw-draft-profile .bmw-score-hero {
  background: #141416;
  border: 1px solid #2a2a2e;
  border-top: 3px solid #d11f2a;
}
.bmw-draft-profile .bmw-score-value { color: #ffffff; }
.bmw-draft-profile .bmw-score-label { color: #b3b3ba; }

/* Season Stats + Combine + BMW Evaluation cards: kill the teal edge -> red,
   surfaces to near-black, values white. These selectors cover BOTH the
   profile page and the in-board expand (.bmw-stat-card is shared). */
.bmw-draft-profile .bmw-stat-card,
.bmw-draft-profile .bmw-ranking-card,
.bmw-draft-board  .bmw-stat-card {
  background: #1b1b1f !important;
  border: 1px solid #2a2a2e !important;
  border-top: 2px solid #d11f2a !important;
}
.bmw-draft-profile .bmw-stat-value,
.bmw-draft-board  .bmw-stat-value { color: #ffffff !important; }
.bmw-draft-profile .bmw-stat-label,
.bmw-draft-board  .bmw-stat-label { color: #b3b3ba !important; }

/* PER GAME / ADVANCED sub-labels were teal -> red */
.bmw-draft-profile .bmw-stats-subhead { color: #d11f2a !important; font-weight: 800; }

/* Ranking cards (external boards) text white */
.bmw-draft-profile .bmw-ranking-position { color: #ffffff; font-weight: 800; }

/* Profile share button red */
.bmw-draft-profile .bmw-share-btn,
.bmw-draft-profile .bmw-share-profile-btn {
  background: #d11f2a !important; color: #fff !important; border-color: #d11f2a !important;
}

/* Breadcrumb / back link muted, red on hover */
.bmw-draft-profile .bmw-breadcrumb,
.bmw-draft-profile .bmw-profile-back { color: #b3b3ba; }
.bmw-draft-profile .bmw-breadcrumb a:hover,
.bmw-draft-profile .bmw-profile-back:hover { color: #d11f2a; }

/* ---- 2. Table header row: same bg as page, bold + larger ---------- */
.bmw-draft-board .bmw-draft-table thead th {
  background: #000000 !important;   /* match page background */
  color: #ffffff !important;
  font-weight: 800 !important;
  font-size: 1.02rem !important;     /* larger than body */
  letter-spacing: 0.01em;
  border-bottom: 2px solid #2a2a2e;
}
.bmw-draft-board .bmw-draft-table thead th a { color: #ffffff !important; }

/* ---- 3. Prospect names even larger -------------------------------- */
.bmw-draft-board .bmw-prospect-name {
  font-size: 1.7rem !important;
  font-weight: 900 !important;
  line-height: 1.12;
}

/* ---- 4. (v1.35.0) Pos column removed entirely; former mobile-hide
   rule retired since the column no longer exists. ---------------------- */

/* ---- Mobile name sizing ------------------------------------------- */
@media (max-width: 600px) {
  .bmw-draft-board .bmw-prospect-name { font-size: 1.8rem !important; }
  .bmw-draft-board .bmw-draft-table thead th { font-size: 1rem !important; }
}

/* =====================================================================
   BMW Draft Board — v1.32.0
   Fix: the in-board "BMW · Stats · Combine" dropdown (.bmw-combine-row)
   was still navy. v1.31.0 themed .bmw-stat-card / .bmw-combine-item, but
   the actual dropdown uses .bmw-combine-cell / .bmw-combine-panel /
   .bmw-combine-metric, which earlier rules paint #14182b/#1d2236. Override
   them to the black/red/white scheme. Appended last so it wins the cascade.
   ===================================================================== */

/* Dropdown container surface -> black */
.bmw-draft-board .bmw-combine-row > .bmw-combine-cell,
.bmw-draft-board .bmw-combine-row td.bmw-combine-cell {
  background: #000000 !important;
  border-top: 1px solid #2a2a2e !important;
}

/* Each panel (BMW Evaluation / Season Stats / Combine Measurements) */
.bmw-draft-board .bmw-combine-panel {
  background: #0a0a0c !important;
}
.bmw-draft-board .bmw-combine-panel + .bmw-combine-panel {
  border-top: 1px solid #2a2a2e !important;
}

/* Headings white, sub-heads (Per Game / Advanced) red */
.bmw-draft-board .bmw-combine-heading { color: #ffffff !important; font-weight: 800 !important; }
.bmw-draft-board .bmw-stat-subhead    { color: #d11f2a !important; opacity: 1 !important; font-weight: 800 !important; }
.bmw-draft-board .bmw-stats-season,
.bmw-draft-board .bmw-stats-games     { color: #b3b3ba !important; }

/* Individual metric chips -> near-black with red top edge, white values */
.bmw-draft-board .bmw-combine-metric {
  background: #1b1b1f !important;
  border: 1px solid #2a2a2e !important;
  border-top: 2px solid #d11f2a !important;
}
.bmw-draft-board .bmw-combine-label { color: #b3b3ba !important; }
.bmw-draft-board .bmw-combine-value { color: #ffffff !important; }
.bmw-draft-board .bmw-no-rank       { color: #b3b3ba !important; }

/* =====================================================================
   BMW Draft Board — v1.33.0 styling
     1. BMW Rank # badge larger (more prominent on the card).
     2. Vote emojis: remove the square outline boxes — emoji + count only.
     3. Dropdown "BMW Score" + "Consensus Avg": larger value font, red card
        background (the BMW Evaluation panel's two metrics).
   Appended last so it wins the cascade.
   ===================================================================== */

/* ---- 1. Larger BMW Rank # badge ----------------------------------- */
.bmw-draft-board .bmw-rank-badge {
  font-size: 1.35rem !important;
  font-weight: 900 !important;
  padding: 4px 12px !important;
  line-height: 1.1 !important;
  border-radius: 8px !important;
}
@media (max-width: 600px) {
  .bmw-draft-board .bmw-rank-badge { font-size: 1.5rem !important; padding: 5px 14px !important; }
}

/* ---- 2. Remove square boxes around vote emojis -------------------- */
/* Show just the emoji + count, no border/box, transparent background. */
.bmw-draft-board .bmw-vote-btn,
.bmw-draft-board .bmw-vote-btn.bmw-vote-up,
.bmw-draft-board .bmw-vote-btn.bmw-vote-boost,
.bmw-draft-board .bmw-vote-btn.bmw-vote-fire,
.bmw-draft-board .bmw-vote-btn.bmw-vote-cool,
.bmw-draft-board .bmw-vote-btn.bmw-vote-down,
.bmw-draft-board .bmw-vote-btn.bmw-vote-lockdown {
  border: none !important;
  background: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  padding: 2px 6px !important;
}
/* Keep the active/hover feedback as a subtle emoji scale + colored count,
   not a box. */
.bmw-draft-board .bmw-vote-btn:hover:not(:disabled) {
  background: none !important;
  border: none !important;
  transform: scale(1.12);
}
.bmw-draft-board .bmw-vote-btn.active {
  background: none !important;
  border: none !important;
}
.bmw-draft-board .bmw-vote-emoji { font-size: 1.25rem; line-height: 1; }

/* ---- 3. Dropdown BMW Score + Consensus Avg: bigger + red bg ------- */
/* The BMW Evaluation panel's two metric chips. */
.bmw-draft-board .bmw-eval-panel .bmw-combine-metric {
  background: #d11f2a !important;
  border: 1px solid #d11f2a !important;
  border-top: 2px solid #d11f2a !important;
}
.bmw-draft-board .bmw-eval-panel .bmw-combine-label {
  color: #ffffff !important;
  opacity: 0.92;
  font-weight: 700 !important;
}
.bmw-draft-board .bmw-eval-panel .bmw-combine-value {
  color: #ffffff !important;
  font-size: 1.6rem !important;
  font-weight: 900 !important;
}
.bmw-draft-board .bmw-eval-panel .bmw-no-rank { color: #ffffff !important; }

/* =====================================================================
   BMW Draft Board — v1.34.0 styling
     1. Vote emojis bigger (card- + mobile-friendly).
     2. Dropdown "BMW Score" + "Consensus Avg" value font bigger.
     3. Polarizing Picks + Top 5 panels: larger fonts.
     4. The seven source-ranking columns: larger + bold.
   Appended last so it wins the cascade.
   ===================================================================== */

/* ---- 1. Bigger vote emojis (still borderless from v1.33.0) --------- */
.bmw-draft-board .bmw-vote-emoji {
  font-size: 1.7rem !important;
  line-height: 1 !important;
}
.bmw-draft-board .bmw-vote-count {
  font-size: 1rem !important;
  font-weight: 700 !important;
}
.bmw-draft-board .bmw-vote-btn { gap: 5px !important; padding: 4px 8px !important; }
@media (max-width: 600px) {
  .bmw-draft-board .bmw-vote-emoji { font-size: 2rem !important; }
  .bmw-draft-board .bmw-vote-count { font-size: 1.05rem !important; }
}

/* ---- 2. Dropdown BMW Score + Consensus Avg value even bigger ------- */
.bmw-draft-board .bmw-eval-panel .bmw-combine-value {
  font-size: 2.1rem !important;
  font-weight: 900 !important;
}
.bmw-draft-board .bmw-eval-panel .bmw-combine-label {
  font-size: 0.9rem !important;
}
@media (max-width: 600px) {
  .bmw-draft-board .bmw-eval-panel .bmw-combine-value { font-size: 2.3rem !important; }
}

/* ---- 3. Polarizing Picks + Top 5 panels: larger fonts ------------- */
.bmw-draft-board .bmw-panel-disagreements h3,
.bmw-draft-board .bmw-panel-consensus h3 {
  font-size: 1.35rem !important;
  font-weight: 800 !important;
}
.bmw-draft-board .bmw-panel-disagreements li,
.bmw-draft-board .bmw-panel-consensus li,
.bmw-draft-board .bmw-panel-disagreements li a,
.bmw-draft-board .bmw-panel-consensus li a {
  font-size: 1.15rem !important;
  font-weight: 700 !important;
}
.bmw-draft-board .bmw-panel-consensus .bmw-rank-num {
  font-size: 1.15rem !important;
  font-weight: 900 !important;
}
.bmw-draft-board .bmw-panel-disagreements .bmw-spread-badge {
  font-size: 1rem !important;
  font-weight: 800 !important;
}
@media (max-width: 600px) {
  .bmw-draft-board .bmw-panel-disagreements li,
  .bmw-draft-board .bmw-panel-consensus li,
  .bmw-draft-board .bmw-panel-disagreements li a,
  .bmw-draft-board .bmw-panel-consensus li a { font-size: 1.25rem !important; }
}

/* ---- 4. The seven source-ranking columns: larger + bold ----------- */
.bmw-draft-board .bmw-draft-table td.bmw-col-source,
.bmw-draft-board .bmw-draft-table td.bmw-col-source a {
  font-size: 1.15rem !important;
  font-weight: 800 !important;
}
@media (max-width: 600px) {
  .bmw-draft-board .bmw-draft-table td.bmw-col-source,
  .bmw-draft-board .bmw-draft-table td.bmw-col-source a { font-size: 1.2rem !important; }
}

/* =====================================================================
   BMW Draft Board — v1.35.0 styling
   Pos column removed; reclaim the space for larger, centered source ranks.
   ===================================================================== */

/* Center the seven source columns (header + cells) so each number aligns
   under its source label, and bump the rank font further. */
.bmw-draft-board .bmw-draft-table th.bmw-col-source,
.bmw-draft-board .bmw-draft-table td.bmw-col-source {
  text-align: center !important;
}
.bmw-draft-board .bmw-draft-table td.bmw-col-source,
.bmw-draft-board .bmw-draft-table td.bmw-col-source a {
  font-size: 1.4rem !important;
  font-weight: 800 !important;
}
@media (max-width: 600px) {
  .bmw-draft-board .bmw-draft-table td.bmw-col-source,
  .bmw-draft-board .bmw-draft-table td.bmw-col-source a {
    font-size: 1.45rem !important;
  }
}
