.roster-toolbar{justify-content:space-between;align-items:center;gap:16px;margin:24px 0 12px;display:flex}.roster-toolbar h2{margin:0!important}.roster-toolbar p{color:var(--ui-muted,#637080);margin:4px 0 0;font-size:14px}.roster-toolbar-actions{flex-wrap:wrap;gap:8px;display:flex}.roster-workspace .season-settings.compact{border:0;margin:0 0 20px;padding:0}.roster-workspace .season-settings.compact .season-actions{flex-wrap:wrap;gap:16px;display:flex}.roster-empty{border-top:1px solid var(--ui-border,#e3e8ed);padding:24px 0}.roster-empty h3{font-size:18px}.roster-empty p{max-width:560px;color:var(--ui-muted,#637080);line-height:1.5}.roster-connection{color:#637080;margin:8px 0;font-size:12px;display:block}.roster-connection.connected{color:#21654a}.roster-save-result{color:#24573e;background:#eef6f2;border-radius:6px;padding:12px;font-size:14px}.roster-import-preview{border:1px solid var(--ui-border,#e3e8ed);border-radius:6px;max-height:260px;overflow:auto}.roster-import-preview table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.roster-import-preview caption{text-align:left;padding:10px;font-weight:600}.roster-import-preview th,.roster-import-preview td{border-top:1px solid var(--ui-border,#e3e8ed);padding:8px 10px}.roster-import-preview th{background:#f6f8fa;font-weight:600}.roster-import-preview td:first-child{min-width:120px}.roster-import-preview td:last-child{white-space:nowrap}.roster-import-modal textarea{font-size:16px!important}.roster-workspace .player-actions{flex-wrap:wrap;gap:12px}@media (max-width:600px){.roster-toolbar{flex-direction:column;align-items:flex-start}.roster-toolbar-actions{width:100%}.roster-toolbar-actions .btn{flex:1}}@media (pointer:coarse){.roster-workspace .text-button{min-height:44px}}.roster-history-button{align-items:center;gap:6px;margin:2px 0 10px;display:inline-flex}.roster-link-modal{width:min(640px,100vw - 24px);max-height:calc(100dvh - 32px);overflow-y:auto}.roster-link-modal h3{margin:0 0 8px;font-size:16px}.roster-linked-history{border-top:1px solid var(--ui-border,#e3e8ed);padding-top:14px}.roster-link-row{border-bottom:1px solid var(--ui-border,#e3e8ed);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.roster-link-row>span,.roster-link-candidate>span:first-child{min-width:0}.roster-link-row strong,.roster-link-candidate strong{overflow-wrap:anywhere;font-size:14px;font-weight:600;display:block}.roster-link-row small,.roster-link-candidate small{color:var(--ui-muted,#637080);overflow-wrap:anywhere;font-size:13px;line-height:1.5;display:block}.roster-linked-history details{margin-top:12px}.roster-linked-history summary{cursor:pointer;color:var(--ui-blue,#246b94);padding:6px 0;font-size:14px}.roster-link-search{margin-top:14px}.roster-link-search input{font-size:16px!important}.roster-link-candidates{max-height:280px;overflow-y:auto}.roster-link-candidate{border:0;border-bottom:1px solid var(--ui-border,#e3e8ed);text-align:left;cursor:pointer;width:100%;min-height:48px;color:inherit;background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:12px 4px;display:flex}:is(.roster-link-candidate:hover,.roster-link-candidate:focus-visible){background:#f0f6fa}.roster-link-candidate>span:last-child{color:#246b94;flex-shrink:0;align-items:center;gap:5px;font-size:14px;display:flex}.roster-link-confirm{background:#f6fafc;border:1px solid #cbddea;border-radius:8px;margin-top:14px;padding:16px}.roster-link-confirm p{overflow-wrap:anywhere;font-size:14px;line-height:1.5}.roster-link-buttons{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.roster-link-row .text-button{flex-shrink:0}.roster-link-empty p{line-height:1.5}.roster-link-modal .error{overflow-wrap:anywhere}@media (max-width:480px){.roster-link-buttons .btn{white-space:normal;flex:1}.roster-link-row{gap:8px}.roster-link-row>small{max-width:70px}.roster-link-modal{padding:20px!important}}@media (pointer:coarse){.roster-link-modal .text-button,.roster-linked-history summary{min-height:44px}}.roster-workspace{position:relative}.roster-toolbar{margin-top:12px}.roster-view-toggle{justify-content:flex-end;gap:4px;margin:8px 0;display:flex}.roster-view-toggle button{min-height:36px;color:var(--ui-muted);border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:.875rem;display:inline-flex}.roster-view-toggle button[aria-pressed=true]{color:var(--ui-accent);background:var(--ui-soft);border-color:#c4d8e7}.roster-list{display:grid}.roster-player{border-bottom:1px solid var(--ui-line);color:var(--ui-text);background:#fff;grid-template-columns:40px minmax(130px,1fr) minmax(160px,1.2fr) auto;align-items:center;gap:14px;min-width:0;padding:14px 0;display:grid}.roster-player-avatar{background:var(--ui-soft);color:#315b76;border-radius:6px;justify-content:center;align-items:center;width:40px;height:40px;font-size:.875rem;font-weight:600;display:flex;overflow:hidden}.roster-player-avatar img{object-fit:cover;width:100%;height:100%}.roster-player-identity h3{font:600 1rem/1.4 var(--ui-font);overflow-wrap:anywhere;margin:0}.roster-player-identity p{color:var(--ui-muted);margin:3px 0 0;font-size:.875rem}.roster-player-connection{min-width:0}.roster-player-family{color:var(--ui-text);overflow-wrap:anywhere;margin-top:4px;font-size:.875rem;line-height:1.5}.roster-player-family>span{color:var(--ui-muted);margin-right:4px}.roster-player-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.roster-player-actions .icon-button{color:var(--ui-muted);flex-shrink:0;width:40px;min-height:40px}.roster-player-actions .icon-button:hover{background:var(--ui-soft);color:var(--ui-accent)}.roster-action-menu{color:var(--ui-text);border-color:var(--ui-line);min-width:210px;font-family:var(--ui-font);background:#fff}.roster-action-menu [role=menuitem]{cursor:pointer;min-height:44px;padding:10px;font-size:.875rem}.roster-action-menu [data-variant=destructive]{color:#a32828}.roster-action-menu [data-highlighted]{background:var(--ui-soft)}.roster-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:16px}.roster-cards .roster-player{border:1px solid var(--ui-line);border-radius:6px;flex-direction:column;align-items:stretch;gap:10px;padding:14px;display:flex}.roster-cards .roster-player-avatar{width:100%;height:140px;font-size:2rem}.roster-cards .roster-player-actions{margin-top:auto}.roster-management{border-top:1px solid var(--ui-line);margin-top:20px;padding:4px 0}.roster-management>summary{cursor:pointer;min-height:44px;color:var(--ui-accent);padding:12px 0;font-size:.875rem;font-weight:600}.roster-management>.coaching-staff{margin-top:8px}.roster-management .team-identity{border-radius:6px;min-height:0;margin:16px 0}.roster-management .identity-content{padding:16px}.roster-management .identity-content>div>span{color:#ddd}.roster-management .identity-content h2{font-size:1.125rem!important}@media (max-width:900px){.roster-list .roster-player{grid-template-columns:40px minmax(0,1fr) auto;gap:8px 12px}.roster-list .roster-player-connection{grid-area:2/2}.roster-list .roster-player-actions{grid-area:1/3/3}.roster-list .roster-player-avatar{align-self:start}}@media (max-width:480px){.roster-list .roster-player{grid-template-columns:32px minmax(0,1fr) auto}.roster-list .roster-player-avatar{width:32px;height:36px}.roster-player-actions{flex-direction:column;gap:2px}.roster-player-actions .btn{padding:5px 8px!important}.roster-view-toggle{justify-content:flex-start}.roster-cards{grid-template-columns:1fr 1fr;gap:10px}.roster-cards .roster-player{padding:10px}.roster-cards .roster-player-avatar{height:100px}.roster-cards .roster-player-actions{flex-flow:wrap}}@media (pointer:coarse){.roster-player-actions .icon-button,.roster-view-toggle button{min-width:44px;min-height:44px}}.roster-link-modal{max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow-wrap:anywhere}.roster-link-modal button,.roster-link-modal input{min-height:44px}.roster-link-modal>button{min-width:44px}.roster-link-modal input{max-width:100%;font-size:16px}.roster-link-buttons{flex-wrap:wrap}.roster-link-modal p{overflow-wrap:anywhere}.roster-link-modal button.btn,.roster-link-modal button.text-button{font-size:16px;min-height:44px!important}.roster-link-modal .roster-link-buttons button{white-space:normal}.program-person-target{outline-offset:3px;outline:3px solid #2563eb;scroll-margin:100px}
