/* Global selectors also reach markup rendered by the Chase script. */
#chase-app { max-width:70rem; margin:auto; color:var(--ink); }
.chase-hero, #chase-app *, .chase-hero * { box-sizing:border-box; }
.eyebrow { font-size:.75rem; font-weight:800; letter-spacing:.13em; color:#44614f; }
.chase-hero { display:grid; grid-template-columns:1.15fr 1fr; gap:1.5rem 2rem; align-items:center; margin:.5rem 0 2rem; color:var(--ink); }
.hero-logo { display:block; width:15rem; max-width:100%; height:auto; }
.hero-copy h1 { font-size:clamp(2.8rem,6.3vw,5.5rem); line-height:.98; letter-spacing:-.06em; margin:1.1rem 0 1.5rem; font-weight:900; }
.hero-copy h1 span { position:relative; display:inline-block; z-index:0; }
.hero-copy h1 span::after { content:''; position:absolute; height:.22em; background:var(--accent); left:-.02em; right:-.04em; bottom:.03em; z-index:-1; transform:rotate(-3deg); }
.hero-description { font-size:1.05rem; line-height:1.65; max-width:32rem; }
.hero-welcome { font-size:.85rem; color:#506253; }
.hero-title-translation { font-size:1.15rem; font-weight:700; margin:-.5rem 0 1rem; }
.hero-actions { display:flex; flex-wrap:wrap; gap:.65rem; margin-top:1.5rem; }
.hero-actions .chase-button { font-size:.8rem; letter-spacing:.035em; }
.hero-art { min-width:0; background:var(--paper); border:1px solid var(--line); border-radius:1.25rem; padding:.5rem; background-image:radial-gradient(var(--line) .7px,transparent .7px); background-size:16px 16px; }
.field-illustration { display:block; width:100%; max-height:25rem; color:var(--ink); }
.field-orbit { fill:none; stroke:var(--line); stroke-dasharray:3 7; }
.field-grass { fill:var(--wash); }
.field-boundary { fill:none; stroke:var(--ink); stroke-width:3; }
.field-dirt { fill:var(--accent); }
.field-infield { fill:var(--wash); }
.field-lines { fill:none; stroke:var(--paper); stroke-width:3; }
.field-bases { fill:var(--paper); stroke:var(--ink); stroke-width:1.5; }
.field-mound { fill:var(--ink); }
.field-players { fill:var(--ink); stroke:var(--paper); stroke-width:2; }
.field-ticket rect { fill:var(--ink); }
.field-ticket text { fill:var(--paper); font-family:system-ui,sans-serif; }
.field-ticket-label { font-size:10px; font-weight:700; letter-spacing:1px; }
.field-ticket .field-ticket-number { font-size:40px; font-weight:900; fill:var(--accent); }
.field-ball circle { fill:var(--paper); stroke:var(--ink); stroke-width:2; }
.field-ball path { fill:none; stroke:var(--ink); stroke-width:1.5; }
.hero-art-caption { text-align:center; font-size:.6rem; font-weight:800; letter-spacing:.09em; margin:.1rem 0 1rem; }
main .chase-steps { grid-column:1 / -1; display:grid; grid-template-columns:repeat(4,1fr); list-style:none; padding:1.25rem 0; margin:0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); line-height:1.4; }
.chase-steps li { display:flex; align-items:center; gap:.75rem; padding:0 1rem; margin:0; border-right:1px solid var(--line); }
.chase-steps li:first-child { padding-left:0; }
.chase-steps li:last-child { border:0; }
.chase-steps svg { width:2.6rem; height:2.6rem; flex-shrink:0; fill:none; stroke:var(--ink); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.chase-steps .step-accent { fill:var(--accent); }
.chase-steps strong { font-size:.95rem; }
.chase-steps strong span:first-child { font-size:.65rem; color:#506253; margin-right:.25rem; }
.chase-steps p { margin:.3rem 0 0; font-size:.75rem; color:#506253; }
#chase-app[data-phase]:not([data-phase="DRAFT"]) .chase-hero { display:block; margin:.5rem 0 1rem; }
#chase-app[data-phase]:not([data-phase="DRAFT"]) .hero-art,
#chase-app[data-phase]:not([data-phase="DRAFT"]) .chase-steps,
#chase-app[data-phase]:not([data-phase="DRAFT"]) .hero-description,
#chase-app[data-phase]:not([data-phase="DRAFT"]) .hero-welcome,
#chase-app[data-phase]:not([data-phase="DRAFT"]) .hero-actions { display:none; }
#chase-app[data-phase]:not([data-phase="DRAFT"]) .hero-copy h1 { font-size:1.6rem; margin:.4rem 0; }
#chase-app[data-phase]:not([data-phase="DRAFT"]) .hero-copy h1 br { display:none; }
#chase-message { min-height:1.5em; padding:.7rem 1rem; background:var(--wash); border-radius:.5rem; font-size:.9rem; }
#chase-stage { scroll-margin-top:1rem; }
#chase-stage h2 { margin-top:.7rem; font-size:clamp(1.4rem,4vw,2rem); }
#chase-app button, .chase-button { font:inherit; min-height:44px; border:1px solid var(--ink); border-radius:.4rem; padding:.7rem 1rem; background:var(--ink); color:var(--paper); cursor:pointer; text-decoration:none; display:inline-block; font-weight:650; }
#chase-app button:hover, .chase-button:hover { background:#246946; }
.chase-button.secondary { background:var(--paper); color:var(--ink); }
.chase-button.secondary:hover { background:var(--wash); }
#chase-app button:disabled { opacity:.45; cursor:default; }
#chase-app button:focus-visible, .chase-button:focus-visible, .inning-scroll:focus-visible { outline:3px solid var(--ink); outline-offset:3px; }
.draft-title { border-left:5px solid var(--accent); padding-left:1rem; margin:1.5rem 0; }
.candidate-grid, .trade-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr)); gap:1rem; }
/* Fixed position colors. Paper or black badge text meets 4.5:1 contrast. */
[data-position] { --position-color:var(--ink); --position-text:var(--paper); }
[data-position="C"] { --position-color:#2e7d5b; }
[data-position="1B"] { --position-color:#4a7c3f; }
[data-position="2B"] { --position-color:#5b8a4a; --position-text:#000; }
[data-position="3B"] { --position-color:#6d9350; --position-text:#000; }
[data-position="SS"] { --position-color:#7f9c56; --position-text:#000; }
[data-position="LF"] { --position-color:#b39340; --position-text:#000; }
[data-position="CF"] { --position-color:#bd8b3c; --position-text:#000; }
[data-position="RF"] { --position-color:#c07b3a; --position-text:#000; }
[data-position="DH"] { --position-color:#b8503f; }
[data-position="SP1"] { --position-color:#3d6b8f; }
[data-position="SP2"] { --position-color:#4a7d9e; --position-text:#000; }
[data-position="CL"] { --position-color:#5c7fa3; --position-text:#000; }
.candidate, .trade-option { min-width:0; background:var(--paper); border:1px solid var(--line); border-top:4px solid var(--position-color); border-radius:.75rem; padding:1rem; box-shadow:0 3px 8px #123d2a08; }
.candidate-head { display:flex; align-items:center; gap:.75rem; }
.candidate-head > div { flex:1; min-width:0; }
.candidate h3 { margin:0; font-size:1.1rem; overflow-wrap:anywhere; }
.position-badge { display:inline-grid; place-items:center; flex-shrink:0; background:var(--position-color); color:var(--position-text); min-width:2.5rem; min-height:2.8rem; padding:.5rem .3rem; font-weight:900; border-radius:.3rem; font-size:.9rem; }
.rating-number { display:grid; place-items:center; background:var(--accent); color:var(--ink); border-radius:50%; min-width:2.8rem; min-height:2.8rem; }
.player-year { font-size:.65rem; font-weight:750; letter-spacing:.035em; color:#506253; margin:0 0 .25rem; }
.position-label { font-size:.8rem; margin:.75rem 0; color:#506253; line-height:1.5; }
.player-rating { margin:.6rem 0; }
.player-rating > span { display:flex; justify-content:space-between; gap:.5rem; font-size:.75rem; }
.player-rating strong { color:var(--ink); }
.player-rating small { font-size:.65rem; font-weight:400; }
.player-rating meter, .team-metrics meter { display:block; appearance:none; width:100%; height:.5rem; background:var(--wash); border-radius:1rem; border:0; margin-top:.35rem; }
.player-rating meter::-webkit-meter-bar, .team-metrics meter::-webkit-meter-bar { height:.5rem; background:var(--wash); border:0; border-radius:1rem; }
.player-rating meter::-webkit-meter-optimum-value { background:var(--position-color); border-radius:1rem; }
.team-metrics meter::-webkit-meter-optimum-value { background:var(--ink); border-radius:1rem; }
.player-rating meter::-moz-meter-bar { background:var(--position-color); border-radius:1rem; }
.team-metrics meter::-moz-meter-bar { background:var(--ink); }
.player-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:.5rem; border-top:1px solid var(--line); padding-top:.75rem; margin:.8rem 0; }
.player-stats > div { min-width:0; }
.player-stats dt { display:inline; font-size:.65rem; font-weight:700; color:#506253; }
.player-stats abbr { text-decoration:none; }
.player-stats dd { display:inline; margin:0 0 0 .3rem; font-size:.95rem; font-weight:800; font-variant-numeric:tabular-nums; }
.player-stats small { display:block; font-size:.7rem; line-height:1.4; color:#506253; margin-top:.2rem; }
.stat-help { font-size:.65rem; color:#506253; line-height:1.4; }
.slot-buttons { display:flex; flex-wrap:wrap; gap:.4rem; }
#chase-app .slot-buttons button { font-size:.77rem; padding:.5rem .65rem; background:var(--wash); color:var(--ink); text-align:left; border-color:var(--line); }
#chase-app .slot-buttons button:hover { border-color:var(--ink); }
.pagination, .final-actions, .chase-links { display:flex; gap:.75rem; flex-wrap:wrap; align-items:center; margin:1.2rem 0; }
.roster-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr)); gap:.75rem; margin:1.2rem 0; }
.roster-slot { min-width:0; display:flex; overflow:hidden; background:var(--wash); border:1px solid var(--line); border-radius:.65rem; }
.roster-slot.filled { background:var(--paper); box-shadow:0 3px 8px #123d2a08; }
.roster-slot > .position-badge { border-radius:0; min-width:2.75rem; align-self:stretch; }
.roster-body { flex:1; min-width:0; padding:.75rem; }
.roster-body .position-label { margin:0 0 .5rem; font-size:.7rem; }
.roster-name { display:block; font-size:.95rem; line-height:1.5; overflow-wrap:anywhere; }
.roster-name a { color:var(--ink); text-decoration-thickness:1px; text-underline-offset:3px; }
.roster-body .player-stats { margin-bottom:0; }
.team-metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(8rem,1fr)); gap:.6rem; margin:1.5rem 0; }
.team-metrics > div { padding:.75rem; background:var(--wash); border-radius:.4rem; display:flex; flex-direction:column; gap:.4rem; }
.team-metrics strong { font-size:1.8rem; }
.team-metrics small { font-size:.67rem; font-weight:700; }
.fine-print { font-size:.8rem; color:#506253; line-height:1.5; }
.season-record { font-size:clamp(3rem,12vw,5rem); font-weight:900; letter-spacing:-.045em; font-variant-numeric:tabular-nums; line-height:1.15; }
.season-summary { display:flex; align-items:baseline; flex-wrap:wrap; gap:.5rem 1.25rem; margin:1rem 0; }
.season-summary .season-record { font-size:clamp(2rem,7vw,3rem); }
.season-record span { font-size:.65rem; font-weight:700; letter-spacing:.02em; }
.season-record i { font-style:normal; margin:0 .2em; font-size:.65em; color:#506253; }
.season-summary p { font-size:.8rem; color:#506253; }
.season-visuals { min-width:0; }
main .scoreboard { margin:1rem 0; border:1px solid var(--line); border-radius:.8rem; overflow:hidden; background:var(--paper); box-shadow:0 4px 16px #123d2a08; }
.scoreboard-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.5rem; background:var(--ink); padding:.75rem 1rem; color:var(--paper); }
.scoreboard-heading .eyebrow { color:var(--paper); margin:0; }
.game-outcome { font-size:.65rem; font-weight:800; padding:.3rem .5rem; border-radius:.25rem; }
.win { background:#d7eacb; color:var(--ink); }
.loss { background:#f2dbd0; color:#873a2c; }
.scoreboard-matchup { display:grid; grid-template-columns:1fr auto 1fr; gap:.75rem; align-items:center; padding:1rem; }
.scoreboard-team { display:grid; grid-template-columns:1fr auto; gap:.25rem 1rem; padding:.75rem 1rem; border-radius:.4rem; min-width:0; }
.scoreboard-team strong { font-size:1.35rem; letter-spacing:.04em; }
.scoreboard-team small { grid-column:1; font-size:.7rem; line-height:1.4; overflow-wrap:anywhere; }
.scoreboard-team b { grid-column:2; grid-row:1 / 3; font-size:3rem; line-height:1; align-self:center; font-variant-numeric:tabular-nums; }
.scoreboard-versus { font-size:.65rem; font-weight:800; color:#506253; }
.inning-scroll { overflow-x:auto; max-width:100%; padding:0 1rem; scrollbar-color:var(--ink) var(--wash); }
main .inning-table { display:table; white-space:nowrap; min-width:32rem; width:100%; border-collapse:separate; border-spacing:.2rem; background:transparent; margin:0; font-size:.8rem; }
.inning-table caption { font-size:.8rem; padding:.5rem 0; color:var(--ink); }
.inning-table caption span { font-weight:400; font-size:.7rem; margin-left:.5rem; }
main .inning-table th, main .inning-table td { border:0; padding:.5rem .4rem; text-align:center; vertical-align:middle; border-radius:.2rem; min-width:1.8rem; }
main .inning-table thead th { background:var(--wash); color:var(--ink); font-size:.7rem; }
main .inning-table tbody th { text-align:left; min-width:4rem; }
main .inning-table td { background:var(--wash); color:var(--ink); font-variant-numeric:tabular-nums; }
main .inning-table .win td.scoring-inning { background:#d7eacb; }
main .inning-table .loss td.scoring-inning { background:#f2dbd0; color:#873a2c; }
main .inning-table td.inning-total { background:var(--ink); color:var(--paper); font-weight:800; }
.scoreboard-help { font-size:.65rem; color:#506253; margin:.5rem 1rem .9rem; }
.season-progress { margin:1.25rem 0; }
.season-progress label { display:flex; justify-content:space-between; gap:.5rem; font-size:.7rem; font-weight:750; letter-spacing:.05em; margin-bottom:.5rem; }
#chase-app progress { appearance:none; display:block; width:100%; height:1.15rem; border:1px solid var(--line); border-radius:1rem; overflow:hidden; background:var(--wash); accent-color:var(--ink); }
#chase-app progress::-webkit-progress-bar { background:var(--wash); }
#chase-app progress::-webkit-progress-value { background:repeating-linear-gradient(115deg,var(--ink) 0 14px,#246946 14px 28px); border-radius:1rem; transition:width .18s ease; }
#chase-app progress::-moz-progress-bar { background:var(--ink); border-radius:1rem; }
.recent-heading { display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:.5rem; margin-bottom:.65rem; }
.recent-heading h3 { font-size:.9rem; margin:0; }
.recent-heading span { font-size:.7rem; color:#506253; }
.recent-games { display:grid; grid-template-columns:repeat(12,1fr); gap:.4rem; margin-bottom:1.5rem; }
#chase-app .recent-games button { min-width:0; padding:.45rem .15rem; border:1px solid transparent; display:flex; flex-direction:column; align-items:center; gap:.2rem; border-radius:.35rem; }
#chase-app .recent-games .win { background:#d7eacb; color:var(--ink); }
#chase-app .recent-games .loss { background:#f2dbd0; color:#873a2c; }
#chase-app .recent-games button:hover, #chase-app .recent-games button[aria-pressed="true"] { border-color:currentColor; }
.recent-games small { font-size:.6rem; font-weight:500; }
.recent-games strong { font-size:1rem; }
.trade-option h3 { line-height:1.5; }
.trade-option button { display:block; width:100%; margin-top:1rem; }
.share-card { position:relative; isolation:isolate; overflow:hidden; background:var(--ink); color:var(--paper); border-top:5px solid var(--position-color); padding:clamp(1rem,5vw,2.5rem); border-radius:1rem; text-align:center; max-width:36rem; margin:1.5rem auto; box-shadow:0 8px 25px #123d2a22; }
.share-card::before { content:''; position:absolute; width:15rem; height:15rem; right:-5rem; top:-5rem; border:1px solid #fffef726; border-radius:50%; background:repeating-linear-gradient(130deg,transparent 0 10px,#fffef708 10px 12px); z-index:-1; }
.share-card::after { content:''; position:absolute; left:1.25rem; right:1.25rem; bottom:.7rem; height:3px; background:linear-gradient(to right,var(--accent) 0 30%,var(--position-color) 30% 65%,#fffef730 65%); }
.share-card .eyebrow { color:var(--accent); }
.share-logo { display:block; width:4rem; height:auto; padding:.35rem; margin:0 auto .75rem; background:var(--paper); border-radius:.5rem; }
.share-domain { font-size:.75rem; font-weight:700; letter-spacing:.08em; }
.share-card h2 { letter-spacing:.1em; font-size:1.2rem!important; }
.share-record-label { font-size:.65rem; letter-spacing:.08em; margin:.5rem 0 1rem; }
.trade-comparison { border:1px solid #779978; border-left:4px solid var(--position-color); border-radius:.5rem; padding:1rem; text-align:left; margin:1.5rem 0; background:#123d2a80; }
.trade-comparison p { font-size:.9rem; line-height:1.5; }
.trade-comparison .trade-projection { margin:1.25rem 0 .5rem; }
.trade-projection span { display:block; font-size:.6rem; font-weight:700; letter-spacing:.08em; }
.trade-projection strong { display:block; color:var(--accent); font-size:clamp(1.8rem,7vw,3rem); font-variant-numeric:tabular-nums; line-height:1.3; }
.trade-delta { color:var(--accent); font-size:1.2rem; }
#chase-share-url { box-sizing:border-box; width:100%; padding:.7rem; border:1px solid var(--line); border-radius:.4rem; background:var(--paper); color:var(--ink); font:inherit; font-size:.8rem; }
.daily-submission { border-left:4px solid var(--accent); background:var(--paper); padding:1rem; margin:1.5rem 0; }
.season-games { font-size:.85rem; max-height:25rem; overflow:auto; }
@keyframes result-arrive { from { opacity:.5; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }
@media(prefers-reduced-motion:no-preference) {
  #chase-app[data-phase="FIRST_HALF"] .scoreboard, #chase-app[data-phase="SECOND_HALF"] .scoreboard { animation:result-arrive .18s ease-out; }
  .share-card { animation:result-arrive .35s ease-out; }
}
@media(max-width:60rem) {
  .chase-hero { gap:1.25rem; }
  .chase-steps li { padding:0 .65rem; gap:.5rem; }
  .chase-steps svg { width:2rem; height:2rem; }
  .recent-games { grid-template-columns:repeat(6,1fr); }
}
@media(max-width:40rem) {
  header,main,footer { padding:1rem; }
  nav { gap:.75rem!important; font-size:.8rem; }
  .chase-hero { grid-template-columns:1fr; gap:1rem; }
  .hero-copy h1 { font-size:3.25rem; }
  .hero-description { font-size:.95rem; }
  .hero-art { max-width:25rem; width:100%; justify-self:center; }
  .field-illustration { max-height:15.5rem; }
  .hero-actions .chase-button { flex:1; text-align:center; font-size:.72rem; padding:.75rem .5rem; }
  main .chase-steps { grid-template-columns:1fr 1fr; gap:1.25rem .5rem; padding:1rem 0; }
  .chase-steps li { border:0; padding:0; }
  .chase-steps li:nth-child(even) { padding-left:.5rem; }
  .scoreboard-matchup { gap:.35rem; padding:.75rem; }
  .scoreboard-team { gap:.3rem; padding:.65rem .5rem; }
  .scoreboard-team strong { font-size:1rem; }
  .scoreboard-team small { font-size:.6rem; }
  .scoreboard-team b { font-size:2.3rem; }
  .scoreboard-heading { padding:.7rem .75rem; }
  .scoreboard-heading .eyebrow { font-size:.65rem; }
  .inning-scroll { padding:0 .5rem; }
  .chase-links { font-size:.85rem; }
  .final-actions > * { flex:1; text-align:center; }
  .share-card p { overflow-wrap:anywhere; }
}
@media(prefers-reduced-motion:reduce) {
  #chase-app progress::-webkit-progress-value { transition:none; }
}
/* A finished game's printout contains only its card, readable without backgrounds. */
@media print {
  body:has(#chase-share-card) { background:white; }
  body:has(#chase-share-card) > :not(main),
  body:has(#chase-share-card) main > :not(#chase-app),
  #chase-app:has(#chase-share-card) > :not(#chase-stage),
  #chase-stage:has(#chase-share-card) > :not(#chase-share-card) { display:none!important; }
  body:has(#chase-share-card) main { max-width:none; padding:0; }
  #chase-share-card { background:white; color:#183528; border:1px solid #183528; padding:1.5rem; margin:0 auto; overflow:visible; box-shadow:none; break-inside:avoid; animation:none; }
  #chase-share-card::before, #chase-share-card::after { display:none; }
  #chase-share-card .eyebrow, #chase-share-card .trade-projection strong,
  #chase-share-card .trade-delta { color:#183528; }
  #chase-share-card .trade-comparison { background:white; border-color:#183528; }
  #chase-share-card .share-logo { background:white; }
  #chase-share-card .season-record { font-size:4rem; }
  #chase-share-card .trade-projection strong { font-size:2rem; }
}
