@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#172b36;--muted:#66767d;--line:#dce3e3;--paper:#f3f5f2;--white:#fff;--accent:#c5552c;--mint:#eaf2ec;--good:#28724d;--bad:#b9473f}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.5 'DM Sans',system-ui,sans-serif}button,input,select{font:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #e69a73;outline-offset:3px}button[hidden],[hidden]{display:none!important}.topbar{height:72px;background:var(--ink);color:#f6f8f6;padding:0 max(28px,calc((100vw - 1380px)/2));display:flex;align-items:center;gap:54px}.brand{font:bold 23px 'Space Grotesk',sans-serif;letter-spacing:3px;text-decoration:none;white-space:nowrap}.ball{color:#ed9569;margin-right:8px}.topbar nav{display:flex;gap:26px;height:100%;align-items:center}.topbar nav a{text-decoration:none;color:#aebfbe;font-size:13px;height:100%;display:flex;align-items:center}.topbar nav a.active{color:white;border-bottom:3px solid #e59169}.top-note{margin-left:auto;font-size:10px;letter-spacing:2px;color:#9aafaf}main{max-width:1380px;padding:42px 28px 20px;margin:auto}.hero{display:flex;align-items:center;justify-content:space-between;padding:0 4px 28px}.eyebrow{text-transform:uppercase;letter-spacing:1.6px;font-size:10px;font-weight:700;color:var(--muted);margin:0 0 10px}h1,h2,strong{font-family:'Space Grotesk',system-ui,sans-serif}h1{font-size:clamp(36px,4vw,55px);line-height:1.1;letter-spacing:-.025em;margin:10px 0 16px;font-weight:600}h1 span{color:var(--muted)}.intro{max-width:490px;color:var(--muted);margin:0;font-size:15px}.season-stamp{border-left:1px solid #cdd8d3;padding:10px 42px;display:flex;flex-direction:column;align-items:center}.season-stamp>span,.season-stamp small{font-size:10px;letter-spacing:4px;color:var(--muted)}.season-stamp strong{font-size:72px;letter-spacing:-.035em;font-weight:500;line-height:1.3}.season-stamp strong span{color:#c5552c;font-weight:400}.source-strip{background:#e9efea;border:1px solid #dbe5dd;padding:11px 16px;border-radius:7px;display:flex;gap:10px;align-items:center;font-size:11px;margin-bottom:24px;color:#455d50}.source-strip a{margin-left:auto;white-space:nowrap;font-weight:700}.live-dot{height:6px;width:6px;min-width:6px;border-radius:100%;background:#5f9575}.workspace{display:grid;grid-template-columns:300px minmax(0,1fr);gap:22px;align-items:start}.panel{background:var(--white);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 3px 12px #142a3010}.roster-panel{padding:22px 20px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.section-title .eyebrow{font-size:9px;margin-bottom:6px}h2{font-size:20px;letter-spacing:-.015em;margin:0;font-weight:600}.badge{display:inline-block;background:var(--paper);border:1px solid var(--line);border-radius:5px;color:var(--muted);font-size:10px;white-space:nowrap;padding:4px 7px}label{font-size:11px;font-weight:600;color:var(--muted);display:block}select,input{border:1px solid var(--line);border-radius:6px;background:var(--white);color:var(--ink);padding:9px;min-width:0;max-width:100%}select{padding-right:25px}#rosterTeam{width:100%;margin-top:6px;font-weight:600}.roster-heading{display:flex;justify-content:space-between;margin:20px 0 6px;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}.roster-list{max-height:470px;overflow:auto}.roster-row{display:flex;align-items:center;gap:8px;border-bottom:1px solid #edf0ed;padding:11px 0}.player-initials{flex-shrink:0;width:29px;height:29px;display:grid;place-items:center;background:#edf1ed;border-radius:50%;font-size:9px;font-weight:700;color:#496251}.player-info{min-width:0;flex:1}.player-info b{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:12px;font-weight:600}.player-info small{font-size:9px;color:var(--muted)}.roster-min{font:11px 'Space Grotesk',sans-serif;color:var(--muted);white-space:nowrap}.remove-player{border:0;background:transparent;color:#84938e;font-size:17px;padding:4px}.remove-player:hover{color:var(--bad)}.add-player{border-top:1px solid var(--line);margin-top:18px;padding-top:18px}.add-player input,.add-player select{width:100%;margin:7px 0 0;font-size:11px}.add-player button{margin-top:8px}.button{border:1px solid transparent;border-radius:6px;padding:10px 15px;font-weight:600;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:18px;transition:background .15s}.button.primary{background:var(--accent);color:white}.button.primary:hover:not(:disabled){background:#ad4523}.button.secondary{background:white;border-color:var(--line);color:var(--ink)}.button.secondary:hover:not(:disabled){background:var(--paper)}.full{width:100%}.text-button{border:0;background:transparent;font-size:11px;color:var(--muted);padding:7px 0;text-decoration:none}.text-button:hover:not(:disabled){color:var(--accent)}.small-note{font-size:10px;color:var(--muted);line-height:1.7}.controls{padding:23px}.settings{display:flex;gap:30px;align-items:center}.seed-label input{display:block;width:140px;margin-top:6px}.checks{display:grid;gap:10px}.checks label{display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:500}.checks input{accent-color:var(--accent);margin:0;width:14px;height:14px}.actions{display:flex;gap:10px;align-items:center;margin:19px 0 20px;flex-wrap:wrap}#resetSeason{margin-left:auto}progress{width:100%;height:5px;border:0;border-radius:5px;overflow:hidden;display:block;background:#e7ede8;accent-color:var(--accent)}progress::-webkit-progress-bar{background:#e7ede8}progress::-webkit-progress-value{background:var(--accent)}.progress-label{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:9px}#message{font-size:12px;color:var(--bad);background:#fff1e9;border-radius:5px;padding:9px}.metrics{display:grid;grid-template-columns:.8fr 1fr 1.3fr;gap:14px;margin:18px 0}.metrics>div{border:1px solid var(--line);padding:14px 18px;border-radius:8px;background:#fafbf8}.metrics span{display:block;font-size:10px;color:var(--muted);margin-bottom:6px}.metrics strong{font-size:22px;font-weight:500;white-space:nowrap}.results-top{display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid var(--line)}.result-tabs{display:flex;gap:24px}.result-tabs button{border:0;border-bottom:2px solid transparent;padding:18px 0;background:transparent;color:var(--muted);font-size:12px;font-weight:600}.result-tabs button.selected{color:var(--ink);border-bottom-color:var(--accent)}.filter-row{display:flex;gap:12px;padding:17px 20px;align-items:center;flex-wrap:wrap;justify-content:space-between}.filter-row label{display:flex;gap:5px;align-items:center}.filter-row select,.filter-row input{padding:6px;font-size:11px;max-width:175px}.segmented{display:flex;background:var(--paper);padding:3px;border-radius:6px}.segmented button{border:0;background:transparent;padding:6px 11px;font-size:10px;color:var(--muted);border-radius:4px}.segmented button.selected{background:white;color:var(--ink);box-shadow:0 1px 3px #142a3020}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}th{color:#78867f;background:#f6f8f4;text-transform:uppercase;font-size:9px;letter-spacing:.5px;font-weight:500;padding:10px 13px;text-align:right}td{padding:12px 13px;text-align:right;border-bottom:1px solid #edf0ec}th.left,td.left{text-align:left}td.team-cell{font-weight:600}.team-mark{width:7px;height:7px;display:inline-block;background:var(--ink);border-radius:2px;margin-right:9px}.rank{color:var(--muted);font-size:10px}.standings-row:nth-child(6){border-bottom:1px dashed #b2c9ba}.positive{color:var(--good)}.negative{color:var(--bad)}.table-foot{font-size:9px;color:var(--muted);padding:12px 20px;margin:0}.empty{padding:44px 20px;text-align:center;color:var(--muted);font-size:12px}.game-list{padding:0 20px}.game-row{display:flex;width:100%;align-items:center;gap:10px;padding:13px 0;background:transparent;border:0;border-bottom:1px solid var(--line);text-align:left;color:var(--ink)}.game-row:not(:disabled):hover{background:#f5f8f3}.game-date{font-size:10px;color:var(--muted);min-width:70px}.game-match{font-size:12px;font-weight:600;flex:1}.game-score{font:600 15px 'Space Grotesk',sans-serif}.game-state{font-size:9px;color:var(--muted);min-width:65px;text-align:right}.provisional{color:var(--accent);font-size:8px;background:#fff0e4;padding:3px 5px;border-radius:3px;margin-left:6px;font-weight:500}.pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;font-size:10px;color:var(--muted)}.method{border-top:1px solid var(--line);margin-top:32px;padding:18px 0;color:var(--muted);font-size:11px}.method summary{cursor:pointer;color:var(--ink);font-weight:600}.method p{max-width:960px}footer{border-top:1px solid var(--line);display:flex;gap:20px;align-items:center;padding:22px 0;color:var(--muted);font-size:10px;letter-spacing:.4px}footer>a{margin-left:auto}dialog{border:1px solid var(--line);border-radius:12px;width:min(1000px,94vw);max-height:88vh;padding:25px;color:var(--ink);box-shadow:0 30px 100px #10202d50}dialog::backdrop{background:#10202da8;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.box-heading{display:flex;justify-content:space-between;align-items:center;margin:22px 0 10px}.box-heading strong{font-size:19px}.box-total{font-weight:bold;background:var(--paper)}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1050px){.workspace{grid-template-columns:270px minmax(0,1fr);gap:16px}.metrics strong{font-size:17px}.top-note{display:none}.result-tabs{gap:18px}.results-top{padding:0 14px}}@media(max-width:760px){.topbar{padding:0 18px;gap:24px;height:62px}.topbar nav{gap:16px}.topbar nav a{font-size:11px}.brand{font-size:19px}main{padding:26px 14px 15px}.hero{padding-bottom:24px}.season-stamp{display:none}h1{font-size:38px}.intro{font-size:13px}.source-strip{font-size:10px;flex-wrap:wrap}.source-strip a{margin-left:16px}.workspace{grid-template-columns:1fr}.roster-panel{order:2}.main-column{min-width:0}.roster-list{max-height:260px}.controls{padding:18px}.metrics{gap:8px}.metrics>div{padding:13px 10px}.metrics strong{font-size:15px}.metrics span{font-size:9px}.settings{gap:18px}.seed-label input{width:105px}.checks label{font-size:10px}.filter-row{padding:14px;gap:10px}.result-tabs{gap:20px}.results-top{gap:10px}#download{font-size:9px}.game-date{min-width:56px;font-size:9px}.game-match{font-size:11px}.game-score{font-size:12px}.game-state{min-width:46px;font-size:8px}.game-row{gap:7px}.provisional{display:block;width:max-content;margin:4px 0 0}.progress-label{font-size:9px}footer{flex-wrap:wrap;gap:8px}footer span{width:75%}dialog{padding:16px}.dialog-head h2{font-size:17px}}

