*{box-sizing:border-box;margin:0;padding:0}:root{--primary: #2563eb;--primary-dark: #1d4ed8;--bg: #f8fafc;--card-bg: #fff;--text: #1e293b;--text-muted: #64748b;--border: #e2e8f0;--success: #22c55e;--warning: #f59e0b;--star: #fbbf24}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.app{min-height:100vh;display:flex;flex-direction:column}.install-prompt-bottom{position:fixed;bottom:0;left:0;right:0;background:#1e293b;color:#fff;padding:.75rem 1rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0));z-index:1000;box-shadow:0 -2px 10px #0003}.install-prompt-bottom .install-content{display:flex;align-items:center;gap:.75rem;max-width:800px;margin:0 auto}.install-prompt-bottom .install-text{flex:1;font-size:.8rem;line-height:1.3;text-align:center}.install-prompt-bottom .install-text strong{display:block;font-size:.875rem}.install-prompt-bottom .install-text .share-icon{display:inline-block;background:#fff3;padding:.125rem .375rem;border-radius:.25rem;font-size:.75rem;font-weight:600;letter-spacing:.05em}.install-prompt-bottom .install-dismiss{background:none;border:none;color:#ffffffb3;font-size:1.25rem;cursor:pointer;padding:.25rem;line-height:1}.install-prompt-bottom .install-dismiss:hover{color:#fff}.install-prompt-bottom .install-arrow{font-size:1.25rem;animation:bounce 1s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.header{background:var(--primary);color:#fff;padding:1rem;text-align:center}.header h1{font-size:1.25rem;font-weight:600}.nav{display:flex;background:var(--card-bg);border-bottom:1px solid var(--border);overflow-x:auto}.nav a{flex:1;padding:.75rem 1rem;text-align:center;text-decoration:none;color:var(--text-muted);font-size:.875rem;font-weight:500;border-bottom:2px solid transparent;white-space:nowrap}.nav a.active{color:var(--primary);border-bottom-color:var(--primary)}.main{flex:1;padding:1rem;max-width:800px;margin:0 auto;width:100%}.loading,.error,.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.empty-state h2{margin-bottom:.5rem;color:var(--text)}.btn{display:inline-block;background:var(--primary);color:#fff;padding:.75rem 1.5rem;border-radius:.5rem;text-decoration:none;font-weight:500;margin-top:1rem}.btn:hover{background:var(--primary-dark)}.filter-bar{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.filter-bar select,.filter-bar input{padding:.5rem;border:1px solid var(--border);border-radius:.375rem;font-size:.875rem;background:var(--card-bg);flex:1;min-width:120px}.search-input{min-width:200px!important}.past-toggle{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--text-muted);margin-bottom:1rem}.star-btn{background:none;border:none;cursor:pointer;font-size:1.5rem;color:var(--border);padding:.25rem;line-height:1}.star-btn.starred{color:var(--star)}.star-btn-sm{font-size:1.25rem}.team-row{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--card-bg);border:1px solid var(--border);border-radius:.5rem;margin-bottom:.5rem;transition:background-color .15s}.team-row.clickable{cursor:pointer}.team-row.clickable:hover{background:#f1f5f9}.team-info{flex:1;min-width:0}.team-name{font-weight:500}.team-coach{color:var(--text-muted);font-size:.875rem;margin-left:.25rem}.team-record{font-size:.875rem;font-weight:600;color:var(--text-muted);white-space:nowrap}.team-division{font-size:.75rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.teams-count,.games-count{font-size:.875rem;color:var(--text-muted);margin-bottom:.75rem}.game-card{background:var(--card-bg);border:1px solid var(--border);border-radius:.5rem;padding:.75rem;margin-bottom:.75rem}.game-card.completed{opacity:.8}.game-time{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--text-muted);margin-bottom:.5rem}.game-time .sport-icon{font-size:.875rem;opacity:.7}.game-matchup-compact{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.game-matchup-compact .team-box{flex:1;min-width:0}.game-matchup-compact .team-box .team-name{font-weight:500;font-size:.875rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-matchup-compact .team-box .team-coach{font-size:.7rem;color:var(--text-muted);display:block}.game-matchup-compact .team-box .team-score{font-size:1rem;font-weight:600;display:block;margin-top:.125rem}.game-matchup-compact .team-box.highlighted .team-name{background:#dbeafe;padding:.125rem .25rem;margin:-.125rem -.25rem;border-radius:.25rem;display:inline}.game-matchup-compact .team-box.winner .team-score{color:var(--success)}.game-matchup-compact .team-box.home{text-align:right}.game-matchup-compact .matchup-vs{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.game-location{font-size:.75rem;color:var(--text-muted)}.game-location a{color:var(--text-muted);text-decoration:underline}.game-division{font-size:.7rem;color:var(--text-muted);margin-top:.25rem}.date-group{margin-bottom:1.5rem}.date-header{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.my-teams-section{margin-bottom:2rem}.my-teams-section h2{font-size:1.125rem;font-weight:600;margin-bottom:1rem}.my-teams-list{display:grid;gap:.75rem}.my-team-card{background:var(--card-bg);border:1px solid var(--border);border-radius:.5rem;padding:.75rem 1rem}.my-team-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.my-team-name{font-weight:600;font-size:1rem}.my-team-details{display:flex;gap:1rem;margin-bottom:.25rem}.my-team-record{font-weight:600;color:var(--text);font-size:.875rem}.my-team-rank{color:var(--text-muted);font-size:.875rem}.my-team-division{font-size:.75rem;color:var(--text-muted)}.upcoming-header{font-size:1.125rem;font-weight:600;margin-bottom:1rem}.no-games-message{text-align:center;padding:2rem 1rem;color:var(--text-muted)}.standings-table-container{overflow-x:auto}.standings-table-container h3{margin-bottom:1rem}.standings-table{width:100%;border-collapse:collapse;font-size:.875rem;background:var(--card-bg);border-radius:.5rem;overflow:hidden}.standings-table th,.standings-table td{padding:.75rem .5rem;text-align:left;border-bottom:1px solid var(--border)}.standings-table th{background:var(--bg);font-weight:600;color:var(--text-muted);font-size:.75rem;text-transform:uppercase}.standings-table tr.favorite{background:#fef3c7}.standings-table .team-cell{display:flex;align-items:center;gap:.5rem}.standings-table .rank{font-weight:600;color:var(--text-muted);min-width:1.5rem}.standings-table .coach{color:var(--text-muted);font-size:.75rem}.standings-table .positive{color:var(--success)}.standings-table .negative{color:#ef4444}.tray-overlay{position:fixed;inset:0;background:#0000004d;z-index:100}.team-tray{position:fixed;right:0;top:0;bottom:0;width:100%;max-width:400px;background:var(--card-bg);z-index:101;box-shadow:-4px 0 20px #00000026;overflow-y:auto;animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.tray-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--card-bg)}.tray-team-info{display:flex;align-items:center;gap:.5rem}.tray-team-info h2{font-size:1.125rem;font-weight:600}.tray-close{background:none;border:none;font-size:1.5rem;color:var(--text-muted);cursor:pointer;padding:.25rem;line-height:1}.tray-close:hover{color:var(--text)}.tray-meta{padding:1rem;display:flex;flex-wrap:wrap;gap:.75rem;border-bottom:1px solid var(--border);font-size:.875rem}.tray-coach,.tray-division{color:var(--text-muted)}.tray-record{font-weight:600}.tray-schedule{padding:1rem}.tray-schedule h3{font-size:.875rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;margin-bottom:1rem}.loading-small,.no-games{color:var(--text-muted);font-size:.875rem}.tray-games{display:flex;flex-direction:column;gap:.5rem}.tray-game{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:.375rem;background:var(--bg)}.tray-game.completed{opacity:.7}.tray-game-date{min-width:70px;font-size:.75rem}.tray-game-date .date{display:block;font-weight:500}.tray-game-date .time{color:var(--text-muted)}.tray-game-opponent{flex:1;font-size:.875rem}.tray-game-opponent .home-away{color:var(--text-muted);margin-right:.25rem}.tray-game-result{font-size:.75rem;font-weight:600;min-width:50px;text-align:right}.tray-game-result.win{color:var(--success)}.tray-game-result.loss{color:#ef4444}.btn-link{color:var(--primary);text-decoration:none}.btn-link:hover{text-decoration:underline}.my-team-card{transition:all .2s ease}.my-team-card.expanded{box-shadow:0 2px 8px #0000001a}.my-team-main{cursor:pointer}.my-team-main:hover{background:#f8fafc;margin:-.75rem -1rem;padding:.75rem 1rem;border-radius:.5rem}.my-team-sport{font-size:.875rem;opacity:.7;margin-left:.25rem}.expand-toggle{color:var(--text-muted);font-size:1.25rem;font-weight:300;margin-left:auto;line-height:1;width:1.5rem;text-align:center}.my-team-footer{display:flex;justify-content:space-between;align-items:center}.my-team-hint{font-size:.75rem;color:var(--primary);opacity:.8}.my-team-expanded{border-top:1px solid var(--border);margin-top:.75rem;padding-top:.75rem}.expanded-section-header{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;margin-bottom:.5rem}.my-team-game{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;font-size:.875rem}.my-team-game.upcoming{color:var(--text-muted)}.my-team-game .game-date{min-width:55px;font-size:.75rem;color:var(--text-muted)}.my-team-game .game-opponent{flex:1}.my-team-game .game-result{font-weight:600;min-width:60px;text-align:right}.my-team-game .game-result.win{color:var(--success)}.my-team-game .game-result.loss{color:#ef4444}.my-team-game .game-result.tie{color:var(--warning)}.my-team-game .game-time{font-size:.75rem;color:var(--text-muted);min-width:60px;text-align:right}.my-team-standings{margin-top:1rem}.mini-standing-row{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;font-size:.8rem}.mini-standing-row.current{background:#dbeafe;margin:0 -.5rem;padding:.25rem .5rem;border-radius:.25rem;font-weight:500}.standing-rank{min-width:1.25rem;color:var(--text-muted);font-size:.75rem}.standing-team{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.standing-record{color:var(--text-muted);font-size:.75rem}@media(max-width:640px){.team-division{display:none}.standings-table{font-size:.75rem}.standings-table th,.standings-table td{padding:.5rem .25rem}}
