/* ============================================================
   YurChess — Global Stylesheet v2.0
   Premium Dark Chess Theme
   ============================================================ */

/* ---- CSS Variables ---------------------------------------- */
:root {
    --ys-bg:          #12141a;
    --ys-surface:     #1b1e27;
    --ys-surface-2:   #22263200;
    --ys-border:      #2a2e3a;
    --ys-accent:      #d4a44c;
    --ys-accent-dim:  rgba(212, 164, 76, 0.15);
    --ys-text:        #e8e6df;
    --ys-muted:       #8b8f9c;
    --ys-success:     #4caf50;
    --ys-danger:      #f44336;
    --ys-warning:     #ff9800;
    --ys-radius:      12px;
    --ys-radius-sm:   8px;
    --ys-transition:  0.2s ease;
}

/* ---- Base -------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

body.ys-dark-theme {
    background-color: var(--ys-bg);
    color: var(--ys-text);
    font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.6;
    background-image:
        radial-gradient(1200px 600px at 20% 0%, rgba(212, 164, 76, 0.12) 0%, rgba(18, 20, 26, 0) 60%),
        radial-gradient(900px 500px at 90% 20%, rgba(100, 181, 246, 0.14) 0%, rgba(18, 20, 26, 0) 58%),
        radial-gradient(800px 480px at 40% 100%, rgba(76, 175, 80, 0.10) 0%, rgba(18, 20, 26, 0) 55%);
    background-attachment: fixed;
}

/* Subtle vignette */
body.ys-dark-theme::before {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
        radial-gradient(closest-side at 50% 40%, rgba(0,0,0,0) 0%, rgba(0,0,0,0.45) 100%),
        linear-gradient(180deg, rgba(0,0,0,0.15), rgba(0,0,0,0.45));
}

/* Keep page content above vignette */
body.ys-dark-theme > * {
    position: relative;
    z-index: 1;
}

/* Animated “glow sweep” (cheap, no images) */
body.ys-dark-theme {
    overflow-x: hidden;
}

body.ys-dark-theme::after {
    content: '';
    position: fixed;
    inset: -20% -20% auto -20%;
    height: 55vh;
    pointer-events: none;
    z-index: 0;
    background: linear-gradient(120deg,
        rgba(212, 164, 76, 0.00) 0%,
        rgba(212, 164, 76, 0.10) 35%,
        rgba(100, 181, 246, 0.10) 60%,
        rgba(212, 164, 76, 0.00) 100%);
    filter: blur(22px);
    transform: translateX(-20%);
    animation: ys-glow-sweep 9s ease-in-out infinite;
}

@keyframes ys-glow-sweep {
    0%   { transform: translateX(-20%) translateY(0); opacity: 0.7; }
    50%  { transform: translateX(10%) translateY(8px); opacity: 0.95; }
    100% { transform: translateX(-20%) translateY(0); opacity: 0.7; }
}

a { color: var(--ys-accent); text-decoration: none; }

a:hover { color: #e8be6a; }

/* ---- Navbar ----------------------------------------------- */
.ys-navbar {
    background-color: var(--ys-surface);
    border-bottom: 1px solid var(--ys-border);
    padding-top: 0.6rem;
    padding-bottom: 0.6rem;
}
.ys-navbar .navbar-brand { color: var(--ys-text); font-size: 1.15rem; letter-spacing: 0.02em; }
.ys-navbar .nav-link     { color: var(--ys-muted); font-size: 0.875rem; padding: 0.35rem 0.6rem; border-radius: var(--ys-radius-sm); transition: color var(--ys-transition), background var(--ys-transition); }
.ys-navbar .nav-link:hover { color: var(--ys-text); background: var(--ys-border); }
.ys-nav-rank-badge        { font-size: 1.25rem; line-height: 1; cursor: default; }

/* ---- Card -------------------------------------------------- */
.ys-card {
    background-color: var(--ys-surface);
    border: 1px solid var(--ys-border);
    border-radius: var(--ys-radius);
    padding: 1.25rem 1.5rem;
    transition: border-color var(--ys-transition);
}
.ys-card:hover {
    border-color: var(--ys-accent);
    box-shadow:
        0 0 0 3px rgba(212, 164, 76, 0.12),
        0 10px 30px rgba(0,0,0,0.35);
}


/* ---- Accent text ------------------------------------------ */
.ys-accent { color: var(--ys-accent); }

/* ---- Chessboard wrapper ----------------------------------- */
#board-wrapper {
    max-width: 480px;
    margin: 0 auto;
}
#chess-board { width: 100% !important; }
#ai-status {
    min-height: 24px;
    font-size: 0.875rem;
}

