:root{--navy: #1B2A4A;--navy-dark: #0E1A2E;--navy-light: #243558;--blue: #2E75B6;--blue-light: #4A90D9;--green: #548235;--green-light: #6FA842;--gold: #B8922A;--teal: #2C5F7C;--white: #FFFFFF;--off-white: #F5F4F0;--gray-100: #EDECEA;--gray-200: #D4D2CC;--gray-600: #4A4845;--gray-700: #2A2F38;--gray-800: #1A1E26;--pitch-fb: #D22D49;--pitch-si: #FE9D00;--pitch-ct: #93519D;--pitch-cb: #00D1ED;--pitch-sl: #EEE716;--pitch-sw: #87C45D;--pitch-ch: #1DBE3A;--pitch-sp: #FF8FBA;--pitch-kn: #888888;--pitch-oth:#A9A9A9;--pace-rushed: #E63946;--pace-ideal: #6FA842;--pace-thoughtful:#4A90D9;--pace-rest: #6E6B65;--color-bg: var(--navy-dark);--color-bg-alt: var(--navy);--color-bg-card: #141A26;--color-bg-strong: var(--navy-light);--color-text: var(--white);--color-text-muted: rgba(255, 255, 255, .72);--color-text-faint: rgba(255, 255, 255, .48);--color-text-on-light: var(--navy-dark);--color-border: rgba(255, 255, 255, .1);--color-border-strong: rgba(255, 255, 255, .2);--color-rule: rgba(255, 255, 255, .06);--color-accent-academy: var(--blue);--color-accent-unprompted: var(--gold);--color-accent-foundations: var(--green);--color-accent-classes: var(--teal);--color-cta: var(--blue);--color-cta-hover: var(--blue-light);--color-link: var(--blue-light);--color-success: #4ADE80;--color-warning: #F59E0B;--color-danger: #F87171;--text-display: clamp(48px, 6vw, 88px);--text-h1: clamp(36px, 4vw, 56px);--text-h2: clamp(24px, 2.5vw, 32px);--text-h3: 20px;--text-body-lead: 18px;--text-body: 15px;--text-caption: 12px;--text-mono: 13px;--leading-display: .95;--leading-tight: 1.1;--leading-snug: 1.4;--leading-normal: 1.6;--tracking-display: -.01em;--tracking-tight: .02em;--tracking-eyebrow: .18em;--measure-narrow: 52ch;--measure-default: 64ch;--measure-wide: 72ch;--weight-light: 300;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--font-sans: "Barlow", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-display: "Barlow Condensed", "Barlow", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--space-4xs: 4px;--space-3xs: 8px;--space-2xs: 12px;--space-xs: 20px;--space-sm: 32px;--space-md: 56px;--space-lg: 96px;--space-xl: 144px;--section-pad-primary: var(--space-lg);--section-pad-secondary: var(--space-md);--section-pad-supporting: var(--space-sm);--container-max: 1280px;--container-pad: 32px;--container-pad-md: 24px;--container-pad-sm: 16px;--radius-none: 0;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 2px 12px rgba(0, 0, 0, .2);--shadow-md: 0 8px 32px rgba(0, 0, 0, .32);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .44);--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .15s;--duration-base: .25s;--duration-slow: .55s;--tap-min: 48px}@media (prefers-reduced-motion: reduce){:root{--duration-fast: 0s;--duration-base: 0s;--duration-slow: 0s}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-padding-top:80px;touch-action:manipulation}body{margin:0;font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg);min-height:100vh;min-height:100dvh}h1,h2,h3,h4,h5,h6,p,ul,ol,li{margin:0;padding:0}ul,ol{list-style:none}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer;min-height:var(--tap-min)}.container{max-width:var(--container-max);margin-inline:auto;padding-inline:var(--container-pad)}@media (max-width: 768px){.container{padding-inline:var(--container-pad-md)}}@media (max-width: 480px){.container{padding-inline:var(--container-pad-sm)}}app-root{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.app-header{background:var(--color-bg-alt);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}.app-header__inner{display:flex;align-items:center;gap:var(--space-md);height:64px}.app-header__logo-link{display:inline-flex;align-items:center;gap:var(--space-2xs);text-decoration:none;color:inherit}.app-header__logo-link:hover{text-decoration:none}.app-header__logo{font-family:var(--font-display);font-weight:var(--weight-extrabold);font-size:22px;letter-spacing:.02em;text-transform:uppercase;color:var(--color-text)}.app-header__badge{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:11px;letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-muted);padding:4px 10px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm)}.app-header__nav{display:flex;gap:var(--space-sm);margin-left:auto;font-family:var(--font-display);font-size:var(--text-caption);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase}.app-header__nav a{color:var(--color-text-muted);text-decoration:none}.app-header__nav a:hover{color:var(--color-text)}.app-header__signout{font:inherit;letter-spacing:inherit;text-transform:inherit;color:var(--color-text-muted);background:none;border:none;padding:0;cursor:pointer}.app-header__signout:hover{color:var(--color-text)}.athlete-header{display:grid;grid-template-columns:1fr auto;align-items:end;gap:var(--space-md);margin-bottom:var(--space-sm)}.athlete-header__name{font-family:var(--font-display);font-weight:var(--weight-extrabold);font-size:var(--text-h1);line-height:var(--leading-tight);letter-spacing:var(--tracking-display)}.athlete-header__sub{color:var(--color-text-muted);font-size:var(--text-body-lead);margin-top:var(--space-3xs)}.athlete-header__stats{display:grid;grid-template-columns:repeat(4,auto);gap:var(--space-sm)}.athlete-header__stats li{display:flex;flex-direction:column;gap:var(--space-4xs);text-align:right}.stat__label{font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-faint)}.stat__value{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:var(--text-h3);color:var(--color-text)}@media (max-width: 720px){.athlete-header{grid-template-columns:1fr}.athlete-header__stats{grid-template-columns:repeat(2,1fr)}.athlete-header__stats li{text-align:left}}ta-trend{display:block}.ta-trend__toolbar{display:flex;flex-direction:column;gap:var(--space-2xs);margin-bottom:var(--space-2xs);padding:var(--space-2xs);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ta-trend__toolbar-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2xs)}.ta-trend__label{font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-muted)}.ta-trend__metric{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-2xs);font:inherit;min-height:36px}.ta-trend__range,.ta-trend__chips{display:flex;gap:4px;flex-wrap:wrap}.chip{background:var(--color-bg);color:var(--color-text-muted);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:4px 12px;font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);cursor:pointer;min-height:32px}.chip.is-active{background:var(--color-cta);color:var(--white);border-color:var(--color-cta)}.pitch-chip{border-left:4px solid var(--chip-color)}.pitch-chip.is-active{background:var(--chip-color);color:var(--navy-dark);border-color:var(--chip-color)}.ta-trend__toggle{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-caption);color:var(--color-text-muted);cursor:pointer;margin-left:auto}.ta-trend__toggle input[type=checkbox]{accent-color:var(--color-cta);width:16px;height:16px}.ta-trend__canvas-wrap{position:relative;height:420px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2xs)}.ta-trend__footer{text-align:center;font-size:var(--text-caption);color:var(--color-text-faint);margin-top:var(--space-3xs)}.ta-trend__empty{padding:var(--space-md);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.ta-trend__drill{margin-top:var(--space-2xs);background:var(--color-bg-card);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-2xs)}.ta-trend__drill-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2xs);margin-bottom:var(--space-2xs)}.ta-trend__drill-title{font-family:var(--font-display);font-size:var(--text-h3);font-weight:var(--weight-bold)}.ta-trend__drill-count{font-size:var(--text-caption);font-weight:var(--weight-regular);color:var(--color-text-muted);margin-left:var(--space-3xs)}.ta-trend__drill-close{background:transparent;border:1px solid var(--color-border-strong);color:var(--color-text-muted);border-radius:var(--radius-sm);width:32px;height:32px;font-size:18px;cursor:pointer;min-height:auto}.ta-trend__drill-close:hover{color:var(--color-text);border-color:var(--color-text)}.ta-trend__drill-list{display:flex;flex-direction:column;gap:4px}.ta-trend__drill-item{display:grid;grid-template-columns:auto auto 1fr;gap:var(--space-2xs);align-items:baseline;padding:var(--space-3xs) var(--space-2xs);background:var(--color-bg);border-radius:var(--radius-sm);border:1px solid var(--color-rule);font-family:var(--font-mono);font-size:var(--text-caption)}.ta-trend__drill-pitch{font-weight:var(--weight-bold);color:var(--color-text)}.ta-trend__drill-value{color:var(--color-text)}.ta-trend__drill-meta{color:var(--color-text-muted);text-align:right}.ta-heatmap__canvas-wrap{position:relative;width:100%;max-width:560px;margin-inline:auto;aspect-ratio:1;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2xs)}.compare-toggle{display:inline-flex;align-items:center;gap:var(--space-3xs);background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-2xs);font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-caption);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;cursor:pointer}.compare-toggle:hover{color:var(--color-text);border-color:var(--color-text)}.compare-toggle[data-active=true]{background:var(--color-cta);color:var(--white);border-color:var(--color-cta)}.compare-toggle[disabled]{opacity:.4;cursor:not-allowed}.compare-toggle__icon{font-size:16px;line-height:1}.ta-session-picker{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--space-3xs);font-family:var(--font-display);font-size:var(--text-caption)}.ta-session-picker__label{color:var(--color-text-faint);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;margin-right:var(--space-3xs)}.ta-session-picker__modes{display:inline-flex;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);overflow:hidden}.ta-session-picker__mode{background:transparent;color:var(--color-text-muted);border:0;padding:6px 12px;font:inherit;font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);cursor:pointer;min-height:32px}.ta-session-picker__mode+.ta-session-picker__mode{border-left:1px solid var(--color-border-strong)}.ta-session-picker__mode:hover:not(:disabled){color:var(--color-text);background:var(--color-bg)}.ta-session-picker__mode.is-active{background:var(--color-cta);color:var(--white)}.ta-session-picker__mode:disabled{opacity:.4;cursor:not-allowed}.ta-session-picker__dropdowns{display:inline-flex;align-items:center;gap:var(--space-3xs)}.ta-session-picker__select{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:4px 10px;font:inherit;font-weight:var(--weight-semibold);min-height:32px;cursor:pointer;max-width:280px}.ta-session-picker__vs{color:var(--color-text-faint);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase}.ta-session-legend{margin-top:var(--space-3xs)}.ta-session-legend__chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-sm);font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border-strong)}.ta-session-legend__chip--a:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--color-text)}.ta-session-legend__chip--b:before{content:"";width:10px;height:10px;border-radius:50%;background:transparent;border:2px solid var(--color-text);box-sizing:border-box}.ta-trend__range[data-disabled=true]{opacity:.4;cursor:not-allowed}.chip[disabled]{cursor:not-allowed}.ta-sessions-table__wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-card)}.ta-sessions-table{width:100%;border-collapse:collapse;font-size:var(--text-body)}.ta-sessions-table__th{text-align:left;padding:var(--space-3xs) var(--space-2xs);font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-bold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-faint);border-bottom:1px solid var(--color-border-strong);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.ta-sessions-table__th:hover{color:var(--color-text);background:var(--color-bg-strong)}.ta-sessions-table__th.is-active{color:var(--color-cta)}.ta-sessions-table__th--right{text-align:right}.ta-sessions-table__arrow{display:inline-block;width:12px;margin-left:4px;color:var(--color-cta)}.ta-sessions-table__row{cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.ta-sessions-table__row:hover{background:var(--color-bg-strong)}.ta-sessions-table__row.is-active{background:#2e75b62e;box-shadow:inset 3px 0 0 0 var(--color-cta)}.ta-sessions-table__td{padding:var(--space-3xs) var(--space-2xs);border-bottom:1px solid var(--color-rule);white-space:nowrap}.ta-sessions-table__td--right{text-align:right;font-variant-numeric:tabular-nums}.ta-sessions-table__null{color:var(--color-text-faint)}.ta-sessions-table__th--action,.ta-sessions-table__td--action{width:40px;text-align:center;padding:var(--space-3xs) var(--space-3xs)}.ta-sessions-table__delete{background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);width:28px;height:28px;line-height:1;font-size:18px;color:var(--color-text-faint);cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.ta-sessions-table__delete:hover{background:var(--color-danger);color:var(--white);border-color:var(--color-danger)}.across-sessions{margin-top:var(--space-sm)}.ta-sessions-chart__toolbar{display:flex;align-items:center;gap:var(--space-3xs);flex-wrap:wrap;margin-bottom:var(--space-3xs)}.ta-sessions-chart__hint{margin:0 0 0 auto;color:var(--color-text-faint);font-size:var(--text-caption)}.ta-sessions-chart__canvas-wrap{position:relative;height:280px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2xs)}.session-detail{margin-top:var(--space-md);padding-top:var(--space-sm);border-top:1px dashed var(--color-border-strong)}.page-section__title--sm{font-size:var(--text-h3)}.app-main{flex:1;padding-block:var(--space-md)}.app-footer{border-top:1px solid var(--color-border);padding-block:var(--space-xs);font-size:var(--text-caption);color:var(--color-text-faint)}.app-footer__inner{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.app-footer__build{font-family:var(--font-mono)}.page-section{padding-block:var(--space-sm);border-bottom:1px solid var(--color-rule)}.page-section:last-of-type{border-bottom:none}.page-section__header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-xs)}.page-section__title{font-family:var(--font-display);font-weight:var(--weight-extrabold);font-size:var(--text-h2);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);text-transform:uppercase}.page-section__sub{color:var(--color-text-muted);font-size:var(--text-caption);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:var(--tracking-tight)}.eyebrow{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-caption);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-faint);margin-bottom:var(--space-2xs)}.empty-state,.error-state{padding:var(--space-md) var(--space-sm);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.empty-state--small{padding:var(--space-sm);font-size:var(--text-caption)}.error-state{border-color:var(--color-danger);color:var(--color-danger)}.athletes-table{width:100%;border-collapse:collapse;font-size:var(--text-body)}.athletes-table thead th{text-align:left;padding:var(--space-3xs) var(--space-2xs);font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-faint);border-bottom:1px solid var(--color-border)}.athletes-table tbody td{padding:var(--space-2xs);border-bottom:1px solid var(--color-rule)}.athletes-table__row{cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.athletes-table__row:hover{background:var(--color-bg-card)}.athletes-table__name{font-weight:var(--weight-semibold);color:var(--color-text)}.athletes-table__flag{display:inline-block;width:18px;height:18px;line-height:16px;border-radius:50%;background:var(--color-warning);color:var(--navy-dark);font-size:12px;font-weight:var(--weight-bold);text-align:center;margin-left:var(--space-3xs)}.pitch-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--navy-dark)}.pitch-badge--fb{background:var(--pitch-fb)}.pitch-badge--si{background:var(--pitch-si)}.pitch-badge--ct{background:var(--pitch-ct);color:var(--white)}.pitch-badge--cb{background:var(--pitch-cb)}.pitch-badge--sl{background:var(--pitch-sl)}.pitch-badge--sw{background:var(--pitch-sw)}.pitch-badge--ch{background:var(--pitch-ch)}.pitch-badge--sp{background:var(--pitch-sp)}.pitch-badge--kn{background:var(--pitch-kn);color:var(--white)}.pitch-badge--oth{background:var(--pitch-oth);color:var(--white)}.upload-list{display:flex;flex-direction:column}.upload-list__item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-2xs) 0;border-bottom:1px solid var(--color-rule)}.upload-list__item:last-child{border-bottom:none}.upload-list__main{display:flex;flex-direction:column;gap:var(--space-4xs)}.upload-list__athlete{font-weight:var(--weight-semibold)}.upload-list__meta,.upload-list__date{color:var(--color-text-muted);font-size:var(--text-caption);font-family:var(--font-mono)}.db-status{display:inline-flex;align-items:center;gap:var(--space-3xs);padding:var(--space-3xs) var(--space-2xs);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-caption);margin-bottom:var(--space-sm)}.db-status__dot{width:8px;height:8px;border-radius:50%;background:var(--color-text-faint)}.db-status[data-state=loading] .db-status__dot{background:var(--color-warning)}.db-status[data-state=ok] .db-status__dot{background:var(--color-success)}.db-status[data-state=error] .db-status__dot{background:var(--color-danger)}ta-upload{display:block;margin-bottom:var(--space-md)}.ta-upload__zone{display:block;border:2px dashed var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-md) var(--space-sm);text-align:center;background:var(--color-bg-card);transition:border-color var(--duration-base) var(--ease-out),background var(--duration-base) var(--ease-out);cursor:pointer}label.ta-upload__zone:hover{border-color:var(--color-cta)}.ta-upload__file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ta-upload__zone.is-hover{border-color:var(--color-cta);background:var(--color-bg-strong)}.ta-upload__zone.is-busy{opacity:.75}.ta-upload__zone.is-warn{border-color:var(--color-warning);border-style:solid}.ta-upload__zone.is-ok{border-color:var(--color-success);border-style:solid}.ta-upload__zone.is-error{border-color:var(--color-danger);border-style:solid}.ta-upload__heading{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-h3);margin-bottom:var(--space-3xs)}.ta-upload__hint{color:var(--color-text-muted);font-size:var(--text-body);max-width:var(--measure-default);margin-inline:auto}.ta-upload__hint code{font-family:var(--font-mono);font-size:.9em;background:#ffffff0f;padding:2px 6px;border-radius:var(--radius-sm)}.ta-upload__browse{background:none;border:none;color:var(--color-link);text-decoration:underline;cursor:pointer;font:inherit;padding:0;min-height:auto}.ta-upload__reset,.ta-upload__submit{background:var(--color-cta);color:var(--white);border:none;padding:var(--space-3xs) var(--space-sm);font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-body);text-transform:uppercase;letter-spacing:.05em;border-radius:var(--radius-sm);margin-top:var(--space-sm);cursor:pointer;min-height:var(--tap-min)}.ta-upload__reset{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border-strong)}.ta-upload__reset:hover{color:var(--color-text);border-color:var(--color-text)}.ta-upload__submit:hover{background:var(--color-cta-hover)}.create-athlete-form{margin-top:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-2xs);text-align:left;max-width:560px;margin-inline:auto}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2xs)}@media (max-width: 560px){.form-row{grid-template-columns:1fr}}.form-field{display:flex;flex-direction:column;gap:var(--space-4xs);min-width:0}.form-field__label{font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-muted)}.form-field__optional{text-transform:none;letter-spacing:0;color:var(--color-text-faint);font-weight:var(--weight-regular)}.form-field input[type=text],.form-field input[type=date]{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-2xs);font:inherit;min-height:var(--tap-min)}.form-field input:focus{outline:2px solid var(--color-cta);outline-offset:2px}.throws-toggle{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-2xs);background:var(--color-bg)}.throws-toggle legend{padding:0 var(--space-3xs);font-family:var(--font-display);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-text-muted)}.throws-toggle label{display:inline-flex;align-items:center;gap:var(--space-4xs);margin-right:var(--space-2xs);cursor:pointer;font-weight:var(--weight-semibold)}.throws-toggle input[type=radio]{accent-color:var(--color-cta);width:18px;height:18px}.form-hint{font-size:var(--text-caption);color:var(--color-text-faint);margin-top:var(--space-3xs)}.form-actions{display:flex;gap:var(--space-2xs);justify-content:flex-end;margin-top:var(--space-2xs)}.ta-upload__zone.is-summary{border-style:solid;border-color:var(--color-border-strong);text-align:left}.ta-upload__file-list{display:flex;flex-direction:column;gap:var(--space-3xs);margin:var(--space-2xs) 0}.file-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto auto;align-items:center;gap:var(--space-2xs);padding:var(--space-3xs) var(--space-2xs);border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-bg);font-size:var(--text-body)}.file-row__icon{font-family:var(--font-mono);font-weight:var(--weight-bold);text-align:center}.file-row__name{font-family:var(--font-mono);font-size:var(--text-caption);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.file-row__status{color:var(--color-text-muted);font-size:var(--text-caption);text-align:right;white-space:nowrap}@media (max-width: 640px){.file-row{grid-template-columns:24px minmax(0,1fr);grid-template-areas:"icon name" ".    status" ".    action"}.file-row__icon{grid-area:icon;align-self:start}.file-row__name{grid-area:name;white-space:normal;word-break:break-word}.file-row__status{grid-area:status;text-align:left;white-space:normal}.file-row__action{grid-area:action;justify-self:start}}.file-row__action{background:var(--color-cta);color:var(--white);border:none;padding:4px 10px;font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);border-radius:var(--radius-sm);cursor:pointer;min-height:32px}.file-row__action:hover{background:var(--color-cta-hover)}.file-row--pending .file-row__icon{color:var(--color-text-faint)}.file-row--parsing .file-row__icon{color:var(--color-warning)}.file-row--ok .file-row__icon{color:var(--color-success)}.file-row--neutral .file-row__icon{color:var(--color-text-muted)}.file-row--warn .file-row__icon{color:var(--color-warning)}.file-row--error .file-row__icon{color:var(--color-danger)}.file-row--ok{border-color:#4ade804d}.file-row--warn{border-color:#f59e0b4d}.file-row--error{border-color:#f871714d}.ta-upload__stats{font-size:var(--text-body);color:var(--color-text-muted);margin:var(--space-2xs) 0;font-family:var(--font-mono)}.ta-upload__stats strong{color:var(--color-text)}.hero__checklist{display:grid;gap:var(--space-3xs);font-size:var(--text-body)}.hero__checklist li{display:flex;gap:var(--space-2xs);align-items:baseline}.check,.pending{font-family:var(--font-mono);font-weight:var(--weight-bold);width:1.4em}.check{color:var(--color-success)}.pending{color:var(--color-text-faint)}.ta-pr-trend{display:flex;flex-direction:column;gap:var(--space-sm)}.ta-pr-trend__legend{display:flex;flex-wrap:wrap;gap:var(--space-sm);font-size:var(--font-sm);color:var(--color-text-soft)}.ta-pr-trend__chip{display:inline-flex;align-items:center;gap:var(--space-2xs)}.ta-pr-trend__chip-dot{display:inline-block;width:.65em;height:.65em;border-radius:50%}.ta-pr-trend__canvas-wrap{position:relative;height:320px}.ta-throws-timeline{display:flex;flex-direction:column;gap:var(--space-sm)}.ta-throws-timeline__legend{display:flex;flex-wrap:wrap;gap:var(--space-sm);font-size:var(--font-sm);color:var(--color-text-soft)}.ta-throws-timeline__chip{display:inline-flex;align-items:center;gap:var(--space-2xs)}.ta-throws-timeline__chip-dot{display:inline-block;width:.65em;height:.65em;border-radius:50%}.ta-throws-timeline__canvas-wrap{position:relative;height:360px}.ta-throws-timeline__footer{margin:0;font-size:var(--font-sm);color:var(--color-text-soft)}.empty-state__sub{margin-top:var(--space-2xs);font-size:var(--font-sm);color:var(--color-text-faint)}.athlete-tabs{display:flex;gap:var(--space-2xs);border-bottom:1px solid var(--color-border);margin:var(--space-md) 0 0;padding:0;flex-wrap:wrap}.athlete-tabs__tab{display:inline-block;padding:var(--space-sm) var(--space-md);color:var(--color-text-soft);text-decoration:none;font-weight:var(--weight-medium);font-size:var(--font-sm);letter-spacing:.02em;border-bottom:2px solid transparent;transition:color .12s ease,border-color .12s ease}.athlete-tabs__tab:hover{color:var(--color-text);border-bottom-color:var(--color-border-strong, var(--color-border))}.athlete-tabs__tab.is-active{color:var(--color-text);border-bottom-color:var(--color-accent, var(--color-text))}.athlete-tab-content{margin-top:var(--space-md)}.profile-list{display:grid;gap:var(--space-2xs);margin:0}.profile-list__row{display:grid;grid-template-columns:200px 1fr;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border)}.profile-list__row dt{color:var(--color-text-soft);font-size:var(--font-sm);text-transform:uppercase;letter-spacing:.04em;margin:0}.profile-list__row dd{margin:0;color:var(--color-text)}.profile-flag{display:inline-block;margin-left:var(--space-2xs);padding:2px 6px;font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.05em;background:var(--color-warn-bg, rgba(255, 193, 7, .15));color:var(--color-warn, #ffc107);border-radius:3px}@media (max-width: 640px){.profile-list__row{grid-template-columns:1fr;gap:0}}.ta-files{display:flex;flex-direction:column;gap:var(--space-md)}.ta-files__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.ta-files__count{margin:0;color:var(--color-text-soft);font-size:var(--font-sm)}.ta-files__add{background:var(--color-accent, #4a90e2);color:#fff;border:0;padding:var(--space-xs) var(--space-md);border-radius:4px;font-weight:var(--weight-medium);cursor:pointer}.ta-files__add:hover{filter:brightness(1.1)}.ta-files__groups{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2xs)}.ta-files__group{border:1px solid var(--color-border);border-radius:4px;overflow:hidden;background:var(--color-surface, transparent)}.ta-files__group-header{width:100%;display:grid;grid-template-columns:24px 200px 1fr;gap:var(--space-sm);align-items:center;padding:var(--space-sm) var(--space-md);background:transparent;border:0;color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.ta-files__group-header:hover{background:#ffffff08}.ta-files__group-caret{color:var(--color-text-faint);font-size:var(--font-xs)}.ta-files__group-date{font-weight:var(--weight-medium)}.ta-files__group-summary{color:var(--color-text-soft);font-size:var(--font-sm)}.ta-files__items{list-style:none;margin:0;padding:0;border-top:1px solid var(--color-border)}.ta-files__item{display:grid;grid-template-columns:32px 1fr auto;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);align-items:center;border-bottom:1px solid var(--color-border)}.ta-files__item:last-child{border-bottom:0}.ta-files__item-icon{font-size:1.4em}.ta-files__item-main{min-width:0}.ta-files__item-name{font-weight:var(--weight-medium);word-break:break-all}.ta-files__item-meta{color:var(--color-text-soft);font-size:var(--font-sm);margin-top:2px}.ta-files__item-notes{color:var(--color-text);font-size:var(--font-sm);margin-top:var(--space-2xs);font-style:italic}.ta-files__item-legacy{color:var(--color-text-faint);font-size:var(--font-xs);margin-top:var(--space-2xs);font-style:italic}.ta-files__item-action{background:transparent;border:1px solid var(--color-border);color:var(--color-text);padding:var(--space-2xs) var(--space-sm);border-radius:3px;font-size:var(--font-sm);cursor:pointer}.ta-files__item-action:hover{border-color:var(--color-accent, var(--color-text))}.ta-files__modal{border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg, #1a1a1a);color:var(--color-text);padding:0;max-width:520px;width:90%}.ta-files__modal::backdrop{background:#0009}.ta-files__modal-form{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-lg)}.ta-files__modal-title{margin:0;font-size:var(--font-lg)}.ta-files__modal-sub{margin:0 0 var(--space-sm);color:var(--color-text-soft);font-size:var(--font-sm)}.ta-files__modal-cancel,.ta-files__modal-submit{padding:var(--space-xs) var(--space-md);border-radius:4px;cursor:pointer;font-weight:var(--weight-medium)}.ta-files__modal-cancel{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.ta-files__modal-submit{background:var(--color-accent, #4a90e2);border:0;color:#fff}.ta-files__modal-submit[disabled]{opacity:.5;cursor:not-allowed}.page-section__header--row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.page-section__actions{display:flex;align-items:flex-start;gap:var(--space-sm);flex-wrap:wrap}.ta-add-pitcher__open{background:var(--color-accent, #4a90e2);color:#fff;border:0;padding:var(--space-xs) var(--space-md);border-radius:4px;font-weight:var(--weight-medium);cursor:pointer;font-size:var(--font-sm)}.ta-add-pitcher__open:hover{filter:brightness(1.1)}.ta-add-pitcher__modal{border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg, #1a1a1a);color:var(--color-text);padding:0;max-width:560px;width:92%}.ta-add-pitcher__modal::backdrop{background:#0009}.ta-add-pitcher__form{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-lg)}.ta-add-pitcher__title{margin:0;font-size:var(--font-lg)}.ta-add-pitcher__sub{margin:0 0 var(--space-sm);color:var(--color-text-soft);font-size:var(--font-sm)}.ta-add-pitcher__error{background:#e74c3c1a;border:1px solid rgba(231,76,60,.5);color:#ff6b5b;padding:var(--space-xs) var(--space-sm);border-radius:4px;font-size:var(--font-sm)}.ta-add-pitcher__cancel,.ta-add-pitcher__submit{padding:var(--space-xs) var(--space-md);border-radius:4px;cursor:pointer;font-weight:var(--weight-medium)}.ta-add-pitcher__cancel{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.ta-add-pitcher__submit{background:var(--color-accent, #4a90e2);border:0;color:#fff}.ta-add-pitcher__submit[disabled],.ta-add-pitcher__cancel[disabled]{opacity:.5;cursor:not-allowed}.ta-edit-pitcher__open{background:transparent;border:1px solid var(--color-border);color:var(--color-text);padding:var(--space-xs) var(--space-md);border-radius:4px;font-size:var(--font-sm);font-weight:var(--weight-medium);cursor:pointer}.ta-edit-pitcher__open:hover{border-color:var(--color-accent, var(--color-text))}.ta-edit-pitcher__form{display:flex;flex-direction:column;gap:var(--space-sm);border:1px solid var(--color-border);border-radius:6px;padding:var(--space-md);margin-top:var(--space-sm);background:var(--color-surface, transparent)}.ta-edit-pitcher__title{margin:0 0 var(--space-2xs);font-size:var(--font-md)}.ta-bulk__expand{background:transparent;border:1px dashed var(--color-border);color:var(--color-text-soft);padding:var(--space-xs) var(--space-md);border-radius:4px;cursor:pointer;font-size:var(--font-sm)}.ta-bulk__expand:hover{border-color:var(--color-accent, var(--color-text));color:var(--color-text)}.ta-bulk{border:1px solid var(--color-border);border-radius:6px;padding:var(--space-md);margin-top:var(--space-sm);width:100%;background:var(--color-surface, transparent)}.ta-bulk__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-sm)}.ta-bulk__title{margin:0;font-size:var(--font-md)}.ta-bulk__sub{color:var(--color-text-soft);font-size:var(--font-sm);margin:0 0 var(--space-md)}.ta-bulk__sub code{font-family:var(--font-mono);font-size:.92em;background:#ffffff0d;padding:1px 4px;border-radius:3px}.ta-bulk__zone{display:flex;align-items:center;justify-content:center;border:2px dashed var(--color-border);border-radius:6px;padding:var(--space-lg);cursor:pointer;color:var(--color-text-soft);text-align:center}.ta-bulk__zone:hover{border-color:var(--color-accent, var(--color-text));color:var(--color-text)}.ta-bulk__cancel,.ta-bulk__reset{background:transparent;border:1px solid var(--color-border);color:var(--color-text);padding:var(--space-2xs) var(--space-sm);border-radius:3px;font-size:var(--font-sm);cursor:pointer}.ta-bulk__import{background:var(--color-accent, #4a90e2);border:0;color:#fff;padding:var(--space-xs) var(--space-md);border-radius:4px;font-weight:var(--weight-medium);cursor:pointer}.ta-bulk__import[disabled]{opacity:.5;cursor:not-allowed}.ta-bulk__warn{background:var(--color-warn-bg, rgba(255, 193, 7, .1));border:1px solid var(--color-warn, #ffc107);color:var(--color-text);padding:var(--space-sm) var(--space-md);border-radius:4px;margin-bottom:var(--space-sm);font-size:var(--font-sm)}.ta-bulk__warn code{font-family:var(--font-mono);font-size:.92em}.ta-bulk__stats{margin:0 0 var(--space-sm);font-size:var(--font-sm);color:var(--color-text-soft)}.ta-bulk__table-wrap{max-height:360px;overflow:auto;border:1px solid var(--color-border);border-radius:4px;margin-bottom:var(--space-md)}.ta-bulk__table{width:100%;border-collapse:collapse;font-size:var(--font-sm)}.ta-bulk__table th,.ta-bulk__table td{padding:var(--space-2xs) var(--space-sm);text-align:left;border-bottom:1px solid var(--color-border)}.ta-bulk__table thead th{position:sticky;top:0;background:var(--color-bg, #1a1a1a);color:var(--color-text-soft);font-weight:var(--weight-medium);text-transform:uppercase;font-size:var(--font-xs);letter-spacing:.04em}.ta-bulk__row-state{text-align:center;width:30px}.ta-bulk__table tr.is-bad .ta-bulk__row-state{color:var(--color-warn, #ffc107)}.ta-bulk__table tr.is-ok .ta-bulk__row-state{color:var(--color-success, #1ab394)}.ta-bulk__warn-row td{background:#ffc10712;color:var(--color-warn, #ffc107);font-size:var(--font-xs);padding:var(--space-2xs) var(--space-sm)}.ta-bulk__importing{color:var(--color-text-soft);text-align:center;padding:var(--space-lg)}.ta-bulk__details{margin-top:var(--space-sm)}.ta-bulk__details summary{cursor:pointer;color:var(--color-text-soft);font-size:var(--font-sm)}.ta-bulk__list{margin:var(--space-2xs) 0 0;padding-left:var(--space-md);font-size:var(--font-sm);color:var(--color-text)}.ta-bulk__error{color:var(--color-warn, #ffc107);font-style:italic}
