/*
Theme Name: KML Fantasy League
Author: KML Fantasy League
Description: The public league hub for KML Fantasy Football — standings, rivalries, career records, and draft history, with the whole fantasy engine (draft board, ESPN sync, value engine, admin tools) built in.
Version: 0.94.0
Requires at least: 6.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: kml
*/

/* ---- Reset & base ---- */
*, *::before, *::after { box-sizing: border-box; }

:root {
    --kml-bg: #0b1220;
    --kml-surface: #111827;
    --kml-card: #1e293b;
    --kml-border: #263548;
    --kml-text: #f8fafc;
    --kml-text-muted: #94a3b8;
    --kml-text-dim: #64748b;
    --kml-gold: #f59e0b;
    --kml-gold-bright: #fbbf24;
    --kml-red: #ef4444;
    --kml-green: #22c55e;
    --kml-heading-font: 'Anton', Impact, 'Arial Narrow Bold', sans-serif;
    --kml-body-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

html { scroll-behavior: smooth; }

body {
    margin: 0;
    background: var(--kml-bg);
    color: var(--kml-text);
    font-family: var(--kml-body-font);
    font-size: 16px;
    line-height: 1.55;
    overflow-x: hidden;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--kml-gold-bright); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4 {
    font-family: var(--kml-heading-font);
    font-weight: 400;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    line-height: 1.1;
    margin: 0 0 0.5em;
    color: var(--kml-text);
}

h1 { font-size: clamp(2rem, 5vw, 3.4rem); }
h2 { font-size: clamp(1.5rem, 3.4vw, 2.2rem); }
h3 { font-size: 1.25rem; }

p { margin: 0 0 1em; color: var(--kml-text-muted); }

.kml-wrap {
    max-width: 1140px;
    margin: 0 auto;
    padding: 0 20px;
}

/* ---- Header: just the league title, set like the banner ---- */
.kml-site-header {
    background:
        radial-gradient(ellipse at 15% 0%, rgba(148, 163, 184, 0.18), transparent 45%),
        radial-gradient(ellipse at 85% 0%, rgba(148, 163, 184, 0.18), transparent 45%),
        #060b16;
    border-bottom: 3px solid var(--kml-gold);
    padding: 10px 16px 8px;
    text-align: center;
}

.kml-site-title {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    text-decoration: none;
}
.kml-site-title:hover { text-decoration: none; }

.kml-title-top { display: flex; align-items: baseline; justify-content: center; gap: 14px; flex-wrap: wrap; line-height: 1; }

.kml-title-name {
    font-family: 'Graduate', 'Alfa Slab One', Georgia, serif;
    font-size: clamp(1.15rem, 3.2vw, 2rem);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #ffd21f;
    text-shadow: 0 2px 0 rgba(0, 0, 0, 0.6), 0 0 14px rgba(255, 210, 31, 0.25);
}

.kml-title-script {
    font-family: 'Yesteryear', 'Brush Script MT', cursive;
    font-size: clamp(1.3rem, 3.4vw, 2.1rem);
    color: #fff;
    text-shadow: 0 2px 6px rgba(0, 0, 0, 0.7);
}

.kml-title-sub {
    font-family: 'Graduate', 'Alfa Slab One', Georgia, serif;
    font-size: clamp(0.6rem, 1.5vw, 0.8rem);
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: #ffd21f;
    opacity: 0.92;
}

/* ---- Page shell: side nav left, page content right (every page but home + draft board) ---- */
.kml-shell {
    max-width: 1400px;
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 20px;
    align-items: start;
    padding-top: 20px;
    padding-bottom: 20px;
}
.kml-shell-side { position: sticky; top: 16px; }
.kml-shell-content { min-width: 0; }
.kml-shell-content .kml-wrap { max-width: none; padding-left: 0; padding-right: 0; }

/* ---- Layout building blocks ---- */
.kml-section {
    padding: 48px 0;
}

.kml-section + .kml-section {
    border-top: 1px solid var(--kml-border);
}

.kml-section-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 24px;
}

.kml-section-head h1 { font-size: clamp(1.5rem, 3.4vw, 2.2rem); margin: 0; }

.kml-section-head p {
    margin: 0;
    color: var(--kml-text-dim);
    font-size: 0.9rem;
}

.kml-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 16px;
}

.kml-card {
    background: var(--kml-card);
    border: 1px solid var(--kml-border);
    border-radius: 10px;
    padding: 22px;
}

.kml-card h3 {
    margin-bottom: 10px;
    color: var(--kml-gold-bright);
}

.kml-nav-card {
    display: block;
    text-decoration: none;
    color: var(--kml-text);
    transition: border-color 0.15s, transform 0.15s;
}

.kml-nav-card:hover {
    border-color: var(--kml-gold);
    transform: translateY(-2px);
    text-decoration: none;
}

.kml-nav-card .kml-nav-card-label {
    display: block;
    font-family: var(--kml-heading-font);
    font-size: 1.3rem;
    text-transform: uppercase;
    color: var(--kml-gold-bright);
    margin-bottom: 6px;
}

.kml-stat {
    text-align: center;
}

.kml-stat .kml-stat-num {
    display: block;
    font-family: var(--kml-heading-font);
    font-size: 2.4rem;
    color: var(--kml-gold);
    line-height: 1;
    margin-bottom: 6px;
}

.kml-stat .kml-stat-label {
    color: var(--kml-text-dim);
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

/* ---- Tables ---- */
.kml-table-scroll {
    overflow-x: auto;
    border: 1px solid var(--kml-border);
    border-radius: 10px;
}

table.kml-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.92rem;
    min-width: 480px;
}

.kml-table thead th {
    background: var(--kml-surface);
    color: var(--kml-text-dim);
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    text-align: left;
    padding: 12px 14px;
    border-bottom: 2px solid var(--kml-border);
    position: sticky;
    top: 0;
}

.kml-table tbody td {
    padding: 11px 14px;
    border-bottom: 1px solid var(--kml-border);
    color: var(--kml-text);
}

.kml-table tbody tr:last-child td { border-bottom: none; }
.kml-table tbody tr:hover { background: rgba(245, 158, 11, 0.05); }

.kml-table .kml-rank {
    color: var(--kml-text-dim);
    font-weight: 700;
    width: 34px;
}

.kml-table tbody tr:nth-child(1) .kml-rank { color: var(--kml-gold); }

.kml-manager-swatch {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    margin-right: 8px;
    vertical-align: middle;
}

.kml-num { font-variant-numeric: tabular-nums; }
.kml-price { color: var(--kml-gold-bright); font-weight: 700; }

/* ---- Season picker ---- */
.kml-season-picker {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 20px;
}

.kml-season-picker a {
    padding: 6px 14px;
    border-radius: 999px;
    border: 1px solid var(--kml-border);
    color: var(--kml-text-muted);
    font-weight: 700;
    font-size: 0.85rem;
    text-decoration: none;
}

.kml-season-picker a:hover { border-color: var(--kml-gold); color: var(--kml-gold-bright); }

.kml-season-picker a.active {
    background: var(--kml-gold);
    border-color: var(--kml-gold);
    color: #1a1305;
}

/* ---- Rivals grid ---- */
.kml-rivalgrid-scroll { overflow-x: auto; }

.kml-rivalgrid {
    display: grid;
    gap: 2px;
    min-width: 680px;
}

.kml-rivalgrid .kml-rg-head {
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--kml-text-dim);
    text-transform: uppercase;
    padding: 6px;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
}

.kml-rivalgrid .kml-rg-rowhead {
    justify-content: flex-end;
    text-align: right;
    padding-right: 12px;
}

.kml-rivalgrid .kml-rg-cell {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    border-radius: 5px;
    font-size: 0.8rem;
    font-weight: 700;
    color: #f8fafc;
}

.kml-rg-abbr { display: none; }
.kml-rivalgrid .kml-rg-cell.kml-rg-empty {
    background: transparent;
    color: var(--kml-border);
}

/* ---- Footer ---- */
.kml-site-footer {
    border-top: 1px solid var(--kml-border);
    padding: 28px 0;
    text-align: center;
    color: var(--kml-text-dim);
    font-size: 0.85rem;
}

.kml-site-footer a { color: var(--kml-text-muted); }

/* ---- Misc ---- */
.kml-empty {
    color: var(--kml-text-dim);
    font-style: italic;
    padding: 16px 0;
}

.kml-btn {
    display: inline-block;
    background: var(--kml-gold);
    color: #1a1305;
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.85rem;
    letter-spacing: 0.03em;
    padding: 10px 20px;
    border-radius: 6px;
    text-decoration: none;
}

.kml-btn:hover { background: var(--kml-gold-bright); text-decoration: none; }

@media (max-width: 700px) {
    .kml-section { padding: 36px 0; }
}

/* ---- Footer tag ---- */
.kml-footer-tag {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin: 0 0 8px;
    color: var(--kml-text-muted);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.3em;
    text-transform: uppercase;
}
.kml-footer-tag i { width: 1px; height: 12px; background: var(--kml-border); }

/* ---- Home page ---- */
body.home {
    background:
        radial-gradient(ellipse at 0% 30%, rgba(148, 163, 184, 0.10), transparent 40%),
        radial-gradient(ellipse at 100% 30%, rgba(148, 163, 184, 0.10), transparent 40%),
        var(--kml-bg);
}

.kml-home-stage {
    position: relative;
    isolation: isolate;
    background: #05080f;
    min-height: 560px;
}
.kml-home-hero-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center top;
    z-index: -2;
}
/* Dims and softens the banner so the dashboard panels stay readable on top of it. */
.kml-home-overlay {
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        linear-gradient(180deg, rgba(6, 11, 22, 0.62) 0%, rgba(6, 11, 22, 0.80) 45%, rgba(11, 18, 32, 0.96) 100%);
}

.kml-icon { flex: none; }

.kml-home-grid {
    max-width: 1400px;
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr) 300px;
    gap: 20px;
    align-items: start;
    padding-top: 28px;
    padding-bottom: 48px;
}

.kml-panel {
    background: rgba(13, 20, 34, 0.86);
    backdrop-filter: blur(6px);
    border: 1px solid var(--kml-border);
    border-radius: 8px;
    padding: 18px 20px;
    margin-bottom: 20px;
}

.kml-panel-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--kml-border);
}
.kml-panel-head h2 {
    margin: 0;
    font-family: var(--kml-body-font);
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}
.kml-panel-head a, .kml-panel-meta { font-size: 0.75rem; color: var(--kml-text-muted); }

.kml-side-nav {
    display: flex;
    flex-direction: column;
    background: rgba(13, 20, 34, 0.86);
    backdrop-filter: blur(6px);
    border: 1px solid var(--kml-border);
    border-radius: 8px;
    padding: 6px;
    margin-bottom: 20px;
}
.kml-side-nav a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 12px;
    border-left: 3px solid transparent;
    border-radius: 4px;
    color: var(--kml-text);
    font-size: 0.9rem;
    font-weight: 500;
}
.kml-side-nav a svg { color: var(--kml-text-muted); }
.kml-side-nav a:hover { background: rgba(255,255,255,0.04); text-decoration: none; }
.kml-side-nav a.is-active { background: rgba(255,255,255,0.06); border-left-color: var(--kml-gold-bright); }
.kml-side-nav a.is-active svg { color: var(--kml-gold-bright); }
.kml-side-nav a.is-child { padding: 7px 12px 7px 38px; font-size: 0.82rem; color: var(--kml-text-muted); }
.kml-side-nav a.is-child svg { width: 16px; height: 16px; }
.kml-side-nav a.is-child.is-active { color: var(--kml-text); }

.kml-chalk {
    padding: 8px 6px;
    color: var(--kml-gold-bright);
    font-family: 'Permanent Marker', cursive;
    transform: rotate(-6deg);
    transform-origin: left top;
}
.kml-chalk p { margin: 0 0 6px; color: inherit; font-size: 1.5rem; line-height: 1.15; text-transform: uppercase; }

.kml-table-flush { border: none; border-radius: 0; }
.kml-table-home { min-width: 0; }
.kml-table-home thead th { background: transparent; padding: 8px 10px; }
.kml-table-home tbody td { padding: 9px 10px; }
.kml-pct { color: var(--kml-text-muted); }
.kml-pct.is-in { color: var(--kml-green); font-weight: 700; }
.kml-table .kml-playoff-line td { border-bottom: 2px solid var(--kml-gold); }
.kml-table-home tbody tr:first-child td { background: rgba(251, 191, 36, 0.06); }

.kml-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.18);
    color: #fff;
    font-weight: 800;
    font-size: 0.9rem;
    position: relative;
    overflow: hidden;
}
.kml-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: #fff; }
.kml-team-cell { display: inline-flex; align-items: center; gap: 12px; }
.kml-mlink { color: inherit; text-decoration: none; }
a.kml-mlink:hover { color: var(--kml-gold-bright); text-decoration: none; }
a.kml-game { display: block; color: inherit; text-decoration: none; }
a.kml-game:hover { text-decoration: none; background: rgba(251, 191, 36, 0.06); }
.kml-team-name { display: flex; flex-direction: column; line-height: 1.2; font-weight: 600; }
.kml-team-name small, .kml-matchup-name small, .kml-matchup-pct small { color: var(--kml-text-dim); font-weight: 400; font-size: 0.72rem; }

/* Upcoming games: two compact lines per game, no per-game chrome beyond a divider. */
.kml-games { display: flex; flex-direction: column; }
.kml-game { padding: 7px 0; border-bottom: 1px solid var(--kml-border); }
.kml-game:first-child { padding-top: 0; }
.kml-game:last-child { border-bottom: none; padding-bottom: 0; }
.kml-game-team { display: flex; align-items: center; gap: 8px; line-height: 1.5; color: var(--kml-text-muted); font-size: 0.82rem; }
.kml-game-team.is-fav { color: var(--kml-text); }
.kml-game-team .kml-avatar { width: 20px; height: 20px; font-size: 0.65rem; border-width: 1px; }
.kml-game-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.kml-game-team small { color: var(--kml-text-dim); font-size: 0.7rem; }
.kml-game-team strong { min-width: 2.6em; text-align: right; font-variant-numeric: tabular-nums; font-size: 0.82rem; }
.kml-game-team.is-fav strong { color: var(--kml-gold-bright); }
.kml-games-note { margin: 12px 0 0; font-size: 0.7rem; color: var(--kml-text-dim); }
.kml-games-note a { color: var(--kml-text-muted); }

