:root{--background:#000;--surface-1:#1a1a1a;--surface-2:#2a2a2a;--surface-3:#333;--accent:#7ec0ee;--accent-hover:#9dd0f5;--accent-success:#34c759;--accent-warning:#ff9f0a;--accent-danger:#ff453a;--logo-blue:#7ec0ee;--text-primary:#fff;--text-secondary:#ffffffbf;--text-muted:#fff9;--border:#ffffff14;--border-light:#ffffff1f;--bruins-primary:#ffb81c;--bruins-text:#000;--canadiens-primary:#af1e2d;--canadiens-text:#fff;--canadiens-accent:#192168;--maple-leafs-primary:#00205b;--maple-leafs-text:#fff;--red-wings-primary:#ce1126;--red-wings-text:#fff;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-xxl:3rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-full:50%;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 4px 20px #0006;--shadow-lg:0 8px 40px #00000080;--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.4s ease}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{font-size:16px}body{background-color:var(--background);color:var(--text-primary);max-width:100%;padding:16px;font-family:Outfit,-apple-system,BlinkMacSystemFont,sans-serif}.screen{width:100%}.screen.hidden{display:none}.app-header{text-align:center;margin-bottom:32px}.app-logo{background-color:var(--logo-blue);border-radius:14px;width:54px;height:54px;margin-bottom:16px;display:inline-block;position:relative;transform:rotate(45deg)}.app-logo:after{display:none}.app-logo img{object-fit:cover;border-radius:14px;width:100%;height:100%}#team-page .app-logo{border-radius:50%;transform:none}#team-page .app-logo img{border-radius:50%}.app-title{margin-bottom:4px;font-size:30px;font-weight:700}.app-subtitle{color:var(--text-secondary);font-size:17px}.app-season{color:var(--text-secondary);margin-top:0;font-size:17px}.standings-container{border:1px solid var(--border);background:0 0;border-radius:8px;grid-template-rows:auto;min-width:320px;margin-bottom:32px;display:grid;overflow:hidden}.standings-header{background:var(--surface-2);color:var(--text-secondary);border-bottom:1px solid var(--border);text-transform:uppercase;grid-template-columns:2.5em 12em .8fr .8fr .8fr .8fr 1fr 1.2fr;align-items:center;padding:.5em 1em;font-size:1em;font-weight:700;display:grid}.standings-header>div:not(:nth-child(2)),.standings-row>div:not(:nth-child(2)){text-align:center}.standings-header>.header-pts,.standings-row>.team-pts{text-align:right}.standings-header>.header-team,.standings-row>.team-name{text-align:left}.standings-row{border-bottom:1px solid var(--border);background:0 0;grid-template-columns:2.5em 12em .8fr .8fr .8fr .8fr 1fr 1.2fr;align-items:center;padding:.5em 1em;font-size:1.25em;display:grid}.standings-row:last-child{border-bottom:none}.team-logo{object-fit:cover;background:var(--surface-2);border-radius:50%;width:2em;height:2em;display:block}.team-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin-left:.5em;font-size:1.25em;font-weight:600;overflow:hidden}.team-name a{color:var(--text-primary);width:100%;text-decoration:none;display:block}.team-name a:hover{color:var(--accent)}.team-gp,.team-w,.team-l,.team-t,.team-gs,.team-pts{text-align:center;color:var(--text-primary);font-weight:600}.team-pts{color:var(--accent);font-weight:700}@media (width<=500px){.standings-header,.standings-row{grid-template-columns:1.2em 8em .8fr .8fr .8fr .8fr 1fr 1.2fr;padding:.3em .5em;font-size:1.1em}.team-logo{width:1.2em;height:1.2em}.team-name{font-size:1.1em}}.schedule-container{background:0 0;min-width:320px;margin-bottom:32px;font-family:Outfit,sans-serif;overflow:hidden}.schedule-date-section{margin-bottom:var(--spacing-lg)}.schedule-date-section:last-child{margin-bottom:0}.schedule-date-header{color:var(--text-secondary);margin-bottom:var(--spacing-md);text-transform:uppercase;letter-spacing:.5px;font-size:.9rem;font-weight:600}.schedule-game-row{padding:var(--spacing-md);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:var(--spacing-sm);background:var(--surface-1);justify-content:space-between;align-items:center;gap:var(--spacing-md);display:flex}.schedule-game-row:last-child{margin-bottom:0}.schedule-game-teams{align-items:center;gap:var(--spacing-md);flex:1;display:flex}.schedule-game-team{align-items:center;gap:var(--spacing-xs);flex-direction:column;flex:1;display:flex}.schedule-game-team.winner .schedule-team-name{color:var(--accent-success);font-weight:700}.schedule-team-logo{object-fit:cover;background:var(--surface-2);border-radius:50%;flex-shrink:0;width:56px;height:56px}.schedule-team-name{color:var(--text-primary);text-align:center;font-size:.95rem;font-weight:600}.schedule-team-score{color:var(--text-primary);margin-top:var(--spacing-xs);font-size:1.5rem;font-weight:700;line-height:1}.schedule-game-info{flex-direction:column;justify-content:center;align-items:center;min-width:60px;display:flex}.schedule-game-vs{color:var(--text-secondary);text-transform:lowercase;font-size:1.25rem;font-weight:700}.schedule-game-time{color:var(--text-secondary);font-size:.9rem;font-weight:600}.schedule-final-status{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.75rem;font-weight:600}.schedule-result-badge{border-radius:var(--radius-sm);text-align:center;min-width:32px;padding:4px 12px;font-size:.85rem;font-weight:700}.schedule-result-badge.w{color:var(--accent-success);background:#34c75933}.schedule-result-badge.l{color:var(--accent-danger);background:#ff453a33}.schedule-result-badge.t{background:var(--surface-2);color:var(--text-secondary)}.schedule-game-row.completed,.schedule-game-row.upcoming{padding:var(--spacing-sm)}.schedule-game-row .schedule-game-team{opacity:.85;gap:var(--spacing-xs)}.schedule-game-row .schedule-team-logo{width:44px;height:44px}.schedule-game-row .schedule-team-name{font-size:.85rem}@media (width<=480px){.schedule-game-row{padding:var(--spacing-sm);gap:var(--spacing-sm)}.schedule-team-logo{width:48px;height:48px}.schedule-team-name{font-size:.85rem}.schedule-team-score{font-size:1.25rem}.schedule-game-vs{font-size:1.1rem}.schedule-game-row.upcoming .schedule-team-logo{width:36px;height:36px}.schedule-game-row.upcoming .schedule-team-name{font-size:.75rem}.schedule-game-row.upcoming .schedule-game-vs{font-size:1rem}.schedule-game-time{font-size:.8rem}.schedule-result-badge{min-width:28px;padding:3px 8px;font-size:.75rem}}.game-card-container{perspective:1000px;margin-bottom:var(--spacing-md);cursor:pointer}.game-card-flipper{width:100%;height:100%;transform-style:preserve-3d;transition:transform .6s;position:relative}.game-card-flipper.flipped{transform:rotateY(180deg)}.game-card-front,.game-card-back{backface-visibility:hidden;width:100%;position:absolute}.game-card-back{transform:rotateY(180deg)}.game-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-lg);min-height:200px}.game-card-date{color:var(--text-muted);margin-bottom:var(--spacing-md);text-align:center;font-size:.85rem;font-weight:500}.game-card-scoreboard{justify-content:space-between;align-items:center;gap:var(--spacing-md);display:flex}.game-card-team-section{align-items:center;gap:var(--spacing-sm);flex-direction:column;flex:1;display:flex}.game-card-team-section.winner .game-card-score{color:var(--accent-success);font-weight:800}.game-card-logo{object-fit:cover;background:var(--surface-2);border-radius:50%;flex-shrink:0;width:72px;height:72px}.game-card-team-name{color:var(--text-primary);text-align:center;font-size:.95rem;font-weight:600}.game-card-score{color:var(--text-primary);margin-top:var(--spacing-xs);font-size:3rem;font-weight:700;line-height:1}.game-card-status{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;padding:0 var(--spacing-sm);flex-shrink:0;font-size:.75rem;font-weight:600}.game-card-back-content{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-lg);min-height:200px}.game-card-back-loading,.game-card-back-error{text-align:center;color:var(--text-secondary);padding:var(--spacing-xl)}.game-card-stats-section{margin-bottom:var(--spacing-lg)}.game-card-stats-section:last-child{margin-bottom:0}.game-card-stats-title{color:var(--text-primary);margin-bottom:var(--spacing-sm);text-align:center;font-size:1rem;font-weight:700}.game-card-stats-table{border-collapse:collapse;background:var(--surface-2);border-radius:var(--radius-sm);width:100%;overflow:hidden}.game-card-stats-table th{background:var(--surface-3);padding:var(--spacing-sm);color:var(--text-primary);text-align:center;border-bottom:2px solid var(--border);font-size:.85rem;font-weight:700}.game-card-stats-table td{padding:var(--spacing-sm);color:var(--text-primary);text-align:center;border-bottom:1px solid var(--border);font-size:.9rem}.game-card-stats-table .team-cell{align-items:center;gap:var(--spacing-xs);text-align:left;font-weight:700;display:flex}.game-card-stats-table .team-logo-small{object-fit:cover;border-radius:50%;width:24px;height:24px}.game-card-stats-table .team-abbrev,.game-card-stats-table .total-cell{color:var(--text-primary);font-weight:700}.game-card-stats-table .total-row{background:var(--surface-1);border-top:2px solid var(--border)}.game-card-stats-table .total-row td{font-weight:700}@media (width<=480px){.game-card,.game-card-back-content{padding:var(--spacing-md);min-height:180px}.game-card-logo{width:56px;height:56px}.game-card-score{font-size:2.5rem}.game-card-team-name{font-size:.85rem}.game-card-status{font-size:.7rem}.game-card-stats-table{font-size:.8rem}.game-card-stats-table th,.game-card-stats-table td{padding:.5rem .25rem}.game-card-stats-table .team-logo-small{width:20px;height:20px}}.player-stats-container{background:0 0;border:none;border-radius:0;min-height:0;margin-top:32px;padding:0}.player-stats-title{color:var(--text-primary);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border);text-align:center;font-size:1.2rem;font-weight:700}.player-stats-table{border-collapse:collapse;width:100%}.player-stats-table th,.player-stats-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border-bottom:1px solid var(--border)}.player-stats-table th:first-child,.player-stats-table td:first-child,.player-stats-table th:nth-child(2),.player-stats-table td:nth-child(2){text-align:left}.player-stats-table th:nth-child(n+3),.player-stats-table td:nth-child(n+3){text-align:center}.player-stats-table th{background:var(--surface-2);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:.85rem;font-weight:700}.player-stats-table td{color:var(--text-primary)}.player-name-cell{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.player-stats-table tbody tr:hover{background:var(--surface-2)}.goalie-header-row{background:var(--surface-2);border-top:2px solid var(--border)}.goalie-row{border-bottom:2px solid var(--border)}.goalie-stats-container{margin-top:var(--spacing-xl);justify-content:center;display:flex}.goalie-stats-table{margin:0 auto}.stats-legend{margin-top:var(--spacing-xl);padding-top:var(--spacing-md);border-top:1px solid var(--border)}.legend-title{color:var(--text-secondary);margin-bottom:var(--spacing-sm);text-align:center;font-size:.9rem;font-weight:600}.legend-items{gap:var(--spacing-xs);color:var(--text-secondary);flex-direction:column;font-size:.85rem;display:flex}.legend-line{justify-content:center;gap:var(--spacing-md);flex-wrap:wrap;display:flex}.legend-item{gap:var(--spacing-xs);display:flex}.legend-key{color:var(--text-primary);font-weight:700}.stats-update-message{margin-top:var(--spacing-lg);text-align:center;color:var(--text-muted);font-size:.85rem;font-style:italic}body{justify-content:center;padding:18px 14px 40px;display:flex}#root{width:100%;max-width:430px}.screen,.mobile-schedule,.player-stats-container{width:100%}.team-header{margin-bottom:42px}.team-header .app-logo{width:68px;height:68px;margin-bottom:12px}.team-header .app-title{margin-bottom:12px;font-size:34px;line-height:1.05}.back-link{justify-content:center;font-size:18px;display:inline-flex}.mobile-schedule{gap:22px;min-width:0;display:grid}.archive-game-card{background:var(--surface-1);border:1px solid var(--border-light);width:100%;box-shadow:var(--shadow-sm);border-radius:18px;overflow:hidden}.archive-game-date{color:var(--text-secondary);letter-spacing:.065em;text-align:center;text-transform:uppercase;border-bottom:1px solid var(--border);padding:14px 16px 11px;font-size:13px;font-weight:700}.archive-scoreboard{appearance:none;width:100%;min-height:186px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr);align-items:center;gap:8px;padding:20px 14px 18px;display:grid}.archive-team{text-align:center;flex-direction:column;align-items:center;gap:7px;min-width:0;display:flex}.archive-team img{object-fit:contain;background:var(--surface-2);border-radius:50%;width:62px;height:62px}.archive-team span{width:100%;min-height:40px;color:var(--text-primary);justify-content:center;align-items:center;font-size:16px;font-weight:650;line-height:1.2;display:flex}.archive-team strong{color:var(--text-primary);font-size:42px;line-height:1}.archive-team.winner span,.archive-team.winner strong{color:var(--accent-success)}.archive-game-status{color:var(--text-muted);letter-spacing:.055em;flex-direction:column;align-items:center;gap:7px;font-size:12px;font-weight:700;display:flex}.archive-game-status small{color:var(--accent);letter-spacing:normal;font-size:11px;font-weight:600}.archive-game-details{border-top:1px solid var(--border-light);background:#151515;padding:20px 14px 18px}.archive-game-details h2{text-align:center;margin-bottom:20px;font-size:22px}.archive-game-details h3{color:var(--text-secondary);letter-spacing:.08em;text-align:center;text-transform:uppercase;margin-bottom:10px;font-size:12px;font-weight:700}.scoring-section,.shots-section{gap:12px;display:grid}.shots-section{margin-top:22px}.scoring-team,.shots-section{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;overflow:hidden}.scoring-section>h3,.shots-section>h3{background:var(--surface-1);margin:0;padding:11px 12px 9px}.scoring-team-heading,.shot-row{justify-content:space-between;align-items:center;gap:12px;padding:11px 13px;display:flex}.scoring-team-heading{background:var(--surface-3);border-bottom:1px solid var(--border-light)}.scoring-team-heading span,.shot-row span{align-items:center;gap:9px;font-weight:700;display:flex}.scoring-team-heading img,.shot-row img{object-fit:contain;border-radius:50%;width:28px;height:28px}.scoring-team-heading>strong,.shot-row>strong{font-size:20px}.goal-row{border-bottom:1px solid var(--border);grid-template-columns:24px minmax(0,1fr) auto;align-items:start;gap:9px;padding:11px 13px;display:grid}.goal-row:last-child,.shot-row:last-child{border-bottom:0}.goal-number{background:var(--surface-3);width:22px;height:22px;color:var(--text-secondary);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.goal-row div{flex-direction:column;gap:3px;min-width:0;display:flex}.goal-row div>strong{overflow-wrap:anywhere;font-size:15px;line-height:1.25}.goal-row small,.goal-period,.no-scoring-detail{color:var(--text-muted);font-size:12px;line-height:1.35}.goal-period{white-space:nowrap;padding-top:2px}.no-scoring-detail{text-align:center;padding:13px}.shot-row{border-bottom:1px solid var(--border)}.player-stats-container{margin-top:42px}@media (width<=430px){body{padding-inline:12px}.standings-header,.standings-row{grid-template-columns:38px minmax(82px,1.45fr) repeat(6,minmax(26px,.55fr));padding-inline:7px;font-size:12px}.standings-container{min-width:0}.player-stats-table{table-layout:fixed;min-width:0}.player-stats-table th,.player-stats-table td{padding:9px 4px;font-size:12px}.player-stats-table th:first-child,.player-stats-table td:first-child{width:26px}.player-stats-table th:nth-child(2),.player-stats-table td:nth-child(2){width:auto}.player-stats-table th:nth-child(n+3),.player-stats-table td:nth-child(n+3){width:31px}.goalie-stats-table th:nth-child(n+3),.goalie-stats-table td:nth-child(n+3){width:36px}.archive-scoreboard{grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);padding-inline:10px}.archive-team img{width:58px;height:58px}.archive-team span{font-size:15px}}.back-link{margin-bottom:var(--spacing-md);color:var(--accent);transition:color var(--transition-fast);font-weight:500;text-decoration:none;display:inline-block}.back-link:hover{color:var(--accent-hover);text-decoration:underline}.loading{text-align:center;padding:var(--spacing-xl);color:var(--text-secondary);font-weight:500}.error{text-align:center;padding:var(--spacing-xl);color:var(--accent-danger);font-weight:500}.standings-update-message{text-align:center;color:var(--text-muted);margin-top:var(--spacing-md);font-size:.9rem;font-weight:400}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--surface-1)}::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
