:root{--bg: #111;--panel: #ffffff;--accent: #2c7be5;--brand: #002949;--text: #2b2b2b;--muted: #5f6c7b;--danger: #ff4d4d;--border: #dfe3e8;--radius: 10px}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:#f1f3f5;color:var(--text)}.app{padding:24px;max-width:1400px;margin:0 auto}.app--locked{max-width:520px;min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:20px;padding-top:0}.app--selector{max-width:780px}.title{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.lock-header{justify-content:center}.lock-brand{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.title__logo{height:40px;width:auto;object-fit:contain}.title h1{margin:0;font-size:1.8rem}.title--with-logout{align-items:center}.title__logout{flex-shrink:0}.lock-panel{background:var(--panel);border-radius:var(--radius);padding:24px;border:1px solid var(--border);border-top:4px solid var(--brand);box-shadow:0 8px 18px #1118270f}.lock-panel h2{margin:0 0 4px;font-size:1.15rem}.lock-caption{margin:0 0 8px;color:var(--muted);font-size:.95rem}.lock-logo{display:block;width:96px;height:auto;margin:0}.lock-panel form{display:grid;gap:12px}.app-select-panel{display:grid;gap:14px}.app-select-panel--plain{width:100%;padding:0}.app-tile-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px}.app-tile{display:grid;gap:8px;text-decoration:none;color:#1c2635;background:#f7f9fc;border:1px solid #d7dfea;border-radius:12px;padding:16px;min-height:130px;box-shadow:0 6px 14px #1118270b;transition:box-shadow .16s ease,border-color .16s ease,background-color .16s ease}.app-tile:hover{background:#fdfefe;border-color:#8fa6c9;box-shadow:0 10px 20px #11182717}.app-tile:focus-visible{outline:2px solid #7f9bc4;outline-offset:2px}.app-tile--wide{grid-column:1 / -1}.app-tile__title{font-size:1.05rem;font-weight:700;color:#132238}.app-tile__desc{font-size:.9rem;color:#58677b;line-height:1.35}.tab-nav{display:flex;align-items:flex-end;gap:8px;border-bottom:2px solid #d7dfea;margin-bottom:20px}.tab-nav__main{display:flex;gap:8px;flex:1}.tab-btn--logout{margin-left:auto;color:#8a4b4b}.tab-btn--logout:hover{color:#b42318}.tab-btn{padding:10px 16px;background:none;border:none;border-bottom:3px solid transparent;color:#58677b;font-size:.95rem;font-weight:600;cursor:pointer;transition:color .2s ease,border-color .2s ease}.tab-btn:hover{color:#2c7be5}.tab-btn.active{color:#2c7be5;border-bottom-color:#2c7be5}.roster-panel{padding:20px}.roster-loading,.roster-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:300px;color:#5f6c7b}.roster-list{background:#f7f9fc;border-radius:12px;padding:20px}.roster-list h2{margin:0 0 16px;font-size:1.15rem;color:#132238}.roster-list ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.roster-item{padding:12px;background:#fff;border:1px solid #d7dfea;border-radius:8px;font-size:.95rem;transition:background-color .2s ease,border-color .2s ease}.roster-item:hover{background-color:#fdfefe;border-color:#8fa6c9}.lock-input{border-radius:var(--radius);border:1px solid #cfd7e3;background:#f7f9fc;padding:12px 14px;font-size:1rem;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.lock-input:focus{outline:none;border-color:#7aa7f3;background:#fff;box-shadow:0 0 0 3px #2c7be52e}.lock-title{display:flex;align-items:center;gap:8px;justify-content:center;text-align:center;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.lock-button{width:100%;border-radius:var(--radius);background:var(--brand)}.lock-button:hover{background:#001f38}.lock-divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--muted);font-size:.9rem}.lock-divider:before,.lock-divider:after{content:"";flex:1;height:1px;background:var(--border)}.lock-ms-signin{display:block;line-height:0;text-decoration:none;margin:0 auto;width:fit-content}.lock-ms-signin__img{display:block;width:215px;max-width:100%;height:auto}.lock-ms-signin:hover .lock-ms-signin__img{opacity:.92}.lock-ms-signin--inline{margin:8px auto 0}.lock-method-buttons{display:grid;gap:10px}.lock-method-btn{width:100%;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:var(--text);font:inherit;font-weight:600;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.lock-method-btn:hover{border-color:var(--brand);box-shadow:0 0 0 2px #00294914}.lock-method-form{display:grid;gap:12px}.lock-method-help{margin:0;color:var(--muted);font-size:.95rem;line-height:1.45}.lock-method-actions{display:grid;gap:8px}.lock-method-back{width:100%}.lock-secret-field{margin-bottom:0}.lock-icon{display:inline-flex;width:20px;height:20px}.lock-icon svg{width:100%;height:100%}.lock-loading{display:grid;gap:8px;justify-items:center}.lock-spinner{width:28px;height:28px;border-radius:50%;border:3px solid rgba(0,41,73,.2);border-top-color:var(--brand);animation:spin .9s linear infinite}.lock-progress{color:var(--muted);font-size:.95rem}.accordion,.summary{background:var(--panel);border-radius:8px;padding:10px 16px;margin-bottom:16px;border:1px solid var(--border)}.accordion summary,.summary summary{cursor:pointer;font-weight:600;font-size:1rem}.panel{padding:16px 0 8px}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.viewer-filter-preview{display:flex;flex-direction:column;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border);min-height:100px}.viewer-filter-preview__item{display:flex;align-items:center;gap:10px}.viewer-filter-preview__avatar{width:56px;height:56px;border-radius:50%;overflow:hidden;flex-shrink:0;border:2px solid #d7dfea;background:#eef2f7;display:flex;align-items:center;justify-content:center}.viewer-filter-preview__img{width:100%;height:100%;object-fit:cover;display:block}.viewer-filter-preview__img--team{object-position:center}.viewer-filter-preview__img--player{object-position:center top}.viewer-filter-preview__initial{font-weight:700;font-size:1.25rem;color:#4f5f73}.viewer-filter-preview__label{font-size:.9rem;font-weight:600;color:#132238;line-height:1.3}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.field span{color:var(--muted);font-size:.85rem}.field-inline{margin-top:6px}.field-inline input[type=range]{width:100%}.range-value{color:var(--muted);font-size:.8rem;text-align:right}input[type=text],select,input[type=range]{background:#fff;color:var(--text);border:1px solid var(--border);padding:6px 8px;border-radius:4px}.searchable{position:relative}.select-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;background:#fff;color:var(--text);border:1px solid var(--border);padding:6px 8px;border-radius:4px;cursor:pointer;text-align:left}.select-trigger__value{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.select-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 30px #00000026;z-index:5;overflow:hidden}.select-search{padding:8px;border-bottom:1px solid #e8edf3;background:#fff}.select-selected{display:flex;flex-wrap:wrap;gap:6px;padding:8px;border-bottom:1px solid #e8edf3;background:#fff}.select-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;border:1px solid #d6dde6;background:#f4f7fb;color:var(--text);cursor:pointer;font-size:.85rem}.select-search input{width:100%}.select-options{max-height:220px;overflow-y:auto}.select-option,.select-empty{display:block;width:100%;padding:8px 10px;background:transparent;border:none;text-align:left;cursor:pointer;color:var(--text);display:flex;align-items:center;justify-content:space-between}.select-option:hover,.select-option.selected{background:#e9f0fb}.select-empty{color:var(--muted);cursor:default}.caret{color:var(--muted)}select[multiple]{height:120px}.checkbox{display:flex;align-items:center;gap:8px;margin-bottom:6px;color:var(--muted)}.help-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--accent);color:#fff;font-size:11px;font-weight:700;line-height:1;cursor:help}.radio-row{display:flex;gap:12px;align-items:center}.btn{background:var(--accent);color:#fff;border:none;padding:8px 12px;border-radius:var(--radius);cursor:pointer;margin-right:6px}.btn.lock-button{background:var(--brand);border-radius:var(--radius)}.btn.lock-button:hover{background:#001f38}.btn-secondary{background:#384b63}.btn.active{background:#506a8b}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-loading{display:inline-flex;align-items:center;gap:8px}.spinner{width:20px;height:20px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;box-shadow:0 0 0 2px #00000026;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn-small{padding:6px 10px;margin-top:6px}.downloads{margin-top:10px}.slider-ticks{display:grid;grid-template-columns:repeat(7,1fr);font-size:.75rem;color:var(--muted);margin-top:4px;text-align:center}input[type=range][list]::-webkit-slider-runnable-track{height:6px}input[type=range][list]::-webkit-slider-thumb{margin-top:-4px}input[type=range][list]::-moz-range-track{height:6px}.alert{padding:10px 12px;border-radius:6px;margin:10px 0}.alert-warning{background:#fff3cd;color:#856404;border:1px solid #ffeeba}.alert-info{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}.alert-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.alert-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.plot-area{position:relative;background:var(--bg);border-radius:10px;padding:10px;min-height:50vh;border:1px solid #222}.insights{background:var(--panel);border-radius:8px;padding:14px 16px;margin:16px 0;border:1px solid var(--border)}.insights__header h2{margin:0;font-size:1.1rem}.insights__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.insights__header p{margin:6px 0 0;color:var(--muted);font-size:.9rem}.insights__grid{display:grid;gap:16px;grid-template-columns:minmax(260px,320px) minmax(420px,1fr);margin-top:12px}.insights__cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.insight-card{border:1px solid var(--border);border-radius:8px;padding:12px;background:#f7f9fc}.insight-label{font-size:.8rem;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}.insight-value{font-size:1.4rem;font-weight:700;color:var(--text)}.insight-sub{margin-top:6px;color:var(--muted);font-size:.85rem}.insights__charts{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.insight-chart{border:1px solid var(--border);border-radius:8px;padding:8px 8px 4px;background:#fff;display:flex;flex-direction:column;min-height:360px}.insight-chart h3{margin:0 0 6px;font-size:.95rem}.insight-chart__plot{flex:1;height:320px}.insights__empty{padding:12px 0 4px;color:var(--muted)}.plotly{width:100%;height:85vh}.plotly .main-svg image,.plotly image{image-rendering:crisp-edges;shape-rendering:geometricPrecision}.capture-app{max-width:1800px;width:min(1800px,96vw)}.capture-layout{display:grid;grid-template-columns:minmax(320px,420px) minmax(680px,1fr);gap:18px}.capture-sidebar{background:var(--panel);border-radius:var(--radius);padding:16px;border:1px solid var(--border);display:flex;flex-direction:column;gap:12px}.capture-sidebar h3{margin:6px 0 0;font-size:1rem}.capture-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.capture-team-field{display:flex;flex-direction:column;gap:8px}.capture-team-field .field{margin-bottom:0}.capture-actions{display:flex;flex-wrap:wrap;gap:8px}.capture-table{border:1px solid var(--border);border-radius:8px;overflow:hidden;max-height:260px;overflow-y:auto;overflow-x:auto;background:#fff}.capture-table table{width:100%;min-width:480px;border-collapse:collapse;font-size:.85rem}.capture-table__input,.capture-table__select{width:100%;font-size:.85rem;padding:4px 6px;border:1px solid #d6dde6;border-radius:4px}.capture-table th,.capture-table td{padding:6px 8px;border-bottom:1px solid #eef1f4;text-align:left}.capture-table thead{background:#f4f7fb;position:sticky;top:0;z-index:1}.capture-table__empty{padding:10px;font-size:.85rem;color:var(--muted)}.capture-main{display:flex;flex-direction:column;gap:12px}.capture-feedback{text-align:center;font-weight:700;font-size:clamp(1.8rem,4vw,3.5rem);letter-spacing:.04em}.capture-plot{background:#111;border-radius:12px;padding:12px;border:1px solid #1f1f1f;position:relative}.capture-court{width:100%;height:75vh;display:block}.capture-progress{text-align:center;color:var(--muted);font-size:1rem}.capture-progress-bar{display:grid;gap:6px;align-items:center;justify-items:center;margin-top:4px}.capture-progress__label{color:var(--muted);font-size:.9rem}.capture-progress__track{width:min(420px,100%);height:8px;background:#e7edf5;border-radius:999px;overflow:hidden}.capture-progress__fill{height:100%;background:linear-gradient(90deg,#2c7be5,#48a3ff);border-radius:999px}.capture-crosshair{position:absolute;pointer-events:none;transform:translate(-50%,-50%)}.capture-crosshair__lines{position:absolute;top:0;right:0;bottom:0;left:0;width:16px;height:16px;background:linear-gradient(transparent 7px,rgba(255,255,255,.8) 7px,rgba(255,255,255,.8) 9px,transparent 9px),linear-gradient(90deg,transparent 7px,rgba(255,255,255,.8) 7px,rgba(255,255,255,.8) 9px,transparent 9px);transform:translate(-8px,-8px)}.capture-crosshair__label{position:absolute;top:10px;left:12px;background:#000000b3;color:#fff;padding:2px 6px;border-radius:6px;font-size:.7rem;white-space:nowrap}.capture-float{position:fixed;right:16px;bottom:16px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:0 12px 24px #00000026;max-width:280px;z-index:6}.capture-float__title{font-weight:700;font-size:1rem;margin-bottom:6px}.ai-controls--floating{position:fixed;right:auto;top:auto;background:#fff;border:1px solid var(--border);border-radius:10px;padding:10px 12px;box-shadow:0 12px 24px #0000001f;z-index:60;display:flex;flex-direction:column;gap:8px;min-width:200px;max-width:340px;will-change:top,left}.ai-controls--inline{display:flex;gap:8px;align-items:center;margin-left:auto}.ai-controls{display:flex;gap:8px;align-items:center}.ai-controls--centered{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:12px;margin-top:12px;width:auto;max-width:640px}.ai-controls--centered .ai-hint{text-align:center;width:100%}.ai-centered-hint{text-align:center;color:var(--muted);width:100%;margin-top:8px;margin-bottom:18px}.ai-panel__body{display:flex;justify-content:center;align-items:center;padding:12px 0 4px}@media (max-width: 640px){.ai-controls--centered{flex-direction:column;gap:8px}}.ai-qa__actions{display:flex;flex-direction:row;gap:8px;align-items:center}.ai-qa__actions .btn{display:inline-block}.capture-float__body{display:grid;gap:4px;font-size:.95rem;color:var(--text)}.capture-float__empty{color:var(--muted)}.capture-float__actions{display:flex;gap:6px;margin-top:8px}.capture-float__hint{margin-top:6px;font-size:.75rem;color:var(--muted)}.capture-xml-info{background:#f7f9fc;border-radius:8px;padding:10px;border:1px solid #e2e8f0;display:grid;gap:6px;font-size:.95rem}.capture-xml-team{font-size:1.6rem;font-weight:700}.capture-xml-highlight{font-size:1.05rem;font-weight:600}.capture-xml-hint{font-size:.85rem;color:var(--muted)}.capture-xml-done{font-weight:700;color:#2b8a3e}.capture-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c10cc;display:flex;align-items:center;justify-content:center;z-index:20;padding:20px}.capture-modal__panel{background:#fff;border-radius:12px;padding:20px;max-width:420px;width:100%;box-shadow:0 18px 30px #00000040}.capture-modal__panel h3{margin:0 0 10px}.capture-modal__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.capture-back{margin-right:0}.chart-title-overlay{position:absolute;top:12px;left:50%;transform:translate(-50%);color:#e8eef7;font-size:.95rem;font-weight:600;text-align:center;pointer-events:none;text-shadow:0 2px 6px rgba(0,0,0,.6);background:#0000008c;padding:6px 14px;border-radius:999px;max-width:calc(100% - 80px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-legend{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;gap:18px;align-items:center;color:#e8eef7;font-size:.8rem;background:#00000073;border-radius:999px;padding:6px 12px;pointer-events:none}.chart-legend__item{display:inline-flex;align-items:center;gap:6px}.chart-legend__dot{display:inline-block;width:10px;height:10px;border-radius:999px;border:1px solid #000}.chart-legend__dot--made{background:#228b22}.chart-legend__dot--missed{width:0;height:0;border:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid #b22222;border-radius:0}.quarter-print{position:fixed;left:-10000px;top:0;width:1400px;height:1000px;pointer-events:none}.quarter-print__sheet{width:1400px;height:1000px;padding:24px;box-sizing:border-box;border-radius:16px}.quarter-print__title{font-size:1.2rem;font-weight:700;text-align:center;margin-bottom:14px}.quarter-print__subtitle{text-align:center;font-size:.85rem;color:#d2d9e6;margin-top:-8px;margin-bottom:14px}.quarter-print__grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:16px;height:calc(100% - 40px)}.quarter-print__cell{position:relative;border:1px solid #222;border-radius:12px;overflow:hidden;background:transparent}.quarter-print__cell .plotly-wrap{width:100%;height:100%}.quarter-print__empty{width:100%;height:100%;background:transparent}.quarter-print__full{width:100%;height:calc(100% - 56px)}.quarter-print__full .plotly-wrap{width:100%;height:100%}.loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0006;z-index:2;font-weight:700}.tooltip{position:absolute;background:#000c;padding:8px 10px;border-radius:4px;font-size:.8rem;pointer-events:none;white-space:pre-line}.summary table{width:100%;border-collapse:collapse;color:var(--text)}.summary td{padding:6px 4px;border-bottom:1px solid var(--border)}.ai-panel{background:var(--panel);border-radius:8px;padding:14px 16px;margin-bottom:16px;border:1px solid var(--border)}.ai-panel--loading{min-height:96px}.ai-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.ai-panel__header h2{margin:0;font-size:1.1rem}.ai-hint{margin-top:4px;font-size:.8rem;color:var(--muted)}.ai-hint--inline{display:flex;justify-content:flex-end;margin-top:8px;width:100%;font-size:.85rem;color:var(--muted);margin-bottom:18px}.ai-warning{margin-bottom:10px;padding:8px 10px;border-radius:6px;border:1px solid #ffe1a3;background:#fff7dd;color:#7a5a00;font-size:.85rem}.ai-output{white-space:pre-wrap;margin:0;background:#f6f7f9;border:1px solid var(--border);border-radius:6px;padding:12px;color:var(--text);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.ai-output__title{font-size:1rem;font-weight:700;margin:-6px -6px 10px;padding:10px 12px;background:#eef2f7;border-radius:6px 6px 0 0;color:var(--text)}.ai-dev-panel{margin-top:12px;background:#f6f7f9;border:1px solid var(--border);border-radius:6px;padding:10px 12px}.ai-dev-panel summary{cursor:pointer;font-weight:700;margin-bottom:8px}.ai-dev-panel textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.78rem}.ai-qa{margin-top:16px}.ai-qa h3{margin:0 0 8px;font-size:1rem}.ai-qa textarea{width:100%;border-radius:8px;border:1px solid var(--border);padding:10px;font-family:inherit;resize:vertical}.ai-qa__actions{display:flex;align-items:center;gap:12px;margin-top:8px}.ai-qa__status{color:var(--muted);font-size:.9rem}.ai-output.markdown h1,.ai-output.markdown h2,.ai-output.markdown h3{margin:8px 0 6px}.ai-output.markdown h3{border-bottom:1px solid var(--border);padding-bottom:4px}.ai-output.markdown p{margin:6px 0}.ai-output.markdown ul,.ai-output.markdown ol{margin:6px 0 6px 20px;padding:0}.ai-output.markdown li{margin:4px 0}.ai-output.markdown code{background:#e9edf3;padding:2px 4px;border-radius:4px;font-family:Consolas,Courier New,monospace;font-size:.85rem}.ai-output.markdown pre{background:#e9edf3;border-radius:6px;padding:10px;overflow-x:auto}.ai-output.markdown blockquote{margin:8px 0;padding:6px 12px;border-left:3px solid var(--border);background:#f2f4f8}.ai-output.markdown table{width:100%;border-collapse:collapse;margin:8px 0;font-size:.95rem}.ai-output.markdown th,.ai-output.markdown td{border:1px solid var(--border);padding:6px 8px;text-align:left}.ai-output.markdown th{background:#eef2f7;font-weight:600}.ai-output.markdown tbody tr:nth-child(2n){background:#f7f9fc}.ai-loading{display:flex;align-items:center;gap:12px;padding:12px;border:1px dashed var(--border);border-radius:6px;background:#f6f7f9;margin-bottom:12px}.ai-loading .spinner{border-color:#2c7be566;border-top-color:var(--accent)}.ai-loading__title{font-weight:600}.ai-loading__sub,.ai-empty{color:var(--muted);font-size:.9rem}.toast{position:fixed;right:16px;bottom:16px;padding:10px 12px;border-radius:6px;background:#e6ffed;color:#1b5e20;border:1px solid #b7ebc6}.toast.error{background:#fdecea;color:#7a1f1f;border-color:#f5c2c7}.toast.warning{background:#fff7dd;color:#7a5a00;border-color:#ffe1a3}.mobile-warning{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f2;display:flex;align-items:center;justify-content:center;z-index:10;padding:20px}.mobile-warning__panel{max-width:520px;text-align:center}.mobile-warning__panel h2{color:var(--danger);margin-bottom:14px}.mobile-warning__panel p{font-size:1.1rem;margin-bottom:20px}.mobile-warning__panel button{padding:10px 16px;font-size:1rem;background:var(--accent);color:#fff;border:none;border-radius:4px;cursor:pointer}.app-footer{margin-top:24px;padding:16px 0 8px;border-top:1px solid var(--border);color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;font-size:.9rem}.footer-row{display:flex;gap:8px;align-items:center}.footer-row .footer-logshots,.footer-row .footer-capture-link{display:inline-block}.footer-dev-trigger{background:transparent;border:none;color:var(--muted);font-size:.72rem;opacity:.55;cursor:pointer;padding:0 4px}.footer-dev-trigger:hover{opacity:.95}.app-footer a{color:var(--accent);text-decoration:none;font-weight:600}.app-footer a:hover{text-decoration:underline}@media (max-width: 768px){.app{padding:12px}.insights__grid{grid-template-columns:1fr}.plot-area{min-height:0;padding:8px}.plotly{height:55vh;touch-action:none}.capture-layout{grid-template-columns:1fr}.capture-court{height:45vh;max-height:420px}.capture-float{position:static;max-width:none;margin:12px auto 0}.app-tile-grid{grid-template-columns:1fr}}@media (min-width: 1200px){.capture-layout{grid-template-columns:minmax(380px,480px) minmax(720px,1fr)}}@media (min-width: 1500px){.capture-layout{grid-template-columns:minmax(440px,560px) minmax(760px,1fr)}}@media (min-width: 1100px){.capture-court{height:80vh}}@media (min-width: 1500px){.capture-court{height:84vh}}.export-panel{background:#111111d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius);padding:20px;margin-bottom:16px;border:1px solid rgba(255,255,255,.1);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.export-panel__content{max-width:720px;margin:0 auto}.export-panel__content h3{margin:0 0 8px;color:#fff;font-size:1.1rem;font-weight:600}.export-panel__content p{margin:0 0 16px;color:#ffffffb3;font-size:.9rem}.export-panel__buttons{display:flex;gap:12px;flex-wrap:wrap}.export-panel__buttons .btn{flex:1;min-width:140px;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 20px}.export-panel__buttons .btn strong{font-size:1rem}.btn-hint{font-size:.75rem;opacity:.8;font-weight:400}.btn-tertiary{background:#ffffff1a;color:#fff;border:1px solid rgba(255,255,255,.2)}.export-loading{position:fixed;top:0;right:0;bottom:0;left:0;background:#080c1299;display:flex;align-items:center;justify-content:center;z-index:40}.export-loading__card{display:flex;align-items:center;gap:16px;background:#0f1624;color:#f2f6ff;border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:16px 20px;box-shadow:0 18px 40px #00000059}.export-loading__title{font-weight:700;font-size:1rem}.export-loading__sub{font-size:.85rem;opacity:.75}.export-loading__progress{margin-top:10px;width:280px;max-width:min(52vw,320px);height:8px;border-radius:999px;background:#ffffff24;overflow:hidden}.export-loading__progress-fill{height:100%;background:#5aa3ff;border-radius:999px;transition:width .2s ease}.export-loading__percent{margin-top:8px;font-size:.8rem;opacity:.85}.btn-tertiary:hover{background:#ffffff26}.test-report-page{min-height:100vh;padding:20px;display:block;background:#eceff3}.season-stats-page{min-height:100vh;display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px;padding:20px;background:#eceff3}.season-stats-sidebar{background:#fff;border:1px solid #d7dfea;border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:12px;align-self:start;position:sticky;top:20px}.season-stats-sidebar h2{margin:0}.season-stats-sidebar__note{margin:0;font-size:.85rem;color:#5f6d7e}.season-stats-sidebar__action,.season-stats-sidebar .copy-share-link-btn{width:100%}.season-stats-main{min-width:0}.season-stats-placeholder,.season-stats-header,.season-stats-grid{background:#fff;border:1px solid #d7dfea;border-radius:12px}.season-stats-placeholder{padding:28px}.season-stats-header{display:flex;align-items:center;gap:16px;padding:18px 20px;margin-bottom:16px}.season-stats-header__photo{width:72px;height:72px;border-radius:50%;object-fit:cover;object-position:center top;border:2px solid #d7dfea}.season-stats-header h1{margin:0 0 4px;font-size:1.5rem}.season-stats-header p{margin:0;color:#5f6d7e}.season-stats-page--embed{grid-template-columns:1fr;padding:12px}.season-stats-page--embed .season-stats-main{max-width:1200px;margin:0 auto;width:100%}.test-report-page--embed{display:block;padding:12px}.test-report-page--embed .test-sheet-wrap{max-width:900px;margin:0 auto}.copy-share-link-btn{font-size:.82rem;padding:6px 12px;white-space:nowrap}.season-stats-grid{padding:16px;margin-bottom:16px}.season-stats-grid--summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.season-stats-grid--charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.season-stats-grid--wide{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}.season-stat-card{border:1px solid #d7dfea;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.season-stat-card__label{font-size:.78rem;color:#5f6d7e;text-transform:uppercase;letter-spacing:.04em}.season-stat-card__value{font-size:1.1rem}.season-panel{border:1px solid #e3e9f1;border-radius:10px;padding:14px;background:#fafbfd}.season-panel h3{margin:0 0 12px;font-size:1rem}.season-panel--chart{min-height:420px}.season-shotchart-host{min-height:360px}.season-bar-chart{display:grid;gap:8px}.season-bar-chart__row{display:grid;grid-template-columns:88px 1fr auto;gap:8px;align-items:center}.season-bar-chart__label{font-size:.82rem;color:#334155;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.season-bar-chart__track{height:12px;background:#e8edf4;border-radius:999px;overflow:hidden}.season-bar-chart__fill{height:100%;border-radius:999px}.season-bar-chart__value{font-size:.82rem;color:#334155;min-width:52px;text-align:right}.season-chart-empty{margin:0;color:#5f6d7e;font-size:.9rem}.season-donut-wrap{display:flex;flex-direction:column;align-items:center;gap:12px}.season-donut{width:160px;height:160px;border-radius:50%;display:grid;place-items:center}.season-donut__hole{width:96px;height:96px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}.season-donut-legend{display:flex;gap:14px;font-size:.9rem}.season-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.season-dot--made{background:#2e7d32}.season-dot--missed{background:#c62828}.test-sidebar{background:#fff;border:1px solid #d7dde6;border-radius:12px;padding:14px;display:grid;gap:10px;align-content:start;position:fixed;left:20px;top:20px;bottom:20px;width:308px;overflow-y:auto;z-index:3}.test-sidebar h2{margin:2px 0 4px;font-size:1.1rem}.test-sidebar__logout{width:100%;margin-bottom:8px}.test-sidebar__note{font-size:.82rem;color:#5f6d7e}.test-back-btn{margin-right:0}.test-sheet-wrap{min-height:calc(100vh - 40px);width:100%;padding:0 20px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0}.test-sheet-stage{width:8.5in;max-width:100%;position:relative}.test-generating-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;border-radius:10px;background:#f3f7fdd1;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);display:grid;place-content:center;justify-items:center;gap:10px;color:#1f3a5f;font-weight:700;letter-spacing:.02em}.test-generating-spinner{width:30px;height:30px;border-radius:50%;border:3px solid rgba(31,58,95,.2);border-top-color:#1f3a5f;animation:spin .9s linear infinite}.test-sheet{width:8.5in;min-height:11in;height:11in;background:#fff;color:#1e2a37;box-shadow:0 16px 36px #0f172a2e;border:1px solid #d8dde5;padding:.4in;display:grid;grid-template-rows:auto auto minmax(0,1fr);align-content:start;gap:12px}.test-sheet--pdf{width:8.5in!important;min-height:11in!important;height:11in!important;box-shadow:none!important;border:1px solid #d8dde5!important;padding:.4in!important}.test-sheet--export-lock{width:8.5in!important;min-height:11in!important;height:auto!important;max-width:none!important;box-shadow:none!important;border:none!important;padding:.4in!important}.test-sheet__bottom{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;min-height:0}.test-card--season{min-height:0;display:flex;flex-direction:column}.test-card__header-row{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;margin-bottom:6px}.test-card__subtitle{font-size:.76rem;font-weight:600;color:#5c6c80;white-space:nowrap}.test-season-list{flex:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;align-content:stretch;min-height:0}.test-season-row{min-height:0;padding:10px 12px;border:1px solid #d7dde6;border-radius:8px;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:40px}.test-season-row__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:inherit;opacity:.78;white-space:nowrap}.test-season-row__value{font-size:.98rem;font-weight:700;color:inherit;white-space:nowrap;margin-left:auto}.test-sheet--export-lock .test-sheet__header{flex-direction:row!important;gap:0!important}.test-sheet--export-lock .test-sheet__brand{align-items:flex-end!important}.test-sheet--export-lock .test-sheet__game,.test-sheet--export-lock .test-sheet__date{white-space:nowrap!important}.test-sheet--export-lock .test-sheet__player-photo{width:54px!important;height:54px!important;aspect-ratio:1 / 1!important;object-fit:cover!important;object-position:center top!important;border-radius:999px!important}.test-sheet--export-lock .test-chart-row{grid-template-columns:1fr 1fr!important}.test-sheet--export-lock .test-right-stack{grid-template-rows:auto auto!important}.test-sheet--export-lock .test-card--season-link{width:118px!important;height:118px!important;justify-self:start!important}.test-sheet--export-lock .test-season-list{grid-template-columns:repeat(4,minmax(0,1fr))!important}.test-sheet--export-lock .test-season-row{min-height:40px!important}.test-sheet--export-lock .test-card--chart img{height:4.35in!important}.test-sheet--export-lock .test-shotchart-host{height:auto!important;aspect-ratio:56 / 48!important;min-height:0!important;max-height:3.4in!important}.test-sheet--pdf .test-card--chart img,.test-sheet--pdf .test-shotchart-host{height:3.25in!important;min-height:3.25in!important}.test-sheet--pdf .test-sheet__header{flex-direction:row!important;gap:0!important}.test-sheet--pdf .test-sheet__brand{align-items:flex-end!important}.test-sheet--pdf .test-sheet__game,.test-sheet--pdf .test-sheet__date{white-space:nowrap!important}.test-sheet__header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #dce2ea;padding-bottom:10px}.test-sheet__heading{display:grid;gap:2px}.test-sheet__heading-wrap{display:flex;align-items:center;gap:10px}.test-sheet__player-photo{width:76px;height:76px;aspect-ratio:1 / 1;display:block;border-radius:999px;object-fit:cover;object-position:center top;border:1px solid #cfd6e1;background:#eef2f8;flex-shrink:0}.test-sheet__game{font-size:1.28rem;font-weight:700;color:#243246;line-height:1.15;white-space:nowrap}.test-sheet__date{font-size:1rem;font-weight:600;color:#425368;white-space:nowrap}.test-sheet__brand{min-height:38px;flex-direction:column;align-items:flex-end;gap:0}.test-sheet__logo{width:62px;height:auto;object-fit:contain}.test-card{border:1px solid #d7dde6;border-radius:10px;padding:8px;background:#fbfcfe}.test-card h2{margin:0 0 6px;font-size:.98rem}.test-card--chart img{width:100%;height:4.35in;object-fit:contain;border-radius:8px;border:1px solid #d4dae4;background:#f5f7fb}.test-card--chart{display:grid;gap:8px;align-content:start}.roster-editor-container{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:20px}.roster-editor-section{background:#f7f9fc;border-radius:12px;padding:20px;border:1px solid #d7dfea}.roster-editor-section h2{margin:0 0 16px;font-size:1.15rem;color:#132238}.input-group{display:flex;gap:8px;margin-bottom:16px}.input-field{flex:1;padding:10px 12px;border:1px solid #cfd7e3;border-radius:6px;background:#fff;font-size:.95rem;transition:border-color .15s ease}.input-field:focus{outline:none;border-color:#2c7be5;box-shadow:0 0 0 3px #2c7be51a}.input-small{max-width:100px}.team-list{display:grid;gap:8px;max-height:600px;overflow-y:auto}.team-card{background:#fff;border:2px solid #d7dfea;border-radius:8px;padding:12px;cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.team-card:hover{border-color:#2c7be5;background-color:#fafbfd}.team-card.active{border-color:#2c7be5;background-color:#e7f1ff}.team-card-header{display:flex;justify-content:space-between;align-items:center;flex:1;min-width:0}.team-card-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}.roster-section-title{display:flex;align-items:center;gap:12px;margin-bottom:16px}.roster-section-title h2{margin:0}.team-avatar-btn{flex-shrink:0;width:44px;height:44px;padding:0;border:2px solid #d7dfea;border-radius:50%;overflow:hidden;background:#eef2f7;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease;display:inline-flex;align-items:center;justify-content:center}.team-avatar-btn--lg{width:52px;height:52px}.team-avatar-btn:hover:not(:disabled){border-color:#2c7be5;box-shadow:0 0 0 3px #2c7be526}.team-avatar-btn:disabled{opacity:.6;cursor:not-allowed}.team-avatar{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.team-avatar-initial{font-weight:700;font-size:1rem;color:#4f5f73}.team-avatar-btn--lg .team-avatar-initial{font-size:1.2rem}.image-menu-preview--round{border-radius:50%}.image-menu-preview--team{object-position:center}.team-logo-preview-fallback{display:flex;align-items:center;justify-content:center;font-size:3rem;font-weight:700;color:#4f5f73;background:#eef2f7}.team-name{font-weight:700;color:#132238;font-size:1rem}.player-count{font-size:.85rem;color:#58677b;background:#d7dfea;padding:2px 8px;border-radius:12px}.player-input-group{background:#fff;border:1px solid #d7dfea;border-radius:8px;padding:12px;margin-bottom:16px}.input-row{display:flex;gap:8px;margin-bottom:8px}.player-list{max-height:500px;overflow-y:auto}.player-list ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.player-item{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff;border:1px solid #d7dfea;border-radius:6px;padding:10px 12px;font-size:.95rem}.player-avatar-btn{flex-shrink:0;width:44px;height:44px;padding:0;border:2px solid #d7dfea;border-radius:50%;overflow:hidden;background:#eef2f7;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.player-avatar-btn:hover:not(:disabled){border-color:#2c7be5;box-shadow:0 0 0 3px #2c7be526}.player-avatar-btn:disabled{opacity:.6;cursor:not-allowed}.player-avatar{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}.player-display{font-weight:600;color:#132238;flex:1;min-width:0}.player-actions{display:flex;gap:6px}.button-row{display:flex;gap:8px}.btn-danger{background:#ff4d4d;color:#fff}.btn-danger:hover{background:#e63946}.empty-message{text-align:center;color:#58677b;padding:20px;font-style:italic}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal,.modal-content{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;display:flex;flex-direction:column}.modal-content--compact,.modal.modal--compact{max-width:420px}.confirm-message{margin:0;color:#334155;line-height:1.5}.image-menu-player-name{margin:0 0 12px;font-weight:600;color:#132238;text-align:center}.image-menu-preview-wrap{display:flex;justify-content:center;margin-bottom:8px}.image-menu-preview{width:160px;height:160px;border-radius:12px;object-fit:cover;object-position:center top;border:1px solid #d7dfea;background:#eef2f7}.image-menu-footer{flex-wrap:wrap}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #d7dfea}.modal-header h2,.modal-header h3{margin:0;font-size:1.25rem;color:#132238}.modal-close{background:none;border:none;font-size:2rem;cursor:pointer;color:#58677b;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.modal-close:hover{color:#2c7be5}.modal-body{padding:20px;flex:1}.format-instructions{background:#f7f9fc;border:1px solid #d7dfea;border-radius:8px;padding:16px;margin-bottom:20px}.format-instructions h3{margin:0 0 8px;font-size:1rem;color:#132238}.format-instructions p{margin:0 0 8px;font-size:.9rem;color:#58677b}.format-note{font-size:.85rem!important;margin-top:-4px!important}.import-file-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.import-file-input{display:none}.import-file-name{font-size:.9rem;color:#58677b}.format-code{display:block;background:#fff;border:1px solid #d7dfea;border-radius:6px;padding:8px 12px;font-family:Courier New,monospace;font-size:.85rem;color:#2c7be5;margin:8px 0}.format-example{margin-top:12px}.format-example p{margin:0 0 6px;font-size:.85rem;font-weight:600;color:#132238}.format-example pre{background:#fff;border:1px solid #d7dfea;border-radius:6px;padding:12px;font-family:Courier New,monospace;font-size:.8rem;margin:0;color:#132238;overflow-x:auto}.import-input-area{margin-bottom:0}.import-input-area label{display:block;font-weight:600;color:#132238;margin-bottom:8px;font-size:.95rem}.import-textarea{width:100%;min-height:150px;padding:12px;border:1px solid #cfd7e3;border-radius:6px;font-family:Courier New,monospace;font-size:.85rem;resize:vertical;transition:border-color .15s ease}.import-textarea:focus{outline:none;border-color:#2c7be5;box-shadow:0 0 0 3px #2c7be51a}.modal-footer{display:flex;gap:8px;justify-content:flex-end;padding:16px 20px;border-top:1px solid #d7dfea}.modal-footer .btn{margin:0}.game-manager-container{max-width:1100px}.game-manager-help{margin:0 0 16px;color:#4a5568;line-height:1.5}.manager-accounts-list{display:grid;gap:8px}.manager-accounts-list__item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fff}.manager-accounts-list__meta{display:grid;gap:6px;min-width:0;flex:1}.manager-accounts-list__badges{display:flex;flex-wrap:wrap;gap:6px}.manager-accounts-list__actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.user-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.02em}.user-badge--manager{background:#0029491a;color:var(--brand)}.user-badge--active{background:#e8f5e9;color:#2e7d32}.user-badge--pending{background:#fff8e1;color:#f57f17}.user-badge--microsoft{background:#e8f0fe;color:#1a56db}.field-checkbox{display:flex;align-items:center;gap:8px}.field-checkbox input{width:auto}.reset-link-field{width:100%;margin-top:8px;font-size:.85rem}.manager-accounts-list__role{margin:0;max-width:220px}.manager-accounts-list__role select{width:100%}.manager-accounts-list__email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.manager-email-input{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff}.manager-email-input__local{flex:1;min-width:0;border:0;border-radius:0;padding:10px 12px;font:inherit}.manager-email-input__local:focus{outline:none}.manager-email-input:focus-within{border-color:var(--brand);box-shadow:0 0 0 2px #0029491f}.manager-email-input__suffix{display:flex;align-items:center;padding:0 12px;background:#f4f6f8;color:var(--muted);border-left:1px solid var(--border);white-space:nowrap;font-size:.95rem}.game-upload-form{display:grid;gap:14px;max-width:560px}.game-upload-files{display:grid;gap:12px}.game-file-name{display:block;margin-top:6px;color:#4a5568}.game-manager-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.game-manager-section-header h2{margin:0}.game-manager-header-actions{display:flex;flex-wrap:wrap;gap:8px}.game-manager-empty{color:#4a5568}.game-manager-table-wrap{overflow-x:auto}.game-manager-table{width:100%;border-collapse:collapse;font-size:.95rem}.game-manager-table th,.game-manager-table td{padding:12px;border-bottom:1px solid #d7dfea;text-align:left;vertical-align:top}.game-manager-table th{font-weight:600;color:#334155;background:#f8fafc}.game-manager-table__name{font-weight:600;white-space:nowrap}.game-manager-badges{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.game-status-badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef2f7;color:#64748b;font-size:.8rem}.game-status-badge--ready{background:#e8f7ee;color:#1f7a43}.game-manager-paths{display:grid;gap:4px}.game-manager-paths code{font-size:.78rem;color:#64748b;word-break:break-all}.game-manager-actions{display:flex;flex-wrap:wrap;gap:8px}.game-manager-search{margin-bottom:14px}.game-name-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.game-name-list__item{width:100%;text-align:left;padding:12px 14px;border:1px solid #d7dfea;border-radius:8px;background:#fff;color:#1f2937;font-size:.98rem;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.game-name-list__item:hover{border-color:#8fa6c9;background:#f8fafc}.game-name-list__item--active{border-color:#2c7be5;background:#edf4ff}.game-manager-detail{grid-column:1 / -1}.game-manager-list-section{min-height:220px}@media (max-width: 768px){.roster-editor-container{grid-template-columns:1fr}.input-row{flex-direction:column}.input-small{max-width:none}}.test-chart-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:stretch}.test-right-stack{display:grid;grid-template-rows:auto auto;gap:6px;align-content:start;justify-items:stretch;min-height:0}.test-card--metrics-rail{width:100%}.test-card--season-link{justify-self:start;width:118px;height:118px;aspect-ratio:1 / 1;box-sizing:border-box;display:flex;align-items:center;justify-content:center;align-self:start;padding:8px;overflow:hidden}.season-share-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:100%;height:100%;min-height:0}.season-share-panel__title{margin:0;font-size:.74rem;font-weight:700;color:#243246;line-height:1.1;text-align:center;flex-shrink:0}.season-share-panel__qr-box{flex:1 1 auto;width:100%;min-height:0;display:flex;align-items:center;justify-content:center}.season-share-panel__qr-box--placeholder{background:#f4f6f9;border-radius:4px}.season-share-panel__qr{width:84px;height:84px;max-width:100%;max-height:100%;display:block;object-fit:contain}.test-season-link-text{font-size:1rem;font-weight:700;color:#5c6c80;text-align:center}.test-card--quick{display:grid;align-content:start;gap:8px;align-self:start;height:fit-content}.test-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.test-quick-item{border:1px solid #d6deea;border-radius:8px;background:#f4f7fb;padding:6px 8px}.test-quick-item__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#5c6c80}.test-quick-item__value{margin-top:2px;font-size:.9rem;font-weight:700;color:#223246}.test-shotchart-host{width:100%;height:auto;aspect-ratio:56 / 48;max-height:3.4in;border-radius:8px;border:1px solid #d4dae4;overflow:hidden;display:grid;place-items:center}.test-shotchart-host .plotly-wrap{width:100%!important;height:100%!important;pointer-events:none}.test-shotchart-host .plotly-wrap svg{transform:translateY(-4%) scale(1.18);transform-origin:center center}.test-sidebar__action{width:100%;margin-right:0}.test-shotchart-host .plotly-wrap,.test-shotchart-host .plotly-wrap svg{background:#fff!important}.test-shotchart-host .chart-title-overlay,.test-shotchart-host .chart-legend{display:none!important}.test-chart-key{margin-top:6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.84rem;color:#34465e}.test-chart-key__item{display:inline-flex;align-items:center;gap:6px;background:#edf2f8;border:1px solid #d7dfeb;border-radius:999px;padding:3px 9px}.test-chart-key__dot{width:11px;height:11px;display:inline-block}.test-chart-key__dot--made{border-radius:999px;background:#32cd32;border:1px solid #111}.test-chart-key__dot--missed{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:10px solid #b22222}.test-chart-key__total{background:#f7f9fc}.test-table{width:100%;border-collapse:collapse;font-size:.82rem}.test-table th,.test-table td{border:1px solid #d8dee8;padding:5px 6px;text-align:left;transition:background-color .18s ease}.test-table tbody td{color:#1c2430}.test-table tbody td:last-child{font-weight:700;color:#13202d}.test-table th{background:#ebf1f8;font-weight:700}.test-card--metrics{align-self:start}.test-metrics{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.test-card--metrics-rail{min-height:0}.test-card--metrics-rail .test-metrics{grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.test-card--metrics-rail .test-metric{padding:6px 8px;grid-column:span 3}.test-card--metrics-rail .test-metric--steals,.test-card--metrics-rail .test-metric--blocks,.test-card--metrics-rail .test-metric--pf{grid-column:span 2}.test-card--metrics-rail .test-metric__label{font-size:.72rem;white-space:nowrap}.test-card--metrics-rail .test-metric__value{margin-top:3px;font-size:.9rem}.test-card--season .test-metric__label{font-size:.7rem;white-space:nowrap}.test-card--season .test-metric__value{margin-top:3px;font-size:.92rem}.test-metric{border:1px solid #dae1ea;border-radius:8px;padding:7px 9px;transition:background-color .18s ease}.test-metric--unavailable{color:#4f5f73}.test-metric__label{font-size:.76rem;color:inherit;opacity:.78;text-transform:uppercase;letter-spacing:.04em}.test-metric__value{margin-top:4px;font-size:.95rem;font-weight:700;color:inherit}@media (max-width: 920px){.season-stats-page{grid-template-columns:1fr;padding:10px}.season-stats-sidebar{position:static}.season-stats-grid--charts,.season-stats-grid--wide{grid-template-columns:1fr}.test-report-page{display:grid;grid-template-columns:1fr;padding:10px}.test-sidebar{position:static;width:100%;max-height:none;overflow:visible}.test-sheet-wrap{min-height:0;padding:0}.test-sheet{width:100%;min-height:auto;height:auto;padding:14px}.test-card--chart img{height:auto}.test-shotchart-host{height:auto;aspect-ratio:56 / 48;min-height:250px;max-height:none}.test-sheet__header{flex-direction:column;gap:8px}.test-sheet__brand{align-items:flex-start}.test-sheet__game,.test-sheet__date{white-space:normal}.test-chart-row{grid-template-columns:1fr}.test-right-stack{height:auto;grid-template-rows:auto auto}.test-season-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media print{.test-sheet,.test-sheet *,.test-card,.test-table th,.test-table td,.test-metric,.test-chart-key__item,.test-shotchart-host,.test-sheet__player-photo{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.test-sheet{background:#fff!important}}@media print{.test-report-page{padding:0;display:block;background:#fff}.test-sidebar{display:none}.test-sheet-wrap{padding:0;background:#fff}.test-sheet{box-shadow:none;border:none;margin:0}}@media (max-width: 640px){.export-panel__buttons{flex-direction:column}.export-panel__buttons .btn{width:100%}}
