:root { --ink:#11110f; --muted:#6d675f; --paper:#f6f0e5; --panel:#fffdf8; --line:#d8d0c3; --green:#006b58; --blue:#075fa6; --message-paper:#f2f1df; --message-border:#cbd2ae; --shadow:0 18px 50px rgba(53,39,20,.09); }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
a { color:inherit; }
.site-header { min-height:70px; padding:.65rem clamp(1rem,4vw,3rem); display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:1.5rem; align-items:center; border-bottom:1px solid rgba(17,17,15,.12); background:rgba(246,240,229,.92); backdrop-filter:blur(12px); }
.brand-lockup { display:flex; align-items:center; gap:.75rem; font-size:clamp(1.2rem,2vw,1.8rem); font-weight:800; letter-spacing:-.02em; white-space:nowrap; }
.brand-logo-link,.brand-title-link { border-radius:4px; color:var(--ink); text-decoration:none; }
.brand-logo-link { display:inline-flex; }
.brand-logo-link:focus-visible,.brand-title-link:focus-visible { outline:3px solid rgba(0,107,88,.3); outline-offset:3px; }
.brand-prefix,.brand-section { display:inline-block; }
.brand-prefix { flex:none; }
.brand-section { color:var(--green); }
.brand-mark { display:block; width:48px; height:48px; object-fit:contain; }
.header-actions { display:flex; align-items:center; justify-content:flex-end; gap:22px; }
nav { display:flex; gap:1.2rem; flex-wrap:nowrap; font-size:clamp(.75rem,1.0875vw,.975rem); font-weight:500; white-space:nowrap; }
nav a,footer a { text-underline-offset:4px; }
.primary-nav a { position:relative; text-decoration:none; }
.primary-nav a::after { content:""; position:absolute; right:0; bottom:-7px; left:0; height:2px; background:var(--green); transform:scaleX(0); transition:transform .18s ease; }
.primary-nav a:hover::after,.primary-nav a:focus-visible::after,.primary-nav a.active::after { transform:scaleX(1); }
.site-title { justify-self:center; color:var(--ink); font-size:clamp(1.15rem,2vw,1.75rem); font-weight:800; letter-spacing:-.02em; text-align:center; white-space:nowrap; }
.site-header .primary-nav { justify-content:flex-end; }
main { width:min(1500px,calc(100% - 48px)); margin:0 auto; }
.eyebrow { margin:0 0 10px; color:var(--green); font-size:12px; font-weight:850; letter-spacing:.14em; text-transform:uppercase; }
h1 { margin:0; font-size:clamp(56px,8vw,104px); line-height:.86; letter-spacing:-.075em; }
.lede { max-width:720px; margin:28px 0 0; color:var(--muted); font-size:clamp(19px,2vw,27px); line-height:1.35; letter-spacing:-.025em; }
.lookup label { display:block; margin-bottom:5px; font-size:10px; font-weight:850; text-align:center; text-transform:uppercase; letter-spacing:.12em; }
.page-toolbar { width:min(1500px,calc(100% - 48px)); margin:16px auto 0; padding:12px 16px; border:1px solid var(--line); border-radius:14px; background:var(--panel); box-shadow:0 8px 24px rgba(53,39,20,.06); }
.pitcher-toolbar .lookup { width:min(100%,520px); margin:0 auto; }
.period-selector { display:flex; width:max-content; max-width:100%; margin:10px auto 0; padding:3px; border:1px solid var(--line); border-radius:10px; background:var(--paper); }
.period-selector button { padding:7px 12px; border:0; border-radius:7px; color:var(--muted); background:transparent; font:700 12px/1.2 inherit; cursor:pointer; }
.period-selector button[aria-pressed="true"] { color:white; background:var(--green); }
.search-shell { position:relative; }
.search-shell input { width:100%; height:48px; padding:0 46px 0 17px; border:1px solid var(--line); border-radius:14px; background:var(--panel); color:var(--ink); font:inherit; font-size:15px; box-shadow:0 8px 24px rgba(53,39,20,.08); }
.search-shell input:focus { outline:3px solid rgba(0,107,88,.2); border-color:var(--green); }
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:active { -webkit-text-fill-color:var(--ink); -webkit-box-shadow:0 0 0 1000px var(--message-paper) inset; caret-color:var(--ink); }
input:-webkit-autofill:focus { -webkit-text-fill-color:var(--ink); -webkit-box-shadow:0 0 0 1000px var(--message-paper) inset,0 0 0 3px rgba(0,107,88,.2); caret-color:var(--ink); }
input:autofill { color:var(--ink); background-color:var(--message-paper); box-shadow:0 0 0 1000px var(--message-paper) inset; caret-color:var(--ink); }
.search-icon { position:absolute; right:16px; top:7px; font-size:26px; color:var(--green); }
.visually-hidden { position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.info-button { width:34px; height:34px; border:2px solid var(--green); border-radius:50%; color:var(--green); background:transparent; font:800 18px/1 Georgia,serif; cursor:pointer; }
.info-button:hover,.info-button:focus-visible { color:white; background:var(--green); outline:none; }
.player-heading { padding:30px 0 22px; display:flex; justify-content:space-between; align-items:flex-end; }
.team-chip { display:inline-block; margin:0 0 7px; padding:5px 9px; color:white; background:var(--blue); border-radius:7px; font-size:12px; font-weight:850; letter-spacing:.08em; }
h2 { margin:0; font-size:clamp(38px,5vw,72px); line-height:.95; letter-spacing:-.055em; }
.summary-stats { display:flex; gap:48px; text-align:right; }
.summary-stats span { display:block; font-size:34px; font-weight:850; letter-spacing:-.05em; }
.summary-stats small { color:var(--muted); }
.period-summary span { font-size:17px; letter-spacing:-.02em; }
.period-summary small { display:block; margin-top:4px; font-size:11px; white-space:nowrap; }
.season-line { display:grid; grid-template-columns:minmax(150px,.7fr) minmax(0,3fr); overflow:hidden; margin-bottom:20px; border:1px solid var(--line); border-radius:18px; color:white; background:#11110f; box-shadow:var(--shadow); }
.season-line-title { display:flex; flex-direction:column; justify-content:center; padding:18px 22px; background:var(--green); text-transform:uppercase; letter-spacing:.08em; }
.season-line-title span { font-size:17px; font-weight:850; }
.season-line-title small { margin-top:4px; font-size:10px; font-weight:750; opacity:.8; }
.season-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); }
.season-metric { padding:14px 18px; border-left:1px solid rgba(255,255,255,.2); text-align:center; }
.season-metric small { display:block; color:#d7d4ca; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.season-metric strong { display:block; margin:3px 0 1px; font-size:30px; line-height:1; }
.season-rank { min-height:14px; color:#d6b928; font-size:11px; font-weight:850; text-transform:uppercase; }
.lab-grid { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(500px,.8fr); gap:20px; }
.chart-card,.arsenal-card { min-height:640px; padding:28px; border:1px solid var(--line); border-radius:24px; background:var(--panel); box-shadow:var(--shadow); }
.arsenal-card { display:flex; flex-direction:column; }
.card-heading { min-height:58px; display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }
h3 { margin:0; font-size:25px; letter-spacing:-.035em; }
.chart-note { margin:0; color:var(--muted); font-size:12px; }
.canvas-wrap { position:relative; height:490px; margin-top:8px; }
#location-chart { width:100%; height:100%; display:block; }
.tooltip { position:absolute; z-index:2; pointer-events:none; padding:9px 11px; border-radius:9px; color:white; background:rgba(17,17,15,.9); font-size:12px; box-shadow:0 5px 20px rgba(0,0,0,.2); transform:translate(-50%,-120%); }
.legend { display:flex; justify-content:center; flex-wrap:wrap; gap:10px 18px; }
.legend-item { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:12px; font-weight:700; }
.legend-dot { width:9px; height:9px; border-radius:50%; }
.column-labels { display:grid; grid-template-columns:54px 52px 62px 62px; gap:8px; color:var(--muted); font-size:10px; font-weight:800; text-align:right; text-transform:uppercase; letter-spacing:.05em; }
.arsenal-list { margin-top:14px; }
.arsenal-empty { margin:auto 0; padding:40px 20px; color:var(--muted); text-align:center; line-height:1.5; }
.rank-note { margin:auto 0 0; padding-top:16px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; line-height:1.4; }
.methodology-note { margin:6px 0 0; color:var(--muted); font-size:9px; font-style:italic; line-height:1.35; }
.method-card .trade-method{font-size:11px;line-height:1.35}
.pitch-row { position:relative; display:grid; grid-template-columns:minmax(0,1fr) 54px 52px 62px 62px; gap:8px; align-items:center; min-height:94px; border-top:1px solid var(--line); overflow:hidden; }
.mix-fill { position:absolute; inset:14px auto 14px 0; z-index:0; border-radius:10px; opacity:.08; }
.pitch-name,.pitch-metric { position:relative; z-index:1; }
.pitch-name { display:grid; grid-template-columns:13px 1fr; gap:11px; align-items:center; }
.pitch-swatch { width:13px; height:42px; border-radius:8px; }
.pitch-name strong { display:block; font-size:19px; letter-spacing:-.025em; }
.pitch-name small { display:block; margin-top:3px; color:var(--muted); }
.pitch-metric { text-align:right; font-size:17px; font-weight:850; font-variant-numeric:tabular-nums; }
.pitch-rank { font-size:14px; }
footer { min-height:76px; padding:24px clamp(24px,5vw,80px); display:flex; justify-content:space-between; gap:20px; border-top:1px solid var(--line); color:var(--muted); font-size:13px; }
.lefty-page { width:min(1400px,calc(100% - 32px)); padding:8px 0 64px; }
.downloads-page { width:min(1180px,calc(100% - 48px)); padding:70px 0 80px; }
.lefty-intro,.downloads-intro { text-align:center; }
.lefty-intro .lede,.downloads-intro .lede { margin-right:auto; margin-left:auto; }
.lefty-feature { margin:0; padding:10px; border:1px solid var(--line); border-radius:24px; background:var(--panel); box-shadow:var(--shadow); }
.lefty-feature img { display:block; width:100%; height:auto; border-radius:18px; }
.lefty-feature figcaption { max-width:900px; margin:18px auto 4px; color:var(--muted); font-size:14px; line-height:1.55; text-align:center; }
.download-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; margin-top:56px; }
.download-card { min-height:300px; padding:34px; border:1px solid var(--line); border-radius:24px; background:var(--panel); box-shadow:var(--shadow); text-decoration:none; transition:transform .18s ease,border-color .18s ease; }
.download-card:hover,.download-card:focus-visible { border-color:var(--green); outline:none; transform:translateY(-3px); }
.download-card h2 { margin:26px 0 12px; font-size:36px; letter-spacing:-.05em; }
.download-card p { min-height:72px; color:var(--muted); line-height:1.55; }
.download-card strong { color:var(--green); }
.download-type { display:inline-block; padding:6px 9px; border-radius:7px; color:white; background:var(--blue); font-size:11px; font-weight:850; letter-spacing:.1em; }
.about-dialog { width:min(720px,calc(100% - 32px)); padding:44px; border:1px solid var(--line); border-radius:24px; color:var(--ink); background:var(--panel); box-shadow:0 30px 100px rgba(17,17,15,.28); }
.about-dialog::backdrop { background:rgba(17,17,15,.55); backdrop-filter:blur(5px); }
.modal-close { position:absolute; top:18px; right:20px; width:36px; height:36px; border:0; border-radius:50%; color:var(--ink); background:rgba(17,17,15,.07); font-size:26px; line-height:1; cursor:pointer; }
.modal-details { margin-top:32px; padding-top:24px; display:grid; grid-template-columns:1fr .7fr; gap:30px; border-top:1px solid var(--line); }
.modal-details strong,.how-to-read strong { font-size:12px; text-transform:uppercase; letter-spacing:.1em; }
.modal-details p,.how-to-read p { margin:8px 0 0; color:var(--muted); font-size:14px; line-height:1.55; }
.how-to-read { margin-top:26px; padding:22px; border:1px solid var(--message-border); border-radius:16px; color:var(--green); background:var(--message-paper); }
.loading { position:fixed; inset:0; display:grid; place-items:center; background:var(--paper); font-size:18px; font-weight:800; transition:opacity .25s ease; }
.loading.done { opacity:0; pointer-events:none; }
.error { color:#9f231f; }
.card-page{width:min(1400px,calc(100% - 48px));padding:26px 0 64px}.card-intro{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;align-items:start}.card-intro h1{font-size:clamp(36px,3.5vw,48px);line-height:1;letter-spacing:-.05em;white-space:nowrap}.method-card{padding:20px 28px;border:1px solid var(--line);border-radius:22px;background:var(--panel);box-shadow:var(--shadow)}.method-card p{margin:8px 0 0;color:var(--muted);line-height:1.4}.method-card small{display:block;margin-top:12px;color:var(--green);font-weight:750}.team-section{margin-top:24px}.team-section h2{font-size:clamp(34px,3.3vw,44px);white-space:nowrap}.player-section{margin-top:56px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:20px}.section-heading label,.card-filters label{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.section-heading select,.card-filters select,.card-filters input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font:inherit;text-transform:none;letter-spacing:normal}.team-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.team-card{padding:18px;border:1px solid var(--line);border-radius:15px;background:var(--panel);text-align:left;cursor:pointer}.team-card:hover,.team-card:focus-visible{border-color:var(--green);outline:none}.team-card span,.team-card small{display:block}.team-card span{font-weight:850}.team-card strong{display:block;margin:15px 0 4px;font-size:28px}.team-card small{color:var(--muted)}.above{color:#06745e}.below{color:#ad2f27}.pace{color:var(--muted)}.card-filters{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:14px;margin-bottom:22px}.player-detail{display:flex;justify-content:space-between;gap:32px;padding:28px;margin-bottom:20px;border-radius:20px;color:white;background:#102a43}.player-detail h3{font-size:38px}.player-detail small{color:#c8d9e6}.detail-metrics{display:flex;gap:30px;text-align:right}.detail-metrics p{margin:0}.detail-metrics strong,.detail-metrics span{display:block}.detail-metrics strong{font-size:24px}.detail-metrics span{margin-top:5px;color:#c8d9e6;font-size:11px}.table-shell{overflow:auto;border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}th,td{padding:15px 17px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}th:first-child,td:first-child{text-align:left}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}tbody tr{cursor:pointer}tbody tr:hover,tbody tr:focus{background:#f0eadf;outline:none}td small{display:block;margin-top:3px;color:var(--muted)}.empty-state{text-align:center;color:var(--muted)}
@media (max-width:1400px) { .site-header{grid-template-columns:minmax(0,1fr) auto}.brand-lockup{min-width:0}.site-title{justify-self:end}.header-actions{grid-column:1 / -1;grid-row:2;justify-content:flex-end}.site-header .primary-nav{justify-content:flex-end} }
.team-card:hover,.team-card:focus-visible{border-color:var(--team-color,var(--green));box-shadow:0 0 0 2px color-mix(in srgb,var(--team-color,var(--green)) 18%,transparent)}
.team-card .team-tag{display:inline-flex;align-items:center;min-width:3.25rem;padding:.35rem .62rem;border-radius:999px;background:var(--team-color);color:var(--team-ink);font-size:12px;font-weight:850;letter-spacing:.045em;line-height:1;text-transform:uppercase;box-shadow:inset 0 0 0 1px rgb(255 255 255 / .18)}
.team-card{position:relative;overflow:hidden;isolation:isolate}.team-card .team-watermark{position:absolute;z-index:0;top:50%;right:0;width:112px;height:112px;object-fit:contain;opacity:.5;transform:translate(50%,-50%);pointer-events:none;user-select:none}.team-card .team-tag,.team-card strong,.team-card small{position:relative;z-index:1}
.team-controls{display:flex;align-items:end;gap:12px}.team-controls label{min-width:155px}.team-controls select{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font:inherit;text-transform:none;letter-spacing:normal}
.player-table-shell{max-height:min(72vh,760px);overflow:auto;scrollbar-gutter:stable}.player-table-shell thead{position:sticky;top:0;z-index:2;background:var(--panel);box-shadow:0 1px 0 var(--line)}

@media (max-width:1080px){.team-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.card-intro{grid-template-columns:1fr}.card-intro h1,.team-section h2{white-space:normal}.detail-metrics{flex-wrap:wrap}}
@media (max-width:920px) { main{width:min(100% - 28px,760px)} .lab-grid{grid-template-columns:1fr} .chart-card,.arsenal-card{min-height:auto;padding:20px} }
@media (max-width:700px) { .site-header{grid-template-columns:1fr}.site-title{justify-self:start}.header-actions{grid-column:1;grid-row:3;justify-content:flex-start;width:100%;overflow-x:auto;padding-bottom:4px}.site-header .primary-nav{justify-content:flex-start;flex-wrap:nowrap;white-space:nowrap}.page-toolbar{width:min(100% - 28px,700px)}.season-line{grid-template-columns:1fr}.season-line-title{padding:11px 16px}.season-metrics{grid-template-columns:repeat(2,1fr)}.season-metric:nth-child(odd){border-left:0}.season-metric:nth-child(n+3){border-top:1px solid rgba(255,255,255,.2)}.lefty-page{width:min(100% - 16px,700px);padding-top:6px}.downloads-page{width:min(100% - 28px,600px);padding-top:44px}.lefty-feature{padding:6px;border-radius:16px}.download-grid{grid-template-columns:1fr}.download-card{min-height:0} }
@media (max-width:700px){.card-page{width:min(100% - 28px,600px);padding-top:44px}.team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.team-controls{width:100%}.team-controls label{flex:1;min-width:0}.card-filters{grid-template-columns:1fr 1fr}.player-detail{display:block}.detail-metrics{margin-top:24px;text-align:left}.section-heading{align-items:start;flex-direction:column}}
@media (max-width:560px) { .site-header{padding:.65rem 1rem;gap:.75rem}.brand-lockup{font-size:1.2rem}.site-title{font-size:1.05rem}.player-heading{padding-top:22px;align-items:flex-start;gap:22px}.summary-stats{gap:18px}.summary-stats span{font-size:25px}.canvas-wrap{height:390px}.card-heading{display:block}.chart-note{margin-top:8px}.column-labels{display:none}.pitch-row{grid-template-columns:minmax(0,1fr) 46px 46px 54px;min-height:82px}.pitch-row .pitch-rank{display:none}.about-dialog{padding:38px 24px 24px}.modal-details{grid-template-columns:1fr} footer{display:block} footer a{display:inline-block;margin-top:10px} }
