/* Page composition built on design-system.css */

.dashboard, .league-home { max-width: var(--content-width); margin: auto; padding: 52px 24px 80px; }

/* Public landing page intentionally remains simple. */
.public-home { max-width: 1120px; margin: auto; padding: 72px 24px; }
.public-hero { min-height: 520px; display: grid; grid-template-columns: 1.1fr .9fr; gap: 60px; align-items: center; }
.public-hero h1 { margin-top: 16px; color: var(--color-ink); font-size: clamp(2.8rem, 5vw, 4.8rem); line-height: 1; letter-spacing: -.06em; }
.public-hero h1 span { color: var(--color-silver); }
.public-hero > div > p:last-of-type { max-width: 600px; margin-top: 24px; color: var(--color-text-muted); font-size: 1.05rem; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.public-feature-card { padding: 30px; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: white; box-shadow: var(--shadow-md); }
.public-football { display: block; margin: 26px 0 16px; font-size: 2.5rem; }
.public-feature-card p:not(.card-label) { margin: 10px 0 22px; color: var(--color-text-muted); }
.public-about { margin-top: 50px; padding-top: 48px; display: grid; grid-template-columns: 1fr 1fr; gap: 40px; border-top: 1px solid var(--color-border); }
.public-about h2 { margin-top: 8px; font-size: 1.8rem; }
.public-about > p { color: var(--color-text-muted); }

/* Dashboard */
.dashboard-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 28px; }.dashboard-heading .eyebrow { margin-bottom: 8px; }.dashboard-heading h1 { color: var(--color-ink); font-size: clamp(2.3rem, 4vw, 3.6rem); letter-spacing: -.055em; }.dashboard-heading > div > p:last-child { margin-top: 9px; color: var(--color-text-muted); }.command-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 18px; margin-top: 34px; }.command-grid > * { min-width: 0; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: white; box-shadow: var(--shadow-sm); }.command-hero-card { grid-column: span 8; padding: 28px; background: var(--color-ink); color: white; box-shadow: var(--shadow-lg); }.ai-coach-card { grid-column: span 4; padding: 26px; background: #c89428; color: #17130b; }.alert-center-card, .lineup-snapshot-card { grid-column: span 7; padding: 24px; }.team-snapshot-card, .upcoming-card { grid-column: span 5; padding: 24px; }.standings-card, .trending-card { grid-column: span 6; padding: 24px; }.command-card-header { display: flex; justify-content: space-between; gap: 20px; }.command-card-header h2 { margin-top: 5px; font-size: 1.35rem; }.command-hero-card .eyebrow { color: #adb3b9; }.dashboard-scoreboard { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px; padding: 36px 0; }.dashboard-scoreboard > div:last-child { text-align: right; }.dashboard-scoreboard small, .dashboard-scoreboard span { display: block; color: #adb3b9; }.dashboard-scoreboard h3 { margin-top: 5px; }.dashboard-scoreboard > div > strong { display: block; margin-top: 16px; font-size: 3rem; line-height: 1; letter-spacing: -.06em; }.score-divider { min-width: 110px; text-align: center !important; }.score-divider b { display: block; color: #7d848a; }.score-divider strong { margin-top: 10px !important; color: #64c68f; font-size: 1.7rem !important; }.command-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; color: #adb3b9; font-size: .76rem; }.premium-mark { font-size: 1.7rem; }.gold-text { color: #5a3a00; }.ai-coach-card > p { margin: 44px 0 28px; font-size: 1.05rem; }.alert-list, .player-card-list { display: grid; gap: 10px; margin-top: 20px; }.snapshot-stat-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 20px; }.mini-standings { display: grid; gap: 8px; margin-top: 20px; }.mini-standings div { padding: 13px 0; display: grid; grid-template-columns: 36px 1fr auto; gap: 10px; border-bottom: 1px solid var(--color-border); }.mini-standings b { color: var(--color-info); }.remaining-game-list { display: grid; gap: 3px; margin-top: 18px; }.remaining-game-list article { padding: 12px 0; display: flex; justify-content: space-between; gap: 14px; border-bottom: 1px solid var(--color-border); }.remaining-game-list span { display: block; color: var(--color-text-muted); font-size: .72rem; }.remaining-game-list time { color: var(--color-info); font-size: .75rem; text-align: right; }.empty-state-compact { min-height: 130px; margin-top: 18px; display: grid; place-items: center; align-content: center; gap: 8px; border-radius: var(--radius-sm); background: var(--color-surface-muted); color: var(--color-text-muted); text-align: center; }.empty-state-compact span { color: var(--color-positive); font-size: 1.8rem; }.empty-command-center { margin-top: 34px; padding: 60px 24px; border: 1px dashed #bcc2c7; border-radius: var(--radius-lg); background: white; text-align: center; }.empty-command-center .sport-mark { font-size: 2rem; }.empty-command-center h2 { margin-top: 14px; }.empty-command-center p { margin-top: 8px; color: var(--color-text-muted); }.league-library { margin-top: 72px; }.league-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 26px; }.league-card { display: flex; flex-direction: column; }.league-card.selected { border-color: var(--color-positive); box-shadow: 0 0 0 3px var(--color-positive-soft), var(--shadow-md); }.league-card-topline { display: flex; justify-content: space-between; align-items: center; }.sport-mark { font-size: 1.5rem; }.selected-label { padding: 5px 9px; border-radius: 999px; background: var(--color-positive-soft); color: var(--color-positive); font-size: .68rem; font-weight: 850; text-transform: uppercase; }.league-card h3 { margin-top: 24px; font-size: 1.25rem; }.league-team-name { margin-top: 5px; color: var(--color-text-muted); }.league-card-meta { margin-top: 24px; display: flex; gap: 12px; color: var(--color-silver); font-size: .72rem; }.league-selection { margin-top: 22px; }.league-selection .action-button { width: 100%; }

/* League shell */
.league-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; }.league-heading .eyebrow { margin-bottom: 8px; }.league-heading h1 { color: var(--color-ink); font-size: clamp(2.2rem, 4vw, 3.5rem); letter-spacing: -.055em; }.league-heading div > p:last-child { margin-top: 8px; color: var(--color-text-muted); }.league-tabs { margin-top: 32px; padding: 6px; display: flex; gap: 4px; overflow-x: auto; border: 1px solid var(--color-border); border-radius: 14px; background: white; box-shadow: var(--shadow-sm); scrollbar-width: none; }.league-tab { flex: 0 0 auto; padding: 10px 14px; border-radius: 9px; color: var(--color-text-muted); font-size: .78rem; font-weight: 750; transition: var(--transition); }.league-tab:hover { background: var(--color-surface-muted); color: var(--color-ink); }.league-tab.active { background: var(--color-ink); color: white; }.team-overview, .roster-page, .matchup-page { margin-top: 40px; }.team-overview-heading, .roster-heading, .matchup-page-heading, .section-title-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; }.team-overview-heading .eyebrow, .roster-heading .eyebrow, .matchup-page-heading .eyebrow, .section-title-row .eyebrow { margin-bottom: 7px; }.team-overview-heading h2, .roster-heading h2, .matchup-page-heading h2 { font-size: 1.8rem; letter-spacing: -.035em; }.team-overview-heading > p, .roster-heading > p, .section-title-row > p { color: var(--color-text-muted); font-size: .8rem; }.team-summary-card { margin-top: 24px; padding: 26px; display: flex; justify-content: space-between; align-items: center; border-radius: var(--radius-lg); background: var(--color-ink); color: white; box-shadow: var(--shadow-md); }.summary-record { text-align: right; }.summary-record strong { display: block; font-size: 2.3rem; }.summary-record span { color: #adb3b9; font-size: .72rem; }.team-overview-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 16px; }.opponent-card { grid-column: span 2; }

/* Roster + shared tables */
.roster-summary { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-top: 24px; }.roster-summary article { padding: 16px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: white; }.roster-summary span { color: var(--color-text-muted); font-size: .72rem; }.roster-summary strong { display: block; margin-top: 5px; font-size: 1.55rem; }.roster-section { margin-top: 30px; }.roster-section-heading { margin-bottom: 10px; display: flex; justify-content: space-between; align-items: baseline; }.roster-section-heading p { color: var(--color-text-muted); font-size: .75rem; }.roster-table-wrap, .matchup-lineup-card { overflow: hidden; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: white; box-shadow: var(--shadow-sm); }.roster-table, .matchup-player-table { width: 100%; border-collapse: collapse; white-space: nowrap; }.roster-table th, .roster-table td, .matchup-player-table th, .matchup-player-table td { padding: 14px 12px; border-bottom: 1px solid var(--color-border); text-align: left; }.roster-table th, .matchup-player-table th { background: #f8f9fa; color: var(--color-silver); font-size: .65rem; letter-spacing: .06em; text-transform: uppercase; }.roster-table td, .matchup-player-table td { font-size: .78rem; }.roster-table tr:last-child td, .matchup-player-table tr:last-child td { border-bottom: 0; }.lineup-slot { min-width: 40px; padding: 5px 8px; display: inline-flex; justify-content: center; border-radius: 7px; background: var(--color-ink); color: white; font-size: .66rem; font-weight: 850; }.roster-player-bench .lineup-slot { background: var(--color-silver); }.roster-player-ir .lineup-slot { background: var(--color-danger); }.player-name { color: var(--color-ink); }.game-clock { display: block; margin-top: 3px; color: var(--color-positive); font-size: .64rem; }

/* Matchup */
.matchup-summary-card { margin-top: 24px; overflow: hidden; border-radius: var(--radius-lg); background: var(--color-ink); color: white; box-shadow: var(--shadow-lg); }.matchup-summary-meta { padding: 16px 24px; display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 20px; border-bottom: 1px solid #35393d; }.matchup-summary-meta span, .matchup-score-values span { display: block; color: #adb3b9; font-size: .66rem; text-transform: uppercase; }.matchup-summary-meta strong { font-size: .8rem; }.matchup-scoreboard { display: grid; grid-template-columns: 1fr auto 1fr; }.matchup-team-score { padding: 28px; }.matchup-team-score:last-child { text-align: right; }.matchup-record { margin-top: 5px; color: #adb3b9; font-size: .72rem; }.matchup-score-values { display: flex; gap: 24px; margin-top: 24px; }.matchup-team-score:last-child .matchup-score-values { justify-content: flex-end; }.matchup-score-values strong { display: block; margin-top: 3px; font-size: 1.8rem; }.matchup-versus { min-width: 126px; display: grid; place-items: center; align-content: center; border-inline: 1px solid #35393d; }.matchup-versus span, .matchup-versus small { color: #adb3b9; }.matchup-versus strong { margin: 8px 0; color: #64c68f; font-size: 2rem; }.matchup-lineups, .position-comparison-section, .weekly-notes-section { margin-top: 42px; }.matchup-lineup-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }.matchup-lineup-heading { padding: 15px 16px; display: flex; justify-content: space-between; border-bottom: 1px solid var(--color-border); }.matchup-lineup-heading span { color: var(--color-info); font-weight: 800; }.matchup-table-wrap { overflow-x: auto; }.matchup-content-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 16px; margin-top: 42px; }.matchup-panel { padding: 24px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: white; box-shadow: var(--shadow-sm); }.insights-panel { border-top: 4px solid var(--color-gold); }.insight-list { display: grid; gap: 10px; margin-top: 17px; list-style: none; }.insight-list li { padding-left: 18px; position: relative; color: var(--color-text-muted); }.insight-list li::before { content: "↗"; position: absolute; left: 0; color: var(--color-positive); }.comparison-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px; margin-top: 16px; }.comparison-card { padding: 16px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: white; }.comparison-card > span { color: var(--color-info); font-size: .7rem; font-weight: 850; }.comparison-card strong { display: block; margin-top: 12px; overflow: hidden; font-size: .78rem; text-overflow: ellipsis; }.comparison-margin { margin-top: 6px; color: var(--color-danger); font-size: .68rem; }.comparison-margin.favorable { color: var(--color-positive); }.weekly-notes-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 16px; }.weekly-notes-grid article { padding: 18px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: white; }.weekly-notes-grid p { margin-top: 7px; color: var(--color-text-muted); font-size: .76rem; }
.coming-soon-card { margin-top: 40px; padding: 64px 24px; border: 1px dashed #bcc2c7; border-radius: var(--radius-lg); background: white; text-align: center; }.coming-soon-card .eyebrow { margin-bottom: 8px; }.coming-soon-card > p:last-of-type { margin: 10px 0 26px; color: var(--color-text-muted); }

@media (max-width: 1000px) { .command-hero-card, .alert-center-card, .lineup-snapshot-card { grid-column: span 12; }.ai-coach-card, .team-snapshot-card, .upcoming-card, .standings-card, .trending-card { grid-column: span 6; }.league-grid { grid-template-columns: repeat(2, 1fr); }.comparison-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 800px) { .public-hero { min-height: auto; grid-template-columns: 1fr; gap: 38px; }.public-about { grid-template-columns: 1fr; }.matchup-lineup-grid, .matchup-content-grid { grid-template-columns: 1fr; }.team-overview-grid { grid-template-columns: repeat(2, 1fr); }.weekly-notes-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .public-home, .dashboard, .league-home { padding: 34px 16px 60px; }.dashboard-heading, .league-heading, .team-overview-heading, .roster-heading, .matchup-page-heading, .section-title-row { align-items: flex-start; flex-direction: column; }.command-grid { display: block; }.command-grid > * { margin-top: 14px; }.dashboard-scoreboard { grid-template-columns: 1fr; text-align: left; }.dashboard-scoreboard > div:last-child { text-align: left; }.score-divider { padding: 16px 0; text-align: left !important; }.command-card-footer { align-items: flex-start; flex-direction: column; }.ai-coach-card > p { margin: 24px 0; }.league-grid { grid-template-columns: 1fr; }.roster-summary { grid-template-columns: repeat(2, 1fr); }.matchup-summary-meta, .matchup-scoreboard { grid-template-columns: 1fr; }.matchup-team-score:last-child { text-align: left; }.matchup-team-score:last-child .matchup-score-values { justify-content: flex-start; }.matchup-versus { padding: 18px; border-block: 1px solid #35393d; border-inline: 0; }.comparison-grid, .weekly-notes-grid { grid-template-columns: repeat(2, 1fr); }.roster-table-wrap, .matchup-table-wrap { overflow-x: auto; }.team-summary-card { align-items: flex-start; flex-direction: column; }.summary-record { text-align: left; } }
/* Legal and provider attribution */
.yahoo-attribution {
    margin: 0;
}

.yahoo-attribution a {
    font-weight: 700;
}

.legal-page {
    width: min(760px, calc(100% - 32px));
    margin: 48px auto 72px;
}

.legal-card {
    padding: clamp(28px, 5vw, 56px);
    border: 1px solid var(--color-border, #d7dce2);
    border-radius: var(--radius-lg, 18px);
    background: #fff;
    box-shadow: var(--shadow-sm, 0 10px 30px rgba(15, 23, 42, 0.08));
}

.legal-card h1 {
    margin: 8px 0 4px;
}

.legal-card h2 {
    margin: 32px 0 8px;
    font-size: 1.15rem;
}

.legal-card p {
    line-height: 1.7;
}

.legal-updated {
    color: var(--color-text-muted, #5d6673);
}
