:root{color:#1f2933;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f7f9;font-synthesis:none;letter-spacing:0;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;overflow-x:hidden}a{color:inherit}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh}.app-main{padding-bottom:calc(88px + env(safe-area-inset-bottom))}.topbar{align-items:center;background:#fffffff5;border-bottom:1px solid #d9e2ec;display:flex;min-height:62px;padding:10px 14px;position:sticky;top:0;z-index:20}.account-button{align-items:center;background:#fff;border:1px solid #bcccdc;border-radius:8px;color:#334e68;cursor:pointer;display:inline-flex;flex:0 0 auto;gap:6px;margin-left:auto;min-height:40px;padding:8px 10px}.account-button span{display:none;font-size:.78rem;font-weight:900}.auth-callback{margin:24px auto;max-width:520px}.global-auth-error{align-items:center;display:flex;gap:12px;justify-content:space-between;margin:12px 14px 0}.global-auth-error button{background:transparent;border:0;color:inherit;cursor:pointer;flex:0 0 auto;font-weight:900;padding:6px}.brand{align-items:center;display:flex;gap:10px;min-width:0;text-decoration:none}.brand-mark{align-items:center;background:#007f5f;border-radius:8px;color:#fff;display:inline-flex;flex:0 0 auto;height:40px;justify-content:center;width:40px}.brand strong,.brand small{display:block}.brand strong{line-height:1.1}.brand small{color:#627d98;font-size:.74rem;margin-top:2px}.bottom-tabs{background:#fffffffa;border-top:1px solid #d9e2ec;bottom:0;box-shadow:0 -12px 30px #102a431f;display:grid;gap:2px;grid-template-columns:repeat(4,1fr);left:0;padding:8px 8px calc(8px + env(safe-area-inset-bottom));position:fixed;right:0;z-index:30}.bottom-tabs a{align-items:center;border:1px solid transparent;border-radius:8px;color:#486581;display:grid;font-size:.73rem;font-weight:800;gap:3px;justify-items:center;min-height:52px;padding:6px 4px;text-decoration:none}.bottom-tabs a.active,.bottom-tabs a:hover{background:#e6f6f0;border-color:#b7e4d3;color:#005f46}.page{margin:0 auto;max-width:1180px;padding:18px 14px 22px}.page-heading{display:grid;gap:14px;margin-bottom:18px}.eyebrow{color:#dd6b20;font-size:.74rem;font-weight:900;letter-spacing:0;margin:0 0 5px;text-transform:uppercase}h1,h2,h3,p{margin-top:0}h1{font-size:1.9rem;line-height:1.08;margin-bottom:0}h2{align-items:center;display:flex;font-size:1.02rem;gap:8px;margin-bottom:12px}h3{font-size:.94rem;margin:18px 0 10px}.metric-strip{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.metric-strip span{align-items:center;background:#fff;border:1px solid #d9e2ec;border-radius:8px;color:#486581;display:flex;font-size:.78rem;justify-content:center;min-height:42px;padding:8px 6px;text-align:center}.compact-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.table-wrap,.list-panel,.detail-panel,.tool-panel,.status-panel,.match-card,.history-item,.profile-band,.profile-stats,.score-card{background:#fff;border:1px solid #d9e2ec;border-radius:8px;box-shadow:0 10px 30px #102a430d}.status-panel{color:#486581;padding:16px}.status-panel.error{background:#fff5f5;border-color:#f5c2c7;color:#9b1c1c}.scoreboard-list{display:grid;gap:10px}.inactive-scoreboard{display:grid;gap:12px;margin-top:20px}.inactive-scoreboard h2{font-size:1.15rem;margin:0}.inactive-scoreboard .score-card{opacity:.78}.inactive-card{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"player elo" "player trend"}.score-card{align-items:center;color:#102a43;display:grid;gap:4px 10px;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"rank player elo" "rank player trend";min-height:76px;padding:12px;text-decoration:none}.score-rank{align-items:center;color:#007f5f;display:inline-flex;font-weight:900;gap:4px;grid-area:rank;min-width:42px}.score-player{display:grid;gap:3px;grid-area:player;min-width:0}.score-player strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-player small{color:#627d98}.score-elo{color:#005f46;font-size:1.35rem;font-weight:900;grid-area:elo;justify-self:end}.desktop-scoreboard{display:none}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid #edf2f7;padding:14px 16px;text-align:left}th{color:#627d98;font-size:.78rem;text-transform:uppercase}tr:last-child td{border-bottom:0}.rank,.trend,.back-link{align-items:center;display:inline-flex;gap:6px}.rank{color:#007f5f;font-weight:800}.player-link{color:#102a43;font-weight:800;text-decoration:none}.player-link:hover{color:#007f5f}.elo{color:#005f46;font-size:1.08rem;font-weight:900}.trend{border-radius:8px;font-size:.78rem;font-weight:900;grid-area:trend;justify-self:end;padding:6px 8px}.trend.up,.delta.positive{background:#e6f6f0;color:#007f5f}.trend.down,.delta.negative{background:#fff1e6;color:#b44d12}.back-link{color:#486581;margin-bottom:16px;min-height:42px;text-decoration:none}.profile-band{align-items:center;display:flex;gap:14px;justify-content:space-between;margin-bottom:12px;padding:16px}.profile-elo{align-items:center;color:#005f46;display:grid;flex:0 0 auto;gap:3px;justify-items:center}.profile-elo strong{font-size:1.8rem;line-height:1}.profile-elo span{color:#627d98;font-size:.76rem;white-space:nowrap}.profile-stats{display:grid;gap:8px;grid-template-columns:repeat(3,1fr);margin-bottom:12px;padding:12px}.profile-stats div{display:grid;gap:3px;justify-items:center}.profile-stats strong{color:#005f46;font-size:1.25rem}.profile-stats span{color:#627d98;font-size:.76rem}.timeline{display:grid;gap:10px}.history-item{align-items:center;display:grid;gap:12px;grid-template-columns:minmax(0,1fr) auto;padding:14px}.history-item h2{margin-bottom:4px}.date,.history-item p{color:#627d98;margin-bottom:4px}.delta{border-radius:8px;font-size:1rem;font-weight:900;min-width:64px;padding:8px 10px;text-align:center}.match-grid{display:grid;gap:12px}.match-date-groups{display:grid;gap:18px}.match-date-group{display:grid;gap:10px}.match-date-group h2{color:#334e68;font-size:1rem;margin:0}.match-card{padding:14px}.match-card-header{align-items:center;color:#627d98;display:flex;font-size:.8rem;gap:10px;justify-content:space-between;margin-bottom:12px}.versus{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.versus>div{border:1px solid #d9e2ec;border-radius:8px;display:grid;gap:5px;padding:12px}.team-block-header{align-items:flex-start;display:flex;gap:8px;justify-content:space-between}.team-block-header strong{line-height:1.15;min-width:0}.team-name{display:flex;flex-wrap:wrap;gap:0 5px}.team-name .highlight{background:#0b7285;border-radius:6px;color:#fff;padding:0 3px}.versus .winner{background:#e6f6f0;border-color:#84d9bd}.versus small{color:#627d98}.versus em{color:#005f46;font-style:normal;font-weight:900}.two-column,.admin-grid,.single-column{display:grid;gap:14px}.session-row{align-items:center;border-bottom:1px solid #edf2f7;display:grid;gap:10px;grid-template-columns:22px minmax(0,1fr) auto;min-height:58px;padding:14px;text-decoration:none}.session-row-counts{display:grid;gap:3px;justify-items:end;line-height:1.2;text-align:right}.session-history-panel{padding:14px 16px}.session-history-panel .session-row{padding-left:0;padding-right:0}.session-row:last-child{border-bottom:0}.session-row:hover{background:#f0f7ff}.detail-panel{padding:16px}.detail-panel-heading,.team-editor-header,.lineup-panel-header{align-items:center;display:flex;gap:10px;justify-content:space-between}.detail-panel-heading h2{margin-bottom:0}.team-list,.match-list,.generated-teams,.team-members,.button-row,.lineup-picker,.lineup-members,.manage-stack,.setup-flow,.setup-actions,.session-short-list{display:grid;gap:10px}.admin-player-list{display:grid;gap:10px;max-height:520px;overflow:auto;padding-right:2px}.manager-account-list{display:grid;gap:10px}.manager-account-row{border:1px solid #d9e2ec;border-radius:8px;display:grid;gap:10px;padding:10px}.manager-account-summary{align-items:center;display:flex;gap:8px;justify-content:space-between;min-width:0}.manager-account-summary strong{min-width:0;overflow-wrap:anywhere}.manager-status{border-radius:8px;flex:0 0 auto;font-size:.72rem;font-weight:900;padding:5px 7px}.manager-status.active{background:#e6f6f0;color:#007f5f}.manager-status.invited,.manager-status.password-reset-required{background:#fff1e6;color:#b44d12}.manager-status.disabled,.manager-status.unknown{background:#edf2f7;color:#486581}.manager-actions,.manager-confirm-row{display:flex;gap:8px;justify-content:flex-end}.manager-confirm-row .button{flex:1 1 0}.admin-player-row{border:1px solid #d9e2ec;border-radius:8px;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) 48px;padding:8px}.admin-player-fields{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.admin-player-fields span{color:#486581;font-weight:900}.team-row,.team-editor{border:1px solid #d9e2ec;border-radius:8px;display:grid;gap:8px;padding:12px}.tool-panel{display:grid;gap:12px;padding:16px}label,.stack-form{display:grid;gap:8px}label{color:#486581;font-size:.85rem;font-weight:800}input,select,textarea{background:#fff;border:1px solid #bcccdc;border-radius:8px;color:#102a43;min-height:48px;padding:11px 12px;width:100%}textarea{min-height:104px;resize:vertical}.inline-form{display:grid;gap:10px}.button{align-items:center;background:#007f5f;border:1px solid #007f5f;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-weight:900;gap:8px;justify-content:center;min-height:48px;padding:11px 14px;text-decoration:none;width:100%}.button.secondary{background:#fff;border-color:#bcccdc;color:#334e68}.button.danger{background:#9b1c1c;border-color:#9b1c1c}.button.danger-outline{background:#fff;border-color:#f5c2c7;color:#9b1c1c}.button.compact-button,.compact-button{min-height:40px;padding:8px 10px;width:auto}.button:disabled{cursor:not-allowed;opacity:.55}.player-picker,.lineup-picker{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.chip,.member-pill{border:1px solid #bcccdc;border-radius:8px;cursor:pointer;min-height:44px;padding:9px 10px}.chip{background:#fff;color:#334e68;display:flex;gap:6px;justify-content:space-between;min-width:0;overflow:hidden}.chip span{color:#627d98;flex:0 0 auto;font-weight:800}.chip.selected{background:#0b7285;border-color:#0b7285;color:#fff}.chip.selected span{color:#d8f3f8}.chip:disabled{cursor:not-allowed;opacity:.45}.player-chip{align-items:center;background:#f0f7ff;border:1px solid #d9e2ec;border-radius:8px;color:#1f4e79;display:flex;font-size:.9rem;gap:8px;justify-content:space-between;min-height:42px;padding:8px 10px}.player-chip strong{color:#486581;flex:0 0 auto}.generated-teams{grid-template-columns:1fr}.team-members{align-items:start}.member-pill{align-items:center;background:#f0f7ff;color:#1f4e79;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto auto;text-align:left;width:100%}.member-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-pill strong{color:#486581}.compact-label{color:#486581;display:grid;font-size:.8rem;gap:7px}.compact-label svg{display:none}.muted{color:#627d98}.icon-button{align-items:center;background:#fff;border:1px solid #bcccdc;border-radius:8px;color:#334e68;cursor:pointer;display:inline-flex;flex:0 0 auto;height:48px;justify-content:center;width:48px}.icon-button.danger{border-color:#f5c2c7;color:#9b1c1c}.icon-button.save{border-color:#9ee6c9;color:#007f5f}.team-size-control{grid-template-columns:minmax(0,1fr) 88px;align-items:center}.roster-list{color:#334e68;display:flex;flex-wrap:wrap;gap:5px;list-style:none;margin:4px 0 0;padding:0}.roster-list li{background:#f0f7ffbf;border-radius:8px;font-size:.82rem;padding:5px 7px}.roster-list.compact li{font-size:.76rem;padding:4px 6px}.roster-list li.highlight{background:#0b7285;color:#fff}.instruction-panel{background:#f8fafc;border:1px solid #d9e2ec;border-radius:8px;color:#334e68;display:grid;gap:8px;padding:12px}.instruction-panel ol{display:grid;gap:6px;margin:0;padding-left:20px}.session-short-list a{align-items:center;border:1px solid #d9e2ec;border-radius:8px;color:#334e68;display:flex;gap:8px;justify-content:space-between;min-height:46px;padding:10px;text-decoration:none}.session-short-list span{color:#627d98;flex:0 0 auto;font-size:.82rem;font-weight:800}.admin-match-list{display:grid;gap:12px}.admin-match-card{border:1px solid #d9e2ec;border-radius:8px;display:grid;gap:12px;padding:12px}.admin-match-header{align-items:start;display:flex;gap:8px;justify-content:space-between}.admin-match-header span{color:#627d98;font-size:.82rem;font-weight:800}.admin-match-teams{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.admin-match-teams>div{border:1px solid #d9e2ec;border-radius:8px;display:grid;gap:6px;padding:10px}.admin-match-teams .winner{background:#e6f6f0;border-color:#84d9bd}.session-manage-page{padding-top:12px}.manage-session-header{background:#f5f7f9f5;border-bottom:1px solid #d9e2ec;display:grid;gap:12px;margin:-2px -14px 14px;padding:12px 14px;position:sticky;top:62px;z-index:15}.manage-session-header h1{font-size:1.55rem}.session-stats{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.session-stats span{background:#fff;border:1px solid #d9e2ec;border-radius:8px;color:#486581;font-size:.78rem;font-weight:900;min-height:38px;padding:9px 6px;text-align:center}.attendance-add,.record-select-grid,.lineup-grid{display:grid;gap:10px}.lineup-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lineup-panel{border:1px solid #d9e2ec;border-radius:8px;display:grid;gap:10px;min-width:0;padding:10px}.lineup-panel .lineup-picker{grid-template-columns:1fr}.lineup-member-pill{align-items:center;background:#0b7285;border:1px solid #0b7285;border-radius:8px;color:#fff;cursor:pointer;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto auto;min-height:46px;padding:9px 10px;text-align:left;width:100%}.lineup-member-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lineup-member-pill strong{color:#d8f3f8}.lineup-panel-header span{color:#627d98;font-size:.78rem;font-weight:900}.status-panel.compact{padding:10px}@media (min-width: 640px){.global-auth-error{margin-left:24px;margin-right:24px}.account-button span{display:inline}.page{padding-left:24px;padding-right:24px}.scoreboard-list,.match-grid,.generated-teams,.admin-match-teams{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-form{grid-template-columns:1fr auto}.inline-form .button{width:auto}.admin-player-row{align-items:center;grid-template-columns:minmax(0,1fr) auto}.setup-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.player-picker,.lineup-picker{grid-template-columns:repeat(3,minmax(0,1fr))}.attendance-add,.record-select-grid{grid-template-columns:minmax(0,1fr) auto}.attendance-add .button{width:auto}}@media (min-width: 900px){.app-main{padding-bottom:calc(96px + env(safe-area-inset-bottom))}.topbar{min-height:72px;padding:14px 40px}.bottom-tabs{border:1px solid #d9e2ec;border-radius:8px;bottom:18px;box-shadow:0 18px 50px #102a4329;left:50%;max-width:620px;padding:8px;right:auto;transform:translate(-50%);width:calc(100% - 80px)}.bottom-tabs a{grid-template-columns:auto auto;min-height:48px}.page{padding:32px 40px 48px}.page-heading{align-items:end;display:flex;gap:20px;justify-content:space-between;margin-bottom:22px}h1{font-size:3rem}.metric-strip{display:flex;flex-wrap:wrap;justify-content:flex-end}.metric-strip span{min-width:112px;padding-left:10px;padding-right:10px}.scoreboard-list{display:none}.desktop-scoreboard{display:block;overflow-x:auto}.two-column{grid-template-columns:minmax(260px,.8fr) minmax(320px,1.2fr)}.admin-grid{grid-template-columns:repeat(3,minmax(240px,1fr))}.manager-admin-panel{grid-column:span 2}.setup-flow{grid-template-columns:repeat(3,minmax(240px,1fr))}.setup-flow .tool-panel:nth-child(2),.setup-flow .tool-panel:nth-child(3){grid-column:span 2}.tool-panel.wide{grid-column:span 2}.player-picker,.lineup-picker{grid-template-columns:repeat(4,minmax(0,1fr))}.button-row{grid-template-columns:repeat(2,minmax(0,1fr))}.manage-session-header{align-items:center;border:1px solid #d9e2ec;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;margin:0 0 18px;padding:16px;top:72px}.manage-session-header h1{font-size:2.2rem}.session-stats{min-width:360px}}