/* ---- Hero strip ------------------------------------------- */
.ys-hero-strip {
    background: linear-gradient(135deg, var(--ys-surface) 0%, #1e2233 100%);
    border: 1px solid var(--ys-border);
    border-radius: var(--ys-radius);
    padding: 1.25rem 1.5rem;
}

/* ---- Rank badges ------------------------------------------ */
.ys-rank-badge-lg  { font-size: 2.2rem; line-height: 1; }
.ys-rank-badge-xl  { font-size: 3rem;   line-height: 1; }

.ys-badge-rank {
    display: inline-block;
    background: var(--ys-accent-dim);
    color: var(--ys-accent);
    border: 1px solid var(--ys-accent);
    border-radius: 999px;
    padding: 0.15rem 0.75rem;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.03em;
}
.ys-badge-rank-sm {
    display: inline-block;
    background: var(--ys-accent-dim);
    color: var(--ys-accent);
    border-radius: 999px;
    padding: 0.1rem 0.55rem;
    font-size: 0.72rem;
    font-weight: 600;
}
.ys-badge-ai {
    display: inline-block;
    background: rgba(33, 150, 243, 0.15);
    color: #64b5f6;
    border: 1px solid rgba(33, 150, 243, 0.4);
    border-radius: 999px;
    padding: 0.15rem 0.75rem;
    font-size: 0.78rem;
    font-weight: 600;
}
.ys-badge-streak {
    display: inline-block;
    background: rgba(255, 152, 0, 0.15);
    color: var(--ys-warning);
    border: 1px solid rgba(255, 152, 0, 0.4);
    border-radius: 999px;
    padding: 0.15rem 0.75rem;
    font-size: 0.78rem;
    font-weight: 600;
}

/* ---- Stat cards ------------------------------------------- */
.ys-stat-card {
    background-color: var(--ys-surface);
    border: 1px solid var(--ys-border);
    border-radius: var(--ys-radius);
    padding: 1rem 1rem 0.85rem;
    text-align: center;
    transition: border-color var(--ys-transition), transform var(--ys-transition);
}
.ys-stat-card:hover { border-color: var(--ys-accent); transform: translateY(-2px); }
.ys-stat-label { font-size: 0.72rem; color: var(--ys-muted); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.3rem; }
.ys-stat-value { font-size: 1.5rem; font-weight: 700; line-height: 1.2; }
.ys-stat-sub   { font-size: 0.9rem; color: var(--ys-muted); font-weight: 400; }

/* ---- Win / Lose / Draw bars ------------------------------- */
.ys-wld-row {
    display: grid;
    grid-template-columns: 52px 1fr 30px;
    align-items: center;
    gap: 0.5rem;
}
.ys-wld-label { font-size: 0.8rem; }
.ys-wld-bar-wrap {
    height: 8px;
    background: var(--ys-border);
    border-radius: 999px;
    overflow: hidden;
}
.ys-wld-bar {
    height: 100%;
    border-radius: 999px;
    transition: width 0.6s ease;
    min-width: 2px;
}
.ys-wld-count { font-size: 0.78rem; text-align: right; color: var(--ys-muted); }

/* ---- Rank progress bar ------------------------------------ */
.ys-rank-bar-wrap {
    height: 10px;
    background: var(--ys-border);
    border-radius: 999px;
    overflow: hidden;
}
.ys-rank-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--ys-accent), #e8be6a);
    border-radius: 999px;
    transition: width 0.8s ease;
    min-width: 4px;
}

/* ---- AI recommendations ----------------------------------- */
.ys-rec-item {
    padding: 0.55rem 0.75rem;
    border-left: 3px solid var(--ys-accent);
    background: var(--ys-accent-dim);
    border-radius: 0 var(--ys-radius-sm) var(--ys-radius-sm) 0;
    font-size: 0.875rem;
    margin-bottom: 0.5rem;
}
.ys-rec-item:last-child { margin-bottom: 0; }

/* ---- AI Memory bars --------------------------------------- */
.ys-memory-row {
    display: grid;
    grid-template-columns: 110px 130px 1fr 40px;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8rem;
}
.ys-memory-type    { color: var(--ys-muted); text-transform: capitalize; }
.ys-memory-subject { font-weight: 600; }
.ys-memory-bar-wrap {
    height: 6px;
    background: var(--ys-border);
    border-radius: 999px;
    overflow: hidden;
}
.ys-memory-bar {
    height: 100%;
    background: #64b5f6;
    border-radius: 999px;
    transition: width 0.6s ease;
}
.ys-memory-conf { text-align: right; color: var(--ys-muted); }

/* ---- Match history / tables ------------------------------- */
.ys-table { font-size: 0.825rem; }
.ys-table th { color: var(--ys-muted); font-weight: 600; text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.05em; border-color: var(--ys-border) !important; }
.ys-table td { border-color: var(--ys-border) !important; vertical-align: middle; }
.table-dark  { --bs-table-bg: transparent; }

