*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#e2e8f0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f1117;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}#root{min-height:100vh}.dashboard{max-width:1400px;margin:0 auto;padding:24px 32px 48px}.header{border-bottom:1px solid #2a2d37;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;display:flex}.header-brand{align-items:center;gap:8px;display:flex}.header-logo{width:auto;height:60px}.header h1{color:#fff;letter-spacing:-.5px;font-size:24px;font-weight:700}.header-right{align-items:center;display:flex;position:relative}.hamburger-btn{color:#e2e8f0;cursor:pointer;background:0 0;border:1px solid #ffffff1f;border-radius:8px;padding:6px 10px;font-size:22px;line-height:1;transition:background .2s}.hamburger-btn:hover{background:#ffffff14}.hamburger-menu{z-index:100;background:#1e2030;border:1px solid #ffffff1a;border-radius:10px;min-width:160px;margin-top:6px;padding:4px;position:absolute;top:100%;right:0;box-shadow:0 8px 24px #0006}.hamburger-menu-item{color:#e2e8f0;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;width:100%;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:background .15s;display:block}.hamburger-menu-item:hover{background:#ffffff14}.hamburger-menu-item:disabled{opacity:.5;cursor:not-allowed}.app-footer{color:#64748b;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:50;background:#11121bd9;border-top:1px solid #ffffff0d;justify-content:center;align-items:center;gap:12px;padding:6px 0;font-size:11px;display:flex;position:fixed;bottom:0;left:0;right:0}.refresh-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.sub-tabs{background:#1a1d27;border:1px solid #2a2d37;border-radius:10px;gap:4px;margin-bottom:20px;padding:4px;display:inline-flex}.sub-tab-btn{cursor:pointer;color:#64748b;background:0 0;border:none;border-radius:8px;padding:8px 18px;font-family:inherit;font-size:13px;font-weight:600;transition:all .2s}.sub-tab-btn:hover{color:#94a3b8;background:#ffffff08}.sub-tab-btn.active{color:#fff;background:#3b82f6}.tabs{border-bottom:1px solid #2a2d37;justify-content:space-between;margin-bottom:28px;display:flex}.tabs-left,.tabs-right{gap:4px;display:flex}.tabs button{color:#64748b;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:500;transition:color .2s,border-color .2s}.tabs button:hover{color:#94a3b8}.tabs button.active{color:#3b82f6;border-bottom-color:#3b82f6}.live-dot{vertical-align:middle;background:#22c55e;border-radius:50%;width:7px;height:7px;margin-left:6px;animation:1.5s ease-in-out infinite live-blink;display:inline-block}@keyframes live-blink{0%,to{opacity:1;box-shadow:0 0 4px #22c55e99}50%{opacity:.3;box-shadow:none}}.backtest-running-dot{vertical-align:middle;background:#f59e0b;border-radius:50%;width:7px;height:7px;margin-left:6px;animation:1.5s ease-in-out infinite backtest-blink;display:inline-block}@keyframes backtest-blink{0%,to{opacity:1;box-shadow:0 0 4px #f59e0b99}50%{opacity:.3;box-shadow:none}}.backtest-done-dot{vertical-align:middle;background:#22c55e;border-radius:50%;width:7px;height:7px;margin-left:6px;display:inline-block}.games-grid{grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:20px;display:grid}@media (width<=480px){.games-grid{grid-template-columns:1fr}}.game-card{background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;padding:20px;transition:border-color .2s}.game-card:hover{border-color:#3b82f6}.game-card-header{justify-content:space-between;align-items:flex-start;margin-bottom:16px;display:flex}.matchup{color:#fff;align-items:center;gap:6px;font-size:16px;font-weight:600;display:flex}.team-logo{vertical-align:middle;flex-shrink:0}.team-with-logo{align-items:center;gap:4px;display:inline-flex}.matchup-names{color:#94a3b8;margin-top:2px;font-size:12px}.game-time{color:#64748b;margin-top:4px;font-size:12px}.score-section{justify-content:center;align-items:center;gap:16px;margin-bottom:12px;display:flex}.score-inline{justify-content:center;align-items:center;gap:12px;margin-bottom:12px;padding:8px 0;display:flex}.score-inline-team{align-items:center;gap:6px;min-width:70px;display:flex}.score-inline-team-right{justify-content:flex-end}.score-inline-name{color:#e2e8f0;text-transform:uppercase;letter-spacing:.5px;font-size:14px;font-weight:700}.score-inline-numbers{align-items:center;gap:6px;display:flex}.score-inline-pts{color:#94a3b8;font-variant-numeric:tabular-nums;text-align:center;min-width:36px;font-size:24px;font-weight:800}.score-inline-pts.score-leading{color:#e2e8f0}.score-inline-dash{color:#475569;font-size:18px;font-weight:300}.score-team{flex-direction:column;align-items:center;gap:2px;display:flex}.score-team-name{color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.score-number{color:#fff;font-size:22px;font-weight:700}.score-divider{color:#475569;padding-top:16px;font-size:18px}.status-badge{text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:600}.status-badge.scheduled{color:#22c55e;background:#22c55e26}.status-badge.in_progress,.status-badge.live{color:#eab308;background:#eab30826;animation:2s infinite pulse}.status-badge.final{color:#ef4444;background:#ef444426}.header-badges{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.status-badge.roster-adjusted{color:#eab308;background:#eab30826}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.bovada-odds{margin-bottom:16px}.no-odds-note{color:#64748b;text-align:center;padding:8px 16px;font-size:12px;font-style:italic}.bovada-odds-header{text-transform:uppercase;letter-spacing:.5px;color:#64748b;margin-bottom:8px;font-size:11px;font-weight:600}.bovada-odds-row{gap:16px;display:flex}.bovada-odds-item{text-align:center;background:#2a2d3766;border-radius:6px;flex:1;padding:8px 10px}.bovada-odds-label{text-transform:uppercase;letter-spacing:.5px;color:#64748b;margin-bottom:4px;font-size:10px;display:block}.bovada-odds-value{color:#e2e8f0;font-variant-numeric:tabular-nums;font-size:14px;font-weight:600;display:block}.injury-note{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.roster-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:700}.roster-active{color:#22c55e;background:#22c55e1f}.roster-pending{color:#eab308;background:#eab3081f}.injury-tag{color:#f87171;background:#ef44441a;border:1px solid #ef444433;border-radius:4px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-block}.injury-disclaimer{color:#475569;margin-top:4px;font-size:10px;font-style:italic;display:block}.rest-tag{color:#eab308;background:#eab3081a;border:1px solid #eab30833;border-radius:4px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-block}.prediction-section{background:#3b82f60d;border:1px solid #3b82f626;border-radius:8px;padding:14px}.prediction-section.totals-section{margin-top:12px}.prediction-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.model-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:700}.model-hybrid{color:#22c55e;background:#22c55e26;border:1px solid #22c55e4d}.model-elo{color:#94a3b8;background:#64748b26;border:1px solid #64748b4d}.prediction-section h4{text-transform:uppercase;letter-spacing:.5px;color:#3b82f6;margin-bottom:0;font-size:11px;font-weight:600}.prediction-row{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;display:flex}.prediction-row:last-child{margin-bottom:0}.prediction-label{color:#64748b}.prediction-value{color:#e2e8f0;font-variant-numeric:tabular-nums;font-weight:600}.win-prob-bar-container{background:#2a2d37;border-radius:3px;width:100%;height:6px;margin-top:4px;overflow:hidden}.win-prob-bar{background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:3px;height:100%;transition:width .5s}.edge-positive{color:#22c55e}.edge-negative{color:#ef4444}.value-badge{text-transform:uppercase;letter-spacing:.5px;color:#22c55e;background:#22c55e26;border-radius:4px;margin-left:8px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.confidence-badge{color:#60a5fa;background:#3b82f61f;border-radius:20px;padding:2px 10px;font-size:11px;font-weight:600;display:inline-block}.team-ratings{border-collapse:collapse;width:100%}.team-ratings th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #2a2d37;padding:10px 16px;font-size:11px;font-weight:600}.team-ratings td{color:#cbd5e1;border-bottom:1px solid #2a2d3780;padding:10px 16px;font-size:14px}.team-ratings tr:hover td{background:#3b82f60a}.team-ratings .rank-cell{font-variant-numeric:tabular-nums;width:50px;font-weight:700}.team-ratings .team-name{color:#fff;font-weight:600}.team-abbr{color:#64748b;font-size:12px;font-weight:400}.team-ratings .top-team .rank-cell,.team-ratings .top-team .team-name{color:#fbbf24}.team-ratings .bottom-team .rank-cell,.team-ratings .bottom-team .team-name{color:#475569}.rating-bar-container{align-items:center;gap:12px;min-width:200px;display:flex}.rating-number{font-variant-numeric:tabular-nums;text-align:right;color:#e2e8f0;min-width:48px;font-weight:700}.rating-bar{background:#2a2d37;border-radius:4px;flex:1;height:8px;overflow:hidden}.rating-bar-fill{background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:4px;height:100%;transition:width .5s}.top-team .rating-bar-fill{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.bottom-team .rating-bar-fill{background:#334155}.stats-table-wrapper{overflow-x:auto}.stats-table{border-collapse:collapse;width:100%;min-width:700px}.stats-table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:#64748b;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-bottom:1px solid #2a2d37;padding:10px 16px;font-size:11px;font-weight:600;transition:color .2s}.stats-table th:hover{color:#94a3b8}.stats-table th.sorted{color:#3b82f6}.stats-table th .sort-arrow{margin-left:4px;font-size:10px}.stats-table td{color:#cbd5e1;font-variant-numeric:tabular-nums;border-bottom:1px solid #2a2d3780;padding:10px 16px;font-size:14px}.stats-table tr:hover td{background:#3b82f60a}.stats-table .team-name{color:#fff;font-weight:600}.record-cell{align-items:center;gap:10px;display:flex}.record-text{min-width:50px}.win-pct-bar{background:#2a2d37;border-radius:2px;width:60px;height:4px;overflow:hidden}.win-pct-fill{background:#3b82f6;border-radius:2px;height:100%}.net-positive{color:#22c55e;font-weight:600}.net-negative{color:#ef4444;font-weight:600}.loading-container{flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:80px 20px;display:flex}.backtest-progress-container{width:100%;max-width:400px}.backtest-progress-bar{background:#2a2d37;border-radius:5px;width:100%;height:10px;overflow:hidden}.backtest-progress-fill{background:#22c55e;border-radius:5px;height:100%;transition:width .3s}.backtest-progress-text{color:#94a3b8;text-align:center;margin-top:8px;font-size:13px}.loading-spinner{border:3px solid #2a2d37;border-top-color:#3b82f6;border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}.loading-text{color:#64748b;font-size:14px}.error-container{flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:80px 20px;display:flex}.error-message{color:#ef4444;font-size:14px}.retry-button{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:8px;padding:8px 20px;font-family:inherit;font-size:14px;font-weight:500;transition:background .2s}.retry-button:hover{background:#2563eb}.empty-state{text-align:center;color:#475569;padding:80px 20px;font-size:16px}.table-container{background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;overflow:hidden}.bankroll-input-section{align-items:center;margin-bottom:20px;display:flex}.bankroll-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:12px;font-size:13px;font-weight:600;display:flex}.bankroll-input-wrapper{background:#1a1d27;border:1px solid #2a2d37;border-radius:8px;align-items:center;padding:0 12px;transition:border-color .2s;display:flex}.bankroll-input-wrapper:focus-within{border-color:#3b82f6}.bankroll-dollar{color:#64748b;font-size:16px;font-weight:600}.bankroll-input{color:#e2e8f0;font-variant-numeric:tabular-nums;background:0 0;border:none;outline:none;width:120px;padding:8px;font-family:inherit;font-size:16px;font-weight:700}.bankroll-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bankroll-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bet-recommendation-section{border-radius:8px;margin-top:12px;padding:14px}.bet-recommendation-section.rec-bet{background:#22c55e0f;border:1px solid #22c55e33}.bet-recommendation-section.rec-pass{background:#64748b0f;border:1px solid #64748b26}.rec-header h4{text-transform:uppercase;letter-spacing:.5px;color:#94a3b8;margin-bottom:8px;font-size:11px;font-weight:600}.rec-verdict-row{align-items:center;gap:10px;margin-bottom:12px;display:flex}.bet-verdict{text-transform:uppercase;letter-spacing:1px;border-radius:4px;padding:3px 12px;font-size:14px;font-weight:800}.verdict-bet{color:#22c55e;background:#22c55e33}.verdict-pass{color:#ef4444;background:#ef444426}.bet-side{color:#22c55e;font-size:14px;font-weight:700}.confidence-badge.confidence-low{color:#64748b;background:#64748b1f}.confidence-badge.confidence-medium{color:#eab308;background:#eab3081f}.confidence-badge.confidence-very_high{color:#a855f7;background:#a855f726}.confidence-badge.confidence-high{color:#22c55e;background:#22c55e1f}.rec-details{margin-bottom:10px}.rec-detail-row{color:#64748b;justify-content:space-between;align-items:center;padding:4px 0;font-size:13px;display:flex}.rec-detail-value{color:#e2e8f0;font-variant-numeric:tabular-nums;font-weight:600}.rec-bet-amount{border-top:1px solid #2a2d3780;margin-top:4px;padding-top:6px}.bet-amount{color:#22c55e;font-size:16px;font-weight:800}.rec-explanation{color:#94a3b8;border-top:1px solid #2a2d3780;padding-top:8px;font-size:12px;line-height:1.5}.prediction-grid{flex-direction:column;gap:4px;display:flex}.bet-analysis-consolidated{flex-direction:column;gap:8px;display:flex}.bet-analysis-item{border-radius:8px;padding:10px 14px}.bet-analysis-item.rec-bet{background:#22c55e0d;border:1px solid #22c55e26}.bet-analysis-item.rec-pass{background:#64748b0d;border:1px solid #64748b26}.bet-analysis-header{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.bet-analysis-type{color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;min-width:50px;font-size:12px;font-weight:700}.bet-analysis-details{color:#94a3b8;flex-wrap:wrap;gap:6px 16px;font-size:12px;display:flex}.bet-analysis-details .bet-amount{color:#22c55e;font-weight:600}.log-bet-section{border-top:1px solid #2a2d37;justify-content:center;margin-top:12px;padding-top:12px;display:flex}.log-bet-buttons{justify-content:center;gap:8px;width:100%;display:flex}.log-bet-button{color:#22c55e;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;background:#22c55e26;border:1px solid #22c55e4d;border-radius:6px;padding:8px 20px;font-family:inherit;font-size:13px;font-weight:700;transition:background .2s,border-color .2s}.log-bet-button:hover{background:#22c55e40;border-color:#22c55e80}.log-bet-button:disabled{opacity:.5;cursor:not-allowed}.log-bet-manual-button{color:#60a5fa;cursor:pointer;background:#3b82f61a;border:1px solid #3b82f640;border-radius:6px;padding:8px 20px;font-family:inherit;font-size:13px;font-weight:600;transition:background .2s}.log-bet-manual-button:hover{background:#3b82f633}.log-bet-logged{color:#22c55e;background:#22c55e14;border-radius:6px;padding:8px 24px;font-size:13px;font-weight:600}.log-bet-form{width:100%}.log-bet-form-row{gap:12px;margin-bottom:10px;display:flex}.log-bet-form-label{color:#64748b;text-transform:uppercase;letter-spacing:.5px;flex-direction:column;flex:1;gap:4px;min-width:0;font-size:11px;font-weight:600;display:flex}.log-bet-select,.log-bet-amount-input{color:#e2e8f0;box-sizing:border-box;background:#12141c;border:1px solid #2a2d37;border-radius:6px;outline:none;width:100%;padding:8px 10px;font-family:inherit;font-size:14px;transition:border-color .2s}.log-bet-select:focus,.log-bet-amount-input:focus{border-color:#3b82f6}.log-bet-form-actions{justify-content:center;gap:8px;display:flex}.log-bet-cancel{color:#64748b;cursor:pointer;background:0 0;border:1px solid #2a2d37;border-radius:6px;padding:8px 20px;font-family:inherit;font-size:13px;font-weight:600;transition:color .2s}.log-bet-cancel:hover{color:#94a3b8}.performance-page{flex-direction:column;gap:20px;display:flex}.perf-summary-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.perf-card{text-align:center;background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;padding:16px}.perf-card-label{text-transform:uppercase;letter-spacing:.5px;color:#64748b;margin-bottom:6px;font-size:11px;font-weight:600}.perf-card-value{color:#e2e8f0;font-variant-numeric:tabular-nums;font-size:24px;font-weight:800}.perf-card-sub{color:#475569;margin-top:4px;font-size:12px}.perf-charts-row{grid-template-columns:2fr 1fr;gap:16px;display:grid}@media (width<=900px){.perf-charts-row{grid-template-columns:1fr}}.perf-chart-card{background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;padding:16px}.perf-chart-card h4{text-transform:uppercase;letter-spacing:.5px;color:#94a3b8;margin-bottom:12px;font-size:11px;font-weight:600}.perf-table-section{background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;overflow:hidden}.perf-table-header{border-bottom:1px solid #2a2d37;justify-content:space-between;align-items:center;padding:16px;display:flex}.perf-table-header h4{color:#e2e8f0;margin:0;font-size:14px;font-weight:600}.perf-filters{gap:4px;display:flex}.pill-tabs{background:#1a1d27;border:1px solid #2a2d37;border-radius:8px;gap:2px;width:fit-content;padding:3px;display:flex}.pill-tab{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 16px;font-family:inherit;font-size:13px;font-weight:500;transition:color .2s;position:relative}.pill-tab:hover{color:#94a3b8}.pill-tab-active{color:#fff}.pill-tab-bg{z-index:0;background:#3b82f633;border:1px solid #3b82f64d;border-radius:6px;position:absolute;inset:0}.pill-tab-label{z-index:1;position:relative}.perf-filter-btn{color:#64748b;cursor:pointer;background:0 0;border:1px solid #2a2d37;border-radius:4px;padding:4px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .2s}.perf-filter-btn:hover{color:#94a3b8;border-color:#3b82f6}.perf-filter-btn.active{color:#3b82f6;background:#3b82f626;border-color:#3b82f6}.result-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.result-badge.result-win{color:#22c55e;background:#22c55e26}.result-badge.result-loss{color:#ef4444;background:#ef444426}.result-badge.result-push{color:#eab308;background:#eab30826}.result-badge.result-pending{color:#64748b;background:#64748b26}.result-badge.result-void{color:#a855f7;background:#a855f726}.resolve-buttons{gap:4px;display:flex}.resolve-btn{cursor:pointer;border:none;border-radius:4px;width:28px;height:28px;font-family:inherit;font-size:11px;font-weight:700;transition:opacity .2s}.resolve-btn:hover{opacity:.8}.resolve-btn.resolve-win{color:#22c55e;background:#22c55e33}.resolve-btn.resolve-loss{color:#ef4444;background:#ef444433}.resolve-btn.resolve-push{color:#eab308;background:#eab30833}.resolve-btn.resolve-delete{color:#64748b;background:#64748b26}.resolve-btn.resolve-reset{color:#eab308;background:#eab30833}.model-actions{align-items:center;gap:12px;margin-bottom:20px;display:flex}.model-action-btn{cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;height:40px;padding:0 20px;font-family:inherit;font-size:13px;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.model-action-btn:disabled{opacity:.5;cursor:not-allowed}.snapshot-btn{color:#3b82f6;background:#3b82f626;border:1px solid #3b82f64d}.snapshot-btn:hover:not(:disabled){background:#3b82f640}.model-resolve-btn{color:#22c55e;background:#22c55e26;border:1px solid #22c55e4d}.model-resolve-btn:hover:not(:disabled){background:#22c55e40}.games-top-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.games-filters{gap:4px;display:flex}.my-bet-tag{background:#3b82f614;border:1px solid #3b82f633;border-radius:6px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;display:flex}.my-bet-label{text-transform:uppercase;letter-spacing:.5px;color:#3b82f6;white-space:nowrap;background:#3b82f633;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:800}.my-bet-detail{color:#e2e8f0;font-size:13px;font-weight:600}.odds-status{cursor:help;align-items:center;gap:5px;display:flex}.status-dot{border-radius:50%;width:8px;height:8px}.status-dot-green{background:#22c55e;box-shadow:0 0 6px #22c55e80}.status-dot-red{background:#ef4444;box-shadow:0 0 6px #ef444480}.status-dot-label{color:#64748b;font-size:11px;font-weight:500}.odds-status-tooltip{z-index:9999;pointer-events:none;background:#1a1d27;border:1px solid #2a2d37;border-radius:8px;width:280px;padding:12px 14px;display:none;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 8px 24px #00000080}.odds-status:hover .odds-status-tooltip{display:block}.odds-status{position:relative}.odds-tooltip-title{margin-bottom:6px;font-size:13px;font-weight:700}.odds-tooltip-body{color:#94a3b8;font-size:12px;line-height:1.5}.games-section{margin-bottom:28px}.games-section-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #2a2d37;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;font-size:14px;font-weight:600;display:flex}.section-status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.help-icon{color:#94a3b8;cursor:help;vertical-align:middle;background:#64748b40;border-radius:50%;justify-content:center;align-items:center;width:14px;height:14px;margin-left:4px;font-size:9px;font-weight:700;display:inline-flex;position:relative}.tooltip-text{color:#e2e8f0;text-transform:none;letter-spacing:normal;white-space:normal;text-align:left;z-index:100;pointer-events:none;background:#1a1d27;border:1px solid #3b82f6;border-radius:6px;width:220px;padding:8px 12px;font-size:12px;font-weight:400;line-height:1.5;display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0006}.tooltip-text:after{content:"";border:5px solid #0000;border-top-color:#3b82f6;position:absolute;top:100%;left:50%;transform:translate(-50%)}.help-icon:hover .tooltip-text{display:block}.floating-tooltip{color:#e2e8f0;text-align:left;z-index:9999;pointer-events:none;background:#1a1d27;border:1px solid #3b82f6;border-radius:6px;width:240px;padding:10px 14px;font-size:12px;font-weight:400;line-height:1.5;box-shadow:0 4px 16px #00000080}.manual-odds-section{margin-bottom:12px}.manual-odds-toggle{color:#eab308;cursor:pointer;background:#eab30814;border:1px dashed #eab3084d;border-radius:8px;width:100%;padding:10px;font-family:inherit;font-size:13px;font-weight:600;transition:background .2s}.manual-odds-toggle:hover{background:#eab30826}.manual-odds-form{background:#eab3080d;border:1px solid #eab30833;border-radius:8px;padding:12px}.manual-odds-header{text-transform:uppercase;letter-spacing:.5px;color:#eab308;margin-bottom:10px;font-size:11px;font-weight:600}.manual-odds-row{align-items:flex-end;gap:10px;display:flex}.manual-odds-check{color:#eab308;cursor:pointer;white-space:nowrap;background:#eab30826;border:1px solid #eab3084d;border-radius:6px;height:36px;padding:0 16px;font-family:inherit;font-size:13px;font-weight:700;transition:background .2s}.manual-odds-check:hover:not(:disabled){background:#eab30840}.manual-odds-check:disabled{opacity:.5;cursor:not-allowed}.props-instructions{color:#94a3b8;margin-bottom:16px;font-size:13px;line-height:1.5}.props-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;display:grid}.prop-card{background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;padding:16px;transition:border-color .2s}.prop-card:hover{border-color:#3b82f6}.prop-card-bet{border-color:#22c55e4d}.prop-card-header{justify-content:space-between;align-items:flex-start;margin-bottom:10px;display:flex}.prop-player-name{color:#e2e8f0;font-size:15px;font-weight:700}.prop-player-meta{color:#64748b;margin-top:2px;font-size:12px}.prop-predictions{border-bottom:1px solid #2a2d37;gap:12px;margin-bottom:12px;padding:8px 0;display:flex}.prop-pred-item{flex-direction:column;align-items:center;gap:2px;display:flex}.prop-pred-label{text-transform:uppercase;letter-spacing:.5px;color:#64748b;font-size:10px;font-weight:600}.prop-pred-value{color:#e2e8f0;font-variant-numeric:tabular-nums;font-size:18px;font-weight:800}.prop-pred-range{color:#475569;font-size:10px}.prop-pred-line{font-size:10px;font-weight:600}.prop-inputs{align-items:flex-end;gap:6px;margin-bottom:10px;display:flex}.prop-input-label{color:#64748b;text-transform:uppercase;flex-direction:column;flex:1;gap:2px;font-size:10px;font-weight:600;display:flex}.prop-input{color:#e2e8f0;box-sizing:border-box;background:#12141c;border:1px solid #2a2d37;border-radius:6px;outline:none;width:100%;padding:6px 8px;font-family:inherit;font-size:13px;transition:border-color .2s}.prop-input:focus{border-color:#3b82f6}.prop-check-btn{color:#eab308;cursor:pointer;white-space:nowrap;background:#eab30826;border:1px solid #eab3084d;border-radius:6px;height:32px;padding:0 14px;font-family:inherit;font-size:12px;font-weight:700}.prop-check-btn:hover:not(:disabled){background:#eab30840}.prop-check-btn:disabled{opacity:.4;cursor:not-allowed}.prop-edges{flex-direction:column;gap:6px;display:flex}.prop-edge-item{background:#64748b0d;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.prop-edge-bet{background:#22c55e0f;border:1px solid #22c55e26}.prop-edge-stat{color:#94a3b8;min-width:28px;font-weight:700}.prop-edge-side{font-weight:600}.prop-edge-value{font-variant-numeric:tabular-nums;font-weight:700}.props-game-section{background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;margin-bottom:16px;overflow:hidden}.props-game-header{background:#3b82f608;border-bottom:1px solid #2a2d37;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.props-game-title{color:#e2e8f0;margin:0;font-size:15px;font-weight:700}.props-game-meta{align-items:center;gap:10px;display:flex}.props-game-time{color:#94a3b8;white-space:nowrap;font-size:12px}.props-game-value-count{color:#22c55e;background:#22c55e1a;border-radius:10px;padding:2px 10px;font-size:12px;font-weight:600}.props-stat-group{border-bottom:1px solid #2a2d3780}.props-stat-group:last-child{border-bottom:none}.props-stat-label{text-transform:uppercase;letter-spacing:.5px;color:#3b82f6;padding:8px 16px 0;font-size:11px;font-weight:700}.compact-props-table{table-layout:fixed;width:100%;margin:0}.compact-props-table th,.compact-props-table td{text-align:left;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.compact-props-table th:first-child,.compact-props-table td:first-child{text-align:center;width:3%}.compact-props-table th:nth-child(2),.compact-props-table td:nth-child(2){width:18%}.compact-props-table th:nth-child(3),.compact-props-table td:nth-child(3){text-align:center;width:8%}.compact-props-table th:nth-child(4),.compact-props-table td:nth-child(4),.compact-props-table th:nth-child(5),.compact-props-table td:nth-child(5){text-align:center;width:7%}.compact-props-table th:nth-child(6),.compact-props-table td:nth-child(6){text-align:center;width:8%}.compact-props-table th:nth-child(7),.compact-props-table td:nth-child(7){text-align:center;width:10%}.compact-props-table th:nth-child(8),.compact-props-table td:nth-child(8){text-align:center;width:8%}.compact-props-table th:nth-child(9),.compact-props-table td:nth-child(9),.compact-props-table th:nth-child(10),.compact-props-table td:nth-child(10){text-align:center;width:12%}.compact-props-table th{border-bottom:1px solid #2a2d374d;padding:4px 10px;font-size:10px}.compact-props-table td{border-bottom:1px solid #2a2d3733;padding:5px 10px;font-size:12px}.compact-props-table tr:last-child td{border-bottom:none}.compact-props-table .confidence-badge{padding:1px 6px;font-size:9px}.prop-row-value td{background:#22c55e0a}.prop-row-placed td{opacity:.5}.prop-checkbox{cursor:pointer;accent-color:#22c55e;width:16px;height:16px}.compact-table .stats-table th{padding:6px 8px;font-size:10px}.compact-table .stats-table td{padding:6px 8px;font-size:12px}.compact-table .confidence-badge,.compact-table .result-badge{padding:1px 6px;font-size:9px}.backtest-page{justify-content:center;padding:60px 20px;display:flex}.backtest-intro{text-align:center;max-width:500px}.backtest-intro h3{color:#e2e8f0;margin-bottom:12px;font-size:20px;font-weight:700}.backtest-desc{color:#94a3b8;margin-bottom:24px;font-size:14px;line-height:1.6}.calibration-legend{text-align:center;color:#475569;margin-top:8px;font-size:11px}.backtest-controls{justify-content:center;align-items:flex-end;gap:12px;display:flex}.backtest-season-label{color:#64748b;align-self:center;font-size:13px}.model-features-panel{background:#1a1d27;border:1px solid #2a2d37;border-radius:10px;margin-bottom:20px;padding:16px 20px}.model-features-panel h4{color:#e2e8f0;margin-bottom:12px;font-size:14px;font-weight:600}.model-features-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;display:grid}.model-feature-item{background:#ffffff05;border-radius:6px;align-items:center;gap:10px;padding:8px 12px;display:flex}.model-feature-item.feature-inactive{opacity:.5}.feature-indicator{border-radius:50%;flex-shrink:0;width:10px;height:10px}.feature-indicator.indicator-on{background:#22c55e;box-shadow:0 0 6px #22c55e66}.feature-indicator.indicator-off{background:#475569;border:1px solid #64748b}.feature-info{flex-direction:column;gap:1px;display:flex}.feature-label{color:#e2e8f0;font-size:13px;font-weight:600}.feature-desc{color:#64748b;font-size:11px;line-height:1.3}@media (width<=768px){.dashboard{padding:16px}.header{flex-direction:row;justify-content:space-between;align-items:center}.header h1{font-size:20px}.tabs{-webkit-overflow-scrolling:touch;overflow-x:auto}.tabs button{white-space:nowrap;padding:8px 14px;font-size:13px}.games-grid{grid-template-columns:1fr}}.how-it-works{max-width:800px;margin:0 auto}.hiw-section{margin-bottom:32px}.hiw-section h2{color:#fff;margin-bottom:12px;font-size:22px;font-weight:700}.hiw-section h3{color:#e2e8f0;margin-bottom:8px;font-size:17px;font-weight:600}.hiw-section p{color:#94a3b8;margin-bottom:10px;line-height:1.7}.hiw-section ul{color:#94a3b8;margin-bottom:10px;padding-left:20px;line-height:1.7}.hiw-section li{margin-bottom:6px}.hiw-formula{color:#60a5fa;text-align:center;background:#1a1d27;border:1px solid #2a2d37;border-radius:8px;margin:12px 0;padding:14px 18px;font-family:SF Mono,Fira Code,monospace;font-size:14px}.hiw-table-wrap{max-width:320px;margin:12px 0}.hiw-table td,.hiw-table th{text-align:center}.hiw-disclaimer{background:#1a1d27;border:1px solid #2a2d37;border-radius:10px;padding:20px 24px}.hiw-disclaimer h3{color:#eab308}.live-page{flex-direction:column;gap:20px;display:flex}.live-empty{text-align:center;padding:60px 20px}.live-empty-icon{opacity:.5;margin-bottom:16px}.live-empty h3{color:#e2e8f0;margin-bottom:8px;font-size:18px}.live-empty p{color:#64748b;font-size:14px}.live-upcoming{text-align:left;max-width:420px;margin-top:28px;margin-left:auto;margin-right:auto}.live-upcoming h4{color:#94a3b8;text-align:center;margin-bottom:12px;font-size:14px;font-weight:600}.live-upcoming-date{color:#64748b;text-transform:uppercase;letter-spacing:.5px;text-align:center;margin-top:12px;margin-bottom:6px;font-size:12px;font-weight:600}.live-upcoming-list{flex-direction:column;gap:8px;display:flex}.live-upcoming-row{background:#1a1d27;border:1px solid #2a2d37;border-radius:8px;justify-content:center;align-items:center;gap:16px;padding:8px 14px;display:flex}.live-upcoming-time{color:#3b82f6;min-width:75px;font-size:13px;font-weight:600}.live-upcoming-matchup{color:#e2e8f0;align-items:center;gap:5px;font-size:14px;font-weight:600;display:flex}.live-card{background:#1a1d27;border:1px solid #2a2d37;border-radius:12px;overflow:hidden}.live-card-final{opacity:.85}.live-clock-final{color:#ef4444;font-weight:700}.live-header{border-bottom:1px solid #2a2d37;padding:16px 20px}.live-matchup{justify-content:center;align-items:center;gap:32px;display:flex}.live-team{flex:1;justify-content:flex-end;align-items:center;gap:8px;display:flex}.live-team-right{text-align:right;flex-direction:row-reverse;justify-content:flex-end}.live-team-name{color:#fff;font-size:20px;font-weight:700}.live-score-block{text-align:center}.live-scores{align-items:center;gap:12px;display:flex}.live-score-num{color:#94a3b8;text-align:center;min-width:50px;font-size:32px;font-weight:800}.live-score-num.score-leading{color:#fff}.live-score-dash{color:#475569;font-size:24px}.live-clock{color:#3b82f6;font-size:13px;font-weight:600}.live-no-bets{color:#475569;text-align:center;padding:16px 20px;font-size:13px}.live-bet-section{border-top:1px solid #2a2d3780;padding:14px 20px}.live-bet-header{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.live-bet-type{color:#64748b;text-transform:uppercase;letter-spacing:.5px;background:#64748b1a;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:700}.live-bet-side{color:#e2e8f0;font-size:14px;font-weight:700}.live-bet-status{border-radius:4px;margin-left:auto;padding:2px 8px;font-size:11px;font-weight:700}.live-bet-status.status-good{color:#22c55e;background:#22c55e26}.live-bet-status.status-bad,.live-bet-status.status-warning{color:#fb7185;background:#fb718526}.live-spread-detail,.live-totals-detail{color:#94a3b8;justify-content:space-between;margin-bottom:8px;font-size:12px;display:flex}.live-progress-track{background:#2a2d37;border-radius:3px;height:6px;position:relative;overflow:hidden}.live-progress-fill{border-radius:3px;min-width:4px;height:100%}.live-progress-fill.fill-good{background:#22c55e}.live-progress-fill.fill-bad,.live-progress-fill.fill-warning{background:#fb7185}.live-progress-marker{background:#fff;border-radius:1px;width:2px;height:10px;position:absolute;top:-2px;transform:translate(-1px)}.live-props-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.live-prop-card{background:#ffffff05;border:1px solid #2a2d37;border-radius:8px;align-items:center;gap:12px;padding:12px;display:flex}.live-prop-card.prop-hit{background:#22c55e0d;border-color:#22c55e4d}.live-prop-ring{flex-shrink:0;width:56px;height:56px}.live-prop-info{flex-direction:column;gap:1px;min-width:0;display:flex}.live-prop-name{color:#e2e8f0;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:700;overflow:hidden}.live-prop-stat{color:#94a3b8;font-size:12px;font-weight:600}.live-prop-side{color:#64748b;font-size:11px}.live-prop-min{color:#475569;font-size:10px}.props-cards-mobile{display:none}.bet-analysis-toolbar{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}@media (width<=768px){.props-stat-group .props-desktop-table{display:none}.props-cards-mobile{flex-direction:column;gap:8px;padding:8px 12px 12px;display:flex}.prop-card{background:#ffffff05;border:1px solid #2a2d37;border-radius:8px;padding:10px 12px}.prop-card-placed{opacity:.5}.prop-card-header{border-bottom:1px solid #2a2d3780;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:6px;display:flex}.prop-card-name{color:#fff;flex:1;font-size:14px;font-weight:600}.prop-card-team{color:#94a3b8;align-items:center;gap:4px;font-size:12px;display:flex}.prop-card-body{grid-template-columns:1fr 1fr;gap:4px 12px;display:grid}.prop-card-row{justify-content:space-between;align-items:center;padding:2px 0;display:flex}.prop-card-label{color:#64748b;text-transform:uppercase;letter-spacing:.3px;font-size:11px}.prop-card-value{color:#cbd5e1;font-variant-numeric:tabular-nums;font-size:13px}.props-game-header{flex-direction:column;align-items:flex-start;gap:4px}.props-game-title{font-size:13px}.bet-analysis-toolbar{flex-wrap:wrap;gap:8px}.bet-analysis-header{flex-wrap:wrap;gap:6px}.bet-analysis-details{font-size:11px}.game-card{padding:14px}.live-team-name{font-size:14px}.live-score-num{font-size:28px}.live-header{padding:12px 14px}.live-bet-section{padding:10px 14px}.live-spread-detail,.live-totals-detail{flex-wrap:wrap;font-size:12px}.live-props-grid{grid-template-columns:1fr 1fr}.live-prop-ring{width:44px;height:44px}.live-prop-name{font-size:12px}.live-prop-stat{font-size:11px}.table-container{-webkit-overflow-scrolling:touch;overflow-x:auto}.stats-table{min-width:600px;font-size:12px}.stats-table th{padding:6px 8px;font-size:10px}.stats-table td{padding:6px 8px;font-size:11px}.perf-summary-grid{grid-template-columns:1fr 1fr}.perf-chart-card{padding:12px}.pill-tabs{-webkit-overflow-scrolling:touch;overflow-x:auto}.pill-tab{white-space:nowrap;padding:6px 12px;font-size:12px}.how-it-works{padding:0}.hiw-section h2{font-size:18px}.hiw-section h3{font-size:15px}.hiw-table-wrap{max-width:100%;overflow-x:auto}.hiw-section ol,.hiw-section ul{padding-left:16px}.sub-tabs{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<=480px){.prop-card-body,.perf-summary-grid,.live-props-grid{grid-template-columns:1fr}.dashboard{padding:10px}}.CircularProgressbar{vertical-align:middle;width:100%}.CircularProgressbar .CircularProgressbar-path{stroke:#3e98c7;stroke-linecap:round;transition:stroke-dashoffset .5s}.CircularProgressbar .CircularProgressbar-trail{stroke:#d6d6d6;stroke-linecap:round}.CircularProgressbar .CircularProgressbar-text{fill:#3e98c7;dominant-baseline:middle;text-anchor:middle;font-size:20px}.CircularProgressbar .CircularProgressbar-background{fill:#d6d6d6}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-background{fill:#3e98c7}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-text{fill:#fff}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-path{stroke:#fff}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-trail{stroke:#0000}