/* Let content grow instead of squeezing headings, scores and navigation. */
.topbar { height: auto; min-height: 72px; flex-wrap: wrap; gap: 12px 36px; }
.brand { flex-shrink: 0; }
.topbar nav { min-height: 72px; height: auto; }
.topbar nav a { min-height: 72px; line-height: 1.5; }
.section-title, .results-top, .progress-label, .roster-heading, .dialog-head { flex-wrap: wrap; }
.section-title > div { flex: 1 1 180px; min-width: 0; }
.badge, .checks input { flex-shrink: 0; }
.settings { flex-wrap: wrap; gap: 16px 24px; }
.metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.metrics > div { min-width: 0; }
.metrics strong { white-space: normal; overflow-wrap: anywhere; line-height: 1.4; display: block; }
.results-top { gap: 4px 16px; }
.result-tabs { flex-wrap: wrap; }
.result-tabs button { white-space: nowrap; }
.game-match { min-width: 0; }
.game-score { white-space: nowrap; }
.progress-label, .roster-heading { gap: 6px 12px; }
@media (max-width: 960px) {
  .workspace { grid-template-columns: minmax(0, 1fr); }
  .roster-panel { order: 2; }
  .main-column { min-width: 0; }
  .roster-list { max-height: 320px; }
}
@media (max-width: 600px) {
  .topbar { padding: 12px 18px 0; gap: 4px 24px; }
  .topbar nav { width: 100%; min-height: 42px; gap: 24px; }
  .topbar nav a { min-height: 42px; font-size: 12px; }
  .source-strip { display: grid; grid-template-columns: 6px minmax(0, 1fr); }
  .source-strip a { grid-column: 2; margin-left: 0; white-space: normal; }
  .checks label { font-size: 11px; }
  .results-top { padding-bottom: 8px; }
  .result-tabs { gap: 20px; }
  #download { font-size: 11px; margin-left: auto; }
  .game-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 5px 12px; }
  .game-date { grid-column: 1; grid-row: 1; }
  .game-state { grid-column: 2; grid-row: 1; }
  .game-match { grid-column: 1; grid-row: 2; }
  .game-score { grid-column: 2; grid-row: 2; }
}

