/* ============================================================
   UPL Engine v2.5 - Frontend CSS
   Cricket-themed (Pitch Green primary, Leather Red accents, Stadium Navy dark)
   Aligned with TheUAS theme v2.5+ for consistent palette
   ============================================================ */

:root {
    /* Primary brand (kept as floodlight blue for brand recognition) */
    --upl-primary: #0B5394;
    --upl-primary-dark: #073763;
    --upl-accent: #F5C518;
    /* Cricket result states */
    --upl-win: #1A6B3F;       /* pitch green */
    --upl-loss: #B83227;      /* leather red */
    --upl-tie: #F59E0B;       /* scoreboard amber */
    /* Surfaces */
    --upl-bg: #F1F5F9;
    --upl-card: #FFFFFF;
    --upl-border: #E2E8F0;
    --upl-text: #0F172A;
    --upl-muted: #64748B;
    /* Geometry */
    --upl-radius: 10px;
    --upl-radius-sm: 6px;
    --upl-max-width: 1080px;
    /* Typography (reuse theme fonts; degrade gracefully if theme absent) */
    --upl-font-body: 'Manrope', system-ui, -apple-system, sans-serif;
    --upl-font-display: 'Saira Condensed', 'Oswald', system-ui, sans-serif;
    --upl-font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', monospace;
}

.upl-wrap, .upl-prof-header, .upl-card, .upl-empty-card, .upl-match-card, .upl-table, .upl-hub-tab {
    font-family: var(--upl-font-body);
}
.upl-hero > div:first-child,
.upl-team-header h2,
.upl-prof-header h2,
.upl-card-head h3 {
    font-family: var(--upl-font-display);
    letter-spacing: -0.005em;
    font-weight: 800;
}

/* === BASE === */
.upl-wrap { max-width: var(--upl-max-width); margin: 0 auto; padding: 0 12px 20px; }
@media (min-width: 768px) { .upl-wrap { padding: 0 24px 32px; } }

/* === CARDS === */
.upl-card {
    background: var(--upl-card); border: 1px solid var(--upl-border);
    border-radius: var(--upl-radius); margin-bottom: 8px; overflow: hidden;
}
.upl-card-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 16px; border-bottom: 1px solid var(--upl-border);
}
.upl-card-head h3 { font-size: 14px; font-weight: 700; margin: 0; color: var(--upl-text); }
.upl-card-head a { font-size: 12px; color: var(--upl-primary); font-weight: 600; text-decoration: none; }
@media (min-width: 768px) { .upl-card { margin-bottom: 12px; } .upl-card-head h3 { font-size: 15px; } }

/* === TEAM LOGO CIRCLE === */
.upl-tl {
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 800; letter-spacing: -0.5px; flex-shrink: 0;
    text-transform: uppercase; box-shadow: 0 1px 3px rgba(0,0,0,.15);
}