/* Result badges */
.ys-result-badge { display: inline-block; border-radius: var(--ys-radius-sm); padding: 0.15rem 0.6rem; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.05em; }
.ys-result-win      { background: rgba(76,175,80,0.2);  color: #4caf50; border: 1px solid rgba(76,175,80,0.4);  }
.ys-result-lose     { background: rgba(244,67,54,0.2);  color: #f44336; border: 1px solid rgba(244,67,54,0.4);  }
.ys-result-draw     { background: rgba(158,158,158,0.2);color: #9e9e9e; border: 1px solid rgba(158,158,158,0.4);}
.ys-result-ongoing  { background: rgba(33,150,243,0.2); color: #64b5f6; border: 1px solid rgba(33,150,243,0.4); }
.ys-result-abandoned{ background: rgba(255,152,0,0.2);  color: #ff9800; border: 1px solid rgba(255,152,0,0.4);  }

/* ---- Rank ladder ------------------------------------------ */
.ys-rank-ladder {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.ys-ladder-item {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.75rem;
    border: 1px solid var(--ys-border);
    border-radius: var(--ys-radius-sm);
    font-size: 0.82rem;
    transition: border-color var(--ys-transition);
}
.ys-ladder-item:hover  { border-color: var(--ys-muted); }
.ys-ladder-active      { border-color: var(--ys-accent); background: var(--ys-accent-dim); }
.ys-ladder-active .ys-ladder-name { color: var(--ys-accent); font-weight: 700; }
.ys-ladder-icon  { font-size: 1.1rem; }
.ys-ladder-name  { font-weight: 500; }
.ys-ladder-elo   { font-size: 0.72rem; }

/* ---- Leaderboard top-3 row -------------------------------- */
.ys-top3-row td:first-child { font-size: 1rem; }

/* ---- Game page: AI level badge ---------------------------- */
.ys-ai-level-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--ys-accent-dim);
    border: 2px solid var(--ys-accent);
    color: var(--ys-accent);
    font-size: 1.3rem;
    font-weight: 800;
}

/* ---- Post-match result panel ------------------------------ */
.ys-result-panel {
    border-color: var(--ys-accent);
    animation: ys-slide-in 0.35s ease;
}
@keyframes ys-slide-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0);    }
}

.ys-mini-stat {
    background: var(--ys-border);
    border-radius: var(--ys-radius-sm);
    padding: 0.5rem 0.25rem;
}

.ys-ai-change-notice {
    background: rgba(33,150,243,0.12);
    border: 1px solid rgba(33,150,243,0.4);
    border-radius: var(--ys-radius-sm);
    padding: 0.5rem 0.75rem;
    font-size: 0.875rem;
    text-align: center;
    color: #64b5f6;
}

/* ---- Opening toast ---------------------------------------- */
.ys-opening-toast {
    background: var(--ys-accent-dim);
    border: 1px solid var(--ys-accent);
    border-radius: var(--ys-radius-sm);
    padding: 0.35rem 0.85rem;
    font-size: 0.82rem;
    animation: ys-fade-in 0.3s ease;
}
@keyframes ys-fade-in {
    from { opacity: 0; } to { opacity: 1; }
}

/* ---- Admin dashboard specific ----------------------------- */
.ys-admin-kpi .ys-stat-card { text-align: left; }

/* ---- Responsive ------------------------------------------- */
@media (max-width: 767px) {
    .ys-card     { padding: 1rem; }
    .ys-hero-strip { padding: 1rem; }
    .ys-stat-value { font-size: 1.25rem; }
    .ys-memory-row { grid-template-columns: 90px 100px 1fr 34px; font-size: 0.75rem; }
    #board-wrapper { max-width: 100%; }
}

@media (max-width: 480px) {
    .ys-memory-row { grid-template-columns: 1fr; }
    .ys-rank-ladder { flex-direction: column; }
}

/* ---- Scrollbar -------------------------------------------- */
::-webkit-scrollbar       { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--ys-bg); }
::-webkit-scrollbar-thumb { background: var(--ys-border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--ys-muted); }

/* ---- Utility overrides ------------------------------------ */
.border-top.border-secondary { border-color: var(--ys-border) !important; }
.table-responsive { border-radius: var(--ys-radius-sm); overflow: hidden; }
.font-monospace { font-size: 0.8rem !important; }

/* ---- Small colorful helpers ------------------------------ */
.ys-glow-accent {
    box-shadow:
        0 0 0 3px rgba(212, 164, 76, 0.12),
        0 0 28px rgba(212, 164, 76, 0.20);
}

.ys-gradient-border {
    position: relative;
}
.ys-gradient-border::before {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    background: linear-gradient(135deg, rgba(212,164,76,0.9), rgba(100,181,246,0.8), rgba(76,175,80,0.8));
    opacity: 0.65;
    z-index: 0;
}
.ys-gradient-border > * {
    position: relative;
    z-index: 1;
}