/* Team-centered franchise hub. */
:root { --accent: #176d59; --paper: #edf1ef; }
.topbar { background: #101f25; }
.topbar nav a.active { border-bottom-color: #beee75; }
main { max-width: 1600px; padding-top: 28px; }
.franchise-hero { position: relative; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(130px, .65fr) minmax(0, 1fr); align-items: center; gap: 28px; padding: 32px; margin-bottom: 20px; border-radius: 12px; background: #152d32; color: #f5f8f2; overflow: hidden; }
.franchise-hero::before { content: ''; position: absolute; width: 500px; height: 500px; border: 1px solid #ffffff0d; border-radius: 50%; left: 38%; top: -180px; pointer-events: none; }
.franchise-hero > * { position: relative; min-width: 0; }
.franchise-hero .eyebrow { color: #bce684; font-size: 10px; }
.franchise-hero label { color: #b7c9c8; margin-bottom: 5px; }
#myTeam { background: #233e42; color: #fff; border-color: #4b6668; width: 100%; max-width: 320px; font-size: 12px; }
.franchise-hero h1 { font-size: clamp(26px, 3vw, 42px); line-height: 1.13; margin: 18px 0 8px; letter-spacing: -.025em; }
.team-context { color: #b7c9c8; font-size: 12px; margin: 0; }
.team-record { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin-top: 20px; }
.team-record > strong { font-size: 36px; line-height: 1.2; }
.team-record > span { font-size: 9px; letter-spacing: 1.1px; max-width: 55px; }
#recentForm { display: flex; gap: 5px; align-items: center; flex-wrap: wrap; }
#recentForm > span:first-child { font-size: 9px; color: #b7c9c8; margin-right: 5px; }
.form-chip { display: grid; place-items: center; width: 23px; height: 23px; border-radius: 4px; font-size: 10px; font-weight: 700; }
.form-chip.win { color: #c5f58c; background: #365249; }
.form-chip.loss { color: #ffd3cb; background: #614b49; }
.franchise-mark { text-align: center; transform: rotate(-8deg); padding: 28px 0; border-block: 1px solid #bce68455; }
.franchise-mark > span { display: block; font: 700 clamp(45px, 6vw, 90px)/1.2 'Space Grotesk', sans-serif; letter-spacing: -.04em; color: #c4f087; }
.franchise-mark small { letter-spacing: 4px; font-size: 9px; }
.next-match { padding: 22px; border: 1px solid #597072; border-radius: 8px; background: #18353a; }
.next-match h2 { font-size: 22px; line-height: 1.3; }
.next-match p:not(.eyebrow) { color: #b7c9c8; font-size: 12px; line-height: 1.7; }
.next-match a { color: #c4f087; font-size: 11px; text-underline-offset: 4px; }
.week-panel { margin-bottom: 18px; scroll-margin-top: 20px; }
.week-toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; padding: 22px; border-bottom: 1px solid var(--line); }
.week-toolbar .eyebrow { margin-bottom: 4px; }
#weekRange { font-size: 12px; color: var(--muted); margin: 5px 0 0; }
.week-navigation { display: flex; align-items: center; gap: 16px; }
.week-navigation .button { padding: 8px 12px; }
.week-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; padding: 16px; }
.calendar-day { min-width: 0; min-height: 220px; display: flex; flex-direction: column; align-items: flex-start; padding: 12px 10px; border: 1px solid var(--line); border-radius: 7px; text-align: left; background: #f4f6f3; color: var(--ink); font: inherit; }
.calendar-date { display: flex; justify-content: space-between; gap: 8px; align-items: center; width: 100%; border-bottom: 1px solid var(--line); padding-bottom: 9px; margin-bottom: 14px; }
.calendar-date span { font-size: 9px; text-transform: uppercase; letter-spacing: .8px; }
.calendar-date b { font-size: 16px; }
.matchup-day { background: #fff; }
button.matchup-day:hover { border-color: var(--accent); background: #f1f7eb; }
.venue { font-size: 8px; font-weight: 700; letter-spacing: 1px; color: var(--muted); }
.opponent-code { font-size: 26px; line-height: 1.3; margin-top: 6px; }
.opponent-name { font-size: 10px; line-height: 1.5; margin: 3px 0 14px; overflow-wrap: anywhere; }
.calendar-score { font: 600 12px/1.5 'Space Grotesk', sans-serif; margin-top: auto; }
.calendar-status { font-size: 9px; color: var(--muted); margin-top: 6px; }
.calendar-day .provisional { margin: 5px 0 0; font-size: 7px; padding: 3px; max-width: 100%; }
.game-win { border-top: 3px solid #4b875e; }
.game-loss { border-top: 3px solid #b8735e; }
.game-win .calendar-score { color: #28724d; }
.game-loss .calendar-score { color: #a44635; }
.off-label { font-size: 9px; color: #85908b; margin-top: 14px; letter-spacing: 1px; }
.rest-line { width: 20px; height: 2px; background: #c6cec8; margin-top: 12px; }
.week-footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 0 18px 16px; font-size: 10px; color: var(--muted); }
.week-footer p { margin: 0; font-weight: 600; color: var(--ink); }
.season-options summary { font-size: 11px; color: var(--muted); cursor: pointer; }
.season-options .settings { margin-top: 16px; }
.controls .section-title { margin-bottom: 14px; }
.button.primary { background: #176d59; }
.button.primary:hover:not(:disabled) { background: #105440; }
.my-team-row { background: #eef6e4; }
.my-team-row .team-cell { box-shadow: inset 3px 0 #579746; }
.metrics strong { font-size: 18px; }
@media (max-width: 1250px) {
  .week-days { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .franchise-hero { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }
  .franchise-mark { display: none; }
}
@media (max-width: 600px) {
  main { padding-top: 18px; }
  .franchise-hero { grid-template-columns: minmax(0, 1fr); padding: 22px; gap: 20px; }
  .franchise-hero h1 { font-size: 30px; }
  .next-match { padding: 16px; }
  .next-match h2 { font-size: 20px; }
  .week-toolbar { padding: 18px; }
  .week-days { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 12px; }
  .calendar-day { min-height: 205px; padding: 12px; }
  .rest-day { min-height: 130px; }
  .metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .metrics > div:last-child { grid-column: 1 / -1; }
  .metrics strong { font-size: 17px; }
  #runWeek { width: 100%; }
}

.pickup-setting { border: 1px solid var(--line); border-radius: 7px; padding: 12px; margin-top: 16px; background: var(--paper); }
.pickup-setting label { display: flex; align-items: flex-start; gap: 8px; color: var(--ink); font-size: 11px; }
.pickup-setting input { flex-shrink: 0; accent-color: var(--accent); margin: 2px 0 0; }
.pickup-setting p, .pickup-notice p:not(.eyebrow) { font-size: 10px; color: var(--muted); line-height: 1.65; margin: 8px 0 0; }
.pickup-notice { border: 1px solid #c6d9b9; border-radius: 7px; background: #f2f7eb; padding: 14px; margin: 16px 0 8px; }
.pickup-notice strong { display: block; font-size: 14px; line-height: 1.4; overflow-wrap: anywhere; }
.pickup-notice .eyebrow { font-size: 8px; margin: 0 0 8px; }
.pickup-notice button { margin-top: 12px; }