/* === TIER BADGES === */
.upl-tb { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 10px; font-weight: 700; color: #fff; text-transform: uppercase; }
.upl-tb-plat, .upl-tb-platinum { background: linear-gradient(135deg, #E5E4E2, #B4B4B4); color: #333; }
.upl-tb-gold { background: linear-gradient(135deg, #FFD700, #FFA500); color: #333; }
.upl-tb-silv, .upl-tb-silver { background: linear-gradient(135deg, #C0C0C0, #A0A0A0); color: #333; }
.upl-tb-brnz, .upl-tb-bronze { background: linear-gradient(135deg, #CD7F32, #B87333); color: #fff; }
.upl-tb-s1 { background: #9E9E9E; }

/* === TABLE (Standings etc.) === */
.upl-table { width: 100%; border-collapse: collapse; font-size: 12px; background: var(--upl-card); }
.upl-table th {
    background: linear-gradient(180deg, var(--stadium-navy, #0A1929) 0%, var(--stadium-navy-2, #102341) 100%);
    color: #fff;
    padding: 11px 8px;
    font-weight: 700;
    text-align: left;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    white-space: nowrap;
    font-family: var(--upl-font-display);
}
.upl-table td {
    padding: 12px 8px;
    border-bottom: 1px solid var(--upl-border);
    vertical-align: middle;
}
.upl-table tbody tr:nth-child(even) td { background: rgba(241,245,249,0.4); }
.upl-table tbody tr:hover td { background: var(--floodlight-l, #E3EEF9); }
.upl-table tr.upl-playoff-line { border-bottom: 2px dashed var(--upl-loss); }
.upl-col-num {
    font-weight: 700;
    color: var(--upl-muted);
    width: 28px;
    text-align: center;
    font-family: var(--upl-font-mono);
}
.upl-col-team { font-weight: 700; font-size: 13px; }
.upl-col-stat { text-align: center; font-weight: 700; }
.upl-col-fp { text-align: center; color: var(--upl-win); font-weight: 700; }
.upl-col-pen { text-align: center; color: var(--upl-loss); font-weight: 700; }
.upl-col-final {
    text-align: right;
    font-weight: 800;
    color: var(--upl-primary);
    font-size: 15px;
    font-family: var(--upl-font-mono);
}
@media (min-width: 768px) { .upl-table { font-size: 13px; } .upl-table th, .upl-table td { padding: 14px 12px; } }

/* === FORMULA BAR === */
.upl-formula-bar {
    background: linear-gradient(90deg, var(--stadium-navy, #0A1929) 0%, var(--stadium-navy-2, #102341) 100%);
    color: rgba(255,255,255,0.92);
    padding: 10px 18px;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    border-radius: var(--upl-radius) var(--upl-radius) 0 0;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    font-family: var(--upl-font-display);
    position: relative;
}
.upl-formula-bar::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 2px;
    background: linear-gradient(90deg, var(--upl-win) 0%, var(--upl-tie) 50%, var(--upl-loss) 100%);
    opacity: 0.7;
}

/* === MATCH CARDS === */
.upl-match-card {
    background: var(--upl-card);
    border: 1px solid var(--upl-border);
    border-radius: var(--upl-radius);
    margin-bottom: 10px;
    overflow: hidden;
    box-shadow: var(--shadow-sm, 0 1px 2px rgba(15,23,42,0.05));
    transition: box-shadow 0.18s, transform 0.18s;
}
.upl-match-card:hover {
    box-shadow: 0 6px 20px rgba(15,23,42,0.08);
    transform: translateY(-1px);
}
.upl-match-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 9px 14px;
    background: linear-gradient(180deg, #F8FAFC 0%, #F1F5F9 100%);
    border-bottom: 1px solid var(--upl-border);
}
.upl-match-id {
    font-size: 11px;
    font-weight: 700;
    color: var(--upl-primary);
    font-family: var(--upl-font-mono);
    letter-spacing: 0.4px;
}
.upl-match-time { font-size: 10px; color: var(--upl-muted); font-variant-numeric: tabular-nums; }
.upl-match-row {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 14px; font-size: 13px;
    transition: background 0.15s;
    border-left: 3px solid transparent;
}
.upl-match-row.upl-winner {
    background: linear-gradient(90deg, rgba(26,107,63,0.08) 0%, rgba(26,107,63,0.02) 100%);
    border-left-color: var(--upl-win);
}
.upl-match-row + .upl-match-row { border-top: 1px solid var(--upl-border); }
.upl-player-name {
    flex: 1; font-weight: 600;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    color: var(--upl-text);
}
.upl-match-row.upl-winner .upl-player-name { color: var(--upl-text); font-weight: 700; }
.upl-score {
    font-weight: 700;
    font-size: 15px;
    font-family: var(--upl-font-mono);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    color: var(--upl-text);
    letter-spacing: -0.02em;
}
.upl-match-row.upl-winner .upl-score { color: var(--upl-win); }
.upl-match-foot {
    padding: 8px 14px;
    border-top: 1px solid var(--upl-border);
    background: var(--upl-card);
    display: flex; align-items: center;
}
.upl-result-txt { font-size: 11px; font-weight: 700; color: var(--upl-win); text-transform: uppercase; letter-spacing: 0.3px; }
.upl-modified-badge {
    margin-left: 8px;
    padding: 2px 7px;
    border-radius: var(--upl-radius-sm);
    font-size: 9px;
    background: var(--amber-l, #FEF3C7);
    color: #92400E;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
@media (min-width: 768px) { .upl-match-card { max-width: 640px; } .upl-match-row { padding: 12px 18px; } }

/* === STATS ROWS (Players, FP, Penalties lists) === */
.upl-stats-row {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 12px; border-bottom: 1px solid var(--upl-border);
}
.upl-stats-row:last-child { border-bottom: none; }
.upl-rank { font-weight: 700; color: var(--upl-muted); font-size: 11px; width: 20px; text-align: center; flex-shrink: 0; }
.upl-name { font-weight: 600; font-size: 13px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.upl-stat-val { font-weight: 700; font-size: 14px; color: var(--upl-primary); }

/* === HERO (Homepage) === */
.upl-hero {
    background:
        linear-gradient(135deg, rgba(10,25,41,0.94) 0%, rgba(16,35,65,0.92) 50%, rgba(11,83,148,0.92) 100%),
        radial-gradient(ellipse at top right, rgba(245,158,11,0.18), transparent 60%),
        radial-gradient(ellipse at bottom left, rgba(26,107,63,0.22), transparent 60%);
    color: #fff;
    padding: 36px 22px 30px;
    border-radius: 0 0 var(--upl-radius) var(--upl-radius);
    margin-bottom: 10px;
    text-align: center;
    position: relative;
    overflow: hidden;
}
.upl-hero::before {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 3px;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 50%, #B83227 100%);
    opacity: 0.85;
}
.upl-hero > div:first-child {
    font-family: var(--upl-font-display);
    font-size: 32px !important;
    font-weight: 900 !important;
    letter-spacing: 0.3px;
    line-height: 1.05;
    text-transform: uppercase;
    text-shadow: 0 2px 12px rgba(0,0,0,0.25);
}
.upl-hero-sub {
    font-size: 12px;
    opacity: 0.82;
    margin-top: 8px;
    letter-spacing: 0.4px;
    font-weight: 500;
}
.upl-hero-actions { display: flex; gap: 10px; justify-content: center; margin-top: 20px; flex-wrap: wrap; }
.upl-hero-btn {
    padding: 11px 22px;
    border-radius: var(--upl-radius-sm);
    font-weight: 700;
    font-size: 13px;
    text-decoration: none;
    letter-spacing: 0.3px;
    text-transform: uppercase;
    transition: transform 0.15s, box-shadow 0.15s;
}
.upl-hero-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,0.25); }
.upl-hero-btn-primary { background: var(--upl-accent); color: #102341; }
.upl-hero-btn-ghost { background: rgba(255,255,255,0.12); color: #fff; border: 1px solid rgba(255,255,255,0.28); }
.upl-hero-stats {
    display: flex;
    justify-content: center;
    gap: 28px;
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid rgba(255,255,255,0.12);
}
.upl-hero-stat { text-align: center; }
.upl-hero-stat strong {
    display: block;
    font-family: var(--upl-font-mono);
    font-size: 26px;
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}
.upl-hero-stat span {
    display: block;
    margin-top: 4px;
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    opacity: 0.7;
    font-weight: 600;
}
@media (min-width: 768px) {
    .upl-hero {
        padding: 48px 32px 40px;
        border-radius: var(--upl-radius);
        margin: 14px auto;
        max-width: var(--upl-max-width);
    }
    .upl-hero > div:first-child { font-size: 42px !important; }
    .upl-hero-stat strong { font-size: 32px; }
}

/* === QUICK LINKS GRID === */
.upl-quick-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.upl-quick-item {
    text-align: center;
    padding: 12px 6px;
    background: var(--upl-card);
    border: 1px solid var(--upl-border);
    border-radius: var(--upl-radius-sm);
    font-size: 11px;
    font-weight: 700;
    color: var(--upl-text);
    text-decoration: none;
    transition: all 0.15s;
    letter-spacing: 0.2px;
    box-shadow: var(--shadow-sm, 0 1px 2px rgba(15,23,42,0.05));
}
.upl-quick-item:hover {
    background: var(--upl-primary);
    color: #fff;
    border-color: var(--upl-primary);
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(11,83,148,0.18);
}
@media (min-width: 768px) { .upl-quick-grid { grid-template-columns: repeat(6, 1fr); gap: 10px; } }

/* === FRANCHISE GRID === */
.upl-franchise-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.upl-franchise-item {
    text-align: center;
    text-decoration: none;
    color: inherit;
    padding: 10px 4px 8px;
    border-radius: var(--upl-radius-sm);
    transition: background 0.15s, transform 0.15s;
    min-width: 0;
    overflow: hidden;
}
.upl-franchise-item:hover {
    background: var(--floodlight-l, #E3EEF9);
    transform: translateY(-2px);
}
.upl-franchise-city {
    font-size: 9px;
    color: var(--upl-muted);
    margin-top: 5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1.2;
}
/* Mobile: 5 cols on a 380px viewport - shrink everything so 10 teams fit in 2 rows */
@media (max-width: 480px) {
    .upl-franchise-grid { gap: 4px; }
    .upl-franchise-item { padding: 8px 2px 6px; }
    .upl-franchise-city { font-size: 8px; letter-spacing: 0.2px; }
    .upl-logo-lg { width: 36px !important; height: 36px !important; font-size: 12px !important; }
}
@media (min-width: 768px) { .upl-franchise-grid { grid-template-columns: repeat(10, 1fr); gap: 14px; } }

/* === ARCHIVE BANNER === */
.upl-archive-banner {
    background: linear-gradient(90deg, var(--amber-l, #FEF3C7) 0%, var(--upl-card) 100%);
    color: #92400E;
    padding: 10px 18px;
    font-size: 12px;
    font-weight: 700;
    text-align: left;
    border-radius: var(--upl-radius);
    margin: 8px 14px 10px;
    border-left: 4px solid var(--scoreboard-amber, #F59E0B);
    letter-spacing: 0.3px;
    text-transform: uppercase;
}
.upl-archive-banner a { color: var(--upl-primary); margin-left: 8px; font-weight: 700; }

/* === MATCH CENTRE === */
.upl-mc-header {
    background: linear-gradient(135deg, #1a1a2e, #16213e);
    padding: 24px 16px; border-radius: var(--upl-radius); margin-bottom: 8px;
}
.upl-mc-vs { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.upl-mc-team { text-align: center; flex: 1; }
.upl-mc-score { font-size: 22px; font-weight: 800; margin: 6px 0 2px; color: #fff; }
.upl-mc-sub { font-size: 11px; opacity: .7; color: #fff; }
.upl-mc-result { text-align: center; margin-top: 12px; font-size: 12px; font-weight: 700; color: var(--upl-accent); }

/* === TEAM & PLAYER PROFILE HEADER === */
.upl-team-header, .upl-prof-header {
    padding: 24px 16px; border-radius: var(--upl-radius); margin-bottom: 8px;
    display: flex; align-items: center; gap: 12px; color: #fff;
}
.upl-team-header h2, .upl-prof-header h2 {
    margin: 0;
    font-size: 18px;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
}
.upl-team-city { font-size: 12px; opacity: .7; }

/* === PLAYER PROFILE STATS === */
.upl-prof-stats {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px;
    padding: 12px; margin-bottom: 8px;
}
.upl-prof-stat {
    background: var(--upl-card); border: 1px solid var(--upl-border);
    border-radius: var(--upl-radius-sm); padding: 10px 4px; text-align: center;
}
.upl-prof-stat strong { display: block; font-size: 16px; font-weight: 800; color: var(--upl-primary); }
.upl-prof-stat span { font-size: 9px; color: var(--upl-muted); text-transform: uppercase; }
@media (min-width: 768px) { .upl-prof-stats { grid-template-columns: repeat(7, 1fr); } }

/* === PLAYOFF BRACKET === */
.upl-playoff-bracket { padding: 16px; border-radius: var(--upl-radius); }
.upl-playoff-match { background: var(--upl-card); border: 1px solid var(--upl-border); border-radius: var(--upl-radius-sm); padding: 12px 16px; margin-bottom: 8px; }
.upl-playoff-label { font-size: 11px; font-weight: 700; color: var(--upl-primary); margin-bottom: 8px; text-transform: uppercase; letter-spacing: .5px; }
.upl-playoff-final { border-color: var(--upl-accent); }

/* === CHARACTER ROWS === */
.upl-char-row { display: flex; align-items: center; gap: 6px; padding: 8px 12px; border-bottom: 1px solid var(--upl-border); font-size: 12px; }
.upl-char-row.upl-b11, .upl-char-row.upl-char-best11 { background: #F0F7FF; }
.upl-char-num { width: 20px; font-weight: 700; color: var(--upl-muted); text-align: center; }
.upl-role-badge { padding: 1px 6px; border-radius: 3px; font-size: 9px; font-weight: 700; color: #fff; }
.upl-role-bat, .upl-role-badge.upl-role-bat { background: #1565C0; }
.upl-role-bowl, .upl-role-badge.upl-role-bowl { background: #2E7D32; }
.upl-char-name { flex: 1; font-weight: 600; }
.upl-char-stars { color: #F5C518; font-size: 11px; }
.upl-char-pts { font-weight: 700; color: var(--upl-primary); font-size: 11px; }

/* === STAR-UP ROWS === */
.upl-starup-row { display: flex; align-items: center; gap: 6px; padding: 10px 12px; border-bottom: 1px solid var(--upl-border); font-size: 12px; }
.upl-starup-stars { font-weight: 700; color: var(--upl-accent); }
.upl-starup-status { padding: 2px 8px; border-radius: 4px; font-size: 10px; font-weight: 700; }
.upl-starup-approved, .upl-starup-active { background: #E8F5E9; color: var(--upl-win); }
.upl-starup-cooldown { background: #FFF3E0; color: #E65100; }
.upl-starup-pending { background: #E3F2FD; color: var(--upl-primary); }

/* === PENALTY CODES === */
.upl-pencode-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 16px; border-bottom: 1px solid var(--upl-border); font-size: 12px; }
.upl-pencode-pts { font-weight: 700; color: var(--upl-loss); }

/* === RULES === */
.upl-rules-section { margin-bottom: 8px; }
.upl-rules-head { background: var(--upl-primary); color: #fff; padding: 10px 16px; font-weight: 700; font-size: 13px; border-radius: var(--upl-radius) var(--upl-radius) 0 0; }
.upl-rules-body { background: var(--upl-card); border: 1px solid var(--upl-border); border-top: none; padding: 12px 16px; font-size: 12px; line-height: 1.6; border-radius: 0 0 var(--upl-radius) var(--upl-radius); }

/* === AWARDS GRID === */
.upl-awards-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; padding: 12px; }
.upl-award-card { background: linear-gradient(135deg, #073763, #0B5394); color: #fff; border-radius: var(--upl-radius-sm); padding: 16px; text-align: center; }
.upl-award-title { font-size: 10px; text-transform: uppercase; opacity: .7; letter-spacing: .5px; }
.upl-award-name { font-size: 14px; font-weight: 700; margin-top: 4px; }
@media (min-width: 768px) { .upl-awards-grid { grid-template-columns: repeat(3, 1fr); } }

/* === MATCHDAY SCHEDULE === */
.upl-matchday-head { padding: 10px 16px; font-weight: 700; font-size: 14px; background: #F8F9FA; border-bottom: 1px solid var(--upl-border); }
.upl-matchday-fixture { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--upl-border); }

/* === NOTICES === */
.upl-notice { padding: 12px 16px; border-radius: var(--upl-radius-sm); font-size: 13px; margin-bottom: 12px; background: #E3F2FD; color: var(--upl-primary); }
.upl-notice a { color: var(--upl-primary); font-weight: 700; }
.upl-notice-warning { background: #FFF8E1; color: #F57F17; }
.upl-notice-info { background: #E3F2FD; color: #1565C0; }

/* ============================================================
   DASHBOARD
   ============================================================ */
.upl-dashboard { max-width: var(--upl-max-width); margin: 0 auto; }
.upl-dash-header {
    padding: 20px 16px; display: flex; align-items: center; gap: 12px; color: #fff;
    border-radius: 0 0 var(--upl-radius) var(--upl-radius);
}
.upl-dash-header h2 {
    margin: 0;
    font-size: 18px;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
}
.upl-dash-header p { margin: 4px 0 0; font-size: 12px; opacity: .8; }
.upl-captain-badge { background: var(--upl-accent); color: #000; padding: 1px 8px; border-radius: 4px; font-size: 9px; font-weight: 700; margin-left: 6px; }
.upl-tier-badge {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 800;
    color: #fff;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    font-family: var(--upl-font-display);
    box-shadow: 0 1px 2px rgba(0,0,0,0.12);
}
.upl-tier-plat { background: linear-gradient(135deg, #4A148C 0%, #7E57C2 100%); }
.upl-tier-gold { background: linear-gradient(135deg, #B07300 0%, #F9A825 60%, #FFB300 100%); color: #1F1300; }
.upl-tier-silv { background: linear-gradient(135deg, #455A64 0%, #78909C 60%, #90A4AE 100%); }
.upl-tier-brnz { background: linear-gradient(135deg, #4E342E 0%, #8D6E63 60%, #A1887F 100%); }
/* end tier badges */

/* Tabs */
.upl-dash-tabs {
    display: flex; gap: 0; overflow-x: auto; background: var(--upl-card);
    border-bottom: 2px solid var(--upl-border); margin-bottom: 0;
    -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.upl-dash-tabs::-webkit-scrollbar { display: none; }
.upl-tab {
    flex-shrink: 0; padding: 10px 16px; font-size: 12px; font-weight: 600;
    background: none; border: none; color: var(--upl-muted); cursor: pointer;
    border-bottom: 2px solid transparent; margin-bottom: -2px; white-space: nowrap;
}
.upl-tab.active { color: var(--upl-primary); border-bottom-color: var(--upl-primary); }
.upl-badge-count { background: var(--upl-loss); color: #fff; padding: 1px 6px; border-radius: 10px; font-size: 10px; margin-left: 4px; }

.upl-tab-panel { display: none; padding: 12px; }
.upl-tab-panel.active { display: block; }

.upl-stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 12px; }
.upl-stat-card { background: var(--upl-card); border: 1px solid var(--upl-border); border-radius: var(--upl-radius-sm); padding: 12px 8px; text-align: center; }
.upl-stat-num { display: block; font-size: 18px; font-weight: 800; color: var(--upl-primary); }
.upl-stat-label { font-size: 9px; color: var(--upl-muted); text-transform: uppercase; }
@media (min-width: 768px) { .upl-stats-grid { grid-template-columns: repeat(6, 1fr); } }

/* Dashboard form fields */
.upl-dashboard .upl-field { margin-bottom: 12px; }
.upl-dashboard .upl-field label { font-size: 12px; font-weight: 600; display: block; margin-bottom: 4px; color: var(--upl-text); }
.upl-dashboard .upl-field input,
.upl-dashboard .upl-field select,
.upl-dashboard .upl-field textarea {
    width: 100%; padding: 10px 12px; border: 1px solid var(--upl-border);
    border-radius: var(--upl-radius-sm); font-size: 13px; background: #fff; box-sizing: border-box;
}
.upl-btn { padding: 12px; border: none; border-radius: var(--upl-radius-sm); font-weight: 700; font-size: 14px; cursor: pointer; width: 100%; display: block; text-align: center; }
.upl-btn.primary { background: var(--upl-primary); color: #fff; }
.upl-btn.primary:hover { background: var(--upl-primary-dark); }
.upl-btn:disabled { background: #E0E0E0; color: #999; cursor: default; }
.upl-btn-sm { padding: 6px 14px; font-size: 12px; border-radius: 6px; border: none; cursor: pointer; font-weight: 700; }
.upl-btn-sm.green { background: var(--upl-win); color: #fff; }
.upl-btn-sm.red { background: var(--upl-loss); color: #fff; }

/* Submission rows */
.upl-sub-row { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--upl-border); font-size: 12px; }
.upl-sub-id { font-weight: 700; color: var(--upl-muted); }
.upl-status-pending { color: #F57F17; font-weight: 700; font-size: 11px; }
.upl-status-approved, .upl-status-modified { color: var(--upl-win); font-weight: 700; font-size: 11px; }
.upl-status-rejected { color: var(--upl-loss); font-weight: 700; font-size: 11px; }

/* Match mini rows */
.upl-match-mini { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-bottom: 1px solid var(--upl-border); }
.upl-wlt { width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800; color: #fff; flex-shrink: 0; }
.upl-wlt.W { background: var(--upl-win); }
.upl-wlt.L { background: var(--upl-loss); }
.upl-wlt.T { background: var(--upl-tie); }

/* Approval cards */
.upl-approval-card { background: var(--upl-card); border: 1px solid var(--upl-border); border-radius: var(--upl-radius-sm); padding: 12px; margin-bottom: 8px; }
.upl-approval-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.upl-approval-scores { display: flex; align-items: center; justify-content: space-between; gap: 8px; text-align: center; font-size: 12px; }
.upl-score-big { font-size: 16px; font-weight: 800; color: var(--upl-primary); }
.upl-approval-result { text-align: center; font-size: 12px; font-weight: 600; color: var(--upl-win); margin: 8px 0; }
.upl-approval-actions { display: flex; gap: 8px; }

/* Team player rows */
.upl-team-player-row { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--upl-border); }

/* === DESKTOP LAYOUT ENHANCEMENTS === */
@media (min-width: 768px) {
    .upl-dashboard .upl-tab-panel { padding: 16px 20px; }
    .upl-match-card { transition: box-shadow .2s; }
    .upl-match-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,.08); }
    .upl-stats-row:hover { background: #F8F9FA; }
    .upl-dash-header { border-radius: var(--upl-radius); margin: 12px auto 0; max-width: var(--upl-max-width); }
}
@media (min-width: 1024px) {
    .upl-prof-stats { grid-template-columns: repeat(7, 1fr); }
    .upl-franchise-grid { grid-template-columns: repeat(10, 1fr); }
}

/* === POINTS SYSTEM === */
.upl-sr { display: flex; justify-content: space-between; padding: 10px 16px; border-bottom: 1px solid var(--upl-border); font-size: 13px; }
.upl-sr-label { font-weight: 600; }
.upl-sr-value { font-weight: 700; color: var(--upl-primary); }

/* ============================================================
   v2.4 - SQUAD CARD (Public Player Profile, full chars)
   ============================================================ */
.upl-squad-card { margin-top: 12px; }
.upl-squad-filter { display: flex; gap: 4px; }
.upl-sf-btn { padding: 4px 10px; border: 1px solid var(--upl-border); background: #fff; border-radius: 4px; font-size: 11px; font-weight: 700; cursor: pointer; color: var(--upl-muted); }
.upl-sf-btn:hover { border-color: var(--upl-primary); }
.upl-sf-btn.upl-sf-active { background: var(--upl-primary); color: #fff; border-color: var(--upl-primary); }

.upl-squad-list { padding: 4px 0; }
.upl-squad-row {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 14px; border-bottom: 1px solid var(--upl-border);
    background: #fff;
}
.upl-squad-row:last-child { border-bottom: none; }
.upl-squad-row.upl-squad-b11 { background: linear-gradient(90deg, #E8F5E9 0%, #fff 100%); border-left: 3px solid var(--upl-win); }
.upl-squad-rank {
    font-weight: 700; color: var(--upl-muted); font-size: 11px;
    width: 22px; text-align: center; flex-shrink: 0;
}
.upl-squad-img {
    width: 48px; height: 48px; border-radius: 8px;
    background: #E0E0E0; background-size: cover; background-position: center;
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 700; color: #757575;
    flex-shrink: 0; box-shadow: 0 1px 3px rgba(0,0,0,.1);
}
.upl-squad-meta { flex: 1; min-width: 0; }
.upl-squad-name {
    font-size: 13px; font-weight: 700; color: var(--upl-text);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
}
.upl-squad-tier { font-size: 11px; color: var(--upl-muted); margin-top: 2px; }
.upl-squad-desc { font-size: 11px; color: #757575; margin-top: 3px; line-height: 1.4; }
.upl-squad-pts {
    font-size: 17px; font-weight: 800; color: var(--upl-primary);
    min-width: 36px; text-align: right; flex-shrink: 0;
}
.upl-role-badge {
    display: inline-block; padding: 1px 6px; border-radius: 3px;
    font-size: 9px; font-weight: 700; color: #fff;
}
.upl-role-bat { background: #1976D2; }
.upl-role-bowl { background: #E65100; }
.upl-b11-badge {
    display: inline-block; padding: 1px 6px; border-radius: 3px;
    font-size: 9px; font-weight: 700; background: var(--upl-win); color: #fff;
}

@media (min-width: 768px) {
    .upl-squad-img { width: 56px; height: 56px; }
    .upl-squad-name { font-size: 14px; }
    .upl-squad-pts { font-size: 18px; }
}

/* ============================================================
   v2.4 - PLAYER PROFILE HEADER (image + name + tier)
   ============================================================ */
.upl-prof-header {
    display: flex; align-items: center; gap: 14px;
    padding: 18px 16px; color: #fff;
    border-radius: var(--upl-radius);
    margin-bottom: 8px;
}
.upl-prof-header h2 { margin: 0; font-size: 20px; font-weight: 800; }
.upl-prof-stats {
    display: grid; grid-template-columns: repeat(7, 1fr);
    background: #fff; border: 1px solid var(--upl-border);
    border-radius: var(--upl-radius); margin-bottom: 8px;
    text-align: center; padding: 10px 6px;
}
.upl-prof-stat strong {
    display: block; font-size: 16px; color: var(--upl-primary); font-weight: 800;
}
.upl-prof-stat span {
    display: block; font-size: 9px; color: var(--upl-muted);
    text-transform: uppercase; letter-spacing: 0.5px; margin-top: 2px; font-weight: 600;
}
@media (max-width: 600px) {
    .upl-prof-stats { grid-template-columns: repeat(4, 1fr); }
    .upl-prof-stat { padding: 4px 2px; }
}

/* ============================================================
   v2.4.1 - PLAYER PROFILE TABS + MATCH HISTORY ROWS
   ============================================================ */
.upl-prof-tabs {
    display: flex; gap: 0; margin: 12px 0 6px;
    border-radius: var(--upl-radius); overflow: hidden;
    background: #fff; border: 1px solid var(--upl-border);
}
.upl-pp-tab {
    flex: 1; padding: 10px 6px;
    background: #fff; border: none; cursor: pointer;
    font-size: 12px; font-weight: 700; color: var(--upl-muted);
    border-right: 1px solid var(--upl-border);
    transition: all 0.15s;
}
.upl-pp-tab:last-child { border-right: none; }
.upl-pp-tab:hover { background: #F5F5F5; }
.upl-pp-tab.upl-pp-active { background: var(--upl-primary); color: #fff; }

.upl-pp-pane { background: #fff; border-radius: var(--upl-radius); margin-bottom: 8px; overflow: hidden; border: 1px solid var(--upl-border); }

/* Match-row in player profile */
.upl-pp-match { border-bottom: 1px solid var(--upl-border); }
.upl-pp-match:last-child { border-bottom: none; }
.upl-pp-match-row {
    display: flex; align-items: center; gap: 6px;
    padding: 10px 12px; text-decoration: none; color: inherit;
    background: #fff;
    flex-wrap: wrap;
}
.upl-pp-match-row:hover { background: #F8F9FA; }
.upl-pp-team-link {
    flex-shrink: 0; line-height: 0;
    text-decoration: none;
}
.upl-pp-own { font-weight: 800; font-size: 13px; color: var(--upl-primary); flex-shrink: 0; }
.upl-pp-vs { font-size: 10px; color: var(--upl-muted); font-weight: 600; }
.upl-pp-opp {
    flex: 1; min-width: 0; font-size: 12px; color: var(--upl-text);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.upl-pp-opp-score { font-weight: 600; font-size: 12px; color: var(--upl-muted); flex-shrink: 0; }
.upl-pp-tier {
    font-size: 9px; font-weight: 700; padding: 1px 5px; border-radius: 3px;
    background: #ECEFF1; color: #455A64; flex-shrink: 0;
}
.upl-pp-verdict {
    font-weight: 800; font-size: 14px; min-width: 18px; text-align: right; flex-shrink: 0;
}

/* Stat tables in batting/bowling tabs */
.upl-pp-stat-table { padding: 0; }
.upl-pp-stat-head {
    display: flex; justify-content: space-between;
    padding: 10px 16px; background: #F5F7FA;
    font-size: 11px; font-weight: 700; color: var(--upl-muted);
    text-transform: uppercase; letter-spacing: 0.5px;
    border-bottom: 2px solid var(--upl-border);
}
.upl-pp-stat-row {
    display: flex; justify-content: space-between; align-items: center;
    padding: 9px 16px; border-bottom: 1px solid var(--upl-border);
    font-size: 13px;
}
.upl-pp-stat-row:last-child { border-bottom: none; }
.upl-pp-stat-row.alt { background: #FAFBFC; }
.upl-pp-stat-row span { color: var(--upl-text); }
.upl-pp-stat-row strong { color: var(--upl-primary); font-weight: 800; }

@media (max-width: 480px) {
    .upl-pp-match-row { gap: 4px; padding: 8px 10px; }
    .upl-pp-opp { width: 100%; order: 99; }
    .upl-pp-tab { font-size: 11px; padding: 9px 4px; }
}

/* ============================================================
   v2.4.1 - MATCH CARD: granular clickable links
   ============================================================ */
.upl-mc-team-link, .upl-mc-player-link, .upl-mc-score-link, .upl-result-txt-link, .upl-match-id-link {
    text-decoration: none; color: inherit;
}
.upl-mc-team-link:hover { transform: scale(1.06); }
.upl-mc-player-link:hover { color: var(--upl-primary); text-decoration: underline; }
.upl-mc-score-link:hover { color: var(--upl-primary); }
.upl-result-txt-link:hover .upl-result-txt { text-decoration: underline; }

/* ============================================================
   v2.5 — EMPTY STATES (no S1 fallback suggestions)
   ============================================================ */
.upl-empty-card {
    background: linear-gradient(135deg, #F8FBFF 0%, #fff 100%);
    border: 1px solid var(--upl-border);
    border-radius: 12px;
    padding: 36px 20px;
    text-align: center;
    margin: 12px 8px;
}
.upl-empty-emoji { font-size: 38px; margin-bottom: 6px; line-height: 1; }
.upl-empty-card h3 {
    font-size: 16px; color: var(--upl-text); font-weight: 700;
    margin: 4px 0 6px;
}
.upl-empty-card p {
    font-size: 13px; color: var(--upl-muted);
    margin: 0; line-height: 1.55;
}

/* ============================================================
   v2.5 — STATS HUB (horizontal scrollable tab bar)
   ============================================================ */
.upl-hub-wrap { padding: 0; }
.upl-hub-tabs {
    display: flex; gap: 0; padding: 0 4px;
    overflow-x: auto; -webkit-overflow-scrolling: touch;
    background: #fff; border-bottom: 2px solid var(--upl-border);
    z-index: 50;
    scrollbar-width: none;
}
/* Tabs no longer sticky on any breakpoint (v2.7.18 — user preference).
   Sticky tabs were obscuring content and felt intrusive on long pages. */
.upl-hub-tabs::-webkit-scrollbar { display: none; }
.upl-hub-tab {
    padding: 12px 14px; font-size: 12px; font-weight: 700;
    color: var(--upl-muted); text-decoration: none;
    white-space: nowrap; flex-shrink: 0;
    border-bottom: 3px solid transparent;
    transition: all 0.18s ease;
    letter-spacing: 0.2px; text-transform: uppercase;
}
.upl-hub-tab:hover { color: var(--upl-primary); background: #F8FBFF; }
.upl-hub-tab.upl-hub-tab-active {
    color: var(--upl-primary);
    border-bottom-color: var(--upl-primary);
    background: linear-gradient(to top, rgba(11,83,148,0.06), transparent);
}
.upl-hub-content { padding-top: 4px; }
@media (min-width: 768px) {
    .upl-hub-tab { padding: 14px 18px; font-size: 13px; }
}

/* ============================================================
   v2.6 — UPL CONSTITUTION (Official Rulebook page)
   Editorial / serif-feel with cricket stadium palette
   ============================================================ */
.upl-const-wrap {
    max-width: 1080px;
    margin: 0 auto;
    padding: 0 14px 32px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 16px;
}
@media (min-width: 960px) {
    .upl-const-wrap {
        grid-template-columns: 260px 1fr;
        gap: 24px;
        padding: 0 20px 48px;
    }
}

/* Hero */
.upl-const-hero {
    grid-column: 1 / -1;
    background:
        linear-gradient(135deg, rgba(10,25,41,0.96), rgba(16,35,65,0.92), rgba(11,83,148,0.86)),
        radial-gradient(ellipse at top right, rgba(245,158,11,0.22), transparent 60%),
        radial-gradient(ellipse at bottom left, rgba(184,50,39,0.18), transparent 60%);
    color: #fff;
    padding: 36px 22px 32px;
    border-radius: 14px;
    text-align: center;
    position: relative;
    overflow: hidden;
    box-shadow: 0 12px 32px rgba(10,25,41,0.18);
}
.upl-const-hero::before {
    content: '';
    position: absolute;
    left: 0; right: 0; top: 0;
    height: 3px;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 50%, #B83227 100%);
    opacity: 0.85;
}
.upl-const-eyebrow {
    display: inline-block;
    font-family: var(--upl-font-display);
    font-size: 11px;
    font-weight: 800;
    color: #F59E0B;
    letter-spacing: 3px;
    text-transform: uppercase;
    margin-bottom: 8px;
    padding: 4px 12px;
    border: 1px solid rgba(245,158,11,0.4);
    border-radius: 4px;
}
.upl-const-hero h1 {
    font-family: var(--upl-font-display) !important;
    font-size: 44px !important;
    font-weight: 900 !important;
    letter-spacing: 0.3px;
    line-height: 1;
    text-transform: uppercase;
    color: #fff;
    margin: 0 0 8px;
    text-shadow: 0 2px 14px rgba(0,0,0,0.25);
}
@media (min-width: 768px) {
    .upl-const-hero h1 { font-size: 56px !important; }
}
.upl-const-sub {
    font-size: 14px;
    opacity: 0.88;
    margin-bottom: 14px;
    letter-spacing: 0.3px;
}
.upl-const-meta {
    display: flex; gap: 8px; justify-content: center; flex-wrap: wrap;
    font-size: 11px; opacity: 0.7; text-transform: uppercase; letter-spacing: 0.6px;
    font-weight: 600;
}

/* TOC */
.upl-const-toc {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 12px;
    padding: 16px 14px;
    box-shadow: 0 1px 2px rgba(15,23,42,0.04);
}
@media (min-width: 960px) {
    .upl-const-toc {
        position: sticky;
        top: 76px;
        align-self: start;
        max-height: calc(100vh - 100px);
        overflow-y: auto;
    }
}
.upl-const-toc-title {
    font-family: var(--upl-font-display);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    font-size: 12px;
    color: #1A6B3F;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 2px solid #E2E8F0;
}
.upl-const-toc ol {
    list-style: none;
    padding: 0;
    margin: 0;
    counter-reset: toc;
}
.upl-const-toc li {
    counter-increment: toc;
    margin: 0;
}
.upl-const-toc li a {
    display: block;
    padding: 6px 0 6px 26px;
    font-size: 12px;
    color: #334155;
    text-decoration: none;
    position: relative;
    line-height: 1.4;
    border-radius: 4px;
    transition: all 0.12s;
}
.upl-const-toc li a::before {
    content: counter(toc, decimal-leading-zero);
    position: absolute;
    left: 0;
    top: 6px;
    font-family: var(--upl-font-mono);
    font-size: 10px;
    color: #94A3B8;
    font-weight: 700;
}
.upl-const-toc li:last-child a::before { content: '⚠'; }
.upl-const-toc li a:hover {
    color: #1A6B3F;
    background: #E8F5EE;
    padding-left: 30px;
}

/* Body */
.upl-const-body {
    display: flex; flex-direction: column; gap: 14px;
}

.upl-const-sec {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 12px;
    padding: 22px;
    box-shadow: 0 1px 2px rgba(15,23,42,0.04);
    scroll-margin-top: 80px;
}
.upl-const-sec > header {
    display: flex; align-items: center; gap: 12px;
    margin-bottom: 14px;
    padding-bottom: 12px;
    border-bottom: 2px solid #E8F5EE;
}
.upl-const-num {
    flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    width: 38px; height: 38px;
    background: linear-gradient(135deg, #1A6B3F 0%, #0F4A2A 100%);
    color: #fff;
    border-radius: 50%;
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 17px;
    box-shadow: 0 2px 6px rgba(26,107,63,0.3);
}
.upl-const-sec > header h2 {
    margin: 0;
    font-size: 22px;
    color: #0A1929;
    font-family: var(--upl-font-display);
    font-weight: 800;
}
.upl-const-sec h3 {
    font-size: 14px;
    font-family: var(--upl-font-display);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #1A6B3F;
    margin: 18px 0 10px;
    padding-left: 10px;
    border-left: 3px solid #1A6B3F;
}

.upl-const-list {
    margin: 0 0 10px;
    padding-left: 22px;
    font-size: 14px;
    line-height: 1.65;
    color: #334155;
}
.upl-const-list li { margin-bottom: 6px; }
.upl-const-list li strong { color: #0F172A; }
.upl-const-list ul, .upl-const-list ol {
    margin-top: 6px;
    font-size: 13px;
    color: #475569;
}

.upl-const-sec p {
    font-size: 14px;
    line-height: 1.65;
    color: #334155;
    margin-bottom: 10px;
}

/* Tables */
.upl-const-table {
    width: 100%;
    border-collapse: collapse;
    margin: 10px 0;
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(15,23,42,0.04);
}
.upl-const-table th {
    background: linear-gradient(180deg, #0A1929 0%, #102341 100%);
    color: #fff;
    text-align: left;
    padding: 10px 14px;
    font-family: var(--upl-font-display);
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}
.upl-const-table td {
    padding: 10px 14px;
    border-bottom: 1px solid #E2E8F0;
    font-size: 13px;
    color: #334155;
}
.upl-const-table tbody tr:nth-child(even) td { background: #F8FAFC; }
.upl-const-table tbody tr:hover td { background: #E3EEF9; }
.upl-const-table tr.upl-const-tfoot td {
    background: #E8F5EE !important;
    font-weight: 700;
    color: #0A1929;
}
.upl-pts-win { color: #1A6B3F; font-weight: 700; font-family: var(--upl-font-mono); }
.upl-pts-loss { color: #B83227; font-weight: 700; font-family: var(--upl-font-mono); }

.upl-const-strength tr.upl-const-legendary td {
    background: linear-gradient(90deg, #FEF3C7 0%, #fff 100%) !important;
    font-weight: 700;
    color: #92400E;
}

/* Tier classification cards */
.upl-const-tier-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px;
    margin: 12px 0;
}
.upl-const-tier-card {
    padding: 14px;
    border-radius: 10px;
    color: #fff;
    position: relative;
    overflow: hidden;
}
.upl-const-tier-card p {
    color: rgba(255,255,255,0.92);
    font-size: 13px;
    margin: 0;
    line-height: 1.55;
}
.upl-const-tier-card p strong { color: #fff; }
.upl-const-tier-badge {
    display: inline-block;
    background: rgba(255,255,255,0.18);
    backdrop-filter: blur(4px);
    color: #fff;
    padding: 4px 10px;
    border-radius: 4px;
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 11px;
    letter-spacing: 0.8px;
    margin-bottom: 10px;
}
.upl-tier-plat-c { background: linear-gradient(135deg, #4A148C 0%, #7E57C2 100%); }
.upl-tier-gold-c { background: linear-gradient(135deg, #B07300 0%, #F9A825 60%, #FFB300 100%); }
.upl-tier-gold-c p, .upl-tier-gold-c p strong { color: #1F1300; }
.upl-tier-gold-c .upl-const-tier-badge { background: rgba(31,19,0,0.18); color: #1F1300; }
.upl-tier-silv-c { background: linear-gradient(135deg, #455A64 0%, #78909C 60%, #90A4AE 100%); }
.upl-tier-brnz-c { background: linear-gradient(135deg, #4E342E 0%, #8D6E63 60%, #A1887F 100%); }

/* Bracket */
.upl-const-bracket {
    display: flex; flex-direction: column; gap: 6px;
    margin: 10px 0;
}
.upl-const-bracket-row {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 14px;
    background: #F8FAFC;
    border-radius: 8px;
    font-size: 13px;
    border-left: 4px solid #0B5394;
}
.upl-const-bracket-row.upl-const-final {
    background: linear-gradient(90deg, #FEF3C7 0%, #FFFBEB 100%);
    border-left-color: #F59E0B;
    font-weight: 700;
}
.upl-const-bracket-tag {
    background: #0B5394;
    color: #fff;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-family: var(--upl-font-display);
    min-width: 90px;
    text-align: center;
}
.upl-const-final .upl-const-bracket-tag { background: #F59E0B; color: #1F1300; }

/* Callout */
.upl-const-callout {
    background: #E3EEF9;
    border-left: 4px solid #0B5394;
    padding: 10px 14px;
    border-radius: 6px;
    margin: 8px 0;
    font-size: 13px;
    color: #1E3A8A;
    line-height: 1.7;
}

.upl-const-warning {
    background: linear-gradient(90deg, #FEF3C7, #FFFBEB);
    border-left: 4px solid #F59E0B;
    padding: 12px 16px;
    border-radius: 6px;
    margin: 12px 0;
    font-size: 13px;
    color: #5D4037;
    line-height: 1.65;
}
.upl-const-warning strong { color: #92400E; }

/* Formula */
.upl-const-formula {
    background: linear-gradient(135deg, #0A1929, #102341);
    color: #FEF3C7;
    padding: 16px 18px;
    border-radius: 8px;
    text-align: center;
    font-family: var(--upl-font-display);
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.4px;
    margin: 10px 0;
    position: relative;
    overflow: hidden;
}
.upl-const-formula::before {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 2px;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 50%, #B83227 100%);
}

/* Awards */
.upl-const-awards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    margin: 12px 0;
}
.upl-const-award {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 10px;
    padding: 14px 12px 12px;
    text-align: center;
    transition: transform 0.15s, box-shadow 0.15s;
}
.upl-const-award:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(15,23,42,0.08);
}
.upl-const-award-pos {
    font-size: 28px;
    display: block;
    margin-bottom: 4px;
    line-height: 1;
}
.upl-const-award strong {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 13px;
    color: #0A1929;
    margin-bottom: 4px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}
.upl-const-award span {
    display: block;
    font-size: 13px;
    color: #1A6B3F;
    font-weight: 700;
    font-family: var(--upl-font-mono);
}

/* Acknowledgements */
.upl-const-ack {
    background: linear-gradient(135deg, #0A1929 0%, #102341 100%);
    color: #fff;
    border: none;
}
.upl-const-ack > header { border-bottom-color: rgba(255,255,255,0.92); }
.upl-const-ack > header h2 { color: #fff; }
.upl-const-ack .upl-const-num {
    background: linear-gradient(135deg, #F59E0B, #B07300);
    box-shadow: 0 2px 6px rgba(245,158,11,0.4);
}
.upl-const-ack-card {
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
    padding: 14px;
    margin-bottom: 10px;
}
.upl-const-ack-card h3 {
    color: #F59E0B;
    border-color: #F59E0B;
    margin-top: 0;
}
.upl-const-ack-card p {
    color: rgba(255,255,255,0.85);
    margin: 0;
    font-size: 13px;
}
.upl-const-ack-card strong { color: #fff; }

.upl-const-footer {
    text-align: center;
    padding: 20px 14px;
    color: #64748B;
    font-size: 13px;
}
.upl-const-footer p { margin: 4px 0; }

/* Mobile: hide sticky TOC, show inline at top */
@media (max-width: 959px) {
    .upl-const-toc {
        margin-bottom: 0;
    }
    .upl-const-toc ol {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 0;
    }
}

/* ============================================================
   v2.6 — UAS Alliance branding banner (homepage)
   Gold monogram crest on stadium navy with subtle gradient sheen
   ============================================================ */
.upl-uas-banner {
    display: flex;
    align-items: center;
    gap: 14px;
    margin: 10px 0;
    padding: 14px 18px;
    background:
        linear-gradient(135deg, #0A1929 0%, #102341 50%, #0F4A2A 130%),
        radial-gradient(ellipse at top right, rgba(245,158,11,0.18), transparent 60%);
    border-radius: 12px;
    text-decoration: none;
    color: #fff;
    box-shadow: 0 8px 22px rgba(10,25,41,0.22);
    position: relative;
    overflow: hidden;
    transition: transform 0.18s, box-shadow 0.18s;
    border: 1px solid rgba(245,158,11,0.18);
}
.upl-uas-banner:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 32px rgba(10,25,41,0.32);
    color: #fff;
}
.upl-uas-banner::before {
    content: '';
    position: absolute;
    left: 0; right: 0; top: 0;
    height: 2px;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 50%, #B83227 100%);
    opacity: 0.85;
}
.upl-uas-banner::after {
    content: '';
    position: absolute;
    top: -50%; right: -10%;
    width: 200px; height: 200%;
    background: linear-gradient(115deg, transparent 40%, rgba(245,158,11,0.08) 50%, transparent 60%);
    transform: rotate(15deg);
    pointer-events: none;
}

.upl-uas-crest {
    position: relative;
    width: 56px; height: 56px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.upl-uas-monogram {
    position: relative;
    z-index: 2;
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 18px;
    letter-spacing: 1px;
    color: #F59E0B;
    text-shadow: 0 2px 8px rgba(245,158,11,0.35);
    line-height: 1;
}
.upl-uas-ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid rgba(245,158,11,0.4);
    background: radial-gradient(circle, rgba(245,158,11,0.12) 0%, transparent 70%);
}
.upl-uas-ring::before,
.upl-uas-ring::after {
    content: '';
    position: absolute;
    inset: 4px;
    border-radius: 50%;
    border: 1px dashed rgba(245,158,11,0.25);
}
.upl-uas-ring::after {
    inset: 8px;
    border: 1px solid rgba(245,158,11,0.18);
    border-style: solid;
}

.upl-uas-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}
.upl-uas-eyebrow {
    font-family: var(--upl-font-display);
    font-size: 10px;
    font-weight: 800;
    color: #F59E0B;
    letter-spacing: 2px;
    text-transform: uppercase;
    line-height: 1;
}
.upl-uas-name {
    font-family: var(--upl-font-display);
    font-size: 18px;
    font-weight: 800;
    color: #fff;
    letter-spacing: 0.3px;
    line-height: 1.1;
    text-transform: uppercase;
}
.upl-uas-tag {
    font-size: 11px;
    color: rgba(255,255,255,0.92);
    font-weight: 500;
    margin-top: 4px;
    letter-spacing: 0.2px;
}

@media (min-width: 640px) {
    .upl-uas-crest { width: 64px; height: 64px; }
    .upl-uas-monogram { font-size: 21px; }
    .upl-uas-name { font-size: 22px; }
    .upl-uas-banner { padding: 16px 22px; }
}

/* ============================================================
   v2.6.1 — Registration Payment step (QR card + UPI + instructions)
   ============================================================ */
.upl-pay-qr-card {
    background: #fff;
    border: 2px dashed #CBD5E1;
    border-radius: 14px;
    padding: 22px 18px 18px;
    text-align: center;
    margin-bottom: 12px;
    transition: border-color 0.2s;
}
.upl-pay-qr-card:hover { border-color: #1A6B3F; }
.upl-pay-qr-label {
    font-size: 11px;
    color: #1A6B3F;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    margin-bottom: 14px;
    font-family: var(--upl-font-display);
}
.upl-pay-qr-img {
    max-width: 220px;
    width: 100%;
    height: auto;
    border-radius: 10px;
    box-shadow: 0 4px 18px rgba(15,23,42,0.1);
    display: block;
    margin: 0 auto 14px;
}
.upl-pay-upi-row {
    display: flex; align-items: center; justify-content: space-between;
    gap: 10px;
    background: #F1F5F9;
    padding: 10px 14px;
    border-radius: 8px;
    margin-top: 6px;
    text-align: left;
}
.upl-btn-copy {
    background: #1A6B3F;
    color: #fff;
    border: none;
    padding: 6px 14px;
    border-radius: 6px;
    font-weight: 700;
    font-size: 12px;
    cursor: pointer;
    letter-spacing: 0.3px;
    font-family: var(--upl-font-body);
    transition: background 0.15s;
}
.upl-btn-copy:hover { background: #0F4A2A; }
.upl-btn-copy.copied { background: #F59E0B; color: #1F1300; }

.upl-pay-instructions {
    background: linear-gradient(135deg, #FEF3C7 0%, #FFFBEB 100%);
    border-left: 4px solid #F59E0B;
    border-radius: 8px;
    padding: 12px 16px 12px 18px;
    margin-bottom: 12px;
}
.upl-pay-instr-title {
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 12px;
    color: #92400E;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    margin-bottom: 8px;
}
.upl-pay-instructions ol {
    margin: 0;
    padding-left: 20px;
    font-size: 13px;
    color: #5D4037;
    line-height: 1.7;
}
.upl-pay-instructions ol li { margin-bottom: 3px; }

/* ============================================================
   v2.6.5 — Constitution Page Polish (extended styling)
   ============================================================ */

/* Italic subtitle in hero */
.upl-const-sub-italic {
    font-style: italic;
    font-size: 13px;
    color: rgba(255,255,255,0.92);
    margin-bottom: 4px;
    letter-spacing: 0.3px;
}
.upl-const-dot { opacity: 0.5; padding: 0 2px; }
.upl-const-org-line {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid rgba(255,255,255,0.18);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1.8px;
    color: rgba(245,158,11,0.92);
    font-weight: 700;
}

/* Section header improvements with clause badge */
.upl-const-sec > header {
    display: flex; align-items: center; gap: 14px;
    margin-bottom: 16px;
    padding-bottom: 14px;
    border-bottom: 2px solid #E8F5EE;
}
.upl-const-sec > header > div { flex: 1; min-width: 0; }
.upl-const-sec > header h2 {
    margin: 0;
    line-height: 1.15;
}
.upl-const-clauses {
    display: block;
    font-family: var(--upl-font-mono);
    font-size: 10px;
    color: #94A3B8;
    font-weight: 600;
    margin-top: 3px;
    letter-spacing: 0.4px;
}

/* Inline clause tag (1.1, 1.2, etc) */
.upl-const-clause-tag {
    display: inline-block;
    background: #1A6B3F;
    color: #fff;
    font-family: var(--upl-font-mono);
    font-weight: 700;
    font-size: 10px;
    padding: 1px 7px;
    border-radius: 4px;
    margin-right: 6px;
    letter-spacing: 0.3px;
    vertical-align: 1px;
}

/* Sublist - nested under main list. v2.7.18: plain list, no bullets,
   no auto-numbering. Items render as plain rows for a cleaner reading flow. */
.upl-const-sublist {
    margin-top: 6px;
    margin-bottom: 4px;
    padding-left: 18px;
    font-size: 13px;
    color: #475569;
    line-height: 1.6;
    list-style: none;
}
.upl-const-sublist li {
    margin-bottom: 3px;
    position: relative;
    padding-left: 12px;
}
.upl-const-sublist li::before {
    content: "\2014";
    position: absolute;
    left: 0;
    color: #94A3B8;
    font-weight: 400;
}
.upl-const-sublist li strong { color: #0F172A; }

/* Emphasis paragraph */
.upl-const-emphasis {
    background: linear-gradient(135deg, #E8F5EE 0%, #F8FAFC 100%);
    border-left: 4px solid #1A6B3F;
    padding: 12px 14px;
    border-radius: 6px;
    font-size: 14px;
    color: #0F4A2A;
    margin: 12px 0;
}

/* 3-shift cards row */
.upl-const-shifts {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin: 10px 0;
}
.upl-const-shift {
    background: linear-gradient(135deg, #0A1929 0%, #102341 100%);
    color: #fff;
    border-radius: 8px;
    padding: 12px 8px;
    text-align: center;
    position: relative;
    overflow: hidden;
}
.upl-const-shift::before {
    content: '';
    position: absolute; left: 0; right: 0; top: 0; height: 2px;
    background: linear-gradient(90deg, #1A6B3F, #F59E0B);
}
.upl-const-shift-no {
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 11px;
    color: #F59E0B;
    letter-spacing: 1.5px;
    margin-bottom: 4px;
}
.upl-const-shift-time {
    font-family: var(--upl-font-mono);
    font-size: 12px;
    color: #fff;
    font-weight: 600;
}
@media (max-width: 480px) {
    .upl-const-shifts { gap: 4px; }
    .upl-const-shift { padding: 8px 4px; }
    .upl-const-shift-no { font-size: 9px; letter-spacing: 1px; }
    .upl-const-shift-time { font-size: 10px; }
}

/* Fee cards in section 5 */
.upl-const-fee-grid {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px;
    margin: 10px 0;
}
.upl-const-fee-card {
    border-radius: 10px;
    padding: 14px 12px;
    text-align: center;
    color: #fff;
    position: relative;
    overflow: hidden;
}
.upl-const-fee-card::after {
    content: '';
    position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
    background: rgba(255,255,255,0.3);
}
.upl-const-fee-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    font-weight: 700;
    opacity: 0.85;
    margin-bottom: 4px;
}
.upl-const-fee-amount {
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 26px;
    letter-spacing: 0.5px;
    line-height: 1;
}
.upl-const-fee-foot {
    font-size: 10px;
    opacity: 0.75;
    margin-top: 5px;
}
.upl-const-fee-captain { background: linear-gradient(135deg, #B83227, #8E1F18); }
.upl-const-fee-player { background: linear-gradient(135deg, #1A6B3F, #0F4A2A); }

/* Fixture cards in section 10 */
.upl-const-fixture-grid {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px;
    margin: 10px 0;
}
@media (min-width: 640px) {
    .upl-const-fixture-grid { grid-template-columns: repeat(4, 1fr); }
}
.upl-const-fix-card {
    padding: 14px 10px;
    border-radius: 8px;
    text-align: center;
    color: #fff;
    font-family: var(--upl-font-display);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: 0.5px;
}
.upl-const-fix-card.upl-tier-gold-c { color: #1F1300; }

/* Tier rules numbered list (inside tier cards) */
.upl-const-tier-rules {
    margin: 0;
    padding-left: 20px;
    color: rgba(255,255,255,0.92);
    font-size: 12px;
    line-height: 1.55;
}
.upl-const-tier-rules li { margin-bottom: 4px; }
.upl-const-tier-rules li strong { color: #fff; }
.upl-tier-gold-c .upl-const-tier-rules { color: rgba(31,19,0,0.92); }
.upl-tier-gold-c .upl-const-tier-rules li strong { color: #1F1300; }

/* Tier rows in section 9 squad composition table */
.upl-tier-plat-row td:first-child { color: #4A148C; }
.upl-tier-gold-row td:first-child { color: #B07300; }
.upl-tier-silv-row td:first-child { color: #455A64; }
.upl-tier-brnz-row td:first-child { color: #4E342E; }

/* Warning callout for section 6 */
.upl-const-warning {
    background: linear-gradient(135deg, #FFF7E6, #FEF3C7);
    border: 1px solid #FBBF24;
    border-radius: 10px;
    padding: 14px 16px 12px 18px;
    margin: 14px 0 6px;
    box-shadow: 0 2px 6px rgba(245,158,11,0.08);
}
.upl-const-warning-title {
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 13px;
    color: #92400E;
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.7px;
}
.upl-const-warning ul {
    margin: 0;
    color: #5D4037;
    font-size: 13px;
    line-height: 1.6;
}
.upl-const-warning ul li strong { color: #92400E; }

/* Awards styling enhancements */
.upl-const-award-gold {
    background: linear-gradient(135deg, #FEF3C7 0%, #FBBF24 100%) !important;
    border: 2px solid #F59E0B !important;
    transform: scale(1.02);
}
.upl-const-award-gold strong { color: #92400E !important; }
.upl-const-award-gold span { color: #B07300 !important; font-size: 14px !important; }

.upl-const-award-silver {
    background: linear-gradient(135deg, #F1F5F9 0%, #CBD5E1 100%) !important;
    border: 2px solid #94A3B8 !important;
}
.upl-const-award-silver strong { color: #334155 !important; }
.upl-const-award-silver span { color: #475569 !important; }

.upl-const-award-hof {
    background: linear-gradient(135deg, #102341, #0A1929) !important;
    color: #fff !important;
    border: 2px solid #F59E0B !important;
    position: relative;
}
.upl-const-award-hof::before {
    content: '';
    position: absolute; left: 0; right: 0; top: 0; height: 2px;
    background: linear-gradient(90deg, #1A6B3F, #F59E0B, #B83227);
}
.upl-const-award-hof strong { color: #F59E0B !important; }
.upl-const-award-hof span { color: rgba(255,255,255,0.85) !important; font-size: 13px !important; }

/* Acknowledgement section — improved */
.upl-const-ack-card h3 {
    display: flex; align-items: center; gap: 8px;
    margin: 0 0 8px;
    border: none;
    padding: 0;
}
.upl-const-ack-letter {
    display: inline-flex; align-items: center; justify-content: center;
    width: 26px; height: 26px;
    background: linear-gradient(135deg, #F59E0B, #B07300);
    color: #1F1300;
    border-radius: 50%;
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 14px;
    box-shadow: 0 2px 6px rgba(245,158,11,0.35);
}
.upl-const-ack-card ul li strong { color: #F59E0B; }

/* Final footer seal */
.upl-const-footer {
    text-align: center;
    padding: 36px 14px 24px;
    color: #64748B;
    font-size: 12px;
    border-top: 2px dashed #E2E8F0;
    margin-top: 16px;
}
.upl-const-footer-seal {
    width: 78px; height: 78px;
    margin: 0 auto 12px;
    border-radius: 50%;
    background:
        radial-gradient(circle, #FEF3C7 0%, #F59E0B 70%, #B07300 100%);
    border: 3px double #B07300;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    box-shadow: 0 4px 12px rgba(245,158,11,0.3);
    position: relative;
}
.upl-const-footer-seal::before,
.upl-const-footer-seal::after {
    content: '';
    position: absolute;
    width: 18px; height: 2px;
    background: #B07300;
}
.upl-const-footer-seal::before { top: -2px; left: 50%; transform: translateX(-50%); }
.upl-const-footer-seal::after  { bottom: -2px; left: 50%; transform: translateX(-50%); }
.upl-const-seal-text {
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 22px;
    color: #1F1300;
    line-height: 1;
    letter-spacing: 0.5px;
}
.upl-const-seal-year {
    font-family: var(--upl-font-mono);
    font-weight: 700;
    font-size: 11px;
    color: #1F1300;
    background: #1F1300;
    color: #F59E0B;
    padding: 1px 6px;
    border-radius: 2px;
    margin-top: 2px;
    letter-spacing: 1px;
}
.upl-const-footer-main {
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 14px;
    color: #0F172A;
    margin: 0 0 4px;
    letter-spacing: 0.4px;
    text-transform: uppercase;
}
.upl-const-footer-org {
    font-size: 12px;
    color: #1A6B3F;
    margin: 0 0 8px;
    font-weight: 700;
}
.upl-const-footer-fine {
    font-size: 11px;
    color: #94A3B8;
    margin: 0;
    max-width: 480px;
    margin: 0 auto;
    line-height: 1.55;
}

/* Smooth scroll for TOC clicks */
html { scroll-behavior: smooth; }

/* ============================================================
   v2.6.6 — Constitution mobile overflow fixes + tab refinement
   ============================================================ */

/* Wrapper - prevent horizontal scroll on small screens */
.upl-const-wrap { overflow-x: hidden; }
.upl-const-body { min-width: 0; }
.upl-const-sec { min-width: 0; overflow: hidden; }

/* Tables need horizontal scroll inside their card, not on body */
.upl-const-sec .upl-const-table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
}
.upl-const-sec .upl-const-table thead,
.upl-const-sec .upl-const-table tbody,
.upl-const-sec .upl-const-table tr {
    display: table;
    width: 100%;
    table-layout: fixed;
}
.upl-const-sec .upl-const-table th,
.upl-const-sec .upl-const-table td {
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: anywhere;
}

/* Hero h1 - cap on small viewports */
@media (max-width: 480px) {
    .upl-const-hero { padding: 28px 16px 24px; }
    .upl-const-hero h1 { font-size: 32px !important; line-height: 1.05; letter-spacing: 0; }
    .upl-const-sub-italic { font-size: 12px; }
    .upl-const-meta { font-size: 10px; flex-wrap: wrap; }
    .upl-const-meta span { white-space: normal; }
    .upl-const-org-line { font-size: 10px; letter-spacing: 1.2px; }

    /* Section header tightens */
    .upl-const-sec { padding: 16px 14px; }
    .upl-const-sec > header { gap: 10px; padding-bottom: 10px; margin-bottom: 12px; }
    .upl-const-sec > header h2 { font-size: 17px; }
    .upl-const-num { width: 32px; height: 32px; font-size: 14px; }
    .upl-const-clauses { font-size: 9px; }
    .upl-const-sec h3 { font-size: 12px; }

    /* Lists tighter */
    .upl-const-list { padding-left: 18px; font-size: 13px; line-height: 1.55; }
    .upl-const-sublist { padding-left: 14px; font-size: 12px; }
    .upl-const-clause-tag { font-size: 9px; padding: 1px 5px; }

    /* 3-shift cards stack to 1 column on tiny screens */
    .upl-const-shifts { grid-template-columns: 1fr; gap: 4px; }
    .upl-const-shift { padding: 8px; display: flex; justify-content: space-between; align-items: center; }
    .upl-const-shift-no { margin-bottom: 0; }

    /* Fee grid - smaller cards */
    .upl-const-fee-card { padding: 10px 8px; }
    .upl-const-fee-amount { font-size: 22px; }
    .upl-const-fee-label { font-size: 10px; letter-spacing: 0.8px; }

    /* Fixture grid - 2-col stays */
    .upl-const-fix-card { padding: 10px 6px; font-size: 11px; }

    /* Tier cards - one column on very small */
    .upl-const-tier-grid { grid-template-columns: 1fr; }
    .upl-const-tier-card { padding: 12px; }

    /* Bracket - rows compress */
    .upl-const-bracket-row { padding: 8px 10px; font-size: 12px; gap: 8px; }
    .upl-const-bracket-tag { min-width: 78px; font-size: 9px; padding: 2px 6px; }

    /* Formula box - smaller font */
    .upl-const-formula { font-size: 12px; padding: 12px; letter-spacing: 0; }

    /* Awards - 2 col on mobile */
    .upl-const-awards { grid-template-columns: repeat(2, 1fr); gap: 6px; }
    .upl-const-award { padding: 10px 6px 8px; }
    .upl-const-award-pos { font-size: 22px; }
    .upl-const-award strong { font-size: 11px; letter-spacing: 0.2px; }
    .upl-const-award span { font-size: 11px; }

    /* Acknowledge cards tight */
    .upl-const-ack { padding: 16px 14px; }
    .upl-const-ack-card { padding: 12px; }
    .upl-const-ack-card h3 { font-size: 13px; gap: 6px; }
    .upl-const-ack-letter { width: 22px; height: 22px; font-size: 12px; }

    /* Footer */
    .upl-const-footer { padding: 24px 12px 16px; }
    .upl-const-footer-seal { width: 64px; height: 64px; }
    .upl-const-seal-text { font-size: 18px; }
    .upl-const-seal-year { font-size: 9px; }
    .upl-const-footer-main { font-size: 12px; }
    .upl-const-footer-fine { font-size: 10px; }

    /* TOC inline grid - 1 column for readability */
    .upl-const-toc { padding: 12px; }
    .upl-const-toc ol { grid-template-columns: 1fr; }
    .upl-const-toc li a { padding: 5px 0 5px 24px; font-size: 11px; }

    /* Warning callout - tighter padding */
    .upl-const-warning { padding: 10px 12px; }
    .upl-const-warning ul { font-size: 12px; }
}

/* ============================================================
   Stats Hub - refined tab design with gradient underline animation
   ============================================================ */
.upl-hub-tabs {
    display: flex;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
    background: linear-gradient(180deg, #fff 0%, #F8FAFC 100%);
    border-bottom: 1px solid #E2E8F0;
    z-index: 5;
    margin: 0 -14px 12px;
    padding: 0 14px;
    scrollbar-width: thin;
    scrollbar-color: #CBD5E1 transparent;
    box-shadow: 0 2px 8px rgba(15,23,42,0.04);
}
/* Sticky removed v2.7.18 - non-intrusive scrolling preferred */
.upl-hub-tabs::-webkit-scrollbar { height: 3px; }
.upl-hub-tabs::-webkit-scrollbar-track { background: transparent; }
.upl-hub-tabs::-webkit-scrollbar-thumb { background: #CBD5E1; border-radius: 2px; }

.upl-hub-tab {
    flex-shrink: 0;
    padding: 12px 14px 12px;
    font-size: 12px;
    font-weight: 700;
    color: #64748B;
    text-decoration: none;
    white-space: nowrap;
    position: relative;
    transition: color 0.18s, background 0.18s;
    letter-spacing: 0.3px;
    border: none;
    background: transparent;
}
.upl-hub-tab::after {
    content: '';
    position: absolute;
    left: 50%; bottom: 0;
    height: 3px;
    width: 0;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 50%, #B83227 100%);
    border-radius: 2px 2px 0 0;
    transform: translateX(-50%);
    transition: width 0.22s cubic-bezier(0.4, 0, 0.2, 1);
}
.upl-hub-tab:hover {
    color: #0F172A;
    background: rgba(26,107,63,0.04);
}
.upl-hub-tab:hover::after { width: 50%; }
.upl-hub-tab.active {
    color: #0F172A;
    background: rgba(26,107,63,0.06);
}
.upl-hub-tab.active::after { width: calc(100% - 28px); }

/* Subtle scroll hint - fade out at right edge */
.upl-hub-tabs-container {
    position: relative;
}
.upl-hub-tabs-container::after {
    content: '';
    position: absolute;
    right: 0; top: 0; bottom: 1px;
    width: 24px;
    background: linear-gradient(90deg, transparent, #fff);
    pointer-events: none;
    opacity: 0.6;
}

@media (max-width: 480px) {
    .upl-hub-tab { padding: 10px 11px; font-size: 11px; }
}

/* ============================================================
   Public Player Profile - character grid with Best 11 highlight
   ============================================================ */
.upl-pp-meta-row {
    display: flex; flex-wrap: wrap; gap: 8px;
    padding: 10px 14px; font-size: 11px;
    color: #475569;
    background: #F8FAFC;
    border-radius: 8px;
    margin: 0 14px 12px;
    border-left: 3px solid #1A6B3F;
}
.upl-pp-meta-row strong { color: #0F172A; }
.upl-pp-meta-row .upl-pp-reg-time {
    font-family: var(--upl-font-mono);
    color: #1A6B3F;
    font-weight: 700;
}

.upl-pp-squad-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 4px 6px;
    margin-top: 4px;
}
.upl-pp-squad-title {
    font-family: var(--upl-font-display);
    font-size: 13px;
    font-weight: 800;
    color: #0F172A;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.upl-pp-squad-count {
    font-size: 11px;
    color: #94A3B8;
    font-weight: 600;
}
.upl-pp-best11-badge {
    display: inline-block;
    background: linear-gradient(135deg, #F59E0B, #B07300);
    color: #1F1300;
    font-size: 9px;
    font-weight: 800;
    padding: 2px 7px;
    border-radius: 3px;
    letter-spacing: 0.6px;
    text-transform: uppercase;
}

.upl-pp-char-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
    gap: 6px;
}
.upl-pp-char-card {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 8px;
    padding: 8px 6px 6px;
    text-align: center;
    position: relative;
    transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s;
    overflow: hidden;
}
.upl-pp-char-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 14px rgba(15,23,42,0.08);
    border-color: #1A6B3F;
}
.upl-pp-char-card.upl-pp-best11 {
    border: 2px solid #F59E0B;
    background: linear-gradient(180deg, #FFFBEB 0%, #fff 30%);
    box-shadow: 0 2px 6px rgba(245,158,11,0.12);
}
.upl-pp-char-card.upl-pp-best11::before {
    content: '\2605';
    position: absolute;
    top: 3px; right: 4px;
    color: #F59E0B;
    font-size: 10px;
}
.upl-pp-char-img {
    width: 56px;
    height: 56px;
    margin: 0 auto 6px;
    border-radius: 6px;
    background-size: cover;
    background-position: center;
    background-color: #E2E8F0;
    background-repeat: no-repeat;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 11px;
    color: #94A3B8;
    border: 1px solid #CBD5E1;
}
.upl-pp-char-name {
    font-size: 11px;
    font-weight: 700;
    color: #0F172A;
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin-bottom: 2px;
}
.upl-pp-char-tier {
    font-size: 9px;
    color: #475569;
    font-weight: 600;
    line-height: 1.2;
    margin-bottom: 3px;
}
.upl-pp-char-pts {
    display: inline-block;
    background: #0F172A;
    color: #F59E0B;
    font-family: var(--upl-font-mono);
    font-size: 11px;
    font-weight: 800;
    padding: 1px 6px;
    border-radius: 3px;
    letter-spacing: 0.3px;
}
.upl-pp-char-card.upl-pp-best11 .upl-pp-char-pts {
    background: linear-gradient(135deg, #F59E0B, #B07300);
    color: #1F1300;
}
.upl-pp-char-cat {
    position: absolute;
    top: 3px; left: 4px;
    font-size: 8px;
    font-weight: 700;
    padding: 1px 4px;
    border-radius: 2px;
    background: rgba(15,23,42,0.78);
    color: #fff;
    letter-spacing: 0.3px;
    text-transform: uppercase;
}
.upl-pp-char-cat.is-exclusive { background: #4A148C; }
.upl-pp-char-cat.is-sp { background: #B07300; }

/* ============================================================
   Public Star-up Log - live 24h cooldown countdown
   ============================================================ */
.upl-starup-card {
    display: grid;
    grid-template-columns: 60px 1fr auto;
    gap: 12px;
    align-items: center;
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 10px;
    padding: 12px;
    margin-bottom: 8px;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.upl-starup-card:hover {
    border-color: #F59E0B;
    box-shadow: 0 4px 10px rgba(245,158,11,0.08);
}
.upl-starup-img {
    width: 60px; height: 60px;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    background-color: #F1F5F9;
    border: 1px solid #CBD5E1;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 13px;
    color: #94A3B8;
}
.upl-starup-info { min-width: 0; }
.upl-starup-pname {
    font-size: 13px;
    font-weight: 800;
    color: #0F172A;
    line-height: 1.3;
}
.upl-starup-meta {
    font-size: 10px;
    color: #64748B;
    margin: 2px 0;
    font-family: var(--upl-font-mono);
}
.upl-starup-team-badge {
    display: inline-block;
    font-size: 9px;
    font-weight: 700;
    padding: 1px 5px;
    background: #1A6B3F;
    color: #fff;
    border-radius: 3px;
    letter-spacing: 0.4px;
    margin-right: 4px;
}
.upl-starup-char {
    font-size: 12px;
    color: #0F172A;
    font-weight: 700;
    margin-top: 4px;
}
.upl-starup-progress {
    display: flex; align-items: center; gap: 6px;
    font-family: var(--upl-font-mono);
    font-size: 11px;
    color: #1A6B3F;
    font-weight: 700;
    margin-top: 2px;
}
.upl-starup-arrow {
    color: #F59E0B;
    font-weight: 900;
    font-size: 14px;
    line-height: 1;
}
.upl-starup-stars-from {
    color: #94A3B8;
    text-decoration: line-through;
    text-decoration-color: #CBD5E1;
}
.upl-starup-stars-to {
    color: #B07300;
    background: #FEF3C7;
    padding: 1px 6px;
    border-radius: 3px;
}

.upl-starup-timer {
    text-align: right;
    min-width: 110px;
}
.upl-starup-timer-label {
    font-size: 9px;
    color: #94A3B8;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    font-weight: 700;
    margin-bottom: 2px;
}
.upl-starup-countdown {
    font-family: var(--upl-font-mono);
    font-size: 14px;
    font-weight: 800;
    color: #B83227;
    letter-spacing: 0.5px;
    line-height: 1.1;
}
.upl-starup-countdown.is-ready {
    color: #1A6B3F;
}
.upl-starup-status-pill {
    display: inline-block;
    margin-top: 3px;
    font-size: 9px;
    font-weight: 800;
    padding: 2px 7px;
    border-radius: 3px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}
.upl-starup-pill-cooling { background: #FEE2E2; color: #B83227; }
.upl-starup-pill-ready   { background: #D1FAE5; color: #1A6B3F; }
.upl-starup-pill-pending { background: #FEF3C7; color: #92400E; }

@media (max-width: 480px) {
    .upl-starup-card { grid-template-columns: 48px 1fr; padding: 10px; gap: 8px; }
    .upl-starup-img { width: 48px; height: 48px; }
    .upl-starup-timer { grid-column: 1 / -1; text-align: left; margin-top: 4px; padding-top: 8px; border-top: 1px dashed #E2E8F0; min-width: 0; display: flex; align-items: center; justify-content: space-between; }
    .upl-starup-timer-label { margin-bottom: 0; }
    .upl-starup-countdown { font-size: 13px; }
}

/* ============================================================
   v2.6.8 — Homepage public-pages grid + complaint history cards
   ============================================================ */
.upl-public-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin: 14px 0;
}
@media (max-width: 640px) {
    .upl-public-grid { grid-template-columns: 1fr; gap: 8px; }
}
.upl-public-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 14px;
    border-radius: 12px;
    text-decoration: none;
    color: #fff;
    position: relative;
    overflow: hidden;
    transition: transform 0.18s, box-shadow 0.18s;
    min-height: 80px;
}
.upl-public-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
}
.upl-public-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 20px rgba(15,23,42,0.18);
}
.upl-public-players  { background: linear-gradient(135deg, #1A6B3F 0%, #0F4A2A 100%); }
.upl-public-starups  { background: linear-gradient(135deg, #B07300 0%, #92400E 100%); }
.upl-public-standings{ background: linear-gradient(135deg, #0B5394 0%, #082F5E 100%); }

.upl-public-icon {
    font-size: 30px;
    line-height: 1;
    flex-shrink: 0;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,0.2));
}
.upl-public-meta { flex: 1; min-width: 0; }
.upl-public-label {
    font-size: 10px;
    color: rgba(255,255,255,0.92);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    font-weight: 700;
    margin-bottom: 2px;
}
.upl-public-title {
    font-family: var(--upl-font-display);
    font-size: 18px;
    font-weight: 900;
    letter-spacing: 0.2px;
    color: #fff;
    line-height: 1.1;
    margin-bottom: 2px;
}
.upl-public-stat {
    font-size: 11px;
    color: rgba(255,255,255,0.92);
    font-family: var(--upl-font-mono);
}
.upl-public-arrow {
    font-size: 22px;
    font-weight: 900;
    color: rgba(255,255,255,0.92);
    transition: transform 0.18s;
    flex-shrink: 0;
}
.upl-public-card:hover .upl-public-arrow { transform: translateX(4px); color: #fff; }

@media (max-width: 480px) {
    .upl-public-card { padding: 12px; min-height: 64px; }
    .upl-public-icon { font-size: 24px; }
    .upl-public-title { font-size: 16px; }
    .upl-public-label { font-size: 9px; letter-spacing: 0.5px; }
    .upl-public-stat { font-size: 10px; }
}

/* Player complaint history cards */
.upl-pc-card:hover .upl-pc-head { background: #F1F5F9; }
.upl-pc-head { transition: background 0.15s; }
.upl-pc-arrow { transition: transform 0.18s; }

/* ============================================================
   v2.6.9 — Constitution readability + Awards centering
   Addressing user complaints about font/bg contrast issues
   ============================================================ */

/* Fix faded gradient tier cards - keep them darker so white text stays readable */
.upl-tier-silv-c {
    background: linear-gradient(135deg, #37474F 0%, #546E7A 70%, #607D8B 100%) !important;
}
.upl-tier-brnz-c {
    background: linear-gradient(135deg, #3E2723 0%, #5D4037 70%, #6D4C41 100%) !important;
}
.upl-tier-plat-c {
    background: linear-gradient(135deg, #2E0E5C 0%, #4A148C 60%, #5E1FAA 100%) !important;
}
/* Brighter, fuller-saturation gold for better contrast with dark text */
.upl-tier-gold-c {
    background: linear-gradient(135deg, #FFB300 0%, #FF8F00 100%) !important;
}
.upl-tier-gold-c p,
.upl-tier-gold-c p strong,
.upl-tier-gold-c .upl-const-tier-rules,
.upl-tier-gold-c .upl-const-tier-rules li,
.upl-tier-gold-c .upl-const-tier-rules li strong {
    color: #1A0F00 !important;
    font-weight: 600;
}
.upl-tier-gold-c .upl-const-tier-badge {
    background: rgba(26,15,0,0.85) !important;
    color: #FFB300 !important;
}

/* Tier rules text - ensure full opacity white on all tier cards */
.upl-const-tier-rules {
    color: rgba(255,255,255,0.98) !important;
}
.upl-const-tier-rules li {
    color: rgba(255,255,255,0.96) !important;
    font-weight: 500;
}
.upl-const-tier-rules li strong {
    color: #fff !important;
    font-weight: 800;
}

/* Tier card padding - more breathing room */
.upl-const-tier-card {
    padding: 18px 16px !important;
    box-shadow: 0 4px 12px rgba(15,23,42,0.18);
}

/* TOC links - make non-active state more visible */
.upl-const-toc li a {
    color: #0F172A !important;
    font-weight: 600;
}
.upl-const-toc li a:hover {
    background: #E8F5E9 !important;
    color: #0F4A2A !important;
}

/* Sub-italic in hero - improve readability against dark bg */
.upl-const-sub-italic {
    color: rgba(255,255,255,0.92) !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.2);
}
.upl-const-meta {
    color: rgba(255,255,255,0.85) !important;
}
.upl-const-org-line {
    color: #FBBF24 !important; /* Stronger amber for the gold strip */
}

/* Sublist on light bg - was too gray */
.upl-const-sublist {
    color: #334155 !important; /* was #475569 - now darker, more readable */
}
.upl-const-sublist li { color: #334155; }

/* Bracket rows text */
.upl-const-bracket-row {
    color: #0F172A !important;
    background: #FFFFFF !important;
    border: 1px solid #E2E8F0;
    border-left: 4px solid #0B5394;
}
.upl-const-bracket-row.upl-const-final {
    background: linear-gradient(90deg, #FEF3C7 0%, #FDE68A 100%) !important;
    color: #5B3A00 !important;
    border-left-color: #F59E0B;
}
.upl-const-bracket-row.upl-const-final .upl-const-bracket-tag {
    background: #B07300;
}

/* Fee cards - text on red gradient was sometimes washed out */
.upl-const-fee-card { color: #fff !important; }
.upl-const-fee-card .upl-const-fee-amount { text-shadow: 0 1px 2px rgba(0,0,0,0.25); }
.upl-const-fee-card .upl-const-fee-foot { color: rgba(255,255,255,0.92) !important; }

/* Shift cards - improve readability */
.upl-const-shift {
    background: linear-gradient(135deg, #0A1929 0%, #1A2D4E 100%) !important;
    box-shadow: 0 2px 6px rgba(15,23,42,0.18);
}
.upl-const-shift-time { color: #fff !important; text-shadow: 0 1px 2px rgba(0,0,0,0.3); }

/* Acknowledgement cards - white sub-list on dark bg needs full opacity */
.upl-const-ack-card p,
.upl-const-ack-card ul li {
    color: rgba(255,255,255,0.95) !important;
}
.upl-const-ack-card p strong,
.upl-const-ack-card ul li strong {
    color: #FBBF24 !important; /* Amber pop for highlights on dark navy */
    font-weight: 800;
}

/* Section body paragraph text - ensure dark on light */
.upl-const-sec p {
    color: #1E293B !important; /* was #475569 - darker for readability */
    font-weight: 400;
}
.upl-const-list { color: #1E293B !important; }
.upl-const-list li { color: #1E293B; }

/* Clauses note - make less faded */
.upl-const-clauses { color: #64748B !important; }

/* Warning callout text - boost contrast */
.upl-const-warning ul {
    color: #4E2A04 !important; /* darker than #5D4037 */
}
.upl-const-warning-title { color: #7C2D12 !important; }

/* Section number badge stronger drop shadow */
.upl-const-num {
    box-shadow: 0 4px 8px rgba(26,107,63,0.3) !important;
}

/* Add subtle paper texture to body for less stark white */
.upl-const-body {
    background: linear-gradient(180deg, #FCFCFD 0%, #F8F9FA 100%);
    background-image:
        linear-gradient(180deg, #FCFCFD 0%, #F8F9FA 100%),
        repeating-linear-gradient(0deg, rgba(15,23,42,0.012) 0px, rgba(15,23,42,0.012) 1px, transparent 1px, transparent 28px);
}

.upl-const-sec:not(.upl-const-ack):not(.upl-const-tier-sec):not(.upl-const-fee-sec) {
    background: #FFFFFF !important;
    border: 1px solid #E2E8F0;
    box-shadow: 0 1px 3px rgba(15,23,42,0.04);
}
/* Preserve dark backgrounds for sections designed with light text on them.
   These were broken by a too-greedy !important override in earlier audit. */
.upl-const-sec.upl-const-ack {
    background: linear-gradient(135deg, #0A1929 0%, #102341 100%) !important;
    color: #fff !important;
    border: none !important;
}
.upl-const-sec.upl-const-ack > header h2,
.upl-const-sec.upl-const-ack .upl-const-clauses {
    color: rgba(255,255,255,0.95) !important;
}
/* Ack-card on dark bg: text must stay readable */
.upl-const-ack-card {
    background: rgba(255,255,255,0.06) !important;
    border: 1px solid rgba(255,255,255,0.12) !important;
}
.upl-const-ack-card h3 {
    color: #FBBF24 !important;
}
.upl-const-ack-card p,
.upl-const-ack-card ul li,
.upl-const-ack-card .upl-const-sublist,
.upl-const-ack-card .upl-const-sublist li {
    color: rgba(255,255,255,0.92) !important;
}
.upl-const-ack-card strong,
.upl-const-ack-card p strong,
.upl-const-ack-card ul li strong,
.upl-const-ack-card .upl-const-sublist li strong {
    color: #FBBF24 !important;
    font-weight: 800;
}
/* Letter badge (A, B, C, D, E) - solid amber on white circle */
.upl-const-ack-card .upl-const-ack-letter {
    background: linear-gradient(135deg, #F59E0B, #B07300) !important;
    color: #fff !important;
    box-shadow: 0 2px 8px rgba(245,158,11,0.4);
}

/* ============================================================
   CENTER REWARDS SECTION (Section 18)
   Last awards section now centered, smaller max-width, prominent
   ============================================================ */
#sec-18 {
    text-align: center;
    padding: 30px 20px;
}
#sec-18 > header {
    justify-content: center;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    border-bottom: none !important;
    padding-bottom: 4px;
}
#sec-18 > header > div { text-align: center; flex: none; }
#sec-18 > header h2 {
    font-size: 28px;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 50%, #B83227 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

.upl-const-awards {
    max-width: 640px;
    margin: 16px auto 0;
    justify-content: center;
    grid-template-columns: repeat(auto-fit, minmax(140px, 180px));
    justify-items: center;
}
.upl-const-award {
    min-width: 140px;
    max-width: 200px;
    width: 100%;
    padding: 16px 12px;
}
@media (max-width: 480px) {
    #sec-18 { padding: 20px 12px; }
    #sec-18 > header h2 { font-size: 22px; }
    .upl-const-awards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
    .upl-const-award { padding: 12px 8px; min-width: 0; }
}

/* ============================================================
   v2.6.10 — Registered Players (public list) card grid
   ============================================================ */
.upl-rp-hero {
    background: linear-gradient(135deg, #0A1929 0%, #102341 100%);
    color: #fff;
    border-radius: 12px;
    padding: 22px 18px 18px;
    text-align: center;
    position: relative;
    overflow: hidden;
    margin-bottom: 14px;
}
.upl-rp-hero::before {
    content: '';
    position: absolute; top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 50%, #B83227 100%);
}
.upl-rp-hero-title {
    font-family: var(--upl-font-display);
    font-size: 24px;
    font-weight: 900;
    letter-spacing: 0.4px;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
}
.upl-rp-hero-sub {
    font-size: 12px;
    color: rgba(255,255,255,0.92);
    margin-top: 3px;
    font-family: var(--upl-font-mono);
}
.upl-rp-tier-strip {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,0.15);
}
.upl-rp-tc {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.6px;
    background: rgba(255,255,255,0.12);
    color: #fff;
    text-transform: uppercase;
}
.upl-rp-tc-plat { background: #5E1FAA; }
.upl-rp-tc-gold { background: #B07300; color: #1F1300; }
.upl-rp-tc-silv { background: #546E7A; }
.upl-rp-tc-brnz { background: #5D4037; }

.upl-rp-filterbar {
    display: flex; gap: 6px;
    margin-bottom: 10px; flex-wrap: wrap;
}
.upl-rp-filterbar select {
    padding: 7px 10px;
    border: 1px solid #CBD5E1;
    border-radius: 6px;
    font-size: 12px;
    background: #fff;
    flex: 1;
    min-width: 100px;
    cursor: pointer;
}

.upl-rp-empty {
    text-align: center;
    background: #fff;
    padding: 40px 16px;
    border-radius: 12px;
    border: 1px dashed #E2E8F0;
}

.upl-rp-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 10px;
}
.upl-rp-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px;
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
    position: relative;
    overflow: hidden;
}
.upl-rp-card::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
    background: #CBD5E1;
}
.upl-rp-tier-plat::before { background: linear-gradient(180deg, #5E1FAA, #2E0E5C); }
.upl-rp-tier-gold::before { background: linear-gradient(180deg, #FFB300, #FF8F00); }
.upl-rp-tier-silv::before { background: linear-gradient(180deg, #607D8B, #37474F); }
.upl-rp-tier-brnz::before { background: linear-gradient(180deg, #6D4C41, #3E2723); }
.upl-rp-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(15,23,42,0.10);
    border-color: #1A6B3F;
}

.upl-rp-photo {
    width: 56px; height: 56px;
    border-radius: 50%;
    background-color: #F1F5F9;
    background-size: cover;
    background-position: center;
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 16px;
    color: #94A3B8;
    border: 2px solid #fff;
    box-shadow: 0 1px 3px rgba(15,23,42,0.08);
}

.upl-rp-info { flex: 1; min-width: 0; }
.upl-rp-name {
    font-family: var(--upl-font-display);
    font-size: 14px;
    font-weight: 800;
    color: #0F172A;
    line-height: 1.2;
    margin-bottom: 3px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: flex;
    align-items: center;
    gap: 4px;
}
.upl-rp-cap-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px; height: 18px;
    background: linear-gradient(135deg, #B83227, #7C1F18);
    color: #fff;
    border-radius: 50%;
    font-size: 10px;
    font-weight: 900;
}

.upl-rp-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 3px;
}
.upl-rp-team {
    font-size: 11px;
    font-weight: 700;
    color: #0F172A;
    display: inline-flex;
    align-items: center;
    gap: 3px;
}
.upl-rp-tba {
    color: #94A3B8;
    font-style: italic;
}
.upl-rp-tier-pill {
    display: inline-block;
    padding: 1px 6px;
    font-size: 9px;
    font-weight: 800;
    border-radius: 3px;
    background: #1A6B3F;
    color: #fff;
    letter-spacing: 0.5px;
}
.upl-rp-tier-plat .upl-rp-tier-pill { background: #5E1FAA; }
.upl-rp-tier-gold .upl-rp-tier-pill { background: #B07300; }
.upl-rp-tier-silv .upl-rp-tier-pill { background: #546E7A; }
.upl-rp-tier-brnz .upl-rp-tier-pill { background: #5D4037; }

.upl-rp-foot {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 10px;
    color: #64748B;
    font-family: var(--upl-font-mono);
}
.upl-rp-code {
    background: #F1F5F9;
    padding: 1px 5px;
    border-radius: 3px;
    color: #1A6B3F;
    font-weight: 700;
}
.upl-rp-reg {
    font-size: 9px;
    color: #94A3B8;
    font-family: var(--upl-font-mono);
    margin-top: 4px;
}
.upl-rp-b11 {
    text-align: center;
    flex-shrink: 0;
    padding: 4px 8px;
    background: linear-gradient(135deg, #0F172A 0%, #1E293B 100%);
    border-radius: 6px;
    color: #F59E0B;
    min-width: 48px;
}
.upl-rp-b11-num {
    font-family: var(--upl-font-display);
    font-size: 16px;
    font-weight: 900;
    line-height: 1;
}
.upl-rp-b11-label {
    font-size: 8px;
    color: rgba(255,255,255,0.92);
    letter-spacing: 0.4px;
    text-transform: uppercase;
    margin-top: 2px;
}

@media (max-width: 480px) {
    .upl-rp-hero { padding: 18px 14px; }
    .upl-rp-hero-title { font-size: 20px; }
    .upl-rp-tc { font-size: 9px; padding: 2px 6px; }
    .upl-rp-grid { grid-template-columns: 1fr; }
    .upl-rp-photo { width: 48px; height: 48px; font-size: 14px; }
    .upl-rp-name { font-size: 13px; }
    .upl-rp-b11-num { font-size: 14px; }
}

/* ============================================================
   v2.6.14 — Awards grid: flex layout so orphan last card centers
   ============================================================ */
.upl-const-awards {
    display: flex !important;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px;
    max-width: 760px;
    margin: 18px auto 0 !important;
    padding: 0;
    grid-template-columns: none !important; /* override the earlier grid rules */
}
.upl-const-award {
    flex: 0 0 auto;
    width: 168px;
    min-width: 140px;
    max-width: 200px;
}
@media (max-width: 640px) {
    .upl-const-awards { gap: 8px; max-width: 100%; }
    .upl-const-award { width: calc(50% - 4px); min-width: 0; }
}
@media (max-width: 360px) {
    .upl-const-award { width: 100%; max-width: 280px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.6.14 — PREMIUM THEME OVERHAUL
   "Cricket-luxe": stadium green, championship gold, leather red
   on warm off-white paper with subtle micro-grain texture.
   Tournament-quality typography. Refined depth & motion.
   ════════════════════════════════════════════════════════════════ */

/* ── Token refinement ────────────────────────────────────────── */
:root {
    /* Richer brand palette */
    --upl-bg:           #F4F1EA;  /* warm parchment */
    --upl-bg-deep:      #ECE8DC;  /* darker parchment for sections */
    --upl-card:         #FFFFFF;
    --upl-card-elev:    #FCFCFA;  /* off-white for elevated cards */
    --upl-border:       #DDD3BD;  /* subtle warm border */
    --upl-border-soft:  #EBE3CF;
    --upl-text:         #1A1410;  /* near-black with warmth */
    --upl-text-soft:    #4A4036;
    --upl-muted:        #8A7E6F;

    --upl-primary:      #0B5394;
    --upl-primary-dark: #073763;
    --upl-accent:       #C9A227;  /* championship gold */
    --upl-accent-deep:  #8B6914;
    --upl-accent-bright:#F5C518;

    --upl-win:          #1A6B3F;  /* pitch green */
    --upl-win-dark:     #0F4A2A;
    --upl-loss:         #B83227;  /* leather red */
    --upl-loss-dark:    #7C1F18;
    --upl-tie:          #C9A227;  /* gold tie */

    /* Premium shadows: warm-tinted */
    --upl-shadow-sm:    0 1px 2px rgba(26,20,16,0.06), 0 1px 3px rgba(26,20,16,0.04);
    --upl-shadow:       0 2px 4px rgba(26,20,16,0.05), 0 4px 12px rgba(26,20,16,0.08);
    --upl-shadow-lg:    0 8px 24px rgba(26,20,16,0.12), 0 4px 8px rgba(26,20,16,0.06);
    --upl-shadow-xl:    0 16px 40px rgba(26,20,16,0.18), 0 8px 16px rgba(26,20,16,0.08);
    --upl-shadow-gold:  0 4px 16px rgba(201,162,39,0.28);
}

/* ── Page background: warm parchment + subtle grain ────────── */
body {
    background-color: var(--upl-bg);
    background-image:
        /* tiny grain - barely visible */
        url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='5'/%3E%3CfeColorMatrix values='0 0 0 0 0.4 0 0 0 0 0.35 0 0 0 0 0.25 0 0 0 0.025 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E"),
        /* horizon highlight from above */
        radial-gradient(ellipse 80vw 60vh at 50% -10vh, rgba(255,255,255,0.55) 0%, transparent 70%);
    background-attachment: fixed;
    color: var(--upl-text);
}

/* ── Refined wrapper: subtle inset shadow + warm tone ──────── */
.upl-wrap {
    max-width: var(--upl-max-width);
    margin: 0 auto;
    color: var(--upl-text);
}

/* ── Cards: elevated paper feel ─────────────────────────────── */
.upl-card {
    background: var(--upl-card);
    border: 1px solid var(--upl-border-soft);
    border-radius: var(--upl-radius);
    box-shadow: var(--upl-shadow-sm);
    margin-bottom: 10px;
    overflow: hidden;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.upl-card:hover {
    box-shadow: var(--upl-shadow);
}
.upl-card-head {
    background: linear-gradient(180deg, #FBF8F0 0%, #F5F0E2 100%);
    border-bottom: 1px solid var(--upl-border-soft);
    padding: 11px 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.upl-card-head h3 {
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 15px;
    color: var(--upl-text);
    margin: 0;
    letter-spacing: 0.3px;
    text-transform: uppercase;
}
.upl-card-head a {
    font-family: var(--upl-font-body);
    font-size: 11px;
    color: var(--upl-primary);
    font-weight: 700;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    transition: color 0.15s;
}
.upl-card-head a:hover { color: var(--upl-accent-deep); }

/* ── Hero: stadium-night feel with championship glow ──────── */
.upl-hero {
    position: relative;
    background:
        radial-gradient(ellipse at 30% 0%, rgba(201,162,39,0.18) 0%, transparent 55%),
        radial-gradient(ellipse at 80% 100%, rgba(11,83,148,0.25) 0%, transparent 60%),
        linear-gradient(135deg, #0A1929 0%, #102341 60%, #1A2E50 100%);
    color: #fff;
    padding: 36px 22px 30px;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: var(--upl-shadow-lg);
    margin-bottom: 16px;
}
.upl-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        repeating-linear-gradient(0deg, rgba(255,255,255,0.02) 0, rgba(255,255,255,0.02) 1px, transparent 1px, transparent 6px);
    pointer-events: none;
}
.upl-hero::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg,
        transparent 0%,
        var(--upl-win) 15%,
        var(--upl-accent-bright) 50%,
        var(--upl-loss) 85%,
        transparent 100%);
}
.upl-hero > * { position: relative; z-index: 1; }
.upl-hero > div:first-child {
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 34px !important;
    letter-spacing: 0.5px;
    line-height: 1.05 !important;
    text-shadow: 0 2px 12px rgba(0,0,0,0.4);
}
.upl-hero-sub {
    margin-top: 8px;
    font-size: 12px;
    color: rgba(255,255,255,0.85);
    letter-spacing: 1px;
    text-transform: uppercase;
    font-family: var(--upl-font-mono);
}
.upl-hero-actions {
    margin-top: 18px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.upl-hero-btn {
    display: inline-block;
    padding: 10px 20px;
    border-radius: 6px;
    font-family: var(--upl-font-body);
    font-weight: 700;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    text-decoration: none;
    transition: transform 0.15s, box-shadow 0.15s, background 0.15s;
}
.upl-hero-btn-primary {
    background: linear-gradient(135deg, var(--upl-accent-bright) 0%, var(--upl-accent) 100%);
    color: var(--upl-text);
    box-shadow: var(--upl-shadow-gold);
}
.upl-hero-btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(201,162,39,0.4);
}
.upl-hero-btn-ghost {
    background: rgba(255,255,255,0.08);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.2);
    backdrop-filter: blur(4px);
}
.upl-hero-btn-ghost:hover {
    background: rgba(255,255,255,0.14);
    transform: translateY(-1px);
}
.upl-hero-stats {
    margin-top: 22px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    padding-top: 18px;
    border-top: 1px solid rgba(255,255,255,0.12);
}
.upl-hero-stat {
    text-align: center;
}
.upl-hero-stat strong {
    display: block;
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 26px;
    color: var(--upl-accent-bright);
    line-height: 1;
    text-shadow: 0 2px 8px rgba(201,162,39,0.3);
}
.upl-hero-stat span {
    display: block;
    margin-top: 4px;
    font-size: 10px;
    color: rgba(255,255,255,0.92);
    letter-spacing: 1.2px;
    text-transform: uppercase;
    font-weight: 700;
}

/* ── Buttons: premium with subtle inner highlight ─────────── */
.upl-btn {
    display: inline-block;
    padding: 9px 18px;
    border-radius: 6px;
    font-family: var(--upl-font-body);
    font-weight: 700;
    font-size: 12px;
    letter-spacing: 0.5px;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: transform 0.12s, box-shadow 0.12s, background 0.12s, color 0.12s;
    position: relative;
}
.upl-btn::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 50%;
    border-radius: 6px 6px 0 0;
    background: linear-gradient(180deg, rgba(255,255,255,0.18) 0%, transparent 100%);
    pointer-events: none;
}
.upl-btn:hover { transform: translateY(-1px); }
.upl-btn:active { transform: translateY(0); }
.upl-btn.primary {
    background: linear-gradient(180deg, var(--upl-win) 0%, var(--upl-win-dark) 100%);
    color: #fff;
    box-shadow: 0 2px 6px rgba(26,107,63,0.32), inset 0 -1px 0 rgba(0,0,0,0.18);
}
.upl-btn.primary:hover {
    box-shadow: 0 4px 12px rgba(26,107,63,0.4), inset 0 -1px 0 rgba(0,0,0,0.18);
}
.upl-btn.green {
    background: linear-gradient(180deg, var(--upl-win) 0%, var(--upl-win-dark) 100%);
    color: #fff;
    box-shadow: 0 2px 6px rgba(26,107,63,0.32), inset 0 -1px 0 rgba(0,0,0,0.18);
}
.upl-btn.light {
    background: var(--upl-card);
    color: var(--upl-text);
    border: 1px solid var(--upl-border);
    box-shadow: var(--upl-shadow-sm);
}

/* ── Tables: scoreboard aesthetic ──────────────────────────── */
.upl-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--upl-card);
    font-family: var(--upl-font-body);
}
.upl-table thead th {
    background: linear-gradient(180deg, #0F172A 0%, #1A2E50 100%);
    color: #fff;
    padding: 10px 8px;
    font-family: var(--upl-font-display);
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    text-align: left;
    border-bottom: 2px solid var(--upl-accent);
}
.upl-table tbody td {
    padding: 10px 8px;
    border-bottom: 1px solid var(--upl-border-soft);
    font-size: 13px;
    color: var(--upl-text);
}
.upl-table tbody tr {
    transition: background 0.12s;
}
.upl-table tbody tr:nth-child(even) td { background: #FBF8F0; }
.upl-table tbody tr:hover td {
    background: linear-gradient(90deg, #FFF8E1 0%, #FBF8F0 100%);
}
.upl-table tbody tr.upl-playoff-line td {
    border-bottom: 2px solid var(--upl-accent);
    box-shadow: 0 2px 4px rgba(201,162,39,0.1);
}

/* ── Formula bar: tournament information strip ─────────────── */
.upl-formula-bar {
    background: linear-gradient(135deg, #0A1929 0%, #102341 100%);
    color: var(--upl-accent-bright);
    padding: 8px 12px;
    font-family: var(--upl-font-mono);
    font-size: 11px;
    text-align: center;
    border-radius: 6px;
    margin-bottom: 10px;
    letter-spacing: 0.5px;
    font-weight: 700;
    text-shadow: 0 1px 2px rgba(0,0,0,0.3);
    position: relative;
    overflow: hidden;
}
.upl-formula-bar::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--upl-accent), transparent);
}

/* ── Match cards: ticket-stub aesthetic ──────────────────── */
.upl-match-card {
    background: var(--upl-card);
    border: 1px solid var(--upl-border-soft);
    border-radius: 8px;
    box-shadow: var(--upl-shadow-sm);
    margin-bottom: 8px;
    overflow: hidden;
    transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
    position: relative;
}
.upl-match-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--upl-shadow);
    border-color: var(--upl-accent);
}

/* ── UAS banner refined - more luxurious gold treatment ───── */
.upl-uas-banner {
    background:
        radial-gradient(ellipse at 30% 50%, rgba(201,162,39,0.15) 0%, transparent 60%),
        linear-gradient(135deg, #0A1929 0%, #102341 50%, #1A2E50 100%);
    position: relative;
}
.upl-uas-banner:hover {
    box-shadow: 0 8px 24px rgba(201,162,39,0.18);
}
.upl-uas-name {
    background: linear-gradient(90deg, var(--upl-accent-bright) 0%, #FFE082 50%, var(--upl-accent-bright) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* ── Hub tabs: refined sticky behavior ─────────────────────── */
.upl-hub-tabs {
    background: linear-gradient(180deg, #FCFCFA 0%, var(--upl-bg-deep) 100%) !important;
}
.upl-hub-tab.active {
    background: linear-gradient(180deg, transparent 0%, rgba(201,162,39,0.08) 100%) !important;
    color: var(--upl-text) !important;
}

/* ── Public-pages homepage cards: subtle premium upgrade ──── */
.upl-public-card {
    box-shadow: var(--upl-shadow);
}
.upl-public-card:hover {
    box-shadow: var(--upl-shadow-lg);
}
.upl-public-players  {
    background: linear-gradient(135deg, var(--upl-win) 0%, var(--upl-win-dark) 100%) !important;
}
.upl-public-starups  {
    background: linear-gradient(135deg, var(--upl-accent) 0%, var(--upl-accent-deep) 100%) !important;
}
.upl-public-standings{
    background: linear-gradient(135deg, var(--upl-primary) 0%, var(--upl-primary-dark) 100%) !important;
}

/* ── Quick-link grid: refined chip style ──────────────────── */
.upl-quick-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
    gap: 6px;
}
.upl-quick-item {
    background: linear-gradient(180deg, #FBF8F0 0%, #F5F0E2 100%);
    border: 1px solid var(--upl-border-soft);
    color: var(--upl-text);
    padding: 9px 10px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: all 0.15s;
    position: relative;
    overflow: hidden;
}
.upl-quick-item::before {
    content: '';
    position: absolute;
    left: 0; right: 0; top: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--upl-accent), transparent);
    opacity: 0;
    transition: opacity 0.18s;
}
.upl-quick-item:hover {
    background: linear-gradient(180deg, #FFFFFF 0%, #FBF8F0 100%);
    color: var(--upl-accent-deep);
    border-color: var(--upl-accent);
    transform: translateY(-1px);
    box-shadow: var(--upl-shadow-sm);
}
.upl-quick-item:hover::before { opacity: 1; }

/* ── Franchise grid: refined ──────────────────────────────── */
.upl-franchise-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(74px, 1fr));
    gap: 6px;
}
.upl-franchise-item {
    background: var(--upl-card);
    border: 1px solid var(--upl-border-soft);
    border-radius: 8px;
    padding: 8px 6px;
    text-align: center;
    text-decoration: none;
    color: var(--upl-text);
    transition: all 0.15s;
}
.upl-franchise-item:hover {
    border-color: var(--upl-accent);
    transform: translateY(-2px);
    box-shadow: var(--upl-shadow);
    background: #FBF8F0;
}
.upl-franchise-city {
    margin-top: 4px;
    font-size: 10px;
    color: var(--upl-muted);
    font-weight: 600;
    letter-spacing: 0.3px;
    text-transform: uppercase;
}

/* ── Notice / info / status pills: refined ─────────────────── */
.upl-notice {
    background: linear-gradient(180deg, #FFFCEC 0%, #FBF5DD 100%);
    border: 1px solid #E8D78A;
    border-left: 4px solid var(--upl-accent);
    border-radius: 8px;
    padding: 14px 16px;
    margin: 10px 0;
    color: var(--upl-text);
    box-shadow: var(--upl-shadow-sm);
}
.upl-notice a {
    color: var(--upl-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--upl-primary);
}

/* ── Constitution body: warm paper feel ──────────────────── */
.upl-const-body {
    background: linear-gradient(180deg, #FBF8F0 0%, #F5F0E2 100%) !important;
    background-image:
        linear-gradient(180deg, #FBF8F0 0%, #F5F0E2 100%),
        repeating-linear-gradient(0deg, rgba(139,105,20,0.02) 0px, rgba(139,105,20,0.02) 1px, transparent 1px, transparent 28px) !important;
}
.upl-const-sec {
    background: #FFFEFA !important;
    border: 1px solid var(--upl-border-soft) !important;
    box-shadow: var(--upl-shadow-sm) !important;
}
.upl-const-sec:hover {
    box-shadow: var(--upl-shadow);
}

/* ── Smooth global focus ring for accessibility ──────────── */
*:focus-visible {
    outline: 2px solid var(--upl-accent);
    outline-offset: 2px;
    border-radius: 4px;
}

/* ── Page sections that have small text - boost contrast ─── */
.upl-empty,
[style*="color:#9E9E9E"],
[style*="color: #9E9E9E"] {
    color: var(--upl-muted) !important;
}

/* ── Subtle entrance animation for cards on page load ────── */
@keyframes upl-card-fade-in {
    0%   { opacity: 0; transform: translateY(8px); }
    100% { opacity: 1; transform: translateY(0); }
}
.upl-card, .upl-match-card, .upl-public-card, .upl-rp-card, .upl-starup-card {
    animation: upl-card-fade-in 0.32s ease-out backwards;
}
/* Stagger first few cards' animation for cascade effect */
.upl-wrap > *:nth-child(1) { animation-delay: 0.02s; }
.upl-wrap > *:nth-child(2) { animation-delay: 0.08s; }
.upl-wrap > *:nth-child(3) { animation-delay: 0.14s; }
.upl-wrap > *:nth-child(4) { animation-delay: 0.2s; }
.upl-wrap > *:nth-child(5) { animation-delay: 0.26s; }
.upl-wrap > *:nth-child(6) { animation-delay: 0.32s; }

@media (prefers-reduced-motion: reduce) {
    .upl-card, .upl-match-card, .upl-public-card, .upl-rp-card, .upl-starup-card { animation: none; }
}

/* ── Selection color matches theme ─────────────────────────── */
::selection { background: var(--upl-accent); color: var(--upl-text); }

/* ════════════════════════════════════════════════════════════════
   v2.6.15 — Hero title GOLD GRADIENT, duplicate-number fix,
   dramatic upgrades, back-to-top button
   ════════════════════════════════════════════════════════════════ */

/* Bug fix: theme's .uas-page-content h1 was overriding hero h1 to dark navy.
   Boost specificity and switch to gold-gradient text for max drama. */
.upl-const-wrap .upl-const-hero h1,
.uas-page-content .upl-const-hero h1,
body .upl-const-hero h1 {
    color: #FBBF24 !important; /* gold fallback for browsers without bg-clip */
    background: linear-gradient(135deg,
        #FFE082 0%,
        #FBBF24 35%,
        #FFD54F 50%,
        #C9A227 75%,
        #FBBF24 100%) !important;
    background-size: 200% 200%;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    text-fill-color: transparent;
    text-shadow:
        0 0 30px rgba(251,191,36,0.35),
        0 4px 18px rgba(0,0,0,0.45) !important;
    animation: upl-gold-shimmer 6s ease-in-out infinite;
    filter: drop-shadow(0 2px 8px rgba(0,0,0,0.4));
}
@keyframes upl-gold-shimmer {
    0%, 100% { background-position: 0% 50%; }
    50%      { background-position: 100% 50%; }
}
@media (prefers-reduced-motion: reduce) {
    .upl-const-hero h1 { animation: none; }
}

/* Hero overall: more dramatic with depth + spotlight effect */
.upl-const-hero {
    background:
        radial-gradient(ellipse at 50% -20%, rgba(251,191,36,0.18) 0%, transparent 55%),
        radial-gradient(ellipse at top right, rgba(245,158,11,0.22), transparent 60%),
        radial-gradient(ellipse at bottom left, rgba(184,50,39,0.20), transparent 60%),
        linear-gradient(135deg, #0A1929 0%, #0F2543 50%, #0A1929 100%) !important;
    box-shadow:
        0 16px 40px rgba(10,25,41,0.32),
        0 4px 12px rgba(251,191,36,0.08),
        inset 0 1px 0 rgba(255,255,255,0.06) !important;
    padding: 44px 22px 36px !important;
}
.upl-const-hero::before {
    height: 4px !important;
    box-shadow: 0 1px 8px rgba(245,158,11,0.4);
}
.upl-const-eyebrow {
    border-color: rgba(251,191,36,0.6) !important;
    background: rgba(251,191,36,0.08);
    box-shadow: 0 2px 8px rgba(251,191,36,0.15);
    text-shadow: 0 1px 4px rgba(245,158,11,0.5);
}
.upl-const-org-line {
    margin-top: 16px !important;
    padding: 10px 16px !important;
    border-top: 1px solid rgba(251,191,36,0.25) !important;
    border-bottom: 1px solid rgba(251,191,36,0.25);
    background: linear-gradient(90deg, transparent, rgba(251,191,36,0.06), transparent);
    color: #FBBF24 !important;
    letter-spacing: 2.2px !important;
    font-weight: 800 !important;
    font-size: 11px !important;
    text-shadow: 0 1px 6px rgba(251,191,36,0.4);
}

/* Bug fix: <ol> was auto-numbering AND clause tags showed - duplicates.
   Switch to no-number list since clause tags (1.1, 1.2) are our reference labels. */
.upl-const-list {
    list-style: none !important;
    padding-left: 0 !important;
    counter-reset: none;
}
.upl-const-list > li {
    padding-left: 0;
    margin-bottom: 10px;
    line-height: 1.65;
    list-style: none !important;
}
.upl-const-list > li::marker { content: '' !important; display: none; }
.upl-const-sublist {
    list-style: disc !important;
    padding-left: 22px !important;
}
.upl-const-sublist > li {
    list-style: disc !important;
    margin-bottom: 4px;
}
.upl-const-tier-rules {
    list-style: decimal !important;
    padding-left: 22px;
}

/* Refined clause tag - more substantial */
.upl-const-clause-tag {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    height: 20px;
    background: linear-gradient(135deg, #1A6B3F 0%, #0F4A2A 100%) !important;
    color: #FBBF24 !important;
    border: 1px solid rgba(251,191,36,0.3);
    font-family: var(--upl-font-mono);
    font-weight: 700 !important;
    font-size: 10px !important;
    padding: 0 7px !important;
    border-radius: 4px !important;
    margin-right: 8px !important;
    letter-spacing: 0.4px !important;
    vertical-align: 1px;
    box-shadow: 0 1px 3px rgba(26,107,63,0.25);
}

/* Same protection for other dark-hero h1s anywhere on site */
.upl-hero h1,
.upl-prof-header h2,
.upl-rp-hero-title,
body .upl-hero h1,
.uas-page-content .upl-hero h1,
.uas-page-content .upl-prof-header h2 {
    color: #fff !important;
}

/* ════════════════════════════════════════════════════════════════
   BACK-TO-TOP floating button
   ════════════════════════════════════════════════════════════════ */
#upl-back-to-top {
    position: fixed;
    bottom: 88px; /* sits above mobile bottom nav */
    right: 18px;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background: linear-gradient(135deg, #1A6B3F 0%, #0F4A2A 100%);
    color: #FBBF24;
    border: 2px solid rgba(251,191,36,0.4);
    box-shadow:
        0 6px 20px rgba(26,107,63,0.45),
        0 2px 6px rgba(0,0,0,0.18),
        inset 0 1px 0 rgba(255,255,255,0.12);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    font-weight: 900;
    cursor: pointer;
    z-index: 9999;
    opacity: 0;
    pointer-events: none;
    transform: translateY(20px) scale(0.85);
    transition: opacity 0.25s, transform 0.25s, box-shadow 0.18s, background 0.18s;
    text-decoration: none;
    line-height: 1;
}
#upl-back-to-top.is-visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0) scale(1);
}
#upl-back-to-top:hover {
    background: linear-gradient(135deg, #1F8049 0%, #1A6B3F 100%);
    box-shadow:
        0 8px 28px rgba(26,107,63,0.55),
        0 3px 8px rgba(0,0,0,0.2);
    transform: translateY(-2px) scale(1.05);
}
#upl-back-to-top:active {
    transform: translateY(0) scale(0.96);
}
#upl-back-to-top svg {
    width: 20px;
    height: 20px;
    stroke: currentColor;
    fill: none;
    stroke-width: 2.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}
@media (max-width: 480px) {
    #upl-back-to-top { width: 42px; height: 42px; bottom: 80px; right: 14px; }
    #upl-back-to-top svg { width: 18px; height: 18px; }
}
@media (prefers-reduced-motion: reduce) {
    #upl-back-to-top { transition: opacity 0.15s; }
    #upl-back-to-top:hover { transform: none; }
}

/* ════════════════════════════════════════════════════════════════
   v2.6.17 — S1 link visible on profile + match form dropdowns +
              compact toast notice system + outcome summaries
   ════════════════════════════════════════════════════════════════ */

/* S1 profile tab: gold accent so it stands out as a special record */
.upl-pp-tab-s1 {
    background: linear-gradient(180deg, #FFFBEB 0%, #FEF3C7 100%) !important;
    border: 1px solid #C9A227 !important;
    color: #8B6914 !important;
    font-weight: 800 !important;
    position: relative;
}
.upl-pp-tab-s1.upl-pp-active {
    background: linear-gradient(180deg, #FBBF24 0%, #C9A227 100%) !important;
    color: #1A0F00 !important;
}
.upl-pp-tab-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 16px;
    padding: 0 5px;
    margin-left: 4px;
    background: #B83227;
    color: #fff;
    border-radius: 8px;
    font-size: 9px;
    font-weight: 800;
    line-height: 1;
}

.upl-pp-s1-banner {
    display: flex;
    align-items: center;
    gap: 12px;
    background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
    border-left: 4px solid #C9A227;
    padding: 12px 14px;
    margin: 10px;
    border-radius: 6px;
}
.upl-pp-s1-icon {
    font-size: 28px;
    line-height: 1;
}
.upl-pp-s1-banner strong {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 14px;
    color: #1A0F00;
    margin-bottom: 2px;
}
.upl-pp-s1-banner span {
    font-size: 11px;
    color: #4A4036;
    line-height: 1.4;
}

/* Match form dropdowns: better look than native <select> on mobile */
.upl-match-select {
    width: 100%;
    padding: 10px 30px 10px 12px;
    border: 1px solid #CBD5E1;
    border-radius: 6px;
    font-size: 14px;
    font-family: var(--upl-font-mono);
    font-weight: 700;
    background-color: #fff;
    background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%2364748B' d='M5 6L0 0h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
}
.upl-match-select:focus {
    border-color: #1A6B3F;
    outline: 2px solid rgba(26,107,63,0.18);
}

/* Compact toast notice: replaces ugly alert() for AJAX feedback */
#upl-toast-container {
    position: fixed;
    bottom: 100px;
    right: 14px;
    left: 14px;
    z-index: 10000;
    pointer-events: none;
    display: flex;
    flex-direction: column-reverse;
    gap: 8px;
}
@media (min-width: 640px) {
    #upl-toast-container {
        left: auto;
        right: 18px;
        max-width: 380px;
        bottom: 24px;
    }
}
.upl-toast {
    pointer-events: auto;
    background: linear-gradient(180deg, #FFFEFA 0%, #F5F0E2 100%);
    border: 1px solid #DDD3BD;
    border-left: 4px solid #1A6B3F;
    border-radius: 8px;
    padding: 10px 14px;
    font-size: 13px;
    color: #1A1410;
    box-shadow: 0 8px 24px rgba(26,20,16,0.18);
    animation: upl-toast-in 0.25s ease-out;
    line-height: 1.4;
}
.upl-toast.error {
    border-left-color: #B83227;
    background: linear-gradient(180deg, #FEF2F2 0%, #FFE5E5 100%);
    color: #7C1F18;
}
.upl-toast.warn {
    border-left-color: #F59E0B;
    background: linear-gradient(180deg, #FFFBEB 0%, #FEF3C7 100%);
    color: #92400E;
}
.upl-toast.fade-out { animation: upl-toast-out 0.22s ease-in forwards; }
@keyframes upl-toast-in {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes upl-toast-out {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(20px); }
}

/* Match outcome summary line: "won by 12 runs", "tied 145-145" etc. */
.upl-match-outcome {
    display: inline-block;
    margin-top: 4px;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 700;
    font-family: var(--upl-font-body);
    letter-spacing: 0.3px;
}
.upl-match-outcome-win  { background: #E8F5E9; color: #0F4A2A; }
.upl-match-outcome-tie  { background: #FFF8E1; color: #6E4D00; }

/* Pending approval banner: critical visibility for captain */
.upl-pending-banner {
    background: linear-gradient(135deg, #FFF8E1 0%, #FEF3C7 100%);
    border: 1px solid #F59E0B;
    border-left: 5px solid #B07300;
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 12px;
    box-shadow: 0 2px 8px rgba(245,158,11,0.18);
}
.upl-pending-banner-num {
    background: linear-gradient(135deg, #B07300, #8B5A00);
    color: #FBBF24;
    width: 36px; height: 36px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--upl-font-display);
    font-size: 18px;
    font-weight: 900;
    flex-shrink: 0;
    box-shadow: 0 2px 6px rgba(176,115,0,0.4);
}
.upl-pending-banner-text strong {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 14px;
    color: #5B3A00;
}
.upl-pending-banner-text span {
    font-size: 11px;
    color: #7C4A00;
}

/* ════════════════════════════════════════════════════════════════
   v2.6.18 — NEXT-LEVEL VISUAL UPGRADE
   - Hero rebuilt: massive UPL crest + tagline + ambient particles
   - Color contrast audit fixes (white-on-white / black-on-black)
   - Animated stat counters
   - Section dividers with cricket motif
   - Trophy overlay on standings leader
   - Pulse on fresh submissions
   - Premium franchise crest depth
   ════════════════════════════════════════════════════════════════ */

/* ── HERO v2: massive championship mark ────────────────────── */
.upl-hero-v2 {
    padding: 56px 22px 44px !important;
    background:
        radial-gradient(ellipse at 50% 0%, rgba(251,191,36,0.22) 0%, transparent 55%),
        radial-gradient(ellipse at 15% 100%, rgba(184,50,39,0.20) 0%, transparent 55%),
        radial-gradient(ellipse at 85% 100%, rgba(26,107,63,0.20) 0%, transparent 55%),
        linear-gradient(135deg, #050E1B 0%, #0A1929 40%, #0F2543 100%) !important;
    box-shadow:
        0 24px 60px rgba(5,14,27,0.4),
        0 8px 20px rgba(251,191,36,0.08),
        inset 0 1px 0 rgba(255,255,255,0.08) !important;
    overflow: hidden;
    position: relative;
}
/* Ambient light streaks */
.upl-hero-v2::after {
    content: '';
    position: absolute;
    inset: -50%;
    background:
        repeating-conic-gradient(from 0deg at 50% 50%,
            transparent 0deg, transparent 28deg,
            rgba(251,191,36,0.03) 28deg, rgba(251,191,36,0.03) 30deg);
    pointer-events: none;
    animation: upl-conic-rotate 60s linear infinite;
    opacity: 0.5;
}
@keyframes upl-conic-rotate {
    to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
    .upl-hero-v2::after { animation: none; }
}

/* CHAMPIONSHIP CREST: massive "UPL" + season number */
.upl-hero-crest {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin-bottom: 8px;
    position: relative;
    z-index: 2;
}
.upl-hero-crest-mark {
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: clamp(56px, 14vw, 120px);
    letter-spacing: -2px;
    line-height: 0.85;
    background: linear-gradient(180deg,
        #FFF9E0 0%,
        #FBBF24 30%,
        #FFD54F 50%,
        #C9A227 75%,
        #8B6914 100%);
    background-size: 100% 200%;
    background-position: 0% 0%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter:
        drop-shadow(0 4px 12px rgba(251,191,36,0.4))
        drop-shadow(0 2px 4px rgba(0,0,0,0.5));
    animation: upl-crest-glow 4s ease-in-out infinite;
}
@keyframes upl-crest-glow {
    0%, 100% { background-position: 0% 0%; }
    50%      { background-position: 0% 100%; }
}
.upl-hero-crest-num {
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: clamp(56px, 14vw, 120px);
    line-height: 0.85;
    color: #FFFEFA;
    text-shadow:
        0 0 30px rgba(251,191,36,0.4),
        0 4px 16px rgba(0,0,0,0.6);
    position: relative;
    padding: 0 6px;
}
.upl-hero-crest-num::before {
    content: '';
    position: absolute;
    left: -6px; right: -6px; top: 50%;
    height: 2px;
    background: linear-gradient(90deg, transparent, #FBBF24, transparent);
    transform: translateY(-50%);
    opacity: 0.5;
}
.upl-hero-tagline {
    font-family: var(--upl-font-display);
    font-weight: 700;
    font-size: clamp(13px, 2.6vw, 17px);
    color: #FBBF24;
    letter-spacing: 3px;
    text-transform: uppercase;
    text-align: center;
    margin: 12px 0 4px;
    text-shadow: 0 2px 8px rgba(251,191,36,0.3);
    position: relative;
    z-index: 2;
}
.upl-hero-tagline::before,
.upl-hero-tagline::after {
    content: '◆';
    display: inline-block;
    margin: 0 10px;
    color: rgba(251,191,36,0.5);
    font-size: 10px;
    vertical-align: 2px;
}
.upl-hero-v2 .upl-hero-sub {
    text-align: center;
    color: rgba(255,255,255,0.92) !important;
    margin-top: 6px !important;
    font-size: 11px;
    letter-spacing: 1px;
    position: relative;
    z-index: 2;
}
.upl-hero-v2 .upl-hero-actions {
    justify-content: center;
    margin-top: 22px !important;
    position: relative;
    z-index: 2;
}
.upl-hero-v2 .upl-hero-stats {
    margin-top: 26px !important;
    position: relative;
    z-index: 2;
    border-top-color: rgba(251,191,36,0.18) !important;
}

/* ── COLOR-CONTRAST FIX AUDIT ────────────────────────────────
   Fix every place where light text might sit on light bg or
   dark text on dark bg. WCAG AA compliant. */

/* Form inputs: enforce dark text on white bg + visible borders */
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="password"],
input[type="number"],
input[type="search"],
input[type="url"],
input[type="date"],
input[type="time"],
input[type="datetime-local"],
textarea,
select {
    color: #1A1410 !important;
    background-color: #FFFFFF !important;
    border-color: #CBD5E1 !important;
}
input[type="text"]:disabled,
input[type="number"]:disabled,
textarea:disabled,
select:disabled {
    color: #64748B !important;
    background-color: #F1F5F9 !important;
}
/* Placeholders need to be visible but distinguishable */
input::placeholder,
textarea::placeholder {
    color: #94A3B8 !important;
    opacity: 1;
}

/* Disabled buttons: clear visual state */
button:disabled,
.upl-btn:disabled,
input[type=button]:disabled,
input[type=submit]:disabled {
    background: #E2E8F0 !important;
    color: #94A3B8 !important;
    cursor: not-allowed !important;
    box-shadow: none !important;
    opacity: 0.7;
}

/* Inactive bottom-nav items: stronger color */
.uas-bottom-nav a:not(.active) {
    color: #5A4E40 !important;
}

/* Notice boxes: enforce sufficient contrast */
.upl-notice strong { color: #1A1410 !important; }
.upl-info-box {
    color: #1A1410 !important;
}
.upl-info-box.yellow {
    background: #FFF8E1 !important;
    color: #5B3A00 !important;
    border: 1px solid #FBBF24;
}
.upl-info-box.green {
    background: #E8F5E9 !important;
    color: #0F4A2A !important;
    border: 1px solid #1A6B3F;
}
.upl-info-box.red {
    background: #FFEBEE !important;
    color: #7C1F18 !important;
    border: 1px solid #B83227;
}

/* Page muted/empty text: bump from low-contrast greys */
.upl-empty,
[style*="color:#9E9E9E"],
[style*="color: #9E9E9E"],
[style*="color:#757575"],
[style*="color: #757575"] {
    color: #5A4E40 !important;
}

/* Hero action buttons: ensure ghost button is readable */
.upl-hero-btn-ghost {
    color: #FFFEFA !important;
    border-color: rgba(255,255,255,0.92) !important;
    background: rgba(255,255,255,0.06) !important;
}
.upl-hero-btn-primary {
    color: #1A0F00 !important;
    text-shadow: none !important;
}

/* ── SECTION DIVIDER: cricket-themed ───────────────────────── */
.upl-section-divider {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin: 24px 0 14px;
    color: #C9A227;
    opacity: 0.6;
}
.upl-section-divider::before,
.upl-section-divider::after {
    content: '';
    height: 1px;
    flex: 1;
    background: linear-gradient(90deg, transparent, rgba(201,162,39,0.4), transparent);
}
.upl-section-divider-icon {
    font-size: 14px;
    letter-spacing: 6px;
    color: #C9A227;
}

/* ── TROPHY OVERLAY on standings #1 row ────────────────────── */
.upl-table tbody tr:first-child td:first-child {
    position: relative;
}
.upl-table tbody tr:first-child td:first-child::after {
    content: '\1F451'; /* 👑 crown */
    position: absolute;
    top: 50%;
    left: -2px;
    transform: translateY(-50%);
    font-size: 14px;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.2));
    pointer-events: none;
}

/* "NEW" tag and fresh-pulse on result matches REMOVED per user request (v2.7.21).
   Match cards now render with no visual distinction for recent submissions. */

/* ── PREMIUM FRANCHISE CRESTS: depth + sheen ──────────────── */
.upl-franchise-item {
    position: relative;
    overflow: visible;
    transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
}
.upl-franchise-item .upl-team-logo {
    box-shadow:
        0 2px 4px rgba(0,0,0,0.15),
        inset 0 1px 0 rgba(255,255,255,0.4),
        inset 0 -2px 4px rgba(0,0,0,0.15);
    transition: transform 0.15s;
}
.upl-franchise-item:hover .upl-team-logo {
    transform: scale(1.08);
}

/* Team logo sheen — subtle gloss across top-left */
.upl-team-logo {
    position: relative;
}
.upl-team-logo::after {
    content: '';
    position: absolute;
    top: 4%; left: 8%; right: 50%; bottom: 60%;
    background: linear-gradient(135deg, rgba(255,255,255,0.45) 0%, rgba(255,255,255,0) 100%);
    border-radius: 50% 50% 50% 50%;
    pointer-events: none;
    opacity: 0.7;
}

/* ── UAS BANNER: refined contrast ──────────────────────────── */
.upl-uas-banner .upl-uas-eyebrow {
    color: #FBBF24 !important;
    opacity: 1 !important;
}
.upl-uas-banner .upl-uas-tag {
    color: rgba(255,255,255,0.85) !important;
}

/* ── ADMIN-ARCHIVE BANNER: improve contrast ──────────────── */
.upl-archive-banner {
    color: #FFFEFA !important;
    background: linear-gradient(90deg, #5D4037 0%, #4E342E 100%) !important;
    padding: 10px 16px !important;
}

/* ── QUICK-LINK CHIPS: strengthen text contrast ──────────── */
.upl-quick-item {
    color: #1A1410 !important;
    background: linear-gradient(180deg, #FFFEFA 0%, #F5F0E2 100%) !important;
    border-color: #DDD3BD !important;
}

/* ── BOTTOM NAV: stronger active state ────────────────────── */
.uas-bottom-nav a.active {
    color: #8B6914 !important;
    font-weight: 800 !important;
}
.uas-bottom-nav a.active span,
.uas-bottom-nav a.active svg {
    filter: drop-shadow(0 1px 2px rgba(139,105,20,0.3));
}

/* ── STAR-UP COOLDOWN: prominent visual state ─────────────── */
.upl-starup-cooldown {
    color: #B07300 !important;
    font-weight: 700;
}
.upl-starup-ready {
    color: #0F4A2A !important;
    font-weight: 700;
    background: #E8F5E9;
    padding: 2px 8px;
    border-radius: 4px;
}

/* ── DASHBOARD STATS GRID: depth + clarity ────────────────── */
.upl-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
    gap: 8px;
}
.upl-stats-grid > div {
    background: linear-gradient(180deg, #FFFEFA 0%, #F5F0E2 100%);
    border: 1px solid #DDD3BD;
    border-radius: 8px;
    padding: 12px 10px;
    text-align: center;
    box-shadow: 0 1px 3px rgba(26,20,16,0.06);
}
.upl-stats-grid > div strong {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 22px;
    font-weight: 900;
    color: #1A1410;
    line-height: 1;
}
.upl-stats-grid > div span {
    display: block;
    margin-top: 4px;
    font-size: 10px;
    color: #5A4E40;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    font-weight: 700;
}

/* ── SMALL: LATEST RESULTS section divider ────────────────── */
@media (max-width: 480px) {
    .upl-hero-v2 { padding: 40px 16px 32px !important; }
    .upl-hero-crest-mark, .upl-hero-crest-num { font-size: 64px !important; }
    .upl-hero-tagline { font-size: 11px; letter-spacing: 2px; }
    .upl-hero-tagline::before, .upl-hero-tagline::after { margin: 0 6px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7 — CINEMATIC HERO + CONTRAST AUDIT FIX + NEXT-LEVEL POLISH
   ════════════════════════════════════════════════════════════════ */

/* ── New cinematic hero ──────────────────────────────────────── */
.upl-hero-cinematic {
    position: relative;
    background:
        radial-gradient(ellipse 80% 60% at 50% 0%, rgba(251,191,36,0.12), transparent 70%),
        radial-gradient(ellipse 70% 80% at 100% 100%, rgba(11,83,148,0.40), transparent 60%),
        radial-gradient(ellipse 70% 80% at 0% 100%, rgba(184,50,39,0.30), transparent 60%),
        linear-gradient(180deg, #060E1A 0%, #0A1929 50%, #0E2238 100%) !important;
    border-radius: 18px !important;
    padding: 0 !important;
    overflow: hidden;
    box-shadow:
        0 20px 60px rgba(6,14,26,0.55),
        0 8px 24px rgba(0,0,0,0.32),
        inset 0 1px 0 rgba(255,255,255,0.06),
        inset 0 -1px 0 rgba(251,191,36,0.18);
    isolation: isolate;
    margin-bottom: 18px;
}
.upl-hero-cinematic::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='3'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");
    opacity: 0.6;
    pointer-events: none;
    z-index: 0;
}
.upl-hero-cinematic::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, transparent 0%, #1A6B3F 15%, #FBBF24 50%, #B83227 85%, transparent 100%);
    z-index: 2;
}

/* Animated diagonal stripes layer in bg */
.upl-hero-bg { position: absolute; inset: 0; pointer-events: none; z-index: 0; }
.upl-hero-stripes {
    position: absolute;
    inset: -10%;
    background-image:
        repeating-linear-gradient(45deg,
            rgba(251,191,36,0.025) 0px,
            rgba(251,191,36,0.025) 2px,
            transparent 2px,
            transparent 40px);
    animation: upl-stripe-slide 40s linear infinite;
}
@keyframes upl-stripe-slide {
    from { transform: translate(0, 0); }
    to   { transform: translate(-80px, -80px); }
}
.upl-hero-spotlight {
    position: absolute;
    top: 0; left: 50%;
    width: 100%;
    height: 60%;
    transform: translateX(-50%);
    background: radial-gradient(ellipse at center top, rgba(251,191,36,0.18) 0%, transparent 65%);
}
@media (prefers-reduced-motion: reduce) {
    .upl-hero-stripes { animation: none; }
}

/* LIVE status strip at top */
.upl-hero-status-strip {
    position: relative;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 16px 8px;
    font-family: var(--upl-font-mono);
    font-size: 10px;
    font-weight: 700;
    color: rgba(255,255,255,0.92);
    letter-spacing: 1.4px;
    flex-wrap: wrap;
    border-bottom: 1px solid rgba(251,191,36,0.10);
}
.upl-hero-status-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #16A34A;
    box-shadow: 0 0 0 0 rgba(22,163,74,0.7);
    animation: upl-pulse-dot 2.2s infinite;
}
@keyframes upl-pulse-dot {
    0%   { box-shadow: 0 0 0 0 rgba(22,163,74,0.7); }
    70%  { box-shadow: 0 0 0 10px rgba(22,163,74,0); }
    100% { box-shadow: 0 0 0 0 rgba(22,163,74,0); }
}
.upl-hero-status-sep { opacity: 0.4; }
.upl-hero-status-label { white-space: nowrap; }

/* MASSIVE title block - "UPL 2" cinematic */
.upl-hero-title-wrap {
    position: relative;
    z-index: 3;
    text-align: center;
    padding: 36px 20px 10px;
}
.upl-hero-title-massive {
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: clamp(80px, 18vw, 200px) !important;
    line-height: 0.85;
    letter-spacing: -2px;
    margin: 0;
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    color: #FBBF24; /* fallback */
}
.upl-hero-title-upl {
    background: linear-gradient(180deg,
        #FFF4C8 0%,
        #FFE082 25%,
        #FBBF24 50%,
        #C9A227 75%,
        #8B6914 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: drop-shadow(0 4px 0 rgba(0,0,0,0.4)) drop-shadow(0 8px 24px rgba(251,191,36,0.35));
    text-shadow: 0 1px 0 rgba(255,255,255,0.1);
}
.upl-hero-title-num {
    background: linear-gradient(180deg,
        #FFF4C8 0%,
        #FFE082 30%,
        #FBBF24 60%,
        #C9A227 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    font-size: 1.15em;
    filter: drop-shadow(0 4px 0 rgba(0,0,0,0.5)) drop-shadow(0 10px 30px rgba(251,191,36,0.45));
    position: relative;
}
.upl-hero-subtitle {
    margin-top: 14px;
    font-family: var(--upl-font-mono);
    font-size: 11px;
    letter-spacing: 2.2px;
    text-transform: uppercase;
    color: rgba(255,255,255,0.88);
    font-weight: 600;
}

/* Hero action buttons (refined for new layout) */
.upl-hero-cinematic .upl-hero-actions {
    position: relative;
    z-index: 3;
    margin: 24px auto 0;
    padding: 0 22px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: center;
}
.upl-hero-cinematic .upl-hero-btn {
    padding: 11px 22px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 1.2px;
    text-transform: uppercase;
}
.upl-hero-cinematic .upl-hero-btn-primary {
    background: linear-gradient(180deg, #FFE082 0%, #FBBF24 50%, #C9A227 100%);
    color: #1A0F00;
    border: 1px solid #8B6914;
    box-shadow:
        0 4px 14px rgba(251,191,36,0.45),
        inset 0 1px 0 rgba(255,255,255,0.5),
        inset 0 -1px 0 rgba(139,105,20,0.6);
}
.upl-hero-cinematic .upl-hero-btn-primary:hover {
    transform: translateY(-2px);
    box-shadow:
        0 8px 22px rgba(251,191,36,0.55),
        inset 0 1px 0 rgba(255,255,255,0.5),
        inset 0 -1px 0 rgba(139,105,20,0.6);
}
.upl-hero-cinematic .upl-hero-btn-ghost {
    background: rgba(255,255,255,0.06);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.18);
    backdrop-filter: blur(4px);
}
.upl-hero-cinematic .upl-hero-btn-ghost:hover {
    background: rgba(255,255,255,0.12);
    border-color: rgba(251,191,36,0.5);
    color: #FBBF24;
}

/* Stats row with scoreboard look */
.upl-hero-stats-row {
    position: relative;
    z-index: 3;
    margin-top: 28px;
    padding: 18px 12px 22px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;
    border-top: 1px solid rgba(251,191,36,0.18);
    background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.18) 100%);
}
.upl-hero-stat-cell {
    text-align: center;
    position: relative;
}
.upl-hero-stat-cell + .upl-hero-stat-cell::before {
    content: '';
    position: absolute;
    left: 0; top: 20%;
    bottom: 20%;
    width: 1px;
    background: linear-gradient(180deg, transparent, rgba(251,191,36,0.25), transparent);
}
.upl-hero-stat-num {
    display: block;
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: clamp(28px, 6vw, 44px);
    line-height: 1;
    background: linear-gradient(180deg, #FFE082 0%, #FBBF24 60%, #C9A227 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: drop-shadow(0 2px 6px rgba(251,191,36,0.3));
}
.upl-hero-stat-label {
    display: block;
    margin-top: 6px;
    font-family: var(--upl-font-mono);
    font-size: 10px;
    color: rgba(255,255,255,0.92);
    letter-spacing: 1.6px;
    text-transform: uppercase;
    font-weight: 600;
}

/* Mobile tweaks for cinematic hero */
@media (max-width: 480px) {
    .upl-hero-title-wrap { padding: 28px 14px 6px; }
    .upl-hero-status-strip { font-size: 9px; gap: 6px; padding: 10px 12px 6px; letter-spacing: 1px; }
    .upl-hero-title-massive { letter-spacing: -1px; }
    .upl-hero-cinematic .upl-hero-actions { padding: 0 14px; gap: 6px; }
    .upl-hero-cinematic .upl-hero-btn { padding: 10px 14px; font-size: 11px; flex: 1; min-width: 0; }
    .upl-hero-stats-row { padding: 14px 8px 18px; }
}

/* ════════════════════════════════════════════════════════════════
   CONTRAST AUDIT — fixes for white-on-light, dark-on-dark mixes
   ════════════════════════════════════════════════════════════════ */

/* Empty states and "No data" messages were #9E9E9E (too washed out on parchment) */
.upl-empty,
[style*="color:#9E9E9E"],
[style*="color: #9E9E9E"] {
    color: #6B6457 !important;
    font-weight: 500;
}

/* Faint cool grays on parchment - bump contrast */
[style*="color:#94A3B8"],
[style*="color: #94A3B8"] {
    color: #5C6678 !important;
}
[style*="color:#CBD5E1"],
[style*="color: #CBD5E1"] {
    color: #94A3B8 !important;
}

/* Captain dashboard: pure white inputs were blending with cream parchment.
   Add stronger border and lift. */
.upl-field input[type="text"],
.upl-field input[type="email"],
.upl-field input[type="number"],
.upl-field input[type="password"],
.upl-field input[type="tel"],
.upl-field textarea,
.upl-field select {
    background: #FFFFFF !important;
    border: 1.5px solid #C9BFA5 !important;
    color: #1A1410 !important;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.upl-field input:focus,
.upl-field textarea:focus,
.upl-field select:focus {
    border-color: #1A6B3F !important;
    box-shadow: 0 0 0 3px rgba(26,107,63,0.12);
    outline: none;
}

/* Buttons that were light-on-light or had weak contrast */
.upl-btn.light {
    background: #FFFFFF !important;
    color: #1A1410 !important;
    border: 1.5px solid #C9BFA5 !important;
    font-weight: 700;
}
.upl-btn.light:hover {
    background: #FBF8F0 !important;
    border-color: #8B6914 !important;
    color: #073763 !important;
}

/* Quick link chips were too washed out */
.upl-quick-item {
    background: #FFFFFF !important;
    border: 1.5px solid #DDD3BD !important;
    color: #1A1410 !important;
    font-weight: 800 !important;
}
.upl-quick-item:hover {
    background: linear-gradient(180deg, #FBF8F0 0%, #F5F0E2 100%) !important;
    border-color: #C9A227 !important;
    color: #073763 !important;
    box-shadow: 0 4px 10px rgba(201,162,39,0.18);
}

/* Card heads: ensure h3 readable on cream */
.upl-card-head h3 {
    color: #1A1410 !important;
    font-weight: 900 !important;
}
.upl-card-head a {
    color: #073763 !important;
    font-weight: 800 !important;
}
.upl-card-head a:hover { color: #8B6914 !important; }

/* Hero stats from older blocks - keep gold readable */
.upl-hero-stat strong,
.upl-hero-stats strong {
    color: #FBBF24 !important;
}

/* Constitution clause text - bump from washed grays */
.upl-const-sec p,
.upl-const-list,
.upl-const-list li {
    color: #1A1410 !important;
}
.upl-const-sublist,
.upl-const-sublist li {
    color: #3A332B !important;
}

/* Player profile cards on parchment - keep names dark */
.upl-rp-name,
.upl-rp-name a {
    color: #1A1410 !important;
}
.upl-rp-meta { color: #4A4036 !important; }
.upl-rp-foot { color: #6B6457 !important; }

/* Match cards: ensure result text is high contrast */
.upl-result-txt {
    color: #1A1410 !important;
    font-weight: 800 !important;
}

/* Section dividers and rules - subtle but visible */
hr, .upl-divider {
    border-color: #DDD3BD !important;
    background: linear-gradient(90deg, transparent, #C9BFA5, transparent);
    height: 1px;
    border: none;
}

/* ════════════════════════════════════════════════════════════════
   SIGNATURE TOUCHES — Next-level polish
   ════════════════════════════════════════════════════════════════ */

/* Glass card variant for premium sections */
.upl-card.upl-card-glass {
    background:
        linear-gradient(135deg, rgba(255,255,255,0.85), rgba(251,248,240,0.75));
    backdrop-filter: blur(20px) saturate(140%);
    -webkit-backdrop-filter: blur(20px) saturate(140%);
    border: 1px solid rgba(201,162,39,0.25);
    box-shadow:
        0 10px 30px rgba(26,20,16,0.10),
        inset 0 1px 0 rgba(255,255,255,0.5);
}

/* Public-pages cards: dramatically richer */
.upl-public-card {
    box-shadow: 0 10px 28px rgba(26,20,16,0.16);
    transition: transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.22s;
}
.upl-public-card:hover {
    transform: translateY(-4px) scale(1.01);
    box-shadow: 0 16px 38px rgba(26,20,16,0.22);
}
.upl-public-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse 60% 50% at 30% 0%, rgba(255,255,255,0.16), transparent 70%);
    pointer-events: none;
    border-radius: inherit;
}
.upl-public-icon {
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.upl-public-card:hover .upl-public-icon {
    transform: scale(1.12) rotate(-5deg);
}

/* Stat number counter pulse on hover */
.upl-hero-stat-num {
    transition: transform 0.25s ease;
}
.upl-hero-stat-cell:hover .upl-hero-stat-num {
    transform: scale(1.08);
}

/* Live status pulse on stats badge */
@keyframes upl-soft-pulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.7; }
}

/* Quick links with subtle group dividers */
.upl-quick-grid {
    gap: 5px !important;
}

/* Franchise grid: bigger logos with depth */
.upl-franchise-item {
    box-shadow: var(--upl-shadow-sm);
    transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.18s, border-color 0.18s;
}
.upl-franchise-item:hover {
    transform: translateY(-4px) rotate(-1deg);
    border-color: #C9A227 !important;
    box-shadow: 0 8px 20px rgba(201,162,39,0.18);
}
.upl-franchise-city {
    color: #4A4036 !important;
    font-weight: 700 !important;
}

/* Match cards: scoreboard feel */
.upl-match-card {
    border: 1px solid #DDD3BD;
    box-shadow: var(--upl-shadow-sm);
    transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
}
.upl-match-card:hover {
    border-color: #C9A227;
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(26,20,16,0.12);
}
.upl-match-head {
    background: linear-gradient(180deg, #0F172A, #1A2D4E) !important;
    color: #FBBF24 !important;
    border-bottom: 1px solid #C9A227 !important;
}
.upl-match-head .upl-match-id-link,
.upl-match-head .upl-match-id {
    color: #FBBF24 !important;
    font-weight: 800;
}
.upl-match-time {
    color: rgba(255,255,255,0.92) !important;
    font-family: var(--upl-font-mono);
    font-size: 11px;
}
.upl-match-row.upl-winner {
    background: linear-gradient(90deg, #E8F5E9 0%, #FFFFFF 70%) !important;
    border-left: 3px solid #1A6B3F !important;
}
.upl-match-foot {
    background: #FBF8F0 !important;
    border-top: 1px solid #DDD3BD !important;
    color: #1A1410 !important;
}

/* "Modified" badge on match cards */
.upl-modified-badge {
    background: #FEF3C7 !important;
    color: #92400E !important;
    border: 1px solid #FBBF24;
    padding: 1px 6px !important;
    font-size: 9px !important;
    font-weight: 800 !important;
    letter-spacing: 0.5px;
    border-radius: 3px;
}

/* UAS banner: deeper texture + gold glow */
.upl-uas-banner {
    box-shadow:
        0 10px 30px rgba(6,14,26,0.35),
        inset 0 1px 0 rgba(255,255,255,0.05),
        inset 0 -1px 0 rgba(251,191,36,0.18) !important;
}

/* Formula bar: tournament scoreboard polish */
.upl-formula-bar {
    background: linear-gradient(180deg, #0F172A 0%, #060E1A 100%) !important;
    color: #FBBF24 !important;
    border: 1px solid #1A2D4E;
    text-shadow: 0 1px 2px rgba(0,0,0,0.45);
    box-shadow:
        0 2px 8px rgba(0,0,0,0.15),
        inset 0 1px 0 rgba(251,191,36,0.10);
}

/* Tables: scoreboard depth */
.upl-table thead th {
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
    border-bottom: 2px solid #C9A227 !important;
}
.upl-table tbody tr:first-child td {
    /* Top row (leader) gets crown vibe */
    background: linear-gradient(90deg, #FFF8E1 0%, #FBF8F0 60%) !important;
    font-weight: 700;
}

/* Standings: rank-1 row gold treatment */
.upl-table tbody tr:first-child .upl-col-num {
    color: #C9A227;
    font-weight: 900;
    position: relative;
}
.upl-table tbody tr:first-child .upl-col-num::before {
    content: '\1F451'; /* crown emoji */
    position: absolute;
    left: -8px; top: -6px;
    font-size: 12px;
}

/* Toast positioning: better mobile placement */
#upl-toast-container { bottom: 92px; }
@media (min-width: 640px) {
    #upl-toast-container { bottom: 24px; }
}
.upl-toast {
    border-radius: 10px !important;
    box-shadow:
        0 12px 32px rgba(26,20,16,0.22),
        0 4px 12px rgba(0,0,0,0.1) !important;
}

/* Subtle stretched-content rhythm: alternate sections slight bg break */
.upl-wrap > .upl-card:nth-child(even) {
    background: linear-gradient(180deg, #FFFFFF 0%, #FBF8F0 100%);
}

/* ════════════════════════════════════════════════════════════════
   v2.7.2 — Hero modernization (UPL only, season as subtitle line) +
            mobile button-wrap fix + records tab redesign
   ════════════════════════════════════════════════════════════════ */

/* Hide old "UPL2" stacked rendering: title is just "UPL" now,
   season expressed as separate line below */
.upl-hero-title-massive {
    display: inline-block !important;
    font-size: clamp(96px, 22vw, 220px) !important;
    line-height: 0.82 !important;
    letter-spacing: -3px !important;
    margin: 0;
    padding: 0;
}
.upl-hero-title-upl {
    background: linear-gradient(180deg,
        #FFF4C8 0%,
        #FFD54F 28%,
        #FBBF24 52%,
        #C9A227 78%,
        #6B4F0E 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter:
        drop-shadow(0 2px 0 rgba(0,0,0,0.55))
        drop-shadow(0 4px 0 rgba(0,0,0,0.35))
        drop-shadow(0 12px 30px rgba(251,191,36,0.4));
    display: inline-block;
}

/* Season II line as a separate, elegant subtitle */
.upl-hero-season-line {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px;
    padding: 6px 16px;
    background: rgba(251,191,36,0.10);
    border: 1px solid rgba(251,191,36,0.30);
    border-radius: 999px;
    font-family: var(--upl-font-mono);
    font-weight: 700;
    letter-spacing: 3px;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.08),
        0 4px 12px rgba(0,0,0,0.18);
}
.upl-hero-season-pre {
    font-size: 11px;
    color: rgba(255,255,255,0.92);
    text-transform: uppercase;
}
.upl-hero-season-roman {
    font-family: var(--upl-font-display);
    font-size: 22px;
    font-weight: 900;
    color: #FBBF24;
    letter-spacing: 1.5px;
    line-height: 1;
    text-shadow: 0 1px 2px rgba(0,0,0,0.5);
}
.upl-hero-subtitle {
    margin-top: 12px !important;
    font-size: 10px !important;
    letter-spacing: 1.8px !important;
    opacity: 0.85;
}

/* MOBILE: stack buttons vertically so Constitution never overflows */
@media (max-width: 540px) {
    .upl-hero-cinematic .upl-hero-actions {
        flex-direction: column !important;
        gap: 8px !important;
        padding: 0 16px !important;
    }
    .upl-hero-cinematic .upl-hero-btn {
        width: 100%;
        flex: none;
        text-align: center;
        padding: 12px 16px !important;
    }
}

/* Tighter mobile title and season chip */
@media (max-width: 480px) {
    .upl-hero-title-massive {
        font-size: clamp(72px, 26vw, 140px) !important;
        letter-spacing: -2px !important;
    }
    .upl-hero-season-line {
        padding: 4px 12px;
        gap: 6px;
        margin-top: 10px;
    }
    .upl-hero-season-pre { font-size: 10px; letter-spacing: 2.4px; }
    .upl-hero-season-roman { font-size: 18px; letter-spacing: 1.2px; }
    .upl-hero-subtitle { font-size: 9px !important; letter-spacing: 1.4px !important; }
    .upl-hero-status-strip {
        font-size: 9px;
        padding: 9px 10px 7px;
        gap: 5px;
    }
    .upl-hero-status-sep { font-size: 8px; }
}

/* ════════════════════════════════════════════════════════════════
   STATS HUB / RECORDS TAB REDESIGN
   Old: long horizontal scroll of text labels
   New: compact icon+label chips that wrap into 2 rows on mobile
   ════════════════════════════════════════════════════════════════ */

/* Stats hub tab bar: convert long scroll to wrapping chip grid */
.upl-hub-tabs,
.upl-stats-tabs,
.upl-records-tabs {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    padding: 10px !important;
    background: linear-gradient(180deg, #FFFEFA 0%, #F5F0E2 100%) !important;
    border: 1px solid #DDD3BD;
    border-radius: 10px;
    margin-bottom: 10px;
    overflow-x: visible !important;
    -webkit-overflow-scrolling: auto !important;
}
.upl-hub-tab,
.upl-stats-tab,
.upl-records-tab {
    flex: 1 1 calc(33.333% - 6px) !important;
    min-width: 96px;
    max-width: none !important;
    padding: 8px 10px !important;
    background: #FFFFFF !important;
    border: 1.5px solid #DDD3BD !important;
    border-radius: 8px !important;
    color: #1A1410 !important;
    font-family: var(--upl-font-display);
    font-weight: 800 !important;
    font-size: 11px !important;
    letter-spacing: 0.4px !important;
    text-transform: uppercase;
    text-align: center;
    cursor: pointer;
    transition: all 0.18s;
    box-shadow: var(--upl-shadow-sm);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.upl-hub-tab:hover,
.upl-stats-tab:hover,
.upl-records-tab:hover {
    border-color: #C9A227 !important;
    color: #073763 !important;
    transform: translateY(-1px);
}
.upl-hub-tab.active,
.upl-stats-tab.active,
.upl-records-tab.active {
    background: linear-gradient(180deg, #0F2543 0%, #0A1929 100%) !important;
    color: #FBBF24 !important;
    border-color: #C9A227 !important;
    box-shadow:
        0 2px 8px rgba(15,37,67,0.25),
        inset 0 1px 0 rgba(251,191,36,0.18);
}

/* Mobile: 2-column grid for tabs (smaller chips) */
@media (max-width: 480px) {
    .upl-hub-tab,
    .upl-stats-tab,
    .upl-records-tab {
        flex: 1 1 calc(50% - 6px) !important;
        font-size: 10px !important;
        padding: 7px 6px !important;
        min-width: 0;
    }
}

/* Tab-pane content wrapper - cleaner separation */
.upl-hub-pane,
.upl-stats-pane,
.upl-records-pane {
    animation: upl-pane-fade 0.22s ease-out;
}
@keyframes upl-pane-fade {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.3 — Upload UX (preview + progress) + Captain crown glow
   ════════════════════════════════════════════════════════════════ */

/* Upload box: clearer card with state-based styling */
.upl-upload-box {
    margin-bottom: 12px;
    border-radius: 12px;
    background: #FFFFFF;
    border: 1.5px dashed #C9BFA5;
    overflow: hidden;
    transition: border-color 0.22s, background 0.22s, box-shadow 0.22s;
}
.upl-upload-box.idle:hover {
    border-color: #1A6B3F;
    background: #FBF8F0;
    box-shadow: 0 4px 14px rgba(26,107,63,0.08);
}
.upl-upload-box.selecting {
    border-style: solid;
    border-color: #F59E0B;
    background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
}
.upl-upload-box.uploaded {
    border-style: solid;
    border-color: #1A6B3F;
    background: linear-gradient(135deg, #F0FAF3 0%, #E8F5E9 100%);
    box-shadow: 0 3px 12px rgba(26,107,63,0.10);
}
.upl-upload-box.upload-error {
    border-style: solid;
    border-color: #B83227;
    background: linear-gradient(135deg, #FEF2F2 0%, #FFE5E5 100%);
}

/* Label state (idle picker view) */
.upl-upload-label {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 14px;
    cursor: pointer;
    text-decoration: none;
    color: inherit;
}
.upl-upload-icon {
    font-size: 28px;
    flex-shrink: 0;
    line-height: 1;
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: linear-gradient(135deg, #FBF8F0, #ECE8DC);
    display: flex;
    align-items: center;
    justify-content: center;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1));
}
.upl-upload-body { flex: 1; min-width: 0; }
.upl-upload-title {
    font-family: var(--upl-font-display);
    font-size: 14px;
    font-weight: 800;
    color: #1A1410;
    letter-spacing: 0.3px;
}
.upl-up-req { color: #B83227; font-weight: 900; }
.upl-up-opt { color: #94A3B8; font-weight: 500; font-size: 11px; }
.upl-upload-status {
    font-size: 11px;
    color: #6B6457;
    margin-top: 2px;
}
.upl-upload-action {
    flex-shrink: 0;
    background: linear-gradient(180deg, #FBF8F0 0%, #ECE8DC 100%);
    border: 1px solid #C9BFA5;
    color: #1A6B3F;
    font-family: var(--upl-font-body);
    font-weight: 800;
    font-size: 11px;
    padding: 7px 14px;
    border-radius: 6px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    transition: all 0.15s;
}
.upl-upload-label:hover .upl-upload-action {
    background: linear-gradient(180deg, #1A6B3F 0%, #0F4A2A 100%);
    color: #FBBF24;
    border-color: #0F4A2A;
}
.upl-up-input {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
}

/* Preview state (selected image with thumb) */
.upl-upload-preview {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
}
.upl-upload-thumb {
    width: 60px;
    height: 60px;
    border-radius: 8px;
    object-fit: cover;
    background: #ECE8DC;
    border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(26,20,16,0.16);
    flex-shrink: 0;
}
.upl-upload-info {
    flex: 1;
    min-width: 0;
}
.upl-upload-fname {
    font-family: var(--upl-font-body);
    font-size: 13px;
    font-weight: 700;
    color: #1A1410;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin-bottom: 3px;
}
.upl-upload-fsize {
    font-family: var(--upl-font-mono);
    font-size: 11px;
    color: #1A6B3F;
    font-weight: 700;
}
.upl-upload-fsize::before {
    content: '\2713';
    margin-right: 4px;
    font-weight: 900;
}
.upl-upload-replace {
    flex-shrink: 0;
    background: #fff;
    border: 1.5px solid #C9BFA5;
    color: #1A1410;
    font-family: var(--upl-font-body);
    font-weight: 800;
    font-size: 10px;
    padding: 7px 12px;
    border-radius: 6px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    cursor: pointer;
    transition: all 0.15s;
}
.upl-upload-replace:hover {
    background: #FBF8F0;
    border-color: #8B6914;
    color: #073763;
}

/* Progress state (during selection / "reading") */
.upl-upload-progress {
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.upl-upload-progress-bar {
    height: 8px;
    background: rgba(245,158,11,0.18);
    border-radius: 999px;
    overflow: hidden;
    position: relative;
}
.upl-upload-progress-bar > span {
    display: block;
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, #FBBF24 0%, #F59E0B 50%, #FBBF24 100%);
    background-size: 200% 100%;
    border-radius: 999px;
    transition: width 0.18s ease-out;
    animation: upl-progress-shimmer 1.4s linear infinite;
    box-shadow: 0 0 8px rgba(245,158,11,0.5);
}
@keyframes upl-progress-shimmer {
    from { background-position: 200% 0; }
    to   { background-position: -200% 0; }
}
.upl-upload-progress-text {
    font-family: var(--upl-font-mono);
    font-size: 11px;
    font-weight: 700;
    color: #8B6914;
    text-align: center;
    letter-spacing: 0.5px;
}

@media (max-width: 480px) {
    .upl-upload-label { padding: 12px 10px; gap: 10px; }
    .upl-upload-icon { width: 40px; height: 40px; font-size: 22px; border-radius: 10px; }
    .upl-upload-title { font-size: 13px; }
    .upl-upload-action { padding: 6px 10px; font-size: 10px; }
    .upl-upload-thumb { width: 48px; height: 48px; }
    .upl-upload-replace { padding: 6px 9px; font-size: 9px; }
}

/* ════════════════════════════════════════════════════════════════
   FULL-SCREEN SUBMIT PROGRESS OVERLAY (final upload XHR)
   ════════════════════════════════════════════════════════════════ */
#upl-submit-overlay {
    position: fixed;
    inset: 0;
    z-index: 99999;
    background: rgba(10, 25, 41, 0.78);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    animation: upl-fade-in 0.18s ease-out;
}
@keyframes upl-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
.upl-submit-overlay-card {
    background: linear-gradient(180deg, #FFFEFA 0%, #F5F0E2 100%);
    border: 1px solid #C9A227;
    border-radius: 16px;
    padding: 28px 26px;
    max-width: 380px;
    width: 100%;
    text-align: center;
    box-shadow:
        0 20px 60px rgba(6,14,26,0.45),
        0 4px 12px rgba(201,162,39,0.18);
}
.upl-submit-overlay-title {
    font-family: var(--upl-font-display);
    font-size: 18px;
    font-weight: 900;
    color: #1A1410;
    margin-bottom: 6px;
    letter-spacing: 0.4px;
    text-transform: uppercase;
}
.upl-submit-overlay-sub {
    font-size: 12px;
    color: #4A4036;
    margin-bottom: 16px;
    line-height: 1.5;
}
.upl-submit-overlay-bar {
    height: 14px;
    background: rgba(201,162,39,0.20);
    border-radius: 999px;
    overflow: hidden;
    position: relative;
    border: 1px solid rgba(139,105,20,0.25);
    box-shadow: inset 0 1px 2px rgba(0,0,0,0.08);
}
#upl-submit-overlay-fill {
    display: block;
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, #1A6B3F 0%, #F59E0B 60%, #FBBF24 100%);
    background-size: 200% 100%;
    border-radius: 999px;
    transition: width 0.18s ease-out;
    animation: upl-progress-shimmer 1.4s linear infinite;
    box-shadow: 0 0 10px rgba(245,158,11,0.6);
}
.upl-submit-overlay-pct {
    font-family: var(--upl-font-mono);
    font-size: 22px;
    font-weight: 900;
    color: #1A6B3F;
    margin-top: 10px;
    letter-spacing: 1px;
}
.upl-submit-overlay-hint {
    font-size: 10px;
    color: #6B6457;
    margin-top: 12px;
    line-height: 1.5;
    font-style: italic;
}

/* ════════════════════════════════════════════════════════════════
   CAPTAIN CROWN BADGE (glowing) - profile + team page + cards
   ════════════════════════════════════════════════════════════════ */

/* Big crown badge for profile header */
.upl-cap-crown {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px 4px 8px;
    border-radius: 999px;
    background: linear-gradient(135deg, #FFF4C8 0%, #FBBF24 40%, #C9A227 100%);
    border: 1.5px solid rgba(139,105,20,0.5);
    box-shadow:
        0 0 0 0 rgba(251,191,36,0.65),
        0 3px 10px rgba(139,105,20,0.35),
        inset 0 1px 0 rgba(255,255,255,0.5);
    animation: upl-cap-glow 2.4s ease-in-out infinite;
    font-family: var(--upl-font-display);
    color: #1A0F00;
    font-weight: 900;
    font-size: 11px;
    letter-spacing: 1px;
    line-height: 1;
    text-shadow: 0 1px 1px rgba(255,255,255,0.4);
}
.upl-cap-crown-icon {
    font-size: 16px;
    line-height: 1;
    filter: drop-shadow(0 1px 1px rgba(0,0,0,0.3));
}
.upl-cap-crown-label {
    letter-spacing: 1.2px;
}
@keyframes upl-cap-glow {
    0%, 100% {
        box-shadow:
            0 0 0 0 rgba(251,191,36,0.6),
            0 3px 10px rgba(139,105,20,0.35),
            inset 0 1px 0 rgba(255,255,255,0.5);
    }
    50% {
        box-shadow:
            0 0 0 8px rgba(251,191,36,0),
            0 4px 16px rgba(251,191,36,0.55),
            inset 0 1px 0 rgba(255,255,255,0.5);
    }
}

/* Inline crown next to player name in lists */
.upl-cap-crown-inline {
    display: inline-block;
    color: #C9A227;
    font-size: 14px;
    margin-left: 4px;
    filter: drop-shadow(0 0 6px rgba(251,191,36,0.6));
    animation: upl-cap-inline-pulse 2.4s ease-in-out infinite;
}
@keyframes upl-cap-inline-pulse {
    0%, 100% { filter: drop-shadow(0 0 4px rgba(251,191,36,0.5)); transform: scale(1); }
    50%      { filter: drop-shadow(0 0 10px rgba(251,191,36,0.85)); transform: scale(1.12); }
}

/* Captain row in team player list: subtle gold highlight */
.upl-stats-row-captain {
    background: linear-gradient(90deg, rgba(251,191,36,0.10) 0%, transparent 60%) !important;
    border-left: 3px solid #C9A227 !important;
    padding-left: calc(16px - 3px) !important;
}

/* Upgrade old card-captain badge to glow */
.upl-rp-cap-badge {
    background: linear-gradient(135deg, #FBBF24 0%, #C9A227 100%) !important;
    color: #1A0F00 !important;
    box-shadow: 0 0 0 0 rgba(251,191,36,0.55), 0 2px 6px rgba(139,105,20,0.35);
    animation: upl-cap-glow 2.4s ease-in-out infinite;
    font-weight: 900 !important;
}

@media (prefers-reduced-motion: reduce) {
    .upl-cap-crown,
    .upl-rp-cap-badge,
    .upl-cap-crown-inline,
    #upl-submit-overlay-fill,
    .upl-upload-progress-bar > span { animation: none; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.4 — POT page + filter clear button + admin OVR column
   ════════════════════════════════════════════════════════════════ */

/* Registered players: clear filter chip */
.upl-rp-filter-clear {
    display: inline-flex;
    align-items: center;
    padding: 6px 12px;
    background: #FBF8F0;
    border: 1.5px solid #C9BFA5;
    border-radius: 6px;
    color: #1A1410;
    font-weight: 700;
    font-size: 11px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    text-decoration: none;
    margin-left: auto;
    transition: all 0.15s;
}
.upl-rp-filter-clear:hover {
    background: #FEE2E2;
    border-color: #B83227;
    color: #B83227;
}

/* ── Player of the Tournament page ──────────────────────────── */
.upl-pot-hero {
    text-align: center;
    padding: 28px 20px 18px !important;
    background:
        radial-gradient(ellipse 60% 80% at 50% 0%, rgba(251,191,36,0.18), transparent 70%),
        linear-gradient(180deg, #0F2543 0%, #0A1929 100%) !important;
    color: #fff !important;
    border-radius: 14px !important;
    border: 1px solid #C9A227 !important;
    box-shadow:
        0 12px 32px rgba(6,14,26,0.45),
        inset 0 1px 0 rgba(251,191,36,0.18) !important;
    margin-bottom: 14px !important;
    position: relative;
    overflow: hidden;
}
.upl-pot-hero::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, transparent, #FBBF24, transparent);
}
.upl-pot-trophy {
    font-size: 56px;
    line-height: 1;
    filter: drop-shadow(0 4px 12px rgba(251,191,36,0.5));
    animation: upl-pot-trophy-bob 3.5s ease-in-out infinite;
}
@keyframes upl-pot-trophy-bob {
    0%, 100% { transform: translateY(0) rotate(-2deg); }
    50%      { transform: translateY(-6px) rotate(2deg); }
}
.upl-pot-title {
    font-family: var(--upl-font-display);
    font-size: clamp(24px, 5vw, 36px);
    font-weight: 900;
    margin: 8px 0 8px;
    background: linear-gradient(180deg, #FFF4C8 0%, #FBBF24 50%, #C9A227 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    letter-spacing: -0.3px;
    line-height: 1.1;
}
.upl-pot-formula {
    font-family: var(--upl-font-mono);
    font-size: 12px;
    color: rgba(255,255,255,0.85);
    margin: 6px 0 4px;
    line-height: 1.5;
    padding: 0 8px;
}
.upl-pot-formula strong {
    color: #FBBF24;
    font-weight: 700;
}
.upl-pot-min {
    font-size: 11px;
    color: rgba(255,255,255,0.92);
    margin: 0;
    letter-spacing: 0.5px;
}

/* Tier filter chips */
.upl-pot-tier-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px;
    background: linear-gradient(180deg, #FFFEFA 0%, #F5F0E2 100%);
    border: 1px solid #DDD3BD;
    border-radius: 10px;
    margin-bottom: 10px;
}
.upl-pot-chip {
    flex: 1 1 calc(20% - 6px);
    min-width: 80px;
    padding: 9px 8px;
    background: #FFFFFF;
    border: 1.5px solid #DDD3BD;
    border-radius: 8px;
    text-decoration: none;
    text-align: center;
    transition: all 0.18s;
    box-shadow: var(--upl-shadow-sm);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}
.upl-pot-chip-label {
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 11px;
    color: #1A1410;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    line-height: 1.1;
}
.upl-pot-chip-count {
    font-family: var(--upl-font-mono);
    font-size: 10px;
    font-weight: 700;
    color: #6B6457;
    background: #ECE8DC;
    padding: 1px 7px;
    border-radius: 999px;
    margin-top: 2px;
}
.upl-pot-chip:hover {
    border-color: #C9A227;
    transform: translateY(-1px);
}
.upl-pot-chip-active {
    background: linear-gradient(180deg, #0F2543 0%, #0A1929 100%) !important;
    border-color: #C9A227 !important;
    box-shadow:
        0 2px 8px rgba(15,37,67,0.25),
        inset 0 1px 0 rgba(251,191,36,0.18);
}
.upl-pot-chip-active .upl-pot-chip-label { color: #FBBF24 !important; }
.upl-pot-chip-active .upl-pot-chip-count { background: rgba(251,191,36,0.2); color: #FFE082; }
/* Tier-specific colors when active */
.upl-pot-chip-active.upl-pot-chip-plat { background: linear-gradient(180deg, #6E7B8A, #4A5560) !important; }
.upl-pot-chip-active.upl-pot-chip-gold { background: linear-gradient(180deg, #B07300, #8B5A00) !important; }
.upl-pot-chip-active.upl-pot-chip-silv { background: linear-gradient(180deg, #758AA0, #4A5C70) !important; }
.upl-pot-chip-active.upl-pot-chip-brnz { background: linear-gradient(180deg, #8B5A2B, #6B3F1F) !important; }

@media (max-width: 480px) {
    .upl-pot-chip { flex: 1 1 calc(33.333% - 6px); padding: 7px 6px; }
    .upl-pot-chip-label { font-size: 10px; }
}

/* POT table */
.upl-pot-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.upl-pot-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--upl-font-body);
    font-size: 12px;
    min-width: 700px;
}
.upl-pot-table thead th {
    background: linear-gradient(180deg, #0F2543 0%, #0A1929 100%);
    color: #FBBF24;
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 11px;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    padding: 10px 8px;
    text-align: left;
    border-bottom: 2px solid #C9A227;
    white-space: nowrap;
}
.upl-pot-table thead th.upl-pot-num { text-align: right; }
.upl-pot-table tbody tr {
    border-bottom: 1px solid #ECE8DC;
    transition: background 0.15s;
}
.upl-pot-table tbody tr:hover { background: #FBF8F0; }
.upl-pot-table tbody td {
    padding: 10px 8px;
    color: #1A1410;
    vertical-align: middle;
}
.upl-pot-table td.upl-pot-num { text-align: right; font-family: var(--upl-font-mono); font-weight: 600; }
.upl-pot-table td.upl-pot-col-score strong {
    color: #1A6B3F;
    font-family: var(--upl-font-display);
    font-size: 14px;
    font-weight: 900;
}

/* Top 3 rows: medal treatment */
.upl-pot-row-first {
    background: linear-gradient(90deg, #FFFBEB 0%, transparent 80%) !important;
    border-left: 4px solid #FBBF24;
}
.upl-pot-row-second {
    background: linear-gradient(90deg, #F5F3F7 0%, transparent 80%) !important;
    border-left: 3px solid #94A3B8;
}
.upl-pot-row-third {
    background: linear-gradient(90deg, #FDF4EF 0%, transparent 80%) !important;
    border-left: 3px solid #B87333;
}

.upl-pot-medal {
    font-size: 22px;
    line-height: 1;
    display: inline-block;
}
.upl-pot-col-rank {
    width: 44px;
    text-align: center;
    font-family: var(--upl-font-display);
    font-weight: 900;
    color: #4A4036;
}

.upl-pot-pname {
    color: #073763;
    text-decoration: none;
    font-weight: 800;
    border-bottom: 1px dotted transparent;
    transition: border-color 0.15s;
}
.upl-pot-pname:hover { border-color: #073763; }

.upl-pot-tier-label {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 4px;
    font-family: var(--upl-font-mono);
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    vertical-align: 1px;
}
.upl-pot-tier-plat { background: linear-gradient(180deg, #758AA0, #4A5C70); color: #fff; }
.upl-pot-tier-gold { background: linear-gradient(180deg, #FBBF24, #C9A227); color: #1A0F00; }
.upl-pot-tier-silv { background: linear-gradient(180deg, #94A3B8, #64748B); color: #fff; }
.upl-pot-tier-brnz { background: linear-gradient(180deg, #B87333, #8B5A2B); color: #fff; }

@media (max-width: 480px) {
    .upl-pot-table { font-size: 11px; }
    .upl-pot-table thead th { padding: 8px 5px; font-size: 9px; }
    .upl-pot-table tbody td { padding: 8px 5px; }
    .upl-pot-medal { font-size: 18px; }
}

@media (prefers-reduced-motion: reduce) {
    .upl-pot-trophy { animation: none; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.5 — DEEP CONTRAST AUDIT: kill every invisible / barely-visible
   text instance from earlier "luxe" overrides
   ════════════════════════════════════════════════════════════════ */

/* Constitution body paragraphs / lists - force readable dark text
   on cream parchment body. Scope ONLY to the main constitution lists
   (upl-const-list, upl-const-sublist) to avoid hitting tier cards,
   fee cards, and other dark-bg variants that have their own colors. */
.upl-const-sec:not(.upl-const-ack) > article > p,
.upl-const-sec:not(.upl-const-ack) > p,
.upl-const-list > li,
.upl-const-sec:not(.upl-const-ack) .upl-const-sublist > li {
    color: #1A1410 !important;
    font-weight: 400;
}
.upl-const-sec:not(.upl-const-ack) > article > p strong,
.upl-const-sec:not(.upl-const-ack) > p strong,
.upl-const-list > li strong,
.upl-const-sec:not(.upl-const-ack) .upl-const-sublist > li strong {
    color: #073763 !important;
    font-weight: 800;
}
.upl-const-sec:not(.upl-const-ack) > p em,
.upl-const-sec:not(.upl-const-ack) > article > p em,
.upl-const-list > li em,
.upl-const-sec:not(.upl-const-ack) .upl-const-sublist > li em {
    color: #4A4036 !important;
    font-style: italic;
}

/* Tier cards (Plat/Gold/Silv/Brnz) - colored bg with white/dark text
   depending on tier. Preserve their inverted text colors. */
.upl-const-tier-card,
.upl-tier-plat-c, .upl-tier-gold-c, .upl-tier-silv-c, .upl-tier-brnz-c {
    /* their bg is already a gradient, just don't let dark-text rules leak in */
}
.upl-tier-plat-c .upl-const-tier-rules li,
.upl-tier-silv-c .upl-const-tier-rules li,
.upl-tier-brnz-c .upl-const-tier-rules li {
    color: rgba(255,255,255,0.95) !important;
}
.upl-tier-gold-c .upl-const-tier-rules li {
    color: #1F1300 !important;
}

/* Fee cards: dark colored bg, white text */
.upl-const-fee-card,
.upl-const-fee-card p,
.upl-const-fee-card span:not(.upl-const-fee-amount):not(.upl-const-fee-foot) {
    color: #fff !important;
}
.upl-const-fee-card .upl-const-fee-amount { color: #fff !important; }
.upl-const-fee-card .upl-const-fee-foot { color: rgba(255,255,255,0.92) !important; }

/* Award cards - the gold/silver/HOF cards */
.upl-const-award-gold,
.upl-const-award-gold p,
.upl-const-award-gold strong {
    color: #1F1300 !important;
}
.upl-const-award-silver,
.upl-const-award-silver p,
.upl-const-award-silver strong {
    color: #1A1410 !important;
}

/* Warning callout: amber bg, dark amber text */
.upl-const-warning,
.upl-const-warning p,
.upl-const-warning li,
.upl-const-warning ul li {
    color: #4E2A04 !important;
}
.upl-const-warning strong,
.upl-const-warning li strong,
.upl-const-warning ul li strong {
    color: #7C2D12 !important;
    font-weight: 800;
}
.upl-const-warning-title {
    color: #7C2D12 !important;
    font-weight: 800;
}

/* Standings page numbers / stat cells: bold dark, not faded */
.upl-table tbody td {
    color: #1A1410 !important;
}
.upl-table tbody td.upl-num,
.upl-table tbody td .upl-num {
    color: #1A1410 !important;
    font-weight: 700;
}

/* Match cards body: dark text on white card */
.upl-match-row,
.upl-match-row .upl-team-code,
.upl-match-row .upl-team-name,
.upl-match-row .upl-score {
    color: #1A1410 !important;
}
.upl-match-row.upl-winner .upl-team-code,
.upl-match-row.upl-winner .upl-team-name,
.upl-match-row.upl-winner .upl-score {
    color: #0F4A2A !important;
    font-weight: 700;
}

/* Player profile stat grid: bold dark numbers */
.upl-pp-stat-grid div span {
    color: #6B6457 !important;
    font-weight: 600;
}
.upl-pp-stat-grid div strong {
    color: #1A1410 !important;
    font-weight: 900;
}

/* Form labels - solid dark, not gray */
.upl-field label,
.upl-form label {
    color: #1A1410 !important;
    font-weight: 700;
}

/* Section number badge (A, B, C in ACK and 1, 2, 3 in normal sections):
   make sure background is solid color, not blending */
.upl-const-num {
    background: linear-gradient(135deg, #1A6B3F, #0F4A2A) !important;
    color: #FBBF24 !important;
    box-shadow: 0 3px 8px rgba(26,107,63,0.35) !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.3);
}

/* Section section-title strip (Sections A - E gray line) */
.upl-const-clauses {
    color: #6B6457 !important;
    font-weight: 600 !important;
    font-family: var(--upl-font-mono);
    letter-spacing: 1px;
}
.upl-const-ack .upl-const-clauses {
    color: rgba(255,255,255,0.92) !important;
}

/* Tier badges in registered players + cards */
.upl-rp-tier-plat .upl-rp-tier-tag,
.upl-rp-tier-silv .upl-rp-tier-tag,
.upl-rp-tier-brnz .upl-rp-tier-tag { color: #fff !important; }
.upl-rp-tier-gold .upl-rp-tier-tag { color: #1F1300 !important; }

/* Empty states - dark enough to read */
.upl-empty,
.upl-stats-row.upl-empty,
[class*="upl-empty"] {
    color: #4A4036 !important;
}

/* Inline grey labels in match form / dashboard - bump contrast */
.upl-field p,
.upl-field small,
.upl-field .upl-hint {
    color: #6B6457 !important;
}

/* Constitution main heading bar text (UPL Constitution + dropdown) */
.upl-const-toolbar,
.upl-const-toolbar h1,
.upl-const-toolbar select { color: #fff !important; }

/* Section title (h3 with letter badge "A Code of Conduct" pattern) */
.upl-const-ack-card h3,
.upl-const-ack-card h3 * {
    color: #FBBF24 !important;
    border-bottom: 1px solid rgba(251,191,36,0.25);
    padding-bottom: 6px;
    margin-bottom: 8px;
}
.upl-const-ack-card h3 .upl-const-ack-letter {
    color: #fff !important;
}

/* Constitution decision finality bold */
.upl-const-sec p strong:last-child {
    color: #073763 !important;
}

/* Fee table */
.upl-const-table th,
.upl-const-table td {
    color: #1A1410 !important;
}
.upl-const-table th {
    background: #FBF8F0 !important;
    color: #073763 !important;
    font-weight: 800;
}

/* Bracket rows - dark text on light bg */
.upl-const-bracket-row {
    color: #1A1410 !important;
}
.upl-const-bracket-row strong {
    color: #073763 !important;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.6 — FINAL DARK-SECTION ENFORCEMENT (last in cascade)
   These rules MUST come last so they win regardless of any earlier
   override. They lock text colors for dark-bg components.
   ════════════════════════════════════════════════════════════════ */

/* Acknowledgements section + cards: dark navy bg, light text */
.upl-const-sec.upl-const-ack,
.upl-const-sec.upl-const-ack .upl-const-ack-card,
.upl-const-sec.upl-const-ack .upl-const-ack-card p,
.upl-const-sec.upl-const-ack .upl-const-ack-card li,
.upl-const-sec.upl-const-ack .upl-const-ack-card ul li,
.upl-const-sec.upl-const-ack .upl-const-ack-card .upl-const-sublist,
.upl-const-sec.upl-const-ack .upl-const-ack-card .upl-const-sublist li {
    color: rgba(255,255,255,0.92) !important;
}
.upl-const-sec.upl-const-ack .upl-const-ack-card h3,
.upl-const-sec.upl-const-ack .upl-const-ack-card h3 * {
    color: #FBBF24 !important;
}
.upl-const-sec.upl-const-ack .upl-const-ack-card h3 .upl-const-ack-letter {
    color: #fff !important;
}
.upl-const-sec.upl-const-ack .upl-const-ack-card p strong,
.upl-const-sec.upl-const-ack .upl-const-ack-card li strong,
.upl-const-sec.upl-const-ack .upl-const-ack-card ul li strong,
.upl-const-sec.upl-const-ack .upl-const-ack-card .upl-const-sublist li strong {
    color: #FBBF24 !important;
    font-weight: 800;
}
.upl-const-sec.upl-const-ack > header h2 {
    color: #fff !important;
}
.upl-const-sec.upl-const-ack > header .upl-const-clauses {
    color: rgba(255,255,255,0.92) !important;
}

/* Tier cards: keep their inverted text colors */
.upl-tier-plat-c, .upl-tier-plat-c p, .upl-tier-plat-c li, .upl-tier-plat-c strong { color: #fff !important; }
.upl-tier-silv-c, .upl-tier-silv-c p, .upl-tier-silv-c li, .upl-tier-silv-c strong { color: #fff !important; }
.upl-tier-brnz-c, .upl-tier-brnz-c p, .upl-tier-brnz-c li, .upl-tier-brnz-c strong { color: #fff !important; }
.upl-tier-gold-c, .upl-tier-gold-c p, .upl-tier-gold-c li, .upl-tier-gold-c strong { color: #1F1300 !important; }

/* Fee cards: white text on red gradient */
.upl-const-fee-card, .upl-const-fee-card p, .upl-const-fee-card strong, .upl-const-fee-card span { color: #fff !important; }
.upl-const-fee-card .upl-const-fee-amount { color: #fff !important; }

/* ════════════════════════════════════════════════════════════════
   v2.7.7 — Complaint type radio cards
   ════════════════════════════════════════════════════════════════ */
.upl-comp-type-radio {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    margin-top: 4px;
}
.upl-comp-type-opt {
    cursor: pointer;
    display: block;
}
.upl-comp-type-opt input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.upl-comp-type-card {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px;
    background: #FFFFFF;
    border: 1.5px solid #DDD3BD;
    border-radius: 10px;
    transition: all 0.18s;
    height: 100%;
}
.upl-comp-type-card:hover {
    border-color: #1A6B3F;
    background: #FBF8F0;
}
.upl-comp-type-opt input[type="radio"]:checked + .upl-comp-type-card {
    background: linear-gradient(135deg, #E8F5E9 0%, #F0FAF3 100%);
    border-color: #1A6B3F;
    box-shadow: 0 4px 12px rgba(26,107,63,0.18);
}
.upl-comp-type-icon {
    font-size: 24px;
    line-height: 1;
    flex-shrink: 0;
}
.upl-comp-type-card strong {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 13px;
    color: #1A1410;
    margin-bottom: 2px;
}
.upl-comp-type-card small {
    display: block;
    font-size: 11px;
    color: #6B6457;
    line-height: 1.4;
}
@media (max-width: 480px) {
    .upl-comp-type-radio { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.8 — TIER CARD readability + bg/font polish
   ════════════════════════════════════════════════════════════════ */

/* Lock tier card text colors at highest specificity. Bigger backgrounds,
   stronger contrast, readable on all 4 tier variants. */
.upl-const-tier-card.upl-tier-plat-c,
.upl-const-tier-card.upl-tier-plat-c .upl-const-tier-rules,
.upl-const-tier-card.upl-tier-plat-c .upl-const-tier-rules li,
.upl-const-tier-card.upl-tier-plat-c .upl-const-tier-rules li strong,
.upl-const-tier-card.upl-tier-plat-c .upl-const-tier-rules li em {
    color: #fff !important;
}
.upl-const-tier-card.upl-tier-plat-c .upl-const-tier-rules li strong {
    color: #FFE082 !important;
    font-weight: 800;
}

.upl-const-tier-card.upl-tier-gold-c,
.upl-const-tier-card.upl-tier-gold-c .upl-const-tier-rules,
.upl-const-tier-card.upl-tier-gold-c .upl-const-tier-rules li,
.upl-const-tier-card.upl-tier-gold-c .upl-const-tier-rules li em {
    color: #1F1300 !important;
}
.upl-const-tier-card.upl-tier-gold-c .upl-const-tier-rules li strong {
    color: #5B3A00 !important;
    font-weight: 800;
}

.upl-const-tier-card.upl-tier-silv-c,
.upl-const-tier-card.upl-tier-silv-c .upl-const-tier-rules,
.upl-const-tier-card.upl-tier-silv-c .upl-const-tier-rules li,
.upl-const-tier-card.upl-tier-silv-c .upl-const-tier-rules li em {
    color: #fff !important;
}
.upl-const-tier-card.upl-tier-silv-c .upl-const-tier-rules li strong {
    color: #E2F0F8 !important;
    font-weight: 800;
}

.upl-const-tier-card.upl-tier-brnz-c,
.upl-const-tier-card.upl-tier-brnz-c .upl-const-tier-rules,
.upl-const-tier-card.upl-tier-brnz-c .upl-const-tier-rules li,
.upl-const-tier-card.upl-tier-brnz-c .upl-const-tier-rules li em {
    color: #fff !important;
}
.upl-const-tier-card.upl-tier-brnz-c .upl-const-tier-rules li strong {
    color: #FFE0B2 !important;
    font-weight: 800;
}

/* Slightly richer/deeper tier card backgrounds for premium feel */
.upl-tier-plat-c {
    background: linear-gradient(135deg, #3B0F6E 0%, #5B21B6 50%, #7C3AED 100%) !important;
    box-shadow: 0 6px 18px rgba(91,33,182,0.35);
}
.upl-tier-gold-c {
    background: linear-gradient(135deg, #B07300 0%, #DC9A0A 50%, #F9A825 100%) !important;
    box-shadow: 0 6px 18px rgba(176,115,0,0.35);
}
.upl-tier-silv-c {
    background: linear-gradient(135deg, #334155 0%, #475569 50%, #64748B 100%) !important;
    box-shadow: 0 6px 18px rgba(51,65,85,0.35);
}
.upl-tier-brnz-c {
    background: linear-gradient(135deg, #4A2C1D 0%, #7C5036 50%, #A06B40 100%) !important;
    box-shadow: 0 6px 18px rgba(74,44,29,0.35);
}

/* Tier badge (PLATINUM / GOLD / etc label) - higher contrast pill */
.upl-tier-plat-c .upl-const-tier-badge,
.upl-tier-silv-c .upl-const-tier-badge,
.upl-tier-brnz-c .upl-const-tier-badge {
    background: rgba(255,255,255,0.20) !important;
    color: #fff !important;
    border: 1px solid rgba(255,255,255,0.30);
    font-weight: 900 !important;
    letter-spacing: 1.2px;
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
}
.upl-tier-gold-c .upl-const-tier-badge {
    background: rgba(31,19,0,0.25) !important;
    color: #1F1300 !important;
    border: 1px solid rgba(31,19,0,0.4);
    font-weight: 900 !important;
    letter-spacing: 1.2px;
}

/* Tier card list numbering: white circles for plat/silv/brnz, dark for gold */
.upl-tier-plat-c .upl-const-tier-rules li::marker,
.upl-tier-silv-c .upl-const-tier-rules li::marker,
.upl-tier-brnz-c .upl-const-tier-rules li::marker {
    color: rgba(255,255,255,0.85);
    font-weight: 800;
}
.upl-tier-gold-c .upl-const-tier-rules li::marker {
    color: rgba(31,19,0,0.85);
    font-weight: 800;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.8 — Tier card readability fix (Plat/Silv/Brnz had dark blue
   strong on dark bg = barely visible)
   ════════════════════════════════════════════════════════════════ */

/* Platinum (purple bg) - lighten + softer purple, brighter strong */
.upl-tier-plat-c {
    background: linear-gradient(135deg, #5E35B1 0%, #7E57C2 50%, #9575CD 100%) !important;
    box-shadow:
        0 8px 22px rgba(74,20,140,0.32),
        inset 0 1px 0 rgba(255,255,255,0.18) !important;
}
.upl-tier-plat-c,
.upl-tier-plat-c p,
.upl-tier-plat-c li,
.upl-tier-plat-c .upl-const-tier-rules,
.upl-tier-plat-c .upl-const-tier-rules li {
    color: rgba(255,255,255,0.96) !important;
}
.upl-tier-plat-c strong,
.upl-tier-plat-c p strong,
.upl-tier-plat-c li strong,
.upl-tier-plat-c .upl-const-tier-rules li strong {
    color: #FFE082 !important; /* warm gold pop on purple */
    font-weight: 800;
    text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}
.upl-tier-plat-c .upl-const-tier-badge {
    background: rgba(255,255,255,0.18) !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,0.30);
}

/* Gold (yellow bg) - already good but lock readability */
.upl-tier-gold-c {
    background: linear-gradient(135deg, #FFB300 0%, #FFA000 50%, #FF8F00 100%) !important;
    box-shadow:
        0 8px 22px rgba(176,115,0,0.32),
        inset 0 1px 0 rgba(255,255,255,0.30) !important;
}
.upl-tier-gold-c,
.upl-tier-gold-c p,
.upl-tier-gold-c li,
.upl-tier-gold-c .upl-const-tier-rules li { color: #1F1300 !important; }
.upl-tier-gold-c strong,
.upl-tier-gold-c p strong,
.upl-tier-gold-c li strong,
.upl-tier-gold-c .upl-const-tier-rules li strong {
    color: #4E2A04 !important;
    font-weight: 900;
}
.upl-tier-gold-c .upl-const-tier-badge {
    background: rgba(31,19,0,0.20) !important;
    color: #1F1300 !important;
    border: 1px solid rgba(31,19,0,0.35);
}

/* Silver (slate-blue bg) - was hard to read */
.upl-tier-silv-c {
    background: linear-gradient(135deg, #546E7A 0%, #78909C 50%, #90A4AE 100%) !important;
    box-shadow:
        0 8px 22px rgba(69,90,100,0.30),
        inset 0 1px 0 rgba(255,255,255,0.18) !important;
}
.upl-tier-silv-c,
.upl-tier-silv-c p,
.upl-tier-silv-c li,
.upl-tier-silv-c .upl-const-tier-rules,
.upl-tier-silv-c .upl-const-tier-rules li {
    color: rgba(255,255,255,0.96) !important;
}
.upl-tier-silv-c strong,
.upl-tier-silv-c p strong,
.upl-tier-silv-c li strong,
.upl-tier-silv-c .upl-const-tier-rules li strong {
    color: #FFE082 !important;
    font-weight: 800;
    text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}
.upl-tier-silv-c .upl-const-tier-badge {
    background: rgba(255,255,255,0.20) !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,0.32);
}

/* Bronze (brown bg) - was dark blue strong on dark brown = invisible */
.upl-tier-brnz-c {
    background: linear-gradient(135deg, #5D4037 0%, #8D6E63 50%, #A1887F 100%) !important;
    box-shadow:
        0 8px 22px rgba(78,52,46,0.32),
        inset 0 1px 0 rgba(255,255,255,0.16) !important;
}
.upl-tier-brnz-c,
.upl-tier-brnz-c p,
.upl-tier-brnz-c li,
.upl-tier-brnz-c .upl-const-tier-rules,
.upl-tier-brnz-c .upl-const-tier-rules li {
    color: rgba(255,255,255,0.96) !important;
}
.upl-tier-brnz-c strong,
.upl-tier-brnz-c p strong,
.upl-tier-brnz-c li strong,
.upl-tier-brnz-c .upl-const-tier-rules li strong {
    color: #FFE082 !important;
    font-weight: 800;
    text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}
.upl-tier-brnz-c .upl-const-tier-badge {
    background: rgba(255,255,255,0.18) !important;
    color: #FFFFFF !important;
    border: 1px solid rgba(255,255,255,0.30);
}

/* ════════════════════════════════════════════════════════════════
   v2.7.8 — Hindi Constitution link + Devanagari rendering
   ════════════════════════════════════════════════════════════════ */

/* Hindi version link card under UAS banner */
.upl-uas-hindi-link {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    margin-top: 8px;
    margin-bottom: 16px;
    background: linear-gradient(135deg, #FFF8E1 0%, #FEF3C7 100%);
    border: 1.5px solid #FBBF24;
    border-radius: 12px;
    text-decoration: none;
    color: inherit;
    transition: all 0.18s;
    box-shadow: 0 2px 8px rgba(251,191,36,0.15);
}
.upl-uas-hindi-link:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 18px rgba(251,191,36,0.25);
    border-color: #C9A227;
    background: linear-gradient(135deg, #FEF3C7 0%, #FDE68A 100%);
}
.upl-uas-hindi-icon {
    font-size: 28px;
    line-height: 1;
    flex-shrink: 0;
}
.upl-uas-hindi-text {
    flex: 1;
    min-width: 0;
}
.upl-uas-hindi-text strong {
    display: block;
    font-family: var(--upl-font-display), 'Tiro Devanagari Sanskrit', serif;
    font-size: 14px;
    color: #5B3A00;
    font-weight: 800;
    line-height: 1.3;
    margin-bottom: 2px;
}
.upl-uas-hindi-text small {
    display: block;
    font-size: 11px;
    color: #7C5A00;
    line-height: 1.4;
}
.upl-uas-hindi-arrow {
    font-size: 22px;
    color: #B07300;
    font-weight: 900;
    flex-shrink: 0;
}

/* Devanagari rendering for Hindi constitution */
.upl-const-hindi,
.upl-const-hindi * {
    font-family: 'Noto Sans', 'Mangal', 'Tiro Devanagari Sanskrit', system-ui, -apple-system, sans-serif;
}
.upl-const-hindi h1,
.upl-const-hindi h2,
.upl-const-hindi h3 {
    font-family: 'Noto Sans', 'Tiro Devanagari Sanskrit', system-ui, -apple-system, sans-serif;
    font-weight: 800;
}
/* Hindi text typically has lower x-height — slight line-height bump */
.upl-const-hindi p,
.upl-const-hindi li {
    line-height: 1.75;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.8 — Hindi constitution banner styling
   ════════════════════════════════════════════════════════════════ */
.upl-uas-hindi-link {
    display: flex;
    align-items: center;
    gap: 14px;
    background: linear-gradient(135deg, #FFF8E1 0%, #FFFBEB 60%, #FFF3C7 100%);
    border: 1.5px solid #C9A227;
    border-radius: 12px;
    padding: 14px 18px;
    margin: 8px 0 14px;
    text-decoration: none;
    color: #1A1410 !important;
    box-shadow:
        0 4px 16px rgba(201,162,39,0.15),
        inset 0 1px 0 rgba(255,255,255,0.5);
    transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s;
}
.upl-uas-hindi-link:hover {
    transform: translateY(-2px);
    border-color: #8B6914;
    box-shadow:
        0 8px 22px rgba(201,162,39,0.25),
        inset 0 1px 0 rgba(255,255,255,0.5);
}
.upl-uas-hindi-icon {
    font-size: 32px;
    line-height: 1;
    flex-shrink: 0;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.15));
}
.upl-uas-hindi-text {
    flex: 1;
    min-width: 0;
}
.upl-uas-hindi-text strong {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 15px;
    color: #1A0F00 !important;
    margin-bottom: 2px;
    font-weight: 800;
}
.upl-uas-hindi-text small {
    display: block;
    font-size: 11px;
    color: #6B5114 !important;
    line-height: 1.4;
}
.upl-uas-hindi-arrow {
    font-size: 20px;
    color: #8B6914;
    font-weight: 900;
    flex-shrink: 0;
}

/* Hindi constitution body: use the same styles as English (it's just translation) */
.upl-const-hindi {
    font-family: 'Mukta', 'Noto Sans Devanagari', system-ui, sans-serif;
}
.upl-const-hindi h1, .upl-const-hindi h2, .upl-const-hindi h3 {
    font-family: 'Mukta', 'Noto Sans Devanagari', sans-serif;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.9 — S1 legacy stat grid styling fix (was rendering as
   inline concatenated text "Matches18Wins13...")
   ════════════════════════════════════════════════════════════════ */

/* Stat grid: proper card layout */
.upl-pp-stat-table {
    background: #FFFFFF;
    border: 1px solid #E2DCC8;
    border-radius: 12px;
    padding: 14px;
    margin: 10px;
    box-shadow: 0 2px 8px rgba(26,20,16,0.06);
}
.upl-pp-stat-section-title {
    font-family: var(--upl-font-display);
    font-size: 12px;
    font-weight: 800;
    color: #073763;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    padding-bottom: 8px;
    margin-bottom: 10px;
    border-bottom: 1px solid #ECE8DC;
}
.upl-pp-stat-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}
.upl-pp-stat-grid > div {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: linear-gradient(180deg, #FBF8F0 0%, #F5F0E2 100%);
    border: 1px solid #DDD3BD;
    border-radius: 10px;
    padding: 12px 8px;
    min-height: 64px;
    transition: transform 0.15s, border-color 0.15s;
}
.upl-pp-stat-grid > div:hover {
    transform: translateY(-1px);
    border-color: #C9A227;
}
.upl-pp-stat-grid > div span {
    display: block;
    order: 2;
    font-family: var(--upl-font-mono);
    font-size: 10px !important;
    font-weight: 700 !important;
    color: #6B6457 !important;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    margin-top: 4px;
    text-align: center;
}
.upl-pp-stat-grid > div strong {
    display: block;
    order: 1;
    font-family: var(--upl-font-display);
    font-size: 22px !important;
    font-weight: 900 !important;
    color: #073763 !important;
    line-height: 1;
    text-align: center;
}

/* Mobile: 2-col grid */
@media (max-width: 480px) {
    .upl-pp-stat-grid { grid-template-columns: repeat(2, 1fr); gap: 6px; }
    .upl-pp-stat-grid > div { min-height: 56px; padding: 10px 6px; }
    .upl-pp-stat-grid > div strong { font-size: 19px !important; }
}

/* "All-Time Combined" version (gold accent) */
.upl-pp-stat-section-title[style*="C9A227"] {
    color: #8B6914 !important;
}
.upl-pp-stat-table:has(.upl-pp-stat-section-title[style*="C9A227"]) {
    background: linear-gradient(180deg, #FFFDF7 0%, #FFFBEB 100%);
    border-color: #C9A227;
}

/* S1 match-history list - use cleaner card style */
.upl-pp-match {
    margin: 0 10px 8px;
    background: #FFFFFF;
    border: 1px solid #E2DCC8;
    border-radius: 10px;
    overflow: hidden;
}
.upl-pp-match-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    font-size: 12px;
    flex-wrap: wrap;
}
.upl-pp-own, .upl-pp-opp-score {
    font-family: var(--upl-font-mono);
    font-weight: 800;
    color: #1A1410;
}
.upl-pp-opp {
    color: #4A4036;
    font-weight: 600;
    font-size: 11px;
}
.upl-pp-vs {
    color: #94A3B8;
    font-weight: 700;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.upl-pp-tier {
    margin-left: auto;
    padding: 2px 6px;
    border-radius: 4px;
    font-family: var(--upl-font-mono);
    font-size: 10px;
    font-weight: 800;
}
.upl-pp-verdict {
    font-family: var(--upl-font-display);
    font-size: 16px;
    font-weight: 900;
    margin-left: 4px;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.10 — Pending tier change indicators (player + admin)
   ════════════════════════════════════════════════════════════════ */

/* Player profile header: small amber chip next to current tier */
.upl-pp-pending-tier {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    margin-left: 6px;
    padding: 2px 8px;
    background: rgba(251,191,36,0.20);
    border: 1px solid rgba(251,191,36,0.50);
    border-radius: 4px;
    color: #FFE082 !important;
    font-family: var(--upl-font-mono);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    cursor: help;
    animation: upl-pending-pulse 2.8s ease-in-out infinite;
}
.upl-pp-pending-tier strong {
    color: #FFD54F !important;
    font-weight: 900;
}
@keyframes upl-pending-pulse {
    0%, 100% { background: rgba(251,191,36,0.18); }
    50%      { background: rgba(251,191,36,0.32); }
}
@media (prefers-reduced-motion: reduce) {
    .upl-pp-pending-tier { animation: none; }
}

/* Admin players view: pending tier card with approve/reject buttons */
.upl-tier-pending {
    margin-top: 6px;
    padding: 6px 8px;
    background: linear-gradient(180deg, #FFFBEB 0%, #FEF3C7 100%);
    border: 1px solid #F59E0B;
    border-left: 3px solid #B07300;
    border-radius: 4px;
}
.upl-tier-pending-label {
    font-size: 10px;
    color: #7C2D12;
    font-weight: 700;
    margin-bottom: 4px;
    letter-spacing: 0.3px;
}
.upl-tier-pending-label strong {
    color: #4E2A04;
}
.upl-tier-pending-actions {
    display: flex;
    gap: 4px;
}
.upl-tier-pending-actions .button {
    padding: 2px 8px !important;
    font-size: 10px !important;
    line-height: 1.4 !important;
    height: auto !important;
    min-height: 0 !important;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.11 — S1 match history compact card (was overflowing mobile)
   ════════════════════════════════════════════════════════════════ */
.upl-pp-match-s1 {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 10px 8px;
    padding: 10px 12px;
    border: 1px solid #E2DCC8;
    border-radius: 10px;
    font-size: 12px;
    flex-wrap: nowrap;
    overflow: hidden;
}
.upl-pp-match-s1-side {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    flex: 1 1 0;
}
.upl-pp-match-s1-team { flex-shrink: 0; }
.upl-pp-match-s1-score {
    font-family: var(--upl-font-mono);
    font-weight: 800;
    color: #1A1410;
    white-space: nowrap;
    font-size: 12px;
}
.upl-pp-match-s1-score small {
    color: #6B6457;
    font-weight: 600;
    font-size: 10px;
}
.upl-pp-match-s1-opp {
    color: #4A4036;
    font-weight: 600;
    font-size: 10px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.upl-pp-match-s1-vs {
    color: #94A3B8;
    font-weight: 700;
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    flex-shrink: 0;
}
.upl-pp-match-s1-tail {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
.upl-pp-match-s1-chip {
    background: #C9A227;
    color: #1A0F00;
    padding: 2px 6px;
    border-radius: 4px;
    font-family: var(--upl-font-mono);
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.3px;
}
.upl-pp-match-s1-verdict {
    font-family: var(--upl-font-display);
    font-size: 18px;
    font-weight: 900;
    line-height: 1;
}

/* Mobile: stack opponent name below */
@media (max-width: 480px) {
    .upl-pp-match-s1 {
        flex-wrap: wrap;
        gap: 6px 8px;
        padding: 8px 10px;
    }
    .upl-pp-match-s1-vs { font-size: 8px; }
    .upl-pp-match-s1-opp {
        flex: 1 1 100%;
        order: 99;
        font-size: 9px;
        margin-top: -2px;
    }
    .upl-pp-match-s1-score { font-size: 11px; }
    .upl-pp-match-s1-tail { margin-left: auto; }
}

/* Very narrow (320px iPhone SE) */
@media (max-width: 360px) {
    .upl-pp-match-s1 {
        margin: 0 6px 6px;
        padding: 7px 8px;
        gap: 5px;
    }
    .upl-pp-match-s1-score { font-size: 10px; }
    .upl-pp-match-s1-chip { font-size: 8px; padding: 1px 5px; }
    .upl-pp-match-s1-verdict { font-size: 16px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.13 — Final cascade override: kill ALL sticky tabs on mobile
   ════════════════════════════════════════════════════════════════ */
@media (max-width: 767.98px) {
    .upl-hub-tabs,
    .upl-hub-tabs-container,
    .upl-pp-tabs,
    .upl-tab-row,
    .upl-stats-tabs,
    .upl-records-tabs {
        position: static !important;
        top: auto !important;
    }
}


/* ════════════════════════════════════════════════════════════════
   v2.7.16 — 63-Character Points Chart (Constitution §11.1)
   Full Hitwicket roster grouped by category, role-divided, with
   star-variant point cells tier-colored.
   ════════════════════════════════════════════════════════════════ */

.upl-chars-chart {
    margin: 14px 0 20px;
    font-family: var(--upl-font-body);
}

/* Meta strip above the chart */
.upl-chars-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px;
    padding: 10px 14px;
    background: linear-gradient(135deg, #FFF4DA 0%, #FFE7B8 100%);
    border: 1px solid #F0C870;
    border-radius: 10px;
    font-size: 12px;
    color: #6B4A1B;
    margin-bottom: 16px;
}
.upl-chars-meta-num {
    font-family: var(--upl-font-display);
    font-size: 26px;
    font-weight: 900;
    color: #8C5C0F;
    line-height: 1;
    margin-right: 2px;
}
.upl-chars-meta-lbl {
    font-weight: 700;
    margin-right: 6px;
}
.upl-chars-meta-dot { opacity: 0.5; }

/* Category block */
.upl-cc-block {
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    margin-bottom: 18px;
    box-shadow: 0 3px 12px rgba(15,23,42,0.08);
    border: 1px solid #E2E8F0;
}

.upl-cc-band {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    color: #fff;
}
.upl-cc-band-label {
    font-family: var(--upl-font-display);
    font-size: 15px;
    font-weight: 800;
    letter-spacing: 0.4px;
    line-height: 1.2;
}
.upl-cc-band-sub {
    font-size: 11px;
    opacity: 0.85;
    margin-top: 2px;
    font-weight: 500;
}
.upl-cc-band-count {
    font-family: var(--upl-font-mono);
    font-size: 11px;
    font-weight: 700;
    padding: 4px 10px;
    background: rgba(255,255,255,0.20);
    border: 1px solid rgba(255,255,255,0.30);
    border-radius: 5px;
    letter-spacing: 0.5px;
}

/* Category-specific band gradients */
.upl-cc-f2p  .upl-cc-band { background: linear-gradient(135deg, #0E7490 0%, #155E75 100%); }
.upl-cc-sp   .upl-cc-band { background: linear-gradient(135deg, #6366F1 0%, #4338CA 100%); }
.upl-cc-excl .upl-cc-band { background: linear-gradient(135deg, #B45309 0%, #92400E 50%, #C9A227 100%); }

/* Table wrapper with horizontal scroll on mobile */
.upl-cc-tbl-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    background: #fff;
}
.upl-cc-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    min-width: 720px;
}
.upl-cc-tbl thead th {
    padding: 8px 6px;
    background: #F8FAFC;
    border-bottom: 2px solid #CBD5E1;
    font-weight: 700;
    text-align: center;
    color: #475569;
    font-size: 10px;
    letter-spacing: 0.4px;
    text-transform: uppercase;
}
.upl-cc-tbl thead .upl-cc-th-name {
    text-align: left;
    padding-left: 14px;
    min-width: 130px;
    background: #F1F5F9;
}
.upl-cc-tbl thead .upl-cc-th-role {
    text-align: center;
    min-width: 56px;
    background: #F1F5F9;
}

.upl-cc-th-tier { font-size: 10px; }
.upl-cc-th-tier span {
    display: inline-block;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 9px;
    font-weight: 800;
}
.upl-cc-th-r span { background: #B45309; color: #fff; }
.upl-cc-th-b span { background: #4338CA; color: #fff; }
.upl-cc-th-w span { background: #0E7490; color: #fff; }
.upl-cc-th-l span { background: linear-gradient(135deg, #B45309 0%, #C9A227 100%); color: #fff; }

.upl-cc-stars-row th {
    background: #fff;
    padding: 4px;
    border-bottom: 1px solid #E2E8F0;
    color: #C9A227;
    font-size: 11px;
    letter-spacing: 0.5px;
    line-height: 1;
}

/* Sub-divider rows (Batters / Bowlers) */
.upl-cc-subhead td {
    padding: 8px 14px;
    background: #F1F5F9;
    font-weight: 800;
    font-size: 11px;
    color: #1E293B;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    border-bottom: 1px solid #CBD5E1;
}
.upl-cc-sub-bat td { background: linear-gradient(90deg, #DCFCE7 0%, #F0FDF4 100%); }
.upl-cc-sub-bowl td { background: linear-gradient(90deg, #FEE2E2 0%, #FEF2F2 100%); }
.upl-cc-sub-badge {
    display: inline-block;
    padding: 2px 7px;
    border-radius: 4px;
    font-size: 9px;
    font-weight: 900;
    color: #fff;
    margin-right: 8px;
    letter-spacing: 0.5px;
}
.upl-cc-sub-badge-bat { background: #16A34A; }
.upl-cc-sub-badge-bowl { background: #DC2626; }
.upl-cc-sub-count {
    color: #64748B;
    font-weight: 600;
    margin-left: 6px;
    font-size: 10px;
}

/* Character data row */
.upl-cc-row td {
    padding: 7px 6px;
    border-bottom: 1px solid #F1F5F9;
    text-align: center;
}
.upl-cc-row:nth-child(even) td { background: #FAFBFC; }
.upl-cc-row:hover td { background: #FFFBEB; }

.upl-cc-name {
    text-align: left !important;
    padding-left: 14px !important;
    font-weight: 700;
    color: #1E293B;
    font-size: 12px;
    letter-spacing: 0.2px;
    white-space: nowrap;
}
.upl-cc-role { padding: 7px 4px !important; }
.upl-cc-role-badge {
    display: inline-block;
    padding: 2px 6px;
    border-radius: 4px;
    font-size: 9px;
    font-weight: 800;
    color: #fff;
    letter-spacing: 0.4px;
}
.upl-cc-role-bat { background: #16A34A; }
.upl-cc-role-bowl { background: #DC2626; }

/* Point cells — tier color-coded */
.upl-cc-pt {
    font-family: var(--upl-font-mono);
    font-weight: 700;
    font-size: 12px;
    color: #1E293B;
}
.upl-cc-pt-r { background: rgba(180, 83, 9, 0.06); }
.upl-cc-pt-b { background: rgba(67, 56, 202, 0.06); }
.upl-cc-pt-w { background: rgba(14, 116, 144, 0.06); }
.upl-cc-pt-l {
    background: linear-gradient(135deg, rgba(180,83,9,0.12) 0%, rgba(201,162,39,0.18) 100%);
    color: #92400E;
    font-weight: 900;
}
.upl-cc-row:nth-child(even) .upl-cc-pt-r { background: rgba(180, 83, 9, 0.10); }
.upl-cc-row:nth-child(even) .upl-cc-pt-b { background: rgba(67, 56, 202, 0.10); }
.upl-cc-row:nth-child(even) .upl-cc-pt-w { background: rgba(14, 116, 144, 0.10); }

.upl-cc-pt-na {
    color: #CBD5E1 !important;
    font-weight: 400 !important;
    background: #F8FAFC !important;
}

/* Legend below chart */
.upl-cc-legend {
    margin-top: 16px;
    padding: 12px 14px;
    background: #F8FAFC;
    border: 1px solid #E2E8F0;
    border-radius: 10px;
}
.upl-cc-legend-title {
    font-family: var(--upl-font-display);
    font-size: 11px;
    font-weight: 800;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    margin-bottom: 8px;
}
.upl-cc-legend-items {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 16px;
    font-size: 11px;
    color: #334155;
}
.upl-cc-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.upl-cc-legend-swatch {
    display: inline-block;
    width: 18px;
    height: 14px;
    border-radius: 3px;
    text-align: center;
    line-height: 14px;
    font-size: 10px;
    color: #94A3B8;
}

/* Mobile tweaks */
@media (max-width: 768px) {
    .upl-cc-tbl { font-size: 11px; min-width: 680px; }
    .upl-cc-tbl thead th { padding: 6px 4px; font-size: 9px; }
    .upl-cc-name { font-size: 11px; padding-left: 10px !important; }
    .upl-cc-row td { padding: 6px 4px; }
    .upl-cc-pt { font-size: 11px; }
    .upl-cc-th-tier span { padding: 2px 6px; font-size: 8px; }
}
@media (max-width: 480px) {
    .upl-chars-meta { padding: 8px 12px; font-size: 11px; }
    .upl-chars-meta-num { font-size: 22px; }
    .upl-cc-band { padding: 10px 12px; }
    .upl-cc-band-label { font-size: 13px; }
    .upl-cc-band-sub { font-size: 10px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.16 — My Star-up History (Dashboard panel)
   ════════════════════════════════════════════════════════════════ */
.upl-my-starup-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 8px;
}
.upl-my-su-row {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto auto;
    gap: 4px 12px;
    padding: 10px 12px;
    background: #fff;
    border: 1px solid #E2E8F0;
    border-left: 4px solid #16A34A;
    border-radius: 8px;
    transition: background 0.15s ease;
}
.upl-my-su-row:hover { background: #FFFBEB; }
.upl-my-su-cooling { border-left-color: #F59E0B; }
.upl-my-su-rejected { border-left-color: #DC2626; opacity: 0.7; }

.upl-my-su-char-line {
    display: flex;
    align-items: center;
    gap: 8px;
    grid-column: 1 / 2;
}
.upl-my-su-char {
    font-family: var(--upl-font-display);
    font-weight: 800;
    font-size: 13px;
    color: #0F172A;
    letter-spacing: 0.2px;
}
.upl-my-su-pill {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
    align-self: start;
    justify-self: end;
    font-family: var(--upl-font-mono);
    font-size: 9px;
    font-weight: 800;
    padding: 2px 7px;
    border-radius: 4px;
    letter-spacing: 0.5px;
}
.upl-my-su-pill-live { background: #DCFCE7; color: #166534; }
.upl-my-su-pill-cooling { background: #FEF3C7; color: #92400E; }
.upl-my-su-pill-rejected { background: #FEE2E2; color: #991B1B; }

.upl-my-su-detail {
    grid-column: 1 / 3;
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: #475569;
    font-weight: 600;
}
.upl-my-su-meta {
    grid-column: 1 / 3;
    font-size: 10px;
    color: #94A3B8;
    font-family: var(--upl-font-mono);
}

/* ════════════════════════════════════════════════════════════════
   v2.7.18 — Dashboard UI/UX polish
   - Better tier badges (high contrast, visible on any header color)
   - Vivid color-coded stat cards
   - Stylish approve panel with inline modify form
   - Logout button in dashboard header
   - Role pills (captain/vice-captain)
   ════════════════════════════════════════════════════════════════ */

/* Dashboard header — top row layout for name + logout button */
.upl-dash-top-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
.upl-dash-name-block { flex: 1; min-width: 0; }
.upl-dash-name-block h2 {
    font-family: var(--upl-font-display);
    font-size: 22px;
    font-weight: 900;
    color: #fff;
    text-shadow: 0 1px 2px rgba(0,0,0,0.20);
    margin: 0;
}
.upl-dash-name-block p {
    color: rgba(255,255,255,0.92);
    font-size: 13px;
    margin: 6px 0;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.upl-dash-logout {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    background: rgba(0,0,0,0.30);
    color: #fff !important;
    text-decoration: none;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.4px;
    border: 1px solid rgba(255,255,255,0.18);
    transition: all 0.18s ease;
    white-space: nowrap;
}
.upl-dash-logout:hover {
    background: rgba(0,0,0,0.50);
    border-color: rgba(255,255,255,0.92);
}
.upl-dash-logout-icon {
    display: inline-block;
    transform: scaleX(-1);
    font-size: 14px;
}

/* Role pills — captain / vice-captain badges in dash header */
.upl-role-pill {
    display: inline-block;
    padding: 3px 8px;
    border-radius: 4px;
    font-family: var(--upl-font-mono);
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.6px;
    line-height: 1;
}
.upl-role-pill-cap {
    background: #FBBF24;
    color: #7C2D12;
    box-shadow: 0 1px 2px rgba(0,0,0,0.15);
}
.upl-role-pill-vc {
    background: #DBEAFE;
    color: #1E3A8A;
    box-shadow: 0 1px 2px rgba(0,0,0,0.15);
}

/* Tier badges — high contrast, readable on ANY background */
.upl-tier-badge {
    display: inline-block;
    padding: 5px 12px;
    border-radius: 6px;
    font-family: var(--upl-font-mono);
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    color: #fff !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.40);
    box-shadow: 0 2px 6px rgba(0,0,0,0.20);
    border: 1px solid rgba(255,255,255,0.30);
    line-height: 1;
}
.upl-tier-plat {
    background: linear-gradient(135deg, #1E3A8A 0%, #312E81 50%, #4338CA 100%) !important;
    border-color: rgba(216,180,254,0.55) !important;
}
.upl-tier-gold {
    background: linear-gradient(135deg, #92400E 0%, #B45309 50%, #D97706 100%) !important;
    color: #FFF !important;
    border-color: rgba(252,211,77,0.55) !important;
}
.upl-tier-silv {
    background: linear-gradient(135deg, #334155 0%, #475569 50%, #64748B 100%) !important;
    border-color: rgba(203,213,225,0.55) !important;
}
.upl-tier-brnz {
    background: linear-gradient(135deg, #78350F 0%, #92400E 50%, #B45309 100%) !important;
    border-color: rgba(254,215,170,0.55) !important;
}

/* Stat cards — color-coded, vibrant */
.upl-stats-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin: 12px 0;
}
@media (max-width: 480px) {
    .upl-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 6px; }
}
.upl-stat-card {
    position: relative;
    background: #fff;
    border: 1px solid #E2E8F0;
    border-top: 3px solid #0B5394;
    border-radius: 10px;
    padding: 14px 10px;
    text-align: center;
    box-shadow: 0 2px 6px rgba(15,23,42,0.05);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
    overflow: hidden;
}
.upl-stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(15,23,42,0.10);
}
.upl-stat-num {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 28px;
    font-weight: 900;
    color: #0F172A;
    line-height: 1.1;
    margin-bottom: 4px;
}
.upl-stat-label {
    display: block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    color: #64748B;
}
/* Color-code by position - matches/wins/HS/RB/runs/status */
.upl-stats-grid .upl-stat-card:nth-child(1) { border-top-color: #0B5394; }
.upl-stats-grid .upl-stat-card:nth-child(1) .upl-stat-num { color: #0B5394; }
.upl-stats-grid .upl-stat-card:nth-child(2) { border-top-color: #16A34A; }
.upl-stats-grid .upl-stat-card:nth-child(2) .upl-stat-num { color: #16A34A; }
.upl-stats-grid .upl-stat-card:nth-child(3) { border-top-color: #DC2626; }
.upl-stats-grid .upl-stat-card:nth-child(3) .upl-stat-num { color: #DC2626; }
.upl-stats-grid .upl-stat-card:nth-child(4) { border-top-color: #7C3AED; }
.upl-stats-grid .upl-stat-card:nth-child(4) .upl-stat-num { color: #7C3AED; }
.upl-stats-grid .upl-stat-card:nth-child(5) { border-top-color: #0E7490; }
.upl-stats-grid .upl-stat-card:nth-child(5) .upl-stat-num { color: #0E7490; }
.upl-stats-grid .upl-stat-card:nth-child(6) { border-top-color: #B45309; }
.upl-stats-grid .upl-stat-card:nth-child(6) .upl-stat-num { color: #B45309; font-size: 14px; padding-top: 8px; }

/* Approve panel — modify form + submitter info */
.upl-approval-card {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-left: 4px solid #F59E0B;
    border-radius: 10px;
    padding: 14px;
    margin-bottom: 12px;
    box-shadow: 0 1px 3px rgba(15,23,42,0.05);
}
.upl-approval-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}
.upl-sub-id {
    font-family: var(--upl-font-mono);
    font-weight: 800;
    font-size: 12px;
    color: #475569;
    background: #F1F5F9;
    padding: 3px 8px;
    border-radius: 4px;
}
.upl-approval-submitter {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: linear-gradient(90deg, #FEF3C7 0%, #FFFBEB 100%);
    border-radius: 8px;
    margin-bottom: 12px;
    font-size: 12px;
    flex-wrap: wrap;
}
.upl-sub-label {
    font-size: 10px;
    font-weight: 700;
    color: #92400E;
    letter-spacing: 0.5px;
    text-transform: uppercase;
}
.upl-sub-name {
    font-weight: 700;
    color: #1F2937;
}

.upl-approval-scores {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 8px;
    padding: 10px;
    background: #F8FAFC;
    border-radius: 8px;
    margin-bottom: 10px;
}
.upl-appr-side {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    text-align: center;
}
.upl-appr-team-pill {
    font-family: var(--upl-font-mono);
    font-size: 10px;
    font-weight: 800;
    padding: 2px 7px;
    background: #1E40AF;
    color: #fff;
    border-radius: 4px;
    letter-spacing: 0.5px;
}
.upl-appr-side strong {
    font-size: 12px;
    color: #1F2937;
}
.upl-score-big {
    font-family: var(--upl-font-mono);
    font-size: 20px;
    font-weight: 900;
    color: #0F172A;
    line-height: 1;
}
.upl-score-balls {
    font-size: 10px;
    color: #64748B;
    font-weight: 600;
}
.upl-vs-divider {
    font-family: var(--upl-font-display);
    font-weight: 900;
    color: #94A3B8;
    font-size: 11px;
    letter-spacing: 0.5px;
}
.upl-approval-result {
    text-align: center;
    font-size: 12px;
    padding: 6px 10px;
    background: #ECFDF5;
    border-radius: 6px;
    margin-bottom: 12px;
    color: #166534;
}
.upl-result-label { color: #475569; margin-right: 6px; font-weight: 600; }

/* Approve / Modify / Reject buttons */
.upl-approval-actions {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 6px;
}
.upl-act-btn {
    padding: 9px 8px;
    border: 0;
    border-radius: 7px;
    font-weight: 800;
    font-size: 12px;
    letter-spacing: 0.3px;
    cursor: pointer;
    transition: filter 0.15s ease, transform 0.1s ease;
    color: #fff;
    text-align: center;
    line-height: 1.2;
}
.upl-act-btn:hover { filter: brightness(1.10); }
.upl-act-btn:active { transform: scale(0.97); }
.upl-act-approve { background: linear-gradient(135deg, #16A34A 0%, #15803D 100%); }
.upl-act-modify { background: linear-gradient(135deg, #0E7490 0%, #0369A1 100%); }
.upl-act-reject { background: linear-gradient(135deg, #DC2626 0%, #991B1B 100%); }

/* Inline modify form */
.upl-modify-form {
    margin-top: 12px;
    padding: 14px;
    background: linear-gradient(180deg, #F0F9FF 0%, #FEFCE8 100%);
    border: 1px solid #BAE6FD;
    border-radius: 10px;
}
.upl-modify-form-title {
    font-family: var(--upl-font-display);
    font-size: 12px;
    font-weight: 800;
    color: #075985;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    margin-bottom: 10px;
}
.upl-modify-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 10px;
}
@media (max-width: 480px) {
    .upl-modify-grid { grid-template-columns: 1fr; }
}
.upl-modify-col {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 8px;
    padding: 10px;
}
.upl-modify-side-label {
    font-size: 11px;
    font-weight: 800;
    color: #075985;
    margin-bottom: 8px;
    padding-bottom: 6px;
    border-bottom: 1px solid #E0F2FE;
}
.upl-modify-col label,
.upl-modify-result label,
.upl-modify-notes label {
    display: block;
    font-size: 10px;
    font-weight: 700;
    color: #64748B;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin: 8px 0 4px;
}
.upl-modify-col input,
.upl-modify-result select,
.upl-modify-notes textarea {
    width: 100%;
    padding: 7px 9px;
    border: 1px solid #CBD5E1;
    border-radius: 6px;
    font-size: 13px;
    font-family: var(--upl-font-mono);
    background: #fff;
    box-sizing: border-box;
}
.upl-modify-notes textarea {
    font-family: var(--upl-font-body);
    resize: vertical;
}
.upl-modify-actions {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 8px;
    margin-top: 12px;
}
.upl-act-cancel {
    background: #E2E8F0;
    color: #475569;
}
.upl-act-cancel:hover { background: #CBD5E1; }
.upl-act-save {
    background: linear-gradient(135deg, #0EA5E9 0%, #0369A1 100%);
}

/* Pending banner */
.upl-pending-banner {
    display: flex;
    align-items: center;
    gap: 12px;
    background: linear-gradient(135deg, #FEF3C7 0%, #FED7AA 100%);
    border: 1px solid #F59E0B;
    border-left: 5px solid #D97706;
    padding: 12px 14px;
    border-radius: 10px;
    margin: 12px 0;
    cursor: pointer;
    transition: transform 0.15s ease;
}
.upl-pending-banner:hover { transform: translateX(2px); }
.upl-pending-banner-num {
    font-family: var(--upl-font-display);
    font-size: 28px;
    font-weight: 900;
    color: #7C2D12;
    line-height: 1;
    min-width: 36px;
    text-align: center;
}
.upl-pending-banner-text strong {
    display: block;
    color: #7C2D12;
    font-size: 13px;
    font-weight: 800;
}
.upl-pending-banner-text span {
    display: block;
    color: #92400E;
    font-size: 11px;
    margin-top: 2px;
    line-height: 1.4;
}

/* v2.7.20 — Reject button "armed" state when waiting for second tap.
   Replaces the prompt() flow which was unreliable on mobile. */
.upl-act-reject.upl-confirm-armed {
    background: linear-gradient(135deg, #991B1B 0%, #7F1D1D 100%);
    animation: upl-armed-pulse 0.6s ease-in-out infinite alternate;
    font-size: 11px;
    letter-spacing: 0.3px;
}
@keyframes upl-armed-pulse {
    from { box-shadow: 0 0 0 0 rgba(220,38,38,0.50); }
    to   { box-shadow: 0 0 0 6px rgba(220,38,38,0.00); }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.21 — Mobile fixes: standings table overflow + general layout
   ════════════════════════════════════════════════════════════════ */

/* Standings table — FIT-TO-SCREEN on mobile (no horizontal scroll).
   We hide the +FP and -PEN columns and compress visible columns instead.
   The full breakdown stays visible on tablet/desktop where there's room. */
@media (max-width: 640px) {
    .upl-wrap > table.upl-table,
    .upl-wrap > .upl-formula-bar + table.upl-table {
        display: table;
        width: 100%;
        max-width: 100%;
        font-size: 11px;
        table-layout: fixed;
    }
    .upl-table th, .upl-table td {
        padding: 9px 4px;
        white-space: normal;
    }
    .upl-table th { font-size: 9px; letter-spacing: 0.4px; }

    /* Column sizing */
    .upl-table .upl-col-num   { width: 26px; text-align: center; }
    .upl-table .upl-col-team  { font-size: 11.5px; padding-left: 4px; }
    .upl-table .upl-col-stat  { width: 30px; text-align: center; font-size: 12px; }
    .upl-table .upl-col-final { width: 46px; font-size: 14px; padding-right: 8px; text-align: right; }

    /* Hide noise columns on small screens — they're still in DOM, just visually folded */
    .upl-table th.upl-col-fp,  .upl-table td.upl-col-fp,
    .upl-table th.upl-col-pen, .upl-table td.upl-col-pen { display: none; }

    /* Crown on rank-1 — small inline, no overlap */
    .upl-table tbody tr:first-child .upl-col-num::before {
        left: 2px; top: -6px; font-size: 10px;
    }

    /* Truncate long team names elegantly */
    .upl-table td:nth-child(2) a {
        max-width: 100%;
        overflow: hidden;
    }
    .upl-table td:nth-child(2) span.upl-col-team {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        display: inline-block;
        max-width: calc(100vw - 200px);
        vertical-align: middle;
    }
}

/* Tablet+ — show all columns naturally */
@media (min-width: 641px) {
    .upl-table th.upl-col-fp,  .upl-table td.upl-col-fp,
    .upl-table th.upl-col-pen, .upl-table td.upl-col-pen { display: table-cell; }
}

.upl-wrap { overflow-x: hidden; }

/* MOBILE BREATHING ROOM — loosen cramped padding everywhere */
@media (max-width: 640px) {
    .upl-wrap { padding: 0 12px; }
    .upl-card { padding: 16px 14px; margin-bottom: 12px; border-radius: 12px; }
    .upl-card-head h3 { font-size: 14px; }
    .upl-match-card { padding: 14px 14px; margin-bottom: 10px; border-radius: 11px; }
    .upl-match-head { font-size: 11px; padding-bottom: 8px; }
    .upl-match-row { padding: 7px 0; gap: 10px; }
    .upl-match-foot { padding-top: 8px; font-size: 11px; }
    .upl-prof-header { padding: 16px 14px 14px; border-radius: 14px; }
    .upl-formula-bar {
        padding: 10px 14px;
        font-size: 10.5px;
        line-height: 1.55;
        white-space: normal;
        letter-spacing: 0.3px;
    }
}
@media (max-width: 380px) {
    .upl-wrap { padding: 0 10px; }
}

/* v2.7.21 — registration extras (Add More photos) */
.upl-extras-wrap {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px dashed #CBD5E1;
}
.upl-extras-title {
    font-size: 12px;
    font-weight: 700;
    color: #475569;
    margin-bottom: 4px;
}
.upl-extras-hint {
    font-size: 11px;
    color: #94A3B8;
    margin-bottom: 10px;
}
.upl-extras-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.upl-extra-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 10px;
    background: #F8FAFC;
    border: 1px solid #E2E8F0;
    border-radius: 7px;
}
.upl-extra-row input[type="file"] {
    flex: 1;
    font-size: 11px;
    background: transparent;
    padding: 0;
    border: 0;
    color: #475569;
}
.upl-extra-remove {
    flex-shrink: 0;
    background: #FEE2E2;
    color: #991B1B;
    border: 1px solid #FCA5A5;
    border-radius: 5px;
    padding: 5px 9px;
    font-size: 10px;
    font-weight: 800;
    cursor: pointer;
    letter-spacing: 0.4px;
}
.upl-extra-remove:hover { background: #FECACA; }
.upl-extras-add {
    width: 100%;
    margin-top: 10px;
    padding: 10px 12px;
    background: linear-gradient(135deg, #DBEAFE 0%, #BFDBFE 100%);
    color: #1E40AF;
    border: 1.5px dashed #60A5FA;
    border-radius: 8px;
    font-weight: 700;
    font-size: 12px;
    cursor: pointer;
    letter-spacing: 0.3px;
    transition: background 0.15s;
}
.upl-extras-add:hover { background: linear-gradient(135deg, #BFDBFE 0%, #93C5FD 100%); }

/* ════════════════════════════════════════════════════════════════
   v2.7.23 — Schedule Tracker (comprehensive season tracker page)
   - Hero stats strip with overall progress bar
   - Date-grouped fixture cards
   - Per-fixture progress bar + expandable match list
   - Award page enhancements (prize + description)
   ════════════════════════════════════════════════════════════════ */

/* === HERO STRIP === */
.upl-sched-hero {
    background: linear-gradient(135deg, #0A1929 0%, #102341 60%, #1E3A8A 100%);
    color: #fff;
    border-radius: 14px;
    padding: 16px 18px;
    margin: 12px 0 16px;
    box-shadow: 0 6px 18px rgba(10,25,41,0.20);
}
.upl-sched-hero-title {
    font-family: var(--upl-font-display);
    font-size: 16px;
    font-weight: 800;
    letter-spacing: 0.4px;
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}
.upl-sched-hero-icon { font-size: 20px; }

.upl-sched-hero-stats {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 8px;
    margin-bottom: 14px;
}
@media (max-width: 560px) {
    .upl-sched-hero-stats { grid-template-columns: repeat(3, 1fr); }
}
.upl-sched-stat {
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 8px;
    padding: 10px 8px;
    text-align: center;
}
.upl-sched-stat-num {
    font-family: var(--upl-font-display);
    font-size: 22px;
    font-weight: 900;
    line-height: 1;
    color: #fff;
}
.upl-sched-stat-lbl {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: rgba(255,255,255,0.92);
    margin-top: 3px;
    font-weight: 700;
}
.upl-sched-stat-done   { background: rgba(34,197,94,0.18);  border-color: rgba(34,197,94,0.40); }
.upl-sched-stat-done   .upl-sched-stat-num { color: #BBF7D0; }
.upl-sched-stat-prog   { background: rgba(251,191,36,0.18); border-color: rgba(251,191,36,0.40); }
.upl-sched-stat-prog   .upl-sched-stat-num { color: #FEF3C7; }
.upl-sched-stat-up     { background: rgba(148,163,184,0.18); border-color: rgba(148,163,184,0.35); }
.upl-sched-stat-up     .upl-sched-stat-num { color: #E2E8F0; }
.upl-sched-stat-today  { background: linear-gradient(135deg, rgba(220,38,38,0.30), rgba(245,158,11,0.30)); border-color: rgba(245,158,11,0.55); }
.upl-sched-stat-today  .upl-sched-stat-num { color: #FED7AA; }

.upl-sched-hero-progress {
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 8px;
    padding: 10px 12px;
}
.upl-sched-hero-progress-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    margin-bottom: 6px;
    color: rgba(255,255,255,0.85);
}
.upl-sched-hero-progress-pct {
    font-family: var(--upl-font-display);
    font-size: 16px;
    font-weight: 900;
    color: #FBBF24;
}
.upl-sched-hero-progress-bar {
    background: rgba(0,0,0,0.30);
    height: 8px;
    border-radius: 4px;
    overflow: hidden;
}
.upl-sched-hero-progress-bar > span {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, #16A34A 0%, #FBBF24 70%, #DC2626 100%);
    transition: width 0.4s ease;
}

/* === DAY SECTION === */
.upl-sched-day {
    margin-bottom: 16px;
    background: #fff;
    border-radius: 12px;
    border: 1px solid #E2E8F0;
    overflow: hidden;
    box-shadow: 0 2px 6px rgba(15,23,42,0.05);
}
.upl-sched-day-today {
    border-color: #F59E0B;
    box-shadow: 0 4px 14px rgba(245,158,11,0.18);
}
.upl-sched-day-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 11px 14px;
    background: linear-gradient(90deg, #F1F5F9 0%, #F8FAFC 100%);
    border-bottom: 1px solid #E2E8F0;
}
.upl-sched-day-today .upl-sched-day-head {
    background: linear-gradient(90deg, #FEF3C7 0%, #FFFBEB 100%);
}
.upl-sched-day-date {
    font-family: var(--upl-font-display);
    font-size: 13px;
    font-weight: 800;
    color: #0F172A;
    display: flex;
    align-items: center;
    gap: 8px;
    letter-spacing: 0.3px;
}
.upl-sched-today-pill {
    background: #DC2626;
    color: #fff;
    font-size: 10px;
    font-weight: 900;
    padding: 2px 8px;
    border-radius: 4px;
    letter-spacing: 0.6px;
    animation: upl-today-pulse 1.8s ease-in-out infinite;
}
@keyframes upl-today-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(220,38,38,0); }
    50%      { box-shadow: 0 0 0 6px rgba(220,38,38,0); background:#B91C1C; }
}
.upl-sched-day-count {
    font-size: 11px;
    color: #64748B;
    font-weight: 600;
}

/* === FIXTURE CARD === */
.upl-sched-fx {
    border-bottom: 1px solid #F1F5F9;
}
.upl-sched-fx:last-child { border-bottom: 0; }
.upl-sched-fx-head {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 14px;
    background: transparent;
    border: 0;
    cursor: pointer;
    text-align: left;
}
.upl-sched-fx-head:hover { background: #FAFBFC; }
.upl-sched-fx-teams {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
.upl-sched-fx-team {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}
.upl-sched-fx-team-name {
    font-weight: 700;
    font-size: 12px;
    color: #0F172A;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 90px;
}
@media (max-width: 480px) {
    .upl-sched-fx-team-name { max-width: 60px; font-size: 11px; }
}
.upl-sched-fx-vs {
    font-family: var(--upl-font-display);
    font-weight: 900;
    color: #94A3B8;
    font-size: 10px;
    letter-spacing: 0.5px;
    margin: 0 4px;
}
.upl-sched-fx-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.upl-sched-fx-status {
    font-size: 9px;
    font-weight: 800;
    padding: 3px 7px;
    border-radius: 4px;
    letter-spacing: 0.4px;
    text-transform: uppercase;
}
.upl-sched-fx-status-done { background: #DCFCE7; color: #166534; }
.upl-sched-fx-status-prog { background: #FEF3C7; color: #92400E; }
.upl-sched-fx-status-up   { background: #F1F5F9; color: #64748B; }
.upl-sched-fx-count {
    font-family: var(--upl-font-mono);
    font-size: 12px;
    font-weight: 800;
    color: #0F172A;
    min-width: 38px;
    text-align: right;
}
.upl-sched-fx-chev {
    font-size: 12px;
    color: #94A3B8;
    transition: transform 0.2s ease;
}

.upl-sched-fx-bar {
    height: 4px;
    background: #F1F5F9;
    margin: 0 14px;
    border-radius: 2px;
    overflow: hidden;
}
.upl-sched-fx-bar > span {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, #16A34A 0%, #22C55E 100%);
    transition: width 0.4s ease;
}
.upl-sched-fx-prog .upl-sched-fx-bar > span { background: linear-gradient(90deg, #F59E0B 0%, #FBBF24 100%); }
.upl-sched-fx-up .upl-sched-fx-bar > span { background: #CBD5E1; }

.upl-sched-fx-body {
    padding: 8px 14px 14px;
    background: #F8FAFC;
    border-top: 1px solid #E2E8F0;
    margin-top: 8px;
}
.upl-sched-fx-empty {
    padding: 14px 0;
    text-align: center;
    color: #94A3B8;
    font-size: 12px;
    font-style: italic;
}
.upl-sched-fx-match {
    display: grid;
    grid-template-columns: 1fr auto 1fr auto;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    margin-bottom: 6px;
    background: #fff;
    border-radius: 7px;
    border: 1px solid #E2E8F0;
    text-decoration: none;
    color: inherit;
    transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.upl-sched-fx-match:hover { transform: translateX(2px); box-shadow: 0 2px 6px rgba(15,23,42,0.08); }
.upl-sched-fx-match-side {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    min-width: 0;
}
.upl-sched-fx-match-win .upl-sched-fx-match-player { font-weight: 800; color: #166534; }
.upl-sched-fx-match-player {
    flex: 1;
    color: #334155;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.upl-sched-fx-match-score {
    font-family: var(--upl-font-mono);
    font-weight: 800;
    color: #0F172A;
    font-size: 12px;
}
.upl-sched-fx-match-vs {
    font-family: var(--upl-font-display);
    color: #94A3B8;
    font-size: 10px;
    font-weight: 700;
}
.upl-sched-fx-match-tier {
    font-size: 9px;
    font-weight: 800;
    padding: 2px 6px;
    background: #E0F2FE;
    color: #075985;
    border-radius: 3px;
    letter-spacing: 0.3px;
}

/* === AWARDS — show all fields === */
.upl-awards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
    margin-top: 8px;
}
.upl-award-card {
    background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 50%, #FDE68A 100%);
    border: 1px solid #F59E0B;
    border-radius: 12px;
    padding: 14px 12px;
    text-align: center;
    box-shadow: 0 3px 10px rgba(245,158,11,0.15);
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.upl-award-card:hover { transform: translateY(-3px); box-shadow: 0 6px 18px rgba(245,158,11,0.25); }
.upl-award-title {
    font-family: var(--upl-font-display);
    font-size: 13px;
    font-weight: 900;
    color: #7C2D12;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
    line-height: 1.25;
}
.upl-award-team { margin: 4px 0; }
.upl-award-name {
    font-weight: 800;
    color: #0F172A;
    font-size: 14px;
    margin: 6px 0 4px;
}
.upl-award-prize {
    background: #fff;
    border: 1px solid #FBBF24;
    color: #92400E;
    font-size: 11px;
    font-weight: 700;
    padding: 4px 8px;
    border-radius: 5px;
    display: inline-block;
    margin: 4px 0;
}
.upl-award-desc {
    font-size: 11px;
    color: #57534E;
    line-height: 1.5;
    margin-top: 6px;
    font-style: italic;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.24 — RICHER MATCH CARDS + MODERN POLISH
   ════════════════════════════════════════════════════════════════ */

/* === MATCH CARDS — richer head, bigger logos, margin pill === */
.upl-match-card {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 13px;
    padding: 14px 16px;
    margin-bottom: 12px;
    box-shadow: 0 1px 3px rgba(15,23,42,0.04);
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
    position: relative;
    overflow: hidden;
}
.upl-match-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, #0B5394 0%, #1A6B3F 50%, #C9A227 100%);
    opacity: 0.7;
}
.upl-match-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(15,23,42,0.10);
    border-color: #CBD5E1;
}

.upl-match-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    padding-bottom: 10px;
    margin-bottom: 4px;
    border-bottom: 1px dashed #E2E8F0;
    flex-wrap: wrap;
}
.upl-match-head-left {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.upl-match-head-right {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 10.5px;
    color: #64748B;
}
.upl-match-md-badge {
    background: #DBEAFE;
    color: #1E40AF;
    font-size: 9px;
    font-weight: 800;
    padding: 2px 7px;
    border-radius: 4px;
    letter-spacing: 0.5px;
}
.upl-match-id-link {
    text-decoration: none;
    color: inherit;
}
.upl-match-id {
    font-family: var(--upl-font-mono);
    font-weight: 700;
    font-size: 11px;
    color: #475569;
}
.upl-match-id-link:hover .upl-match-id { color: #0B5394; }
.upl-match-date {
    font-weight: 700;
    color: #334155;
    font-family: var(--upl-font-display);
    letter-spacing: 0.2px;
}
.upl-match-time {
    color: #94A3B8;
    font-family: var(--upl-font-mono);
}

.upl-match-row {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 12px;
    padding: 9px 0;
    border-radius: 8px;
    margin: 2px 0;
    transition: background 0.15s ease;
}
.upl-match-row:hover { background: rgba(241,245,249,0.5); }
.upl-match-row.upl-winner {
    background: linear-gradient(90deg, rgba(34,197,94,0.10) 0%, rgba(34,197,94,0.02) 100%);
    padding-left: 10px;
    border-left: 3px solid #16A34A;
}
.upl-match-row.upl-winner .upl-player-name {
    color: #14532D;
    font-weight: 800;
}
.upl-match-row.upl-winner .upl-score { color: #14532D; }

.upl-player-name {
    font-weight: 700;
    color: #1F2937;
    font-size: 13.5px;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.upl-mc-player-link:hover { color: #0B5394; }

.upl-score {
    font-family: var(--upl-font-mono);
    font-weight: 800;
    font-size: 16px;
    color: #0F172A;
    text-decoration: none;
    white-space: nowrap;
}
.upl-score small {
    font-size: 11px;
    color: #94A3B8;
    font-weight: 600;
    margin-left: 2px;
}
.upl-mc-score-link:hover { color: #1A6B3F; }

.upl-match-foot {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    padding-top: 10px;
    margin-top: 6px;
    border-top: 1px dashed #E2E8F0;
    flex-wrap: wrap;
}
.upl-result-txt {
    font-family: var(--upl-font-display);
    font-size: 12px;
    font-weight: 800;
    color: #1A6B3F;
    letter-spacing: 0.3px;
}
.upl-result-txt-link { text-decoration: none; }
.upl-result-txt-link:hover .upl-result-txt { text-decoration: underline; text-underline-offset: 3px; }

.upl-match-margin {
    background: linear-gradient(135deg, #0B5394 0%, #1E3A8A 100%);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    padding: 4px 9px;
    border-radius: 5px;
    letter-spacing: 0.4px;
    font-family: var(--upl-font-mono);
    box-shadow: 0 2px 4px rgba(11,83,148,0.20);
}
.upl-match-margin-tie {
    background: linear-gradient(135deg, #B45309 0%, #92400E 100%);
}

.upl-modified-badge {
    background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%);
    color: #fff;
    font-size: 9px;
    font-weight: 800;
    padding: 3px 7px;
    border-radius: 4px;
    letter-spacing: 0.5px;
    margin-left: auto;
}

/* === MODERN POLISH — typography + shadows globally === */
:root {
    --upl-shadow-sm: 0 1px 3px rgba(15,23,42,0.06);
    --upl-shadow-md: 0 4px 12px rgba(15,23,42,0.08);
    --upl-shadow-lg: 0 12px 32px rgba(15,23,42,0.12);
}
.upl-card {
    border-radius: 13px;
    box-shadow: var(--upl-shadow-sm);
    border: 1px solid #E2E8F0;
    transition: box-shadow 0.18s ease;
}
.upl-card:hover { box-shadow: var(--upl-shadow-md); }
.upl-card-head h3 {
    font-family: var(--upl-font-display);
    font-size: 15px;
    font-weight: 800;
    letter-spacing: 0.2px;
    color: #0F172A;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.25 — FIX: mobile content using more width (was too narrow)
   + match head date/time visibility on dark navy bg
   ════════════════════════════════════════════════════════════════ */

/* MOBILE: make cards near-flush to screen edges instead of wasting 24px on padding */
@media (max-width: 640px) {
    .upl-wrap {
        padding: 0 6px 16px !important;
        max-width: 100% !important;
    }
    .uas-main { padding: 0 !important; }
    .uas-wrap { padding: 0 6px !important; }
    .upl-card { margin-left: 0; margin-right: 0; }
}
@media (max-width: 380px) {
    .upl-wrap { padding: 0 4px 14px !important; }
    .uas-wrap { padding: 0 4px !important; }
}

/* Match-head dark-navy bg — make date/time text LIGHT so it's readable.
   Earlier CSS gave .upl-match-head a dark navy gradient with amber text via !important,
   so my new .upl-match-date / .upl-match-time used dark slate colors that were
   invisible against that dark background. Switch them to a warm cream/amber tone. */
.upl-match-head .upl-match-date {
    color: #FEF3C7 !important;
    font-weight: 700;
    letter-spacing: 0.3px;
}
.upl-match-head .upl-match-time {
    color: #FCD34D !important;
    font-family: var(--upl-font-mono);
    font-weight: 600;
}
.upl-match-head-right {
    color: #FEF3C7 !important;
    font-size: 11px;
}
.upl-match-head-left { gap: 8px; }
/* MD badge needs to stay readable on the dark head too */
.upl-match-head .upl-match-md-badge {
    background: rgba(96,165,250,0.20);
    color: #DBEAFE;
    border: 1px solid rgba(147,197,253,0.40);
}
.upl-match-head .upl-match-id {
    color: #FCD34D !important;
    font-weight: 800;
}

/* Result-row hover/winner backgrounds — make sure they still pop on white card body */
.upl-match-row { padding: 10px 6px; }
.upl-match-row.upl-winner {
    background: linear-gradient(90deg, rgba(34,197,94,0.13) 0%, rgba(34,197,94,0.02) 100%);
    padding-left: 12px;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.26 — Standings updates banner, Matches filters + list view
   ════════════════════════════════════════════════════════════════ */

/* === ADMIN UPDATES BANNER (top of standings) === */
.upl-updates-banner {
    background: linear-gradient(135deg, #FEF3C7 0%, #FFFBEB 50%, #FEF9E7 100%);
    border: 1px solid #F59E0B;
    border-radius: 12px;
    padding: 14px 14px 10px;
    margin: 12px 0 14px;
    box-shadow: 0 4px 14px rgba(245,158,11,0.10);
}
.upl-updates-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid rgba(245,158,11,0.30);
}
.upl-updates-icon { font-size: 18px; }
.upl-updates-title {
    font-family: var(--upl-font-display);
    font-weight: 900;
    font-size: 13px;
    color: #92400E;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}
.upl-update-item {
    display: flex;
    gap: 10px;
    padding: 9px 0;
    border-bottom: 1px dashed rgba(245,158,11,0.25);
}
.upl-update-item:last-child { border-bottom: 0; padding-bottom: 4px; }
.upl-update-pinned { background: rgba(245,158,11,0.08); border-radius: 7px; padding: 9px 10px; margin: 4px 0; border-bottom: 0; }
.upl-update-pin { font-size: 14px; flex-shrink: 0; padding-top: 2px; }
.upl-update-body { flex: 1; min-width: 0; }
.upl-update-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.upl-update-t { font-size: 13px; color: #78350F; font-weight: 800; }
.upl-update-date { font-size: 10px; color: #B45309; font-family: var(--upl-font-mono); }
.upl-update-text { font-size: 12px; color: #57534E; line-height: 1.55; margin-top: 3px; }

/* === MATCHES FILTERBAR === */
.upl-matches-filterbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 10px;
    padding: 8px 10px;
    margin-bottom: 8px;
    flex-wrap: wrap;
}
.upl-matches-filterform {
    display: flex;
    gap: 6px;
    flex: 1;
    flex-wrap: wrap;
    align-items: center;
}
.upl-filter-select, .upl-filter-date {
    padding: 6px 10px;
    border: 1px solid #CBD5E1;
    border-radius: 6px;
    background: #F8FAFC;
    font-size: 12px;
    color: #0F172A;
    font-family: inherit;
}
.upl-filter-go {
    background: linear-gradient(135deg, #0B5394 0%, #1E3A8A 100%);
    color: #fff;
    border: 0;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
    letter-spacing: 0.3px;
}
.upl-filter-go:hover { filter: brightness(1.1); }
.upl-filter-clear {
    color: #64748B;
    font-size: 11px;
    text-decoration: none;
    padding: 6px 8px;
}
.upl-filter-clear:hover { color: #DC2626; }
.upl-matches-viewtabs {
    display: flex;
    gap: 4px;
    background: #F1F5F9;
    border-radius: 6px;
    padding: 3px;
}
.upl-vt {
    padding: 5px 12px;
    font-size: 11px;
    font-weight: 700;
    color: #64748B;
    text-decoration: none;
    border-radius: 4px;
    letter-spacing: 0.4px;
}
.upl-vt:hover { color: #0F172A; }
.upl-vt-active {
    background: #fff;
    color: #0B5394;
    box-shadow: 0 1px 3px rgba(15,23,42,0.08);
}
.upl-matches-meta {
    font-size: 10.5px;
    color: #94A3B8;
    padding: 4px 8px 10px;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    font-weight: 600;
}

/* === MATCHES COMPACT LIST VIEW === */
.upl-matches-list {
    background: #fff;
    border: 1px solid #E2E8F0;
    border-radius: 10px;
    overflow: hidden;
    margin-bottom: 14px;
}
.upl-matches-list-head {
    display: grid;
    grid-template-columns: 70px 1fr 130px 110px;
    gap: 8px;
    padding: 8px 12px;
    background: linear-gradient(180deg, #0F172A 0%, #1A2D4E 100%);
    color: #FBBF24;
    font-size: 9.5px;
    font-weight: 800;
    letter-spacing: 0.8px;
    text-transform: uppercase;
}
.upl-mll-row {
    display: grid;
    grid-template-columns: 70px 1fr 130px 110px;
    gap: 8px;
    padding: 9px 12px;
    align-items: center;
    border-bottom: 1px solid #F1F5F9;
    text-decoration: none;
    color: inherit;
    font-size: 12px;
    transition: background 0.12s ease;
}
.upl-mll-row:hover { background: #F8FAFC; }
.upl-mll-row:last-child { border-bottom: 0; }
.upl-mll-date {
    font-family: var(--upl-font-mono);
    font-weight: 700;
    color: #0F172A;
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}
.upl-mll-date small {
    font-size: 9px;
    color: #94A3B8;
    font-weight: 600;
    margin-top: 1px;
}
.upl-mll-teams {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}
.upl-mll-t {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-weight: 700;
    color: #334155;
}
.upl-mll-w { color: #14532D; font-weight: 800; }
.upl-mll-vs { color: #94A3B8; font-size: 10px; font-weight: 700; margin: 0 2px; }
.upl-mll-score {
    font-family: var(--upl-font-mono);
    font-weight: 700;
    color: #0F172A;
    text-align: center;
}
.upl-mll-score small { color: #94A3B8; font-weight: 500; margin: 0 3px; }
.upl-mll-result {
    font-weight: 800;
    font-size: 11px;
    color: #166534;
    text-align: right;
    letter-spacing: 0.4px;
}
.upl-mll-tied { color: #B45309; }

@media (max-width: 640px) {
    /* MOBILE LIST VIEW — fully restructured.
       Old: 4-column grid (date|teams|score|result) was crammed into ~330px
       phone width, causing player names and scores to visually overlap
       (e.g. "Niranj99/0" merging Niranjan + score). New layout: each match
       is 3 stacked rows — header (date+result) then T1+score, then T2+score.
       Implemented entirely via grid-template-areas so HTML stays unchanged. */
    .upl-matches-list-head { display: none !important; }
    .upl-mll-row {
        display: grid !important;
        grid-template-columns: 1fr auto;
        grid-template-areas:
            "date     result"
            "teams    teams"
            "score    score";
        gap: 4px 8px;
        padding: 10px 12px;
        font-size: 12px;
        border-bottom: 4px solid #F1F5F9;
    }
    .upl-mll-date {
        grid-area: date;
        display: flex !important;
        flex-direction: row !important;
        align-items: center;
        gap: 8px;
        font-size: 11px;
        color: #475569;
    }
    .upl-mll-date small { font-size: 10px; color: #94A3B8; }
    .upl-mll-result {
        grid-area: result;
        font-size: 11.5px;
        text-align: right;
        font-weight: 800;
    }
    .upl-mll-teams {
        grid-area: teams;
        display: flex;
        flex-direction: column !important;
        gap: 5px;
        padding: 4px 0;
        border-top: 1px dashed #E2E8F0;
        margin-top: 2px;
    }
    .upl-mll-vs {
        display: none !important;  /* No "v" needed in stacked layout */
    }
    .upl-mll-t {
        display: flex !important;
        align-items: center;
        gap: 8px;
        font-size: 12px;
        width: 100%;
    }
    .upl-mll-pname {
        font-size: 13px !important;
        max-width: none !important;  /* allow full name on mobile */
        flex: 1;
        margin-left: 2px !important;
    }
    .upl-mll-score {
        grid-area: score;
        text-align: center;
        font-size: 11.5px;
        color: #64748B;
        font-family: var(--upl-font-mono);
        padding-top: 4px;
        border-top: 1px dashed #E2E8F0;
        display: none !important;  /* scores shown inline with players instead */
    }
    /* Filterbar tightening (kept from old block) */
    .upl-matches-filterbar { padding: 7px 8px; gap: 6px; }
    .upl-filter-select, .upl-filter-date { font-size: 11px; padding: 5px 7px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.27 — Standings FP/Penalty saver tables: mobile fit
   ════════════════════════════════════════════════════════════════ */

/* Force the FP / Penalty Saver tables to behave on mobile.
   They previously overflowed because of long "→ date-wise" inline link
   plus wide right-aligned point columns. */
@media (max-width: 640px) {
    .upl-card .upl-table {
        table-layout: fixed;
        width: 100%;
        max-width: 100%;
    }
    /* Tighter columns for these mini-tables */
    .upl-card .upl-table th, .upl-card .upl-table td {
        padding: 8px 4px;
        white-space: normal;
        word-break: break-word;
        font-size: 11px;
    }
    /* "→ date-wise" inline hint hides on tiny screens, kept on tablet+ */
    .upl-card .upl-table a span[style*="rarr"],
    .upl-card .upl-table a span[style*="0B5394"] {
        display: none !important;
    }
    /* Right-aligned points column compresses but stays readable */
    .upl-card .upl-table td[style*="text-align:right"] {
        font-size: 13px !important;
        padding-right: 6px !important;
    }
}

/* Heading bars on FP / Penalty Saver cards — wrap properly on tiny screens */
@media (max-width: 480px) {
    .upl-card-head h3 { font-size: 12.5px; line-height: 1.35; }
    .upl-card-head span[style*="font-size:10px"] {
        display: block;
        margin-top: 3px;
        font-size: 9.5px;
    }
    .upl-card-head {
        flex-direction: row;
        align-items: flex-start;
        flex-wrap: wrap;
        padding: 9px 12px;
    }
    /* Info banner inside FP/Pen cards: smaller text + wrap */
    .upl-card > div[style*="background:#E8F5E9"],
    .upl-card > div[style*="background:#FFEBEE"] {
        font-size: 10.5px !important;
        line-height: 1.5 !important;
        padding: 7px 10px !important;
    }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.28 — Match list view player names + Match centre prominence
   ════════════════════════════════════════════════════════════════ */

/* List view: player name styling (replaces duplicated team code) */
.upl-mll-pname {
    font-weight: 700;
    color: #1F2937;
    font-size: 12.5px;
    margin-left: 4px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 110px;
    display: inline-block;
    vertical-align: middle;
}
.upl-mll-w .upl-mll-pname { color: #14532D; font-weight: 800; }
@media (max-width: 640px) {
    .upl-mll-pname { font-size: 11px; max-width: 70px; }
}

/* Match centre — bigger, prominent player names with winner highlight */
.upl-mc-pname {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 18px;
    font-weight: 900;
    color: #FBBF24;
    letter-spacing: 0.4px;
    text-decoration: none;
    margin: 8px 0 2px;
    text-shadow: 0 2px 6px rgba(0,0,0,0.40);
    transition: color 0.15s ease;
}
.upl-mc-pname:hover {
    color: #FEF3C7;
    text-decoration: underline;
    text-underline-offset: 4px;
}
.upl-mc-team-winner .upl-mc-pname {
    color: #BBF7D0;
}
.upl-mc-team-winner .upl-mc-pname:hover {
    color: #DCFCE7;
}
.upl-mc-tname {
    font-weight: 600;
    font-size: 11px;
    margin-top: 2px;
    opacity: 0.75;
    letter-spacing: 0.2px;
}
.upl-mc-team {
    position: relative;
    padding-top: 6px;
    padding-bottom: 12px;
}
.upl-mc-team-winner {
    background: linear-gradient(180deg, rgba(34,197,94,0.10) 0%, rgba(34,197,94,0) 100%);
    border-radius: 10px;
}
.upl-mc-winbadge {
    display: inline-block;
    margin-top: 8px;
    background: linear-gradient(135deg, #16A34A 0%, #15803D 100%);
    color: #fff;
    font-size: 10px;
    font-weight: 900;
    padding: 4px 10px;
    border-radius: 5px;
    letter-spacing: 0.7px;
    box-shadow: 0 3px 8px rgba(22,163,74,0.30);
}

@media (max-width: 480px) {
    .upl-mc-pname { font-size: 16px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.33 — Upload reliability + Mobile list view restructure
   ════════════════════════════════════════════════════════════════ */

/* Force [hidden] to actually hide — some legacy mobile browsers ignore the
   attribute when something else has set 'display' inline. Fixes the bug
   where Bowlers/Payment screenshots showed BOTH preview AND "Processing..."
   simultaneously on certain Android Chrome / WebView builds. */
.upl-upload-box [hidden] { display: none !important; }
.upl-upload-box .upl-upload-progress[hidden],
.upl-upload-box .upl-upload-preview[hidden],
.upl-upload-box .upl-upload-label[hidden] { display: none !important; }

/* v2.7.33: inline per-team score in list view rows.
   Desktop: hidden because score column shows them separately.
   Mobile: visible inline, pulled right within the team's row. */
.upl-mll-t-score {
    display: none;
}
@media (max-width: 640px) {
    .upl-mll-t-score {
        display: inline-block !important;
        margin-left: auto;
        padding-left: 8px;
        font-family: var(--upl-font-mono);
        font-weight: 700;
        font-size: 12.5px;
        color: #0F172A;
    }
    .upl-mll-w .upl-mll-t-score { color: #14532D; }
}

/* v2.7.34 — personal name + alliance display on player profile (v2.7.47: inherit color from parent header) */
.upl-pp-personal-row {
    font-size: 14px;
    font-weight: 500;
    color: currentColor;
    opacity: 0.92;
    margin: -2px 0 6px;
    letter-spacing: 0.2px;
    line-height: 1.3;
}
.upl-pp-alliance {
    display: inline-block;
    margin-left: 8px;
    padding: 1px 7px 2px;
    background: rgba(0,0,0,0.18);
    color: currentColor;
    border-radius: 4px;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.3px;
}

/* ════════════════════════════════════════════════════════════════
   v2.7.36 — POT table mobile-fit + leaderboard M/W/L/T column
   ════════════════════════════════════════════════════════════════ */

/* v2.7.37: POT layout switched from <table> to <div> cards — see new
   .upl-pot-list / .upl-pot-r styles further down. Old table CSS removed. */

/* === Leaderboard M·W·L·T pill cell === */
.upl-stats-row .upl-stats-mwlt {
    font-size: 10.5px;
    font-family: var(--upl-font-mono);
    color: #475569;
    padding: 0 6px;
    text-align: center;
    min-width: 70px;
    white-space: nowrap;
    letter-spacing: 0.3px;
}
.upl-stats-head .upl-stats-mwlt { color: #475569; }
@media (max-width: 480px) {
    .upl-stats-row .upl-stats-mwlt { min-width: 56px; font-size: 10px; padding: 0 3px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.37 — POT redesign (grid cards, ALL data shown on mobile)
   + global mobile wrap tightening (kill blank side-space)
   ════════════════════════════════════════════════════════════════ */

/* === Kill all wasted mobile horizontal padding === */
@media (max-width: 640px) {
    .upl-wrap { padding: 0 6px 14px !important; max-width: 100% !important; }
    .uas-main, .uas-wrap { padding-left: 0 !important; padding-right: 0 !important; }
    .upl-card { margin-left: 0; margin-right: 0; border-radius: 10px; }
    .upl-card-head { padding: 10px 12px; }
}
@media (max-width: 380px) {
    .upl-wrap { padding: 0 4px 12px !important; }
}

/* === POT card list (replaces old <table>) === */
.upl-pot-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 6px;
}

/* Each row = anchor link in a grid */
.upl-pot-r {
    display: grid;
    grid-template-columns: 36px minmax(140px, 1.4fr) minmax(0, 3fr) 70px;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    background: var(--upl-card, #fff);
    border: 1px solid var(--upl-border-soft, #E2E8F0);
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    transition: transform 0.12s ease, box-shadow 0.12s ease, border-color 0.12s ease;
}
.upl-pot-r:hover {
    transform: translateY(-1px);
    border-color: #FBBF24;
    box-shadow: 0 4px 14px rgba(15,23,42,0.08);
}

/* Top-3 visual rank highlighting */
.upl-pot-r-first  { background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%); border-color: #F59E0B; }
.upl-pot-r-second { background: linear-gradient(135deg, #F8FAFC 0%, #E2E8F0 100%); border-color: #94A3B8; }
.upl-pot-r-third  { background: linear-gradient(135deg, #FEF6F0 0%, #FED7AA 100%); border-color: #FB923C; }

.upl-pot-r-rank {
    text-align: center;
    font-weight: 900;
    font-size: 16px;
    color: #475569;
    font-family: var(--upl-font-display, inherit);
}
.upl-pot-r-first .upl-pot-r-rank,
.upl-pot-r-second .upl-pot-r-rank,
.upl-pot-r-third .upl-pot-r-rank { font-size: 20px; }

/* Identity zone — player name + tier + team */
.upl-pot-r-id { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.upl-pot-r-line1 { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.upl-pot-r-pname {
    font-size: 14px;
    font-weight: 800;
    color: #0F172A;
    letter-spacing: 0.1px;
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}
.upl-pot-r-tier {
    font-size: 9px;
    font-weight: 800;
    padding: 1px 5px 2px;
    border-radius: 3px;
    letter-spacing: 0.5px;
    line-height: 1;
}
.upl-pot-r-tier-plat { background: #E0E7FF; color: #3730A3; }
.upl-pot-r-tier-gold { background: #FEF3C7; color: #92400E; }
.upl-pot-r-tier-silv { background: #F1F5F9; color: #475569; }
.upl-pot-r-tier-brnz { background: #FFEDD5; color: #9A3412; }
.upl-pot-r-line2 { display: flex; align-items: center; gap: 5px; }
.upl-pot-r-tcode {
    font-size: 10px;
    font-weight: 700;
    color: #64748B;
    letter-spacing: 0.4px;
}

/* Stats zone — desktop: horizontal flex; mobile: 3-col grid */
.upl-pot-r-stats {
    display: grid;
    grid-template-columns: repeat(9, 1fr);
    gap: 4px;
    min-width: 0;
}
.upl-pot-s {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-size: 12.5px;
    font-weight: 700;
    color: #0F172A;
    font-family: var(--upl-font-mono);
    padding: 4px 2px;
    border-radius: 5px;
    background: rgba(15,23,42,0.04);
    line-height: 1.1;
    min-width: 0;
}
.upl-pot-s::before {
    content: attr(data-l);
    font-size: 9px;
    font-weight: 600;
    color: #94A3B8;
    letter-spacing: 0.3px;
    margin-bottom: 2px;
    font-family: inherit;
}
.upl-pot-s-w { color: #15803D; background: rgba(34,197,94,0.10); }
.upl-pot-s-l { color: #B91C1C; background: rgba(239,68,68,0.08); }
.upl-pot-s-rpb {
    color: #0B5394;
    background: rgba(11,83,148,0.10);
    font-weight: 800;
}

/* Score zone (right) */
.upl-pot-r-score {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 4px 6px;
    border-radius: 8px;
    background: linear-gradient(135deg, #0B5394 0%, #1E3A8A 100%);
    color: #fff;
}
.upl-pot-r-score strong {
    font-size: 16px;
    font-family: var(--upl-font-mono);
    font-weight: 800;
    line-height: 1;
}
.upl-pot-r-score small {
    font-size: 8px;
    opacity: 0.85;
    letter-spacing: 0.6px;
    margin-top: 2px;
    font-weight: 600;
}
.upl-pot-r-first .upl-pot-r-score { background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%); }

.upl-pot-empty {
    padding: 32px 16px;
    text-align: center;
    color: #6B6457;
    font-size: 13px;
    background: #fff;
    border-radius: 10px;
    border: 1px dashed #CBD5E1;
}

/* === MOBILE: stack identity over stats over score, but show ALL 9 stats === */
@media (max-width: 640px) {
    .upl-pot-r {
        grid-template-columns: 32px 1fr auto;
        grid-template-areas:
            "rank id    score"
            "rank stats stats"
            "rank stats stats";
        gap: 6px 8px;
        padding: 10px 10px 8px;
    }
    .upl-pot-r-rank  { grid-area: rank; font-size: 14px; }
    .upl-pot-r-id    { grid-area: id; gap: 2px; }
    .upl-pot-r-score { grid-area: score; padding: 4px 8px; min-width: 56px; }
    .upl-pot-r-stats {
        grid-area: stats;
        grid-template-columns: repeat(5, 1fr);
        gap: 3px;
        margin-top: 4px;
        padding-top: 6px;
        border-top: 1px dashed #E2E8F0;
    }
    /* On 5-col mobile grid, 9 stats = 2 rows: 5 + 4 (5th cell of row 2 is empty).
       We push BD to fill out row 2 nicely. */
    .upl-pot-s { font-size: 11.5px; padding: 3px 1px; }
    .upl-pot-s::before { font-size: 8px; margin-bottom: 1px; }
    .upl-pot-r-pname { font-size: 13px; }
    .upl-pot-r-score strong { font-size: 14px; }
    .upl-pot-r-score small  { font-size: 7px; }
    .upl-pot-r-first .upl-pot-r-rank,
    .upl-pot-r-second .upl-pot-r-rank,
    .upl-pot-r-third .upl-pot-r-rank { font-size: 18px; }
}

/* === Tighten match cards on mobile (kill side blank space) === */
@media (max-width: 640px) {
    .upl-match-card { margin-bottom: 8px; border-radius: 9px; }
    .upl-match-head { padding: 7px 10px; }
    .upl-match-row { padding: 9px 10px; gap: 8px; }
    .upl-match-foot { padding: 7px 10px; }
}

/* === Tighten match-list (compact) cards on mobile === */
@media (max-width: 640px) {
    .upl-matches-list { border-radius: 9px; }
    .upl-mll-row { padding: 9px 10px !important; }
}

/* === Tighten leaderboard rows + remove side overhang === */
@media (max-width: 640px) {
    .upl-stats-row { padding: 8px 10px !important; gap: 6px !important; }
    .upl-stats-row .upl-rank { width: 18px !important; font-size: 11px !important; }
    .upl-stats-row .upl-name { font-size: 12.5px !important; }
}

/* === Standings table edge-to-edge === */
@media (max-width: 640px) {
    .upl-table { font-size: 11.5px !important; }
    .upl-table th, .upl-table td { padding: 8px 4px !important; }
    .upl-table th:first-child, .upl-table td:first-child { padding-left: 8px !important; }
    .upl-table th:last-child,  .upl-table td:last-child  { padding-right: 8px !important; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.38 — HALL OF FAME
   ════════════════════════════════════════════════════════════════ */

/* Header */
.upl-hof-header {
    text-align: center;
    padding: 32px 20px 24px;
    background: linear-gradient(180deg, #0F172A 0%, #1E293B 60%, #2C4670 100%);
    border-radius: 16px;
    margin-bottom: 20px;
    color: #fff;
    position: relative;
    overflow: hidden;
}
.upl-hof-header::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 20% 30%, rgba(251,191,36,0.18), transparent 50%),
        radial-gradient(circle at 80% 70%, rgba(251,191,36,0.10), transparent 55%);
    pointer-events: none;
}
.upl-hof-crown {
    font-size: 56px;
    line-height: 1;
    filter: drop-shadow(0 4px 14px rgba(251,191,36,0.6));
    margin-bottom: 8px;
}
.upl-hof-title {
    font-family: var(--upl-font-display);
    font-size: 38px;
    font-weight: 900;
    margin: 0 0 6px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    background: linear-gradient(135deg, #FCD34D 0%, #FBBF24 50%, #F59E0B 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: 0 2px 12px rgba(251,191,36,0.18);
}
.upl-hof-sub {
    font-size: 14px !important;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    margin: 0 !important;
    font-weight: 600 !important;
    letter-spacing: 0.4px;
    text-shadow: 0 2px 8px rgba(0,0,0,0.65), 0 0 16px rgba(0,0,0,0.4);
    opacity: 1 !important;
}

/* Tabs */
.upl-hof-tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 18px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding: 2px;
}
.upl-hof-tab {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 16px;
    background: #fff;
    border: 1.5px solid #E2E8F0;
    border-radius: 999px;
    text-decoration: none;
    color: #475569;
    font-weight: 700;
    font-size: 12.5px;
    letter-spacing: 0.4px;
    transition: all 0.15s ease;
}
.upl-hof-tab:hover { border-color: #FBBF24; color: #0F172A; }
.upl-hof-tab-active {
    background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 100%);
    border-color: #F59E0B;
    color: #1F2937;
    box-shadow: 0 4px 12px rgba(245,158,11,0.30);
}
.upl-hof-tab-season { font-weight: 800; }
.upl-hof-tab-count {
    background: #0F172A;
    color: #FBBF24;
    padding: 2px 8px 3px;
    border-radius: 999px;
    font-size: 10.5px;
    font-weight: 800;
    min-width: 18px;
    text-align: center;
}
.upl-hof-tab-active .upl-hof-tab-count {
    background: #0F172A;
    color: #FCD34D;
}

/* Grid */
.upl-hof-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
    padding-bottom: 20px;
}

/* Card */
.upl-hof-card {
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(15,23,42,0.06);
    border: 1px solid #E2E8F0;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
    position: relative;
}
.upl-hof-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: var(--hof-team-color, #0B5394);
    z-index: 1;
}
.upl-hof-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(15,23,42,0.12);
}
.upl-hof-card-photo-wrap {
    position: relative;
    background: linear-gradient(180deg, var(--hof-team-color, #0B5394) 0%, #0F172A 100%);
    aspect-ratio: 4/3;
    overflow: hidden;
}
.upl-hof-card-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.upl-hof-card-photo-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--upl-font-display);
    font-size: 80px;
    font-weight: 900;
    color: rgba(255,255,255,0.85);
    text-shadow: 0 4px 18px rgba(0,0,0,0.45);
}
.upl-hof-achievement-pill {
    position: absolute;
    top: 10px;
    left: 10px;
    background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 100%);
    color: #1F2937;
    padding: 5px 11px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.3px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.30);
}
.upl-hof-card-body { padding: 14px 16px 18px; }
.upl-hof-card-name {
    font-family: var(--upl-font-display);
    font-size: 22px;
    font-weight: 900;
    margin: 0 0 2px;
    color: #0F172A;
    letter-spacing: 0.3px;
}
.upl-hof-card-realname {
    font-size: 12px;
    color: #64748B;
    font-style: italic;
    margin-bottom: 8px;
}
.upl-hof-card-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 10px;
}
.upl-hof-card-team {
    font-size: 11px;
    font-weight: 600;
    color: #475569;
    letter-spacing: 0.2px;
}
.upl-hof-card-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--hof-team-color, #0B5394);
    margin-bottom: 8px;
    padding-bottom: 8px;
    border-bottom: 1px dashed #E2E8F0;
    line-height: 1.4;
}
.upl-hof-card-bio {
    font-size: 12.5px;
    color: #475569;
    line-height: 1.6;
    margin: 0;
    letter-spacing: 0.1px;
}

/* Empty state */
.upl-hof-empty {
    text-align: center;
    padding: 50px 24px;
    background: linear-gradient(180deg, #FEF3C7 0%, #FFFBEB 100%);
    border-radius: 14px;
    border: 1px dashed #F59E0B;
}
.upl-hof-empty-icon { font-size: 56px; margin-bottom: 10px; }
.upl-hof-empty h3 {
    font-family: var(--upl-font-display);
    color: #92400E;
    margin: 0 0 6px;
    font-size: 18px;
    letter-spacing: 0.5px;
}
.upl-hof-empty p {
    color: #78350F;
    font-size: 13px;
    margin: 0;
    max-width: 380px;
    margin: 0 auto;
    line-height: 1.5;
}

/* Mobile */
@media (max-width: 640px) {
    .upl-hof-header { padding: 26px 16px 20px; border-radius: 12px; }
    .upl-hof-crown { font-size: 44px; }
    .upl-hof-title { font-size: 30px; letter-spacing: 1px; }
    .upl-hof-sub { font-size: 12px; }
    .upl-hof-grid { grid-template-columns: 1fr; gap: 14px; }
    .upl-hof-card-photo-wrap { aspect-ratio: 16/10; }
    .upl-hof-card-photo-placeholder { font-size: 60px; }
    .upl-hof-card-name { font-size: 19px; }
}

/* Home page Hall of Fame card — gold treatment to stand out */
.upl-public-hof {
    background: linear-gradient(135deg, #FBBF24 0%, #D97706 100%) !important;
    color: #fff !important;
    border-color: #92400E !important;
}
.upl-public-hof .upl-public-label,
.upl-public-hof .upl-public-stat { color: rgba(255,255,255,0.92) !important; }
.upl-public-hof .upl-public-title { color: #fff !important; }
.upl-public-hof .upl-public-icon { color: #fff !important; filter: drop-shadow(0 2px 6px rgba(0,0,0,0.25)); }
.upl-public-hof .upl-public-arrow { color: #fff !important; }

/* ════════════════════════════════════════════════════════════════
   v2.7.39 — HOME page Live Pulse + Player/Team Profile glow-up
   ════════════════════════════════════════════════════════════════ */

/* ============ HOME: Latest Update banner ============ */
.upl-home-update-card {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: linear-gradient(135deg, #FEF3C7 0%, #FFFBEB 50%, #FEF9E7 100%);
    border: 1px solid #F59E0B;
    border-left: 5px solid #F59E0B;
    border-radius: 12px;
    padding: 14px 16px;
    margin: 14px 0;
    box-shadow: 0 4px 14px rgba(245,158,11,0.10);
}
.upl-home-update-icon {
    font-size: 24px;
    flex-shrink: 0;
    padding-top: 2px;
    filter: drop-shadow(0 2px 4px rgba(245,158,11,0.30));
}
.upl-home-update-body { flex: 1; min-width: 0; }
.upl-home-update-eyebrow {
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.8px;
    color: #92400E;
    text-transform: uppercase;
    margin-bottom: 4px;
}
.upl-home-update-pin {
    color: #B45309;
    font-weight: 700;
    text-transform: none;
}
.upl-home-update-title {
    font-size: 15px;
    font-weight: 800;
    color: #78350F;
    margin-bottom: 4px;
    line-height: 1.3;
}
.upl-home-update-text {
    font-size: 12.5px;
    color: #57534E;
    line-height: 1.5;
    margin-bottom: 6px;
}
.upl-home-update-link {
    font-size: 11px;
    font-weight: 700;
    color: #B45309;
    text-decoration: none;
    letter-spacing: 0.3px;
}
.upl-home-update-link:hover { text-decoration: underline; }

/* ============ HOME: Current Matchday + Upcoming Fixtures ============ */
.upl-home-md-card {
    background: linear-gradient(135deg, #1E293B 0%, #0F172A 100%);
    border-radius: 14px;
    padding: 16px;
    margin: 14px 0;
    color: #fff;
    box-shadow: 0 6px 20px rgba(15,23,42,0.25);
    position: relative;
    overflow: hidden;
}
.upl-home-md-card::before {
    content: '';
    position: absolute; inset: 0;
    background: radial-gradient(circle at 90% 0%, rgba(251,191,36,0.10), transparent 50%);
    pointer-events: none;
}
.upl-home-md-strip {
    display: flex;
    align-items: center;
    gap: 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(255,255,255,0.10);
    position: relative;
    z-index: 1;
}
.upl-home-md-pill {
    background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 100%);
    color: #1F2937;
    padding: 8px 14px 10px;
    border-radius: 10px;
    text-align: center;
    flex-shrink: 0;
    box-shadow: 0 4px 12px rgba(245,158,11,0.30);
}
.upl-home-md-pill-label {
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.8px;
    margin-bottom: 2px;
}
.upl-home-md-pill-num {
    font-family: var(--upl-font-display);
    font-size: 26px;
    font-weight: 900;
    line-height: 1;
}
.upl-home-md-pill-of {
    font-size: 14px;
    font-weight: 700;
    opacity: 0.8;
}
.upl-home-md-progress { flex: 1; min-width: 0; }
.upl-home-md-progress-track {
    height: 8px;
    background: rgba(255,255,255,0.12);
    border-radius: 999px;
    overflow: hidden;
    margin-bottom: 6px;
}
.upl-home-md-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, #FBBF24 0%, #F59E0B 60%, #FCD34D 100%);
    border-radius: 999px;
    transition: width 0.6s ease;
    box-shadow: 0 0 8px rgba(251,191,36,0.5);
}
.upl-home-md-progress-sub {
    font-size: 11.5px;
    color: rgba(255,255,255,0.88);
    letter-spacing: 0.3px;
    font-weight: 600;
}

/* Upcoming fixtures list */
.upl-home-md-upcoming { padding-top: 12px; position: relative; z-index: 1; }
.upl-home-md-upcoming-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 8px;
}
.upl-home-md-upcoming-head strong {
    font-family: var(--upl-font-display);
    font-size: 12px;
    color: #FBBF24;
    letter-spacing: 1px;
    text-transform: uppercase;
}
.upl-home-md-upcoming-link {
    font-size: 11px;
    color: rgba(255,255,255,0.88);
    text-decoration: none;
    font-weight: 700;
}
.upl-home-md-upcoming-link:hover { color: #FBBF24; }
.upl-home-md-upcoming-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.upl-home-md-upcoming-row {
    display: grid;
    grid-template-columns: 50px 1fr 60px;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    background: rgba(255,255,255,0.10);
    border-radius: 8px;
    font-size: 13px;
    border: 1px solid rgba(255,255,255,0.08);
    color: #fff;
}
.upl-home-md-md {
    font-family: var(--upl-font-mono);
    font-size: 10.5px;
    font-weight: 800;
    color: #FCD34D;
    letter-spacing: 0.5px;
}
.upl-home-md-fx-teams {
    display: flex;
    align-items: center;
    gap: 8px;
}
.upl-home-md-fx-vs {
    color: rgba(255,255,255,0.92);
    font-size: 10px;
    font-weight: 700;
}
.upl-home-md-fx-date {
    text-align: right;
    font-size: 11.5px;
    color: rgba(255,255,255,0.90);
    font-family: var(--upl-font-mono);
    font-weight: 700;
}
.upl-home-md-upcoming-empty {
    text-align: center;
    padding: 14px;
    color: rgba(255,255,255,0.85);
    font-size: 12px;
    font-style: italic;
}
.upl-home-md-upcoming-empty span {
    font-size: 22px;
    margin-right: 6px;
    vertical-align: middle;
}

/* ============ PLAYER PROFILE: Form pills ============ */
.upl-pp-form {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: #F8FAFC;
    border-bottom: 1px solid #E2E8F0;
    flex-wrap: wrap;
}
.upl-pp-form-label {
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.8px;
    color: #64748B;
    text-transform: uppercase;
}
.upl-pp-form-pills {
    display: flex;
    gap: 4px;
}
.upl-pp-form-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 900;
    color: #fff;
    letter-spacing: 0.5px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.10);
}
.upl-pp-form-win  { background: linear-gradient(135deg, #16A34A 0%, #15803D 100%); }
.upl-pp-form-tie  { background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%); }
.upl-pp-form-loss { background: linear-gradient(135deg, #DC2626 0%, #991B1B 100%); }
.upl-pp-form-hint {
    font-size: 10.5px;
    color: #94A3B8;
    margin-left: auto;
    letter-spacing: 0.2px;
}

/* ============ TEAM PROFILE: Pulse row (form + top performers) ============ */
.upl-tp-pulse {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 8px;
    padding: 0 12px 12px;
}
.upl-tp-pulse-card {
    background: #fff;
    border-radius: 10px;
    padding: 11px 12px;
    border: 1px solid #E2E8F0;
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 76px;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
a.upl-tp-pulse-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(15,23,42,0.10);
    border-color: #0B5394;
}
.upl-tp-pulse-label {
    font-size: 9.5px;
    font-weight: 800;
    letter-spacing: 0.7px;
    color: #64748B;
    text-transform: uppercase;
    margin-bottom: 6px;
}
.upl-tp-form-pills {
    display: flex;
    gap: 3px;
    margin-bottom: 4px;
}
.upl-tp-form-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border-radius: 5px;
    font-size: 10px;
    font-weight: 900;
    color: #fff;
}
.upl-tp-form-win  { background: linear-gradient(135deg, #16A34A 0%, #15803D 100%); }
.upl-tp-form-tie  { background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%); }
.upl-tp-form-loss { background: linear-gradient(135deg, #DC2626 0%, #991B1B 100%); }
.upl-tp-pulse-sub {
    font-size: 10px;
    color: #94A3B8;
    letter-spacing: 0.2px;
}
.upl-tp-perf-name {
    font-weight: 800;
    font-size: 14px;
    color: #0F172A;
    margin-bottom: 3px;
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.upl-tp-perf-stat {
    font-size: 11.5px;
    color: #475569;
}
.upl-tp-perf-stat strong {
    color: #0B5394;
    font-size: 14px;
    font-weight: 900;
}
.upl-tp-perf-stat span {
    font-size: 10.5px;
    color: #94A3B8;
    margin-left: 4px;
}

@media (max-width: 480px) {
    .upl-home-md-strip { flex-direction: column; align-items: stretch; gap: 10px; }
    .upl-home-md-pill { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 6px 12px; }
    .upl-home-md-pill-label { margin: 0; }
    .upl-home-md-pill-num { font-size: 20px; }
    .upl-home-md-upcoming-row { grid-template-columns: 36px 1fr 50px; gap: 6px; font-size: 12px; }
    .upl-pp-form { padding: 10px 12px; }
    .upl-pp-form-hint { font-size: 9.5px; }
    .upl-tp-pulse { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.39 — MICRO-POLISH
   ════════════════════════════════════════════════════════════════ */

/* (1) Fade-in animation on cards as they enter the viewport.
   Pure-CSS via prefers-reduced-motion respect — no JS needed. */
@keyframes uplFadeInUp {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: no-preference) {
    .upl-card,
    .upl-match-card,
    .upl-hof-card,
    .upl-public-card,
    .upl-home-update-card,
    .upl-home-md-card,
    .upl-tp-pulse-card {
        animation: uplFadeInUp 0.42s cubic-bezier(0.22, 1, 0.36, 1) both;
    }
}

/* (2) Button ripple effect — subtle radial highlight on press */
.upl-hero-btn, .upl-filter-go, .upl-public-card, .upl-hof-tab {
    position: relative;
    overflow: hidden;
}
.upl-hero-btn::after, .upl-filter-go::after, .upl-public-card::after, .upl-hof-tab::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at var(--ripple-x, 50%) var(--ripple-y, 50%), rgba(255,255,255,0.35) 0%, transparent 40%);
    opacity: 0;
    transition: opacity 0.35s ease;
    pointer-events: none;
}
.upl-hero-btn:active::after, .upl-filter-go:active::after, .upl-public-card:active::after, .upl-hof-tab:active::after {
    opacity: 1;
    transition: opacity 0s;
}

/* (3) Better empty-state typography (cross-cutting) */
.upl-empty-state {
    text-align: center;
    padding: 36px 20px;
    color: #94A3B8;
    font-size: 13px;
    line-height: 1.6;
}
.upl-empty-state-icon {
    font-size: 42px;
    margin-bottom: 8px;
    opacity: 0.6;
}
.upl-empty-state h4 {
    color: #475569;
    margin: 0 0 4px;
    font-size: 14px;
    font-weight: 700;
}

/* (4) Loading skeleton (shimmer) — for use in dynamic content */
@keyframes uplSkeletonShimmer {
    0%   { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}
.upl-skeleton {
    background: linear-gradient(90deg, #F1F5F9 0%, #E2E8F0 50%, #F1F5F9 100%);
    background-size: 200% 100%;
    animation: uplSkeletonShimmer 1.6s ease-in-out infinite;
    border-radius: 8px;
    color: transparent !important;
}
.upl-skeleton-line {
    height: 14px;
    margin-bottom: 6px;
    border-radius: 4px;
}
.upl-skeleton-line.short { width: 60%; }
.upl-skeleton-card { height: 96px; margin-bottom: 12px; }

/* (5) Print stylesheet — clean monochrome standings/results for WhatsApp share */
@media print {
    body { background: #fff !important; }
    .upl-hero,
    .upl-hero-cinematic,
    .upl-uas-banner,
    .upl-uas-hindi-link,
    .upl-public-grid,
    .upl-quick-grid,
    .upl-franchise-grid,
    .upl-home-update-card,
    .upl-home-md-card,
    .upl-matches-filterbar,
    .upl-matches-viewtabs,
    nav, footer, .uas-bottom-nav, .uas-top-nav,
    [class*="back-to-top"],
    [class*="scroll-top"] {
        display: none !important;
    }
    .upl-card, .upl-table, .upl-matches-list, .upl-hof-card {
        box-shadow: none !important;
        border: 1px solid #999 !important;
        page-break-inside: avoid;
    }
    a { color: #000 !important; text-decoration: none !important; }
    .upl-table th { background: #f0f0f0 !important; color: #000 !important; }
    .upl-pp-form-pill, .upl-tp-form-pill {
        border: 1px solid #333 !important;
        color: #000 !important;
        background: #fff !important;
    }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.40 — Tier caps + payment options + donation badge
   ════════════════════════════════════════════════════════════════ */

/* Tier availability banner on register form */
.upl-tier-avail-banner {
    background: #fff;
    border: 1.5px solid #E2E8F0;
    border-radius: 12px;
    padding: 12px 14px 14px;
    margin: 0 0 16px;
    box-shadow: 0 2px 6px rgba(15,23,42,0.04);
}
.upl-tier-avail-head {
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.8px;
    color: #64748B;
    text-transform: uppercase;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid #F1F5F9;
}
.upl-tier-avail-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
}
.upl-tier-avail-card {
    text-align: center;
    padding: 8px 4px 9px;
    background: #F8FAFC;
    border-radius: 8px;
    border: 1px solid #E2E8F0;
    transition: all 0.15s ease;
}
.upl-tier-avail-card.upl-tier-low  { background: #FFFBEB; border-color: #FCD34D; }
.upl-tier-avail-card.upl-tier-full { background: #FEF2F2; border-color: #FCA5A5; opacity: 0.92; }
.upl-tier-avail-name {
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.6px;
    text-transform: uppercase;
    margin-bottom: 3px;
}
.upl-tier-avail-num {
    font-family: var(--upl-font-mono);
    font-size: 16px;
    font-weight: 800;
    color: #0F172A;
    line-height: 1.1;
}
.upl-tier-avail-cap {
    font-size: 11px;
    color: #94A3B8;
    font-weight: 600;
}
.upl-tier-avail-track {
    height: 4px;
    background: #E2E8F0;
    border-radius: 999px;
    margin: 6px 4px 5px;
    overflow: hidden;
}
.upl-tier-avail-fill {
    height: 100%;
    border-radius: 999px;
    transition: width 0.4s ease;
}
.upl-tier-avail-status {
    font-size: 10px;
    color: #64748B;
    font-weight: 700;
    letter-spacing: 0.3px;
}
.upl-tier-avail-foot {
    margin: 10px 0 0;
    padding: 8px 10px;
    background: #FEF2F2;
    border-left: 3px solid #DC2626;
    border-radius: 6px;
    font-size: 11px;
    color: #7F1D1D;
    line-height: 1.5;
}

/* Payment options (Standard / Custom) — 2 radio cards stacked or 2-col */
.upl-pay-options {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 14px;
}
.upl-pay-opt-card {
    background: #fff;
    border: 2px solid #E2E8F0;
    border-radius: 12px;
    padding: 13px 14px;
    cursor: pointer;
    transition: all 0.15s ease;
    display: flex;
    flex-direction: column;
    min-height: 96px;
}
.upl-pay-opt-card:hover { border-color: #0B5394; }
.upl-pay-opt-card.active {
    border-color: #0B5394;
    background: linear-gradient(135deg, #0B5394 0%, #0F172A 100%);
    color: #fff;
    box-shadow: 0 6px 14px rgba(11,83,148,0.30);
}
.upl-pay-opt-title {
    font-size: 11.5px;
    font-weight: 800;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    margin-bottom: 6px;
    color: #475569;
}
.upl-pay-opt-card.active .upl-pay-opt-title { color: #FBBF24; }
.upl-pay-opt-amount {
    font-family: var(--upl-font-mono);
    font-size: 24px;
    font-weight: 900;
    color: #0F172A;
    margin-bottom: 4px;
    line-height: 1.1;
}
.upl-pay-opt-card.active .upl-pay-opt-amount { color: #fff; }
.upl-pay-opt-amount-input {
    display: flex;
    align-items: center;
    gap: 6px;
}
.upl-pay-opt-amount-input input {
    width: 100%;
    background: rgba(255,255,255,0.10);
    border: 1.5px solid rgba(255,255,255,0.25);
    color: #fff;
    padding: 4px 8px;
    border-radius: 6px;
    font-size: 18px;
    font-weight: 800;
    font-family: var(--upl-font-mono);
}
.upl-pay-opt-card:not(.active) .upl-pay-opt-amount-input input {
    background: #F8FAFC;
    border-color: #E2E8F0;
    color: #0F172A;
}
.upl-pay-opt-hint {
    font-size: 10.5px;
    color: #64748B;
    line-height: 1.4;
    margin-top: auto;
}
.upl-pay-opt-card.active .upl-pay-opt-hint { color: rgba(255,255,255,0.92); }

/* Donation badge on player profile meta row */
.upl-pp-donation-badge {
    background: linear-gradient(135deg, #FEE2E2 0%, #FECACA 100%);
    color: #991B1B !important;
    padding: 2px 9px 3px;
    border-radius: 999px;
    font-size: 10.5px;
    font-weight: 800 !important;
    letter-spacing: 0.3px;
    border: 1px solid #FCA5A5;
}

@media (max-width: 480px) {
    .upl-tier-avail-grid { grid-template-columns: repeat(2, 1fr); }
    .upl-pay-options { grid-template-columns: 1fr; }
    .upl-pay-opt-card { min-height: auto; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.44 — 3-card role row (Player + Captain + Custom Amount)
   ════════════════════════════════════════════════════════════════ */
.upl-role-cards {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 6px;
}
.upl-role-cards .upl-radio-card {
    padding: 10px 6px;
    font-size: 12.5px;
    text-align: center;
    line-height: 1.3;
}
.upl-radio-card-donor {
    background: linear-gradient(135deg, #FEF3C7 0%, #FFFBEB 100%) !important;
    border-color: #F59E0B !important;
}
.upl-radio-card-donor strong { color: #92400E; }
.upl-radio-card-donor.active {
    background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%) !important;
    border-color: #B45309 !important;
    color: #fff;
    box-shadow: 0 4px 12px rgba(217,119,6,0.35);
}
.upl-radio-card-donor.active strong { color: #fff; }
.upl-radio-card-donor.active small { color: rgba(255,255,255,0.92) !important; opacity: 1 !important; }

/* Custom role sub-pills (Player/Captain inside Custom panel) */
.upl-custom-role-pill {
    flex: 1;
    padding: 8px 10px;
    background: #fff;
    border: 1.5px solid #FCD34D;
    border-radius: 8px;
    cursor: pointer;
    text-align: center;
    font-size: 11.5px;
    font-weight: 700;
    color: #78350F;
    transition: all 0.15s ease;
}
.upl-custom-role-pill.active {
    background: #92400E;
    border-color: #78350F;
    color: #FCD34D;
    box-shadow: 0 2px 6px rgba(120,53,15,0.25);
}

@media (max-width: 420px) {
    .upl-role-cards { grid-template-columns: 1fr; }
    .upl-role-cards .upl-radio-card { padding: 9px 12px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.45 — CHAMPIONS page (cinematic season-celebration cards)
   ════════════════════════════════════════════════════════════════ */

/* Home card — gold trophy treatment (matches HoF gold tone) */
.upl-public-champions {
    background: linear-gradient(135deg, #B91C1C 0%, #7F1D1D 100%) !important;
    color: #fff !important;
    border-color: #7F1D1D !important;
    position: relative;
    overflow: hidden;
}
.upl-public-champions::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 100% 0%, rgba(251,191,36,0.30), transparent 50%),
        radial-gradient(circle at 0% 100%, rgba(251,191,36,0.15), transparent 50%);
    pointer-events: none;
}
.upl-public-champions .upl-public-label,
.upl-public-champions .upl-public-stat { color: rgba(255,255,255,0.92) !important; position: relative; z-index: 1; }
.upl-public-champions .upl-public-title { color: #FBBF24 !important; font-weight: 900; position: relative; z-index: 1; text-shadow: 0 2px 6px rgba(0,0,0,0.30); }
.upl-public-champions .upl-public-icon {
    color: #FBBF24 !important;
    filter: drop-shadow(0 3px 10px rgba(251,191,36,0.45));
    position: relative; z-index: 1;
}
.upl-public-champions .upl-public-arrow { color: #fff !important; position: relative; z-index: 1; }

/* Page header */
.upl-champ-wrap { padding-bottom: 30px; }
.upl-champ-header {
    position: relative;
    text-align: center;
    padding: 40px 20px 32px;
    border-radius: 18px;
    margin-bottom: 28px;
    overflow: hidden;
    background: #0F172A;
}
.upl-champ-header-bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 20% 30%, rgba(251,191,36,0.28), transparent 55%),
        radial-gradient(circle at 80% 70%, rgba(220,38,38,0.20), transparent 55%),
        linear-gradient(180deg, #0F172A 0%, #1E293B 60%, #312E1A 100%);
}
.upl-champ-header-inner { position: relative; z-index: 1; color: #fff; }
.upl-champ-trophy {
    font-size: 76px;
    line-height: 1;
    filter: drop-shadow(0 6px 18px rgba(251,191,36,0.65));
    margin-bottom: 10px;
}
.upl-champ-h1 {
    font-family: var(--upl-font-display);
    font-size: 46px;
    font-weight: 900;
    margin: 0 0 8px;
    letter-spacing: 2px;
    text-transform: uppercase;
    background: linear-gradient(135deg, #FEF3C7 0%, #FCD34D 30%, #F59E0B 70%, #FCD34D 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: 0 3px 14px rgba(251,191,36,0.30);
}
.upl-champ-sub {
    font-size: 14.5px !important;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    margin: 0 !important;
    font-weight: 600 !important;
    letter-spacing: 0.6px;
    text-shadow: 0 2px 8px rgba(0,0,0,0.65), 0 0 16px rgba(0,0,0,0.4);
    opacity: 1 !important;
}

/* Each season's championship card — full-width, 2 columns on desktop */
.upl-champ-card {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 0;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 8px 30px rgba(15,23,42,0.12);
    margin-bottom: 22px;
    border: 1px solid #E2E8F0;
}

/* Left — team identity hero column */
.upl-champ-card-hero {
    background: linear-gradient(160deg, var(--champ-c1) 0%, var(--champ-c2) 70%, #0F172A 100%);
    color: #fff;
    padding: 24px 20px;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    overflow: hidden;
}
.upl-champ-card-glow {
    position: absolute;
    inset: -10%;
    background:
        radial-gradient(circle at 50% 30%, rgba(251,191,36,0.22), transparent 60%),
        radial-gradient(circle at 50% 100%, rgba(255,255,255,0.10), transparent 60%);
    pointer-events: none;
}
.upl-champ-season-tag {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: rgba(0,0,0,0.30);
    border: 1.5px solid rgba(251,191,36,0.55);
    padding: 8px 14px 9px;
    border-radius: 12px;
    margin-bottom: 18px;
    position: relative;
    z-index: 1;
    backdrop-filter: blur(6px);
}
.upl-champ-season-trophy {
    font-size: 22px;
    line-height: 1;
    filter: drop-shadow(0 2px 6px rgba(251,191,36,0.6));
}
.upl-champ-season-num {
    font-family: var(--upl-font-mono);
    font-size: 11px;
    font-weight: 800;
    color: #FCD34D;
    letter-spacing: 1.2px;
    line-height: 1;
}
.upl-champ-season-label {
    font-family: var(--upl-font-display);
    font-size: 14px;
    font-weight: 900;
    color: #fff;
    letter-spacing: 1.5px;
    margin-top: 2px;
}
.upl-champ-logo-wrap {
    position: relative;
    z-index: 1;
    width: 140px;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 16px;
    filter: drop-shadow(0 6px 20px rgba(0,0,0,0.40));
}
.upl-champ-logo-wrap img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
.upl-champ-team-name {
    font-family: var(--upl-font-display);
    font-size: 24px;
    font-weight: 900;
    line-height: 1.15;
    margin: 0 0 6px;
    letter-spacing: 0.5px;
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    text-shadow: 0 2px 10px rgba(0,0,0,0.55), 0 0 18px rgba(0,0,0,0.35);
    position: relative;
    z-index: 1;
    opacity: 1 !important;
}
.upl-champ-season-name {
    font-size: 12.5px;
    color: rgba(255,255,255,0.95) !important;
    font-style: italic;
    font-weight: 600;
    letter-spacing: 0.3px;
    text-shadow: 0 1px 4px rgba(0,0,0,0.5);
    position: relative;
    z-index: 1;
}

/* Right — story column */
.upl-champ-card-body {
    padding: 24px 26px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.upl-champ-hero-photo {
    margin: -24px -26px 6px;
    overflow: hidden;
    max-height: 220px;
}
.upl-champ-hero-photo img {
    width: 100%;
    height: 100%;
    max-height: 220px;
    object-fit: cover;
    display: block;
}
.upl-champ-captain {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    background: linear-gradient(135deg, #FEF3C7 0%, #FFFBEB 100%);
    border-left: 4px solid var(--champ-c1, #F59E0B);
    border-radius: 8px;
}
.upl-champ-captain-icon {
    font-size: 28px;
    color: var(--champ-c1, #B91C1C);
    line-height: 1;
}
.upl-champ-captain-label {
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.8px;
    color: #92400E;
    text-transform: uppercase;
    margin-bottom: 2px;
}
.upl-champ-captain-name {
    font-family: var(--upl-font-display);
    font-size: 18px;
    font-weight: 900;
    color: #0F172A;
    line-height: 1.2;
}
.upl-champ-captain-real {
    font-family: var(--upl-font-body);
    font-size: 13px;
    font-weight: 500;
    color: #64748B;
    font-style: italic;
    margin-left: 4px;
}
.upl-champ-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
    gap: 8px;
}
.upl-champ-stat {
    text-align: center;
    padding: 10px 6px;
    background: #F8FAFC;
    border: 1px solid #E2E8F0;
    border-radius: 8px;
}
.upl-champ-stat strong {
    display: block;
    font-family: var(--upl-font-display);
    font-size: 22px;
    font-weight: 900;
    line-height: 1;
    color: #0F172A;
    margin-bottom: 3px;
}
.upl-champ-stat span {
    font-size: 10px;
    color: #64748B;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    font-weight: 700;
}
.upl-champ-stat-win strong { color: #15803D; }
.upl-champ-stat-loss strong { color: #DC2626; }
.upl-champ-stat-pts {
    background: linear-gradient(135deg, #FEF3C7 0%, #FFFBEB 100%);
    border-color: #FCD34D;
}
.upl-champ-stat-pts strong { color: #B45309; }

.upl-champ-final {
    padding: 12px 14px;
    background: linear-gradient(135deg, #0F172A 0%, #1E293B 100%);
    border-radius: 8px;
    color: #fff;
}
.upl-champ-final-label {
    display: block;
    font-size: 10.5px;
    font-weight: 800;
    color: #FCD34D;
    letter-spacing: 1px;
    margin-bottom: 4px;
}
.upl-champ-final-text {
    font-size: 13px;
    line-height: 1.5;
    color: rgba(255,255,255,0.92);
}
.upl-champ-final-text strong { color: #FBBF24; }

.upl-champ-story {
    font-size: 14px;
    line-height: 1.7;
    color: #334155;
    letter-spacing: 0.1px;
    padding: 4px 0;
}

.upl-champ-team-photo {
    margin-top: 6px;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid #E2E8F0;
}
.upl-champ-team-photo img {
    width: 100%;
    height: auto;
    display: block;
}
.upl-champ-team-photo-caption {
    text-align: center;
    padding: 8px 12px;
    background: #F8FAFC;
    font-size: 11px;
    color: #64748B;
    font-style: italic;
    letter-spacing: 0.3px;
}

/* Empty state */
.upl-champ-empty {
    text-align: center;
    padding: 60px 24px;
    background: linear-gradient(180deg, #FEF3C7 0%, #FFFBEB 100%);
    border-radius: 16px;
    border: 1.5px dashed #F59E0B;
}
.upl-champ-empty-icon {
    font-size: 64px;
    margin-bottom: 12px;
    filter: drop-shadow(0 4px 12px rgba(251,191,36,0.4));
}
.upl-champ-empty h3 {
    font-family: var(--upl-font-display);
    color: #92400E;
    font-size: 20px;
    margin: 0 0 8px;
    letter-spacing: 0.5px;
}
.upl-champ-empty p {
    color: #78350F;
    font-size: 13.5px;
    line-height: 1.6;
    max-width: 460px;
    margin: 0 auto;
}

/* Mobile responsive */
@media (max-width: 720px) {
    .upl-champ-header { padding: 30px 16px 24px; border-radius: 14px; }
    .upl-champ-trophy { font-size: 56px; }
    .upl-champ-h1 { font-size: 32px; letter-spacing: 1.2px; }
    .upl-champ-sub { font-size: 12.5px; }
    .upl-champ-card {
        grid-template-columns: 1fr;
        border-radius: 14px;
    }
    .upl-champ-card-hero {
        padding: 22px 16px 20px;
    }
    .upl-champ-logo-wrap { width: 110px; height: 110px; margin-bottom: 12px; }
    .upl-champ-team-name { font-size: 22px; }
    .upl-champ-card-body { padding: 18px 18px 22px; gap: 14px; }
    .upl-champ-hero-photo {
        margin: -18px -18px 0;
        max-height: 160px;
    }
    .upl-champ-hero-photo img { max-height: 160px; }
    .upl-champ-stats { grid-template-columns: repeat(4, 1fr); }
    .upl-champ-stat strong { font-size: 18px; }
    .upl-champ-story { font-size: 13px; }
}

/* ════════════════════════════════════════════════════════════════
   v2.7.47 — CONTRAST SAFETY NET (uses currentColor to respect
   per-container color choices like CSK gold-with-black-text)
   WordPress themes love to set `h2 { color: var(--theme-accent) }`
   which then inherits down and makes headings invisible on
   team-color/navy gradient backgrounds. The catch-all below forces
   headings + paragraphs INSIDE dark hero containers to inherit
   parent color (currentColor) instead of theme defaults.
   ════════════════════════════════════════════════════════════════ */
.upl-hero h1, .upl-hero h2, .upl-hero h3, .upl-hero h4,
.upl-hero-cinematic h1, .upl-hero-cinematic h2, .upl-hero-cinematic h3,
.upl-team-header h1, .upl-team-header h2, .upl-team-header h3, .upl-team-header h4,
.upl-prof-header h1, .upl-prof-header h2, .upl-prof-header h3, .upl-prof-header h4,
.upl-dash-header h1, .upl-dash-header h2, .upl-dash-header h3,
.upl-rp-hero h1, .upl-rp-hero h2, .upl-rp-hero h3, .upl-rp-hero h4,
.upl-uas-banner h1, .upl-uas-banner h2, .upl-uas-banner h3,
.upl-home-md-card h1, .upl-home-md-card h2, .upl-home-md-card h3,
.upl-champ-card-hero h1, .upl-champ-card-hero h2, .upl-champ-card-hero h3, .upl-champ-card-hero h4,
.upl-team-header p, .upl-prof-header p, .upl-dash-header p,
.upl-rp-hero p, .upl-champ-card-hero p {
    color: currentColor !important;
    -webkit-text-fill-color: currentColor !important;
}

/* HoF + Champions H1 — these intentionally use gradient-fill-text (gold).
   But add safety: if browser doesn't support background-clip:text, fall back to gold solid */
@supports not (background-clip: text) {
    .upl-hof-title, .upl-champ-h1 {
        background: none !important;
        -webkit-text-fill-color: #FBBF24 !important;
        color: #FBBF24 !important;
    }
}
