:root{--blue: #72b7ff;--blue-bright: #a5d5ff;--orange: #ff927d;--teal: #62e2c1;--green: #63e6a4;--red: #ff7186;--purple: #b9a7ff;--bg: #080d1a;--card: #121d32;--card-hover: #192844;--surface: #1d2d49;--text: #eef4ff;--muted: #93a7c7;--muted-dark: #617898;--border: #293d5d;--border-strong: #3b5579;--danger-bg: #2b1423;--danger-border: #713044;--control-bg: #d9e1ec;--control-text: #13243c;--control-hover: #f3f6fb;--shadow: rgba(0, 0, 0, .28);color-scheme:dark}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(circle at 88% -10%,rgba(114,183,255,.13),transparent 32rem),radial-gradient(circle at -10% 22%,rgba(98,226,193,.07),transparent 26rem),var(--bg);color:var(--text)}.app{max-width:1000px;margin:0 auto;padding:24px 16px}.header h1{margin:0;font-size:28px}.subtitle{color:var(--muted);margin:4px 0 20px}.upload{display:inline-flex;align-items:center;gap:10px;background:var(--card);border:1px dashed var(--border-strong);border-radius:10px;padding:14px 18px;cursor:pointer;transition:border-color .15s}.upload:hover{border-color:var(--blue)}.upload input{display:none}.sources{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.divider{color:var(--muted);font-size:13px}.ballchasing{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ballchasing input[type=text]{background:var(--card);border:1px solid var(--border-strong);border-radius:8px;color:var(--text);padding:10px 12px;min-width:260px;font-size:14px}.ballchasing input[type=text]:focus{outline:none;border-color:var(--blue)}.ballchasing button{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:10px 14px;font-size:14px;cursor:pointer;transition:opacity .15s}.ballchasing button.secondary{background:var(--border)}.ballchasing button:disabled{opacity:.5;cursor:not-allowed}.ballchasing button:not(:disabled):hover{opacity:.9}.source-note{color:var(--muted);font-size:13px;margin:16px 0 0}.source-note b{color:var(--text)}.view-tabs,.db-tabs{display:flex;gap:8px;margin:8px 0 20px}.view-tabs button,.db-tabs button{background:var(--card);color:var(--muted);border:1px solid var(--border);border-radius:8px;padding:8px 16px;cursor:pointer;font-size:14px}.view-tabs button.active,.db-tabs button.active{background:var(--blue);color:#fff;border-color:var(--blue)}.db-filter{display:flex;align-items:center;gap:16px;margin-bottom:12px}.db-filter select{background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;padding:6px 8px}.db-count{color:var(--muted);font-size:13px}.db-search{background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;padding:6px 10px;min-width:200px;font-size:14px}.db-search:focus{outline:none;border-color:var(--blue)}.db-pager{display:flex;align-items:center;gap:16px;margin-top:12px;color:var(--muted);font-size:13px}.db-pager button:disabled{opacity:.4;cursor:not-allowed}.grid-wrap{width:100%;margin-top:8px}.grid-clickable{cursor:pointer}button.link{background:none;border:none;color:var(--blue);cursor:pointer;font-size:13px;padding:0}.player-detail h3{margin:12px 0}.stats-table tr.clickable{cursor:pointer}.stats-table tr.clickable:hover td{background:var(--card-hover)}.error{margin-top:16px;padding:12px 14px;border-radius:8px;background:var(--danger-bg);color:#ffc1ca;border:1px solid var(--danger-border)}.hint{color:var(--muted);margin-top:20px}.hint code{background:var(--surface);padding:1px 6px;border-radius:4px}.dashboard{margin-top:24px}.summary{display:flex;gap:12px;flex-wrap:wrap}.stat-card{flex:1;min-width:140px;background:var(--card);border-radius:10px;padding:16px;text-align:center}.stat-value{font-size:28px;font-weight:700}.stat-label{color:var(--muted);font-size:13px;margin-top:4px}.teams{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}.team-card{flex:1;min-width:200px;background:var(--card);border-radius:10px;padding:16px;border-left:4px solid transparent}.team-card.blue{border-left-color:var(--blue)}.team-card.orange{border-left-color:var(--orange)}.team-card h3{margin:0 0 10px;display:flex;align-items:center;gap:8px}.team-goals{margin-left:auto;font-size:22px;font-weight:800}.team-stat{font-size:14px;color:var(--muted);margin:2px 0}.team-stat b{color:var(--text)}.team-players{margin-top:8px;font-size:13px}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.dot.blue{background:var(--blue)}.dot.orange{background:var(--orange)}h2{margin:24px 0 12px}.table-wrap{overflow-x:auto}.stats-table{width:100%;border-collapse:collapse;font-size:14px}.stats-table th,.stats-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--surface);white-space:nowrap}.stats-table th{color:var(--muted);font-weight:600}.stats-table td.name{font-weight:600}.stats-table .thirds{color:var(--muted)}.stats-table .rank{color:var(--purple);white-space:nowrap}.bar{position:relative;background:var(--surface);border-radius:6px;height:18px}.bar-fill{background:var(--blue);height:100%;border-radius:6px}.bar-label{position:absolute;right:6px;top:0;line-height:18px;font-size:11px;color:var(--text)}@media(max-width:600px){.stat-value{font-size:22px}}.rank-compare{margin-top:8px}.rc-controls{display:flex;gap:20px;flex-wrap:wrap;align-items:center;margin-bottom:20px}.rc-controls label{color:var(--muted);font-size:14px}.rc-controls select{background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:8px;padding:8px 10px;font-size:14px}.rc-controls select:focus{outline:none;border-color:var(--blue)}.rc-chart{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px 18px;margin-bottom:24px}.rc-chart h3{margin:0 0 14px;font-size:15px}.rc-chart-row{display:flex;align-items:center;gap:12px;margin:8px 0}.rc-chart-label{width:160px;flex-shrink:0;color:var(--text);font-size:13px;text-align:right}.rc-chart-track{flex:1;height:20px;background:var(--surface);border-radius:6px;overflow:hidden}.rc-chart-fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-bright));border-radius:6px;transition:width .25s ease}.rc-chart-val{width:60px;flex-shrink:0;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}.grade-view{margin-top:8px}.grade-controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:22px}.grade-controls input[type=text]{background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:8px;padding:10px 12px;min-width:240px;font-size:14px}.grade-controls input[type=text]:focus{outline:none;border-color:var(--blue)}.grade-controls select{background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:8px;padding:10px;font-size:14px}.grade-controls button{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:10px 18px;font-size:14px;cursor:pointer}.grade-controls button:disabled{opacity:.5;cursor:default}.grade-overall{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px 22px;margin-bottom:20px;text-align:center}.grade-overall-label{color:var(--muted);font-size:13px}.grade-overall-rank{font-size:34px;font-weight:700;margin:6px 0;background:linear-gradient(90deg,var(--blue),var(--blue-bright));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.grade-games{font-size:12px}.aspects{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.aspect-row{display:flex;align-items:center;gap:14px;margin:10px 0}.aspect-name{width:150px;flex-shrink:0;font-size:14px}.aspect-rank{width:170px;flex-shrink:0;font-size:13px;text-align:right}.grade-track{flex:1;height:18px;background:var(--surface);border-radius:6px;overflow:hidden}.grade-fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-bright));border-radius:6px;transition:width .3s ease}.need-games{background:var(--card);border:1px solid var(--border-strong);border-radius:12px;padding:20px 22px;max-width:520px}.need-games h3{margin:0 0 8px}.need-games p{color:var(--text);margin:0 0 14px}.grade-notes{margin:16px 0 0;padding-left:18px}.grade-notes li{font-size:13px;margin:4px 0}.muted{color:var(--muted)}.search-wrap{position:relative}.search-wrap input[type=text]{min-width:260px}.search-results{position:absolute;z-index:10;top:100%;left:0;right:0;margin:4px 0 0;list-style:none;padding:4px;background:var(--card);border:1px solid var(--border-strong);border-radius:8px;max-height:280px;overflow-y:auto}.search-results li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-radius:6px;cursor:pointer}.search-results li:hover{background:var(--card-hover)}.sr-name{font-size:14px;color:var(--text)}.sr-meta{font-size:12px}.me-btn{background:var(--control-bg)!important;color:var(--control-text)!important;border:1px solid rgba(255,255,255,.5);border-radius:999px;padding:8px 13px;font-weight:700;white-space:nowrap;box-shadow:0 4px 12px var(--shadow);transition:background .15s,transform .15s}.me-btn:hover{background:var(--control-hover)!important;transform:translateY(-1px)}.link-btn{background:none!important;border:none!important;color:var(--blue);cursor:pointer;font-size:13px;padding:4px 6px}.link-btn:disabled{opacity:.45;cursor:not-allowed}.danger-link{color:var(--red)}.live-view{margin-top:8px}.live-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.live-toolbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:12px 14px;margin-bottom:10px;background:var(--card);border:1px solid var(--border);border-radius:12px}.live-toolbar>*{min-width:0}.live-toolbar .live-status-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.live-toolbar .me-btn{padding:7px 9px;font-size:12px;box-shadow:none}.launch-choice{display:inline-flex;align-items:center;gap:8px}.save-reminder{color:var(--orange);font-size:13px;font-weight:700}.live-dot{width:10px;height:10px;border-radius:50%;background:var(--muted)}.live-dot.on{background:var(--green);box-shadow:0 0 8px var(--green)}.live-dot.off{background:var(--muted-dark)}.live-status-text{font-weight:500}.field-label{color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.02em;white-space:nowrap}.live-me{margin-left:4px}.live-identity{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:12px 14px;margin-bottom:16px;background:#121d3294;border:1px solid var(--border);border-radius:12px}.live-identity>*{min-width:0}.identity-label{display:flex;align-items:center;gap:10px;min-width:0}.identity-label>:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.identity-inline-list{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.connect-account-wrap{position:relative}.provider-menu{position:absolute;z-index:20;right:0;top:calc(100% + 6px);display:grid;gap:4px;min-width:190px;padding:6px;background:var(--card);border:1px solid var(--border-strong);border-radius:10px;box-shadow:0 10px 24px var(--shadow)}.provider-option{display:flex;justify-content:space-between;align-items:center;gap:12px;border:0;border-radius:7px;padding:9px 10px;background:transparent;color:var(--text);text-align:left;cursor:pointer}.provider-option:hover{background:var(--card-hover)}.provider-option span{color:var(--muted);font-size:11px}.provider-option.disabled{color:var(--muted)}.live-identity select,.live-toolbar select{min-width:0;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:8px;padding:7px 9px}.live-identity select:focus,.live-toolbar select:focus{outline:none;border-color:var(--blue)}.live-identity-list{margin:-4px 0 16px;padding:0 4px}.live-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin:12px 0}.live-metric{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px;text-align:center}.live-metric-value{font-size:22px;font-weight:700}.live-metric-label{color:var(--muted);font-size:12px;margin-top:4px}.live-feed{margin-top:16px}.live-feed h3{margin:0 0 8px}.live-feed ul{list-style:none;padding:0;margin:0}.live-feed .fb{display:flex;gap:10px;align-items:baseline;padding:8px 10px;border-radius:8px;margin-bottom:6px;background:var(--card)}.fb-time{color:var(--muted);font-variant-numeric:tabular-nums;min-width:42px}.fb-sev{font-size:11px;font-weight:700;min-width:64px}.fb-warning .fb-sev{color:var(--orange)}.fb-tip .fb-sev{color:var(--blue)}.fb-info .fb-sev{color:var(--muted)}.live-score{font-size:18px;font-weight:700;margin:12px 0 8px}.score-winning{color:var(--green)}.score-losing{color:var(--red)}.score-tied{color:var(--text)}.vitals-table{width:100%;border-collapse:collapse;font-size:14px}.vitals-table th,.vitals-table td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--border)}.vitals-table th{color:var(--muted);font-weight:600;font-size:12px}.vitals-table .row-me{background:#72b7ff24;font-weight:600}.vitals-table .row-team0 td{border-left:2px solid var(--blue)}.vitals-table .row-team1 td{border-left:2px solid var(--orange)}.live-disclaimer{margin-top:10px;font-size:12px}.identity-chip{background:var(--card);border:1px solid var(--border);border-radius:999px;padding:3px 10px;margin-left:6px;font-size:13px;display:inline-flex;align-items:center;gap:4px}.identity-chip .link-btn{padding:0 2px}.games-section{margin-top:16px}.games-section h4{margin:0 0 8px;color:var(--muted)}.games-list{list-style:none;padding:0;margin:0}.game-row{background:var(--card);border:1px solid var(--border);border-radius:10px;margin-bottom:8px;overflow:hidden}.game-head{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer}.game-head:hover{background:var(--card-hover)}.game-meta{color:var(--muted);font-size:13px}.result-win-text{color:var(--green)}.result-loss-text{color:var(--red)}.result-tie-text,.result-unknown-text{color:var(--muted)}.findings-badge{margin-left:auto;background:var(--orange);color:var(--bg);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700}.game-detail{padding:10px 12px;border-top:1px solid var(--border)}.game-stats{font-size:13px;margin-bottom:8px}.findings{list-style:none;padding:0;margin:0}.insights{list-style:none;padding:0;margin:0 0 10px}.coach-profile{background:var(--card);border:1px solid var(--surface);border-radius:10px;padding:12px 14px;margin-bottom:16px}.cp-headline{margin:6px 0 10px;font-size:14px}.cp-issues{list-style:none;padding:0;margin:0}.cp-issue{padding:7px 10px;border-radius:8px;margin-bottom:6px;background:var(--card-hover);border-left:3px solid var(--muted)}.cp-major{border-left-color:var(--orange)}.cp-minor{border-left-color:var(--blue)}.cp-top{background:#ff718624}.cp-row{display:flex;align-items:center;gap:10px}.cp-kind{font-weight:600}.cp-trend{font-size:12px;padding:1px 6px;border-radius:4px;background:var(--surface)}.cp-trend-improving{color:var(--green)}.cp-trend-worsening{color:var(--red)}.cp-costing{font-size:11px;font-weight:700;color:var(--bg);background:var(--red);border-radius:4px;padding:1px 6px}.cp-sub{font-size:12px;margin-top:2px}.cp-strengths{margin-top:10px;font-size:13px}.cp-strengths ul{margin:4px 0 0;padding-left:18px}.insight{padding:8px 10px;border-radius:8px;margin-bottom:6px;background:var(--card-hover);border-left:3px solid var(--muted)}.insight-major{border-left-color:var(--orange)}.insight-minor{border-left-color:var(--blue)}.insight-top{background:#ff718624}.insight-top-badge{background:var(--red);color:var(--bg);border-radius:4px;padding:1px 6px;font-size:11px;font-weight:700;margin-right:8px}.insight-headline{font-weight:600}.insight-example{font-size:12px;margin-top:2px}.raw-findings{margin-top:6px}.raw-findings summary{cursor:pointer;font-size:13px}.process-status{padding:8px 12px;border-radius:8px;margin:8px 0;font-size:14px;background:var(--card);border:1px solid var(--border)}.process-status.phase-done{border-color:var(--green)}.process-status.phase-none,.process-status.phase-newmatch{border-color:var(--muted);color:var(--muted)}@media(max-width:760px){.live-toolbar{grid-template-columns:auto minmax(0,1fr)}.live-toolbar .launch-choice,.live-toolbar .me-btn{justify-self:stretch}.launch-choice select{flex:1}.live-identity{grid-template-columns:auto minmax(0,1fr)}.identity-label{grid-column:1 / -1}.live-identity select,.live-identity .me-btn{width:100%}}.match-result{display:flex;align-items:baseline;gap:10px;padding:12px 16px;border-radius:10px;margin:12px 0;font-size:20px}.result-win{background:#63e6a426;border:1px solid var(--green)}.result-loss{background:#ff718626;border:1px solid var(--red)}.result-tie{background:#93a7c726;border:1px solid var(--muted)}.result-unknown{background:#93a7c71f;border:1px solid var(--border-strong)}.result-label{font-weight:800;letter-spacing:1px}.result-win .result-label{color:var(--green)}.result-loss .result-label{color:var(--red)}.result-score{font-weight:700}.review-queue{margin-top:8px}.review-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.review-header h2{margin:0 0 4px}.review-header p{margin:0}.review-controls{display:flex;gap:8px;align-items:center}.review-controls select,.review-note-label textarea{background:var(--card);color:var(--text);border:1px solid var(--border-strong);border-radius:8px;padding:9px 10px;font:inherit}.review-button{border:1px solid var(--border-strong);border-radius:999px;background:var(--control-bg);color:var(--control-text);padding:8px 14px;font-weight:700;cursor:pointer;white-space:nowrap}.review-button:hover{background:var(--control-hover)}.review-button:disabled{opacity:.45;cursor:not-allowed}.review-button.secondary{background:var(--card);color:var(--text)}.review-button.accept{background:var(--green);border-color:var(--green)}.review-button.reject{background:var(--red);border-color:var(--red)}.review-button.promote{background:var(--teal);border-color:var(--teal)}.review-message{background:#63e6a41f;border:1px solid var(--green);color:var(--text);border-radius:8px;padding:9px 12px;margin-bottom:12px}.review-layout{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.7fr);gap:14px;align-items:start}.review-list,.review-detail{background:var(--card);border:1px solid var(--border);border-radius:12px}.review-list{overflow:hidden}.review-list-heading{padding:12px 14px;color:var(--muted);font-size:13px;border-bottom:1px solid var(--border)}.review-row{width:100%;text-align:left;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);padding:12px 14px;cursor:pointer;display:grid;gap:5px}.review-row:hover,.review-row.selected{background:var(--card-hover)}.review-row-title{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-row-meta{color:var(--muted);font-size:12px}.review-row-badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.review-badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;background:var(--surface);color:var(--muted)}.status-pending,.bucket-unvalidated{color:var(--orange);background:#ff927d24}.status-accepted,.bucket-reference_candidate{color:var(--green);background:#63e6a424}.status-rejected,.bucket-rejected{color:var(--red);background:#ff718624}.status-promoted{color:var(--teal);background:#62e2c124}.bucket-coaching_only{color:var(--blue-bright);background:#72b7ff24}.review-detail{padding:16px;min-width:0}.review-detail-header{display:flex;justify-content:space-between;gap:12px;align-items:start;border-bottom:1px solid var(--border);padding-bottom:12px}.review-detail-header h3{margin:0 0 8px;overflow-wrap:anywhere}.review-meta-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.review-meta-grid div{display:grid;gap:3px;min-width:0}.review-meta-grid b{overflow-wrap:anywhere;font-size:13px}.review-detail h4{margin:18px 0 8px}.review-insights{list-style:none;padding:0;margin:0;display:grid;gap:7px}.review-insights li{background:var(--card-hover);border-left:3px solid var(--blue);border-radius:7px;padding:9px 10px}.review-insights small{display:block;color:var(--muted);margin-top:4px}.review-verdict{background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;padding:10px;display:grid;gap:8px}.review-verdict pre,.review-raw pre{max-height:260px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted);font-size:11px;margin:0}.review-note-label{display:grid;gap:6px;margin:16px 0 10px;color:var(--muted);font-size:13px}.review-note-label textarea{min-height:70px;resize:vertical}.review-actions{display:flex;flex-wrap:wrap;gap:8px}.review-raw{margin-top:14px}.review-raw summary{cursor:pointer;color:var(--muted);font-size:13px}.review-empty{padding:20px 14px;text-align:center}@media(max-width:760px){.review-header{align-items:flex-start;flex-direction:column}.review-layout{grid-template-columns:1fr}.review-meta-grid{grid-template-columns:repeat(2,1fr)}}