@media (max-width: 1000px) {
    .kml-home-grid { grid-template-columns: 200px minmax(0, 1fr); }
    .kml-home-right { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
    .kml-home-right .kml-panel { margin-bottom: 0; }
}
@media (max-width: 700px) {
    .kml-home-grid { grid-template-columns: 1fr; }
    .kml-home-right { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
    .kml-shell { grid-template-columns: 1fr; }
    .kml-shell-side { position: static; }
}

/* ---- Managers: compact rosters ---- */
.kml-rosters {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 14px;
    align-items: start;
}
.kml-roster {
    background: rgba(13, 20, 34, 0.86);
    border: 1px solid var(--kml-border);
    border-radius: 8px;
    padding: 10px 12px 8px;
}
.kml-roster-head { display: flex; align-items: center; gap: 10px; padding-bottom: 8px; margin-bottom: 4px; border-bottom: 1px solid var(--kml-border); }
.kml-roster-title { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.25; }
.kml-roster-title strong { font-size: 0.92rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kml-roster-title small { color: var(--kml-text-dim); font-size: 0.68rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kml-roster-proj { text-align: right; display: flex; flex-direction: column; line-height: 1.1; }
.kml-roster-proj strong { color: var(--kml-gold-bright); font-size: 1rem; font-variant-numeric: tabular-nums; }
.kml-roster-proj small { color: var(--kml-text-dim); font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.06em; }

.kml-roster-list { list-style: none; margin: 0; padding: 0; }
.kml-roster-row { display: flex; align-items: center; gap: 7px; height: 22px; font-size: 0.78rem; }
.kml-roster-row.is-bench { opacity: 0.6; }
.kml-roster-divider { margin: 4px 0 1px; font-size: 0.6rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-text-dim); border-top: 1px dashed var(--kml-border); padding-top: 3px; }
.kml-rpos { display: inline-block; flex: none; width: 30px; text-align: center; border-radius: 3px; font-size: 0.6rem; font-weight: 800; line-height: 16px; letter-spacing: 0.02em; }
.kml-rname { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--kml-text); }
.kml-rname em { font-style: normal; font-size: 0.55rem; font-weight: 700; color: var(--kml-gold-bright); margin-left: 4px; letter-spacing: 0.06em; }
.kml-rteam { flex: none; width: 28px; color: var(--kml-text-dim); font-size: 0.66rem; text-align: left; }
.kml-rrank { flex: none; width: 38px; text-align: right; color: var(--kml-text-dim); font-size: 0.68rem; font-variant-numeric: tabular-nums; }
.kml-rproj { flex: none; width: 34px; text-align: right; color: var(--kml-text-muted); font-size: 0.72rem; }
.kml-rpts { flex: none; width: 34px; text-align: right; color: var(--kml-text-dim); font-size: 0.72rem; }
.kml-rpts.has-pts { color: var(--kml-green); font-weight: 700; }
.kml-roster-colhead { display: flex; gap: 7px; padding: 0 0 2px; font-size: 0.58rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-roster-colhead span:first-child { flex: 1; }
.kml-roster-colhead span:not(:first-child) { flex: none; width: 34px; text-align: right; }
.kml-roster-scored strong { color: var(--kml-green); }
.kml-injury { flex: none; font-size: 0.58rem; font-weight: 800; padding: 0 4px; border-radius: 3px; line-height: 14px; color: #111827; }
.kml-injury-Q { background: #fbbf24; }
.kml-injury-D { background: #f97316; }
.kml-injury-O, .kml-injury-IR, .kml-injury-S, .kml-injury-PUP { background: #ef4444; color: #fff; }

.kml-pos-QB  { background: #4fc3f7; color: #0b1f2e; }
.kml-pos-RB  { background: #e0995c; color: #2e1a05; }
.kml-pos-WR  { background: #b48ee8; color: #240b3d; }
.kml-pos-TE  { background: #52b8ae; color: #052420; }
/* FLEX: the RB, WR and TE colors blended */
.kml-pos-FLEX { background: linear-gradient(100deg, #e0995c 0%, #b48ee8 52%, #52b8ae 100%); color: #1c1233; }
.kml-pos-K   { background: #7ed957; color: #10280a; }
.kml-pos-DST { background: #e05c5c; color: #330606; }
.kml-pos-BENCH { background: #6b7280; color: #111827; }

/* ---- Projected Season ---- */
.kml-subhead { font-family: var(--kml-body-font); font-size: 0.85rem; font-weight: 700; letter-spacing: 0.08em; margin: 28px 0 12px; }
.kml-subhead:first-of-type { margin-top: 0; }
.kml-note { padding: 8px 0 0; font-size: 0.78rem; }
.kml-titlebar { background: linear-gradient(90deg, rgba(251, 191, 36, 0.28) var(--w), transparent var(--w)); }
.kml-titlebar strong { color: var(--kml-gold-bright); }

.kml-bracket { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: center; }
.kml-round h3 { font-family: var(--kml-body-font); font-size: 0.7rem; letter-spacing: 0.1em; color: var(--kml-text-muted); margin: 0 0 8px; }
.kml-round h3 small { color: var(--kml-text-dim); margin-left: 6px; font-weight: 400; }
.kml-bgame { background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 6px; margin-bottom: 10px; overflow: hidden; }
.kml-bteam { display: flex; align-items: center; gap: 8px; padding: 6px 10px; font-size: 0.82rem; color: var(--kml-text-muted); }
.kml-bteam + .kml-bteam { border-top: 1px solid var(--kml-border); }
.kml-bteam.is-winner { color: var(--kml-text); background: rgba(251, 191, 36, 0.08); }
.kml-bteam.is-winner strong { color: var(--kml-gold-bright); }
.kml-bteam .kml-avatar { width: 22px; height: 22px; font-size: 0.65rem; border-width: 1px; }
.kml-seed { flex: none; width: 16px; text-align: center; font-size: 0.68rem; font-weight: 800; color: var(--kml-text-dim); }
.kml-bname { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.kml-bteam strong { font-variant-numeric: tabular-nums; }

.kml-method { margin: 0; padding-left: 18px; color: var(--kml-text-muted); font-size: 0.85rem; }
.kml-method li { margin-bottom: 6px; }

@media (max-width: 700px) { .kml-bracket { grid-template-columns: 1fr; } }

/* ---- Playoff history ---- */
.kml-season-bracket { border: 1px solid var(--kml-border); border-radius: 8px; background: rgba(13, 20, 34, 0.86); margin-bottom: 10px; }
.kml-season-bracket summary { cursor: pointer; padding: 10px 14px; display: flex; gap: 12px; align-items: baseline; }
.kml-season-bracket summary span { color: var(--kml-text-muted); font-size: 0.85rem; }
.kml-season-bracket .kml-bracket { padding: 4px 14px 12px; }

/* Managers who only exist in the league's history */
.kml-former { font-style: normal; font-size: 0.6rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-text-dim); border: 1px solid var(--kml-border); border-radius: 3px; padding: 0 4px; margin-left: 4px; vertical-align: middle; }

/* ---- Rogers Report ---- */
.kml-week-picker { display: flex; flex-wrap: nowrap; align-items: stretch; gap: 4px; margin-bottom: 20px; }
.kml-week-picker .kml-week-label { flex: none; align-self: center; margin-right: 6px; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-week-picker a, .kml-week-picker .is-off { flex: 1 1 0; min-width: 0; text-align: center; padding: 6px 0; border-radius: 999px; border: 1px solid var(--kml-border); font-size: 0.82rem; font-weight: 700; color: var(--kml-text-muted); }
.kml-week-picker a:hover { border-color: var(--kml-gold); color: var(--kml-gold-bright); text-decoration: none; }
.kml-week-picker a.active { background: var(--kml-gold); border-color: var(--kml-gold); color: #1a1305; }
.kml-week-picker .is-off { opacity: 0.35; }

.kml-report-layout { display: grid; grid-template-columns: minmax(0, 1fr) 200px; gap: 20px; align-items: start; }
.kml-report-main { min-width: 0; }
.kml-report-toc { position: sticky; top: 16px; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 12px 14px; max-height: calc(100vh - 32px); overflow-y: auto; }
.kml-report-toc h3 { font-family: var(--kml-body-font); font-size: 0.65rem; letter-spacing: 0.1em; color: var(--kml-text-dim); margin: 0 0 4px; }
.kml-report-toc nav + nav { margin-top: 12px; }
.kml-report-toc a { display: block; padding: 4px 0 4px 8px; border-left: 2px solid transparent; font-size: 0.78rem; line-height: 1.3; color: var(--kml-text-muted); }
.kml-report-toc a:hover { color: var(--kml-gold-bright); text-decoration: none; }
.kml-report-toc a.is-current { color: var(--kml-text); border-left-color: var(--kml-gold-bright); }
@media (max-width: 1100px) {
    .kml-report-layout { grid-template-columns: 1fr; }
    .kml-report-toc { position: static; order: -1; max-height: none; }
}

.kml-desc { margin: 0 0 8px; font-size: 0.82rem; color: var(--kml-text-muted); }
.kml-report th, .kml-report td { white-space: nowrap; padding-left: 9px; padding-right: 9px; }
.kml-report { min-width: 0; }
.kml-report .kml-team-cell .kml-avatar { width: 24px; height: 24px; font-size: 0.7rem; border-width: 1px; }
.kml-subhead[id] { scroll-margin-top: 16px; }

/* ---- News & injuries ---- */
.kml-owner { display: inline-flex; align-items: center; gap: 6px; font-size: 0.74rem; color: var(--kml-text-muted); }
.kml-owner .kml-avatar { width: 20px; height: 20px; font-size: 0.6rem; border-width: 1px; }
.kml-status { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 0.68rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; color: #111827; background: #94a3b8; }
.kml-status-out { background: #ef4444; color: #fff; }
.kml-status-doubtful { background: #f97316; }
.kml-status-questionable { background: #fbbf24; }
.kml-status-suspended { background: #a855f7; color: #fff; }
.kml-status-ir, .kml-status-pup { background: #64748b; color: #fff; }

.kml-news { display: flex; flex-direction: column; gap: 10px; }
.kml-news-item { background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 12px 16px; }
.kml-news-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 4px; font-size: 0.72rem; color: var(--kml-text-dim); }
.kml-tag { border: 1px solid var(--kml-border); border-radius: 3px; padding: 0 5px; font-size: 0.62rem; letter-spacing: 0.06em; text-transform: uppercase; }
.kml-news-item h3 { font-family: var(--kml-body-font); font-size: 0.98rem; font-weight: 700; letter-spacing: 0; text-transform: none; margin: 0 0 4px; }
.kml-news-item h3 a { color: var(--kml-text); }
.kml-news-item h3 a:hover { color: var(--kml-gold-bright); }
.kml-news-item p { margin: 0 0 6px; font-size: 0.86rem; }
.kml-news-impact { color: var(--kml-text-muted); }
.kml-news-impact strong { color: var(--kml-gold-bright); }

/* Collapsible nav groups */
.kml-side-group > summary {
    display: flex; align-items: center; gap: 12px; padding: 11px 12px; border-left: 3px solid transparent; border-radius: 4px;
    color: var(--kml-text); font-size: 0.9rem; font-weight: 500; cursor: pointer; list-style: none; user-select: none;
}
.kml-side-group > summary::-webkit-details-marker { display: none; }
.kml-side-group > summary svg:first-child { color: var(--kml-text-muted); }
.kml-side-group > summary span { flex: 1; }
.kml-side-group > summary svg:last-child { width: 14px; height: 14px; color: var(--kml-text-dim); transition: transform 0.15s; }
.kml-side-group[open] > summary svg:last-child { transform: rotate(90deg); }
.kml-side-group > summary:hover { background: rgba(255,255,255,0.04); }
.kml-side-group > summary.is-active { border-left-color: var(--kml-gold-bright); }
.kml-side-group > summary.is-active svg:first-child { color: var(--kml-gold-bright); }

/* ---- Trade analyzer ---- */
.kml-ta-pickers { display: grid; grid-template-columns: 1fr auto 1fr; gap: 14px; align-items: center; margin-bottom: 14px; }
.kml-ta-select { display: flex; align-items: center; gap: 10px; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 6px 10px; }
.kml-ta-select select { flex: 1; min-width: 0; background: transparent; border: none; color: var(--kml-text); font: inherit; font-weight: 600; padding: 6px 4px; color-scheme: dark; cursor: pointer; }
.kml-ta-select select option { background: var(--kml-card); }
.kml-ta-swap { background: transparent; border: 1px solid var(--kml-border); color: var(--kml-gold-bright); border-radius: 50%; width: 34px; height: 34px; font-size: 1rem; cursor: pointer; }
.kml-ta-swap:hover { border-color: var(--kml-gold); }

.kml-ta-lists { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.kml-ta-panel { min-width: 0; }
.kml-ta-listhead { display: flex; align-items: center; gap: 12px; padding: 0 12px 6px; font-size: 0.66rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-ta-clear { background: none; border: none; padding: 0; color: var(--kml-gold-bright); font: inherit; font-weight: 600; letter-spacing: 0; text-transform: none; cursor: pointer; }
.kml-ta-headlabel { flex: 1; color: var(--kml-text); }
.kml-ta-list { position: relative; max-height: 440px; overflow-y: auto; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 4px 0; }
.kml-ta-row { display: flex; align-items: center; gap: 10px; padding: 6px 12px; cursor: pointer; font-size: 0.86rem; }
.kml-ta-row:hover { background: rgba(255, 255, 255, 0.04); }
.kml-ta-row.is-picked { background: rgba(251, 191, 36, 0.10); }
.kml-ta-row input { flex: none; width: 17px; height: 17px; accent-color: var(--kml-gold); cursor: pointer; }
.kml-ta-row .kml-rpos { width: 32px; }
.kml-ta-photo { flex: none; width: 30px; height: 30px; border-radius: 50%; background: var(--kml-card); border: 1px solid var(--kml-border); overflow: hidden; display: inline-flex; align-items: flex-end; justify-content: center; }
.kml-ta-photo img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.kml-ta-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.kml-ta-name small { color: var(--kml-text-dim); font-weight: 400; font-size: 0.72rem; margin-left: 4px; }
.kml-ta-ecr { flex: none; width: 58px; text-align: right; color: var(--kml-text-muted); font-size: 0.78rem; font-variant-numeric: tabular-nums; }

.kml-ta-result { display: grid; grid-template-columns: 1fr 190px 1fr; gap: 20px; align-items: start; margin-top: 26px; }
.kml-ta-team { text-align: center; padding: 18px 16px 16px; border-radius: 10px; border: 1px solid var(--kml-border); background: rgba(13, 20, 34, 0.86); }
.kml-ta-team.is-up { background: linear-gradient(180deg, rgba(34, 197, 94, 0.14), rgba(13, 20, 34, 0.86) 60%); border-color: rgba(34, 197, 94, 0.45); }
.kml-ta-team.is-down { background: linear-gradient(180deg, rgba(239, 68, 68, 0.14), rgba(13, 20, 34, 0.86) 60%); border-color: rgba(239, 68, 68, 0.45); }
.kml-ta-bigavatar { width: 38px; height: 38px; margin: 0 auto 6px; }
.kml-ta-teamname { font-weight: 700; margin-bottom: 4px; }
.kml-ta-power { font-family: var(--kml-heading-font); font-size: 2.6rem; line-height: 1.1; color: var(--kml-text); }
.kml-ta-power span { font-size: 1.5rem; }
.kml-ta-team.is-up .kml-ta-power { color: var(--kml-green); }
.kml-ta-team.is-down .kml-ta-power { color: var(--kml-red); }
.kml-ta-powerlabel { font-size: 0.72rem; color: var(--kml-text-dim); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 10px; }
.kml-ta-gauge { position: relative; height: 8px; border-radius: 999px; background: var(--kml-border); margin: 0 4px 14px; }
.kml-ta-gauge-fill { height: 100%; border-radius: 999px; background: var(--kml-text-dim); }
.kml-ta-team.is-up .kml-ta-gauge-fill { background: var(--kml-green); }
.kml-ta-team.is-down .kml-ta-gauge-fill { background: var(--kml-red); }
.kml-ta-gauge-mark { position: absolute; top: -5px; width: 2px; height: 18px; background: var(--kml-text); transform: translateX(-1px); }
.kml-ta-line { font-size: 0.78rem; color: var(--kml-text-muted); margin-bottom: 10px; }
.kml-ta-line strong { color: var(--kml-text); }
.kml-ta-needs, .kml-ta-incoming { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; }
.kml-ta-incoming-label { font-size: 0.72rem; font-weight: 700; color: var(--kml-text-muted); margin-right: 2px; }
.kml-ta-need { border-radius: 999px; padding: 1px 10px; font-size: 0.7rem; font-weight: 800; }
button.kml-ta-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--kml-border); border-radius: 999px; padding: 2px 10px 2px 3px; font-size: 0.78rem; font-weight: 600; background: rgba(13, 20, 34, 0.6); color: inherit; cursor: pointer; }
button.kml-ta-chip:hover { border-color: var(--kml-gold); color: var(--kml-gold-bright); text-decoration: none; }
.kml-ta-chip .kml-ta-photo { width: 22px; height: 22px; }

.kml-ta-mid { text-align: center; padding-top: 34px; }
.kml-ta-arrow { font-size: 1.6rem; color: var(--kml-green); letter-spacing: -0.15em; line-height: 1; }
.kml-ta-verdict { font-family: var(--kml-heading-font); font-size: 1.3rem; text-transform: uppercase; }
.kml-ta-winner { color: var(--kml-gold-bright); font-weight: 700; font-size: 0.85rem; margin-top: 2px; }
.kml-ta-roster { margin-top: 10px; font-size: 0.7rem; color: var(--kml-text-dim); }
.kml-ta-hint { font-size: 0.8rem; color: var(--kml-text-dim); padding-top: 14px; }

@media (max-width: 900px) {
    .kml-ta-lists, .kml-ta-result { grid-template-columns: 1fr; }
    .kml-ta-pickers { grid-template-columns: 1fr; }
    .kml-ta-swap { justify-self: center; transform: rotate(90deg); }
    .kml-ta-mid { padding-top: 0; }
}

/* Recent trades panel */
.kml-trades { display: flex; flex-direction: column; }
.kml-trade { padding: 10px 0; border-bottom: 1px solid var(--kml-border); }
.kml-trade:first-child { padding-top: 0; }
.kml-trade:last-child { border-bottom: none; padding-bottom: 0; }
.kml-trade-date { margin-bottom: 6px; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-trade-side + .kml-trade-side { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--kml-border); }
.kml-trade-team { display: flex; align-items: center; gap: 8px; font-size: 0.82rem; font-weight: 600; margin-bottom: 4px; }
.kml-trade-team .kml-avatar { width: 20px; height: 20px; font-size: 0.65rem; border-width: 1px; }
.kml-trade-team span:not(.kml-avatar) { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kml-trade-team small { color: var(--kml-text-dim); font-weight: 400; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; }
.kml-trade-players { list-style: none; margin: 0; padding: 0 0 0 28px; }
.kml-trade-players li { display: flex; align-items: center; gap: 7px; font-size: 0.78rem; line-height: 1.7; }
.kml-trade-players .kml-rpos { width: 28px; }
.kml-trade-pname { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kml-trade-players small { color: var(--kml-text-dim); font-size: 0.68rem; }

/* ---- Scoreboard ---- */
.kml-sb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 14px; }
.kml-sb-card { display: block; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 10px; padding: 12px 14px 10px; color: var(--kml-text); transition: border-color 0.15s, transform 0.15s; }
.kml-sb-card:hover { border-color: var(--kml-gold); transform: translateY(-2px); text-decoration: none; }
.kml-sb-team { display: grid; grid-template-columns: auto 1fr auto 62px 44px; gap: 10px; align-items: center; padding: 5px 0; color: var(--kml-text-muted); }
.kml-sb-team.is-lead { color: var(--kml-text); }
.kml-sb-name { min-width: 0; display: flex; flex-direction: column; line-height: 1.2; font-weight: 600; font-size: 0.9rem; overflow: hidden; }
.kml-sb-name small { color: var(--kml-text-dim); font-weight: 400; font-size: 0.7rem; }
.kml-sb-score { font-family: var(--kml-heading-font); font-size: 1.5rem; line-height: 1; text-align: right; font-variant-numeric: tabular-nums; }
.kml-sb-proj { text-align: right; font-size: 0.8rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.kml-sb-proj small { display: block; font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--kml-text-dim); }
.kml-sb-pct { text-align: right; font-weight: 700; font-size: 0.85rem; font-variant-numeric: tabular-nums; }
.kml-sb-team.is-lead .kml-sb-pct { color: var(--kml-gold-bright); }
.kml-sb-bar, .kml-sb-winbar { display: flex; height: 5px; border-radius: 999px; overflow: hidden; margin: 8px 0 6px; background: var(--kml-border); }
.kml-sb-bar span, .kml-sb-winbar span { display: block; }
.kml-sb-more { display: block; text-align: right; font-size: 0.7rem; color: var(--kml-text-dim); }
.kml-sb-card:hover .kml-sb-more { color: var(--kml-gold-bright); }

.kml-sb-others { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 8px; margin-bottom: 14px; }
.kml-sb-mini { display: block; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 6px 10px; color: var(--kml-text); transition: border-color 0.15s; }
.kml-sb-mini:hover { border-color: var(--kml-gold); text-decoration: none; }
.kml-sb-mini-row { display: grid; grid-template-columns: auto 1fr auto 34px; gap: 7px; align-items: center; padding: 2px 0; font-size: 0.76rem; color: var(--kml-text-muted); }
.kml-sb-mini-row.is-lead { color: var(--kml-text); }
.kml-sb-mini-row .kml-avatar { width: 18px; height: 18px; font-size: 0.55rem; border-width: 1px; }
.kml-sb-mini-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.kml-sb-mini-score { font-weight: 800; font-variant-numeric: tabular-nums; }
.kml-sb-mini-pct { text-align: right; font-size: 0.7rem; color: var(--kml-text-dim); font-variant-numeric: tabular-nums; }
.kml-sb-mini-row.is-lead .kml-sb-mini-pct { color: var(--kml-gold-bright); }

/* The two team panels: one linear row each (logo, name, projection, score) — the right one mirrored. */
.kml-sb-detail-head { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.kml-sb-dteam { display: flex; align-items: center; gap: 12px; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 10px; padding: 8px 14px; }
.kml-sb-dteam.is-right { flex-direction: row-reverse; text-align: right; }
.kml-sb-dteam .kml-avatar { flex: none; width: 34px; height: 34px; }
.kml-sb-dname { flex: 1; min-width: 0; font-weight: 700; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kml-sb-dname small { display: block; font-weight: 400; font-size: 0.7rem; color: var(--kml-text-dim); overflow: hidden; text-overflow: ellipsis; }
.kml-sb-dproj { flex: none; font-size: 0.8rem; line-height: 1.1; color: var(--kml-text-muted); font-variant-numeric: tabular-nums; }
.kml-sb-dproj small { display: block; font-size: 0.56rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--kml-text-dim); }
.kml-sb-dscore { flex: none; min-width: 64px; font-family: var(--kml-heading-font); font-size: 1.9rem; line-height: 1; text-align: right; font-variant-numeric: tabular-nums; }
.kml-sb-dteam.is-right .kml-sb-dscore { text-align: left; }
.kml-sb-winbar { height: 20px; margin: 8px 0 14px; }
.kml-sb-winbar span { font-size: 0.7rem; font-weight: 800; color: #0b1220; line-height: 20px; padding: 0 10px; white-space: nowrap; }
.kml-sb-winbar span:last-child { text-align: right; }

.kml-sb-lineups .kml-right { text-align: right; }
.kml-sb-lineups th { white-space: nowrap; }
.kml-sb-player { white-space: nowrap; }
.kml-sb-player small { color: var(--kml-text-dim); font-size: 0.7rem; margin: 0 4px; }
.kml-sb-player .kml-rpos { display: inline-block; width: 30px; }
.kml-sb-slot { text-align: center; width: 44px; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.06em; color: var(--kml-text-dim); background: rgba(255, 255, 255, 0.03); }
.kml-sb-projcell { color: var(--kml-text-muted); }
.kml-sb-ptscell { color: var(--kml-text-dim); }
.kml-sb-ptscell.has-pts { color: var(--kml-green); font-weight: 700; }
.kml-sb-total td { border-top: 2px solid var(--kml-border); font-weight: 700; }
.kml-sb-divider td { font-size: 0.6rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-text-dim); background: rgba(255,255,255,0.02); }
.kml-sb-lineups .is-bench td { opacity: 0.6; }
@media (max-width: 700px) { .kml-sb-detail-head { grid-template-columns: 1fr; } .kml-sb-dteam.is-right { flex-direction: row; text-align: left; } .kml-sb-team { grid-template-columns: auto 1fr auto 52px 40px; gap: 6px; } }

/* Head-to-head panel between the win bar and the lineups */
.kml-h2h { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin-bottom: 14px; }
.kml-h2h-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; text-align: center; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 7px 8px; min-height: 64px; }
.kml-h2h-label { font-size: 0.58rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-h2h-pair { display: inline-flex; align-items: baseline; gap: 6px; font-family: var(--kml-heading-font); font-size: 1.25rem; line-height: 1.15; font-variant-numeric: tabular-nums; }
.kml-h2h-pair b { font-weight: 400; color: var(--kml-text-muted); }
.kml-h2h-pair i { font-style: normal; color: var(--kml-text-dim); font-size: 0.9rem; }
.kml-h2h-big { font-size: 0.95rem; line-height: 1.2; }
.kml-h2h-tile small { font-size: 0.66rem; color: var(--kml-text-dim); line-height: 1.25; }
.kml-h2h-none { font-size: 0.85rem; color: var(--kml-text-dim); }
@media (max-width: 1000px) { .kml-h2h { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 600px) { .kml-h2h { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Scoreboard: week navigation and past/future states */
.kml-week-picker a.is-now:not(.active) { border-color: var(--kml-gold); color: var(--kml-gold-bright); }
.kml-sb-mode { margin-left: 10px; padding: 2px 9px; border-radius: 999px; font-family: var(--kml-body-font); font-size: 0.62rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; vertical-align: middle; border: 1px solid var(--kml-border); color: var(--kml-text-muted); }
.kml-sb-mode-current { color: #0b1220; background: var(--kml-green); border-color: var(--kml-green); }
.kml-sb-mode-future { color: var(--kml-gold-bright); border-color: var(--kml-gold); }
.kml-sb-score.is-proj, .kml-sb-dscore.is-proj { color: var(--kml-text-muted); }
.kml-sb-dteam.is-winner { border-color: var(--kml-gold); }
.kml-sb-winbar-gap { height: 14px; }
.kml-sb-player.is-empty { color: var(--kml-text-dim); }

/* NFL game under each player: opponent, kickoff, primetime star, head-to-head swords */
.kml-sb-pline { display: block; }
.kml-sb-rankcell { color: var(--kml-text-dim); }
.kml-sb-game { display: flex; align-items: center; gap: 5px; margin-top: 2px; font-size: 0.66rem; color: var(--kml-text-dim); line-height: 1.2; }
.kml-sb-lineups .kml-right .kml-sb-game { justify-content: flex-end; }
.kml-sb-vs { font-weight: 700; color: var(--kml-text-muted); }
.kml-sb-lineups .kml-sb-player { padding-top: 6px; padding-bottom: 6px; }
.kml-prime, .kml-facing { display: inline-flex; align-items: center; gap: 3px; border-radius: 999px; font-weight: 800; letter-spacing: 0.06em; }
.kml-prime { padding: 1px 7px 1px 5px; font-size: 0.58rem; color: #1a1300; background: linear-gradient(110deg, #f5b301 0%, #ffe27a 45%, #f5b301 90%); background-size: 220% 100%; animation: kml-shine 3.2s linear infinite, kml-glow 2.4s ease-in-out infinite; }
.kml-prime svg { width: 10px; height: 10px; fill: currentColor; }
.kml-facing { padding: 1px 5px; color: #ffb4b4; background: rgba(239, 68, 68, 0.16); border: 1px solid rgba(239, 68, 68, 0.55); }
.kml-facing svg { width: 12px; height: 12px; }
.kml-wx { display: inline-flex; align-items: center; gap: 3px; padding: 1px 6px 1px 4px; border-radius: 999px; font-size: 0.58rem; font-weight: 800; letter-spacing: 0.04em; white-space: nowrap; border: 1px solid currentColor; background: rgba(148, 163, 184, 0.12); }
.kml-wx svg { width: 11px; height: 11px; flex: none; }
.kml-wx-rain { color: #7cc4ff; background: rgba(56, 152, 236, 0.14); }
.kml-wx-snow { color: #dbeafe; background: rgba(219, 234, 254, 0.14); }
.kml-wx-wind { color: #b6c2d4; }
.kml-wx-cold { color: #93c5fd; background: rgba(147, 197, 253, 0.12); }
.kml-wx-heat { color: #fdba74; background: rgba(251, 146, 60, 0.14); }
td.kml-sb-player.is-prime { background: linear-gradient(90deg, rgba(245, 179, 1, 0.13), transparent 70%); }
td.kml-sb-player.is-prime.kml-right { background: linear-gradient(270deg, rgba(245, 179, 1, 0.13), transparent 70%); }
td.kml-sb-player.is-facing { box-shadow: inset 3px 0 0 rgba(239, 68, 68, 0.75); }
td.kml-sb-player.is-facing.kml-right { box-shadow: inset -3px 0 0 rgba(239, 68, 68, 0.75); }
@keyframes kml-shine { to { background-position: -220% 0; } }
@keyframes kml-glow { 0%, 100% { box-shadow: 0 0 0 rgba(245, 179, 1, 0); } 50% { box-shadow: 0 0 9px rgba(245, 179, 1, 0.65); } }
@media (prefers-reduced-motion: reduce) { .kml-prime { animation: none; } }

.kml-prime-strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 22px; margin: 0 0 12px; padding: 9px 14px; border: 1px solid rgba(245, 179, 1, 0.35); border-radius: 12px; background: radial-gradient(120% 220% at 50% -60%, rgba(245, 179, 1, 0.2), rgba(245, 179, 1, 0.03) 60%); }
.kml-prime-title { display: inline-flex; align-items: center; gap: 6px; font-family: var(--kml-heading-font); text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.78rem; color: var(--kml-gold-bright); }
.kml-prime-title svg { width: 14px; height: 14px; fill: currentColor; }
.kml-prime-side { display: inline-flex; align-items: center; gap: 7px; font-size: 0.82rem; }
.kml-prime-side b { font-size: 1.05rem; color: #fff; }
.kml-prime-side small { color: var(--kml-text-muted); font-size: 0.7rem; }

.kml-face-panel { margin: 0 0 12px; padding: 10px 14px 6px; border: 1px solid rgba(239, 68, 68, 0.4); border-radius: 12px; background: radial-gradient(120% 220% at 50% -60%, rgba(239, 68, 68, 0.16), rgba(239, 68, 68, 0.02) 60%); }
.kml-face-title { display: flex; align-items: center; justify-content: center; gap: 7px; margin-bottom: 6px; font-family: var(--kml-heading-font); text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.78rem; color: #ff9b9b; }
.kml-face-title svg { width: 16px; height: 16px; }
.kml-face-row { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 10px; padding: 6px 0; border-top: 1px solid rgba(255, 255, 255, 0.06); font-size: 0.82rem; font-weight: 600; }
.kml-face-names.is-left { text-align: right; }
.kml-face-vs { padding: 2px 9px; border-radius: 999px; background: rgba(255, 255, 255, 0.07); font-size: 0.66rem; letter-spacing: 0.08em; color: var(--kml-text-muted); white-space: nowrap; }

/* Weekly recap */
.kml-recap-banner { display: flex; align-items: center; gap: 16px; margin: 0 0 16px; padding: 14px 20px; border-radius: 10px; border: 1px solid var(--kml-gold); background: linear-gradient(90deg, rgba(245, 158, 11, 0.28), rgba(245, 158, 11, 0.06) 70%, rgba(13, 20, 34, 0.86)); color: var(--kml-text); box-shadow: 0 0 0 1px rgba(251, 191, 36, 0.12), 0 6px 22px rgba(245, 158, 11, 0.12); transition: transform 0.15s, box-shadow 0.15s; }
.kml-recap-banner:hover { transform: translateY(-1px); text-decoration: none; box-shadow: 0 0 0 1px rgba(251, 191, 36, 0.4), 0 8px 26px rgba(245, 158, 11, 0.22); }
.kml-recap-banner > svg { flex: none; width: 34px; height: 34px; color: var(--kml-gold-bright); }
.kml-recap-banner-text { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.25; }
.kml-recap-banner-text strong { font-family: var(--kml-heading-font); font-size: 1.35rem; letter-spacing: 0.02em; text-transform: uppercase; font-weight: 400; }
.kml-recap-banner-text small { color: var(--kml-text-muted); font-size: 0.8rem; }
.kml-recap-banner-cta { flex: none; padding: 8px 16px; border-radius: 6px; background: var(--kml-gold); color: #1a1305; font-weight: 800; font-size: 0.78rem; letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap; }
.kml-recap-banner.is-compact { padding: 8px 16px; }
.kml-recap-banner.is-compact > svg { width: 24px; height: 24px; }
.kml-recap-banner.is-compact .kml-recap-banner-text strong { font-size: 1rem; }
.kml-recap-banner.is-compact .kml-recap-banner-text small { display: none; }
@media (max-width: 700px) { .kml-recap-banner-text small { display: none; } .kml-recap-banner-cta { padding: 6px 10px; } }

.kml-rc-lede { font-size: 1.05rem; color: var(--kml-text); margin: 0 0 18px; }
.kml-rc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; margin-bottom: 36px; }
.kml-rc-card { background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 10px; padding: 12px 16px 6px; }
.kml-rc-label { font-size: 0.62rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--kml-gold-bright); margin-bottom: 6px; }
.kml-rc-main { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.kml-rc-main .kml-avatar { width: 30px; height: 30px; font-size: 0.8rem; }
.kml-rc-headline { font-family: var(--kml-heading-font); font-size: 1.7rem; line-height: 1.1; }
.kml-rc-card p { font-size: 0.84rem; line-height: 1.45; margin: 0 0 8px; color: var(--kml-text-muted); }
.kml-rc-upset, .kml-rc-bench { border-color: rgba(251, 191, 36, 0.45); }
.kml-rc-scores { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px; }
.kml-rc-score { display: block; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 6px 12px; color: var(--kml-text-muted); }
.kml-rc-score:hover { border-color: var(--kml-gold); text-decoration: none; }
.kml-rc-score-row { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: center; padding: 2px 0; font-size: 0.82rem; }
.kml-rc-score-row .kml-avatar { width: 20px; height: 20px; font-size: 0.6rem; border-width: 1px; }
.kml-rc-score-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kml-rc-score-row.is-win { color: var(--kml-text); font-weight: 600; }
.kml-rc-up { color: var(--kml-green); font-weight: 700; }
.kml-rc-down { color: var(--kml-red); font-weight: 700; }
.kml-rc-benched { color: var(--kml-red); font-weight: 600; }

/* Playoff scenarios */
.kml-clinch { display: inline-block; padding: 1px 9px; border-radius: 999px; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; background: var(--kml-border); color: var(--kml-text-muted); white-space: nowrap; }
.kml-clinch-clinched { background: var(--kml-green); color: #052014; }
.kml-clinch-bye { background: var(--kml-gold); color: #1a1305; }
.kml-clinch-eliminated { background: var(--kml-red); color: #fff; }
.kml-odds { display: flex; flex-wrap: wrap; gap: 4px; }
.kml-odds-chip { padding: 1px 7px; border-radius: 5px; font-size: 0.7rem; color: var(--kml-text); font-variant-numeric: tabular-nums; }
.kml-odds-chip b { font-weight: 700; margin-right: 4px; color: var(--kml-text-muted); }
.kml-heat-cell { text-align: center; font-size: 0.72rem; min-width: 52px; line-height: 1.15; }
.kml-heat-cell .kml-heat-opp { display: block; font-size: 0.6rem; color: var(--kml-text-muted); text-transform: uppercase; letter-spacing: 0.04em; }
.kml-heat-cell.is-bye { color: var(--kml-text-dim); background: transparent; }

/* ---- Mobile navigation: a hamburger that opens a slide-in drawer ---- */
.kml-nav-toggle, .kml-nav-close { display: none; }

@media (max-width: 900px) {
    .kml-site-header { position: relative; padding: 10px 14px 8px 64px; }
    .kml-nav-toggle {
        display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
        position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
        width: 42px; height: 42px; padding: 0 10px; background: rgba(255, 255, 255, 0.05);
        border: 1px solid var(--kml-border); border-radius: 8px; cursor: pointer;
    }
    .kml-nav-toggle span { display: block; width: 100%; height: 2px; border-radius: 2px; background: var(--kml-text); }
    .kml-nav-toggle:hover { border-color: var(--kml-gold); }

    /* The side nav leaves the page flow entirely and becomes a drawer. */
    .kml-shell-side, .kml-home-side {
        position: fixed; top: 0; left: 0; bottom: 0; z-index: 200;
        width: min(84vw, 320px); padding: 54px 12px 28px; overflow-y: auto;
        background: #0b1220; border-right: 1px solid var(--kml-border);
        transform: translateX(-105%); visibility: hidden;
        transition: transform 0.22s ease, visibility 0s linear 0.22s;
    }
    body.kml-nav-open .kml-shell-side, body.kml-nav-open .kml-home-side { transform: none; visibility: visible; transition: transform 0.22s ease; }
    .kml-nav-close {
        display: block; position: absolute; top: 8px; right: 10px; width: 40px; height: 40px;
        background: none; border: none; color: var(--kml-text-muted); font-size: 1.9rem; line-height: 1; cursor: pointer;
    }
    /* The dimmed area beside the open drawer belongs to the drawer itself (so it always stacks with it). */
    body.kml-nav-open .kml-shell-side::after, body.kml-nav-open .kml-home-side::after {
        content: ''; position: fixed; top: 0; bottom: 0; left: min(84vw, 320px); right: 0;
        background: rgba(0, 0, 0, 0.62);
    }
    body.kml-nav-open { overflow: hidden; }

    /* One column, and columns may shrink below their content's natural width. */
    .kml-shell { grid-template-columns: minmax(0, 1fr); padding-left: 12px; padding-right: 12px; }
    .kml-home-grid { grid-template-columns: minmax(0, 1fr); padding-left: 12px; padding-right: 12px; }
    .kml-home-right { grid-column: auto; display: block; }
    .kml-home-right .kml-panel { margin-bottom: 20px; }
    .kml-wrap { padding-left: 4px; padding-right: 4px; }
}

/* ---- Phones: fit everything without zooming or sideways scrolling ---- */
@media (max-width: 700px) {
    /* Tables: tighter type and padding; lower-priority columns (marked data-hide="n n" on the table) drop out. */
    table.kml-table { min-width: 0; font-size: 0.74rem; }
    .kml-table thead th { padding: 8px 4px; font-size: 0.58rem; letter-spacing: 0.02em; }
    .kml-table tbody td { padding: 7px 4px; }
    .kml-report th, .kml-report td { white-space: normal; }
    .kml-table .kml-rank { width: 22px; }
    .kml-table .kml-avatar { width: 20px; height: 20px; font-size: 0.55rem; border-width: 1px; }
    .kml-team-cell { gap: 6px; max-width: 100%; }
    .kml-team-name { min-width: 0; max-width: 28vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .kml-team-name small { display: none; }
    .kml-rpos { width: 26px; }
    .kml-odds-chip { padding: 1px 4px; font-size: 0.6rem; }
    .kml-odds-chip b { margin-right: 2px; }
    table[data-hide~="2"] > thead > tr > :nth-child(2), table[data-hide~="2"] > tbody > tr > :nth-child(2) { display: none; }
    table[data-hide~="3"] > thead > tr > :nth-child(3), table[data-hide~="3"] > tbody > tr > :nth-child(3) { display: none; }
    table[data-hide~="4"] > thead > tr > :nth-child(4), table[data-hide~="4"] > tbody > tr > :nth-child(4) { display: none; }
    table[data-hide~="5"] > thead > tr > :nth-child(5), table[data-hide~="5"] > tbody > tr > :nth-child(5) { display: none; }
    table[data-hide~="6"] > thead > tr > :nth-child(6), table[data-hide~="6"] > tbody > tr > :nth-child(6) { display: none; }
    table[data-hide~="7"] > thead > tr > :nth-child(7), table[data-hide~="7"] > tbody > tr > :nth-child(7) { display: none; }
    table[data-hide~="8"] > thead > tr > :nth-child(8), table[data-hide~="8"] > tbody > tr > :nth-child(8) { display: none; }
    table[data-hide~="9"] > thead > tr > :nth-child(9), table[data-hide~="9"] > tbody > tr > :nth-child(9) { display: none; }
    table[data-hide~="10"] > thead > tr > :nth-child(10), table[data-hide~="10"] > tbody > tr > :nth-child(10) { display: none; }
    table[data-hide~="11"] > thead > tr > :nth-child(11), table[data-hide~="11"] > tbody > tr > :nth-child(11) { display: none; }
    table[data-hide~="12"] > thead > tr > :nth-child(12), table[data-hide~="12"] > tbody > tr > :nth-child(12) { display: none; }

    /* Remaining-schedule grid: logo-only rows and slim cells so 12 weeks fit. */
    .kml-heat .kml-team-name { display: none; }
    .kml-heat-cell { min-width: 0; padding: 5px 1px; font-size: 0.58rem; }
    .kml-heat-cell .kml-heat-opp { display: none; }
    .kml-heat th { padding-left: 1px; padding-right: 1px; font-size: 0.52rem; letter-spacing: 0; }
    .kml-heat { table-layout: fixed; width: 100%; }
    .kml-heat th:first-child, .kml-heat td:first-child { width: 34px; }
    .kml-report td { overflow-wrap: anywhere; }
    .kml-heat th:first-child, .kml-heat td:first-child { padding-left: 4px; padding-right: 2px; }

    /* Rivals grid: 3-letter headers, narrow cells. */
    .kml-rivalgrid-scroll { overflow-x: visible; }
    .kml-rivalgrid { min-width: 0; gap: 1px; grid-template-columns: 34px repeat(var(--n, 12), minmax(0, 1fr)) !important; }
    .kml-rivalgrid .kml-rg-full { display: none; }
    .kml-rivalgrid .kml-rg-abbr { display: inline; }
    .kml-rivalgrid .kml-rg-head { font-size: 0.5rem; padding: 4px 0; letter-spacing: 0; }
    .kml-rivalgrid .kml-rg-rowhead { padding-right: 3px; justify-content: flex-end; }
    .kml-rivalgrid .kml-rg-cell { min-height: 26px; font-size: 0.52rem; border-radius: 3px; }

    /* Scoreboard lineups: names + points only. */
    .kml-sb-player small { display: none; }
    .kml-sb-game { font-size: 0.56rem; gap: 3px; flex-wrap: nowrap; overflow: hidden; }
    .kml-prime { padding: 0 4px 0 3px; font-size: 0.5rem; }
    .kml-prime svg { width: 8px; height: 8px; }
    .kml-facing { padding: 0 3px; }
    .kml-wx { padding: 0 4px 0 3px; font-size: 0.5rem; }
    .kml-wx svg { width: 9px; height: 9px; }
    .kml-wx-w { display: none; }
    .kml-facing svg { width: 9px; height: 9px; }
    .kml-face-row { grid-template-columns: 1fr; gap: 2px; text-align: center; }
    .kml-face-names.is-left, .kml-face-names.is-right { text-align: center; }
    .kml-sb-when { display: none; }
    .kml-sb-player { white-space: nowrap; max-width: 30vw; overflow: hidden; text-overflow: ellipsis; }
    .kml-sb-player .kml-rpos { width: 24px; font-size: 0.52rem; }
    .kml-sb-slot { width: 30px; font-size: 0.56rem; padding: 0 2px; }
    .kml-injury { display: none; }

    /* News: owner shows as just a logo. */
    .kml-owner span:not(.kml-avatar) { display: none; }

    /* Grids that had a minimum card width: never wider than the screen. */
    .kml-sb-grid, .kml-rc-grid, .kml-rc-scores { grid-template-columns: minmax(0, 1fr); }
    .kml-rosters { grid-template-columns: minmax(0, 1fr); }
    .kml-sb-mini-name { max-width: 30vw; }
    .kml-sb-others { grid-template-columns: minmax(0, 1fr); }

    /* Week pickers: every week fits on one line. */
    .kml-week-picker { gap: 2px; overflow: visible; }
    .kml-week-picker .kml-week-label { display: none; }
    .kml-week-picker a, .kml-week-picker .is-off { flex: 1 1 0; min-width: 0; padding: 5px 0; font-size: 0.66rem; }
    .kml-season-picker a { padding: 5px 10px; font-size: 0.78rem; }

    /* Rogers report contents: a compact wrapped list. */
    .kml-report-toc { padding: 8px 10px; }
    .kml-report-toc nav { display: flex; flex-wrap: wrap; gap: 2px 10px; }
    .kml-report-toc h3 { flex-basis: 100%; }
    .kml-report-toc a { border-left: none; padding: 2px 0; font-size: 0.72rem; }

    /* Page title area */
    .kml-title-name { font-size: 1.05rem; letter-spacing: 0.02em; }
    .kml-title-script { font-size: 1.15rem; }
    .kml-title-sub { font-size: 0.55rem; letter-spacing: 0.22em; }
    h1 { font-size: 1.6rem; }
}

/* Claude-written matchup previews and recap column */
.kml-ai-card { margin: 0 0 18px; padding: 14px 18px 12px; border: 1px solid var(--kml-border, rgba(255,255,255,.12)); border-left: 3px solid var(--kml-gold-bright); border-radius: 12px; background: linear-gradient(135deg, rgba(251,191,36,.07), rgba(255,255,255,.02) 55%); }
.kml-ai-label { display: flex; align-items: center; gap: 7px; font-size: .68rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--kml-gold-bright); }
.kml-ai-label .kml-icon { width: 15px; height: 15px; }
.kml-ai-head { margin: 6px 0 8px; font-family: var(--kml-heading-font); font-weight: 400; font-size: 1.35rem; letter-spacing: .02em; text-transform: uppercase; color: #fff; }
.kml-ai-card p { margin: 0 0 9px; line-height: 1.55; color: var(--kml-text); }
.kml-ai-credit { font-size: .66rem; letter-spacing: .06em; color: var(--kml-text-dim); }
@media (max-width: 700px) { .kml-ai-card { padding: 12px 14px 10px; } .kml-ai-head { font-size: 1.1rem; } }

/* "Chime in" contact line (header and footer) */
.kml-chime { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px 12px; margin: 5px 0 0; font-size: 0.72rem; letter-spacing: 0.04em; color: var(--kml-text-muted); }
.kml-chime a { color: var(--kml-text); font-weight: 600; }
.kml-chime a:hover { color: var(--kml-gold-bright); text-decoration: none; }
.kml-chime-label { font-size: 0.62rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--kml-gold-bright); }
.kml-chime i { width: 1px; height: 11px; background: var(--kml-border); }
.kml-chime-footer { margin: 0 0 10px; font-size: 0.82rem; }
@media (min-width: 1060px) {
    .kml-site-header { position: relative; }
    .kml-site-header .kml-chime { position: absolute; right: 24px; top: 50%; transform: translateY(-50%); flex-direction: column; align-items: flex-end; gap: 3px; margin: 0; }
    .kml-site-header .kml-chime i { display: none; }
}

/* Podcast panel on the home page */
.kml-pod-body { display: flex; align-items: center; gap: 16px; padding: 14px 16px 16px; }
.kml-pod-art { flex: 0 0 96px; }
.kml-pod-art img { display: block; width: 96px; height: 96px; border-radius: 12px; object-fit: cover; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45); }
.kml-pod-info { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.kml-pod-label { font-size: 0.66rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--kml-gold-bright); }
.kml-pod-title { font-size: 1.08rem; font-weight: 700; line-height: 1.25; color: #fff; }
.kml-pod-title:hover { color: var(--kml-gold-bright); text-decoration: none; }
.kml-pod-meta { font-size: 0.78rem; color: var(--kml-text-muted); }
.kml-pod-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 6px; }
.kml-pod-play { font: inherit; font-weight: 800; font-size: 0.78rem; letter-spacing: 0.04em; text-transform: uppercase; color: #1a1305; background: var(--kml-gold); border: 0; border-radius: 999px; padding: 7px 16px; cursor: pointer; }
.kml-pod-play:hover { background: var(--kml-gold-bright); }
.kml-pod-open { font-size: 0.78rem; font-weight: 600; }
.kml-pod-player { padding: 0 16px 16px; }
.kml-pod-player iframe { display: block; border: 0; border-radius: 12px; }
@media (max-width: 700px) { .kml-pod-art, .kml-pod-art img { flex-basis: 72px; width: 72px; height: 72px; } .kml-pod-body { gap: 12px; padding: 12px; } .kml-pod-title { font-size: 0.98rem; } .kml-pod-player { padding: 0 12px 12px; } }
@media (max-width: 700px) {
    .kml-site-header .kml-chime { font-size: 0.68rem; gap: 2px 9px; }
    .kml-site-header .kml-chime-label { display: none; }
}

/* ---- Trades and Transactions ---- */
.kml-tr-player { display: inline-flex; align-items: center; gap: 5px; margin: 2px 8px 2px 0; white-space: nowrap; }
.kml-tr-player small { color: var(--kml-text-dim); font-size: 0.7rem; }
.kml-tr-player .kml-rpos { width: 30px; text-align: center; }
.kml-tr-list { display: grid; gap: 12px; }
.kml-tr-card { display: block; padding: 14px 18px 12px; border: 1px solid var(--kml-border); border-radius: 12px; background: rgba(13, 20, 34, 0.86); color: var(--kml-text); transition: border-color .12s, transform .12s; }
.kml-tr-card:hover { border-color: var(--kml-gold); text-decoration: none; transform: translateY(-1px); }
.kml-tr-card-static:hover { border-color: var(--kml-border); transform: none; }
.kml-tr-status { margin-left: auto; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.kml-tr-status-canceled { background: rgba(239, 68, 68, 0.14); color: #f87171; }
.kml-tr-status-pending { background: rgba(251, 191, 36, 0.14); color: var(--kml-gold-bright); }
.kml-tr-status-accepted { background: rgba(34, 197, 94, 0.14); color: var(--kml-green); }
.kml-tr-proposed { font-size: 0.58rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-gold-bright); border: 1px solid var(--kml-gold-bright); border-radius: 3px; padding: 0 4px; margin-right: 6px; vertical-align: middle; }

[data-kml-view-panel][hidden] { display: none; }
.kml-view-picker { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.kml-view-picker button { font-family: inherit; background: none; cursor: pointer; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--kml-border); font-size: 0.76rem; font-weight: 700; color: var(--kml-text-muted); }
.kml-view-picker button:hover { border-color: var(--kml-gold); color: var(--kml-gold-bright); }
.kml-view-picker button.active { background: var(--kml-gold); border-color: var(--kml-gold); color: #1a1305; }

.kml-tr-list-compact { gap: 6px; }
.kml-tr-list-compact .kml-tr-card { padding: 8px 12px 7px; border-radius: 8px; }
.kml-tr-list-compact .kml-tr-meta { margin-bottom: 6px; font-size: 0.66rem; }
.kml-tr-list-compact .kml-tr-team { margin-bottom: 2px; }
.kml-tr-list-compact .kml-tr-tname { font-size: 0.82rem; }
.kml-tr-list-compact .kml-tr-gets { font-size: 0.58rem; }
.kml-tr-list-compact .kml-tr-player { margin: 1px 6px 1px 0; }
.kml-tr-list-compact .kml-tr-player .kml-rpos { width: 24px; font-size: 0.54rem; line-height: 14px; }
.kml-tr-list-compact .kml-tr-pname { font-size: 0.78rem; }
.kml-tr-list-compact .kml-avatar { width: 24px; height: 24px; font-size: 0.65rem; }
.kml-tr-list-compact .kml-tr-swap .kml-icon { width: 16px; height: 16px; }
.kml-tr-meta { display: flex; align-items: baseline; gap: 12px; margin-bottom: 10px; font-size: 0.74rem; }
.kml-tr-date { font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-gold-bright); white-space: nowrap; }
.kml-tr-take { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--kml-text-muted); font-style: italic; }
.kml-tr-more { margin-left: auto; color: var(--kml-text-dim); white-space: nowrap; }
.kml-tr-sides { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: start; gap: 14px; }
.kml-tr-side { min-width: 0; }
.kml-tr-team { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.kml-tr-tname { font-weight: 700; color: #fff; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kml-tr-gets { font-size: 0.66rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-tr-swap { align-self: center; color: var(--kml-gold-bright); }
.kml-tr-swap .kml-icon { width: 22px; height: 22px; }
.kml-tr-players { display: flex; flex-wrap: wrap; }
.kml-tr-back { margin: 0 0 6px; font-size: 0.85rem; }
.kml-td-sides { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; margin-bottom: 14px; }
.kml-td-table td.kml-num { white-space: nowrap; }
.kml-td-side { min-width: 0; padding: 14px 16px 12px; border: 1px solid var(--kml-border); border-radius: 12px; background: rgba(13, 20, 34, 0.86); }
.kml-td-head { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 12px; padding-bottom: 10px; border-bottom: 1px solid var(--kml-border); }
.kml-td-title { min-width: 0; }
.kml-td-title h2 { margin: 0; font-family: var(--kml-heading-font); font-weight: 400; font-size: 1.25rem; text-transform: uppercase; letter-spacing: 0.02em; color: #fff; }
.kml-td-title small { color: var(--kml-text-dim); }
.kml-td-status { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 0.78rem; color: var(--kml-text-muted); }
.kml-td-status b { color: #fff; font-variant-numeric: tabular-nums; }
.kml-td-status i { font-style: normal; font-size: 0.66rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-td-sub { margin: 12px 0 4px; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--kml-gold-bright); }
.kml-td-table td small { color: var(--kml-text-dim); }
.kml-td-note { margin-left: 4px; font-size: 0.68rem; font-style: italic; color: var(--kml-text-dim); }
.kml-td-total td { border-top: 1px solid var(--kml-border); font-weight: 800; color: #fff; }
.kml-td-cut { margin: 8px 0 0; font-size: 0.78rem; color: var(--kml-text-muted); }
.kml-tr-pager { display: flex; justify-content: space-between; gap: 12px; margin: 8px 0 0; font-weight: 700; }
.kml-tx-days { flex-wrap: wrap; }
.kml-tx-days a { flex: 0 0 auto; padding: 6px 12px; }
.kml-tx-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 18px; }
.kml-tx-tiles .kml-h2h-big { font-family: var(--kml-heading-font); font-weight: 400; font-size: 1.5rem; }
.kml-tx-table td { vertical-align: middle; }
.kml-tx-fp { margin-left: 2px; }
.kml-tx-why { color: var(--kml-text-muted); font-size: 0.82rem; }
@media (max-width: 700px) {
    .kml-tr-card { padding: 12px; }
    .kml-tr-sides { grid-template-columns: minmax(0, 1fr); gap: 8px; }
    .kml-tr-swap { display: none; }
    .kml-tr-take { display: none; }
    .kml-tx-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .kml-tx-days { gap: 4px; }
    .kml-tx-days a { padding: 5px 9px; font-size: 0.7rem; }
    .kml-td-side { padding: 12px; }
    .kml-tr-player { white-space: normal; }
    .kml-tx-table .kml-tr-player { white-space: nowrap; }
    .kml-tx-table .kml-tr-player small { display: none; }
    .kml-tx-table .kml-team-name { max-width: 26vw; }
    .kml-tx-why { font-size: 0.7rem; line-height: 1.25; }
    .kml-tx-table td, .kml-tx-table th { padding-left: 5px; padding-right: 5px; }
}

/* Sign-in page and the account line in the side nav */
.kml-login { padding: 56px 0 72px; }
.kml-login-card { max-width: 460px; margin: 0 auto; padding: 32px 30px 26px; text-align: center; border: 1px solid var(--kml-border); border-radius: 16px; background: rgba(13, 20, 34, 0.9); box-shadow: 0 18px 60px rgba(0, 0, 0, 0.45); }
.kml-login-card h1 { margin: 0 0 8px; font-family: var(--kml-heading-font); font-weight: 400; font-size: 2.1rem; letter-spacing: 0.03em; text-transform: uppercase; color: #fff; }
.kml-login-card p { margin: 0 0 18px; color: var(--kml-text-muted); line-height: 1.55; }
.kml-login-error { margin: 0 0 16px; padding: 10px 14px; border: 1px solid rgba(239, 68, 68, 0.5); border-radius: 10px; background: rgba(239, 68, 68, 0.1); color: #fecaca; font-size: 0.9rem; text-align: left; }
.kml-google-btn { display: inline-flex; align-items: center; gap: 12px; padding: 11px 22px 11px 16px; border-radius: 999px; background: #fff; color: #1f1f1f; font-weight: 600; font-size: 0.95rem; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4); transition: transform .12s, box-shadow .12s; }
.kml-google-btn:hover { color: #1f1f1f; text-decoration: none; transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5); }
.kml-google-btn svg { width: 20px; height: 20px; flex: none; }
.kml-login-fine { margin: 22px 0 0 !important; font-size: 0.78rem; color: var(--kml-text-dim) !important; }
.kml-login-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }

.kml-btn.kml-btn-quiet { background: transparent; border: 1px solid var(--kml-border); color: var(--kml-text); }
.kml-btn.kml-btn-quiet:hover { border-color: var(--kml-gold); color: var(--kml-gold-bright); background: transparent; }

/* Header: who's signed in (left), mirroring "Chime in" on the right */
.kml-header-account { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 2px 10px; margin: 4px 0 0; font-size: 0.72rem; color: var(--kml-text-muted); }
.kml-ha-label { font-size: 0.62rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--kml-gold-bright); }
.kml-ha-name { color: #fff; font-weight: 700; }
.kml-ha-team { color: var(--kml-text-muted); }
.kml-ha-out, .kml-ha-in { font-weight: 700; }
.kml-ha-in { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px; border: 1px solid var(--kml-border); border-radius: 999px; color: var(--kml-text); }
.kml-ha-in:hover { border-color: var(--kml-gold); color: var(--kml-gold-bright); text-decoration: none; }
.kml-ha-in .kml-icon { width: 15px; height: 15px; }
@media (min-width: 1060px) {
    .kml-header-account { position: absolute; left: 24px; top: 50%; transform: translateY(-50%); flex-direction: column; align-items: flex-start; gap: 3px; margin: 0; }
}
@media (max-width: 700px) {
    .kml-header-account { font-size: 0.68rem; gap: 2px 9px; }
    .kml-ha-label { display: none; }
}

/* "You": the signed-in manager's own team, marked wherever it appears */
.kml-avatar.kml-me { box-shadow: 0 0 0 2px #0b1220, 0 0 0 4px var(--kml-gold-bright); }
.kml-you { margin-left: 6px; padding: 1px 6px; border-radius: 999px; background: var(--kml-gold); color: #1a1305; font-style: normal; font-size: 0.56rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; vertical-align: middle; }
tr:has(.kml-avatar.kml-me) > td, tr:has(.kml-avatar.kml-me) > th, tr.is-me > td { background-color: rgba(251, 191, 36, 0.11); }
tr:has(.kml-avatar.kml-me) > td:first-child, tr.is-me > td:first-child { box-shadow: inset 3px 0 0 var(--kml-gold-bright); }
.kml-sb-team:has(.kml-me), .kml-sb-mini-row:has(.kml-me), .kml-sb-dteam:has(.kml-me), .kml-rc-score-row:has(.kml-me), .kml-trade-side:has(.kml-me), .kml-tr-team:has(.kml-me), .kml-td-side:has(.kml-me), .kml-roster.is-me, .kml-prime-side:has(.kml-me) { background-color: rgba(251, 191, 36, 0.10); box-shadow: inset 3px 0 0 var(--kml-gold-bright); border-radius: 6px; }
.kml-td-side:has(.kml-me), .kml-roster.is-me { box-shadow: 0 0 0 1px var(--kml-gold), inset 3px 0 0 var(--kml-gold-bright); border-radius: 12px; }
.kml-rg-head.is-me { color: #1a1305; background: var(--kml-gold); border-radius: 4px; }
.kml-rg-cell.is-me-row, .kml-rg-cell.is-me-col { outline: 1px solid rgba(251, 191, 36, 0.75); outline-offset: -1px; }
.kml-rg-cell.is-me-row.is-me-col { outline-width: 2px; }
.kml-name-line { display: inline-block; max-width: 100%; }
/* "Under the lights": room inside each team's chip, so the "you" highlight doesn't hug the text */
.kml-prime-side { padding: 4px 14px 4px 5px; border-radius: 999px; }
.kml-prime-side:has(.kml-me) { border-radius: 999px; box-shadow: inset 0 0 0 1px rgba(251, 191, 36, 0.45); }

/* Transactions: High Noons (Wednesdays) as pills, every other date in a dropdown on the right */
.kml-tx-days { align-items: center; }
.kml-tx-days .kml-week-label { color: var(--kml-gold-bright); }
.kml-tx-jump { margin: 0 0 0 auto; }
.kml-tx-jump select { max-width: 100%; padding: 6px 30px 6px 14px; border: 1px solid var(--kml-border); border-radius: 999px; background: rgba(13, 20, 34, 0.86) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 11px center; -webkit-appearance: none; appearance: none; font: inherit; font-size: 0.82rem; font-weight: 700; color: var(--kml-text-muted); cursor: pointer; }
.kml-tx-jump select:hover, .kml-tx-jump select:focus { border-color: var(--kml-gold); color: var(--kml-gold-bright); outline: 0; }
.kml-tx-jump select option { background: #0d1422; color: #e2e8f0; }
@media (max-width: 700px) { .kml-tx-jump { flex: 1 1 100%; margin: 4px 0 0; } .kml-tx-jump select { width: 100%; font-size: 16px; } }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 700px) { .kml-tx-days .kml-week-label { display: block; font-size: 0.6rem; } }

/* Trade Analyzer: "Analyze with Claude" */
.kml-ta-ai { margin-top: 22px; }
.kml-ta-ai-btn { display: inline-flex; align-items: center; gap: 8px; padding: 11px 22px; border: 0; border-radius: 999px; font: inherit; font-weight: 800; font-size: 0.82rem; letter-spacing: 0.06em; text-transform: uppercase; color: #1a1305; background: var(--kml-gold); cursor: pointer; }
.kml-ta-ai-btn:hover:not(:disabled) { background: var(--kml-gold-bright); }
.kml-ta-ai-btn:disabled { opacity: 0.6; cursor: default; }
.kml-ta-ai-hint { margin-left: 12px; font-size: 0.78rem; color: var(--kml-text-dim); }
p.kml-ta-ai-hint { margin: 0; }
.kml-ta-ai-card { margin-top: 14px; padding: 16px 20px 12px; border: 1px solid var(--kml-border); border-left: 3px solid var(--kml-gold-bright); border-radius: 12px; background: linear-gradient(135deg, rgba(251, 191, 36, 0.07), rgba(255, 255, 255, 0.02) 55%); line-height: 1.55; }
.kml-ta-ai-card p { margin: 0 0 9px; }
.kml-ta-ai-card ul { margin: 0 0 9px; padding-left: 20px; }
.kml-ta-ai-card li { margin-bottom: 5px; }
.kml-ta-ai-card strong { color: #fff; }
.kml-ta-ai-card.is-loading { color: var(--kml-text-muted); display: flex; align-items: center; gap: 12px; }
.kml-ta-ai-card.is-error { border-left-color: #ef4444; background: rgba(239, 68, 68, 0.08); color: #fecaca; }
.kml-ta-ai-label { margin-bottom: 6px; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--kml-gold-bright); }
.kml-ta-ai-card .kml-chat-dots { display: inline-flex; gap: 4px; }
.kml-ta-ai-card .kml-chat-dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--kml-gold-bright); animation: kml-ta-bounce 1.1s infinite ease-in-out; }
.kml-ta-ai-card .kml-chat-dots i:nth-child(2) { animation-delay: .15s; }
.kml-ta-ai-card .kml-chat-dots i:nth-child(3) { animation-delay: .3s; }
@keyframes kml-ta-bounce { 0%, 80%, 100% { transform: translateY(0); opacity: .45; } 40% { transform: translateY(-4px); opacity: 1; } }

/* My Team: admin-only "Predict High Noon" — a speculative bidding-war table, dashed border throughout to read as a guess, not a real report */
.kml-mt-predict { margin-top: 26px; padding-top: 16px; border-top: 1px dashed var(--kml-border); }
.kml-mt-predict-head { margin-bottom: 10px; }
.kml-mt-predict-date { margin: 10px 0 3px; font-size: 0.68rem; color: var(--kml-text-dim); }
.kml-mt-predict-summary { margin: 0 0 12px; padding: 10px 14px; border: 1px dashed var(--kml-gold); border-radius: 10px; background: rgba(245, 158, 11, 0.06); line-height: 1.45; font-size: 0.82rem; }
.kml-mt-predict-target { margin-top: 10px; padding-top: 8px; border-top: 1px solid rgba(148, 163, 184, 0.12); }
.kml-mt-predict-target:first-of-type { margin-top: 0; border-top: 0; }
/* The pill here (kml_pos_chip) is the exact one the roster table above uses — same markup, same global
   .kml-rpos/.kml-pos-* rules — so it's visually identical there by construction, not by copying values. */
.kml-mt-predict-target-head { font-size: 0.82rem; color: var(--kml-text); }
.kml-mt-predict-why { margin: 2px 0 5px; font-size: 0.72rem; color: var(--kml-text-dim); }
/* No <thead> (the columns speak for themselves once several of these sit in a row) and fixed, identical
   column widths on every target's table, so Manager/Bid/Drop line up down the whole section — otherwise
   each table would size its own columns from its own content and drift out of alignment with the next. */
.kml-mt-predict-table { table-layout: fixed; font-size: 0.78rem; }
.kml-mt-predict-table td { vertical-align: middle; padding: 5px 10px; }
.kml-mt-predict-table td:nth-child(1) { width: 36%; }
.kml-mt-predict-table td:nth-child(2) { width: 13%; }
.kml-mt-predict-table td:nth-child(3) { width: 51%; }
.kml-mt-predict-table .kml-avatar { width: 20px; height: 20px; font-size: 0.6rem; border-width: 1px; }
.kml-mt-predict-row-won { background: rgba(245, 158, 11, 0.07); }
.kml-predict-lost { color: var(--kml-text-dim); font-size: 0.76rem; }
.kml-mt-predict-nodrop { color: var(--kml-text-dim); }
.kml-mt-predict-error { margin: 8px 0; padding: 8px 12px; border-radius: 8px; background: rgba(239, 68, 68, 0.1); color: #fecaca; font-size: 0.78rem; }
.kml-mt-predict-pending { margin: 8px 0; padding: 8px 12px; border-radius: 8px; background: rgba(148, 163, 184, 0.1); color: var(--kml-text-dim); font-size: 0.78rem; }

/* Trade page: both teams' tables share fixed column widths so the columns line up down the page */
.kml-td-table { table-layout: fixed; width: 100%; }
.kml-td-table th:nth-child(2), .kml-td-table td:nth-child(2),
.kml-td-table th:nth-child(3), .kml-td-table td:nth-child(3) { width: 110px; }
.kml-td-table th:nth-child(4), .kml-td-table td:nth-child(4) { width: 150px; }
.kml-td-table th:nth-child(5), .kml-td-table td:nth-child(5) { width: 140px; }
.kml-td-table td.kml-td-player { white-space: normal; }
@media (max-width: 700px) {
    .kml-td-table th:nth-child(2), .kml-td-table td:nth-child(2),
    .kml-td-table th:nth-child(3), .kml-td-table td:nth-child(3) { width: 66px; }
    .kml-td-table th:nth-child(4), .kml-td-table td:nth-child(4) { width: 74px; }
}

/* My Team */
.kml-mt-head { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 16px; margin: 0 0 16px; padding: 12px 16px; border: 1px solid var(--kml-border); border-radius: 12px; background: rgba(13, 20, 34, 0.86); }
.kml-mt-title { min-width: 0; }
.kml-mt-title h2 { margin: 0; font-family: var(--kml-heading-font); font-weight: 400; font-size: 1.4rem; letter-spacing: 0.02em; text-transform: uppercase; color: #fff; }
.kml-mt-title small { color: var(--kml-text-muted); }
.kml-mt-matchup { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 1px; padding: 6px 12px; border: 1px solid var(--kml-border); border-radius: 10px; color: var(--kml-text); text-align: right; }
.kml-mt-matchup:hover { border-color: var(--kml-gold); text-decoration: none; }
.kml-mt-vs { font-weight: 700; color: #fff; }
.kml-mt-odds { font-size: 0.78rem; color: var(--kml-text-muted); }
.kml-mt-go { font-size: 0.7rem; color: var(--kml-gold-bright); }
.kml-mt-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "starters bench"; gap: 18px; align-items: start; }
.kml-mt-grid > .kml-mt-starters { grid-area: starters; }
.kml-mt-grid > .kml-mt-bench { grid-area: bench; }
.kml-mt-grid .kml-table-scroll { margin: 0; }
.kml-mt-grid:not(:has(.kml-mt-bench)) { grid-template-columns: minmax(0, 1fr); grid-template-areas: "starters"; }
.kml-mt-bench .is-bench td { opacity: 1; }
@media (max-width: 900px) { .kml-mt-grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "starters" "bench"; } }
@media (max-width: 700px) { .kml-mt-matchup { margin-left: 0; align-items: flex-start; text-align: left; flex: 1 1 100%; } }
#kml-mt-ai:not(:empty) { margin-bottom: 18px; }

/* Live Scoring feed (homepage, replaces the podcast panel while a game is on) */
.kml-panel-head h2 { display: flex; align-items: center; gap: 8px; }
.kml-feed-live { width: 9px; height: 9px; border-radius: 50%; background: #ef4444; box-shadow: 0 0 0 rgba(239, 68, 68, 0.6); animation: kml-feed-pulse 1.8s ease-out infinite; }
@keyframes kml-feed-pulse { 0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.55); } 70% { box-shadow: 0 0 0 7px rgba(239, 68, 68, 0); } 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); } }
.kml-feed-list { list-style: none; margin: 0; padding: 6px 0; overflow: visible; }
.kml-feed-item { display: flex; align-items: flex-start; gap: 14px; padding: 10px 16px; border-bottom: 1px solid rgba(148, 163, 184, 0.1); overflow: visible; }
.kml-feed-item:last-child { border-bottom: 0; }
.kml-feed-icon { flex: none; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; margin-top: 1px; border-radius: 50%; color: var(--kml-text-muted); background: rgba(148, 163, 184, 0.12); overflow: visible; }
.kml-feed-icon svg { width: 15px; height: 15px; }
.kml-feed-icon .kml-avatar { width: 100%; height: 100%; }
.kml-feed-body { min-width: 0; flex: 1; }
.kml-feed-top { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.kml-feed-text { margin: 0; font-size: 0.85rem; line-height: 1.35; color: var(--kml-text); flex: 1 1 auto; min-width: 55%; }
.kml-feed-taunt { flex: none; margin-left: auto; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.03em; text-transform: uppercase; color: #ff8a8a; white-space: nowrap; }
.kml-feed-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin-top: 3px; font-size: 0.68rem; color: var(--kml-text-muted); }
.kml-feed-meta span { white-space: nowrap; }
.kml-feed-reception .kml-feed-icon { color: #7cc4ff; background: rgba(56, 152, 236, 0.14); }
.kml-feed-run .kml-feed-icon { color: #93e0ac; background: rgba(52, 211, 153, 0.14); }
.kml-feed-turnover .kml-feed-icon { color: #ffb4b4; background: rgba(239, 68, 68, 0.16); }
.kml-feed-kick .kml-feed-icon { color: #d8b4fe; background: rgba(168, 85, 247, 0.14); }
.kml-feed-td { background: linear-gradient(90deg, rgba(245, 179, 1, 0.14), rgba(245, 179, 1, 0.02) 70%); }
.kml-feed-td .kml-feed-icon:not(:has(.kml-avatar)) { color: #1a1300; background: linear-gradient(110deg, #f5b301 0%, #ffe27a 45%, #f5b301 90%); }
.kml-feed-td .kml-feed-text { font-weight: 700; color: #fff; }
.kml-feed-item.is-negative { background: linear-gradient(90deg, rgba(239, 68, 68, 0.14), rgba(239, 68, 68, 0.02) 70%); }
.kml-feed-item.is-negative .kml-feed-icon:not(:has(.kml-avatar)) { color: #fff; background: linear-gradient(110deg, #dc2626 0%, #f87171 45%, #dc2626 90%); }
.kml-feed-item.is-negative .kml-feed-icon .kml-avatar { box-shadow: 0 0 0 2px #ef4444; border-radius: 50%; }
.kml-feed-item.is-negative .kml-feed-text { color: #ffcaca; }
.kml-feed-pts { font-weight: 800; }
.kml-feed-item:not(.is-negative) .kml-feed-pts { color: var(--kml-green); }
.kml-feed-item.is-negative .kml-feed-pts { color: #ff8a8a; }
@keyframes kml-feed-in { from { background-color: rgba(245, 179, 1, 0.22); } to { background-color: transparent; } }
.kml-feed-new { animation: kml-feed-in 2.4s ease-out; }
.kml-feed-td.kml-feed-new { animation: kml-feed-in 3.6s ease-out; }
@media (prefers-reduced-motion: reduce) { .kml-feed-live, .kml-feed-new { animation: none; } }
@media (max-width: 700px) { .kml-feed-item { padding: 8px 12px; gap: 10px; } .kml-feed-taunt { margin-left: 0; } }

/* Manager career profile (?manager= on the Managers page) */
.kml-roster { transition: transform 0.12s ease, border-color 0.12s ease; }
.kml-roster:hover { transform: translateY(-2px); border-color: var(--kml-gold); }
.kml-roster-head-link { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; color: inherit; text-decoration: none; }
.kml-roster-head-link:hover { text-decoration: none; }
.kml-roster-head-link:hover .kml-roster-title strong { color: var(--kml-gold-bright); }
.kml-mgr-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 4px 0 16px; }
.kml-mgr-avatar { width: 56px; height: 56px; font-size: 1.3rem; flex: none; }
.kml-mgr-title { min-width: 0; }
.kml-mgr-title h1 { margin: 0; font-size: 1.6rem; }
.kml-mgr-title p { margin: 2px 0 0; color: var(--kml-text-muted); font-size: 0.85rem; }
.kml-mgr-titles { display: inline-flex; align-items: center; gap: 5px; margin-left: auto; padding: 6px 12px; border-radius: 999px; background: rgba(245, 179, 1, 0.14); border: 1px solid rgba(245, 179, 1, 0.4); color: var(--kml-gold-bright); font-weight: 800; font-size: 0.85rem; }
.kml-mgr-titles svg { width: 16px; height: 16px; }
.kml-mgr-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; margin-bottom: 18px; }
.kml-mgr-highlights .kml-h2h-tile { min-height: 72px; }
.kml-mgr-highlights small { line-height: 1.3; }
.kml-mgr-roster { grid-template-columns: minmax(0, 420px); margin-bottom: 0; }
@media (max-width: 600px) { .kml-mgr-avatar { width: 44px; height: 44px; font-size: 1.05rem; } .kml-mgr-title h1 { font-size: 1.3rem; } .kml-mgr-titles { margin-left: 0; } }

.kml-mgr-body { display: flex; gap: 20px; align-items: flex-start; flex-wrap: wrap; }
.kml-mgr-roster-col { flex: none; }
.kml-mgr-side { flex: 1 1 260px; min-width: 260px; }
.kml-mgr-collapse { border: 1px solid var(--kml-border); border-radius: 8px; background: rgba(13, 20, 34, 0.86); margin-bottom: 10px; }
.kml-mgr-collapse summary {
    cursor: pointer; padding: 9px 12px; list-style: none; user-select: none;
    font-family: var(--kml-body-font); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;
    display: flex; align-items: center; justify-content: space-between;
    background: linear-gradient(90deg, rgba(245, 179, 1, 0.38), rgba(245, 179, 1, 0));
    color: var(--kml-gold-bright);
    border-radius: 8px 8px 0 0;
}
.kml-mgr-collapse:not([open]) summary { border-radius: 8px; }
.kml-subhead-spacer { visibility: hidden; }
.kml-mgr-collapse summary::-webkit-details-marker { display: none; }
.kml-mgr-collapse summary::after { content: '▸'; font-size: 0.75rem; color: var(--kml-text-dim); transition: transform 0.15s; }
.kml-mgr-collapse[open] summary::after { transform: rotate(90deg); }
.kml-mgr-collapse .kml-table-scroll { border: none; border-top: 1px solid var(--kml-border); border-radius: 0; }
.kml-table-compact { font-size: 0.76rem; }
.kml-table-compact thead th { padding: 6px 10px; font-size: 0.64rem; }
.kml-table-compact tbody td { padding: 6px 10px; }
.kml-table-compact .kml-avatar { width: 24px; height: 24px; font-size: 0.65rem; }
.kml-table-compact .kml-team-cell { gap: 8px; }
.kml-draft-callouts { display: flex; flex-wrap: wrap; gap: 16px; padding: 2px 12px 10px; border-top: 1px solid var(--kml-border); }
.kml-draft-callout { display: flex; flex-direction: column; gap: 2px; font-size: 0.78rem; padding-top: 8px; }
.kml-draft-callout strong { color: var(--kml-text); }
.kml-draft-callout-val { color: var(--kml-gold-bright); font-weight: 700; font-variant-numeric: tabular-nums; }
.kml-rivals-divider td { border-top: 2px solid #ef4444; }
.kml-season-picker { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 12px 0; }
.kml-season-picker button { font-family: inherit; background: none; cursor: pointer; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--kml-border); font-size: 0.72rem; font-weight: 700; color: var(--kml-text-muted); }
.kml-season-picker button:hover { border-color: var(--kml-gold); color: var(--kml-gold-bright); }
.kml-season-picker button.active { background: var(--kml-gold); border-color: var(--kml-gold); color: #1a1305; }
@media (max-width: 900px) { .kml-mgr-body { flex-direction: column; } .kml-mgr-side { min-width: 0; width: 100%; } }

/* Player card modal (assets/js/player-card.js) */
.kml-player-open { background: none; border: 0; margin: 0; padding: 0; font: inherit; color: inherit; cursor: pointer; text-align: left; }
.kml-player-open:hover { text-decoration: underline; color: var(--kml-gold-bright); }
.kml-pc-overlay { position: fixed; inset: 0; background: rgba(5, 8, 15, 0.78); z-index: 9999; display: flex; align-items: flex-start; justify-content: center; padding: 6vh 16px; overflow-y: auto; }
.kml-pc-modal { position: relative; width: 100%; max-width: 640px; background: var(--kml-bg); border: 1px solid var(--kml-border); border-radius: 14px; box-shadow: 0 24px 70px rgba(0, 0, 0, 0.55); overflow: hidden; }
.kml-pc-close { position: absolute; top: 12px; right: 12px; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--kml-border); background: rgba(13, 20, 34, 0.86); color: var(--kml-text-muted); font-size: 0.9rem; cursor: pointer; z-index: 1; }
.kml-pc-close:hover { color: var(--kml-text); border-color: var(--kml-gold); }
.kml-pc-head { display: flex; align-items: center; gap: 16px; padding: 20px 48px 18px 20px; background: linear-gradient(160deg, rgba(245, 179, 1, 0.1), transparent 65%); border-bottom: 1px solid var(--kml-border); min-height: 84px; }
.kml-pc-loading { align-items: center; justify-content: center; }
.kml-pc-photo { width: 84px; height: 84px; border-radius: 12px; object-fit: cover; background: var(--kml-surface); flex: none; }
.kml-pc-photo-blank { display: block; }
.kml-pc-headtext { min-width: 0; }
.kml-pc-league { display: inline-block; padding: 2px 10px; border-radius: 999px; background: rgba(245, 179, 1, 0.14); border: 1px solid rgba(245, 179, 1, 0.35); color: var(--kml-gold-bright); font-size: 0.62rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 4px; }
.kml-pc-name { margin: 4px 0 2px; font-family: var(--kml-heading-font); font-weight: 400; letter-spacing: 0.01em; font-size: 1.4rem; color: #fff; line-height: 1.15; }
.kml-pc-sub { margin: 0; font-size: 0.8rem; color: var(--kml-text-muted); }
.kml-pc-owner { margin: 3px 0 0; font-size: 0.8rem; color: var(--kml-gold-bright); font-weight: 700; }
.kml-pc-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(84px, 1fr)); gap: 8px; padding: 14px 20px; border-bottom: 1px solid var(--kml-border); }
.kml-pc-stat { display: flex; flex-direction: column; align-items: center; gap: 1px; text-align: center; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 8px; padding: 7px 6px; }
.kml-pc-stat-label { font-size: 0.56rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-pc-stat-big { font-size: 0.92rem; color: #fff; line-height: 1.25; }
.kml-pc-stat small { font-size: 0.62rem; color: var(--kml-text-dim); }
.kml-pc-tabs { display: flex; gap: 14px; padding: 10px 20px; border-bottom: 1px solid var(--kml-border); }
.kml-pc-tabs a { font-size: 0.78rem; font-weight: 700; color: var(--kml-gold-bright); text-decoration: none; cursor: pointer; }
.kml-pc-tabs a:hover { text-decoration: underline; }
.kml-pc-body { padding: 4px 20px 20px; max-height: 56vh; overflow-y: auto; }
.kml-pc-section { padding: 16px 0; border-bottom: 1px solid rgba(148, 163, 184, 0.12); scroll-margin-top: 8px; }
.kml-pc-section:last-child { border-bottom: 0; padding-bottom: 4px; }
.kml-pc-section h3 { margin: 0 0 10px; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-pc-news-head { margin: 0 0 6px; font-weight: 700; color: #fff; }
.kml-pc-news-head small { font-weight: 400; color: var(--kml-text-dim); margin-left: 6px; }
.kml-pc-news-body { margin: 0 0 10px; font-size: 0.85rem; line-height: 1.5; color: var(--kml-text); }
.kml-pc-news-link { font-size: 0.78rem; font-weight: 700; }
.kml-pc-vegas-game { margin: 0 0 10px; font-size: 0.78rem; color: var(--kml-text-dim); }
.kml-pc-vegas-tiles { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.kml-pc-vegas-tiles .kml-pc-stat { min-width: 92px; }
.kml-pc-vegas-table td:first-child { white-space: normal; }
.kml-pc-up { color: #4ade80; font-weight: 700; }
.kml-pc-down { color: #f87171; font-weight: 700; }
.kml-pc-flat { color: var(--kml-text-dim); }
.kml-pc-table-wrap { overflow-x: auto; margin: 0 -2px; }
.kml-pc-table { margin: 0; font-size: 0.74rem; }
.kml-pc-table th, .kml-pc-table td { padding: 5px 6px; white-space: nowrap; }
.kml-pc-log-future td { opacity: 0.6; }
.kml-pc-log-now { background: rgba(245, 158, 11, 0.08); }
.kml-pc-bye { color: var(--kml-text-dim); font-style: italic; }
.kml-pc-kick { display: block; color: var(--kml-text-dim); font-size: 0.62rem; font-weight: 400; }
.kml-pc-icon { display: inline-flex; vertical-align: -2px; color: var(--kml-text-dim); }
.kml-pc-icon svg { width: 13px; height: 13px; }
.kml-pc-icon.kml-wx-rain { color: #7cc4ff; }
.kml-pc-icon.kml-wx-snow { color: #dbeafe; }
.kml-pc-icon.kml-wx-wind { color: #b6c2d4; }
.kml-pc-icon.kml-wx-cold { color: #93c5fd; }
.kml-pc-icon.kml-wx-heat { color: #fdba74; }
.kml-pc-grade-good { color: #4ade80; font-weight: 800; }
.kml-pc-grade-ok { color: #facc15; font-weight: 800; }
.kml-pc-grade-bad { color: #f87171; font-weight: 800; }
.kml-pc-tx { list-style: none; margin: 0; padding: 0; }
.kml-pc-tx-row { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid rgba(148, 163, 184, 0.1); font-size: 0.82rem; }
.kml-pc-tx-row:last-child { border-bottom: 0; }
.kml-pc-tx-date { flex: none; color: var(--kml-text-dim); font-size: 0.72rem; white-space: nowrap; }
.kml-pc-tx-detail { text-align: right; color: var(--kml-text); }
.kml-pc-tx-drafted .kml-pc-tx-detail { color: var(--kml-gold-bright); }
.kml-pc-tx-dropped .kml-pc-tx-detail { color: var(--kml-text-dim); }
.kml-pc-tx-trade-row { flex-direction: column; align-items: stretch; gap: 6px; }
.kml-pc-trade { display: flex; flex-wrap: wrap; gap: 12px 20px; width: 100%; }
.kml-pc-trade-side { flex: 1 1 150px; min-width: 130px; }
.kml-pc-trade-who { display: flex; align-items: center; gap: 6px; margin-bottom: 5px; font-size: 0.74rem; font-weight: 700; color: var(--kml-text); }
.kml-pc-trade-who .kml-avatar { width: 20px; height: 20px; font-size: 0.62rem; border-width: 1px; }
.kml-pc-trade-players { display: flex; flex-wrap: wrap; gap: 4px; }
.kml-pc-tx-chip { display: inline-flex; align-items: baseline; gap: 3px; padding: 2px 7px; border-radius: 6px; background: rgba(148, 163, 184, 0.08); font-size: 0.72rem; }
.kml-pc-tx-chip small { color: var(--kml-text-dim); font-size: 0.6rem; }
.kml-pc-tx-hl { background: rgba(245, 158, 11, 0.2); border: 1px solid var(--kml-gold); font-weight: 800; }
.kml-pc-tx-hl small { color: var(--kml-gold-bright); }
@media (max-width: 600px) {
    .kml-pc-overlay { padding: 0; align-items: flex-end; }
    .kml-pc-modal { max-width: none; max-height: 92vh; border-radius: 14px 14px 0 0; overflow-y: auto; }
    .kml-pc-head { padding: 16px 44px 14px 16px; }
    .kml-pc-photo { width: 64px; height: 64px; }
    .kml-pc-stats { padding: 12px 16px; }
    .kml-pc-tabs { padding: 8px 16px 0; }
    .kml-pc-body { padding: 14px 16px 18px; max-height: none; }
    .kml-pc-table { font-size: 0.68rem; }
    .kml-pc-table th, .kml-pc-table td { padding: 4px 5px; }
    .kml-wx-w { display: none; }
}
.kml-trade-who { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; }
a.kml-bgame { display: block; color: inherit; text-decoration: none; }
a.kml-bgame:hover { border-color: var(--kml-gold); text-decoration: none; }
.kml-owner-link { display: inline-flex; align-items: center; gap: 6px; }
.kml-tr-who { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }

/* Scoreboard matchup box score: slot on the outer edges, photo + name with TEAM POS under it, game in its own column */
.kml-sb-box { font-size: 0.74rem; table-layout: fixed; width: 100%; }
.kml-sb-box th { font-size: 0.62rem; }
/* The Proj / Pts headers are no wider than the numbers under them: smaller type, no letter-spacing, tighter side padding. */
.kml-sb-box thead th.kml-num { font-size: 0.54rem; letter-spacing: 0; }
/* Every numeric column has the same 8px each side; the left team's are right-aligned and the right team's left-aligned, so the two sides mirror each other around the centre line. */
.kml-sb-box td:nth-child(n+4):nth-child(-n+11), .kml-sb-box th:nth-child(n+4):nth-child(-n+11) { padding-left: 8px; padding-right: 8px; }
.kml-sb-box .kml-sb-total td { font-size: 0.8rem; }
/* Fixed, mirrored widths: everything but the two player columns is the same size on both sides, so the sides always come out even. */
.kml-sb-box th:nth-child(1), .kml-sb-box th:nth-child(14) { width: 34px; }
.kml-sb-box th:nth-child(3), .kml-sb-box th:nth-child(12) { width: 136px; }
.kml-sb-box th:nth-child(4), .kml-sb-box th:nth-child(11) { width: 72px; }
.kml-sb-box th:nth-child(5), .kml-sb-box th:nth-child(6), .kml-sb-box th:nth-child(7), .kml-sb-box th:nth-child(8), .kml-sb-box th:nth-child(9), .kml-sb-box th:nth-child(10) { width: 52px; }
/* The two player columns split whatever's left, and they're never squeezed below what a long name plus its tag and icon need: the table scrolls sideways before it cuts a name. */
@media (min-width: 701px) { .kml-sb-box { min-width: 1300px; } }
.kml-sb-box td:nth-child(8), .kml-sb-box th:nth-child(8) { border-left: 2px solid var(--kml-border); }
.kml-sb-box.kml-light td:nth-child(8), .kml-sb-box.kml-light th:nth-child(8) { border-left-color: #8895a7; }
.kml-sb-box td.kml-vg-open, .kml-sb-box th.kml-vg-open { text-align: center; padding-left: 2px; padding-right: 2px; }
.kml-sb-box tbody tr:first-child td { background: none; }
.kml-sb-box .kml-sb-slot { font-size: 0.62rem; }
.kml-sb-box .kml-sb-p2 { overflow: visible; }
.kml-sb-p2 .kml-sb-pline { display: flex; align-items: center; gap: 8px; min-width: 0; }
.kml-sb-p2.kml-right .kml-sb-pline { justify-content: flex-end; text-align: right; }
.kml-sb-photo { flex: none; width: 34px; height: 34px; border-radius: 50%; background: var(--kml-card); border: 1px solid var(--kml-border); overflow: hidden; display: inline-flex; align-items: flex-end; justify-content: center; }
.kml-sb-photo img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.kml-sb-ptext { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; }
.kml-sb-pname { font-size: 0.8rem; font-weight: 600; display: flex; align-items: center; gap: 4px; min-width: 0; }
/* The name, status tag and news icon always show in full. */
.kml-sb-pname .kml-player-open:not(.kml-news-icon) { flex: none; white-space: nowrap; }
.kml-sb-pname .kml-injury, .kml-sb-pname .kml-news-icon { flex: none; margin-left: 0; }
.kml-sb-p2.kml-right .kml-sb-pname { justify-content: flex-end; }
.kml-sb-psub { margin: 0; font-size: 0.62rem; color: var(--kml-text-dim); letter-spacing: 0.04em; }
.kml-sb-box .kml-sb-psub { margin: 0; }
.kml-sb-box .kml-sb-pname { font-size: 0.72rem; }
.kml-sb-gamecell { text-align: left; white-space: nowrap; font-size: 0.66rem; line-height: 1.25; color: var(--kml-text-dim); }
.kml-sb-gamecell.kml-right { text-align: right; }
.kml-sb-gamecell .kml-sb-vs { font-weight: 700; color: var(--kml-text-muted); }
.kml-sb-gamecell .kml-sb-when { margin-left: 6px; }
.kml-mt-box .kml-sb-gamecell .kml-sb-badges { display: inline-flex; vertical-align: middle; margin: 0 0 0 5px; } /* My Team / manager rosters: the badges ride on the kickoff line */
.kml-wx.kml-wx-icon { padding: 2px; }
.kml-wx.kml-wx-icon svg { width: 12px; height: 12px; }
.kml-sb-gamecell .kml-sb-odds { display: block; margin-top: 4px; font-size: 0.6rem; font-weight: 700; color: #475569; letter-spacing: 0.01em; }
.kml-sb-bets .kml-sb-odds { display: block; margin: 0; }
.kml-gl-text { display: block; font-size: 0.68rem; font-weight: 700; line-height: 1.35; color: #1e293b; white-space: nowrap; }
.kml-gl-pill { display: inline-block; padding: 0 6px; border-radius: 999px; background: #c8d2de; border: 1px solid #9aa8ba; color: #0f172a; font-size: 0.6rem; font-weight: 700; line-height: 1.5; }
.kml-sb-badges { display: flex; justify-content: flex-start; align-items: center; gap: 4px; margin-top: 3px; }
.kml-sb-gamecell.kml-right .kml-sb-badges { justify-content: flex-end; }
.kml-sb-box .kml-sb-projcell, .kml-sb-box .kml-sb-ptscell, .kml-sb-box .kml-sb-rankcell { font-size: 0.72rem; }
@media (max-width: 700px) {
    .kml-sb-photo { width: 24px; height: 24px; }
    .kml-sb-p2 .kml-sb-pline { gap: 5px; }
    .kml-sb-pname { font-size: 0.7rem; }
}
.kml-sb-box td:nth-child(n+4):nth-child(-n+7), .kml-sb-box th:nth-child(n+4):nth-child(-n+7) { text-align: right; }
/* Left team's bets / proj / pts hug the right edge of their cells. */
.kml-sb-box td:nth-child(n+4):nth-child(-n+7) .kml-gl-text { text-align: right; }
.kml-sb-box .kml-sb-vprojcell { font-size: 0.72rem; }
.kml-vproj-btn { background: none; border: 0; padding: 0; font: inherit; font-weight: 700; color: #1d4ed8; cursor: pointer; }
.kml-vproj-btn:hover, .kml-vproj-btn:focus-visible { text-decoration: underline; }
.kml-sb-vprojcell.is-approx .kml-vproj-btn { font-weight: 400; font-style: italic; color: #64748b; }
td.kml-sb-vprojcell { color: #1d4ed8; font-weight: 700; }
.kml-sb-total td.kml-sb-vprojcell { color: #1d4ed8; }

/* Trades list: one player per line with a headshot; Thursday-to-Wednesday week dividers */
.kml-tr-card .kml-tr-players { flex-direction: column; gap: 6px; }
.kml-tr-lp { display: flex; align-items: center; gap: 8px; min-width: 0; }
.kml-tr-lp .kml-sb-photo { width: 30px; height: 30px; }
.kml-tr-lptext { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; }
.kml-tr-lptext .kml-tr-pname { font-size: 0.82rem; font-weight: 600; }
.kml-tr-lptext small { color: var(--kml-text-dim); font-size: 0.62rem; letter-spacing: 0.04em; margin: 0; }
.kml-tr-weekhead { margin: 18px 0 0; padding-top: 14px; border-top: 2px solid var(--kml-gold); font-family: var(--kml-body-font); font-size: 0.8rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-gold-bright); }
.kml-tr-list > .kml-tr-weekhead:first-child { margin-top: 0; padding-top: 0; border-top: 0; }

/* Trades list card: manager (and what the trade did to his power rating) on the outside edges, players in the middle */
.kml-tr-card .kml-tr-sides { display: flex; align-items: flex-start; gap: 14px; }
.kml-tr-card .kml-tr-side { flex: 1; min-width: 0; display: flex; align-items: flex-start; gap: 14px; }
.kml-tr-card .kml-tr-side.is-right { flex-direction: row-reverse; text-align: right; }
.kml-tr-card .kml-tr-side .kml-tr-players { flex: 1; min-width: 0; }
.kml-tr-card .kml-tr-side.is-right .kml-tr-lp { flex-direction: row-reverse; }
.kml-tr-card .kml-tr-swap { align-self: center; flex: none; }
.kml-tr-mgr { flex: none; width: 92px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 3px; }
.kml-tr-mgr .kml-avatar { width: 38px; height: 38px; }
.kml-tr-mname { font-weight: 700; color: #fff; font-size: 0.82rem; line-height: 1.2; overflow-wrap: anywhere; }
.kml-tr-power { font-size: 0.78rem; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--kml-text-muted); }
.kml-tr-power small { font-size: 0.56rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-tr-power.is-up { color: var(--kml-green); }
.kml-tr-power.is-down { color: #f87171; }
@media (max-width: 700px) {
    .kml-tr-card .kml-tr-sides { flex-direction: column; }
    .kml-tr-card .kml-tr-side, .kml-tr-card .kml-tr-side.is-right { flex-direction: row; text-align: left; width: 100%; }
    .kml-tr-card .kml-tr-side.is-right .kml-tr-lp { flex-direction: row; }
    .kml-tr-mgr { width: 72px; }
}

/* News icon after a player's name (opens his player card) */
.kml-news-icon { display: inline-flex; align-items: center; vertical-align: middle; flex: none; margin-left: 4px; padding: 0; background: none; border: 0; cursor: pointer; color: var(--kml-text-dim); }
.kml-news-icon .kml-icon { width: 13px; height: 13px; }
.kml-news-icon:hover { color: var(--kml-gold-bright); text-decoration: none; }
@media (max-width: 700px) {
    /* Little room on a phone: let a long name wrap rather than cut it off. */
    .kml-sb-p2 { max-width: none; overflow: visible; text-overflow: clip; white-space: normal; }
    .kml-sb-pname { flex-wrap: wrap; }
    .kml-sb-pname .kml-player-open:not(.kml-news-icon) { white-space: normal; text-align: left; }
}

/* TRIAL: the softer light skin (light background, dark text) for a lineup table — add class kml-light to a table to use it, delete this block to go back. Used by the Scoreboard matchup table and My Team. */
.kml-table-scroll:has(.kml-light) { background: #dde3ea; border-color: #b6c0cd; }
.kml-light {
    --kml-surface: #c9d2dd; --kml-card: #c9d2dd; --kml-border: #b6c0cd;
    --kml-text: #0f172a; --kml-text-muted: #2b3a4f; --kml-text-dim: #526074;
    --kml-gold-bright: #92400e; --kml-green: #166534;
    background: #dde3ea; color: #0f172a;
}
.kml-light thead th { background: #c9d2dd; color: #3b4a5f; border-bottom-color: #8895a7; }
.kml-light tbody td { background: #dde3ea; color: #0f172a; border-bottom-color: #c4ccd8; }
.kml-light tbody tr:hover td { background: #d3dae3; }
.kml-light tbody tr:first-child td { background: #dde3ea; }
.kml-light .kml-sb-slot { background: #d0d8e2; color: #3b4a5f; }
.kml-light .kml-sb-divider td, .kml-light tr.kml-sb-divider td { background: #c9d2dd; color: #3b4a5f; }
.kml-light .kml-sb-total td { background: #d0d8e2; border-top-color: #8895a7; }
/* Bench players read the same as starters — the divider row already says who's on the bench. */
.kml-light .is-bench td { opacity: 1; }
.kml-light .kml-sb-pname .kml-player-open { color: #0f172a; }
.kml-light .kml-player-open:hover { color: #92400e; }
.kml-light .kml-sb-psub, .kml-light .kml-sb-gamecell { color: #526074; }
.kml-light .kml-sb-gamecell .kml-sb-vs { color: #1e293b; }
.kml-light .kml-sb-gamecell .kml-sb-vs.is-good { color: #166534; }
.kml-light .kml-sb-gamecell .kml-sb-vs.is-bad { color: #b91c1c; }
.kml-light .kml-sb-photo { background: #c9d2dd; border-color: #b6c0cd; }
.kml-light .kml-sb-ptscell.has-pts { color: #166534; }
.kml-light .kml-news-icon { color: #526074; }
.kml-light .kml-news-icon:hover { color: #92400e; }
.kml-light td:nth-child(7), .kml-light th:nth-child(7) { border-left-color: #8895a7; }
/* Pills keep their meaning on the light background: a full-strength border and text in the pill's color over a light tint of it. */
.kml-light .kml-facing { color: #b91c1c; background: rgba(220, 38, 38, 0.12); border: 1px solid #dc2626; }
.kml-light .kml-wx { border: 1px solid currentColor; }
.kml-light .kml-wx-rain { color: #1559a8; background: rgba(29, 111, 209, 0.13); }
.kml-light .kml-wx-snow { color: #3a5f94; background: rgba(74, 120, 184, 0.14); }
.kml-light .kml-wx-wind { color: #475569; background: rgba(71, 85, 105, 0.13); }
.kml-light .kml-wx-cold { color: #1e56a0; background: rgba(37, 99, 168, 0.13); }
.kml-light .kml-wx-heat { color: #b8400c; background: rgba(194, 65, 12, 0.13); }
.kml-light .kml-wx svg { stroke: currentColor; }

/* Slot columns on the outer edges: same background in every row (the first row used to pick up the body color), D/ST and FLEX on one line and centered. */
.kml-light tbody tr td.kml-sb-slot, .kml-light tbody tr:first-child td.kml-sb-slot, .kml-light tbody tr:hover td.kml-sb-slot { background: #d0d8e2; color: #3b4a5f; }
.kml-light .kml-sb-slot { padding: 0 2px; white-space: nowrap; text-align: center; letter-spacing: 0.03em; text-indent: 0.03em; }

/* My Team roster: one full-width table, starters then bench, ESPN-style columns */
.kml-mt-box { width: 100%; font-size: 0.74rem; }
@media (min-width: 701px) { .kml-mt-box { min-width: 1060px; } }
.kml-mt-box th { white-space: nowrap; font-size: 0.62rem; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(1) { width: 44px; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(3) { width: 142px; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(n+4) { width: 54px; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(5) { width: 60px; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(7) { width: 60px; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(8) { width: 88px; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(9) { width: 42px; }
.kml-mt-box thead tr:nth-child(2) th:nth-child(10) { width: 40px; }
.kml-mt-box .kml-mt-groups th { text-align: center; letter-spacing: 0.1em; }
.kml-mt-box .kml-mt-groups th:first-child { text-align: left; }
.kml-mt-box th.kml-mt-grp, .kml-mt-box tbody td:nth-child(4), .kml-mt-box tbody td:nth-child(8), .kml-mt-box tbody td:nth-child(11) { border-left: 1px solid #8895a7; }
.kml-mt-box tbody td.kml-num, .kml-mt-box thead th.kml-num { text-align: right; }
.kml-mt-box .kml-mt-oprk.is-good { color: #166534; font-weight: 700; }
.kml-mt-box .kml-mt-oprk.is-bad { color: #b91c1c; font-weight: 700; }
.kml-mt-box .kml-vg small.kml-vg-type { display: block; font-size: 0.54rem; line-height: 1.1; font-weight: 400; color: #64748b; letter-spacing: 0.02em; }
.kml-mt-box .kml-vg small.kml-vg-delta { display: inline; font-size: 0.62rem; font-weight: 700; color: inherit; margin-left: 2px; }
.kml-mt-box td.kml-vg-open, .kml-mt-box th.kml-vg-open { text-align: center; padding-left: 2px; padding-right: 2px; }
.kml-vg-btn { display: inline-flex; padding: 2px; border: 0; background: none; cursor: pointer; border-radius: 6px; line-height: 0; }
.kml-vg-btn img { width: 22px; height: 22px; display: block; }
.kml-vg-btn:hover, .kml-vg-btn:focus-visible { background: rgba(15, 23, 42, 0.08); }
.kml-mt-box .kml-mt-vproj { font-weight: 700; color: #1d4ed8; }
.kml-mt-box .kml-mt-vproj.is-approx { font-weight: 400; font-style: italic; color: #64748b; }
.kml-mt-box .kml-vg.is-up { color: #166534; }
.kml-mt-box .kml-vg.is-down { color: #b91c1c; }
.kml-mt-box .kml-sb-divider td { text-align: left; }
@media (max-width: 700px) {
    table[data-hide~="13"] > thead > tr > :nth-child(13), table[data-hide~="13"] > tbody > tr > :nth-child(13),
    table[data-hide~="14"] > thead > tr > :nth-child(14), table[data-hide~="14"] > tbody > tr > :nth-child(14),
    table[data-hide~="15"] > thead > tr > :nth-child(15), table[data-hide~="15"] > tbody > tr > :nth-child(15) { display: none; }
    .kml-mt-box .kml-mt-groups th:nth-child(n+3) { display: none; }
}

/* Manager page: the roster table runs the full width, with the season results / head-to-head / drafts bars stacked below it */
.kml-mgr-below { margin-top: 20px; }
.kml-mgr-below .kml-mgr-side { min-width: 0; }
.kml-table-scroll:has(.kml-mt-box) { margin-bottom: 24px; }

/* Name with its status tag and news icon right beside it (not pushed to the far edge): the name shortens first if the row is tight. */
.kml-p-who { flex: 1; min-width: 0; display: flex; align-items: center; gap: 4px; }
.kml-p-who .kml-rname, .kml-p-who .kml-trade-pname { flex: 0 1 auto; }
.kml-p-who .kml-injury, .kml-p-who .kml-news-icon { flex: none; margin-left: 0; }

/* Standings: icons for champion / runner-up / most points / highest single-week score, streak and diff colors */
.kml-st-box { font-size: 0.82rem; }
.kml-st-box .kml-team-cell { display: inline-flex; vertical-align: middle; }
.kml-st-icons { display: inline-flex; align-items: center; gap: 4px; margin-left: 10px; vertical-align: middle; }
.kml-st-icon { display: inline-flex; }
.kml-st-icon .kml-icon { width: 17px; height: 17px; }
.kml-st-icon-champ { color: #b7791f; }
.kml-st-icon-champ .kml-icon { fill: rgba(183, 121, 31, 0.28); }
.kml-st-icon-runner { color: #64748b; }
.kml-st-icon-points { color: #2563eb; }
.kml-st-icon-high { color: #d97706; }
.kml-st-icon-high .kml-icon { fill: rgba(217, 119, 6, 0.3); }
.kml-light tbody tr.kml-st-champ td { background: #ecdcae; }
.kml-light .kml-st-up { color: #166534; font-weight: 700; }
.kml-light .kml-st-down { color: #b91c1c; font-weight: 700; }
.kml-st-box td.kml-num, .kml-st-box th.kml-num { text-align: right; }
.kml-st-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 12px 0 4px; font-size: 0.78rem; color: var(--kml-text-muted); }
.kml-st-legend span { display: inline-flex; align-items: center; gap: 6px; }
.kml-st-legend .kml-st-icon-champ { color: #fbbf24; }
.kml-st-legend .kml-st-icon-runner { color: #cbd5e1; }
.kml-st-legend .kml-st-icon-points { color: #60a5fa; }
.kml-st-legend .kml-st-icon-high { color: #fbbf24; }

/* PRK (avg): the average points per game sits in smaller type next to the position rank */
.kml-sb-avg { font-size: 0.82em; font-weight: 500; letter-spacing: 0; color: var(--kml-text-dim); white-space: nowrap; margin-left: 1px; }
.kml-sb-rankcell .kml-sb-avg { font-size: 0.64rem; }
.kml-sb-box th .kml-sb-avg { font-size: 0.54rem; margin-left: 2px; text-transform: none; }

/* Game of the Week / Keg Watch badges: the artwork hangs off the top right corner of a matchup's box. The box gets a right-hand gutter
   (via :has) for the part of the badge that overlaps it, so it never covers a name, score or percentage. */
.kml-game, .kml-sb-card, .kml-sb-mini, .kml-sb-detail-head, .kml-rc-score, .kml-mt-matchup { position: relative; }
.kml-feat { position: absolute; z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 2px; pointer-events: none; filter: drop-shadow(0 3px 5px rgba(0, 0, 0, 0.5)); }
.kml-feat-img { display: block; width: 100%; height: auto; }

/* Every matchup card has the same inner spacing; the Game of the Week / Keg Watch badge hangs off the top-right corner (the grid's column gap leaves it room) instead of eating into its card. */
.kml-sb-card { padding-right: 24px; }
.kml-sb-grid { column-gap: 32px; }
/* A finished week has no projection column, so don't reserve one: the names get the room. */
.kml-sb-team:has(> .kml-sb-proj:empty) { grid-template-columns: auto 1fr auto 44px; }
.kml-sb-team > .kml-sb-proj:empty { display: none; }
.kml-sb-card > .kml-feat { top: -18px; right: -40px; width: 60px; }
@media (max-width: 700px) {
    .kml-sb-card { padding-right: 14px; }
    .kml-sb-card:has(> .kml-feat) { padding-right: 70px; }
    .kml-sb-card > .kml-feat { top: -14px; right: -12px; width: 66px; }
}

.kml-sb-mini:has(> .kml-feat) { padding-right: 52px; }
.kml-sb-mini > .kml-feat { top: -10px; right: -8px; width: 48px; }

.kml-sb-detail-head:has(> .kml-feat) { padding-right: 78px; }
.kml-sb-detail-head > .kml-feat { top: -16px; right: -4px; width: 74px; }
/* On the matchup view the badge sits between the two teams, in a column of its own (on a phone, where the teams stack, it stays in the corner). */
@media (min-width: 701px) {
    .kml-sb-detail-head:has(> .kml-feat) { padding-right: 0; grid-template-columns: 1fr 84px 1fr; gap: 0 10px; }
    .kml-sb-detail-head:has(> .kml-feat) > .kml-feat { position: static; grid-column: 2; grid-row: 1; align-self: center; justify-self: center; width: 74px; margin: -18px 0; }
    .kml-sb-detail-head:has(> .kml-feat) > .kml-sb-dteam.is-left { grid-column: 1; grid-row: 1; }
    .kml-sb-detail-head:has(> .kml-feat) > .kml-sb-dteam.is-right { grid-column: 3; grid-row: 1; }
}

.kml-rc-score:has(> .kml-feat) { padding-right: 58px; }
.kml-rc-score > .kml-feat { top: -10px; right: -8px; width: 52px; }

.kml-mt-matchup:has(> .kml-feat) { padding-right: 78px; }
.kml-mt-matchup > .kml-feat { top: -14px; right: -10px; width: 66px; }

.kml-game:has(> .kml-feat) { padding-right: 54px; }
.kml-game > .kml-feat { top: 50%; right: -2px; width: 46px; transform: translateY(-50%); }
.kml-game:first-child > .kml-feat { top: 50%; }

/* Admin picker above the Scoreboard grid */
.kml-feat-admin { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin: 0 0 16px; padding: 10px 14px; border: 1px dashed var(--kml-gold); border-radius: 10px; background: rgba(245, 158, 11, 0.06); font-size: 0.82rem; }
.kml-feat-admin-title small { color: var(--kml-text-dim); font-weight: 400; }
.kml-feat-admin-field { display: inline-flex; align-items: center; gap: 7px; color: var(--kml-text-muted); }
.kml-feat-admin-field select { max-width: 260px; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--kml-border); background: var(--kml-surface); color: var(--kml-text); font: inherit; }
.kml-feat-admin-save { padding: 5px 16px; border-radius: 6px; border: 0; background: var(--kml-gold); color: #1a1305; font-weight: 800; cursor: pointer; }
.kml-feat-admin-img { width: 30px; height: auto; flex: none; }

/* Standings: Game of the Week / Keg Watch badges next to whoever has been in the most of each */
.kml-st-badge { width: 28px; height: auto; vertical-align: middle; }
.kml-st-badge.is-legend { width: 26px; margin: 0; }

/* Homepage: the week's Game of the Week and Keg Watch pulled out of Upcoming Games into their own boxes, each with its own look.
   The badge hangs off a top corner (left for Game of the Week, right for Keg Watch) over a strip that only holds the "View matchup" link, so the team rows below get the box's full width. */
.kml-feat-box { position: relative; margin: 56px 0 18px; border-radius: 16px; }
.kml-feat-box-link { display: flex; flex-direction: column; gap: 5px; padding: 12px 18px 14px; border-radius: inherit; color: #fff; text-decoration: none; }
.kml-feat-box-link:hover { text-decoration: none; }
.kml-feat-box-badge { position: absolute; top: -50px; width: 98px; height: auto; z-index: 2; filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.55)); transition: transform 0.2s; }
.kml-feat-box-link:hover .kml-feat-box-badge { transform: scale(1.05) rotate(-2deg); }
.kml-feat-box-top { min-height: 34px; display: flex; align-items: center; justify-content: flex-end; }
.kml-feat-box-go { font-size: 0.7rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.9; }
.kml-feat-box .kml-game-team { color: rgba(255, 255, 255, 0.8); font-size: 0.9rem; }
.kml-feat-box .kml-game-team.is-fav { color: #fff; }
.kml-feat-box .kml-game-team small { color: rgba(255, 255, 255, 0.6); flex: none; }
.kml-feat-box .kml-game-team .kml-avatar { width: 26px; height: 26px; }
/* Names show in full: they wrap rather than get cut off. */
.kml-feat-box .kml-game-name { white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.15; }

/* Game of the Week: royal blue and gold, badge on the top left, a gold glow */
.kml-feat-box-gotw { background: radial-gradient(120% 140% at 0% 0%, #2150b8 0%, #12306b 45%, #0a1a40 100%); border: 2px solid #fbbf24; box-shadow: 0 0 0 1px rgba(251, 191, 36, 0.35), 0 10px 34px rgba(33, 80, 184, 0.45), inset 0 0 40px rgba(251, 191, 36, 0.08); }
.kml-feat-box-gotw .kml-feat-box-badge { left: -14px; }
.kml-feat-box-gotw .kml-feat-box-go { color: #fcd34d; }
.kml-feat-box-gotw .kml-game-team.is-fav strong { color: #fcd34d; }

/* Keg Watch: dark amber fading to near-black, badge on the top right (it tips to the right on hover) */
.kml-feat-box-keg { background: linear-gradient(160deg, #6b3a08 0%, #35200a 45%, #170e05 100%); border: 2px solid #f59e0b; box-shadow: 0 10px 28px rgba(245, 158, 11, 0.22), inset 0 0 36px rgba(245, 158, 11, 0.07); }
.kml-feat-box-keg .kml-feat-box-badge { right: -14px; }
.kml-feat-box-keg .kml-feat-box-link:hover .kml-feat-box-badge { transform: scale(1.05) rotate(2deg); }
.kml-feat-box-keg .kml-feat-box-top { justify-content: flex-start; }
.kml-feat-box-keg .kml-feat-box-go { color: #fbbf24; }
.kml-feat-box-keg .kml-game-team.is-fav strong { color: #fde68a; }
@media (max-width: 700px) { .kml-feat-box-badge { width: 82px; top: -42px; } .kml-feat-box { margin-top: 48px; } }

/* My Team / manager roster table: smaller data type, and room between the last column and the table's edge */
table.kml-mt-box { font-size: 0.7rem; }
.kml-mt-box tbody td { font-size: 0.7rem; }
.kml-mt-box .kml-sb-projcell, .kml-mt-box .kml-sb-ptscell, .kml-mt-box .kml-sb-rankcell { font-size: 0.7rem; }
.kml-mt-box .kml-sb-pname { font-size: 0.76rem; }
.kml-mt-box .kml-sb-psub, .kml-mt-box .kml-sb-gamecell { font-size: 0.62rem; }
.kml-mt-box th:last-child, .kml-mt-box td:last-child { padding-right: 20px; }

/* ---- Week N NFL: the slate, grouped by day and kickoff ---- */
.kml-nfl-day { margin: 0 0 26px; }
.kml-nfl-dayhead { margin: 0 0 12px; padding-bottom: 6px; border-bottom: 2px solid var(--kml-gold, #f59e0b); font-size: 1.15rem; letter-spacing: 0.04em; }
.kml-nfl-slot { margin: 0 0 18px; }
.kml-nfl-time { margin: 0 0 8px; font-size: 0.72rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-nfl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(440px, 1fr)); gap: 14px; }
.kml-nfl-game { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; background: rgba(13, 20, 34, 0.86); border: 1px solid var(--kml-border); border-radius: 12px; min-width: 0; }
.kml-nfl-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.kml-nfl-team { display: flex; align-items: center; gap: 10px; min-width: 0; font-size: 0.95rem; }
.kml-nfl-team.is-home { flex-direction: row; justify-content: flex-end; text-align: right; }
.kml-nfl-logo { width: 38px; height: 38px; object-fit: contain; flex: none; }
.kml-nfl-at { color: var(--kml-text-dim); font-weight: 800; }
.kml-nfl-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.kml-nfl-tag { padding: 2px 9px; border-radius: 999px; font-size: 0.64rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; border: 1px solid var(--kml-border); color: var(--kml-text-muted); }
.kml-nfl-tag.is-time { color: #fff; border-color: rgba(148, 163, 184, 0.5); background: rgba(148, 163, 184, 0.12); }
.kml-nfl-tag.is-prime { background: linear-gradient(110deg, #f5b301, #ffe27a); color: #1a1300; border-color: transparent; }
.kml-nfl-tag.is-live { background: #dc2626; color: #fff; border-color: transparent; }
.kml-nfl-tag.is-fire { color: #fff; border-color: transparent; background: linear-gradient(110deg, #dc2626, #f97316); }
.kml-nfl-tag.is-hot { color: #fb923c; border-color: #fb923c; }
.kml-nfl-tag.is-cold { color: #93c5fd; border-color: #93c5fd; }
.kml-nfl-tag.is-warn { color: #f87171; border-color: #f87171; }
.kml-nfl-tag.is-even { color: #a7f3d0; border-color: #34d399; }
.kml-nfl-facts { display: grid; grid-template-columns: 1fr 1.4fr; gap: 10px; }
.kml-nfl-fact { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; background: rgba(148, 163, 184, 0.07); border-radius: 8px; min-width: 0; }
.kml-nfl-factlabel { font-size: 0.58rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-nfl-factval { font-size: 0.82rem; color: #fff; display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.kml-nfl-fact .kml-nfl-factval:has(.kml-wx-icon-lg) { flex-wrap: nowrap; gap: 7px; }
.kml-nfl-wxtext { min-width: 0; }
.kml-nfl-sub { font-size: 0.68rem; color: var(--kml-text-muted); }
.kml-nfl-dim { color: var(--kml-text-dim); font-weight: 400; }
.kml-wx-icon-lg { display: inline-flex; flex: none; width: 18px; height: 18px; }
.kml-wx-icon-lg svg { width: 18px; height: 18px; }
.kml-wx-icon-lg.kml-wx-rain { color: #7cc4ff; } .kml-wx-icon-lg.kml-wx-snow { color: #dbeafe; } .kml-wx-icon-lg.kml-wx-wind { color: #b6c2d4; }
.kml-wx-icon-lg.kml-wx-cold { color: #93c5fd; } .kml-wx-icon-lg.kml-wx-heat { color: #fdba74; } .kml-wx-icon-lg.kml-wx-dome, .kml-wx-icon-lg.kml-wx-retract { color: var(--kml-text-muted); }
.kml-nfl-stakes { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.kml-nfl-chip { padding: 1px 9px; border-radius: 999px; font-size: 0.72rem; border: 1px solid var(--mgr); color: #fff; background: color-mix(in srgb, var(--mgr) 18%, transparent); }
.kml-nfl-chip b { font-weight: 800; }
.kml-nfl-props { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; border-top: 1px solid var(--kml-border); }
.kml-nfl-prop { display: grid; grid-template-columns: minmax(150px, 1.1fr) 2fr auto; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid rgba(148, 163, 184, 0.12); }
.kml-nfl-prop:last-child { border-bottom: 0; }
.kml-nfl-pwho { display: flex; align-items: center; gap: 8px; min-width: 0; }
.kml-nfl-pname { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; font-size: 0.82rem; font-weight: 600; }
.kml-nfl-pname small { font-size: 0.62rem; font-weight: 400; color: var(--kml-text-dim); }
.kml-nfl-mgr { color: var(--mgr); font-weight: 700; }
.kml-nfl-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.kml-nfl-pchip { display: inline-flex; align-items: baseline; gap: 4px; padding: 2px 8px; border-radius: 6px; background: rgba(148, 163, 184, 0.1); font-size: 0.74rem; }
.kml-nfl-pchip small { font-size: 0.58rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--kml-text-dim); }
.kml-nfl-pchip b { color: #fff; }
.kml-nfl-pchip i { font-style: normal; font-size: 0.62rem; font-weight: 800; }
.kml-nfl-pchip i.is-up { color: #4ade80; } .kml-nfl-pchip i.is-down { color: #f87171; }
.kml-nfl-vproj { display: inline-flex; flex-direction: column; align-items: center; padding: 3px 9px; border-radius: 8px; background: rgba(96, 165, 250, 0.14); border: 1px solid rgba(96, 165, 250, 0.45); color: #93c5fd; cursor: pointer; line-height: 1.1; }
.kml-nfl-vproj small { font-size: 0.5rem; font-weight: 800; letter-spacing: 0.08em; }
.kml-nfl-vproj b { font-size: 0.95rem; }
.kml-nfl-vproj.is-approx { font-style: italic; opacity: 0.8; }
.kml-nfl-vproj:hover { background: rgba(96, 165, 250, 0.26); }
@media (max-width: 700px) {
    .kml-nfl-grid { grid-template-columns: minmax(0, 1fr); }
    .kml-nfl-facts { grid-template-columns: 1fr; }
    .kml-nfl-prop { grid-template-columns: 1fr auto; }
    .kml-nfl-chips { grid-column: 1 / -1; order: 3; }
}
